forked from kylebaron/learn
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeck_01.html
More file actions
622 lines (600 loc) · 379 KB
/
deck_01.html
File metadata and controls
622 lines (600 loc) · 379 KB
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
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta name="generator" content="pandoc" />
<meta name="author" content="Kyle T. Baron" />
<title>Introduction to mrgsolveModels and Events</title>
<style type="text/css">code{white-space: pre;}</style>
<style type="text/css">
div.sourceCode { overflow-x: auto; }
table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
margin: 0; padding: 0; vertical-align: baseline; border: none; }
table.sourceCode { width: 100%; line-height: 100%; }
td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
td.sourceCode { padding-left: 5px; }
code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
code > span.dt { color: #902000; } /* DataType */
code > span.dv { color: #40a070; } /* DecVal */
code > span.bn { color: #40a070; } /* BaseN */
code > span.fl { color: #40a070; } /* Float */
code > span.ch { color: #4070a0; } /* Char */
code > span.st { color: #4070a0; } /* String */
code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
code > span.ot { color: #007020; } /* Other */
code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
code > span.fu { color: #06287e; } /* Function */
code > span.er { color: #ff0000; font-weight: bold; } /* Error */
code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
code > span.cn { color: #880000; } /* Constant */
code > span.sc { color: #4070a0; } /* SpecialChar */
code > span.vs { color: #4070a0; } /* VerbatimString */
code > span.ss { color: #bb6688; } /* SpecialString */
code > span.im { } /* Import */
code > span.va { color: #19177c; } /* Variable */
code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code > span.op { color: #666666; } /* Operator */
code > span.bu { } /* BuiltIn */
code > span.ex { } /* Extension */
code > span.pp { color: #bc7a00; } /* Preprocessor */
code > span.at { color: #7d9029; } /* Attribute */
code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
</style>
<link href="data:text/css;charset=utf-8,%0Abody%0A%7B%0Amargin%3A%200%200%200%200%3B%0Apadding%3A%200%200%200%200%3B%0Awidth%3A%20100%25%3B%0Aheight%3A%20100%25%3B%0Acolor%3A%20black%3B%0Abackground%2Dcolor%3A%20white%3B%0Afont%2Dfamily%3A%20%22Gill%20Sans%20MT%22%2C%20%22Gill%20Sans%22%2C%20GillSans%2C%20sans%2Dserif%3B%0Afont%2Dsize%3A%2014pt%3B%0A%7D%0Adiv%2Etoolbar%20%7B%0Aposition%3A%20fixed%3B%20z%2Dindex%3A%20200%3B%0Atop%3A%20auto%3B%20bottom%3A%200%3B%20left%3A%200%3B%20right%3A%200%3B%0Aheight%3A%201%2E2em%3B%20text%2Dalign%3A%20right%3B%0Apadding%2Dleft%3A%201em%3B%0Apadding%2Dright%3A%201em%3B%20font%2Dsize%3A%2060%25%3B%0Acolor%3A%20DimGray%3B%0Abackground%2Dcolor%3A%20rgb%28240%2C240%2C240%29%3B%0Aborder%2Dtop%3A%20solid%201px%20rgb%28180%2C180%2C180%29%3B%0A%7D%0Adiv%2Etoolbar%20span%2Ecopyright%20%7B%0Acolor%3A%20DimGray%3B%0Amargin%2Dleft%3A%200%2E5em%3B%0A%7D%0Adiv%2Einitial%5Fprompt%20%7B%0Aposition%3A%20absolute%3B%0Az%2Dindex%3A%201000%3B%0Abottom%3A%201%2E2em%3B%0Awidth%3A%20100%25%3B%0Abackground%2Dcolor%3A%20rgb%28200%2C200%2C200%29%3B%0Aopacity%3A%200%2E35%3B%0Abackground%2Dcolor%3A%20rgb%28200%2C200%2C200%2C%200%2E35%29%3B%0Acursor%3A%20pointer%3B%0A%7D%0Adiv%2Einitial%5Fprompt%20p%2Ehelp%20%7B%0Atext%2Dalign%3A%20center%3B%0A%7D%0Adiv%2Einitial%5Fprompt%20p%2Eclose%20%7B%0Atext%2Dalign%3A%20right%3B%0Afont%2Dstyle%3A%20italic%3B%0A%7D%0Adiv%2Eslidy%5Ftoc%20%7B%0Aposition%3A%20absolute%3B%0Az%2Dindex%3A%20300%3B%0Awidth%3A%2060%25%3B%0Amax%2Dwidth%3A%2030em%3B%0Aheight%3A%2030em%3B%0Aoverflow%3A%20auto%3B%0Atop%3A%20auto%3B%0Aright%3A%20auto%3B%0Aleft%3A%204em%3B%0Abottom%3A%204em%3B%0Apadding%3A%201em%3B%0Abackground%3A%20rgb%28240%2C240%2C240%29%3B%0Aborder%2Dstyle%3A%20solid%3B%0Aborder%2Dwidth%3A%202px%3B%0Afont%2Dsize%3A%2060%25%3B%0A%7D%0Adiv%2Eslidy%5Ftoc%20%2Etoc%5Fheading%20%7B%0Atext%2Dalign%3A%20center%3B%0Awidth%3A%20100%25%3B%0Amargin%3A%200%3B%0Amargin%2Dbottom%3A%201em%3B%0Aborder%2Dbottom%2Dstyle%3A%20solid%3B%0Aborder%2Dbottom%2Dcolor%3A%20rgb%28180%2C180%2C180%29%3B%0Aborder%2Dbottom%2Dwidth%3A%201px%3B%0A%7D%0Adiv%2Eslide%20%7B%0Az%2Dindex%3A%2020%3B%0Amargin%3A%200%200%200%200%3B%0Apadding%2Dtop%3A%200%3B%0Apadding%2Dbottom%3A%200%3B%0Apadding%2Dleft%3A%2020px%3B%0Apadding%2Dright%3A%2020px%3B%0Aborder%2Dwidth%3A%200%3B%0Aclear%3A%20both%3B%0Atop%3A%200%3B%0Abottom%3A%200%3B%0Aleft%3A%200%3B%0Aright%3A%200%3B%0Aline%2Dheight%3A%20120%25%3B%0Abackground%2Dcolor%3A%20transparent%3B%0A%7D%0Adiv%2Ebackground%20%7B%0Adisplay%3A%20none%3B%0A%7D%0Adiv%2Ehandout%20%7B%0Amargin%2Dleft%3A%2020px%3B%0Amargin%2Dright%3A%2020px%3B%0A%7D%0Adiv%2Eslide%2Etitlepage%20%7B%0Atext%2Dalign%3A%20center%3B%0A%7D%0Adiv%2Eslide%2Etitlepage%20h1%20%7B%0Apadding%2Dtop%3A%2010%25%3B%0Amargin%2Dright%3A%200%3B%0A%7D%0Adiv%2Eslide%20h1%20%7B%0Apadding%2Dleft%3A%200%3B%0Apadding%2Dright%3A%2020pt%3B%0Apadding%2Dtop%3A%204pt%3B%0Apadding%2Dbottom%3A%204pt%3B%0Amargin%2Dtop%3A%200%3B%0Amargin%2Dleft%3A%200%3B%0Amargin%2Dright%3A%2060pt%3B%0Amargin%2Dbottom%3A%200%2E5em%3B%0Adisplay%3A%20block%3B%20font%2Dsize%3A%20160%25%3B%0Aline%2Dheight%3A%201%2E2em%3B%0Abackground%3A%20transparent%3B%0A%7D%0A%40media%20screen%20and%20%28max%2Ddevice%2Dwidth%3A%201024px%29%0A%7B%0Adiv%2Eslide%20%7B%20font%2Dsize%3A%20100%25%3B%20%7D%0A%7D%0A%40media%20screen%20and%20%28max%2Ddevice%2Dwidth%3A%20800px%29%0A%7B%0Adiv%2Eslide%20%7B%20font%2Dsize%3A%20200%25%3B%20%7D%0Adiv%2Eslidy%5Ftoc%20%7B%0Atop%3A%201em%3B%0Aleft%3A%201em%3B%0Aright%3A%20auto%3B%0Awidth%3A%2080%25%3B%0Afont%2Dsize%3A%20180%25%3B%0A%7D%0A%7D%0Adiv%2Etoc%2Dheading%20%7B%0Awidth%3A%20100%25%3B%0Aborder%2Dbottom%3A%20solid%201px%20rgb%28180%2C180%2C180%29%3B%0Amargin%2Dbottom%3A%201em%3B%0Atext%2Dalign%3A%20center%3B%0A%7D%0Aimg%20%7B%0Aimage%2Drendering%3A%20optimize%2Dquality%3B%0A%7D%0Apre%20%7B%0Afont%2Dsize%3A%2080%25%3B%0Afont%2Dweight%3A%20bold%3B%0Aline%2Dheight%3A%20120%25%3B%0Apadding%2Dtop%3A%200%2E2em%3B%0Apadding%2Dbottom%3A%200%2E2em%3B%0Apadding%2Dleft%3A%201em%3B%0Apadding%2Dright%3A%201em%3B%0Aborder%2Dstyle%3A%20solid%3B%0Aborder%2Dleft%2Dwidth%3A%201em%3B%0Aborder%2Dtop%2Dwidth%3A%20thin%3B%0Aborder%2Dright%2Dwidth%3A%20thin%3B%0Aborder%2Dbottom%2Dwidth%3A%20thin%3B%0Aborder%2Dcolor%3A%20%2395ABD0%3B%0Acolor%3A%20%2300428C%3B%0Abackground%2Dcolor%3A%20%23E4E5E7%3B%0A%7D%0Ali%20pre%20%7B%20margin%2Dleft%3A%200%3B%20%7D%0Ablockquote%20%7B%20font%2Dstyle%3A%20italic%20%7D%0Aimg%20%7B%20background%2Dcolor%3A%20transparent%20%7D%0Ap%2Ecopyright%20%7B%20font%2Dsize%3A%20smaller%20%7D%0A%2Ecenter%20%7B%20text%2Dalign%3A%20center%20%7D%0A%2Efootnote%20%7B%20font%2Dsize%3A%20smaller%3B%20margin%2Dleft%3A%202em%3B%20%7D%0Aa%20img%20%7B%20border%2Dwidth%3A%200%3B%20border%2Dstyle%3A%20none%20%7D%0Aa%3Avisited%20%7B%20color%3A%20navy%20%7D%0Aa%3Alink%20%7B%20color%3A%20navy%20%7D%0Aa%3Ahover%20%7B%20color%3A%20red%3B%20text%2Ddecoration%3A%20underline%20%7D%0Aa%3Aactive%20%7B%20color%3A%20red%3B%20text%2Ddecoration%3A%20underline%20%7D%0Aa%20%7Btext%2Ddecoration%3A%20none%7D%0A%2Etoolbar%20a%3Alink%20%7Bcolor%3A%20blue%7D%0A%2Etoolbar%20a%3Avisited%20%7Bcolor%3A%20blue%7D%0A%2Etoolbar%20a%3Aactive%20%7Bcolor%3A%20red%7D%0A%2Etoolbar%20a%3Ahover%20%7Bcolor%3A%20red%7D%0Aul%20%7B%20list%2Dstyle%2Dtype%3A%20square%3B%20%7D%0Aul%20ul%20%7B%20list%2Dstyle%2Dtype%3A%20disc%3B%20%7D%0Aul%20ul%20ul%20%7B%20list%2Dstyle%2Dtype%3A%20circle%3B%20%7D%0Aul%20ul%20ul%20ul%20%7B%20list%2Dstyle%2Dtype%3A%20disc%3B%20%7D%0Ali%20%7B%20margin%2Dleft%3A%200%2E5em%3B%20margin%2Dtop%3A%200%2E5em%3B%20%7D%0Ali%20li%20%7B%20font%2Dsize%3A%2085%25%3B%20font%2Dstyle%3A%20italic%20%7D%0Ali%20li%20li%20%7B%20font%2Dsize%3A%2085%25%3B%20font%2Dstyle%3A%20normal%20%7D%0Adiv%20dt%0A%7B%0Amargin%2Dleft%3A%200%3B%0Amargin%2Dtop%3A%201em%3B%0Amargin%2Dbottom%3A%200%2E5em%3B%0Afont%2Dweight%3A%20bold%3B%0A%7D%0Adiv%20dd%0A%7B%0Amargin%2Dleft%3A%202em%3B%0Amargin%2Dbottom%3A%200%2E5em%3B%0A%7D%0Ap%2Cpre%2Cul%2Col%2Cblockquote%2Ch2%2Ch3%2Ch4%2Ch5%2Ch6%2Cdl%2Ctable%20%7B%0Amargin%2Dleft%3A%201em%3B%0Amargin%2Dright%3A%201em%3B%0A%7D%0Ap%2Esubhead%20%7B%20font%2Dweight%3A%20bold%3B%20margin%2Dtop%3A%202em%3B%20%7D%0A%2Esmaller%20%7B%20font%2Dsize%3A%20smaller%20%7D%0A%2Ebigger%20%7B%20font%2Dsize%3A%20130%25%20%7D%0Atd%2Cth%20%7B%20padding%3A%200%2E2em%20%7D%0Aul%20%7B%0Amargin%3A%200%2E5em%201%2E5em%200%2E5em%201%2E5em%3B%0Apadding%3A%200%3B%0A%7D%0Aol%20%7B%0Amargin%3A%200%2E5em%201%2E5em%200%2E5em%201%2E5em%3B%0Apadding%3A%200%3B%0A%7D%0Aul%20%7B%20list%2Dstyle%2Dtype%3A%20square%3B%20%7D%0Aul%20ul%20%7B%20list%2Dstyle%2Dtype%3A%20disc%3B%20%7D%0Aul%20ul%20ul%20%7B%20list%2Dstyle%2Dtype%3A%20circle%3B%20%7D%0Aul%20ul%20ul%20ul%20%7B%20list%2Dstyle%2Dtype%3A%20disc%3B%20%7D%0Aul%20li%20%7B%20list%2Dstyle%3A%20square%3B%0Amargin%3A%200%2E1em%200em%200%2E6em%200%3B%0Apadding%3A%200%200%200%200%3B%0Aline%2Dheight%3A%20140%25%3B%0A%7D%0Aol%20li%20%7B%20margin%3A%200%2E1em%200em%200%2E6em%201%2E5em%3B%0Apadding%3A%200%200%200%200px%3B%0Aline%2Dheight%3A%20140%25%3B%0Alist%2Dstyle%2Dtype%3A%20decimal%3B%0A%7D%0Ali%20ul%20li%20%7B%20font%2Dsize%3A%2085%25%3B%20font%2Dstyle%3A%20italic%3B%0Alist%2Dstyle%2Dtype%3A%20disc%3B%0Abackground%3A%20transparent%3B%0Apadding%3A%200%200%200%200%3B%0A%7D%0Ali%20li%20ul%20li%20%7B%20font%2Dsize%3A%2085%25%3B%20font%2Dstyle%3A%20normal%3B%0Alist%2Dstyle%2Dtype%3A%20circle%3B%0Abackground%3A%20transparent%3B%0Apadding%3A%200%200%200%200%3B%0A%7D%0Ali%20li%20li%20ul%20li%20%7B%0Alist%2Dstyle%2Dtype%3A%20disc%3B%0Abackground%3A%20transparent%3B%0Apadding%3A%200%200%200%200%3B%0A%7D%0Ali%20ol%20li%20%7B%0Alist%2Dstyle%2Dtype%3A%20decimal%3B%0A%7D%0Ali%20li%20ol%20li%20%7B%0Alist%2Dstyle%2Dtype%3A%20decimal%3B%0A%7D%0A%0Aol%2Eoutline%20li%3Ahover%20%7B%20cursor%3A%20pointer%20%7D%0Aol%2Eoutline%20li%2Enofold%3Ahover%20%7B%20cursor%3A%20default%20%7D%0Aul%2Eoutline%20li%3Ahover%20%7B%20cursor%3A%20pointer%20%7D%0Aul%2Eoutline%20li%2Enofold%3Ahover%20%7B%20cursor%3A%20default%20%7D%0Aol%2Eoutline%20%7B%20list%2Dstyle%3Adecimal%3B%20%7D%0Aol%2Eoutline%20ol%20%7B%20list%2Dstyle%2Dtype%3Alower%2Dalpha%20%7D%0Aol%2Eoutline%20li%2Enofold%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3Bbase64%2CR0lGODdhCQAJAIACAMzMzOvr%2FywAAAAACQAJAAACD4SPoRvG614Dctb4MEMcFAA7%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aol%2Eoutline%20li%2Eunfolded%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3Bbase64%2CR0lGODdhCQAJAKEDAMPD%2F8zMzOvr%2F%2F%2F%2F%2FywAAAAACQAJAAACEYyPoivG614LAlg7ZZbxoR8UADs%3D%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aol%2Eoutline%20li%2Efolded%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3Bbase64%2CR0lGODdhCQAJAKEDAMPD%2F8zMzOvr%2F%2F%2F%2F%2FywAAAAACQAJAAACFIyPoiu2sJyCyoF7W3hxz850CFIAADs%3D%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aol%2Eoutline%20li%2Eunfolded%3Ahover%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3Bbase64%2CR0lGODdhCQAJAKEDAAAAAAAA%2F8PD%2F%2F%2F%2F%2FywAAAAACQAJAAACEYSPoivG614DIlg7ZZbxoQ8UADs%3D%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aol%2Eoutline%20li%2Efolded%3Ahover%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3Bbase64%2CR0lGODdhCQAJAKEDAAAAAAAA%2F8PD%2F%2F%2F%2F%2FywAAAAACQAJAAACFISPoiu2sZyCyoV7G3hxz850CFIAADs%3D%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aul%2Eoutline%20li%2Enofold%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3Bbase64%2CR0lGODdhCQAJAIACAMzMzOvr%2FywAAAAACQAJAAACD4SPoRvG614Dctb4MEMcFAA7%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aul%2Eoutline%20li%2Eunfolded%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3Bbase64%2CR0lGODdhCQAJAKEDAMPD%2F8zMzOvr%2F%2F%2F%2F%2FywAAAAACQAJAAACEYyPoivG614LAlg7ZZbxoR8UADs%3D%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aul%2Eoutline%20li%2Efolded%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3Bbase64%2CR0lGODdhCQAJAKEDAMPD%2F8zMzOvr%2F%2F%2F%2F%2FywAAAAACQAJAAACFIyPoiu2sJyCyoF7W3hxz850CFIAADs%3D%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aul%2Eoutline%20li%2Eunfolded%3Ahover%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3Bbase64%2CR0lGODdhCQAJAKEDAAAAAAAA%2F8PD%2F%2F%2F%2F%2FywAAAAACQAJAAACEYSPoivG614DIlg7ZZbxoQ8UADs%3D%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0Aul%2Eoutline%20li%2Efolded%3Ahover%20%7B%0Apadding%3A%200%200%200%2020px%3B%0Abackground%3A%20transparent%20url%28data%3Aimage%2Fgif%3Bbase64%2CR0lGODdhCQAJAKEDAAAAAAAA%2F8PD%2F%2F%2F%2F%2FywAAAAACQAJAAACFISPoiu2sZyCyoV7G3hxz850CFIAADs%3D%29%20no%2Drepeat%200px%200%2E5em%3B%0A%7D%0A%0Aa%2Etitleslide%20%7B%20font%2Dweight%3A%20bold%3B%20font%2Dstyle%3A%20italic%20%7D%0A%0Aimg%2Ehidden%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%20%7D%0Adiv%2Einitial%5Fprompt%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%20%7D%0Adiv%2Eslide%20%7B%0Avisibility%3A%20visible%3B%0Aposition%3A%20inherit%3B%0A%7D%0Adiv%2Ehandout%20%7B%0Aborder%2Dtop%2Dstyle%3A%20solid%3B%0Aborder%2Dtop%2Dwidth%3A%20thin%3B%0Aborder%2Dtop%2Dcolor%3A%20black%3B%0A%7D%0A%40media%20screen%20%7B%0A%2Ehidden%20%7B%20display%3A%20none%3B%20visibility%3A%20visible%20%7D%0Adiv%2Eslide%2Ehidden%20%7B%20display%3A%20block%3B%20visibility%3A%20visible%20%7D%0Adiv%2Ehandout%2Ehidden%20%7B%20display%3A%20block%3B%20visibility%3A%20visible%20%7D%0Adiv%2Ebackground%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%20%7D%0Abody%2Esingle%5Fslide%20div%2Einitial%5Fprompt%20%7B%20display%3A%20block%3B%20visibility%3A%20visible%20%7D%0Abody%2Esingle%5Fslide%20div%2Ebackground%20%7B%20display%3A%20block%3B%20visibility%3A%20visible%20%7D%0Abody%2Esingle%5Fslide%20div%2Ebackground%2Ehidden%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%20%7D%0Abody%2Esingle%5Fslide%20%2Einvisible%20%7B%20visibility%3A%20hidden%20%7D%0Abody%2Esingle%5Fslide%20%2Ehidden%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%20%7D%0Abody%2Esingle%5Fslide%20div%2Eslide%20%7B%20position%3A%20absolute%20%7D%0Abody%2Esingle%5Fslide%20div%2Ehandout%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%20%7D%0A%7D%0A%40media%20print%20%7B%0A%2Ehidden%20%7B%20display%3A%20block%3B%20visibility%3A%20visible%20%7D%0Adiv%2Eslide%20pre%20%7B%20font%2Dsize%3A%2060%25%3B%20padding%2Dleft%3A%200%2E5em%3B%20%7D%0Adiv%2Etoolbar%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%3B%20%7D%0Adiv%2Eslidy%5Ftoc%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%3B%20%7D%0Adiv%2Ebackground%20%7B%20display%3A%20none%3B%20visibility%3A%20hidden%3B%20%7D%0Adiv%2Eslide%20%7B%20page%2Dbreak%2Dbefore%3A%20always%20%7D%0A%0Adiv%2Eslide%2Efirst%2Dslide%20%7B%20page%2Dbreak%2Dbefore%3A%20avoid%20%7D%0A%7D%0A%0A%0A%2Ejslider%20table%20%7B%0Amargin%2Dleft%3A%200em%3B%0Amargin%2Dright%3A%200em%3B%0A%7D%0A%0Atable%2EdataTable%2C%20%2Eshiny%2Ddatatable%2Doutput%20div%20%7B%0Afont%2Dsize%3A%2014pt%3B%0A%7D%0A%0A%2EdataTables%5Finfo%2C%20%2EdataTables%5Fpaginate%20%7B%0Afont%2Dsize%3A%2019px%3B%0A%7D%0A%0Apre%2EsourceCode%2C%20code%2EsourceCode%20%7B%0Afont%2Dsize%3A%2080%25%3B%0A%7D%0A%0Alabel%2C%20button%2C%20input%2C%20select%2C%20textarea%20%7B%0Afont%2Dsize%3A%2014pt%3B%0A%7D%0A%0Aul%2Enav%2C%20ul%2Enav%20li%20%7B%0Alist%2Dstyle%2Dtype%3A%20none%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/x-javascript;base64,Lyogc2xpZHkuanMKCiAgIENvcHlyaWdodCAoYykgMjAwNS0yMDEzIFczQyAoTUlULCBFUkNJTSwgS2VpbyksIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgIFczQyBsaWFiaWxpdHksIHRyYWRlbWFyaywgZG9jdW1lbnQgdXNlIGFuZCBzb2Z0d2FyZSBsaWNlbnNpbmcKICAgcnVsZXMgYXBwbHksIHNlZToKCiAgIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvY29weXJpZ2h0LWRvY3VtZW50cwogICBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsL2NvcHlyaWdodC1zb2Z0d2FyZQoKICAgRGVmaW5lcyBzaW5nbGUgbmFtZSAidzNjX3NsaWR5IiBpbiBnbG9iYWwgbmFtZXNwYWNlCiAgIEFkZHMgZXZlbnQgaGFuZGxlcnMgd2l0aG91dCB0cmFtcGxpbmcgb24gYW55IG90aGVycwoqLwoKLy8gdGhlIHNsaWR5IG9iamVjdCBpbXBsZW1lbnRhdGlvbgp2YXIgdzNjX3NsaWR5ID0gewogIC8vIGNsYXNzaWZ5IHdoaWNoIGtpbmQgb2YgYnJvd3NlciB3ZSdyZSBydW5uaW5nIHVuZGVyCiAgbnNfcG9zOiAodHlwZW9mIHdpbmRvdy5wYWdlWU9mZnNldCE9J3VuZGVmaW5lZCcpLAogIGtodG1sOiAoKG5hdmlnYXRvci51c2VyQWdlbnQpLmluZGV4T2YoIktIVE1MIikgPj0gMCA/IHRydWUgOiBmYWxzZSksCiAgb3BlcmE6ICgobmF2aWdhdG9yLnVzZXJBZ2VudCkuaW5kZXhPZigiT3BlcmEiKSA+PSAwID8gdHJ1ZSA6IGZhbHNlKSwKICBpcGFkOiAoKG5hdmlnYXRvci51c2VyQWdlbnQpLmluZGV4T2YoImlQYWQiKSA+PSAwID8gdHJ1ZSA6IGZhbHNlKSwKICBpcGhvbmU6ICgobmF2aWdhdG9yLnVzZXJBZ2VudCkuaW5kZXhPZigiaVBob25lIikgPj0gMCA/IHRydWUgOiBmYWxzZSksCiAgYW5kcm9pZDogKChuYXZpZ2F0b3IudXNlckFnZW50KS5pbmRleE9mKCJBbmRyb2lkIikgPj0gMCA/IHRydWUgOiBmYWxzZSksCiAgaWU6ICh0eXBlb2YgZG9jdW1lbnQuYWxsICE9ICJ1bmRlZmluZWQiICYmICF0aGlzLm9wZXJhKSwKICBpZTY6ICghdGhpcy5uc19wb3MgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIDYiKSAhPSAtMSksCiAgaWU3OiAoIXRoaXMubnNfcG9zICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTVNJRSA3IikgIT0gLTEpLAogIGllODogKCF0aGlzLm5zX3BvcyAmJiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUgOCIpICE9IC0xKSwKICBpZTk6ICghdGhpcy5uc19wb3MgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIDkiKSAhPSAtMSksCgogIC8vIGRhdGEgZm9yIHN3aXBlIGFuZCBkb3VibGUgdGFwIGRldGVjdGlvbiBvbiB0b3VjaCBzY3JlZW5zCiAgbGFzdF90YXA6IDAsCiAgcHJldl90YXA6IDAsCiAgc3RhcnRfeDogMCwKICBzdGFydF95OiAwLAogIGRlbHRhX3g6IDAsCiAgZGVsdGFfeTogMCwKCiAgLy8gYXJlIHdlIHJ1bm5pbmcgYXMgWEhUTUw/IChkb2Vzbid0IHdvcmsgb24gT3BlcmEpCiAgaXNfeGh0bWw6IC94bWwvLnRlc3QoZG9jdW1lbnQuY29udGVudFR5cGUpLAoKICBzbGlkZV9udW1iZXI6IDAsIC8vIGludGVnZXIgc2xpZGUgY291bnQ6IDAsIDEsIDIsIC4uLgogIHNsaWRlX251bWJlcl9lbGVtZW50OiBudWxsLCAvLyBlbGVtZW50IGNvbnRhaW5pbmcgc2xpZGUgbnVtYmVyCiAgc2xpZGVzOiBbXSwgLy8gc2V0IHRvIGFycmF5IG9mIHNsaWRlIGRpdidzCiAgbm90ZXM6IFtdLCAvLyBzZXQgdG8gYXJyYXkgb2YgaGFuZG91dCBkaXYncwogIGJhY2tncm91bmRzOiBbXSwgLy8gc2V0IHRvIGFycmF5IG9mIGJhY2tncm91bmQgZGl2J3MKICBvYnNlcnZlcnM6IFtdLCAvLyBsaXN0IG9mIG9ic2VydmVyIGZ1bmN0aW9ucwogIHRvb2xiYXI6IG51bGwsIC8vIGVsZW1lbnQgY29udGFpbmluZyB0b29sYmFyCiAgdGl0bGU6IG51bGwsIC8vIGRvY3VtZW50IHRpdGxlCiAgbGFzdF9zaG93bjogbnVsbCwgLy8gbGFzdCBpbmNyZW1lbnRhbGx5IHNob3duIGl0ZW0KICBlb3M6IG51bGwsICAvLyBzcGFuIGVsZW1lbnQgZm9yIGVuZCBvZiBzbGlkZSBpbmRpY2F0b3IKICB0b2M6IG51bGwsIC8vIHRhYmxlIG9mIGNvbnRlbnRzCiAgb3V0bGluZTogbnVsbCwgLy8gb3V0bGluZSBlbGVtZW50IHdpdGggdGhlIGZvY3VzCiAgc2VsZWN0ZWRfdGV4dF9sZW46IDAsIC8vIGxlbmd0aCBvZiBkcmFnIHNlbGVjdGlvbiBvbiBkb2N1bWVudAogIHZpZXdfYWxsOiAwLCAgLy8gMSB0byB2aWV3IGFsbCBzbGlkZXMgKyBoYW5kb3V0cwogIHdhbnRfdG9vbGJhcjogdHJ1ZSwgIC8vIHVzZXIgcHJlZmVyZW5jZSB0byBzaG93L2hpZGUgdG9vbGJhcgogIG1vdXNlX2NsaWNrX2VuYWJsZWQ6IHRydWUsIC8vIGVuYWJsZXMgbGVmdCBjbGljayBmb3IgbmV4dCBzbGlkZQogIHNjcm9sbF9oYWNrOiAwLCAvLyBJRSB3b3JrIGFyb3VuZCBmb3IgcG9zaXRpb246IGZpeGVkCiAgZGlzYWJsZV9zbGlkZV9jbGljazogZmFsc2UsICAvLyB1c2VkIGJ5IGNsaWNrZWQgYW5jaG9ycwoKICBsYW5nOiAiZW4iLCAvLyB1cGRhdGVkIHRvIGxhbmd1YWdlIHNwZWNpZmllZCBieSBodG1sIGZpbGUKCiAgaGVscF9hbmNob3I6IG51bGwsIC8vIHVzZWQgZm9yIGtleWJvYXJkIGZvY3VzIGhhY2sgaW4gc2hvd1Rvb2xiYXIoKQogIGhlbHBfcGFnZTogImh0dHA6Ly93d3cudzMub3JnL1RhbGtzL1Rvb2xzL1NsaWR5Mi9oZWxwL2hlbHAuaHRtbCIsCiAgaGVscF90ZXh0OiAiTmF2aWdhdGUgd2l0aCBtb3VzZSBjbGljaywgc3BhY2UgYmFyLCBDdXJzb3IgTGVmdC9SaWdodCwgIiArCiAgICAgICAgICAgICAib3IgUGcgVXAgYW5kIFBnIERuLiBVc2UgUyBhbmQgQiB0byBjaGFuZ2UgZm9udCBzaXplLiIsCgogIHNpemVfaW5kZXg6IDAsCiAgc2l6ZV9hZGp1c3RtZW50OiAwLAogIHNpemVzOiAgbmV3IEFycmF5KCIxMHB0IiwgIjEycHQiLCAiMTRwdCIsICIxNnB0IiwgIjE4cHQiLCAiMjBwdCIsCiAgICAgICAgICAgICAgICAgICAgIjIycHQiLCAiMjRwdCIsICIyNnB0IiwgIjI4cHQiLCAiMzBwdCIsICIzMnB0IiksCgogIC8vIG5lZWRlZCBmb3IgZWZmaWNpZW50IHJlc2l6aW5nCiAgbGFzdF93aWR0aDogMCwKICBsYXN0X2hlaWdodDogMCwKCgogIC8vIE5lZWRlZCBmb3IgY3Jvc3MgYnJvd3NlciBzdXBwb3J0IGZvciByZWxhdGl2ZSB3aWR0aC9oZWlnaHQgb24KICAvLyBvYmplY3QgZWxlbWVudHMuIFRoZSB3b3JrIGFyb3VuZCBpcyB0byBzYXZlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGVzCiAgLy8gYW5kIHRoZW4gdG8gcmVjb21wdXRlIGFic29sdXRlIHdpZHRoL2hlaWdodCBkaW1lbnNpb25zIG9uIHJlc2l6aW5nCiAgIG9iamVjdHM6IFtdLAoKICAvLyBhdHRhY2ggaW5pdGlhbGlhdGlvbiBldmVudCBoYW5kbGVycwogIHNldF91cDogZnVuY3Rpb24gKCkgewogICAgdmFyIGluaXQgPSBmdW5jdGlvbigpIHsgdzNjX3NsaWR5LmluaXQoKTsgfTsKICAgIGlmICh0eXBlb2Ygd2luZG93LmFkZEV2ZW50TGlzdGVuZXIgIT0gInVuZGVmaW5lZCIpCiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgaW5pdCwgZmFsc2UpOwogICAgZWxzZQogICAgICB3aW5kb3cuYXR0YWNoRXZlbnQoIm9ubG9hZCIsIGluaXQpOwogIH0sCgogIGhpZGVfc2xpZGVzOiBmdW5jdGlvbiAoKSB7CiAgICBpZiAoZG9jdW1lbnQuYm9keSAmJiAhdzNjX3NsaWR5LmluaXRpYWxpemVkKQogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgIGVsc2UKICAgICAgc2V0VGltZW91dCh3M2Nfc2xpZHkuaGlkZV9zbGlkZXMsIDUwKTsKICB9LAoKICAvLyBoYWNrIHRvIHBlcnN1YWRlIElFIHRvIGNvbXB1dGUgY29ycmVjdCBkb2N1bWVudCBoZWlnaHQKICAvLyBhcyBuZWVkZWQgZm9yIHNpbXVsYXRpbmcgZml4ZWQgcG9zaXRpb25pbmcgb2YgdG9vbGJhcgogIGllX2hhY2s6IGZ1bmN0aW9uICgpIHsKICAgIHdpbmRvdy5yZXNpemVCeSgwLC0xKTsKICAgIHdpbmRvdy5yZXNpemVCeSgwLCAxKTsKICB9LAoKICBpbml0OiBmdW5jdGlvbiAoKSB7CiAgICAvL2FsZXJ0KCJzbGlkeSBzdGFydGluZyB0ZXN0IDEwIik7CiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CiAgICB0aGlzLmluaXRfbG9jYWxpemF0aW9uKCk7CiAgICB0aGlzLmFkZF90b29sYmFyKCk7CiAgICB0aGlzLndyYXBfaW1wbGljaXRfc2xpZGVzKCk7CiAgICB0aGlzLmNvbGxlY3Rfc2xpZGVzKCk7CiAgICB0aGlzLmNvbGxlY3Rfbm90ZXMoKTsKICAgIHRoaXMuY29sbGVjdF9iYWNrZ3JvdW5kcygpOwogICAgdGhpcy5vYmplY3RzID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgib2JqZWN0Iik7CiAgICB0aGlzLnBhdGNoX2FuY2hvcnMoKTsKICAgIHRoaXMuc2xpZGVfbnVtYmVyID0gdGhpcy5maW5kX3NsaWRlX251bWJlcihsb2NhdGlvbi5ocmVmKTsKICAgIHdpbmRvdy5vZmZzY3JlZW5idWZmZXJpbmcgPSB0cnVlOwogICAgdGhpcy5zaXplX2FkanVzdG1lbnQgPSB0aGlzLmZpbmRfc2l6ZV9hZGp1c3QoKTsKICAgIHRoaXMudGltZV9sZWZ0ID0gdGhpcy5maW5kX2R1cmF0aW9uKCk7CiAgICB0aGlzLmhpZGVfaW1hZ2VfdG9vbGJhcigpOyAgLy8gc3VwcHJlc3MgSUUgaW1hZ2UgdG9vbGJhciBwb3B1cAogICAgdGhpcy5pbml0X291dGxpbmVyKCk7ICAvLyBhY3RpdmF0ZSBmb2xkL3VuZm9sZCBzdXBwb3J0CiAgICB0aGlzLnRpdGxlID0gZG9jdW1lbnQudGl0bGU7CiAgICB0aGlzLmtleWJvYXJkbGVzcyA9ICh0aGlzLmlwYWR8fHRoaXMuaXBob25lfHx0aGlzLmFuZHJvaWQpOwoKICAgIGlmICh0aGlzLmtleWJvYXJkbGVzcykKICAgIHsKICAgICAgdzNjX3NsaWR5LnJlbW92ZV9jbGFzcyh3M2Nfc2xpZHkudG9vbGJhciwgImhpZGRlbiIpCiAgICAgIHRoaXMud2FudF90b29sYmFyID0gMDsKICAgIH0KCiAgICAvLyB3b3JrIGFyb3VuZCBmb3Igb3BlcmEgYnVnCiAgICB0aGlzLmlzX3hodG1sID0gKGRvY3VtZW50LmJvZHkudGFnTmFtZSA9PSAiQk9EWSIgPyBmYWxzZSA6IHRydWUpOwoKICAgIGlmICh0aGlzLnNsaWRlcy5sZW5ndGggPiAwKQogICAgewogICAgICB2YXIgc2xpZGUgPSB0aGlzLnNsaWRlc1t0aGlzLnNsaWRlX251bWJlcl07CiAgIAogICAgICBpZiAodGhpcy5zbGlkZV9udW1iZXIgPiAwKQogICAgICB7CiAgICAgICAgdGhpcy5zZXRfdmlzaWJpbGl0eV9hbGxfaW5jcmVtZW50YWwoInZpc2libGUiKTsKICAgICAgICB0aGlzLmxhc3Rfc2hvd24gPSB0aGlzLnByZXZpb3VzX2luY3JlbWVudGFsX2l0ZW0obnVsbCk7CiAgICAgICAgdGhpcy5zZXRfZW9zX3N0YXR1cyh0cnVlKTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICB0aGlzLmxhc3Rfc2hvd24gPSBudWxsOwogICAgICAgIHRoaXMuc2V0X3Zpc2liaWxpdHlfYWxsX2luY3JlbWVudGFsKCJoaWRkZW4iKTsKICAgICAgICB0aGlzLnNldF9lb3Nfc3RhdHVzKCF0aGlzLm5leHRfaW5jcmVtZW50YWxfaXRlbSh0aGlzLmxhc3Rfc2hvd24pKTsKICAgICAgfQoKICAgICAgdGhpcy5zZXRfbG9jYXRpb24oKTsKICAgICAgdGhpcy5hZGRfY2xhc3ModGhpcy5zbGlkZXNbMF0sICJmaXJzdC1zbGlkZSIpOwogICAgICB3M2Nfc2xpZHkuc2hvd19zbGlkZShzbGlkZSk7CiAgICB9CgogICAgdGhpcy50b2MgPSB0aGlzLnRhYmxlX29mX2NvbnRlbnRzKCk7CgogICAgdGhpcy5hZGRfaW5pdGlhbF9wcm9tcHQoKTsKCiAgICAvLyBiaW5kIGV2ZW50IGhhbmRsZXJzIHdpdGhvdXQgaW50ZXJmZXJpbmcgd2l0aCBjdXN0b20gcGFnZSBzY3JpcHRzCiAgICAvLyBUYXAgZXZlbnRzIGJlaGF2ZSB0b28gd2VpcmRseSB0byBzdXBwb3J0IGNsaWNrcyByZWxpYWJseSBvbgogICAgLy8gaVBob25lIGFuZCBpUGFkLCBzbyBleGNsdWRlIHRoZXNlIGZyb20gY2xpY2sgaGFuZGxlcgoKICAgIGlmICghdGhpcy5rZXlib2FyZGxlc3MpCiAgICB7CiAgICAgIHRoaXMuYWRkX2xpc3RlbmVyKGRvY3VtZW50LmJvZHksICJjbGljayIsIHRoaXMubW91c2VfYnV0dG9uX2NsaWNrKTsKICAgICAgdGhpcy5hZGRfbGlzdGVuZXIoZG9jdW1lbnQuYm9keSwgIm1vdXNlZG93biIsIHRoaXMubW91c2VfYnV0dG9uX2Rvd24pOwogICAgfQoKICAgIHRoaXMuYWRkX2xpc3RlbmVyKGRvY3VtZW50LCAia2V5ZG93biIsIHRoaXMua2V5X2Rvd24pOwogICAgdGhpcy5hZGRfbGlzdGVuZXIoZG9jdW1lbnQsICJrZXlwcmVzcyIsIHRoaXMua2V5X3ByZXNzKTsKICAgIHRoaXMuYWRkX2xpc3RlbmVyKHdpbmRvdywgInJlc2l6ZSIsIHRoaXMucmVzaXplZCk7CiAgICB0aGlzLmFkZF9saXN0ZW5lcih3aW5kb3csICJzY3JvbGwiLCB0aGlzLnNjcm9sbGVkKTsKICAgIHRoaXMuYWRkX2xpc3RlbmVyKHdpbmRvdywgInVubG9hZCIsIHRoaXMudW5sb2FkZWQpOwoKICAgIHRoaXMuYWRkX2xpc3RlbmVyKGRvY3VtZW50LCAiZ2VzdHVyZWNoYW5nZSIsIGZ1bmN0aW9uICgpCiAgICB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0pOwoKICAgIHRoaXMuYXR0YWNoX3RvdWNoX2hhbmRlcnModGhpcy5zbGlkZXMpOwoKICAgIC8vIHRoaXMgc2VlbXMgdG8gYmUgYSBkZWJ1Z2dpbmcgaGFjawogICAgLy9pZiAoIWRvY3VtZW50LmJvZHkub25jbGljaykKICAgIC8vICBkb2N1bWVudC5ib2R5Lm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7IH07CgogICAgdGhpcy5zaW5nbGVfc2xpZGVfdmlldygpOwoKICAgIC8vdGhpcy5zZXRfbG9jYXRpb24oKTsKCiAgICB0aGlzLnJlc2l6ZWQoKTsKCiAgICBpZiAodGhpcy5pZTcpCiAgICAgIHNldFRpbWVvdXQodzNjX3NsaWR5LmllX2hhY2ssIDEwMCk7CgogICAgdGhpcy5zaG93X3Rvb2xiYXIoKTsKCiAgICAvLyBmb3IgYmFjayBidXR0b24gZGV0ZWN0aW9uCiAgICBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7IHczY19zbGlkeS5jaGVja19sb2NhdGlvbigpOyB9LCAyMDApOwogICAgdzNjX3NsaWR5LmluaXRpYWxpemVkID0gdHJ1ZTsKICB9LAoKICAvLyBjcmVhdGUgZGl2IGVsZW1lbnQgd2l0aCBsaW5rcyB0byBlYWNoIHNsaWRlCiAgdGFibGVfb2ZfY29udGVudHM6IGZ1bmN0aW9uICgpIHsKICAgIHZhciB0b2MgPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJkaXYiKTsKICAgIHRoaXMuYWRkX2NsYXNzKHRvYywgInNsaWR5X3RvYyBoaWRkZW4iKTsKICAgIC8vdG9jLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCAiMCIpOwoKICAgIHZhciBoZWFkaW5nID0gdGhpcy5jcmVhdGVfZWxlbWVudCgiZGl2Iik7CiAgICB0aGlzLmFkZF9jbGFzcyhoZWFkaW5nLCAidG9jLWhlYWRpbmciKTsKICAgIGhlYWRpbmcuaW5uZXJIVE1MID0gdGhpcy5sb2NhbGl6ZSgiVGFibGUgb2YgQ29udGVudHMiKTsKCiAgICB0b2MuYXBwZW5kQ2hpbGQoaGVhZGluZyk7CiAgICB2YXIgcHJldmlvdXMgPSBudWxsOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zbGlkZXMubGVuZ3RoOyArK2kpCiAgICB7CiAgICAgIHZhciB0aXRsZSA9IHRoaXMuaGFzX2NsYXNzKHRoaXMuc2xpZGVzW2ldLCAidGl0bGUiKTsKICAgICAgdmFyIG51bSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKChpICsgMSkgKyAiLiAiKTsKCiAgICAgIHRvYy5hcHBlbmRDaGlsZChudW0pOwoKICAgICAgdmFyIGEgPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJhIik7CiAgICAgIGEuc2V0QXR0cmlidXRlKCJocmVmIiwgIiMoIiArIChpKzEpICsgIikiKTsKCiAgICAgIGlmICh0aXRsZSkKICAgICAgICB0aGlzLmFkZF9jbGFzcyhhLCAidGl0bGVzbGlkZSIpOwoKICAgICAgdmFyIG5hbWUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLnNsaWRlX25hbWUoaSkpOwogICAgICBhLmFwcGVuZENoaWxkKG5hbWUpOwogICAgICBhLm9uY2xpY2sgPSB3M2Nfc2xpZHkudG9jX2NsaWNrOwogICAgICBhLm9ua2V5ZG93biA9IHczY19zbGlkeS50b2Nfa2V5X2Rvd247CiAgICAgIGEucHJldmlvdXMgPSBwcmV2aW91czsKCiAgICAgIGlmIChwcmV2aW91cykKICAgICAgICBwcmV2aW91cy5uZXh0ID0gYTsKCiAgICAgIHRvYy5hcHBlbmRDaGlsZChhKTsKCiAgICAgIGlmIChpID09IDApCiAgICAgICAgdG9jLmZpcnN0ID0gYTsKCiAgICAgIGlmIChpIDwgdGhpcy5zbGlkZXMubGVuZ3RoIC0gMSkKICAgICAgewogICAgICAgIHZhciBiciA9IHRoaXMuY3JlYXRlX2VsZW1lbnQoImJyIik7CiAgICAgICAgdG9jLmFwcGVuZENoaWxkKGJyKTsKICAgICAgfQoKICAgICAgcHJldmlvdXMgPSBhOwogICAgfQoKICAgIHRvYy5mb2N1cyA9IGZ1bmN0aW9uICgpIHsKICAgICAgaWYgKHRoaXMuZmlyc3QpCiAgICAgICAgdGhpcy5maXJzdC5mb2N1cygpOwogICAgfQoKICAgIHRvYy5vbm1vdXNldXAgPSB3M2Nfc2xpZHkubW91c2VfYnV0dG9uX3VwOwoKICAgIHRvYy5vbmNsaWNrID0gZnVuY3Rpb24gKGUpIHsKICAgICAgZXx8KGU9d2luZG93LmV2ZW50KTsKCiAgICAgIGlmICh3M2Nfc2xpZHkuc2VsZWN0ZWRfdGV4dF9sZW4gPD0gMCkKICAgICAgICAgdzNjX3NsaWR5LmhpZGVfdGFibGVfb2ZfY29udGVudHModHJ1ZSk7CgogICAgICB3M2Nfc2xpZHkuc3RvcF9wcm9wYWdhdGlvbihlKTsKICAgIAogICAgICBpZiAoZS5jYW5jZWwgIT0gdW5kZWZpbmVkKQogICAgICAgIGUuY2FuY2VsID0gdHJ1ZTsKICAgICAgCiAgICAgIGlmIChlLnJldHVyblZhbHVlICE9IHVuZGVmaW5lZCkKICAgICAgICBlLnJldHVyblZhbHVlID0gZmFsc2U7CiAgICAgIAogICAgICByZXR1cm4gZmFsc2U7CiAgICB9OwoKICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKHRvYywgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKICAgIHJldHVybiB0b2M7CiAgfSwKCiAgaXNfc2hvd25fdG9jOiBmdW5jdGlvbiAoKSB7CiAgICByZXR1cm4gIXczY19zbGlkeS5oYXNfY2xhc3ModzNjX3NsaWR5LnRvYywgImhpZGRlbiIpOwogIH0sCgogIHNob3dfdGFibGVfb2ZfY29udGVudHM6IGZ1bmN0aW9uICgpIHsKICAgIHczY19zbGlkeS5yZW1vdmVfY2xhc3ModzNjX3NsaWR5LnRvYywgImhpZGRlbiIpOwogICAgdmFyIHRvYyA9IHczY19zbGlkeS50b2M7CiAgICB0b2MuZm9jdXMoKTsKCiAgICBpZiAodzNjX3NsaWR5LmllNyAmJiB3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyID09IDApCiAgICAgIHNldFRpbWVvdXQodzNjX3NsaWR5LmllX2hhY2ssIDEwMCk7CiAgfSwKCiAgaGlkZV90YWJsZV9vZl9jb250ZW50czogZnVuY3Rpb24gKGZvY3VzKSB7CiAgICB3M2Nfc2xpZHkuYWRkX2NsYXNzKHczY19zbGlkeS50b2MsICJoaWRkZW4iKTsKCiAgICBpZiAoZm9jdXMgJiYgIXczY19zbGlkeS5vcGVyYSAmJgogICAgICAgICF3M2Nfc2xpZHkuaGFzX2NsYXNzKHczY19zbGlkeS50b2MsICJoaWRkZW4iKSkKICAgICAgdzNjX3NsaWR5LnNldF9mb2N1cygpOwogIH0sCgogIHRvZ2dsZV90YWJsZV9vZl9jb250ZW50czogZnVuY3Rpb24gKCkgewogICAgaWYgKHczY19zbGlkeS5pc19zaG93bl90b2MoKSkKICAgICAgdzNjX3NsaWR5LmhpZGVfdGFibGVfb2ZfY29udGVudHModHJ1ZSk7CiAgICBlbHNlCiAgICAgIHczY19zbGlkeS5zaG93X3RhYmxlX29mX2NvbnRlbnRzKCk7CiAgfSwKCiAgLy8gY2FsbGVkIG9uIGNsaWNraW5nIHRvYyBlbnRyeQogIHRvY19jbGljazogZnVuY3Rpb24gKGUpIHsKICAgIGlmICghZSkKICAgICAgZSA9IHdpbmRvdy5ldmVudDsKCiAgICB2YXIgdGFyZ2V0ID0gdzNjX3NsaWR5LmdldF90YXJnZXQoZSk7CgogICAgaWYgKHRhcmdldCAmJiB0YXJnZXQubm9kZVR5cGUgPT0gMSkKICAgIHsKICAgICAgdmFyIHVyaSA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoImhyZWYiKTsKCiAgICAgIGlmICh1cmkpCiAgICAgIHsKICAgICAgICAvL2FsZXJ0KCJnb2luZyB0byAiICsgdXJpKTsKICAgICAgICB2YXIgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwogICAgICAgIHczY19zbGlkeS5oaWRlX3NsaWRlKHNsaWRlKTsKICAgICAgICB3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyID0gdzNjX3NsaWR5LmZpbmRfc2xpZGVfbnVtYmVyKHVyaSk7CiAgICAgICAgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwogICAgICAgIHczY19zbGlkeS5sYXN0X3Nob3duID0gbnVsbDsKICAgICAgICB3M2Nfc2xpZHkuc2V0X2xvY2F0aW9uKCk7CiAgICAgICAgdzNjX3NsaWR5LnNldF92aXNpYmlsaXR5X2FsbF9pbmNyZW1lbnRhbCgiaGlkZGVuIik7CiAgICAgICAgdzNjX3NsaWR5LnNldF9lb3Nfc3RhdHVzKCF3M2Nfc2xpZHkubmV4dF9pbmNyZW1lbnRhbF9pdGVtKHczY19zbGlkeS5sYXN0X3Nob3duKSk7CiAgICAgICAgdzNjX3NsaWR5LnNob3dfc2xpZGUoc2xpZGUpOwogICAgICAgIC8vdGFyZ2V0LmZvY3VzKCk7CgogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgIGlmICghdzNjX3NsaWR5Lm9wZXJhKQogICAgICAgICAgICB3M2Nfc2xpZHkuc2V0X2ZvY3VzKCk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKQogICAgICAgIHsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICB3M2Nfc2xpZHkuaGlkZV90YWJsZV9vZl9jb250ZW50cyh0cnVlKTsKICAgIGlmICh3M2Nfc2xpZHkuaWU3KSB3M2Nfc2xpZHkuaWVfaGFjaygpOwogICAgdzNjX3NsaWR5LnN0b3BfcHJvcGFnYXRpb24oZSk7CiAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChlKTsKICB9LAoKICAvLyBjYWxsZWQgb25rZXlkb3duIGZvciB0b2MgZW50cnkKICB0b2Nfa2V5X2Rvd246IGZ1bmN0aW9uIChldmVudCkgewogICAgdmFyIGtleTsKCiAgICBpZiAoIWV2ZW50KQogICAgICB2YXIgZXZlbnQgPSB3aW5kb3cuZXZlbnQ7CgogICAgLy8ga2x1ZGdlIGFyb3VuZCBOUy9JRSBkaWZmZXJlbmNlcyAKICAgIGlmICh3aW5kb3cuZXZlbnQpCiAgICAgIGtleSA9IHdpbmRvdy5ldmVudC5rZXlDb2RlOwogICAgZWxzZSBpZiAoZXZlbnQud2hpY2gpCiAgICAgIGtleSA9IGV2ZW50LndoaWNoOwogICAgZWxzZQogICAgICByZXR1cm4gdHJ1ZTsgLy8gWWlrZXMhIHVua25vd24gYnJvd3NlcgoKICAgIC8vIGlnbm9yZSBldmVudCBpZiBrZXkgdmFsdWUgaXMgemVybwogICAgLy8gYXMgZm9yIGFsdCBvbiBPcGVyYSBhbmQgS29ucXVlcm9yCiAgICBpZiAoIWtleSkKICAgICAgcmV0dXJuIHRydWU7CgogICAgLy8gY2hlY2sgZm9yIGNvbmN1cnJlbnQgY29udHJvbC9jb21tYW5kL2FsdCBrZXkKICAgIC8vIGJ1dCBhcmUgdGhlc2Ugb25seSBwcmVzZW50IG9uIG1vdXNlIGV2ZW50cz8KCiAgICBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkpCiAgICAgIHJldHVybiB0cnVlOwoKICAgIGlmIChrZXkgPT0gMTMpCiAgICB7CiAgICAgIHZhciB1cmkgPSB0aGlzLmdldEF0dHJpYnV0ZSgiaHJlZiIpOwoKICAgICAgaWYgKHVyaSkKICAgICAgewogICAgICAgIC8vYWxlcnQoImdvaW5nIHRvICIgKyB1cmkpOwogICAgICAgdmFyIHNsaWRlID0gdzNjX3NsaWR5LnNsaWRlc1t3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyXTsKICAgICAgICB3M2Nfc2xpZHkuaGlkZV9zbGlkZShzbGlkZSk7CiAgICAgICAgdzNjX3NsaWR5LnNsaWRlX251bWJlciA9IHczY19zbGlkeS5maW5kX3NsaWRlX251bWJlcih1cmkpOwogICAgICAgIHNsaWRlID0gdzNjX3NsaWR5LnNsaWRlc1t3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyXTsKICAgICAgICB3M2Nfc2xpZHkubGFzdF9zaG93biA9IG51bGw7CiAgICAgICAgdzNjX3NsaWR5LnNldF9sb2NhdGlvbigpOwogICAgICAgIHczY19zbGlkeS5zZXRfdmlzaWJpbGl0eV9hbGxfaW5jcmVtZW50YWwoImhpZGRlbiIpOwogICAgICAgIHczY19zbGlkeS5zZXRfZW9zX3N0YXR1cyghdzNjX3NsaWR5Lm5leHRfaW5jcmVtZW50YWxfaXRlbSh3M2Nfc2xpZHkubGFzdF9zaG93bikpOwogICAgICAgIHczY19zbGlkeS5zaG93X3NsaWRlKHNsaWRlKTsKICAgICAgICAvL3RhcmdldC5mb2N1cygpOwoKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICBpZiAoIXczY19zbGlkeS5vcGVyYSkKICAgICAgICAgICAgdzNjX3NsaWR5LnNldF9mb2N1cygpOwogICAgICAgIH0KICAgICAgICBjYXRjaCAoZSkKICAgICAgICB7CiAgICAgICAgfQogICAgICB9CgogICAgICB3M2Nfc2xpZHkuaGlkZV90YWJsZV9vZl9jb250ZW50cyh0cnVlKTsKCiAgICAgIGlmIChzZWxmLmllNykKICAgICAgIHczY19zbGlkeS5pZV9oYWNrKCk7CgogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CiAgICB9CgogICAgaWYgKGtleSA9PSA0MCAmJiB0aGlzLm5leHQpCiAgICB7CiAgICAgIHRoaXMubmV4dC5mb2N1cygpOwogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CiAgICB9CgogICAgaWYgKGtleSA9PSAzOCAmJiB0aGlzLnByZXZpb3VzKQogICAgewogICAgICB0aGlzLnByZXZpb3VzLmZvY3VzKCk7CiAgICAgIHJldHVybiB3M2Nfc2xpZHkuY2FuY2VsKGV2ZW50KTsKICAgIH0KCiAgICByZXR1cm4gdHJ1ZTsKICB9LAoKICB0b3VjaHN0YXJ0OiBmdW5jdGlvbiAoZSkKICB7CiAgICAvLyBhIGRvdWJsZSB0b3VjaCBvZnRlbiBzdGFydHMgd2l0aCBhCiAgICAvLyBzaW5nbGUgdG91Y2ggZHVlIHRvIGZpbmdlcnMgdG91Y2hpbmcKICAgIC8vIGRvd24gYXQgc2xpZ2h0bHkgZGlmZmVyZW50IHRpbWVzCiAgICAvLyB0aHVzIGF2b2lkIGNhbGxpbmcgcHJldmVudERlZmF1bHQgaGVyZQogICAgdGhpcy5wcmV2X3RhcCA9IHRoaXMubGFzdF90YXA7CiAgICB0aGlzLmxhc3RfdGFwID0gKG5ldyBEYXRlKS5nZXRUaW1lKCk7CgogICAgdmFyIHRhcF9kZWxheSA9IHRoaXMubGFzdF90YXAgLSB0aGlzLnByZXZfdGFwOwoKICAgIGlmICh0YXBfZGVsYXkgPD0gMjAwKQogICAgewogICAgICAvLyBkb3VibGUgdGFwCiAgICB9CgogICAgdmFyIHRvdWNoID0gZS50b3VjaGVzWzBdOwoKICAgIHRoaXMucGFnZVggPSB0b3VjaC5wYWdlWDsKICAgIHRoaXMucGFnZVkgPSB0b3VjaC5wYWdlWTsKICAgIHRoaXMuc2NyZWVuWCA9IHRvdWNoLnNjcmVlblg7CiAgICB0aGlzLnNjcmVlblkgPSB0b3VjaC5zY3JlZW5ZOwogICAgdGhpcy5jbGllbnRYID0gdG91Y2guY2xpZW50WDsKICAgIHRoaXMuY2xpZW50WSA9IHRvdWNoLmNsaWVudFk7CgogICAgdGhpcy5kZWx0YV94ID0gdGhpcy5kZWx0YV95ID0gMDsKICB9LAoKICB0b3VjaG1vdmU6IGZ1bmN0aW9uIChlKQogIHsKICAgIC8vIG92ZXJyaWRlIG5hdGl2ZSBnZXN0dXJlcyBmb3Igc2luZ2xlIHRvdWNoCiAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA+IDEpCiAgICAgIHJldHVybjsKCiAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICB2YXIgdG91Y2ggPSBlLnRvdWNoZXNbMF07CiAgICB0aGlzLmRlbHRhX3ggPSB0b3VjaC5wYWdlWCAtIHRoaXMucGFnZVg7CiAgICB0aGlzLmRlbHRhX3kgPSB0b3VjaC5wYWdlWSAtIHRoaXMucGFnZVk7CiAgfSwKCiAgdG91Y2hlbmQ6IGZ1bmN0aW9uIChlKQogIHsKICAgIC8vIGRlZmF1bHQgYmVoYXZpb3IgZm9yIG11bHRpLXRvdWNoCiAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA+IDEpCiAgICAgIHJldHVybjsKCiAgICB2YXIgZGVsYXkgPSAobmV3IERhdGUpLmdldFRpbWUoKSAtIHRoaXMubGFzdF90YXA7CiAgICB2YXIgZHggPSB0aGlzLmRlbHRhX3g7CiAgICB2YXIgZHkgPSB0aGlzLmRlbHRhX3k7CiAgICB2YXIgYWJzX2R4ID0gTWF0aC5hYnMoZHgpOwogICAgdmFyIGFic19keSA9IE1hdGguYWJzKGR5KTsKCiAgICBpZiAoZGVsYXkgPCA1MDAgJiYgKGFic19keCA+IDEwMCB8fCBhYnNfZHkgPiAxMDApKQogICAgewogICAgICBpZiAoYWJzX2R4ID4gMC41ICogYWJzX2R5KQogICAgICB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICBpZiAoZHggPCAwKQogICAgICAgICAgdzNjX3NsaWR5Lm5leHRfc2xpZGUodHJ1ZSk7CiAgICAgICAgZWxzZQogICAgICAgICAgdzNjX3NsaWR5LnByZXZpb3VzX3NsaWRlKHRydWUpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGFic19keSA+IDIgKiBhYnNfZHgpCiAgICAgIHsKICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgdzNjX3NsaWR5LnRvZ2dsZV90YWJsZV9vZl9jb250ZW50cygpOwogICAgICB9CiAgICB9CiAgfSwKCiAgLy8gIyMjIE9CU09MRVRFICMjIwogIGJlZm9yZV9wcmludDogZnVuY3Rpb24gKCkgewogICAgdGhpcy5zaG93X2FsbF9zbGlkZXMoKTsKICAgIHRoaXMuaGlkZV90b29sYmFyKCk7CiAgICBhbGVydCgiYmVmb3JlIHByaW50Iik7CiAgfSwKCiAgLy8gIyMjIE9CU09MRVRFICMjIwogIGFmdGVyX3ByaW50OiBmdW5jdGlvbiAoKSB7CiAgICBpZiAoIXRoaXMudmlld19hbGwpCiAgICB7CiAgICAgIHRoaXMuc2luZ2xlX3NsaWRlX3ZpZXcoKTsKICAgICAgdGhpcy5zaG93X3Rvb2xiYXIoKTsKICAgIH0KICAgIGFsZXJ0KCJhZnRlciBwcmludCIpOwogIH0sCgogIC8vICMjIyBPQlNPTEVURSAjIyMKICBwcmludF9zbGlkZXM6IGZ1bmN0aW9uICgpIHsKICAgIHRoaXMuYmVmb3JlX3ByaW50KCk7CiAgICB3aW5kb3cucHJpbnQoKTsKICAgIHRoaXMuYWZ0ZXJfcHJpbnQoKTsKICB9LAoKICAvLyAjIyMgT0JTT0xFVEUgPz8gIyMjCiAgdG9nZ2xlX3ZpZXc6IGZ1bmN0aW9uICgpIHsKICAgIGlmICh0aGlzLnZpZXdfYWxsKQogICAgewogICAgICB0aGlzLnNpbmdsZV9zbGlkZV92aWV3KCk7CiAgICAgIHRoaXMuc2hvd190b29sYmFyKCk7CiAgICAgIHRoaXMudmlld19hbGwgPSAwOwogICAgfQogICAgZWxzZQogICAgewogICAgICB0aGlzLnNob3dfYWxsX3NsaWRlcygpOwogICAgICB0aGlzLmhpZGVfdG9vbGJhcigpOwogICAgICB0aGlzLnZpZXdfYWxsID0gMTsKICAgIH0KICB9LAoKICAvLyBwcmVwYXJlIGZvciBwcmludGluZyAgIyMjIE9CU09MRVRFICMjIwogIHNob3dfYWxsX3NsaWRlczogZnVuY3Rpb24gKCkgewogICAgdGhpcy5yZW1vdmVfY2xhc3MoZG9jdW1lbnQuYm9keSwgInNpbmdsZV9zbGlkZSIpOwogICAgdGhpcy5zZXRfdmlzaWJpbGl0eV9hbGxfaW5jcmVtZW50YWwoInZpc2libGUiKTsKICB9LAoKICAvLyByZXN0b3JlIGFmdGVyIHByaW50aW5nICAjIyMgT0JTT0xFVEUgIyMjCiAgc2luZ2xlX3NsaWRlX3ZpZXc6IGZ1bmN0aW9uICgpIHsKICAgIHRoaXMuYWRkX2NsYXNzKGRvY3VtZW50LmJvZHksICJzaW5nbGVfc2xpZGUiKTsKICAgIHRoaXMuc2V0X3Zpc2liaWxpdHlfYWxsX2luY3JlbWVudGFsKCJ2aXNpYmxlIik7CiAgICB0aGlzLmxhc3Rfc2hvd24gPSB0aGlzLnByZXZpb3VzX2luY3JlbWVudGFsX2l0ZW0obnVsbCk7CiAgfSwKCiAgLy8gc3VwcHJlc3MgSUUncyBpbWFnZSB0b29sYmFyIHBvcCB1cAogIGhpZGVfaW1hZ2VfdG9vbGJhcjogZnVuY3Rpb24gKCkgewogICAgaWYgKCF0aGlzLm5zX3BvcykKICAgIHsKICAgICAgdmFyIGltYWdlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJJTUciKTsKCiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW1hZ2VzLmxlbmd0aDsgKytpKQogICAgICAgIGltYWdlc1tpXS5zZXRBdHRyaWJ1dGUoImdhbGxlcnlpbWciLCAibm8iKTsKICAgIH0KICB9LAoKICB1bmxvYWRlZDogZnVuY3Rpb24gKGUpIHsKICAgIC8vYWxlcnQoInVubG9hZGVkIik7CiAgfSwKCiAgLy8gU2FmYXJpIGFuZCBLb25xdWVyb3IgZG9uJ3QgeWV0IHN1cHBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSgpCiAgLy8gYW5kIHRoZXkgYWx3YXlzIHJlbG9hZCBwYWdlIHdoZW4gbG9jYXRpb24uaHJlZiBpcyB1cGRhdGVkCiAgaXNfS0hUTUw6IGZ1bmN0aW9uICgpIHsKICAgIHZhciBhZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7CiAgICByZXR1cm4gKGFnZW50LmluZGV4T2YoIktIVE1MIikgPj0gMCA/IHRydWUgOiBmYWxzZSk7CiAgfSwKCiAgLy8gZmluZCBzbGlkZSBuYW1lIGZyb20gZmlyc3QgaDEgZWxlbWVudAogIC8vIGRlZmF1bHQgdG8gZG9jdW1lbnQgdGl0bGUgKyBzbGlkZSBudW1iZXIKICBzbGlkZV9uYW1lOiBmdW5jdGlvbiAoaW5kZXgpIHsKICAgIHZhciBuYW1lID0gbnVsbDsKICAgIHZhciBzbGlkZSA9IHRoaXMuc2xpZGVzW2luZGV4XTsKCiAgICB2YXIgaGVhZGluZyA9IHRoaXMuZmluZF9oZWFkaW5nKHNsaWRlKTsKCiAgICBpZiAoaGVhZGluZykKICAgICAgbmFtZSA9IHRoaXMuZXh0cmFjdF90ZXh0KGhlYWRpbmcpOwoKICAgIGlmICghbmFtZSkKICAgICAgbmFtZSA9IHRoaXMudGl0bGUgKyAiKCIgKyAoaW5kZXggKyAxKSArICIpIjsKCiAgICBuYW1lLnJlcGxhY2UoL1wmL2csICImYW1wOyIpOwogICAgbmFtZS5yZXBsYWNlKC9cPC9nLCAiJmx0OyIpOwogICAgbmFtZS5yZXBsYWNlKC9cPi9nLCAiJmd0OyIpOwoKICAgIHJldHVybiBuYW1lOwogIH0sCgogIC8vIGZpbmQgZmlyc3QgaDEgZWxlbWVudCBpbiBET00gdHJlZQogIGZpbmRfaGVhZGluZzogZnVuY3Rpb24gKG5vZGUpIHsKICAgIGlmICghbm9kZSB8fCBub2RlLm5vZGVUeXBlICE9IDEpCiAgICAgIHJldHVybiBudWxsOwoKICAgIGlmIChub2RlLm5vZGVOYW1lID09ICJIMSIgfHwgbm9kZS5ub2RlTmFtZSA9PSAiaDEiKQogICAgICByZXR1cm4gbm9kZTsKCiAgICB2YXIgY2hpbGQgPSBub2RlLmZpcnN0Q2hpbGQ7CgogICAgd2hpbGUgKGNoaWxkKQogICAgewogICAgICBub2RlID0gdGhpcy5maW5kX2hlYWRpbmcoY2hpbGQpOwoKICAgICAgaWYgKG5vZGUpCiAgICAgICAgcmV0dXJuIG5vZGU7CgogICAgICBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nOwogICAgfQoKICAgIHJldHVybiBudWxsOwogIH0sCgogIC8vIHJlY3Vyc2l2ZWx5IGV4dHJhY3QgdGV4dCBmcm9tIERPTSB0cmVlCiAgZXh0cmFjdF90ZXh0OiBmdW5jdGlvbiAobm9kZSkgewogICAgaWYgKCFub2RlKQogICAgICByZXR1cm4gIiI7CgogICAgLy8gdGV4dCBub2RlcwogICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMykKICAgICAgcmV0dXJuIG5vZGUubm9kZVZhbHVlOwoKICAgIC8vIGVsZW1lbnRzCiAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAxKQogICAgewogICAgICBub2RlID0gbm9kZS5maXJzdENoaWxkOwogICAgICB2YXIgdGV4dCA9ICIiOwoKICAgICAgd2hpbGUgKG5vZGUpCiAgICAgIHsKICAgICAgICB0ZXh0ID0gdGV4dCArIHRoaXMuZXh0cmFjdF90ZXh0KG5vZGUpOwogICAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nOwogICAgICB9CgogICAgICByZXR1cm4gdGV4dDsKICAgIH0KCiAgICByZXR1cm4gIiI7CiAgfSwKCiAgLy8gZmluZCBjb3B5cmlnaHQgdGV4dCBmcm9tIG1ldGEgZWxlbWVudAogIGZpbmRfY29weXJpZ2h0OiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgbmFtZSwgY29udGVudDsKICAgIHZhciBtZXRhID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIm1ldGEiKTsKCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1ldGEubGVuZ3RoOyArK2kpCiAgICB7CiAgICAgIG5hbWUgPSBtZXRhW2ldLmdldEF0dHJpYnV0ZSgibmFtZSIpOwogICAgICBjb250ZW50ID0gbWV0YVtpXS5nZXRBdHRyaWJ1dGUoImNvbnRlbnQiKTsKCiAgICAgIGlmIChuYW1lID09ICJjb3B5cmlnaHQiKQogICAgICAgIHJldHVybiBjb250ZW50OwogICAgfQoKICAgIHJldHVybiBudWxsOwogIH0sCgogIGZpbmRfc2l6ZV9hZGp1c3Q6IGZ1bmN0aW9uICgpIHsKICAgIHZhciBuYW1lLCBjb250ZW50LCBvZmZzZXQ7CiAgICB2YXIgbWV0YSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJtZXRhIik7CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXRhLmxlbmd0aDsgKytpKQogICAgewogICAgICBuYW1lID0gbWV0YVtpXS5nZXRBdHRyaWJ1dGUoIm5hbWUiKTsKICAgICAgY29udGVudCA9IG1ldGFbaV0uZ2V0QXR0cmlidXRlKCJjb250ZW50Iik7CgogICAgICBpZiAobmFtZSA9PSAiZm9udC1zaXplLWFkanVzdG1lbnQiKQogICAgICAgIHJldHVybiAxICogY29udGVudDsKICAgIH0KCiAgICByZXR1cm4gMTsKICB9LAoKICAvLyA8bWV0YSBuYW1lPSJkdXJhdGlvbiIgY29udGVudD0iMjAiIC8+ICBmb3IgMjAgbWludXRlcwogIGZpbmRfZHVyYXRpb246IGZ1bmN0aW9uICgpIHsKICAgIHZhciBuYW1lLCBjb250ZW50LCBvZmZzZXQ7CiAgICB2YXIgbWV0YSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJtZXRhIik7CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXRhLmxlbmd0aDsgKytpKQogICAgewogICAgICBuYW1lID0gbWV0YVtpXS5nZXRBdHRyaWJ1dGUoIm5hbWUiKTsKICAgICAgY29udGVudCA9IG1ldGFbaV0uZ2V0QXR0cmlidXRlKCJjb250ZW50Iik7CgogICAgICBpZiAobmFtZSA9PSAiZHVyYXRpb24iKQogICAgICAgIHJldHVybiA2MDAwMCAqIGNvbnRlbnQ7CiAgICB9CgogICAgcmV0dXJuIG51bGw7CiAgfSwKCiAgcmVwbGFjZV9ieV9ub25fYnJlYWtpbmdfc3BhY2U6IGZ1bmN0aW9uIChzdHIpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKQogICAgICBzdHJbaV0gPSAxNjA7CiAgfSwKCiAgLy8gIyMjIENIRUNLIE1FICMjIyBpcyB1c2Ugb2YgImxpIiBva2F5IGZvciB0ZXh0L2h0bWw/CiAgLy8gZm9yIFhIVE1MIGRvIHdlIGFsc28gbmVlZCB0byBzcGVjaWZ5IG5hbWVzcGFjZT8KICBpbml0X291dGxpbmVyOiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgaXRlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGkiKTsKCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgKytpKQogICAgewogICAgICB2YXIgdGFyZ2V0ID0gaXRlbXNbaV07CgogICAgICBpZiAoIXRoaXMuaGFzX2NsYXNzKHRhcmdldC5wYXJlbnROb2RlLCAib3V0bGluZSIpKQogICAgICAgIGNvbnRpbnVlOwoKICAgICAgdGFyZ2V0Lm9uY2xpY2sgPSB0aGlzLm91dGxpbmVfY2xpY2s7Ci8qICMjIyBtb3JlIHdvcmsgbmVlZGVkIGZvciBJRTYKICAgICAgaWYgKCF0aGlzLm5zX3BvcykKICAgICAgewogICAgICAgIHRhcmdldC5vbm1vdXNlb3ZlciA9IHRoaXMuaG92ZXJfb3V0bGluZTsKICAgICAgICB0YXJnZXQub25tb3VzZW91dCA9IHRoaXMudW5ob3Zlcl9vdXRsaW5lOwogICAgICB9CiovCiAgICAgIGlmICh0aGlzLmZvbGRhYmxlKHRhcmdldCkpCiAgICAgIHsKICAgICAgICB0YXJnZXQuZm9sZGFibGUgPSB0cnVlOwogICAgICAgIHRhcmdldC5vbmZvY3VzID0gZnVuY3Rpb24gKCkge3czY19zbGlkeS5vdXRsaW5lID0gdGhpczt9OwogICAgICAgIHRhcmdldC5vbmJsdXIgPSBmdW5jdGlvbiAoKSB7dzNjX3NsaWR5Lm91dGxpbmUgPSBudWxsO307CgogICAgICAgIGlmICghdGFyZ2V0LmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKSkKICAgICAgICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwgIjAiKTsKCiAgICAgICAgaWYgKHRoaXMuaGFzX2NsYXNzKHRhcmdldCwgImV4cGFuZCIpKQogICAgICAgICAgdGhpcy51bmZvbGQodGFyZ2V0KTsKICAgICAgICBlbHNlCiAgICAgICAgICB0aGlzLmZvbGQodGFyZ2V0KTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICB0aGlzLmFkZF9jbGFzcyh0YXJnZXQsICJub2ZvbGQiKTsKICAgICAgICB0YXJnZXQudmlzaWJsZSA9IHRydWU7CiAgICAgICAgdGFyZ2V0LmZvbGRhYmxlID0gZmFsc2U7CiAgICAgIH0KICAgIH0KICB9LAoKICBmb2xkYWJsZTogZnVuY3Rpb24gKGl0ZW0pIHsKICAgIGlmICghaXRlbSB8fCBpdGVtLm5vZGVUeXBlICE9IDEpCiAgICAgIHJldHVybiBmYWxzZTsKCiAgICB2YXIgbm9kZSA9IGl0ZW0uZmlyc3RDaGlsZDsKCiAgICB3aGlsZSAobm9kZSkKICAgIHsKICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMSAmJiB0aGlzLmlzX2Jsb2NrKG5vZGUpKQogICAgICAgIHJldHVybiB0cnVlOwoKICAgICAgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7CiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIC8vICMjIyBDSEVDSyBNRSAjIyMgc3dpdGNoIHRvIGFkZC9yZW1vdmUgImhpZGRlbiIgY2xhc3MKICBmb2xkOiBmdW5jdGlvbiAoaXRlbSkgewogICAgaWYgKGl0ZW0pCiAgICB7CiAgICAgIHRoaXMucmVtb3ZlX2NsYXNzKGl0ZW0sICJ1bmZvbGRlZCIpOwogICAgICB0aGlzLmFkZF9jbGFzcyhpdGVtLCAiZm9sZGVkIik7CiAgICB9CgogICAgdmFyIG5vZGUgPSBpdGVtID8gaXRlbS5maXJzdENoaWxkIDogbnVsbDsKCiAgICB3aGlsZSAobm9kZSkKICAgIHsKICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMSAmJiB0aGlzLmlzX2Jsb2NrKG5vZGUpKSAvLyBlbGVtZW50CiAgICAgIHsKICAgICAgICAgdzNjX3NsaWR5LmFkZF9jbGFzcyhub2RlLCAiaGlkZGVuIik7CiAgICAgIH0KCiAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nOwogICAgfQoKICAgIGl0ZW0udmlzaWJsZSA9IGZhbHNlOwogIH0sCgogIC8vICMjIyBDSEVDSyBNRSAjIyMgc3dpdGNoIHRvIGFkZC9yZW1vdmUgImhpZGRlbiIgY2xhc3MKICB1bmZvbGQ6IGZ1bmN0aW9uIChpdGVtKSB7CiAgICBpZiAoaXRlbSkKICAgIHsKICAgICAgdGhpcy5hZGRfY2xhc3MoaXRlbSwgInVuZm9sZGVkIik7CiAgICAgIHRoaXMucmVtb3ZlX2NsYXNzKGl0ZW0sICJmb2xkZWQiKTsKICAgIH0KCiAgICB2YXIgbm9kZSA9IGl0ZW0gPyBpdGVtLmZpcnN0Q2hpbGQgOiBudWxsOwoKICAgIHdoaWxlIChub2RlKQogICAgewogICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAxICYmIHRoaXMuaXNfYmxvY2sobm9kZSkpIC8vIGVsZW1lbnQKICAgICAgewogICAgICAgIHczY19zbGlkeS5yZW1vdmVfY2xhc3Mobm9kZSwgImhpZGRlbiIpOwogICAgICB9CgogICAgICBub2RlID0gbm9kZS5uZXh0U2libGluZzsKICAgIH0KCiAgICBpdGVtLnZpc2libGUgPSB0cnVlOwogIH0sCgogIG91dGxpbmVfY2xpY2s6IGZ1bmN0aW9uIChlKSB7CiAgICBpZiAoIWUpCiAgICAgIGUgPSB3aW5kb3cuZXZlbnQ7CgogICAgdmFyIHJpZ2h0Y2xpY2sgPSBmYWxzZTsKICAgIHZhciB0YXJnZXQgPSB3M2Nfc2xpZHkuZ2V0X3RhcmdldChlKTsKCiAgICB3aGlsZSAodGFyZ2V0ICYmIHRhcmdldC52aXNpYmxlID09IHVuZGVmaW5lZCkKICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudE5vZGU7CgogICAgaWYgKCF0YXJnZXQpCiAgICAgIHJldHVybiB0cnVlOwoKICAgIGlmIChlLndoaWNoKQogICAgICByaWdodGNsaWNrID0gKGUud2hpY2ggPT0gMyk7CiAgICBlbHNlIGlmIChlLmJ1dHRvbikKICAgICAgcmlnaHRjbGljayA9IChlLmJ1dHRvbiA9PSAyKTsKCiAgICBpZiAoIXJpZ2h0Y2xpY2sgJiYgdGFyZ2V0LnZpc2libGUgIT0gdW5kZWZpbmVkKQogICAgewogICAgICBpZiAodGFyZ2V0LmZvbGRhYmxlKQogICAgICB7CiAgICAgICAgaWYgKHRhcmdldC52aXNpYmxlKQogICAgICAgICAgdzNjX3NsaWR5LmZvbGQodGFyZ2V0KTsKICAgICAgICBlbHNlCiAgICAgICAgICB3M2Nfc2xpZHkudW5mb2xkKHRhcmdldCk7CiAgICAgIH0KCiAgICAgIHczY19zbGlkeS5zdG9wX3Byb3BhZ2F0aW9uKGUpOwogICAgICBlLmNhbmNlbCA9IHRydWU7CiAgICAgIGUucmV0dXJuVmFsdWUgPSBmYWxzZTsKICAgIH0KCiAgICByZXR1cm4gZmFsc2U7CiAgfSwKCiAgYWRkX2luaXRpYWxfcHJvbXB0OiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgcHJvbXB0ID0gdGhpcy5jcmVhdGVfZWxlbWVudCgiZGl2Iik7CiAgICBwcm9tcHQuc2V0QXR0cmlidXRlKCJjbGFzcyIsICJpbml0aWFsX3Byb21wdCIpOwoKICAgIHZhciBwMSA9IHRoaXMuY3JlYXRlX2VsZW1lbnQoInAiKTsKICAgIHByb21wdC5hcHBlbmRDaGlsZChwMSk7CiAgICBwMS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgImhlbHAiKTsKCiAgICBpZiAodGhpcy5rZXlib2FyZGxlc3MpCiAgICAgIHAxLmlubmVySFRNTCA9ICJzd2lwZSBsZWZ0IHRvIG1vdmUgdG8gbmV4dCBzbGlkZSI7CiAgICBlbHNlCiAgICAgIHAxLmlubmVySFRNTCA9ICJTcGFjZSwgUmlnaHQgQXJyb3cgb3Igc3dpcGUgbGVmdCB0byBtb3ZlIHRvICIgKwogICAgICAgICAgICAgICAgICAgICAibmV4dCBzbGlkZSwgY2xpY2sgaGVscCBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzIjsKCiAgICB0aGlzLmFkZF9saXN0ZW5lcihwcm9tcHQsICJjbGljayIsIGZ1bmN0aW9uIChlKSB7CiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQocHJvbXB0KTsKICAgICAgdzNjX3NsaWR5LnN0b3BfcHJvcGFnYXRpb24oZSk7CiAgICAKICAgICAgaWYgKGUuY2FuY2VsICE9IHVuZGVmaW5lZCkKICAgICAgICBlLmNhbmNlbCA9IHRydWU7CiAgICAgIAogICAgICBpZiAoZS5yZXR1cm5WYWx1ZSAhPSB1bmRlZmluZWQpCiAgICAgICAgZS5yZXR1cm5WYWx1ZSA9IGZhbHNlOwogICAgICAKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7CgogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwcm9tcHQpOwogICAgdGhpcy5pbml0aWFsX3Byb21wdCA9IHByb21wdDsKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChwcm9tcHQpO30sIDUwMDApOwogIH0sCgogIGFkZF90b29sYmFyOiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgY291bnRlciwgcGFnZTsKCiAgICAgdGhpcy50b29sYmFyID0gdGhpcy5jcmVhdGVfZWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy50b29sYmFyLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAidG9vbGJhciIpOwoKICAgICAvLyBhIHJlYXNvbmFibHkgYmVoYXZlZCBicm93c2VyCiAgICAgaWYgKHRoaXMubnNfcG9zIHx8ICF0aGlzLmllNikKICAgICB7CiAgICAgICB2YXIgcmlnaHQgPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJkaXYiKTsKICAgICAgIHJpZ2h0LnNldEF0dHJpYnV0ZSgic3R5bGUiLCAiZmxvYXQ6IHJpZ2h0OyB0ZXh0LWFsaWduOiByaWdodCIpOwoKICAgICAgIGNvdW50ZXIgPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJzcGFuIikKICAgICAgIGNvdW50ZXIuaW5uZXJIVE1MID0gdGhpcy5sb2NhbGl6ZSgic2xpZGUiKSArICIgbi9tIjsKICAgICAgIHJpZ2h0LmFwcGVuZENoaWxkKGNvdW50ZXIpOwogICAgICAgdGhpcy50b29sYmFyLmFwcGVuZENoaWxkKHJpZ2h0KTsKCiAgICAgICB2YXIgbGVmdCA9IHRoaXMuY3JlYXRlX2VsZW1lbnQoImRpdiIpOwogICAgICAgbGVmdC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgInRleHQtYWxpZ246IGxlZnQiKTsKCiAgICAgICAvLyBnbG9iYWwgZW5kIG9mIHNsaWRlIGluZGljYXRvcgogICAgICAgdGhpcy5lb3MgPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJzcGFuIik7CiAgICAgICB0aGlzLmVvcy5pbm5lckhUTUwgPSAiKiAiOwogICAgICAgbGVmdC5hcHBlbmRDaGlsZCh0aGlzLmVvcyk7CgogICAgICAgdmFyIGhlbHAgPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJhIik7CiAgICAgICBoZWxwLnNldEF0dHJpYnV0ZSgiaHJlZiIsIHRoaXMuaGVscF9wYWdlKTsKICAgICAgIGhlbHAuc2V0QXR0cmlidXRlKCJ0aXRsZSIsIHRoaXMubG9jYWxpemUodGhpcy5oZWxwX3RleHQpKTsKICAgICAgIGhlbHAuaW5uZXJIVE1MID0gdGhpcy5sb2NhbGl6ZSgiaGVscD8iKTsKICAgICAgIGxlZnQuYXBwZW5kQ2hpbGQoaGVscCk7CiAgICAgICBoZWxwLnN0eWxlLmRpc3BsYXk9Im5vbmUiOyAKICAgICAgIHRoaXMuaGVscF9hbmNob3IgPSBoZWxwOyAgLy8gc2F2ZSBmb3IgZm9jdXMgaGFjawoKICAgICAgIHZhciBnYXAxID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAiKTsKICAgICAgIGxlZnQuYXBwZW5kQ2hpbGQoZ2FwMSk7CgogICAgICAgdmFyIGNvbnRlbnRzID0gdGhpcy5jcmVhdGVfZWxlbWVudCgiYSIpOwogICAgICAgY29udGVudHMuc2V0QXR0cmlidXRlKCJocmVmIiwgImphdmFzY3JpcHQ6dzNjX3NsaWR5LnRvZ2dsZV90YWJsZV9vZl9jb250ZW50cygpIik7CiAgICAgICBjb250ZW50cy5zZXRBdHRyaWJ1dGUoInRpdGxlIiwgdGhpcy5sb2NhbGl6ZSgidGFibGUgb2YgY29udGVudHMiKSk7CiAgICAgICBjb250ZW50cy5pbm5lckhUTUwgPSB0aGlzLmxvY2FsaXplKCJDb250ZW50cyIpOwogICAgICAgbGVmdC5hcHBlbmRDaGlsZChjb250ZW50cyk7CgogICAgICAgdmFyIGdhcDIgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIpOwogICAgICAgbGVmdC5hcHBlbmRDaGlsZChnYXAyKTsKCiAgICAgICB2YXIgY29weXJpZ2h0ID0gdGhpcy5maW5kX2NvcHlyaWdodCgpOwoKICAgICAgIGlmIChjb3B5cmlnaHQpCiAgICAgICB7CiAgICAgICAgIHZhciBzcGFuID0gdGhpcy5jcmVhdGVfZWxlbWVudCgic3BhbiIpOwogICAgICAgICBzcGFuLmNsYXNzTmFtZSA9ICJjb3B5cmlnaHQiOwogICAgICAgICBzcGFuLmlubmVySFRNTCA9IGNvcHlyaWdodDsKICAgICAgICAgbGVmdC5hcHBlbmRDaGlsZChzcGFuKTsKICAgICAgIH0KCiAgICAgICB0aGlzLnRvb2xiYXIuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsICIwIik7CiAgICAgICB0aGlzLnRvb2xiYXIuYXBwZW5kQ2hpbGQobGVmdCk7CiAgICAgfQogICAgIGVsc2UgLy8gSUU2IHNvIG5lZWQgdG8gd29yayBhcm91bmQgaXRzIHBvb3IgQ1NTIHN1cHBvcnQKICAgICB7CiAgICAgICB0aGlzLnRvb2xiYXIuc3R5bGUucG9zaXRpb24gPSAodGhpcy5pZTcgPyAiZml4ZWQiIDogImFic29sdXRlIik7CiAgICAgICB0aGlzLnRvb2xiYXIuc3R5bGUuekluZGV4ID0gIjIwMCI7CiAgICAgICB0aGlzLnRvb2xiYXIuc3R5bGUud2lkdGggPSAiOTkuOSUiOwogICAgICAgdGhpcy50b29sYmFyLnN0eWxlLmhlaWdodCA9ICIxLjJlbSI7CiAgICAgICB0aGlzLnRvb2xiYXIuc3R5bGUudG9wID0gImF1dG8iOwogICAgICAgdGhpcy50b29sYmFyLnN0eWxlLmJvdHRvbSA9ICIwIjsKICAgICAgIHRoaXMudG9vbGJhci5zdHlsZS5sZWZ0ID0gIjAiOwogICAgICAgdGhpcy50b29sYmFyLnN0eWxlLnJpZ2h0ID0gIjAiOwogICAgICAgdGhpcy50b29sYmFyLnN0eWxlLnRleHRBbGlnbiA9ICJsZWZ0IjsKICAgICAgIHRoaXMudG9vbGJhci5zdHlsZS5mb250U2l6ZSA9ICI2MCUiOwogICAgICAgdGhpcy50b29sYmFyLnN0eWxlLmNvbG9yID0gInJlZCI7CiAgICAgICB0aGlzLnRvb2xiYXIuYm9yZGVyV2lkdGggPSAwOwogICAgICAgdGhpcy50b29sYmFyLmNsYXNzTmFtZSA9ICJ0b29sYmFyIjsKICAgICAgIHRoaXMudG9vbGJhci5zdHlsZS5iYWNrZ3JvdW5kID0gInJnYigyNDAsMjQwLDI0MCkiOwoKICAgICAgIC8vIHdvdWxkIGxpa2UgdG8gaGF2ZSBoZWxwIHRleHQgbGVmdCBhbGlnbmVkCiAgICAgICAvLyBhbmQgcGFnZSBjb3VudGVyIHJpZ2h0IGFsaWduZWQsIGZsb2F0aW5nCiAgICAgICAvLyBkaXYncyBkb24ndCB3b3JrLCBzbyBpbnN0ZWFkIHVzZSBuZXN0ZWQKICAgICAgIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZCBkaXYncy4KCiAgICAgICB2YXIgc3AgPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJzcGFuIik7CiAgICAgICBzcC5pbm5lckhUTUwgPSAiJm5ic3A7Jm5ic3A7KiZuYnNwOyI7CiAgICAgICB0aGlzLnRvb2xiYXIuYXBwZW5kQ2hpbGQoc3ApOwogICAgICAgdGhpcy5lb3MgPSBzcDsgIC8vIGVuZCBvZiBzbGlkZSBpbmRpY2F0b3IKCiAgICAgICB2YXIgaGVscCA9IHRoaXMuY3JlYXRlX2VsZW1lbnQoImEiKTsKICAgICAgIGhlbHAuc2V0QXR0cmlidXRlKCJocmVmIiwgdGhpcy5oZWxwX3BhZ2UpOwogICAgICAgaGVscC5zZXRBdHRyaWJ1dGUoInRpdGxlIiwgdGhpcy5sb2NhbGl6ZSh0aGlzLmhlbHBfdGV4dCkpOwogICAgICAgaGVscC5pbm5lckhUTUwgPSB0aGlzLmxvY2FsaXplKCJoZWxwPyIpOwogICAgICAgdGhpcy50b29sYmFyLmFwcGVuZENoaWxkKGhlbHApOwogICAgICAgdGhpcy5oZWxwX2FuY2hvciA9IGhlbHA7ICAvLyBzYXZlIGZvciBmb2N1cyBoYWNrCgogICAgICAgdmFyIGdhcDEgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIpOwogICAgICAgdGhpcy50b29sYmFyLmFwcGVuZENoaWxkKGdhcDEpOwoKICAgICAgIHZhciBjb250ZW50cyA9IHRoaXMuY3JlYXRlX2VsZW1lbnQoImEiKTsKICAgICAgIGNvbnRlbnRzLnNldEF0dHJpYnV0ZSgiaHJlZiIsICJqYXZhc2NyaXB0OnRvZ2dsZVRhYmxlT2ZDb250ZW50cygpIik7CiAgICAgICBjb250ZW50cy5zZXRBdHRyaWJ1dGUoInRpdGxlIiwgdGhpcy5sb2NhbGl6ZSgidGFibGUgb2YgY29udGVudHMiLmxvY2FsaXplKSk7CiAgICAgICBjb250ZW50cy5pbm5lckhUTUwgPSB0aGlzLmxvY2FsaXplKCJjb250ZW50cz8iKTsKICAgICAgIHRoaXMudG9vbGJhci5hcHBlbmRDaGlsZChjb250ZW50cyk7CgogICAgICAgdmFyIGdhcDIgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIpOwogICAgICAgdGhpcy50b29sYmFyLmFwcGVuZENoaWxkKGdhcDIpOwoKICAgICAgIHZhciBjb3B5cmlnaHQgPSB0aGlzLmZpbmRfY29weXJpZ2h0KCk7CgogICAgICAgaWYgKGNvcHlyaWdodCkKICAgICAgIHsKICAgICAgICAgdmFyIHNwYW4gPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJzcGFuIik7CiAgICAgICAgIHNwYW4uaW5uZXJIVE1MID0gY29weXJpZ2h0OwogICAgICAgICBzcGFuLnN0eWxlLmNvbG9yID0gImJsYWNrIjsKICAgICAgICAgc3Bhbi5zdHlsZS5tYXJnaW5MZWZ0ID0gIjAuNWVtIjsKICAgICAgICAgdGhpcy50b29sYmFyLmFwcGVuZENoaWxkKHNwYW4pOwogICAgICAgfQoKICAgICAgIGNvdW50ZXIgPSB0aGlzLmNyZWF0ZV9lbGVtZW50KCJkaXYiKQogICAgICAgY291bnRlci5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7CiAgICAgICBjb3VudGVyLnN0eWxlLndpZHRoID0gImF1dG8iOyAvLyIyMCUiOwogICAgICAgY291bnRlci5zdHlsZS5oZWlnaHQgPSAiMS4yZW0iOwogICAgICAgY291bnRlci5zdHlsZS50b3AgPSAiYXV0byI7CiAgICAgICBjb3VudGVyLnN0eWxlLmJvdHRvbSA9IDA7CiAgICAgICBjb3VudGVyLnN0eWxlLnJpZ2h0ID0gIjAiOwogICAgICAgY291bnRlci5zdHlsZS50ZXh0QWxpZ24gPSAicmlnaHQiOwogICAgICAgY291bnRlci5zdHlsZS5jb2xvciA9ICJyZWQiOwogICAgICAgY291bnRlci5zdHlsZS5iYWNrZ3JvdW5kID0gInJnYigyNDAsMjQwLDI0MCkiOwoKICAgICAgIGNvdW50ZXIuaW5uZXJIVE1MID0gdGhpcy5sb2NhbGl6ZSgic2xpZGUiKSArICIgbi9tIjsKICAgICAgIHRoaXMudG9vbGJhci5hcHBlbmRDaGlsZChjb3VudGVyKTsKICAgICB9CgogICAgIC8vIGVuc3VyZSB0aGF0IGNsaWNrIGlzbid0IHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBwYWdlCiAgICAgdGhpcy50b29sYmFyLm9uY2xpY2sgPQogICAgICAgICBmdW5jdGlvbiAoZSkgewogICAgICAgICAgIGlmICghZSkKICAgICAgICAgICAgIGUgPSB3aW5kb3cuZXZlbnQ7CgogICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDsKCiAgICAgICAgICAgaWYgKCF0YXJnZXQgJiYgZS5zcmNFbGVtZW50KQogICAgICAgICAgICAgdGFyZ2V0ID0gZS5zcmNFbGVtZW50OwoKICAgICAgICAgICAvLyB3b3JrIGFyb3VuZCBTYWZhcmkgYnVnCiAgICAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQubm9kZVR5cGUgPT0gMykKICAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnROb2RlOwoKICAgICAgICAgICB3M2Nfc2xpZHkuc3RvcF9wcm9wYWdhdGlvbihlKTsKCiAgICAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPSAiYSIpCiAgICAgICAgICAgICB3M2Nfc2xpZHkubW91c2VfYnV0dG9uX2NsaWNrKGUpOwogICAgICAgICB9OwoKICAgICB0aGlzLnNsaWRlX251bWJlcl9lbGVtZW50ID0gY291bnRlcjsKICAgICB0aGlzLnNldF9lb3Nfc3RhdHVzKGZhbHNlKTsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMudG9vbGJhcik7CiAgfSwKCiAgLy8gd3lzaXd5ZyBlZGl0b3JzIG1ha2UgaXQgaGFyZCB0byB1c2UgZGl2IGVsZW1lbnRzCiAgLy8gZS5nLiBhbWF5YSBsb3NlcyB0aGUgZGl2IHdoZW4geW91IGNvcHkgYW5kIHBhc3RlCiAgLy8gdGhpcyBmdW5jdGlvbiB3cmFwcyBkaXYgZWxlbWVudHMgYXJvdW5kIGltcGxpY2l0CiAgLy8gc2xpZGVzIHdoaWNoIHN0YXJ0IHdpdGggYW4gaDEgZWxlbWVudCBhbmQgY29udGludWUKICAvLyB1cCB0byB0aGUgbmV4dCBoZWFkaW5nIG9yIGRpdiBlbGVtZW50CiAgd3JhcF9pbXBsaWNpdF9zbGlkZXM6IGZ1bmN0aW9uICgpIHsKICAgIHZhciBpLCBoZWFkaW5nLCBub2RlLCBuZXh0LCBkaXY7CiAgICB2YXIgaGVhZGluZ3MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaDEiKTsKCiAgICBpZiAoIWhlYWRpbmdzKQogICAgICByZXR1cm47CgogICAgZm9yIChpID0gMDsgaSA8IGhlYWRpbmdzLmxlbmd0aDsgKytpKQogICAgewogICAgICBoZWFkaW5nID0gaGVhZGluZ3NbaV07CgogICAgICBpZiAoaGVhZGluZy5wYXJlbnROb2RlICE9IGRvY3VtZW50LmJvZHkpCiAgICAgICAgY29udGludWU7CgogICAgICBub2RlID0gaGVhZGluZy5uZXh0U2libGluZzsKCiAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICB0aGlzLmFkZF9jbGFzcyhkaXYsICJzbGlkZSIpOwogICAgICBkb2N1bWVudC5ib2R5LnJlcGxhY2VDaGlsZChkaXYsIGhlYWRpbmcpOwogICAgICBkaXYuYXBwZW5kQ2hpbGQoaGVhZGluZyk7CgogICAgICB3aGlsZSAobm9kZSkKICAgICAgewogICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEpIC8vIGFuIGVsZW1lbnQKICAgICAgICB7CiAgICAgICAgICAgaWYgKG5vZGUubm9kZU5hbWUgPT0gIkgxIiB8fCBub2RlLm5vZGVOYW1lID09ICJoMSIpCiAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgaWYgKG5vZGUubm9kZU5hbWUgPT0gIkRJViIgfHwgbm9kZS5ub2RlTmFtZSA9PSAiZGl2IikKICAgICAgICAgICB7CiAgICAgICAgICAgICBpZiAodGhpcy5oYXNfY2xhc3Mobm9kZSwgInNsaWRlIikpCiAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgIGlmICh0aGlzLmhhc19jbGFzcyhub2RlLCAiaGFuZG91dCIpKQogICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBuZXh0ID0gbm9kZS5uZXh0U2libGluZzsKICAgICAgICBub2RlID0gZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChub2RlKTsKICAgICAgICBkaXYuYXBwZW5kQ2hpbGQobm9kZSk7CiAgICAgICAgbm9kZSA9IG5leHQ7CiAgICAgIH0gCiAgICB9CiAgfSwKCiAgYXR0YWNoX3RvdWNoX2hhbmRlcnM6IGZ1bmN0aW9uKHNsaWRlcykKICB7CiAgICB2YXIgaSwgc2xpZGU7CgogICAgZm9yIChpID0gMDsgaSA8IHNsaWRlcy5sZW5ndGg7ICsraSkKICAgIHsKICAgICAgc2xpZGUgPSBzbGlkZXNbaV07CiAgICAgIHRoaXMuYWRkX2xpc3RlbmVyKHNsaWRlLCAidG91Y2hzdGFydCIsIHRoaXMudG91Y2hzdGFydCk7CiAgICAgIHRoaXMuYWRkX2xpc3RlbmVyKHNsaWRlLCAidG91Y2htb3ZlIiwgdGhpcy50b3VjaG1vdmUpOwogICAgICB0aGlzLmFkZF9saXN0ZW5lcihzbGlkZSwgInRvdWNoZW5kIiwgdGhpcy50b3VjaGVuZCk7CiAgICB9CiAgfSwKCi8vIHJldHVybiBuZXcgYXJyYXkgb2YgYWxsIHNsaWRlcwogIGNvbGxlY3Rfc2xpZGVzOiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgc2xpZGVzID0gbmV3IEFycmF5KCk7CiAgICB2YXIgZGl2cyA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpdiIpOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGl2cy5sZW5ndGg7ICsraSkKICAgIHsKICAgICAgZGl2ID0gZGl2cy5pdGVtKGkpOwoKICAgICAgaWYgKHRoaXMuaGFzX2NsYXNzKGRpdiwgInNsaWRlIikpCiAgICAgIHsKICAgICAgICAvLyBhZGQgc2xpZGUgdG8gY29sbGVjdGlvbgogICAgICAgIHNsaWRlc1tzbGlkZXMubGVuZ3RoXSA9IGRpdjsKCiAgICAgICAgLy8gaGlkZSBlYWNoIHNsaWRlIGFzIGl0IGlzIGZvdW5kCiAgICAgICAgdGhpcy5hZGRfY2xhc3MoZGl2LCAiaGlkZGVuIik7CgogICAgICAgIC8vIGFkZCBkdW1teSA8YnIvPiBhdCBlbmQgZm9yIHNjcm9sbGluZyBoYWNrCiAgICAgICAgdmFyIG5vZGUxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTsKICAgICAgICBkaXYuYXBwZW5kQ2hpbGQobm9kZTEpOwogICAgICAgIHZhciBub2RlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIik7CiAgICAgICAgZGl2LmFwcGVuZENoaWxkKG5vZGUyKTsKICAgICAgfQogICAgICBlbHNlIGlmICh0aGlzLmhhc19jbGFzcyhkaXYsICJiYWNrZ3JvdW5kIikpCiAgICAgIHsgIC8vIHdvcmsgYXJvdW5kIGZvciBGaXJlZm94IFNWRyByZWxvYWQgYnVnCiAgICAgICAgLy8gd2hpY2ggb3RoZXJ3aXNlIHJlcGxhY2VzIDFzdCBTVkcgZ3JhcGhpYyB3aXRoIDJuZAogICAgICAgIGRpdi5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgfQogICAgfQoKICAgIHRoaXMuc2xpZGVzID0gc2xpZGVzOwogIH0sCgogIC8vIHJldHVybiBuZXcgYXJyYXkgb2YgYWxsIDxkaXYgY2xhc3M9ImhhbmRvdXQiPgogIGNvbGxlY3Rfbm90ZXM6IGZ1bmN0aW9uICgpIHsKICAgIHZhciBub3RlcyA9IG5ldyBBcnJheSgpOwogICAgdmFyIGRpdnMgPSBkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKTsKCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpdnMubGVuZ3RoOyArK2kpCiAgICB7CiAgICAgIGRpdiA9IGRpdnMuaXRlbShpKTsKCiAgICAgIGlmICh0aGlzLmhhc19jbGFzcyhkaXYsICJoYW5kb3V0IikpCiAgICAgIHsKICAgICAgICAvLyBhZGQgbm90ZSB0byBjb2xsZWN0aW9uCiAgICAgICAgbm90ZXNbbm90ZXMubGVuZ3RoXSA9IGRpdjsKCiAgICAgICAgLy8gYW5kIGhpZGUgaXQKICAgICAgICB0aGlzLmFkZF9jbGFzcyhkaXYsICJoaWRkZW4iKTsKICAgICAgfQogICAgfQoKICAgIHRoaXMubm90ZXMgPSBub3RlczsKICB9LAoKICAvLyByZXR1cm4gbmV3IGFycmF5IG9mIGFsbCA8ZGl2IGNsYXNzPSJiYWNrZ3JvdW5kIj4KICAvLyBpbmNsdWRpbmcgbmFtZWQgYmFja2dyb3VuZHMgZS5nLiBjbGFzcz0iYmFja2dyb3VuZCB0aXRsZXBhZ2UiCiAgY29sbGVjdF9iYWNrZ3JvdW5kczogZnVuY3Rpb24gKCkgewogICAgdmFyIGJhY2tncm91bmRzID0gbmV3IEFycmF5KCk7CiAgICB2YXIgZGl2cyA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpdiIpOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGl2cy5sZW5ndGg7ICsraSkKICAgIHsKICAgICAgZGl2ID0gZGl2cy5pdGVtKGkpOwoKICAgICAgaWYgKHRoaXMuaGFzX2NsYXNzKGRpdiwgImJhY2tncm91bmQiKSkKICAgICAgewogICAgICAgIC8vIGFkZCBiYWNrZ3JvdW5kIHRvIGNvbGxlY3Rpb24KICAgICAgICBiYWNrZ3JvdW5kc1tiYWNrZ3JvdW5kcy5sZW5ndGhdID0gZGl2OwoKICAgICAgICAvLyBhbmQgaGlkZSBpdAogICAgICAgIHRoaXMuYWRkX2NsYXNzKGRpdiwgImhpZGRlbiIpOwogICAgICB9CiAgICB9CgogICAgdGhpcy5iYWNrZ3JvdW5kcyA9IGJhY2tncm91bmRzOwogIH0sCgogIC8vIHNldCBjbGljayBoYW5kbGVycyBvbiBhbGwgYW5jaG9ycwogIHBhdGNoX2FuY2hvcnM6IGZ1bmN0aW9uICgpIHsKICAgIHZhciBzZWxmID0gdzNjX3NsaWR5OwogICAgdmFyIGhhbmRsZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgLy8gY29tcGFyZSB0aGlzLmhyZWYgd2l0aCBsb2NhdGlvbi5ocmVmCiAgICAgIC8vIGZvciBsaW5rIHRvIGFub3RoZXIgc2xpZGUgaW4gdGhpcyBkb2MKCiAgICAgIGlmIChzZWxmLnBhZ2VfYWRkcmVzcyh0aGlzLmhyZWYpID09IHNlbGYucGFnZV9hZGRyZXNzKGxvY2F0aW9uLmhyZWYpKQogICAgICB7CiAgICAgICAgLy8geWVzLCBzbyBmaW5kIG5ldyBzbGlkZSBudW1iZXIKICAgICAgICB2YXIgbmV3c2xpZGVudW0gPSBzZWxmLmZpbmRfc2xpZGVfbnVtYmVyKHRoaXMuaHJlZik7CgogICAgICAgIGlmIChuZXdzbGlkZW51bSAhPSBzZWxmLnNsaWRlX251bWJlcikKICAgICAgICB7CiAgICAgICAgICB2YXIgc2xpZGUgPSBzZWxmLnNsaWRlc1tzZWxmLnNsaWRlX251bWJlcl07CiAgICAgICAgICBzZWxmLmhpZGVfc2xpZGUoc2xpZGUpOwogICAgICAgICAgc2VsZi5zbGlkZV9udW1iZXIgPSBuZXdzbGlkZW51bTsKICAgICAgICAgIHNsaWRlID0gc2VsZi5zbGlkZXNbc2VsZi5zbGlkZV9udW1iZXJdOwogICAgICAgICAgc2VsZi5zaG93X3NsaWRlKHNsaWRlKTsKICAgICAgICAgIHNlbGYuc2V0X2xvY2F0aW9uKCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGVsc2UKICAgICAgICB3M2Nfc2xpZHkuc3RvcF9wcm9wYWdhdGlvbihldmVudCk7CgovLyAgICAgIGVsc2UgaWYgKHRoaXMudGFyZ2V0ID09IG51bGwpCi8vICAgICAgICBsb2NhdGlvbi5ocmVmID0gdGhpcy5ocmVmOwoKICAgICAgdGhpcy5ibHVyKCk7CiAgICAgIHNlbGYuZGlzYWJsZV9zbGlkZV9jbGljayA9IHRydWU7CiAgICB9OwoKICAgIHZhciBhbmNob3JzID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYW5jaG9ycy5sZW5ndGg7ICsraSkKICAgIHsKICAgICAgaWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKQogICAgICAgIGFuY2hvcnNbaV0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBoYW5kbGVyLCBmYWxzZSk7CiAgICAgIGVsc2UKICAgICAgICBhbmNob3JzW2ldLmF0dGFjaEV2ZW50KCJvbmNsaWNrIiwgaGFuZGxlcik7CiAgICB9CiAgfSwKCiAgLy8gIyMjIENIRUNLIE1FICMjIyBzZWUgd2hpY2ggZnVuY3Rpb25zIGFyZSBpbnZva2VkIHZpYSBzZXRUaW1lb3V0CiAgLy8gZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgZm9yIHVzZSBvZiB3M2Nfc2xpZHkgdnMgdGhpcwogIHNob3dfc2xpZGVfbnVtYmVyOiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgdGltZXIgPSB3M2Nfc2xpZHkuZ2V0X3RpbWVyKCk7CiAgICB3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyX2VsZW1lbnQuaW5uZXJIVE1MID0gdGltZXIgKyB3M2Nfc2xpZHkubG9jYWxpemUoInNsaWRlIikgKyAiICIgKwogICAgICAgICAgICh3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyICsgMSkgKyAiLyIgKyB3M2Nfc2xpZHkuc2xpZGVzLmxlbmd0aDsKICB9LAoKICAvLyBldmVyeSAyMDBtUyBjaGVjayBpZiB0aGUgbG9jYXRpb24gaGFzIGJlZW4gY2hhbmdlZCBhcyBhCiAgLy8gcmVzdWx0IG9mIHRoZSB1c2VyIGFjdGl2YXRpbmcgdGhlIEJhY2sgYnV0dG9uL21lbnUgaXRlbQogIC8vIGRvZXNuJ3Qgd29yayBmb3IgT3BlcmEgPCA5LjUKICBjaGVja19sb2NhdGlvbjogZnVuY3Rpb24gKCkgewogICAgdmFyIGhhc2ggPSBsb2NhdGlvbi5oYXNoOwoKICAgIGlmICh3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyID4gMCAmJiAoaGFzaCA9PSAiIiB8fCBoYXNoID09ICIjIikpCiAgICAgIHczY19zbGlkeS5nb3RvX3NsaWRlKDApOwogICAgZWxzZSBpZiAoaGFzaC5sZW5ndGggPiAyICYmIGhhc2ggIT0gIiMoIisodzNjX3NsaWR5LnNsaWRlX251bWJlcisxKSsiKSIpCiAgICB7CiAgICAgIHZhciBudW0gPSBwYXJzZUludChsb2NhdGlvbi5oYXNoLnN1YnN0cigyKSk7CgogICAgICBpZiAoIWlzTmFOKG51bSkpCiAgICAgICAgdzNjX3NsaWR5LmdvdG9fc2xpZGUobnVtLTEpOwogICAgfQoKICAgIGlmICh3M2Nfc2xpZHkudGltZV9sZWZ0ICYmIHczY19zbGlkeS5zbGlkZV9udW1iZXIgPiAwKQogICAgewogICAgICB3M2Nfc2xpZHkuc2hvd19zbGlkZV9udW1iZXIoKTsKCiAgICAgIGlmICh3M2Nfc2xpZHkudGltZV9sZWZ0ID4gMCkKICAgICAgICB3M2Nfc2xpZHkudGltZV9sZWZ0IC09IDIwMDsKICAgIH0gCiAgfSwKCiAgZ2V0X3RpbWVyOiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgdGltZXIgPSAiIjsKICAgIGlmICh3M2Nfc2xpZHkudGltZV9sZWZ0KQogICAgewogICAgICB2YXIgbWlucywgc2VjczsKICAgICAgc2VjcyA9IE1hdGguZmxvb3IodzNjX3NsaWR5LnRpbWVfbGVmdC8xMDAwKTsKICAgICAgbWlucyA9IE1hdGguZmxvb3Ioc2VjcyAvIDYwKTsKICAgICAgc2VjcyA9IHNlY3MgJSA2MDsKICAgICAgdGltZXIgPSAobWlucyA/IG1pbnMrIm0iIDogIiIpICsgc2VjcyArICJzICI7CiAgICB9CgogICAgcmV0dXJuIHRpbWVyOwogIH0sCgogIC8vIHRoaXMgZG9lc24ndCBwdXNoIGxvY2F0aW9uIG9udG8gaGlzdG9yeSBzdGFjayBmb3IgSUUKICAvLyBmb3Igd2hpY2ggYSBoaWRkZW4gaWZyYW1lIGhhY2sgaXMgbmVlZGVkOiBsb2FkIHBhZ2UgaW50bwogIC8vIHRoZSBpZnJhbWUgd2l0aCBzY3JpcHQgdGhhdCBzZXQncyBwYXJlbnQncyBsb2NhdGlvbi5oYXNoCiAgLy8gYnV0IHRoYXQgd29uJ3Qgd29yayBmb3Igc3RhbmRhbG9uZSB1c2UgdW5sZXNzIHdlIGNhbgogIC8vIGNyZWF0ZSB0aGUgcGFnZSBkeW5hbWljYWxseSB2aWEgYSBqYXZhc2NyaXB0OiBVUkwKICAvLyAjIyMgdXNlIGhpc3RvcnkucHVzaFN0YXRlIGlmIGF2YWlsYWJsZQogIHNldF9sb2NhdGlvbjogZnVuY3Rpb24gKCkgewogICAgIHZhciB1cmkgPSB3M2Nfc2xpZHkucGFnZV9hZGRyZXNzKGxvY2F0aW9uLmhyZWYpOwogICAgIHZhciBoYXNoID0gIiMoIiArICh3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyKzEpICsgIikiOwoKICAgICBpZiAodzNjX3NsaWR5LnNsaWRlX251bWJlciA+PSAwKQogICAgICAgdXJpID0gdXJpICsgaGFzaDsKCiAgICAgaWYgKHR5cGVvZihoaXN0b3J5LnB1c2hTdGF0ZSkgIT0gInVuZGVmaW5lZCIgJiYgbG9jYXRpb24ucHJvdG9jb2wgIT09ICJmaWxlOiIpCiAgICAgewogICAgICAgZG9jdW1lbnQudGl0bGUgPSB3M2Nfc2xpZHkudGl0bGUgKyAiICgiICsgKHczY19zbGlkeS5zbGlkZV9udW1iZXIrMSkgKyAiKSI7CiAgICAgICBoaXN0b3J5LnB1c2hTdGF0ZSgwLCBkb2N1bWVudC50aXRsZSwgaGFzaCk7CiAgICAgICB3M2Nfc2xpZHkuc2hvd19zbGlkZV9udW1iZXIoKTsKICAgICAgIHczY19zbGlkeS5ub3RpZnlfb2JzZXJ2ZXJzKCk7CiAgICAgICByZXR1cm47CiAgICAgfQoKICAgICBpZiAodzNjX3NsaWR5LmllICYmICh3M2Nfc2xpZHkuaWU2IHx8IHczY19zbGlkeS5pZTcpKQogICAgICAgdzNjX3NsaWR5LnB1c2hfaGFzaChoYXNoKTsKCiAgICAgaWYgKHVyaSAhPSBsb2NhdGlvbi5ocmVmKSAvLyAmJiAha2h0bWwKICAgICAgICBsb2NhdGlvbi5ocmVmID0gdXJpOwoKICAgICBpZiAodGhpcy5raHRtbCkKICAgICAgICBoYXNoID0gIigiICsgKHczY19zbGlkeS5zbGlkZV9udW1iZXIrMSkgKyAiKSI7CgogICAgIGlmICghdGhpcy5pZSAmJiBsb2NhdGlvbi5oYXNoICE9IGhhc2ggJiYgbG9jYXRpb24uaGFzaCAhPSAiIikKICAgICAgIGxvY2F0aW9uLmhhc2ggPSBoYXNoOwoKICAgICBkb2N1bWVudC50aXRsZSA9IHczY19zbGlkeS50aXRsZSArICIgKCIgKyAodzNjX3NsaWR5LnNsaWRlX251bWJlcisxKSArICIpIjsKICAgICB3M2Nfc2xpZHkuc2hvd19zbGlkZV9udW1iZXIoKTsKICAgICB3M2Nfc2xpZHkubm90aWZ5X29ic2VydmVycygpOwogIH0sCgogIG5vdGlmeV9vYnNlcnZlcnM6IGZ1bmN0aW9uICgpCiAgewogICAgdmFyIHNsaWRlID0gdGhpcy5zbGlkZXNbdGhpcy5zbGlkZV9udW1iZXJdOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vYnNlcnZlcnMubGVuZ3RoOyArK2kpCiAgICAgIHRoaXMub2JzZXJ2ZXJzW2ldKHRoaXMuc2xpZGVfbnVtYmVyKzEsIHRoaXMuZmluZF9oZWFkaW5nKHNsaWRlKS5pbm5lclRleHQsIGxvY2F0aW9uLmhyZWYpOwogIH0sCgogIGFkZF9vYnNlcnZlcjogZnVuY3Rpb24gKG9ic2VydmVyKQogIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vYnNlcnZlcnMubGVuZ3RoOyArK2kpCiAgICB7CiAgICAgIGlmIChvYnNlcnZlciA9PSB0aGlzLm9ic2VydmVyc1tpXSkKICAgICAgICByZXR1cm47CiAgICB9CgogICAgdGhpcy5vYnNlcnZlcnMucHVzaChvYnNlcnZlcik7CiAgfSwKCiAgcmVtb3ZlX29ic2VydmVyOiBmdW5jdGlvbiAobykKICB7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub2JzZXJ2ZXJzLmxlbmd0aDsgKytpKQogICAgewogICAgICBpZiAob2JzZXJ2ZXIgPT0gdGhpcy5vYnNlcnZlcnNbaV0pCiAgICAgIHsKICAgICAgICB0aGlzLm9ic2VydmVycy5zcGxpY2UoaSwxKTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogIH0sCgogIHBhZ2VfYWRkcmVzczogZnVuY3Rpb24gKHVyaSkgewogICAgdmFyIGkgPSB1cmkuaW5kZXhPZigiIyIpOwoKICAgIGlmIChpIDwgMCkKICAgICAgaSA9IHVyaS5pbmRleE9mKCIlMjMiKTsKCiAgICAvLyBjaGVjayBpZiBhbmNob3IgaXMgZW50aXJlIHBhZ2UKCiAgICBpZiAoaSA8IDApCiAgICAgIHJldHVybiB1cmk7ICAvLyB5ZXMKCiAgICByZXR1cm4gdXJpLnN1YnN0cigwLCBpKTsKICB9LAoKICAvLyBvbmx5IHVzZWQgZm9yIElFNiBhbmQgSUU3CiAgb25fZnJhbWVfbG9hZGVkOiBmdW5jdGlvbiAoaGFzaCkgewogICAgbG9jYXRpb24uaGFzaCA9IGhhc2g7CiAgICB2YXIgdXJpID0gdzNjX3NsaWR5LnBhZ2VfYWRkcmVzcyhsb2NhdGlvbi5ocmVmKTsKICAgIGxvY2F0aW9uLmhyZWYgPSB1cmkgKyBoYXNoOwogIH0sCgogIC8vIGhpc3RvcnkgaGFjayB3aXRoIHRoYW5rcyB0byBCZXJ0cmFuZCBMZSBSb3kKICBwdXNoX2hhc2g6IGZ1bmN0aW9uIChoYXNoKSB7CiAgICBpZiAoaGFzaCA9PSAiIikgaGFzaCA9ICIjKDEpIjsKICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSBoYXNoOwoKICAgIHZhciBkb2MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGlzdG9yeUZyYW1lIikuY29udGVudFdpbmRvdy5kb2N1bWVudDsKICAgIGRvYy5vcGVuKCJqYXZhc2NyaXB0Oic8aHRtbD48L2h0bWw+JyIpOwogICAgZG9jLndyaXRlKCI8aHRtbD48aGVhZD48c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj53aW5kb3cucGFyZW50LnczY19zbGlkeS5vbl9mcmFtZV9sb2FkZWQoJyIrCiAgICAgIChoYXNoKSArICInKTs8L3NjcmlwdD48L2hlYWQ+PGJvZHk+aGVsbG8gbXVtPC9ib2R5PjwvaHRtbD4iKTsKICAgICAgZG9jLmNsb3NlKCk7CiAgfSwKCiAgLy8gZmluZCBjdXJyZW50IHNsaWRlIGJhc2VkIHVwb24gbG9jYXRpb24KICAvLyBmaXJzdCBmaW5kIHRhcmdldCBhbmNob3IgYW5kIHRoZW4gbG9vawogIC8vIGZvciBhc3NvY2lhdGVkIGRpdiBlbGVtZW50IGVuY2xvc2luZyBpdAogIC8vIGZpbmFsbHkgbWFwIHRoYXQgdG8gc2xpZGUgbnVtYmVyCiAgZmluZF9zbGlkZV9udW1iZXI6IGZ1bmN0aW9uICh1cmkpIHsKICAgIC8vIGZpcnN0IGdldCBhbmNob3IgZnJvbSBwYWdlIGxvY2F0aW9uCgogICAgdmFyIGkgPSB1cmkuaW5kZXhPZigiIyIpOwoKICAgIC8vIGNoZWNrIGlmIGFuY2hvciBpcyBlbnRpcmUgcGFnZQogICAgaWYgKGkgPCAwKQogICAgICByZXR1cm4gMDsgIC8vIHllcwoKICAgIHZhciBhbmNob3IgPSB1bmVzY2FwZSh1cmkuc3Vic3RyKGkrMSkpOwoKICAgIC8vIG5vdyB1c2UgYW5jaG9yIGFzIFhNTCBJRCB0byBmaW5kIHRhcmdldAogICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFuY2hvcik7CgogICAgaWYgKCF0YXJnZXQpCiAgICB7CiAgICAgIC8vIGRvZXMgYW5jaG9yIGxvb2sgbGlrZSAiKDIpIiBmb3Igc2xpZGUgMiA/PwogICAgICAvLyB3aGVyZSBmaXJzdCBzbGlkZSBpcyAoMSkKICAgICAgdmFyIHJlID0gL1woKFxkKStcKS87CgogICAgICBpZiAoYW5jaG9yLm1hdGNoKHJlKSkKICAgICAgewogICAgICAgIHZhciBudW0gPSBwYXJzZUludChhbmNob3Iuc3Vic3RyaW5nKDEsIGFuY2hvci5sZW5ndGgtMSkpOwoKICAgICAgICBpZiAobnVtID4gdGhpcy5zbGlkZXMubGVuZ3RoKQogICAgICAgICAgbnVtID0gMTsKCiAgICAgICAgaWYgKC0tbnVtIDwgMCkKICAgICAgICAgIG51bSA9IDA7CgogICAgICAgIHJldHVybiBudW07CiAgICAgIH0KCiAgICAgIC8vIGFjY2VwdCBbMl0gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgICAgIHJlID0gL1xbKFxkKStcXS87CgogICAgICBpZiAoYW5jaG9yLm1hdGNoKHJlKSkKICAgICAgewogICAgICAgICB2YXIgbnVtID0gcGFyc2VJbnQoYW5jaG9yLnN1YnN0cmluZygxLCBhbmNob3IubGVuZ3RoLTEpKTsKCiAgICAgICAgIGlmIChudW0gPiB0aGlzLnNsaWRlcy5sZW5ndGgpCiAgICAgICAgICAgIG51bSA9IDE7CgogICAgICAgICBpZiAoLS1udW0gPCAwKQogICAgICAgICAgICBudW0gPSAwOwoKICAgICAgICAgcmV0dXJuIG51bTsKICAgICAgfQoKICAgICAgLy8gb2ggZGVhciB1bmtub3duIGFuY2hvcgogICAgICByZXR1cm4gMDsKICAgIH0KCiAgICAvLyBzZWFyY2ggZm9yIGVuY2xvc2luZyBzbGlkZQoKICAgIHdoaWxlICh0cnVlKQogICAgewogICAgICAvLyBicm93c2VyIGNvZXJjZXMgaHRtbCBlbGVtZW50cyB0byB1cHBlcmNhc2UhCiAgICAgIGlmICh0YXJnZXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSAiZGl2IiAmJgogICAgICAgICAgICB0aGlzLmhhc19jbGFzcyh0YXJnZXQsICJzbGlkZSIpKQogICAgICB7CiAgICAgICAgLy8gZm91bmQgdGhlIHNsaWRlIGVsZW1lbnQKICAgICAgICBicmVhazsKICAgICAgfQoKICAgICAgLy8gb3RoZXJ3aXNlIHRyeSBwYXJlbnQgZWxlbWVudCBpZiBhbnkKCiAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnROb2RlOwoKICAgICAgaWYgKCF0YXJnZXQpCiAgICAgIHsKICAgICAgICByZXR1cm4gMDsgICAvLyBubyBsdWNrIQogICAgICB9CiAgICB9OwoKICAgIGZvciAoaSA9IDA7IGkgPCBzbGlkZXMubGVuZ3RoOyArK2kpCiAgICB7CiAgICAgIGlmIChzbGlkZXNbaV0gPT0gdGFyZ2V0KQogICAgICAgIHJldHVybiBpOyAgLy8gc3VjY2VzcwogICAgfQoKICAgIC8vIG9oIGRlYXIgc3RpbGwgbm8gbHVjawogICAgcmV0dXJuIDA7CiAgfSwKCiAgcHJldmlvdXNfc2xpZGU6IGZ1bmN0aW9uIChpbmNyZW1lbnRhbCkgewogICAgaWYgKCF3M2Nfc2xpZHkudmlld19hbGwpCiAgICB7CiAgICAgIHZhciBzbGlkZTsKCiAgICAgIGlmICgoaW5jcmVtZW50YWwgfHwgdzNjX3NsaWR5LnNsaWRlX251bWJlciA9PSAwKSAmJiB3M2Nfc2xpZHkubGFzdF9zaG93biAhPSBudWxsKQogICAgICB7CiAgICAgICAgdzNjX3NsaWR5Lmxhc3Rfc2hvd24gPSB3M2Nfc2xpZHkuaGlkZV9wcmV2aW91c19pdGVtKHczY19zbGlkeS5sYXN0X3Nob3duKTsKICAgICAgICB3M2Nfc2xpZHkuc2V0X2Vvc19zdGF0dXMoZmFsc2UpOwogICAgICB9CiAgICAgIGVsc2UgaWYgKHczY19zbGlkeS5zbGlkZV9udW1iZXIgPiAwKQogICAgICB7CiAgICAgICAgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwogICAgICAgIHczY19zbGlkeS5oaWRlX3NsaWRlKHNsaWRlKTsKCiAgICAgICAgdzNjX3NsaWR5LnNsaWRlX251bWJlciA9IHczY19zbGlkeS5zbGlkZV9udW1iZXIgLSAxOwogICAgICAgIHNsaWRlID0gdzNjX3NsaWR5LnNsaWRlc1t3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyXTsKICAgICAgICB3M2Nfc2xpZHkuc2V0X3Zpc2liaWxpdHlfYWxsX2luY3JlbWVudGFsKCJ2aXNpYmxlIik7CiAgICAgICAgdzNjX3NsaWR5Lmxhc3Rfc2hvd24gPSB3M2Nfc2xpZHkucHJldmlvdXNfaW5jcmVtZW50YWxfaXRlbShudWxsKTsKICAgICAgICB3M2Nfc2xpZHkuc2V0X2Vvc19zdGF0dXModHJ1ZSk7CiAgICAgICAgdzNjX3NsaWR5LnNob3dfc2xpZGUoc2xpZGUpOwogICAgICB9CgogICAgICB3M2Nfc2xpZHkuc2V0X2xvY2F0aW9uKCk7CgogICAgICBpZiAoIXczY19zbGlkeS5uc19wb3MpCiAgICAgICAgdzNjX3NsaWR5LnJlZnJlc2hfdG9vbGJhcigyMDApOwogICAgfQogIH0sCgogIG5leHRfc2xpZGU6IGZ1bmN0aW9uIChpbmNyZW1lbnRhbCkgewogICAgaWYgKCF3M2Nfc2xpZHkudmlld19hbGwpCiAgICB7CiAgICAgIHZhciBzbGlkZSwgbGFzdCA9IHczY19zbGlkeS5sYXN0X3Nob3duOwoKICAgICAgaWYgKGluY3JlbWVudGFsIHx8IHczY19zbGlkeS5zbGlkZV9udW1iZXIgPT0gdzNjX3NsaWR5LnNsaWRlcy5sZW5ndGggLSAxKQogICAgICAgICB3M2Nfc2xpZHkubGFzdF9zaG93biA9IHczY19zbGlkeS5yZXZlYWxfbmV4dF9pdGVtKHczY19zbGlkeS5sYXN0X3Nob3duKTsKCiAgICAgIGlmICgoIWluY3JlbWVudGFsIHx8IHczY19zbGlkeS5sYXN0X3Nob3duID09IG51bGwpICYmCiAgICAgICAgICAgICB3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyIDwgdzNjX3NsaWR5LnNsaWRlcy5sZW5ndGggLSAxKQogICAgICB7CiAgICAgICAgIHNsaWRlID0gdzNjX3NsaWR5LnNsaWRlc1t3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyXTsKICAgICAgICAgdzNjX3NsaWR5LmhpZGVfc2xpZGUoc2xpZGUpOwoKICAgICAgICAgdzNjX3NsaWR5LnNsaWRlX251bWJlciA9IHczY19zbGlkeS5zbGlkZV9udW1iZXIgKyAxOwogICAgICAgICBzbGlkZSA9IHczY19zbGlkeS5zbGlkZXNbdzNjX3NsaWR5LnNsaWRlX251bWJlcl07CiAgICAgICAgIHczY19zbGlkeS5sYXN0X3Nob3duID0gbnVsbDsKICAgICAgICAgdzNjX3NsaWR5LnNldF92aXNpYmlsaXR5X2FsbF9pbmNyZW1lbnRhbCgiaGlkZGVuIik7CiAgICAgICAgIHczY19zbGlkeS5zaG93X3NsaWRlKHNsaWRlKTsKICAgICAgfQogICAgICBlbHNlIGlmICghdzNjX3NsaWR5Lmxhc3Rfc2hvd24pCiAgICAgIHsKICAgICAgICAgaWYgKGxhc3QgJiYgaW5jcmVtZW50YWwpCiAgICAgICAgICAgdzNjX3NsaWR5Lmxhc3Rfc2hvd24gPSBsYXN0OwogICAgICB9CgogICAgICB3M2Nfc2xpZHkuc2V0X2xvY2F0aW9uKCk7CgogICAgICB3M2Nfc2xpZHkuc2V0X2Vvc19zdGF0dXMoIXczY19zbGlkeS5uZXh0X2luY3JlbWVudGFsX2l0ZW0odzNjX3NsaWR5Lmxhc3Rfc2hvd24pKTsKCiAgICAgIGlmICghdzNjX3NsaWR5Lm5zX3BvcykKICAgICAgICAgdzNjX3NsaWR5LnJlZnJlc2hfdG9vbGJhcigyMDApOwogICAgIH0KICB9LAoKICAvLyB0byBmaXJzdCBzbGlkZSB3aXRoIG5vdGhpbmcgcmV2ZWFsZWQKICAvLyBpLmUuIHN0YXRlIGF0IHN0YXJ0IG9mIHByZXNlbnRhdGlvbgogIGZpcnN0X3NsaWRlOiBmdW5jdGlvbiAoKSB7CiAgICAgaWYgKCF3M2Nfc2xpZHkudmlld19hbGwpCiAgICAgewogICAgICAgdmFyIHNsaWRlOwoKICAgICAgIGlmICh3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyICE9IDApCiAgICAgICB7CiAgICAgICAgIHNsaWRlID0gdzNjX3NsaWR5LnNsaWRlc1t3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyXTsKICAgICAgICAgdzNjX3NsaWR5LmhpZGVfc2xpZGUoc2xpZGUpOwoKICAgICAgICAgdzNjX3NsaWR5LnNsaWRlX251bWJlciA9IDA7CiAgICAgICAgIHNsaWRlID0gdzNjX3NsaWR5LnNsaWRlc1t3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyXTsKICAgICAgICAgdzNjX3NsaWR5Lmxhc3Rfc2hvd24gPSBudWxsOwogICAgICAgICB3M2Nfc2xpZHkuc2V0X3Zpc2liaWxpdHlfYWxsX2luY3JlbWVudGFsKCJoaWRkZW4iKTsKICAgICAgICAgdzNjX3NsaWR5LnNob3dfc2xpZGUoc2xpZGUpOwogICAgICAgfQoKICAgICAgIHczY19zbGlkeS5zZXRfZW9zX3N0YXR1cygKICAgICAgICAgIXczY19zbGlkeS5uZXh0X2luY3JlbWVudGFsX2l0ZW0odzNjX3NsaWR5Lmxhc3Rfc2hvd24pKTsKICAgICAgIHczY19zbGlkeS5zZXRfbG9jYXRpb24oKTsKICAgICB9CiAgfSwKCiAgLy8gZ290byBsYXN0IHNsaWRlIHdpdGggZXZlcnl0aGluZyByZXZlYWxlZAogIC8vIGkuZS4gc3RhdGUgYXQgZW5kIG9mIHByZXNlbnRhdGlvbgogIGxhc3Rfc2xpZGU6IGZ1bmN0aW9uICgpIHsKICAgIGlmICghdzNjX3NsaWR5LnZpZXdfYWxsKQogICAgewogICAgICB2YXIgc2xpZGU7CgogICAgICB3M2Nfc2xpZHkubGFzdF9zaG93biA9IG51bGw7IC8vcmV2ZWFsTmV4dEl0ZW0obGFzdFNob3duKTsKCiAgICAgIGlmICh3M2Nfc2xpZHkubGFzdF9zaG93biA9PSBudWxsICYmCiAgICAgICAgICB3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyIDwgdzNjX3NsaWR5LnNsaWRlcy5sZW5ndGggLSAxKQogICAgICB7CiAgICAgICAgIHNsaWRlID0gdzNjX3NsaWR5LnNsaWRlc1t3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyXTsKICAgICAgICAgdzNjX3NsaWR5LmhpZGVfc2xpZGUoc2xpZGUpOwogICAgICAgICB3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyID0gdzNjX3NsaWR5LnNsaWRlcy5sZW5ndGggLSAxOwogICAgICAgICBzbGlkZSA9IHczY19zbGlkeS5zbGlkZXNbdzNjX3NsaWR5LnNsaWRlX251bWJlcl07CiAgICAgICAgIHczY19zbGlkeS5zZXRfdmlzaWJpbGl0eV9hbGxfaW5jcmVtZW50YWwoInZpc2libGUiKTsKICAgICAgICAgdzNjX3NsaWR5Lmxhc3Rfc2hvd24gPSB3M2Nfc2xpZHkucHJldmlvdXNfaW5jcmVtZW50YWxfaXRlbShudWxsKTsKCiAgICAgICAgIHczY19zbGlkeS5zaG93X3NsaWRlKHNsaWRlKTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICAgdzNjX3NsaWR5LnNldF92aXNpYmlsaXR5X2FsbF9pbmNyZW1lbnRhbCgidmlzaWJsZSIpOwogICAgICAgICB3M2Nfc2xpZHkubGFzdF9zaG93biA9IHczY19zbGlkeS5wcmV2aW91c19pbmNyZW1lbnRhbF9pdGVtKG51bGwpOwogICAgICB9CgogICAgICB3M2Nfc2xpZHkuc2V0X2Vvc19zdGF0dXModHJ1ZSk7CiAgICAgIHczY19zbGlkeS5zZXRfbG9jYXRpb24oKTsKICAgIH0KICB9LAoKCiAgLy8gIyMjIGNoZWNrIHRoaXMgYW5kIGNvbnNpZGVyIGFkZC9yZW1vdmUgY2xhc3MKICBzZXRfZW9zX3N0YXR1czogZnVuY3Rpb24gKHN0YXRlKSB7CiAgICBpZiAodGhpcy5lb3MpCiAgICAgIHRoaXMuZW9zLnN0eWxlLmNvbG9yID0gKHN0YXRlID8gInJnYigyNDAsMjQwLDI0MCkiIDogInJlZCIpOwogIH0sCgogIC8vIGZpcnN0IHNsaWRlIGlzIDAKICBnb3RvX3NsaWRlOiBmdW5jdGlvbiAobnVtKSB7CiAgICAvL2FsZXJ0KCJnb2luZyB0byBzbGlkZSAiICsgKG51bSsxKSk7CiAgICB2YXIgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwogICAgdzNjX3NsaWR5LmhpZGVfc2xpZGUoc2xpZGUpOwogICAgdzNjX3NsaWR5LnNsaWRlX251bWJlciA9IG51bTsKICAgIHNsaWRlID0gdzNjX3NsaWR5LnNsaWRlc1t3M2Nfc2xpZHkuc2xpZGVfbnVtYmVyXTsKICAgIHczY19zbGlkeS5sYXN0X3Nob3duID0gbnVsbDsKICAgIHczY19zbGlkeS5zZXRfdmlzaWJpbGl0eV9hbGxfaW5jcmVtZW50YWwoImhpZGRlbiIpOwogICAgdzNjX3NsaWR5LnNldF9lb3Nfc3RhdHVzKCF3M2Nfc2xpZHkubmV4dF9pbmNyZW1lbnRhbF9pdGVtKHczY19zbGlkeS5sYXN0X3Nob3duKSk7CiAgICBkb2N1bWVudC50aXRsZSA9IHczY19zbGlkeS50aXRsZSArICIgKCIgKyAodzNjX3NsaWR5LnNsaWRlX251bWJlcisxKSArICIpIjsKICAgIHczY19zbGlkeS5zaG93X3NsaWRlKHNsaWRlKTsKICAgIHczY19zbGlkeS5zaG93X3NsaWRlX251bWJlcigpOwogIH0sCgoKICBzaG93X3NsaWRlOiBmdW5jdGlvbiAoc2xpZGUpIHsKICAgIHRoaXMuc3luY19iYWNrZ3JvdW5kKHNsaWRlKTsKICAgIHRoaXMucmVtb3ZlX2NsYXNzKHNsaWRlLCAiaGlkZGVuIik7CgogICAgLy8gd29yayBhcm91bmQgSUU5IG9iamVjdCByZW5kZXJpbmcgYnVnCiAgICBzZXRUaW1lb3V0KCJ3aW5kb3cuc2Nyb2xsVG8oMCwwKTsiLCAxKTsKICB9LAoKICBoaWRlX3NsaWRlOiBmdW5jdGlvbiAoc2xpZGUpIHsKICAgIHRoaXMuYWRkX2NsYXNzKHNsaWRlLCAiaGlkZGVuIik7CiAgfSwKCiAgc2V0X2ZvY3VzOiBmdW5jdGlvbiAoZWxlbWVudCkKICB7CiAgICBpZiAoZWxlbWVudCkKICAgICAgZWxlbWVudC5mb2N1cygpOwogICAgZWxzZQogICAgewogICAgICB3M2Nfc2xpZHkuaGVscF9hbmNob3IuZm9jdXMoKTsKCiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgdzNjX3NsaWR5LmhlbHBfYW5jaG9yLmJsdXIoKTsKICAgICAgfSwgMSk7CiAgICB9CiAgfSwKCiAgLy8gc2hvdyBqdXN0IHRoZSBiYWNrZ3JvdW5kcyBwZXJ0aW5lbnQgdG8gdGhpcyBzbGlkZQogIC8vIHdoZW4gc2xpZGUgYmFja2dyb3VuZC1jb2xvciBpcyB0cmFuc3BhcmVudAogIC8vIHRoaXMgc2hvdWxkIG5vdyB3b3JrIHdpdGggcmdiYSBjb2xvciB2YWx1ZXMKICBzeW5jX2JhY2tncm91bmQ6IGZ1bmN0aW9uIChzbGlkZSkgewogICAgdmFyIGJhY2tncm91bmQ7CiAgICB2YXIgYmdDb2xvcjsKCiAgICBpZiAoc2xpZGUuY3VycmVudFN0eWxlKQogICAgICBiZ0NvbG9yID0gc2xpZGUuY3VycmVudFN0eWxlWyJiYWNrZ3JvdW5kQ29sb3IiXTsKICAgIGVsc2UgaWYgKGRvY3VtZW50LmRlZmF1bHRWaWV3KQogICAgewogICAgICB2YXIgc3R5bGVzID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShzbGlkZSxudWxsKTsKCiAgICAgIGlmIChzdHlsZXMpCiAgICAgICAgYmdDb2xvciA9IHN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9yIik7CiAgICAgIGVsc2UgLy8gYnJva2VuIGltcGxlbWVudGF0aW9uIHByb2JhYmx5IGR1ZSBTYWZhcmkgb3IgS29ucXVlcm9yCiAgICAgIHsKICAgICAgICAvL2FsZXJ0KCJkZWZlY3RpdmUgaW1wbGVtZW50YXRpb24gb2YgZ2V0Q29tcHV0ZWRTdHlsZSgpIik7CiAgICAgICAgYmdDb2xvciA9ICJ0cmFuc3BhcmVudCI7CiAgICAgIH0KICAgIH0KICAgIGVsc2UKICAgICAgYmdDb2xvciA9PSAidHJhbnNwYXJlbnQiOwoKICAgIGlmIChiZ0NvbG9yID09ICJ0cmFuc3BhcmVudCIgfHwKICAgICAgICBiZ0NvbG9yLmluZGV4T2YoInJnYmEiKSA+PSAwIHx8CiAgICAgICAgYmdDb2xvci5pbmRleE9mKCJvcGFjaXR5IikgPj0gMCkKICAgIHsKICAgICAgdmFyIHNsaWRlQ2xhc3MgPSB0aGlzLmdldF9jbGFzc19saXN0KHNsaWRlKTsKCiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5iYWNrZ3JvdW5kcy5sZW5ndGg7IGkrKykKICAgICAgewogICAgICAgIGJhY2tncm91bmQgPSB0aGlzLmJhY2tncm91bmRzW2ldOwoKICAgICAgICB2YXIgYmdDbGFzcyA9IHRoaXMuZ2V0X2NsYXNzX2xpc3QoYmFja2dyb3VuZCk7CgogICAgICAgIGlmICh0aGlzLm1hdGNoaW5nX2JhY2tncm91bmQoc2xpZGVDbGFzcywgYmdDbGFzcykpCiAgICAgICAgICB0aGlzLnJlbW92ZV9jbGFzcyhiYWNrZ3JvdW5kLCAiaGlkZGVuIik7CiAgICAgICAgZWxzZQogICAgICAgICAgdGhpcy5hZGRfY2xhc3MoYmFja2dyb3VuZCwgImhpZGRlbiIpOwogICAgICB9CiAgICB9CiAgICBlbHNlIC8vIGZvcmNpYmx5IGhpZGUgYWxsIGJhY2tncm91bmRzCiAgICAgIHRoaXMuaGlkZV9iYWNrZ3JvdW5kcygpOwogIH0sCgogIGhpZGVfYmFja2dyb3VuZHM6IGZ1bmN0aW9uICgpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5iYWNrZ3JvdW5kcy5sZW5ndGg7IGkrKykKICAgIHsKICAgICAgYmFja2dyb3VuZCA9IHRoaXMuYmFja2dyb3VuZHNbaV07CiAgICAgIHRoaXMuYWRkX2NsYXNzKGJhY2tncm91bmQsICJoaWRkZW4iKTsKICAgIH0KICB9LAoKICAvLyBjb21wYXJlIGNsYXNzZXMgZm9yIHNsaWRlIGFuZCBiYWNrZ3JvdW5kCiAgbWF0Y2hpbmdfYmFja2dyb3VuZDogZnVuY3Rpb24gKHNsaWRlQ2xhc3MsIGJnQ2xhc3MpIHsKICAgIHZhciBpLCBjb3VudCwgcGF0dGVybiwgcmVzdWx0OwoKICAgIC8vIGRlZmluZSBwYXR0ZXJuIGFzIHJlZ3VsYXIgZXhwcmVzc2lvbgogICAgcGF0dGVybiA9IC9cdysvZzsKCiAgICAvLyBjaGVjayBiYWNrZ3JvdW5kIGNsYXNzIG5hbWVzCiAgICByZXN1bHQgPSBiZ0NsYXNzLm1hdGNoKHBhdHRlcm4pOwoKICAgIGZvciAoaSA9IGNvdW50ID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykKICAgIHsKICAgICAgaWYgKHJlc3VsdFtpXSA9PSAiaGlkZGVuIikKICAgICAgICBjb250aW51ZTsKCiAgICAgIGlmIChyZXN1bHRbaV0gPT0gImJhY2tncm91bmQiKQoJY29udGludWU7CgogICAgICArK2NvdW50OwogICAgfQoKICAgIGlmIChjb3VudCA9PSAwKSAgLy8gZGVmYXVsdCBtYXRjaAogICAgICByZXR1cm4gdHJ1ZTsKCiAgICAvLyBjaGVjayBmb3IgbWF0Y2hlcyBhbmQgcGxhY2UgcmVzdWx0IGluIGFycmF5CiAgICByZXN1bHQgPSBzbGlkZUNsYXNzLm1hdGNoKHBhdHRlcm4pOwoKICAgIC8vIG5vdyBjaGVjayBpZiBkZXNpcmVkIG5hbWUgaXMgcHJlc2VudCBmb3IgYmFja2dyb3VuZAogICAgZm9yIChpID0gY291bnQgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKQogICAgewogICAgICBpZiAocmVzdWx0W2ldID09ICJoaWRkZW4iKQogICAgICAgIGNvbnRpbnVlOwoKICAgICAgaWYgKHRoaXMuaGFzX3Rva2VuKGJnQ2xhc3MsIHJlc3VsdFtpXSkpCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIHJlc2l6ZWQ6IGZ1bmN0aW9uICgpIHsKICAgICB2YXIgd2lkdGggPSAwOwoKICAgICBpZiAoIHR5cGVvZiggd2luZG93LmlubmVyV2lkdGggKSA9PSAnbnVtYmVyJyApCiAgICAgICB3aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoOyAgLy8gTm9uIElFIGJyb3dzZXIKICAgICBlbHNlIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKQogICAgICAgd2lkdGggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7ICAvLyBJRTYKICAgICBlbHNlIGlmIChkb2N1bWVudC5ib2R5ICYmIGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgpCiAgICAgICB3aWR0aCA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7IC8vIElFNAoKICAgICB2YXIgaGVpZ2h0ID0gMDsKCiAgICAgaWYgKCB0eXBlb2YoIHdpbmRvdy5pbm5lckhlaWdodCApID09ICdudW1iZXInICkKICAgICAgIGhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDsgIC8vIE5vbiBJRSBicm93c2VyCiAgICAgZWxzZSBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpCiAgICAgICBoZWlnaHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0OyAgLy8gSUU2CiAgICAgZWxzZSBpZiAoZG9jdW1lbnQuYm9keSAmJiBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCkKICAgICAgIGhlaWdodCA9IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0OyAvLyBJRTQKCiAgICAgaWYgKGhlaWdodCAmJiAod2lkdGgvaGVpZ2h0ID4gMS4wNSoxMDI0Lzc2OCkpCiAgICAgewogICAgICAgd2lkdGggPSBoZWlnaHQgKiAxMDI0LjAvNzY4OwogICAgIH0KCiAgICAgLy8gSUUgZmlyZXMgb25yZXNpemUgZXZlbiB3aGVuIG9ubHkgZm9udCBzaXplIGlzIGNoYW5nZWQhCiAgICAgLy8gc28gd2UgZG8gYSBjaGVjayB0byBhdm9pZCBibG9ja2luZyA8IGFuZCA+IGFjdGlvbnMKICAgICBpZiAod2lkdGggIT0gdzNjX3NsaWR5Lmxhc3Rfd2lkdGggfHwgaGVpZ2h0ICE9IHczY19zbGlkeS5sYXN0X2hlaWdodCkKICAgICB7CiAgICAgICBpZiAod2lkdGggPj0gMTEwMCkKICAgICAgICAgdzNjX3NsaWR5LnNpemVfaW5kZXggPSA1OyAgICAvLyA0CiAgICAgICBlbHNlIGlmICh3aWR0aCA+PSAxMDAwKQogICAgICAgICB3M2Nfc2xpZHkuc2l6ZV9pbmRleCA9IDQ7ICAgIC8vIDMKICAgICAgIGVsc2UgaWYgKHdpZHRoID49IDgwMCkKICAgICAgICAgdzNjX3NsaWR5LnNpemVfaW5kZXggPSAzOyAgICAvLyAyCiAgICAgICBlbHNlIGlmICh3aWR0aCA+PSA2MDApCiAgICAgICAgIHczY19zbGlkeS5zaXplX2luZGV4ID0gMjsgICAgLy8gMQogICAgICAgZWxzZSBpZiAod2lkdGgpCiAgICAgICAgIHczY19zbGlkeS5zaXplX2luZGV4ID0gMDsKCiAgICAgICAvLyBhZGQgaW4gZm9udCBzaXplIGFkanVzdG1lbnQgZnJvbSBtZXRhIGVsZW1lbnQgZS5nLgogICAgICAgLy8gPG1ldGEgbmFtZT0iZm9udC1zaXplLWFkanVzdG1lbnQiIGNvbnRlbnQ9Ii0yIiAvPgogICAgICAgLy8gdXNlZnVsIHdoZW4gc2xpZGVzIGhhdmUgdG9vIG11Y2ggY29udGVudCA7LSkKCiAgICAgICBpZiAoMCA8PSB3M2Nfc2xpZHkuc2l6ZV9pbmRleCArIHczY19zbGlkeS5zaXplX2FkanVzdG1lbnQgJiYKICAgICAgICAgICAgIHczY19zbGlkeS5zaXplX2luZGV4ICsgdzNjX3NsaWR5LnNpemVfYWRqdXN0bWVudCA8IHczY19zbGlkeS5zaXplcy5sZW5ndGgpCiAgICAgICAgIHczY19zbGlkeS5zaXplX2luZGV4ID0gdzNjX3NsaWR5LnNpemVfaW5kZXggKyB3M2Nfc2xpZHkuc2l6ZV9hZGp1c3RtZW50OwoKICAgICAgIC8vIGVuYWJsZXMgY3Jvc3MgYnJvd3NlciB1c2Ugb2YgcmVsYXRpdmUgd2lkdGgvaGVpZ2h0CiAgICAgICAvLyBvbiBvYmplY3QgZWxlbWVudHMgZm9yIHVzZSB3aXRoIFNWRyBhbmQgRmxhc2ggbWVkaWEKICAgICAgIHczY19zbGlkeS5hZGp1c3Rfb2JqZWN0X2RpbWVuc2lvbnMod2lkdGgsIGhlaWdodCk7CgogICAgICAgaWYgKGRvY3VtZW50LmJvZHkuc3R5bGUuZm9udFNpemUgIT0gdzNjX3NsaWR5LnNpemVzW3czY19zbGlkeS5zaXplX2luZGV4XSkKICAgICAgIHsKICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5mb250U2l6ZSA9IHczY19zbGlkeS5zaXplc1t3M2Nfc2xpZHkuc2l6ZV9pbmRleF07CiAgICAgICB9CgogICAgICAgdzNjX3NsaWR5Lmxhc3Rfd2lkdGggPSB3aWR0aDsKICAgICAgIHczY19zbGlkeS5sYXN0X2hlaWdodCA9IGhlaWdodDsKCiAgICAgICAvLyBmb3JjZSByZWZsb3cgdG8gd29yayBhcm91bmQgTW96aWxsYSBidWcKICAgICAgIGlmICh3M2Nfc2xpZHkubnNfcG9zKQogICAgICAgewogICAgICAgICB2YXIgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwogICAgICAgICB3M2Nfc2xpZHkuaGlkZV9zbGlkZShzbGlkZSk7CiAgICAgICAgIHczY19zbGlkeS5zaG93X3NsaWRlKHNsaWRlKTsKICAgICAgIH0KCiAgICAgICAvLyBmb3JjZSBjb3JyZWN0IHBvc2l0aW9uaW5nIG9mIHRvb2xiYXIKICAgICAgIHczY19zbGlkeS5yZWZyZXNoX3Rvb2xiYXIoMjAwKTsKICAgICB9CiAgfSwKCiAgc2Nyb2xsZWQ6IGZ1bmN0aW9uICgpIHsKICAgIGlmICh3M2Nfc2xpZHkudG9vbGJhciAmJiAhdzNjX3NsaWR5Lm5zX3BvcyAmJiAhdzNjX3NsaWR5LmllNykKICAgIHsKICAgICAgdzNjX3NsaWR5LmhhY2tfb2Zmc2V0ID0gdzNjX3NsaWR5LnNjcm9sbF94X29mZnNldCgpOwogICAgICAvLyBoaWRlIHRvb2xiYXIKICAgICAgdzNjX3NsaWR5LnRvb2xiYXIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKCiAgICAgIC8vIG1ha2UgaXQgcmVhcHBlYXIgbGF0ZXIKICAgICAgaWYgKHczY19zbGlkeS5zY3JvbGxoYWNrID09IDAgJiYgIXczY19zbGlkeS52aWV3X2FsbCkKICAgICAgewogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge3czY19zbGlkeS5zaG93X3Rvb2xiYXIoKTsgfSwgMTAwMCk7CiAgICAgICAgdzNjX3NsaWR5LnNjcm9sbGhhY2sgPSAxOwogICAgICB9CiAgICB9CiAgfSwKCiAgaGlkZV90b29sYmFyOiBmdW5jdGlvbiAoKSB7CiAgICB3M2Nfc2xpZHkuYWRkX2NsYXNzKHczY19zbGlkeS50b29sYmFyLCAiaGlkZGVuIik7CiAgICB3aW5kb3cuZm9jdXMoKTsKICB9LAoKICAvLyB1c2VkIHRvIGVuc3VyZSBJRSByZWZyZXNoZXMgdG9vbGJhciBpbiBjb3JyZWN0IHBvc2l0aW9uCiAgcmVmcmVzaF90b29sYmFyOiBmdW5jdGlvbiAoaW50ZXJ2YWwpIHsKICAgIGlmICghdzNjX3NsaWR5Lm5zX3BvcyAmJiAhdzNjX3NsaWR5LmllNykKICAgIHsKICAgICAgdzNjX3NsaWR5LmhpZGVfdG9vbGJhcigpOwogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHt3M2Nfc2xpZHkuc2hvd190b29sYmFyKCk7fSwgaW50ZXJ2YWwpOwogICAgfQogIH0sCgogIC8vIHJlc3RvcmVzIHRvb2xiYXIgYWZ0ZXIgc2hvcnQgZGVsYXkKICBzaG93X3Rvb2xiYXI6IGZ1bmN0aW9uICgpIHsKICAgIGlmICh3M2Nfc2xpZHkud2FudF90b29sYmFyKQogICAgewogICAgICB3M2Nfc2xpZHkudG9vbGJhci5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKCiAgICAgIGlmICghdzNjX3NsaWR5Lm5zX3BvcykKICAgICAgewogICAgICAgIC8vIGFkanVzdCBwb3NpdGlvbiB0byBhbGxvdyBmb3Igc2Nyb2xsaW5nCiAgICAgICAgdmFyIHhvZmZzZXQgPSB3M2Nfc2xpZHkuc2Nyb2xsX3hfb2Zmc2V0KCk7CiAgICAgICAgdzNjX3NsaWR5LnRvb2xiYXIuc3R5bGUubGVmdCA9IHhvZmZzZXQ7CiAgICAgICAgdzNjX3NsaWR5LnRvb2xiYXIuc3R5bGUucmlnaHQgPSB4b2Zmc2V0OwoKICAgICAgICAvLyBkZXRlcm1pbmUgdmVydGljYWwgc2Nyb2xsIG9mZnNldAogICAgICAgIC8vdmFyIHlvZmZzZXQgPSBzY3JvbGxZT2Zmc2V0KCk7CgogICAgICAgIC8vIGJvdHRvbSBpcyBkb2MgaGVpZ2h0IC0gd2luZG93IGhlaWdodCAtIHNjcm9sbCBvZmZzZXQKICAgICAgICAvL3ZhciBib3R0b20gPSBkb2N1bWVudEhlaWdodCgpIC0gbGFzdEhlaWdodCAtIHlvZmZzZXQKCiAgICAgICAgLy9pZiAoeW9mZnNldCA+IDAgfHwgZG9jdW1lbnRIZWlnaHQoKSA+IGxhc3RIZWlnaHQpCiAgICAgICAgLy8gICBib3R0b20gKz0gMTY7ICAvLyBhbGxvdyBmb3IgaGVpZ2h0IG9mIHNjcm9sbGJhcgoKICAgICAgICB3M2Nfc2xpZHkudG9vbGJhci5zdHlsZS5ib3R0b20gPSAwOyAvL2JvdHRvbTsKICAgICAgfQoKICAgICAgdzNjX3NsaWR5LnJlbW92ZV9jbGFzcyh3M2Nfc2xpZHkudG9vbGJhciwgImhpZGRlbiIpOwogICAgfQoKICAgIHczY19zbGlkeS5zY3JvbGxoYWNrID0gMDsKCgogICAgLy8gc2V0IHRoZSBrZXlib2FyZCBmb2N1cyB0byB0aGUgaGVscCBsaW5rIG9uIHRoZQogICAgLy8gdG9vbGJhciB0byBlbnN1cmUgdGhhdCBkb2N1bWVudCBoYXMgdGhlIGZvY3VzCiAgICAvLyBJRSBkb2Vzbid0IGFsd2F5cyB3b3JrIHdpdGggd2luZG93LmZvY3VzKCkKICAgIC8vIGFuZCB0aGlzIGhhY2sgaGFzIGJlbmVmaXQgb2YgRW50ZXIgZm9yIGhlbHAKCiAgICB0cnkKICAgIHsKICAgICAgaWYgKCF3M2Nfc2xpZHkub3BlcmEpCiAgICAgICAgdzNjX3NsaWR5LnNldF9mb2N1cygpOwogICAgfQogICAgY2F0Y2ggKGUpCiAgICB7CiAgICB9CiAgfSwKCi8vIGludm9rZWQgdmlhIEYga2V5CiAgdG9nZ2xlX3Rvb2xiYXI6IGZ1bmN0aW9uICgpIHsKICAgIGlmICghdzNjX3NsaWR5LnZpZXdfYWxsKQogICAgewogICAgICBpZiAodzNjX3NsaWR5Lmhhc19jbGFzcyh3M2Nfc2xpZHkudG9vbGJhciwgImhpZGRlbiIpKQogICAgICB7CiAgICAgICAgdzNjX3NsaWR5LnJlbW92ZV9jbGFzcyh3M2Nfc2xpZHkudG9vbGJhciwgImhpZGRlbiIpCiAgICAgICAgdzNjX3NsaWR5LndhbnRfdG9vbGJhciA9IDE7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgdzNjX3NsaWR5LmFkZF9jbGFzcyh3M2Nfc2xpZHkudG9vbGJhciwgImhpZGRlbiIpCiAgICAgICAgdzNjX3NsaWR5LndhbnRfdG9vbGJhciA9IDA7CiAgICAgIH0KICAgIH0KICB9LAoKICBzY3JvbGxfeF9vZmZzZXQ6IGZ1bmN0aW9uICgpIHsKICAgIGlmICh3aW5kb3cucGFnZVhPZmZzZXQpCiAgICAgIHJldHVybiBzZWxmLnBhZ2VYT2Zmc2V0OwoKICAgIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgCiAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCkKICAgICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0OwoKICAgIGlmIChkb2N1bWVudC5ib2R5KQogICAgICByZXR1cm4gZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0OwoKICAgIHJldHVybiAwOwogIH0sCgogIHNjcm9sbF95X29mZnNldDogZnVuY3Rpb24gKCkgewogICAgaWYgKHdpbmRvdy5wYWdlWU9mZnNldCkKICAgICAgcmV0dXJuIHNlbGYucGFnZVlPZmZzZXQ7CgogICAgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiAKICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3ApCiAgICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wOwoKICAgIGlmIChkb2N1bWVudC5ib2R5KQogICAgICByZXR1cm4gZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7CgogICAgcmV0dXJuIDA7CiAgfSwKCiAgLy8gbG9va2luZyBmb3IgYSB3YXkgdG8gZGV0ZXJtaW5lIGhlaWdodCBvZiBzbGlkZSBjb250ZW50CiAgLy8gdGhlIHNsaWRlIGl0c2VsZiBpcyBzZXQgdG8gdGhlIGhlaWdodCBvZiB0aGUgd2luZG93CiAgb3B0aW1pemVfZm9udF9zaXplOiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwoKICAgIC8vdmFyIGRoID0gZG9jdW1lbnRIZWlnaHQoKTsgLy9nZXREb2NIZWlnaHQoZG9jdW1lbnQpOwogICAgdmFyIGRoID0gc2xpZGUuc2Nyb2xsSGVpZ2h0OwogICAgdmFyIHdoID0gZ2V0V2luZG93SGVpZ2h0KCk7CiAgICB2YXIgdSA9IDEwMCAqIGRoIC8gd2g7CgogICAgYWxlcnQoIndpbmRvdyB1dGlsaXphdGlvbiA9ICIgKyB1ICsgIiUgKGRvYyAiCiAgICAgICsgZGggKyAiIHdpbiAiICsgd2ggKyAiKSIpOwogIH0sCgogIC8vIGZyb20gZG9jdW1lbnQgb2JqZWN0CiAgZ2V0X2RvY19oZWlnaHQ6IGZ1bmN0aW9uIChkb2MpIHsKICAgIGlmICghZG9jKQogICAgICBkb2MgPSBkb2N1bWVudDsKCiAgICBpZiAoZG9jICYmIGRvYy5ib2R5ICYmIGRvYy5ib2R5Lm9mZnNldEhlaWdodCkKICAgICAgcmV0dXJuIGRvYy5ib2R5Lm9mZnNldEhlaWdodDsgIC8vIG5zL2dlY2tvIHN5bnRheAoKICAgIGlmIChkb2MgJiYgZG9jLmJvZHkgJiYgZG9jLmJvZHkuc2Nyb2xsSGVpZ2h0KQogICAgICByZXR1cm4gZG9jLmJvZHkuc2Nyb2xsSGVpZ2h0OwoKICAgIGFsZXJ0KCJjb3VsZG4ndCBkZXRlcm1pbmUgZG9jdW1lbnQgaGVpZ2h0Iik7CiAgfSwKCiAgZ2V0X3dpbmRvd19oZWlnaHQ6IGZ1bmN0aW9uICgpIHsKICAgIGlmICggdHlwZW9mKCB3aW5kb3cuaW5uZXJIZWlnaHQgKSA9PSAnbnVtYmVyJyApCiAgICAgIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQ7ICAvLyBOb24gSUUgYnJvd3NlcgoKICAgIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkKICAgICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7ICAvLyBJRTYKCiAgICBpZiAoZG9jdW1lbnQuYm9keSAmJiBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCkKICAgICAgcmV0dXJuIGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0OyAvLyBJRTQKICB9LAoKICBkb2N1bWVudF9oZWlnaHQ6IGZ1bmN0aW9uICgpIHsKICAgIHZhciBzaCwgb2g7CgogICAgc2ggPSBkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodDsKICAgIG9oID0gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CgogICAgaWYgKHNoICYmIG9oKQogICAgewogICAgICByZXR1cm4gKHNoID4gb2ggPyBzaCA6IG9oKTsKICAgIH0KCiAgICAvLyBubyBpZGVhIQogICAgcmV0dXJuIDA7CiAgfSwKCiAgc21hbGxlcjogZnVuY3Rpb24gKCkgewogICAgaWYgKHczY19zbGlkeS5zaXplX2luZGV4ID4gMCkKICAgIHsKICAgICAgLS13M2Nfc2xpZHkuc2l6ZV9pbmRleDsKICAgIH0KCiAgICB3M2Nfc2xpZHkudG9vbGJhci5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgZG9jdW1lbnQuYm9keS5zdHlsZS5mb250U2l6ZSA9IHczY19zbGlkeS5zaXplc1t3M2Nfc2xpZHkuc2l6ZV9pbmRleF07CiAgICB2YXIgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwogICAgdzNjX3NsaWR5LmhpZGVfc2xpZGUoc2xpZGUpOwogICAgdzNjX3NsaWR5LnNob3dfc2xpZGUoc2xpZGUpOwogICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7dzNjX3NsaWR5LnNob3dfdG9vbGJhcigpOyB9LCA1MCk7CiAgfSwKCiAgYmlnZ2VyOiBmdW5jdGlvbiAoKSB7CiAgICBpZiAodzNjX3NsaWR5LnNpemVfaW5kZXggPCB3M2Nfc2xpZHkuc2l6ZXMubGVuZ3RoIC0gMSkKICAgIHsKICAgICAgKyt3M2Nfc2xpZHkuc2l6ZV9pbmRleDsKICAgIH0KCiAgICB3M2Nfc2xpZHkudG9vbGJhci5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgZG9jdW1lbnQuYm9keS5zdHlsZS5mb250U2l6ZSA9IHczY19zbGlkeS5zaXplc1t3M2Nfc2xpZHkuc2l6ZV9pbmRleF07CiAgICB2YXIgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwogICAgdzNjX3NsaWR5LmhpZGVfc2xpZGUoc2xpZGUpOwogICAgdzNjX3NsaWR5LnNob3dfc2xpZGUoc2xpZGUpOwogICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7dzNjX3NsaWR5LnNob3dfdG9vbGJhcigpOyB9LCA1MCk7CiAgfSwKCiAgLy8gZW5hYmxlcyBjcm9zcyBicm93c2VyIHVzZSBvZiByZWxhdGl2ZSB3aWR0aC9oZWlnaHQKICAvLyBvbiBvYmplY3QgZWxlbWVudHMgZm9yIHVzZSB3aXRoIFNWRyBhbmQgRmxhc2ggbWVkaWEKICAvLyB3aXRoIHRoYW5rcyB0byBJdmFuIEhlcm1hbiBmb3IgdGhlIHN1Z2dlc3Rpb24KICBhZGp1c3Rfb2JqZWN0X2RpbWVuc2lvbnM6IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7CiAgICBmb3IoIHZhciBpID0gMDsgaSA8IHczY19zbGlkeS5vYmplY3RzLmxlbmd0aDsgaSsrICkKICAgIHsKICAgICAgdmFyIG9iaiA9IHRoaXMub2JqZWN0c1tpXTsKICAgICAgdmFyIG1pbWVUeXBlID0gb2JqLmdldEF0dHJpYnV0ZSgidHlwZSIpOwoKICAgICAgaWYgKG1pbWVUeXBlID09ICJpbWFnZS9zdmcreG1sIiB8fCBtaW1lVHlwZSA9PSAiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giKQogICAgICB7CiAgICAgICAgaWYgKCAhb2JqLmluaXRpYWxXaWR0aCApIAogICAgICAgICAgb2JqLmluaXRpYWxXaWR0aCA9IG9iai5nZXRBdHRyaWJ1dGUoIndpZHRoIik7CgogICAgICAgIGlmICggIW9iai5pbml0aWFsSGVpZ2h0ICkgCiAgICAgICAgICBvYmouaW5pdGlhbEhlaWdodCA9IG9iai5nZXRBdHRyaWJ1dGUoImhlaWdodCIpOwoKICAgICAgICBpZiAoIG9iai5pbml0aWFsV2lkdGggJiYgb2JqLmluaXRpYWxXaWR0aC5jaGFyQXQob2JqLmluaXRpYWxXaWR0aC5sZW5ndGgtMSkgPT0gIiUiICkKICAgICAgICB7CiAgICAgICAgICB2YXIgdyA9IHBhcnNlSW50KG9iai5pbml0aWFsV2lkdGguc2xpY2UoMCwgb2JqLmluaXRpYWxXaWR0aC5sZW5ndGgtMSkpOwogICAgICAgICAgdmFyIG5ld1cgPSB3aWR0aCAqICh3LzEwMC4wKTsKICAgICAgICAgIG9iai5zZXRBdHRyaWJ1dGUoIndpZHRoIixuZXdXKTsKICAgICAgICB9CgogICAgICAgIGlmICggb2JqLmluaXRpYWxIZWlnaHQgJiYKICAgICAgICAgICAgIG9iai5pbml0aWFsSGVpZ2h0LmNoYXJBdChvYmouaW5pdGlhbEhlaWdodC5sZW5ndGgtMSkgPT0gIiUiICkKICAgICAgICB7CiAgICAgICAgICB2YXIgaCA9IHBhcnNlSW50KG9iai5pbml0aWFsSGVpZ2h0LnNsaWNlKDAsIG9iai5pbml0aWFsSGVpZ2h0Lmxlbmd0aC0xKSk7CiAgICAgICAgICB2YXIgbmV3SCA9IGhlaWdodCAqIChoLzEwMC4wKTsKICAgICAgICAgIG9iai5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIG5ld0gpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCgogIC8vIG5lZWRlZCBmb3IgT3BlcmEgdG8gaW5oaWJpdCBkZWZhdWx0IGJlaGF2aW9yCiAgLy8gc2luY2UgT3BlcmEgZGVsaXZlcnMga2V5UHJlc3MgZXZlbiBpZiBrZXlEb3duCiAgLy8gd2FzIGNhbmNlbGxlZAogIGtleV9wcmVzczogZnVuY3Rpb24gKGV2ZW50KSB7CiAgICBpZiAoIWV2ZW50KQogICAgICBldmVudCA9IHdpbmRvdy5ldmVudDsKCiAgICBpZiAoIXczY19zbGlkeS5rZXlfd2FudGVkKQogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CgogICAgcmV0dXJuIHRydWU7CiAgfSwKCiAgLy8gIFNlZSBlLmcuIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvanMvZXZlbnRzL2tleXMuaHRtbCBmb3Iga2V5Y29kZXMKICBrZXlfZG93bjogZnVuY3Rpb24gKGV2ZW50KSB7CiAgICB2YXIga2V5LCB0YXJnZXQsIHRhZzsKCiAgICB3M2Nfc2xpZHkua2V5X3dhbnRlZCA9IHRydWU7CgogICAgaWYgKCFldmVudCkKICAgICAgZXZlbnQgPSB3aW5kb3cuZXZlbnQ7CgogICAgLy8ga2x1ZGdlIGFyb3VuZCBOUy9JRSBkaWZmZXJlbmNlcyAKICAgIGlmICh3aW5kb3cuZXZlbnQpCiAgICB7CiAgICAgIGtleSA9IHdpbmRvdy5ldmVudC5rZXlDb2RlOwogICAgICB0YXJnZXQgPSB3aW5kb3cuZXZlbnQuc3JjRWxlbWVudDsKICAgIH0KICAgIGVsc2UgaWYgKGV2ZW50LndoaWNoKQogICAgewogICAgICBrZXkgPSBldmVudC53aGljaDsKICAgICAgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0OwogICAgfQogICAgZWxzZQogICAgICByZXR1cm4gdHJ1ZTsgLy8gWWlrZXMhIHVua25vd24gYnJvd3NlcgoKICAgIC8vIGlnbm9yZSBldmVudCBpZiBrZXkgdmFsdWUgaXMgemVybwogICAgLy8gYXMgZm9yIGFsdCBvbiBPcGVyYSBhbmQgS29ucXVlcm9yCiAgICBpZiAoIWtleSkKICAgICAgIHJldHVybiB0cnVlOwoKICAgIC8vIGF2b2lkIGludGVyZmVyaW5nIHdpdGgga2V5c3Ryb2tlCiAgICAvLyBiZWhhdmlvciBmb3Igbm9uLXNsaWR5IGNocm9tZSBlbGVtZW50cwogICAgaWYgKCF3M2Nfc2xpZHkuc2xpZHlfY2hyb21lKHRhcmdldCkgJiYKICAgICAgICB3M2Nfc2xpZHkuc3BlY2lhbF9lbGVtZW50KHRhcmdldCkpCiAgICAgIHJldHVybiB0cnVlOwoKICAgIC8vIGNoZWNrIGZvciBjb25jdXJyZW50IGNvbnRyb2wvY29tbWFuZC9hbHQga2V5CiAgICAvLyBidXQgYXJlIHRoZXNlIG9ubHkgcHJlc2VudCBvbiBtb3VzZSBldmVudHM/CgogICAgaWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50Lm1ldGFLZXkpCiAgICAgICByZXR1cm4gdHJ1ZTsKCiAgICAvLyBkaXNtaXNzIHRhYmxlIG9mIGNvbnRlbnRzIGlmIHZpc2libGUKICAgIGlmICh3M2Nfc2xpZHkuaXNfc2hvd25fdG9jKCkgJiYga2V5ICE9IDkgJiYga2V5ICE9IDE2ICYmIGtleSAhPSAzOCAmJiBrZXkgIT0gNDApCiAgICB7CiAgICAgIHczY19zbGlkeS5oaWRlX3RhYmxlX29mX2NvbnRlbnRzKHRydWUpOwoKICAgICAgaWYgKGtleSA9PSAyNyB8fCBrZXkgPT0gODQgfHwga2V5ID09IDY3KQogICAgICAgIHJldHVybiB3M2Nfc2xpZHkuY2FuY2VsKGV2ZW50KTsKICAgIH0KCiAgICBpZiAoa2V5ID09IDM0KSAvLyBQYWdlIERvd24KICAgIHsKICAgICAgaWYgKHczY19zbGlkeS52aWV3X2FsbCkKICAgICAgICByZXR1cm4gdHJ1ZTsKCiAgICAgIHczY19zbGlkeS5uZXh0X3NsaWRlKGZhbHNlKTsKICAgICAgcmV0dXJuIHczY19zbGlkeS5jYW5jZWwoZXZlbnQpOwogICAgfQogICAgZWxzZSBpZiAoa2V5ID09IDMzKSAvLyBQYWdlIFVwCiAgICB7CiAgICAgIGlmICh3M2Nfc2xpZHkudmlld19hbGwpCiAgICAgICAgcmV0dXJuIHRydWU7CgogICAgICB3M2Nfc2xpZHkucHJldmlvdXNfc2xpZGUoZmFsc2UpOwogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CiAgICB9CiAgICBlbHNlIGlmIChrZXkgPT0gMzIpIC8vIHNwYWNlIGJhcgogICAgewogICAgICB3M2Nfc2xpZHkubmV4dF9zbGlkZSh0cnVlKTsKICAgICAgcmV0dXJuIHczY19zbGlkeS5jYW5jZWwoZXZlbnQpOwogICAgfQogICAgZWxzZSBpZiAoa2V5ID09IDM3KSAvLyBMZWZ0IGFycm93CiAgICB7CiAgICAgIHczY19zbGlkeS5wcmV2aW91c19zbGlkZSghZXZlbnQuc2hpZnRLZXkpOwogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CiAgICB9CiAgICBlbHNlIGlmIChrZXkgPT0gMzYpIC8vIEhvbWUKICAgIHsKICAgICAgdzNjX3NsaWR5LmZpcnN0X3NsaWRlKCk7CiAgICAgIHJldHVybiB3M2Nfc2xpZHkuY2FuY2VsKGV2ZW50KTsKICAgIH0KICAgIGVsc2UgaWYgKGtleSA9PSAzNSkgLy8gRW5kCiAgICB7CiAgICAgIHczY19zbGlkeS5sYXN0X3NsaWRlKCk7CiAgICAgIHJldHVybiB3M2Nfc2xpZHkuY2FuY2VsKGV2ZW50KTsKICAgIH0KICAgIGVsc2UgaWYgKGtleSA9PSAzOSkgLy8gUmlnaHQgYXJyb3cKICAgIHsKICAgICAgdzNjX3NsaWR5Lm5leHRfc2xpZGUoIWV2ZW50LnNoaWZ0S2V5KTsKICAgICAgcmV0dXJuIHczY19zbGlkeS5jYW5jZWwoZXZlbnQpOwogICAgfQogICAgZWxzZSBpZiAoa2V5ID09IDEzKSAvLyBFbnRlcgogICAgewogICAgICBpZiAodzNjX3NsaWR5Lm91dGxpbmUpCiAgICAgIHsKICAgICAgICBpZiAodzNjX3NsaWR5Lm91dGxpbmUudmlzaWJsZSkKICAgICAgICAgIHczY19zbGlkeS5mb2xkKHczY19zbGlkeS5vdXRsaW5lKTsKICAgICAgICBlbHNlCiAgICAgICAgICB3M2Nfc2xpZHkudW5mb2xkKHczY19zbGlkeS5vdXRsaW5lKTsKICAgICAgICAgIAogICAgICAgcmV0dXJuIHczY19zbGlkeS5jYW5jZWwoZXZlbnQpOwogICAgICB9CiAgICB9CiAgICBlbHNlIGlmIChrZXkgPT0gMTg4KSAgLy8gPCBmb3Igc21hbGxlciBmb250cwogICAgewogICAgICB3M2Nfc2xpZHkuc21hbGxlcigpOwogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CiAgICB9CiAgICBlbHNlIGlmIChrZXkgPT0gMTkwKSAgLy8gPiBmb3IgbGFyZ2VyIGZvbnRzCiAgICB7CiAgICAgIHczY19zbGlkeS5iaWdnZXIoKTsKICAgICAgcmV0dXJuIHczY19zbGlkeS5jYW5jZWwoZXZlbnQpOwogICAgfQogICAgZWxzZSBpZiAoa2V5ID09IDE4OSB8fCBrZXkgPT0gMTA5KSAgLy8gLSBmb3Igc21hbGxlciBmb250cwogICAgewogICAgICB3M2Nfc2xpZHkuc21hbGxlcigpOwogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CiAgICB9CiAgICBlbHNlIGlmIChrZXkgPT0gMTg3IHx8IGtleSA9PSAxOTEgfHwga2V5ID09IDEwNykgIC8vID0gKyAgZm9yIGxhcmdlciBmb250cwogICAgewogICAgICB3M2Nfc2xpZHkuYmlnZ2VyKCk7CiAgICAgIHJldHVybiB3M2Nfc2xpZHkuY2FuY2VsKGV2ZW50KTsKICAgIH0KICAgIGVsc2UgaWYgKGtleSA9PSA4MykgIC8vIFMgZm9yIHNtYWxsZXIgZm9udHMKICAgIHsKICAgICAgdzNjX3NsaWR5LnNtYWxsZXIoKTsKICAgICAgcmV0dXJuIHczY19zbGlkeS5jYW5jZWwoZXZlbnQpOwogICAgfQogICAgZWxzZSBpZiAoa2V5ID09IDY2KSAgLy8gQiBmb3IgbGFyZ2VyIGZvbnRzCiAgICB7CiAgICAgIHczY19zbGlkeS5iaWdnZXIoKTsKICAgICAgcmV0dXJuIHczY19zbGlkeS5jYW5jZWwoZXZlbnQpOwogICAgfQogICAgZWxzZSBpZiAoa2V5ID09IDkwKSAgLy8gWiBmb3IgbGFzdCBzbGlkZQogICAgewogICAgICB3M2Nfc2xpZHkubGFzdF9zbGlkZSgpOwogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CiAgICB9CiAgICBlbHNlIGlmIChrZXkgPT0gNzApICAvLyBGIGZvciB0b2dnbGUgdG9vbGJhcgogICAgewogICAgICB3M2Nfc2xpZHkudG9nZ2xlX3Rvb2xiYXIoKTsKICAgICAgcmV0dXJuIHczY19zbGlkeS5jYW5jZWwoZXZlbnQpOwogICAgfQogICAgZWxzZSBpZiAoa2V5ID09IDY1KSAgLy8gQSBmb3IgdG9nZ2xlIHZpZXcgc2luZ2xlL2FsbCBzbGlkZXMKICAgIHsKICAgICAgdzNjX3NsaWR5LnRvZ2dsZV92aWV3KCk7CiAgICAgIHJldHVybiB3M2Nfc2xpZHkuY2FuY2VsKGV2ZW50KTsKICAgIH0KICAgIGVsc2UgaWYgKGtleSA9PSA3NSkgIC8vIHRvZ2dsZSBhY3Rpb24gb2YgbGVmdCBjbGljayBmb3IgbmV4dCBwYWdlCiAgICB7CiAgICAgIHczY19zbGlkeS5tb3VzZV9jbGlja19lbmFibGVkID0gIXczY19zbGlkeS5tb3VzZV9jbGlja19lbmFibGVkOwogICAgICB2YXIgYWxlcnRfbXNnID0gKHczY19zbGlkeS5tb3VzZV9jbGlja19lbmFibGVkID8KICAgICAgICAgICAgICAgICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpICsgICIgbW91c2UgY2xpY2sgYWR2YW5jZSI7CgogICAgICBhbGVydCh3M2Nfc2xpZHkubG9jYWxpemUoYWxlcnRfbXNnKSk7CiAgICAgIHJldHVybiB3M2Nfc2xpZHkuY2FuY2VsKGV2ZW50KTsKICAgIH0KICAgIGVsc2UgaWYgKGtleSA9PSA4NCB8fCBrZXkgPT0gNjcpICAvLyBUIG9yIEMgZm9yIHRhYmxlIG9mIGNvbnRlbnRzCiAgICB7CiAgICAgIGlmICh3M2Nfc2xpZHkudG9jKQogICAgICAgIHczY19zbGlkeS50b2dnbGVfdGFibGVfb2ZfY29udGVudHMoKTsKCiAgICAgIHJldHVybiB3M2Nfc2xpZHkuY2FuY2VsKGV2ZW50KTsKICAgIH0KICAgIGVsc2UgaWYgKGtleSA9PSA3MikgLy8gSCBmb3IgaGVscAogICAgewogICAgICB3aW5kb3cubG9jYXRpb24gPSB3M2Nfc2xpZHkuaGVscF9wYWdlOwogICAgICByZXR1cm4gdzNjX3NsaWR5LmNhbmNlbChldmVudCk7CiAgICB9CiAgICAvL2Vsc2UgYWxlcnQoImtleSBjb2RlIGlzICIrIGtleSk7CgogICAgcmV0dXJuIHRydWU7CiAgfSwKCiAgLy8gc2FmZSBmb3IgYm90aCB0ZXh0L2h0bWwgYW5kIGFwcGxpY2F0aW9uL3hodG1sK3htbAogIGNyZWF0ZV9lbGVtZW50OiBmdW5jdGlvbiAobmFtZSkgewogICAgaWYgKHRoaXMueGh0bWwgJiYgKHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgIT0gJ3VuZGVmaW5lZCcpKQogICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwgbmFtZSkKCiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKTsKICB9LAoKICBnZXRfZWxlbWVudF9zdHlsZTogZnVuY3Rpb24gKGVsZW0sIElFU3R5bGVQcm9wLCBDU1NTdHlsZVByb3ApIHsKICAgIGlmIChlbGVtLmN1cnJlbnRTdHlsZSkKICAgIHsKICAgICAgcmV0dXJuIGVsZW0uY3VycmVudFN0eWxlW0lFU3R5bGVQcm9wXTsKICAgIH0KICAgIGVsc2UgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKQogICAgewogICAgICB2YXIgY29tcFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbSwgIiIpOwogICAgICByZXR1cm4gY29tcFN0eWxlLmdldFByb3BlcnR5VmFsdWUoQ1NTU3R5bGVQcm9wKTsKICAgIH0KICAgIHJldHVybiAiIjsKICB9LAoKICAvLyB0aGUgc3RyaW5nIHN0ciBpcyBhIHdoaXRlc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgdG9rZW5zCiAgLy8gdGVzdCBpZiBzdHIgY29udGFpbnMgYSBwYXJ0aWN1bGFyIHRva2VuLCBlLmcuICJzbGlkZSIKICBoYXNfdG9rZW46IGZ1bmN0aW9uIChzdHIsIHRva2VuKSB7CiAgICBpZiAoc3RyKQogICAgewogICAgICAvLyBkZWZpbmUgcGF0dGVybiBhcyByZWd1bGFyIGV4cHJlc3Npb24KICAgICAgdmFyIHBhdHRlcm4gPSAvXHcrL2c7CgogICAgICAvLyBjaGVjayBmb3IgbWF0Y2hlcwogICAgICAvLyBwbGFjZSByZXN1bHQgaW4gYXJyYXkKICAgICAgdmFyIHJlc3VsdCA9IHN0ci5tYXRjaChwYXR0ZXJuKTsKCiAgICAgIC8vIG5vdyBjaGVjayBpZiBkZXNpcmVkIHRva2VuIGlzIHByZXNlbnQKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspCiAgICAgIHsKICAgICAgICBpZiAocmVzdWx0W2ldID09IHRva2VuKQogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZmFsc2U7CiAgfSwKCiAgZ2V0X2NsYXNzX2xpc3Q6IGZ1bmN0aW9uIChlbGVtZW50KSB7CiAgICBpZiAodHlwZW9mIGVsZW1lbnQuY2xhc3NOYW1lICE9ICd1bmRlZmluZWQnKQogICAgICByZXR1cm4gZWxlbWVudC5jbGFzc05hbWU7CgogICAgcmV0dXJuIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpOwogIH0sCgogIGhhc19jbGFzczogZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUpIHsKICAgIGlmIChlbGVtZW50Lm5vZGVUeXBlICE9IDEpCiAgICAgIHJldHVybiBmYWxzZTsKCiAgICB2YXIgcmVnZXhwID0gbmV3IFJlZ0V4cCgiKF58ICkiICsgbmFtZSArICJcVyoiKTsKCiAgICBpZiAodHlwZW9mIGVsZW1lbnQuY2xhc3NOYW1lICE9ICd1bmRlZmluZWQnKQogICAgICByZXR1cm4gcmVnZXhwLnRlc3QoZWxlbWVudC5jbGFzc05hbWUpOwoKICAgIHJldHVybiByZWdleHAudGVzdChlbGVtZW50LmdldEF0dHJpYnV0ZSgiY2xhc3MiKSk7CiAgfSwKCiAgcmVtb3ZlX2NsYXNzOiBmdW5jdGlvbiAoZWxlbWVudCwgbmFtZSkgewogICAgdmFyIHJlZ2V4cCA9IG5ldyBSZWdFeHAoIihefCApIiArIG5hbWUgKyAiXFcqIik7CiAgICB2YXIgY2xzdmFsID0gIiI7CgogICAgaWYgKHR5cGVvZiBlbGVtZW50LmNsYXNzTmFtZSAhPSAndW5kZWZpbmVkJykKICAgIHsKICAgICAgY2xzdmFsID0gZWxlbWVudC5jbGFzc05hbWU7CgogICAgICBpZiAoY2xzdmFsKQogICAgICB7CiAgICAgICAgY2xzdmFsID0gY2xzdmFsLnJlcGxhY2UocmVnZXhwLCAiIik7CiAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBjbHN2YWw7CiAgICAgIH0KICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgY2xzdmFsID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoImNsYXNzIik7CgogICAgICBpZiAoY2xzdmFsKQogICAgICB7CiAgICAgICAgY2xzdmFsID0gY2xzdmFsLnJlcGxhY2UocmVnZXhwLCAiIik7CiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgY2xzdmFsKTsKICAgICAgfQogICAgfQogIH0sCgogIGFkZF9jbGFzczogZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUpIHsKICAgIGlmICghdGhpcy5oYXNfY2xhc3MoZWxlbWVudCwgbmFtZSkpCiAgICB7CiAgICAgIGlmICh0eXBlb2YgZWxlbWVudC5jbGFzc05hbWUgIT0gJ3VuZGVmaW5lZCcpCiAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgKz0gIiAiICsgbmFtZTsKICAgICAgZWxzZQogICAgICB7CiAgICAgICAgdmFyIGNsc3ZhbCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpOwogICAgICAgIGNsc3ZhbCA9IGNsc3ZhbCA/IGNsc3ZhbCArICIgIiArIG5hbWUgOiBuYW1lOwogICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJjbGFzcyIsIGNsc3ZhbCk7CiAgICAgIH0KICAgIH0KICB9LAoKICAvLyBIVE1MIGVsZW1lbnRzIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBjbGFzcz0iaW5jcmVtZW50YWwiCiAgLy8gbm90ZSB0aGF0IHlvdSBjYW4gYWxzbyBwdXQgdGhlIGNsYXNzIG9uIGNvbnRhaW5lcnMgbGlrZQogIC8vIHVwLCBvbCwgZGwsIGFuZCBkaXYgdG8gbWFrZSB0aGVpciBjb250ZW50cyBhcHBlYXIKICAvLyBpbmNyZW1lbnRhbGx5LiBVcHBlciBjYXNlIGlzIHVzZWQgc2luY2UgdGhpcyBpcyB3aGF0CiAgLy8gYnJvd3NlcnMgcmVwb3J0IGZvciBIVE1MIG5vZGUgbmFtZXMgKHRleHQvaHRtbCkuCiAgaW5jcmVtZW50YWxfZWxlbWVudHM6IG51bGwsCiAgb2theV9mb3JfaW5jcmVtZW50YWw6IGZ1bmN0aW9uIChuYW1lKSB7CiAgICBpZiAoIXRoaXMuaW5jcmVtZW50YWxfZWxlbWVudHMpCiAgICB7CiAgICAgIHZhciBpbmNsaXN0ID0gbmV3IEFycmF5KCk7CiAgICAgIGluY2xpc3RbInAiXSA9IHRydWU7CiAgICAgIGluY2xpc3RbInByZSJdID0gdHJ1ZTsKICAgICAgaW5jbGlzdFsibGkiXSA9IHRydWU7CiAgICAgIGluY2xpc3RbImJsb2NrcXVvdGUiXSA9IHRydWU7CiAgICAgIGluY2xpc3RbImR0Il0gPSB0cnVlOwogICAgICBpbmNsaXN0WyJkZCJdID0gdHJ1ZTsKICAgICAgaW5jbGlzdFsiaDIiXSA9IHRydWU7CiAgICAgIGluY2xpc3RbImgzIl0gPSB0cnVlOwogICAgICBpbmNsaXN0WyJoNCJdID0gdHJ1ZTsKICAgICAgaW5jbGlzdFsiaDUiXSA9IHRydWU7CiAgICAgIGluY2xpc3RbImg2Il0gPSB0cnVlOwogICAgICBpbmNsaXN0WyJzcGFuIl0gPSB0cnVlOwogICAgICBpbmNsaXN0WyJhZGRyZXNzIl0gPSB0cnVlOwogICAgICBpbmNsaXN0WyJ0YWJsZSJdID0gdHJ1ZTsKICAgICAgaW5jbGlzdFsidHIiXSA9IHRydWU7CiAgICAgIGluY2xpc3RbInRoIl0gPSB0cnVlOwogICAgICBpbmNsaXN0WyJ0ZCJdID0gdHJ1ZTsKICAgICAgaW5jbGlzdFsiaW1nIl0gPSB0cnVlOwogICAgICBpbmNsaXN0WyJvYmplY3QiXSA9IHRydWU7CiAgICAgIHRoaXMuaW5jcmVtZW50YWxfZWxlbWVudHMgPSBpbmNsaXN0OwogICAgfQogICAgcmV0dXJuIHRoaXMuaW5jcmVtZW50YWxfZWxlbWVudHNbbmFtZS50b0xvd2VyQ2FzZSgpXTsKICB9LAoKICBuZXh0X2luY3JlbWVudGFsX2l0ZW06IGZ1bmN0aW9uIChub2RlKSB7CiAgICB2YXIgYnIgPSB0aGlzLmlzX3hodG1sID8gImJyIiA6ICJCUiI7CiAgICB2YXIgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwoKICAgIGZvciAoOzspCiAgICB7CiAgICAgIG5vZGUgPSB3M2Nfc2xpZHkubmV4dF9ub2RlKHNsaWRlLCBub2RlKTsKCiAgICAgIGlmIChub2RlID09IG51bGwgfHwgbm9kZS5wYXJlbnROb2RlID09IG51bGwpCiAgICAgICAgYnJlYWs7CgogICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAxKSAgLy8gRUxFTUVOVAogICAgICB7CiAgICAgICAgaWYgKG5vZGUubm9kZU5hbWUgPT0gYnIpCiAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgaWYgKHczY19zbGlkeS5oYXNfY2xhc3Mobm9kZSwgImluY3JlbWVudGFsIikKICAgICAgICAgICAgICYmIHczY19zbGlkeS5va2F5X2Zvcl9pbmNyZW1lbnRhbChub2RlLm5vZGVOYW1lKSkKICAgICAgICAgIHJldHVybiBub2RlOwoKICAgICAgICBpZiAodzNjX3NsaWR5Lmhhc19jbGFzcyhub2RlLnBhcmVudE5vZGUsICJpbmNyZW1lbnRhbCIpCiAgICAgICAgICAgICAmJiAhdzNjX3NsaWR5Lmhhc19jbGFzcyhub2RlLCAibm9uLWluY3JlbWVudGFsIikpCiAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBub2RlOwogIH0sCgogIHByZXZpb3VzX2luY3JlbWVudGFsX2l0ZW06IGZ1bmN0aW9uIChub2RlKSB7CiAgICB2YXIgYnIgPSB0aGlzLmlzX3hodG1sID8gImJyIiA6ICJCUiI7CiAgICB2YXIgc2xpZGUgPSB3M2Nfc2xpZHkuc2xpZGVzW3czY19zbGlkeS5zbGlkZV9udW1iZXJdOwoKICAgIGZvciAoOzspCiAgICB7CiAgICAgIG5vZGUgPSB3M2Nfc2xpZHkucHJldmlvdXNfbm9kZShzbGlkZSwgbm9kZSk7CgogICAgICBpZiAobm9kZSA9PSBudWxsIHx8IG5vZGUucGFyZW50Tm9kZSA9PSBudWxsKQogICAgICAgIGJyZWFrOwoKICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMSkKICAgICAgewogICAgICAgIGlmIChub2RlLm5vZGVOYW1lID09IGJyKQogICAgICAgICAgY29udGludWU7CgogICAgICAgIGlmICh3M2Nfc2xpZHkuaGFzX2NsYXNzKG5vZGUsICJpbmNyZW1lbnRhbCIpCiAgICAgICAgICAgICAmJiB3M2Nfc2xpZHkub2theV9mb3JfaW5jcmVtZW50YWwobm9kZS5ub2RlTmFtZSkpCiAgICAgICAgICByZXR1cm4gbm9kZTsKCiAgICAgICAgaWYgKHczY19zbGlkeS5oYXNfY2xhc3Mobm9kZS5wYXJlbnROb2RlLCAiaW5jcmVtZW50YWwiKQogICAgICAgICAgICAgJiYgIXczY19zbGlkeS5oYXNfY2xhc3Mobm9kZSwgIm5vbi1pbmNyZW1lbnRhbCIpKQogICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbm9kZTsKICB9LAoKICAvLyBzZXQgdmlzaWJpbGl0eSBmb3IgYWxsIGVsZW1lbnRzIG9uIGN1cnJlbnQgc2xpZGUgd2l0aAogIC8vIGEgcGFyZW50IGVsZW1lbnQgd2l0aCBhdHRyaWJ1dGUgY2xhc3M9ImluY3JlbWVudGFsIgogIHNldF92aXNpYmlsaXR5X2FsbF9pbmNyZW1lbnRhbDogZnVuY3Rpb24gKHZhbHVlKSB7CiAgICB2YXIgbm9kZSA9IHRoaXMubmV4dF9pbmNyZW1lbnRhbF9pdGVtKG51bGwpOwoKICAgIGlmICh2YWx1ZSA9PSAiaGlkZGVuIikKICAgIHsKICAgICAgd2hpbGUgKG5vZGUpCiAgICAgIHsKICAgICAgICB3M2Nfc2xpZHkuYWRkX2NsYXNzKG5vZGUsICJpbnZpc2libGUiKTsKICAgICAgICBub2RlID0gdzNjX3NsaWR5Lm5leHRfaW5jcmVtZW50YWxfaXRlbShub2RlKTsKICAgICAgfQogICAgfQogICAgZWxzZSAvLyB2YWx1ZSA9PSAidmlzaWJsZSIKICAgIHsKICAgICAgd2hpbGUgKG5vZGUpCiAgICAgIHsKICAgICAgICB3M2Nfc2xpZHkucmVtb3ZlX2NsYXNzKG5vZGUsICJpbnZpc2libGUiKTsKICAgICAgICBub2RlID0gdzNjX3NsaWR5Lm5leHRfaW5jcmVtZW50YWxfaXRlbShub2RlKTsKICAgICAgfQogICAgfQogIH0sCgogIC8vIHJldmVhbCB0aGUgbmV4dCBoaWRkZW4gaXRlbSBvbiB0aGUgc2xpZGUKICAvLyBub2RlIGlzIG51bGwgb3IgdGhlIG5vZGUgdGhhdCB3YXMgbGFzdCByZXZlYWxlZAogIHJldmVhbF9uZXh0X2l0ZW06IGZ1bmN0aW9uIChub2RlKSB7CiAgICBub2RlID0gdzNjX3NsaWR5Lm5leHRfaW5jcmVtZW50YWxfaXRlbShub2RlKTsKCiAgICBpZiAobm9kZSAmJiBub2RlLm5vZGVUeXBlID09IDEpICAvLyBhbiBlbGVtZW50CiAgICAgIHczY19zbGlkeS5yZW1vdmVfY2xhc3Mobm9kZSwgImludmlzaWJsZSIpOwoKICAgIHJldHVybiBub2RlOwogIH0sCgogIC8vIGV4YWN0IGludmVyc2Ugb2YgcmV2ZWFsTmV4dEl0ZW0obm9kZSkKICBoaWRlX3ByZXZpb3VzX2l0ZW06IGZ1bmN0aW9uIChub2RlKSB7CiAgICBpZiAobm9kZSAmJiBub2RlLm5vZGVUeXBlID09IDEpICAvLyBhbiBlbGVtZW50CiAgICAgIHczY19zbGlkeS5hZGRfY2xhc3Mobm9kZSwgImludmlzaWJsZSIpOwoKICAgIHJldHVybiB0aGlzLnByZXZpb3VzX2luY3JlbWVudGFsX2l0ZW0obm9kZSk7CiAgfSwKCiAgLy8gbGVmdCB0byByaWdodCB0cmF2ZXJzYWwgb2Ygcm9vdCdzIGNvbnRlbnQKICBuZXh0X25vZGU6IGZ1bmN0aW9uIChyb290LCBub2RlKSB7CiAgICBpZiAobm9kZSA9PSBudWxsKQogICAgICByZXR1cm4gcm9vdC5maXJzdENoaWxkOwoKICAgIGlmIChub2RlLmZpcnN0Q2hpbGQpCiAgICAgIHJldHVybiBub2RlLmZpcnN0Q2hpbGQ7CgogICAgaWYgKG5vZGUubmV4dFNpYmxpbmcpCiAgICAgIHJldHVybiBub2RlLm5leHRTaWJsaW5nOwoKICAgIGZvciAoOzspCiAgICB7CiAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7CgogICAgICBpZiAoIW5vZGUgfHwgbm9kZSA9PSByb290KQogICAgICAgIGJyZWFrOwoKICAgICAgaWYgKG5vZGUgJiYgbm9kZS5uZXh0U2libGluZykKICAgICAgICByZXR1cm4gbm9kZS5uZXh0U2libGluZzsKICAgIH0KCiAgICByZXR1cm4gbnVsbDsKICB9LAoKICAvLyByaWdodCB0byBsZWZ0IHRyYXZlcnNhbCBvZiByb290J3MgY29udGVudAogIHByZXZpb3VzX25vZGU6IGZ1bmN0aW9uIChyb290LCBub2RlKSB7CiAgICBpZiAobm9kZSA9PSBudWxsKQogICAgewogICAgICBub2RlID0gcm9vdC5sYXN0Q2hpbGQ7CgogICAgICBpZiAobm9kZSkKICAgICAgewogICAgICAgIHdoaWxlIChub2RlLmxhc3RDaGlsZCkKICAgICAgICAgIG5vZGUgPSBub2RlLmxhc3RDaGlsZDsKICAgICAgfQoKICAgICAgcmV0dXJuIG5vZGU7CiAgICB9CgogICAgaWYgKG5vZGUucHJldmlvdXNTaWJsaW5nKQogICAgewogICAgICBub2RlID0gbm9kZS5wcmV2aW91c1NpYmxpbmc7CgogICAgICB3aGlsZSAobm9kZS5sYXN0Q2hpbGQpCiAgICAgICAgbm9kZSA9IG5vZGUubGFzdENoaWxkOwoKICAgICAgcmV0dXJuIG5vZGU7CiAgICB9CgogICAgaWYgKG5vZGUucGFyZW50Tm9kZSAhPSByb290KQogICAgICByZXR1cm4gbm9kZS5wYXJlbnROb2RlOwoKICAgIHJldHVybiBudWxsOwogIH0sCgogIHByZXZpb3VzX3NpYmxpbmdfZWxlbWVudDogZnVuY3Rpb24gKGVsKSB7CiAgICBlbCA9IGVsLnByZXZpb3VzU2libGluZzsKCiAgICB3aGlsZSAoZWwgJiYgZWwubm9kZVR5cGUgIT0gMSkKICAgICAgZWwgPSBlbC5wcmV2aW91c1NpYmxpbmc7CgogICAgcmV0dXJuIGVsOwogIH0sCgogIG5leHRfc2libGluZ19lbGVtZW50OiBmdW5jdGlvbiAoZWwpIHsKICAgIGVsID0gZWwubmV4dFNpYmxpbmc7CgogICAgd2hpbGUgKGVsICYmIGVsLm5vZGVUeXBlICE9IDEpCiAgICAgIGVsID0gZWwubmV4dFNpYmxpbmc7CgogICAgcmV0dXJuIGVsOwogIH0sCgogIGZpcnN0X2NoaWxkX2VsZW1lbnQ6IGZ1bmN0aW9uIChlbCkgewogICAgdmFyIG5vZGU7CgogICAgZm9yIChub2RlID0gZWwuZmlyc3RDaGlsZDsgbm9kZTsgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmcpCiAgICB7CiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEpCiAgICAgICAgYnJlYWs7CiAgICB9CgogICAgcmV0dXJuIG5vZGU7CiAgfSwKCiAgZmlyc3RfdGFnOiBmdW5jdGlvbiAoZWxlbWVudCwgdGFnKSB7CiAgICB2YXIgbm9kZTsKCiAgICBpZiAoIXRoaXMuaXNfeGh0bWwpCiAgICAgIHRhZyA9IHRhZy50b1VwcGVyQ2FzZSgpOwoKICAgIGZvciAobm9kZSA9IGVsZW1lbnQuZmlyc3RDaGlsZDsgbm9kZTsgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmcpCiAgICB7CiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEgJiYgbm9kZS5ub2RlTmFtZSA9PSB0YWcpCiAgICAgICAgYnJlYWs7CiAgICB9CgogICAgcmV0dXJuIG5vZGU7CiAgfSwKCiAgaGlkZV9zZWxlY3Rpb246IGZ1bmN0aW9uICgpIHsKICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSAvLyBGaXJlZm94LCBDaHJvbWl1bSwgU2FmYXJpLCBPcGVyYQogICAgewogICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwoKICAgICAgaWYgKHNlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkKICAgICAgewogICAgICAgIHZhciByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOwogICAgICAgIHJhbmdlLmNvbGxhcHNlIChmYWxzZSk7CiAgICAgIH0KICAgIH0KICAgIGVsc2UgLy8gSW50ZXJuZXQgRXhwbG9yZXIKICAgIHsKICAgICAgdmFyIHRleHRSYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSAoKTsKICAgICAgdGV4dFJhbmdlLmNvbGxhcHNlIChmYWxzZSk7CiAgICB9CiAgfSwKCiAgZ2V0X3NlbGVjdGVkX3RleHQ6IGZ1bmN0aW9uICgpIHsKICAgIHRyeQogICAgewogICAgICBpZiAod2luZG93LmdldFNlbGVjdGlvbikKICAgICAgICByZXR1cm4gd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCk7CgogICAgICBpZiAoZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKQogICAgICAgIHJldHVybiBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpOwoKICAgICAgaWYgKGRvY3VtZW50LnNlbGVjdGlvbikKICAgICAgICByZXR1cm4gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkudGV4dDsKICAgIH0KICAgIGNhdGNoIChlKQogICAgewogICAgfQoKICAgIHJldHVybiAiIjsKICB9LAoKICAvLyBtYWtlIG5vdGUgb2YgbGVuZ3RoIG9mIHNlbGVjdGVkIHRleHQKICAvLyBhcyB0aGlzIGV2YWx1YXRlcyB0byB6ZXJvIGluIGNsaWNrIGV2ZW50CiAgbW91c2VfYnV0dG9uX3VwOiBmdW5jdGlvbiAoZSkgewogICAgdzNjX3NsaWR5LnNlbGVjdGVkX3RleHRfbGVuID0gdzNjX3NsaWR5LmdldF9zZWxlY3RlZF90ZXh0KCkubGVuZ3RoOwogIH0sCgogIG1vdXNlX2J1dHRvbl9kb3duOiBmdW5jdGlvbiAoZSkgewogICAgdzNjX3NsaWR5LnNlbGVjdGVkX3RleHRfbGVuID0gdzNjX3NsaWR5LmdldF9zZWxlY3RlZF90ZXh0KCkubGVuZ3RoOwogICAgdzNjX3NsaWR5Lm1vdXNlX3ggPSBlLmNsaWVudFg7CiAgICB3M2Nfc2xpZHkubW91c2VfeSA9IGUuY2xpZW50WTsKICB9LAoKICAvLyByaWdodCBtb3VzZSBidXR0b24gY2xpY2sgaXMgcmVzZXJ2ZWQgZm9yIGNvbnRleHQgbWVudXMKICAvLyBpdCBpcyBtb3JlIHJlbGlhYmxlIHRvIGRldGVjdCByaWdodGNsaWNrIHRoYW4gbGVmdGNsaWNrCiAgbW91c2VfYnV0dG9uX2NsaWNrOiBmdW5jdGlvbiAoZSkgewogICAgaWYgKCFlKQogICAgICB2YXIgZSA9IHdpbmRvdy5ldmVudDsKCiAgICBpZiAoTWF0aC5hYnMoZS5jbGllbnRYIC13M2Nfc2xpZHkubW91c2VfeCkgKwogICAgICAgIE1hdGguYWJzKGUuY2xpZW50WSAtdzNjX3NsaWR5Lm1vdXNlX3kpID4gMTApCiAgICAgIHJldHVybiB0cnVlOwoKICAgIGlmICh3M2Nfc2xpZHkuc2VsZWN0ZWRfdGV4dF9sZW4gPiAwKQogICAgICByZXR1cm4gdHJ1ZTsKCiAgICB2YXIgcmlnaHRjbGljayA9IGZhbHNlOwogICAgdmFyIGxlZnRjbGljayA9IGZhbHNlOwogICAgdmFyIG1pZGRsZWNsaWNrID0gZmFsc2U7CiAgICB2YXIgdGFyZ2V0OwoKICAgIGlmICghZSkKICAgICAgdmFyIGUgPSB3aW5kb3cuZXZlbnQ7CgogICAgaWYgKGUudGFyZ2V0KQogICAgICB0YXJnZXQgPSBlLnRhcmdldDsKICAgIGVsc2UgaWYgKGUuc3JjRWxlbWVudCkKICAgICAgdGFyZ2V0ID0gZS5zcmNFbGVtZW50OwoKICAgIC8vIHdvcmsgYXJvdW5kIFNhZmFyaSBidWcKICAgIGlmICh0YXJnZXQubm9kZVR5cGUgPT0gMykKICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudE5vZGU7CgogICAgaWYgKGUud2hpY2gpIC8vIGFsbCBicm93c2VycyBleGNlcHQgSUUKICAgIHsKICAgICAgbGVmdGNsaWNrID0gKGUud2hpY2ggPT0gMSk7CiAgICAgIG1pZGRsZWNsaWNrID0gKGUud2hpY2ggPT0gMik7CiAgICAgIHJpZ2h0Y2xpY2sgPSAoZS53aGljaCA9PSAzKTsKICAgIH0KICAgIGVsc2UgaWYgKGUuYnV0dG9uKQogICAgewogICAgICAvLyBLb25xdWVyb3IgZ2l2ZXMgMSBmb3IgbGVmdCwgNCBmb3IgbWlkZGxlCiAgICAgIC8vIElFNiBnaXZlcyAwIGZvciBsZWZ0IGFuZCBub3QgMSBhcyBJIGV4cGVjdGVkCgogICAgICBpZiAoZS5idXR0b24gPT0gNCkKICAgICAgICBtaWRkbGVjbGljayA9IHRydWU7CgogICAgICAvLyBhbGwgYnJvd3NlcnMgYWdyZWUgb24gMiBmb3IgcmlnaHQgYnV0dG9uCiAgICAgIHJpZ2h0Y2xpY2sgPSAoZS5idXR0b24gPT0gMik7CiAgICB9CiAgICBlbHNlCiAgICAgIGxlZnRjbGljayA9IHRydWU7CgogICAgaWYgKHczY19zbGlkeS5zZWxlY3RlZF90ZXh0X2xlbiA+IDApCiAgICB7CiAgICAgIHczY19zbGlkeS5zdG9wX3Byb3BhZ2F0aW9uKGUpOwogICAgICBlLmNhbmNlbCA9IHRydWU7CiAgICAgIGUucmV0dXJuVmFsdWUgPSBmYWxzZTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vIGRpc21pc3MgdGFibGUgb2YgY29udGVudHMKICAgIHczY19zbGlkeS5oaWRlX3RhYmxlX29mX2NvbnRlbnRzKGZhbHNlKTsKCiAgICAvLyBjaGVjayBpZiB0YXJnZXQgaXMgc29tZXRoaW5nIHRoYXQgcHJvYmFibHkgd2FudCdzIGNsaWNrcwogICAgLy8gZS5nLiBhLCBlbWJlZCwgb2JqZWN0LCBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgb3B0aW9uCiAgICB2YXIgdGFnID0gdGFyZ2V0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CgogICAgaWYgKHczY19zbGlkeS5tb3VzZV9jbGlja19lbmFibGVkICYmIGxlZnRjbGljayAmJgogICAgICAgICF3M2Nfc2xpZHkuc3BlY2lhbF9lbGVtZW50KHRhcmdldCkgJiYKICAgICAgICAhdGFyZ2V0Lm9uY2xpY2spCiAgICB7CiAgICAgIHczY19zbGlkeS5uZXh0X3NsaWRlKHRydWUpOwogICAgICB3M2Nfc2xpZHkuc3RvcF9wcm9wYWdhdGlvbihlKTsKICAgICAgZS5jYW5jZWwgPSB0cnVlOwogICAgICBlLnJldHVyblZhbHVlID0gZmFsc2U7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICByZXR1cm4gdHJ1ZTsKICB9LAoKICBzcGVjaWFsX2VsZW1lbnQ6IGZ1bmN0aW9uIChlbGVtZW50KSB7CiAgICBpZiAodGhpcy5oYXNfY2xhc3MoZWxlbWVudCwgIm5vbi1pbnRlcmFjdGl2ZSIpKQogICAgICByZXR1cm4gZmFsc2U7CgogICAgdmFyIHRhZyA9IGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKCiAgICByZXR1cm4gZWxlbWVudC5vbmtleWRvd24gfHwKICAgICAgZWxlbWVudC5vbmNsaWNrIHx8CiAgICAgIHRhZyA9PSAiYSIgfHwKICAgICAgdGFnID09ICJlbWJlZCIgfHwKICAgICAgdGFnID09ICJvYmplY3QiIHx8CiAgICAgIHRhZyA9PSAidmlkZW8iIHx8CiAgICAgIHRhZyA9PSAiYXVkaW8iIHx8CiAgICAgIHRhZyA9PSAic3ZnIiB8fAogICAgICB0YWcgPT0gImNhbnZhcyIgfHwKICAgICAgdGFnID09ICJpbnB1dCIgfHwKICAgICAgdGFnID09ICJ0ZXh0YXJlYSIgfHwKICAgICAgdGFnID09ICJzZWxlY3QiIHx8CiAgICAgIHRhZyA9PSAib3B0aW9uIjsKICB9LAoKICBzbGlkeV9jaHJvbWU6IGZ1bmN0aW9uIChlbCkgewogICAgd2hpbGUgKGVsKQogICAgewogICAgICBpZiAoZWwgPT0gdzNjX3NsaWR5LnRvYyB8fAogICAgICAgICAgZWwgPT0gdzNjX3NsaWR5LnRvb2xiYXIgfHwKICAgICAgICAgIHczY19zbGlkeS5oYXNfY2xhc3MoZWwsICJvdXRsaW5lIikpCiAgICAgICAgcmV0dXJuIHRydWU7CgogICAgICBlbCA9IGVsLnBhcmVudE5vZGU7CiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIGdldF9rZXk6IGZ1bmN0aW9uIChlKQogIHsKICAgIHZhciBrZXk7CgogICAgLy8ga2x1ZGdlIGFyb3VuZCBOUy9JRSBkaWZmZXJlbmNlcyAKICAgIGlmICh0eXBlb2Ygd2luZG93LmV2ZW50ICE9ICJ1bmRlZmluZWQiKQogICAgICBrZXkgPSB3aW5kb3cuZXZlbnQua2V5Q29kZTsKICAgIGVsc2UgaWYgKGUud2hpY2gpCiAgICAgIGtleSA9IGUud2hpY2g7CgogICAgcmV0dXJuIGtleTsKICB9LAoKICBnZXRfdGFyZ2V0OiBmdW5jdGlvbiAoZSkgewogICAgdmFyIHRhcmdldDsKCiAgICBpZiAoIWUpCiAgICAgIGUgPSB3aW5kb3cuZXZlbnQ7CgogICAgaWYgKGUudGFyZ2V0KQogICAgICB0YXJnZXQgPSBlLnRhcmdldDsKICAgIGVsc2UgaWYgKGUuc3JjRWxlbWVudCkKICAgICAgdGFyZ2V0ID0gZS5zcmNFbGVtZW50OwoKICAgIGlmICh0YXJnZXQubm9kZVR5cGUgIT0gMSkKICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudE5vZGU7CgogICAgcmV0dXJuIHRhcmdldDsKICB9LAoKICAvLyBkb2VzIGRpc3BsYXkgcHJvcGVydHkgcHJvdmlkZSBjb3JyZWN0IGRlZmF1bHRzPwogIGlzX2Jsb2NrOiBmdW5jdGlvbiAoZWxlbSkgewogICAgdmFyIHRhZyA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKCiAgICByZXR1cm4gdGFnID09ICJvbCIgfHwgdGFnID09ICJ1bCIgfHwgdGFnID09ICJwIiB8fCB0YWcgPT0gImRsIiB8fAogICAgICAgICAgIHRhZyA9PSAibGkiIHx8IHRhZyA9PSAidGFibGUiIHx8IHRhZyA9PSAicHJlIiB8fAogICAgICAgICAgIHRhZyA9PSAiaDEiIHx8IHRhZyA9PSAiaDIiIHx8IHRhZyA9PSAiaDMiIHx8CiAgICAgICAgICAgdGFnID09ICJoNCIgfHwgdGFnID09ICJoNSIgfHwgdGFnID09ICJoNiIgfHwKICAgICAgICAgICB0YWcgPT0gImJsb2NrcXVvdGUiIHx8IHRhZyA9PSAiYWRkcmVzcyI7IAogIH0sCgogIGFkZF9saXN0ZW5lcjogZnVuY3Rpb24gKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyKSB7CiAgICBpZiAod2luZG93LmFkZEV2ZW50TGlzdGVuZXIpCiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgZmFsc2UpOwogICAgZWxzZQogICAgICBlbGVtZW50LmF0dGFjaEV2ZW50KCJvbiIrZXZlbnQsIGhhbmRsZXIpOwogIH0sCgogIC8vIHVzZWQgdG8gcHJldmVudCBldmVudCBwcm9wYWdhdGlvbiBmcm9tIGZpZWxkIGNvbnRyb2xzCiAgc3RvcF9wcm9wYWdhdGlvbjogZnVuY3Rpb24gKGV2ZW50KSB7CiAgICBldmVudCA9IGV2ZW50ID8gZXZlbnQgOiB3aW5kb3cuZXZlbnQ7CiAgICBldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOyAgLy8gZm9yIElFCgogICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikKICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CgogICAgcmV0dXJuIHRydWU7CiAgfSwKCiAgY2FuY2VsOiBmdW5jdGlvbiAoZXZlbnQpIHsKICAgIGlmIChldmVudCkKICAgIHsKICAgICAgIGV2ZW50LmNhbmNlbCA9IHRydWU7CiAgICAgICBldmVudC5yZXR1cm5WYWx1ZSA9IGZhbHNlOwoKICAgICAgaWYgKGV2ZW50LnByZXZlbnREZWZhdWx0KQogICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICB9CgogICAgdzNjX3NsaWR5LmtleV93YW50ZWQgPSBmYWxzZTsKICAgIHJldHVybiBmYWxzZTsKICB9LAoKLy8gZm9yIGVhY2ggbGFuZ3VhZ2UgZGVmaW5lIGFuIGFzc29jaWF0aXZlIGFycmF5Ci8vIGFuZCBhbHNvIHRoZSBoZWxwIHRleHQgd2hpY2ggaXMgbG9uZ2VyCgogIHN0cmluZ3NfZXM6IHsKICAgICJzbGlkZSI6InDDoWcuIiwKICAgICJoZWxwPyI6IkF5dWRhIiwKICAgICJjb250ZW50cz8iOiLDjW5kaWNlIiwKICAgICJ0YWJsZSBvZiBjb250ZW50cyI6InRhYmxhIGRlIGNvbnRlbmlkb3MiLAogICAgIlRhYmxlIG9mIENvbnRlbnRzIjoiVGFibGEgZGUgQ29udGVuaWRvcyIsCiAgICAicmVzdGFydCBwcmVzZW50YXRpb24iOiJSZWluaWNpYXIgcHJlc2VudGFjacOzbiIsCiAgICAicmVzdGFydD8iOiJJbmljaW8iCiAgfSwKICBoZWxwX2VzOgogICAgIlV0aWxpY2UgZWwgcmF0w7NuLCBiYXJyYSBlc3BhY2lhZG9yYSwgdGVjbGFzIEl6ZGEvRGNoYSwgIiArCiAgICAibyBSZSBww6FnIHkgQXYgcMOhZy4gVXNlIFMgeSBCIHBhcmEgY2FtYmlhciBlbCB0YW1hw7FvIGRlIGZ1ZW50ZS4iLAoKICBzdHJpbmdzX2NhOiB7CiAgICAic2xpZGUiOiJww6BnLi4iLAogICAgImhlbHA/IjoiQWp1ZGEiLAogICAgImNvbnRlbnRzPyI6IsONbmRleCIsCiAgICAidGFibGUgb2YgY29udGVudHMiOiJ0YXVsYSBkZSBjb250aW5ndXRzIiwKICAgICJUYWJsZSBvZiBDb250ZW50cyI6IlRhdWxhIGRlIENvbnRpbmd1dHMiLAogICAgInJlc3RhcnQgcHJlc2VudGF0aW9uIjoiUmVpbmljaWFyIHByZXNlbnRhY2nDsyIsCiAgICAicmVzdGFydD8iOiJJbmljaSIKICB9LAogIGhlbHBfY2E6CiAgICAiVXRpbGl0emkgZWwgcmF0b2zDrSwgYmFycmEgZXNwYWlhZG9yYSwgdGVjbGVzIEVzcS4vRHRhLiAiICsKICAgICJvIFJlIHDDoGcgeSBBdiBww6BnLiBVc2kgUyBpIEIgcGVyIGNhbnZpYXIgZ3JhbmTDoHJpYSBkZSBmb250LiIsCgogIHN0cmluZ3NfY3M6IHsKICAgICJzbGlkZSI6InNuw61tZWsiLAogICAgImhlbHA/IjoibsOhcG92xJtkYSIsCiAgICAiY29udGVudHM/Ijoib2JzYWgiLAogICAgInRhYmxlIG9mIGNvbnRlbnRzIjoib2JzYWggcHJlemVudGFjZSIsCiAgICAiVGFibGUgb2YgQ29udGVudHMiOiJPYnNhaCBwcmV6ZW50YWNlIiwKICAgICJyZXN0YXJ0IHByZXNlbnRhdGlvbiI6Inpub3Z1IHNwdXN0aXQgcHJlemVudGFjaSIsCiAgICAicmVzdGFydD8iOiJyZXN0YXJ0IgogIH0sCiAgaGVscF9jczoKICAgICJQcmV6ZW50YWNpIG3Fr8W+ZXRlIHByb2Now6F6ZXQgcG9tb2PDrSBrbGlrbnV0w60gbXnFoWksIG1lemVybsOta3UsICIgKwogICAgIsWhaXBlayB2bGV2byBhIHZwcmF2byBuZWJvIGtsw6F2ZXMgUGFnZVVwIGEgUGFnZURvd24uIFDDrXNtbyBzZSAiICsKICAgICJkw6EgenbEm3TFoWl0IGEgem1lbsWhaXQgcG9tb2PDrSBrbMOhdmVzIEIgYSBTLiIsCgogIHN0cmluZ3Nfbmw6IHsKICAgICJzbGlkZSI6InBhZ2luYSIsCiAgICAiaGVscD8iOiJIZWxwPyIsCiAgICAiY29udGVudHM/IjoiSW5ob3VkPyIsCiAgICAidGFibGUgb2YgY29udGVudHMiOiJpbmhvdWRzb3BnYXZlIiwKICAgICJUYWJsZSBvZiBDb250ZW50cyI6IkluaG91ZHNvcGdhdmUiLAogICAgInJlc3RhcnQgcHJlc2VudGF0aW9uIjoiaGVyc3RhcnQgcHJlc2VudGF0aWUiLAogICAgInJlc3RhcnQ/IjoiSGVyc3RhcnQ/IgogIH0sCiAgaGVscF9ubDoKICAgICAiTmF2aWdlZXIgZC5tLnYuIGhldCBtdWlzLCBzcGF0aWViYXIsIExpbmtzL1JlY2h0cyB0b2V0c2VuLCAiICsKICAgICAib2YgUGdVcCBlbiBQZ0RuLiBHZWJydWlrIFMgZW4gQiBvbSBkZSBrYXJha3Rlcmdyb290dGUgdGUgdmVyYW5kZXJlbi4iLAoKICBzdHJpbmdzX2RlOiB7CiAgICAic2xpZGUiOiJTZWl0ZSIsCiAgICAiaGVscD8iOiJIaWxmZSIsCiAgICAiY29udGVudHM/Ijoiw5xiZXJzaWNodCIsCiAgICAidGFibGUgb2YgY29udGVudHMiOiJJbmhhbHRzdmVyemVpY2huaXMiLAogICAgIlRhYmxlIG9mIENvbnRlbnRzIjoiSW5oYWx0c3ZlcnplaWNobmlzIiwKICAgICJyZXN0YXJ0IHByZXNlbnRhdGlvbiI6IlByw6RzZW50YXRpb24gbmV1IHN0YXJ0ZW4iLAogICAgInJlc3RhcnQ/IjoiTmV1c3RhcnQiCiAgfSwKICBoZWxwX2RlOgogICAgIkJlbnV0emVuIFNpZSBkaWUgTWF1cywgTGVlcnNjaGxhZywgZGllIEN1cnNvcnRhc3RlbiBsaW5rcy9yZWNodHMgb2RlciAiICsKICAgICJQYWdlIHVwL1BhZ2UgRG93biB6dW0gV2VjaHNlbG4gZGVyIFNlaXRlbiB1bmQgUyB1bmQgQiBmw7xyIGRpZSBTY2hyaWZ0Z3LDtnNzZS4iLAoKICBzdHJpbmdzX3BsOiB7CiAgICAic2xpZGUiOiJzbGFqZCIsCiAgICAiaGVscD8iOiJwb21vYz8iLAogICAgImNvbnRlbnRzPyI6InNwaXMgdHJlxZtjaT8iLAogICAgInRhYmxlIG9mIGNvbnRlbnRzIjoic3BpcyB0cmXFm2NpIiwKICAgICJUYWJsZSBvZiBDb250ZW50cyI6IlNwaXMgVHJlxZtjaSIsCiAgICAicmVzdGFydCBwcmVzZW50YXRpb24iOiJSZXN0YXJ0dWogcHJlemVudGFjasSZIiwKICAgICJyZXN0YXJ0PyI6InJlc3RhcnQ/IgogIH0sCiAgaGVscF9wbDoKICAgICJabWllbmlhaiBzbGFqZHkga2xpa2FqxIVjIG15c3rEhSwgbmFjaXNrYWrEhWMgc3BhY2rEmSwgc3RyemHFgmtpIGxld28vcHJhd28iICsKICAgICJsdWIgUGdVcCAvIFBnRG4uIFXFvHlqIGtsYXdpc3p5IFMgaSBCLCBhYnkgem1pZW5pxIcgcm96bWlhciBjemN6aW9ua2kuIiwKCiAgc3RyaW5nc19mcjogewogICAgInNsaWRlIjoicGFnZSIsCiAgICAiaGVscD8iOiJBaWRlIiwKICAgICJjb250ZW50cz8iOiJJbmRleCIsCiAgICAidGFibGUgb2YgY29udGVudHMiOiJ0YWJsZSBkZXMgbWF0acOocmVzIiwKICAgICJUYWJsZSBvZiBDb250ZW50cyI6IlRhYmxlIGRlcyBtYXRpw6hyZXMiLAogICAgInJlc3RhcnQgcHJlc2VudGF0aW9uIjoiUmVjb21tZW5jZXIgbCdleHBvc8OpIiwKICAgICJyZXN0YXJ0PyI6IkTDqWJ1dCIKICB9LAogIGhlbHBfZnI6CiAgICAiTmF2aWd1ZXogYXZlYyBsYSBzb3VyaXMsIGxhIGJhcnJlIGQnZXNwYWNlLCBsZXMgZmzDqGNoZXMgIiArCiAgICAiZ2F1Y2hlL2Ryb2l0ZSBvdSBsZXMgdG91Y2hlcyBQZyBVcCwgUGcgRG4uIFV0aWxpc2V6ICIgKwogICAgImxlcyB0b3VjaGVzIFMgZXQgQiBwb3VyIG1vZGlmaWVyIGxhIHRhaWxsZSBkZSBsYSBwb2xpY2UuIiwKCiAgc3RyaW5nc19odTogewogICAgInNsaWRlIjoib2xkYWwiLAogICAgImhlbHA/Ijoic2Vnw610c8OpZyIsCiAgICAiY29udGVudHM/IjoidGFydGFsb20iLAogICAgInRhYmxlIG9mIGNvbnRlbnRzIjoidGFydGFsb21qZWd5esOpayIsCiAgICAiVGFibGUgb2YgQ29udGVudHMiOiJUYXJ0YWxvbWplZ3l6w6lrIiwKICAgICJyZXN0YXJ0IHByZXNlbnRhdGlvbiI6ImJlbXV0YXTDsyDDumpyYWluZMOtdMOhc2EiLAogICAgInJlc3RhcnQ/Ijoiw7pqcmFpbmTDrXTDoXMiCiAgfSwKICBoZWxwX2h1OgogICAgIkF6IG9sZGFsYWsga8O2enRpIGzDqXBrZWTDqXNoZXoga2F0dGludHNvbiBheiBlZ8OpcnJlbCwgdmFneSAiICsKICAgICJoYXN6bsOhbGphIGEgc3rDs2vDtnosIGEgYmFsLCB2YWd5IGEgam9iYiBuecOtbCwgaWxsZXR2ZSBhIFBhZ2UgRG93biwgIiArCiAgICAiUGFnZSBVcCBiaWxsZW50ecWxa2V0LiBBeiBTIMOpcyBhIEIgYmlsbGVudHnFsWtrZWwgdsOhbHRvenRhdGhhdGphICIgKwogICAgImEgc3rDtnZlZyBtw6lyZXTDqXQuIiwKCiAgc3RyaW5nc19pdDogewogICAgInNsaWRlIjoicGFnLiIsCiAgICAiaGVscD8iOiJBaXV0byIsCiAgICAiY29udGVudHM/IjoiSW5kaWNlIiwKICAgICJ0YWJsZSBvZiBjb250ZW50cyI6ImluZGljZSIsCiAgICAiVGFibGUgb2YgQ29udGVudHMiOiJJbmRpY2UiLAogICAgInJlc3RhcnQgcHJlc2VudGF0aW9uIjoiUmljb21pbmNpYXJlIGxhIHByZXNlbnRhemlvbmUiLAogICAgInJlc3RhcnQ/IjoiSW5pemlvIgogIH0sCiAgaGVscF9pdDoKICAgICJOYXZpZ2FyZSBjb24gbW91c2UsIGJhcnJhIHNwYXppbywgZnJlY2NlIHNpbmlzdHJhL2Rlc3RyYSBvICIgKwogICAgIlBnVXAgZSBQZ0RuLiBVc2FyZSBTIGUgQiBwZXIgY2FtYmlhcmUgbGEgZGltZW5zaW9uZSBkZWkgY2FyYXR0ZXJpLiIsCgogIHN0cmluZ3NfZWw6IHsKICAgICJzbGlkZSI6Is+DzrXOu86vzrTOsSIsCiAgICAiaGVscD8iOiLOss6/zq7OuM61zrnOsTsiLAogICAgImNvbnRlbnRzPyI6Is+AzrXPgc65zrXPh8+MzrzOtc69zrE7IiwKICAgICJ0YWJsZSBvZiBjb250ZW50cyI6Is+Azq/Ovc6xzrrOsc+CIM+AzrXPgc65zrXPh86/zrzOrc69z4nOvSIsCiAgICAiVGFibGUgb2YgQ29udGVudHMiOiLOoM6vzr3Osc66zrHPgiDOoM61z4HOuc61z4fOv868zq3Ovc+Jzr0iLAogICAgInJlc3RhcnQgcHJlc2VudGF0aW9uIjoizrXPgM6xzr3Otc66zrrOr869zrfPg863IM+AzrHPgc6/z4XPg86vzrHPg863z4IiLAogICAgInJlc3RhcnQ/IjoizrXPgM6xzr3Otc66zrrOr869zrfPg863OyIKICB9LAogIGhlbHBfZWw6CiAgICAizqDOu86/zrfOs863zrjOtc6vz4TOtSDOvM61IM+Ezr8gzrrOu86vzrogz4TOv8+FIM+Azr/Ovc+EzrnOus65zr/PjSwgz4TOvyBzcGFjZSwgz4TOsSDOss6tzrvOtyDOsc+BzrnPg8+EzrXPgc6sL860zrXOvs65zqwsICIgKwogICAgIs6uIFBhZ2UgVXAgzrrOsc65IFBhZ2UgRG93bi4gzqfPgc63z4POuc68zr/PgM6/zrnOrs+Dz4TOtSDPhM6xIM+AzrvOrs66z4TPgc6xIFMgzrrOsc65IEIgzrPOuc6xIM69zrEgzrHOu867zqzOvs61z4TOtSAiICsKICAgICLPhM6/IM68zq3Os861zrjOv8+CIM+EzrfPgiDOs8+BzrHOvM68zrHPhM6/z4POtc65z4HOrM+CLiIsCgogIHN0cmluZ3NfamE6IHsKICAgICJzbGlkZSI6IuOCueODqeOCpOODiSIsCiAgICAiaGVscD8iOiLjg5jjg6vjg5ciLAogICAgImNvbnRlbnRzPyI6IuebruasoSIsCiAgICAidGFibGUgb2YgY29udGVudHMiOiLnm67mrKHjgpLooajnpLoiLAogICAgIlRhYmxlIG9mIENvbnRlbnRzIjoi55uu5qyhIiwKICAgICJyZXN0YXJ0IHByZXNlbnRhdGlvbiI6IuacgOWIneOBi+OCieWGjeeUnyIsCiAgICAicmVzdGFydD8iOiLmnIDliJ3jgYvjgokiCiAgfSwKICBoZWxwX2phOgogICAgICLjg57jgqbjgrnlt6bjgq/jg6rjg4Pjgq8g44O7IOOCueODmuODvOOCuSDjg7sg5bem5Y+z44Kt44O8ICIgKwogICAgICLjgb7jgZ/jga8gUGFnZSBVcCDjg7sgUGFnZSBEb3du44Gn5pON5L2c77yMIFMg44O7IELjgafjg5Xjgqnjg7Pjg4jjgrXjgqTjgrrlpInmm7QiLAoKICBzdHJpbmdzX3poOiB7CiAgICAic2xpZGUiOiLlubvnga/niYciLAogICAgImhlbHA/Ijoi5biu5YqpPyIsCiAgICAiY29udGVudHM/Ijoi5YaF5a65PyIsCiAgICAidGFibGUgb2YgY29udGVudHMiOiLnm67lvZUiLAogICAgIlRhYmxlIG9mIENvbnRlbnRzIjoi55uu5b2VIiwKICAgICJyZXN0YXJ0IHByZXNlbnRhdGlvbiI6IumHjeaWsOWQr+WKqOWxleekuiIsCiAgICAicmVzdGFydD8iOiLph43mlrDlkK/liqg/IgogIH0sCiAgaGVscF96aDoKICAgICLnlKjpvKDmoIfngrnlh7ssIOepuuagvOadoSwg5bem5Y+z566t5aS0LCBQZyBVcCDlkowgUGcgRG4g5a+86IiqLiAiICsKICAgICLnlKggUywgQiDmlLnlj5jlrZfkvZPlpKflsI8uIiwKCiAgc3RyaW5nc19ydTogewogICAgInNsaWRlIjoi0YHQu9Cw0LnQtCIsCiAgICAiaGVscD8iOiLQv9C+0LzQvtGJ0Yw/IiwKICAgICJjb250ZW50cz8iOiLRgdC+0LTQtdGA0LbQsNC90LjQtT8iLAogICAgInRhYmxlIG9mIGNvbnRlbnRzIjoi0L7Qs9C70LDQstC70LXQvdC40LUiLAogICAgIlRhYmxlIG9mIENvbnRlbnRzIjoi0J7Qs9C70LDQstC70LXQvdC40LUiLAogICAgInJlc3RhcnQgcHJlc2VudGF0aW9uIjoi0L/QtdGA0LXQt9Cw0L/Rg9GB0YLQuNGC0Ywg0L/RgNC10LfQtdC90YLQsNGG0LjRjiIsCiAgICAicmVzdGFydD8iOiLQv9C10YDQtdC30LDQv9GD0YHQuj8iCiAgfSwKICBoZWxwX3J1OgogICAgItCf0LXRgNC10LzQtdGJ0LDQudGC0LXRgdGMINC60LvQuNC60LDRjyDQvNGL0YjQutC+0LksINC40YHQv9C+0LvRjNC30YPRjyDQutC70LDQstC40YjRgyDQv9GA0L7QsdC10LssINGB0YLRgNC10LvQutC4IiArCiAgICAi0LLQu9C10LLQvi/QstC/0YDQsNCy0L4g0LjQu9C4IFBnIFVwINC4IFBnIERuLiDQmtC70LDQstC40YjQuCBTINC4IEIg0LzQtdC90Y/RjtGCINGA0LDQt9C80LXRgCDRiNGA0LjRhNGC0LAuIiwKCiAgc3RyaW5nc19zdjogewogICAgInNsaWRlIjoic2lkYSIsCiAgICAiaGVscD8iOiJoasOkbHAiLAogICAgImNvbnRlbnRzPyI6ImlubmVow6VsbCIsCiAgICAidGFibGUgb2YgY29udGVudHMiOiJpbm5laMOlbGxzZsO2cnRlY2tuaW5nIiwKICAgICJUYWJsZSBvZiBDb250ZW50cyI6IklubmVow6VsbHNmw7ZydGVja25pbmciLAogICAgInJlc3RhcnQgcHJlc2VudGF0aW9uIjoidmlzYSBwcmVzZW50YXRpb25lbiBmcsOlbiBiw7ZyamFuIiwKICAgICJyZXN0YXJ0PyI6ImLDtnJqYSBvbSIKICB9LAogIGhlbHBfc3Y6CiAgICAiQmzDpGRkcmEgbWVkIGV0dCBrbGljayBtZWQgdsOkbnN0cmEgbXVza25hcHBlbiwgbWVsbGFuc2xhZ3N0YW5nZW50ZW4sICIgKwogICAgInbDpG5zdGVyLSBvY2ggaMO2Z2VycGlsdGFuZ2VudGVybmEgZWxsZXIgdGFuZ2VudGVybmEgUGcgVXAsIFBnIERuLiAiICsKICAgICJBbnbDpG5kIHRhbmdlbnRlcm5hIFMgb2NoIEIgZsO2ciBhdHQgw6RuZHJhIHRleHRlbnMgc3Rvcmxlay4iLAoKICBzdHJpbmdzOiB7IH0sCgogIGxvY2FsaXplOiBmdW5jdGlvbiAoc3JjKSB7CiAgICBpZiAoc3JjID09ICIiKQogICAgICByZXR1cm4gc3JjOwoKICAgICAvLyB0cnkgZnVsbCBsYW5ndWFnZSBjb2RlLCBlLmcuIGVuLVVTCiAgICAgdmFyIHMsIGxvb2t1cCA9IHczY19zbGlkeS5zdHJpbmdzW3czY19zbGlkeS5sYW5nXTsKCiAgICAgaWYgKGxvb2t1cCkKICAgICB7CiAgICAgICBzID0gbG9va3VwW3NyY107CgogICAgICAgaWYgKHMpCiAgICAgICAgcmV0dXJuIHM7CiAgICAgfQoKICAgICAvLyBzdHJpcCBjb3VudHJ5IGNvZGUgc3VmZml4LCBlLmcuCiAgICAgLy8gdHJ5IGVuIGlmIHVuZGVmaW5lZCBmb3IgZW4tVVMKICAgICB2YXIgbGcgPSB3M2Nfc2xpZHkubGFuZy5zcGxpdCgiLSIpOwoKICAgICBpZiAobGcubGVuZ3RoID4gMSkKICAgICB7CiAgICAgICBsb29rdXAgPSB3M2Nfc2xpZHkuc3RyaW5nc1tsZ1swXV07CgogICAgICAgaWYgKGxvb2t1cCkKICAgICAgIHsKICAgICAgICAgcyA9IGxvb2t1cFtzcmNdOwoKICAgICAgICAgaWYgKHMpCiAgICAgICAgICByZXR1cm4gczsKICAgICAgIH0KICAgICB9CgogICAgIC8vIG90aGVyd2lzZSBzdHJpbmcgYXMgaXMKICAgICByZXR1cm4gc3JjOwogIH0sCgogIGluaXRfbG9jYWxpemF0aW9uOiBmdW5jdGlvbiAoKSB7CiAgICB2YXIgaTE4biA9IHczY19zbGlkeTsKICAgIHZhciBoZWxwX3RleHQgPSB3M2Nfc2xpZHkuaGVscF90ZXh0OwoKICAgIC8vIGVhY2ggc3VjaCBsYW5ndWFnZSBhcnJheSBpcyBkZWNsYXJlZCBpbiB0aGUgbG9jYWxpemUgYXJyYXkKICAgIC8vIHRoaXMgaXMgdXNlZCBhcyBpbiAgdzNjX3NsaWR5LmxvY2FsaXplKCJmb28iKTsKICAgIHRoaXMuc3RyaW5ncyA9IHsKICAgICAgImVzIjp0aGlzLnN0cmluZ3NfZXMsCiAgICAgICJjYSI6dGhpcy5zdHJpbmdzX2NhLAogICAgICAiY3MiOnRoaXMuc3RyaW5nc19jcywKICAgICAgIm5sIjp0aGlzLnN0cmluZ3NfbmwsCiAgICAgICJkZSI6dGhpcy5zdHJpbmdzX2RlLAogICAgICAicGwiOnRoaXMuc3RyaW5nc19wbCwKICAgICAgImZyIjp0aGlzLnN0cmluZ3NfZnIsCiAgICAgICJodSI6dGhpcy5zdHJpbmdzX2h1LAogICAgICAiaXQiOnRoaXMuc3RyaW5nc19pdCwKICAgICAgImVsIjp0aGlzLnN0cmluZ3NfZWwsCiAgICAgICJqcCI6dGhpcy5zdHJpbmdzX2phLAogICAgICAiemgiOnRoaXMuc3RyaW5nc196aCwKICAgICAgInJ1Ijp0aGlzLnN0cmluZ3NfcnUsCiAgICAgICJzdiI6dGhpcy5zdHJpbmdzX3N2CiAgICB9LAoKICAgIGkxOG4uc3RyaW5nc19lc1toZWxwX3RleHRdID0gaTE4bi5oZWxwX2VzOwogICAgaTE4bi5zdHJpbmdzX2NhW2hlbHBfdGV4dF0gPSBpMThuLmhlbHBfY2E7CiAgICBpMThuLnN0cmluZ3NfY3NbaGVscF90ZXh0XSA9IGkxOG4uaGVscF9jczsKICAgIGkxOG4uc3RyaW5nc19ubFtoZWxwX3RleHRdID0gaTE4bi5oZWxwX25sOwogICAgaTE4bi5zdHJpbmdzX2RlW2hlbHBfdGV4dF0gPSBpMThuLmhlbHBfZGU7CiAgICBpMThuLnN0cmluZ3NfcGxbaGVscF90ZXh0XSA9IGkxOG4uaGVscF9wbDsKICAgIGkxOG4uc3RyaW5nc19mcltoZWxwX3RleHRdID0gaTE4bi5oZWxwX2ZyOwogICAgaTE4bi5zdHJpbmdzX2h1W2hlbHBfdGV4dF0gPSBpMThuLmhlbHBfaHU7CiAgICBpMThuLnN0cmluZ3NfaXRbaGVscF90ZXh0XSA9IGkxOG4uaGVscF9pdDsKICAgIGkxOG4uc3RyaW5nc19lbFtoZWxwX3RleHRdID0gaTE4bi5oZWxwX2VsOwogICAgaTE4bi5zdHJpbmdzX2phW2hlbHBfdGV4dF0gPSBpMThuLmhlbHBfamE7CiAgICBpMThuLnN0cmluZ3NfemhbaGVscF90ZXh0XSA9IGkxOG4uaGVscF96aDsKICAgIGkxOG4uc3RyaW5nc19ydVtoZWxwX3RleHRdID0gaTE4bi5oZWxwX3J1OwogICAgaTE4bi5zdHJpbmdzX3N2W2hlbHBfdGV4dF0gPSBpMThuLmhlbHBfc3Y7CgogICAgdzNjX3NsaWR5LmxhbmcgPSBkb2N1bWVudC5ib2R5LnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCJsYW5nIik7CgogICAgaWYgKCF3M2Nfc2xpZHkubGFuZykKICAgICAgdzNjX3NsaWR5LmxhbmcgPSBkb2N1bWVudC5ib2R5LnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpOwoKICAgIGlmICghdzNjX3NsaWR5LmxhbmcpCiAgICAgIHczY19zbGlkeS5sYW5nID0gImVuIjsKICB9Cn07CgovLyBoYWNrIGZvciBiYWNrIGJ1dHRvbiBiZWhhdmlvcgppZiAodzNjX3NsaWR5LmllNiB8fCB3M2Nfc2xpZHkuaWU3KQp7CiAgZG9jdW1lbnQud3JpdGUoIjxpZnJhbWUgaWQ9J2hpc3RvcnlGcmFtZScgIiArCiAgInNyYz0namF2YXNjcmlwdDpcIjxodG1sIisiPjwvIisiaHRtbD5cIicgIiArCiAgImhlaWdodD0nMScgd2lkdGg9JzEnICIgKwogICJzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7bGVmdDotODAwcHgnPjwvaWZyYW1lPiIpOwp9CgovLyBhdHRhY2ggZXZlbnQgbGlzdGVuZXJzIGZvciBpbml0aWFsaXphdGlvbgp3M2Nfc2xpZHkuc2V0X3VwKCk7CgovLyBoaWRlIHRoZSBzbGlkZXMgYXMgc29vbiBhcyBib2R5IGVsZW1lbnQgaXMgYXZhaWxhYmxlCi8vIHRvIHJlZHVjZSBhbm5veWluZyBzY3JlZW4gbWVzcyBiZWZvcmUgdGhlIG9ubG9hZCBldmVudApzZXRUaW1lb3V0KHczY19zbGlkeS5oaWRlX3NsaWRlcywgNTApOwoK"></script>
<link href="data:text/css;charset=utf-8,h1%20%7B%0Acolor%3A%20black%3B%0A%7D%0Ah2%20%7B%0Acolor%3A%20black%3B%0A%7D%0Ah3%20%7B%0Acolor%3A%20black%3B%0A%7D%0Aa%20%7B%0Acolor%3A%20steelblue%3B%0A%7D%0Abody%7B%20%0Afont%2Dsize%3A%2032px%3B%0Afont%2Dfamily%3A%20Helvetica%2C%20arial%2C%20sans%2Dserif%3B%0Aline%2Dheight%3A%201%2E45%3B%0A%7D%0Apre%20%7B%0Afont%2Dfamily%3A%20%22SFMono%2DRegular%22%2C%20Consolas%2C%20%22Liberation%20Mono%22%2C%20Menlo%2C%20Courier%2C%20monospace%3B%0A%7D%0Acode%20%7B%0Afont%2Dsize%3A%2090%25%3B%0Amargin%2Dtop%3A%200%3B%0Amargin%2Dbottom%3A%200%3B%0Aoverflow%3A%20auto%3B%0Afont%2Dsize%3A%2090%25%3B%0Aline%2Dheight%3A%201%2E45%3B%0Aborder%2Dradius%3A%205px%3B%0A%7D%0Apre%20%7B%0Amargin%2Dtop%3A%200%3B%0Amargin%2Dbottom%3A%200%3B%0Aoverflow%3A%20auto%3B%0Afont%2Dsize%3A%2090%25%3B%0Aline%2Dheight%3A%201%2E45%3B%0Aborder%3A%200%3B%0Apadding%3A%2016px%3B%0Aborder%2Dradius%3A%205px%3B%0Amargin%2Dtop%3A%2016px%3B%0Amargin%2Dbottom%3A%2018px%3B%0Apadding%2Dtop%3A%2012px%3B%0Apadding%2Dbottom%3A%2012px%3B%0A%7D%0Apre%3Anot%28%5Bclass%5D%29%20%7B%0Aborder%3A%201%3B%0Afont%2Dweight%3A%20bold%3B%0Abackground%2Dcolor%3A%20%23F0F0F0%0A%7D%0Acode%20%7B%0Aborder%3A%201%3B%0Abackground%2Dcolor%3A%20%23F0F0F0%0Afont%2Dweight%3A%20bold%3B%0Afont%2Dfamily%3A%20%22SFMono%2DRegular%22%2C%20Consolas%2C%20%22Liberation%20Mono%22%2C%20Menlo%2C%20Courier%2C%20monospace%3B%0A%7D%0Acode%3Anot%28%5Bclass%5D%29%20%7B%0Abackground%2Dcolor%3A%20%23F0F0F0%0Afont%2Dfamily%3A%20Consolas%2C%20Menlo%2C%20Courier%2C%20monospace%3B%0Afont%2Dweight%3A%20bold%3B%0A%7D%0A%2EsourceCode%2Er%20%7B%0Afont%2Dfamily%3A%20Consolas%2C%20%22Liberation%20Mono%22%2C%20Menlo%2C%20Courier%2C%20monospace%3B%0Afont%2Dsize%3A%2095%25%3B%0Abackground%2Dcolor%3A%20%23f6f8fa%3B%0A%7D%0A%2EsourceCode%2Ec%20%7B%0Afont%2Dfamily%3A%20Consolas%2C%20%22Liberation%20Mono%22%2C%20Menlo%2C%20Courier%2C%20monospace%3B%0Afont%2Dsize%3A%2095%25%3B%0Abackground%2Dcolor%3A%20%23f6f8fa%3B%0Acolor%3A%20black%3B%0A%7D%0A%2Eslide%2Esection%20%7B%0Aline%2Dheight%3A%201%2E1%3B%0Amargin%2Dleft%3A%2050px%3B%0Amargin%2Dright%3A%2050px%3B%0Afont%2Dsize%3A%2036px%3B%0A%7D%0A%2Eslide%2Etitlepage%20%7B%0Afont%2Dsize%3A%2048px%3B%0A%7D%0A%2Ealert%20%7B%0Acolor%3A%20firebrick%3B%0Afont%2Dweight%3A%20bold%3B%0Afont%2Dfamily%3A%20Consolas%2C%20%22Liberation%20Mono%22%2C%20Menlo%2C%20Courier%2C%20monospace%3B%0A%7D%0A%2Edefout%20%7B%0Abackground%2Dcolor%3A%20%23F7F9F9%3B%0Afont%2Dweight%3A%20normal%3B%0Acolor%3A%20black%3B%0Aborder%3A%205px%3B%0Amargin%2Dtop%3A%2016px%3B%0Amargin%2Dbottom%3A%2018px%3B%0Apadding%2Dtop%3A%2012px%3B%0Apadding%2Dbottom%3A%2012px%3B%0Afont%2Dsize%3A%2075%25%3B%0A%7D%0A%2Emypre%20%7B%0Acolor%3A%20darkslateblue%3B%0Abackground%2Dcolor%3A%20%23f6f8fa%3B%0A%7D%0Aalrt%20%7B%0Acolor%3A%20firebrick%3B%0Afont%2Dweight%3A%20bold%3B%0Afont%2Dfamily%3A%20Consolas%2C%20%22Liberation%20Mono%22%2C%20Menlo%2C%20Courier%2C%20monospace%3B%0A%7D%0Adsb%20%7B%0Acolor%3A%20darkslateblue%3B%0Afont%2Dweight%3A%20bold%3B%0Afont%2Dfamily%3A%20Consolas%2C%20%22Liberation%20Mono%22%2C%20Menlo%2C%20Courier%2C%20monospace%3B%0A%7D%0A%2Ecolumn%2Dleft%7B%0Afloat%3A%20left%3B%0Awidth%3A%2050%25%3B%0Atext%2Dalign%3A%20left%3B%0A%7D%0A%2Ecolumn%2Dcenter%7B%0Adisplay%3A%20inline%2Dblock%3B%0Awidth%3A%2033%25%3B%0Atext%2Dalign%3A%20center%3B%0A%7D%0A%2Ecolumn%2Dright%7B%0Afloat%3A%20right%3B%0Awidth%3A%2050%25%3B%0Atext%2Dalign%3A%20left%3B%0A%7D" rel="stylesheet" type="text/css" media="screen, projection, print" />
<link href="data:text/css;charset=utf-8,red%20%7B%0Acolor%3A%20firebrick%3B%0Afont%2Dweight%3A%20bold%3B%0Afont%2Dfamily%3A%20Consolas%2C%20%22Liberation%20Mono%22%2C%20Menlo%2C%20Courier%2C%20monospace%3B%0A%7D%0Ablu%20%7B%0Acolor%3A%20darkslateblue%3B%0Afont%2Dweight%3A%20bold%3B%0Afont%2Dfamily%3A%20Consolas%2C%20%22Liberation%20Mono%22%2C%20Menlo%2C%20Courier%2C%20monospace%3B%0A%7D%0Agrn%20%7B%0Acolor%3A%20darkgreen%3B%0Afont%2Dweight%3A%20bold%3B%0Afont%2Dfamily%3A%20Consolas%2C%20%22Liberation%20Mono%22%2C%20Menlo%2C%20Courier%2C%20monospace%3B%0A%7D%0Aorng%20%7B%0Acolor%3A%20DarkOrange%3B%0Afont%2Dweight%3A%20bold%3B%0Afont%2Dfamily%3A%20Consolas%2C%20%22Liberation%20Mono%22%2C%20Menlo%2C%20Courier%2C%20monospace%3B%0A%7D%0Ablk%20%7B%0Acolor%3A%20black%3B%0Afont%2Dweight%3A%20bold%3B%0Afont%2Dfamily%3A%20Consolas%2C%20%22Liberation%20Mono%22%2C%20Menlo%2C%20Courier%2C%20monospace%3B%0A%7D%0Agold%20%7B%0Acolor%3A%20GoldenRod%3B%0Afont%2Dweight%3A%20bold%3B%0Afont%2Dfamily%3A%20Consolas%2C%20%22Liberation%20Mono%22%2C%20Menlo%2C%20Courier%2C%20monospace%3B%0A%7D%0Apurp%20%7B%0Acolor%3A%20Purple%3B%0Afont%2Dweight%3A%20bold%3B%0Afont%2Dfamily%3A%20Consolas%2C%20%22Liberation%20Mono%22%2C%20Menlo%2C%20Courier%2C%20monospace%3B%0A%7D%0A%2Ered%20%7B%0Acolor%3A%20firebrick%3B%0A%7D%0A" rel="stylesheet" type="text/css" media="screen, projection, print" />
</head>
<body>
<div class="slide titlepage">
<h1 class="title">Introduction to <grn>mrgsolve</grn><BR>Models and Events</h1>
<p class="author">
Kyle T. Baron
</p>
<p class="date">Metrum Research Group, LLC</p>
</div>
<div class="slide section level1">
<pre><code>. Warning: package 'bindrcpp' was built under R version 3.3.3</code></pre>
</div>
<div id="a-basic-simulation-with-mrgsolve" class="slide section level1">
<h1>A basic simulation with mrgsolve</h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">100</span>, <span class="dt">ii =</span> <span class="dv">24</span>, <span class="dt">addl =</span> <span class="dv">3</span>) %>%<span class="st"> </span><span class="kw">mrgsim</span>() %>%<span class="st"> </span><span class="kw">plot</span>()</code></pre></div>
<p><img src="data:image/png;base64,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" width="864" /></p>
</div>
<div id="a-basic-simulation-with-mrgsolve-1" class="slide section level1">
<h1>A basic simulation with mrgsolve</h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">100</span>, <span class="dt">ii =</span> <span class="dv">24</span>, <span class="dt">addl =</span> <span class="dv">3</span>) %>%<span class="st"> </span><span class="kw">mrgsim</span>() %>%<span class="st"> </span><span class="kw">plot</span>()</code></pre></div>
<ul>
<li><red>mod</red>: the model object
<ul>
<li>Ok … where did <code>that</code> come from?</li>
</ul></li>
<li><blu>ev(amt = 100, …)</blu> : the intervention
<ul>
<li>An <code>event</code> in this example</li>
</ul></li>
<li><grn>mrgsim()</grn>: actually do the simulation</li>
<li><orng>plot()</orng>: do something with the simulation
<ul>
<li><code>plot</code>, <code>mutate</code>, <code>as_data_frame</code> etc …</li>
</ul></li>
</ul>
<ul class="incremental">
<li><red>model</red> <code>%>%</code> <blu>intervention</blu> <code>%>%</code> <grn>Go!</grn> <code>%>%</code> <orng>take-a-look</orng></li>
</ul>
</div>
<div id="whats-coming" class="slide section level1">
<h1>What’s coming …</h1>
<ul class="incremental">
<li><code>model %>% intervention %>%</code> <alrt>options</alrt> <code>%>% Go! %>% ...</code></li>
</ul>
<ul class="incremental">
<li><code>model %>% intervention %>%</code> <orng>population</orng> <code>%>% Go! %>% ...</code></li>
</ul>
<ul class="incremental">
<li><code>model %>%</code> <purp>data-set</purp> <code>%>% Go! %>% ...</code></li>
</ul>
<ul class="incremental">
<li>where <purp>data-set</purp> = <code>intervention + population</code></li>
</ul>
<ul class="incremental">
<li>For now, let’s get this part down</li>
</ul>
<ul class="incremental">
<li><red>model</red> <code>%>%</code> <blu>intervention</blu> <code>%>%</code> <grn>Go!</grn> <code>%>%</code> <orng>take-a-look<orng></li>
</ul>
</div>
<div id="why-do-we-use" class="slide section level1">
<h1>Why do we use <code>%>%</code> ?</h1>
<p>What happens first in this operation?</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">mean</span>(<span class="kw">sqrt</span>(<span class="kw">seq</span>(<span class="dv">4</span>)))</code></pre></div>
</div>
<div id="pipelines" class="slide section level1">
<h1>Pipelines</h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">mean</span>(<span class="kw">sqrt</span>(<span class="kw">seq</span>(<span class="dv">4</span>)))</code></pre></div>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="dv">4</span> %>%<span class="st"> </span><span class="kw">seq</span>() %>%<span class="st"> </span><span class="kw">sqrt</span>() %>%<span class="st"> </span><span class="kw">mean</span>()</code></pre></div>
<p>Better.</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="dv">4</span> %>%<span class="st"> </span>
<span class="st"> </span><span class="kw">seq</span>(.) %>%<span class="st"> </span>
<span class="st"> </span><span class="kw">sqrt</span>(.) %>%<span class="st"> </span>
<span class="st"> </span><span class="kw">mean</span>(., <span class="dt">na.rm =</span> <span class="ot">TRUE</span>)</code></pre></div>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">some_intervention</span>() %>%<span class="st"> </span><span class="kw">simulate</span>() %>%<span class="st"> </span><span class="kw">post_process</span>()</code></pre></div>
</div>
<div id="the-model-object" class="slide section level1">
<h1>The model object</h1>
<p><red>mod</red><blk>el</blk> <code>%>% ...</code></p>
<ul class="incremental">
<li>I (almost) always call the model object <red>mod</red> in the documention / examples</li>
</ul>
<ul class="incremental">
<li>All the information about the model we need to know to run the simulation</li>
</ul>
<ul class="incremental">
<li><grn>Distinct</grn> from the intervention, the population, the summary</li>
</ul>
<ul class="incremental">
<li>But the model <orng>does</orng> know about output time, random effects</li>
</ul>
</div>
<div id="take-a-look-overview" class="slide section level1">
<h1>Take a look: overview</h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod</code></pre></div>
<pre><code>
-------- mrgsolve model object (windows) --------
Project: C:/Program Files/R/R-3.3.1/library/mrgsolve/models
source: pk1.cpp
shared object: pk1-so-25882f5d660e
compile date:
Time: start: 0 end: 192 delta: 0.2
> add: <none>
> tscale: 1
Compartments: EV CENT [2]
Parameters: CL V KA [3]
Omega: 0x0
Sigma: 0x0
Solver: atol: 1e-08 rtol: 1e-08
> maxsteps: 2000 hmin: 0 hmax: 0</code></pre>
</div>
<div id="take-a-look-parameters-really-important" class="slide section level1">
<h1>Take a look: parameters (<red>really important</red>)</h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">param</span>(mod)</code></pre></div>
<pre><code>
Model parameters (N=3):
name value . name value
CL 1 | V 20
KA 1 | . . </code></pre>
<ul class="incremental">
<li>Parameters get a name</li>
<li>Names and number of parameters gets fixed at compile time</li>
<li>All parameters have a value</li>
<li>Value can be modified after compile time</li>
</ul>
</div>
<div id="take-a-look-compartments" class="slide section level1">
<h1>Take a look: compartments</h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">init</span>(mod)</code></pre></div>
<pre><code>
Model initial conditions (N=2):
name value . name value
CENT (2) 0 | EV (1) 0 </code></pre>
<ul class="incremental">
<li>Every compartment gets a name</li>
<li>Every compartment gets an initial condition</li>
</ul>
</div>
<div id="where-did-mod-come-from" class="slide section level1">
<h1>Where did <red>mod</red> come from?</h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod <-<span class="st"> </span><span class="kw">mread</span>(<span class="st">"simple"</span>, <span class="st">"model"</span>)</code></pre></div>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod <-<span class="st"> </span><span class="kw">mread</span>(<span class="st">"<model-name>"</span>, <span class="st">"<project-directory>"</span>)</code></pre></div>
<ul>
<li>By default mrgsolve looks for the code in the file
<ul>
<li><grn>model-name.cpp</grn> in</li>
<li><blu>project-directory</blu></li>
</ul></li>
<li><red>mread demo</red></li>
</ul>
</div>
<div id="read-in-a-model-object-with-caching" class="slide section level1">
<h1>Read in a model object with caching</h1>
<p>First time to read</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod <-<span class="st"> </span><span class="kw">mread_cache</span>(<span class="st">"simple"</span>, <span class="st">"model"</span>)</code></pre></div>
<pre><code>. Compiling simple ...</code></pre>
<pre><code>. done.</code></pre>
<p>Next time to read</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod <-<span class="st"> </span><span class="kw">mread_cache</span>(<span class="st">"simple"</span>, <span class="st">"model"</span>)</code></pre></div>
<pre><code>. Loading model from cache.</code></pre>
</div>
<div id="oops" class="slide section level1">
<h1>Oops</h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod <-<span class="st"> </span><span class="kw">try</span>(<span class="kw">mread</span>(<span class="st">"simple"</span>))
mod</code></pre></div>
<pre><code>. [1] "Error : The model file simple.cpp does not exist.\n"
. attr(,"class")
. [1] "try-error"
. attr(,"condition")
. <simpleError: The model file simple.cpp does not exist.></code></pre>
</div>
<div id="internal-model-library" class="slide section level1">
<h1>Internal model library</h1>
<p>Quiz:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod <-<span class="st"> </span><span class="kw">mread</span>(<span class="st">"<first-argument>"</span>, <span class="st">"<second-argument>"</span>)</code></pre></div>
</div>
<div id="internal-model-library-1" class="slide section level1">
<h1>Internal model library</h1>
<p>Quiz:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod <-<span class="st"> </span><span class="kw">mread</span>(<span class="st">"<first-argument>"</span>, <span class="st">"<second-argument>"</span>)</code></pre></div>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod <-<span class="st"> </span><span class="kw">mread</span>(<span class="st">"<first-argument>"</span>, <span class="kw">modlib</span>())</code></pre></div>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">modlib</span>()</code></pre></div>
<pre><code>. [1] "C:/Program Files/R/R-3.3.1/library/mrgsolve/models"</code></pre>
</div>
<div id="internal-model-library-2" class="slide section level1">
<h1>Internal model library</h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod <-<span class="st"> </span><span class="kw">mread</span>(<span class="st">"effect"</span>, <span class="kw">modlib</span>())</code></pre></div>
<pre><code>. Compiling effect ...</code></pre>
<pre><code>. done.</code></pre>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod</code></pre></div>
<pre><code>.
.
. -------- mrgsolve model object (windows) --------
. Project: C:/Program Files/R/R-3.3.1/library/mrgsolve/models
. source: effect.cpp
. shared object: effect-so-25884fb522d5
.
. compile date:
. Time: start: 0 end: 36 delta: 0.1
. > add: <none>
. > tscale: 1
.
. Compartments: GUT CENT PERIPH CE [4]
. Parameters: VC KA K10 K12 K21 E0
. > EMAX EC50 KEO [9]
. Omega: 0x0
. Sigma: 0x0
.
. Solver: atol: 1e-08 rtol: 1e-08
. > maxsteps: 2000 hmin: 0 hmax: 0</code></pre>
</div>
<div id="inline-model-specification" class="slide section level1">
<h1>Inline model specification</h1>
<p>We <red>haven’t covered</red> the specifics of coding a model yet</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">code <-<span class="st"> '</span>
<span class="st">$PARAM CL = 1, V = 20</span>
<span class="st">$PKMODEL cmt = "CENT"</span>
<span class="st">'</span></code></pre></div>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod <-<span class="st"> </span><span class="kw">mcode</span>(<span class="st">"dont_do_this"</span>, code)</code></pre></div>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod <-<span class="st"> </span><span class="kw">mcode_cache</span>(<span class="st">"seriously_dont"</span>, code)</code></pre></div>
<ul class="incremental">
<li><font class="red">Question:</font> Why is this a bad idea?</li>
</ul>
</div>
<div id="your-turn" class="slide section level1">
<h1><red>Your turn</red></h1>
<ul>
<li><p>File name: <grn>workbook.Rmd</grn></p></li>
<li><p>Section name: <blu>Warm Up</blu></p></li>
</ul>
</div>
<div id="event-objects" class="slide section level1">
<h1>Event objects</h1>
<ul>
<li><p><code>model %>%</code> <red>intervention</red> <code>%>% Go! %>% take-a-look</code></p></li>
<li><p>Event object = quick / easy way to implement dose or other intervention</p></li>
</ul>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">e <-<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">100</span>)
e</code></pre></div>
<pre><code>. Events:
. time cmt amt evid
. 1 0 1 100 1</code></pre>
<ul class="incremental">
<li>Defaults: <code>time</code>, <code>evid</code>, <code>cmt</code></li>
</ul>
</div>
<div id="three-ways-to-invoke" class="slide section level1">
<h1>Three ways to invoke</h1>
<p><blk>Inline</blk></p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">100</span>) %>%<span class="st"> </span><span class="kw">mrgsim</span>()</code></pre></div>
<p><blk>Object via pipeline</blk></p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">e <-<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">100</span>)
mod %>%<span class="st"> </span><span class="kw">ev</span>(e) %>%<span class="st"> </span><span class="kw">mrgsim</span>()</code></pre></div>
<p><blk>As argument</blk></p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">mrgsim</span>(<span class="dt">events =</span> e)</code></pre></div>
</div>
<div id="what-to-include-in-ev..." class="slide section level1">
<h1>What to include in <code>ev(...)</code></h1>
<ul>
<li><grn>time</grn> event time</li>
<li><grn>cmt</grn> Event compartment</li>
<li><grn>amt</grn> Dose amount</li>
<li><grn>ii</grn> Inter-dose interval</li>
<li><grn>addl</grn> Additional doses to administer</li>
<li><grn>rate</grn> Infusion rate</li>
<li><grn>ss</grn> Set to 1 to advance to steady state</li>
<li><grn>evid</grn> Event id</li>
<li><grn>ID</grn> Subject ID (use multiple ids - ID=1:10)</li>
</ul>
</div>
<div id="interventions-and-corresponding-evid" class="slide section level1">
<h1>Interventions and corresponding <code>evid</code></h1>
<ul>
<li><grn>Bolus</grn> dosing (<code>evid</code> 1, with <code>rate</code>==0)</li>
<li>Zero order <grn>infusion</grn> (<code>evid</code> 1, with <code>rate</code> > 0)</li>
<li><grn>Other</grn> type event (<code>evid</code> 2)
<ul>
<li>This also forces solver reset</li>
</ul></li>
<li>Compartment <grn>reset</grn> (<code>evid</code> 3)</li>
<li><grn>Reset</grn> and dose (<code>evid</code> 4)</li>
<li><grn>Replace</grn> the amount in a specific compartment (<code>evid</code> 8)</li>
</ul>
</div>
<div id="create-complex-events---1" class="slide section level1">
<h1>Create complex events - 1</h1>
<p>What’s going to happen?</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">e1 <-<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">200</span>)
e2 <-<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">100</span>, <span class="dt">time =</span> <span class="dv">24</span>, <span class="dt">ii =</span> <span class="dv">24</span>, <span class="dt">addl =</span> <span class="dv">4</span>)
<span class="kw">c</span>(e1, e2)</code></pre></div>
</div>
<div id="create-complex-events---1-1" class="slide section level1">
<h1>Create complex events - 1</h1>
<p>What’s going to happen?</p>
<p><img src="data:image/png;base64,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" width="864" /></p>
</div>
<div id="create-complex-events---1-2" class="slide section level1">
<h1>Create complex events - 1</h1>
<p>Combine two events</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">e1 <-<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">200</span>)
e2 <-<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">100</span>, <span class="dt">time =</span> <span class="dv">24</span>, <span class="dt">ii =</span> <span class="dv">24</span>, <span class="dt">addl =</span> <span class="dv">4</span>)
<span class="kw">c</span>(e1, e2)</code></pre></div>
<pre><code>. Events:
. time cmt amt evid ii addl
. 1 0 1 200 1 0 0
. 2 24 1 100 1 24 4</code></pre>
</div>
<div id="create-complex-events---2" class="slide section level1">
<h1>Create complex events - 2</h1>
<p>What’s going to happen?</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">e1 <-<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">200</span>, <span class="dt">ii =</span> <span class="dv">12</span>, <span class="dt">addl =</span> <span class="dv">2</span>)
e2 <-<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">100</span>, <span class="dt">ii =</span> <span class="dv">24</span>, <span class="dt">addl =</span> <span class="dv">4</span>)
<span class="kw">seq</span>(e1, e2)</code></pre></div>
</div>
<div id="create-complex-events---2-1" class="slide section level1">
<h1>Create complex events - 2</h1>
<p>What’s going to happen?</p>
<p><img src="data:image/png;base64,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" width="864" /></p>
</div>
<div id="create-complex-events---2-2" class="slide section level1">
<h1>Create complex events - 2</h1>
<p>Put two events in a sequence</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">e1 <-<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">200</span>, <span class="dt">ii =</span> <span class="dv">12</span>, <span class="dt">addl =</span> <span class="dv">2</span>)
e2 <-<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">100</span>, <span class="dt">ii =</span> <span class="dv">24</span>, <span class="dt">addl =</span> <span class="dv">4</span>)
<span class="kw">seq</span>(e1, e2)</code></pre></div>
<pre><code>. Events:
. time cmt amt ii addl evid
. 1 0 1 200 12 2 1
. 2 36 1 100 24 4 1</code></pre>
</div>
<div id="create-complex-events---3" class="slide section level1">
<h1>Create complex events - 3</h1>
<p>What is going to happen?</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">e1 <-<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">200</span>)
e2 <-<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">100</span>, <span class="dt">ii =</span> <span class="dv">24</span>, <span class="dt">addl =</span> <span class="dv">4</span>)
<span class="kw">seq</span>(e1, <span class="dt">wait =</span> <span class="dv">36</span>, e2)</code></pre></div>
</div>
<div id="create-complex-events---3-1" class="slide section level1">
<h1>Create complex events - 3</h1>
<p>What is going to happen?</p>
<p><img src="data:image/png;base64,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" width="864" /></p>
</div>
<div id="create-complex-events---3-2" class="slide section level1">
<h1>Create complex events - 3</h1>
<p>Wait before starting the next part of the regimen</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">e1 <-<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">200</span>)
e2 <-<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">100</span>, <span class="dt">ii =</span> <span class="dv">24</span>, <span class="dt">addl =</span> <span class="dv">4</span>)
<span class="kw">seq</span>(e1, <span class="dt">wait =</span> <span class="dv">36</span>, e2)</code></pre></div>
<pre><code>. Events:
. time cmt amt evid ii addl
. 1 0 1 200 1 0 0
. 2 36 1 100 1 24 4</code></pre>
</div>
<div id="your-turn-1" class="slide section level1">
<h1><red>Your turn</red></h1>
<ul>
<li><p>File name: <grn>workbook.Rmd</grn></p></li>
<li><p>Section name: <blu>Z-Pak</blu></p></li>
</ul>
</div>
<div id="event-objects-are-just-data-frames" class="slide section level1">
<h1>Event objects are just data frames</h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">as.data.frame</span>(e1)</code></pre></div>
<pre><code>. time cmt amt evid
. 1 0 1 200 1</code></pre>
<ul>
<li><p>We will use a <blk>data_set</blk> later on for populations</p></li>
<li>Event objects are convenient</li>
<li>Constructor</li>
<li><p>Operations</p></li>
</ul>
</div>
<div id="were-stil-working-on-this-setup" class="slide section level1">
<h1>We’re stil working on this setup</h1>
<hr>
<p><red>model</red> <code>%>%</code> <blu>intervention</blu> <code>%>%</code> <grn>Go!</grn> <code>%>%</code> <orng>take-a-look</orng></p>
<hr>
<p><red>model</red>:</p>
<ul>
<li>Load a model with <code>mread</code> or <code>mread_cache</code></li>
<li>Use the internal library with <code>mread("<model-name>", modlib())</code></li>
<li>Check model parameters with <code>param(mod)</code></li>
<li>Check model initial conditions with <code>init(mod)</code></li>
<li>View model code with <code>see(mod)</code></li>
</ul>
<p><blu>intervention</blu>:</p>
<ul>
<li><code>ev(...</code>): <code>amt</code>, <code>cmt</code>, <code>time</code>, <code>ii</code>, <code>addl</code>, <code>rate</code></li>
<li>Different ways to combine event objects</li>
</ul>
</div>
<div id="simulate" class="slide section level1">
<h1>Simulate</h1>
<hr>
<p><code>model %>% intervention %>%</code> <grn>Go!</grn></p>
<hr>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">ev</span>(e) %>%<span class="st"> </span><span class="kw">mrgsim</span>()</code></pre></div>
<pre><code>. Model: effect.cpp
. Dim: 363 x 8
. Time: 0 to 36
. ID: 1
. ID time GUT CENT PERIPH CE EFFECT CP
. [1,] 1 0.0 0.0 0.00 0.0000 0.0000 157.0 0.000
. [2,] 1 0.0 200.0 0.00 0.0000 0.0000 157.0 0.000
. [3,] 1 0.1 182.4 16.89 0.3103 0.4449 154.5 6.921
. [4,] 1 0.2 166.4 31.00 1.1634 1.6096 149.7 12.707
. [5,] 1 0.3 151.8 42.71 2.4543 3.2764 145.1 17.503
. [6,] 1 0.4 138.4 52.31 4.0926 5.2711 141.6 21.439
. [7,] 1 0.5 126.3 60.09 6.0002 7.4555 139.0 24.627
. [8,] 1 0.6 115.2 66.29 8.1106 9.7214 137.2 27.169</code></pre>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">mrgsim</span>(mod, <span class="dt">events =</span> e)</code></pre></div>
</div>
<div id="deal-with-output" class="slide section level1">
<h1>Deal with output</h1>
<hr>
<p><code>model %>% intervention %>% Go! %>%</code> <orng>take-a-look</orng></p>
<hr>
</div>
<div id="plot" class="slide section level1">
<h1>Plot</h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">100</span>) %>%<span class="st"> </span><span class="kw">mrgsim</span>() %>%<span class="st"> </span><span class="kw">plot</span>()</code></pre></div>
<p><img src="data:image/png;base64,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" width="864" /></p>
</div>
<div id="plot-1" class="slide section level1">
<h1>Plot</h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">100</span>) %>%<span class="st"> </span><span class="kw">mrgsim</span>() %>%<span class="st"> </span>
<span class="st"> </span><span class="kw">plot</span>(CP +<span class="st"> </span>EFFECT~., <span class="dt">col =</span> <span class="st">"firebrick"</span>)</code></pre></div>
<p><img src="data:image/png;base64,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" width="864" /></p>
</div>
<div id="pipeline-to-dplyr-functions" class="slide section level1">
<h1>Pipeline to dplyr functions</h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">mrgsim</span>() %>%<span class="st"> </span><span class="kw">mutate</span>(<span class="dt">arm =</span> <span class="dv">1</span>)</code></pre></div>
<pre><code>. # A tibble: 361 x 9
. ID time GUT CENT PERIPH CE EFFECT CP arm
. <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
. 1 1.00 0 0 0 0 0 157 0 1.00
. 2 1.00 0.100 0 0 0 0 157 0 1.00
. 3 1.00 0.200 0 0 0 0 157 0 1.00
. 4 1.00 0.300 0 0 0 0 157 0 1.00
. 5 1.00 0.400 0 0 0 0 157 0 1.00
. 6 1.00 0.500 0 0 0 0 157 0 1.00
. 7 1.00 0.600 0 0 0 0 157 0 1.00
. 8 1.00 0.700 0 0 0 0 157 0 1.00
. 9 1.00 0.800 0 0 0 0 157 0 1.00
. 10 1.00 0.900 0 0 0 0 157 0 1.00
. # ... with 351 more rows</code></pre>
</div>
<div id="what-would-you-like-to-fix-in-this-plot" class="slide section level1">
<h1>What would you like to “fix” in this plot?</h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">100</span>) %>%<span class="st"> </span><span class="kw">mrgsim</span>() %>%<span class="st"> </span><span class="kw">plot</span>(CP~time)</code></pre></div>
<p><img src="data:image/png;base64,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" width="864" /></p>
</div>
<div id="simulation-end-time" class="slide section level1">
<h1>Simulation end time</h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">100</span>) %>%<span class="st"> </span><span class="kw">mrgsim</span>(<span class="dt">end =</span> <span class="dv">48</span>) %>%<span class="st"> </span><span class="kw">plot</span>(CP~time)</code></pre></div>
<p><img src="data:image/png;base64,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" width="864" /></p>
</div>
<div id="simulation-time-step" class="slide section level1">
<h1>Simulation time step</h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt =</span> <span class="dv">100</span>) %>%<span class="st"> </span><span class="kw">mrgsim</span>(<span class="dt">end =</span> <span class="dv">48</span>, <span class="dt">delta =</span> <span class="fl">0.1</span>) %>%<span class="st"> </span><span class="kw">plot</span>(CP~time)</code></pre></div>
<p><img src="data:image/png;base64,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" width="864" /></p>
</div>
<div id="simulation-time-grid" class="slide section level1">
<h1>Simulation time grid</h1>
<ul>
<li>To form a sequence of times
<ul>
<li><grn>start</grn> usually <code>0</code></li>
<li><grn>end</grn> time of last observation</li>
<li><grn>delta</grn> <blk>output</blk> time step</li>
</ul></li>
<li>Additional times to simulate
<ul>
<li><purp>add</purp> ad-hoc numeric vector</li>
</ul></li>
</ul>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">stime</span>(mod)</code></pre></div>
<pre><code>. [1] 0 6 12 18</code></pre>
</div>
<div id="update" class="slide section level1">
<h1>Update</h1>
<p>On the fly</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">update</span>(<span class="dt">end =</span> <span class="dv">72</span>) %>%<span class="st"> </span><span class="kw">mrgsim</span>()</code></pre></div>
<p>Persistent</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod <-<span class="st"> </span><span class="kw">update</span>(mod, <span class="dt">end =</span> <span class="dv">72</span>)</code></pre></div>
<p>mrgsim will call <code>update</code> for you (on the fly)</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">mrgsim</span>(<span class="dt">end =</span> <span class="dv">72</span>)</code></pre></div>
</div>
<div id="what-else-can-i-update" class="slide section level1">
<h1>What else can I update?</h1>
<ul>
<li>Time
<ul>
<li><code>start</code>, <code>end</code>, <code>delta</code>, <code>add</code></li>
</ul></li>
<li>Parameters and compartment initial values</li>
<li>Solver settings
<ul>
<li><code>atol</code>, <code>rtol</code></li>
<li><code>hmax</code>, <code>maxsteps</code>, <code>mxhnil</code>, <code>ixpr</code></li>
</ul></li>
<li><code>$OMEGA</code>, <code>$SIGMA</code></li>
<li><code>tscale</code> (rescale the output time)</li>
<li><code>digits</code></li>
</ul>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">update</span>(<span class="dt">rtol =</span> <span class="fl">1E-12</span>) %>%<span class="st"> </span>...</code></pre></div>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">mrgsim</span>(<span class="dt">rtol =</span> <span class="fl">1E-12</span>) %>%<span class="st"> </span>...</code></pre></div>
</div>
<div id="controlling-output---request" class="slide section level1">
<h1>Controlling output - <grn>request</grn></h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">mrgsim</span>() %>%<span class="st"> </span><span class="kw">head</span>(<span class="dt">n =</span> <span class="dv">2</span>)</code></pre></div>
<pre><code>. Model: effect</code></pre>
<pre><code>. ID time GUT CENT PERIPH CE EFFECT CP
. 1 1 0 0 0 0 0 157 0
. 2 1 6 0 0 0 0 157 0</code></pre>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">Req</span>(CP) %>%<span class="st"> </span><span class="kw">mrgsim</span>() %>%<span class="st"> </span><span class="kw">head</span>(<span class="dt">n =</span> <span class="dv">2</span>)</code></pre></div>
<pre><code>. Model: effect</code></pre>
<pre><code>. ID time CP
. 1 1 0 0
. 2 1 6 0</code></pre>
</div>
<div id="controlling-output---obsonly" class="slide section level1">
<h1>Controlling output - <grn>obsonly</grn></h1>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt=</span><span class="dv">1</span>) %>%<span class="st"> </span><span class="kw">mrgsim</span>() %>%<span class="st"> </span><span class="kw">head</span>(<span class="dt">n =</span> <span class="dv">2</span>)</code></pre></div>
<pre><code>. Model: effect</code></pre>
<pre><code>. ID time GUT CENT PERIPH CE EFFECT CP
. 1 1 0 0 0 0 0 157 0
. 2 1 0 1 0 0 0 157 0</code></pre>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">mod %>%<span class="st"> </span><span class="kw">ev</span>(<span class="dt">amt=</span><span class="dv">1</span>) %>%<span class="st"> </span><span class="kw">obsonly</span>() %>%<span class="st"> </span><span class="kw">mrgsim</span>() %>%<span class="st"> </span><span class="kw">head</span>(<span class="dt">n =</span> <span class="dv">2</span>)</code></pre></div>
<pre><code>. Model: effect</code></pre>
<pre><code>. ID time GUT CENT PERIPH CE EFFECT CP
. 1 1 0 0.000000000 0.0000000 0.0000000 0.00000000 157.0000 0.00000000
. 2 1 6 0.004005846 0.1069759 0.2436686 0.05481486 156.6724 0.04384256</code></pre>
</div>
<div id="next-slide-deck" class="slide section level1">
<h1>Next slide deck</h1>
<p><a href="deck_02.html">Data Sets</a></p>
</div>
<!-- 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>
</body>
</html>