-
Notifications
You must be signed in to change notification settings - Fork 1
/
Simulating DOM Events - YUI Library (2023_12_21 16_43_45).html
1158 lines (910 loc) · 759 KB
/
Simulating DOM Events - YUI Library (2023_12_21 16_43_45).html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
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
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html> <html lang=en class="yui3-js-enabled pc win" style><!--
Page saved with SingleFile
url: https://clarle.github.io/yui3/yui/docs/event/simulate.html
saved date: Thu Dec 21 2023 16:43:45 GMT+0800 (中国标准时间)
--><meta charset=utf-8><title>Simulating DOM Events - YUI Library</title><meta name=viewport content="width=960" id=meta-viewport><meta http-equiv=X-UA-Compatible content="IE=Edge,chrome=1"><meta http-equiv=X-XRDS-Location content=/xrds.xml><meta name=twitter:card content=summary><meta name=twitter:site content=@yuilibrary><meta name=twitter:creator content=@yuilibrary><meta name=twitter:url content=http://yuilibrary.com/yui/docs/event/simulate.html><meta name=twitter:title content="Simulating DOM Events"><meta name=twitter:description content="The Event system provides APIs for subscribing to and working with DOM events"><meta name=referrer content=no-referrer><link rel="shortcut icon" type=image/png href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABoVBMVEUAAABRabFQaLExQYYoOYVPa7MdKXhOa7NOa7M1SJIxQ40kNIBNbLRIYaRRabL///9Pa7MzRY8zQ4gdKXhLYaosPolMYqskM4AzRpB/jr1CV580RpA7TZYfLXtHXKQvQYwtPolPa7MtPopFWZlNbLQgLnxuf7IyRI5QarNBToR6kcJEWJhGW6Q5TJZOZqZ8jcFEV5dbcLRUbbRqhbtxh8JYZ5xlgbhBVp9DWKEnN4Q2SZNMZaZ1h7t1jb96i8BEV5hacbVHYaNRabFQarJTbLNxgbZngrpzh7xNX6NUZZ0vQItlfLthfbdPZq9BVZ9DWKJle7MlNIE7S4g0RpE6S5FJXqhLYao9Upt0jL56jMFCVJdYbrFHYKNQaLFVaaxPa7NRabJtfrJpf75pf71rgbhLX51QYp4sPYhgc7RkebZPZq5AVZ5IW5pgc7IhL30xQ44xQ40zRpA7T5lIXaVIXqdOYqU8UZl0hLd1hrs9TYk9TYs4TJZXaqdIYKJQaLBQZ7BParNpd6tne7JofrhLXJoqOoZcc7dNZK1gcKUdKnk+UpwILFaYAAAAK3RSTlMAIO6AcEBAx4/bxyBgECAN7oCAgEBAoNvH+XAQgIBAQECg7scggFFAoES2kJLhOAAAAMdJREFUGJVjYIADRhEpGSFmGI9VozSsNKoqRBDC5bF2zsot72j04ARzVdgbYqPdm1pc43TVwdLxzlmZEXo5dhldEiA+R0NsWLNxbZq+ob+VPJCv6JxVnGIWkxrpEFrEBVIQG2Ye4BOjXdHW7hesABKQK6txczRITK7T0W2FWKlm62jvaZIQ1pXPAhHQstautHHxtbBq5YYI8CoHmSY5lRR5icM9oWln1J5daCkLF+D3rtepTs9jQ/iTTyy8ILCTARlIi6oKQ1gAoystHpQFL1gAAAAASUVORK5CYII=" data-sf-original-href=https://clarle.github.io/yui3/img/favicon.png><style>.sf-hidden{display:none !important}</style><link rel=canonical href=https://clarle.github.io/yui3/yui/docs/event/simulate.html><meta http-equiv=content-security-policy content="default-src 'none'; font-src 'self' data:; img-src 'self' data:; style-src 'unsafe-inline'; media-src 'self' data:; script-src 'unsafe-inline' data:; object-src 'self' data:; frame-src 'self' data:;"><style>img[src="data:,"],source[src="data:,"]{display:none!important}</style><body class=yui3-skin-sam><div id=yui3-css-stamp style="position:absolute !important;visibility:hidden !important" class=sf-hidden></div>
<script async data-sf-original-src=https://s.yimg.com/mi/ywa.js src=data:,></script><script async data-sf-original-src=https://ssl.google-analytics.com/ga.js src="data:text/javascript;base64,KGZ1bmN0aW9uKCl7dmFyIEU7dmFyIGc9d2luZG93LG49ZG9jdW1lbnQscD1mdW5jdGlvbihhKXt2YXIgYj1nLl9nYVVzZXJQcmVmcztpZihiJiZiLmlvbyYmYi5pb28oKXx8YSYmITA9PT1nWyJnYS1kaXNhYmxlLSIrYV0pcmV0dXJuITA7dHJ5e3ZhciBjPWcuZXh0ZXJuYWw7aWYoYyYmYy5fZ2FVc2VyUHJlZnMmJiJvbyI9PWMuX2dhVXNlclByZWZzKXJldHVybiEwfWNhdGNoKGYpe31hPVtdO2I9bi5jb29raWUuc3BsaXQoIjsiKTtjPS9eXHMqQU1QX1RPS0VOPVxzKiguKj8pXHMqJC87Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspe3ZhciBlPWJbZF0ubWF0Y2goYyk7ZSYmYS5wdXNoKGVbMV0pfWZvcihiPTA7YjxhLmxlbmd0aDtiKyspaWYoIiRPUFRfT1VUIj09ZGVjb2RlVVJJQ29tcG9uZW50KGFbYl0pKXJldHVybiEwO3JldHVybiExfTt2YXIgcT1mdW5jdGlvbihhKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50P2VuY29kZVVSSUNvbXBvbmVudChhKS5yZXBsYWNlKC9cKC9nLCIlMjgiKS5yZXBsYWNlKC9cKS9nLCIlMjkiKTphfSxyPS9eKHd3d1wuKT9nb29nbGUoXC5jb20/KT8oXC5bYS16XXsyfSk/JC8sdT0vKF58XC4pZG91YmxlY2xpY2tcLm5ldCQvaTtmdW5jdGlvbiBBYShhLGIpe3N3aXRjaChiKXtjYXNlIDA6cmV0dXJuIiIrYTtjYXNlIDE6cmV0dXJuIDEqYTtjYXNlIDI6cmV0dXJuISFhO2Nhc2UgMzpyZXR1cm4gMUUzKmF9cmV0dXJuIGF9ZnVuY3Rpb24gQmEoYSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGF9ZnVuY3Rpb24gQ2EoYSl7cmV0dXJuIHZvaWQgMCE9YSYmLTE8KGEuY29uc3RydWN0b3IrIiIpLmluZGV4T2YoIlN0cmluZyIpfWZ1bmN0aW9uIEYoYSxiKXtyZXR1cm4gdm9pZCAwPT1hfHwiLSI9PWEmJiFifHwiIj09YX1mdW5jdGlvbiBEYShhKXtpZighYXx8IiI9PWEpcmV0dXJuIiI7Zm9yKDthJiYtMTwiIFxuXHJcdCIuaW5kZXhPZihhLmNoYXJBdCgwKSk7KWE9YS5zdWJzdHJpbmcoMSk7Zm9yKDthJiYtMTwiIFxuXHJcdCIuaW5kZXhPZihhLmNoYXJBdChhLmxlbmd0aC0xKSk7KWE9YS5zdWJzdHJpbmcoMCxhLmxlbmd0aC0xKTtyZXR1cm4gYX0KZnVuY3Rpb24gRWEoKXtyZXR1cm4gTWF0aC5yb3VuZCgyMTQ3NDgzNjQ3Kk1hdGgucmFuZG9tKCkpfWZ1bmN0aW9uIEZhKCl7fWZ1bmN0aW9uIEcoYSxiKXtpZihlbmNvZGVVUklDb21wb25lbnQgaW5zdGFuY2VvZiBGdW5jdGlvbilyZXR1cm4gYj9lbmNvZGVVUkkoYSk6ZW5jb2RlVVJJQ29tcG9uZW50KGEpO0goNjgpO3JldHVybiBlc2NhcGUoYSl9ZnVuY3Rpb24gSShhKXthPWEuc3BsaXQoIisiKS5qb2luKCIgIik7aWYoZGVjb2RlVVJJQ29tcG9uZW50IGluc3RhbmNlb2YgRnVuY3Rpb24pdHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYSl9Y2F0Y2goYil7SCgxNyl9ZWxzZSBIKDY4KTtyZXR1cm4gdW5lc2NhcGUoYSl9dmFyIEdhPWZ1bmN0aW9uKGEsYixjLGQpe2EuYWRkRXZlbnRMaXN0ZW5lcj9hLmFkZEV2ZW50TGlzdGVuZXIoYixjLCEhZCk6YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudCgib24iK2IsYyl9OwpmdW5jdGlvbiBJYShhLGIpe2lmKGEpe3ZhciBjPUouY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Yy50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiO2MuYXN5bmM9ITA7Yy5zcmM9YTtjLmlkPWI7YT1KLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXTthLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGMsYSk7cmV0dXJuIGN9fWZ1bmN0aW9uIEsoYSl7cmV0dXJuIGEmJjA8YS5sZW5ndGg/YVswXToiIn1mdW5jdGlvbiBMKGEpe3ZhciBiPWE/YS5sZW5ndGg6MDtyZXR1cm4gMDxiP2FbYi0xXToiIn12YXIgbmY9ZnVuY3Rpb24oKXt0aGlzLnByZWZpeD0iZ2EuIjt0aGlzLnZhbHVlcz17fX07bmYucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIpe3RoaXMudmFsdWVzW3RoaXMucHJlZml4K2FdPWJ9O25mLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudmFsdWVzW3RoaXMucHJlZml4K2FdfTsKbmYucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKGEpe3JldHVybiB2b2lkIDAhPT10aGlzLmdldChhKX07ZnVuY3Rpb24gS2EoYSl7MD09YS5pbmRleE9mKCJ3d3cuIikmJihhPWEuc3Vic3RyaW5nKDQpKTtyZXR1cm4gYS50b0xvd2VyQ2FzZSgpfQpmdW5jdGlvbiBMYShhLGIpe3ZhciBjPXt1cmw6YSxwcm90b2NvbDoiaHR0cCIsaG9zdDoiIixwYXRoOiIiLFI6bmV3IG5mLGFuY2hvcjoiIn07aWYoIWEpcmV0dXJuIGM7dmFyIGQ9YS5pbmRleE9mKCI6Ly8iKTswPD1kJiYoYy5wcm90b2NvbD1hLnN1YnN0cmluZygwLGQpLGE9YS5zdWJzdHJpbmcoZCszKSk7ZD1hLnNlYXJjaCgiL3xcXD98IyIpO2lmKDA8PWQpYy5ob3N0PWEuc3Vic3RyaW5nKDAsZCkudG9Mb3dlckNhc2UoKSxhPWEuc3Vic3RyaW5nKGQpO2Vsc2UgcmV0dXJuIGMuaG9zdD1hLnRvTG93ZXJDYXNlKCksYztkPWEuaW5kZXhPZigiIyIpOzA8PWQmJihjLmFuY2hvcj1hLnN1YnN0cmluZyhkKzEpLGE9YS5zdWJzdHJpbmcoMCxkKSk7ZD1hLmluZGV4T2YoIj8iKTswPD1kJiYoTmEoYy5SLGEuc3Vic3RyaW5nKGQrMSkpLGE9YS5zdWJzdHJpbmcoMCxkKSk7Yy5hbmNob3ImJmImJk5hKGMuUixjLmFuY2hvcik7YSYmIi8iPT1hLmNoYXJBdCgwKSYmKGE9YS5zdWJzdHJpbmcoMSkpOwpjLnBhdGg9YTtyZXR1cm4gY30KZnVuY3Rpb24gT2EoYSxiKXtmdW5jdGlvbiBjKGEpe3ZhciBiPShhLmhvc3RuYW1lfHwiIikuc3BsaXQoIjoiKVswXS50b0xvd2VyQ2FzZSgpLGM9KGEucHJvdG9jb2x8fCIiKS50b0xvd2VyQ2FzZSgpO2M9MSphLnBvcnR8fCgiaHR0cDoiPT1jPzgwOiJodHRwczoiPT1jPzQ0MzoiIik7YT1hLnBhdGhuYW1lfHwiIjswPT1hLmluZGV4T2YoIi8iKXx8KGE9Ii8iK2EpO3JldHVybltiLCIiK2MsYV19Yj1ifHxKLmNyZWF0ZUVsZW1lbnQoImEiKTtiLmhyZWY9Si5sb2NhdGlvbi5ocmVmO3ZhciBkPShiLnByb3RvY29sfHwiIikudG9Mb3dlckNhc2UoKSxlPWMoYiksZj1iLnNlYXJjaHx8IiIsQmU9ZCsiLy8iK2VbMF0rKGVbMV0/IjoiK2VbMV06IiIpOzA9PWEuaW5kZXhPZigiLy8iKT9hPWQrYTowPT1hLmluZGV4T2YoIi8iKT9hPUJlK2E6YSYmMCE9YS5pbmRleE9mKCI/Iik/MD5hLnNwbGl0KCIvIilbMF0uaW5kZXhPZigiOiIpJiYoYT1CZStlWzJdLnN1YnN0cmluZygwLGVbMl0ubGFzdEluZGV4T2YoIi8iKSkrCiIvIithKTphPUJlK2VbMl0rKGF8fGYpO2IuaHJlZj1hO2Q9YyhiKTtyZXR1cm57cHJvdG9jb2w6KGIucHJvdG9jb2x8fCIiKS50b0xvd2VyQ2FzZSgpLGhvc3Q6ZFswXSxwb3J0OmRbMV0scGF0aDpkWzJdLHF1ZXJ5OmIuc2VhcmNofHwiIix1cmw6YXx8IiJ9fWZ1bmN0aW9uIE5hKGEsYil7ZnVuY3Rpb24gYyhiLGMpe2EuY29udGFpbnMoYil8fGEuc2V0KGIsW10pO2EuZ2V0KGIpLnB1c2goYyl9Yj1EYShiKS5zcGxpdCgiJiIpO2Zvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKWlmKGJbZF0pe3ZhciBlPWJbZF0uaW5kZXhPZigiPSIpOzA+ZT9jKGJbZF0sIjEiKTpjKGJbZF0uc3Vic3RyaW5nKDAsZSksYltkXS5zdWJzdHJpbmcoZSsxKSl9fQpmdW5jdGlvbiBQYShhLGIpe3JldHVybiBGKGEpfHwiWyI9PWEuY2hhckF0KDApJiYiXSI9PWEuY2hhckF0KGEubGVuZ3RoLTEpPyItIjphLmluZGV4T2YoSi5kb21haW4rKGImJiIvIiE9Yj9iOiIiKSk9PSgwPT1hLmluZGV4T2YoImh0dHA6Ly8iKT83OjA9PWEuaW5kZXhPZigiaHR0cHM6Ly8iKT84OjApPyIwIjphfTt2YXIgUWE9MDtmdW5jdGlvbiBSYShhLGIsYyl7MTw9UWF8fDE8PTEwMCpNYXRoLnJhbmRvbSgpfHxsZCgpfHwoYT1bInV0bXQ9ZXJyb3IiLCJ1dG1lcnI9IithLCJ1dG13dj01LjcuMiIsInV0bW49IitFYSgpLCJ1dG1zcD0xIl0sYiYmYS5wdXNoKCJhcGk9IitiKSxjJiZhLnB1c2goIm1zZz0iK0coYy5zdWJzdHJpbmcoMCwxMDApKSksTS53JiZhLnB1c2goImFpcD0xIiksU2EoYS5qb2luKCImIikpLFFhKyspfTt2YXIgVGE9MCxVYT17fTtmdW5jdGlvbiBOKGEpe3JldHVybiBWYSgieCIrVGErKyxhKX1mdW5jdGlvbiBWYShhLGIpe1VhW2FdPSEhYjtyZXR1cm4gYX0KdmFyIFdhPU4oKSxYYT1WYSgiYW5vbnltaXplSXAiKSxZYT1OKCksJGE9TigpLGFiPU4oKSxiYj1OKCksTz1OKCksUD1OKCksY2I9TigpLGRiPU4oKSxlYj1OKCksZmI9TigpLGdiPU4oKSxoYj1OKCksaWI9TigpLGpiPU4oKSxrYj1OKCksbGI9TigpLG5iPU4oKSxvYj1OKCkscGI9TigpLHFiPU4oKSxyYj1OKCksc2I9TigpLHRiPU4oKSx1Yj1OKCksdmI9TigpLHdiPU4oKSx4Yj1OKCkseWI9TigpLHpiPU4oKSxBYj1OKCksQmI9TigpLENiPU4oKSxEYj1OKCksRWI9TigpLEZiPU4oITApLEdiPVZhKCJjdXJyZW5jeUNvZGUiKSx2PVZhKCJzdG9yZUdhYyIpLEhiPVZhKCJwYWdlIiksSWI9VmEoInRpdGxlIiksSmI9TigpLEtiPU4oKSxMYj1OKCksTWI9TigpLE5iPU4oKSxPYj1OKCksUGI9TigpLFFiPU4oKSxSYj1OKCksUT1OKCEwKSxTYj1OKCEwKSxUYj1OKCEwKSxVYj1OKCEwKSxWYj1OKCEwKSxXYj1OKCEwKSxaYj1OKCEwKSwkYj1OKCEwKSxhYz1OKCEwKSxiYz1OKCEwKSxjYz1OKCEwKSwKUj1OKCEwKSxkYz1OKCEwKSxlYz1OKCEwKSxmYz1OKCEwKSxnYz1OKCEwKSxoYz1OKCEwKSxpYz1OKCEwKSxqYz1OKCEwKSxTPU4oITApLGtjPU4oITApLGxjPU4oITApLG1jPU4oITApLG5jPU4oITApLG9jPU4oITApLHBjPU4oITApLHFjPU4oITApLHJjPVZhKCJjYW1wYWlnblBhcmFtcyIpLHNjPU4oKSx0Yz1WYSgiaGl0Q2FsbGJhY2siKSx1Yz1OKCk7TigpO3ZhciB2Yz1OKCksd2M9TigpLHhjPU4oKSx5Yz1OKCksemM9TigpLEFjPU4oKSxCYz1OKCksQ2M9TigpLERjPU4oKSxFYz1OKCksRmM9TigpLEdjPU4oKSxIYz1OKCksSWM9TigpO04oKTsKdmFyIE1jPU4oKSxOYz1OKCksWWI9TigpLEpjPU4oKSxLYz1OKCksTGM9VmEoInV0bXRDb29raWVOYW1lIiksQ2Q9VmEoImRpc3BsYXlGZWF0dXJlcyIpLE9jPU4oKSxvZj1WYSgiZ3RtaWQiKSxPZT1WYSgidWFOYW1lIiksUGU9VmEoInVhRG9tYWluIiksUWU9VmEoInVhUGF0aCIpLHBmPVZhKCJsaW5raWQiKSx3PU4oKSx4PU4oKSx5PU4oKSx6PU4oKTt2YXIgUmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYyxkKXtUKHFmLnByb3RvdHlwZSxhLGMsZCl9YSgiX2NyZWF0ZVRyYWNrZXIiLHFmLnByb3RvdHlwZS5oYiw1NSk7YSgiX2dldFRyYWNrZXIiLHFmLnByb3RvdHlwZS5vYSwwKTthKCJfZ2V0VHJhY2tlckJ5TmFtZSIscWYucHJvdG90eXBlLnUsNTEpO2EoIl9nZXRUcmFja2VycyIscWYucHJvdG90eXBlLnBhLDEzMCk7YSgiX2Fub255bWl6ZUlwIixxZi5wcm90b3R5cGUuYWEsMTYpO2EoIl9mb3JjZVNTTCIscWYucHJvdG90eXBlLmxhLDEyNSk7YSgiX2dldFBsdWdpbiIsUGMsMTIwKX0sU2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYyxkKXtUKFUucHJvdG90eXBlLGEsYyxkKX1RYygiX2dldE5hbWUiLCRhLDU4KTtRYygiX2dldEFjY291bnQiLFdhLDY0KTtRYygiX3Zpc2l0Q29kZSIsUSw1NCk7UWMoIl9nZXRDbGllbnRJbmZvIixpYiw1MywxKTtRYygiX2dldERldGVjdFRpdGxlIixsYiw1NiwxKTtRYygiX2dldERldGVjdEZsYXNoIiwKamIsNjUsMSk7UWMoIl9nZXRMb2NhbEdpZlBhdGgiLHdiLDU3KTtRYygiX2dldFNlcnZpY2VNb2RlIix4Yiw1OSk7VigiX3NldENsaWVudEluZm8iLGliLDY2LDIpO1YoIl9zZXRBY2NvdW50IixXYSwzKTtWKCJfc2V0TmFtZXNwYWNlIixZYSw0OCk7VigiX3NldEFsbG93TGlua2VyIixmYiwxMSwyKTtWKCJfc2V0RGV0ZWN0Rmxhc2giLGpiLDYxLDIpO1YoIl9zZXREZXRlY3RUaXRsZSIsbGIsNjIsMik7VigiX3NldExvY2FsR2lmUGF0aCIsd2IsNDYsMCk7VigiX3NldExvY2FsU2VydmVyTW9kZSIseGIsOTIsdm9pZCAwLDApO1YoIl9zZXRSZW1vdGVTZXJ2ZXJNb2RlIix4Yiw2Myx2b2lkIDAsMSk7VigiX3NldExvY2FsUmVtb3RlU2VydmVyTW9kZSIseGIsNDcsdm9pZCAwLDIpO1YoIl9zZXRTYW1wbGVSYXRlIix2Yiw0NSwxKTtWKCJfc2V0Q2FtcGFpZ25UcmFjayIsa2IsMzYsMik7VigiX3NldEFsbG93QW5jaG9yIixnYiw3LDIpO1YoIl9zZXRDYW1wTmFtZUtleSIsb2IsNDEpO1YoIl9zZXRDYW1wQ29udGVudEtleSIsCnRiLDM4KTtWKCJfc2V0Q2FtcElkS2V5IixuYiwzOSk7VigiX3NldENhbXBNZWRpdW1LZXkiLHJiLDQwKTtWKCJfc2V0Q2FtcE5PS2V5Iix1Yiw0Mik7VigiX3NldENhbXBTb3VyY2VLZXkiLHFiLDQzKTtWKCJfc2V0Q2FtcFRlcm1LZXkiLHNiLDQ0KTtWKCJfc2V0Q2FtcENJZEtleSIscGIsMzcpO1YoIl9zZXRDb29raWVQYXRoIixQLDksMCk7VigiX3NldE1heEN1c3RvbVZhcmlhYmxlcyIseWIsMCwxKTtWKCJfc2V0VmlzaXRvckNvb2tpZVRpbWVvdXQiLGNiLDI4LDEpO1YoIl9zZXRTZXNzaW9uQ29va2llVGltZW91dCIsZGIsMjYsMSk7VigiX3NldENhbXBhaWduQ29va2llVGltZW91dCIsZWIsMjksMSk7VigiX3NldFJlZmVycmVyT3ZlcnJpZGUiLEpiLDQ5KTtWKCJfc2V0U2l0ZVNwZWVkU2FtcGxlUmF0ZSIsRGMsMTMyKTtWKCJfc3RvcmVHYWMiLHYsMTQzKTthKCJfdHJhY2tQYWdldmlldyIsVS5wcm90b3R5cGUuRmEsMSk7YSgiX3RyYWNrRXZlbnQiLFUucHJvdG90eXBlLkYsNCk7CmEoIl90cmFja1BhZ2VMb2FkVGltZSIsVS5wcm90b3R5cGUuRWEsMTAwKTthKCJfdHJhY2tTb2NpYWwiLFUucHJvdG90eXBlLkdhLDEwNCk7YSgiX3RyYWNrVHJhbnMiLFUucHJvdG90eXBlLklhLDE4KTthKCJfc2VuZFhFdmVudCIsVS5wcm90b3R5cGUuaWIsNzgpO2EoIl9jcmVhdGVFdmVudFRyYWNrZXIiLFUucHJvdG90eXBlLmlhLDc0KTthKCJfZ2V0VmVyc2lvbiIsVS5wcm90b3R5cGUucWEsNjApO2EoIl9zZXREb21haW5OYW1lIixVLnByb3RvdHlwZS5CLDYpO2EoIl9zZXRBbGxvd0hhc2giLFUucHJvdG90eXBlLnZhLDgpO2EoIl9nZXRMaW5rZXJVcmwiLFUucHJvdG90eXBlLm5hLDUyKTthKCJfbGluayIsVS5wcm90b3R5cGUubGluaywxMDEpO2EoIl9saW5rQnlQb3N0IixVLnByb3RvdHlwZS51YSwxMDIpO2EoIl9zZXRUcmFucyIsVS5wcm90b3R5cGUuemEsMjApO2EoIl9hZGRUcmFucyIsVS5wcm90b3R5cGUuJCwyMSk7YSgiX2FkZEl0ZW0iLFUucHJvdG90eXBlLlksMTkpOwphKCJfY2xlYXJUcmFucyIsVS5wcm90b3R5cGUuZWEsMTA1KTthKCJfc2V0VHJhbnNhY3Rpb25EZWxpbSIsVS5wcm90b3R5cGUuQWEsODIpO2EoIl9zZXRDdXN0b21WYXIiLFUucHJvdG90eXBlLndhLDEwKTthKCJfZGVsZXRlQ3VzdG9tVmFyIixVLnByb3RvdHlwZS5rYSwzNSk7YSgiX2dldFZpc2l0b3JDdXN0b21WYXIiLFUucHJvdG90eXBlLnJhLDUwKTthKCJfc2V0WEtleSIsVS5wcm90b3R5cGUuQ2EsODMpO2EoIl9zZXRYVmFsdWUiLFUucHJvdG90eXBlLkRhLDg0KTthKCJfZ2V0WEtleSIsVS5wcm90b3R5cGUuc2EsNzYpO2EoIl9nZXRYVmFsdWUiLFUucHJvdG90eXBlLnRhLDc3KTthKCJfY2xlYXJYS2V5IixVLnByb3RvdHlwZS5mYSw3Mik7YSgiX2NsZWFyWFZhbHVlIixVLnByb3RvdHlwZS5nYSw3Myk7YSgiX2NyZWF0ZVhPYmoiLFUucHJvdG90eXBlLmphLDc1KTthKCJfYWRkSWdub3JlZE9yZ2FuaWMiLFUucHJvdG90eXBlLlcsMTUpO2EoIl9jbGVhcklnbm9yZWRPcmdhbmljIiwKVS5wcm90b3R5cGUuYmEsOTcpO2EoIl9hZGRJZ25vcmVkUmVmIixVLnByb3RvdHlwZS5YLDMxKTthKCJfY2xlYXJJZ25vcmVkUmVmIixVLnByb3RvdHlwZS5jYSwzMik7YSgiX2FkZE9yZ2FuaWMiLFUucHJvdG90eXBlLlosMTQpO2EoIl9jbGVhck9yZ2FuaWMiLFUucHJvdG90eXBlLmRhLDcwKTthKCJfY29va2llUGF0aENvcHkiLFUucHJvdG90eXBlLmhhLDMwKTthKCJfZ2V0IixVLnByb3RvdHlwZS5tYSwxMDYpO2EoIl9zZXQiLFUucHJvdG90eXBlLnhhLDEwNyk7YSgiX2FkZEV2ZW50TGlzdGVuZXIiLFUucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIsMTA4KTthKCJfcmVtb3ZlRXZlbnRMaXN0ZW5lciIsVS5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwxMDkpO2EoIl9hZGREZXZJZCIsVS5wcm90b3R5cGUuVik7YSgiX2dldFBsdWdpbiIsUGMsMTIyKTthKCJfc2V0UGFnZUdyb3VwIixVLnByb3RvdHlwZS55YSwxMjYpO2EoIl90cmFja1RpbWluZyIsVS5wcm90b3R5cGUuSGEsCjEyNCk7YSgiX2luaXREYXRhIixVLnByb3RvdHlwZS5pbml0RGF0YSwyKTthKCJfc2V0VmFyIixVLnByb3RvdHlwZS5CYSwyMik7VigiX3NldFNlc3Npb25UaW1lb3V0IixkYiwyNywzKTtWKCJfc2V0Q29va2llVGltZW91dCIsZWIsMjUsMyk7VigiX3NldENvb2tpZVBlcnNpc3RlbmNlIixjYiwyNCwxKTthKCJfc2V0QXV0b1RyYWNrT3V0Ym91bmQiLEZhLDc5KTthKCJfc2V0VHJhY2tPdXRib3VuZFN1YmRvbWFpbnMiLEZhLDgxKTthKCJfc2V0SHJlZkV4YW1pbmVMaW1pdCIsRmEsODApfTtmdW5jdGlvbiBQYyhhKXt2YXIgYj10aGlzLnBsdWdpbnNfO2lmKGIpcmV0dXJuIGIuZ2V0KGEpfQp2YXIgVD1mdW5jdGlvbihhLGIsYyxkKXthW2JdPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiB2b2lkIDAhPWQmJkgoZCksYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9Y2F0Y2goZSl7dGhyb3cgUmEoImV4YyIsYixlJiZlLm5hbWUpLGU7fX19LFFjPWZ1bmN0aW9uKGEsYixjLGQpe1UucHJvdG90eXBlW2FdPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBIKGMpLEFhKHRoaXMuYS5nZXQoYiksZCl9Y2F0Y2goZSl7dGhyb3cgUmEoImV4YyIsYSxlJiZlLm5hbWUpLGU7fX19LFY9ZnVuY3Rpb24oYSxiLGMsZCxlKXtVLnByb3RvdHlwZVthXT1mdW5jdGlvbihmKXt0cnl7SChjKSx2b2lkIDA9PWU/dGhpcy5hLnNldChiLEFhKGYsZCkpOnRoaXMuYS5zZXQoYixlKX1jYXRjaChCZSl7dGhyb3cgUmEoImV4YyIsYSxCZSYmQmUubmFtZSksQmU7fX19LFRlPWZ1bmN0aW9uKGEsYil7cmV0dXJue3R5cGU6Yix0YXJnZXQ6YSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aHJvdyJhYm9ydGVkIjt9fX07dmFyIFJjPW5ldyBSZWdFeHAoLyhefFwuKWRvdWJsZWNsaWNrXC5uZXQkL2kpLFNjPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFJjLnRlc3QoSi5sb2NhdGlvbi5ob3N0bmFtZSk/ITA6Ii8iIT09Yj8hMTowIT1hLmluZGV4T2YoInd3dy5nb29nbGUuIikmJjAhPWEuaW5kZXhPZigiLmdvb2dsZS4iKSYmMCE9YS5pbmRleE9mKCJnb29nbGUuIil8fC0xPGEuaW5kZXhPZigiZ29vZ2xlLm9yZyIpPyExOiEwfSxUYz1mdW5jdGlvbihhKXt2YXIgYj1hLmdldChiYiksYz1hLmMoUCwiLyIpO1NjKGIsYykmJmEuc3RvcFByb3BhZ2F0aW9uKCl9O3ZhciBaYz1mdW5jdGlvbigpe3ZhciBhPXt9LGI9e30sYz1uZXcgVWM7dGhpcy5nPWZ1bmN0aW9uKGEsYil7Yy5hZGQoYSxiKX07dmFyIGQ9bmV3IFVjO3RoaXMudj1mdW5jdGlvbihhLGIpe2QuYWRkKGEsYil9O3ZhciBlPSExLGY9ITEsQmU9ITA7dGhpcy5UPWZ1bmN0aW9uKCl7ZT0hMH07dGhpcy5qPWZ1bmN0aW9uKGEpe3RoaXMubG9hZCgpO3RoaXMuc2V0KHNjLGEsITApO2E9bmV3IFZjKHRoaXMpO2U9ITE7ZC5jYih0aGlzKTtlPSEwO2I9e307dGhpcy5zdG9yZSgpO2EuSmEoKX07dGhpcy5sb2FkPWZ1bmN0aW9uKCl7ZSYmKGU9ITEsdGhpcy5LYSgpLFdjKHRoaXMpLGZ8fChmPSEwLGMuY2IodGhpcyksWGModGhpcyksV2ModGhpcykpLGU9ITApfTt0aGlzLnN0b3JlPWZ1bmN0aW9uKCl7ZSYmKGY/KGU9ITEsWGModGhpcyksZT0hMCk6dGhpcy5sb2FkKCkpfTt0aGlzLmdldD1mdW5jdGlvbihjKXtVYVtjXSYmdGhpcy5sb2FkKCk7cmV0dXJuIHZvaWQgMCE9PWJbY10/YltjXTphW2NdfTsKdGhpcy5zZXQ9ZnVuY3Rpb24oYyxkLGUpe1VhW2NdJiZ0aGlzLmxvYWQoKTtlP2JbY109ZDphW2NdPWQ7VWFbY10mJnRoaXMuc3RvcmUoKX07dGhpcy5aYT1mdW5jdGlvbihiKXthW2JdPXRoaXMuYihiLDApKzF9O3RoaXMuYj1mdW5jdGlvbihhLGIpe2E9dGhpcy5nZXQoYSk7cmV0dXJuIHZvaWQgMD09YXx8IiI9PT1hP2I6MSphfTt0aGlzLmM9ZnVuY3Rpb24oYSxiKXthPXRoaXMuZ2V0KGEpO3JldHVybiB2b2lkIDA9PWE/YjphKyIifTt0aGlzLkthPWZ1bmN0aW9uKCl7aWYoQmUpe3ZhciBiPXRoaXMuYyhiYiwiIiksYz10aGlzLmMoUCwiLyIpO1NjKGIsYyl8fChhW09dPWFbaGJdJiYiIiE9Yj9ZYyhiKToxLEJlPSExKX19fTtaYy5wcm90b3R5cGUuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7dGhyb3ciYWJvcnRlZCI7fTsKdmFyIFZjPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7dGhpcy5mYj0wO3ZhciBjPWEuZ2V0KHRjKTt0aGlzLlVhPWZ1bmN0aW9uKCl7MDxiLmZiJiZjJiYoYi5mYi0tLGIuZmJ8fGMoKSl9O3RoaXMuSmE9ZnVuY3Rpb24oKXshYi5mYiYmYyYmc2V0VGltZW91dChjLDEwKX07YS5zZXQodWMsYiwhMCl9O2Z1bmN0aW9uICRjKGEsYil7Yj1ifHxbXTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9YltjXTtpZigiIithPT1kfHwwPT1kLmluZGV4T2YoYSsiLiIpKXJldHVybiBkfXJldHVybiItIn0KdmFyIGJkPWZ1bmN0aW9uKGEsYixjKXtjPWM/IiI6YS5jKE8sIjEiKTtiPWIuc3BsaXQoIi4iKTtpZig2IT09Yi5sZW5ndGh8fGFkKGJbMF0sYykpcmV0dXJuITE7Yz0xKmJbMV07dmFyIGQ9MSpiWzJdLGU9MSpiWzNdLGY9MSpiWzRdO2I9MSpiWzVdO2lmKCEoMDw9YyYmMDxkJiYwPGUmJjA8ZiYmMDw9YikpcmV0dXJuITE7YS5zZXQoUSxjKTthLnNldChWYixkKTthLnNldChXYixlKTthLnNldChaYixmKTthLnNldCgkYixiKTtyZXR1cm4hMH0sY2Q9ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXQoUSksYz1hLmdldChWYiksZD1hLmdldChXYiksZT1hLmdldChaYiksZj1hLmIoJGIsMSk7cmV0dXJuW2EuYihPLDEpLHZvaWQgMCE9Yj9iOiItIixjfHwiLSIsZHx8Ii0iLGV8fCItIixmXS5qb2luKCIuIil9LGRkPWZ1bmN0aW9uKGEpe3JldHVyblthLmIoTywxKSxhLmIoY2MsMCksYS5iKFIsMSksYS5iKGRjLDApXS5qb2luKCIuIil9LGVkPWZ1bmN0aW9uKGEsYixjKXtjPWM/IiI6YS5jKE8sCiIxIik7dmFyIGQ9Yi5zcGxpdCgiLiIpO2lmKDQhPT1kLmxlbmd0aHx8YWQoZFswXSxjKSlkPW51bGw7YS5zZXQoY2MsZD8xKmRbMV06MCk7YS5zZXQoUixkPzEqZFsyXToxMCk7YS5zZXQoZGMsZD8xKmRbM106YS5nZXQoYWIpKTtyZXR1cm4gbnVsbCE9ZHx8IWFkKGIsYyl9LGZkPWZ1bmN0aW9uKGEsYil7dmFyIGM9RyhhLmMoVGIsIiIpKSxkPVtdLGU9YS5nZXQoRmIpO2lmKCFiJiZlKXtmb3IoYj0wO2I8ZS5sZW5ndGg7YisrKXt2YXIgZj1lW2JdO2YmJjE9PWYuc2NvcGUmJmQucHVzaChiKyI9IitHKGYubmFtZSkrIj0iK0coZi52YWx1ZSkrIj0xIil9MDxkLmxlbmd0aCYmKGMrPSJ8IitkLmpvaW4oIl4iKSl9cmV0dXJuIGM/YS5iKE8sMSkrIi4iK2M6bnVsbH0sZ2Q9ZnVuY3Rpb24oYSxiLGMpe2M9Yz8iIjphLmMoTywiMSIpO2I9Yi5zcGxpdCgiLiIpO2lmKDI+Yi5sZW5ndGh8fGFkKGJbMF0sYykpcmV0dXJuITE7Yj1iLnNsaWNlKDEpLmpvaW4oIi4iKS5zcGxpdCgifCIpOzA8Yi5sZW5ndGgmJgphLnNldChUYixJKGJbMF0pKTtpZigxPj1iLmxlbmd0aClyZXR1cm4hMDtiPWJbMV0uc3BsaXQoLTE9PWJbMV0uaW5kZXhPZigiLCIpPyJeIjoiLCIpO2ZvcihjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWJbY10uc3BsaXQoIj0iKTtpZig0PT1kLmxlbmd0aCl7dmFyIGU9e307ZS5uYW1lPUkoZFsxXSk7ZS52YWx1ZT1JKGRbMl0pO2Uuc2NvcGU9MTthLmdldChGYilbZFswXV09ZX19cmV0dXJuITB9LGhkPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGI9VWUoYSxiKSk/W2EuYihPLDEpLGEuYihlYywwKSxhLmIoZmMsMSksYS5iKGdjLDEpLGJdLmpvaW4oIi4iKToiIn0sVWU9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihiLGUpe0YoYS5nZXQoYikpfHwoYj1hLmMoYiwiIiksYj1iLnNwbGl0KCIgIikuam9pbigiJTIwIiksYj1iLnNwbGl0KCIrIikuam9pbigiJTIwIiksYy5wdXNoKGUrIj0iK2IpKX12YXIgYz1bXTtiKGljLCJ1dG1jaWQiKTtiKG5jLCJ1dG1jc3IiKTtiKFMsInV0bWdjbGlkIik7CmIoa2MsInV0bWdjbHNyYyIpO2IobGMsInV0bWRjbGlkIik7YihtYywidXRtZHNpZCIpO2IoamMsInV0bWNjbiIpO2Iob2MsInV0bWNtZCIpO2IocGMsInV0bWN0ciIpO2IocWMsInV0bWNjdCIpO3JldHVybiBjLmpvaW4oInwiKX0saWQ9ZnVuY3Rpb24oYSxiLGMpe2M9Yz8iIjphLmMoTywiMSIpO2I9Yi5zcGxpdCgiLiIpO2lmKDU+Yi5sZW5ndGh8fGFkKGJbMF0sYykpcmV0dXJuIGEuc2V0KGVjLHZvaWQgMCksYS5zZXQoZmMsdm9pZCAwKSxhLnNldChnYyx2b2lkIDApLGEuc2V0KGljLHZvaWQgMCksYS5zZXQoamMsdm9pZCAwKSxhLnNldChuYyx2b2lkIDApLGEuc2V0KG9jLHZvaWQgMCksYS5zZXQocGMsdm9pZCAwKSxhLnNldChxYyx2b2lkIDApLGEuc2V0KFMsdm9pZCAwKSxhLnNldChrYyx2b2lkIDApLGEuc2V0KGxjLHZvaWQgMCksYS5zZXQobWMsdm9pZCAwKSwhMTthLnNldChlYywxKmJbMV0pO2Euc2V0KGZjLDEqYlsyXSk7YS5zZXQoZ2MsMSpiWzNdKTtWZShhLGIuc2xpY2UoNCkuam9pbigiLiIpKTsKcmV0dXJuITB9LFZlPWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhKXtyZXR1cm4oYT1iLm1hdGNoKGErIj0oLio/KSg/OlxcfHV0bXwkKSIpKSYmMj09YS5sZW5ndGg/YVsxXTp2b2lkIDB9ZnVuY3Rpb24gZChiLGMpe2M/KGM9ZT9JKGMpOmMuc3BsaXQoIiUyMCIpLmpvaW4oIiAiKSxhLnNldChiLGMpKTphLnNldChiLHZvaWQgMCl9LTE9PWIuaW5kZXhPZigiPSIpJiYoYj1JKGIpKTt2YXIgZT0iMiI9PWMoInV0bWN2ciIpO2QoaWMsYygidXRtY2lkIikpO2QoamMsYygidXRtY2NuIikpO2QobmMsYygidXRtY3NyIikpO2Qob2MsYygidXRtY21kIikpO2QocGMsYygidXRtY3RyIikpO2QocWMsYygidXRtY2N0IikpO2QoUyxjKCJ1dG1nY2xpZCIpKTtkKGtjLGMoInV0bWdjbHNyYyIpKTtkKGxjLGMoInV0bWRjbGlkIikpO2QobWMsYygidXRtZHNpZCIpKX0sYWQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9hIT1iOiEvXlxkKyQvLnRlc3QoYSl9O3ZhciBVYz1mdW5jdGlvbigpe3RoaXMuZmlsdGVycz1bXX07VWMucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhLGIpe3RoaXMuZmlsdGVycy5wdXNoKHtuYW1lOmEsczpifSl9O1VjLnByb3RvdHlwZS5jYj1mdW5jdGlvbihhKXt0cnl7Zm9yKHZhciBiPTA7Yjx0aGlzLmZpbHRlcnMubGVuZ3RoO2IrKyl0aGlzLmZpbHRlcnNbYl0ucy5jYWxsKFcsYSl9Y2F0Y2goYyl7fX07ZnVuY3Rpb24gamQoYSl7MTAwIT1hLmdldCh2YikmJmEuZ2V0KFEpJTFFND49MTAwKmEuZ2V0KHZiKSYmYS5zdG9wUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBrZChhKXtsZChhLmdldChXYSkpJiZhLnN0b3BQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIG1kKGEpeyJmaWxlOiI9PUoubG9jYXRpb24ucHJvdG9jb2wmJmEuc3RvcFByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gR2UoYSl7SGUoKSYmYS5zdG9wUHJvcGFnYXRpb24oKX0KZnVuY3Rpb24gbmQoYSl7YS5nZXQoSWIpfHxhLnNldChJYixKLnRpdGxlLCEwKTthLmdldChIYil8fGEuc2V0KEhiLEoubG9jYXRpb24ucGF0aG5hbWUrSi5sb2NhdGlvbi5zZWFyY2gsITApfWZ1bmN0aW9uIGxmKGEpe2EuZ2V0KFdhKSYmIlVBLVhYWFhYLVgiIT1hLmdldChXYSl8fGEuc3RvcFByb3BhZ2F0aW9uKCl9O3ZhciBvZD1uZXcgZnVuY3Rpb24oKXt2YXIgYT1bXTt0aGlzLnNldD1mdW5jdGlvbihiKXthW2JdPSEwfTt0aGlzLmVuY29kZT1mdW5jdGlvbigpe2Zvcih2YXIgYj1bXSxjPTA7YzxhLmxlbmd0aDtjKyspYVtjXSYmKGJbTWF0aC5mbG9vcihjLzYpXV49MTw8YyU2KTtmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKWJbY109IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV8iLmNoYXJBdChiW2NdfHwwKTtyZXR1cm4gYi5qb2luKCIiKSsifiJ9fTtmdW5jdGlvbiBIKGEpe29kLnNldChhKX07dmFyIFc9d2luZG93LEo9ZG9jdW1lbnQsbGQ9ZnVuY3Rpb24oYSl7dmFyIGI9Vy5fZ2FVc2VyUHJlZnM7aWYoYiYmYi5pb28mJmIuaW9vKCl8fGEmJiEwPT09V1siZ2EtZGlzYWJsZS0iK2FdKXJldHVybiEwO3RyeXt2YXIgYz1XLmV4dGVybmFsO2lmKGMmJmMuX2dhVXNlclByZWZzJiYib28iPT1jLl9nYVVzZXJQcmVmcylyZXR1cm4hMH1jYXRjaChkKXt9cmV0dXJuITF9LEhlPWZ1bmN0aW9uKCl7cmV0dXJuIFcubmF2aWdhdG9yJiYicHJldmlldyI9PVcubmF2aWdhdG9yLmxvYWRQdXJwb3NlfSxXZT1mdW5jdGlvbihhLGIpe3NldFRpbWVvdXQoYSxiKX0scGQ9ZnVuY3Rpb24oYSl7dmFyIGI9W10sYz1KLmNvb2tpZS5zcGxpdCgiOyIpO2E9bmV3IFJlZ0V4cCgiXlxccyoiK2ErIj1cXHMqKC4qPylcXHMqJCIpO2Zvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdLm1hdGNoKGEpO2UmJmIucHVzaChlWzFdKX1yZXR1cm4gYn0sWD1mdW5jdGlvbihhLGIsYyxkLGUsZil7ZT0KbGQoZSk/ITE6U2MoZCxjKT8hMTpIZSgpPyExOiEwO2UmJigoYj1tZihiKSkmJjJFMzxiLmxlbmd0aCYmKGI9Yi5zdWJzdHJpbmcoMCwyRTMpLEgoNjkpKSxhPWErIj0iK2IrIjsgcGF0aD0iK2MrIjsgIixmJiYoYSs9ImV4cGlyZXM9IisobmV3IERhdGUoKG5ldyBEYXRlKS5nZXRUaW1lKCkrZikpLnRvR01UU3RyaW5nKCkrIjsgIiksZCYmKGErPSJkb21haW49IitkKyI7IiksSi5jb29raWU9YSl9LG1mPWZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiBhO3ZhciBiPWEuaW5kZXhPZigiOyIpOy0xIT1iJiYoYT1hLnN1YnN0cmluZygwLGIpLEgoMTQxKSk7aWYoISgwPD1XLm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiRmlyZWZveCIpKSlyZXR1cm4gYTthPWEucmVwbGFjZSgvXG58XHIvZywiICIpO2I9MDtmb3IodmFyIGM9YS5sZW5ndGg7YjxjOysrYil7dmFyIGQ9YS5jaGFyQ29kZUF0KGIpJjI1NTtpZigxMD09ZHx8MTM9PWQpYT1hLnN1YnN0cmluZygwLGIpKyI/IithLnN1YnN0cmluZyhiKwoxKX1yZXR1cm4gYX07dmFyIEEsQj0vXi4qVmVyc2lvblwvPyhcZCspW15cZF0uKiQvaTt2YXIgcWQscmQsc2Q9ZnVuY3Rpb24oKXtpZighcWQpe3ZhciBhPXt9LGI9Vy5uYXZpZ2F0b3IsYz1XLnNjcmVlbjthLmpiPWM/Yy53aWR0aCsieCIrYy5oZWlnaHQ6Ii0iO2EuUD1jP2MuY29sb3JEZXB0aCsiLWJpdCI6Ii0iO2EubGFuZ3VhZ2U9KGImJihiLmxhbmd1YWdlfHxiLmJyb3dzZXJMYW5ndWFnZSl8fCItIikudG9Mb3dlckNhc2UoKTthLmphdmFFbmFibGVkPWImJmIuamF2YUVuYWJsZWQoKT8xOjA7YS5jaGFyYWN0ZXJTZXQ9Si5jaGFyYWN0ZXJTZXR8fEouY2hhcnNldHx8Ii0iO3RyeXt2YXIgZD1KLmRvY3VtZW50RWxlbWVudCxlPUouYm9keSxmPWUmJmUuY2xpZW50V2lkdGgmJmUuY2xpZW50SGVpZ2h0O2I9W107ZCYmZC5jbGllbnRXaWR0aCYmZC5jbGllbnRIZWlnaHQmJigiQ1NTMUNvbXBhdCI9PT1KLmNvbXBhdE1vZGV8fCFmKT9iPVtkLmNsaWVudFdpZHRoLGQuY2xpZW50SGVpZ2h0XTpmJiYoYj1bZS5jbGllbnRXaWR0aCxlLmNsaWVudEhlaWdodF0pO3ZhciBCZT0KMD49YlswXXx8MD49YlsxXT8iIjpiLmpvaW4oIngiKTthLldhPUJlfWNhdGNoKGspe0goMTM1KX1xZD1hfX0sdGQ9ZnVuY3Rpb24oKXtzZCgpO3ZhciBhPXFkLGI9Vy5uYXZpZ2F0b3I7YT1iLmFwcE5hbWUrYi52ZXJzaW9uK2EubGFuZ3VhZ2UrYi5wbGF0Zm9ybStiLnVzZXJBZ2VudCthLmphdmFFbmFibGVkK2EuamIrYS5QKyhKLmNvb2tpZT9KLmNvb2tpZToiIikrKEoucmVmZXJyZXI/Si5yZWZlcnJlcjoiIik7Yj1hLmxlbmd0aDtmb3IodmFyIGM9Vy5oaXN0b3J5Lmxlbmd0aDswPGM7KWErPWMtLV5iKys7cmV0dXJuIFljKGEpfSx1ZD1mdW5jdGlvbihhKXtzZCgpO3ZhciBiPXFkO2Euc2V0KExiLGIuamIpO2Euc2V0KE1iLGIuUCk7YS5zZXQoUGIsYi5sYW5ndWFnZSk7YS5zZXQoUWIsYi5jaGFyYWN0ZXJTZXQpO2Euc2V0KE5iLGIuamF2YUVuYWJsZWQpO2Euc2V0KFJiLGIuV2EpO2lmKGEuZ2V0KGliKSYmYS5nZXQoamIpKXtpZighKGI9cmQpKXt2YXIgYyxkO3ZhciBlPSJTaG9ja3dhdmVGbGFzaCI7CmlmKChiPShiPVcubmF2aWdhdG9yKT9iLnBsdWdpbnM6dm9pZCAwKSYmMDxiLmxlbmd0aClmb3IoYz0wO2M8Yi5sZW5ndGgmJiFkO2MrKyllPWJbY10sLTE8ZS5uYW1lLmluZGV4T2YoIlNob2Nrd2F2ZSBGbGFzaCIpJiYoZD1lLmRlc2NyaXB0aW9uLnNwbGl0KCJTaG9ja3dhdmUgRmxhc2ggIilbMV0pO2Vsc2V7ZT1lKyIuIitlO3RyeXtjPW5ldyBBY3RpdmVYT2JqZWN0KGUrIi43IiksZD1jLkdldFZhcmlhYmxlKCIkdmVyc2lvbiIpfWNhdGNoKGYpe31pZighZCl0cnl7Yz1uZXcgQWN0aXZlWE9iamVjdChlKyIuNiIpLGQ9IldJTiA2LDAsMjEsMCIsYy5BbGxvd1NjcmlwdEFjY2Vzcz0iYWx3YXlzIixkPWMuR2V0VmFyaWFibGUoIiR2ZXJzaW9uIil9Y2F0Y2goZil7fWlmKCFkKXRyeXtjPW5ldyBBY3RpdmVYT2JqZWN0KGUpLGQ9Yy5HZXRWYXJpYWJsZSgiJHZlcnNpb24iKX1jYXRjaChmKXt9ZCYmKGQ9ZC5zcGxpdCgiICIpWzFdLnNwbGl0KCIsIiksZD1kWzBdKyIuIitkWzFdKyIgciIrCmRbMl0pfWI9ZD9kOiItIn1yZD1iO2Euc2V0KE9iLHJkKX1lbHNlIGEuc2V0KE9iLCItIil9O3ZhciB2ZD1mdW5jdGlvbihhKXtpZihCYShhKSl0aGlzLnM9YTtlbHNle3ZhciBiPWFbMF0sYz1iLmxhc3RJbmRleE9mKCI6IiksZD1iLmxhc3RJbmRleE9mKCIuIik7dGhpcy5oPXRoaXMuaT10aGlzLmw9IiI7LTE9PWMmJi0xPT1kP3RoaXMuaD1iOi0xPT1jJiYtMSE9ZD8odGhpcy5pPWIuc3Vic3RyaW5nKDAsZCksdGhpcy5oPWIuc3Vic3RyaW5nKGQrMSkpOi0xIT1jJiYtMT09ZD8odGhpcy5sPWIuc3Vic3RyaW5nKDAsYyksdGhpcy5oPWIuc3Vic3RyaW5nKGMrMSkpOmM+ZD8odGhpcy5pPWIuc3Vic3RyaW5nKDAsZCksdGhpcy5sPWIuc3Vic3RyaW5nKGQrMSxjKSx0aGlzLmg9Yi5zdWJzdHJpbmcoYysxKSk6KHRoaXMuaT1iLnN1YnN0cmluZygwLGQpLHRoaXMuaD1iLnN1YnN0cmluZyhkKzEpKTt0aGlzLlhhPWEuc2xpY2UoMSk7dGhpcy5NYT0hdGhpcy5sJiYiX3JlcXVpcmUiPT10aGlzLmg7dGhpcy5KPSF0aGlzLmkmJiF0aGlzLmwmJiJfcHJvdmlkZSI9PXRoaXMuaH19LFk9ZnVuY3Rpb24oKXtUKFkucHJvdG90eXBlLAoicHVzaCIsWS5wcm90b3R5cGUucHVzaCw1KTtUKFkucHJvdG90eXBlLCJfZ2V0UGx1Z2luIixQYywxMjEpO1QoWS5wcm90b3R5cGUsIl9jcmVhdGVBc3luY1RyYWNrZXIiLFkucHJvdG90eXBlLlNhLDMzKTtUKFkucHJvdG90eXBlLCJfZ2V0QXN5bmNUcmFja2VyIixZLnByb3RvdHlwZS5UYSwzNCk7dGhpcy5JPW5ldyBuZjt0aGlzLmViPVtdfTtFPVkucHJvdG90eXBlO0UuTmE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuSS5nZXQoYSk7aWYoIUJhKGQpKXJldHVybiExO2IucGx1Z2luc189Yi5wbHVnaW5zX3x8bmV3IG5mO2IucGx1Z2luc18uc2V0KGEsbmV3IGQoYixjfHx7fSkpO3JldHVybiEwfTtFLnB1c2g9ZnVuY3Rpb24oYSl7dmFyIGI9Wi5WYS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7Yj1aLmViLmNvbmNhdChiKTtmb3IoWi5lYj1bXTswPGIubGVuZ3RoJiYhWi5PKGJbMF0pJiYhKGIuc2hpZnQoKSwwPFouZWIubGVuZ3RoKTspO1ouZWI9Wi5lYi5jb25jYXQoYik7cmV0dXJuIDB9OwpFLlZhPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTA7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl0cnl7dmFyIGQ9bmV3IHZkKGFyZ3VtZW50c1tjXSk7ZC5KP3RoaXMuTyhkKTpiLnB1c2goZCl9Y2F0Y2goZSl7fXJldHVybiBifTsKRS5PPWZ1bmN0aW9uKGEpe3RyeXtpZihhLnMpYS5zLmFwcGx5KFcpO2Vsc2UgaWYoYS5KKXRoaXMuSS5zZXQoYS5YYVswXSxhLlhhWzFdKTtlbHNle3ZhciBiPSJfZ2F0Ij09YS5pP006Il9nYXEiPT1hLmk/WjpNLnUoYS5pKTtpZihhLk1hKXtpZighdGhpcy5OYShhLlhhWzBdLGIsYS5YYVsyXSkpe2lmKCFhLlBhKXt2YXIgYz1PYSgiIithLlhhWzFdKTt2YXIgZD1jLnByb3RvY29sLGU9Si5sb2NhdGlvbi5wcm90b2NvbDt2YXIgZjtpZihmPSJodHRwczoiPT1kfHxkPT1lPyEwOiJodHRwOiIhPWQ/ITE6Imh0dHA6Ij09ZSlhOnt2YXIgQmU9T2EoSi5sb2NhdGlvbi5ocmVmKTtpZighKGMucXVlcnl8fDA8PWMudXJsLmluZGV4T2YoIj8iKXx8MDw9Yy5wYXRoLmluZGV4T2YoIjovLyIpfHxjLmhvc3Q9PUJlLmhvc3QmJmMucG9ydD09QmUucG9ydCkpe3ZhciBrPSJodHRwOiI9PWMucHJvdG9jb2w/ODA6NDQzLEphPU0uUztmb3IoYj0wO2I8SmEubGVuZ3RoO2IrKylpZihjLmhvc3Q9PUphW2JdWzBdJiYKKGMucG9ydHx8ayk9PShKYVtiXVsxXXx8aykmJjA9PWMucGF0aC5pbmRleE9mKEphW2JdWzJdKSl7Zj0hMDticmVhayBhfX1mPSExfWYmJiFsZCgpJiYoYS5QYT1JYShjLnVybCkpfXJldHVybiEwfX1lbHNlIGEubCYmKGI9Yi5wbHVnaW5zXy5nZXQoYS5sKSksYlthLmhdLmFwcGx5KGIsYS5YYSl9fWNhdGNoKHQpe319O0UuU2E9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gTS5oYihhLGJ8fCIiKX07RS5UYT1mdW5jdGlvbihhKXtyZXR1cm4gTS51KGEpfTt2YXIgeWQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYixjLGQpe3ZvaWQgMD09ZlthXSYmKGZbYV09e30pO3ZvaWQgMD09ZlthXVtiXSYmKGZbYV1bYl09W10pO2ZbYV1bYl1bY109ZH1mdW5jdGlvbiBiKGEsYixjKXtpZih2b2lkIDAhPWZbYV0mJnZvaWQgMCE9ZlthXVtiXSlyZXR1cm4gZlthXVtiXVtjXX1mdW5jdGlvbiBjKGEsYil7aWYodm9pZCAwIT1mW2FdJiZ2b2lkIDAhPWZbYV1bYl0pe2ZbYV1bYl09dm9pZCAwO2I9ITA7dmFyIGM7Zm9yKGM9MDtjPEJlLmxlbmd0aDtjKyspaWYodm9pZCAwIT1mW2FdW0JlW2NdXSl7Yj0hMTticmVha31iJiYoZlthXT12b2lkIDApfX1mdW5jdGlvbiBkKGEpe3ZhciBiPSIiLGM9ITEsZDtmb3IoZD0wO2Q8QmUubGVuZ3RoO2QrKyl7dmFyIGU9YVtCZVtkXV07aWYodm9pZCAwIT1lKXtjJiYoYis9QmVbZF0pO3ZhciBmPWUsSmE9W107Zm9yKGU9MDtlPGYubGVuZ3RoO2UrKylpZih2b2lkIDAhPWZbZV0pe2M9IiI7MSE9ZSYmdm9pZCAwPT1mW2UtCjFdJiYoYys9ZS50b1N0cmluZygpKyIhIik7dmFyIGZhLEtlPWZbZV0sTGU9IiI7Zm9yKGZhPTA7ZmE8S2UubGVuZ3RoO2ZhKyspe3ZhciBNZT1LZS5jaGFyQXQoZmEpO3ZhciBtPWtbTWVdO0xlKz12b2lkIDAhPW0/bTpNZX1jKz1MZTtKYS5wdXNoKGMpfWIrPSIoIitKYS5qb2luKCIqIikrIikiO2M9ITF9ZWxzZSBjPSEwfXJldHVybiBifXZhciBlPXRoaXMsZj1bXSxCZT1bImsiLCJ2Il0saz17IiciOiInMCIsIikiOiInMSIsIioiOiInMiIsIiEiOiInMyJ9O2UuUmE9ZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMCE9ZlthXX07ZS5BPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPSIiLGI9MDtiPGYubGVuZ3RoO2IrKyl2b2lkIDAhPWZbYl0mJihhKz1iLnRvU3RyaW5nKCkrZChmW2JdKSk7cmV0dXJuIGF9O2UuUWE9ZnVuY3Rpb24oYSl7aWYodm9pZCAwPT1hKXJldHVybiBlLkEoKTtmb3IodmFyIGI9YS5BKCksYz0wO2M8Zi5sZW5ndGg7YysrKXZvaWQgMD09ZltjXXx8YS5SYShjKXx8KGIrPQpjLnRvU3RyaW5nKCkrZChmW2NdKSk7cmV0dXJuIGJ9O2UuZj1mdW5jdGlvbihiLGMsZCl7aWYoIXdkKGQpKXJldHVybiExO2EoYiwiayIsYyxkKTtyZXR1cm4hMH07ZS5vPWZ1bmN0aW9uKGIsYyxkKXtpZigheGQoZCkpcmV0dXJuITE7YShiLCJ2IixjLGQudG9TdHJpbmcoKSk7cmV0dXJuITB9O2UuZ2V0S2V5PWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGIoYSwiayIsYyl9O2UuTj1mdW5jdGlvbihhLGMpe3JldHVybiBiKGEsInYiLGMpfTtlLkw9ZnVuY3Rpb24oYSl7YyhhLCJrIil9O2UuTT1mdW5jdGlvbihhKXtjKGEsInYiKX07VChlLCJfc2V0S2V5IixlLmYsODkpO1QoZSwiX3NldFZhbHVlIixlLm8sOTApO1QoZSwiX2dldEtleSIsZS5nZXRLZXksODcpO1QoZSwiX2dldFZhbHVlIixlLk4sODgpO1QoZSwiX2NsZWFyS2V5IixlLkwsODUpO1QoZSwiX2NsZWFyVmFsdWUiLGUuTSw4Nil9O2Z1bmN0aW9uIHdkKGEpe3JldHVybiJzdHJpbmciPT10eXBlb2YgYX0KZnVuY3Rpb24geGQoYSl7cmV0dXJuISgibnVtYmVyIj09dHlwZW9mIGF8fHZvaWQgMCE9TnVtYmVyJiZhIGluc3RhbmNlb2YgTnVtYmVyKXx8TWF0aC5yb3VuZChhKSE9YXx8aXNOYU4oYSl8fEluZmluaXR5PT1hPyExOiEwfTt2YXIgemQ9ZnVuY3Rpb24oYSl7dmFyIGI9Vy5nYUdsb2JhbDthJiYhYiYmKFcuZ2FHbG9iYWw9Yj17fSk7cmV0dXJuIGJ9LEFkPWZ1bmN0aW9uKCl7dmFyIGE9emQoITApLmhpZDtudWxsPT1hJiYoYT1FYSgpLHpkKCEwKS5oaWQ9YSk7cmV0dXJuIGF9LERkPWZ1bmN0aW9uKGEpe2Euc2V0KEtiLEFkKCkpO3ZhciBiPXpkKCk7aWYoYiYmYi5kaD09YS5nZXQoTykpe3ZhciBjPWIuc2lkO2MmJihhLmdldChhYyk/SCgxMTIpOkgoMTMyKSxhLnNldChaYixjKSxhLmdldChTYikmJmEuc2V0KFdiLGMpKTtiPWIudmlkO2EuZ2V0KFNiKSYmYiYmKGI9Yi5zcGxpdCgiLiIpLGEuc2V0KFEsMSpiWzBdKSxhLnNldChWYiwxKmJbMV0pKX19O3ZhciBFZCxGZD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLmMoYmIsIiIpLGY9YS5jKFAsIi8iKTtkPXZvaWQgMCE9ZD9kOmEuYihjYiwwKTthPWEuYyhXYSwiIik7WChiLGMsZixlLGEsZCl9LFhjPWZ1bmN0aW9uKGEpe3ZhciBiPWEuYyhiYiwiIiksYz1hLmMoUCwiLyIpLGQ9YS5jKFdhLCIiKTtYKCJfX3V0bWEiLGNkKGEpLGMsYixkLGEuZ2V0KGNiKSk7WCgiX191dG1iIixkZChhKSxjLGIsZCxhLmdldChkYikpO1goIl9fdXRtYyIsIiIrYS5iKE8sMSksYyxiLGQpO3ZhciBlPWhkKGEsITApO2U/WCgiX191dG16IixlLGMsYixkLGEuZ2V0KGViKSk6WCgiX191dG16IiwiIixjLGIsIiIsLTEpOyhlPWZkKGEsITEpKT9YKCJfX3V0bXYiLGUsYyxiLGQsYS5nZXQoY2IpKTpYKCJfX3V0bXYiLCIiLGMsYiwiIiwtMSk7aWYoMT09YS5nZXQodikmJihlPWEuZ2V0KHcpKSl7dmFyIGY9YS5nZXQoeCk7Yj1hLmMoYmIsIiIpO2M9YS5jKFAsIi8iKTtkPWEuYyhXYSwiIik7dmFyIEJlPWEuYih5LAowKTthPU1hdGgubWluKGEuYihjYiw3Nzc2RTYpLGEuYihlYiw3Nzc2RTYpLDc3NzZFNik7YT1NYXRoLm1pbihhLDFFMypCZSthLShuZXcgRGF0ZSkuZ2V0VGltZSgpKTtpZighZnx8ImF3LmRzIj09ZilpZihmPVsiMSIsQmUrIiIscShlKV0uam9pbigiLiIpLDA8YSYmKGU9Il9nYWNfIitxKGQpLCEocChkKXx8dS50ZXN0KEoubG9jYXRpb24uaG9zdG5hbWUpfHwiLyI9PWMmJnIudGVzdChiKSkmJigoZD1mKSYmMTIwMDxkLmxlbmd0aCYmKGQ9ZC5zdWJzdHJpbmcoMCwxMjAwKSksYz1lKyI9IitkKyI7IHBhdGg9IitjKyI7ICIsYSYmKGMrPSJleHBpcmVzPSIrKG5ldyBEYXRlKChuZXcgRGF0ZSkuZ2V0VGltZSgpK2EpKS50b0dNVFN0cmluZygpKyI7ICIpLGImJiJub25lIiE9PWImJihjKz0iZG9tYWluPSIrYisiOyIpLGI9Si5jb29raWUsSi5jb29raWU9YyxiPT1KLmNvb2tpZSkpKWZvcihiPVtdLGM9Si5jb29raWUuc3BsaXQoIjsiKSxhPW5ldyBSZWdFeHAoIl5cXHMqIitlKyI9XFxzKiguKj8pXFxzKiQiKSwKZD0wO2Q8Yy5sZW5ndGg7ZCsrKShlPWNbZF0ubWF0Y2goYSkpJiZiLnB1c2goZVsxXSl9fSxXYz1mdW5jdGlvbihhKXt2YXIgYj1hLmIoTywxKTtpZighYmQoYSwkYyhiLHBkKCJfX3V0bWEiKSkpKXJldHVybiBhLnNldChVYiwhMCksITE7dmFyIGM9IWVkKGEsJGMoYixwZCgiX191dG1iIikpKTthLnNldChiYyxjKTtpZChhLCRjKGIscGQoIl9fdXRteiIpKSk7Z2QoYSwkYyhiLHBkKCJfX3V0bXYiKSkpO2lmKDE9PWEuZ2V0KHYpKXtiPWEuZ2V0KHcpO3ZhciBkPWEuZ2V0KHgpO2lmKCFifHxkJiYiYXcuZHMiIT1kKXtpZihKKXtiPVtdO2Q9Si5jb29raWUuc3BsaXQoIjsiKTtmb3IodmFyIGU9L15ccypfZ2FjXyhVQS1cZCstXGQrKT1ccyooLis/KVxzKiQvLGY9MDtmPGQubGVuZ3RoO2YrKyl7dmFyIEJlPWRbZl0ubWF0Y2goZSk7QmUmJmIucHVzaCh7T2E6QmVbMV0sdmFsdWU6QmVbMl19KX1kPXt9O2lmKGImJmIubGVuZ3RoKWZvcihlPTA7ZTxiLmxlbmd0aDtlKyspZj1iW2VdLnZhbHVlLnNwbGl0KCIuIiksCiIxIj09ZlswXSYmMz09Zi5sZW5ndGgmJmZbMV0mJihkW2JbZV0uT2FdfHwoZFtiW2VdLk9hXT1bXSksZFtiW2VdLk9hXS5wdXNoKHt0aW1lc3RhbXA6ZlsxXSxrYjpmWzJdfSkpO2I9ZH1lbHNlIGI9e307KGI9YlthLmdldChXYSldKSYmMDxiLmxlbmd0aCYmKGI9YlswXSxhLnNldCh5LGIudGltZXN0YW1wKSxhLnNldCh3LGIua2IpLGEuc2V0KHgsdm9pZCAwKSl9fUVkPSFjO3JldHVybiEwfSxHZD1mdW5jdGlvbihhKXtFZHx8MDxwZCgiX191dG1iIikubGVuZ3RofHwoWCgiX191dG1kIiwiMSIsYS5jKFAsIi8iKSxhLmMoYmIsIiIpLGEuYyhXYSwiIiksMUU0KSwwPT1wZCgiX191dG1kIikubGVuZ3RoJiZhLnN0b3BQcm9wYWdhdGlvbigpKX07dmFyIGg9MCxKZD1mdW5jdGlvbihhKXt2b2lkIDA9PWEuZ2V0KFEpP0hkKGEpOmEuZ2V0KFViKSYmIWEuZ2V0KE1jKT9IZChhKTphLmdldChiYykmJklkKGEpfSxLZD1mdW5jdGlvbihhKXthLmdldChoYykmJiFhLmdldChhYykmJihJZChhKSxhLnNldChmYyxhLmdldCgkYikpKX0sSGQ9ZnVuY3Rpb24oYSl7aCsrOzE8aCYmSCgxMzcpO3ZhciBiPWEuZ2V0KGFiKTthLnNldChTYiwhMCk7YS5zZXQoUSxFYSgpXnRkKGEpJjIxNDc0ODM2NDcpO2Euc2V0KFRiLCIiKTthLnNldChWYixiKTthLnNldChXYixiKTthLnNldChaYixiKTthLnNldCgkYiwxKTthLnNldChhYywhMCk7YS5zZXQoY2MsMCk7YS5zZXQoUiwxMCk7YS5zZXQoZGMsYik7YS5zZXQoRmIsW10pO2Euc2V0KFViLCExKTthLnNldChiYywhMSl9LElkPWZ1bmN0aW9uKGEpe2grKzsxPGgmJkgoMTM3KTthLnNldChXYixhLmdldChaYikpO2Euc2V0KFpiLGEuZ2V0KGFiKSk7YS5aYSgkYik7YS5zZXQoYWMsITApO2Euc2V0KGNjLAowKTthLnNldChSLDEwKTthLnNldChkYyxhLmdldChhYikpO2Euc2V0KGJjLCExKX07dmFyIExkPSJkYXVtOnEgZW5pcm86c2VhcmNoX3dvcmQgbmF2ZXI6cXVlcnkgcGNob21lOnEgaW1hZ2VzLmdvb2dsZTpxIGdvb2dsZTpxIHlhaG9vOnAgeWFob286cSBtc246cSBiaW5nOnEgYW9sOnF1ZXJ5IGFvbDpxIGx5Y29zOnEgbHljb3M6cXVlcnkgYXNrOnEgY25uOnF1ZXJ5IHZpcmdpbGlvOnFzIGJhaWR1OndkIGJhaWR1OndvcmQgYWxpY2U6cXMgeWFuZGV4OnRleHQgbmFqZGk6cSBzZXpuYW06cSByYWt1dGVuOnF0IGJpZ2xvYmU6cSBnb28ubmU6TVQgc2VhcmNoLnNtdC5kb2NvbW86TVQgb25ldDpxdCBvbmV0OnEga3Zhc2lyOnEgdGVycmE6cXVlcnkgcmFtYmxlcjpxdWVyeSBjb25kdWl0OnEgYmFieWxvbjpxIHNlYXJjaC1yZXN1bHRzOnEgYXZnOnEgY29tY2FzdDpxIGluY3JlZGltYWlsOnEgc3RhcnRzaWRlbjpxIGdvLm1haWwucnU6cSBjZW50cnVtLmN6OnEgMzYwLmNuOnEgc29nb3U6cXVlcnkgdHV0LmJ5OnF1ZXJ5IGdsb2JvOnEgdWtyOnEgc28uY29tOnEgaGFvc291LmNvbTpxIGF1b25lOnEiLnNwbGl0KCIgIiksClNkPWZ1bmN0aW9uKGEpe2lmKGEuZ2V0KGtiKSYmIWEuZ2V0KE1jKSl7dmFyIGI9IUYoYS5nZXQoaWMpKXx8IUYoYS5nZXQobmMpKXx8IUYoYS5nZXQoUykpfHwhRihhLmdldChsYykpO2Zvcih2YXIgYz17fSxkPTA7ZDxNZC5sZW5ndGg7ZCsrKXt2YXIgZT1NZFtkXTtjW2VdPWEuZ2V0KGUpfShkPWEuZ2V0KHJjKSk/KEgoMTQ5KSxlPW5ldyBuZixOYShlLGQpLGQ9ZSk6ZD1MYShKLmxvY2F0aW9uLmhyZWYsYS5nZXQoZ2IpKS5SO2lmKCIxIiE9TChkLmdldChhLmdldCh1YikpKXx8IWIpaWYoZD1YZShhLGQpfHxRZChhKSxkfHxifHwhYS5nZXQoYWMpfHwoUGQoYSx2b2lkIDAsIihkaXJlY3QpIix2b2lkIDAsdm9pZCAwLHZvaWQgMCwiKGRpcmVjdCkiLCIobm9uZSkiLHZvaWQgMCx2b2lkIDApLGQ9ITApLGQmJihhLnNldChoYyxSZChhLGMpKSxiPSIoZGlyZWN0KSI9PWEuZ2V0KG5jKSYmIihkaXJlY3QpIj09YS5nZXQoamMpJiYiKG5vbmUpIj09YS5nZXQob2MpLGEuZ2V0KGhjKXx8YS5nZXQoYWMpJiYKIWIpKWEuc2V0KGVjLGEuZ2V0KGFiKSksYS5zZXQoZmMsYS5nZXQoJGIpKSxhLlphKGdjKX19LFhlPWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhjLGQpe2Q9ZHx8Ii0iO3JldHVybihjPUwoYi5nZXQoYS5nZXQoYykpKSkmJiItIiE9Yz9JKGMpOmR9dmFyIGQ9TChiLmdldChhLmdldChuYikpKXx8Ii0iLGU9TChiLmdldChhLmdldChxYikpKXx8Ii0iLGY9TChiLmdldChhLmdldChwYikpKXx8Ii0iLEJlPUwoYi5nZXQoImdjbHNyYyIpKXx8Ii0iLGs9TChiLmdldCgiZGNsaWQiKSl8fCItIjsiLSIhPWYmJmEuc2V0KHcsZik7Ii0iIT1CZSYmYS5zZXQoeCxCZSk7dmFyIEphPWMob2IsIihub3Qgc2V0KSIpLHQ9YyhyYiwiKG5vdCBzZXQpIiksWmE9YyhzYiksTWE9Yyh0Yik7aWYoRihkKSYmRihmKSYmRihrKSYmRihlKSlyZXR1cm4hMTt2YXIgbWI9IUYoZikmJiFGKEJlKTttYj1GKGUpJiYoIUYoayl8fG1iKTt2YXIgWGI9RihaYSk7aWYobWJ8fFhiKXt2YXIgQmQ9TmQoYSk7QmQ9TGEoQmQsCiEwKTsoQmQ9T2QoYSxCZCkpJiYhRihCZFsxXSYmIUJkWzJdKSYmKG1iJiYoZT1CZFswXSksWGImJihaYT1CZFsxXSkpfVBkKGEsZCxlLGYsQmUsayxKYSx0LFphLE1hKTtyZXR1cm4hMH0sUWQ9ZnVuY3Rpb24oYSl7dmFyIGI9TmQoYSksYz1MYShiLCEwKTsoYj0hKHZvaWQgMCE9YiYmbnVsbCE9YiYmIiIhPWImJiIwIiE9YiYmIi0iIT1iJiYwPD1iLmluZGV4T2YoIjovLyIpKSl8fChiPWMmJi0xPGMuaG9zdC5pbmRleE9mKCJnb29nbGUiKSYmYy5SLmNvbnRhaW5zKCJxIikmJiJjc2UiPT1jLnBhdGgpO2lmKGIpcmV0dXJuITE7aWYoKGI9T2QoYSxjKSkmJiFiWzJdKXJldHVybiBQZChhLHZvaWQgMCxiWzBdLHZvaWQgMCx2b2lkIDAsdm9pZCAwLCIob3JnYW5pYykiLCJvcmdhbmljIixiWzFdLHZvaWQgMCksITA7aWYoYnx8IWEuZ2V0KGFjKSlyZXR1cm4hMTthOntiPWEuZ2V0KEJiKTtmb3IodmFyIGQ9S2EoYy5ob3N0KSxlPTA7ZTxiLmxlbmd0aDsrK2UpaWYoLTE8ZC5pbmRleE9mKGJbZV0pKXthPQohMTticmVhayBhfVBkKGEsdm9pZCAwLGQsdm9pZCAwLHZvaWQgMCx2b2lkIDAsIihyZWZlcnJhbCkiLCJyZWZlcnJhbCIsdm9pZCAwLCIvIitjLnBhdGgpO2E9ITB9cmV0dXJuIGF9LE9kPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWEuZ2V0KHpiKSxkPTA7ZDxjLmxlbmd0aDsrK2Qpe3ZhciBlPWNbZF0uc3BsaXQoIjoiKTtpZigtMTxiLmhvc3QuaW5kZXhPZihlWzBdLnRvTG93ZXJDYXNlKCkpKXt2YXIgZj1iLlIuZ2V0KGVbMV0pO2lmKGYmJihmPUsoZiksIWYmJi0xPGIuaG9zdC5pbmRleE9mKCJnb29nbGUuIikmJihmPSIobm90IHByb3ZpZGVkKSIpLCFlWzNdfHwtMTxiLnVybC5pbmRleE9mKGVbM10pKSl7Znx8SCgxNTEpO2E6e2I9ZjthPWEuZ2V0KEFiKTtiPUkoYikudG9Mb3dlckNhc2UoKTtmb3IoYz0wO2M8YS5sZW5ndGg7KytjKWlmKGI9PWFbY10pe2E9ITA7YnJlYWsgYX1hPSExfXJldHVybltlWzJdfHxlWzBdLGYsYV19fX1yZXR1cm4gbnVsbH0sUGQ9ZnVuY3Rpb24oYSwKYixjLGQsZSxmLEJlLGssSmEsdCl7YS5zZXQoaWMsYik7YS5zZXQobmMsYyk7YS5zZXQoUyxkKTthLnNldChrYyxlKTthLnNldChsYyxmKTthLnNldChqYyxCZSk7YS5zZXQob2Msayk7YS5zZXQocGMsSmEpO2Euc2V0KHFjLHQpfSxNZD1bamMsaWMsUyxsYyxuYyxvYyxwYyxxY10sUmQ9ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe2E9KCIiK2EpLnNwbGl0KCIrIikuam9pbigiJTIwIik7cmV0dXJuIGE9YS5zcGxpdCgiICIpLmpvaW4oIiUyMCIpfWZ1bmN0aW9uIGQoYyl7dmFyIGQ9IiIrKGEuZ2V0KGMpfHwiIik7Yz0iIisoYltjXXx8IiIpO3JldHVybiAwPGQubGVuZ3RoJiZkPT1jfWlmKGQoUyl8fGQobGMpKXJldHVybiBIKDEzMSksITE7Zm9yKHZhciBlPTA7ZTxNZC5sZW5ndGg7ZSsrKXt2YXIgZj1NZFtlXSxCZT1iW2ZdfHwiLSI7Zj1hLmdldChmKXx8Ii0iO2lmKGMoQmUpIT1jKGYpKXJldHVybiEwfXJldHVybiExfSxUZD1uZXcgUmVnRXhwKC9eaHR0cHM/OlwvXC8od3d3XC4pP2dvb2dsZShcLmNvbT8pPyhcLlthLXpdezJ9dD8pP1wvPyQvaSksCmpmPS9eaHR0cHM/OlwvXC8oclwuKT9zZWFyY2hcLnlhaG9vXC5jb20/KFwuanApP1wvP1teP10qJC9pLHJmPS9eaHR0cHM/OlwvXC8od3d3XC4pP2JpbmdcLmNvbVwvPyQvaSxOZD1mdW5jdGlvbihhKXthPVBhKGEuZ2V0KEpiKSxhLmdldChQKSk7dHJ5e2lmKFRkLnRlc3QoYSkpcmV0dXJuIEgoMTM2KSxhKyI/cT0iO2lmKGpmLnRlc3QoYSkpcmV0dXJuIEgoMTUwKSxhKyI/cD0obm90IHByb3ZpZGVkKSI7aWYocmYudGVzdChhKSlyZXR1cm4gYSsiP3E9KG5vdCBwcm92aWRlZCkifWNhdGNoKGIpe0goMTQ1KX1yZXR1cm4gYX07dmFyIFVkLFZkLFdkPWZ1bmN0aW9uKGEpe1VkPWEuYyhTLCIiKTtWZD1hLmMoa2MsIiIpfSxYZD1mdW5jdGlvbihhKXt2YXIgYj1hLmMoUywiIiksYz1hLmMoa2MsIiIpO2IhPVVkJiYoLTE8Yy5pbmRleE9mKCJkcyIpP2Euc2V0KG1jLHZvaWQgMCk6IUYoVWQpJiYtMTxWZC5pbmRleE9mKCJkcyIpJiZhLnNldChtYyxVZCkpfTt2YXIgWmQ9ZnVuY3Rpb24oYSl7WWQoYSxKLmxvY2F0aW9uLmhyZWYpPyhhLnNldChNYywhMCksSCgxMikpOmEuc2V0KE1jLCExKX0sWWQ9ZnVuY3Rpb24oYSxiKXtpZighYS5nZXQoZmIpKXJldHVybiExO3ZhciBjPUxhKGIsYS5nZXQoZ2IpKTtiPUsoYy5SLmdldCgiX191dG1hIikpO3ZhciBkPUsoYy5SLmdldCgiX191dG1iIikpLGU9SyhjLlIuZ2V0KCJfX3V0bWMiKSksZj1LKGMuUi5nZXQoIl9fdXRteCIpKSxCZT1LKGMuUi5nZXQoIl9fdXRteiIpKSxrPUsoYy5SLmdldCgiX191dG12IikpO2M9SyhjLlIuZ2V0KCJfX3V0bWsiKSk7aWYoWWMoIiIrYitkK2UrZitCZStrKSE9Yyl7Yj1JKGIpO2Q9SShkKTtlPUkoZSk7Zj1JKGYpO2U9JGQoYitkK2UrZixCZSxrLGMpO2lmKCFlKXJldHVybiExO0JlPWVbMF07az1lWzFdfWlmKCFiZChhLGIsITApKXJldHVybiExO2VkKGEsZCwhMCk7aWQoYSxCZSwhMCk7Z2QoYSxrLCEwKTthZShhLGYsITApO3JldHVybiEwfSxjZT1mdW5jdGlvbihhLApiLGMpe3ZhciBkPWNkKGEpfHwiLSI7dmFyIGU9ZGQoYSl8fCItIixmPSIiK2EuYihPLDEpfHwiLSIsQmU9YmUoYSl8fCItIixrPWhkKGEsITEpfHwiLSI7YT1mZChhLCExKXx8Ii0iO3ZhciBKYT1ZYygiIitkK2UrZitCZStrK2EpLHQ9W107dC5wdXNoKCJfX3V0bWE9IitkKTt0LnB1c2goIl9fdXRtYj0iK2UpO3QucHVzaCgiX191dG1jPSIrZik7dC5wdXNoKCJfX3V0bXg9IitCZSk7dC5wdXNoKCJfX3V0bXo9IitrKTt0LnB1c2goIl9fdXRtdj0iK2EpO3QucHVzaCgiX191dG1rPSIrSmEpO2Q9dC5qb2luKCImIik7aWYoIWQpcmV0dXJuIGI7ZT1iLmluZGV4T2YoIiMiKTtpZihjKXJldHVybiAwPmU/YisiIyIrZDpiKyImIitkO2M9IiI7MDxlJiYoYz1iLnN1YnN0cmluZyhlKSxiPWIuc3Vic3RyaW5nKDAsZSkpO3JldHVybiAwPmIuaW5kZXhPZigiPyIpP2IrIj8iK2QrYzpiKyImIitkK2N9LCRkPWZ1bmN0aW9uKGEsYixjLGQpe2Zvcih2YXIgZT0wOzM+ZTtlKyspe2Zvcih2YXIgZj0KMDszPmY7ZisrKXtpZihkPT1ZYyhhK2IrYykpcmV0dXJuIEgoMTI3KSxbYixjXTt2YXIgQmU9Yi5yZXBsYWNlKC8gL2csIiUyMCIpLGs9Yy5yZXBsYWNlKC8gL2csIiUyMCIpO2lmKGQ9PVljKGErQmUraykpcmV0dXJuIEgoMTI4KSxbQmUsa107QmU9QmUucmVwbGFjZSgvXCsvZywiJTIwIik7az1rLnJlcGxhY2UoL1wrL2csIiUyMCIpO2lmKGQ9PVljKGErQmUraykpcmV0dXJuIEgoMTI5KSxbQmUsa107dHJ5e3ZhciBKYT1iLm1hdGNoKCJ1dG1jdHI9KC4qPykoPzpcXHx1dG18JCkiKTtpZihKYSYmMj09SmEubGVuZ3RoJiYoQmU9Yi5yZXBsYWNlKEphWzFdLEcoSShKYVsxXSkpKSxkPT1ZYyhhK0JlK2MpKSlyZXR1cm4gSCgxMzkpLFtCZSxjXX1jYXRjaCh0KXt9Yj1JKGIpfWM9SShjKX19O3ZhciBkZT0ifCIsZmU9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsQmUsayxKYSl7dmFyIHQ9ZWUoYSxiKTt0fHwodD17fSxhLmdldChDYikucHVzaCh0KSk7dC5pZF89Yjt0LmFmZmlsaWF0aW9uXz1jO3QudG90YWxfPWQ7dC50YXhfPWU7dC5zaGlwcGluZ189Zjt0LmNpdHlfPUJlO3Quc3RhdGVfPWs7dC5jb3VudHJ5Xz1KYTt0Lml0ZW1zXz10Lml0ZW1zX3x8W107cmV0dXJuIHR9LGdlPWZ1bmN0aW9uKGEsYixjLGQsZSxmLEJlKXthPWVlKGEsYil8fGZlKGEsYiwiIiwwLDAsMCwiIiwiIiwiIik7YTp7aWYoYSYmYS5pdGVtc18pe3ZhciBrPWEuaXRlbXNfO2Zvcih2YXIgSmE9MDtKYTxrLmxlbmd0aDtKYSsrKWlmKGtbSmFdLnNrdV89PWMpe2s9a1tKYV07YnJlYWsgYX19az1udWxsfUphPWt8fHt9O0phLnRyYW5zSWRfPWI7SmEuc2t1Xz1jO0phLm5hbWVfPWQ7SmEuY2F0ZWdvcnlfPWU7SmEucHJpY2VfPWY7SmEucXVhbnRpdHlfPUJlO2t8fGEuaXRlbXNfLnB1c2goSmEpO3JldHVybiBKYX0sCmVlPWZ1bmN0aW9uKGEsYil7YT1hLmdldChDYik7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspaWYoYVtjXS5pZF89PWIpcmV0dXJuIGFbY107cmV0dXJuIG51bGx9O3ZhciBoZSxpZT1mdW5jdGlvbihhKXtpZighaGUpe3ZhciBiPUoubG9jYXRpb24uaGFzaDt2YXIgYz1XLm5hbWUsZD0vXiM/Z2Fzbz0oW14mXSopLztpZihjPShiPShiPWImJmIubWF0Y2goZCl8fGMmJmMubWF0Y2goZCkpP2JbMV06SyhwZCgiR0FTTyIpKSkmJmIubWF0Y2goL14oPzohKFstMC05YS16Ll17MSw0MH0pISk/KFstLlx3XXsxMCwxMjAwfSkkL2kpKUZkKGEsIkdBU08iLCIiK2IsMCksTS5fZ2Fzb0RvbWFpbj1hLmdldChiYiksTS5fZ2Fzb0NQYXRoPWEuZ2V0KFApLGE9Y1sxXSxJYSgiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9hbmFseXRpY3Mvd2ViL2lucGFnZS9wdWIvaW5wYWdlLmpzPyIrKGE/InByZWZpeD0iK2ErIiYiOiIiKStFYSgpLCJfZ2Fzb2pzIik7aGU9ITB9fTt2YXIgYWU9ZnVuY3Rpb24oYSxiLGMpe2MmJihiPUkoYikpO2M9YS5iKE8sMSk7Yj1iLnNwbGl0KCIuIik7Mj5iLmxlbmd0aHx8IS9eXGQrJC8udGVzdChiWzBdKXx8KGJbMF09IiIrYyxGZChhLCJfX3V0bXgiLGIuam9pbigiLiIpLHZvaWQgMCkpfSxiZT1mdW5jdGlvbihhLGIpe2E9JGMoYS5nZXQoTykscGQoIl9fdXRteCIpKTsiLSI9PWEmJihhPSIiKTtyZXR1cm4gYj9HKGEpOmF9LFllPWZ1bmN0aW9uKGEpe3RyeXt2YXIgYj1MYShKLmxvY2F0aW9uLmhyZWYsITEpLGM9ZGVjb2RlVVJJQ29tcG9uZW50KEwoYi5SLmdldCgidXRtX3JlZmVycmVyIikpKXx8IiI7YyYmYS5zZXQoSmIsYyk7dmFyIGQ9ZGVjb2RlVVJJQ29tcG9uZW50KEsoYi5SLmdldCgidXRtX2V4cGlkIikpKXx8IiI7ZCYmKGQ9ZC5zcGxpdCgiLiIpWzBdLGEuc2V0KE9jLCIiK2QpKX1jYXRjaChlKXtIKDE0Nil9fSxsPWZ1bmN0aW9uKGEpe3ZhciBiPVcuZ2FEYXRhJiZXLmdhRGF0YS5leHBJZDtiJiZhLnNldChPYywKIiIrYil9O3ZhciBrZT1mdW5jdGlvbihhLGIpe3ZhciBjPU1hdGgubWluKGEuYihEYywwKSwxMDApO2lmKGEuYihRLDApJTEwMD49YylyZXR1cm4hMTtjPVplKCl8fCRlKCk7aWYodm9pZCAwPT1jKXJldHVybiExO3ZhciBkPWNbMF07aWYodm9pZCAwPT1kfHxJbmZpbml0eT09ZHx8aXNOYU4oZCkpcmV0dXJuITE7MDxkP2FmKGMpP2IoamUoYykpOmIoamUoYy5zbGljZSgwLDEpKSk6R2EoVywibG9hZCIsZnVuY3Rpb24oKXtrZShhLGIpfSwhMSk7cmV0dXJuITB9LG1lPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPW5ldyB5ZDtlLmYoMTQsOTAsYi5zdWJzdHJpbmcoMCw1MDApKTtlLmYoMTQsOTEsYS5zdWJzdHJpbmcoMCwxNTApKTtlLmYoMTQsOTIsIiIrbGUoYykpO3ZvaWQgMCE9ZCYmZS5mKDE0LDkzLGQuc3Vic3RyaW5nKDAsNTAwKSk7ZS5vKDE0LDkwLGMpO3JldHVybiBlfSxhZj1mdW5jdGlvbihhKXtmb3IodmFyIGI9MTtiPGEubGVuZ3RoO2IrKylpZihpc05hTihhW2JdKXx8SW5maW5pdHk9PQphW2JdfHwwPmFbYl0pcmV0dXJuITE7cmV0dXJuITB9LGxlPWZ1bmN0aW9uKGEpe3JldHVybiBpc05hTihhKXx8MD5hPzA6NUUzPmE/MTAqTWF0aC5mbG9vcihhLzEwKTo1RTQ+YT8xMDAqTWF0aC5mbG9vcihhLzEwMCk6NDFFNT5hPzFFMypNYXRoLmZsb29yKGEvMUUzKTo0MUU1fSxqZT1mdW5jdGlvbihhKXtmb3IodmFyIGI9bmV3IHlkLGM9MDtjPGEubGVuZ3RoO2MrKyliLmYoMTQsYysxLCIiK2xlKGFbY10pKSxiLm8oMTQsYysxLGFbY10pO3JldHVybiBifSxaZT1mdW5jdGlvbigpe3ZhciBhPVcucGVyZm9ybWFuY2V8fFcud2Via2l0UGVyZm9ybWFuY2U7aWYoYT1hJiZhLnRpbWluZyl7dmFyIGI9YS5uYXZpZ2F0aW9uU3RhcnQ7aWYoMD09YilIKDEzMyk7ZWxzZSByZXR1cm5bYS5sb2FkRXZlbnRTdGFydC1iLGEuZG9tYWluTG9va3VwRW5kLWEuZG9tYWluTG9va3VwU3RhcnQsYS5jb25uZWN0RW5kLWEuY29ubmVjdFN0YXJ0LGEucmVzcG9uc2VTdGFydC1hLnJlcXVlc3RTdGFydCwKYS5yZXNwb25zZUVuZC1hLnJlc3BvbnNlU3RhcnQsYS5mZXRjaFN0YXJ0LWIsYS5kb21JbnRlcmFjdGl2ZS1iLGEuZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQtYl19fSwkZT1mdW5jdGlvbigpe2lmKFcudG9wPT1XKXt2YXIgYT1XLmV4dGVybmFsLGI9YSYmYS5vbmxvYWRUO2EmJiFhLmlzVmFsaWRMb2FkVGltZSYmKGI9dm9pZCAwKTsyMTQ3NDgzNjQ4PGImJihiPXZvaWQgMCk7MDxiJiZhLnNldFBhZ2VSZWFkeVRpbWUoKTtpZih2b2lkIDAhPWIpcmV0dXJuW2JdfX07dmFyIGNmPWZ1bmN0aW9uKGEpe2lmKGEuZ2V0KFNiKSl0cnl7YTp7dmFyIGI9cGQoYS5nZXQoT2UpfHwiX2dhIik7aWYoYiYmISgxPmIubGVuZ3RoKSl7Zm9yKHZhciBjPVtdLGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGU9YltkXS5zcGxpdCgiLiIpLGY9ZS5zaGlmdCgpO2lmKCgiR0ExIj09Znx8IjEiPT1mKSYmMTxlLmxlbmd0aCl7dmFyIEJlPWUuc2hpZnQoKS5zcGxpdCgiLSIpOzE9PUJlLmxlbmd0aCYmKEJlWzFdPSIxIik7QmVbMF0qPTE7QmVbMV0qPTE7dmFyIGs9e1lhOkJlLCRhOmUuam9pbigiLiIpfX1lbHNlIGs9dm9pZCAwO2smJmMucHVzaChrKX1pZigxPT1jLmxlbmd0aCl7dmFyIEphPWNbMF0uJGE7YnJlYWsgYX1pZigwIT1jLmxlbmd0aCl7dmFyIHQ9YS5nZXQoUGUpfHxhLmdldChiYik7Yz1iZihjLCgwPT10LmluZGV4T2YoIi4iKT90LnN1YnN0cigxKTp0KS5zcGxpdCgiLiIpLmxlbmd0aCwwKTtpZigxPT1jLmxlbmd0aCl7SmE9Y1swXS4kYTticmVhayBhfXZhciBaYT0KYS5nZXQoUWUpfHxhLmdldChQKTsoYj1aYSk/KDE8Yi5sZW5ndGgmJiIvIj09Yi5jaGFyQXQoYi5sZW5ndGgtMSkmJihiPWIuc3Vic3RyKDAsYi5sZW5ndGgtMSkpLDAhPWIuaW5kZXhPZigiLyIpJiYoYj0iLyIrYiksWmE9Yik6WmE9Ii8iO2M9YmYoYywiLyI9PVphPzE6WmEuc3BsaXQoIi8iKS5sZW5ndGgsMSk7SmE9Y1swXS4kYTticmVhayBhfX1KYT12b2lkIDB9aWYoSmEpe3ZhciBNYT0oIiIrSmEpLnNwbGl0KCIuIik7Mj09TWEubGVuZ3RoJiYvWzAtOS5dLy50ZXN0KE1hKSYmKEgoMTE0KSxhLnNldChRLE1hWzBdKSxhLnNldChWYixNYVsxXSksYS5zZXQoU2IsITEpKX19Y2F0Y2gobWIpe0goMTE1KX19LGJmPWZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9W10sZT1bXSxmPTEyOCxCZT0wO0JlPGEubGVuZ3RoO0JlKyspe3ZhciBrPWFbQmVdO2suWWFbY109PWI/ZC5wdXNoKGspOmsuWWFbY109PWY/ZS5wdXNoKGspOmsuWWFbY108ZiYmKGU9W2tdLGY9ay5ZYVtjXSl9cmV0dXJuIDA8CmQubGVuZ3RoP2Q6ZX07dmFyIGtmPS9eZ3RtXGQrJC8saGY9ZnVuY3Rpb24oYSl7dmFyIGI9ISFhLmIoQ2QsMSk7aWYoYilpZihIKDE0MCksInBhZ2UiIT1hLmdldChzYykpYS5zZXQoS2MsIiIsITApO2Vsc2UgaWYoYj1hLmMoTGMsIiIpLGJ8fChiPShiPWEuYygkYSwiIikpJiYifjAiIT1iP2tmLnRlc3QoYik/Il9fdXRtdF8iK0coYS5jKFdhLCIiKSk6Il9fdXRtdF8iK0coYik6Il9fdXRtdCIpLDA8cGQoYikubGVuZ3RoKWEuc2V0KEtjLCIiLCEwKTtlbHNlIGlmKFgoYiwiMSIsYS5jKFAsIi8iKSxhLmMoYmIsIiIpLGEuYyhXYSwiIiksNkU1KSwwPHBkKGIpLmxlbmd0aCl7YS5zZXQoS2MsRWEoKSwhMCk7YS5zZXQoWWIsMSwhMCk7aWYodm9pZCAwIT09Vy5fX2dhNF9fKWI9Vy5fX2dhNF9fO2Vsc2V7aWYodm9pZCAwPT09QSl7dmFyIGM9Vy5uYXZpZ2F0b3IudXNlckFnZW50O2lmKGMpe2I9Yzt0cnl7Yj1kZWNvZGVVUklDb21wb25lbnQoYyl9Y2F0Y2goZCl7fWlmKGM9ISgwPD1iLmluZGV4T2YoIkNocm9tZSIpKSYmCiEoMDw9Yi5pbmRleE9mKCJDcmlPUyIpKSYmKDA8PWIuaW5kZXhPZigiU2FmYXJpLyIpfHwwPD1iLmluZGV4T2YoIlNhZmFyaSwiKSkpYj1CLmV4ZWMoYiksYz0xMTw9KGI/TnVtYmVyKGJbMV0pOi0xKTtBPWN9ZWxzZSBBPSExfWI9QX1iPyhhLnNldCh6LEMoYSksITApLGEuc2V0KEpjLCJodHRwczovL3NzbC5nb29nbGUtYW5hbHl0aWNzLmNvbS9qL19fdXRtLmdpZiIsITApKTphLnNldChKYyxOZSgpKyIvci9fX3V0bS5naWY/IiwhMCl9fSxDPWZ1bmN0aW9uKGEpe2E9YWEoYSk7cmV0dXJue2diOiJ0PWRjJl9yPTMmIithLGdvb2dsZToidD1zciZzbGZfcmQ9MSZfcj00JiIrYSxjb3VudDowfX0sYWE9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhLGIpe2MucHVzaChhKyI9IitHKGIpKX12YXIgYz1bXTtiKCJ2IiwiMSIpO2IoIl92IiwiNS43LjIiKTtiKCJ0aWQiLGEuZ2V0KFdhKSk7YigiY2lkIixhLmdldChRKSsiLiIrYS5nZXQoVmIpKTtiKCJqaWQiLGEuZ2V0KEtjKSk7YigiYWlwIiwKIjEiKTtyZXR1cm4gYy5qb2luKCImIikrIiZ6PSIrRWEoKX07dmFyIFU9ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe2lmKChiPWIuZ2V0KE5jKVthXSkmJmIubGVuZ3RoKWZvcih2YXIgYz1UZShlLGEpLGQ9MDtkPGIubGVuZ3RoO2QrKyliW2RdLmNhbGwoZSxjKX19dmFyIGU9dGhpczt0aGlzLmE9bmV3IFpjO3RoaXMuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmEuZ2V0KGEpfTt0aGlzLnNldD1mdW5jdGlvbihhLGIsYyl7dGhpcy5hLnNldChhLGIsYyl9O3RoaXMuc2V0KFdhLGJ8fCJVQS1YWFhYWC1YIik7dGhpcy5zZXQoJGEsYXx8IiIpO3RoaXMuc2V0KFlhLGN8fCIiKTt0aGlzLnNldChhYixNYXRoLnJvdW5kKChuZXcgRGF0ZSkuZ2V0VGltZSgpLzFFMykpO3RoaXMuc2V0KFAsIi8iKTt0aGlzLnNldChjYiw2MzA3MkU2KTt0aGlzLnNldChlYiwxNTc2OEU2KTt0aGlzLnNldChkYiwxOEU1KTt0aGlzLnNldChmYiwhMSk7dGhpcy5zZXQoeWIsNTApO3RoaXMuc2V0KGdiLCExKTt0aGlzLnNldChoYiwKITApO3RoaXMuc2V0KGliLCEwKTt0aGlzLnNldChqYiwhMCk7dGhpcy5zZXQoa2IsITApO3RoaXMuc2V0KGxiLCEwKTt0aGlzLnNldChvYiwidXRtX2NhbXBhaWduIik7dGhpcy5zZXQobmIsInV0bV9pZCIpO3RoaXMuc2V0KHBiLCJnY2xpZCIpO3RoaXMuc2V0KHFiLCJ1dG1fc291cmNlIik7dGhpcy5zZXQocmIsInV0bV9tZWRpdW0iKTt0aGlzLnNldChzYiwidXRtX3Rlcm0iKTt0aGlzLnNldCh0YiwidXRtX2NvbnRlbnQiKTt0aGlzLnNldCh1YiwidXRtX25vb3ZlcnJpZGUiKTt0aGlzLnNldCh2YiwxMDApO3RoaXMuc2V0KERjLDEpO3RoaXMuc2V0KEVjLCExKTt0aGlzLnNldCh3YiwiL19fdXRtLmdpZiIpO3RoaXMuc2V0KHhiLDEpO3RoaXMuc2V0KENiLFtdKTt0aGlzLnNldChGYixbXSk7dGhpcy5zZXQoemIsTGQuc2xpY2UoMCkpO3RoaXMuc2V0KEFiLFtdKTt0aGlzLnNldChCYixbXSk7dGhpcy5CKCJhdXRvIik7dGhpcy5zZXQoSmIsSi5yZWZlcnJlcik7dGhpcy5zZXQodiwhMCk7CnRoaXMuc2V0KHksTWF0aC5yb3VuZCgobmV3IERhdGUpLmdldFRpbWUoKS8xRTMpKTtZZSh0aGlzLmEpO3RoaXMuc2V0KE5jLHtoaXQ6W10sbG9hZDpbXX0pO3RoaXMuYS5nKCIwIixaZCk7dGhpcy5hLmcoIjEiLFdkKTt0aGlzLmEuZygiMiIsSmQpO3RoaXMuYS5nKCIzIixjZik7dGhpcy5hLmcoIjQiLFNkKTt0aGlzLmEuZygiNSIsWGQpO3RoaXMuYS5nKCI2IixLZCk7dGhpcy5hLmcoIjciLGQoImxvYWQiKSk7dGhpcy5hLmcoIjgiLGllKTt0aGlzLmEudigiQSIsa2QpO3RoaXMuYS52KCJCIixtZCk7dGhpcy5hLnYoIkMiLEdlKTt0aGlzLmEudigiRCIsSmQpO3RoaXMuYS52KCJFIixqZCk7dGhpcy5hLnYoIkYiLFRjKTt0aGlzLmEudigiRyIsbmUpO3RoaXMuYS52KCJIIixsZik7dGhpcy5hLnYoIkkiLEdkKTt0aGlzLmEudigiSiIsbmQpO3RoaXMuYS52KCJLIix1ZCk7dGhpcy5hLnYoIkwiLERkKTt0aGlzLmEudigiTSIsbCk7dGhpcy5hLnYoIk4iLGhmKTt0aGlzLmEudigiTyIsZCgiaGl0IikpOwp0aGlzLmEudigiUCIsb2UpO3RoaXMuYS52KCJRIixwZSk7MD09PXRoaXMuZ2V0KGFiKSYmSCgxMTEpO3RoaXMuYS5UKCk7dGhpcy5IPXZvaWQgMH07RT1VLnByb3RvdHlwZTtFLm09ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldChEYik7YXx8KGE9bmV3IHlkLHRoaXMuc2V0KERiLGEpKTtyZXR1cm4gYX07RS5MYT1mdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSl7dmFyIGM9YVtiXTthLmhhc093blByb3BlcnR5KGIpJiZ0aGlzLnNldChiLGMsITApfX07RS5LPWZ1bmN0aW9uKGEpe2lmKHRoaXMuZ2V0KEVjKSlyZXR1cm4hMTt2YXIgYj10aGlzLGM9a2UodGhpcy5hLGZ1bmN0aW9uKGMpe2Iuc2V0KEhiLGEsITApO2IuaWIoYyl9KTt0aGlzLnNldChFYyxjKTtyZXR1cm4gY307CkUuRmE9ZnVuY3Rpb24oYSl7YSYmQ2EoYSk/KEgoMTMpLHRoaXMuc2V0KEhiLGEsITApKToib2JqZWN0Ij09PXR5cGVvZiBhJiZudWxsIT09YSYmdGhpcy5MYShhKTt0aGlzLkg9YT10aGlzLmdldChIYik7dGhpcy5hLmooInBhZ2UiKTt0aGlzLksoYSl9O0UuRj1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKCIiPT1hfHwhd2QoYSl8fCIiPT1ifHwhd2QoYil8fHZvaWQgMCE9YyYmIXdkKGMpfHx2b2lkIDAhPWQmJiF4ZChkKSlyZXR1cm4hMTt0aGlzLnNldCh3YyxhLCEwKTt0aGlzLnNldCh4YyxiLCEwKTt0aGlzLnNldCh5YyxjLCEwKTt0aGlzLnNldCh6YyxkLCEwKTt0aGlzLnNldCh2YywhIWUsITApO3RoaXMuYS5qKCJldmVudCIpO3JldHVybiEwfTsKRS5IYT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPXRoaXMuYS5iKERjLDApOzEqZT09PWUmJihmPWUpO2lmKHRoaXMuYS5iKFEsMCklMTAwPj1mKXJldHVybiExO2M9MSooIiIrYyk7aWYoIiI9PWF8fCF3ZChhKXx8IiI9PWJ8fCF3ZChiKXx8IXhkKGMpfHxpc05hTihjKXx8MD5jfHwwPmZ8fDEwMDxmfHx2b2lkIDAhPWQmJigiIj09ZHx8IXdkKGQpKSlyZXR1cm4hMTt0aGlzLmliKG1lKGEsYixjLGQpKTtyZXR1cm4hMH07RS5HYT1mdW5jdGlvbihhLGIsYyxkKXtpZighYXx8IWIpcmV0dXJuITE7dGhpcy5zZXQoQWMsYSwhMCk7dGhpcy5zZXQoQmMsYiwhMCk7dGhpcy5zZXQoQ2MsY3x8Si5sb2NhdGlvbi5ocmVmLCEwKTtkJiZ0aGlzLnNldChIYixkLCEwKTt0aGlzLmEuaigic29jaWFsIik7cmV0dXJuITB9O0UuRWE9ZnVuY3Rpb24oKXt0aGlzLnNldChEYywxMCk7dGhpcy5LKHRoaXMuSCl9O0UuSWE9ZnVuY3Rpb24oKXt0aGlzLmEuaigidHJhbnMiKX07CkUuaWI9ZnVuY3Rpb24oYSl7dGhpcy5zZXQoRWIsYSwhMCk7dGhpcy5hLmooImV2ZW50Iil9O0UuaWE9ZnVuY3Rpb24oYSl7dGhpcy5pbml0RGF0YSgpO3ZhciBiPXRoaXM7cmV0dXJue190cmFja0V2ZW50OmZ1bmN0aW9uKGMsZCxlKXtIKDkxKTtiLkYoYSxjLGQsZSl9fX07RS5tYT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5nZXQoYSl9O0UueGE9ZnVuY3Rpb24oYSxiKXtpZihhKWlmKENhKGEpKXRoaXMuc2V0KGEsYik7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGEpZm9yKHZhciBjIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShjKSYmdGhpcy5zZXQoYyxhW2NdKX07RS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYil7KGE9dGhpcy5nZXQoTmMpW2FdKSYmYS5wdXNoKGIpfTtFLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXthPXRoaXMuZ2V0KE5jKVthXTtmb3IodmFyIGM9MDthJiZjPGEubGVuZ3RoO2MrKylpZihhW2NdPT1iKXthLnNwbGljZShjLDEpO2JyZWFrfX07CkUucWE9ZnVuY3Rpb24oKXtyZXR1cm4iNS43LjIifTtFLkI9ZnVuY3Rpb24oYSl7dGhpcy5nZXQoaGIpO2E9ImF1dG8iPT1hP0thKEouZG9tYWluKTphJiYiLSIhPWEmJiJub25lIiE9YT9hLnRvTG93ZXJDYXNlKCk6IiI7dGhpcy5zZXQoYmIsYSl9O0UudmE9ZnVuY3Rpb24oYSl7dGhpcy5zZXQoaGIsISFhKX07RS5uYT1mdW5jdGlvbihhLGIpe3JldHVybiBjZSh0aGlzLmEsYSxiKX07RS5saW5rPWZ1bmN0aW9uKGEsYil7dGhpcy5hLmdldChmYikmJmEmJihKLmxvY2F0aW9uLmhyZWY9Y2UodGhpcy5hLGEsYikpfTtFLnVhPWZ1bmN0aW9uKGEsYil7dGhpcy5hLmdldChmYikmJmEmJmEuYWN0aW9uJiYoYS5hY3Rpb249Y2UodGhpcy5hLGEuYWN0aW9uLGIpKX07CkUuemE9ZnVuY3Rpb24oKXt0aGlzLmluaXREYXRhKCk7dmFyIGE9dGhpcy5hLGI9Si5nZXRFbGVtZW50QnlJZD9KLmdldEVsZW1lbnRCeUlkKCJ1dG10cmFucyIpOkoudXRtZm9ybSYmSi51dG1mb3JtLnV0bXRyYW5zP0oudXRtZm9ybS51dG10cmFuczpudWxsO2lmKGImJmIudmFsdWUpe2Euc2V0KENiLFtdKTtiPWIudmFsdWUuc3BsaXQoIlVUTToiKTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7YltjXT1EYShiW2NdKTtmb3IodmFyIGQ9YltjXS5zcGxpdChkZSksZT0wO2U8ZC5sZW5ndGg7ZSsrKWRbZV09RGEoZFtlXSk7IlQiPT1kWzBdP2ZlKGEsZFsxXSxkWzJdLGRbM10sZFs0XSxkWzVdLGRbNl0sZFs3XSxkWzhdKToiSSI9PWRbMF0mJmdlKGEsZFsxXSxkWzJdLGRbM10sZFs0XSxkWzVdLGRbNl0pfX19O0UuJD1mdW5jdGlvbihhLGIsYyxkLGUsZixCZSxrKXtyZXR1cm4gZmUodGhpcy5hLGEsYixjLGQsZSxmLEJlLGspfTsKRS5ZPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtyZXR1cm4gZ2UodGhpcy5hLGEsYixjLGQsZSxmKX07RS5BYT1mdW5jdGlvbihhKXtkZT1hfHwifCJ9O0UuZWE9ZnVuY3Rpb24oKXt0aGlzLnNldChDYixbXSl9O0Uud2E9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dGhpcy5hO2lmKDA+PWF8fGE+ZS5nZXQoeWIpKWE9ITE7ZWxzZSBpZighYnx8IWN8fDEyODxiLmxlbmd0aCtjLmxlbmd0aClhPSExO2Vsc2V7MSE9ZCYmMiE9ZCYmKGQ9Myk7dmFyIGY9e307Zi5uYW1lPWI7Zi52YWx1ZT1jO2Yuc2NvcGU9ZDtlLmdldChGYilbYV09ZjthPSEwfWEmJnRoaXMuYS5zdG9yZSgpO3JldHVybiBhfTtFLmthPWZ1bmN0aW9uKGEpe3RoaXMuYS5nZXQoRmIpW2FdPXZvaWQgMDt0aGlzLmEuc3RvcmUoKX07RS5yYT1mdW5jdGlvbihhKXtyZXR1cm4oYT10aGlzLmEuZ2V0KEZiKVthXSkmJjE9PWEuc2NvcGU/YS52YWx1ZTp2b2lkIDB9OwpFLkNhPWZ1bmN0aW9uKGEsYixjKXsxMj09YSYmMT09Yj90aGlzLnNldChwZixjKTp0aGlzLm0oKS5mKGEsYixjKX07RS5EYT1mdW5jdGlvbihhLGIsYyl7dGhpcy5tKCkubyhhLGIsYyl9O0Uuc2E9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5tKCkuZ2V0S2V5KGEsYil9O0UudGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5tKCkuTihhLGIpfTtFLmZhPWZ1bmN0aW9uKGEpe3RoaXMubSgpLkwoYSl9O0UuZ2E9ZnVuY3Rpb24oYSl7dGhpcy5tKCkuTShhKX07RS5qYT1mdW5jdGlvbigpe3JldHVybiBuZXcgeWR9O0UuVz1mdW5jdGlvbihhKXthJiZ0aGlzLmdldChBYikucHVzaChhLnRvTG93ZXJDYXNlKCkpfTtFLmJhPWZ1bmN0aW9uKCl7dGhpcy5zZXQoQWIsW10pfTtFLlg9ZnVuY3Rpb24oYSl7YSYmdGhpcy5nZXQoQmIpLnB1c2goYS50b0xvd2VyQ2FzZSgpKX07RS5jYT1mdW5jdGlvbigpe3RoaXMuc2V0KEJiLFtdKX07CkUuWj1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKGEmJmIpe2E9W2EsYi50b0xvd2VyQ2FzZSgpXS5qb2luKCI6Iik7aWYoZHx8ZSlhPVthLGQsZV0uam9pbigiOiIpO2Q9dGhpcy5nZXQoemIpO2Quc3BsaWNlKGM/MDpkLmxlbmd0aCwwLGEpfX07RS5kYT1mdW5jdGlvbigpe3RoaXMuc2V0KHpiLFtdKX07RS5oYT1mdW5jdGlvbihhKXt0aGlzLmEubG9hZCgpO3ZhciBiPXRoaXMuZ2V0KFApLGM9YmUodGhpcy5hKTt0aGlzLnNldChQLGEpO3RoaXMuYS5zdG9yZSgpO2FlKHRoaXMuYSxjKTt0aGlzLnNldChQLGIpfTtFLnlhPWZ1bmN0aW9uKGEsYil7aWYoMDxhJiY1Pj1hJiZDYShiKSYmIiIhPWIpe3ZhciBjPXRoaXMuZ2V0KEZjKXx8W107Y1thXT1iO3RoaXMuc2V0KEZjLGMpfX07RS5WPWZ1bmN0aW9uKGEpe2E9IiIrYTtpZihhLm1hdGNoKC9eW0EtWmEtejAtOV17MSw1fSQvKSl7dmFyIGI9dGhpcy5nZXQoSWMpfHxbXTtiLnB1c2goYSk7dGhpcy5zZXQoSWMsYil9fTsKRS5pbml0RGF0YT1mdW5jdGlvbigpe3RoaXMuYS5sb2FkKCl9O0UuQmE9ZnVuY3Rpb24oYSl7YSYmIiIhPWEmJih0aGlzLnNldChUYixhKSx0aGlzLmEuaigidmFyIikpfTt2YXIgbmU9ZnVuY3Rpb24oYSl7InRyYW5zIiE9PWEuZ2V0KHNjKSYmNTAwPD1hLmIoY2MsMCkmJmEuc3RvcFByb3BhZ2F0aW9uKCk7aWYoImV2ZW50Ij09PWEuZ2V0KHNjKSl7dmFyIGI9KG5ldyBEYXRlKS5nZXRUaW1lKCksYz1hLmIoZGMsMCksZD1hLmIoWmIsMCk7Yz1NYXRoLmZsb29yKChiLShjIT1kP2M6MUUzKmMpKS8xRTMpOzA8YyYmKGEuc2V0KGRjLGIpLGEuc2V0KFIsTWF0aC5taW4oMTAsYS5iKFIsMCkrYykpKTswPj1hLmIoUiwwKSYmYS5zdG9wUHJvcGFnYXRpb24oKX19LHBlPWZ1bmN0aW9uKGEpeyJldmVudCI9PT1hLmdldChzYykmJmEuc2V0KFIsTWF0aC5tYXgoMCxhLmIoUiwxMCktMSkpfTt2YXIgcWU9ZnVuY3Rpb24oKXt2YXIgYT1bXTt0aGlzLmFkZD1mdW5jdGlvbihiLGMsZCl7ZCYmKGM9RygiIitjKSk7YS5wdXNoKGIrIj0iK2MpfTt0aGlzLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGEuam9pbigiJiIpfX0scmU9ZnVuY3Rpb24oYSxiKXsoYnx8MiE9YS5nZXQoeGIpKSYmYS5aYShjYyl9LHNlPWZ1bmN0aW9uKGEsYil7Yi5hZGQoInV0bXd2IiwiNS43LjIiKTtiLmFkZCgidXRtcyIsYS5nZXQoY2MpKTtiLmFkZCgidXRtbiIsRWEoKSk7dmFyIGM9Si5sb2NhdGlvbi5ob3N0bmFtZTtGKGMpfHxiLmFkZCgidXRtaG4iLGMsITApO2E9YS5nZXQodmIpOzEwMCE9YSYmYi5hZGQoInV0bXNwIixhLCEwKX0sdGU9ZnVuY3Rpb24oYSxiKXtiLmFkZCgidXRtaHQiLChuZXcgRGF0ZSkuZ2V0VGltZSgpKTtiLmFkZCgidXRtYWMiLERhKGEuZ2V0KFdhKSkpO2EuZ2V0KE9jKSYmYi5hZGQoInV0bXhrZXkiLGEuZ2V0KE9jKSwhMCk7YS5nZXQodmMpJiZiLmFkZCgidXRtbmkiLDEpOwphLmdldChvZikmJmIuYWRkKCJ1dG1ndG0iLGEuZ2V0KG9mKSwhMCk7dmFyIGM9YS5nZXQoSWMpO2MmJjA8Yy5sZW5ndGgmJmIuYWRkKCJ1dG1kaWQiLGMuam9pbigiLiIpKTtmZihhLGIpOyExIT09YS5nZXQoWGEpJiYoYS5nZXQoWGEpfHxNLncpJiZiLmFkZCgiYWlwIiwxKTt2b2lkIDAhPT1hLmdldChLYykmJmIuYWRkKCJ1dG1qaWQiLGEuYyhLYywiIiksITApO2EuYihZYiwwKSYmYi5hZGQoInV0bXJlZGlyIixhLmIoWWIsMCksITApO00uYmJ8fChNLmJiPWEuZ2V0KFdhKSk7KDE8TS5hYigpfHxNLmJiIT1hLmdldChXYSkpJiZiLmFkZCgidXRtbXQiLDEpO2IuYWRkKCJ1dG11IixvZC5lbmNvZGUoKSl9LHVlPWZ1bmN0aW9uKGEsYil7YT1hLmdldChGYyl8fFtdO2Zvcih2YXIgYz1bXSxkPTE7ZDxhLmxlbmd0aDtkKyspYVtkXSYmYy5wdXNoKGQrIjoiK0coYVtkXS5yZXBsYWNlKC8lL2csIiUyNSIpLnJlcGxhY2UoLzovZywiJTNBIikucmVwbGFjZSgvLC9nLCIlMkMiKSkpO2MubGVuZ3RoJiYKYi5hZGQoInV0bXBnIixjLmpvaW4oIiwiKSl9LGZmPWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhLGIpe2ImJmQucHVzaChhKyI9IitiKyI7Iil9dmFyIGQ9W107YygiX191dG1hIixjZChhKSk7YygiX191dG16IixoZChhLCExKSk7YygiX191dG12IixmZChhLCEwKSk7YygiX191dG14IixiZShhKSk7Yi5hZGQoInV0bWNjIixkLmpvaW4oIisiKSwhMCl9LHZlPWZ1bmN0aW9uKGEsYil7YS5nZXQoaWIpJiYoYi5hZGQoInV0bWNzIixhLmdldChRYiksITApLGIuYWRkKCJ1dG1zciIsYS5nZXQoTGIpKSxhLmdldChSYikmJmIuYWRkKCJ1dG12cCIsYS5nZXQoUmIpKSxiLmFkZCgidXRtc2MiLGEuZ2V0KE1iKSksYi5hZGQoInV0bXVsIixhLmdldChQYikpLGIuYWRkKCJ1dG1qZSIsYS5nZXQoTmIpKSxiLmFkZCgidXRtZmwiLGEuZ2V0KE9iKSwhMCkpfSx3ZT1mdW5jdGlvbihhLGIpe2EuZ2V0KGxiKSYmYS5nZXQoSWIpJiZiLmFkZCgidXRtZHQiLGEuZ2V0KEliKSwhMCk7Yi5hZGQoInV0bWhpZCIsCmEuZ2V0KEtiKSk7Yi5hZGQoInV0bXIiLFBhKGEuZ2V0KEpiKSxhLmdldChQKSksITApO2IuYWRkKCJ1dG1wIixHKGEuZ2V0KEhiKSwhMCksITApfSx4ZT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLmdldChEYiksZD1hLmdldChFYiksZT1hLmdldChGYil8fFtdLGY9MDtmPGUubGVuZ3RoO2YrKyl7dmFyIEJlPWVbZl07QmUmJihjfHwoYz1uZXcgeWQpLGMuZig4LGYsQmUubmFtZSksYy5mKDksZixCZS52YWx1ZSksMyE9QmUuc2NvcGUmJmMuZigxMSxmLCIiK0JlLnNjb3BlKSl9RihhLmdldCh3YykpfHxGKGEuZ2V0KHhjKSwhMCl8fChjfHwoYz1uZXcgeWQpLGMuZig1LDEsYS5nZXQod2MpKSxjLmYoNSwyLGEuZ2V0KHhjKSksZT1hLmdldCh5Yyksdm9pZCAwIT1lJiZjLmYoNSwzLGUpLGU9YS5nZXQoemMpLHZvaWQgMCE9ZSYmYy5vKDUsMSxlKSk7RihhLmdldChwZikpfHwoY3x8KGM9bmV3IHlkKSxjLmYoMTIsMSxhLmdldChwZikpKTtjP2IuYWRkKCJ1dG1lIixjLlFhKGQpLCEwKToKZCYmYi5hZGQoInV0bWUiLGQuQSgpLCEwKX0seWU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW5ldyBxZTtyZShhLGMpO3NlKGEsZCk7ZC5hZGQoInV0bXQiLCJ0cmFuIik7ZC5hZGQoInV0bXRpZCIsYi5pZF8sITApO2QuYWRkKCJ1dG10c3QiLGIuYWZmaWxpYXRpb25fLCEwKTtkLmFkZCgidXRtdHRvIixiLnRvdGFsXywhMCk7ZC5hZGQoInV0bXR0eCIsYi50YXhfLCEwKTtkLmFkZCgidXRtdHNwIixiLnNoaXBwaW5nXywhMCk7ZC5hZGQoInV0bXRjaSIsYi5jaXR5XywhMCk7ZC5hZGQoInV0bXRyZyIsYi5zdGF0ZV8sITApO2QuYWRkKCJ1dG10Y28iLGIuY291bnRyeV8sITApO3hlKGEsZCk7dmUoYSxkKTt3ZShhLGQpOyhiPWEuZ2V0KEdiKSkmJmQuYWRkKCJ1dG1jdSIsYiwhMCk7Y3x8KHVlKGEsZCksdGUoYSxkKSk7cmV0dXJuIGQudG9TdHJpbmcoKX0semU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW5ldyBxZTtyZShhLGMpO3NlKGEsZCk7ZC5hZGQoInV0bXQiLCJpdGVtIik7ZC5hZGQoInV0bXRpZCIsCmIudHJhbnNJZF8sITApO2QuYWRkKCJ1dG1pcGMiLGIuc2t1XywhMCk7ZC5hZGQoInV0bWlwbiIsYi5uYW1lXywhMCk7ZC5hZGQoInV0bWl2YSIsYi5jYXRlZ29yeV8sITApO2QuYWRkKCJ1dG1pcHIiLGIucHJpY2VfLCEwKTtkLmFkZCgidXRtaXF0IixiLnF1YW50aXR5XywhMCk7eGUoYSxkKTt2ZShhLGQpO3dlKGEsZCk7KGI9YS5nZXQoR2IpKSYmZC5hZGQoInV0bWN1IixiLCEwKTtjfHwodWUoYSxkKSx0ZShhLGQpKTtyZXR1cm4gZC50b1N0cmluZygpfSxBZT1mdW5jdGlvbihhLGIpe3ZhciBjPWEuZ2V0KHNjKTtpZigicGFnZSI9PWMpYz1uZXcgcWUscmUoYSxiKSxzZShhLGMpLHhlKGEsYyksdmUoYSxjKSx3ZShhLGMpLGJ8fCh1ZShhLGMpLHRlKGEsYykpLGE9W2MudG9TdHJpbmcoKV07ZWxzZSBpZigiZXZlbnQiPT1jKWM9bmV3IHFlLHJlKGEsYiksc2UoYSxjKSxjLmFkZCgidXRtdCIsImV2ZW50IikseGUoYSxjKSx2ZShhLGMpLHdlKGEsYyksYnx8KHVlKGEsYyksdGUoYSxjKSksCmE9W2MudG9TdHJpbmcoKV07ZWxzZSBpZigidmFyIj09YyljPW5ldyBxZSxyZShhLGIpLHNlKGEsYyksYy5hZGQoInV0bXQiLCJ2YXIiKSwhYiYmdGUoYSxjKSxhPVtjLnRvU3RyaW5nKCldO2Vsc2UgaWYoInRyYW5zIj09Yyl7Yz1bXTtmb3IodmFyIGQ9YS5nZXQoQ2IpLGU9MDtlPGQubGVuZ3RoOysrZSl7Yy5wdXNoKHllKGEsZFtlXSxiKSk7Zm9yKHZhciBmPWRbZV0uaXRlbXNfLEJlPTA7QmU8Zi5sZW5ndGg7KytCZSljLnB1c2goemUoYSxmW0JlXSxiKSl9YT1jfWVsc2Uic29jaWFsIj09Yz9iP2E9W106KGM9bmV3IHFlLHJlKGEsYiksc2UoYSxjKSxjLmFkZCgidXRtdCIsInNvY2lhbCIpLGMuYWRkKCJ1dG1zbiIsYS5nZXQoQWMpLCEwKSxjLmFkZCgidXRtc2EiLGEuZ2V0KEJjKSwhMCksYy5hZGQoInV0bXNpZCIsYS5nZXQoQ2MpLCEwKSx4ZShhLGMpLHZlKGEsYyksd2UoYSxjKSx1ZShhLGMpLHRlKGEsYyksYT1bYy50b1N0cmluZygpXSk6ImZlZWRiYWNrIj09Yz9iP2E9W106KGM9Cm5ldyBxZSxyZShhLGIpLHNlKGEsYyksYy5hZGQoInV0bXQiLCJmZWVkYmFjayIpLGMuYWRkKCJ1dG1mYmlkIixhLmdldChHYyksITApLGMuYWRkKCJ1dG1mYnByIixhLmdldChIYyksITApLHhlKGEsYyksdmUoYSxjKSx3ZShhLGMpLHVlKGEsYyksdGUoYSxjKSxhPVtjLnRvU3RyaW5nKCldKTphPVtdO3JldHVybiBhfSxvZT1mdW5jdGlvbihhKXt2YXIgYj1hLmdldCh4YiksYz1hLmdldCh1YyksZD1jJiZjLlVhLGU9MCxmPWEuZ2V0KHopO2lmKDA9PWJ8fDI9PWIpe3ZhciBCZT1hLmdldCh3YikrIj8iO3ZhciBrPUFlKGEsITApO2Zvcih2YXIgSmE9MCx0PWsubGVuZ3RoO0phPHQ7SmErKylTYShrW0phXSxkLEJlLCEwKSxlKyt9aWYoMT09Ynx8Mj09Yilmb3Ioaz1BZShhKSxhPWEuYyhKYywiIiksSmE9MCx0PWsubGVuZ3RoO0phPHQ7SmErKyl0cnl7aWYoZil7dmFyIFphPWtbSmFdO2I9KGI9ZCl8fEZhO2RmKCIiLGIsYSsiPyIrWmEsZil9ZWxzZSBTYShrW0phXSxkLGEpO2UrK31jYXRjaChNYSl7TWEmJgpSYShNYS5uYW1lLHZvaWQgMCxNYS5tZXNzYWdlKX1jJiYoYy5mYj1lKX07dmFyIE5lPWZ1bmN0aW9uKCl7cmV0dXJuImh0dHBzOiI9PUoubG9jYXRpb24ucHJvdG9jb2x8fE0uRz8iaHR0cHM6Ly9zc2wuZ29vZ2xlLWFuYWx5dGljcy5jb20iOiJodHRwOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tIn0sQ2U9ZnVuY3Rpb24oYSl7dGhpcy5uYW1lPSJsZW4iO3RoaXMubWVzc2FnZT1hKyItODE5MiJ9LERlPWZ1bmN0aW9uKGEpe3RoaXMubmFtZT0iZmYycG9zdCI7dGhpcy5tZXNzYWdlPWErIi0yMDM2In0sU2E9ZnVuY3Rpb24oYSxiLGMsZCl7Yj1ifHxGYTtpZihkfHwyMDM2Pj1hLmxlbmd0aClnZihhLGIsYyk7ZWxzZSBpZig4MTkyPj1hLmxlbmd0aCl7aWYoMDw9Vy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIkZpcmVmb3giKSYmIVtdLnJlZHVjZSl0aHJvdyBuZXcgRGUoYS5sZW5ndGgpO2RmKGEsYil8fGVmKGEsYil8fEVlKGEsYil8fGIoKX1lbHNlIHRocm93IG5ldyBDZShhLmxlbmd0aCk7fSxnZj1mdW5jdGlvbihhLGIsYyl7Yz1jfHxOZSgpKyIvX191dG0uZ2lmPyI7CnZhciBkPW5ldyBJbWFnZSgxLDEpO2Quc3JjPWMrYTtkLm9ubG9hZD1mdW5jdGlvbigpe2Qub25sb2FkPW51bGw7ZC5vbmVycm9yPW51bGw7YigpfTtkLm9uZXJyb3I9ZnVuY3Rpb24oKXtkLm9ubG9hZD1udWxsO2Qub25lcnJvcj1udWxsO2IoKX19LGVmPWZ1bmN0aW9uKGEsYil7aWYoMCE9TmUoKS5pbmRleE9mKEoubG9jYXRpb24ucHJvdG9jb2wpKXJldHVybiExO3ZhciBjPVcuWERvbWFpblJlcXVlc3Q7aWYoIWMpcmV0dXJuITE7Yz1uZXcgYztjLm9wZW4oIlBPU1QiLE5lKCkrIi9wL19fdXRtLmdpZiIpO2Mub25lcnJvcj1mdW5jdGlvbigpe2IoKX07Yy5vbmxvYWQ9YjtjLnNlbmQoYSk7cmV0dXJuITB9LGRmPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPVcuWE1MSHR0cFJlcXVlc3Q7aWYoIWUpcmV0dXJuITE7dmFyIGY9bmV3IGU7aWYoISgid2l0aENyZWRlbnRpYWxzImluIGYpKXJldHVybiExO2Yub3BlbigiUE9TVCIsY3x8TmUoKSsiL3AvX191dG0uZ2lmIiwhMCk7Zi53aXRoQ3JlZGVudGlhbHM9CiEwO2Yuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwidGV4dC9wbGFpbiIpO2Yub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYoND09Zi5yZWFkeVN0YXRlKXtpZihkKXRyeXt2YXIgYT1mLnJlc3BvbnNlVGV4dDtpZigxPmEubGVuZ3RofHwiMSIhPWEuY2hhckF0KDApKVJhKCJ4aHIiLCJ2ZXIiLGEpLGIoKTtlbHNlIGlmKDM8ZC5jb3VudCsrKVJhKCJ4aHIiLCJ0bXIiLCIiK2QuY291bnQpLGIoKTtlbHNlIGlmKDE9PWEubGVuZ3RoKWIoKTtlbHNle3ZhciBjPWEuY2hhckF0KDEpO2lmKCJkIj09Yyl7dmFyIGU9ZC5nYjthPShhPWIpfHxGYTtkZigiIixhLCJodHRwczovL3N0YXRzLmcuZG91YmxlY2xpY2submV0L2ovY29sbGVjdD8iK2UsZCl9ZWxzZSBpZigiZyI9PWMpe3ZhciB0PSJodHRwczovL3d3dy5nb29nbGUuJS9hZHMvZ2EtYXVkaWVuY2VzPyIucmVwbGFjZSgiJSIsImNvbSIpO2dmKGQuZ29vZ2xlLGIsdCk7dmFyIFphPWEuc3Vic3RyaW5nKDIpO2lmKFphKWlmKC9eW2Etei5dezEsNn0kLy50ZXN0KFphKSl7dmFyIE1hPQoiaHR0cHM6Ly93d3cuZ29vZ2xlLiUvYWRzL2dhLWF1ZGllbmNlcz8iLnJlcGxhY2UoIiUiLFphKTtnZihkLmdvb2dsZSxGYSxNYSl9ZWxzZSBSYSgidGxkIiwiYmNjIixaYSl9ZWxzZSBSYSgieGhyIiwiYnJjIixjKSxiKCl9fWNhdGNoKG1iKXtiKCl9ZWxzZSBiKCk7Zj1udWxsfX07Zi5zZW5kKGEpO3JldHVybiEwfSxFZT1mdW5jdGlvbihhLGIpe2lmKCFKLmJvZHkpcmV0dXJuIFdlKGZ1bmN0aW9uKCl7RWUoYSxiKX0sMTAwKSwhMDthPWVuY29kZVVSSUNvbXBvbmVudChhKTt0cnl7dmFyIGM9Si5jcmVhdGVFbGVtZW50KCc8aWZyYW1lIG5hbWU9IicrYSsnIj48L2lmcmFtZT4nKX1jYXRjaChlKXtjPUouY3JlYXRlRWxlbWVudCgiaWZyYW1lIiksYy5uYW1lPWF9Yy5oZWlnaHQ9IjAiO2Mud2lkdGg9IjAiO2Muc3R5bGUuZGlzcGxheT0ibm9uZSI7Yy5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO3ZhciBkPU5lKCkrIi91L3Bvc3RfaWZyYW1lLmh0bWwiO0dhKFcsImJlZm9yZXVubG9hZCIsCmZ1bmN0aW9uKCl7Yy5zcmM9IiI7Yy5wYXJlbnROb2RlJiZjLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyl9KTtzZXRUaW1lb3V0KGIsMUUzKTtKLmJvZHkuYXBwZW5kQ2hpbGQoYyk7Yy5zcmM9ZDtyZXR1cm4hMH07dmFyIHFmPWZ1bmN0aW9uKCl7dGhpcy5HPXRoaXMudz0hMTswPT1FYSgpJTFFNCYmKEgoMTQyKSx0aGlzLkc9ITApO3RoaXMuQz17fTt0aGlzLkQ9W107dGhpcy5VPTA7dGhpcy5TPVtbInd3dy5nb29nbGUtYW5hbHl0aWNzLmNvbSIsIiIsIi9wbHVnaW5zLyJdXTt0aGlzLl9nYXNvQ1BhdGg9dGhpcy5fZ2Fzb0RvbWFpbj10aGlzLmJiPXZvaWQgMDtSZSgpO1NlKCl9O0U9cWYucHJvdG90eXBlO0Uub2E9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5oYihhLHZvaWQgMCxiKX07RS5oYj1mdW5jdGlvbihhLGIsYyl7YiYmSCgyMyk7YyYmSCg2Nyk7dm9pZCAwPT1iJiYoYj0ifiIrTS5VKyspO2E9bmV3IFUoYixhLGMpO00uQ1tiXT1hO00uRC5wdXNoKGEpO3JldHVybiBhfTtFLnU9ZnVuY3Rpb24oYSl7YT1hfHwiIjtyZXR1cm4gTS5DW2FdfHxNLmhiKHZvaWQgMCxhKX07RS5wYT1mdW5jdGlvbigpe3JldHVybiBNLkQuc2xpY2UoMCl9O0UuYWI9ZnVuY3Rpb24oKXtyZXR1cm4gTS5ELmxlbmd0aH07CkUuYWE9ZnVuY3Rpb24oKXt0aGlzLnc9ITB9O0UubGE9ZnVuY3Rpb24oKXt0aGlzLkc9ITB9O3ZhciBGZT1mdW5jdGlvbihhKXtpZigicHJlcmVuZGVyIj09Si52aXNpYmlsaXR5U3RhdGUpcmV0dXJuITE7YSgpO3JldHVybiEwfTt2YXIgTT1uZXcgcWY7dmFyIEQ9Vy5fZ2F0O0QmJkJhKEQuX2dldFRyYWNrZXIpP009RDpXLl9nYXQ9TTt2YXIgWj1uZXcgWTsoZnVuY3Rpb24oYSl7aWYoIUZlKGEpKXtIKDEyMyk7dmFyIGI9ITEsYz1mdW5jdGlvbigpe2lmKCFiJiZGZShhKSl7Yj0hMDt2YXIgZD1KLGU9YztkLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixlLCExKTpkLmRldGFjaEV2ZW50JiZkLmRldGFjaEV2ZW50KCJvbnZpc2liaWxpdHljaGFuZ2UiLGUpfX07R2EoSiwidmlzaWJpbGl0eWNoYW5nZSIsYyl9fSkoZnVuY3Rpb24oKXt2YXIgYT1XLl9nYXEsYj0hMTtpZihhJiZCYShhLnB1c2gpJiYoYj0iW29iamVjdCBBcnJheV0iPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoT2JqZWN0KGEpKSwhYikpe1o9YTtyZXR1cm59Vy5fZ2FxPVo7YiYmWi5wdXNoLmFwcGx5KFosYSl9KTtmdW5jdGlvbiBZYyhhKXt2YXIgYj0xLGM7aWYoYSlmb3IoYj0wLGM9YS5sZW5ndGgtMTswPD1jO2MtLSl7dmFyIGQ9YS5jaGFyQ29kZUF0KGMpO2I9KGI8PDYmMjY4NDM1NDU1KStkKyhkPDwxNCk7ZD1iJjI2NjMzODMwNDtiPTAhPWQ/Yl5kPj4yMTpifXJldHVybiBifTt9KS5jYWxsKHRoaXMpOwo="></script><script>
if (screen.width < 768) {
document.getElementById('meta-viewport').setAttribute('content', 'width=768');
}
</script>
<style>@font-face{font-family:"PT Sans";font-style:italic;font-weight:400;src:/* original URL: https://fonts.gstatic.com/s/ptsans/v17/jizYRExUiTo99u79D0e0x8mI.woff2 */url(data:font/woff2;base64,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)format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"PT Sans";font-style:italic;font-weight:700;src:/* original URL: https://fonts.gstatic.com/s/ptsans/v17/jizdRExUiTo99u79D0e8fOydLxUd.woff2 */url(data:font/woff2;base64,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)format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"PT Sans";font-style:normal;font-weight:400;src:/* original URL: https://fonts.gstatic.com/s/ptsans/v17/jizaRExUiTo99u79D0KExQ.woff2 */url(data:font/woff2;base64,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)format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"PT Sans";font-style:normal;font-weight:700;src:/* original URL: https://fonts.gstatic.com/s/ptsans/v17/jizfRExUiTo99u79B_mh0O6tLQ.woff2 */url(data:font/woff2;base64,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)format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}</style>
<style>.yui3-g{letter-spacing:-0.31em;text-rendering:optimizespeed}.yui3-u{display:inline-block;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.yui3-u-1,.yui3-u-1-4,.yui3-u-3-4{display:inline-block;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.yui3-u-1{display:block}.yui3-u-1-4{width:25%}.yui3-u-3-4{width:75%}</style>
<style>html,body{height:100%}html{background:#fff;color:#333;overflow-y:scroll}body{font:14px/1.4"PT Sans","DejaVu Sans","Bitstream Vera Sans",Verdana,sans-serif;margin:0;padding:0}a{color:#356de4;text-decoration:none}a:hover{text-decoration:underline}a:visited{color:#6d93e4}p,pre.code{margin:1.2em 0}h1,h2,h3,h4{color:#eb8c28;font-weight:bold;line-height:1.1;margin:1.1em 0 .5em}h1{font-size:184.6%;color:#30418c;margin:.75em 0 .5em}h2{font-size:153.846%}h3{font-size:138.462%}h4{border-bottom:1px solid #dbdfea;font-size:115.385%;font-weight:normal;padding-bottom:2px}code,pre{font-family:Menlo,Monaco,"DejaVu Sans Mono","Bitstream Vera Sans Mono","Consolas","Courier New",Courier,monospace;font-size:92.308%;line-height:1.35}p code{background:#fcfbfa;border:1px solid #efeeed;padding:0 3px}.intro code{background:0;border:0;padding:0}#doc pre.prettyprint{overflow-x:auto;padding:.3em .6em}#doc pre.prettyprint{background:#fcfbfa;border:1px solid #efeeed;border-left-width:5px}dd{margin:.2em 0 .7em 1em}dl{margin:1em 0}dt{font-weight:bold}.clearfix{zoom:1}.clearfix:after{clear:both;content:".";display:block;height:0;line-height:0;visibility:hidden}.hoverable{cursor:pointer}#doc{background:#fff;max-width:1200px;margin:0 auto;min-height:100%;min-width:960px;position:relative}#hd{background:#f5f5f5;background:-moz-linear-gradient(top,#dcdbd9 0,#f6f5f3 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dcdbd9),color-stop(100%,#f6f5f3));border-bottom:1px solid #dfdfdf}#hd .content{padding:0 15px 1px 20px}#hd-logo{background:/* original URL: https://clarle.github.io/yui3/img/yui-logo.png */url(data:image/png;base64,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)no-repeat;border:0;display:inline-block;height:52px;margin-top:15px;width:117px}#hd .yui3-aclist{z-index:4}#main-search{margin-top:12px}#main-search .search-input{float:right;margin-right:2px}.search-input{width:240px}.search{margin:0}.search .yui3-aclist-content{max-height:350px;overflow-y:auto}#main-nav{line-height:1.5;margin:12px 0-2px 0;zoom:1}#main-nav .nav,#main-nav .nav-submenu{list-style:none;margin:0;padding:0;zoom:1}#main-nav .nav{position:relative;z-index:3}#main-nav .nav a{background:-moz-linear-gradient(top,#f4f0ec 0,#d6d2ce 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f4f0ec),color-stop(100%,#d6d2ce));border-top:1px solid #dadada;border-right:1px solid #cdcbc8;border-bottom:1px solid #dedcd9;color:#333;display:block;padding:3px 10px 4px 10px;text-decoration:none;zoom:1}#main-nav .nav a:hover{background:-moz-linear-gradient(top,#f0eeeb 0,#eae8e5 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f0eeeb),color-stop(100%,#eae8e5));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#F0EEEB',endColorstr='#EAE8E5',GradientType=0)}#main-nav .nav-tab{float:left;position:relative}#main-nav .nav .nav-tab:first-child a,#main-nav .nav .nav-break a{border-left:1px solid #dadada}#main-nav .nav .nav-tab:first-child .nav-child a,#main-nav .nav .nav-break .nav-child a,#main-nav .nav-child:first-child a{border-left:0}#main-nav .nav-break{margin-left:15px}#main-nav .nav-submenu{background:#f5f3f0;border:1px solid #dedcd9;-moz-box-shadow:1px 3px 8px rgba(0,0,0,0.3);-webkit-box-shadow:1px 3px 8px rgba(0,0,0,0.3);box-shadow:1px 3px 8px rgba(0,0,0,0.3);left:-1px;min-width:130px;padding:3px 0;position:absolute;visibility:hidden;z-index:3}#main-nav .nav-child{display:block;float:none;white-space:nowrap}#main-nav .nav-child a{background:0;border:1px solid transparent;border-left:0;border-right:0;display:block;filter:none;padding-right:18px;zoom:1}#main-nav .nav-child a:hover{background:#fff;border-color:#eaeaea}#breadcrumbs{margin:0 20px}.breadcrumbs{list-style:none;margin:0;padding:0;zoom:1}.breadcrumbs:after{clear:both;content:".";display:block;height:0;visibility:hidden}.crumb,.separator{float:left}.crumb{white-space:nowrap}.separator{color:#cacaca;padding:0 6px}.project-version{color:#cfcfcf;position:absolute;right:20px;top:7px}#bd{padding:7px 0 130px;position:relative;width:99%}#bd .content{padding:0 16px 0 20px}.sidebar{padding:0 15px 0 10px}.sidebox{border:1px solid #d4d8eb;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 4px rgba(0,0,0,0.1);-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.1);box-shadow:0 1px 4px rgba(0,0,0,0.1);margin:0 0 15px 0;padding-bottom:1px}.sidebox .hd{background:#e5e6f1;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;padding:4px 7px 5px}.sidebox .bd{background:#f9f9fc;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;font-size:12px;padding:10px 8px 10px}.sidebox .hd h2{color:#30418c;font-weight:bold;font-size:107.692%;margin:0}.sidebox li{color:#d4d5e3;list-style-type:disc}.sidebox ul{margin:0;padding-left:14px}.sidebox ul ul{margin:0;padding-left:14px}#ft{background:#f5f5f5;background:-moz-linear-gradient(top,#f6f5f3 0,#dcdbd9 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f6f5f3),color-stop(100%,#dcdbd9));border-top:1px solid #dfddda;bottom:0;position:absolute;width:100%}.copyright{font-size:13px;margin:1em 0;padding:1em 2em 1em 1.5em}@media all and (min-width:1201px){#hd,#ft{border:1px solid #dfdfdf}#hd{border-top:0;-moz-border-radius:0 0 6px 6px;-webkit-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}#ft{border-bottom:0;-moz-border-radius:6px 6px 0 0;-webkit-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}}@media all and (max-width:550px){.project-version{right:3px;top:9px}.search-input{width:150px}#hd .content{padding:0 3px 1px 5px}#bd .content{padding:0 2px 0 5px}#bd .yui3-u-1-4,#bd .yui3-u-3-4{display:block;width:auto}#hd .yui3-u-1-4,#hd .yui3-u-3-4{width:50%}#breadcrumbs{margin:0 2px 0 5px}#main-nav .nav-break{margin-left:0}#main-nav .nav-tab{font-size:12px}}@media all and (-webkit-device-pixel-ratio:2.0){#hd-logo{background-image:/* original URL: https://clarle.github.io/yui3/img/yui-logo-2x.png */url(data:image/png;base64,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);background-size:contain}}</style>
<style>.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun{color:#660}}</style>
<style>.jump{position:absolute;padding:3px 6px;left:-99999px;top:0}.jump:focus{left:40%}.toc li{font-weight:bold}.toc li li{font-weight:normal}.intro{margin-bottom:2em}.intro{background:#f0f1f8;border:1px solid #d4d8eb;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:0 1em}@media all and (max-width:550px){.jump{left:auto;font-size:11px;right:0;top:5.2em}.jump:focus{left:auto}}</style>
<script>
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-29453705-2']);
_gaq.push(['_trackPageview']);
</script>
<script>
var YUI_config={"filter":"min","maxURLLength":1024,"root":"3.17.2/","groups":{"site":{"combine":true,"comboBase":"/combo/js?","root":"","modules":{"hoverable":{"path":"hoverable-min.js","requires":["event-hover","node-base","node-event-delegate"]},"search":{"path":"search-min.js","requires":["autocomplete","autocomplete-highlighters","node-pluginhost"]},"api-filter":{"path":"apidocs/api-filter-min.js","requires":["autocomplete-base","autocomplete-highlighters","autocomplete-sources"]},"api-list":{"path":"apidocs/api-list-min.js","requires":["api-filter","api-search","event-key","node-focusmanager","tabview"]},"api-search":{"path":"apidocs/api-search-min.js","requires":["autocomplete-base","autocomplete-highlighters","autocomplete-sources","escape"]}}}}};
if (location.protocol.indexOf('https') > -1) {
YUI_config.comboBase = 'https://yui-s.yahooapis.com/combo?';
YUI_config.combine = true;
}
</script>
<script data-sf-original-src=https://yui-s.yahooapis.com/3.17.2/build/yui/yui-min.js src="data:application/javascript;base64,LyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCnR5cGVvZiBZVUkhPSJ1bmRlZmluZWQiJiYoWVVJLl9ZVUk9WVVJKTt2YXIgWVVJPWZ1bmN0aW9uKCl7dmFyIGU9MCx0PXRoaXMsbj1hcmd1bWVudHMscj1uLmxlbmd0aCxpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmUuaGFzT3duUHJvcGVydHkmJmUgaW5zdGFuY2VvZiB0fSxzPXR5cGVvZiBZVUlfY29uZmlnIT0idW5kZWZpbmVkIiYmWVVJX2NvbmZpZztpKHQsWVVJKT8odC5faW5pdCgpLFlVSS5HbG9iYWxDb25maWcmJnQuYXBwbHlDb25maWcoWVVJLkdsb2JhbENvbmZpZykscyYmdC5hcHBseUNvbmZpZyhzKSxyfHx0Ll9zZXR1cCgpKTp0PW5ldyBZVUk7aWYocil7Zm9yKDtlPHI7ZSsrKXQuYXBwbHlDb25maWcobltlXSk7dC5fc2V0dXAoKX1yZXR1cm4gdC5pbnN0YW5jZU9mPWksdH07KGZ1bmN0aW9uKCl7dmFyIGUsdCxuPSIzLjE3LjIiLHI9Ii4iLGk9Imh0dHA6Ly95dWkueWFob29hcGlzLmNvbS8iLHM9Inl1aTMtanMtZW5hYmxlZCIsbz0ieXVpMy1jc3Mtc3RhbXAiLHU9ZnVuY3Rpb24oKXt9LGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLGY9eyJpby54ZHJSZWFkeSI6MSwiaW8ueGRyUmVzcG9uc2UiOjEsIlNXRi5ldmVudEhhbmRsZXIiOjF9LGw9dHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCIsYz1sP3dpbmRvdzpudWxsLGg9bD9jLmRvY3VtZW50Om51bGwscD1oJiZoLmRvY3VtZW50RWxlbWVudCxkPXAmJnAuY2xhc3NOYW1lLHY9e30sbT0obmV3IERhdGUpLmdldFRpbWUoKSxnPWZ1bmN0aW9uKGUsdCxuLHIpe2UmJmUuYWRkRXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIodCxuLHIpOmUmJmUuYXR0YWNoRXZlbnQmJmUuYXR0YWNoRXZlbnQoIm9uIit0LG4pfSx5PWZ1bmN0aW9uKGUsdCxuLHIpe2lmKGUmJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcil0cnl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbixyKX1jYXRjaChpKXt9ZWxzZSBlJiZlLmRldGFjaEV2ZW50JiZlLmRldGFjaEV2ZW50KCJvbiIrdCxuKX0sYj1mdW5jdGlvbigpe1lVSS5FbnYuRE9NUmVhZHk9ITAsbCYmeShoLCJET01Db250ZW50TG9hZGVkIixiKX0sdz1mdW5jdGlvbigpe1lVSS5FbnYud2luZG93TG9hZGVkPSEwLFlVSS5FbnYuRE9NUmVhZHk9ITAsbCYmeSh3aW5kb3csImxvYWQiLHcpfSxFPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5FbnYuX2xvYWRlcixyPVsibG9hZGVyLWJhc2UiXSxpPVlVSS5FbnYscz1pLm1vZHM7cmV0dXJuIG4/KG4uaWdub3JlUmVnaXN0ZXJlZD0hMSxuLm9uRW5kPW51bGwsbi5kYXRhPW51bGwsbi5yZXF1aXJlZD1bXSxuLmxvYWRUeXBlPW51bGwpOihuPW5ldyBlLkxvYWRlcihlLmNvbmZpZyksZS5FbnYuX2xvYWRlcj1uKSxzJiZzLmxvYWRlciYmKHI9W10uY29uY2F0KHIsWVVJLkVudi5sb2FkZXJFeHRyYXMpKSxZVUkuRW52LmNvcmU9ZS5BcnJheS5kZWR1cGUoW10uY29uY2F0KFlVSS5FbnYuY29yZSxyKSksbn0sUz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJihlW25dPXRbbl0pfSx4PXtzdWNjZXNzOiEwfTtwJiZkLmluZGV4T2Yocyk9PS0xJiYoZCYmKGQrPSIgIiksZCs9cyxwLmNsYXNzTmFtZT1kKSxuLmluZGV4T2YoIkAiKT4tMSYmKG49IjMuNS4wIiksZT17YXBwbHlDb25maWc6ZnVuY3Rpb24oZSl7ZT1lfHx1O3ZhciB0LG4scj10aGlzLmNvbmZpZyxpPXIubW9kdWxlcyxzPXIuZ3JvdXBzLG89ci5hbGlhc2VzLGE9dGhpcy5FbnYuX2xvYWRlcjtmb3IobiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0PWVbbl0saSYmbj09Im1vZHVsZXMiP1MoaSx0KTpvJiZuPT0iYWxpYXNlcyI/UyhvLHQpOnMmJm49PSJncm91cHMiP1Mocyx0KTpuPT0id2luIj8ocltuXT10JiZ0LmNvbnRlbnRXaW5kb3d8fHQsci5kb2M9cltuXT9yW25dLmRvY3VtZW50Om51bGwpOm4hPSJfeXVpZCImJihyW25dPXQpKTthJiZhLl9jb25maWcoZSl9LF9jb25maWc6ZnVuY3Rpb24oZSl7dGhpcy5hcHBseUNvbmZpZyhlKX0sX2luaXQ6ZnVuY3Rpb24oKXt2YXIgZSx0LHI9dGhpcyxzPVlVSS5FbnYsdT1yLkVudixhO3IudmVyc2lvbj1uO2lmKCF1KXtyLkVudj17Y29yZTpbImdldCIsImZlYXR1cmVzIiwiaW50bC1iYXNlIiwieXVpLWxvZyIsInl1aS1sYXRlciIsImxvYWRlci1iYXNlIiwibG9hZGVyLXJvbGx1cCIsImxvYWRlci15dWkzIl0sbG9hZGVyRXh0cmFzOlsibG9hZGVyLXJvbGx1cCIsImxvYWRlci15dWkzIl0sbW9kczp7fSx2ZXJzaW9uczp7fSxiYXNlOmksY2RuOmkrbisiL2J1aWxkLyIsX2lkeDowLF91c2VkOnt9LF9hdHRhY2hlZDp7fSxfZXhwb3J0ZWQ6e30sX21pc3NlZDpbXSxfeWlkeDowLF91aWR4OjAsX2d1aWRwOiJ5IixfbG9hZGVkOnt9LF9CQVNFX1JFOi8oPzpcPyg/OlteJl0qJikqKFteJl0qKSk/XGIoeXVpKD86LVx3Kyk/KVwvXDIoPzotKG1pbnxkZWJ1ZykpP1wuanMvLHBhcnNlQmFzZVBhdGg6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLm1hdGNoKHQpLHIsaTtyZXR1cm4gbiYmKHI9UmVnRXhwLmxlZnRDb250ZXh0fHxlLnNsaWNlKDAsZS5pbmRleE9mKG5bMF0pKSxpPW5bM10sblsxXSYmKHIrPSI/IituWzFdKSxyPXtmaWx0ZXI6aSxwYXRoOnJ9KSxyfSxnZXRCYXNlOnMmJnMuZ2V0QmFzZXx8ZnVuY3Rpb24odCl7dmFyIG49aCYmaC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iil8fFtdLGk9dS5jZG4scyxvLGEsZjtmb3Iobz0wLGE9bi5sZW5ndGg7bzxhOysrbyl7Zj1uW29dLnNyYztpZihmKXtzPXIuRW52LnBhcnNlQmFzZVBhdGgoZix0KTtpZihzKXtlPXMuZmlsdGVyLGk9cy5wYXRoO2JyZWFrfX19cmV0dXJuIGl9fSx1PXIuRW52LHUuX2xvYWRlZFtuXT17fTtpZihzJiZyIT09WVVJKXUuX3lpZHg9KytzLl95aWR4LHUuX2d1aWRwPSgieXVpXyIrbisiXyIrdS5feWlkeCsiXyIrbSkucmVwbGFjZSgvW15hLXowLTlfXSsvZywiXyIpO2Vsc2UgaWYoWVVJLl9ZVUkpe3M9WVVJLl9ZVUkuRW52LHUuX3lpZHgrPXMuX3lpZHgsdS5fdWlkeCs9cy5fdWlkeDtmb3IoYSBpbiBzKWEgaW4gdXx8KHVbYV09c1thXSk7ZGVsZXRlIFlVSS5fWVVJfXIuaWQ9ci5zdGFtcChyKSx2W3IuaWRdPXJ9ci5jb25zdHJ1Y3Rvcj1ZVUksci5jb25maWc9ci5jb25maWd8fHtib290c3RyYXA6ITAsY2FjaGVVc2U6ITAsZGVidWc6ITAsZG9jOmgsZmV0Y2hDU1M6ITAsdGhyb3dGYWlsOiEwLHVzZUJyb3dzZXJDb25zb2xlOiEwLHVzZU5hdGl2ZUVTNTohMCx3aW46YyxnbG9iYWw6RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX0saCYmIWguZ2V0RWxlbWVudEJ5SWQobyk/KHQ9aC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0LmlubmVySFRNTD0nPGRpdiBpZD0iJytvKyciIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQiPjwvZGl2PicsWVVJLkVudi5jc3NTdGFtcEVsPXQuZmlyc3RDaGlsZCxoLmJvZHk/aC5ib2R5LmFwcGVuZENoaWxkKFlVSS5FbnYuY3NzU3RhbXBFbCk6cC5pbnNlcnRCZWZvcmUoWVVJLkVudi5jc3NTdGFtcEVsLHAuZmlyc3RDaGlsZCkpOmgmJmguZ2V0RWxlbWVudEJ5SWQobykmJiFZVUkuRW52LmNzc1N0YW1wRWwmJihZVUkuRW52LmNzc1N0YW1wRWw9aC5nZXRFbGVtZW50QnlJZChvKSksci5jb25maWcubGFuZz1yLmNvbmZpZy5sYW5nfHwiZW4tVVMiLHIuY29uZmlnLmJhc2U9WVVJLmNvbmZpZy5iYXNlfHxyLkVudi5nZXRCYXNlKHIuRW52Ll9CQVNFX1JFKTtpZighZXx8ISJtaW5kZWJ1ZyIuaW5kZXhPZihlKSllPSJtaW4iO2U9ZT8iLSIrZTplLHIuY29uZmlnLmxvYWRlclBhdGg9WVVJLmNvbmZpZy5sb2FkZXJQYXRofHwibG9hZGVyL2xvYWRlciIrZSsiLmpzIn0sX3NldHVwOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLG49W10scj1ZVUkuRW52Lm1vZHMsaT10LmNvbmZpZy5jb3JlfHxbXS5jb25jYXQoWVVJLkVudi5jb3JlKTtmb3IoZT0wO2U8aS5sZW5ndGg7ZSsrKXJbaVtlXV0mJm4ucHVzaChpW2VdKTt0Ll9hdHRhY2goWyJ5dWktYmFzZSJdKSx0Ll9hdHRhY2gobiksdC5Mb2FkZXImJkUodCl9LGFwcGx5VG86ZnVuY3Rpb24oZSx0LG4pe2lmKHQgaW4gZil7dmFyIHI9dltlXSxpLHMsbztpZihyKXtpPXQuc3BsaXQoIi4iKSxzPXI7Zm9yKG89MDtvPGkubGVuZ3RoO28rPTEpcz1zW2lbb11dLHN8fHRoaXMubG9nKCJhcHBseVRvIG5vdCBmb3VuZDogIit0LCJ3YXJuIiwieXVpIik7cmV0dXJuIHMmJnMuYXBwbHkocixuKX1yZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5sb2codCsiOiBhcHBseVRvIG5vdCBhbGxvd2VkIiwid2FybiIsInl1aSIpLG51bGx9LGFkZDpmdW5jdGlvbihlLHQsbixyKXtyPXJ8fHt9O3ZhciBpPVlVSS5FbnYscz17bmFtZTplLGZuOnQsdmVyc2lvbjpuLGRldGFpbHM6cn0sbz17fSx1LGEsZixsLGM9aS52ZXJzaW9ucztpLm1vZHNbZV09cyxjW25dPWNbbl18fHt9LGNbbl1bZV09cztmb3IobCBpbiB2KXYuaGFzT3duUHJvcGVydHkobCkmJihhPXZbbF0sb1thLmlkXXx8KG9bYS5pZF09ITAsdT1hLkVudi5fbG9hZGVyLHUmJihmPXUuZ2V0TW9kdWxlSW5mbyhlKSwoIWZ8fGYudGVtcCkmJnUuYWRkTW9kdWxlKHIsZSkpKSk7cmV0dXJuIHRoaXN9LF9hdHRhY2g6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGkscyxvLHUsYSxmPVlVSS5FbnYubW9kcyxsPVlVSS5FbnYuYWxpYXNlcyxjPXRoaXMsaCxwPVlVSS5FbnYuX3JlbmRlcmVkTW9kcyxkPWMuRW52Ll9sb2FkZXIsdj1jLkVudi5fYXR0YWNoZWQsbT1jLkVudi5fZXhwb3J0ZWQsZz1lLmxlbmd0aCxkLHksYix3PVtdLEUsUyx4LFQsTixDLGs7Zm9yKG49MDtuPGc7bisrKXtyPWVbbl0saT1mW3JdLHcucHVzaChyKTtpZihkJiZkLmNvbmRpdGlvbnNbcl0pZm9yKGggaW4gZC5jb25kaXRpb25zW3JdKWQuY29uZGl0aW9uc1tyXS5oYXNPd25Qcm9wZXJ0eShoKSYmKHk9ZC5jb25kaXRpb25zW3JdW2hdLGI9eSYmKHkudWEmJmMuVUFbeS51YV18fHkudGVzdCYmeS50ZXN0KGMpKSxiJiZ3LnB1c2goeS5uYW1lKSl9ZT13LGc9ZS5sZW5ndGg7Zm9yKG49MDtuPGc7bisrKWlmKCF2W2Vbbl1dKXtyPWVbbl0saT1mW3JdO2lmKGwmJmxbcl0mJiFpKXtjLl9hdHRhY2gobFtyXSk7Y29udGludWV9aWYoIWkpVD1kJiZkLmdldE1vZHVsZUluZm8ociksVCYmKGk9VCx0PSEwKSwhdCYmciYmci5pbmRleE9mKCJza2luLSIpPT09LTEmJnIuaW5kZXhPZigiY3NzIik9PT0tMSYmKGMuRW52Ll9taXNzZWQucHVzaChyKSxjLkVudi5fbWlzc2VkPWMuQXJyYXkuZGVkdXBlKGMuRW52Ll9taXNzZWQpLGMubWVzc2FnZSgiTk9UIGxvYWRlZDogIityLCJ3YXJuIiwieXVpIikpO2Vsc2V7dltyXT0hMDtmb3IoaD0wO2g8Yy5FbnYuX21pc3NlZC5sZW5ndGg7aCsrKWMuRW52Ll9taXNzZWRbaF09PT1yJiYoYy5tZXNzYWdlKCJGb3VuZDogIityKyIgKHdhcyByZXBvcnRlZCBhcyBtaXNzaW5nIGVhcmxpZXIpIiwid2FybiIsInl1aSIpLGMuRW52Ll9taXNzZWQuc3BsaWNlKGgsMSkpO2lmKGQmJiFkLl9jYW5CZUF0dGFjaGVkKHIpKXJldHVybiEwO2lmKGQmJnAmJnBbcl0mJnBbcl0udGVtcCl7ZC5nZXRSZXF1aXJlcyhwW3JdKSxvPVtdLFQ9ZC5nZXRNb2R1bGVJbmZvKHIpO2ZvcihoIGluIFQuZXhwYW5kZWRfbWFwKVQuZXhwYW5kZWRfbWFwLmhhc093blByb3BlcnR5KGgpJiZvLnB1c2goaCk7Yy5fYXR0YWNoKG8pfXM9aS5kZXRhaWxzLG89cy5yZXF1aXJlcyxTPXMuZXMsdT1zLnVzZSxhPXMuYWZ0ZXIscy5sYW5nJiYobz1vfHxbXSxvLnVuc2hpZnQoImludGwiKSk7aWYobyl7eD1vLmxlbmd0aDtmb3IoaD0wO2g8eDtoKyspaWYoIXZbb1toXV0pe2lmKCFjLl9hdHRhY2gobykpcmV0dXJuITE7YnJlYWt9fWlmKGEpZm9yKGg9MDtoPGEubGVuZ3RoO2grKylpZighdlthW2hdXSl7aWYoIWMuX2F0dGFjaChhLCEwKSlyZXR1cm4hMTticmVha31pZihpLmZuKXtFPVtjLHJdO2lmKFMpe2s9e30sQz17fSxFLnB1c2goayxDKTtpZihvKXt4PW8ubGVuZ3RoO2ZvcihoPTA7aDx4O2grKylrW29baF1dPW0uaGFzT3duUHJvcGVydHkob1toXSk/bVtvW2hdXTpjfX1pZihjLmNvbmZpZy50aHJvd0ZhaWwpQz1pLmZuCi5hcHBseShTP3VuZGVmaW5lZDppLEUpO2Vsc2UgdHJ5e0M9aS5mbi5hcHBseShTP3VuZGVmaW5lZDppLEUpfWNhdGNoKEwpe3JldHVybiBjLmVycm9yKCJBdHRhY2ggZXJyb3I6ICIrcixMLHIpLCExfVMmJihtW3JdPUMsTj1pLmRldGFpbHMuY29uZGl0aW9uLE4mJk4ud2hlbj09PSJpbnN0ZWFkIiYmKG1bTi50cmlnZ2VyXT1DKSl9aWYodSlmb3IoaD0wO2g8dS5sZW5ndGg7aCsrKWlmKCF2W3VbaF1dKXtpZighYy5fYXR0YWNoKHUpKXJldHVybiExO2JyZWFrfX19cmV0dXJuITB9LF9kZWxheUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPVsiZXZlbnQtYmFzZSJdO3JldHVybiB0PW4uTGFuZy5pc09iamVjdCh0KT90OntldmVudDp0fSx0LmV2ZW50PT09ImxvYWQiJiZyLnB1c2goImV2ZW50LXN5bnRoZXRpYyIpLGZ1bmN0aW9uKCl7dmFyIGk9YXJndW1lbnRzO24uX3VzZShyLGZ1bmN0aW9uKCl7bi5vbih0LmV2ZW50LGZ1bmN0aW9uKCl7aVsxXS5kZWxheVVudGlsPXQuZXZlbnQsZS5hcHBseShuLGkpfSx0LmFyZ3MpfSl9fSx1c2U6ZnVuY3Rpb24oKXt2YXIgZT1hLmNhbGwoYXJndW1lbnRzLDApLHQ9ZVtlLmxlbmd0aC0xXSxuPXRoaXMscj0wLGkscz1uLkVudixvPSEwO24uTGFuZy5pc0Z1bmN0aW9uKHQpPyhlLnBvcCgpLG4uY29uZmlnLmRlbGF5VW50aWwmJih0PW4uX2RlbGF5Q2FsbGJhY2sodCxuLmNvbmZpZy5kZWxheVVudGlsKSkpOnQ9bnVsbCxuLkxhbmcuaXNBcnJheShlWzBdKSYmKGU9ZVswXSk7aWYobi5jb25maWcuY2FjaGVVc2Upe3doaWxlKGk9ZVtyKytdKWlmKCFzLl9hdHRhY2hlZFtpXSl7bz0hMTticmVha31pZihvKXJldHVybiBlLmxlbmd0aCxuLl9ub3RpZnkodCx4LGUpLG59cmV0dXJuIG4uX2xvYWRpbmc/KG4uX3VzZVF1ZXVlPW4uX3VzZVF1ZXVlfHxuZXcgbi5RdWV1ZSxuLl91c2VRdWV1ZS5hZGQoW2UsdF0pKTpuLl91c2UoZSxmdW5jdGlvbihuLHIpe24uX25vdGlmeSh0LHIsZSl9KSxufSxyZXF1aXJlOmZ1bmN0aW9uKCl7dmFyIGU9YS5jYWxsKGFyZ3VtZW50cyksdDt0eXBlb2YgZVtlLmxlbmd0aC0xXT09ImZ1bmN0aW9uIiYmKHQ9ZS5wb3AoKSxlLnB1c2goZnVuY3Rpb24obil7dmFyIHIsaT1lLmxlbmd0aCxzPW4uRW52Ll9leHBvcnRlZCxvPXt9O2ZvcihyPTA7cjxpO3IrKylzLmhhc093blByb3BlcnR5KGVbcl0pJiYob1tlW3JdXT1zW2Vbcl1dKTt0LmNhbGwodW5kZWZpbmVkLG4sbyl9KSksdGhpcy51c2UuYXBwbHkodGhpcyxlKX0sX25vdGlmeTpmdW5jdGlvbihlLHQsbil7aWYoIXQuc3VjY2VzcyYmdGhpcy5jb25maWcubG9hZEVycm9yRm4pdGhpcy5jb25maWcubG9hZEVycm9yRm4uY2FsbCh0aGlzLHRoaXMsZSx0LG4pO2Vsc2UgaWYoZSl7dGhpcy5FbnYuX21pc3NlZCYmdGhpcy5FbnYuX21pc3NlZC5sZW5ndGgmJih0Lm1zZz0iTWlzc2luZyBtb2R1bGVzOiAiK3RoaXMuRW52Ll9taXNzZWQuam9pbigpLHQuc3VjY2Vzcz0hMSk7aWYodGhpcy5jb25maWcudGhyb3dGYWlsKWUodGhpcyx0KTtlbHNlIHRyeXtlKHRoaXMsdCl9Y2F0Y2gocil7dGhpcy5lcnJvcigidXNlIGNhbGxiYWNrIGVycm9yIixyLG4pfX19LF91c2U6ZnVuY3Rpb24oZSx0KXt0aGlzLkFycmF5fHx0aGlzLl9hdHRhY2goWyJ5dWktYmFzZSJdKTt2YXIgcixpLHMsbz10aGlzLHU9WVVJLkVudixhPXUubW9kcyxmPW8uRW52LGw9Zi5fdXNlZCxjPXUuYWxpYXNlcyxoPXUuX2xvYWRlclF1ZXVlLHA9ZVswXSxkPW8uQXJyYXksdj1vLmNvbmZpZyxtPXYuYm9vdHN0cmFwLGc9W10seSxiPVtdLHc9ITAsUz12LmZldGNoQ1NTLHg9ZnVuY3Rpb24oZSx0KXt2YXIgcj0wLGk9W10scyxvLGYsaCxwO2lmKCFlLmxlbmd0aClyZXR1cm47aWYoYyl7bz1lLmxlbmd0aDtmb3Iocj0wO3I8bztyKyspY1tlW3JdXSYmIWFbZVtyXV0/aT1bXS5jb25jYXQoaSxjW2Vbcl1dKTppLnB1c2goZVtyXSk7ZT1pfW89ZS5sZW5ndGg7Zm9yKHI9MDtyPG87cisrKXtzPWVbcl0sdHx8Yi5wdXNoKHMpO2lmKGxbc10pY29udGludWU7Zj1hW3NdLGg9bnVsbCxwPW51bGwsZj8obFtzXT0hMCxoPWYuZGV0YWlscy5yZXF1aXJlcyxwPWYuZGV0YWlscy51c2UpOnUuX2xvYWRlZFtuXVtzXT9sW3NdPSEwOmcucHVzaChzKSxoJiZoLmxlbmd0aCYmeChoKSxwJiZwLmxlbmd0aCYmeChwLDEpfX0sVD1mdW5jdGlvbihuKXt2YXIgcj1ufHx7c3VjY2VzczohMCxtc2c6Im5vdCBkeW5hbWljIn0saSxzLHU9ITAsYT1yLmRhdGE7by5fbG9hZGluZz0hMSxhJiYocz1nLGc9W10sYj1bXSx4KGEpLGk9Zy5sZW5ndGgsaSYmW10uY29uY2F0KGcpLnNvcnQoKS5qb2luKCk9PXMuc29ydCgpLmpvaW4oKSYmKGk9ITEpKSxpJiZhPyhvLl9sb2FkaW5nPSEwLG8uX3VzZShnLGZ1bmN0aW9uKCl7by5fYXR0YWNoKGEpJiZvLl9ub3RpZnkodCxyLGEpfSkpOihhJiYodT1vLl9hdHRhY2goYSkpLHUmJm8uX25vdGlmeSh0LHIsZSkpLG8uX3VzZVF1ZXVlJiZvLl91c2VRdWV1ZS5zaXplKCkmJiFvLl9sb2FkaW5nJiZvLl91c2UuYXBwbHkobyxvLl91c2VRdWV1ZS5uZXh0KCkpfTtpZihwPT09IioiKXtlPVtdO2Zvcih5IGluIGEpYS5oYXNPd25Qcm9wZXJ0eSh5KSYmZS5wdXNoKHkpO3JldHVybiB3PW8uX2F0dGFjaChlKSx3JiZUKCksb31yZXR1cm4oYS5sb2FkZXJ8fGFbImxvYWRlci1iYXNlIl0pJiYhby5Mb2FkZXImJm8uX2F0dGFjaChbImxvYWRlciIrKGEubG9hZGVyPyIiOiItYmFzZSIpXSksbSYmby5Mb2FkZXImJmUubGVuZ3RoJiYoaT1FKG8pLGkucmVxdWlyZShlKSxpLmlnbm9yZVJlZ2lzdGVyZWQ9ITAsaS5fYm9vdD0hMCxpLmNhbGN1bGF0ZShudWxsLFM/bnVsbDoianMiKSxlPWkuc29ydGVkLGkuX2Jvb3Q9ITEpLHgoZSkscj1nLmxlbmd0aCxyJiYoZz1kLmRlZHVwZShnKSxyPWcubGVuZ3RoKSxtJiZyJiZvLkxvYWRlcj8oby5fbG9hZGluZz0hMCxpPUUobyksaS5vbkVuZD1ULGkuY29udGV4dD1vLGkuZGF0YT1lLGkuaWdub3JlUmVnaXN0ZXJlZD0hMSxpLnJlcXVpcmUoZyksaS5pbnNlcnQobnVsbCxTP251bGw6ImpzIikpOm0mJnImJm8uR2V0JiYhZi5ib290c3RyYXBwZWQ/KG8uX2xvYWRpbmc9ITAscz1mdW5jdGlvbigpe28uX2xvYWRpbmc9ITEsaC5ydW5uaW5nPSExLGYuYm9vdHN0cmFwcGVkPSEwLHUuX2Jvb3RzdHJhcHBpbmc9ITEsby5fYXR0YWNoKFsibG9hZGVyIl0pJiZvLl91c2UoZSx0KX0sdS5fYm9vdHN0cmFwcGluZz9oLmFkZChzKToodS5fYm9vdHN0cmFwcGluZz0hMCxvLkdldC5zY3JpcHQodi5iYXNlK3YubG9hZGVyUGF0aCx7b25FbmQ6c30pKSk6KHc9by5fYXR0YWNoKGUpLHcmJlQoKSksb30sbmFtZXNwYWNlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLHQsbj0wLGkscyxvO2Zvcig7bjxlLmxlbmd0aDtuKyspe3Q9dGhpcyxvPWVbbl07aWYoby5pbmRleE9mKHIpPi0xKXtzPW8uc3BsaXQocik7Zm9yKGk9c1swXT09IllBSE9PIj8xOjA7aTxzLmxlbmd0aDtpKyspdFtzW2ldXT10W3NbaV1dfHx7fSx0PXRbc1tpXV19ZWxzZSB0W29dPXRbb118fHt9LHQ9dFtvXX1yZXR1cm4gdH0sbG9nOnUsbWVzc2FnZTp1LGR1bXA6ZnVuY3Rpb24oZSl7cmV0dXJuIiIrZX0sZXJyb3I6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMsaTtyLmNvbmZpZy5lcnJvckZuJiYoaT1yLmNvbmZpZy5lcnJvckZuLmFwcGx5KHIsYXJndW1lbnRzKSk7aWYoIWkpdGhyb3cgdHx8bmV3IEVycm9yKGUpO3JldHVybiByLm1lc3NhZ2UoZSwiZXJyb3IiLCIiK24pLHJ9LGd1aWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5FbnYuX2d1aWRwKyJfIisgKyt0aGlzLkVudi5fdWlkeDtyZXR1cm4gZT9lK3Q6dH0sc3RhbXA6ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZighZSlyZXR1cm4gZTtlLnVuaXF1ZUlEJiZlLm5vZGVUeXBlJiZlLm5vZGVUeXBlIT09OT9uPWUudW5pcXVlSUQ6bj10eXBlb2YgZT09InN0cmluZyI/ZTplLl95dWlkO2lmKCFuKXtuPXRoaXMuZ3VpZCgpO2lmKCF0KXRyeXtlLl95dWlkPW59Y2F0Y2gocil7bj1udWxsfX1yZXR1cm4gbn0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5FdmVudCYmZS5FdmVudC5fdW5sb2FkKCksZGVsZXRlIHZbZS5pZF0sZGVsZXRlIGUuRW52LGRlbGV0ZSBlLmNvbmZpZ319LFlVSS5wcm90b3R5cGU9ZTtmb3IodCBpbiBlKWUuaGFzT3duUHJvcGVydHkodCkmJihZVUlbdF09ZVt0XSk7WVVJLmFwcGx5Q29uZmlnPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybjtZVUkuR2xvYmFsQ29uZmlnJiZ0aGlzLnByb3RvdHlwZS5hcHBseUNvbmZpZy5jYWxsKHRoaXMsWVVJLkdsb2JhbENvbmZpZyksdGhpcy5wcm90b3R5cGUuYXBwbHlDb25maWcuY2FsbCh0aGlzLGUpLFlVSS5HbG9iYWxDb25maWc9dGhpcy5jb25maWd9LFlVSS5faW5pdCgpLGw/KGcoaCwiRE9NQ29udGVudExvYWRlZCIsYiksZyh3aW5kb3csImxvYWQiLHcpKTooYigpLHcoKSksWVVJLkVudi5hZGQ9ZyxZVUkuRW52LnJlbW92ZT15LHR5cGVvZiBleHBvcnRzPT0ib2JqZWN0IiYmKGV4cG9ydHMuWVVJPVlVSSxZVUkuc2V0TG9hZEhvb2s9ZnVuY3Rpb24oZSl7WVVJLl9nZXRMb2FkSG9vaz1lfSxZVUkuX2dldExvYWRIb29rPW51bGwpLFlVSS5FbnZbbl09e319KSgpLFlVSS5hZGQoInl1aS1iYXNlIixmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG0oZSx0LG4pe3ZhciByLGk7dHx8KHQ9MCk7aWYobnx8bS50ZXN0KGUpKXRyeXtyZXR1cm4gZC5zbGljZS5jYWxsKGUsdCl9Y2F0Y2gocyl7aT1bXTtmb3Iocj1lLmxlbmd0aDt0PHI7Kyt0KWkucHVzaChlW3RdKTtyZXR1cm4gaX1yZXR1cm5bZV19ZnVuY3Rpb24gZygpe3RoaXMuX2luaXQoKSx0aGlzLmFkZC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIG49ZS5MYW5nfHwoZS5MYW5nPXt9KSxyPVN0cmluZy5wcm90b3R5cGUsaT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLHM9eyJ1bmRlZmluZWQiOiJ1bmRlZmluZWQiLG51bWJlcjoibnVtYmVyIiwiYm9vbGVhbiI6ImJvb2xlYW4iLHN0cmluZzoic3RyaW5nIiwiW29iamVjdCBGdW5jdGlvbl0iOiJmdW5jdGlvbiIsIltvYmplY3QgUmVnRXhwXSI6InJlZ2V4cCIsIltvYmplY3QgQXJyYXldIjoiYXJyYXkiLCJbb2JqZWN0IERhdGVdIjoiZGF0ZSIsIltvYmplY3QgRXJyb3JdIjoiZXJyb3IifSxvPS9ce1xzKihbXnx9XSs/KVxzKig/Olx8KFtefV0qKSk/XHMqXH0vZyx1PSIJXG4LXGZcciBcdTAwYTBcdTE2ODBcdTE4MGVcdTIwMDBcdTIwMDFcdTIwMDJcdTIwMDNcdTIwMDRcdTIwMDVcdTIwMDZcdTIwMDdcdTIwMDhcdTIwMDlcdTIwMGFcdTIwMjhcdTIwMjlcdTIwMmZcdTIwNWZcdTMwMDBcdWZlZmYiLGE9IlsJLVxyIFx1MDBhMFx1MTY4MFx1MTgwZVx1MjAwMC1cdTIwMGFcdTIwMjhcdTIwMjlcdTIwMmZcdTIwNWZcdTMwMDBcdWZlZmZdKyIsZj1uZXcgUmVnRXhwKCJeIithKSxsPW5ldyBSZWdFeHAoYSsiJCIpLGM9bmV3IFJlZ0V4cChmLnNvdXJjZSsifCIrbC5zb3VyY2UsImciKSxoPS9ce1xzKlxbKD86bmF0aXZlIGNvZGV8ZnVuY3Rpb24pXF1ccypcfS9pO24uX2lzTmF0aXZlPWZ1bmN0aW9uKHQpe3JldHVybiEhKGUuY29uZmlnLnVzZU5hdGl2ZUVTNSYmdCYmaC50ZXN0KHQpKX0sbi5pc0FycmF5PW4uX2lzTmF0aXZlKEFycmF5LmlzQXJyYXkpP0FycmF5LmlzQXJyYXk6ZnVuY3Rpb24oZSl7cmV0dXJuIG4udHlwZShlKT09PSJhcnJheSJ9LG4uaXNCb29sZWFuPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09ImJvb2xlYW4ifSxuLmlzRGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gbi50eXBlKGUpPT09ImRhdGUiJiZlLnRvU3RyaW5nKCkhPT0iSW52YWxpZCBEYXRlIiYmIWlzTmFOKGUpfSxuLmlzRnVuY3Rpb249ZnVuY3Rpb24oZSl7cmV0dXJuIG4udHlwZShlKT09PSJmdW5jdGlvbiJ9LG4uaXNOdWxsPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09bnVsbH0sbi5pc051bWJlcj1mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PSJudW1iZXIiJiZpc0Zpbml0ZShlKX0sbi5pc09iamVjdD1mdW5jdGlvbihlLHQpe3ZhciByPXR5cGVvZiBlO3JldHVybiBlJiYocj09PSJvYmplY3QifHwhdCYmKHI9PT0iZnVuY3Rpb24ifHwKbi5pc0Z1bmN0aW9uKGUpKSl8fCExfSxuLmlzUmVnRXhwPWZ1bmN0aW9uKGUpe3JldHVybiBuLnR5cGUoZSk9PT0icmVnZXhwIn0sbi5pc1N0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmcifSxuLmlzVW5kZWZpbmVkPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09InVuZGVmaW5lZCJ9LG4uaXNWYWx1ZT1mdW5jdGlvbihlKXt2YXIgdD1uLnR5cGUoZSk7c3dpdGNoKHQpe2Nhc2UibnVtYmVyIjpyZXR1cm4gaXNGaW5pdGUoZSk7Y2FzZSJudWxsIjpjYXNlInVuZGVmaW5lZCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hIXR9fSxuLm5vdz1EYXRlLm5vd3x8ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX0sbi5zdWI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5yZXBsYWNlP2UucmVwbGFjZShvLGZ1bmN0aW9uKGUscil7cmV0dXJuIG4uaXNVbmRlZmluZWQodFtyXSk/ZTp0W3JdfSk6ZX0sbi50cmltPW4uX2lzTmF0aXZlKHIudHJpbSkmJiF1LnRyaW0oKT9mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS50cmltP2UudHJpbSgpOmV9OmZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gZS5yZXBsYWNlKGMsIiIpfWNhdGNoKHQpe3JldHVybiBlfX0sbi50cmltTGVmdD1uLl9pc05hdGl2ZShyLnRyaW1MZWZ0KSYmIXUudHJpbUxlZnQoKT9mdW5jdGlvbihlKXtyZXR1cm4gZS50cmltTGVmdCgpfTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGYsIiIpfSxuLnRyaW1SaWdodD1uLl9pc05hdGl2ZShyLnRyaW1SaWdodCkmJiF1LnRyaW1SaWdodCgpP2Z1bmN0aW9uKGUpe3JldHVybiBlLnRyaW1SaWdodCgpfTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGwsIiIpfSxuLnR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHNbdHlwZW9mIGVdfHxzW2kuY2FsbChlKV18fChlPyJvYmplY3QiOiJudWxsIil9O3ZhciBwPWUuTGFuZyxkPUFycmF5LnByb3RvdHlwZSx2PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5BcnJheT1tLG0uZGVkdXBlPXAuX2lzTmF0aXZlKE9iamVjdC5jcmVhdGUpP2Z1bmN0aW9uKGUpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCksbj1bXSxyLGkscztmb3Iocj0wLHM9ZS5sZW5ndGg7cjxzOysrcilpPWVbcl0sdFtpXXx8KHRbaV09MSxuLnB1c2goaSkpO3JldHVybiBufTpmdW5jdGlvbihlKXt2YXIgdD17fSxuPVtdLHIsaSxzO2ZvcihyPTAscz1lLmxlbmd0aDtyPHM7KytyKWk9ZVtyXSx2LmNhbGwodCxpKXx8KHRbaV09MSxuLnB1c2goaSkpO3JldHVybiBufSxtLmVhY2g9bS5mb3JFYWNoPXAuX2lzTmF0aXZlKGQuZm9yRWFjaCk/ZnVuY3Rpb24odCxuLHIpe3JldHVybiBkLmZvckVhY2guY2FsbCh0fHxbXSxuLHJ8fGUpLGV9OmZ1bmN0aW9uKHQsbixyKXtmb3IodmFyIGk9MCxzPXQmJnQubGVuZ3RofHwwO2k8czsrK2kpaSBpbiB0JiZuLmNhbGwocnx8ZSx0W2ldLGksdCk7cmV0dXJuIGV9LG0uaGFzaD1mdW5jdGlvbihlLHQpe3ZhciBuPXt9LHI9dCYmdC5sZW5ndGh8fDAsaSxzO2ZvcihpPTAscz1lLmxlbmd0aDtpPHM7KytpKWkgaW4gZSYmKG5bZVtpXV09cj5pJiZpIGluIHQ/dFtpXTohMCk7cmV0dXJuIG59LG0uaW5kZXhPZj1wLl9pc05hdGl2ZShkLmluZGV4T2YpP2Z1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZC5pbmRleE9mLmNhbGwoZSx0LG4pfTpmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5sZW5ndGg7bj0rbnx8MCxuPShuPjB8fC0xKSpNYXRoLmZsb29yKE1hdGguYWJzKG4pKSxuPDAmJihuKz1yLG48MCYmKG49MCkpO2Zvcig7bjxyOysrbilpZihuIGluIGUmJmVbbl09PT10KXJldHVybiBuO3JldHVybi0xfSxtLm51bWVyaWNTb3J0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUtdH0sbS5zb21lPXAuX2lzTmF0aXZlKGQuc29tZSk/ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBkLnNvbWUuY2FsbChlLHQsbil9OmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MCxpPWUubGVuZ3RoO3I8aTsrK3IpaWYociBpbiBlJiZ0LmNhbGwobixlW3JdLHIsZSkpcmV0dXJuITA7cmV0dXJuITF9LG0udGVzdD1mdW5jdGlvbihlKXt2YXIgdD0wO2lmKHAuaXNBcnJheShlKSl0PTE7ZWxzZSBpZihwLmlzT2JqZWN0KGUpKXRyeXsibGVuZ3RoImluIGUmJiFlLnRhZ05hbWUmJighZS5zY3JvbGxUb3x8IWUuZG9jdW1lbnQpJiYhZS5hcHBseSYmKHQ9Mil9Y2F0Y2gobil7fXJldHVybiB0fSxnLnByb3RvdHlwZT17X2luaXQ6ZnVuY3Rpb24oKXt0aGlzLl9xPVtdfSxuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Euc2hpZnQoKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9xLnBvcCgpfSxhZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcS5wdXNoLmFwcGx5KHRoaXMuX3EsYXJndW1lbnRzKSx0aGlzfSxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3EubGVuZ3RofX0sZS5RdWV1ZT1nLFlVSS5FbnYuX2xvYWRlclF1ZXVlPVlVSS5FbnYuX2xvYWRlclF1ZXVlfHxuZXcgZzt2YXIgeT0iX18iLHY9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxiPWUuTGFuZy5pc09iamVjdDtlLmNhY2hlZD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHR8fCh0PXt9KSxmdW5jdGlvbihyKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjE/QXJyYXkucHJvdG90eXBlLmpvaW4uY2FsbChhcmd1bWVudHMseSk6U3RyaW5nKHIpO2lmKCEoaSBpbiB0KXx8biYmdFtpXT09bil0W2ldPWUuYXBwbHkoZSxhcmd1bWVudHMpO3JldHVybiB0W2ldfX0sZS5nZXRMb2NhdGlvbj1mdW5jdGlvbigpe3ZhciB0PWUuY29uZmlnLndpbjtyZXR1cm4gdCYmdC5sb2NhdGlvbn0sZS5tZXJnZT1mdW5jdGlvbigpe3ZhciBlPTAsdD1hcmd1bWVudHMubGVuZ3RoLG49e30scixpO2Zvcig7ZTx0OysrZSl7aT1hcmd1bWVudHNbZV07Zm9yKHIgaW4gaSl2LmNhbGwoaSxyKSYmKG5bcl09aVtyXSl9cmV0dXJuIG59LGUubWl4PWZ1bmN0aW9uKHQsbixyLGkscyxvKXt2YXIgdSxhLGYsbCxjLGgscDtpZighdHx8IW4pcmV0dXJuIHR8fGU7aWYocyl7cz09PTImJmUubWl4KHQucHJvdG90eXBlLG4ucHJvdG90eXBlLHIsaSwwLG8pLGY9cz09PTF8fHM9PT0zP24ucHJvdG90eXBlOm4scD1zPT09MXx8cz09PTQ/dC5wcm90b3R5cGU6dDtpZighZnx8IXApcmV0dXJuIHR9ZWxzZSBmPW4scD10O3U9ciYmIW87aWYoaSlmb3IobD0wLGg9aS5sZW5ndGg7bDxoOysrbCl7Yz1pW2xdO2lmKCF2LmNhbGwoZixjKSljb250aW51ZTthPXU/ITE6YyBpbiBwO2lmKG8mJmEmJmIocFtjXSwhMCkmJmIoZltjXSwhMCkpZS5taXgocFtjXSxmW2NdLHIsbnVsbCwwLG8pO2Vsc2UgaWYocnx8IWEpcFtjXT1mW2NdfWVsc2V7Zm9yKGMgaW4gZil7aWYoIXYuY2FsbChmLGMpKWNvbnRpbnVlO2E9dT8hMTpjIGluIHA7aWYobyYmYSYmYihwW2NdLCEwKSYmYihmW2NdLCEwKSllLm1peChwW2NdLGZbY10scixudWxsLDAsbyk7ZWxzZSBpZihyfHwhYSlwW2NdPWZbY119ZS5PYmplY3QuX2hhc0VudW1CdWcmJmUubWl4KHAsZixyLGUuT2JqZWN0Ll9mb3JjZUVudW0scyxvKX1yZXR1cm4gdH07dmFyIHA9ZS5MYW5nLHY9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSx3LEU9ZS5PYmplY3Q9cC5faXNOYXRpdmUoT2JqZWN0LmNyZWF0ZSk/ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5jcmVhdGUoZSl9OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31yZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUucHJvdG90eXBlPXQsbmV3IGV9fSgpLFM9RS5fZm9yY2VFbnVtPVsiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJ0b1N0cmluZyIsInRvTG9jYWxlU3RyaW5nIiwidmFsdWVPZiJdLHg9RS5faGFzRW51bUJ1Zz0he3ZhbHVlT2Y6MH0ucHJvcGVydHlJc0VudW1lcmFibGUoInZhbHVlT2YiKSxUPUUuX2hhc1Byb3RvRW51bUJ1Zz1mdW5jdGlvbigpe30ucHJvcGVydHlJc0VudW1lcmFibGUoInByb3RvdHlwZSIpLE49RS5vd25zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuISFlJiZ2LmNhbGwoZSx0KX07RS5oYXNLZXk9TixFLmtleXM9cC5faXNOYXRpdmUoT2JqZWN0LmtleXMpJiYhVD9PYmplY3Qua2V5czpmdW5jdGlvbihlKXtpZighcC5pc09iamVjdChlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Iik7dmFyIHQ9W10sbixyLGk7aWYoVCYmdHlwZW9mIGU9PSJmdW5jdGlvbiIpZm9yKHIgaW4gZSlOKGUscikmJnIhPT0icHJvdG90eXBlIiYmdC5wdXNoKHIpO2Vsc2UgZm9yKHIgaW4gZSlOKGUscikmJnQucHVzaChyKTtpZih4KWZvcihuPTAsaT1TLmxlbmd0aDtuPGk7KytuKXI9U1tuXSxOKGUscikmJnQucHVzaChyKTtyZXR1cm4gdH0sRS52YWx1ZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9RS5rZXlzKGUpLG49MCxyPXQubGVuZ3RoLGk9W107Zm9yKDtuPHI7KytuKWkucHVzaChlW3Rbbl1dKTtyZXR1cm4gaX0sRS5zaXplPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gRS5rZXlzKGUpLmxlbmd0aH1jYXRjaCh0KXtyZXR1cm4gMH19LEUuaGFzVmFsdWU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5BcnJheS5pbmRleE9mKEUudmFsdWVzKHQpLG4pPi0xfSxFLmVhY2g9ZnVuY3Rpb24odCxuLHIsaSl7dmFyIHM7Zm9yKHMgaW4gdCkoaXx8Tih0LHMpKSYmbi5jYWxsKHJ8fGUsdFtzXSxzLHQpO3JldHVybiBlfSxFLnNvbWU9ZnVuY3Rpb24odCxuLHIsaSl7dmFyIHM7Zm9yKHMgaW4gdClpZihpfHxOKHQscykpaWYobi5jYWxsKHJ8fGUsdFtzXSxzLHQpKXJldHVybiEwO3JldHVybiExfSxFLmdldFZhbHVlPWZ1bmN0aW9uKHQsbil7aWYoIXAuaXNPYmplY3QodCkpcmV0dXJuIHc7dmFyIHIsaT1lLkFycmF5KG4pLHM9aS5sZW5ndGg7Zm9yKHI9MDt0IT09dyYmcjxzO3IrKyl0PXRbaVtyXV07cmV0dXJuIHR9LEUuc2V0VmFsdWU9ZnVuY3Rpb24odCxuLHIpe3ZhciBpLHM9ZS5BcnJheShuKSxvPXMubGVuZ3RoLTEsdT10O2lmKG8+PTApe2ZvcihpPTA7dSE9PXcmJmk8bztpKyspdT11W3NbaV1dO2lmKHU9PT13KXJldHVybiB3O3Vbc1tpXV09cn1yZXR1cm4gdH0sRS5pc0VtcHR5PWZ1bmN0aW9uKGUpe3JldHVybiFFLmtleXMoT2JqZWN0KGUpKS5sZW5ndGh9LFlVSS5FbnYucGFyc2VVQT1mdW5jdGlvbih0KXt2YXIgbj1mdW5jdGlvbihlKXt2YXIgdD0wO3JldHVybiBwYXJzZUZsb2F0KGUucmVwbGFjZSgvXC4vZyxmdW5jdGlvbigpe3JldHVybiB0Kys9PT0xPyIiOiIuIn0pKX0scj1lLmNvbmZpZy53aW4saT1yJiZyLm5hdmlnYXRvcixzPXtpZTowLG9wZXJhOjAsZ2Vja286MCx3ZWJraXQ6MCxzYWZhcmk6MCxjaHJvbWU6MCxtb2JpbGU6bnVsbCxhaXI6MCxwaGFudG9tanM6MCxpcGFkOjAsaXBob25lOjAsaXBvZDowLGlvczpudWxsLGFuZHJvaWQ6MCxzaWxrOjAsdWJ1bnR1OjAsYWNjZWw6ITEsd2Vib3M6MCxjYWphOmkmJmkuY2FqYVZlcnNpb24sc2VjdXJlOiExLG9zOm51bGwsbm9kZWpzOjAsd2luanM6dHlwZW9mIFdpbmRvd3MhPSJ1bmRlZmluZWQiJiYhIVdpbmRvd3MuU3lzdGVtLHRvdWNoRW5hYmxlZDohMX0sbz10fHxpJiZpLnVzZXJBZ2VudCx1PXImJnIubG9jYXRpb24sYT11JiZ1LmhyZWYsZjtyZXR1cm4gcy51c2VyQWdlbnQ9byxzLnNlY3VyZT1hJiZhLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiaHR0cHMiKT09PTAsbyYmKC93aW5kb3dzfHdpbjMyL2kudGVzdChvKT9zLm9zPSJ3aW5kb3dzIjovbWFjaW50b3NofG1hY19wb3dlcnBjL2kudGVzdChvKT9zLm9zPSJtYWNpbnRvc2giOi9hbmRyb2lkL2kudGVzdChvKT9zLm9zPSJhbmRyb2lkIjovc3ltYm9zL2kudGVzdChvKT9zLm9zPSJzeW1ib3MiOi9saW51eC9pLnRlc3Qobyk/cy5vcz0ibGludXgiOi9yaGluby9pLnRlc3QobykmJihzLm9zPSJyaGlubyIpLC9LSFRNTC8udGVzdChvKSYmKHMud2Via2l0PTEpLC9JRU1vYmlsZXxYQkxXUDcvLnRlc3QobykmJihzLm1vYmlsZT0id2luZG93cyIpLC9GZW5uZWMvLnRlc3QobykmJihzLm1vYmlsZT0iZ2Vja28iKSxmPW8ubWF0Y2goL0FwcGxlV2ViS2l0XC8oW15cc10qKS8pLGYmJmZbMV0mJihzLgp3ZWJraXQ9bihmWzFdKSxzLnNhZmFyaT1zLndlYmtpdCwvUGhhbnRvbUpTLy50ZXN0KG8pJiYoZj1vLm1hdGNoKC9QaGFudG9tSlNcLyhbXlxzXSopLyksZiYmZlsxXSYmKHMucGhhbnRvbWpzPW4oZlsxXSkpKSwvIE1vYmlsZVwvLy50ZXN0KG8pfHwvaVBhZHxpUG9kfGlQaG9uZS8udGVzdChvKT8ocy5tb2JpbGU9IkFwcGxlIixmPW8ubWF0Y2goL09TIChbXlxzXSopLyksZiYmZlsxXSYmKGY9bihmWzFdLnJlcGxhY2UoIl8iLCIuIikpKSxzLmlvcz1mLHMub3M9ImlvcyIscy5pcGFkPXMuaXBvZD1zLmlwaG9uZT0wLGY9by5tYXRjaCgvaVBhZHxpUG9kfGlQaG9uZS8pLGYmJmZbMF0mJihzW2ZbMF0udG9Mb3dlckNhc2UoKV09cy5pb3MpKTooZj1vLm1hdGNoKC9Ob2tpYU5bXlwvXSp8d2ViT1NcL1xkXC5cZC8pLGYmJihzLm1vYmlsZT1mWzBdKSwvd2ViT1MvLnRlc3QobykmJihzLm1vYmlsZT0iV2ViT1MiLGY9by5tYXRjaCgvd2ViT1NcLyhbXlxzXSopOy8pLGYmJmZbMV0mJihzLndlYm9zPW4oZlsxXSkpKSwvIEFuZHJvaWQvLnRlc3QobykmJigvTW9iaWxlLy50ZXN0KG8pJiYocy5tb2JpbGU9IkFuZHJvaWQiKSxmPW8ubWF0Y2goL0FuZHJvaWQgKFteXHNdKik7LyksZiYmZlsxXSYmKHMuYW5kcm9pZD1uKGZbMV0pKSksL1NpbGsvLnRlc3QobykmJihmPW8ubWF0Y2goL1NpbGtcLyhbXlxzXSopLyksZiYmZlsxXSYmKHMuc2lsaz1uKGZbMV0pKSxzLmFuZHJvaWR8fChzLmFuZHJvaWQ9Mi4zNCxzLm9zPSJBbmRyb2lkIiksL0FjY2VsZXJhdGVkPXRydWUvLnRlc3QobykmJihzLmFjY2VsPSEwKSkpLGY9by5tYXRjaCgvT1BSXC8oXGQrXC5cZCspLyksZiYmZlsxXT9zLm9wZXJhPW4oZlsxXSk6KGY9by5tYXRjaCgvKENocm9tZXxDck1vfENyaU9TKVwvKFteXHNdKikvKSxmJiZmWzFdJiZmWzJdPyhzLmNocm9tZT1uKGZbMl0pLHMuc2FmYXJpPTAsZlsxXT09PSJDck1vIiYmKHMubW9iaWxlPSJjaHJvbWUiKSk6KGY9by5tYXRjaCgvQWRvYmVBSVJcLyhbXlxzXSopLyksZiYmKHMuYWlyPWZbMF0pKSkpLGY9by5tYXRjaCgvVWJ1bnR1XCAoXGQrXC5cZCspLyksZiYmZlsxXSYmKHMub3M9ImxpbnV4IixzLnVidW50dT1uKGZbMV0pLGY9by5tYXRjaCgvXCBXZWJLaXRcLyhbXlxzXSopLyksZiYmZlsxXSYmKHMud2Via2l0PW4oZlsxXSkpLGY9by5tYXRjaCgvXCBDaHJvbWl1bVwvKFteXHNdKikvKSxmJiZmWzFdJiYocy5jaHJvbWU9bihmWzFdKSksLyBNb2JpbGUkLy50ZXN0KG8pJiYocy5tb2JpbGU9IlVidW50dSIpKSxzLndlYmtpdHx8KC9PcGVyYS8udGVzdChvKT8oZj1vLm1hdGNoKC9PcGVyYVtcc1wvXShbXlxzXSopLyksZiYmZlsxXSYmKHMub3BlcmE9bihmWzFdKSksZj1vLm1hdGNoKC9WZXJzaW9uXC8oW15cc10qKS8pLGYmJmZbMV0mJihzLm9wZXJhPW4oZlsxXSkpLC9PcGVyYSBNb2JpLy50ZXN0KG8pJiYocy5tb2JpbGU9Im9wZXJhIixmPW8ucmVwbGFjZSgiT3BlcmEgTW9iaSIsIiIpLm1hdGNoKC9PcGVyYSAoW15cc10qKS8pLGYmJmZbMV0mJihzLm9wZXJhPW4oZlsxXSkpKSxmPW8ubWF0Y2goL09wZXJhIE1pbmlbXjtdKi8pLGYmJihzLm1vYmlsZT1mWzBdKSk6KGY9by5tYXRjaCgvTVNJRSAoW147XSopfFRyaWRlbnQuKjsgcnY6KFswLTkuXSspLyksZiYmKGZbMV18fGZbMl0pP3MuaWU9bihmWzFdfHxmWzJdKTooZj1vLm1hdGNoKC9HZWNrb1wvKFteXHNdKikvKSxmJiYocy5nZWNrbz0xLGY9by5tYXRjaCgvcnY6KFteXHNcKV0qKS8pLGYmJmZbMV0mJihzLmdlY2tvPW4oZlsxXSksL01vYmlsZXxUYWJsZXQvLnRlc3QobykmJihzLm1vYmlsZT0iZmZvcyIpKSkpKSkpLHImJmkmJiEocy5jaHJvbWUmJnMuY2hyb21lPDYpJiYocy50b3VjaEVuYWJsZWQ9Im9udG91Y2hzdGFydCJpbiByfHwibXNNYXhUb3VjaFBvaW50cyJpbiBpJiZpLm1zTWF4VG91Y2hQb2ludHM+MCksdHx8KHR5cGVvZiBwcm9jZXNzPT0ib2JqZWN0IiYmcHJvY2Vzcy52ZXJzaW9ucyYmcHJvY2Vzcy52ZXJzaW9ucy5ub2RlJiYocy5vcz1wcm9jZXNzLnBsYXRmb3JtLHMubm9kZWpzPW4ocHJvY2Vzcy52ZXJzaW9ucy5ub2RlKSksWVVJLkVudi5VQT1zKSxzfSxlLlVBPVlVSS5FbnYuVUF8fFlVSS5FbnYucGFyc2VVQSgpLGUuVUEuY29tcGFyZVZlcnNpb25zPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLHMsbyx1O2lmKGU9PT10KXJldHVybiAwO3I9KGUrIiIpLnNwbGl0KCIuIikscz0odCsiIikuc3BsaXQoIi4iKTtmb3Iobz0wLHU9TWF0aC5tYXgoci5sZW5ndGgscy5sZW5ndGgpO288dTsrK28pe249cGFyc2VJbnQocltvXSwxMCksaT1wYXJzZUludChzW29dLDEwKSxpc05hTihuKSYmKG49MCksaXNOYU4oaSkmJihpPTApO2lmKG48aSlyZXR1cm4tMTtpZihuPmkpcmV0dXJuIDF9cmV0dXJuIDB9LFlVSS5FbnYuYWxpYXNlcz17YW5pbTpbImFuaW0tYmFzZSIsImFuaW0tY29sb3IiLCJhbmltLWN1cnZlIiwiYW5pbS1lYXNpbmciLCJhbmltLW5vZGUtcGx1Z2luIiwiYW5pbS1zY3JvbGwiLCJhbmltLXh5Il0sImFuaW0tc2hhcGUtdHJhbnNmb3JtIjpbImFuaW0tc2hhcGUiXSxhcHA6WyJhcHAtYmFzZSIsImFwcC1jb250ZW50IiwiYXBwLXRyYW5zaXRpb25zIiwibGF6eS1tb2RlbC1saXN0IiwibW9kZWwiLCJtb2RlbC1saXN0IiwibW9kZWwtc3luYy1yZXN0IiwibW9kZWwtc3luYy1sb2NhbCIsInJvdXRlciIsInZpZXciLCJ2aWV3LW5vZGUtbWFwIl0sYXR0cmlidXRlOlsiYXR0cmlidXRlLWJhc2UiLCJhdHRyaWJ1dGUtY29tcGxleCJdLCJhdHRyaWJ1dGUtZXZlbnRzIjpbImF0dHJpYnV0ZS1vYnNlcnZhYmxlIl0sYXV0b2NvbXBsZXRlOlsiYXV0b2NvbXBsZXRlLWJhc2UiLCJhdXRvY29tcGxldGUtc291cmNlcyIsImF1dG9jb21wbGV0ZS1saXN0IiwiYXV0b2NvbXBsZXRlLXBsdWdpbiJdLGF4ZXM6WyJheGlzLW51bWVyaWMiLCJheGlzLWNhdGVnb3J5IiwiYXhpcy10aW1lIiwiYXhpcy1zdGFja2VkIl0sImF4ZXMtYmFzZSI6WyJheGlzLW51bWVyaWMtYmFzZSIsImF4aXMtY2F0ZWdvcnktYmFzZSIsImF4aXMtdGltZS1iYXNlIiwiYXhpcy1zdGFja2VkLWJhc2UiXSxiYXNlOlsiYmFzZS1iYXNlIiwiYmFzZS1wbHVnaW5ob3N0IiwiYmFzZS1idWlsZCJdLGNhY2hlOlsiY2FjaGUtYmFzZSIsImNhY2hlLW9mZmxpbmUiLCJjYWNoZS1wbHVnaW4iXSxjaGFydHM6WyJjaGFydHMtYmFzZSJdLGNvbGxlY3Rpb246WyJhcnJheS1leHRyYXMiLCJhcnJheWxpc3QiLCJhcnJheWxpc3QtYWRkIiwiYXJyYXlsaXN0LWZpbHRlciIsImFycmF5LWludm9rZSJdLGNvbG9yOlsiY29sb3ItYmFzZSIsImNvbG9yLWhzbCIsImNvbG9yLWhhcm1vbnkiXSxjb250cm9sbGVyOlsicm91dGVyIl0sZGF0YXNjaGVtYTpbImRhdGFzY2hlbWEtYmFzZSIsImRhdGFzY2hlbWEtanNvbiIsImRhdGFzY2hlbWEteG1sIiwiZGF0YXNjaGVtYS1hcnJheSIsImRhdGFzY2hlbWEtdGV4dCJdLGRhdGFzb3VyY2U6WyJkYXRhc291cmNlLWxvY2FsIiwiZGF0YXNvdXJjZS1pbyIsImRhdGFzb3VyY2UtZ2V0IiwiZGF0YXNvdXJjZS1mdW5jdGlvbiIsImRhdGFzb3VyY2UtY2FjaGUiLCJkYXRhc291cmNlLWpzb25zY2hlbWEiLCJkYXRhc291cmNlLXhtbHNjaGVtYSIsImRhdGFzb3VyY2UtYXJyYXlzY2hlbWEiLCJkYXRhc291cmNlLXRleHRzY2hlbWEiLCJkYXRhc291cmNlLXBvbGxpbmciXSxkYXRhdGFibGU6WyJkYXRhdGFibGUtY29yZSIsImRhdGF0YWJsZS10YWJsZSIsImRhdGF0YWJsZS1oZWFkIiwiZGF0YXRhYmxlLWJvZHkiLCJkYXRhdGFibGUtYmFzZSIsImRhdGF0YWJsZS1jb2x1bW4td2lkdGhzIiwiZGF0YXRhYmxlLW1lc3NhZ2UiLCJkYXRhdGFibGUtbXV0YWJsZSIsImRhdGF0YWJsZS1zb3J0IiwiZGF0YXRhYmxlLWRhdGFzb3VyY2UiXSxkYXRhdHlwZTpbImRhdGF0eXBlLWRhdGUiLCJkYXRhdHlwZS1udW1iZXIiLCJkYXRhdHlwZS14bWwiXSwiZGF0YXR5cGUtZGF0ZSI6WyJkYXRhdHlwZS1kYXRlLXBhcnNlIiwiZGF0YXR5cGUtZGF0ZS1mb3JtYXQiLCJkYXRhdHlwZS1kYXRlLW1hdGgiXSwiZGF0YXR5cGUtbnVtYmVyIjpbImRhdGF0eXBlLW51bWJlci1wYXJzZSIsImRhdGF0eXBlLW51bWJlci1mb3JtYXQiXSwiZGF0YXR5cGUteG1sIjpbImRhdGF0eXBlLXhtbC1wYXJzZSIsImRhdGF0eXBlLXhtbC1mb3JtYXQiXSxkZDpbImRkLWRkbS1iYXNlIiwiZGQtZGRtIiwiZGQtZGRtLWRyb3AiLCJkZC1kcmFnIiwiZGQtcHJveHkiLCJkZC1jb25zdHJhaW4iLCJkZC1kcm9wIiwiZGQtc2Nyb2xsIiwiZGQtZGVsZWdhdGUiXSxkb206WyJkb20tYmFzZSIsImRvbS1zY3JlZW4iLCJkb20tc3R5bGUiLCJzZWxlY3Rvci1uYXRpdmUiLCJzZWxlY3RvciJdLGVkaXRvcjpbImZyYW1lIiwiZWRpdG9yLXNlbGVjdGlvbiIsImV4ZWMtY29tbWFuZCIsImVkaXRvci1iYXNlIiwiZWRpdG9yLXBhcmEiLCJlZGl0b3ItYnIiLCJlZGl0b3ItYmlkaSIsImVkaXRvci10YWIiLCJjcmVhdGVsaW5rLWJhc2UiXSxldmVudDpbImV2ZW50LWJhc2UiLCJldmVudC1kZWxlZ2F0ZSIsImV2ZW50LXN5bnRoZXRpYyIsImV2ZW50LW1vdXNld2hlZWwiLCJldmVudC1tb3VzZWVudGVyIiwiZXZlbnQta2V5IiwiZXZlbnQtZm9jdXMiLCJldmVudC1yZXNpemUiLCJldmVudC1ob3ZlciIsImV2ZW50LW91dHNpZGUiLCJldmVudC10b3VjaCIsImV2ZW50LW1vdmUiLCJldmVudC1mbGljayIsImV2ZW50LXZhbHVlY2hhbmdlIiwiZXZlbnQtdGFwIl0sImV2ZW50LWN1c3RvbSI6WyJldmVudC1jdXN0b20tYmFzZSIsImV2ZW50LWN1c3RvbS1jb21wbGV4Il0sImV2ZW50LWdlc3R1cmVzIjpbImV2ZW50LWZsaWNrIiwiZXZlbnQtbW92ZSJdLGhhbmRsZWJhcnM6WyJoYW5kbGViYXJzLWNvbXBpbGVyIl0saGlnaGxpZ2h0OlsiaGlnaGxpZ2h0LWJhc2UiLCJoaWdobGlnaHQtYWNjZW50Zm9sZCJdLGhpc3Rvcnk6WyJoaXN0b3J5LWJhc2UiLCJoaXN0b3J5LWhhc2giLCJoaXN0b3J5LWh0bWw1Il0saW86WyJpby1iYXNlIiwiaW8teGRyIiwiaW8tZm9ybSIsImlvLXVwbG9hZC1pZnJhbWUiLCJpby1xdWV1ZSJdLGpzb246WyJqc29uLXBhcnNlIiwianNvbi1zdHJpbmdpZnkiXSxsb2FkZXI6WyJsb2FkZXItYmFzZSIsImxvYWRlci1yb2xsdXAiLCJsb2FkZXIteXVpMyJdLG5vZGU6WyJub2RlLWJhc2UiLCJub2RlLWV2ZW50LWRlbGVnYXRlIiwibm9kZS1wbHVnaW5ob3N0Iiwibm9kZS1zY3JlZW4iLCJub2RlLXN0eWxlIl0scGx1Z2luaG9zdDpbInBsdWdpbmhvc3QtYmFzZSIsInBsdWdpbmhvc3QtY29uZmlnIl0scXVlcnlzdHJpbmc6WyJxdWVyeXN0cmluZy1wYXJzZSIsInF1ZXJ5c3RyaW5nLXN0cmluZ2lmeSJdLHJlY29yZHNldDpbInJlY29yZHNldC1iYXNlIiwicmVjb3Jkc2V0LXNvcnQiLCJyZWNvcmRzZXQtZmlsdGVyIiwicmVjb3Jkc2V0LWluZGV4ZXIiXSxyZXNpemU6WyJyZXNpemUtYmFzZSIsInJlc2l6ZS1wcm94eSIsInJlc2l6ZS1jb25zdHJhaW4iXSxzbGlkZXI6WyJzbGlkZXItYmFzZSIsInNsaWRlci12YWx1ZS1yYW5nZSIsImNsaWNrYWJsZS1yYWlsIiwicmFuZ2Utc2xpZGVyIl0sdGVtcGxhdGU6WyJ0ZW1wbGF0ZS1iYXNlIiwidGVtcGxhdGUtbWljcm8iXSx0ZXh0OlsidGV4dC1hY2NlbnRmb2xkIiwidGV4dC13b3JkYnJlYWsiXSx3aWRnZXQ6WyJ3aWRnZXQtYmFzZSIsIndpZGdldC1odG1scGFyc2VyIiwid2lkZ2V0LXNraW4iLCJ3aWRnZXQtdWlldmVudHMiXX19LCIzLjE3LjIiLHt1c2U6WyJ5dWktYmFzZSIsImdldCIsImZlYXR1cmVzIiwiaW50bC1iYXNlIiwieXVpLWxvZyIsInl1aS1sYXRlciIsImxvYWRlci1iYXNlIiwibG9hZGVyLXJvbGx1cCIsImxvYWRlci15dWkzIl19KSxZVUkuYWRkKCJnZXQiLGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5MYW5nLHIsaSxzO2UuR2V0PWk9e2Nzc09wdGlvbnM6e2F0dHJpYnV0ZXM6e3JlbDoic3R5bGVzaGVldCJ9LGRvYzplLmNvbmZpZy5saW5rRG9jfHxlLmNvbmZpZy5kb2MscG9sbEludGVydmFsOjUwfSxqc09wdGlvbnM6e2F1dG9wdXJnZTohMCxkb2M6ZS5jb25maWcuc2NyaXB0RG9jfHxlLmNvbmZpZy5kb2N9LG9wdGlvbnMKOnthdHRyaWJ1dGVzOntjaGFyc2V0OiJ1dGYtOCJ9LHB1cmdldGhyZXNob2xkOjIwfSxSRUdFWF9DU1M6L1wuY3NzKD86Wz87XS4qKT8kL2ksUkVHRVhfSlM6L1wuanMoPzpbPztdLiopPyQvaSxfaW5zZXJ0Q2FjaGU6e30sX3BlbmRpbmc6bnVsbCxfcHVyZ2VOb2RlczpbXSxfcXVldWU6W10sYWJvcnQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGkscztpZighZS5hYm9ydCl7bj1lLHM9dGhpcy5fcGVuZGluZyxlPW51bGw7aWYocyYmcy50cmFuc2FjdGlvbi5pZD09PW4pZT1zLnRyYW5zYWN0aW9uLHRoaXMuX3BlbmRpbmc9bnVsbDtlbHNlIGZvcih0PTAsaT10aGlzLl9xdWV1ZS5sZW5ndGg7dDxpOysrdCl7cj10aGlzLl9xdWV1ZVt0XS50cmFuc2FjdGlvbjtpZihyLmlkPT09bil7ZT1yLHRoaXMuX3F1ZXVlLnNwbGljZSh0LDEpO2JyZWFrfX19ZSYmZS5hYm9ydCgpfSxjc3M6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLl9sb2FkKCJjc3MiLGUsdCxuKX0sanM6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLl9sb2FkKCJqcyIsZSx0LG4pfSxsb2FkOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5fbG9hZChudWxsLGUsdCxuKX0sX2F1dG9QdXJnZTpmdW5jdGlvbihlKXtlJiZ0aGlzLl9wdXJnZU5vZGVzLmxlbmd0aD49ZSYmdGhpcy5fcHVyZ2UodGhpcy5fcHVyZ2VOb2Rlcyl9LF9nZXRFbnY6ZnVuY3Rpb24oKXt2YXIgdD1lLmNvbmZpZy5kb2Msbj1lLlVBO3JldHVybiB0aGlzLl9lbnY9e2FzeW5jOnQmJnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IikuYXN5bmM9PT0hMHx8bi5pZT49MTAsY3NzRmFpbDpuLmdlY2tvPj05fHxuLmNvbXBhcmVWZXJzaW9ucyhuLndlYmtpdCw1MzUuMjQpPj0wLGNzc0xvYWQ6KCFuLmdlY2tvJiYhbi53ZWJraXR8fG4uZ2Vja28+PTl8fG4uY29tcGFyZVZlcnNpb25zKG4ud2Via2l0LDUzNS4yNCk+PTApJiYhKG4uY2hyb21lJiZuLmNocm9tZTw9MTgpLHByZXNlcnZlc1NjcmlwdE9yZGVyOiEhKG4uZ2Vja298fG4ub3BlcmF8fG4uaWUmJm4uaWU+PTEwKX19LF9nZXRUcmFuc2FjdGlvbjpmdW5jdGlvbih0LHIpe3ZhciBpPVtdLG8sdSxhLGY7bi5pc0FycmF5KHQpfHwodD1bdF0pLHI9ZS5tZXJnZSh0aGlzLm9wdGlvbnMsciksci5hdHRyaWJ1dGVzPWUubWVyZ2UodGhpcy5vcHRpb25zLmF0dHJpYnV0ZXMsci5hdHRyaWJ1dGVzKTtmb3Iobz0wLHU9dC5sZW5ndGg7bzx1Oysrbyl7Zj10W29dLGE9e2F0dHJpYnV0ZXM6e319O2lmKHR5cGVvZiBmPT0ic3RyaW5nIilhLnVybD1mO2Vsc2V7aWYoIWYudXJsKWNvbnRpbnVlO2UubWl4KGEsZiwhMSxudWxsLDAsITApLGY9Zi51cmx9ZS5taXgoYSxyLCExLG51bGwsMCwhMCksYS50eXBlfHwodGhpcy5SRUdFWF9DU1MudGVzdChmKT9hLnR5cGU9ImNzcyI6KCF0aGlzLlJFR0VYX0pTLnRlc3QoZiksYS50eXBlPSJqcyIpKSxlLm1peChhLGEudHlwZT09PSJqcyI/dGhpcy5qc09wdGlvbnM6dGhpcy5jc3NPcHRpb25zLCExLG51bGwsMCwhMCksYS5hdHRyaWJ1dGVzLmlkfHwoYS5hdHRyaWJ1dGVzLmlkPWUuZ3VpZCgpKSxhLndpbj9hLmRvYz1hLndpbi5kb2N1bWVudDphLndpbj1hLmRvYy5kZWZhdWx0Vmlld3x8YS5kb2MucGFyZW50V2luZG93LGEuY2hhcnNldCYmKGEuYXR0cmlidXRlcy5jaGFyc2V0PWEuY2hhcnNldCksaS5wdXNoKGEpfXJldHVybiBuZXcgcyhpLHIpfSxfbG9hZDpmdW5jdGlvbihlLHQsbixyKXt2YXIgcztyZXR1cm4gdHlwZW9mIG49PSJmdW5jdGlvbiImJihyPW4sbj17fSksbnx8KG49e30pLG4udHlwZT1lLG4uX29uRmluaXNoPWkuX29uVHJhbnNhY3Rpb25GaW5pc2gsdGhpcy5fZW52fHx0aGlzLl9nZXRFbnYoKSxzPXRoaXMuX2dldFRyYW5zYWN0aW9uKHQsbiksdGhpcy5fcXVldWUucHVzaCh7Y2FsbGJhY2s6cix0cmFuc2FjdGlvbjpzfSksdGhpcy5fbmV4dCgpLHN9LF9vblRyYW5zYWN0aW9uRmluaXNoOmZ1bmN0aW9uKCl7aS5fcGVuZGluZz1udWxsLGkuX25leHQoKX0sX25leHQ6ZnVuY3Rpb24oKXt2YXIgZTtpZih0aGlzLl9wZW5kaW5nKXJldHVybjtlPXRoaXMuX3F1ZXVlLnNoaWZ0KCksZSYmKHRoaXMuX3BlbmRpbmc9ZSxlLnRyYW5zYWN0aW9uLmV4ZWN1dGUoZS5jYWxsYmFjaykpfSxfcHVyZ2U6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5fcHVyZ2VOb2RlcyxyPXQhPT1uLGksczt3aGlsZShzPXQucG9wKCkpe2lmKCFzLl95dWlnZXRfZmluaXNoZWQpY29udGludWU7cy5wYXJlbnROb2RlJiZzLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocyksciYmKGk9ZS5BcnJheS5pbmRleE9mKG4scyksaT4tMSYmbi5zcGxpY2UoaSwxKSl9fX0saS5zY3JpcHQ9aS5qcyxpLlRyYW5zYWN0aW9uPXM9ZnVuY3Rpb24odCxuKXt2YXIgcj10aGlzO3IuaWQ9cy5fbGFzdElkKz0xLHIuZGF0YT1uLmRhdGEsci5lcnJvcnM9W10sci5ub2Rlcz1bXSxyLm9wdGlvbnM9bixyLnJlcXVlc3RzPXQsci5fY2FsbGJhY2tzPVtdLHIuX3F1ZXVlPVtdLHIuX3JlcXNXYWl0aW5nPTAsci50SWQ9ci5pZCxyLndpbj1uLndpbnx8ZS5jb25maWcud2lufSxzLl9sYXN0SWQ9MCxzLnByb3RvdHlwZT17X3N0YXRlOiJuZXciLGFib3J0OmZ1bmN0aW9uKGUpe3RoaXMuX3BlbmRpbmc9bnVsbCx0aGlzLl9wZW5kaW5nQ1NTPW51bGwsdGhpcy5fcG9sbFRpbWVyPWNsZWFyVGltZW91dCh0aGlzLl9wb2xsVGltZXIpLHRoaXMuX3F1ZXVlPVtdLHRoaXMuX3JlcXNXYWl0aW5nPTAsdGhpcy5lcnJvcnMucHVzaCh7ZXJyb3I6ZXx8IkFib3J0ZWQifSksdGhpcy5fZmluaXNoKCl9LGV4ZWN1dGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXQucmVxdWVzdHMscj10Ll9zdGF0ZSxpLHMsbyx1O2lmKHI9PT0iZG9uZSIpe2UmJmUodC5lcnJvcnMubGVuZ3RoP3QuZXJyb3JzOm51bGwsdCk7cmV0dXJufWUmJnQuX2NhbGxiYWNrcy5wdXNoKGUpO2lmKHI9PT0iZXhlY3V0aW5nIilyZXR1cm47dC5fc3RhdGU9ImV4ZWN1dGluZyIsdC5fcXVldWU9bz1bXSx0Lm9wdGlvbnMudGltZW91dCYmKHQuX3RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3QuYWJvcnQoIlRpbWVvdXQiKX0sdC5vcHRpb25zLnRpbWVvdXQpKSx0Ll9yZXFzV2FpdGluZz1uLmxlbmd0aDtmb3IoaT0wLHM9bi5sZW5ndGg7aTxzOysraSl1PW5baV0sdS5hc3luY3x8dS50eXBlPT09ImNzcyI/dC5faW5zZXJ0KHUpOm8ucHVzaCh1KTt0Ll9uZXh0KCl9LHB1cmdlOmZ1bmN0aW9uKCl7aS5fcHVyZ2UodGhpcy5ub2Rlcyl9LF9jcmVhdGVOb2RlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1uLmNyZWF0ZUVsZW1lbnQoZSkscyxvO3J8fChvPW4uY3JlYXRlRWxlbWVudCgiZGl2Iiksby5zZXRBdHRyaWJ1dGUoImNsYXNzIiwiYSIpLHI9by5jbGFzc05hbWU9PT0iYSI/e306eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUifSk7Zm9yKHMgaW4gdCl0Lmhhc093blByb3BlcnR5KHMpJiZpLnNldEF0dHJpYnV0ZShyW3NdfHxzLHRbc10pO3JldHVybiBpfSxfZmluaXNoOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5lcnJvcnMubGVuZ3RoP3RoaXMuZXJyb3JzOm51bGwsdD10aGlzLm9wdGlvbnMsbj10LmNvbnRleHR8fHRoaXMscixpLHM7aWYodGhpcy5fc3RhdGU9PT0iZG9uZSIpcmV0dXJuO3RoaXMuX3N0YXRlPSJkb25lIjtmb3IoaT0wLHM9dGhpcy5fY2FsbGJhY2tzLmxlbmd0aDtpPHM7KytpKXRoaXMuX2NhbGxiYWNrc1tpXS5jYWxsKG4sZSx0aGlzKTtyPXRoaXMuX2dldEV2ZW50RGF0YSgpLGU/KHQub25UaW1lb3V0JiZlW2UubGVuZ3RoLTFdLmVycm9yPT09IlRpbWVvdXQiJiZ0Lm9uVGltZW91dC5jYWxsKG4sciksdC5vbkZhaWx1cmUmJnQub25GYWlsdXJlLmNhbGwobixyKSk6dC5vblN1Y2Nlc3MmJnQub25TdWNjZXNzLmNhbGwobixyKSx0Lm9uRW5kJiZ0Lm9uRW5kLmNhbGwobixyKSx0Ll9vbkZpbmlzaCYmdC5fb25GaW5pc2goKX0sX2dldEV2ZW50RGF0YTpmdW5jdGlvbih0KXtyZXR1cm4gdD9lLm1lcmdlKHRoaXMse2Fib3J0OnRoaXMuYWJvcnQscHVyZ2U6dGhpcy5wdXJnZSxyZXF1ZXN0OnQsdXJsOnQudXJsLHdpbjp0Lndpbn0pOnRoaXN9LF9nZXRJbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCl7dmFyIG49dC5kb2Mscj10Lmluc2VydEJlZm9yZSxzLG87cmV0dXJuIHI/dHlwZW9mIHI9PSJzdHJpbmciP24uZ2V0RWxlbWVudEJ5SWQocik6cjoocz1pLl9pbnNlcnRDYWNoZSxvPWUuc3RhbXAobiksKHI9c1tvXSk/cjoocj1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJiYXNlIilbMF0pP3Nbb109cjoocj1uLmhlYWR8fG4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSxyPyhyLmFwcGVuZENoaWxkKG4uY3JlYXRlVGV4dE5vZGUoIiIpKSxzW29dPXIubGFzdENoaWxkKTpzW29dPW4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdKSl9LF9pbnNlcnQ6ZnVuY3Rpb24odCl7ZnVuY3Rpb24gYygpe3UuX3Byb2dyZXNzKCJGYWlsZWQgdG8gbG9hZCAiK3QudXJsLHQpfWZ1bmN0aW9uIGgoKXtmJiZjbGVhclRpbWVvdXQoZiksdS5fcHJvZ3Jlc3MobnVsbCx0KX12YXIgbj1pLl9lbnYscj10aGlzLl9nZXRJbnNlcnRCZWZvcmUodCkscz10LnR5cGU9PT0ianMiLG89dC5ub2RlLHU9dGhpcyxhPWUuVUEsZixsO298fChzP2w9InNjcmlwdCI6IW4uY3NzTG9hZCYmYS5nZWNrbz9sPSJzdHlsZSI6bD0ibGluayIsbz10Lm5vZGU9dGhpcy5fY3JlYXRlTm9kZShsLHQuYXR0cmlidXRlcyx0LmRvYykpLHM/KG8uc2V0QXR0cmlidXRlKCJzcmMiLHQudXJsKSx0LmFzeW5jP28uYXN5bmM9ITA6KG4uYXN5bmMmJihvLmFzeW5jPSExKSxuLnByZXNlcnZlc1NjcmlwdE9yZGVyfHwodGhpcy5fcGVuZGluZz10KSkpOiFuLmNzc0xvYWQmJmEuZ2Vja28/by5pbm5lckhUTUw9KHQuYXR0cmlidXRlcy5jaGFyc2V0PydAY2hhcnNldCAiJyt0LmF0dHJpYnV0ZXMuY2hhcnNldCsnIjsnOiIiKSsnQGltcG9ydCAiJyt0LnVybCsnIjsnOm8uc2V0QXR0cmlidXRlKCJocmVmIix0LnVybCkscyYmYS5pZSYmKGEuaWU8OXx8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlJiZkb2N1bWVudC5kb2N1bWVudE1vZGU8OSk/by5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXsvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KG8ucmVhZHlTdGF0ZSkmJihvLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGgoKSl9OiFzJiYhbi5jc3NMb2FkP3RoaXMuX3BvbGwodCk6KGEuaWU+PTEwPyhvLm9uZXJyb3I9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGMsMCl9LG8ub25sb2FkPWZ1bmN0aW9uKCl7c2V0VGltZW91dChoLDApfSk6KG8ub25lcnJvcj1jLG8ub25sb2FkPWgpLCFuLmNzc0ZhaWwmJiFzJiYoZj1zZXRUaW1lb3V0KGMsdC50aW1lb3V0fHwzZTMpKSksdGhpcy5ub2Rlcy5wdXNoKG8pLHIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobyxyKX0sX25leHQ6ZnVuY3Rpb24oKXtpZih0aGlzLl9wZW5kaW5nKXJldHVybjt0aGlzLl9xdWV1ZS5sZW5ndGg/dGhpcy5faW5zZXJ0KHRoaXMuX3F1ZXVlLnNoaWZ0KCkpOnRoaXMuX3JlcXNXYWl0aW5nfHx0aGlzLl9maW5pc2goKX0sX3BvbGw6ZnVuY3Rpb24odCl7dmFyIG49dGhpcyxyPW4uX3BlbmRpbmdDU1MsaT1lLlVBLndlYmtpdCxzLG8sdSxhLGYsbDtpZih0KXtyfHwocj1uLl9wZW5kaW5nQ1NTPVtdKSxyLnB1c2godCk7aWYobi5fcG9sbFRpbWVyKXJldHVybn1uLl9wb2xsVGltZXI9bnVsbDtmb3Iocz0wO3M8ci5sZW5ndGg7KytzKXtmPXJbc107aWYoaSl7bD1mLmRvYy5zdHlsZVNoZWV0cyx1PWwubGVuZ3RoLGE9Zi5ub2RlLmhyZWY7d2hpbGUoLS11Pj0wKWlmKGxbdV0uaHJlZj09PWEpe3Iuc3BsaWNlKHMsMSkscy09MSxuLl9wcm9ncmVzcyhudWxsLGYpO2JyZWFrfX1lbHNlIHRyeXtvPSEhZi5ub2RlLnNoZWV0LmNzc1J1bGVzLHIuc3BsaWNlKHMsMSkscy09MSxuLl9wcm9ncmVzcyhudWxsLGYpfWNhdGNoKGMpe319ci5sZW5ndGgmJihuLl9wb2xsVGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe24uX3BvbGwuY2FsbChuKX0sbi5vcHRpb25zLnBvbGxJbnRlcnZhbCkpfSxfcHJvZ3Jlc3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLm9wdGlvbnMKO2UmJih0LmVycm9yPWUsdGhpcy5lcnJvcnMucHVzaCh7ZXJyb3I6ZSxyZXF1ZXN0OnR9KSksdC5ub2RlLl95dWlnZXRfZmluaXNoZWQ9dC5maW5pc2hlZD0hMCxuLm9uUHJvZ3Jlc3MmJm4ub25Qcm9ncmVzcy5jYWxsKG4uY29udGV4dHx8dGhpcyx0aGlzLl9nZXRFdmVudERhdGEodCkpLHQuYXV0b3B1cmdlJiYoaS5fYXV0b1B1cmdlKHRoaXMub3B0aW9ucy5wdXJnZXRocmVzaG9sZCksaS5fcHVyZ2VOb2Rlcy5wdXNoKHQubm9kZSkpLHRoaXMuX3BlbmRpbmc9PT10JiYodGhpcy5fcGVuZGluZz1udWxsKSx0aGlzLl9yZXFzV2FpdGluZy09MSx0aGlzLl9uZXh0KCl9fX0sIjMuMTcuMiIse3JlcXVpcmVzOlsieXVpLWJhc2UiXX0pLFlVSS5hZGQoImZlYXR1cmVzIixmdW5jdGlvbihlLHQpe3ZhciBuPXt9O2UubWl4KGUubmFtZXNwYWNlKCJGZWF0dXJlcyIpLHt0ZXN0czpuLGFkZDpmdW5jdGlvbihlLHQscil7bltlXT1uW2VdfHx7fSxuW2VdW3RdPXJ9LGFsbDpmdW5jdGlvbih0LHIpe3ZhciBpPW5bdF0scz1bXTtyZXR1cm4gaSYmZS5PYmplY3QuZWFjaChpLGZ1bmN0aW9uKG4saSl7cy5wdXNoKGkrIjoiKyhlLkZlYXR1cmVzLnRlc3QodCxpLHIpPzE6MCkpfSkscy5sZW5ndGg/cy5qb2luKCI7Iik6IiJ9LHRlc3Q6ZnVuY3Rpb24odCxyLGkpe2k9aXx8W107dmFyIHMsbyx1LGE9blt0XSxmPWEmJmFbcl07cmV0dXJuIWZ8fChzPWYucmVzdWx0LGUuTGFuZy5pc1VuZGVmaW5lZChzKSYmKG89Zi51YSxvJiYocz1lLlVBW29dKSx1PWYudGVzdCx1JiYoIW98fHMpJiYocz11LmFwcGx5KGUsaSkpLGYucmVzdWx0PXMpKSxzfX0pO3ZhciByPWUuRmVhdHVyZXMuYWRkO3IoImxvYWQiLCIwIix7bmFtZToiYXBwLXRyYW5zaXRpb25zLW5hdGl2ZSIsdGVzdDpmdW5jdGlvbihlKXt2YXIgdD1lLmNvbmZpZy5kb2Msbj10P3QuZG9jdW1lbnRFbGVtZW50Om51bGw7cmV0dXJuIG4mJm4uc3R5bGU/Ik1velRyYW5zaXRpb24iaW4gbi5zdHlsZXx8IldlYmtpdFRyYW5zaXRpb24iaW4gbi5zdHlsZXx8InRyYW5zaXRpb24iaW4gbi5zdHlsZTohMX0sdHJpZ2dlcjoiYXBwLXRyYW5zaXRpb25zIn0pLHIoImxvYWQiLCIxIix7bmFtZToiYXV0b2NvbXBsZXRlLWxpc3Qta2V5cyIsdGVzdDpmdW5jdGlvbihlKXtyZXR1cm4hZS5VQS5pb3MmJiFlLlVBLmFuZHJvaWR9LHRyaWdnZXI6ImF1dG9jb21wbGV0ZS1saXN0In0pLHIoImxvYWQiLCIyIix7bmFtZToiZGQtZ2VzdHVyZXMiLHRyaWdnZXI6ImRkLWRyYWciLHVhOiJ0b3VjaEVuYWJsZWQifSkscigibG9hZCIsIjMiLHtuYW1lOiJkb20tc3R5bGUtaWUiLHRlc3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5GZWF0dXJlcy50ZXN0LG49ZS5GZWF0dXJlcy5hZGQscj1lLmNvbmZpZy53aW4saT1lLmNvbmZpZy5kb2Mscz0iZG9jdW1lbnRFbGVtZW50IixvPSExO3JldHVybiBuKCJzdHlsZSIsImNvbXB1dGVkU3R5bGUiLHt0ZXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHImJiJnZXRDb21wdXRlZFN0eWxlImluIHJ9fSksbigic3R5bGUiLCJvcGFjaXR5Iix7dGVzdDpmdW5jdGlvbigpe3JldHVybiBpJiYib3BhY2l0eSJpbiBpW3NdLnN0eWxlfX0pLG89IXQoInN0eWxlIiwib3BhY2l0eSIpJiYhdCgic3R5bGUiLCJjb21wdXRlZFN0eWxlIiksb30sdHJpZ2dlcjoiZG9tLXN0eWxlIn0pLHIoImxvYWQiLCI0Iix7bmFtZToiZWRpdG9yLXBhcmEtaWUiLHRyaWdnZXI6ImVkaXRvci1wYXJhIix1YToiaWUiLHdoZW46Imluc3RlYWQifSkscigibG9hZCIsIjUiLHtuYW1lOiJldmVudC1iYXNlLWllIix0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLmRvYyYmZS5jb25maWcuZG9jLmltcGxlbWVudGF0aW9uO3JldHVybiB0JiYhdC5oYXNGZWF0dXJlKCJFdmVudHMiLCIyLjAiKX0sdHJpZ2dlcjoibm9kZS1iYXNlIn0pLHIoImxvYWQiLCI2Iix7bmFtZToiZ3JhcGhpY3MtY2FudmFzIix0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLmRvYyxuPWUuY29uZmlnLmRlZmF1bHRHcmFwaGljRW5naW5lJiZlLmNvbmZpZy5kZWZhdWx0R3JhcGhpY0VuZ2luZT09ImNhbnZhcyIscj10JiZ0LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLGk9dCYmdC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0Jhc2ljU3RydWN0dXJlIiwiMS4xIik7cmV0dXJuKCFpfHxuKSYmciYmci5nZXRDb250ZXh0JiZyLmdldENvbnRleHQoIjJkIil9LHRyaWdnZXI6ImdyYXBoaWNzIn0pLHIoImxvYWQiLCI3Iix7bmFtZToiZ3JhcGhpY3MtY2FudmFzLWRlZmF1bHQiLHRlc3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb25maWcuZG9jLG49ZS5jb25maWcuZGVmYXVsdEdyYXBoaWNFbmdpbmUmJmUuY29uZmlnLmRlZmF1bHRHcmFwaGljRW5naW5lPT0iY2FudmFzIixyPXQmJnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksaT10JiZ0LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoImh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjQmFzaWNTdHJ1Y3R1cmUiLCIxLjEiKTtyZXR1cm4oIWl8fG4pJiZyJiZyLmdldENvbnRleHQmJnIuZ2V0Q29udGV4dCgiMmQiKX0sdHJpZ2dlcjoiZ3JhcGhpY3MifSkscigibG9hZCIsIjgiLHtuYW1lOiJncmFwaGljcy1zdmciLHRlc3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb25maWcuZG9jLG49IWUuY29uZmlnLmRlZmF1bHRHcmFwaGljRW5naW5lfHxlLmNvbmZpZy5kZWZhdWx0R3JhcGhpY0VuZ2luZSE9ImNhbnZhcyIscj10JiZ0LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLGk9dCYmdC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0Jhc2ljU3RydWN0dXJlIiwiMS4xIik7cmV0dXJuIGkmJihufHwhcil9LHRyaWdnZXI6ImdyYXBoaWNzIn0pLHIoImxvYWQiLCI5Iix7bmFtZToiZ3JhcGhpY3Mtc3ZnLWRlZmF1bHQiLHRlc3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb25maWcuZG9jLG49IWUuY29uZmlnLmRlZmF1bHRHcmFwaGljRW5naW5lfHxlLmNvbmZpZy5kZWZhdWx0R3JhcGhpY0VuZ2luZSE9ImNhbnZhcyIscj10JiZ0LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLGk9dCYmdC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0Jhc2ljU3RydWN0dXJlIiwiMS4xIik7cmV0dXJuIGkmJihufHwhcil9LHRyaWdnZXI6ImdyYXBoaWNzIn0pLHIoImxvYWQiLCIxMCIse25hbWU6ImdyYXBoaWNzLXZtbCIsdGVzdDpmdW5jdGlvbihlKXt2YXIgdD1lLmNvbmZpZy5kb2Msbj10JiZ0LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3JldHVybiB0JiYhdC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0Jhc2ljU3RydWN0dXJlIiwiMS4xIikmJighbnx8IW4uZ2V0Q29udGV4dHx8IW4uZ2V0Q29udGV4dCgiMmQiKSl9LHRyaWdnZXI6ImdyYXBoaWNzIn0pLHIoImxvYWQiLCIxMSIse25hbWU6ImdyYXBoaWNzLXZtbC1kZWZhdWx0Iix0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLmRvYyxuPXQmJnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7cmV0dXJuIHQmJiF0LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoImh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjQmFzaWNTdHJ1Y3R1cmUiLCIxLjEiKSYmKCFufHwhbi5nZXRDb250ZXh0fHwhbi5nZXRDb250ZXh0KCIyZCIpKX0sdHJpZ2dlcjoiZ3JhcGhpY3MifSkscigibG9hZCIsIjEyIix7bmFtZToiaGlzdG9yeS1oYXNoLWllIix0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLmRvYyYmZS5jb25maWcuZG9jLmRvY3VtZW50TW9kZTtyZXR1cm4gZS5VQS5pZSYmKCEoIm9uaGFzaGNoYW5nZSJpbiBlLmNvbmZpZy53aW4pfHwhdHx8dDw4KX0sdHJpZ2dlcjoiaGlzdG9yeS1oYXNoIn0pLHIoImxvYWQiLCIxMyIse25hbWU6ImlvLW5vZGVqcyIsdHJpZ2dlcjoiaW8tYmFzZSIsdWE6Im5vZGVqcyJ9KSxyKCJsb2FkIiwiMTQiLHtuYW1lOiJqc29uLXBhcnNlLXNoaW0iLHRlc3Q6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gaShlLHQpe3JldHVybiBlPT09Im9rIj8hMDp0fXZhciB0PWUuY29uZmlnLmdsb2JhbC5KU09OLG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpPT09IltvYmplY3QgSlNPTl0iJiZ0LHI9ZS5jb25maWcudXNlTmF0aXZlSlNPTlBhcnNlIT09ITEmJiEhbjtpZihyKXRyeXtyPW4ucGFyc2UoJ3sib2siOmZhbHNlfScsaSkub2t9Y2F0Y2gocyl7cj0hMX1yZXR1cm4hcn0sdHJpZ2dlcjoianNvbi1wYXJzZSJ9KSxyKCJsb2FkIiwiMTUiLHtuYW1lOiJqc29uLXN0cmluZ2lmeS1zaGltIix0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLmdsb2JhbC5KU09OLG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpPT09IltvYmplY3QgSlNPTl0iJiZ0LHI9ZS5jb25maWcudXNlTmF0aXZlSlNPTlN0cmluZ2lmeSE9PSExJiYhIW47aWYocil0cnl7cj0iMCI9PT1uLnN0cmluZ2lmeSgwKX1jYXRjaChpKXtyPSExfXJldHVybiFyfSx0cmlnZ2VyOiJqc29uLXN0cmluZ2lmeSJ9KSxyKCJsb2FkIiwiMTYiLHtuYW1lOiJzY3JvbGx2aWV3LWJhc2UtaWUiLHRyaWdnZXI6InNjcm9sbHZpZXctYmFzZSIsdWE6ImllIn0pLHIoImxvYWQiLCIxNyIse25hbWU6InNlbGVjdG9yLWNzczIiLHRlc3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb25maWcuZG9jLG49dCYmISgicXVlcnlTZWxlY3RvckFsbCJpbiB0KTtyZXR1cm4gbn0sdHJpZ2dlcjoic2VsZWN0b3IifSkscigibG9hZCIsIjE4Iix7bmFtZToidHJhbnNpdGlvbi10aW1lciIsdGVzdDpmdW5jdGlvbihlKXt2YXIgdD1lLmNvbmZpZy5kb2Msbj10P3QuZG9jdW1lbnRFbGVtZW50Om51bGwscj0hMDtyZXR1cm4gbiYmbi5zdHlsZSYmKHI9ISgiTW96VHJhbnNpdGlvbiJpbiBuLnN0eWxlfHwiV2Via2l0VHJhbnNpdGlvbiJpbiBuLnN0eWxlfHwidHJhbnNpdGlvbiJpbiBuLnN0eWxlKSkscn0sdHJpZ2dlcjoidHJhbnNpdGlvbiJ9KSxyKCJsb2FkIiwiMTkiLHtuYW1lOiJ3aWRnZXQtYmFzZS1pZSIsdHJpZ2dlcjoid2lkZ2V0LWJhc2UiLHVhOiJpZSJ9KSxyKCJsb2FkIiwiMjAiLHtuYW1lOiJ5cWwtanNvbnAiLHRlc3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIWUuVUEubm9kZWpzJiYhZS5VQS53aW5qc30sdHJpZ2dlcjoieXFsIn0pLHIoImxvYWQiLCIyMSIse25hbWU6InlxbC1ub2RlanMiLHRyaWdnZXI6InlxbCIsdWE6Im5vZGVqcyJ9KSxyKCJsb2FkIiwiMjIiLHtuYW1lOiJ5cWwtd2luanMiLHRyaWdnZXI6InlxbCIsdWE6IndpbmpzIn0pfSwiMy4xNy4yIix7cmVxdWlyZXM6WyJ5dWktYmFzZSJdfSksWVVJLmFkZCgiaW50bC1iYXNlIixmdW5jdGlvbihlLHQpe3ZhciBuPS9bLCBdLztlLm1peChlLm5hbWVzcGFjZSgiSW50bCIpLHtsb29rdXBCZXN0TGFuZzpmdW5jdGlvbih0LHIpe2Z1bmN0aW9uIGEoZSl7dmFyIHQ7Zm9yKHQ9MDt0PHIubGVuZ3RoO3QrPTEpaWYoZS50b0xvd2VyQ2FzZSgpPT09clt0XS50b0xvd2VyQ2FzZSgpKXJldHVybiByW3RdfXZhciBpLHMsbyx1O2UuTGFuZy5pc1N0cmluZyh0KSYmKHQ9dC5zcGxpdChuKSk7Zm9yKGk9MDtpPHQubGVuZ3RoO2krPTEpe3M9dFtpXTtpZighc3x8cz09PSIqIiljb250aW51ZTt3aGlsZShzLmxlbmd0aD4wKXtvPWEocyk7aWYobylyZXR1cm4gbzt1PXMubGFzdEluZGV4T2YoIi0iKTtpZighKHU+PTApKWJyZWFrO3M9cy5zdWJzdHJpbmcoMCx1KSx1Pj0yJiZzLmNoYXJBdCh1LTIpPT09Ii0iJiYocz1zLnN1YnN0cmluZygwLHUtMikpfX1yZXR1cm4iIn19KX0sIjMuMTcuMiIse3JlcXVpcmVzOlsieXVpLWJhc2UiXX0pLFlVSS5hZGQoInl1aS1sb2ciLGZ1bmN0aW9uKGUsdCl7dmFyIG49ZSxyPSJ5dWk6bG9nIixpPSJ1bmRlZmluZWQiLHM9e2RlYnVnOjEsaW5mbzoyLHdhcm46NCxlcnJvcjo4fTtuLmxvZz1mdW5jdGlvbihlLHQsbyx1KXt2YXIgYSxmLGwsYyxoLHAsZD1uLHY9ZC5jb25maWcsbT1kLmZpcmU/ZDpZVUkuRW52Ci5nbG9iYWxFdmVudHM7cmV0dXJuIHYuZGVidWcmJihvPW98fCIiLHR5cGVvZiBvIT0idW5kZWZpbmVkIiYmKGY9di5sb2dFeGNsdWRlLGw9di5sb2dJbmNsdWRlLCFsfHxvIGluIGw/bCYmbyBpbiBsP2E9IWxbb106ZiYmbyBpbiBmJiYoYT1mW29dKTphPTEsdHlwZW9mIHQ9PSJ1bmRlZmluZWQiJiYodD0iaW5mbyIpLGQuY29uZmlnLmxvZ0xldmVsPWQuY29uZmlnLmxvZ0xldmVsfHwiZGVidWciLHA9c1tkLmNvbmZpZy5sb2dMZXZlbC50b0xvd2VyQ2FzZSgpXSx0IGluIHMmJnNbdF08cCYmKGE9MSkpLGF8fCh2LnVzZUJyb3dzZXJDb25zb2xlJiYoYz1vP28rIjogIitlOmUsZC5MYW5nLmlzRnVuY3Rpb24odi5sb2dGbik/di5sb2dGbi5jYWxsKGQsZSx0LG8pOnR5cGVvZiBjb25zb2xlIT09aSYmY29uc29sZS5sb2c/KGg9dCYmY29uc29sZVt0XSYmdCBpbiBzP3Q6ImxvZyIsY29uc29sZVtoXShjKSk6dHlwZW9mIG9wZXJhIT09aSYmb3BlcmEucG9zdEVycm9yKGMpKSxtJiYhdSYmKG09PT1kJiYhbS5nZXRFdmVudChyKSYmbS5wdWJsaXNoKHIse2Jyb2FkY2FzdDoyfSksbS5maXJlKHIse21zZzplLGNhdDp0LHNyYzpvfSkpKSksZH0sbi5tZXNzYWdlPWZ1bmN0aW9uKCl7cmV0dXJuIG4ubG9nLmFwcGx5KG4sYXJndW1lbnRzKX19LCIzLjE3LjIiLHtyZXF1aXJlczpbInl1aS1iYXNlIl19KSxZVUkuYWRkKCJ5dWktbGF0ZXIiLGZ1bmN0aW9uKGUsdCl7dmFyIG49W107ZS5sYXRlcj1mdW5jdGlvbih0LHIsaSxzLG8pe3Q9dHx8MCxzPWUuTGFuZy5pc1VuZGVmaW5lZChzKT9uOmUuQXJyYXkocykscj1yfHxlLmNvbmZpZy53aW58fGU7dmFyIHU9ITEsYT1yJiZlLkxhbmcuaXNTdHJpbmcoaSk/cltpXTppLGY9ZnVuY3Rpb24oKXt1fHwoYS5hcHBseT9hLmFwcGx5KHIsc3x8bik6YShzWzBdLHNbMV0sc1syXSxzWzNdKSl9LGw9bz9zZXRJbnRlcnZhbChmLHQpOnNldFRpbWVvdXQoZix0KTtyZXR1cm57aWQ6bCxpbnRlcnZhbDpvLGNhbmNlbDpmdW5jdGlvbigpe3U9ITAsdGhpcy5pbnRlcnZhbD9jbGVhckludGVydmFsKGwpOmNsZWFyVGltZW91dChsKX19fSxlLkxhbmcubGF0ZXI9ZS5sYXRlcn0sIjMuMTcuMiIse3JlcXVpcmVzOlsieXVpLWJhc2UiXX0pLFlVSS5hZGQoImxvYWRlci1iYXNlIixmdW5jdGlvbihlLHQpeyhmdW5jdGlvbigpe3ZhciB0PWUudmVyc2lvbixuPSIvYnVpbGQvIixyPXQrIi8iLGk9ZS5FbnYuYmFzZSxzPSJnYWxsZXJ5LTIwMTQuMDUuMjktMTUtNDYiLG89IjJpbjMiLHU9IjQiLGE9IjIuOS4wIixmPWkrImNvbWJvPyIsbD17dmVyc2lvbjp0LHJvb3Q6cixiYXNlOmUuRW52LmJhc2UsY29tYm9CYXNlOmYsc2tpbjp7ZGVmYXVsdFNraW46InNhbSIsYmFzZToiYXNzZXRzL3NraW5zLyIscGF0aDoic2tpbi5jc3MiLGFmdGVyOlsiY3NzcmVzZXQiLCJjc3Nmb250cyIsImNzc2dyaWRzIiwiY3NzYmFzZSIsImNzc3Jlc2V0LWNvbnRleHQiLCJjc3Nmb250cy1jb250ZXh0Il19LGdyb3Vwczp7fSxwYXR0ZXJuczp7fX0sYz1sLmdyb3VwcyxoPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcz1vKyIuIisoZXx8dSkrIi8iKyh0fHxhKStuLGw9ciYmci5iYXNlP3IuYmFzZTppLGg9ciYmci5jb21ib0Jhc2U/ci5jb21ib0Jhc2U6ZjtjLnl1aTIuYmFzZT1sK3MsYy55dWkyLnJvb3Q9cyxjLnl1aTIuY29tYm9CYXNlPWh9LHA9ZnVuY3Rpb24oZSx0KXt2YXIgcj0oZXx8cykrbixvPXQmJnQuYmFzZT90LmJhc2U6aSx1PXQmJnQuY29tYm9CYXNlP3QuY29tYm9CYXNlOmY7Yy5nYWxsZXJ5LmJhc2U9bytyLGMuZ2FsbGVyeS5yb290PXIsYy5nYWxsZXJ5LmNvbWJvQmFzZT11fTtjW3RdPXt9LGMuZ2FsbGVyeT17ZXh0OiExLGNvbWJpbmU6ITAsY29tYm9CYXNlOmYsdXBkYXRlOnAscGF0dGVybnM6eyJnYWxsZXJ5LSI6e30sImxhbmcvZ2FsbGVyeS0iOnt9LCJnYWxsZXJ5Y3NzLSI6e3R5cGU6ImNzcyJ9fX0sYy55dWkyPXtjb21iaW5lOiEwLGV4dDohMSxjb21ib0Jhc2U6Zix1cGRhdGU6aCxwYXR0ZXJuczp7Inl1aTItIjp7Y29uZmlnRm46ZnVuY3Rpb24oZSl7Ly1za2lufHJlc2V0fGZvbnRzfGdyaWRzfGJhc2UvLnRlc3QoZS5uYW1lKSYmKGUudHlwZT0iY3NzIixlLnBhdGg9ZS5wYXRoLnJlcGxhY2UoL1wuanMvLCIuY3NzIiksZS5wYXRoPWUucGF0aC5yZXBsYWNlKC9cL3l1aTItc2tpbi8sIi9hc3NldHMvc2tpbnMvc2FtL3l1aTItc2tpbiIpKX19fX0scCgpLGgoKSxZVUkuRW52W3RdJiZlLm1peChsLFlVSS5FbnZbdF0sITEsWyJtb2R1bGVzIiwiZ3JvdXBzIiwic2tpbiJdLDAsITApLFlVSS5FbnZbdF09bH0pKCk7dmFyIG49e30scj1bXSxpPTEwMjQscz1ZVUkuRW52LG89cy5fbG9hZGVkLHU9ImNzcyIsYT0ianMiLGY9ImludGwiLGw9InNhbSIsYz1lLnZlcnNpb24saD0iIixwPWUuT2JqZWN0LGQ9cC5lYWNoLHY9ZS5BcnJheSxtPXMuX2xvYWRlclF1ZXVlLGc9c1tjXSx5PSJza2luLSIsYj1lLkxhbmcsdz1zLm1vZHMsRSxTPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPWUrIi8iK3Q7cmV0dXJuIHJ8fChpKz0iLW1pbiIpLGkrPSIuIisobnx8dSksaX07WVVJLkVudi5fY3NzTG9hZGVkfHwoWVVJLkVudi5fY3NzTG9hZGVkPXt9KSxlLkVudi5tZXRhPWcsZS5Mb2FkZXI9ZnVuY3Rpb24odCl7dmFyIG49dGhpczt0PXR8fHt9LEU9Zy5tZDUsbi5jb250ZXh0PWUsdC5kb0JlZm9yZUxvYWRlciYmdC5kb0JlZm9yZUxvYWRlci5hcHBseShuLGFyZ3VtZW50cyksbi5iYXNlPWUuRW52Lm1ldGEuYmFzZStlLkVudi5tZXRhLnJvb3Qsbi5jb21ib0Jhc2U9ZS5FbnYubWV0YS5jb21ib0Jhc2Usbi5jb21iaW5lPXQuYmFzZSYmdC5iYXNlLmluZGV4T2Yobi5jb21ib0Jhc2Uuc3Vic3RyKDAsMjApKT4tMSxuLmNvbWJvU2VwPSImIixuLm1heFVSTExlbmd0aD1pLG4uaWdub3JlUmVnaXN0ZXJlZD10Lmlnbm9yZVJlZ2lzdGVyZWQsbi5yb290PWUuRW52Lm1ldGEucm9vdCxuLnRpbWVvdXQ9MCxuLmZvcmNlTWFwPXt9LG4uYWxsb3dSb2xsdXA9ITEsbi5maWx0ZXJzPXt9LG4ucmVxdWlyZWQ9e30sbi5wYXR0ZXJucz17fSxuLm1vZHVsZUluZm89e30sbi5ncm91cHM9ZS5tZXJnZShlLkVudi5tZXRhLmdyb3Vwcyksbi5za2luPWUubWVyZ2UoZS5FbnYubWV0YS5za2luKSxuLmNvbmRpdGlvbnM9e30sbi5jb25maWc9dCxuLl9pbnRlcm5hbD0hMCxuLl9wb3B1bGF0ZUNvbmRpdGlvbnNDYWNoZSgpLG4ubG9hZGVkPW9bY10sbi5hc3luYz0hMCxuLl9pbnNwZWN0UGFnZSgpLG4uX2ludGVybmFsPSExLG4uX2NvbmZpZyh0KSxuLmZvcmNlTWFwPW4uZm9yY2U/ZS5BcnJheS5oYXNoKG4uZm9yY2UpOnt9LG4udGVzdHJlc3VsdHM9bnVsbCxlLmNvbmZpZy50ZXN0cyYmKG4udGVzdHJlc3VsdHM9ZS5jb25maWcudGVzdHMpLG4uc29ydGVkPVtdLG4uZGlydHk9ITAsbi5pbnNlcnRlZD17fSxuLnNraXBwZWQ9e30sbi50ZXN0ZWQ9e30sbi5pZ25vcmVSZWdpc3RlcmVkJiZuLl9yZXNldE1vZHVsZXMoKX0sZS5Mb2FkZXIucHJvdG90eXBlPXtnZXRNb2R1bGVJbmZvOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMubW9kdWxlSW5mb1t0XSxyLGksbyxhO3JldHVybiBuP246KHI9Zy5tb2R1bGVzLGk9cy5fcmVuZGVyZWRNb2RzLG89dGhpcy5faW50ZXJuYWwsaSYmaS5oYXNPd25Qcm9wZXJ0eSh0KSYmIXRoaXMuaWdub3JlUmVnaXN0ZXJlZD90aGlzLm1vZHVsZUluZm9bdF09ZS5tZXJnZShpW3RdKTpyLmhhc093blByb3BlcnR5KHQpJiYodGhpcy5faW50ZXJuYWw9ITAsYT10aGlzLmFkZE1vZHVsZShyW3RdLHQpLGEmJmEudHlwZT09PXUmJnRoaXMuaXNDU1NMb2FkZWQoYS5uYW1lLCEwKSYmKHRoaXMubG9hZGVkW2EubmFtZV09ITApLHRoaXMuX2ludGVybmFsPW8pLHRoaXMubW9kdWxlSW5mb1t0XSl9LF9leHBhbmRBbGlhc2VzOmZ1bmN0aW9uKHQpe3ZhciBuPVtdLHI9WVVJLkVudi5hbGlhc2VzLGksczt0PWUuQXJyYXkodCk7Zm9yKGk9MDtpPHQubGVuZ3RoO2krPTEpcz10W2ldLG4ucHVzaC5hcHBseShuLHJbc10/cltzXTpbc10pO3JldHVybiBufSxfcG9wdWxhdGVDb25kaXRpb25zQ2FjaGU6ZnVuY3Rpb24oKXt2YXIgdD1nLm1vZHVsZXMsbj1zLl9jb25kaXRpb25zLHIsaSxvLHU7aWYobiYmIXRoaXMuaWdub3JlUmVnaXN0ZXJlZClmb3IociBpbiBuKW4uaGFzT3duUHJvcGVydHkocikmJih0aGlzLmNvbmRpdGlvbnNbcl09ZS5tZXJnZShuW3JdKSk7ZWxzZXtmb3IociBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkocikmJnRbcl0uY29uZGl0aW9uKXtvPXRoaXMuX2V4cGFuZEFsaWFzZXModFtyXS5jb25kaXRpb24udHJpZ2dlcik7Zm9yKGk9MDtpPG8ubGVuZ3RoO2krPTEpdT1vW2ldLHRoaXMuY29uZGl0aW9uc1t1XT10aGlzLmNvbmRpdGlvbnNbdV18fHt9LHRoaXMuY29uZGl0aW9uc1t1XVt0W3JdLm5hbWV8fHJdPXRbcl0uY29uZGl0aW9ufXMuX2NvbmRpdGlvbnM9dGhpcy5jb25kaXRpb25zfX0sX3Jlc2V0TW9kdWxlczpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdCxuLHIsaSxzO2Zvcih0IGluIGUubW9kdWxlSW5mbylpZihlLm1vZHVsZUluZm8uaGFzT3duUHJvcGVydHkodCkmJmUubW9kdWxlSW5mb1t0XSl7cj1lLm1vZHVsZUluZm9bdF0saT1yLm5hbWUscz1ZVUkuRW52Lm1vZHNbaV0/WVVJLkVudi5tb2RzW2ldLmRldGFpbHM6bnVsbCxzJiYoZS5tb2R1bGVJbmZvW2ldLl9yZXNldD0hMCxlLm1vZHVsZUluZm9baV0ucmVxdWlyZXM9cy5yZXF1aXJlc3x8W10sZS5tb2R1bGVJbmZvW2ldLm9wdGlvbmFsPXMub3B0aW9uYWx8fFtdLGUubW9kdWxlSW5mb1tpXS5zdXBlcnNlZGVzPXMuc3VwZXJjZWRlc3x8W10pO2lmKHIuZGVmYXVsdHMpZm9yKG4gaW4gci5kZWZhdWx0cylyLmRlZmF1bHRzLmhhc093blByb3BlcnR5KG4pJiZyW25dJiYocltuXT1yLmRlZmF1bHRzW25dKTtyLmxhbmdDYWNoZT11bmRlZmluZWQsci5za2luQ2FjaGU9dW5kZWZpbmVkLHIuc2tpbm5hYmxlJiZlLl9hZGRTa2luKGUuc2tpbi5kZWZhdWx0U2tpbixyLm5hbWUpfX0sUkVHRVhfQ1NTOi9cLmNzcyg/Ols/O10uKik/JC9pLEZJTFRFUl9ERUZTOntSQVc6e3NlYXJjaEV4cDoiLW1pblxcLmpzIixyZXBsYWNlU3RyOiIuanMifSxERUJVRzp7c2VhcmNoRXhwOiItbWluXFwuanMiLHJlcGxhY2VTdHI6Ii1kZWJ1Zy5qcyJ9LENPVkVSQUdFOntzZWFyY2hFeHA6Ii1taW5cXC5qcyIscmVwbGFjZVN0cjoiLWNvdmVyYWdlLmpzIn19LF9pbnNwZWN0UGFnZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdCxuLHIsaSxzO2ZvcihzIGluIHcpdy5oYXNPd25Qcm9wZXJ0eShzKSYmKHQ9d1tzXSx0LmRldGFpbHMmJihuPWUuZ2V0TW9kdWxlSW5mbyh0Lm5hbWUpLHI9dC5kZXRhaWxzLnJlcXVpcmVzLGk9biYmbi5yZXF1aXJlcyxuPyFuLl9pbnNwZWN0ZWQmJnImJmkubGVuZ3RoIT09ci5sZW5ndGgmJmRlbGV0ZSBuLmV4cGFuZGVkOm49ZS5hZGRNb2R1bGUodC5kZXRhaWxzLHMpLG4uX2luc3BlY3RlZD0hMCkpfSxfcmVxdWlyZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGkscyxvPXRoaXMuZ2V0TW9kdWxlSW5mbyhlKSxhPXRoaXMuZ2V0TW9kdWxlSW5mbyh0KTtpZighb3x8IWEpcmV0dXJuITE7cj1vLmV4cGFuZGVkX21hcCxpPW8uYWZ0ZXJfbWFwO2lmKGkmJnQgaW4gaSlyZXR1cm4hMDtpPWEuYWZ0ZXJfbWFwO2lmKGkmJmUgaW4gaSlyZXR1cm4hMTtzPWEuc3VwZXJzZWRlcztpZihzKWZvcihuPTA7bjxzLmxlbmd0aDtuKyspaWYodGhpcy5fcmVxdWlyZXMoZSxzW25dKSlyZXR1cm4hMDtzPW8uc3VwZXJzZWRlcztpZihzKWZvcihuPTA7bjxzLmxlbmd0aDtuKyspaWYodGhpcy5fcmVxdWlyZXModCxzW25dKSlyZXR1cm4hMTtyZXR1cm4gciYmdCBpbiByPyEwOm8uZXh0JiZvLnR5cGU9PT11JiYhYS5leHQmJmEudHlwZT09PXU/ITA6ITF9LF9jb25maWc6ZnVuY3Rpb24odCl7dmFyIG4scixpLHMsbyx1LGEsZj10aGlzLGw9W10sYyxoO2lmKHQpZm9yKG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pKXtpPXRbbl07aWYobj09PSJyZXF1aXJlIilmLnJlcXVpcmUoaSk7ZWxzZSBpZihuPT09InNraW4iKXR5cGVvZiBpPT0ic3RyaW5nIiYmKGYuc2tpbi5kZWZhdWx0U2tpbj0KdC5za2luLGk9e2RlZmF1bHRTa2luOml9KSxlLm1peChmLnNraW4saSwhMCk7ZWxzZSBpZihuPT09Imdyb3VwcyIpe2ZvcihyIGluIGkpaWYoaS5oYXNPd25Qcm9wZXJ0eShyKSl7YT1yLHU9aVtyXSxmLmFkZEdyb3VwKHUsYSk7aWYodS5hbGlhc2VzKWZvcihzIGluIHUuYWxpYXNlcyl1LmFsaWFzZXMuaGFzT3duUHJvcGVydHkocykmJmYuYWRkQWxpYXModS5hbGlhc2VzW3NdLHMpfX1lbHNlIGlmKG49PT0ibW9kdWxlcyIpZm9yKHIgaW4gaSlpLmhhc093blByb3BlcnR5KHIpJiZmLmFkZE1vZHVsZShpW3JdLHIpO2Vsc2UgaWYobj09PSJhbGlhc2VzIilmb3IociBpbiBpKWkuaGFzT3duUHJvcGVydHkocikmJmYuYWRkQWxpYXMoaVtyXSxyKTtlbHNlIG49PT0iZ2FsbGVyeSI/dGhpcy5ncm91cHMuZ2FsbGVyeS51cGRhdGUmJnRoaXMuZ3JvdXBzLmdhbGxlcnkudXBkYXRlKGksdCk6bj09PSJ5dWkyInx8bj09PSIyaW4zIj90aGlzLmdyb3Vwcy55dWkyLnVwZGF0ZSYmdGhpcy5ncm91cHMueXVpMi51cGRhdGUodFsiMmluMyJdLHQueXVpMix0KTpmW25dPWl9bz1mLmZpbHRlcixiLmlzU3RyaW5nKG8pJiYobz1vLnRvVXBwZXJDYXNlKCksZi5maWx0ZXJOYW1lPW8sZi5maWx0ZXI9Zi5GSUxURVJfREVGU1tvXSxvPT09IkRFQlVHIiYmZi5yZXF1aXJlKCJ5dWktbG9nIiwiZHVtcCIpKTtpZihmLmZpbHRlck5hbWUmJmYuY292ZXJhZ2UmJmYuZmlsdGVyTmFtZT09PSJDT1ZFUkFHRSImJmIuaXNBcnJheShmLmNvdmVyYWdlKSYmZi5jb3ZlcmFnZS5sZW5ndGgpe2ZvcihuPTA7bjxmLmNvdmVyYWdlLmxlbmd0aDtuKyspYz1mLmNvdmVyYWdlW25dLGg9Zi5nZXRNb2R1bGVJbmZvKGMpLGgmJmgudXNlP2w9bC5jb25jYXQoaC51c2UpOmwucHVzaChjKTtmLmZpbHRlcnM9Zi5maWx0ZXJzfHx7fSxlLkFycmF5LmVhY2gobCxmdW5jdGlvbihlKXtmLmZpbHRlcnNbZV09Zi5GSUxURVJfREVGUy5DT1ZFUkFHRX0pLGYuZmlsdGVyTmFtZT0iUkFXIixmLmZpbHRlcj1mLkZJTFRFUl9ERUZTW2YuZmlsdGVyTmFtZV19fSxmb3JtYXRTa2luOmZ1bmN0aW9uKGUsdCl7dmFyIG49eStlO3JldHVybiB0JiYobj1uKyItIit0KSxufSxfYWRkU2tpbjpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxzLG89dGhpcy5za2luLHU9dCYmdGhpcy5nZXRNb2R1bGVJbmZvKHQpLGE9dSYmdS5leHQ7cmV0dXJuIHQmJihpPXRoaXMuZm9ybWF0U2tpbihlLHQpLHRoaXMuZ2V0TW9kdWxlSW5mbyhpKXx8KHI9dS5wa2d8fHQscz17c2tpbjohMCxuYW1lOmksZ3JvdXA6dS5ncm91cCx0eXBlOiJjc3MiLGFmdGVyOm8uYWZ0ZXIscGF0aDoobnx8cikrIi8iK28uYmFzZStlKyIvIit0KyIuY3NzIixleHQ6YX0sdS5iYXNlJiYocy5iYXNlPXUuYmFzZSksdS5jb25maWdGbiYmKHMuY29uZmlnRm49dS5jb25maWdGbiksdGhpcy5hZGRNb2R1bGUocyxpKSkpLGl9LGFkZEFsaWFzOmZ1bmN0aW9uKGUsdCl7WVVJLkVudi5hbGlhc2VzW3RdPWUsdGhpcy5hZGRNb2R1bGUoe25hbWU6dCx1c2U6ZX0pfSxhZGRHcm91cDpmdW5jdGlvbihlLHQpe3ZhciBuPWUubW9kdWxlcyxyPXRoaXMsaSxzO3Q9dHx8ZS5uYW1lLGUubmFtZT10LHIuZ3JvdXBzW3RdPWU7aWYoZS5wYXR0ZXJucylmb3IoaSBpbiBlLnBhdHRlcm5zKWUucGF0dGVybnMuaGFzT3duUHJvcGVydHkoaSkmJihlLnBhdHRlcm5zW2ldLmdyb3VwPXQsci5wYXR0ZXJuc1tpXT1lLnBhdHRlcm5zW2ldKTtpZihuKWZvcihpIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShpKSYmKHM9bltpXSx0eXBlb2Ygcz09InN0cmluZyImJihzPXtuYW1lOmksZnVsbHBhdGg6c30pLHMuZ3JvdXA9dCxyLmFkZE1vZHVsZShzLGkpKX0sYWRkTW9kdWxlOmZ1bmN0aW9uKHQsbil7bj1ufHx0Lm5hbWUsdHlwZW9mIHQ9PSJzdHJpbmciJiYodD17bmFtZTpuLGZ1bGxwYXRoOnR9KTt2YXIgcixpLG8sZixsLGMscCxkLG0sZyx5LGIsdyxFLHgsVCxOLEMsayxMLEEsTyxNPXRoaXMubW9kdWxlSW5mb1tuXSxfPXRoaXMuY29uZGl0aW9ucyxEO00mJk0udGVtcCYmKHQ9ZS5tZXJnZShNLHQpKSx0Lm5hbWU9bjtpZighdHx8IXQubmFtZSlyZXR1cm4gbnVsbDt0LnR5cGV8fCh0LnR5cGU9YSxPPXQucGF0aHx8dC5mdWxscGF0aCxPJiZ0aGlzLlJFR0VYX0NTUy50ZXN0KE8pJiYodC50eXBlPXUpKSwhdC5wYXRoJiYhdC5mdWxscGF0aCYmKHQucGF0aD1TKG4sbix0LnR5cGUpKSx0LnN1cGVyc2VkZXM9dC5zdXBlcnNlZGVzfHx0LnVzZSx0LmV4dD0iZXh0ImluIHQ/dC5leHQ6dGhpcy5faW50ZXJuYWw/ITE6ITAscj10LnN1Ym1vZHVsZXMsdGhpcy5tb2R1bGVJbmZvW25dPXQsdC5yZXF1aXJlcz10LnJlcXVpcmVzfHxbXTtpZih0aGlzLnJlcXVpcmVzKWZvcihpPTA7aTx0aGlzLnJlcXVpcmVzLmxlbmd0aDtpKyspdC5yZXF1aXJlcy5wdXNoKHRoaXMucmVxdWlyZXNbaV0pO2lmKHQuZ3JvdXAmJnRoaXMuZ3JvdXBzJiZ0aGlzLmdyb3Vwc1t0Lmdyb3VwXSl7QT10aGlzLmdyb3Vwc1t0Lmdyb3VwXTtpZihBLnJlcXVpcmVzKWZvcihpPTA7aTxBLnJlcXVpcmVzLmxlbmd0aDtpKyspdC5yZXF1aXJlcy5wdXNoKEEucmVxdWlyZXNbaV0pfXQuZGVmYXVsdHN8fCh0LmRlZmF1bHRzPXtyZXF1aXJlczp0LnJlcXVpcmVzP1tdLmNvbmNhdCh0LnJlcXVpcmVzKTpudWxsLHN1cGVyc2VkZXM6dC5zdXBlcnNlZGVzP1tdLmNvbmNhdCh0LnN1cGVyc2VkZXMpOm51bGwsb3B0aW9uYWw6dC5vcHRpb25hbD9bXS5jb25jYXQodC5vcHRpb25hbCk6bnVsbH0pLHQuc2tpbm5hYmxlJiZ0LmV4dCYmdC50ZW1wJiYoaz10aGlzLl9hZGRTa2luKHRoaXMuc2tpbi5kZWZhdWx0U2tpbixuKSx0LnJlcXVpcmVzLnVuc2hpZnQoaykpLHQucmVxdWlyZXMubGVuZ3RoJiYodC5yZXF1aXJlcz10aGlzLmZpbHRlclJlcXVpcmVzKHQucmVxdWlyZXMpfHxbXSk7aWYoIXQubGFuZ1BhY2smJnQubGFuZyl7eT12KHQubGFuZyk7Zm9yKGc9MDtnPHkubGVuZ3RoO2crKylUPXlbZ10sYj10aGlzLmdldExhbmdQYWNrTmFtZShULG4pLHA9dGhpcy5nZXRNb2R1bGVJbmZvKGIpLHB8fChwPXRoaXMuX2FkZExhbmdQYWNrKFQsdCxiKSl9aWYocil7bD10LnN1cGVyc2VkZXN8fFtdLG89MDtmb3IoaSBpbiByKWlmKHIuaGFzT3duUHJvcGVydHkoaSkpe2M9cltpXSxjLnBhdGg9Yy5wYXRofHxTKG4saSx0LnR5cGUpLGMucGtnPW4sYy5ncm91cD10Lmdyb3VwLGMuc3VwZXJzZWRlcyYmKGw9bC5jb25jYXQoYy5zdXBlcnNlZGVzKSkscD10aGlzLmFkZE1vZHVsZShjLGkpLGwucHVzaChpKTtpZihwLnNraW5uYWJsZSl7dC5za2lubmFibGU9ITAsQz10aGlzLnNraW4ub3ZlcnJpZGVzO2lmKEMmJkNbaV0pZm9yKGc9MDtnPENbaV0ubGVuZ3RoO2crKylrPXRoaXMuX2FkZFNraW4oQ1tpXVtnXSxpLG4pLGwucHVzaChrKTtrPXRoaXMuX2FkZFNraW4odGhpcy5za2luLmRlZmF1bHRTa2luLGksbiksbC5wdXNoKGspfWlmKGMubGFuZyYmYy5sYW5nLmxlbmd0aCl7eT12KGMubGFuZyk7Zm9yKGc9MDtnPHkubGVuZ3RoO2crKylUPXlbZ10sYj10aGlzLmdldExhbmdQYWNrTmFtZShULG4pLHc9dGhpcy5nZXRMYW5nUGFja05hbWUoVCxpKSxwPXRoaXMuZ2V0TW9kdWxlSW5mbyhiKSxwfHwocD10aGlzLl9hZGRMYW5nUGFjayhULHQsYikpLEU9RXx8di5oYXNoKHAuc3VwZXJzZWRlcyksdyBpbiBFfHxwLnN1cGVyc2VkZXMucHVzaCh3KSx0Lmxhbmc9dC5sYW5nfHxbXSx4PXh8fHYuaGFzaCh0LmxhbmcpLFQgaW4geHx8dC5sYW5nLnB1c2goVCksYj10aGlzLmdldExhbmdQYWNrTmFtZShoLG4pLHc9dGhpcy5nZXRMYW5nUGFja05hbWUoaCxpKSxwPXRoaXMuZ2V0TW9kdWxlSW5mbyhiKSxwfHwocD10aGlzLl9hZGRMYW5nUGFjayhULHQsYikpLHcgaW4gRXx8cC5zdXBlcnNlZGVzLnB1c2godyl9bysrfXQuc3VwZXJzZWRlcz12LmRlZHVwZShsKSx0aGlzLmFsbG93Um9sbHVwJiYodC5yb2xsdXA9bzw0P286TWF0aC5taW4oby0xLDQpKX1kPXQucGx1Z2lucztpZihkKWZvcihpIGluIGQpZC5oYXNPd25Qcm9wZXJ0eShpKSYmKG09ZFtpXSxtLnBrZz1uLG0ucGF0aD1tLnBhdGh8fFMobixpLHQudHlwZSksbS5yZXF1aXJlcz1tLnJlcXVpcmVzfHxbXSxtLmdyb3VwPXQuZ3JvdXAsdGhpcy5hZGRNb2R1bGUobSxpKSx0LnNraW5uYWJsZSYmdGhpcy5fYWRkU2tpbih0aGlzLnNraW4uZGVmYXVsdFNraW4saSxuKSk7aWYodC5jb25kaXRpb24pe2Y9dGhpcy5fZXhwYW5kQWxpYXNlcyh0LmNvbmRpdGlvbi50cmlnZ2VyKTtmb3IoaT0wO2k8Zi5sZW5ndGg7aSsrKUQ9ZltpXSxMPXQuY29uZGl0aW9uLndoZW4sX1tEXT1fW0RdfHx7fSxfW0RdW25dPXQuY29uZGl0aW9uLEwmJkwhPT0iYWZ0ZXIiP0w9PT0iaW5zdGVhZCImJih0LnN1cGVyc2VkZXM9dC5zdXBlcnNlZGVzfHxbXSx0LnN1cGVyc2VkZXMucHVzaChEKSk6KHQuYWZ0ZXI9dC5hZnRlcnx8W10sdC5hZnRlci5wdXNoKEQpKX1yZXR1cm4gdC5zdXBlcnNlZGVzJiYodC5zdXBlcnNlZGVzPXRoaXMuZmlsdGVyUmVxdWlyZXModC5zdXBlcnNlZGVzKSksdC5hZnRlciYmKHQuYWZ0ZXI9dGhpcy5maWx0ZXJSZXF1aXJlcyh0LmFmdGVyKSx0LmFmdGVyX21hcD12Lmhhc2godC5hZnRlcikpLHQuY29uZmlnRm4mJihOPXQuY29uZmlnRm4odCksTj09PSExJiYoZGVsZXRlIHRoaXMubW9kdWxlSW5mb1tuXSxkZWxldGUgcy5fcmVuZGVyZWRNb2RzW25dLHQ9bnVsbCkpLHQmJihzLl9yZW5kZXJlZE1vZHN8fChzLl9yZW5kZXJlZE1vZHM9e30pLHMuX3JlbmRlcmVkTW9kc1tuXT1lLm1peChzLl9yZW5kZXJlZE1vZHNbbl18fHt9LHQpLHMuX2NvbmRpdGlvbnM9XyksdH0scmVxdWlyZTpmdW5jdGlvbih0KXt2YXIgbj10eXBlb2YgdD09InN0cmluZyI/dihhcmd1bWVudHMpOnQ7dGhpcy5kaXJ0eT0hMCx0aGlzLnJlcXVpcmVkPWUubWVyZ2UodGhpcy5yZXF1aXJlZCx2Lmhhc2godGhpcy5maWx0ZXJSZXF1aXJlcyhuKSkpLHRoaXMuX2V4cGxvZGVSb2xsdXBzKCl9LF9leHBsb2RlUm9sbHVwczpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdCxuLHIsaSxzLG8sdSxhPWUucmVxdWlyZWQ7aWYoIWUuYWxsb3dSb2xsdXApe2ZvcihyIGluIGEpaWYoYS5oYXNPd25Qcm9wZXJ0eShyKSl7dD1lLmdldE1vZHVsZShyKTtpZih0JiZ0LnVzZSl7bz10LnVzZS5sZW5ndGg7Zm9yKGk9MDtpPG87aSsrKXtuPWUuZ2V0TW9kdWxlKHQudXNlW2ldKTtpZihuJiZuLnVzZSl7dT1uLnVzZS5sZW5ndGg7Zm9yKHM9MDtzPHU7cysrKWFbbi51c2Vbc11dPSEwfWVsc2UgYVt0LnVzZVtpXV09ITB9fX1lLnJlcXVpcmVkPWF9fSxmaWx0ZXJSZXF1aXJlczpmdW5jdGlvbih0KXtpZih0KXtlLkxhbmcuaXNBcnJheSh0KXx8KHQ9W3RdKSx0PWUuQXJyYXkodCk7dmFyIG49W10scixpLHMsbztmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXtpPXRoaXMuZ2V0TW9kdWxlKHRbcl0pO2lmKGkmJmkudXNlKWZvcihzPTA7czxpLnVzZS5sZW5ndGg7cysrKW89dGhpcy5nZXRNb2R1bGUoaS51c2Vbc10pLG8mJm8udXNlJiZvLm5hbWUhPT1pLm5hbWU/bj1lLkFycmF5LmRlZHVwZShbXS5jb25jYXQobix0aGlzLmZpbHRlclJlcXVpcmVzKG8udXNlKSkpOm4ucHVzaChpLnVzZVtzXSk7ZWxzZSBuLnB1c2godFtyXSl9dD1ufXJldHVybiB0fSxfY2FuQmVBdHRhY2hlZDpmdW5jdGlvbih0KXtyZXR1cm4gdD10aGlzLmdldE1vZHVsZSh0KSx0JiZ0LnRlc3Q/KHQuaGFzT3duUHJvcGVydHkoIl90ZXN0UmVzdWx0Iil8fCh0Ll90ZXN0UmVzdWx0PXQudGVzdChlKSksdC5fdGVzdFJlc3VsdCk6ITB9LGdldFJlcXVpcmVzOmZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiByO2lmKHQuX3BhcnNlZClyZXR1cm4gdC5leHBhbmRlZHx8cjt2YXIgbixpLHMsbyx1LGEsbCxjPXRoaXMudGVzdHJlc3VsdHMsbT10Lm5hbWUsZyx5PXdbbV0mJndbbV0uZGV0YWlscyxiPXQub3B0aW9uYWxSZXF1aXJlcyxFLFMseCxULE4sQyxrLEwsQSxPLE09dC5sYW5nfHx0LmludGwsXz1lLkZlYXR1cmVzJiZlLkZlYXR1cmVzLnRlc3RzLmxvYWQsRCxQO3QudGVtcCYmeSYmKE49dCx0PXRoaXMuYWRkTW9kdWxlKHksbSksdC5ncm91cD1OLmdyb3VwLHQucGtnPQpOLnBrZyxkZWxldGUgdC5leHBhbmRlZCksUD0hIXRoaXMubGFuZyYmdC5sYW5nQ2FjaGUhPT10aGlzLmxhbmd8fHQuc2tpbkNhY2hlIT09dGhpcy5za2luLmRlZmF1bHRTa2luO2lmKHQuZXhwYW5kZWQmJiFQKXJldHVybiB0LmV4cGFuZGVkO2lmKGIpZm9yKG49MCxvPWIubGVuZ3RoO248bztuKyspdGhpcy5fY2FuQmVBdHRhY2hlZChiW25dKSYmdC5yZXF1aXJlcy5wdXNoKGJbbl0pO0U9W10sRD17fSxUPXRoaXMuZmlsdGVyUmVxdWlyZXModC5yZXF1aXJlcyksdC5sYW5nJiYoRS51bnNoaWZ0KCJpbnRsIiksVC51bnNoaWZ0KCJpbnRsIiksTT0hMCksQz10aGlzLmZpbHRlclJlcXVpcmVzKHQub3B0aW9uYWwpLHQuX3BhcnNlZD0hMCx0LmxhbmdDYWNoZT10aGlzLmxhbmcsdC5za2luQ2FjaGU9dGhpcy5za2luLmRlZmF1bHRTa2luO2ZvcihuPTA7bjxULmxlbmd0aDtuKyspaWYoIURbVFtuXV0pe0UucHVzaChUW25dKSxEW1Rbbl1dPSEwLGk9dGhpcy5nZXRNb2R1bGUoVFtuXSk7aWYoaSl7dT10aGlzLmdldFJlcXVpcmVzKGkpLE09TXx8aS5leHBhbmRlZF9tYXAmJmYgaW4gaS5leHBhbmRlZF9tYXA7Zm9yKHM9MDtzPHUubGVuZ3RoO3MrKylFLnB1c2godVtzXSl9fVQ9dGhpcy5maWx0ZXJSZXF1aXJlcyh0LnN1cGVyc2VkZXMpO2lmKFQpZm9yKG49MDtuPFQubGVuZ3RoO24rKylpZighRFtUW25dXSl7dC5zdWJtb2R1bGVzJiZFLnB1c2goVFtuXSksRFtUW25dXT0hMCxpPXRoaXMuZ2V0TW9kdWxlKFRbbl0pO2lmKGkpe3U9dGhpcy5nZXRSZXF1aXJlcyhpKSxNPU18fGkuZXhwYW5kZWRfbWFwJiZmIGluIGkuZXhwYW5kZWRfbWFwO2ZvcihzPTA7czx1Lmxlbmd0aDtzKyspRS5wdXNoKHVbc10pfX1pZihDJiZ0aGlzLmxvYWRPcHRpb25hbClmb3Iobj0wO248Qy5sZW5ndGg7bisrKWlmKCFEW0Nbbl1dKXtFLnB1c2goQ1tuXSksRFtDW25dXT0hMCxpPXRoaXMuZ2V0TW9kdWxlSW5mbyhDW25dKTtpZihpKXt1PXRoaXMuZ2V0UmVxdWlyZXMoaSksTT1NfHxpLmV4cGFuZGVkX21hcCYmZiBpbiBpLmV4cGFuZGVkX21hcDtmb3Iocz0wO3M8dS5sZW5ndGg7cysrKUUucHVzaCh1W3NdKX19Zz10aGlzLmNvbmRpdGlvbnNbbV07aWYoZyl7dC5fcGFyc2VkPSExO2lmKGMmJl8pZChjLGZ1bmN0aW9uKGUsdCl7dmFyIG49X1t0XS5uYW1lOyFEW25dJiZfW3RdLnRyaWdnZXI9PT1tJiZlJiZfW3RdJiYoRFtuXT0hMCxFLnB1c2gobikpfSk7ZWxzZSBmb3IobiBpbiBnKWlmKGcuaGFzT3duUHJvcGVydHkobikmJiFEW25dKXt4PWdbbl0sUz14JiYoIXgudWEmJiF4LnRlc3R8fHgudWEmJmUuVUFbeC51YV18fHgudGVzdCYmeC50ZXN0KGUsVCkpO2lmKFMpe0Rbbl09ITAsRS5wdXNoKG4pLGk9dGhpcy5nZXRNb2R1bGUobik7aWYoaSl7dT10aGlzLmdldFJlcXVpcmVzKGkpO2ZvcihzPTA7czx1Lmxlbmd0aDtzKyspRS5wdXNoKHVbc10pfX19fWlmKHQuc2tpbm5hYmxlKXtMPXRoaXMuc2tpbi5vdmVycmlkZXM7Zm9yKG4gaW4gWVVJLkVudi5hbGlhc2VzKVlVSS5FbnYuYWxpYXNlcy5oYXNPd25Qcm9wZXJ0eShuKSYmZS5BcnJheS5pbmRleE9mKFlVSS5FbnYuYWxpYXNlc1tuXSxtKT4tMSYmKEE9bik7aWYoTCYmKExbbV18fEEmJkxbQV0pKXtPPW0sTFtBXSYmKE89QSk7Zm9yKG49MDtuPExbT10ubGVuZ3RoO24rKylrPXRoaXMuX2FkZFNraW4oTFtPXVtuXSxtKSx0aGlzLmlzQ1NTTG9hZGVkKGssdGhpcy5fYm9vdCl8fEUucHVzaChrKX1lbHNlIGs9dGhpcy5fYWRkU2tpbih0aGlzLnNraW4uZGVmYXVsdFNraW4sbSksdGhpcy5pc0NTU0xvYWRlZChrLHRoaXMuX2Jvb3QpfHxFLnB1c2goayl9cmV0dXJuIHQuX3BhcnNlZD0hMSxNJiYodC5sYW5nJiYhdC5sYW5nUGFjayYmZS5JbnRsJiYobD1lLkludGwubG9va3VwQmVzdExhbmcodGhpcy5sYW5nfHxoLHQubGFuZyksYT10aGlzLmdldExhbmdQYWNrTmFtZShsLG0pLGEmJkUudW5zaGlmdChhKSksRS51bnNoaWZ0KGYpKSx0LmV4cGFuZGVkX21hcD12Lmhhc2goRSksdC5leHBhbmRlZD1wLmtleXModC5leHBhbmRlZF9tYXApLHQuZXhwYW5kZWR9LGlzQ1NTTG9hZGVkOmZ1bmN0aW9uKHQsbil7aWYoIXR8fCFZVUkuRW52LmNzc1N0YW1wRWx8fCFuJiZ0aGlzLmlnbm9yZVJlZ2lzdGVyZWQpcmV0dXJuITE7dmFyIHI9WVVJLkVudi5jc3NTdGFtcEVsLGk9ITEscz1ZVUkuRW52Ll9jc3NMb2FkZWRbdF0sbz1yLmN1cnJlbnRTdHlsZTtyZXR1cm4gcyE9PXVuZGVmaW5lZD9zOihyLmNsYXNzTmFtZT10LG98fChvPWUuY29uZmlnLmRvYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHIsbnVsbCkpLG8mJm8uZGlzcGxheT09PSJub25lIiYmKGk9ITApLHIuY2xhc3NOYW1lPSIiLFlVSS5FbnYuX2Nzc0xvYWRlZFt0XT1pLGkpfSxnZXRQcm92aWRlczpmdW5jdGlvbih0KXt2YXIgcj10aGlzLmdldE1vZHVsZSh0KSxpLHM7cmV0dXJuIHI/KHImJiFyLnByb3ZpZGVzJiYoaT17fSxzPXIuc3VwZXJzZWRlcyxzJiZ2LmVhY2gocyxmdW5jdGlvbih0KXtlLm1peChpLHRoaXMuZ2V0UHJvdmlkZXModCkpfSx0aGlzKSxpW3RdPSEwLHIucHJvdmlkZXM9aSksci5wcm92aWRlcyk6bn0sY2FsY3VsYXRlOmZ1bmN0aW9uKGUsdCl7aWYoZXx8dHx8dGhpcy5kaXJ0eSllJiZ0aGlzLl9jb25maWcoZSksdGhpcy5faW5pdHx8dGhpcy5fc2V0dXAoKSx0aGlzLl9leHBsb2RlKCksdGhpcy5hbGxvd1JvbGx1cD90aGlzLl9yb2xsdXAoKTp0aGlzLl9leHBsb2RlUm9sbHVwcygpLHRoaXMuX3JlZHVjZSgpLHRoaXMuX3NvcnQoKX0sX2FkZExhbmdQYWNrOmZ1bmN0aW9uKHQsbixyKXt2YXIgaT1uLm5hbWUscyxvLHU9dGhpcy5nZXRNb2R1bGVJbmZvKHIpO3JldHVybiB1fHwocz1TKG4ucGtnfHxpLHIsYSwhMCksbz17cGF0aDpzLGludGw6ITAsbGFuZ1BhY2s6ITAsZXh0Om4uZXh0LGdyb3VwOm4uZ3JvdXAsc3VwZXJzZWRlczpbXX0sbi5yb290JiYoby5yb290PW4ucm9vdCksbi5iYXNlJiYoby5iYXNlPW4uYmFzZSksbi5jb25maWdGbiYmKG8uY29uZmlnRm49bi5jb25maWdGbiksdGhpcy5hZGRNb2R1bGUobyxyKSx0JiYoZS5FbnYubGFuZz1lLkVudi5sYW5nfHx7fSxlLkVudi5sYW5nW3RdPWUuRW52LmxhbmdbdF18fHt9LGUuRW52LmxhbmdbdF1baV09ITApKSx0aGlzLmdldE1vZHVsZUluZm8ocil9LF9zZXR1cDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubW9kdWxlSW5mbyxuLHIsaSxvLHUsYTtmb3IobiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJihvPXRbbl0sbyYmKG8ucmVxdWlyZXM9di5kZWR1cGUoby5yZXF1aXJlcyksby5sYW5nJiYoYT10aGlzLmdldExhbmdQYWNrTmFtZShoLG4pLHRoaXMuX2FkZExhbmdQYWNrKG51bGwsbyxhKSkpKTt1PXt9LHRoaXMuaWdub3JlUmVnaXN0ZXJlZHx8ZS5taXgodSxzLm1vZHMpLHRoaXMuaWdub3JlJiZlLm1peCh1LHYuaGFzaCh0aGlzLmlnbm9yZSkpO2ZvcihpIGluIHUpdS5oYXNPd25Qcm9wZXJ0eShpKSYmZS5taXgodSx0aGlzLmdldFByb3ZpZGVzKGkpKTtpZih0aGlzLmZvcmNlKWZvcihyPTA7cjx0aGlzLmZvcmNlLmxlbmd0aDtyKyspdGhpcy5mb3JjZVtyXWluIHUmJmRlbGV0ZSB1W3RoaXMuZm9yY2Vbcl1dO2UubWl4KHRoaXMubG9hZGVkLHUpLHRoaXMuX2luaXQ9ITB9LGdldExhbmdQYWNrTmFtZTpmdW5jdGlvbihlLHQpe3JldHVybiJsYW5nLyIrdCsoZT8iXyIrZToiIil9LF9leHBsb2RlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yZXF1aXJlZCxuLHIsaT17fSxzPXRoaXMsbyx1O3MuZGlydHk9ITEscy5fZXhwbG9kZVJvbGx1cHMoKSx0PXMucmVxdWlyZWQ7Zm9yKG8gaW4gdCl0Lmhhc093blByb3BlcnR5KG8pJiYoaVtvXXx8KGlbb109ITAsbj1zLmdldE1vZHVsZShvKSxuJiYodT1uLmV4cG91bmQsdSYmKHRbdV09cy5nZXRNb2R1bGUodSkscj1zLmdldFJlcXVpcmVzKHRbdV0pLGUubWl4KHQsdi5oYXNoKHIpKSkscj1zLmdldFJlcXVpcmVzKG4pLGUubWl4KHQsdi5oYXNoKHIpKSkpKX0sX3BhdHRlcm5UZXN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaW5kZXhPZih0KT4tMX0sZ2V0TW9kdWxlOmZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiBudWxsO3ZhciBuLHIsaSxzPXRoaXMuZ2V0TW9kdWxlSW5mbyh0KSxvPXRoaXMucGF0dGVybnM7aWYoIXN8fHMmJnMuZXh0KWZvcihpIGluIG8paWYoby5oYXNPd25Qcm9wZXJ0eShpKSl7bj1vW2ldLG4udGVzdHx8KG4udGVzdD10aGlzLl9wYXR0ZXJuVGVzdCk7aWYobi50ZXN0KHQsaSkpe3I9bjticmVha319cmV0dXJuIHM/ciYmcyYmci5jb25maWdGbiYmIXMuY29uZmlnRm4mJihzLmNvbmZpZ0ZuPXIuY29uZmlnRm4scy5jb25maWdGbihzKSk6ciYmKG4uYWN0aW9uP24uYWN0aW9uLmNhbGwodGhpcyx0LGkpOihzPXRoaXMuYWRkTW9kdWxlKGUubWVyZ2Uocix7dGVzdDp2b2lkIDAsdGVtcDohMH0pLHQpLHIuY29uZmlnRm4mJihzLmNvbmZpZ0ZuPXIuY29uZmlnRm4pKSksc30sX3JvbGx1cDpmdW5jdGlvbigpe30sX3JlZHVjZTpmdW5jdGlvbihlKXtlPWV8fHRoaXMucmVxdWlyZWQ7dmFyIHQsbixyLGkscz10aGlzLmxvYWRUeXBlLG89dGhpcy5pZ25vcmU/di5oYXNoKHRoaXMuaWdub3JlKTohMTtmb3IodCBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkodCkpe2k9dGhpcy5nZXRNb2R1bGUodCksKCh0aGlzLmxvYWRlZFt0XXx8d1t0XSkmJiF0aGlzLmZvcmNlTWFwW3RdJiYhdGhpcy5pZ25vcmVSZWdpc3RlcmVkfHxzJiZpJiZpLnR5cGUhPT1zKSYmZGVsZXRlIGVbdF0sbyYmb1t0XSYmZGVsZXRlIGVbdF0scj1pJiZpLnN1cGVyc2VkZXM7aWYocilmb3Iobj0wO248ci5sZW5ndGg7bisrKXJbbl1pbiBlJiZkZWxldGUgZVtyW25dXX1yZXR1cm4gZX0sX2ZpbmlzaDpmdW5jdGlvbihlLHQpe20ucnVubmluZz0hMTt2YXIgbj10aGlzLm9uRW5kO24mJm4uY2FsbCh0aGlzLmNvbnRleHQse21zZzplLGRhdGE6dGhpcy5kYXRhLHN1Y2Nlc3M6dH0pLHRoaXMuX2NvbnRpbnVlKCl9LF9vblN1Y2Nlc3M6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49ZS5tZXJnZSh0LnNraXBwZWQpLHIsaT1bXSxzPXQucmVxdWlyZVJlZ2lzdHJhdGlvbixvLHUsZixsO2ZvcihmIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShmKSYmZGVsZXRlIHQuaW5zZXJ0ZWRbZl07dC5za2lwcGVkPXt9O2ZvcihmIGluIHQuaW5zZXJ0ZWQpdC5pbnNlcnRlZC5oYXNPd25Qcm9wZXJ0eShmKSYmKGw9dC5nZXRNb2R1bGUoZiksIWx8fCFzfHxsLnR5cGUhPT1hfHxmIGluIFlVSS5FbnYubW9kcz9lLm1peCh0LmxvYWRlZCx0LmdldFByb3ZpZGVzKGYpKTppLnB1c2goZikpO3I9dC5vblN1Y2Nlc3MsdT1pLmxlbmd0aD8ibm90cmVnaXN0ZXJlZCI6InN1Y2Nlc3MiLG89IWkubGVuZ3RoLHImJnIuY2FsbCh0LmNvbnRleHQse21zZzp1LGRhdGE6dC5kYXRhLHN1Y2Nlc3M6byxmYWlsZWQ6aSxza2lwcGVkOm59KSx0Ll9maW5pc2godSxvKX0sX29uUHJvZ3Jlc3M6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuO2lmKGUuZGF0YSYmZS5kYXRhLmxlbmd0aClmb3Iobj0wO248ZS5kYXRhLmxlbmd0aDtuKyspZS5kYXRhW25dPXQuZ2V0TW9kdWxlKGUuZGF0YVtuXS5uYW1lKTt0Lm9uUHJvZ3Jlc3MmJnQub25Qcm9ncmVzcy5jYWxsKHQuY29udGV4dCx7bmFtZTplLnVybCxkYXRhOmUuZGF0YX0pfSxfb25GYWlsdXJlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMub25GYWlsdXJlLG49W10scj0wLGk9ZS5lcnJvcnMubGVuZ3RoO2ZvcihyO3I8aTtyKyspbi5wdXNoKGUuZXJyb3JzW3JdLmVycm9yKTtuPW4uam9pbigiLCIpLHQmJnQuY2FsbCh0aGlzLmNvbnRleHQse21zZzpuLGRhdGE6dGhpcy5kYXRhLHN1Y2Nlc3M6ITF9KSx0aGlzLl9maW5pc2gobiwhMSl9LF9vblRpbWVvdXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5vblRpbWVvdXQ7dCYmdC5jYWxsKHRoaXMuY29udGV4dCx7bXNnOiJ0aW1lb3V0IixkYXRhOnRoaXMuZGF0YSxzdWNjZXNzOiExLHRyYW5zYWN0aW9uOmV9KX0sX3NvcnQ6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMucmVxdWlyZWQsbj17fTt0aGlzLnNvcnRlZD1bXTtmb3IoZSBpbiB0KSFuW2VdJiZ0Lmhhc093blByb3BlcnR5KGUpJiYKdGhpcy5fdmlzaXQoZSxuKX0sX3Zpc2l0OmZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLHMsbyx1LGEsZixsO3RbZV09ITAsbj10aGlzLnJlcXVpcmVkLGk9dGhpcy5tb2R1bGVJbmZvW2VdLHI9dGhpcy5jb25kaXRpb25zW2VdfHx7fTtpZihpKXtvPWkuZXhwYW5kZWR8fGkucmVxdWlyZXM7Zm9yKGY9MCxsPW8ubGVuZ3RoO2Y8bDsrK2Ypcz1vW2ZdLHU9cltzXSxhPXUmJighdS53aGVufHx1LndoZW49PT0iYWZ0ZXIiKSxuW3NdJiYhdFtzXSYmIWEmJnRoaXMuX3Zpc2l0KHMsdCl9dGhpcy5zb3J0ZWQucHVzaChlKX0sX2luc2VydDpmdW5jdGlvbih0LG4scixpKXt0JiZ0aGlzLl9jb25maWcodCk7dmFyIHM9dGhpcy5yZXNvbHZlKCFpKSxvPXRoaXMsZj0wLGw9MCxjPXt9LGgscDtvLl9yZWZldGNoPVtdLHImJihzW3I9PT1hP3U6YV09W10pLG8uZmV0Y2hDU1N8fChzLmNzcz1bXSkscy5qcy5sZW5ndGgmJmYrKyxzLmNzcy5sZW5ndGgmJmYrKyxwPWZ1bmN0aW9uKHQpe2wrKzt2YXIgbj17fSxyPTAsaT0wLHM9IiIsdSxhLHA7aWYodCYmdC5lcnJvcnMpZm9yKHI9MDtyPHQuZXJyb3JzLmxlbmd0aDtyKyspdC5lcnJvcnNbcl0ucmVxdWVzdD9zPXQuZXJyb3JzW3JdLnJlcXVlc3QudXJsOnM9dC5lcnJvcnNbcl0sbltzXT1zO2lmKHQmJnQuZGF0YSYmdC5kYXRhLmxlbmd0aCYmdC50eXBlPT09InN1Y2Nlc3MiKWZvcihyPTA7cjx0LmRhdGEubGVuZ3RoO3IrKyl7by5pbnNlcnRlZFt0LmRhdGFbcl0ubmFtZV09ITA7aWYodC5kYXRhW3JdLmxhbmd8fHQuZGF0YVtyXS5za2lubmFibGUpZGVsZXRlIG8uaW5zZXJ0ZWRbdC5kYXRhW3JdLm5hbWVdLG8uX3JlZmV0Y2gucHVzaCh0LmRhdGFbcl0ubmFtZSl9aWYobD09PWYpe28uX2xvYWRpbmc9bnVsbDtpZihvLl9yZWZldGNoLmxlbmd0aCl7Zm9yKHI9MDtyPG8uX3JlZmV0Y2gubGVuZ3RoO3IrKyl7aD1vLmdldFJlcXVpcmVzKG8uZ2V0TW9kdWxlKG8uX3JlZmV0Y2hbcl0pKTtmb3IoaT0wO2k8aC5sZW5ndGg7aSsrKW8uaW5zZXJ0ZWRbaFtpXV18fChjW2hbaV1dPWhbaV0pfWM9ZS5PYmplY3Qua2V5cyhjKTtpZihjLmxlbmd0aCl7by5yZXF1aXJlKGMpLHA9by5yZXNvbHZlKCEwKTtpZihwLmNzc01vZHMubGVuZ3RoKXtmb3Iocj0wO3I8cC5jc3NNb2RzLmxlbmd0aDtyKyspYT1wLmNzc01vZHNbcl0ubmFtZSxkZWxldGUgWVVJLkVudi5fY3NzTG9hZGVkW2FdLG8uaXNDU1NMb2FkZWQoYSkmJihvLmluc2VydGVkW2FdPSEwLGRlbGV0ZSBvLnJlcXVpcmVkW2FdKTtvLnNvcnRlZD1bXSxvLl9zb3J0KCl9dD1udWxsLG8uX2luc2VydCgpfX10JiZ0LmZuJiYodT10LmZuLGRlbGV0ZSB0LmZuLHUuY2FsbChvLHQpKX19LHRoaXMuX2xvYWRpbmc9ITA7aWYoIXMuanMubGVuZ3RoJiYhcy5jc3MubGVuZ3RoKXtsPS0xLHAoe2ZuOm8uX29uU3VjY2Vzc30pO3JldHVybn1zLmNzcy5sZW5ndGgmJmUuR2V0LmNzcyhzLmNzcyx7ZGF0YTpzLmNzc01vZHMsYXR0cmlidXRlczpvLmNzc0F0dHJpYnV0ZXMsaW5zZXJ0QmVmb3JlOm8uaW5zZXJ0QmVmb3JlLGNoYXJzZXQ6by5jaGFyc2V0LHRpbWVvdXQ6by50aW1lb3V0LGNvbnRleHQ6byxvblByb2dyZXNzOmZ1bmN0aW9uKGUpe28uX29uUHJvZ3Jlc3MuY2FsbChvLGUpfSxvblRpbWVvdXQ6ZnVuY3Rpb24oZSl7by5fb25UaW1lb3V0LmNhbGwobyxlKX0sb25TdWNjZXNzOmZ1bmN0aW9uKGUpe2UudHlwZT0ic3VjY2VzcyIsZS5mbj1vLl9vblN1Y2Nlc3MscC5jYWxsKG8sZSl9LG9uRmFpbHVyZTpmdW5jdGlvbihlKXtlLnR5cGU9ImZhaWx1cmUiLGUuZm49by5fb25GYWlsdXJlLHAuY2FsbChvLGUpfX0pLHMuanMubGVuZ3RoJiZlLkdldC5qcyhzLmpzLHtkYXRhOnMuanNNb2RzLGluc2VydEJlZm9yZTpvLmluc2VydEJlZm9yZSxhdHRyaWJ1dGVzOm8uanNBdHRyaWJ1dGVzLGNoYXJzZXQ6by5jaGFyc2V0LHRpbWVvdXQ6by50aW1lb3V0LGF1dG9wdXJnZTohMSxjb250ZXh0Om8sYXN5bmM6by5hc3luYyxvblByb2dyZXNzOmZ1bmN0aW9uKGUpe28uX29uUHJvZ3Jlc3MuY2FsbChvLGUpfSxvblRpbWVvdXQ6ZnVuY3Rpb24oZSl7by5fb25UaW1lb3V0LmNhbGwobyxlKX0sb25TdWNjZXNzOmZ1bmN0aW9uKGUpe2UudHlwZT0ic3VjY2VzcyIsZS5mbj1vLl9vblN1Y2Nlc3MscC5jYWxsKG8sZSl9LG9uRmFpbHVyZTpmdW5jdGlvbihlKXtlLnR5cGU9ImZhaWx1cmUiLGUuZm49by5fb25GYWlsdXJlLHAuY2FsbChvLGUpfX0pfSxfY29udGludWU6ZnVuY3Rpb24oKXshbS5ydW5uaW5nJiZtLnNpemUoKT4wJiYobS5ydW5uaW5nPSEwLG0ubmV4dCgpKCkpfSxpbnNlcnQ6ZnVuY3Rpb24odCxuLHIpe3ZhciBpPXRoaXMscz1lLm1lcmdlKHRoaXMpO2RlbGV0ZSBzLnJlcXVpcmUsZGVsZXRlIHMuZGlydHksbS5hZGQoZnVuY3Rpb24oKXtpLl9pbnNlcnQocyx0LG4scil9KSx0aGlzLl9jb250aW51ZSgpfSxsb2FkTmV4dDpmdW5jdGlvbigpe3JldHVybn0sX2ZpbHRlcjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5maWx0ZXIsaT10JiZ0IGluIHRoaXMuZmlsdGVycyxzPWkmJnRoaXMuZmlsdGVyc1t0XSxvPW58fCh0aGlzLmdldE1vZHVsZUluZm8odCl8fHt9KS5ncm91cHx8bnVsbDtyZXR1cm4gbyYmdGhpcy5ncm91cHNbb10mJnRoaXMuZ3JvdXBzW29dLmZpbHRlciYmKHM9dGhpcy5ncm91cHNbb10uZmlsdGVyLGk9ITApLGUmJihpJiYocj1iLmlzU3RyaW5nKHMpP3RoaXMuRklMVEVSX0RFRlNbcy50b1VwcGVyQ2FzZSgpXXx8bnVsbDpzKSxyJiYoZT1lLnJlcGxhY2UobmV3IFJlZ0V4cChyLnNlYXJjaEV4cCwiZyIpLHIucmVwbGFjZVN0cikpKSxlfSxfdXJsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5fZmlsdGVyKChufHx0aGlzLmJhc2V8fCIiKStlLHQpfSxyZXNvbHZlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcyxzPXtqczpbXSxqc01vZHM6W10sY3NzOltdLGNzc01vZHM6W119LG87KHIuc2tpbi5vdmVycmlkZXN8fHIuc2tpbi5kZWZhdWx0U2tpbiE9PWx8fHIuaWdub3JlUmVnaXN0ZXJlZCkmJnIuX3Jlc2V0TW9kdWxlcygpLGUmJnIuY2FsY3VsYXRlKCksdD10fHxyLnNvcnRlZCxvPWZ1bmN0aW9uKGUpe2lmKGUpe3ZhciB0PWUuZ3JvdXAmJnIuZ3JvdXBzW2UuZ3JvdXBdfHxuLGk7dC5hc3luYz09PSExJiYoZS5hc3luYz10LmFzeW5jKSxpPWUuZnVsbHBhdGg/ci5fZmlsdGVyKGUuZnVsbHBhdGgsZS5uYW1lKTpyLl91cmwoZS5wYXRoLGUubmFtZSx0LmJhc2V8fGUuYmFzZSk7aWYoZS5hdHRyaWJ1dGVzfHxlLmFzeW5jPT09ITEpaT17dXJsOmksYXN5bmM6ZS5hc3luY30sZS5hdHRyaWJ1dGVzJiYoaS5hdHRyaWJ1dGVzPWUuYXR0cmlidXRlcyk7c1tlLnR5cGVdLnB1c2goaSksc1tlLnR5cGUrIk1vZHMiXS5wdXNoKGUpfX07dmFyIGY9ci5pZ25vcmVSZWdpc3RlcmVkP3t9OnIuaW5zZXJ0ZWQsYz17fSxoLHAsZCx2LG0sZyx5LGI7Zm9yKGI9MCx5PXQubGVuZ3RoO2I8eTtiKyspe2c9ci5nZXRNb2R1bGUodFtiXSk7aWYoIWd8fGZbZy5uYW1lXSljb250aW51ZTttPXIuZ3JvdXBzW2cuZ3JvdXBdLGQ9ci5jb21ib0Jhc2U7aWYobSl7aWYoIW0uY29tYmluZXx8Zy5mdWxscGF0aCl7byhnKTtjb250aW51ZX1nLmNvbWJpbmU9ITAsdHlwZW9mIG0ucm9vdD09InN0cmluZyImJihnLnJvb3Q9bS5yb290KSxkPW0uY29tYm9CYXNlfHxkLHY9bS5jb21ib1NlcCxoPW0ubWF4VVJMTGVuZ3RofWVsc2UgaWYoIXIuY29tYmluZSl7byhnKTtjb250aW51ZX1pZighZy5jb21iaW5lJiZnLmV4dCl7byhnKTtjb250aW51ZX1jW2RdPWNbZF18fHtqczpbXSxqc01vZHM6W10sY3NzOltdLGNzc01vZHM6W119LHA9Y1tkXSxwLmdyb3VwPWcuZ3JvdXAscC5jb21ib1NlcD12fHxyLmNvbWJvU2VwLHAubWF4VVJMTGVuZ3RoPWh8fHIubWF4VVJMTGVuZ3RoLHBbZy50eXBlKyJNb2RzIl0ucHVzaChnKX12YXIgdyxFLFMseCxULE4sQztmb3IoZCBpbiBjKWlmKGMuaGFzT3duUHJvcGVydHkoZCkpe3A9Y1tkXSx2PXAuY29tYm9TZXAsaD1wLm1heFVSTExlbmd0aDtmb3IoQyBpbiBwKWlmKEM9PT1hfHxDPT09dSl7RT1wW0MrIk1vZHMiXSxUPVtdO2ZvcihiPTAseT1FLmxlbmd0aDtiPHk7Yis9MSlnPUVbYl0sTj0odHlwZW9mIGcucm9vdD09InN0cmluZyI/Zy5yb290OnIucm9vdCkrKGcucGF0aHx8Zy5mdWxscGF0aCksVC5wdXNoKHIuX2ZpbHRlcihOLGcubmFtZSkpO1M9ZCtULmpvaW4odikseD1TLmxlbmd0aCxoPD1kLmxlbmd0aCYmKGg9aSk7aWYoVC5sZW5ndGgpaWYoeD5oKXt3PVtdO2ZvcihiPTAseT1ULmxlbmd0aDtiPHk7YisrKXcucHVzaChUW2JdKSxTPWQrdy5qb2luKHYpLFMubGVuZ3RoPmgmJihOPXcucG9wKCksUz1kK3cuam9pbih2KSxzW0NdLnB1c2goci5fZmlsdGVyKFMsbnVsbCxwLmdyb3VwKSksdz1bXSxOJiZ3LnB1c2goTikpO3cubGVuZ3RoJiYoUz1kK3cuam9pbih2KSxzW0NdLnB1c2goci5fZmlsdGVyKFMsbnVsbCxwLmdyb3VwKSkpfWVsc2Ugc1tDXS5wdXNoKHIuX2ZpbHRlcihTLG51bGwscC5ncm91cCkpO3NbQysiTW9kcyJdPXNbQysiTW9kcyJdLmNvbmNhdChFKX19cmV0dXJuIHN9LGxvYWQ6ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuO3ZhciB0PXRoaXMsbj10LnJlc29sdmUoITApO3QuZGF0YT1uLHQub25FbmQ9ZnVuY3Rpb24oKXtlLmFwcGx5KHQuY29udGV4dHx8dCxhcmd1bWVudHMpfSx0Lmluc2VydCgpfX19LCIzLjE3LjIiLHtyZXF1aXJlczpbImdldCIsImZlYXR1cmVzIl19KSxZVUkuYWRkKCJsb2FkZXItcm9sbHVwIixmdW5jdGlvbihlLHQpe2UuTG9hZGVyLnByb3RvdHlwZS5fcm9sbHVwPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaT10aGlzLnJlcXVpcmVkLHMsbz10aGlzLm1vZHVsZUluZm8sdSxhLGY7aWYodGhpcy5kaXJ0eXx8IXRoaXMucm9sbHVwcyl7dGhpcy5yb2xsdXBzPXt9O2ZvcihlIGluIG8pby5oYXNPd25Qcm9wZXJ0eShlKSYmKG49dGhpcy5nZXRNb2R1bGUoZSksbiYmbi5yb2xsdXAmJih0aGlzLnJvbGx1cHNbZV09bikpfWZvcig7Oyl7dT0hMTtmb3IoZSBpbiB0aGlzLnJvbGx1cHMpaWYodGhpcy5yb2xsdXBzLmhhc093blByb3BlcnR5KGUpJiYhaVtlXSYmKCF0aGlzLmxvYWRlZFtlXXx8dGhpcy5mb3JjZU1hcFtlXSkpe249dGhpcy5nZXRNb2R1bGUoZSkscj1uLnN1cGVyc2VkZXN8fFtdLHM9ITE7aWYoIW4ucm9sbHVwKWNvbnRpbnVlO2E9MDtmb3IodD0wO3Q8ci5sZW5ndGg7dCsrKXtmPW9bclt0XV07aWYodGhpcy5sb2FkZWRbclt0XV0mJiF0aGlzLmZvcmNlTWFwW3JbdF1dKXtzPSExO2JyZWFrfWlmKGlbclt0XV0mJm4udHlwZT09PWYudHlwZSl7YSsrLHM9YT49bi5yb2xsdXA7aWYocylicmVha319cyYmKGlbZV09ITAsdT0hMCx0aGlzLmdldFJlcXVpcmVzKG4pKX1pZighdSlicmVha319fSwiMy4xNy4yIix7cmVxdWlyZXM6WyJsb2FkZXItYmFzZSJdfSksWVVJLmFkZCgibG9hZGVyLXl1aTMiLGZ1bmN0aW9uKGUsdCl7WVVJLkVudltlLnZlcnNpb25dLm1vZHVsZXM9WVVJLkVudltlLnZlcnNpb25dLm1vZHVsZXN8fHt9LGUubWl4KFlVSS5FbnZbZS52ZXJzaW9uXS5tb2R1bGVzLHsiYWxpZ24tcGx1Z2luIjp7cmVxdWlyZXM6WyJub2RlLXNjcmVlbiIsIm5vZGUtcGx1Z2luaG9zdCJdfSxhbmltOnt1c2U6WyJhbmltLWJhc2UiLCJhbmltLWNvbG9yIiwiYW5pbS1jdXJ2ZSIsImFuaW0tZWFzaW5nIiwiYW5pbS1ub2RlLXBsdWdpbiIsImFuaW0tc2Nyb2xsIiwiYW5pbS14eSJdfSwiYW5pbS1iYXNlIjp7cmVxdWlyZXM6WyJiYXNlLWJhc2UiLCJub2RlLXN0eWxlIiwiY29sb3ItYmFzZSJdfSwiYW5pbS1jb2xvciI6e3JlcXVpcmVzOlsiYW5pbS1iYXNlIl19LCJhbmltLWN1cnZlIjp7cmVxdWlyZXM6WyJhbmltLXh5Il19LCJhbmltLWVhc2luZyI6e3JlcXVpcmVzOlsiYW5pbS1iYXNlIl19LCJhbmltLW5vZGUtcGx1Z2luIjp7cmVxdWlyZXM6WyJub2RlLXBsdWdpbmhvc3QiLCJhbmltLWJhc2UiXX0sImFuaW0tc2Nyb2xsIjp7cmVxdWlyZXM6WyJhbmltLWJhc2UiXX0sImFuaW0tc2hhcGUiOntyZXF1aXJlczpbImFuaW0tYmFzZSIsImFuaW0tZWFzaW5nIiwiYW5pbS1jb2xvciIKLCJtYXRyaXgiXX0sImFuaW0tc2hhcGUtdHJhbnNmb3JtIjp7dXNlOlsiYW5pbS1zaGFwZSJdfSwiYW5pbS14eSI6e3JlcXVpcmVzOlsiYW5pbS1iYXNlIiwibm9kZS1zY3JlZW4iXX0sYXBwOnt1c2U6WyJhcHAtYmFzZSIsImFwcC1jb250ZW50IiwiYXBwLXRyYW5zaXRpb25zIiwibGF6eS1tb2RlbC1saXN0IiwibW9kZWwiLCJtb2RlbC1saXN0IiwibW9kZWwtc3luYy1yZXN0IiwibW9kZWwtc3luYy1sb2NhbCIsInJvdXRlciIsInZpZXciLCJ2aWV3LW5vZGUtbWFwIl19LCJhcHAtYmFzZSI6e3JlcXVpcmVzOlsiY2xhc3NuYW1lbWFuYWdlciIsInBqYXgtYmFzZSIsInJvdXRlciIsInZpZXciXX0sImFwcC1jb250ZW50Ijp7cmVxdWlyZXM6WyJhcHAtYmFzZSIsInBqYXgtY29udGVudCJdfSwiYXBwLXRyYW5zaXRpb25zIjp7cmVxdWlyZXM6WyJhcHAtYmFzZSJdfSwiYXBwLXRyYW5zaXRpb25zLWNzcyI6e3R5cGU6ImNzcyJ9LCJhcHAtdHJhbnNpdGlvbnMtbmF0aXZlIjp7Y29uZGl0aW9uOntuYW1lOiJhcHAtdHJhbnNpdGlvbnMtbmF0aXZlIix0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLmRvYyxuPXQ/dC5kb2N1bWVudEVsZW1lbnQ6bnVsbDtyZXR1cm4gbiYmbi5zdHlsZT8iTW96VHJhbnNpdGlvbiJpbiBuLnN0eWxlfHwiV2Via2l0VHJhbnNpdGlvbiJpbiBuLnN0eWxlfHwidHJhbnNpdGlvbiJpbiBuLnN0eWxlOiExfSx0cmlnZ2VyOiJhcHAtdHJhbnNpdGlvbnMifSxyZXF1aXJlczpbImFwcC10cmFuc2l0aW9ucyIsImFwcC10cmFuc2l0aW9ucy1jc3MiLCJwYXJhbGxlbCIsInRyYW5zaXRpb24iXX0sImFycmF5LWV4dHJhcyI6e3JlcXVpcmVzOlsieXVpLWJhc2UiXX0sImFycmF5LWludm9rZSI6e3JlcXVpcmVzOlsieXVpLWJhc2UiXX0sYXJyYXlsaXN0OntyZXF1aXJlczpbInl1aS1iYXNlIl19LCJhcnJheWxpc3QtYWRkIjp7cmVxdWlyZXM6WyJhcnJheWxpc3QiXX0sImFycmF5bGlzdC1maWx0ZXIiOntyZXF1aXJlczpbImFycmF5bGlzdCJdfSxhcnJheXNvcnQ6e3JlcXVpcmVzOlsieXVpLWJhc2UiXX0sImFzeW5jLXF1ZXVlIjp7cmVxdWlyZXM6WyJldmVudC1jdXN0b20iXX0sYXR0cmlidXRlOnt1c2U6WyJhdHRyaWJ1dGUtYmFzZSIsImF0dHJpYnV0ZS1jb21wbGV4Il19LCJhdHRyaWJ1dGUtYmFzZSI6e3JlcXVpcmVzOlsiYXR0cmlidXRlLWNvcmUiLCJhdHRyaWJ1dGUtb2JzZXJ2YWJsZSIsImF0dHJpYnV0ZS1leHRyYXMiXX0sImF0dHJpYnV0ZS1jb21wbGV4Ijp7cmVxdWlyZXM6WyJhdHRyaWJ1dGUtYmFzZSJdfSwiYXR0cmlidXRlLWNvcmUiOntyZXF1aXJlczpbIm9vcCJdfSwiYXR0cmlidXRlLWV2ZW50cyI6e3VzZTpbImF0dHJpYnV0ZS1vYnNlcnZhYmxlIl19LCJhdHRyaWJ1dGUtZXh0cmFzIjp7cmVxdWlyZXM6WyJvb3AiXX0sImF0dHJpYnV0ZS1vYnNlcnZhYmxlIjp7cmVxdWlyZXM6WyJldmVudC1jdXN0b20iXX0sYXV0b2NvbXBsZXRlOnt1c2U6WyJhdXRvY29tcGxldGUtYmFzZSIsImF1dG9jb21wbGV0ZS1zb3VyY2VzIiwiYXV0b2NvbXBsZXRlLWxpc3QiLCJhdXRvY29tcGxldGUtcGx1Z2luIl19LCJhdXRvY29tcGxldGUtYmFzZSI6e29wdGlvbmFsOlsiYXV0b2NvbXBsZXRlLXNvdXJjZXMiXSxyZXF1aXJlczpbImFycmF5LWV4dHJhcyIsImJhc2UtYnVpbGQiLCJlc2NhcGUiLCJldmVudC12YWx1ZWNoYW5nZSIsIm5vZGUtYmFzZSJdfSwiYXV0b2NvbXBsZXRlLWZpbHRlcnMiOntyZXF1aXJlczpbImFycmF5LWV4dHJhcyIsInRleHQtd29yZGJyZWFrIl19LCJhdXRvY29tcGxldGUtZmlsdGVycy1hY2NlbnRmb2xkIjp7cmVxdWlyZXM6WyJhcnJheS1leHRyYXMiLCJ0ZXh0LWFjY2VudGZvbGQiLCJ0ZXh0LXdvcmRicmVhayJdfSwiYXV0b2NvbXBsZXRlLWhpZ2hsaWdodGVycyI6e3JlcXVpcmVzOlsiYXJyYXktZXh0cmFzIiwiaGlnaGxpZ2h0LWJhc2UiXX0sImF1dG9jb21wbGV0ZS1oaWdobGlnaHRlcnMtYWNjZW50Zm9sZCI6e3JlcXVpcmVzOlsiYXJyYXktZXh0cmFzIiwiaGlnaGxpZ2h0LWFjY2VudGZvbGQiXX0sImF1dG9jb21wbGV0ZS1saXN0Ijp7YWZ0ZXI6WyJhdXRvY29tcGxldGUtc291cmNlcyJdLGxhbmc6WyJlbiIsImVzIiwiaHUiLCJpdCJdLHJlcXVpcmVzOlsiYXV0b2NvbXBsZXRlLWJhc2UiLCJldmVudC1yZXNpemUiLCJub2RlLXNjcmVlbiIsInNlbGVjdG9yLWNzczMiLCJzaGltLXBsdWdpbiIsIndpZGdldCIsIndpZGdldC1wb3NpdGlvbiIsIndpZGdldC1wb3NpdGlvbi1hbGlnbiJdLHNraW5uYWJsZTohMH0sImF1dG9jb21wbGV0ZS1saXN0LWtleXMiOntjb25kaXRpb246e25hbWU6ImF1dG9jb21wbGV0ZS1saXN0LWtleXMiLHRlc3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIWUuVUEuaW9zJiYhZS5VQS5hbmRyb2lkfSx0cmlnZ2VyOiJhdXRvY29tcGxldGUtbGlzdCJ9LHJlcXVpcmVzOlsiYXV0b2NvbXBsZXRlLWxpc3QiLCJiYXNlLWJ1aWxkIl19LCJhdXRvY29tcGxldGUtcGx1Z2luIjp7cmVxdWlyZXM6WyJhdXRvY29tcGxldGUtbGlzdCIsIm5vZGUtcGx1Z2luaG9zdCJdfSwiYXV0b2NvbXBsZXRlLXNvdXJjZXMiOntvcHRpb25hbDpbImlvLWJhc2UiLCJqc29uLXBhcnNlIiwianNvbnAiLCJ5cWwiXSxyZXF1aXJlczpbImF1dG9jb21wbGV0ZS1iYXNlIl19LGF4ZXM6e3VzZTpbImF4aXMtbnVtZXJpYyIsImF4aXMtY2F0ZWdvcnkiLCJheGlzLXRpbWUiLCJheGlzLXN0YWNrZWQiXX0sImF4ZXMtYmFzZSI6e3VzZTpbImF4aXMtbnVtZXJpYy1iYXNlIiwiYXhpcy1jYXRlZ29yeS1iYXNlIiwiYXhpcy10aW1lLWJhc2UiLCJheGlzLXN0YWNrZWQtYmFzZSJdfSxheGlzOntyZXF1aXJlczpbImRvbSIsIndpZGdldCIsIndpZGdldC1wb3NpdGlvbiIsIndpZGdldC1zdGFjayIsImdyYXBoaWNzIiwiYXhpcy1iYXNlIl19LCJheGlzLWJhc2UiOntyZXF1aXJlczpbImNsYXNzbmFtZW1hbmFnZXIiLCJkYXRhdHlwZS1udW1iZXIiLCJkYXRhdHlwZS1kYXRlIiwiYmFzZSIsImV2ZW50LWN1c3RvbSJdfSwiYXhpcy1jYXRlZ29yeSI6e3JlcXVpcmVzOlsiYXhpcyIsImF4aXMtY2F0ZWdvcnktYmFzZSJdfSwiYXhpcy1jYXRlZ29yeS1iYXNlIjp7cmVxdWlyZXM6WyJheGlzLWJhc2UiXX0sImF4aXMtbnVtZXJpYyI6e3JlcXVpcmVzOlsiYXhpcyIsImF4aXMtbnVtZXJpYy1iYXNlIl19LCJheGlzLW51bWVyaWMtYmFzZSI6e3JlcXVpcmVzOlsiYXhpcy1iYXNlIl19LCJheGlzLXN0YWNrZWQiOntyZXF1aXJlczpbImF4aXMtbnVtZXJpYyIsImF4aXMtc3RhY2tlZC1iYXNlIl19LCJheGlzLXN0YWNrZWQtYmFzZSI6e3JlcXVpcmVzOlsiYXhpcy1udW1lcmljLWJhc2UiXX0sImF4aXMtdGltZSI6e3JlcXVpcmVzOlsiYXhpcyIsImF4aXMtdGltZS1iYXNlIl19LCJheGlzLXRpbWUtYmFzZSI6e3JlcXVpcmVzOlsiYXhpcy1iYXNlIl19LGJhc2U6e3VzZTpbImJhc2UtYmFzZSIsImJhc2UtcGx1Z2luaG9zdCIsImJhc2UtYnVpbGQiXX0sImJhc2UtYmFzZSI6e3JlcXVpcmVzOlsiYXR0cmlidXRlLWJhc2UiLCJiYXNlLWNvcmUiLCJiYXNlLW9ic2VydmFibGUiXX0sImJhc2UtYnVpbGQiOntyZXF1aXJlczpbImJhc2UtYmFzZSJdfSwiYmFzZS1jb3JlIjp7cmVxdWlyZXM6WyJhdHRyaWJ1dGUtY29yZSJdfSwiYmFzZS1vYnNlcnZhYmxlIjp7cmVxdWlyZXM6WyJhdHRyaWJ1dGUtb2JzZXJ2YWJsZSIsImJhc2UtY29yZSJdfSwiYmFzZS1wbHVnaW5ob3N0Ijp7cmVxdWlyZXM6WyJiYXNlLWJhc2UiLCJwbHVnaW5ob3N0Il19LGJ1dHRvbjp7cmVxdWlyZXM6WyJidXR0b24tY29yZSIsImNzc2J1dHRvbiIsIndpZGdldCJdfSwiYnV0dG9uLWNvcmUiOntyZXF1aXJlczpbImF0dHJpYnV0ZS1jb3JlIiwiY2xhc3NuYW1lbWFuYWdlciIsIm5vZGUtYmFzZSIsImVzY2FwZSJdfSwiYnV0dG9uLWdyb3VwIjp7cmVxdWlyZXM6WyJidXR0b24tcGx1Z2luIiwiY3NzYnV0dG9uIiwid2lkZ2V0Il19LCJidXR0b24tcGx1Z2luIjp7cmVxdWlyZXM6WyJidXR0b24tY29yZSIsImNzc2J1dHRvbiIsIm5vZGUtcGx1Z2luaG9zdCJdfSxjYWNoZTp7dXNlOlsiY2FjaGUtYmFzZSIsImNhY2hlLW9mZmxpbmUiLCJjYWNoZS1wbHVnaW4iXX0sImNhY2hlLWJhc2UiOntyZXF1aXJlczpbImJhc2UiXX0sImNhY2hlLW9mZmxpbmUiOntyZXF1aXJlczpbImNhY2hlLWJhc2UiLCJqc29uIl19LCJjYWNoZS1wbHVnaW4iOntyZXF1aXJlczpbInBsdWdpbiIsImNhY2hlLWJhc2UiXX0sY2FsZW5kYXI6e3JlcXVpcmVzOlsiY2FsZW5kYXItYmFzZSIsImNhbGVuZGFybmF2aWdhdG9yIl0sc2tpbm5hYmxlOiEwfSwiY2FsZW5kYXItYmFzZSI6e2xhbmc6WyJkZSIsImVuIiwiZXMiLCJlcy1BUiIsImZyIiwiaHUiLCJpdCIsImphIiwibmItTk8iLCJubCIsInB0LUJSIiwicnUiLCJ6aC1IYW5zIiwiemgtSGFucy1DTiIsInpoLUhhbnQiLCJ6aC1IYW50LUhLIiwiemgtSEFOVC1UVyJdLHJlcXVpcmVzOlsid2lkZ2V0IiwiZGF0YXR5cGUtZGF0ZSIsImRhdGF0eXBlLWRhdGUtbWF0aCIsImNzc2dyaWRzIl0sc2tpbm5hYmxlOiEwfSxjYWxlbmRhcm5hdmlnYXRvcjp7cmVxdWlyZXM6WyJwbHVnaW4iLCJjbGFzc25hbWVtYW5hZ2VyIiwiZGF0YXR5cGUtZGF0ZSIsIm5vZGUiXSxza2lubmFibGU6ITB9LGNoYXJ0czp7dXNlOlsiY2hhcnRzLWJhc2UiXX0sImNoYXJ0cy1iYXNlIjp7cmVxdWlyZXM6WyJkb20iLCJldmVudC1tb3VzZWVudGVyIiwiZXZlbnQtdG91Y2giLCJncmFwaGljcy1ncm91cCIsImF4ZXMiLCJzZXJpZXMtcGllIiwic2VyaWVzLWxpbmUiLCJzZXJpZXMtbWFya2VyIiwic2VyaWVzLWFyZWEiLCJzZXJpZXMtc3BsaW5lIiwic2VyaWVzLWNvbHVtbiIsInNlcmllcy1iYXIiLCJzZXJpZXMtYXJlYXNwbGluZSIsInNlcmllcy1jb21ibyIsInNlcmllcy1jb21ib3NwbGluZSIsInNlcmllcy1saW5lLXN0YWNrZWQiLCJzZXJpZXMtbWFya2VyLXN0YWNrZWQiLCJzZXJpZXMtYXJlYS1zdGFja2VkIiwic2VyaWVzLXNwbGluZS1zdGFja2VkIiwic2VyaWVzLWNvbHVtbi1zdGFja2VkIiwic2VyaWVzLWJhci1zdGFja2VkIiwic2VyaWVzLWFyZWFzcGxpbmUtc3RhY2tlZCIsInNlcmllcy1jb21iby1zdGFja2VkIiwic2VyaWVzLWNvbWJvc3BsaW5lLXN0YWNrZWQiXX0sImNoYXJ0cy1sZWdlbmQiOntyZXF1aXJlczpbImNoYXJ0cy1iYXNlIl19LGNsYXNzbmFtZW1hbmFnZXI6e3JlcXVpcmVzOlsieXVpLWJhc2UiXX0sImNsaWNrYWJsZS1yYWlsIjp7cmVxdWlyZXM6WyJzbGlkZXItYmFzZSJdfSxjb2xsZWN0aW9uOnt1c2U6WyJhcnJheS1leHRyYXMiLCJhcnJheWxpc3QiLCJhcnJheWxpc3QtYWRkIiwiYXJyYXlsaXN0LWZpbHRlciIsImFycmF5LWludm9rZSJdfSxjb2xvcjp7dXNlOlsiY29sb3ItYmFzZSIsImNvbG9yLWhzbCIsImNvbG9yLWhhcm1vbnkiXX0sImNvbG9yLWJhc2UiOntyZXF1aXJlczpbInl1aS1iYXNlIl19LCJjb2xvci1oYXJtb255Ijp7cmVxdWlyZXM6WyJjb2xvci1oc2wiXX0sImNvbG9yLWhzbCI6e3JlcXVpcmVzOlsiY29sb3ItYmFzZSJdfSwiY29sb3ItaHN2Ijp7cmVxdWlyZXM6WyJjb2xvci1iYXNlIl19LGNvbnNvbGU6e2xhbmc6WyJlbiIsImVzIiwiaHUiLCJpdCIsImphIl0scmVxdWlyZXM6WyJ5dWktbG9nIiwid2lkZ2V0Il0sc2tpbm5hYmxlOiEwfSwiY29uc29sZS1maWx0ZXJzIjp7cmVxdWlyZXM6WyJwbHVnaW4iLCJjb25zb2xlIl0sc2tpbm5hYmxlOiEwfSwiY29udGVudC1lZGl0YWJsZSI6e3JlcXVpcmVzOlsibm9kZS1iYXNlIiwiZWRpdG9yLXNlbGVjdGlvbiIsInN0eWxlc2hlZXQiLCJwbHVnaW4iXX0sY29udHJvbGxlcjp7dXNlOlsicm91dGVyIl19LGNvb2tpZTp7cmVxdWlyZXM6WyJ5dWktYmFzZSJdfSwiY3JlYXRlbGluay1iYXNlIjp7cmVxdWlyZXM6WyJlZGl0b3ItYmFzZSJdfSxjc3NiYXNlOnthZnRlcjpbImNzc3Jlc2V0IiwiY3NzZm9udHMiLCJjc3NncmlkcyIsImNzc3Jlc2V0LWNvbnRleHQiLCJjc3Nmb250cy1jb250ZXh0IiwiY3NzZ3JpZHMtY29udGV4dCJdLHR5cGU6ImNzcyJ9LCJjc3NiYXNlLWNvbnRleHQiOnthZnRlcjpbImNzc3Jlc2V0IgosImNzc2ZvbnRzIiwiY3NzZ3JpZHMiLCJjc3NyZXNldC1jb250ZXh0IiwiY3NzZm9udHMtY29udGV4dCIsImNzc2dyaWRzLWNvbnRleHQiXSx0eXBlOiJjc3MifSxjc3NidXR0b246e3R5cGU6ImNzcyJ9LGNzc2ZvbnRzOnt0eXBlOiJjc3MifSwiY3NzZm9udHMtY29udGV4dCI6e3R5cGU6ImNzcyJ9LGNzc2dyaWRzOntvcHRpb25hbDpbImNzc25vcm1hbGl6ZSJdLHR5cGU6ImNzcyJ9LCJjc3Nncmlkcy1iYXNlIjp7b3B0aW9uYWw6WyJjc3Nub3JtYWxpemUiXSx0eXBlOiJjc3MifSwiY3NzZ3JpZHMtcmVzcG9uc2l2ZSI6e29wdGlvbmFsOlsiY3Nzbm9ybWFsaXplIl0scmVxdWlyZXM6WyJjc3NncmlkcyIsImNzc2dyaWRzLXJlc3BvbnNpdmUtYmFzZSJdLHR5cGU6ImNzcyJ9LCJjc3Nncmlkcy11bml0cyI6e29wdGlvbmFsOlsiY3Nzbm9ybWFsaXplIl0scmVxdWlyZXM6WyJjc3Nncmlkcy1iYXNlIl0sdHlwZToiY3NzIn0sY3Nzbm9ybWFsaXplOnt0eXBlOiJjc3MifSwiY3Nzbm9ybWFsaXplLWNvbnRleHQiOnt0eXBlOiJjc3MifSxjc3NyZXNldDp7dHlwZToiY3NzIn0sImNzc3Jlc2V0LWNvbnRleHQiOnt0eXBlOiJjc3MifSxkYXRhc2NoZW1hOnt1c2U6WyJkYXRhc2NoZW1hLWJhc2UiLCJkYXRhc2NoZW1hLWpzb24iLCJkYXRhc2NoZW1hLXhtbCIsImRhdGFzY2hlbWEtYXJyYXkiLCJkYXRhc2NoZW1hLXRleHQiXX0sImRhdGFzY2hlbWEtYXJyYXkiOntyZXF1aXJlczpbImRhdGFzY2hlbWEtYmFzZSJdfSwiZGF0YXNjaGVtYS1iYXNlIjp7cmVxdWlyZXM6WyJiYXNlIl19LCJkYXRhc2NoZW1hLWpzb24iOntyZXF1aXJlczpbImRhdGFzY2hlbWEtYmFzZSIsImpzb24iXX0sImRhdGFzY2hlbWEtdGV4dCI6e3JlcXVpcmVzOlsiZGF0YXNjaGVtYS1iYXNlIl19LCJkYXRhc2NoZW1hLXhtbCI6e3JlcXVpcmVzOlsiZGF0YXNjaGVtYS1iYXNlIl19LGRhdGFzb3VyY2U6e3VzZTpbImRhdGFzb3VyY2UtbG9jYWwiLCJkYXRhc291cmNlLWlvIiwiZGF0YXNvdXJjZS1nZXQiLCJkYXRhc291cmNlLWZ1bmN0aW9uIiwiZGF0YXNvdXJjZS1jYWNoZSIsImRhdGFzb3VyY2UtanNvbnNjaGVtYSIsImRhdGFzb3VyY2UteG1sc2NoZW1hIiwiZGF0YXNvdXJjZS1hcnJheXNjaGVtYSIsImRhdGFzb3VyY2UtdGV4dHNjaGVtYSIsImRhdGFzb3VyY2UtcG9sbGluZyJdfSwiZGF0YXNvdXJjZS1hcnJheXNjaGVtYSI6e3JlcXVpcmVzOlsiZGF0YXNvdXJjZS1sb2NhbCIsInBsdWdpbiIsImRhdGFzY2hlbWEtYXJyYXkiXX0sImRhdGFzb3VyY2UtY2FjaGUiOntyZXF1aXJlczpbImRhdGFzb3VyY2UtbG9jYWwiLCJwbHVnaW4iLCJjYWNoZS1iYXNlIl19LCJkYXRhc291cmNlLWZ1bmN0aW9uIjp7cmVxdWlyZXM6WyJkYXRhc291cmNlLWxvY2FsIl19LCJkYXRhc291cmNlLWdldCI6e3JlcXVpcmVzOlsiZGF0YXNvdXJjZS1sb2NhbCIsImdldCJdfSwiZGF0YXNvdXJjZS1pbyI6e3JlcXVpcmVzOlsiZGF0YXNvdXJjZS1sb2NhbCIsImlvLWJhc2UiXX0sImRhdGFzb3VyY2UtanNvbnNjaGVtYSI6e3JlcXVpcmVzOlsiZGF0YXNvdXJjZS1sb2NhbCIsInBsdWdpbiIsImRhdGFzY2hlbWEtanNvbiJdfSwiZGF0YXNvdXJjZS1sb2NhbCI6e3JlcXVpcmVzOlsiYmFzZSJdfSwiZGF0YXNvdXJjZS1wb2xsaW5nIjp7cmVxdWlyZXM6WyJkYXRhc291cmNlLWxvY2FsIl19LCJkYXRhc291cmNlLXRleHRzY2hlbWEiOntyZXF1aXJlczpbImRhdGFzb3VyY2UtbG9jYWwiLCJwbHVnaW4iLCJkYXRhc2NoZW1hLXRleHQiXX0sImRhdGFzb3VyY2UteG1sc2NoZW1hIjp7cmVxdWlyZXM6WyJkYXRhc291cmNlLWxvY2FsIiwicGx1Z2luIiwiZGF0YXR5cGUteG1sIiwiZGF0YXNjaGVtYS14bWwiXX0sZGF0YXRhYmxlOnt1c2U6WyJkYXRhdGFibGUtY29yZSIsImRhdGF0YWJsZS10YWJsZSIsImRhdGF0YWJsZS1oZWFkIiwiZGF0YXRhYmxlLWJvZHkiLCJkYXRhdGFibGUtYmFzZSIsImRhdGF0YWJsZS1jb2x1bW4td2lkdGhzIiwiZGF0YXRhYmxlLW1lc3NhZ2UiLCJkYXRhdGFibGUtbXV0YWJsZSIsImRhdGF0YWJsZS1zb3J0IiwiZGF0YXRhYmxlLWRhdGFzb3VyY2UiXX0sImRhdGF0YWJsZS1iYXNlIjp7cmVxdWlyZXM6WyJkYXRhdGFibGUtY29yZSIsImRhdGF0YWJsZS10YWJsZSIsImRhdGF0YWJsZS1oZWFkIiwiZGF0YXRhYmxlLWJvZHkiLCJiYXNlLWJ1aWxkIiwid2lkZ2V0Il0sc2tpbm5hYmxlOiEwfSwiZGF0YXRhYmxlLWJvZHkiOntyZXF1aXJlczpbImRhdGF0YWJsZS1jb3JlIiwidmlldyIsImNsYXNzbmFtZW1hbmFnZXIiXX0sImRhdGF0YWJsZS1jb2x1bW4td2lkdGhzIjp7cmVxdWlyZXM6WyJkYXRhdGFibGUtYmFzZSJdfSwiZGF0YXRhYmxlLWNvcmUiOntyZXF1aXJlczpbImVzY2FwZSIsIm1vZGVsLWxpc3QiLCJub2RlLWV2ZW50LWRlbGVnYXRlIl19LCJkYXRhdGFibGUtZGF0YXNvdXJjZSI6e3JlcXVpcmVzOlsiZGF0YXRhYmxlLWJhc2UiLCJwbHVnaW4iLCJkYXRhc291cmNlLWxvY2FsIl19LCJkYXRhdGFibGUtZm9vdCI6e3JlcXVpcmVzOlsiZGF0YXRhYmxlLWNvcmUiLCJ2aWV3Il19LCJkYXRhdGFibGUtZm9ybWF0dGVycyI6e3JlcXVpcmVzOlsiZGF0YXRhYmxlLWJvZHkiLCJkYXRhdHlwZS1udW1iZXItZm9ybWF0IiwiZGF0YXR5cGUtZGF0ZS1mb3JtYXQiLCJlc2NhcGUiXX0sImRhdGF0YWJsZS1oZWFkIjp7cmVxdWlyZXM6WyJkYXRhdGFibGUtY29yZSIsInZpZXciLCJjbGFzc25hbWVtYW5hZ2VyIl19LCJkYXRhdGFibGUtaGlnaGxpZ2h0Ijp7cmVxdWlyZXM6WyJkYXRhdGFibGUtYmFzZSIsImV2ZW50LWhvdmVyIl0sc2tpbm5hYmxlOiEwfSwiZGF0YXRhYmxlLWtleW5hdiI6e3JlcXVpcmVzOlsiZGF0YXRhYmxlLWJhc2UiXX0sImRhdGF0YWJsZS1tZXNzYWdlIjp7bGFuZzpbImVuIiwiZnIiLCJlcyIsImh1IiwiaXQiXSxyZXF1aXJlczpbImRhdGF0YWJsZS1iYXNlIl0sc2tpbm5hYmxlOiEwfSwiZGF0YXRhYmxlLW11dGFibGUiOntyZXF1aXJlczpbImRhdGF0YWJsZS1iYXNlIl19LCJkYXRhdGFibGUtcGFnaW5hdG9yIjp7bGFuZzpbImVuIiwiZnIiXSxyZXF1aXJlczpbIm1vZGVsIiwidmlldyIsInBhZ2luYXRvci1jb3JlIiwiZGF0YXRhYmxlLWZvb3QiLCJkYXRhdGFibGUtcGFnaW5hdG9yLXRlbXBsYXRlcyJdLHNraW5uYWJsZTohMH0sImRhdGF0YWJsZS1wYWdpbmF0b3ItdGVtcGxhdGVzIjp7cmVxdWlyZXM6WyJ0ZW1wbGF0ZSJdfSwiZGF0YXRhYmxlLXNjcm9sbCI6e3JlcXVpcmVzOlsiZGF0YXRhYmxlLWJhc2UiLCJkYXRhdGFibGUtY29sdW1uLXdpZHRocyIsImRvbS1zY3JlZW4iXSxza2lubmFibGU6ITB9LCJkYXRhdGFibGUtc29ydCI6e2xhbmc6WyJlbiIsImZyIiwiZXMiLCJodSJdLHJlcXVpcmVzOlsiZGF0YXRhYmxlLWJhc2UiXSxza2lubmFibGU6ITB9LCJkYXRhdGFibGUtdGFibGUiOntyZXF1aXJlczpbImRhdGF0YWJsZS1jb3JlIiwiZGF0YXRhYmxlLWhlYWQiLCJkYXRhdGFibGUtYm9keSIsInZpZXciLCJjbGFzc25hbWVtYW5hZ2VyIl19LGRhdGF0eXBlOnt1c2U6WyJkYXRhdHlwZS1kYXRlIiwiZGF0YXR5cGUtbnVtYmVyIiwiZGF0YXR5cGUteG1sIl19LCJkYXRhdHlwZS1kYXRlIjp7dXNlOlsiZGF0YXR5cGUtZGF0ZS1wYXJzZSIsImRhdGF0eXBlLWRhdGUtZm9ybWF0IiwiZGF0YXR5cGUtZGF0ZS1tYXRoIl19LCJkYXRhdHlwZS1kYXRlLWZvcm1hdCI6e2xhbmc6WyJhciIsImFyLUpPIiwiY2EiLCJjYS1FUyIsImRhIiwiZGEtREsiLCJkZSIsImRlLUFUIiwiZGUtREUiLCJlbCIsImVsLUdSIiwiZW4iLCJlbi1BVSIsImVuLUNBIiwiZW4tR0IiLCJlbi1JRSIsImVuLUlOIiwiZW4tSk8iLCJlbi1NWSIsImVuLU5aIiwiZW4tUEgiLCJlbi1TRyIsImVuLVVTIiwiZXMiLCJlcy1BUiIsImVzLUJPIiwiZXMtQ0wiLCJlcy1DTyIsImVzLUVDIiwiZXMtRVMiLCJlcy1NWCIsImVzLVBFIiwiZXMtUFkiLCJlcy1VUyIsImVzLVVZIiwiZXMtVkUiLCJmaSIsImZpLUZJIiwiZnIiLCJmci1CRSIsImZyLUNBIiwiZnItRlIiLCJoaSIsImhpLUlOIiwiaHUiLCJpZCIsImlkLUlEIiwiaXQiLCJpdC1JVCIsImphIiwiamEtSlAiLCJrbyIsImtvLUtSIiwibXMiLCJtcy1NWSIsIm5iIiwibmItTk8iLCJubCIsIm5sLUJFIiwibmwtTkwiLCJwbCIsInBsLVBMIiwicHQiLCJwdC1CUiIsInJvIiwicm8tUk8iLCJydSIsInJ1LVJVIiwic3YiLCJzdi1TRSIsInRoIiwidGgtVEgiLCJ0ciIsInRyLVRSIiwidmkiLCJ2aS1WTiIsInpoLUhhbnMiLCJ6aC1IYW5zLUNOIiwiemgtSGFudCIsInpoLUhhbnQtSEsiLCJ6aC1IYW50LVRXIl19LCJkYXRhdHlwZS1kYXRlLW1hdGgiOntyZXF1aXJlczpbInl1aS1iYXNlIl19LCJkYXRhdHlwZS1kYXRlLXBhcnNlIjp7fSwiZGF0YXR5cGUtbnVtYmVyIjp7dXNlOlsiZGF0YXR5cGUtbnVtYmVyLXBhcnNlIiwiZGF0YXR5cGUtbnVtYmVyLWZvcm1hdCJdfSwiZGF0YXR5cGUtbnVtYmVyLWZvcm1hdCI6e30sImRhdGF0eXBlLW51bWJlci1wYXJzZSI6e3JlcXVpcmVzOlsiZXNjYXBlIl19LCJkYXRhdHlwZS14bWwiOnt1c2U6WyJkYXRhdHlwZS14bWwtcGFyc2UiLCJkYXRhdHlwZS14bWwtZm9ybWF0Il19LCJkYXRhdHlwZS14bWwtZm9ybWF0Ijp7fSwiZGF0YXR5cGUteG1sLXBhcnNlIjp7fSxkZDp7dXNlOlsiZGQtZGRtLWJhc2UiLCJkZC1kZG0iLCJkZC1kZG0tZHJvcCIsImRkLWRyYWciLCJkZC1wcm94eSIsImRkLWNvbnN0cmFpbiIsImRkLWRyb3AiLCJkZC1zY3JvbGwiLCJkZC1kZWxlZ2F0ZSJdfSwiZGQtY29uc3RyYWluIjp7cmVxdWlyZXM6WyJkZC1kcmFnIl19LCJkZC1kZG0iOntyZXF1aXJlczpbImRkLWRkbS1iYXNlIiwiZXZlbnQtcmVzaXplIl19LCJkZC1kZG0tYmFzZSI6e3JlcXVpcmVzOlsibm9kZSIsImJhc2UiLCJ5dWktdGhyb3R0bGUiLCJjbGFzc25hbWVtYW5hZ2VyIl19LCJkZC1kZG0tZHJvcCI6e3JlcXVpcmVzOlsiZGQtZGRtIl19LCJkZC1kZWxlZ2F0ZSI6e3JlcXVpcmVzOlsiZGQtZHJhZyIsImRkLWRyb3AtcGx1Z2luIiwiZXZlbnQtbW91c2VlbnRlciJdfSwiZGQtZHJhZyI6e3JlcXVpcmVzOlsiZGQtZGRtLWJhc2UiXX0sImRkLWRyb3AiOntyZXF1aXJlczpbImRkLWRyYWciLCJkZC1kZG0tZHJvcCJdfSwiZGQtZHJvcC1wbHVnaW4iOntyZXF1aXJlczpbImRkLWRyb3AiXX0sImRkLWdlc3R1cmVzIjp7Y29uZGl0aW9uOntuYW1lOiJkZC1nZXN0dXJlcyIsdHJpZ2dlcjoiZGQtZHJhZyIsdWE6InRvdWNoRW5hYmxlZCJ9LHJlcXVpcmVzOlsiZGQtZHJhZyIsImV2ZW50LXN5bnRoZXRpYyIsImV2ZW50LWdlc3R1cmVzIl19LCJkZC1wbHVnaW4iOntvcHRpb25hbDpbImRkLWNvbnN0cmFpbiIsImRkLXByb3h5Il0scmVxdWlyZXM6WyJkZC1kcmFnIl19LCJkZC1wcm94eSI6e3JlcXVpcmVzOlsiZGQtZHJhZyJdfSwiZGQtc2Nyb2xsIjp7cmVxdWlyZXM6WyJkZC1kcmFnIl19LGRpYWw6e2xhbmc6WyJlbiIsImVzIiwiaHUiXSxyZXF1aXJlczpbIndpZGdldCIsImRkLWRyYWciLCJldmVudC1tb3VzZWVudGVyIiwiZXZlbnQtbW92ZSIsImV2ZW50LWtleSIsInRyYW5zaXRpb24iLCJpbnRsIl0sc2tpbm5hYmxlOiEwfSxkb206e3VzZTpbImRvbS1iYXNlIiwiZG9tLXNjcmVlbiIsImRvbS1zdHlsZSIsInNlbGVjdG9yLW5hdGl2ZSIsInNlbGVjdG9yIl19LCJkb20tYmFzZSI6e3JlcXVpcmVzOlsiZG9tLWNvcmUiXX0sImRvbS1jb3JlIjp7cmVxdWlyZXM6WyJvb3AiLCJmZWF0dXJlcyJdfSwiZG9tLXNjcmVlbiI6e3JlcXVpcmVzOlsiZG9tLWJhc2UiLCJkb20tc3R5bGUiXX0sImRvbS1zdHlsZSI6e3JlcXVpcmVzOlsiZG9tLWJhc2UiXX0sImRvbS1zdHlsZS1pZSI6e2NvbmRpdGlvbjp7bmFtZToiZG9tLXN0eWxlLWllIix0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuRmVhdHVyZXMudGVzdCxuPWUuRmVhdHVyZXMuYWRkLHI9ZS5jb25maWcud2luLGk9ZS5jb25maWcuZG9jLHM9ImRvY3VtZW50RWxlbWVudCIsbz0hMTtyZXR1cm4gbigic3R5bGUiLCJjb21wdXRlZFN0eWxlIix7dGVzdDpmdW5jdGlvbigpe3JldHVybiByJiYiZ2V0Q29tcHV0ZWRTdHlsZSJpbiByfX0pCixuKCJzdHlsZSIsIm9wYWNpdHkiLHt0ZXN0OmZ1bmN0aW9uKCl7cmV0dXJuIGkmJiJvcGFjaXR5ImluIGlbc10uc3R5bGV9fSksbz0hdCgic3R5bGUiLCJvcGFjaXR5IikmJiF0KCJzdHlsZSIsImNvbXB1dGVkU3R5bGUiKSxvfSx0cmlnZ2VyOiJkb20tc3R5bGUifSxyZXF1aXJlczpbImRvbS1zdHlsZSIsImNvbG9yLWJhc2UiXX0sZHVtcDp7cmVxdWlyZXM6WyJ5dWktYmFzZSJdfSxlZGl0b3I6e3VzZTpbImZyYW1lIiwiZWRpdG9yLXNlbGVjdGlvbiIsImV4ZWMtY29tbWFuZCIsImVkaXRvci1iYXNlIiwiZWRpdG9yLXBhcmEiLCJlZGl0b3ItYnIiLCJlZGl0b3ItYmlkaSIsImVkaXRvci10YWIiLCJjcmVhdGVsaW5rLWJhc2UiXX0sImVkaXRvci1iYXNlIjp7cmVxdWlyZXM6WyJiYXNlIiwiZnJhbWUiLCJub2RlIiwiZXhlYy1jb21tYW5kIiwiZWRpdG9yLXNlbGVjdGlvbiJdfSwiZWRpdG9yLWJpZGkiOntyZXF1aXJlczpbImVkaXRvci1iYXNlIl19LCJlZGl0b3ItYnIiOntyZXF1aXJlczpbImVkaXRvci1iYXNlIl19LCJlZGl0b3ItaW5saW5lIjp7cmVxdWlyZXM6WyJlZGl0b3ItYmFzZSIsImNvbnRlbnQtZWRpdGFibGUiXX0sImVkaXRvci1saXN0cyI6e3JlcXVpcmVzOlsiZWRpdG9yLWJhc2UiXX0sImVkaXRvci1wYXJhIjp7cmVxdWlyZXM6WyJlZGl0b3ItcGFyYS1iYXNlIl19LCJlZGl0b3ItcGFyYS1iYXNlIjp7cmVxdWlyZXM6WyJlZGl0b3ItYmFzZSJdfSwiZWRpdG9yLXBhcmEtaWUiOntjb25kaXRpb246e25hbWU6ImVkaXRvci1wYXJhLWllIix0cmlnZ2VyOiJlZGl0b3ItcGFyYSIsdWE6ImllIix3aGVuOiJpbnN0ZWFkIn0scmVxdWlyZXM6WyJlZGl0b3ItcGFyYS1iYXNlIl19LCJlZGl0b3Itc2VsZWN0aW9uIjp7cmVxdWlyZXM6WyJub2RlIl19LCJlZGl0b3ItdGFiIjp7cmVxdWlyZXM6WyJlZGl0b3ItYmFzZSJdfSxlc2NhcGU6e3JlcXVpcmVzOlsieXVpLWJhc2UiXX0sZXZlbnQ6e2FmdGVyOlsibm9kZS1iYXNlIl0sdXNlOlsiZXZlbnQtYmFzZSIsImV2ZW50LWRlbGVnYXRlIiwiZXZlbnQtc3ludGhldGljIiwiZXZlbnQtbW91c2V3aGVlbCIsImV2ZW50LW1vdXNlZW50ZXIiLCJldmVudC1rZXkiLCJldmVudC1mb2N1cyIsImV2ZW50LXJlc2l6ZSIsImV2ZW50LWhvdmVyIiwiZXZlbnQtb3V0c2lkZSIsImV2ZW50LXRvdWNoIiwiZXZlbnQtbW92ZSIsImV2ZW50LWZsaWNrIiwiZXZlbnQtdmFsdWVjaGFuZ2UiLCJldmVudC10YXAiXX0sImV2ZW50LWJhc2UiOnthZnRlcjpbIm5vZGUtYmFzZSJdLHJlcXVpcmVzOlsiZXZlbnQtY3VzdG9tLWJhc2UiXX0sImV2ZW50LWJhc2UtaWUiOnthZnRlcjpbImV2ZW50LWJhc2UiXSxjb25kaXRpb246e25hbWU6ImV2ZW50LWJhc2UtaWUiLHRlc3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb25maWcuZG9jJiZlLmNvbmZpZy5kb2MuaW1wbGVtZW50YXRpb247cmV0dXJuIHQmJiF0Lmhhc0ZlYXR1cmUoIkV2ZW50cyIsIjIuMCIpfSx0cmlnZ2VyOiJub2RlLWJhc2UifSxyZXF1aXJlczpbIm5vZGUtYmFzZSJdfSwiZXZlbnQtY29udGV4dG1lbnUiOntyZXF1aXJlczpbImV2ZW50LXN5bnRoZXRpYyIsImRvbS1zY3JlZW4iXX0sImV2ZW50LWN1c3RvbSI6e3VzZTpbImV2ZW50LWN1c3RvbS1iYXNlIiwiZXZlbnQtY3VzdG9tLWNvbXBsZXgiXX0sImV2ZW50LWN1c3RvbS1iYXNlIjp7cmVxdWlyZXM6WyJvb3AiXX0sImV2ZW50LWN1c3RvbS1jb21wbGV4Ijp7cmVxdWlyZXM6WyJldmVudC1jdXN0b20tYmFzZSJdfSwiZXZlbnQtZGVsZWdhdGUiOntyZXF1aXJlczpbIm5vZGUtYmFzZSJdfSwiZXZlbnQtZmxpY2siOntyZXF1aXJlczpbIm5vZGUtYmFzZSIsImV2ZW50LXRvdWNoIiwiZXZlbnQtc3ludGhldGljIl19LCJldmVudC1mb2N1cyI6e3JlcXVpcmVzOlsiZXZlbnQtc3ludGhldGljIl19LCJldmVudC1nZXN0dXJlcyI6e3VzZTpbImV2ZW50LWZsaWNrIiwiZXZlbnQtbW92ZSJdfSwiZXZlbnQtaG92ZXIiOntyZXF1aXJlczpbImV2ZW50LW1vdXNlZW50ZXIiXX0sImV2ZW50LWtleSI6e3JlcXVpcmVzOlsiZXZlbnQtc3ludGhldGljIl19LCJldmVudC1tb3VzZWVudGVyIjp7cmVxdWlyZXM6WyJldmVudC1zeW50aGV0aWMiXX0sImV2ZW50LW1vdXNld2hlZWwiOntyZXF1aXJlczpbIm5vZGUtYmFzZSJdfSwiZXZlbnQtbW92ZSI6e3JlcXVpcmVzOlsibm9kZS1iYXNlIiwiZXZlbnQtdG91Y2giLCJldmVudC1zeW50aGV0aWMiXX0sImV2ZW50LW91dHNpZGUiOntyZXF1aXJlczpbImV2ZW50LXN5bnRoZXRpYyJdfSwiZXZlbnQtcmVzaXplIjp7cmVxdWlyZXM6WyJub2RlLWJhc2UiLCJldmVudC1zeW50aGV0aWMiXX0sImV2ZW50LXNpbXVsYXRlIjp7cmVxdWlyZXM6WyJldmVudC1iYXNlIl19LCJldmVudC1zeW50aGV0aWMiOntyZXF1aXJlczpbIm5vZGUtYmFzZSIsImV2ZW50LWN1c3RvbS1jb21wbGV4Il19LCJldmVudC10YXAiOntyZXF1aXJlczpbIm5vZGUtYmFzZSIsImV2ZW50LWJhc2UiLCJldmVudC10b3VjaCIsImV2ZW50LXN5bnRoZXRpYyJdfSwiZXZlbnQtdG91Y2giOntyZXF1aXJlczpbIm5vZGUtYmFzZSJdfSwiZXZlbnQtdmFsdWVjaGFuZ2UiOntyZXF1aXJlczpbImV2ZW50LWZvY3VzIiwiZXZlbnQtc3ludGhldGljIl19LCJleGVjLWNvbW1hbmQiOntyZXF1aXJlczpbImZyYW1lIl19LGZlYXR1cmVzOntyZXF1aXJlczpbInl1aS1iYXNlIl19LGZpbGU6e3JlcXVpcmVzOlsiZmlsZS1mbGFzaCIsImZpbGUtaHRtbDUiXX0sImZpbGUtZmxhc2giOntyZXF1aXJlczpbImJhc2UiXX0sImZpbGUtaHRtbDUiOntyZXF1aXJlczpbImJhc2UiXX0sZnJhbWU6e3JlcXVpcmVzOlsiYmFzZSIsIm5vZGUiLCJwbHVnaW4iLCJzZWxlY3Rvci1jc3MzIiwieXVpLXRocm90dGxlIl19LCJnZXN0dXJlLXNpbXVsYXRlIjp7cmVxdWlyZXM6WyJhc3luYy1xdWV1ZSIsImV2ZW50LXNpbXVsYXRlIiwibm9kZS1zY3JlZW4iXX0sZ2V0OntyZXF1aXJlczpbInl1aS1iYXNlIl19LGdyYXBoaWNzOntyZXF1aXJlczpbIm5vZGUiLCJldmVudC1jdXN0b20iLCJwbHVnaW5ob3N0IiwibWF0cml4IiwiY2xhc3NuYW1lbWFuYWdlciJdfSwiZ3JhcGhpY3MtY2FudmFzIjp7Y29uZGl0aW9uOntuYW1lOiJncmFwaGljcy1jYW52YXMiLHRlc3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb25maWcuZG9jLG49ZS5jb25maWcuZGVmYXVsdEdyYXBoaWNFbmdpbmUmJmUuY29uZmlnLmRlZmF1bHRHcmFwaGljRW5naW5lPT0iY2FudmFzIixyPXQmJnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksaT10JiZ0LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoImh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjQmFzaWNTdHJ1Y3R1cmUiLCIxLjEiKTtyZXR1cm4oIWl8fG4pJiZyJiZyLmdldENvbnRleHQmJnIuZ2V0Q29udGV4dCgiMmQiKX0sdHJpZ2dlcjoiZ3JhcGhpY3MifSxyZXF1aXJlczpbImdyYXBoaWNzIiwiY29sb3ItYmFzZSJdfSwiZ3JhcGhpY3MtY2FudmFzLWRlZmF1bHQiOntjb25kaXRpb246e25hbWU6ImdyYXBoaWNzLWNhbnZhcy1kZWZhdWx0Iix0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLmRvYyxuPWUuY29uZmlnLmRlZmF1bHRHcmFwaGljRW5naW5lJiZlLmNvbmZpZy5kZWZhdWx0R3JhcGhpY0VuZ2luZT09ImNhbnZhcyIscj10JiZ0LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLGk9dCYmdC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0Jhc2ljU3RydWN0dXJlIiwiMS4xIik7cmV0dXJuKCFpfHxuKSYmciYmci5nZXRDb250ZXh0JiZyLmdldENvbnRleHQoIjJkIil9LHRyaWdnZXI6ImdyYXBoaWNzIn19LCJncmFwaGljcy1ncm91cCI6e3JlcXVpcmVzOlsiZ3JhcGhpY3MiXX0sImdyYXBoaWNzLXN2ZyI6e2NvbmRpdGlvbjp7bmFtZToiZ3JhcGhpY3Mtc3ZnIix0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLmRvYyxuPSFlLmNvbmZpZy5kZWZhdWx0R3JhcGhpY0VuZ2luZXx8ZS5jb25maWcuZGVmYXVsdEdyYXBoaWNFbmdpbmUhPSJjYW52YXMiLHI9dCYmdC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxpPXQmJnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgiaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNCYXNpY1N0cnVjdHVyZSIsIjEuMSIpO3JldHVybiBpJiYobnx8IXIpfSx0cmlnZ2VyOiJncmFwaGljcyJ9LHJlcXVpcmVzOlsiZ3JhcGhpY3MiXX0sImdyYXBoaWNzLXN2Zy1kZWZhdWx0Ijp7Y29uZGl0aW9uOntuYW1lOiJncmFwaGljcy1zdmctZGVmYXVsdCIsdGVzdDpmdW5jdGlvbihlKXt2YXIgdD1lLmNvbmZpZy5kb2Msbj0hZS5jb25maWcuZGVmYXVsdEdyYXBoaWNFbmdpbmV8fGUuY29uZmlnLmRlZmF1bHRHcmFwaGljRW5naW5lIT0iY2FudmFzIixyPXQmJnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksaT10JiZ0LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoImh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjQmFzaWNTdHJ1Y3R1cmUiLCIxLjEiKTtyZXR1cm4gaSYmKG58fCFyKX0sdHJpZ2dlcjoiZ3JhcGhpY3MifX0sImdyYXBoaWNzLXZtbCI6e2NvbmRpdGlvbjp7bmFtZToiZ3JhcGhpY3Mtdm1sIix0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLmRvYyxuPXQmJnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7cmV0dXJuIHQmJiF0LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoImh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjQmFzaWNTdHJ1Y3R1cmUiLCIxLjEiKSYmKCFufHwhbi5nZXRDb250ZXh0fHwhbi5nZXRDb250ZXh0KCIyZCIpKX0sdHJpZ2dlcjoiZ3JhcGhpY3MifSxyZXF1aXJlczpbImdyYXBoaWNzIiwiY29sb3ItYmFzZSJdfSwiZ3JhcGhpY3Mtdm1sLWRlZmF1bHQiOntjb25kaXRpb246e25hbWU6ImdyYXBoaWNzLXZtbC1kZWZhdWx0Iix0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLmRvYyxuPXQmJnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7cmV0dXJuIHQmJiF0LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoImh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjQmFzaWNTdHJ1Y3R1cmUiLCIxLjEiKSYmKCFufHwhbi5nZXRDb250ZXh0fHwhbi5nZXRDb250ZXh0KCIyZCIpKX0sdHJpZ2dlcjoiZ3JhcGhpY3MifX0saGFuZGxlYmFyczp7dXNlOlsiaGFuZGxlYmFycy1jb21waWxlciJdfSwiaGFuZGxlYmFycy1iYXNlIjp7cmVxdWlyZXM6W119LCJoYW5kbGViYXJzLWNvbXBpbGVyIjp7cmVxdWlyZXM6WyJoYW5kbGViYXJzLWJhc2UiXX0saGlnaGxpZ2h0Ont1c2U6WyJoaWdobGlnaHQtYmFzZSIsImhpZ2hsaWdodC1hY2NlbnRmb2xkIl19LCJoaWdobGlnaHQtYWNjZW50Zm9sZCI6e3JlcXVpcmVzOlsiaGlnaGxpZ2h0LWJhc2UiLCJ0ZXh0LWFjY2VudGZvbGQiXX0sImhpZ2hsaWdodC1iYXNlIjp7cmVxdWlyZXM6WyJhcnJheS1leHRyYXMiLCJjbGFzc25hbWVtYW5hZ2VyIiwiZXNjYXBlIiwidGV4dC13b3JkYnJlYWsiXX0saGlzdG9yeTp7dXNlOlsiaGlzdG9yeS1iYXNlIiwiaGlzdG9yeS1oYXNoIiwiaGlzdG9yeS1odG1sNSJdfSwiaGlzdG9yeS1iYXNlIjp7cmVxdWlyZXM6WyJldmVudC1jdXN0b20tY29tcGxleCJdfSwiaGlzdG9yeS1oYXNoIjp7YWZ0ZXI6WyJoaXN0b3J5LWh0bWw1Il0scmVxdWlyZXM6WyJldmVudC1zeW50aGV0aWMiLCJoaXN0b3J5LWJhc2UiLCJ5dWktbGF0ZXIiXX0sImhpc3RvcnktaGFzaC1pZSI6e2NvbmRpdGlvbjp7bmFtZToiaGlzdG9yeS1oYXNoLWllIix0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLmRvYyYmZS5jb25maWcuZG9jLmRvY3VtZW50TW9kZTtyZXR1cm4gZS5VQS5pZSYmKCEoIm9uaGFzaGNoYW5nZSJpbiBlLmNvbmZpZy53aW4pfHwhdHx8dDw4KX0sdHJpZ2dlcjoiaGlzdG9yeS1oYXNoIn0scmVxdWlyZXM6WyJoaXN0b3J5LWhhc2giLCJub2RlLWJhc2UiXX0sImhpc3RvcnktaHRtbDUiOntvcHRpb25hbDpbImpzb24iXSxyZXF1aXJlczpbImV2ZW50LWJhc2UiLCJoaXN0b3J5LWJhc2UiLCJub2RlLWJhc2UiCl19LGltYWdlbG9hZGVyOntyZXF1aXJlczpbImJhc2UtYmFzZSIsIm5vZGUtc3R5bGUiLCJub2RlLXNjcmVlbiJdfSxpbnRsOntyZXF1aXJlczpbImludGwtYmFzZSIsImV2ZW50LWN1c3RvbSJdfSwiaW50bC1iYXNlIjp7cmVxdWlyZXM6WyJ5dWktYmFzZSJdfSxpbzp7dXNlOlsiaW8tYmFzZSIsImlvLXhkciIsImlvLWZvcm0iLCJpby11cGxvYWQtaWZyYW1lIiwiaW8tcXVldWUiXX0sImlvLWJhc2UiOntyZXF1aXJlczpbImV2ZW50LWN1c3RvbS1iYXNlIiwicXVlcnlzdHJpbmctc3RyaW5naWZ5LXNpbXBsZSJdfSwiaW8tZm9ybSI6e3JlcXVpcmVzOlsiaW8tYmFzZSIsIm5vZGUtYmFzZSJdfSwiaW8tbm9kZWpzIjp7Y29uZGl0aW9uOntuYW1lOiJpby1ub2RlanMiLHRyaWdnZXI6ImlvLWJhc2UiLHVhOiJub2RlanMifSxyZXF1aXJlczpbImlvLWJhc2UiXX0sImlvLXF1ZXVlIjp7cmVxdWlyZXM6WyJpby1iYXNlIiwicXVldWUtcHJvbW90ZSJdfSwiaW8tdXBsb2FkLWlmcmFtZSI6e3JlcXVpcmVzOlsiaW8tYmFzZSIsIm5vZGUtYmFzZSJdfSwiaW8teGRyIjp7cmVxdWlyZXM6WyJpby1iYXNlIiwiZGF0YXR5cGUteG1sLXBhcnNlIl19LGpzb246e3VzZTpbImpzb24tcGFyc2UiLCJqc29uLXN0cmluZ2lmeSJdfSwianNvbi1wYXJzZSI6e3JlcXVpcmVzOlsieXVpLWJhc2UiXX0sImpzb24tcGFyc2Utc2hpbSI6e2NvbmRpdGlvbjp7bmFtZToianNvbi1wYXJzZS1zaGltIix0ZXN0OmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGkoZSx0KXtyZXR1cm4gZT09PSJvayI/ITA6dH12YXIgdD1lLmNvbmZpZy5nbG9iYWwuSlNPTixuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KT09PSJbb2JqZWN0IEpTT05dIiYmdCxyPWUuY29uZmlnLnVzZU5hdGl2ZUpTT05QYXJzZSE9PSExJiYhIW47aWYocil0cnl7cj1uLnBhcnNlKCd7Im9rIjpmYWxzZX0nLGkpLm9rfWNhdGNoKHMpe3I9ITF9cmV0dXJuIXJ9LHRyaWdnZXI6Impzb24tcGFyc2UifSxyZXF1aXJlczpbImpzb24tcGFyc2UiXX0sImpzb24tc3RyaW5naWZ5Ijp7cmVxdWlyZXM6WyJ5dWktYmFzZSJdfSwianNvbi1zdHJpbmdpZnktc2hpbSI6e2NvbmRpdGlvbjp7bmFtZToianNvbi1zdHJpbmdpZnktc2hpbSIsdGVzdDpmdW5jdGlvbihlKXt2YXIgdD1lLmNvbmZpZy5nbG9iYWwuSlNPTixuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KT09PSJbb2JqZWN0IEpTT05dIiYmdCxyPWUuY29uZmlnLnVzZU5hdGl2ZUpTT05TdHJpbmdpZnkhPT0hMSYmISFuO2lmKHIpdHJ5e3I9IjAiPT09bi5zdHJpbmdpZnkoMCl9Y2F0Y2goaSl7cj0hMX1yZXR1cm4hcn0sdHJpZ2dlcjoianNvbi1zdHJpbmdpZnkifSxyZXF1aXJlczpbImpzb24tc3RyaW5naWZ5Il19LGpzb25wOntyZXF1aXJlczpbImdldCIsIm9vcCJdfSwianNvbnAtdXJsIjp7cmVxdWlyZXM6WyJqc29ucCJdfSwibGF6eS1tb2RlbC1saXN0Ijp7cmVxdWlyZXM6WyJtb2RlbC1saXN0Il19LGxvYWRlcjp7dXNlOlsibG9hZGVyLWJhc2UiLCJsb2FkZXItcm9sbHVwIiwibG9hZGVyLXl1aTMiXX0sImxvYWRlci1iYXNlIjp7cmVxdWlyZXM6WyJnZXQiLCJmZWF0dXJlcyJdfSwibG9hZGVyLXJvbGx1cCI6e3JlcXVpcmVzOlsibG9hZGVyLWJhc2UiXX0sImxvYWRlci15dWkzIjp7cmVxdWlyZXM6WyJsb2FkZXItYmFzZSJdfSxtYXRyaXg6e3JlcXVpcmVzOlsieXVpLWJhc2UiXX0sbW9kZWw6e3JlcXVpcmVzOlsiYmFzZS1idWlsZCIsImVzY2FwZSIsImpzb24tcGFyc2UiXX0sIm1vZGVsLWxpc3QiOntyZXF1aXJlczpbImFycmF5LWV4dHJhcyIsImFycmF5LWludm9rZSIsImFycmF5bGlzdCIsImJhc2UtYnVpbGQiLCJlc2NhcGUiLCJqc29uLXBhcnNlIiwibW9kZWwiXX0sIm1vZGVsLXN5bmMtbG9jYWwiOntyZXF1aXJlczpbIm1vZGVsIiwianNvbi1zdHJpbmdpZnkiXX0sIm1vZGVsLXN5bmMtcmVzdCI6e3JlcXVpcmVzOlsibW9kZWwiLCJpby1iYXNlIiwianNvbi1zdHJpbmdpZnkiXX0sbm9kZTp7dXNlOlsibm9kZS1iYXNlIiwibm9kZS1ldmVudC1kZWxlZ2F0ZSIsIm5vZGUtcGx1Z2luaG9zdCIsIm5vZGUtc2NyZWVuIiwibm9kZS1zdHlsZSJdfSwibm9kZS1iYXNlIjp7cmVxdWlyZXM6WyJldmVudC1iYXNlIiwibm9kZS1jb3JlIiwiZG9tLWJhc2UiLCJkb20tc3R5bGUiXX0sIm5vZGUtY29yZSI6e3JlcXVpcmVzOlsiZG9tLWNvcmUiLCJzZWxlY3RvciJdfSwibm9kZS1ldmVudC1kZWxlZ2F0ZSI6e3JlcXVpcmVzOlsibm9kZS1iYXNlIiwiZXZlbnQtZGVsZWdhdGUiXX0sIm5vZGUtZXZlbnQtaHRtbDUiOntyZXF1aXJlczpbIm5vZGUtYmFzZSJdfSwibm9kZS1ldmVudC1zaW11bGF0ZSI6e3JlcXVpcmVzOlsibm9kZS1iYXNlIiwiZXZlbnQtc2ltdWxhdGUiLCJnZXN0dXJlLXNpbXVsYXRlIl19LCJub2RlLWZsaWNrIjp7cmVxdWlyZXM6WyJjbGFzc25hbWVtYW5hZ2VyIiwidHJhbnNpdGlvbiIsImV2ZW50LWZsaWNrIiwicGx1Z2luIl0sc2tpbm5hYmxlOiEwfSwibm9kZS1mb2N1c21hbmFnZXIiOntyZXF1aXJlczpbImF0dHJpYnV0ZSIsIm5vZGUiLCJwbHVnaW4iLCJub2RlLWV2ZW50LXNpbXVsYXRlIiwiZXZlbnQta2V5IiwiZXZlbnQtZm9jdXMiXX0sIm5vZGUtbG9hZCI6e3JlcXVpcmVzOlsibm9kZS1iYXNlIiwiaW8tYmFzZSJdfSwibm9kZS1tZW51bmF2Ijp7cmVxdWlyZXM6WyJub2RlIiwiY2xhc3NuYW1lbWFuYWdlciIsInBsdWdpbiIsIm5vZGUtZm9jdXNtYW5hZ2VyIl0sc2tpbm5hYmxlOiEwfSwibm9kZS1wbHVnaW5ob3N0Ijp7cmVxdWlyZXM6WyJub2RlLWJhc2UiLCJwbHVnaW5ob3N0Il19LCJub2RlLXNjcmVlbiI6e3JlcXVpcmVzOlsiZG9tLXNjcmVlbiIsIm5vZGUtYmFzZSJdfSwibm9kZS1zY3JvbGwtaW5mbyI6e3JlcXVpcmVzOlsiYXJyYXktZXh0cmFzIiwiYmFzZS1idWlsZCIsImV2ZW50LXJlc2l6ZSIsIm5vZGUtcGx1Z2luaG9zdCIsInBsdWdpbiIsInNlbGVjdG9yIl19LCJub2RlLXN0eWxlIjp7cmVxdWlyZXM6WyJkb20tc3R5bGUiLCJub2RlLWJhc2UiXX0sb29wOntyZXF1aXJlczpbInl1aS1iYXNlIl19LG92ZXJsYXk6e3JlcXVpcmVzOlsid2lkZ2V0Iiwid2lkZ2V0LXN0ZG1vZCIsIndpZGdldC1wb3NpdGlvbiIsIndpZGdldC1wb3NpdGlvbi1hbGlnbiIsIndpZGdldC1zdGFjayIsIndpZGdldC1wb3NpdGlvbi1jb25zdHJhaW4iXSxza2lubmFibGU6ITB9LHBhZ2luYXRvcjp7cmVxdWlyZXM6WyJwYWdpbmF0b3ItY29yZSJdfSwicGFnaW5hdG9yLWNvcmUiOntyZXF1aXJlczpbImJhc2UiXX0sInBhZ2luYXRvci11cmwiOntyZXF1aXJlczpbInBhZ2luYXRvciJdfSxwYW5lbDp7cmVxdWlyZXM6WyJ3aWRnZXQiLCJ3aWRnZXQtYXV0b2hpZGUiLCJ3aWRnZXQtYnV0dG9ucyIsIndpZGdldC1tb2RhbGl0eSIsIndpZGdldC1wb3NpdGlvbiIsIndpZGdldC1wb3NpdGlvbi1hbGlnbiIsIndpZGdldC1wb3NpdGlvbi1jb25zdHJhaW4iLCJ3aWRnZXQtc3RhY2siLCJ3aWRnZXQtc3RkbW9kIl0sc2tpbm5hYmxlOiEwfSxwYXJhbGxlbDp7cmVxdWlyZXM6WyJ5dWktYmFzZSJdfSxwamF4OntyZXF1aXJlczpbInBqYXgtYmFzZSIsInBqYXgtY29udGVudCJdfSwicGpheC1iYXNlIjp7cmVxdWlyZXM6WyJjbGFzc25hbWVtYW5hZ2VyIiwibm9kZS1ldmVudC1kZWxlZ2F0ZSIsInJvdXRlciJdfSwicGpheC1jb250ZW50Ijp7cmVxdWlyZXM6WyJpby1iYXNlIiwibm9kZS1iYXNlIiwicm91dGVyIl19LCJwamF4LXBsdWdpbiI6e3JlcXVpcmVzOlsibm9kZS1wbHVnaW5ob3N0IiwicGpheCIsInBsdWdpbiJdfSxwbHVnaW46e3JlcXVpcmVzOlsiYmFzZS1iYXNlIl19LHBsdWdpbmhvc3Q6e3VzZTpbInBsdWdpbmhvc3QtYmFzZSIsInBsdWdpbmhvc3QtY29uZmlnIl19LCJwbHVnaW5ob3N0LWJhc2UiOntyZXF1aXJlczpbInl1aS1iYXNlIl19LCJwbHVnaW5ob3N0LWNvbmZpZyI6e3JlcXVpcmVzOlsicGx1Z2luaG9zdC1iYXNlIl19LHByb21pc2U6e3JlcXVpcmVzOlsidGltZXJzIl19LHF1ZXJ5c3RyaW5nOnt1c2U6WyJxdWVyeXN0cmluZy1wYXJzZSIsInF1ZXJ5c3RyaW5nLXN0cmluZ2lmeSJdfSwicXVlcnlzdHJpbmctcGFyc2UiOntyZXF1aXJlczpbInl1aS1iYXNlIiwiYXJyYXktZXh0cmFzIl19LCJxdWVyeXN0cmluZy1wYXJzZS1zaW1wbGUiOntyZXF1aXJlczpbInl1aS1iYXNlIl19LCJxdWVyeXN0cmluZy1zdHJpbmdpZnkiOntyZXF1aXJlczpbInl1aS1iYXNlIl19LCJxdWVyeXN0cmluZy1zdHJpbmdpZnktc2ltcGxlIjp7cmVxdWlyZXM6WyJ5dWktYmFzZSJdfSwicXVldWUtcHJvbW90ZSI6e3JlcXVpcmVzOlsieXVpLWJhc2UiXX0sInJhbmdlLXNsaWRlciI6e3JlcXVpcmVzOlsic2xpZGVyLWJhc2UiLCJzbGlkZXItdmFsdWUtcmFuZ2UiLCJjbGlja2FibGUtcmFpbCJdfSxyZWNvcmRzZXQ6e3VzZTpbInJlY29yZHNldC1iYXNlIiwicmVjb3Jkc2V0LXNvcnQiLCJyZWNvcmRzZXQtZmlsdGVyIiwicmVjb3Jkc2V0LWluZGV4ZXIiXX0sInJlY29yZHNldC1iYXNlIjp7cmVxdWlyZXM6WyJiYXNlIiwiYXJyYXlsaXN0Il19LCJyZWNvcmRzZXQtZmlsdGVyIjp7cmVxdWlyZXM6WyJyZWNvcmRzZXQtYmFzZSIsImFycmF5LWV4dHJhcyIsInBsdWdpbiJdfSwicmVjb3Jkc2V0LWluZGV4ZXIiOntyZXF1aXJlczpbInJlY29yZHNldC1iYXNlIiwicGx1Z2luIl19LCJyZWNvcmRzZXQtc29ydCI6e3JlcXVpcmVzOlsiYXJyYXlzb3J0IiwicmVjb3Jkc2V0LWJhc2UiLCJwbHVnaW4iXX0scmVzaXplOnt1c2U6WyJyZXNpemUtYmFzZSIsInJlc2l6ZS1wcm94eSIsInJlc2l6ZS1jb25zdHJhaW4iXX0sInJlc2l6ZS1iYXNlIjp7cmVxdWlyZXM6WyJiYXNlIiwid2lkZ2V0IiwiZXZlbnQiLCJvb3AiLCJkZC1kcmFnIiwiZGQtZGVsZWdhdGUiLCJkZC1kcm9wIl0sc2tpbm5hYmxlOiEwfSwicmVzaXplLWNvbnN0cmFpbiI6e3JlcXVpcmVzOlsicGx1Z2luIiwicmVzaXplLWJhc2UiXX0sInJlc2l6ZS1wbHVnaW4iOntvcHRpb25hbDpbInJlc2l6ZS1jb25zdHJhaW4iXSxyZXF1aXJlczpbInJlc2l6ZS1iYXNlIiwicGx1Z2luIl19LCJyZXNpemUtcHJveHkiOntyZXF1aXJlczpbInBsdWdpbiIsInJlc2l6ZS1iYXNlIl19LHJvdXRlcjp7b3B0aW9uYWw6WyJxdWVyeXN0cmluZy1wYXJzZSJdLHJlcXVpcmVzOlsiYXJyYXktZXh0cmFzIiwiYmFzZS1idWlsZCIsImhpc3RvcnkiXX0sc2Nyb2xsdmlldzp7cmVxdWlyZXM6WyJzY3JvbGx2aWV3LWJhc2UiLCJzY3JvbGx2aWV3LXNjcm9sbGJhcnMiXX0sInNjcm9sbHZpZXctYmFzZSI6e3JlcXVpcmVzOlsid2lkZ2V0IiwiZXZlbnQtZ2VzdHVyZXMiLCJldmVudC1tb3VzZXdoZWVsIiwidHJhbnNpdGlvbiJdLHNraW5uYWJsZTohMH0sInNjcm9sbHZpZXctYmFzZS1pZSI6e2NvbmRpdGlvbjp7bmFtZToic2Nyb2xsdmlldy1iYXNlLWllIix0cmlnZ2VyOiJzY3JvbGx2aWV3LWJhc2UiLHVhOiJpZSJ9LHJlcXVpcmVzOlsic2Nyb2xsdmlldy1iYXNlIl19LCJzY3JvbGx2aWV3LWxpc3QiOntyZXF1aXJlczpbInBsdWdpbiIsImNsYXNzbmFtZW1hbmFnZXIiXSxza2lubmFibGU6ITB9LCJzY3JvbGx2aWV3LXBhZ2luYXRvciI6e3JlcXVpcmVzOlsicGx1Z2luIiwiY2xhc3NuYW1lbWFuYWdlciJdfSwic2Nyb2xsdmlldy1zY3JvbGxiYXJzIjp7cmVxdWlyZXM6WyJjbGFzc25hbWVtYW5hZ2VyIiwidHJhbnNpdGlvbiIsInBsdWdpbiJdLHNraW5uYWJsZTohMH0sc2VsZWN0b3I6e3JlcXVpcmVzOlsic2VsZWN0b3ItbmF0aXZlIl19LCJzZWxlY3Rvci1jc3MyIjp7Y29uZGl0aW9uOntuYW1lOiJzZWxlY3Rvci1jc3MyIix0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLmRvYyxuPXQmJiEoInF1ZXJ5U2VsZWN0b3JBbGwiaW4gdCk7cmV0dXJuIG59LHRyaWdnZXI6InNlbGVjdG9yIn0scmVxdWlyZXM6WyJzZWxlY3Rvci1uYXRpdmUiXX0sInNlbGVjdG9yLWNzczMiOntyZXF1aXJlczpbInNlbGVjdG9yLW5hdGl2ZSIsInNlbGVjdG9yLWNzczIiXX0sInNlbGVjdG9yLW5hdGl2ZSI6e3JlcXVpcmVzOlsiZG9tLWJhc2UiXX0sInNlcmllcy1hcmVhIgo6e3JlcXVpcmVzOlsic2VyaWVzLWNhcnRlc2lhbiIsInNlcmllcy1maWxsLXV0aWwiXX0sInNlcmllcy1hcmVhLXN0YWNrZWQiOntyZXF1aXJlczpbInNlcmllcy1zdGFja2VkIiwic2VyaWVzLWFyZWEiXX0sInNlcmllcy1hcmVhc3BsaW5lIjp7cmVxdWlyZXM6WyJzZXJpZXMtYXJlYSIsInNlcmllcy1jdXJ2ZS11dGlsIl19LCJzZXJpZXMtYXJlYXNwbGluZS1zdGFja2VkIjp7cmVxdWlyZXM6WyJzZXJpZXMtc3RhY2tlZCIsInNlcmllcy1hcmVhc3BsaW5lIl19LCJzZXJpZXMtYmFyIjp7cmVxdWlyZXM6WyJzZXJpZXMtbWFya2VyIiwic2VyaWVzLWhpc3RvZ3JhbS1iYXNlIl19LCJzZXJpZXMtYmFyLXN0YWNrZWQiOntyZXF1aXJlczpbInNlcmllcy1zdGFja2VkIiwic2VyaWVzLWJhciJdfSwic2VyaWVzLWJhc2UiOntyZXF1aXJlczpbImdyYXBoaWNzIiwiYXhpcy1iYXNlIl19LCJzZXJpZXMtY2FuZGxlc3RpY2siOntyZXF1aXJlczpbInNlcmllcy1yYW5nZSJdfSwic2VyaWVzLWNhcnRlc2lhbiI6e3JlcXVpcmVzOlsic2VyaWVzLWJhc2UiXX0sInNlcmllcy1jb2x1bW4iOntyZXF1aXJlczpbInNlcmllcy1tYXJrZXIiLCJzZXJpZXMtaGlzdG9ncmFtLWJhc2UiXX0sInNlcmllcy1jb2x1bW4tc3RhY2tlZCI6e3JlcXVpcmVzOlsic2VyaWVzLXN0YWNrZWQiLCJzZXJpZXMtY29sdW1uIl19LCJzZXJpZXMtY29tYm8iOntyZXF1aXJlczpbInNlcmllcy1jYXJ0ZXNpYW4iLCJzZXJpZXMtbGluZS11dGlsIiwic2VyaWVzLXBsb3QtdXRpbCIsInNlcmllcy1maWxsLXV0aWwiXX0sInNlcmllcy1jb21iby1zdGFja2VkIjp7cmVxdWlyZXM6WyJzZXJpZXMtc3RhY2tlZCIsInNlcmllcy1jb21ibyJdfSwic2VyaWVzLWNvbWJvc3BsaW5lIjp7cmVxdWlyZXM6WyJzZXJpZXMtY29tYm8iLCJzZXJpZXMtY3VydmUtdXRpbCJdfSwic2VyaWVzLWNvbWJvc3BsaW5lLXN0YWNrZWQiOntyZXF1aXJlczpbInNlcmllcy1jb21iby1zdGFja2VkIiwic2VyaWVzLWN1cnZlLXV0aWwiXX0sInNlcmllcy1jdXJ2ZS11dGlsIjp7fSwic2VyaWVzLWZpbGwtdXRpbCI6e30sInNlcmllcy1oaXN0b2dyYW0tYmFzZSI6e3JlcXVpcmVzOlsic2VyaWVzLWNhcnRlc2lhbiIsInNlcmllcy1wbG90LXV0aWwiXX0sInNlcmllcy1saW5lIjp7cmVxdWlyZXM6WyJzZXJpZXMtY2FydGVzaWFuIiwic2VyaWVzLWxpbmUtdXRpbCJdfSwic2VyaWVzLWxpbmUtc3RhY2tlZCI6e3JlcXVpcmVzOlsic2VyaWVzLXN0YWNrZWQiLCJzZXJpZXMtbGluZSJdfSwic2VyaWVzLWxpbmUtdXRpbCI6e30sInNlcmllcy1tYXJrZXIiOntyZXF1aXJlczpbInNlcmllcy1jYXJ0ZXNpYW4iLCJzZXJpZXMtcGxvdC11dGlsIl19LCJzZXJpZXMtbWFya2VyLXN0YWNrZWQiOntyZXF1aXJlczpbInNlcmllcy1zdGFja2VkIiwic2VyaWVzLW1hcmtlciJdfSwic2VyaWVzLW9obGMiOntyZXF1aXJlczpbInNlcmllcy1yYW5nZSJdfSwic2VyaWVzLXBpZSI6e3JlcXVpcmVzOlsic2VyaWVzLWJhc2UiLCJzZXJpZXMtcGxvdC11dGlsIl19LCJzZXJpZXMtcGxvdC11dGlsIjp7fSwic2VyaWVzLXJhbmdlIjp7cmVxdWlyZXM6WyJzZXJpZXMtY2FydGVzaWFuIl19LCJzZXJpZXMtc3BsaW5lIjp7cmVxdWlyZXM6WyJzZXJpZXMtbGluZSIsInNlcmllcy1jdXJ2ZS11dGlsIl19LCJzZXJpZXMtc3BsaW5lLXN0YWNrZWQiOntyZXF1aXJlczpbInNlcmllcy1zdGFja2VkIiwic2VyaWVzLXNwbGluZSJdfSwic2VyaWVzLXN0YWNrZWQiOntyZXF1aXJlczpbImF4aXMtc3RhY2tlZCJdfSwic2hpbS1wbHVnaW4iOntyZXF1aXJlczpbIm5vZGUtc3R5bGUiLCJub2RlLXBsdWdpbmhvc3QiXX0sc2xpZGVyOnt1c2U6WyJzbGlkZXItYmFzZSIsInNsaWRlci12YWx1ZS1yYW5nZSIsImNsaWNrYWJsZS1yYWlsIiwicmFuZ2Utc2xpZGVyIl19LCJzbGlkZXItYmFzZSI6e3JlcXVpcmVzOlsid2lkZ2V0IiwiZGQtY29uc3RyYWluIiwiZXZlbnQta2V5Il0sc2tpbm5hYmxlOiEwfSwic2xpZGVyLXZhbHVlLXJhbmdlIjp7cmVxdWlyZXM6WyJzbGlkZXItYmFzZSJdfSxzb3J0YWJsZTp7cmVxdWlyZXM6WyJkZC1kZWxlZ2F0ZSIsImRkLWRyb3AtcGx1Z2luIiwiZGQtcHJveHkiXX0sInNvcnRhYmxlLXNjcm9sbCI6e3JlcXVpcmVzOlsiZGQtc2Nyb2xsIiwic29ydGFibGUiXX0sc3R5bGVzaGVldDp7cmVxdWlyZXM6WyJ5dWktYmFzZSJdfSxzdWJzdGl0dXRlOntvcHRpb25hbDpbImR1bXAiXSxyZXF1aXJlczpbInl1aS1iYXNlIl19LHN3Zjp7cmVxdWlyZXM6WyJldmVudC1jdXN0b20iLCJub2RlIiwic3dmZGV0ZWN0IiwiZXNjYXBlIl19LHN3ZmRldGVjdDp7cmVxdWlyZXM6WyJ5dWktYmFzZSJdfSx0YWJ2aWV3OntyZXF1aXJlczpbIndpZGdldCIsIndpZGdldC1wYXJlbnQiLCJ3aWRnZXQtY2hpbGQiLCJ0YWJ2aWV3LWJhc2UiLCJub2RlLXBsdWdpbmhvc3QiLCJub2RlLWZvY3VzbWFuYWdlciJdLHNraW5uYWJsZTohMH0sInRhYnZpZXctYmFzZSI6e3JlcXVpcmVzOlsibm9kZS1ldmVudC1kZWxlZ2F0ZSIsImNsYXNzbmFtZW1hbmFnZXIiXX0sInRhYnZpZXctcGx1Z2luIjp7cmVxdWlyZXM6WyJ0YWJ2aWV3LWJhc2UiXX0sdGVtcGxhdGU6e3VzZTpbInRlbXBsYXRlLWJhc2UiLCJ0ZW1wbGF0ZS1taWNybyJdfSwidGVtcGxhdGUtYmFzZSI6e3JlcXVpcmVzOlsieXVpLWJhc2UiXX0sInRlbXBsYXRlLW1pY3JvIjp7cmVxdWlyZXM6WyJlc2NhcGUiXX0sdGVzdDp7cmVxdWlyZXM6WyJldmVudC1zaW11bGF0ZSIsImV2ZW50LWN1c3RvbSIsImpzb24tc3RyaW5naWZ5Il19LCJ0ZXN0LWNvbnNvbGUiOntyZXF1aXJlczpbImNvbnNvbGUtZmlsdGVycyIsInRlc3QiLCJhcnJheS1leHRyYXMiXSxza2lubmFibGU6ITB9LHRleHQ6e3VzZTpbInRleHQtYWNjZW50Zm9sZCIsInRleHQtd29yZGJyZWFrIl19LCJ0ZXh0LWFjY2VudGZvbGQiOntyZXF1aXJlczpbImFycmF5LWV4dHJhcyIsInRleHQtZGF0YS1hY2NlbnRmb2xkIl19LCJ0ZXh0LWRhdGEtYWNjZW50Zm9sZCI6e3JlcXVpcmVzOlsieXVpLWJhc2UiXX0sInRleHQtZGF0YS13b3JkYnJlYWsiOntyZXF1aXJlczpbInl1aS1iYXNlIl19LCJ0ZXh0LXdvcmRicmVhayI6e3JlcXVpcmVzOlsiYXJyYXktZXh0cmFzIiwidGV4dC1kYXRhLXdvcmRicmVhayJdfSx0aW1lcnM6e3JlcXVpcmVzOlsieXVpLWJhc2UiXX0sdHJhbnNpdGlvbjp7cmVxdWlyZXM6WyJub2RlLXN0eWxlIl19LCJ0cmFuc2l0aW9uLXRpbWVyIjp7Y29uZGl0aW9uOntuYW1lOiJ0cmFuc2l0aW9uLXRpbWVyIix0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLmRvYyxuPXQ/dC5kb2N1bWVudEVsZW1lbnQ6bnVsbCxyPSEwO3JldHVybiBuJiZuLnN0eWxlJiYocj0hKCJNb3pUcmFuc2l0aW9uImluIG4uc3R5bGV8fCJXZWJraXRUcmFuc2l0aW9uImluIG4uc3R5bGV8fCJ0cmFuc2l0aW9uImluIG4uc3R5bGUpKSxyfSx0cmlnZ2VyOiJ0cmFuc2l0aW9uIn0scmVxdWlyZXM6WyJ0cmFuc2l0aW9uIl19LHRyZWU6e3JlcXVpcmVzOlsiYmFzZS1idWlsZCIsInRyZWUtbm9kZSJdfSwidHJlZS1sYWJlbGFibGUiOntyZXF1aXJlczpbInRyZWUiXX0sInRyZWUtbGF6eSI6e3JlcXVpcmVzOlsiYmFzZS1wbHVnaW5ob3N0IiwicGx1Z2luIiwidHJlZSJdfSwidHJlZS1ub2RlIjp7fSwidHJlZS1vcGVuYWJsZSI6e3JlcXVpcmVzOlsidHJlZSJdfSwidHJlZS1zZWxlY3RhYmxlIjp7cmVxdWlyZXM6WyJ0cmVlIl19LCJ0cmVlLXNvcnRhYmxlIjp7cmVxdWlyZXM6WyJ0cmVlIl19LHVwbG9hZGVyOntyZXF1aXJlczpbInVwbG9hZGVyLWh0bWw1IiwidXBsb2FkZXItZmxhc2giXX0sInVwbG9hZGVyLWZsYXNoIjp7cmVxdWlyZXM6WyJzd2ZkZXRlY3QiLCJlc2NhcGUiLCJ3aWRnZXQiLCJiYXNlIiwiY3NzYnV0dG9uIiwibm9kZSIsImV2ZW50LWN1c3RvbSIsInVwbG9hZGVyLXF1ZXVlIl19LCJ1cGxvYWRlci1odG1sNSI6e3JlcXVpcmVzOlsid2lkZ2V0Iiwibm9kZS1ldmVudC1zaW11bGF0ZSIsImZpbGUtaHRtbDUiLCJ1cGxvYWRlci1xdWV1ZSJdfSwidXBsb2FkZXItcXVldWUiOntyZXF1aXJlczpbImJhc2UiXX0sdmlldzp7cmVxdWlyZXM6WyJiYXNlLWJ1aWxkIiwibm9kZS1ldmVudC1kZWxlZ2F0ZSJdfSwidmlldy1ub2RlLW1hcCI6e3JlcXVpcmVzOlsidmlldyJdfSx3aWRnZXQ6e3VzZTpbIndpZGdldC1iYXNlIiwid2lkZ2V0LWh0bWxwYXJzZXIiLCJ3aWRnZXQtc2tpbiIsIndpZGdldC11aWV2ZW50cyJdfSwid2lkZ2V0LWFuaW0iOntyZXF1aXJlczpbImFuaW0tYmFzZSIsInBsdWdpbiIsIndpZGdldCJdfSwid2lkZ2V0LWF1dG9oaWRlIjp7cmVxdWlyZXM6WyJiYXNlLWJ1aWxkIiwiZXZlbnQta2V5IiwiZXZlbnQtb3V0c2lkZSIsIndpZGdldCJdfSwid2lkZ2V0LWJhc2UiOntyZXF1aXJlczpbImF0dHJpYnV0ZSIsImJhc2UtYmFzZSIsImJhc2UtcGx1Z2luaG9zdCIsImNsYXNzbmFtZW1hbmFnZXIiLCJldmVudC1mb2N1cyIsIm5vZGUtYmFzZSIsIm5vZGUtc3R5bGUiXSxza2lubmFibGU6ITB9LCJ3aWRnZXQtYmFzZS1pZSI6e2NvbmRpdGlvbjp7bmFtZToid2lkZ2V0LWJhc2UtaWUiLHRyaWdnZXI6IndpZGdldC1iYXNlIix1YToiaWUifSxyZXF1aXJlczpbIndpZGdldC1iYXNlIl19LCJ3aWRnZXQtYnV0dG9ucyI6e3JlcXVpcmVzOlsiYnV0dG9uLXBsdWdpbiIsImNzc2J1dHRvbiIsIndpZGdldC1zdGRtb2QiXX0sIndpZGdldC1jaGlsZCI6e3JlcXVpcmVzOlsiYmFzZS1idWlsZCIsIndpZGdldCJdfSwid2lkZ2V0LWh0bWxwYXJzZXIiOntyZXF1aXJlczpbIndpZGdldC1iYXNlIl19LCJ3aWRnZXQtbW9kYWxpdHkiOntyZXF1aXJlczpbImJhc2UtYnVpbGQiLCJldmVudC1vdXRzaWRlIiwid2lkZ2V0Il0sc2tpbm5hYmxlOiEwfSwid2lkZ2V0LXBhcmVudCI6e3JlcXVpcmVzOlsiYXJyYXlsaXN0IiwiYmFzZS1idWlsZCIsIndpZGdldCJdfSwid2lkZ2V0LXBvc2l0aW9uIjp7cmVxdWlyZXM6WyJiYXNlLWJ1aWxkIiwibm9kZS1zY3JlZW4iLCJ3aWRnZXQiXX0sIndpZGdldC1wb3NpdGlvbi1hbGlnbiI6e3JlcXVpcmVzOlsid2lkZ2V0LXBvc2l0aW9uIl19LCJ3aWRnZXQtcG9zaXRpb24tY29uc3RyYWluIjp7cmVxdWlyZXM6WyJ3aWRnZXQtcG9zaXRpb24iXX0sIndpZGdldC1za2luIjp7cmVxdWlyZXM6WyJ3aWRnZXQtYmFzZSJdfSwid2lkZ2V0LXN0YWNrIjp7cmVxdWlyZXM6WyJiYXNlLWJ1aWxkIiwid2lkZ2V0Il0sc2tpbm5hYmxlOiEwfSwid2lkZ2V0LXN0ZG1vZCI6e3JlcXVpcmVzOlsiYmFzZS1idWlsZCIsIndpZGdldCJdfSwid2lkZ2V0LXVpZXZlbnRzIjp7cmVxdWlyZXM6WyJub2RlLWV2ZW50LWRlbGVnYXRlIiwid2lkZ2V0LWJhc2UiXX0seXFsOntyZXF1aXJlczpbIm9vcCJdfSwieXFsLWpzb25wIjp7Y29uZGl0aW9uOntuYW1lOiJ5cWwtanNvbnAiLHRlc3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIWUuVUEubm9kZWpzJiYhZS5VQS53aW5qc30sdHJpZ2dlcjoieXFsIn0scmVxdWlyZXM6WyJ5cWwiLCJqc29ucCIsImpzb25wLXVybCJdfSwieXFsLW5vZGVqcyI6e2NvbmRpdGlvbjp7bmFtZToieXFsLW5vZGVqcyIsdHJpZ2dlcjoieXFsIix1YToibm9kZWpzIn0scmVxdWlyZXM6WyJ5cWwiXX0sInlxbC13aW5qcyI6e2NvbmRpdGlvbjp7bmFtZToieXFsLXdpbmpzIix0cmlnZ2VyOiJ5cWwiLHVhOiJ3aW5qcyJ9LHJlcXVpcmVzOlsieXFsIl19LHl1aTp7fSwieXVpLWJhc2UiOnt9LCJ5dWktbGF0ZXIiOntyZXF1aXJlczpbInl1aS1iYXNlIl19LCJ5dWktbG9nIjp7cmVxdWlyZXM6WyJ5dWktYmFzZSJdfSwieXVpLXRocm90dGxlIjp7cmVxdWlyZXM6WyJ5dWktYmFzZSJdfX0pLFlVSS5FbnZbZS52ZXJzaW9uXS5tZDU9IjQ1MzU3YmIxMWVkZGY3ZmQwYTg5YzBiNzU2NTk5ZGYyIn0sIjMuMTcuMiIse3JlcXVpcmVzOlsibG9hZGVyLWJhc2UiXX0pLFlVSS5hZGQoInl1aSIsZnVuY3Rpb24oZSx0KXt9LCIzLjE3LjIiLHt1c2U6WyJ5dWktYmFzZSIsImdldCIsImZlYXR1cmVzIiwiaW50bC1iYXNlIiwieXVpLWxvZyIsInl1aS1sYXRlciIsImxvYWRlci1iYXNlIiwibG9hZGVyLXJvbGx1cCIKLCJsb2FkZXIteXVpMyJdfSk7Cg=="></script>
<style>.yui3-aclist{position:absolute}.yui3-aclist-hidden{visibility:hidden}.yui3-aclist-aria{left:-9999px;position:absolute}.yui3-aclist-list{list-style:none;margin:0;overflow:hidden;padding:0}.yui3-skin-sam .yui3-aclist-content{background:#fff;border:1px solid #afafaf;-moz-box-shadow:1px 1px 4px rgba(0,0,0,0.58);-webkit-box-shadow:1px 1px 4px rgba(0,0,0,0.58);box-shadow:1px 1px 4px rgba(0,0,0,0.58)}</style><script charset=utf-8 id=yui_3_17_2_1_1703147614323_4 async data-sf-original-src=https://yui-s.yahooapis.com/combo?3.17.2/oop/oop-min.js&3.17.2/event-custom-base/event-custom-base-min.js&3.17.2/event-base/event-base-min.js&3.17.2/dom-core/dom-core-min.js&3.17.2/dom-base/dom-base-min.js&3.17.2/selector-native/selector-native-min.js&3.17.2/selector/selector-min.js&3.17.2/node-core/node-core-min.js&3.17.2/dom-style/dom-style-min.js&3.17.2/node-base/node-base-min.js&3.17.2/event-custom-complex/event-custom-complex-min.js&3.17.2/event-synthetic/event-synthetic-min.js&3.17.2/event-mouseenter/event-mouseenter-min.js&3.17.2/event-hover/event-hover-min.js&3.17.2/event-delegate/event-delegate-min.js&3.17.2/node-event-delegate/node-event-delegate-min.js&3.17.2/intl/intl-min.js&3.17.2/array-extras/array-extras-min.js&3.17.2/attribute-core/attribute-core-min.js&3.17.2/attribute-observable/attribute-observable-min.js&3.17.2/attribute-extras/attribute-extras-min.js&3.17.2/attribute-base/attribute-base-min.js&3.17.2/base-core/base-core-min.js&3.17.2/base-observable/base-observable-min.js src="data:application/javascript;base64,LyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoIm9vcCIsZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBhKHQsbixpLHMsbyl7aWYodCYmdFtvXSYmdCE9PWUpcmV0dXJuIHRbb10uY2FsbCh0LG4saSk7c3dpdGNoKHIudGVzdCh0KSl7Y2FzZSAxOnJldHVybiByW29dKHQsbixpKTtjYXNlIDI6cmV0dXJuIHJbb10oZS5BcnJheSh0LDAsITApLG4saSk7ZGVmYXVsdDpyZXR1cm4gZS5PYmplY3Rbb10odCxuLGkscyl9fXZhciBuPWUuTGFuZyxyPWUuQXJyYXksaT1PYmplY3QucHJvdG90eXBlLHM9Il9+eXVpbX5fIixvPWkuaGFzT3duUHJvcGVydHksdT1pLnRvU3RyaW5nO2UuYXVnbWVudD1mdW5jdGlvbih0LG4scixpLHMpe3ZhciBhPXQucHJvdG90eXBlLGY9YSYmbixsPW4ucHJvdG90eXBlLGM9YXx8dCxoLHAsZCx2LG07cmV0dXJuIHM9cz9lLkFycmF5KHMpOltdLGYmJihwPXt9LGQ9e30sdj17fSxoPWZ1bmN0aW9uKGUsdCl7aWYocnx8ISh0IGluIGEpKXUuY2FsbChlKT09PSJbb2JqZWN0IEZ1bmN0aW9uXSI/KHZbdF09ZSxwW3RdPWRbdF09ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLGUsYXJndW1lbnRzKX0pOnBbdF09ZX0sbT1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBpIGluIHYpby5jYWxsKHYsaSkmJmVbaV09PT1kW2ldJiYoZVtpXT12W2ldKTtyZXR1cm4gbi5hcHBseShlLHMpLHQuYXBwbHkoZSxyKX0saT9lLkFycmF5LmVhY2goaSxmdW5jdGlvbihlKXtlIGluIGwmJmgobFtlXSxlKX0pOmUuT2JqZWN0LmVhY2gobCxoLG51bGwsITApKSxlLm1peChjLHB8fGwscixpKSxmfHxuLmFwcGx5KGMscyksdH0sZS5hZ2dyZWdhdGU9ZnVuY3Rpb24odCxuLHIsaSl7cmV0dXJuIGUubWl4KHQsbixyLGksMCwhMCl9LGUuZXh0ZW5kPWZ1bmN0aW9uKHQsbixyLHMpeyghbnx8IXQpJiZlLmVycm9yKCJleHRlbmQgZmFpbGVkLCB2ZXJpZnkgZGVwZW5kZW5jaWVzIik7dmFyIG89bi5wcm90b3R5cGUsdT1lLk9iamVjdChvKTtyZXR1cm4gdC5wcm90b3R5cGU9dSx1LmNvbnN0cnVjdG9yPXQsdC5zdXBlcmNsYXNzPW8sbiE9T2JqZWN0JiZvLmNvbnN0cnVjdG9yPT1pLmNvbnN0cnVjdG9yJiYoby5jb25zdHJ1Y3Rvcj1uKSxyJiZlLm1peCh1LHIsITApLHMmJmUubWl4KHQscywhMCksdH0sZS5lYWNoPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBhKGUsdCxuLHIsImVhY2giKX0sZS5zb21lPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBhKGUsdCxuLHIsInNvbWUiKX0sZS5jbG9uZT1mdW5jdGlvbih0LHIsaSxvLHUsYSl7dmFyIGYsbCxjO2lmKCFuLmlzT2JqZWN0KHQpfHxlLmluc3RhbmNlT2YodCxZVUkpfHx0LmFkZEV2ZW50TGlzdGVuZXJ8fHQuYXR0YWNoRXZlbnQpcmV0dXJuIHQ7bD1hfHx7fTtzd2l0Y2gobi50eXBlKHQpKXtjYXNlImRhdGUiOnJldHVybiBuZXcgRGF0ZSh0KTtjYXNlInJlZ2V4cCI6cmV0dXJuIHQ7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuIHQ7Y2FzZSJhcnJheSI6Zj1bXTticmVhaztkZWZhdWx0OmlmKHRbc10pcmV0dXJuIGxbdFtzXV07Yz1lLmd1aWQoKSxmPXI/e306ZS5PYmplY3QodCksdFtzXT1jLGxbY109dH1yZXR1cm4gZS5lYWNoKHQsZnVuY3Rpb24obixhKXsoYXx8YT09PTApJiYoIWl8fGkuY2FsbChvfHx0aGlzLG4sYSx0aGlzLHQpIT09ITEpJiZhIT09cyYmYSE9InByb3RvdHlwZSImJih0aGlzW2FdPWUuY2xvbmUobixyLGksbyx1fHx0LGwpKX0sZiksYXx8KGUuT2JqZWN0LmVhY2gobCxmdW5jdGlvbihlLHQpe2lmKGVbc10pdHJ5e2RlbGV0ZSBlW3NdfWNhdGNoKG4pe2Vbc109bnVsbH19LHRoaXMpLGw9bnVsbCksZn0sZS5iaW5kPWZ1bmN0aW9uKHQscil7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yP2UuQXJyYXkoYXJndW1lbnRzLDIsITApOm51bGw7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM9bi5pc1N0cmluZyh0KT9yW3RdOnQsbz1pP2kuY29uY2F0KGUuQXJyYXkoYXJndW1lbnRzLDAsITApKTphcmd1bWVudHM7cmV0dXJuIHMuYXBwbHkocnx8cyxvKX19LGUucmJpbmQ9ZnVuY3Rpb24odCxyKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjI/ZS5BcnJheShhcmd1bWVudHMsMiwhMCk6bnVsbDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcz1uLmlzU3RyaW5nKHQpP3JbdF06dCxvPWk/ZS5BcnJheShhcmd1bWVudHMsMCwhMCkuY29uY2F0KGkpOmFyZ3VtZW50cztyZXR1cm4gcy5hcHBseShyfHxzLG8pfX19LCIzLjE3LjIiLHtyZXF1aXJlczpbInl1aS1iYXNlIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoImV2ZW50LWN1c3RvbS1iYXNlIixmdW5jdGlvbihlLHQpe2UuRW52LmV2dD17aGFuZGxlczp7fSxwbHVnaW5zOnt9fTt2YXIgbj0wLHI9MSxpPXtvYmpzOm51bGwsYmVmb3JlOmZ1bmN0aW9uKHQscixpLHMpe3ZhciBvPXQsdTtyZXR1cm4gcyYmKHU9W3Qsc10uY29uY2F0KGUuQXJyYXkoYXJndW1lbnRzLDQsITApKSxvPWUucmJpbmQuYXBwbHkoZSx1KSksdGhpcy5faW5qZWN0KG4sbyxyLGkpfSxhZnRlcjpmdW5jdGlvbih0LG4saSxzKXt2YXIgbz10LHU7cmV0dXJuIHMmJih1PVt0LHNdLmNvbmNhdChlLkFycmF5KGFyZ3VtZW50cyw0LCEwKSksbz1lLnJiaW5kLmFwcGx5KGUsdSkpLHRoaXMuX2luamVjdChyLG8sbixpKX0sX2luamVjdDpmdW5jdGlvbih0LG4scixpKXt2YXIgcz1lLnN0YW1wKHIpLG8sdTtyZXR1cm4gci5feXVpYW9wfHwoci5feXVpYW9wPXt9KSxvPXIuX3l1aWFvcCxvW2ldfHwob1tpXT1uZXcgZS5Eby5NZXRob2QocixpKSxyW2ldPWZ1bmN0aW9uKCl7cmV0dXJuIG9baV0uZXhlYy5hcHBseShvW2ldLGFyZ3VtZW50cyl9KSx1PXMrZS5zdGFtcChuKStpLG9baV0ucmVnaXN0ZXIodSxuLHQpLG5ldyBlLkV2ZW50SGFuZGxlKG9baV0sdSl9LGRldGFjaDpmdW5jdGlvbihlKXtlLmRldGFjaCYmZS5kZXRhY2goKX19O2UuRG89aSxpLk1ldGhvZD1mdW5jdGlvbihlLHQpe3RoaXMub2JqPWUsdGhpcy5tZXRob2ROYW1lPXQsdGhpcy5tZXRob2Q9ZVt0XSx0aGlzLmJlZm9yZT17fSx0aGlzLmFmdGVyPXt9fSxpLk1ldGhvZC5wcm90b3R5cGUucmVnaXN0ZXI9ZnVuY3Rpb24oZSx0LG4pe24/dGhpcy5hZnRlcltlXT10OnRoaXMuYmVmb3JlW2VdPXR9LGkuTWV0aG9kLnByb3RvdHlwZS5fZGVsZXRlPWZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzLmJlZm9yZVtlXSxkZWxldGUgdGhpcy5hZnRlcltlXX0saS5NZXRob2QucHJvdG90eXBlLmV4ZWM9ZnVuY3Rpb24oKXt2YXIgdD1lLkFycmF5KGFyZ3VtZW50cywwLCEwKSxuLHIscyxvPXRoaXMuYmVmb3JlLHU9dGhpcy5hZnRlcixhPSExO2ZvcihuIGluIG8paWYoby5oYXNPd25Qcm9wZXJ0eShuKSl7cj1vW25dLmFwcGx5KHRoaXMub2JqLHQpO2lmKHIpc3dpdGNoKHIuY29uc3RydWN0b3Ipe2Nhc2UgaS5IYWx0OnJldHVybiByLnJldFZhbDtjYXNlIGkuQWx0ZXJBcmdzOnQ9ci5uZXdBcmdzO2JyZWFrO2Nhc2UgaS5QcmV2ZW50OmE9ITA7YnJlYWs7ZGVmYXVsdDp9fWF8fChyPXRoaXMubWV0aG9kLmFwcGx5KHRoaXMub2JqLHQpKSxpLm9yaWdpbmFsUmV0VmFsPXIsaS5jdXJyZW50UmV0VmFsPXI7Zm9yKG4gaW4gdSlpZih1Lmhhc093blByb3BlcnR5KG4pKXtzPXVbbl0uYXBwbHkodGhpcy5vYmosdCk7aWYocyYmcy5jb25zdHJ1Y3Rvcj09PWkuSGFsdClyZXR1cm4gcy5yZXRWYWw7cyYmcy5jb25zdHJ1Y3Rvcj09PWkuQWx0ZXJSZXR1cm4mJihyPXMubmV3UmV0VmFsLGkuY3VycmVudFJldFZhbD1yKX1yZXR1cm4gcn0saS5BbHRlckFyZ3M9ZnVuY3Rpb24oZSx0KXt0aGlzLm1zZz1lLHRoaXMubmV3QXJncz10fSxpLkFsdGVyUmV0dXJuPWZ1bmN0aW9uKGUsdCl7dGhpcy5tc2c9ZSx0aGlzLm5ld1JldFZhbD10fSxpLkhhbHQ9ZnVuY3Rpb24oZSx0KXt0aGlzLm1zZz1lLHRoaXMucmV0VmFsPXR9LGkuUHJldmVudD1mdW5jdGlvbihlKXt0aGlzLm1zZz1lfSxpLkVycm9yPWkuSGFsdDt2YXIgcz1lLkFycmF5LG89ImFmdGVyIix1PVsiYnJvYWRjYXN0IiwibW9uaXRvcmVkIiwiYnViYmxlcyIsImNvbnRleHQiLCJjb250ZXh0Rm4iLCJjdXJyZW50VGFyZ2V0IiwiZGVmYXVsdEZuIiwiZGVmYXVsdFRhcmdldE9ubHkiLCJkZXRhaWxzIiwiZW1pdEZhY2FkZSIsImZpcmVPbmNlIiwiYXN5bmMiLCJob3N0IiwicHJldmVudGFibGUiLCJwcmV2ZW50ZWRGbiIsInF1ZXVhYmxlIiwic2lsZW50Iiwic3RvcHBlZEZuIiwidGFyZ2V0IiwidHlwZSJdLGE9cy5oYXNoKHUpLGY9QXJyYXkucHJvdG90eXBlLnNsaWNlLGw9OSxjPSJ5dWk6bG9nIixoPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtmb3IociBpbiB0KWFbcl0mJihufHwhKHIgaW4gZSkpJiYoZVtyXT10W3JdKTtyZXR1cm4gZX07ZS5DdXN0b21FdmVudD1mdW5jdGlvbih0LG4pe3RoaXMuX2tkcz1lLkN1c3RvbUV2ZW50LmtlZXBEZXByZWNhdGVkU3Vicyx0aGlzLmlkPWUuZ3VpZCgpLHRoaXMudHlwZT10LHRoaXMuc2lsZW50PXRoaXMubG9nU3lzdGVtPXQ9PT1jLHRoaXMuX2tkcyYmKHRoaXMuc3Vic2NyaWJlcnM9e30sdGhpcy5hZnRlcnM9e30pLG4mJmgodGhpcyxuLCEwKX0sZS5DdXN0b21FdmVudC5rZWVwRGVwcmVjYXRlZFN1YnM9ITEsZS5DdXN0b21FdmVudC5taXhDb25maWdzPWgsZS5DdXN0b21FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmUuQ3VzdG9tRXZlbnQsc2lnbmF0dXJlOmwsY29udGV4dDplLHByZXZlbnRhYmxlOiEwLGJ1YmJsZXM6ITAsaGFzU3ViczpmdW5jdGlvbihlKXt2YXIgdD0wLG49MCxyPXRoaXMuX3N1YnNjcmliZXJzLGk9dGhpcy5fYWZ0ZXJzLHM9dGhpcy5zaWJsaW5nO3JldHVybiByJiYodD1yLmxlbmd0aCksaSYmKG49aS5sZW5ndGgpLHMmJihyPXMuX3N1YnNjcmliZXJzLGk9cy5fYWZ0ZXJzLHImJih0Kz1yLmxlbmd0aCksaSYmKG4rPWkubGVuZ3RoKSksZT9lPT09ImFmdGVyIj9uOnQ6dCtufSxtb25pdG9yOmZ1bmN0aW9uKGUpe3RoaXMubW9uaXRvcmVkPSEwO3ZhciB0PXRoaXMuaWQrInwiK3RoaXMudHlwZSsiXyIrZSxuPWYuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIG5bMF09dCx0aGlzLmhvc3Qub24uYXBwbHkodGhpcy5ob3N0LG4pfSxnZXRTdWJzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zaWJsaW5nLHQ9dGhpcy5fc3Vic2NyaWJlcnMsbj10aGlzLl9hZnRlcnMscixpO3JldHVybiBlJiYocj1lLl9zdWJzY3JpYmVycyxpPWUuX2FmdGVycykscj90P3Q9dC5jb25jYXQocik6dD1yLmNvbmNhdCgpOnQ/dD10LmNvbmNhdCgpOnQ9W10saT9uP249bi5jb25jYXQoaSk6bj1pLmNvbmNhdCgpOm4/bj1uLmNvbmNhdCgpOm49W10sW3Qsbl19LGFwcGx5Q29uZmlnOmZ1bmN0aW9uKGUsdCl7aCh0aGlzLGUsdCl9LF9vbjpmdW5jdGlvbih0LG4scixpKXt2YXIgcz1uZXcgZS5TdWJzY3JpYmVyKHQsbixyLGkpLHU7cmV0dXJuIHRoaXMuZmlyZU9uY2UmJnRoaXMuZmlyZWQmJih1PXRoaXMuZmlyZWRXaXRoLHRoaXMuZW1pdEZhY2FkZSYmdGhpcy5fYWRkRmFjYWRlVG9BcmdzJiZ0aGlzLl9hZGRGYWNhZGVUb0FyZ3ModSksdGhpcy5hc3luYz9zZXRUaW1lb3V0KGUuYmluZCh0aGlzLl9ub3RpZnksdGhpcyxzLHUpLDApOnRoaXMuX25vdGlmeShzLHUpKSxpPT09bz8odGhpcy5fYWZ0ZXJzfHwodGhpcy5fYWZ0ZXJzPVtdKSx0aGlzLl9hZnRlcnMucHVzaChzKSk6KHRoaXMuX3N1YnNjcmliZXJzfHwodGhpcy5fc3Vic2NyaWJlcnM9W10pLHRoaXMuX3N1YnNjcmliZXJzLnB1c2gocykpLHRoaXMuX2tkcyYmKGk9PT1vP3RoaXMuYWZ0ZXJzW3MuaWRdPXM6dGhpcy5zdWJzY3JpYmVyc1tzLmlkXT1zKSxuZXcgZS5FdmVudEhhbmRsZSh0aGlzLHMpfSxzdWJzY3JpYmU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjI/Zi5jYWxsKGFyZ3VtZW50cywyKTpudWxsO3JldHVybiB0aGlzLl9vbihlLHQsbiwhMCl9LG9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yP2YuY2FsbChhcmd1bWVudHMsMik6bnVsbDtyZXR1cm4gdGhpcy5tb25pdG9yZWQmJnRoaXMuaG9zdCYmdGhpcy5ob3N0Ll9tb25pdG9yKCJhdHRhY2giLHRoaXMse2FyZ3M6YXJndW1lbnRzfSksdGhpcy5fb24oZSx0LG4sITApfSxhZnRlcjpmdW5jdGlvbihlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+Mj9mLmNhbGwoYXJndW1lbnRzLDIpOm51bGw7cmV0dXJuIHRoaXMuX29uKGUsdCxuLG8pfSxkZXRhY2g6ZnVuY3Rpb24oZSx0KXtpZihlJiZlLmRldGFjaClyZXR1cm4gZS5kZXRhY2goKTt2YXIgbixyLGk9MCxzPXRoaXMuX3N1YnNjcmliZXJzLG89dGhpcy5fYWZ0ZXJzO2lmKHMpZm9yKG49cy5sZW5ndGg7bj49MDtuLS0pcj1zW25dLHImJighZXx8ZT09PXIuZm4pJiYodGhpcy5fZGVsZXRlKHIscyxuKSxpKyspO2lmKG8pZm9yKG49by5sZW5ndGg7bj49MDtuLS0pcj1vW25dLHImJighZXx8ZT09PXIuZm4pJiYodGhpcy5fZGVsZXRlKHIsbyxuKSxpKyspO3JldHVybiBpfSx1bnN1YnNjcmliZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRldGFjaC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LF9ub3RpZnk6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO3JldHVybiByPWUubm90aWZ5KHQsdGhpcyksITE9PT1yfHx0aGlzLnN0b3BwZWQ+MT8hMTohMH0sbG9nOmZ1bmN0aW9uKGUsdCl7fSxmaXJlOmZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJuIGUucHVzaC5hcHBseShlLGFyZ3VtZW50cyksdGhpcy5fZmlyZShlKX0sX2ZpcmU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZmlyZU9uY2UmJnRoaXMuZmlyZWQ/ITA6KHRoaXMuZmlyZWQ9ITAsdGhpcy5maXJlT25jZSYmKHRoaXMuZmlyZWRXaXRoPWUpLHRoaXMuZW1pdEZhY2FkZT90aGlzLmZpcmVDb21wbGV4KGUpOnRoaXMuZmlyZVNpbXBsZShlKSl9LGZpcmVTaW1wbGU6ZnVuY3Rpb24oZSl7dGhpcy5zdG9wcGVkPTAsdGhpcy5wcmV2ZW50ZWQ9MDtpZih0aGlzLmhhc1N1YnMoKSl7dmFyIHQ9dGhpcy5nZXRTdWJzKCk7dGhpcy5fcHJvY1N1YnModFswXSxlKSx0aGlzLl9wcm9jU3Vicyh0WzFdLGUpfXJldHVybiB0aGlzLmJyb2FkY2FzdCYmdGhpcy5fYnJvYWRjYXN0KGUpLHRoaXMuc3RvcHBlZD8hMTohMH0sZmlyZUNvbXBsZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMF09ZVswXXx8e30sdGhpcy5maXJlU2ltcGxlKGUpfSxfcHJvY1N1YnM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGkscztmb3IoaT0wLHM9ZS5sZW5ndGg7aTxzO2krKyl7cj1lW2ldO2lmKHImJnIuZm4peyExPT09dGhpcy5fbm90aWZ5KHIsdCxuKSYmKHRoaXMuc3RvcHBlZD0yKTtpZih0aGlzLnN0b3BwZWQ9PT0yKXJldHVybiExfX1yZXR1cm4hMH0sX2Jyb2FkY2FzdDpmdW5jdGlvbih0KXtpZighdGhpcy5zdG9wcGVkJiZ0aGlzLmJyb2FkY2FzdCl7dmFyIG49dC5jb25jYXQoKTtuLnVuc2hpZnQodGhpcy50eXBlKSx0aGlzLmhvc3QhPT1lJiZlLmZpcmUuYXBwbHkoZSxuKSx0aGlzLmJyb2FkY2FzdD09PTImJmUuR2xvYmFsLmZpcmUuYXBwbHkoZS5HbG9iYWwsbil9fSx1bnN1YnNjcmliZUFsbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRldGFjaEFsbC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGRldGFjaEFsbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRldGFjaCgpfSxfZGVsZXRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLl93aGVuO3R8fCh0PXI9PT1vP3RoaXMuX2FmdGVyczp0aGlzLl9zdWJzY3JpYmVycyksdCYmKG49cy5pbmRleE9mKHQsZSwwKSxlJiZ0W25dPT09ZSYmdC5zcGxpY2UobiwxKSksdGhpcy5fa2RzJiYocj09PW8/ZGVsZXRlIHRoaXMuYWZ0ZXJzW2UuaWRdOmRlbGV0ZSB0aGlzLnN1YnNjcmliZXJzW2UuaWRdKSx0aGlzLm1vbml0b3JlZCYmdGhpcy5ob3N0JiZ0aGlzLmhvc3QuX21vbml0b3IoImRldGFjaCIsdGhpcyx7Y2U6dGhpcyxzdWI6ZX0pLGUmJihlLmRlbGV0ZWQ9ITApfX0sZS5TdWJzY3JpYmVyPWZ1bmN0aW9uKHQsbixyLGkpe3RoaXMuZm49dCx0aGlzLmNvbnRleHQ9bix0aGlzLmlkPWUuZ3VpZCgpLHRoaXMuYXJncz1yLHRoaXMuX3doZW49aX0sZS5TdWJzY3JpYmVyLnByb3RvdHlwZT17Y29uc3RydWN0b3I6ZS5TdWJzY3JpYmVyLF9ub3RpZnk6ZnVuY3Rpb24oZSx0LG4pe2lmKHRoaXMuZGVsZXRlZCYmIXRoaXMucG9zdHBvbmVkKXtpZighdGhpcy5wb3N0cG9uZWQpcmV0dXJuIGRlbGV0ZSB0aGlzLnBvc3Rwb25lZCxudWxsO2RlbGV0ZSB0aGlzLmZuLGRlbGV0ZSB0aGlzLmNvbnRleHR9dmFyIHI9dGhpcy5hcmdzLGk7c3dpdGNoKG4uc2lnbmF0dXJlKXtjYXNlIDA6aT10aGlzLmZuLmNhbGwoZSxuLnR5cGUsdCxlKTticmVhaztjYXNlIDE6aT10aGlzLmZuLmNhbGwoZSx0WzBdfHxudWxsLGUpO2JyZWFrOwpkZWZhdWx0OnJ8fHQ/KHQ9dHx8W10scj1yP3QuY29uY2F0KHIpOnQsaT10aGlzLmZuLmFwcGx5KGUscikpOmk9dGhpcy5mbi5jYWxsKGUpfXJldHVybiB0aGlzLm9uY2UmJm4uX2RlbGV0ZSh0aGlzKSxpfSxub3RpZnk6ZnVuY3Rpb24odCxuKXt2YXIgcj10aGlzLmNvbnRleHQsaT0hMDtyfHwocj1uLmNvbnRleHRGbj9uLmNvbnRleHRGbigpOm4uY29udGV4dCk7aWYoZS5jb25maWcmJmUuY29uZmlnLnRocm93RmFpbClpPXRoaXMuX25vdGlmeShyLHQsbik7ZWxzZSB0cnl7aT10aGlzLl9ub3RpZnkocix0LG4pfWNhdGNoKHMpe2UuZXJyb3IodGhpcysiIGZhaWxlZDogIitzLm1lc3NhZ2Uscyl9cmV0dXJuIGl9LGNvbnRhaW5zOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/dGhpcy5mbj09PWUmJnRoaXMuY29udGV4dD09PXQ6dGhpcy5mbj09PWV9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZH19LGUuRXZlbnRIYW5kbGU9ZnVuY3Rpb24oZSx0KXt0aGlzLmV2dD1lLHRoaXMuc3ViPXR9LGUuRXZlbnRIYW5kbGUucHJvdG90eXBlPXtiYXRjaDpmdW5jdGlvbih0LG4pe3QuY2FsbChufHx0aGlzLHRoaXMpLGUuTGFuZy5pc0FycmF5KHRoaXMuZXZ0KSYmZS5BcnJheS5lYWNoKHRoaXMuZXZ0LGZ1bmN0aW9uKGUpe2UuYmF0Y2guY2FsbChufHxlLHQpfSl9LGRldGFjaDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZXZ0LG49MCxyO2lmKHQpaWYoZS5MYW5nLmlzQXJyYXkodCkpZm9yKHI9MDtyPHQubGVuZ3RoO3IrKyluKz10W3JdLmRldGFjaCgpO2Vsc2UgdC5fZGVsZXRlKHRoaXMuc3ViKSxuPTE7cmV0dXJuIG59LG1vbml0b3I6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZXZ0Lm1vbml0b3IuYXBwbHkodGhpcy5ldnQsYXJndW1lbnRzKX19O3ZhciBwPWUuTGFuZyxkPSI6Iix2PSJ8IixtPSJ+QUZURVJ+IixnPS8oLio/KSg6KSguKj8pLyx5PWUuY2FjaGVkKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoZywiKiQyJDMiKX0pLGI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hdHx8IWV8fGUuaW5kZXhPZihkKT4tMT9lOnQrZCtlfSx3PWUuY2FjaGVkKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZSxyLGkscztyZXR1cm4gcC5pc1N0cmluZyhuKT8ocz1uLmluZGV4T2YobSkscz4tMSYmKGk9ITAsbj1uLnN1YnN0cihtLmxlbmd0aCkpLHM9bi5pbmRleE9mKHYpLHM+LTEmJihyPW4uc3Vic3RyKDAscyksbj1uLnN1YnN0cihzKzEpLG49PT0iKiImJihuPW51bGwpKSxbcix0P2Iobix0KTpuLGksbl0pOm59KSxFPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuX3l1aWV2dCxyO258fChuPXRoaXMuX3l1aWV2dD17ZXZlbnRzOnt9LHRhcmdldHM6bnVsbCxjb25maWc6e2hvc3Q6dGhpcyxjb250ZXh0OnRoaXN9LGNoYWluOmUuY29uZmlnLmNoYWlufSkscj1uLmNvbmZpZyx0JiYoaChyLHQsITApLHQuY2hhaW4hPT11bmRlZmluZWQmJihuLmNoYWluPXQuY2hhaW4pLHQucHJlZml4JiYoci5wcmVmaXg9dC5wcmVmaXgpKX07RS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkUsb25jZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMub24uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBlLmJhdGNoKGZ1bmN0aW9uKGUpe2Uuc3ViJiYoZS5zdWIub25jZT0hMCl9KSxlfSxvbmNlQWZ0ZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmFmdGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZS5iYXRjaChmdW5jdGlvbihlKXtlLnN1YiYmKGUuc3ViLm9uY2U9ITApfSksZX0scGFyc2VUeXBlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHcoZSx0fHx0aGlzLl95dWlldnQuY29uZmlnLnByZWZpeCl9LG9uOmZ1bmN0aW9uKHQsbixyKXt2YXIgaT10aGlzLl95dWlldnQscz13KHQsaS5jb25maWcucHJlZml4KSxvLHUsYSxsLGMsaCxkLHY9ZS5FbnYuZXZ0LmhhbmRsZXMsZyx5LGIsRT1lLk5vZGUsUyx4LFQ7dGhpcy5fbW9uaXRvcigiYXR0YWNoIixzWzFdLHthcmdzOmFyZ3VtZW50cyxjYXRlZ29yeTpzWzBdLGFmdGVyOnNbMl19KTtpZihwLmlzT2JqZWN0KHQpKXJldHVybiBwLmlzRnVuY3Rpb24odCk/ZS5Eby5iZWZvcmUuYXBwbHkoZS5Ebyxhcmd1bWVudHMpOihvPW4sdT1yLGE9Zi5jYWxsKGFyZ3VtZW50cywwKSxsPVtdLHAuaXNBcnJheSh0KSYmKFQ9ITApLGc9dC5fYWZ0ZXIsZGVsZXRlIHQuX2FmdGVyLGUuZWFjaCh0LGZ1bmN0aW9uKGUsdCl7cC5pc09iamVjdChlKSYmKG89ZS5mbnx8KHAuaXNGdW5jdGlvbihlKT9lOm8pLHU9ZS5jb250ZXh0fHx1KTt2YXIgbj1nP206IiI7YVswXT1uKyhUP2U6dCksYVsxXT1vLGFbMl09dSxsLnB1c2godGhpcy5vbi5hcHBseSh0aGlzLGEpKX0sdGhpcyksaS5jaGFpbj90aGlzOm5ldyBlLkV2ZW50SGFuZGxlKGwpKTtoPXNbMF0sZz1zWzJdLGI9c1szXTtpZihFJiZlLmluc3RhbmNlT2YodGhpcyxFKSYmYiBpbiBFLkRPTV9FVkVOVFMpcmV0dXJuIGE9Zi5jYWxsKGFyZ3VtZW50cywwKSxhLnNwbGljZSgyLDAsRS5nZXRET01Ob2RlKHRoaXMpKSxlLm9uLmFwcGx5KGUsYSk7dD1zWzFdO2lmKGUuaW5zdGFuY2VPZih0aGlzLFlVSSkpe3k9ZS5FbnYuZXZ0LnBsdWdpbnNbdF0sYT1mLmNhbGwoYXJndW1lbnRzLDApLGFbMF09YixFJiYoUz1hWzJdLGUuaW5zdGFuY2VPZihTLGUuTm9kZUxpc3QpP1M9ZS5Ob2RlTGlzdC5nZXRET01Ob2RlcyhTKTplLmluc3RhbmNlT2YoUyxFKSYmKFM9RS5nZXRET01Ob2RlKFMpKSx4PWIgaW4gRS5ET01fRVZFTlRTLHgmJihhWzJdPVMpKTtpZih5KWQ9eS5vbi5hcHBseShlLGEpO2Vsc2UgaWYoIXR8fHgpZD1lLkV2ZW50Ll9hdHRhY2goYSl9cmV0dXJuIGR8fChjPWkuZXZlbnRzW3RdfHx0aGlzLnB1Ymxpc2godCksZD1jLl9vbihuLHIsYXJndW1lbnRzLmxlbmd0aD4zP2YuY2FsbChhcmd1bWVudHMsMyk6bnVsbCxnPyJhZnRlciI6ITApLHQuaW5kZXhPZigiKjoiKSE9PS0xJiYodGhpcy5faGFzU2libGluZ3M9ITApKSxoJiYodltoXT12W2hdfHx7fSx2W2hdW3RdPXZbaF1bdF18fFtdLHZbaF1bdF0ucHVzaChkKSksaS5jaGFpbj90aGlzOmR9LHN1YnNjcmliZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZGV0YWNoOmZ1bmN0aW9uKHQsbixyKXt2YXIgaT10aGlzLl95dWlldnQuZXZlbnRzLHMsbz1lLk5vZGUsdT1vJiZlLmluc3RhbmNlT2YodGhpcyxvKTtpZighdCYmdGhpcyE9PWUpe2ZvcihzIGluIGkpaS5oYXNPd25Qcm9wZXJ0eShzKSYmaVtzXS5kZXRhY2gobixyKTtyZXR1cm4gdSYmZS5FdmVudC5wdXJnZUVsZW1lbnQoby5nZXRET01Ob2RlKHRoaXMpKSx0aGlzfXZhciBhPXcodCx0aGlzLl95dWlldnQuY29uZmlnLnByZWZpeCksbD1wLmlzQXJyYXkoYSk/YVswXTpudWxsLGM9YT9hWzNdOm51bGwsaCxkPWUuRW52LmV2dC5oYW5kbGVzLHYsbSxnLHksYj1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZVt0XSxpLHM7aWYocilmb3Iocz1yLmxlbmd0aC0xO3M+PTA7LS1zKWk9cltzXS5ldnQsKGkuaG9zdD09PW58fGkuZWw9PT1uKSYmcltzXS5kZXRhY2goKX07aWYobCl7bT1kW2xdLHQ9YVsxXSx2PXU/ZS5Ob2RlLmdldERPTU5vZGUodGhpcyk6dGhpcztpZihtKXtpZih0KWIobSx0LHYpO2Vsc2UgZm9yKHMgaW4gbSltLmhhc093blByb3BlcnR5KHMpJiZiKG0scyx2KTtyZXR1cm4gdGhpc319ZWxzZXtpZihwLmlzT2JqZWN0KHQpJiZ0LmRldGFjaClyZXR1cm4gdC5kZXRhY2goKSx0aGlzO2lmKHUmJighY3x8YyBpbiBvLkRPTV9FVkVOVFMpKXJldHVybiBnPWYuY2FsbChhcmd1bWVudHMsMCksZ1syXT1vLmdldERPTU5vZGUodGhpcyksZS5kZXRhY2guYXBwbHkoZSxnKSx0aGlzfWg9ZS5FbnYuZXZ0LnBsdWdpbnNbY107aWYoZS5pbnN0YW5jZU9mKHRoaXMsWVVJKSl7Zz1mLmNhbGwoYXJndW1lbnRzLDApO2lmKGgmJmguZGV0YWNoKXJldHVybiBoLmRldGFjaC5hcHBseShlLGcpLHRoaXM7aWYoIXR8fCFoJiZvJiZ0IGluIG8uRE9NX0VWRU5UUylyZXR1cm4gZ1swXT10LGUuRXZlbnQuZGV0YWNoLmFwcGx5KGUuRXZlbnQsZyksdGhpc31yZXR1cm4geT1pW2FbMV1dLHkmJnkuZGV0YWNoKG4sciksdGhpc30sdW5zdWJzY3JpYmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZXRhY2guYXBwbHkodGhpcyxhcmd1bWVudHMpfSxkZXRhY2hBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZGV0YWNoKGUpfSx1bnN1YnNjcmliZUFsbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRldGFjaEFsbC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHB1Ymxpc2g6ZnVuY3Rpb24odCxuKXt2YXIgcixpPXRoaXMuX3l1aWV2dCxzPWkuY29uZmlnLG89cy5wcmVmaXg7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIj8obyYmKHQ9Yih0LG8pKSxyPXRoaXMuX3B1Ymxpc2godCxzLG4pKToocj17fSxlLmVhY2godCxmdW5jdGlvbihlLHQpe28mJih0PWIodCxvKSksclt0XT10aGlzLl9wdWJsaXNoKHQscyxlfHxuKX0sdGhpcykpLHJ9LF9nZXRGdWxsVHlwZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl95dWlldnQuY29uZmlnLnByZWZpeDtyZXR1cm4gdD90K2QrZTplfSxfcHVibGlzaDpmdW5jdGlvbih0LG4scil7dmFyIGkscz10aGlzLl95dWlldnQsbz1zLmNvbmZpZyx1PW8uaG9zdCxhPW8uY29udGV4dCxmPXMuZXZlbnRzO3JldHVybiBpPWZbdF0sKG8ubW9uaXRvcmVkJiYhaXx8aSYmaS5tb25pdG9yZWQpJiZ0aGlzLl9tb25pdG9yKCJwdWJsaXNoIix0LHthcmdzOmFyZ3VtZW50c30pLGl8fChpPWZbdF09bmV3IGUuQ3VzdG9tRXZlbnQodCxuKSxufHwoaS5ob3N0PXUsaS5jb250ZXh0PWEpKSxyJiZoKGksciwhMCksaX0sX21vbml0b3I6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGkscztpZih0KXt0eXBlb2YgdD09InN0cmluZyI/KHM9dCxpPXRoaXMuZ2V0RXZlbnQodCwhMCkpOihpPXQscz10LnR5cGUpO2lmKHRoaXMuX3l1aWV2dC5jb25maWcubW9uaXRvcmVkJiYoIWl8fGkubW9uaXRvcmVkKXx8aSYmaS5tb25pdG9yZWQpcj1zKyJfIitlLG4ubW9uaXRvcmVkPWUsdGhpcy5maXJlLmNhbGwodGhpcyxyLG4pfX0sZmlyZTpmdW5jdGlvbihlKXt2YXIgdD10eXBlb2YgZT09InN0cmluZyIsbj1hcmd1bWVudHMubGVuZ3RoLHI9ZSxpPXRoaXMuX3l1aWV2dCxzPWkuY29uZmlnLG89cy5wcmVmaXgsdSxhLGwsYzt0JiZuPD0zP249PT0yP2M9W2FyZ3VtZW50c1sxXV06bj09PTM/Yz1bYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXV06Yz1bXTpjPWYuY2FsbChhcmd1bWVudHMsdD8xOjApLHR8fChyPWUmJmUudHlwZSksbyYmKHI9YihyLG8pKSxhPWkuZXZlbnRzW3JdLHRoaXMuX2hhc1NpYmxpbmdzJiYobD10aGlzLmdldFNpYmxpbmcocixhKSxsJiYhYSYmKGE9dGhpcy5wdWJsaXNoKHIpKSksKHMubW9uaXRvcmVkJiYoIWF8fGEubW9uaXRvcmVkKXx8YSYmYS5tb25pdG9yZWQpJiZ0aGlzLl9tb25pdG9yKCJmaXJlIixhfHxyLHthcmdzOmN9KTtpZighYSl7aWYoaS5oYXNUYXJnZXRzKXJldHVybiB0aGlzLmJ1YmJsZSh7dHlwZTpyfSxjLHRoaXMpO3U9ITB9ZWxzZSBsJiYoYS5zaWJsaW5nPWwpLHU9YS5fZmlyZShjKTtyZXR1cm4gaS5jaGFpbj90aGlzOnV9LGdldFNpYmxpbmc6ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gZS5pbmRleE9mKGQpPi0xJiYoZT15KGUpLG49dGhpcy5nZXRFdmVudChlLCEwKSxuJiYobi5hcHBseUNvbmZpZyh0KSxuLmJ1YmJsZXM9ITEsbi5icm9hZGNhc3Q9MCkpLG59LGdldEV2ZW50OmZ1bmN0aW9uKGUsdCl7dmFyIG4scjtyZXR1cm4gdHx8KG49dGhpcy5feXVpZXZ0LmNvbmZpZy5wcmVmaXgsZT1uP2IoZSxuKTplKSxyPXRoaXMuX3l1aWV2dC5ldmVudHMscltlXXx8bnVsbH0sYWZ0ZXI6ZnVuY3Rpb24odCxuKXt2YXIgcj1mLmNhbGwoYXJndW1lbnRzLDApO3N3aXRjaChwLnR5cGUodCkpe2Nhc2UiZnVuY3Rpb24iOnJldHVybiBlLkRvLmFmdGVyLmFwcGx5KGUuRG8sYXJndW1lbnRzKTtjYXNlImFycmF5IjpjYXNlIm9iamVjdCI6clswXS5fYWZ0ZXI9ITA7YnJlYWs7ZGVmYXVsdDpyWzBdPW0rdH1yZXR1cm4gdGhpcy5vbi5hcHBseSh0aGlzLHIpfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vbi5hcHBseQoodGhpcyxhcmd1bWVudHMpfX0sZS5FdmVudFRhcmdldD1FLGUubWl4KGUsRS5wcm90b3R5cGUpLEUuY2FsbChlLHtidWJibGVzOiExfSksWVVJLkVudi5nbG9iYWxFdmVudHM9WVVJLkVudi5nbG9iYWxFdmVudHN8fG5ldyBFLGUuR2xvYmFsPVlVSS5FbnYuZ2xvYmFsRXZlbnRzfSwiMy4xNy4yIix7cmVxdWlyZXM6WyJvb3AiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgiZXZlbnQtYmFzZSIsZnVuY3Rpb24oZSx0KXtlLnB1Ymxpc2goImRvbXJlYWR5Iix7ZmlyZU9uY2U6ITAsYXN5bmM6ITB9KSxZVUkuRW52LkRPTVJlYWR5P2UuZmlyZSgiZG9tcmVhZHkiKTplLkRvLmJlZm9yZShmdW5jdGlvbigpe2UuZmlyZSgiZG9tcmVhZHkiKX0sWVVJLkVudiwiX3JlYWR5Iik7dmFyIG49ZS5VQSxyPXt9LGk9ezYzMjMyOjM4LDYzMjMzOjQwLDYzMjM0OjM3LDYzMjM1OjM5LDYzMjc2OjMzLDYzMjc3OjM0LDI1OjksNjMyNzI6NDYsNjMyNzM6MzYsNjMyNzU6MzV9LHM9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIHQ7dHJ5e3QmJjM9PXQubm9kZVR5cGUmJih0PXQucGFyZW50Tm9kZSl9Y2F0Y2gobil7cmV0dXJuIG51bGx9cmV0dXJuIGUub25lKHQpfSxvPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLl9ldmVudD1lLHRoaXMuX2N1cnJlbnRUYXJnZXQ9dCx0aGlzLl93cmFwcGVyPW58fHIsdGhpcy5pbml0KCl9O2UuZXh0ZW5kKG8sT2JqZWN0LHtpbml0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fZXZlbnQsdD10aGlzLl93cmFwcGVyLm92ZXJyaWRlcyxyPWUucGFnZVgsbz1lLnBhZ2VZLHUsYT10aGlzLl9jdXJyZW50VGFyZ2V0O3RoaXMuYWx0S2V5PWUuYWx0S2V5LHRoaXMuY3RybEtleT1lLmN0cmxLZXksdGhpcy5tZXRhS2V5PWUubWV0YUtleSx0aGlzLnNoaWZ0S2V5PWUuc2hpZnRLZXksdGhpcy50eXBlPXQmJnQudHlwZXx8ZS50eXBlLHRoaXMuY2xpZW50WD1lLmNsaWVudFgsdGhpcy5jbGllbnRZPWUuY2xpZW50WSx0aGlzLnBhZ2VYPXIsdGhpcy5wYWdlWT1vLHU9ZS5rZXlDb2RlfHxlLmNoYXJDb2RlLG4ud2Via2l0JiZ1IGluIGkmJih1PWlbdV0pLHRoaXMua2V5Q29kZT11LHRoaXMuY2hhckNvZGU9dSx0aGlzLndoaWNoPWUud2hpY2h8fGUuY2hhckNvZGV8fHUsdGhpcy5idXR0b249dGhpcy53aGljaCx0aGlzLnRhcmdldD1zKGUudGFyZ2V0KSx0aGlzLmN1cnJlbnRUYXJnZXQ9cyhhKSx0aGlzLnJlbGF0ZWRUYXJnZXQ9cyhlLnJlbGF0ZWRUYXJnZXQpO2lmKGUudHlwZT09Im1vdXNld2hlZWwifHxlLnR5cGU9PSJET01Nb3VzZVNjcm9sbCIpdGhpcy53aGVlbERlbHRhPWUuZGV0YWlsP2UuZGV0YWlsKi0xOk1hdGgucm91bmQoZS53aGVlbERlbHRhLzgwKXx8KGUud2hlZWxEZWx0YTwwPy0xOjEpO3RoaXMuX3RvdWNoJiZ0aGlzLl90b3VjaChlLGEsdGhpcy5fd3JhcHBlcil9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuX2V2ZW50LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuX3dyYXBwZXIuc3RvcHBlZD0xLHRoaXMuc3RvcHBlZD0xfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9ldmVudDtlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbj9lLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOnRoaXMuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5fd3JhcHBlci5zdG9wcGVkPTIsdGhpcy5zdG9wcGVkPTJ9LHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2V2ZW50O3QucHJldmVudERlZmF1bHQoKSxlJiYodC5yZXR1cm5WYWx1ZT1lKSx0aGlzLl93cmFwcGVyLnByZXZlbnRlZD0xLHRoaXMucHJldmVudGVkPTF9LGhhbHQ6ZnVuY3Rpb24oZSl7ZT90aGlzLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOnRoaXMuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5wcmV2ZW50RGVmYXVsdCgpfX0pLG8ucmVzb2x2ZT1zLGUuRE9NMkV2ZW50RmFjYWRlPW8sZS5ET01FdmVudEZhY2FkZT1vLGZ1bmN0aW9uKCl7ZS5FbnYuZXZ0LmRvbV93cmFwcGVycz17fSxlLkVudi5ldnQuZG9tX21hcD17fTt2YXIgdD1lLkVudi5ldnQsbj1lLmNvbmZpZyxyPW4ud2luLGk9WVVJLkVudi5hZGQscz1ZVUkuRW52LnJlbW92ZSxvPWZ1bmN0aW9uKCl7WVVJLkVudi53aW5kb3dMb2FkZWQ9ITAsZS5FdmVudC5fbG9hZCgpLHMociwibG9hZCIsbyl9LHU9ZnVuY3Rpb24oKXtlLkV2ZW50Ll91bmxvYWQoKX0sYT0iZG9tcmVhZHkiLGY9In55dWl8Mnxjb21wYXR+IixsPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdCYmdHlwZW9mIHQhPSJzdHJpbmciJiZlLkxhbmcuaXNOdW1iZXIodC5sZW5ndGgpJiYhdC50YWdOYW1lJiYhZS5ET00uaXNXaW5kb3codCl9Y2F0Y2gobil7cmV0dXJuITF9fSxjPWUuQ3VzdG9tRXZlbnQucHJvdG90eXBlLl9kZWxldGUsaD1mdW5jdGlvbih0KXt2YXIgbj1jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gdGhpcy5oYXNTdWJzKCl8fGUuRXZlbnQuX2NsZWFuKHRoaXMpLG59LHA9ZnVuY3Rpb24oKXt2YXIgbj0hMSxvPTAsYz1bXSxkPXQuZG9tX3dyYXBwZXJzLHY9bnVsbCxtPXQuZG9tX21hcDtyZXR1cm57UE9MTF9SRVRSWVM6MWUzLFBPTExfSU5URVJWQUw6NDAsbGFzdEVycm9yOm51bGwsX2ludGVydmFsOm51bGwsX2RyaTpudWxsLERPTVJlYWR5OiExLHN0YXJ0SW50ZXJ2YWw6ZnVuY3Rpb24oKXtwLl9pbnRlcnZhbHx8KHAuX2ludGVydmFsPXNldEludGVydmFsKHAuX3BvbGwscC5QT0xMX0lOVEVSVkFMKSl9LG9uQXZhaWxhYmxlOmZ1bmN0aW9uKHQsbixyLGkscyx1KXt2YXIgYT1lLkFycmF5KHQpLGYsbDtmb3IoZj0wO2Y8YS5sZW5ndGg7Zis9MSljLnB1c2goe2lkOmFbZl0sZm46bixvYmo6cixvdmVycmlkZTppLGNoZWNrUmVhZHk6cyxjb21wYXQ6dX0pO3JldHVybiBvPXRoaXMuUE9MTF9SRVRSWVMsc2V0VGltZW91dChwLl9wb2xsLDApLGw9bmV3IGUuRXZlbnRIYW5kbGUoe19kZWxldGU6ZnVuY3Rpb24oKXtpZihsLmhhbmRsZSl7bC5oYW5kbGUuZGV0YWNoKCk7cmV0dXJufXZhciBlLHQ7Zm9yKGU9MDtlPGEubGVuZ3RoO2UrKylmb3IodD0wO3Q8Yy5sZW5ndGg7dCsrKWFbZV09PT1jW3RdLmlkJiZjLnNwbGljZSh0LDEpfX0pLGx9LG9uQ29udGVudFJlYWR5OmZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIHAub25BdmFpbGFibGUoZSx0LG4sciwhMCxpKX0sYXR0YWNoOmZ1bmN0aW9uKHQsbixyLGkpe3JldHVybiBwLl9hdHRhY2goZS5BcnJheShhcmd1bWVudHMsMCwhMCkpfSxfY3JlYXRlV3JhcHBlcjpmdW5jdGlvbih0LG4scyxvLHUpe3ZhciBhLGY9ZS5zdGFtcCh0KSxsPSJldmVudDoiK2YrbjtyZXR1cm4hMT09PXUmJihsKz0ibmF0aXZlIikscyYmKGwrPSJjYXB0dXJlIiksYT1kW2xdLGF8fChhPWUucHVibGlzaChsLHtzaWxlbnQ6ITAsYnViYmxlczohMSxlbWl0RmFjYWRlOiExLGNvbnRleHRGbjpmdW5jdGlvbigpe3JldHVybiBvP2EuZWw6KGEubm9kZVJlZj1hLm5vZGVSZWZ8fGUub25lKGEuZWwpLGEubm9kZVJlZil9fSksYS5vdmVycmlkZXM9e30sYS5lbD10LGEua2V5PWwsYS5kb21rZXk9ZixhLnR5cGU9bixhLmZuPWZ1bmN0aW9uKGUpe2EuZmlyZShwLmdldEV2ZW50KGUsdCxvfHwhMT09PXUpKX0sYS5jYXB0dXJlPXMsdD09ciYmbj09ImxvYWQiJiYoYS5maXJlT25jZT0hMCx2PWwpLGEuX2RlbGV0ZT1oLGRbbF09YSxtW2ZdPW1bZl18fHt9LG1bZl1bbF09YSxpKHQsbixhLmZuLHMpKSxhfSxfYXR0YWNoOmZ1bmN0aW9uKHQsbil7dmFyIGkscyxvLHUsYSxjPSExLGgsZD10WzBdLHY9dFsxXSxtPXRbMl18fHIsZz1uJiZuLmZhY2FkZSx5PW4mJm4uY2FwdHVyZSxiPW4mJm4ub3ZlcnJpZGVzO3RbdC5sZW5ndGgtMV09PT1mJiYoaT0hMCk7aWYoIXZ8fCF2LmNhbGwpcmV0dXJuITE7aWYobChtKSlyZXR1cm4gcz1bXSxlLmVhY2gobSxmdW5jdGlvbihlLHIpe3RbMl09ZSxzLnB1c2gocC5fYXR0YWNoKHQuc2xpY2UoKSxuKSl9KSxuZXcgZS5FdmVudEhhbmRsZShzKTtpZihlLkxhbmcuaXNTdHJpbmcobSkpe2lmKGkpbz1lLkRPTS5ieUlkKG0pO2Vsc2V7bz1lLlNlbGVjdG9yLnF1ZXJ5KG0pO3N3aXRjaChvLmxlbmd0aCl7Y2FzZSAwOm89bnVsbDticmVhaztjYXNlIDE6bz1vWzBdO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHRbMl09byxwLl9hdHRhY2godCxuKX19aWYoIW8pcmV0dXJuIGg9cC5vbkF2YWlsYWJsZShtLGZ1bmN0aW9uKCl7aC5oYW5kbGU9cC5fYXR0YWNoKHQsbil9LHAsITAsITEsaSksaDttPW99cmV0dXJuIG0/KGUuTm9kZSYmZS5pbnN0YW5jZU9mKG0sZS5Ob2RlKSYmKG09ZS5Ob2RlLmdldERPTU5vZGUobSkpLHU9cC5fY3JlYXRlV3JhcHBlcihtLGQseSxpLGcpLGImJmUubWl4KHUub3ZlcnJpZGVzLGIpLG09PXImJmQ9PSJsb2FkIiYmWVVJLkVudi53aW5kb3dMb2FkZWQmJihjPSEwKSxpJiZ0LnBvcCgpLGE9dFszXSxoPXUuX29uKHYsYSx0Lmxlbmd0aD40P3Quc2xpY2UoNCk6bnVsbCksYyYmdS5maXJlKCksaCk6ITF9LGRldGFjaDpmdW5jdGlvbih0LG4scixpKXt2YXIgcz1lLkFycmF5KGFyZ3VtZW50cywwLCEwKSxvLHUsYSxjLGgsdjtzW3MubGVuZ3RoLTFdPT09ZiYmKG89ITApO2lmKHQmJnQuZGV0YWNoKXJldHVybiB0LmRldGFjaCgpO3R5cGVvZiByPT0ic3RyaW5nIiYmKG8/cj1lLkRPTS5ieUlkKHIpOihyPWUuU2VsZWN0b3IucXVlcnkociksdT1yLmxlbmd0aCx1PDE/cj1udWxsOnU9PTEmJihyPXJbMF0pKSk7aWYoIXIpcmV0dXJuITE7aWYoci5kZXRhY2gpcmV0dXJuIHMuc3BsaWNlKDIsMSksci5kZXRhY2guYXBwbHkocixzKTtpZihsKHIpKXthPSEwO2ZvcihjPTAsdT1yLmxlbmd0aDtjPHU7KytjKXNbMl09cltjXSxhPWUuRXZlbnQuZGV0YWNoLmFwcGx5KGUuRXZlbnQscykmJmE7cmV0dXJuIGF9cmV0dXJuIXR8fCFufHwhbi5jYWxsP3AucHVyZ2VFbGVtZW50KHIsITEsdCk6KGg9ImV2ZW50OiIrZS5zdGFtcChyKSt0LHY9ZFtoXSx2P3YuZGV0YWNoKG4pOiExKX0sZ2V0RXZlbnQ6ZnVuY3Rpb24odCxuLGkpe3ZhciBzPXR8fHIuZXZlbnQ7cmV0dXJuIGk/czpuZXcgZS5ET01FdmVudEZhY2FkZShzLG4sZFsiZXZlbnQ6IitlLnN0YW1wKG4pK3QudHlwZV0pfSxnZW5lcmF0ZUlkOmZ1bmN0aW9uKHQpe3JldHVybiBlLkRPTS5nZW5lcmF0ZUlEKHQpfSxfaXNWYWxpZENvbGxlY3Rpb246bCxfbG9hZDpmdW5jdGlvbih0KXtufHwobj0hMCxlLmZpcmUmJmUuZmlyZShhKSxwLl9wb2xsKCkpfSxfcG9sbDpmdW5jdGlvbigpe2lmKHAubG9ja2VkKXJldHVybjtpZihlLlVBLmllJiYhWVVJLkVudi5ET01SZWFkeSl7cC5zdGFydEludGVydmFsKCk7cmV0dXJufXAubG9ja2VkPSEwO3ZhciB0LHIsaSxzLHUsYSxmPSFuO2Z8fChmPW8+MCksdT1bXSxhPWZ1bmN0aW9uKHQsbil7dmFyIHIsaT1uLm92ZXJyaWRlO3RyeXtuLmNvbXBhdD8obi5vdmVycmlkZT9pPT09ITA/cj1uLm9iajpyPWk6cj10LG4uZm4uY2FsbChyLG4ub2JqKSk6KHI9bi5vYmp8fGUub25lKHQpLG4uZm4uYXBwbHkocixlLkxhbmcuaXNBcnJheShpKT9pOltdKSl9Y2F0Y2gocyl7fX07Zm9yKHQ9MCxyPWMubGVuZ3RoO3Q8cjsrK3QpaT1jW3RdLGkmJiFpLmNoZWNrUmVhZHkmJihzPWkuY29tcGF0P2UuRE9NLmJ5SWQoaS5pZCk6ZS5TZWxlY3Rvci5xdWVyeShpLmlkLG51bGwsITApLHM/KGEocyxpKSxjW3RdPW51bGwpOnUucHVzaChpKSk7Zm9yKHQ9MCxyPWMubGVuZ3RoO3Q8cjsrK3Qpe2k9Y1t0XTtpZihpJiZpLmNoZWNrUmVhZHkpe3M9aS5jb21wYXQ/ZS5ET00uYnlJZChpLmlkKTplLlNlbGVjdG9yLnF1ZXJ5KGkuaWQsbnVsbCwhMCk7aWYocyl7aWYobnx8cy5nZXQmJnMuZ2V0KCJuZXh0U2libGluZyIpfHxzLm5leHRTaWJsaW5nKWEocyxpKSxjW3RdPW51bGx9ZWxzZSB1LnB1c2goaSl9fW89dS5sZW5ndGg9PT0wPzA6by0xLGY/cC5zdGFydEludGVydmFsKCk6KGNsZWFySW50ZXJ2YWwocC5faW50ZXJ2YWwpLHAuX2ludGVydmFsPW51bGwpLHAubG9ja2VkPSExO3JldHVybn0scHVyZ2VFbGVtZW50OmZ1bmN0aW9uKHQsbixyKXt2YXIgaT1lLkxhbmcuaXNTdHJpbmcodCk/ZS5TZWxlY3Rvci5xdWVyeSh0LG51bGwsITApOnQscz1wLmdldExpc3RlbmVycyhpLHIpLG8sdSxhLGY7aWYobiYmaSl7cz1zfHxbXSxhPWUuU2VsZWN0b3IucXVlcnkoIioiLGkpLHU9YS5sZW5ndGg7Zm9yKG89MDtvPHU7KytvKWY9cC5nZXRMaXN0ZW5lcnMoYVtvXSxyKSxmJiYocz1zLmNvbmNhdChmKSl9aWYocylmb3Iobz0wLHU9cy5sZW5ndGg7bzx1OysrbylzW29dLmRldGFjaEFsbCgpfQosX2NsZWFuOmZ1bmN0aW9uKHQpe3ZhciBuPXQua2V5LHI9dC5kb21rZXk7cyh0LmVsLHQudHlwZSx0LmZuLHQuY2FwdHVyZSksZGVsZXRlIGRbbl0sZGVsZXRlIGUuX3l1aWV2dC5ldmVudHNbbl0sbVtyXSYmKGRlbGV0ZSBtW3JdW25dLGUuT2JqZWN0LnNpemUobVtyXSl8fGRlbGV0ZSBtW3JdKX0sZ2V0TGlzdGVuZXJzOmZ1bmN0aW9uKG4scil7dmFyIGk9ZS5zdGFtcChuLCEwKSxzPW1baV0sbz1bXSx1PXI/ImV2ZW50OiIraStyOm51bGwsYT10LnBsdWdpbnM7cmV0dXJuIHM/KHU/KGFbcl0mJmFbcl0uZXZlbnREZWYmJih1Kz0iX3N5bnRoIiksc1t1XSYmby5wdXNoKHNbdV0pLHUrPSJuYXRpdmUiLHNbdV0mJm8ucHVzaChzW3VdKSk6ZS5lYWNoKHMsZnVuY3Rpb24oZSx0KXtvLnB1c2goZSl9KSxvLmxlbmd0aD9vOm51bGwpOm51bGx9LF91bmxvYWQ6ZnVuY3Rpb24odCl7ZS5lYWNoKGQsZnVuY3Rpb24oZSxuKXtlLnR5cGU9PSJ1bmxvYWQiJiZlLmZpcmUodCksZS5kZXRhY2hBbGwoKX0pLHMociwidW5sb2FkIix1KX0sbmF0aXZlQWRkOmksbmF0aXZlUmVtb3ZlOnN9fSgpO2UuRXZlbnQ9cCxuLmluamVjdGVkfHxZVUkuRW52LndpbmRvd0xvYWRlZD9vKCk6aShyLCJsb2FkIixvKTtpZihlLlVBLmllKXtlLm9uKGEscC5fcG9sbCk7aWYoZS5VQS5pZTw3KXRyeXtpKHIsInVubG9hZCIsdSl9Y2F0Y2goZCl7fX1wLkN1c3RvbT1lLkN1c3RvbUV2ZW50LHAuU3Vic2NyaWJlcj1lLlN1YnNjcmliZXIscC5UYXJnZXQ9ZS5FdmVudFRhcmdldCxwLkhhbmRsZT1lLkV2ZW50SGFuZGxlLHAuRmFjYWRlPWUuRXZlbnRGYWNhZGUscC5fcG9sbCgpfSgpLGUuRW52LmV2dC5wbHVnaW5zLmF2YWlsYWJsZT17b246ZnVuY3Rpb24odCxuLHIsaSl7dmFyIHM9YXJndW1lbnRzLmxlbmd0aD40P2UuQXJyYXkoYXJndW1lbnRzLDQsITApOm51bGw7cmV0dXJuIGUuRXZlbnQub25BdmFpbGFibGUuY2FsbChlLkV2ZW50LHIsbixpLHMpfX0sZS5FbnYuZXZ0LnBsdWdpbnMuY29udGVudHJlYWR5PXtvbjpmdW5jdGlvbih0LG4scixpKXt2YXIgcz1hcmd1bWVudHMubGVuZ3RoPjQ/ZS5BcnJheShhcmd1bWVudHMsNCwhMCk6bnVsbDtyZXR1cm4gZS5FdmVudC5vbkNvbnRlbnRSZWFkeS5jYWxsKGUuRXZlbnQscixuLGkscyl9fX0sIjMuMTcuMiIse3JlcXVpcmVzOlsiZXZlbnQtY3VzdG9tLWJhc2UiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgiZG9tLWNvcmUiLGZ1bmN0aW9uKGUsdCl7dmFyIG49Im5vZGVUeXBlIixyPSJvd25lckRvY3VtZW50IixpPSJkb2N1bWVudEVsZW1lbnQiLHM9ImRlZmF1bHRWaWV3IixvPSJwYXJlbnRXaW5kb3ciLHU9InRhZ05hbWUiLGE9InBhcmVudE5vZGUiLGY9InByZXZpb3VzU2libGluZyIsbD0ibmV4dFNpYmxpbmciLGM9ImNvbnRhaW5zIixoPSJjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiIscD1bXSxkPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5jb25maWcuZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLG49dC5hcHBlbmRDaGlsZChlLmNvbmZpZy5kb2MuY3JlYXRlVGV4dE5vZGUoIiIpKSxyPSExO3RyeXtyPXQuY29udGFpbnMobil9Y2F0Y2goaSl7fXJldHVybiByfSgpLHY9e2J5SWQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdi5hbGxCeUlkKGUsdClbMF18fG51bGx9LGdldElkOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBlLmlkJiYhZS5pZC50YWdOYW1lJiYhZS5pZC5pdGVtP3Q9ZS5pZDplLmF0dHJpYnV0ZXMmJmUuYXR0cmlidXRlcy5pZCYmKHQ9ZS5hdHRyaWJ1dGVzLmlkLnZhbHVlKSx0fSxzZXRJZDpmdW5jdGlvbihlLHQpe2Uuc2V0QXR0cmlidXRlP2Uuc2V0QXR0cmlidXRlKCJpZCIsdCk6ZS5pZD10fSxhbmNlc3RvcjpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT1udWxsO3JldHVybiBuJiYoaT0hdHx8dChlKT9lOm51bGwpLGl8fHYuZWxlbWVudEJ5QXhpcyhlLGEsdCxudWxsLHIpfSxhbmNlc3RvcnM6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ZSxzPVtdO3doaWxlKGk9di5hbmNlc3RvcihpLHQsbixyKSl7bj0hMTtpZihpKXtzLnVuc2hpZnQoaSk7aWYociYmcihpKSlyZXR1cm4gc319cmV0dXJuIHN9LGVsZW1lbnRCeUF4aXM6ZnVuY3Rpb24oZSx0LG4scixpKXt3aGlsZShlJiYoZT1lW3RdKSl7aWYoKHJ8fGVbdV0pJiYoIW58fG4oZSkpKXJldHVybiBlO2lmKGkmJmkoZSkpcmV0dXJuIG51bGx9cmV0dXJuIG51bGx9LGNvbnRhaW5zOmZ1bmN0aW9uKGUsdCl7dmFyIHI9ITE7aWYoIXR8fCFlfHwhdFtuXXx8IWVbbl0pcj0hMTtlbHNlIGlmKGVbY10mJih0W25dPT09MXx8ZCkpcj1lW2NdKHQpO2Vsc2UgaWYoZVtoXSl7aWYoZT09PXR8fCEhKGVbaF0odCkmMTYpKXI9ITB9ZWxzZSByPXYuX2JydXRlQ29udGFpbnMoZSx0KTtyZXR1cm4gcn0saW5Eb2M6ZnVuY3Rpb24oZSx0KXt2YXIgbj0hMSxzO3JldHVybiBlJiZlLm5vZGVUeXBlJiYodHx8KHQ9ZVtyXSkscz10W2ldLHMmJnMuY29udGFpbnMmJmUudGFnTmFtZT9uPXMuY29udGFpbnMoZSk6bj12LmNvbnRhaW5zKHMsZSkpLG59LGFsbEJ5SWQ6ZnVuY3Rpb24odCxuKXtuPW58fGUuY29uZmlnLmRvYzt2YXIgcj1bXSxpPVtdLHMsbztpZihuLnF1ZXJ5U2VsZWN0b3JBbGwpaT1uLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZD0iJyt0KyciXScpO2Vsc2UgaWYobi5hbGwpe3I9bi5hbGwodCk7aWYocil7ci5ub2RlTmFtZSYmKHIuaWQ9PT10PyhpLnB1c2gocikscj1wKTpyPVtyXSk7aWYoci5sZW5ndGgpZm9yKHM9MDtvPXJbcysrXTspKG8uaWQ9PT10fHxvLmF0dHJpYnV0ZXMmJm8uYXR0cmlidXRlcy5pZCYmby5hdHRyaWJ1dGVzLmlkLnZhbHVlPT09dCkmJmkucHVzaChvKX19ZWxzZSBpPVt2Ll9nZXREb2MobikuZ2V0RWxlbWVudEJ5SWQodCldO3JldHVybiBpfSxpc1dpbmRvdzpmdW5jdGlvbihlKXtyZXR1cm4hIShlJiZlLnNjcm9sbFRvJiZlLmRvY3VtZW50KX0sX3JlbW92ZUNoaWxkTm9kZXM6ZnVuY3Rpb24oZSl7d2hpbGUoZS5maXJzdENoaWxkKWUucmVtb3ZlQ2hpbGQoZS5maXJzdENoaWxkKX0sc2libGluZ3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPWU7d2hpbGUocj1yW2ZdKXJbdV0mJighdHx8dChyKSkmJm4udW5zaGlmdChyKTtyPWU7d2hpbGUocj1yW2xdKXJbdV0mJighdHx8dChyKSkmJm4ucHVzaChyKTtyZXR1cm4gbn0sX2JydXRlQ29udGFpbnM6ZnVuY3Rpb24oZSx0KXt3aGlsZSh0KXtpZihlPT09dClyZXR1cm4hMDt0PXQucGFyZW50Tm9kZX1yZXR1cm4hMX0sX2dldFJlZ0V4cDpmdW5jdGlvbihlLHQpe3JldHVybiB0PXR8fCIiLHYuX3JlZ2V4Q2FjaGU9di5fcmVnZXhDYWNoZXx8e30sdi5fcmVnZXhDYWNoZVtlK3RdfHwodi5fcmVnZXhDYWNoZVtlK3RdPW5ldyBSZWdFeHAoZSx0KSksdi5fcmVnZXhDYWNoZVtlK3RdfSxfZ2V0RG9jOmZ1bmN0aW9uKHQpe3ZhciBpPWUuY29uZmlnLmRvYztyZXR1cm4gdCYmKGk9dFtuXT09PTk/dDp0W3JdfHx0LmRvY3VtZW50fHxlLmNvbmZpZy5kb2MpLGl9LF9nZXRXaW46ZnVuY3Rpb24odCl7dmFyIG49di5fZ2V0RG9jKHQpO3JldHVybiBuW3NdfHxuW29dfHxlLmNvbmZpZy53aW59LF9iYXRjaDpmdW5jdGlvbihlLHQsbixyLGkscyl7dD10eXBlb2YgdD09InN0cmluZyI/dlt0XTp0O3ZhciBvLHU9MCxhLGY7aWYodCYmZSl3aGlsZShhPWVbdSsrXSlvPW89dC5jYWxsKHYsYSxuLHIsaSxzKSx0eXBlb2YgbyE9InVuZGVmaW5lZCImJihmfHwoZj1bXSksZi5wdXNoKG8pKTtyZXR1cm4gdHlwZW9mIGYhPSJ1bmRlZmluZWQiP2Y6ZX0sZ2VuZXJhdGVJRDpmdW5jdGlvbih0KXt2YXIgbj10LmlkO3JldHVybiBufHwobj1lLnN0YW1wKHQpLHQuaWQ9biksbn19O2UuRE9NPXZ9LCIzLjE3LjIiLHtyZXF1aXJlczpbIm9vcCIsImZlYXR1cmVzIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoImRvbS1iYXNlIixmdW5jdGlvbihlLHQpe3ZhciBuPWUuY29uZmlnLmRvYy5kb2N1bWVudEVsZW1lbnQscj1lLkRPTSxpPSJ0YWdOYW1lIixzPSJvd25lckRvY3VtZW50IixvPSIiLHU9ZS5GZWF0dXJlcy5hZGQsYT1lLkZlYXR1cmVzLnRlc3Q7ZS5taXgocix7Z2V0VGV4dDpuLnRleHRDb250ZW50IT09dW5kZWZpbmVkP2Z1bmN0aW9uKGUpe3ZhciB0PSIiO3JldHVybiBlJiYodD1lLnRleHRDb250ZW50KSx0fHwiIn06ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7cmV0dXJuIGUmJih0PWUuaW5uZXJUZXh0fHxlLm5vZGVWYWx1ZSksdHx8IiJ9LHNldFRleHQ6bi50ZXh0Q29udGVudCE9PXVuZGVmaW5lZD9mdW5jdGlvbihlLHQpe2UmJihlLnRleHRDb250ZW50PXQpfTpmdW5jdGlvbihlLHQpeyJpbm5lclRleHQiaW4gZT9lLmlubmVyVGV4dD10OiJub2RlVmFsdWUiaW4gZSYmKGUubm9kZVZhbHVlPXQpfSxDVVNUT01fQVRUUklCVVRFUzpuLmhhc0F0dHJpYnV0ZT97aHRtbEZvcjoiZm9yIixjbGFzc05hbWU6ImNsYXNzIn06eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUifSxzZXRBdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0LG4saSl7ZSYmdCYmZS5zZXRBdHRyaWJ1dGUmJih0PXIuQ1VTVE9NX0FUVFJJQlVURVNbdF18fHQsZS5zZXRBdHRyaWJ1dGUodCxuLGkpKX0sZ2V0QXR0cmlidXRlOmZ1bmN0aW9uKGUsdCxuKXtuPW4hPT11bmRlZmluZWQ/bjoyO3ZhciBpPSIiO3JldHVybiBlJiZ0JiZlLmdldEF0dHJpYnV0ZSYmKHQ9ci5DVVNUT01fQVRUUklCVVRFU1t0XXx8dCxpPWUudGFnTmFtZT09PSJCVVRUT04iJiZ0PT09InZhbHVlIj9yLmdldFZhbHVlKGUpOmUuZ2V0QXR0cmlidXRlKHQsbiksaT09PW51bGwmJihpPSIiKSksaX0sVkFMVUVfU0VUVEVSUzp7fSxWQUxVRV9HRVRURVJTOnt9LGdldFZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PSIiLG47cmV0dXJuIGUmJmVbaV0mJihuPXIuVkFMVUVfR0VUVEVSU1tlW2ldLnRvTG93ZXJDYXNlKCldLG4/dD1uKGUpOnQ9ZS52YWx1ZSksdD09PW8mJih0PW8pLHR5cGVvZiB0PT0ic3RyaW5nIj90OiIifSxzZXRWYWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuO2UmJmVbaV0mJihuPXIuVkFMVUVfU0VUVEVSU1tlW2ldLnRvTG93ZXJDYXNlKCldLHQ9dD09PW51bGw/IiI6dCxuP24oZSx0KTplLnZhbHVlPXQpfSxjcmVhdG9yczp7fX0pLHUoInZhbHVlLXNldCIsInNlbGVjdCIse3Rlc3Q6ZnVuY3Rpb24oKXt2YXIgdD1lLmNvbmZpZy5kb2MuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7cmV0dXJuIHQuaW5uZXJIVE1MPSI8b3B0aW9uPjE8L29wdGlvbj48b3B0aW9uPjI8L29wdGlvbj4iLHQudmFsdWU9IjIiLHQudmFsdWUmJnQudmFsdWU9PT0iMiJ9fSksYSgidmFsdWUtc2V0Iiwic2VsZWN0Iil8fChyLlZBTFVFX1NFVFRFUlMuc2VsZWN0PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAsaT1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJvcHRpb24iKSxzO3M9aVtuKytdOylpZihyLmdldFZhbHVlKHMpPT09dCl7cy5zZWxlY3RlZD0hMDticmVha319KSxlLm1peChyLlZBTFVFX0dFVFRFUlMse2J1dHRvbjpmdW5jdGlvbihlKXtyZXR1cm4gZS5hdHRyaWJ1dGVzJiZlLmF0dHJpYnV0ZXMudmFsdWU/ZS5hdHRyaWJ1dGVzLnZhbHVlLnZhbHVlOiIifX0pLGUubWl4KHIuVkFMVUVfU0VUVEVSUyx7YnV0dG9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5hdHRyaWJ1dGVzLnZhbHVlO258fChuPWVbc10uY3JlYXRlQXR0cmlidXRlKCJ2YWx1ZSIpLGUuc2V0QXR0cmlidXRlTm9kZShuKSksbi52YWx1ZT10fX0pLGUubWl4KHIuVkFMVUVfR0VUVEVSUyx7b3B0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUuYXR0cmlidXRlcztyZXR1cm4gdC52YWx1ZSYmdC52YWx1ZS5zcGVjaWZpZWQ/ZS52YWx1ZTplLnRleHR9LHNlbGVjdDpmdW5jdGlvbihlKXt2YXIgdD1lLnZhbHVlLG49ZS5vcHRpb25zO3JldHVybiBuJiZuLmxlbmd0aCYmKGUubXVsdGlwbGV8fGUuc2VsZWN0ZWRJbmRleD4tMSYmKHQ9ci5nZXRWYWx1ZShuW2Uuc2VsZWN0ZWRJbmRleF0pKSksdH19KTt2YXIgZixsLGM7ZS5taXgoZS5ET00se2hhc0NsYXNzOmZ1bmN0aW9uKHQsbil7dmFyIHI9ZS5ET00uX2dldFJlZ0V4cCgiKD86XnxcXHMrKSIrbisiKD86XFxzK3wkKSIpO3JldHVybiByLnRlc3QodC5jbGFzc05hbWUpfSxhZGRDbGFzczpmdW5jdGlvbih0LG4pe2UuRE9NLmhhc0NsYXNzKHQsbil8fCh0LmNsYXNzTmFtZT1lLkxhbmcudHJpbShbdC5jbGFzc05hbWUsbl0uam9pbigiICIpKSl9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKHQsbil7biYmbCh0LG4pJiYodC5jbGFzc05hbWU9ZS5MYW5nLnRyaW0odC5jbGFzc05hbWUucmVwbGFjZShlLkRPTS5fZ2V0UmVnRXhwKCIoPzpefFxccyspIituKyIoPzpcXHMrfCQpIiksIiAiKSksbCh0LG4pJiZjKHQsbikpfSxyZXBsYWNlQ2xhc3M6ZnVuY3Rpb24oZSx0LG4pe2MoZSx0KSxmKGUsbil9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uIT09dW5kZWZpbmVkP246IWwoZSx0KTtyP2YoZSx0KTpjKGUsdCl9fSksbD1lLkRPTS5oYXNDbGFzcyxjPWUuRE9NLnJlbW92ZUNsYXNzLGY9ZS5ET00uYWRkQ2xhc3M7dmFyIGg9LzwoW2Etel0rKS9pLHI9ZS5ET00sdT1lLkZlYXR1cmVzLmFkZCxhPWUuRmVhdHVyZXMudGVzdCxwPXt9LGQ9ZnVuY3Rpb24odCxuKXt2YXIgcj1lLmNvbmZpZy5kb2MuY3JlYXRlRWxlbWVudCgiZGl2IiksaT0hMDtyLmlubmVySFRNTD10O2lmKCFyLmZpcnN0Q2hpbGR8fHIuZmlyc3RDaGlsZC50YWdOYW1lIT09bi50b1VwcGVyQ2FzZSgpKWk9ITE7cmV0dXJuIGl9LHY9Lyg/OlwvKD86dGhlYWR8dGZvb3R8dGJvZHl8Y2FwdGlvbnxjb2x8Y29sZ3JvdXApPikrXHMqPHRib2R5LyxtPSI8dGFibGU+IixnPSI8L3RhYmxlPiIseTtlLm1peChlLkRPTSx7X2ZyYWdDbG9uZXM6e30sX2NyZWF0ZTpmdW5jdGlvbihlLHQsbil7bj1ufHwiZGl2Ijt2YXIgaT1yLl9mcmFnQ2xvbmVzW25dO3JldHVybiBpP2k9aS5jbG9uZU5vZGUoITEpOmk9ci5fZnJhZ0Nsb25lc1tuXT10LmNyZWF0ZUVsZW1lbnQobiksaS5pbm5lckhUTUw9ZSxpfSxfY2hpbGRyZW46ZnVuY3Rpb24oZSx0KXt2YXIgbj0wLHI9ZS5jaGlsZHJlbixpLHMsbztyJiZyLnRhZ3MmJih0P3I9ZS5jaGlsZHJlbi50YWdzKHQpOnM9ci50YWdzKCIhIikubGVuZ3RoKTtpZighcnx8IXIudGFncyYmdHx8cyl7aT1yfHxlLmNoaWxkTm9kZXMscj1bXTt3aGlsZShvPWlbbisrXSlvLm5vZGVUeXBlPT09MSYmKCF0fHx0PT09by50YWdOYW1lKSYmci5wdXNoKG8pfXJldHVybiByfHxbXX0sY3JlYXRlOmZ1bmN0aW9uKHQsbil7dHlwZW9mIHQ9PSJzdHJpbmciJiYodD1lLkxhbmcudHJpbSh0KSksbj1ufHxlLmNvbmZpZy5kb2M7dmFyIGk9aC5leGVjKHQpLHM9ci5fY3JlYXRlLG89cCx1PW51bGwsYSxmLGwsYztyZXR1cm4gdCE9dW5kZWZpbmVkJiYoaSYmaVsxXSYmKGE9b1tpWzFdLnRvTG93ZXJDYXNlKCldLHR5cGVvZiBhPT0iZnVuY3Rpb24iP3M9YTpmPWEpLGw9cyh0LG4sZiksYz1sLmNoaWxkTm9kZXMsYy5sZW5ndGg9PT0xP3U9bC5yZW1vdmVDaGlsZChjWzBdKTpjWzBdJiZjWzBdLmNsYXNzTmFtZT09PSJ5dWkzLWJpZy1kdW1teSI/KHk9bC5zZWxlY3RlZEluZGV4LGMubGVuZ3RoPT09Mj91PWNbMF0ubmV4dFNpYmxpbmc6KGwucmVtb3ZlQ2hpbGQoY1swXSksdT1yLl9ubDJmcmFnKGMsbikpKTp1PXIuX25sMmZyYWcoYyxuKSksdX0sX25sMmZyYWc6ZnVuY3Rpb24odCxuKXt2YXIgcj1udWxsLGkscztpZih0JiYodC5wdXNofHx0Lml0ZW0pJiZ0WzBdKXtuPW58fHRbMF0ub3duZXJEb2N1bWVudCxyPW4uY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHQuaXRlbSYmKHQ9ZS5BcnJheSh0LDAsITApKTtmb3IoaT0wLHM9dC5sZW5ndGg7aTxzO2krKylyLmFwcGVuZENoaWxkKHRbaV0pfXJldHVybiByfSxhZGRIVE1MOmZ1bmN0aW9uKHQsbixpKXt2YXIgcz10LnBhcmVudE5vZGUsbz0wLHUsYT1uLGY7aWYobiE9dW5kZWZpbmVkKWlmKG4ubm9kZVR5cGUpZj1uO2Vsc2UgaWYodHlwZW9mIG49PSJzdHJpbmcifHx0eXBlb2Ygbj09Im51bWJlciIpYT1mPXIuY3JlYXRlKG4pO2Vsc2UgaWYoblswXSYmblswXS5ub2RlVHlwZSl7Zj1lLmNvbmZpZy5kb2MuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO3doaWxlKHU9bltvKytdKWYuYXBwZW5kQ2hpbGQodSl9aWYoaSlpZihmJiZpLnBhcmVudE5vZGUpaS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShmLGkpO2Vsc2Ugc3dpdGNoKGkpe2Nhc2UicmVwbGFjZSI6d2hpbGUodC5maXJzdENoaWxkKXQucmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKTtmJiZ0LmFwcGVuZENoaWxkKGYpO2JyZWFrO2Nhc2UiYmVmb3JlIjpmJiZzLmluc2VydEJlZm9yZShmLHQpO2JyZWFrO2Nhc2UiYWZ0ZXIiOmYmJih0Lm5leHRTaWJsaW5nP3MuaW5zZXJ0QmVmb3JlKGYsdC5uZXh0U2libGluZyk6cy5hcHBlbmRDaGlsZChmKSk7YnJlYWs7ZGVmYXVsdDpmJiZ0LmFwcGVuZENoaWxkKGYpfWVsc2UgZiYmdC5hcHBlbmRDaGlsZChmKTtyZXR1cm4gdC5ub2RlTmFtZT09IlNFTEVDVCImJnk+MCYmKHQuc2VsZWN0ZWRJbmRleD15LTEpLGF9LHdyYXA6ZnVuY3Rpb24odCxuKXt2YXIgcj1uJiZuLm5vZGVUeXBlP246ZS5ET00uY3JlYXRlKG4pLGk9ci5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpO2kubGVuZ3RoJiYocj1pW2kubGVuZ3RoLTFdKSx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQocix0KSxyLmFwcGVuZENoaWxkKHQpfSx1bndyYXA6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlLG49dC5sYXN0Q2hpbGQscj1lLGk7aWYodCl7aT10LnBhcmVudE5vZGU7aWYoaSl7ZT10LmZpcnN0Q2hpbGQ7d2hpbGUoZSE9PW4pcj1lLm5leHRTaWJsaW5nLGkuaW5zZXJ0QmVmb3JlKGUsdCksZT1yO2kucmVwbGFjZUNoaWxkKG4sdCl9ZWxzZSB0LnJlbW92ZUNoaWxkKGUpfX19KSx1KCJpbm5lcmh0bWwiLCJ0YWJsZSIse3Rlc3Q6ZnVuY3Rpb24oKXt2YXIgdD1lLmNvbmZpZy5kb2MuY3JlYXRlRWxlbWVudCgidGFibGUiKTt0cnl7dC5pbm5lckhUTUw9Ijx0Ym9keT48L3Rib2R5PiJ9Y2F0Y2gobil7cmV0dXJuITF9cmV0dXJuIHQuZmlyc3RDaGlsZCYmdC5maXJzdENoaWxkLm5vZGVOYW1lPT09IlRCT0RZIn19KSx1KCJpbm5lcmh0bWwtZGl2IiwidHIiLHt0ZXN0OmZ1bmN0aW9uKCl7cmV0dXJuIGQoIjx0cj48L3RyPiIsInRyIil9fSksdSgiaW5uZXJodG1sLWRpdiIsInNjcmlwdCIse3Rlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gZCgiPHNjcmlwdD48L3NjcmlwdD4iLCJzY3JpcHQiKX19KSxhKCJpbm5lcmh0bWwiLCJ0YWJsZSIpfHwocC50Ym9keT1mdW5jdGlvbih0LG4pe3ZhciBpPXIuY3JlYXRlKG0rdCtnLG4pLHM9ZS5ET00uX2NoaWxkcmVuKGksInRib2R5IilbMF07cmV0dXJuIGkuY2hpbGRyZW4ubGVuZ3RoPjEmJnMmJiF2LnRlc3QodCkmJnMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzKSxpfSksYSgiaW5uZXJodG1sLWRpdiIsInNjcmlwdCIpfHwocC5zY3JpcHQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBuLmlubmVySFRNTD0iLSIrZSxuLnJlbW92ZUNoaWxkKG4uZmlyc3RDaGlsZCksbn0scC5saW5rPXAuc3R5bGU9cC5zY3JpcHQpLGEoImlubmVyaHRtbC1kaXYiLCJ0ciIpfHwoZS5taXgocCx7b3B0aW9uOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIuY3JlYXRlKCc8c2VsZWN0PjxvcHRpb24gY2xhc3M9Inl1aTMtYmlnLWR1bW15IiBzZWxlY3RlZD48L29wdGlvbj4nK2UrIjwvc2VsZWN0PiIsdCl9LHRyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIuY3JlYXRlKCI8dGJvZHk+IitlKyI8L3Rib2R5PiIsdCl9LHRkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIuY3JlYXRlKCI8dHI+IitlKyI8L3RyPiIsdCl9LGNvbDpmdW5jdGlvbihlLHQpe3JldHVybiByLmNyZWF0ZSgiPGNvbGdyb3VwPiIrZSsiPC9jb2xncm91cD4iLHQpfSx0Ym9keToidGFibGUifSksZS5taXgocCx7bGVnZW5kOiJmaWVsZHNldCIKLHRoOnAudGQsdGhlYWQ6cC50Ym9keSx0Zm9vdDpwLnRib2R5LGNhcHRpb246cC50Ym9keSxjb2xncm91cDpwLnRib2R5LG9wdGdyb3VwOnAub3B0aW9ufSkpLHIuY3JlYXRvcnM9cCxlLm1peChlLkRPTSx7c2V0V2lkdGg6ZnVuY3Rpb24odCxuKXtlLkRPTS5fc2V0U2l6ZSh0LCJ3aWR0aCIsbil9LHNldEhlaWdodDpmdW5jdGlvbih0LG4pe2UuRE9NLl9zZXRTaXplKHQsImhlaWdodCIsbil9LF9zZXRTaXplOmZ1bmN0aW9uKGUsdCxuKXtuPW4+MD9uOjA7dmFyIHI9MDtlLnN0eWxlW3RdPW4rInB4IixyPXQ9PT0iaGVpZ2h0Ij9lLm9mZnNldEhlaWdodDplLm9mZnNldFdpZHRoLHI+biYmKG4tPXItbixuPDAmJihuPTApLGUuc3R5bGVbdF09bisicHgiKX19KX0sIjMuMTcuMiIse3JlcXVpcmVzOlsiZG9tLWNvcmUiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgic2VsZWN0b3ItbmF0aXZlIixmdW5jdGlvbihlLHQpeyhmdW5jdGlvbihlKXtlLm5hbWVzcGFjZSgiU2VsZWN0b3IiKTt2YXIgdD0iY29tcGFyZURvY3VtZW50UG9zaXRpb24iLG49Im93bmVyRG9jdW1lbnQiLHI9e190eXBlczp7ZXNjOnt0b2tlbjoiXHVlMDAwIixyZTovXFxbOlxbXF1cKFwpI1wuXCdcPit+Il0vZ2l9LGF0dHI6e3Rva2VuOiJcdWUwMDEiLHJlOi8oXFtbXlxdXSpcXSkvZ30scHNldWRvOnt0b2tlbjoiXHVlMDAyIixyZTovKFwoW15cKV0qXCkpL2d9fSx1c2VOYXRpdmU6ITAsX2VzY2FwZUlkOmZ1bmN0aW9uKGUpe3JldHVybiBlJiYoZT1lLnJlcGxhY2UoLyhbOlxbXF1cKFwpI1wuJzw+K34iXSkvZywiXFwkMSIpKSxlfSxfY29tcGFyZToic291cmNlSW5kZXgiaW4gZS5jb25maWcuZG9jLmRvY3VtZW50RWxlbWVudD9mdW5jdGlvbihlLHQpe3ZhciBuPWUuc291cmNlSW5kZXgscj10LnNvdXJjZUluZGV4O3JldHVybiBuPT09cj8wOm4+cj8xOi0xfTplLmNvbmZpZy5kb2MuZG9jdW1lbnRFbGVtZW50W3RdP2Z1bmN0aW9uKGUsbil7cmV0dXJuIGVbdF0obikmND8tMToxfTpmdW5jdGlvbihlLHQpe3ZhciByLGkscztyZXR1cm4gZSYmdCYmKHI9ZVtuXS5jcmVhdGVSYW5nZSgpLHIuc2V0U3RhcnQoZSwwKSxpPXRbbl0uY3JlYXRlUmFuZ2UoKSxpLnNldFN0YXJ0KHQsMCkscz1yLmNvbXBhcmVCb3VuZGFyeVBvaW50cygxLGkpKSxzfSxfc29ydDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmKHQ9ZS5BcnJheSh0LDAsITApLHQuc29ydCYmdC5zb3J0KHIuX2NvbXBhcmUpKSx0fSxfZGVEdXBlOmZ1bmN0aW9uKGUpe3ZhciB0PVtdLG4scjtmb3Iobj0wO3I9ZVtuKytdOylyLl9mb3VuZHx8KHRbdC5sZW5ndGhdPXIsci5fZm91bmQ9ITApO2ZvcihuPTA7cj10W24rK107KXIuX2ZvdW5kPW51bGwsci5yZW1vdmVBdHRyaWJ1dGUoIl9mb3VuZCIpO3JldHVybiB0fSxxdWVyeTpmdW5jdGlvbih0LG4saSxzKXtuPW58fGUuY29uZmlnLmRvYzt2YXIgbz1bXSx1PWUuU2VsZWN0b3IudXNlTmF0aXZlJiZlLmNvbmZpZy5kb2MucXVlcnlTZWxlY3RvciYmIXMsYT1bW3Qsbl1dLGYsbCxjLGg9dT9lLlNlbGVjdG9yLl9uYXRpdmVRdWVyeTplLlNlbGVjdG9yLl9icnV0ZVF1ZXJ5O2lmKHQmJmgpeyFzJiYoIXV8fG4udGFnTmFtZSkmJihhPXIuX3NwbGl0UXVlcmllcyh0LG4pKTtmb3IoYz0wO2Y9YVtjKytdOylsPWgoZlswXSxmWzFdLGkpLGl8fChsPWUuQXJyYXkobCwwLCEwKSksbCYmKG89by5jb25jYXQobCkpO2EubGVuZ3RoPjEmJihvPXIuX3NvcnQoci5fZGVEdXBlKG8pKSl9cmV0dXJuIGk/b1swXXx8bnVsbDpvfSxfcmVwbGFjZVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3ZhciBuPWUuU2VsZWN0b3IuX3BhcnNlKCJlc2MiLHQpLGkscztyZXR1cm4gdD1lLlNlbGVjdG9yLl9yZXBsYWNlKCJlc2MiLHQpLHM9ZS5TZWxlY3Rvci5fcGFyc2UoInBzZXVkbyIsdCksdD1yLl9yZXBsYWNlKCJwc2V1ZG8iLHQpLGk9ZS5TZWxlY3Rvci5fcGFyc2UoImF0dHIiLHQpLHQ9ZS5TZWxlY3Rvci5fcmVwbGFjZSgiYXR0ciIsdCkse2VzYzpuLGF0dHJzOmkscHNldWRvczpzLHNlbGVjdG9yOnR9fSxfcmVzdG9yZVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3ZhciBuPXQuc2VsZWN0b3I7cmV0dXJuIG49ZS5TZWxlY3Rvci5fcmVzdG9yZSgiYXR0ciIsbix0LmF0dHJzKSxuPWUuU2VsZWN0b3IuX3Jlc3RvcmUoInBzZXVkbyIsbix0LnBzZXVkb3MpLG49ZS5TZWxlY3Rvci5fcmVzdG9yZSgiZXNjIixuLHQuZXNjKSxufSxfcmVwbGFjZUNvbW1hczpmdW5jdGlvbih0KXt2YXIgbj1lLlNlbGVjdG9yLl9yZXBsYWNlU2VsZWN0b3IodCksdD1uLnNlbGVjdG9yO3JldHVybiB0JiYodD10LnJlcGxhY2UoLywvZywiXHVlMDA3Iiksbi5zZWxlY3Rvcj10LHQ9ZS5TZWxlY3Rvci5fcmVzdG9yZVNlbGVjdG9yKG4pKSx0fSxfc3BsaXRRdWVyaWVzOmZ1bmN0aW9uKHQsbil7dC5pbmRleE9mKCIsIik+LTEmJih0PWUuU2VsZWN0b3IuX3JlcGxhY2VDb21tYXModCkpO3ZhciByPXQuc3BsaXQoIlx1ZTAwNyIpLGk9W10scz0iIixvLHUsYTtpZihuKXtuLm5vZGVUeXBlPT09MSYmKG89ZS5TZWxlY3Rvci5fZXNjYXBlSWQoZS5ET00uZ2V0SWQobikpLG98fChvPWUuZ3VpZCgpLGUuRE9NLnNldElkKG4sbykpLHM9J1tpZD0iJytvKyciXSAnKTtmb3IodT0wLGE9ci5sZW5ndGg7dTxhOysrdSl0PXMrclt1XSxpLnB1c2goW3Qsbl0pfXJldHVybiBpfSxfbmF0aXZlUXVlcnk6ZnVuY3Rpb24odCxuLHIpe2lmKChlLlVBLndlYmtpdHx8ZS5VQS5vcGVyYSkmJnQuaW5kZXhPZigiOmNoZWNrZWQiKT4tMSYmZS5TZWxlY3Rvci5wc2V1ZG9zJiZlLlNlbGVjdG9yLnBzZXVkb3MuY2hlY2tlZClyZXR1cm4gZS5TZWxlY3Rvci5xdWVyeSh0LG4sciwhMCk7dHJ5e3JldHVybiBuWyJxdWVyeVNlbGVjdG9yIisocj8iIjoiQWxsIildKHQpfWNhdGNoKGkpe3JldHVybiBlLlNlbGVjdG9yLnF1ZXJ5KHQsbixyLCEwKX19LGZpbHRlcjpmdW5jdGlvbih0LG4pe3ZhciByPVtdLGkscztpZih0JiZuKWZvcihpPTA7cz10W2krK107KWUuU2VsZWN0b3IudGVzdChzLG4pJiYocltyLmxlbmd0aF09cyk7cmV0dXJuIHJ9LHRlc3Q6ZnVuY3Rpb24odCxyLGkpe3ZhciBzPSExLG89ITEsdSxhLGYsbCxjLGgscCxkLHY7aWYodCYmdC50YWdOYW1lKWlmKHR5cGVvZiByPT0iZnVuY3Rpb24iKXM9ci5jYWxsKHQsdCk7ZWxzZXt1PXIuc3BsaXQoIiwiKSwhaSYmIWUuRE9NLmluRG9jKHQpJiYoYT10LnBhcmVudE5vZGUsYT9pPWE6KGM9dFtuXS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksYy5hcHBlbmRDaGlsZCh0KSxpPWMsbz0hMCkpLGk9aXx8dFtuXSxoPWUuU2VsZWN0b3IuX2VzY2FwZUlkKGUuRE9NLmdldElkKHQpKSxofHwoaD1lLmd1aWQoKSxlLkRPTS5zZXRJZCh0LGgpKTtmb3IocD0wO3Y9dVtwKytdOyl7dis9J1tpZD0iJytoKyciXScsbD1lLlNlbGVjdG9yLnF1ZXJ5KHYsaSk7Zm9yKGQ9MDtmPWxbZCsrXTspaWYoZj09PXQpe3M9ITA7YnJlYWt9aWYocylicmVha31vJiZjLnJlbW92ZUNoaWxkKHQpfXJldHVybiBzfSxhbmNlc3RvcjpmdW5jdGlvbih0LG4scil7cmV0dXJuIGUuRE9NLmFuY2VzdG9yKHQsZnVuY3Rpb24odCl7cmV0dXJuIGUuU2VsZWN0b3IudGVzdCh0LG4pfSxyKX0sX3BhcnNlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIG4ubWF0Y2goZS5TZWxlY3Rvci5fdHlwZXNbdF0ucmUpfSxfcmVwbGFjZTpmdW5jdGlvbih0LG4pe3ZhciByPWUuU2VsZWN0b3IuX3R5cGVzW3RdO3JldHVybiBuLnJlcGxhY2Uoci5yZSxyLnRva2VuKX0sX3Jlc3RvcmU6ZnVuY3Rpb24odCxuLHIpe2lmKHIpe3ZhciBpPWUuU2VsZWN0b3IuX3R5cGVzW3RdLnRva2VuLHMsbztmb3Iocz0wLG89ci5sZW5ndGg7czxvOysrcyluPW4ucmVwbGFjZShpLHJbc10pfXJldHVybiBufX07ZS5taXgoZS5TZWxlY3RvcixyLCEwKX0pKGUpfSwiMy4xNy4yIix7cmVxdWlyZXM6WyJkb20tYmFzZSJdfSk7Ci8qCllVSSAzLjE3LjIgKGJ1aWxkIDljM2M3OGUpCkNvcHlyaWdodCAyMDE0IFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZS4KaHR0cDovL3l1aWxpYnJhcnkuY29tL2xpY2Vuc2UvCiovCgpZVUkuYWRkKCJzZWxlY3RvciIsZnVuY3Rpb24oZSx0KXt9LCIzLjE3LjIiLHtyZXF1aXJlczpbInNlbGVjdG9yLW5hdGl2ZSJdfSk7Ci8qCllVSSAzLjE3LjIgKGJ1aWxkIDljM2M3OGUpCkNvcHlyaWdodCAyMDE0IFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZS4KaHR0cDovL3l1aWxpYnJhcnkuY29tL2xpY2Vuc2UvCiovCgpZVUkuYWRkKCJub2RlLWNvcmUiLGZ1bmN0aW9uKGUsdCl7dmFyIG49Ii4iLHI9Im5vZGVOYW1lIixpPSJub2RlVHlwZSIscz0ib3duZXJEb2N1bWVudCIsbz0idGFnTmFtZSIsdT0iX3l1aWQiLGE9e30sZj1BcnJheS5wcm90b3R5cGUuc2xpY2UsbD1lLkRPTSxjPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmdldERPTU5vZGUpcmV0dXJuIG5ldyBjKHQpO2lmKHR5cGVvZiB0PT0ic3RyaW5nIil7dD1jLl9mcm9tU3RyaW5nKHQpO2lmKCF0KXJldHVybiBudWxsfXZhciBuPXQubm9kZVR5cGUhPT05P3QudW5pcXVlSUQ6dFt1XTtuJiZjLl9pbnN0YW5jZXNbbl0mJmMuX2luc3RhbmNlc1tuXS5fbm9kZSE9PXQmJih0W3VdPW51bGwpLG49bnx8ZS5zdGFtcCh0KSxufHwobj1lLmd1aWQoKSksdGhpc1t1XT1uLHRoaXMuX25vZGU9dCx0aGlzLl9zdGF0ZVByb3h5PXQsdGhpcy5faW5pdFBsdWdpbnMmJnRoaXMuX2luaXRQbHVnaW5zKCl9LGg9ZnVuY3Rpb24odCl7dmFyIG49bnVsbDtyZXR1cm4gdCYmKG49dHlwZW9mIHQ9PSJzdHJpbmciP2Z1bmN0aW9uKG4pe3JldHVybiBlLlNlbGVjdG9yLnRlc3Qobix0KX06ZnVuY3Rpb24obil7cmV0dXJuIHQoZS5vbmUobikpfSksbn07Yy5BVFRSUz17fSxjLkRPTV9FVkVOVFM9e30sYy5fZnJvbVN0cmluZz1mdW5jdGlvbih0KXtyZXR1cm4gdCYmKHQuaW5kZXhPZigiZG9jIik9PT0wP3Q9ZS5jb25maWcuZG9jOnQuaW5kZXhPZigid2luIik9PT0wP3Q9ZS5jb25maWcud2luOnQ9ZS5TZWxlY3Rvci5xdWVyeSh0LG51bGwsITApKSx0fHxudWxsfSxjLk5BTUU9Im5vZGUiLGMucmVfYXJpYT0vXig/OnJvbGUkfGFyaWEtKS8sYy5TSE9XX1RSQU5TSVRJT049ImZhZGVJbiIsYy5ISURFX1RSQU5TSVRJT049ImZhZGVPdXQiLGMuX2luc3RhbmNlcz17fSxjLmdldERPTU5vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU/ZS5ub2RlVHlwZT9lOmUuX25vZGV8fG51bGw6bnVsbH0sYy5zY3J1YlZhbD1mdW5jdGlvbih0LG4pe2lmKHQpe2lmKHR5cGVvZiB0PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpaWYoaSBpbiB0fHxsLmlzV2luZG93KHQpKXQ9ZS5vbmUodCk7ZWxzZSBpZih0Lml0ZW0mJiF0Ll9ub2Rlc3x8dFswXSYmdFswXVtpXSl0PWUuYWxsKHQpfWVsc2UgdHlwZW9mIHQ9PSJ1bmRlZmluZWQiP3Q9bjp0PT09bnVsbCYmKHQ9bnVsbCk7cmV0dXJuIHR9LGMuYWRkTWV0aG9kPWZ1bmN0aW9uKGUsdCxuKXtlJiZ0JiZ0eXBlb2YgdD09ImZ1bmN0aW9uIiYmKGMucHJvdG90eXBlW2VdPWZ1bmN0aW9uKCl7dmFyIGU9Zi5jYWxsKGFyZ3VtZW50cykscj10aGlzLGk7cmV0dXJuIGVbMF0mJmVbMF0uX25vZGUmJihlWzBdPWVbMF0uX25vZGUpLGVbMV0mJmVbMV0uX25vZGUmJihlWzFdPWVbMV0uX25vZGUpLGUudW5zaGlmdChyLl9ub2RlKSxpPXQuYXBwbHkobnx8cixlKSxpJiYoaT1jLnNjcnViVmFsKGkscikpLHR5cGVvZiBpIT0idW5kZWZpbmVkInx8KGk9ciksaX0pfSxjLmltcG9ydE1ldGhvZD1mdW5jdGlvbih0LG4scil7dHlwZW9mIG49PSJzdHJpbmciPyhyPXJ8fG4sYy5hZGRNZXRob2Qocix0W25dLHQpKTplLkFycmF5LmVhY2gobixmdW5jdGlvbihlKXtjLmltcG9ydE1ldGhvZCh0LGUpfSl9LGMub25lPWZ1bmN0aW9uKHQpe3ZhciBuPW51bGwscixpO2lmKHQpe2lmKHR5cGVvZiB0PT0ic3RyaW5nIil7dD1jLl9mcm9tU3RyaW5nKHQpO2lmKCF0KXJldHVybiBudWxsfWVsc2UgaWYodC5nZXRET01Ob2RlKXJldHVybiB0O2lmKHQubm9kZVR5cGV8fGUuRE9NLmlzV2luZG93KHQpKXtpPXQudW5pcXVlSUQmJnQubm9kZVR5cGUhPT05P3QudW5pcXVlSUQ6dC5feXVpZCxuPWMuX2luc3RhbmNlc1tpXSxyPW4/bi5fbm9kZTpudWxsO2lmKCFufHxyJiZ0IT09ciluPW5ldyBjKHQpLHQubm9kZVR5cGUhPTExJiYoYy5faW5zdGFuY2VzW25bdV1dPW4pfX1yZXR1cm4gbn0sYy5ERUZBVUxUX1NFVFRFUj1mdW5jdGlvbih0LHIpe3ZhciBpPXRoaXMuX3N0YXRlUHJveHkscztyZXR1cm4gdC5pbmRleE9mKG4pPi0xPyhzPXQsdD10LnNwbGl0KG4pLGUuT2JqZWN0LnNldFZhbHVlKGksdCxyKSk6dHlwZW9mIGlbdF0hPSJ1bmRlZmluZWQiJiYoaVt0XT1yKSxyfSxjLkRFRkFVTFRfR0VUVEVSPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX3N0YXRlUHJveHksaTtyZXR1cm4gdC5pbmRleE9mJiZ0LmluZGV4T2Yobik+LTE/aT1lLk9iamVjdC5nZXRWYWx1ZShyLHQuc3BsaXQobikpOnR5cGVvZiByW3RdIT0idW5kZWZpbmVkIiYmKGk9clt0XSksaX0sZS5taXgoYy5wcm90b3R5cGUse0RBVEFfUFJFRklYOiJkYXRhLSIsdG9TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgZT10aGlzW3VdKyI6IG5vdCBib3VuZCB0byBhIG5vZGUiLHQ9dGhpcy5fbm9kZSxuLGkscztyZXR1cm4gdCYmKG49dC5hdHRyaWJ1dGVzLGk9biYmbi5pZD90LmdldEF0dHJpYnV0ZSgiaWQiKTpudWxsLHM9biYmbi5jbGFzc05hbWU/dC5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpOm51bGwsZT10W3JdLGkmJihlKz0iIyIraSkscyYmKGUrPSIuIitzLnJlcGxhY2UoIiAiLCIuIikpLGUrPSIgIit0aGlzW3VdKSxlfSxnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHRoaXMuX2dldEF0dHI/dD10aGlzLl9nZXRBdHRyKGUpOnQ9dGhpcy5fZ2V0KGUpLHQ/dD1jLnNjcnViVmFsKHQsdGhpcyk6dD09PW51bGwmJih0PW51bGwpLHR9LF9nZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9Yy5BVFRSU1tlXSxuO3JldHVybiB0JiZ0LmdldHRlcj9uPXQuZ2V0dGVyLmNhbGwodGhpcyk6Yy5yZV9hcmlhLnRlc3QoZSk/bj10aGlzLl9ub2RlLmdldEF0dHJpYnV0ZShlLDIpOm49Yy5ERUZBVUxUX0dFVFRFUi5hcHBseSh0aGlzLGFyZ3VtZW50cyksbn0sc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG49Yy5BVFRSU1tlXTtyZXR1cm4gdGhpcy5fc2V0QXR0cj90aGlzLl9zZXRBdHRyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuJiZuLnNldHRlcj9uLnNldHRlci5jYWxsKHRoaXMsdCxlKTpjLnJlX2FyaWEudGVzdChlKT90aGlzLl9ub2RlLnNldEF0dHJpYnV0ZShlLHQpOmMuREVGQVVMVF9TRVRURVIuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXN9LHNldEF0dHJzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zZXRBdHRycz90aGlzLl9zZXRBdHRycyh0KTplLk9iamVjdC5lYWNoKHQsZnVuY3Rpb24oZSx0KXt0aGlzLnNldCh0LGUpfSx0aGlzKSx0aGlzfSxnZXRBdHRyczpmdW5jdGlvbih0KXt2YXIgbj17fTtyZXR1cm4gdGhpcy5fZ2V0QXR0cnM/dGhpcy5fZ2V0QXR0cnModCk6ZS5BcnJheS5lYWNoKHQsZnVuY3Rpb24oZSx0KXtuW2VdPXRoaXMuZ2V0KGUpfSx0aGlzKSxufSxjb21wYXJlVG86ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbm9kZTtyZXR1cm4gZSYmZS5fbm9kZSYmKGU9ZS5fbm9kZSksdD09PWV9LGluRG9jOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX25vZGU7aWYodCl7ZT1lP2UuX25vZGV8fGU6dFtzXTtpZihlLmRvY3VtZW50RWxlbWVudClyZXR1cm4gbC5jb250YWlucyhlLmRvY3VtZW50RWxlbWVudCx0KX1yZXR1cm4hMX0sZ2V0QnlJZDpmdW5jdGlvbih0KXt2YXIgbj10aGlzLl9ub2RlLHI9bC5ieUlkKHQsbltzXSk7cmV0dXJuIHImJmwuY29udGFpbnMobixyKT9yPWUub25lKHIpOnI9bnVsbCxyfSxhbmNlc3RvcjpmdW5jdGlvbih0LG4scil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0yJiYodHlwZW9mIG49PSJzdHJpbmcifHx0eXBlb2Ygbj09ImZ1bmN0aW9uIikmJihyPW4pLGUub25lKGwuYW5jZXN0b3IodGhpcy5fbm9kZSxoKHQpLG4saChyKSkpfSxhbmNlc3RvcnM6ZnVuY3Rpb24odCxuLHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MiYmKHR5cGVvZiBuPT0ic3RyaW5nInx8dHlwZW9mIG49PSJmdW5jdGlvbiIpJiYocj1uKSxlLmFsbChsLmFuY2VzdG9ycyh0aGlzLl9ub2RlLGgodCksbixoKHIpKSl9LHByZXZpb3VzOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGUub25lKGwuZWxlbWVudEJ5QXhpcyh0aGlzLl9ub2RlLCJwcmV2aW91c1NpYmxpbmciLGgodCksbikpfSxuZXh0OmZ1bmN0aW9uKHQsbil7cmV0dXJuIGUub25lKGwuZWxlbWVudEJ5QXhpcyh0aGlzLl9ub2RlLCJuZXh0U2libGluZyIsaCh0KSxuKSl9LHNpYmxpbmdzOmZ1bmN0aW9uKHQpe3JldHVybiBlLmFsbChsLnNpYmxpbmdzKHRoaXMuX25vZGUsaCh0KSkpfSxvbmU6ZnVuY3Rpb24odCl7cmV0dXJuIGUub25lKGUuU2VsZWN0b3IucXVlcnkodCx0aGlzLl9ub2RlLCEwKSl9LGFsbDpmdW5jdGlvbih0KXt2YXIgbjtyZXR1cm4gdGhpcy5fbm9kZSYmKG49ZS5hbGwoZS5TZWxlY3Rvci5xdWVyeSh0LHRoaXMuX25vZGUpKSxuLl9xdWVyeT10LG4uX3F1ZXJ5Um9vdD10aGlzLl9ub2RlKSxufHxlLmFsbChbXSl9LHRlc3Q6ZnVuY3Rpb24odCl7cmV0dXJuIGUuU2VsZWN0b3IudGVzdCh0aGlzLl9ub2RlLHQpfSxyZW1vdmU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbm9kZTtyZXR1cm4gdCYmdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksZSYmdGhpcy5kZXN0cm95KCksdGhpc30scmVwbGFjZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9ub2RlO3JldHVybiB0eXBlb2YgZT09InN0cmluZyImJihlPWMuY3JlYXRlKGUpKSx0LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGMuZ2V0RE9NTm9kZShlKSx0KSx0aGlzfSxyZXBsYWNlQ2hpbGQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciJiYodD1sLmNyZWF0ZSh0KSksZS5vbmUodGhpcy5fbm9kZS5yZXBsYWNlQ2hpbGQoYy5nZXRET01Ob2RlKHQpLGMuZ2V0RE9NTm9kZShuKSkpfSxkZXN0cm95OmZ1bmN0aW9uKHQpe3ZhciBuPWUuY29uZmlnLmRvYy51bmlxdWVJRD8idW5pcXVlSUQiOiJfeXVpZCIscjt0aGlzLnB1cmdlKCksdGhpcy51bnBsdWcmJnRoaXMudW5wbHVnKCksdGhpcy5jbGVhckRhdGEoKSx0JiZlLk5vZGVMaXN0LmVhY2godGhpcy5hbGwoIioiKSxmdW5jdGlvbih0KXtyPWMuX2luc3RhbmNlc1t0W25dXSxyP3IuZGVzdHJveSgpOmUuRXZlbnQucHVyZ2VFbGVtZW50KHQpfSksdGhpcy5fbm9kZT1udWxsLHRoaXMuX3N0YXRlUHJveHk9bnVsbCxkZWxldGUgYy5faW5zdGFuY2VzW3RoaXMuX3l1aWRdfSxpbnZva2U6ZnVuY3Rpb24oZSx0LG4scixpLHMpe3ZhciBvPXRoaXMuX25vZGUsdTtyZXR1cm4gdCYmdC5fbm9kZSYmKHQ9dC5fbm9kZSksbiYmbi5fbm9kZSYmKG49bi5fbm9kZSksdT1vW2VdKHQsbixyLGkscyksYy5zY3J1YlZhbCh1LHRoaXMpfSxzd2FwOmUuY29uZmlnLmRvYy5kb2N1bWVudEVsZW1lbnQuc3dhcE5vZGU/ZnVuY3Rpb24oZSl7dGhpcy5fbm9kZS5zd2FwTm9kZShjLmdldERPTU5vZGUoZSkpfTpmdW5jdGlvbihlKXtlPWMuZ2V0RE9NTm9kZShlKTt2YXIgdD10aGlzLl9ub2RlLG49ZS5wYXJlbnROb2RlLHI9ZS5uZXh0U2libGluZztyZXR1cm4gcj09PXQ/bi5pbnNlcnRCZWZvcmUodCxlKTplPT09dC5uZXh0U2libGluZz9uLmluc2VydEJlZm9yZShlLHQpOih0LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGUsdCksbC5hZGRIVE1MKG4sdCxyKSksdGhpc30saGFzTWV0aG9kOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX25vZGU7cmV0dXJuISghKHQmJmUgaW4gdCYmdHlwZW9mIHRbZV0hPSJ1bmtub3duIil8fHR5cGVvZiB0W2VdIT0iZnVuY3Rpb24iJiZTdHJpbmcodFtlXSkuaW5kZXhPZigiZnVuY3Rpb24iKSE9PTEpfSxpc0ZyYWdtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KCJub2RlVHlwZSIpPT09MTF9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KCJjaGlsZE5vZGVzIikucmVtb3ZlKCkuZGVzdHJveSghMCksdGhpc30sZ2V0RE9NTm9kZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub2RlfX0sITApLGUuTm9kZT1jLGUub25lPWMub25lO3ZhciBwPWZ1bmN0aW9uKHQpe3ZhciBuPVtdO3QmJih0eXBlb2YgdD09InN0cmluZyI/KHRoaXMuX3F1ZXJ5PXQsdD1lLlNlbGVjdG9yLnF1ZXJ5KHQpKTp0Lm5vZGVUeXBlfHxsLmlzV2luZG93KHQpP3Q9W3RdOnQuX25vZGU/dD1bdC5fbm9kZV06CnRbMF0mJnRbMF0uX25vZGU/KGUuQXJyYXkuZWFjaCh0LGZ1bmN0aW9uKGUpe2UuX25vZGUmJm4ucHVzaChlLl9ub2RlKX0pLHQ9bik6dD1lLkFycmF5KHQsMCwhMCkpLHRoaXMuX25vZGVzPXR8fFtdfTtwLk5BTUU9Ik5vZGVMaXN0IixwLmdldERPTU5vZGVzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9ub2Rlcz9lLl9ub2RlczplfSxwLmVhY2g9ZnVuY3Rpb24odCxuLHIpe3ZhciBpPXQuX25vZGVzO2kmJmkubGVuZ3RoJiZlLkFycmF5LmVhY2goaSxuLHJ8fHQpfSxwLmFkZE1ldGhvZD1mdW5jdGlvbih0LG4scil7dCYmbiYmKHAucHJvdG90eXBlW3RdPWZ1bmN0aW9uKCl7dmFyIHQ9W10saT1hcmd1bWVudHM7cmV0dXJuIGUuQXJyYXkuZWFjaCh0aGlzLl9ub2RlcyxmdW5jdGlvbihzKXt2YXIgbz1zLnVuaXF1ZUlEJiZzLm5vZGVUeXBlIT09OT8idW5pcXVlSUQiOiJfeXVpZCIsdT1lLk5vZGUuX2luc3RhbmNlc1tzW29dXSxhLGY7dXx8KHU9cC5fZ2V0VGVtcE5vZGUocykpLGE9cnx8dSxmPW4uYXBwbHkoYSxpKSxmIT09dW5kZWZpbmVkJiZmIT09dSYmKHRbdC5sZW5ndGhdPWYpfSksdC5sZW5ndGg/dDp0aGlzfSl9LHAuaW1wb3J0TWV0aG9kPWZ1bmN0aW9uKHQsbixyKXt0eXBlb2Ygbj09InN0cmluZyI/KHI9cnx8bixwLmFkZE1ldGhvZChuLHRbbl0pKTplLkFycmF5LmVhY2gobixmdW5jdGlvbihlKXtwLmltcG9ydE1ldGhvZCh0LGUpfSl9LHAuX2dldFRlbXBOb2RlPWZ1bmN0aW9uKHQpe3ZhciBuPXAuX3RlbXBOb2RlO3JldHVybiBufHwobj1lLk5vZGUuY3JlYXRlKCI8ZGl2PjwvZGl2PiIpLHAuX3RlbXBOb2RlPW4pLG4uX25vZGU9dCxuLl9zdGF0ZVByb3h5PXQsbn0sZS5taXgocC5wcm90b3R5cGUse19pbnZva2U6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4/W106dGhpcztyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpe3ZhciBzPWlbZV0uYXBwbHkoaSx0KTtuJiZyLnB1c2gocyl9KSxyfSxpdGVtOmZ1bmN0aW9uKHQpe3JldHVybiBlLm9uZSgodGhpcy5fbm9kZXN8fFtdKVt0XSl9LGVhY2g6ZnVuY3Rpb24odCxuKXt2YXIgcj10aGlzO3JldHVybiBlLkFycmF5LmVhY2godGhpcy5fbm9kZXMsZnVuY3Rpb24oaSxzKXtyZXR1cm4gaT1lLm9uZShpKSx0LmNhbGwobnx8aSxpLHMscil9KSxyfSxiYXRjaDpmdW5jdGlvbih0LG4pe3ZhciByPXRoaXM7cmV0dXJuIGUuQXJyYXkuZWFjaCh0aGlzLl9ub2RlcyxmdW5jdGlvbihpLHMpe3ZhciBvPWUuTm9kZS5faW5zdGFuY2VzW2lbdV1dO3JldHVybiBvfHwobz1wLl9nZXRUZW1wTm9kZShpKSksdC5jYWxsKG58fG8sbyxzLHIpfSkscn0sc29tZTpmdW5jdGlvbih0LG4pe3ZhciByPXRoaXM7cmV0dXJuIGUuQXJyYXkuc29tZSh0aGlzLl9ub2RlcyxmdW5jdGlvbihpLHMpe3JldHVybiBpPWUub25lKGkpLG49bnx8aSx0LmNhbGwobixpLHMscil9KX0sdG9GcmFnOmZ1bmN0aW9uKCl7cmV0dXJuIGUub25lKGUuRE9NLl9ubDJmcmFnKHRoaXMuX25vZGVzKSl9LGluZGV4T2Y6ZnVuY3Rpb24odCl7cmV0dXJuIGUuQXJyYXkuaW5kZXhPZih0aGlzLl9ub2RlcyxlLk5vZGUuZ2V0RE9NTm9kZSh0KSl9LGZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gZS5hbGwoZS5TZWxlY3Rvci5maWx0ZXIodGhpcy5fbm9kZXMsdCkpfSxtb2R1bHVzOmZ1bmN0aW9uKHQsbil7bj1ufHwwO3ZhciByPVtdO3JldHVybiBwLmVhY2godGhpcyxmdW5jdGlvbihlLGkpe2kldD09PW4mJnIucHVzaChlKX0pLGUuYWxsKHIpfSxvZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb2R1bHVzKDIsMSl9LGV2ZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb2R1bHVzKDIpfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7fSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIHQsbj10aGlzLl9ub2RlcyxyPXRoaXMuX3F1ZXJ5LGk9dGhpcy5fcXVlcnlSb290O3JldHVybiByJiYoaXx8biYmblswXSYmblswXS5vd25lckRvY3VtZW50JiYoaT1uWzBdLm93bmVyRG9jdW1lbnQpLHRoaXMuX25vZGVzPWUuU2VsZWN0b3IucXVlcnkocixpKSksdGhpc30sc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub2Rlcy5sZW5ndGh9LGlzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbm9kZXMubGVuZ3RoPDF9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGU9IiIsdD10aGlzW3VdKyI6IG5vdCBib3VuZCB0byBhbnkgbm9kZXMiLG49dGhpcy5fbm9kZXMsaTtyZXR1cm4gbiYmblswXSYmKGk9blswXSxlKz1pW3JdLGkuaWQmJihlKz0iIyIraS5pZCksaS5jbGFzc05hbWUmJihlKz0iLiIraS5jbGFzc05hbWUucmVwbGFjZSgiICIsIi4iKSksbi5sZW5ndGg+MSYmKGUrPSIuLi5bIituLmxlbmd0aCsiIGl0ZW1zXSIpKSxlfHx0fSxnZXRET01Ob2RlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub2Rlc319LCEwKSxwLmltcG9ydE1ldGhvZChlLk5vZGUucHJvdG90eXBlLFsiZGVzdHJveSIsImVtcHR5IiwicmVtb3ZlIiwic2V0Il0pLHAucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgbj1bXSxyPXRoaXMuX25vZGVzLGk9ITEscz1wLl9nZXRUZW1wTm9kZSxvLHU7cmV0dXJuIHJbMF0mJihvPWUuTm9kZS5faW5zdGFuY2VzW3JbMF0uX3l1aWRdfHxzKHJbMF0pLHU9by5fZ2V0KHQpLHUmJnUubm9kZVR5cGUmJihpPSEwKSksZS5BcnJheS5lYWNoKHIsZnVuY3Rpb24ocil7bz1lLk5vZGUuX2luc3RhbmNlc1tyLl95dWlkXSxvfHwobz1zKHIpKSx1PW8uX2dldCh0KSxpfHwodT1lLk5vZGUuc2NydWJWYWwodSxvKSksbi5wdXNoKHUpfSksaT9lLmFsbChuKTpufSxlLk5vZGVMaXN0PXAsZS5hbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBwKGUpfSxlLk5vZGUuYWxsPWUuYWxsO3ZhciBkPWUuTm9kZUxpc3Qsdj1BcnJheS5wcm90b3R5cGUsbT17Y29uY2F0OjEscG9wOjAscHVzaDowLHNoaWZ0OjAsc2xpY2U6MSxzcGxpY2U6MSx1bnNoaWZ0OjB9O2UuT2JqZWN0LmVhY2gobSxmdW5jdGlvbih0LG4pe2QucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7dmFyIHI9W10saT0wLHMsbzt3aGlsZSh0eXBlb2YgKHM9YXJndW1lbnRzW2krK10pIT0idW5kZWZpbmVkIilyLnB1c2gocy5fbm9kZXx8cy5fbm9kZXN8fHMpO3JldHVybiBvPXZbbl0uYXBwbHkodGhpcy5fbm9kZXMsciksdD9vPWUuYWxsKG8pOm89ZS5Ob2RlLnNjcnViVmFsKG8pLG99fSksZS5BcnJheS5lYWNoKFsicmVtb3ZlQ2hpbGQiLCJoYXNDaGlsZE5vZGVzIiwiY2xvbmVOb2RlIiwiaGFzQXR0cmlidXRlIiwic2Nyb2xsSW50b1ZpZXciLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImZvY3VzIiwiYmx1ciIsInN1Ym1pdCIsInJlc2V0Iiwic2VsZWN0IiwiY3JlYXRlQ2FwdGlvbiJdLGZ1bmN0aW9uKHQpe2UuTm9kZS5wcm90b3R5cGVbdF09ZnVuY3Rpb24oZSxuLHIpe3ZhciBpPXRoaXMuaW52b2tlKHQsZSxuLHIpO3JldHVybiBpfX0pLGUuTm9kZS5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX25vZGU7cmV0dXJuIHQmJnQucmVtb3ZlQXR0cmlidXRlKGUsMCksdGhpc30sZS5Ob2RlLmltcG9ydE1ldGhvZChlLkRPTSxbImNvbnRhaW5zIiwic2V0QXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwid3JhcCIsInVud3JhcCIsImdlbmVyYXRlSUQiXSksZS5Ob2RlTGlzdC5pbXBvcnRNZXRob2QoZS5Ob2RlLnByb3RvdHlwZSxbImdldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsInVud3JhcCIsIndyYXAiLCJnZW5lcmF0ZUlEIl0pfSwiMy4xNy4yIix7cmVxdWlyZXM6WyJkb20tY29yZSIsInNlbGVjdG9yIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoImRvbS1zdHlsZSIsZnVuY3Rpb24oZSx0KXt2YXIgbj0iZG9jdW1lbnRFbGVtZW50IixyPSJkZWZhdWx0VmlldyIsaT0ib3duZXJEb2N1bWVudCIscz0ic3R5bGUiLG89ImZsb2F0Iix1PSJjc3NGbG9hdCIsYT0ic3R5bGVGbG9hdCIsZj0idHJhbnNwYXJlbnQiLGw9ImdldENvbXB1dGVkU3R5bGUiLGM9ImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsaD1lLmNvbmZpZy5kb2MscD1lLkRPTSxkLHYsbT1bIldlYmtpdFRyYW5zZm9ybSIsIk1velRyYW5zZm9ybSIsIk9UcmFuc2Zvcm0iLCJtc1RyYW5zZm9ybSIsInRyYW5zZm9ybSJdLGc9L3dpZHRofGhlaWdodHx0b3B8bGVmdHxyaWdodHxib3R0b218bWFyZ2lufHBhZGRpbmcvaTtlLkFycmF5LmVhY2gobSxmdW5jdGlvbihlKXtlIGluIGhbbl0uc3R5bGUmJihkPWUsdj1lKyJPcmlnaW4iKX0pLGUubWl4KHAse0RFRkFVTFRfVU5JVDoicHgiLENVU1RPTV9TVFlMRVM6e30sc2V0U3R5bGU6ZnVuY3Rpb24oZSx0LG4scil7cj1yfHxlLnN0eWxlO3ZhciBpPXAuQ1VTVE9NX1NUWUxFUztpZihyKXtuPT09bnVsbHx8bj09PSIiP249IiI6IWlzTmFOKE51bWJlcihuKSkmJmcudGVzdCh0KSYmKG4rPXAuREVGQVVMVF9VTklUKTtpZih0IGluIGkpe2lmKGlbdF0uc2V0KXtpW3RdLnNldChlLG4scik7cmV0dXJufXR5cGVvZiBpW3RdPT0ic3RyaW5nIiYmKHQ9aVt0XSl9ZWxzZSB0PT09IiImJih0PSJjc3NUZXh0IixuPSIiKTtyW3RdPW59fSxnZXRTdHlsZTpmdW5jdGlvbihlLHQsbil7bj1ufHxlLnN0eWxlO3ZhciByPXAuQ1VTVE9NX1NUWUxFUyxpPSIiO2lmKG4pe2lmKHQgaW4gcil7aWYoclt0XS5nZXQpcmV0dXJuIHJbdF0uZ2V0KGUsdCxuKTt0eXBlb2Ygclt0XT09InN0cmluZyImJih0PXJbdF0pfWk9blt0XSxpPT09IiImJihpPXBbbF0oZSx0KSl9cmV0dXJuIGl9LHNldFN0eWxlczpmdW5jdGlvbih0LG4pe3ZhciByPXQuc3R5bGU7ZS5lYWNoKG4sZnVuY3Rpb24oZSxuKXtwLnNldFN0eWxlKHQsbixlLHIpfSxwKX0sZ2V0Q29tcHV0ZWRTdHlsZTpmdW5jdGlvbihlLHQpe3ZhciBuPSIiLG89ZVtpXSx1O3JldHVybiBlW3NdJiZvW3JdJiZvW3JdW2xdJiYodT1vW3JdW2xdKGUsbnVsbCksdSYmKG49dVt0XSkpLG59fSksaFtuXVtzXVt1XSE9PXVuZGVmaW5lZD9wLkNVU1RPTV9TVFlMRVNbb109dTpoW25dW3NdW2FdIT09dW5kZWZpbmVkJiYocC5DVVNUT01fU1RZTEVTW29dPWEpLGUuVUEud2Via2l0JiYocFtsXT1mdW5jdGlvbihlLHQpe3ZhciBuPWVbaV1bcl0scz1uW2xdKGUsIiIpW3RdO3JldHVybiBzPT09InJnYmEoMCwgMCwgMCwgMCkiJiYocz1mKSxzfSksZS5ET00uX2dldEF0dHJPZmZzZXQ9ZnVuY3Rpb24odCxuKXt2YXIgcj1lLkRPTVtsXSh0LG4pLGk9dC5vZmZzZXRQYXJlbnQscyxvLHU7cmV0dXJuIHI9PT0iYXV0byImJihzPWUuRE9NLmdldFN0eWxlKHQsInBvc2l0aW9uIikscz09PSJzdGF0aWMifHxzPT09InJlbGF0aXZlIj9yPTA6aSYmaVtjXSYmKG89aVtjXSgpW25dLHU9dFtjXSgpW25dLG49PT0ibGVmdCJ8fG49PT0idG9wIj9yPXUtbzpyPW8tdFtjXSgpW25dKSkscn0sZS5ET00uX2dldE9mZnNldD1mdW5jdGlvbihlKXt2YXIgdCxuPW51bGw7cmV0dXJuIGUmJih0PXAuZ2V0U3R5bGUoZSwicG9zaXRpb24iKSxuPVtwYXJzZUludChwW2xdKGUsImxlZnQiKSwxMCkscGFyc2VJbnQocFtsXShlLCJ0b3AiKSwxMCldLGlzTmFOKG5bMF0pJiYoblswXT1wYXJzZUludChwLmdldFN0eWxlKGUsImxlZnQiKSwxMCksaXNOYU4oblswXSkmJihuWzBdPXQ9PT0icmVsYXRpdmUiPzA6ZS5vZmZzZXRMZWZ0fHwwKSksaXNOYU4oblsxXSkmJihuWzFdPXBhcnNlSW50KHAuZ2V0U3R5bGUoZSwidG9wIiksMTApLGlzTmFOKG5bMV0pJiYoblsxXT10PT09InJlbGF0aXZlIj8wOmUub2Zmc2V0VG9wfHwwKSkpLG59LGQmJihwLkNVU1RPTV9TVFlMRVMudHJhbnNmb3JtPXtzZXQ6ZnVuY3Rpb24oZSx0LG4pe25bZF09dH0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBwW2xdKGUsZCl9fSxwLkNVU1RPTV9TVFlMRVMudHJhbnNmb3JtT3JpZ2luPXtzZXQ6ZnVuY3Rpb24oZSx0LG4pe25bdl09dH0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBwW2xdKGUsdil9fSl9LCIzLjE3LjIiLHtyZXF1aXJlczpbImRvbS1iYXNlIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoIm5vZGUtYmFzZSIsZnVuY3Rpb24oZSx0KXt2YXIgbj1bImhhc0NsYXNzIiwiYWRkQ2xhc3MiLCJyZW1vdmVDbGFzcyIsInJlcGxhY2VDbGFzcyIsInRvZ2dsZUNsYXNzIl07ZS5Ob2RlLmltcG9ydE1ldGhvZChlLkRPTSxuKSxlLk5vZGVMaXN0LmltcG9ydE1ldGhvZChlLk5vZGUucHJvdG90eXBlLG4pO3ZhciByPWUuTm9kZSxpPWUuRE9NO3IuY3JlYXRlPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG4mJm4uX25vZGUmJihuPW4uX25vZGUpLGUub25lKGkuY3JlYXRlKHQsbikpfSxlLm1peChyLnByb3RvdHlwZSx7Y3JlYXRlOnIuY3JlYXRlLGluc2VydDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9pbnNlcnQoZSx0KSx0aGlzfSxfaW5zZXJ0OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fbm9kZSxyPW51bGw7cmV0dXJuIHR5cGVvZiB0PT0ibnVtYmVyIj90PXRoaXMuX25vZGUuY2hpbGROb2Rlc1t0XTp0JiZ0Ll9ub2RlJiYodD10Ll9ub2RlKSxlJiZ0eXBlb2YgZSE9InN0cmluZyImJihlPWUuX25vZGV8fGUuX25vZGVzfHxlKSxyPWkuYWRkSFRNTChuLGUsdCkscn0scHJlcGVuZDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbnNlcnQoZSwwKX0sYXBwZW5kOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmluc2VydChlLG51bGwpfSxhcHBlbmRDaGlsZDpmdW5jdGlvbihlKXtyZXR1cm4gci5zY3J1YlZhbCh0aGlzLl9pbnNlcnQoZSkpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5Ob2RlLnNjcnViVmFsKHRoaXMuX2luc2VydCh0LG4pKX0sYXBwZW5kVG86ZnVuY3Rpb24odCl7cmV0dXJuIGUub25lKHQpLmFwcGVuZCh0aGlzKSx0aGlzfSxzZXRDb250ZW50OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pbnNlcnQoZSwicmVwbGFjZSIpLHRoaXN9LGdldENvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9ub2RlLm5vZGVUeXBlPT09MTEmJihlPWUuY3JlYXRlKCI8ZGl2Lz4iKS5hcHBlbmQoZS5jbG9uZU5vZGUoITApKSksZS5nZXQoImlubmVySFRNTCIpfX0pLGUuTm9kZS5wcm90b3R5cGUuc2V0SFRNTD1lLk5vZGUucHJvdG90eXBlLnNldENvbnRlbnQsZS5Ob2RlLnByb3RvdHlwZS5nZXRIVE1MPWUuTm9kZS5wcm90b3R5cGUuZ2V0Q29udGVudCxlLk5vZGVMaXN0LmltcG9ydE1ldGhvZChlLk5vZGUucHJvdG90eXBlLFsiYXBwZW5kIiwiaW5zZXJ0IiwiYXBwZW5kQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJwcmVwZW5kIiwic2V0Q29udGVudCIsImdldENvbnRlbnQiLCJzZXRIVE1MIiwiZ2V0SFRNTCJdKTt2YXIgcj1lLk5vZGUsaT1lLkRPTTtyLkFUVFJTPXt0ZXh0OntnZXR0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gaS5nZXRUZXh0KHRoaXMuX25vZGUpfSxzZXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGkuc2V0VGV4dCh0aGlzLl9ub2RlLGUpLGV9fSwiZm9yIjp7Z2V0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0QXR0cmlidXRlKHRoaXMuX25vZGUsImZvciIpfSxzZXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGkuc2V0QXR0cmlidXRlKHRoaXMuX25vZGUsImZvciIsZSksZX19LG9wdGlvbnM6e2dldHRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJvcHRpb24iKX19LGNoaWxkcmVuOntnZXR0ZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9ub2RlLG49dC5jaGlsZHJlbixyLGkscztpZighbil7cj10LmNoaWxkTm9kZXMsbj1bXTtmb3IoaT0wLHM9ci5sZW5ndGg7aTxzOysraSlyW2ldLnRhZ05hbWUmJihuW24ubGVuZ3RoXT1yW2ldKX1yZXR1cm4gZS5hbGwobil9fSx2YWx1ZTp7Z2V0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0VmFsdWUodGhpcy5fbm9kZSl9LHNldHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gaS5zZXRWYWx1ZSh0aGlzLl9ub2RlLGUpLGV9fX0sZS5Ob2RlLmltcG9ydE1ldGhvZChlLkRPTSxbInNldEF0dHJpYnV0ZSIsImdldEF0dHJpYnV0ZSJdKTt2YXIgcj1lLk5vZGUscz1lLk5vZGVMaXN0O3IuRE9NX0VWRU5UUz17YWJvcnQ6MSxiZWZvcmV1bmxvYWQ6MSxibHVyOjEsY2hhbmdlOjEsY2xpY2s6MSxjbG9zZToxLGNvbW1hbmQ6MSxjb250ZXh0bWVudToxLGNvcHk6MSxjdXQ6MSxkYmxjbGljazoxLERPTU1vdXNlU2Nyb2xsOjEsZHJhZzoxLGRyYWdzdGFydDoxLGRyYWdlbnRlcjoxLGRyYWdvdmVyOjEsZHJhZ2xlYXZlOjEsZHJhZ2VuZDoxLGRyb3A6MSxlcnJvcjoxLGZvY3VzOjEsa2V5OjEsa2V5ZG93bjoxLGtleXByZXNzOjEsa2V5dXA6MSxsb2FkOjEsbWVzc2FnZToxLG1vdXNlZG93bjoxLG1vdXNlZW50ZXI6MSxtb3VzZWxlYXZlOjEsbW91c2Vtb3ZlOjEsbW91c2VtdWx0aXdoZWVsOjEsbW91c2VvdXQ6MSxtb3VzZW92ZXI6MSxtb3VzZXVwOjEsbW91c2V3aGVlbDoxLG9yaWVudGF0aW9uY2hhbmdlOjEscGFzdGU6MSxyZXNldDoxLHJlc2l6ZToxLHNlbGVjdDoxLHNlbGVjdHN0YXJ0OjEsc3VibWl0OjEsc2Nyb2xsOjEsdGV4dElucHV0OjEsdW5sb2FkOjEsaW52YWxpZDoxfSxlLm1peChyLkRPTV9FVkVOVFMsZS5FbnYuZXZ0LnBsdWdpbnMpLGUuYXVnbWVudChyLGUuRXZlbnRUYXJnZXQpLGUubWl4KHIucHJvdG90eXBlLHtwdXJnZTpmdW5jdGlvbih0LG4pe3JldHVybiBlLkV2ZW50LnB1cmdlRWxlbWVudCh0aGlzLl9ub2RlLHQsbiksdGhpc319KSxlLm1peChlLk5vZGVMaXN0LnByb3RvdHlwZSx7X3ByZXBFdnRBcmdzOmZ1bmN0aW9uKHQsbixyKXt2YXIgaT1lLkFycmF5KGFyZ3VtZW50cywwLCEwKTtyZXR1cm4gaS5sZW5ndGg8Mj9pWzJdPXRoaXMuX25vZGVzOmkuc3BsaWNlKDIsMCx0aGlzLl9ub2RlcyksaVszXT1yfHx0aGlzLGl9LG9uOmZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gZS5vbi5hcHBseShlLHRoaXMuX3ByZXBFdnRBcmdzLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LG9uY2U6ZnVuY3Rpb24odCxuLHIpe3JldHVybiBlLm9uY2UuYXBwbHkoZSx0aGlzLl9wcmVwRXZ0QXJncy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxhZnRlcjpmdW5jdGlvbih0LG4scil7cmV0dXJuIGUuYWZ0ZXIuYXBwbHkoZSx0aGlzLl9wcmVwRXZ0QXJncy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxvbmNlQWZ0ZXI6ZnVuY3Rpb24odCxuLHIpe3JldHVybiBlLm9uY2VBZnRlci5hcHBseShlLHRoaXMuX3ByZXBFdnRBcmdzLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fSkscy5pbXBvcnRNZXRob2QoZS5Ob2RlLnByb3RvdHlwZSxbImRldGFjaCIsImRldGFjaEFsbCJdKSxlLm1peChlLk5vZGUuQVRUUlMse29mZnNldEhlaWdodDp7c2V0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiBlLkRPTS5zZXRIZWlnaHQodGhpcy5fbm9kZSx0KSx0fSxnZXR0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbm9kZS5vZmZzZXRIZWlnaHR9fSxvZmZzZXRXaWR0aDp7c2V0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiBlLkRPTS5zZXRXaWR0aCh0aGlzLl9ub2RlLHQpLHR9LGdldHRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub2RlLm9mZnNldFdpZHRofX19KSxlLm1peChlLk5vZGUucHJvdG90eXBlLHtzaXplVG86ZnVuY3Rpb24odCxuKXt2YXIgcjthcmd1bWVudHMubGVuZ3RoPDImJihyPWUub25lKHQpLHQ9ci5nZXQoIm9mZnNldFdpZHRoIiksbj1yLmdldCgib2Zmc2V0SGVpZ2h0IikpLHRoaXMuc2V0QXR0cnMoe29mZnNldFdpZHRoOnQsb2Zmc2V0SGVpZ2h0Om59KX19KSxlLmNvbmZpZy5kb2MuZG9jdW1lbnRFbGVtZW50Lmhhc0F0dHJpYnV0ZXx8KGUuTm9kZS5wcm90b3R5cGUuaGFzQXR0cmlidXRlPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09InZhbHVlIiYmdGhpcy5nZXQoInZhbHVlIikhPT0iIj8hMDohIXRoaXMuX25vZGUuYXR0cmlidXRlc1tlXSYmISF0aGlzLl9ub2RlLmF0dHJpYnV0ZXNbZV0uc3BlY2lmaWVkfSksZS5Ob2RlLnByb3RvdHlwZS5mb2N1cz1mdW5jdGlvbigpe3RyeXt0aGlzLl9ub2RlLmZvY3VzKCl9Y2F0Y2goZSl7fXJldHVybiB0aGlzfSxlLk5vZGUuQVRUUlMudHlwZT17c2V0dGVyOmZ1bmN0aW9uKGUpe2lmKGU9PT0iaGlkZGVuIil0cnl7dGhpcy5fbm9kZS50eXBlPSJoaWRkZW4ifWNhdGNoKHQpe3RoaXMuX25vZGUuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5faW5wdXRUeXBlPSJoaWRkZW4ifWVsc2UgdHJ5e3RoaXMuX25vZGUudHlwZT1lfWNhdGNoKHQpe31yZXR1cm4gZX0sZ2V0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lucHV0VHlwZXx8dGhpcy5fbm9kZS50eXBlfSxfYnlwYXNzUHJveHk6ITB9LGUuY29uZmlnLmRvYy5jcmVhdGVFbGVtZW50KCJmb3JtIikuZWxlbWVudHMubm9kZVR5cGUmJihlLk5vZGUuQVRUUlMuZWxlbWVudHM9e2dldHRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFsbCgiaW5wdXQsIHRleHRhcmVhLCBidXR0b24sIHNlbGVjdCIpfX0pLGUubWl4KGUuTm9kZS5wcm90b3R5cGUse19pbml0RGF0YTpmdW5jdGlvbigpeyJfZGF0YSJpbiB0aGlzfHwodGhpcy5fZGF0YT17fSl9LGdldERhdGE6ZnVuY3Rpb24odCl7dGhpcy5faW5pdERhdGEoKTt2YXIgbj10aGlzLl9kYXRhLHI9bjtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90IGluIG4/cj1uW3RdOnI9dGhpcy5fZ2V0RGF0YUF0dHJpYnV0ZSh0KTp0eXBlb2Ygbj09Im9iamVjdCImJm4hPT1udWxsJiYocj17fSxlLk9iamVjdC5lYWNoKG4sZnVuY3Rpb24oZSx0KXtyW3RdPWV9KSxyPXRoaXMuX2dldERhdGFBdHRyaWJ1dGVzKHIpKSxyfSxfZ2V0RGF0YUF0dHJpYnV0ZXM6ZnVuY3Rpb24oZSl7ZT1lfHx7fTt2YXIgdD0wLG49dGhpcy5fbm9kZS5hdHRyaWJ1dGVzLHI9bi5sZW5ndGgsaT10aGlzLkRBVEFfUFJFRklYLHM9aS5sZW5ndGgsbzt3aGlsZSh0PHIpbz1uW3RdLm5hbWUsby5pbmRleE9mKGkpPT09MCYmKG89by5zdWJzdHIocyksbyBpbiBlfHwoZVtvXT10aGlzLl9nZXREYXRhQXR0cmlidXRlKG8pKSksdCs9MTtyZXR1cm4gZX0sX2dldERhdGFBdHRyaWJ1dGU6ZnVuY3Rpb24oZSl7ZT10aGlzLkRBVEFfUFJFRklYK2U7dmFyIHQ9dGhpcy5fbm9kZSxuPXQuYXR0cmlidXRlcyxyPW4mJm5bZV0mJm5bZV0udmFsdWU7cmV0dXJuIHJ9LHNldERhdGE6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5faW5pdERhdGEoKSxhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5fZGF0YVtlXT10OnRoaXMuX2RhdGE9ZSx0aGlzfSxjbGVhckRhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIl9kYXRhImluIHRoaXMmJih0eXBlb2YgZSE9InVuZGVmaW5lZCI/ZGVsZXRlIHRoaXMuX2RhdGFbZV06ZGVsZXRlIHRoaXMuX2RhdGEpLHRoaXN9fSksZS5taXgoZS5Ob2RlTGlzdC5wcm90b3R5cGUse2dldERhdGE6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD9bZV06W107cmV0dXJuIHRoaXMuX2ludm9rZSgiZ2V0RGF0YSIsdCwhMCl9LHNldERhdGE6ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjE/W2UsdF06W2VdO3JldHVybiB0aGlzLl9pbnZva2UoInNldERhdGEiLG4pfSxjbGVhckRhdGE6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD9bZV06W107cmV0dXJuIHRoaXMuX2ludm9rZSgiY2xlYXJEYXRhIixbZV0pfX0pfSwiMy4xNy4yIix7cmVxdWlyZXM6WyJldmVudC1iYXNlIiwibm9kZS1jb3JlIiwiZG9tLWJhc2UiLCJkb20tc3R5bGUiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgiZXZlbnQtY3VzdG9tLWNvbXBsZXgiLGZ1bmN0aW9uKGUsdCl7dmFyIG4scixpPWUuT2JqZWN0LHMsbz17fSx1PWUuQ3VzdG9tRXZlbnQucHJvdG90eXBlLGE9ZS5FdmVudFRhcmdldC5wcm90b3R5cGUsZj1mdW5jdGlvbihlLHQpe3ZhciBuO2ZvcihuIGluIHQpci5oYXNPd25Qcm9wZXJ0eShuKXx8KGVbbl09dFtuXSl9O2UuRXZlbnRGYWNhZGU9ZnVuY3Rpb24oZSx0KXtlfHwoZT1vKSx0aGlzLl9ldmVudD1lLHRoaXMuZGV0YWlscz1lLmRldGFpbHMsdGhpcy50eXBlPWUudHlwZSx0aGlzLl90eXBlPWUudHlwZSx0aGlzLnRhcmdldD1lLnRhcmdldCx0aGlzLmN1cnJlbnRUYXJnZXQ9dCx0aGlzLnJlbGF0ZWRUYXJnZXQ9ZS5yZWxhdGVkVGFyZ2V0fSxlLm1peChlLkV2ZW50RmFjYWRlLnByb3RvdHlwZSx7c3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5fZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5zdG9wcGVkPTF9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuX2V2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHRoaXMuc3RvcHBlZD0yfSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuX2V2ZW50LnByZXZlbnREZWZhdWx0KCksdGhpcy5wcmV2ZW50ZWQ9MX0saGFsdDpmdW5jdGlvbihlKXt0aGlzLl9ldmVudC5oYWx0KGUpLHRoaXMucHJldmVudGVkPTEsdGhpcy5zdG9wcGVkPWU/MjoxfX0pLHUuZmlyZUNvbXBsZXg9ZnVuY3Rpb24odCl7dmFyIG4scixpLHMsbyx1PSEwLGEsZixsLGMsaCxwLGQsdixtLGc9dGhpcyx5PWcuaG9zdHx8ZyxiLHcsRT1nLnN0YWNrLFM9eS5feXVpZXZ0LHg7aWYoRSYmZy5xdWV1YWJsZSYmZy50eXBlIT09RS5uZXh0LnR5cGUpcmV0dXJuIEUucXVldWV8fChFLnF1ZXVlPVtdKSxFLnF1ZXVlLnB1c2goW2csdF0pLCEwO3g9Zy5oYXNTdWJzKCl8fFMuaGFzVGFyZ2V0c3x8Zy5icm9hZGNhc3QsZy50YXJnZXQ9Zy50YXJnZXR8fHksZy5jdXJyZW50VGFyZ2V0PXksZy5kZXRhaWxzPXQuY29uY2F0KCk7aWYoeCl7bj1FfHx7aWQ6Zy5pZCxuZXh0Omcsc2lsZW50Omcuc2lsZW50LHN0b3BwZWQ6MCxwcmV2ZW50ZWQ6MCxidWJibGluZzpudWxsLHR5cGU6Zy50eXBlLGRlZmF1bHRUYXJnZXRPbmx5OmcuZGVmYXVsdFRhcmdldE9ubHl9LGY9Zy5nZXRTdWJzKCksbD1mWzBdLGM9ZlsxXSxnLnN0b3BwZWQ9Zy50eXBlIT09bi50eXBlPzA6bi5zdG9wcGVkLGcucHJldmVudGVkPWcudHlwZSE9PW4udHlwZT8wOm4ucHJldmVudGVkLGcuc3RvcHBlZEZuJiYoYT1uZXcgZS5FdmVudFRhcmdldCh7ZmlyZU9uY2U6ITAsY29udGV4dDp5fSksZy5ldmVudHM9YSxhLm9uKCJzdG9wcGVkIixnLnN0b3BwZWRGbikpLGcuX2ZhY2FkZT1udWxsLHI9Zy5fY3JlYXRlRmFjYWRlKHQpLGwmJmcuX3Byb2NTdWJzKGwsdCxyKSxnLmJ1YmJsZXMmJnkuYnViYmxlJiYhZy5zdG9wcGVkJiYodz1uLmJ1YmJsaW5nLG4uYnViYmxpbmc9Zy50eXBlLG4udHlwZSE9PWcudHlwZSYmKG4uc3RvcHBlZD0wLG4ucHJldmVudGVkPTApLHU9eS5idWJibGUoZyx0LG51bGwsbiksZy5zdG9wcGVkPU1hdGgubWF4KGcuc3RvcHBlZCxuLnN0b3BwZWQpLGcucHJldmVudGVkPU1hdGgubWF4KGcucHJldmVudGVkLG4ucHJldmVudGVkKSxuLmJ1YmJsaW5nPXcpLGQ9Zy5wcmV2ZW50ZWQsZD8odj1nLnByZXZlbnRlZEZuLHYmJnYuYXBwbHkoeSx0KSk6KG09Zy5kZWZhdWx0Rm4sbSYmKCFnLmRlZmF1bHRUYXJnZXRPbmx5JiYhbi5kZWZhdWx0VGFyZ2V0T25seXx8eT09PXIudGFyZ2V0KSYmbS5hcHBseSh5LHQpKSxnLmJyb2FkY2FzdCYmZy5fYnJvYWRjYXN0KHQpO2lmKGMmJiFnLnByZXZlbnRlZCYmZy5zdG9wcGVkPDIpe2g9bi5hZnRlclF1ZXVlO2lmKG4uaWQ9PT1nLmlkfHxnLnR5cGUhPT1TLmJ1YmJsaW5nKXtnLl9wcm9jU3VicyhjLHQscik7aWYoaCl3aGlsZShiPWgubGFzdCgpKWIoKX1lbHNlIHA9YyxuLmV4ZWNEZWZhdWx0Q250JiYocD1lLm1lcmdlKHApLGUuZWFjaChwLGZ1bmN0aW9uKGUpe2UucG9zdHBvbmVkPSEwfSkpLGh8fChuLmFmdGVyUXVldWU9bmV3IGUuUXVldWUpLG4uYWZ0ZXJRdWV1ZS5hZGQoZnVuY3Rpb24oKXtnLl9wcm9jU3VicyhwLHQscil9KX1nLnRhcmdldD1udWxsO2lmKG4uaWQ9PT1nLmlkKXtzPW4ucXVldWU7aWYocyl3aGlsZShzLmxlbmd0aClpPXMucG9wKCksbz1pWzBdLG4ubmV4dD1vLG8uX2ZpcmUoaVsxXSk7Zy5zdGFjaz1udWxsfXU9IWcuc3RvcHBlZCxnLnR5cGUhPT1TLmJ1YmJsaW5nJiYobi5zdG9wcGVkPTAsbi5wcmV2ZW50ZWQ9MCxnLnN0b3BwZWQ9MCxnLnByZXZlbnRlZD0wKX1lbHNlIG09Zy5kZWZhdWx0Rm4sbSYmKHI9Zy5fY3JlYXRlRmFjYWRlKHQpLCghZy5kZWZhdWx0VGFyZ2V0T25seXx8eT09PXIudGFyZ2V0KSYmbS5hcHBseSh5LHQpKTtyZXR1cm4gZy5fZmFjYWRlPW51bGwsdX0sdS5faGFzUG90ZW50aWFsU3Vic2NyaWJlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNTdWJzKCl8fHRoaXMuaG9zdC5feXVpZXZ0Lmhhc1RhcmdldHN8fHRoaXMuYnJvYWRjYXN0fSx1Ll9jcmVhdGVGYWNhZGU9dS5fZ2V0RmFjYWRlPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuZGV0YWlscyxyPW4mJm5bMF0saT1yJiZ0eXBlb2Ygcj09Im9iamVjdCIscz10aGlzLl9mYWNhZGU7cmV0dXJuIHN8fChzPW5ldyBlLkV2ZW50RmFjYWRlKHRoaXMsdGhpcy5jdXJyZW50VGFyZ2V0KSksaT8oZihzLHIpLHIudHlwZSYmKHMudHlwZT1yLnR5cGUpLHQmJih0WzBdPXMpKTp0JiZ0LnVuc2hpZnQocykscy5kZXRhaWxzPXRoaXMuZGV0YWlscyxzLnRhcmdldD10aGlzLm9yaWdpbmFsVGFyZ2V0fHx0aGlzLnRhcmdldCxzLmN1cnJlbnRUYXJnZXQ9dGhpcy5jdXJyZW50VGFyZ2V0LHMuc3RvcHBlZD0wLHMucHJldmVudGVkPTAsdGhpcy5fZmFjYWRlPXMsdGhpcy5fZmFjYWRlfSx1Ll9hZGRGYWNhZGVUb0FyZ3M9ZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXTt0JiZ0LmhhbHQmJnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uJiZ0LnN0b3BQcm9wYWdhdGlvbiYmdC5fZXZlbnR8fHRoaXMuX2NyZWF0ZUZhY2FkZShlKX0sdS5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oKXt0aGlzLnN0b3BwZWQ9MSx0aGlzLnN0YWNrJiYodGhpcy5zdGFjay5zdG9wcGVkPTEpLHRoaXMuZXZlbnRzJiZ0aGlzLmV2ZW50cy5maXJlKCJzdG9wcGVkIix0aGlzKX0sdS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb249ZnVuY3Rpb24oKXt0aGlzLnN0b3BwZWQ9Mix0aGlzLnN0YWNrJiYodGhpcy5zdGFjay5zdG9wcGVkPTIpLHRoaXMuZXZlbnRzJiZ0aGlzLmV2ZW50cy5maXJlKCJzdG9wcGVkIix0aGlzKX0sdS5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe3RoaXMucHJldmVudGFibGUmJih0aGlzLnByZXZlbnRlZD0xLHRoaXMuc3RhY2smJih0aGlzLnN0YWNrLnByZXZlbnRlZD0xKSl9LHUuaGFsdD1mdW5jdGlvbihlKXtlP3RoaXMuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk6dGhpcy5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnByZXZlbnREZWZhdWx0KCl9LGEuYWRkVGFyZ2V0PWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuX3l1aWV2dDtyZXR1cm4gbi50YXJnZXRzfHwobi50YXJnZXRzPXt9KSxuLnRhcmdldHNbZS5zdGFtcCh0KV09dCxuLmhhc1RhcmdldHM9ITAsdGhpc30sYS5nZXRUYXJnZXRzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5feXVpZXZ0LnRhcmdldHM7cmV0dXJuIGU/aS52YWx1ZXMoZSk6W119LGEucmVtb3ZlVGFyZ2V0PWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuX3l1aWV2dC50YXJnZXRzO3JldHVybiBuJiYoZGVsZXRlIG5bZS5zdGFtcCh0LCEwKV0saS5zaXplKG4pPT09MCYmKHRoaXMuX3l1aWV2dC5oYXNUYXJnZXRzPSExKSksdGhpc30sYS5idWJibGU9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dGhpcy5feXVpZXZ0LnRhcmdldHMscz0hMCxvLHUsYSxmLGwsYz1lJiZlLnR5cGUsaD1ufHxlJiZlLnRhcmdldHx8dGhpcyxwO2lmKCFlfHwhZS5zdG9wcGVkJiZpKWZvcihhIGluIGkpaWYoaS5oYXNPd25Qcm9wZXJ0eShhKSl7bz1pW2FdLHU9by5feXVpZXZ0LmV2ZW50c1tjXSxvLl9oYXNTaWJsaW5ncyYmKGw9by5nZXRTaWJsaW5nKGMsdSkpLGwmJiF1JiYodT1vLnB1Ymxpc2goYykpLHA9by5feXVpZXZ0LmJ1YmJsaW5nLG8uX3l1aWV2dC5idWJibGluZz1jO2lmKCF1KW8uX3l1aWV2dC5oYXNUYXJnZXRzJiZvLmJ1YmJsZShlLHQsaCxyKTtlbHNle2wmJih1LnNpYmxpbmc9bCksdS50YXJnZXQ9aCx1Lm9yaWdpbmFsVGFyZ2V0PWgsdS5jdXJyZW50VGFyZ2V0PW8sZj11LmJyb2FkY2FzdCx1LmJyb2FkY2FzdD0hMSx1LmVtaXRGYWNhZGU9ITAsdS5zdGFjaz1yLHM9cyYmdS5maXJlLmFwcGx5KHUsdHx8ZS5kZXRhaWxzfHxbXSksdS5icm9hZGNhc3Q9Zix1Lm9yaWdpbmFsVGFyZ2V0PW51bGw7aWYodS5zdG9wcGVkKWJyZWFrfW8uX3l1aWV2dC5idWJibGluZz1wfXJldHVybiBzfSxhLl9oYXNQb3RlbnRpYWxTdWJzY3JpYmVycz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl95dWlldnQsbj10LmV2ZW50c1tlXTtyZXR1cm4gbj9uLmhhc1N1YnMoKXx8dC5oYXNUYXJnZXRzfHxuLmJyb2FkY2FzdDohMX0sbj1uZXcgZS5FdmVudEZhY2FkZSxyPXt9O2ZvcihzIGluIG4pcltzXT0hMH0sIjMuMTcuMiIse3JlcXVpcmVzOlsiZXZlbnQtY3VzdG9tLWJhc2UiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgiZXZlbnQtc3ludGhldGljIixmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIGMoZSx0KXt0aGlzLmhhbmRsZT1lLHRoaXMuZW1pdEZhY2FkZT10fWZ1bmN0aW9uIGgoZSx0LG4pe3RoaXMuaGFuZGxlcz1bXSx0aGlzLmVsPWUsdGhpcy5rZXk9bix0aGlzLmRvbWtleT10fWZ1bmN0aW9uIHAoKXt0aGlzLl9pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgbj1lLkN1c3RvbUV2ZW50LHI9ZS5FbnYuZXZ0LmRvbV9tYXAsaT1lLkFycmF5LHM9ZS5MYW5nLG89cy5pc09iamVjdCx1PXMuaXNTdHJpbmcsYT1zLmlzQXJyYXksZj1lLlNlbGVjdG9yLnF1ZXJ5LGw9ZnVuY3Rpb24oKXt9O2MucHJvdG90eXBlLmZpcmU9ZnVuY3Rpb24odCl7dmFyIG49aShhcmd1bWVudHMsMCwhMCkscj10aGlzLmhhbmRsZSxzPXIuZXZ0LHU9ci5zdWIsYT11LmNvbnRleHQsZj11LmZpbHRlcixsPXR8fHt9LGM7aWYodGhpcy5lbWl0RmFjYWRlKXtpZighdHx8IXQucHJldmVudERlZmF1bHQpbD1zLl9nZXRGYWNhZGUoKSxvKHQpJiYhdC5wcmV2ZW50RGVmYXVsdD8oZS5taXgobCx0LCEwKSxuWzBdPWwpOm4udW5zaGlmdChsKTtsLnR5cGU9cy50eXBlLGwuZGV0YWlscz1uLnNsaWNlKCksZiYmKGwuY29udGFpbmVyPXMuaG9zdCl9ZWxzZSBmJiZvKHQpJiZ0LmN1cnJlbnRUYXJnZXQmJm4uc2hpZnQoKTtyZXR1cm4gdS5jb250ZXh0PWF8fGwuY3VycmVudFRhcmdldHx8cy5ob3N0LGM9cy5maXJlLmFwcGx5KHMsbiksdC5wcmV2ZW50ZWQmJnMucHJldmVudGVkRm4mJnMucHJldmVudGVkRm4uYXBwbHkocyxuKSx0LnN0b3BwZWQmJnMuc3RvcHBlZEZuJiZzLnN0b3BwZWRGbi5hcHBseShzLG4pLHUuY29udGV4dD1hLGN9LGgucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpoLHR5cGU6Il9zeW50aCIsZm46bCxjYXB0dXJlOiExLHJlZ2lzdGVyOmZ1bmN0aW9uKGUpe2UuZXZ0LnJlZ2lzdHJ5PXRoaXMsdGhpcy5oYW5kbGVzLnB1c2goZSl9LHVucmVnaXN0ZXI6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5oYW5kbGVzLGk9clt0aGlzLmRvbWtleV0scztmb3Iocz1uLmxlbmd0aC0xO3M+PTA7LS1zKWlmKG5bc10uc3ViPT09dCl7bi5zcGxpY2UocywxKTticmVha31uLmxlbmd0aHx8KGRlbGV0ZSBpW3RoaXMua2V5XSxlLk9iamVjdC5zaXplKGkpfHxkZWxldGUgclt0aGlzLmRvbWtleV0pfSxkZXRhY2hBbGw6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmhhbmRsZXMsdD1lLmxlbmd0aDt3aGlsZSgtLXQ+PTApZVt0XS5kZXRhY2goKX19LGUubWl4KHAse05vdGlmaWVyOmMsU3ludGhSZWdpc3RyeTpoLGdldFJlZ2lzdHJ5OmZ1bmN0aW9uKHQsbixpKXt2YXIgcz10Ll9ub2RlLG89ZS5zdGFtcChzKSx1PSJldmVudDoiK28rbisiX3N5bnRoIixhPXJbb107cmV0dXJuIGkmJihhfHwoYT1yW29dPXt9KSxhW3VdfHwoYVt1XT1uZXcgaChzLG8sdSkpKSxhJiZhW3VdfHxudWxsfSxfZGVsZXRlU3ViOmZ1bmN0aW9uKGUpe2lmKGUmJmUuZm4pe3ZhciB0PXRoaXMuZXZlbnREZWYscj1lLmZpbHRlcj8iZGV0YWNoRGVsZWdhdGUiOiJkZXRhY2giO3RoaXMuX3N1YnNjcmliZXJzPVtdLG4ua2VlcERlcHJlY2F0ZWRTdWJzJiYodGhpcy5zdWJzY3JpYmVycz17fSksdFtyXShlLm5vZGUsZSx0aGlzLm5vdGlmaWVyLGUuZmlsdGVyKSx0aGlzLnJlZ2lzdHJ5LnVucmVnaXN0ZXIoZSksZGVsZXRlIGUuZm4sZGVsZXRlIGUubm9kZSxkZWxldGUgZS5jb250ZXh0fX0scHJvdG90eXBlOntjb25zdHJ1Y3RvcjpwLF9pbml0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wdWJsaXNoQ29uZmlnfHwodGhpcy5wdWJsaXNoQ29uZmlnPXt9KTt0aGlzLmVtaXRGYWNhZGU9ImVtaXRGYWNhZGUiaW4gZT9lLmVtaXRGYWNhZGU6ITAsZS5lbWl0RmFjYWRlPSExfSxwcm9jZXNzQXJnczpsLG9uOmwsZGV0YWNoOmwsZGVsZWdhdGU6bCxkZXRhY2hEZWxlZ2F0ZTpsLF9vbjpmdW5jdGlvbih0LG4pe3ZhciByPVtdLHM9dC5zbGljZSgpLG89dGhpcy5wcm9jZXNzQXJncyh0LG4pLGE9dFsyXSxsPW4/ImRlbGVnYXRlIjoib24iLGMsaDtyZXR1cm4gYz11KGEpP2YoYSk6aShhfHxlLm9uZShlLmNvbmZpZy53aW4pKSwhYy5sZW5ndGgmJnUoYSk/KGg9ZS5vbigiYXZhaWxhYmxlIixmdW5jdGlvbigpe2UubWl4KGgsZVtsXS5hcHBseShlLHMpLCEwKX0sYSksaCk6KGUuQXJyYXkuZWFjaChjLGZ1bmN0aW9uKGkpe3ZhciBzPXQuc2xpY2UoKSx1O2k9ZS5vbmUoaSksaSYmKG4mJih1PXMuc3BsaWNlKDMsMSlbMF0pLHMuc3BsaWNlKDAsNCxzWzFdLHNbM10pLCghdGhpcy5wcmV2ZW50RHVwc3x8IXRoaXMuZ2V0U3VicyhpLHQsbnVsbCwhMCkpJiZyLnB1c2godGhpcy5fc3Vic2NyaWJlKGksbCxzLG8sdSkpKX0sdGhpcyksci5sZW5ndGg9PT0xP3JbMF06bmV3IGUuRXZlbnRIYW5kbGUocikpfSxfc3Vic2NyaWJlOmZ1bmN0aW9uKHQsbixyLGkscyl7dmFyIG89bmV3IGUuQ3VzdG9tRXZlbnQodGhpcy50eXBlLHRoaXMucHVibGlzaENvbmZpZyksdT1vLm9uLmFwcGx5KG8sciksYT1uZXcgYyh1LHRoaXMuZW1pdEZhY2FkZSksZj1wLmdldFJlZ2lzdHJ5KHQsdGhpcy50eXBlLCEwKSxsPXUuc3ViO3JldHVybiBsLm5vZGU9dCxsLmZpbHRlcj1zLGkmJnRoaXMuYXBwbHlBcmdFeHRyYXMoaSxsKSxlLm1peChvLHtldmVudERlZjp0aGlzLG5vdGlmaWVyOmEsaG9zdDp0LGN1cnJlbnRUYXJnZXQ6dCx0YXJnZXQ6dCxlbDp0Ll9ub2RlLF9kZWxldGU6cC5fZGVsZXRlU3VifSwhMCksdS5ub3RpZmllcj1hLGYucmVnaXN0ZXIodSksdGhpc1tuXSh0LGwsYSxzKSx1fSxhcHBseUFyZ0V4dHJhczpmdW5jdGlvbihlLHQpe3QuX2V4dHJhPWV9LF9kZXRhY2g6ZnVuY3Rpb24odCl7dmFyIG49dFsyXSxyPXUobik/ZihuKTppKG4pLHMsbyxhLGwsYzt0LnNwbGljZSgyLDEpO2ZvcihvPTAsYT1yLmxlbmd0aDtvPGE7KytvKXtzPWUub25lKHJbb10pO2lmKHMpe2w9dGhpcy5nZXRTdWJzKHMsdCk7aWYobClmb3IoYz1sLmxlbmd0aC0xO2M+PTA7LS1jKWxbY10uZGV0YWNoKCl9fX0sZ2V0U3ViczpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT1wLmdldFJlZ2lzdHJ5KGUsdGhpcy50eXBlKSxzPVtdLG8sdSxhLGY7aWYoaSl7bz1pLmhhbmRsZXMsbnx8KG49dGhpcy5zdWJNYXRjaCk7Zm9yKHU9MCxhPW8ubGVuZ3RoO3U8YTsrK3Upe2Y9b1t1XTtpZihuLmNhbGwodGhpcyxmLnN1Yix0KSl7aWYocilyZXR1cm4gZjtzLnB1c2gob1t1XSl9fX1yZXR1cm4gcy5sZW5ndGgmJnN9LHN1Yk1hdGNoOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIXRbMV18fGUuZm49PT10WzFdfX19LCEwKSxlLlN5bnRoZXRpY0V2ZW50PXAsZS5FdmVudC5kZWZpbmU9ZnVuY3Rpb24odCxuLHIpe3ZhciBzLG8sZjt0JiZ0LnR5cGU/KHM9dCxyPW4pOm4mJihzPWUubWVyZ2Uoe3R5cGU6dH0sbikpO2lmKHMpe2lmKHJ8fCFlLk5vZGUuRE9NX0VWRU5UU1tzLnR5cGVdKW89ZnVuY3Rpb24oKXtwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZS5leHRlbmQobyxwLHMpLGY9bmV3IG8sdD1mLnR5cGUsZS5Ob2RlLkRPTV9FVkVOVFNbdF09ZS5FbnYuZXZ0LnBsdWdpbnNbdF09e2V2ZW50RGVmOmYsb246ZnVuY3Rpb24oKXtyZXR1cm4gZi5fb24oaShhcmd1bWVudHMpKX0sZGVsZWdhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZi5fb24oaShhcmd1bWVudHMpLCEwKX0sZGV0YWNoOmZ1bmN0aW9uKCl7cmV0dXJuIGYuX2RldGFjaChpKGFyZ3VtZW50cykpfX19ZWxzZSh1KHQpfHxhKHQpKSYmZS5BcnJheS5lYWNoKGkodCksZnVuY3Rpb24odCl7ZS5Ob2RlLkRPTV9FVkVOVFNbdF09MX0pO3JldHVybiBmfX0sIjMuMTcuMiIse3JlcXVpcmVzOlsibm9kZS1iYXNlIiwiZXZlbnQtY3VzdG9tLWNvbXBsZXgiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgiZXZlbnQtbW91c2VlbnRlciIsZnVuY3Rpb24oZSx0KXt2YXIgbj1lLkVudi5ldnQuZG9tX3dyYXBwZXJzLHI9ZS5ET00uY29udGFpbnMsaT1lLkFycmF5LHM9ZnVuY3Rpb24oKXt9LG89e3Byb3h5VHlwZToibW91c2VvdmVyIixyZWxQcm9wZXJ0eToiZnJvbUVsZW1lbnQiLF9ub3RpZnk6ZnVuY3Rpb24odCxpLHMpe3ZhciBvPXRoaXMuX25vZGUsdT10LnJlbGF0ZWRUYXJnZXR8fHRbaV07byE9PXUmJiFyKG8sdSkmJnMuZmlyZShuZXcgZS5ET01FdmVudEZhY2FkZSh0LG8sblsiZXZlbnQ6IitlLnN0YW1wKG8pK3QudHlwZV0pKX0sb246ZnVuY3Rpb24odCxuLHIpe3ZhciBpPWUuTm9kZS5nZXRET01Ob2RlKHQpLHM9W3RoaXMucHJveHlUeXBlLHRoaXMuX25vdGlmeSxpLG51bGwsdGhpcy5yZWxQcm9wZXJ0eSxyXTtuLmhhbmRsZT1lLkV2ZW50Ll9hdHRhY2gocyx7ZmFjYWRlOiExfSl9LGRldGFjaDpmdW5jdGlvbihlLHQpe3QuaGFuZGxlLmRldGFjaCgpfSxkZWxlZ2F0ZTpmdW5jdGlvbih0LG4scixpKXt2YXIgbz1lLk5vZGUuZ2V0RE9NTm9kZSh0KSx1PVt0aGlzLnByb3h5VHlwZSxzLG8sbnVsbCxyXTtuLmhhbmRsZT1lLkV2ZW50Ll9hdHRhY2godSx7ZmFjYWRlOiExfSksbi5oYW5kbGUuc3ViLmZpbHRlcj1pLG4uaGFuZGxlLnN1Yi5yZWxQcm9wZXJ0eT10aGlzLnJlbFByb3BlcnR5LG4uaGFuZGxlLnN1Yi5fbm90aWZ5PXRoaXMuX2ZpbHRlck5vdGlmeX0sX2ZpbHRlck5vdGlmeTpmdW5jdGlvbih0LG4scyl7bj1uLnNsaWNlKCksdGhpcy5hcmdzJiZuLnB1c2guYXBwbHkobix0aGlzLmFyZ3MpO3ZhciBvPWUuZGVsZWdhdGUuX2FwcGx5RmlsdGVyKHRoaXMuZmlsdGVyLG4scyksdT1uWzBdLnJlbGF0ZWRUYXJnZXR8fG5bMF1bdGhpcy5yZWxQcm9wZXJ0eV0sYSxmLGwsYyxoO2lmKG8pe289aShvKTtmb3IoZj0wLGw9by5sZW5ndGgmJighYXx8IWEuc3RvcHBlZCk7ZjxsOysrZil7aD1vWzBdO2lmKCFyKGgsdSkpe2F8fChhPW5ldyBlLkRPTUV2ZW50RmFjYWRlKG5bMF0saCxzKSxhLmNvbnRhaW5lcj1lLm9uZShzLmVsKSksYS5jdXJyZW50VGFyZ2V0PWUub25lKGgpLGM9blsxXS5maXJlKGEpO2lmKGM9PT0hMSlicmVha319fXJldHVybiBjfSxkZXRhY2hEZWxlZ2F0ZTpmdW5jdGlvbihlLHQpe3QuaGFuZGxlLmRldGFjaCgpfX07ZS5FdmVudC5kZWZpbmUoIm1vdXNlZW50ZXIiLG8sITApLGUuRXZlbnQuZGVmaW5lKCJtb3VzZWxlYXZlIixlLm1lcmdlKG8se3Byb3h5VHlwZToibW91c2VvdXQiLHJlbFByb3BlcnR5OiJ0b0VsZW1lbnQifSksITApfSwiMy4xNy4yIix7cmVxdWlyZXM6WyJldmVudC1zeW50aGV0aWMiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgiZXZlbnQtaG92ZXIiLGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5MYW5nLmlzRnVuY3Rpb24scj1mdW5jdGlvbigpe30saT17cHJvY2Vzc0FyZ3M6ZnVuY3Rpb24oZSl7dmFyIHQ9bihlWzJdKT8yOjM7cmV0dXJuIG4oZVt0XSk/ZS5zcGxpY2UodCwxKVswXTpyfSxvbjpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT10LmFyZ3M/dC5hcmdzLnNsaWNlKCk6W107aS51bnNoaWZ0KG51bGwpLHQuX2RldGFjaD1lW3I/ImRlbGVnYXRlIjoib24iXSh7bW91c2VlbnRlcjpmdW5jdGlvbihlKXtlLnBoYXNlPSJvdmVyIixuLmZpcmUoZSl9LG1vdXNlbGVhdmU6ZnVuY3Rpb24oZSl7dmFyIG49dC5jb250ZXh0fHx0aGlzO2lbMF09ZSxlLnR5cGU9ImhvdmVyIixlLnBoYXNlPSJvdXQiLHQuX2V4dHJhLmFwcGx5KG4saSl9fSxyKX0sZGV0YWNoOmZ1bmN0aW9uKGUsdCxuKXt0Ll9kZXRhY2guZGV0YWNoKCl9fTtpLmRlbGVnYXRlPWkub24saS5kZXRhY2hEZWxlZ2F0ZT1pLmRldGFjaCxlLkV2ZW50LmRlZmluZSgiaG92ZXIiLGkpfSwiMy4xNy4yIix7cmVxdWlyZXM6WyJldmVudC1tb3VzZWVudGVyIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoImV2ZW50LWRlbGVnYXRlIixmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIGYodCxyLHUsbCl7dmFyIGM9bihhcmd1bWVudHMsMCwhMCksaD1pKHUpP3U6bnVsbCxwLGQsdixtLGcseSxiLHcsRTtpZihzKHQpKXt3PVtdO2lmKG8odCkpZm9yKHk9MCxiPXQubGVuZ3RoO3k8YjsrK3kpY1swXT10W3ldLHcucHVzaChlLmRlbGVnYXRlLmFwcGx5KGUsYykpO2Vsc2V7Yy51bnNoaWZ0KG51bGwpO2Zvcih5IGluIHQpdC5oYXNPd25Qcm9wZXJ0eSh5KSYmKGNbMF09eSxjWzFdPXRbeV0sdy5wdXNoKGUuZGVsZWdhdGUuYXBwbHkoZSxjKSkpfXJldHVybiBuZXcgZS5FdmVudEhhbmRsZSh3KX1wPXQuc3BsaXQoL1x8LykscC5sZW5ndGg+MSYmKGc9cC5zaGlmdCgpLGNbMF09dD1wLnNoaWZ0KCkpLGQ9ZS5Ob2RlLkRPTV9FVkVOVFNbdF0scyhkKSYmZC5kZWxlZ2F0ZSYmKEU9ZC5kZWxlZ2F0ZS5hcHBseShkLGFyZ3VtZW50cykpO2lmKCFFKXtpZighdHx8IXJ8fCF1fHwhbClyZXR1cm47dj1oP2UuU2VsZWN0b3IucXVlcnkoaCxudWxsLCEwKTp1LCF2JiZpKHUpJiYoRT1lLm9uKCJhdmFpbGFibGUiLGZ1bmN0aW9uKCl7ZS5taXgoRSxlLmRlbGVnYXRlLmFwcGx5KGUsYyksITApfSx1KSksIUUmJnYmJihjLnNwbGljZSgyLDIsdiksRT1lLkV2ZW50Ll9hdHRhY2goYyx7ZmFjYWRlOiExfSksRS5zdWIuZmlsdGVyPWwsRS5zdWIuX25vdGlmeT1mLm5vdGlmeVN1Yil9cmV0dXJuIEUmJmcmJihtPWFbZ118fChhW2ddPXt9KSxtPW1bdF18fChtW3RdPVtdKSxtLnB1c2goRSkpLEV9dmFyIG49ZS5BcnJheSxyPWUuTGFuZyxpPXIuaXNTdHJpbmcscz1yLmlzT2JqZWN0LG89ci5pc0FycmF5LHU9ZS5TZWxlY3Rvci50ZXN0LGE9ZS5FbnYuZXZ0LmhhbmRsZXM7Zi5ub3RpZnlTdWI9ZnVuY3Rpb24odCxyLGkpe3I9ci5zbGljZSgpLHRoaXMuYXJncyYmci5wdXNoLmFwcGx5KHIsdGhpcy5hcmdzKTt2YXIgcz1mLl9hcHBseUZpbHRlcih0aGlzLmZpbHRlcixyLGkpLG8sdSxhLGw7aWYocyl7cz1uKHMpLG89clswXT1uZXcgZS5ET01FdmVudEZhY2FkZShyWzBdLGkuZWwsaSksby5jb250YWluZXI9ZS5vbmUoaS5lbCk7Zm9yKHU9MCxhPXMubGVuZ3RoO3U8YSYmIW8uc3RvcHBlZDsrK3Upe28uY3VycmVudFRhcmdldD1lLm9uZShzW3VdKSxsPXRoaXMuZm4uYXBwbHkodGhpcy5jb250ZXh0fHxvLmN1cnJlbnRUYXJnZXQscik7aWYobD09PSExKWJyZWFrfXJldHVybiBsfX0sZi5jb21waWxlRmlsdGVyPWUuY2FjaGVkKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiB1KHQuX25vZGUsZSxuLmN1cnJlbnRUYXJnZXQ9PT1uLnRhcmdldD9udWxsOm4uY3VycmVudFRhcmdldC5fbm9kZSl9fSksZi5fZGlzYWJsZWRSRT0vXig/OmJ1dHRvbnxpbnB1dHxzZWxlY3R8dGV4dGFyZWEpJC9pLGYuX2FwcGx5RmlsdGVyPWZ1bmN0aW9uKHQsbixyKXt2YXIgcz1uWzBdLG89ci5lbCxhPXMudGFyZ2V0fHxzLnNyY0VsZW1lbnQsbD1bXSxjPSExO2Eubm9kZVR5cGU9PT0zJiYoYT1hLnBhcmVudE5vZGUpO2lmKGEuZGlzYWJsZWQmJmYuX2Rpc2FibGVkUkUudGVzdChhLm5vZGVOYW1lKSlyZXR1cm4gbDtuLnVuc2hpZnQoYSk7aWYoaSh0KSl3aGlsZShhKXtjPWE9PT1vLHUoYSx0LGM/bnVsbDpvKSYmbC5wdXNoKGEpO2lmKGMpYnJlYWs7YT1hLnBhcmVudE5vZGV9ZWxzZXtuWzBdPWUub25lKGEpLG5bMV09bmV3IGUuRE9NRXZlbnRGYWNhZGUocyxvLHIpO3doaWxlKGEpe3QuYXBwbHkoblswXSxuKSYmbC5wdXNoKGEpO2lmKGE9PT1vKWJyZWFrO2E9YS5wYXJlbnROb2RlLG5bMF09ZS5vbmUoYSl9blsxXT1zfXJldHVybiBsLmxlbmd0aDw9MSYmKGw9bFswXSksbi5zaGlmdCgpLGx9LGUuZGVsZWdhdGU9ZS5FdmVudC5kZWxlZ2F0ZT1mfSwiMy4xNy4yIix7cmVxdWlyZXM6WyJub2RlLWJhc2UiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgibm9kZS1ldmVudC1kZWxlZ2F0ZSIsZnVuY3Rpb24oZSx0KXtlLk5vZGUucHJvdG90eXBlLmRlbGVnYXRlPWZ1bmN0aW9uKHQpe3ZhciBuPWUuQXJyYXkoYXJndW1lbnRzLDAsITApLHI9ZS5MYW5nLmlzT2JqZWN0KHQpJiYhZS5MYW5nLmlzQXJyYXkodCk/MToyO3JldHVybiBuLnNwbGljZShyLDAsdGhpcy5fbm9kZSksZS5kZWxlZ2F0ZS5hcHBseShlLG4pfX0sIjMuMTcuMiIse3JlcXVpcmVzOlsibm9kZS1iYXNlIiwiZXZlbnQtZGVsZWdhdGUiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgiaW50bCIsZnVuY3Rpb24oZSx0KXt2YXIgbj17fSxyPSJ5dWlSb290TGFuZyIsaT0ieXVpQWN0aXZlTGFuZyIscz1bXTtlLm1peChlLm5hbWVzcGFjZSgiSW50bCIpLHtfbW9kOmZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfHwobltlXT17fSksbltlXX0sc2V0TGFuZzpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX21vZChlKSxzPW5baV0sbz0hIW5bdF07cmV0dXJuIG8mJnQhPT1zJiYobltpXT10LHRoaXMuZmlyZSgiaW50bDpsYW5nQ2hhbmdlIix7bW9kdWxlOmUscHJldlZhbDpzLG5ld1ZhbDp0PT09cj8iIjp0fSkpLG99LGdldExhbmc6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbW9kKGUpW2ldO3JldHVybiB0PT09cj8iIjp0fSxhZGQ6ZnVuY3Rpb24oZSx0LG4pe3Q9dHx8cix0aGlzLl9tb2QoZSlbdF09bix0aGlzLnNldExhbmcoZSx0KX0sZ2V0OmZ1bmN0aW9uKHQsbixyKXt2YXIgcz10aGlzLl9tb2QodCksbztyZXR1cm4gcj1yfHxzW2ldLG89c1tyXXx8e30sbj9vW25dOmUubWVyZ2Uobyl9LGdldEF2YWlsYWJsZUxhbmdzOmZ1bmN0aW9uKHQpe3ZhciBuPWUuRW52Ll9sb2FkZXIscj1uJiZuLm1vZHVsZUluZm9bdF0saT1yJiZyLmxhbmc7cmV0dXJuIGk/aS5jb25jYXQoKTpzfX0pLGUuYXVnbWVudChlLkludGwsZS5FdmVudFRhcmdldCksZS5JbnRsLnB1Ymxpc2goImludGw6bGFuZ0NoYW5nZSIse2VtaXRGYWNhZGU6ITB9KX0sIjMuMTcuMiIse3JlcXVpcmVzOlsiaW50bC1iYXNlIiwiZXZlbnQtY3VzdG9tIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoImFycmF5LWV4dHJhcyIsZnVuY3Rpb24oZSx0KXt2YXIgbj1lLkFycmF5LHI9ZS5MYW5nLGk9QXJyYXkucHJvdG90eXBlO24ubGFzdEluZGV4T2Y9ci5faXNOYXRpdmUoaS5sYXN0SW5kZXhPZik/ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBufHxuPT09MD9lLmxhc3RJbmRleE9mKHQsbik6ZS5sYXN0SW5kZXhPZih0KX06ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUubGVuZ3RoLGk9ci0xO2lmKG58fG49PT0wKWk9TWF0aC5taW4objwwP3IrbjpuLHIpO2lmKGk+LTEmJnI+MClmb3IoO2k+LTE7LS1pKWlmKGkgaW4gZSYmZVtpXT09PXQpcmV0dXJuIGk7cmV0dXJuLTF9LG4udW5pcXVlPWZ1bmN0aW9uKGUsdCl7dmFyIG49MCxyPWUubGVuZ3RoLGk9W10scyxvLHUsYTtlOmZvcig7bjxyO24rKyl7YT1lW25dO2ZvcihzPTAsdT1pLmxlbmd0aDtzPHU7cysrKXtvPWlbc107aWYodCl7aWYodC5jYWxsKGUsYSxvLG4sZSkpY29udGludWUgZX1lbHNlIGlmKGE9PT1vKWNvbnRpbnVlIGV9aS5wdXNoKGEpfXJldHVybiBpfSxuLmZpbHRlcj1yLl9pc05hdGl2ZShpLmZpbHRlcik/ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBpLmZpbHRlci5jYWxsKGUsdCxuKX06ZnVuY3Rpb24oZSx0LG4pe3ZhciByPTAsaT1lLmxlbmd0aCxzPVtdLG87Zm9yKDtyPGk7KytyKXIgaW4gZSYmKG89ZVtyXSx0LmNhbGwobixvLHIsZSkmJnMucHVzaChvKSk7cmV0dXJuIHN9LG4ucmVqZWN0PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbi5maWx0ZXIoZSxmdW5jdGlvbihlLG4saSl7cmV0dXJuIXQuY2FsbChyLGUsbixpKX0pfSxuLmV2ZXJ5PXIuX2lzTmF0aXZlKGkuZXZlcnkpP2Z1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaS5ldmVyeS5jYWxsKGUsdCxuKX06ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj0wLGk9ZS5sZW5ndGg7cjxpOysrcilpZihyIGluIGUmJiF0LmNhbGwobixlW3JdLHIsZSkpcmV0dXJuITE7cmV0dXJuITB9LG4ubWFwPXIuX2lzTmF0aXZlKGkubWFwKT9mdW5jdGlvbihlLHQsbil7cmV0dXJuIGkubWFwLmNhbGwoZSx0LG4pfTpmdW5jdGlvbihlLHQsbil7dmFyIHI9MCxzPWUubGVuZ3RoLG89aS5jb25jYXQuY2FsbChlKTtmb3IoO3I8czsrK3IpciBpbiBlJiYob1tyXT10LmNhbGwobixlW3JdLHIsZSkpO3JldHVybiBvfSxuLnJlZHVjZT1yLl9pc05hdGl2ZShpLnJlZHVjZSk/ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIGkucmVkdWNlLmNhbGwoZSxmdW5jdGlvbihlLHQsaSxzKXtyZXR1cm4gbi5jYWxsKHIsZSx0LGkscyl9LHQpfTpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT0wLHM9ZS5sZW5ndGgsbz10O2Zvcig7aTxzOysraSlpIGluIGUmJihvPW4uY2FsbChyLG8sZVtpXSxpLGUpKTtyZXR1cm4gb30sbi5maW5kPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspaWYociBpbiBlJiZ0LmNhbGwobixlW3JdLHIsZSkpcmV0dXJuIGVbcl07cmV0dXJuIG51bGx9LG4uZ3JlcD1mdW5jdGlvbihlLHQpe3JldHVybiBuLmZpbHRlcihlLGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQudGVzdChlKX0pfSxuLnBhcnRpdGlvbj1mdW5jdGlvbihlLHQscil7dmFyIGk9e21hdGNoZXM6W10scmVqZWN0czpbXX07cmV0dXJuIG4uZWFjaChlLGZ1bmN0aW9uKG4scyl7dmFyIHU9dC5jYWxsKHIsbixzLGUpP2kubWF0Y2hlczppLnJlamVjdHM7dS5wdXNoKG4pfSksaX0sbi56aXA9ZnVuY3Rpb24oZSx0KXt2YXIgcj1bXTtyZXR1cm4gbi5lYWNoKGUsZnVuY3Rpb24oZSxuKXtyLnB1c2goW2UsdFtuXV0pfSkscn0sbi5mbGF0dGVuPWZ1bmN0aW9uKGUpe3ZhciB0PVtdLGkscyxvO2lmKCFlKXJldHVybiB0O2ZvcihpPTAscz1lLmxlbmd0aDtpPHM7KytpKW89ZVtpXSxyLmlzQXJyYXkobyk/dC5wdXNoLmFwcGx5KHQsbi5mbGF0dGVuKG8pKTp0LnB1c2gobyk7cmV0dXJuIHR9fSwiMy4xNy4yIix7cmVxdWlyZXM6WyJ5dWktYmFzZSJdfSk7Ci8qCllVSSAzLjE3LjIgKGJ1aWxkIDljM2M3OGUpCkNvcHlyaWdodCAyMDE0IFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZS4KaHR0cDovL3l1aWxpYnJhcnkuY29tL2xpY2Vuc2UvCiovCgpZVUkuYWRkKCJhdHRyaWJ1dGUtY29yZSIsZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBiKGUsdCxuKXt0aGlzLl95dWlldnQ9bnVsbCx0aGlzLl9pbml0QXR0ckhvc3QoZSx0LG4pfWUuU3RhdGU9ZnVuY3Rpb24oKXt0aGlzLmRhdGE9e319LGUuU3RhdGUucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuZGF0YVtlXTtyfHwocj10aGlzLmRhdGFbZV09e30pLHJbdF09bn0sYWRkQWxsOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5kYXRhW2VdLHI7bnx8KG49dGhpcy5kYXRhW2VdPXt9KTtmb3IociBpbiB0KXQuaGFzT3duUHJvcGVydHkocikmJihuW3JdPXRbcl0pfSxyZW1vdmU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmRhdGFbZV07biYmZGVsZXRlIG5bdF19LHJlbW92ZUFsbDpmdW5jdGlvbih0LG4pe3ZhciByO24/ZS5lYWNoKG4sZnVuY3Rpb24oZSxuKXt0aGlzLnJlbW92ZSh0LHR5cGVvZiBuPT0ic3RyaW5nIj9uOmUpfSx0aGlzKToocj10aGlzLmRhdGEsdCBpbiByJiZkZWxldGUgclt0XSl9LGdldDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZGF0YVtlXTtpZihuKXJldHVybiBuW3RdfSxnZXRBbGw6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmRhdGFbZV0scixpO2lmKHQpaT1uO2Vsc2UgaWYobil7aT17fTtmb3IociBpbiBuKW4uaGFzT3duUHJvcGVydHkocikmJihpW3JdPW5bcl0pfXJldHVybiBpfX07dmFyIG49ZS5PYmplY3Qscj1lLkxhbmcsaT0iLiIscz0iZ2V0dGVyIixvPSJzZXR0ZXIiLHU9InJlYWRPbmx5IixhPSJ3cml0ZU9uY2UiLGY9ImluaXRPbmx5IixsPSJ2YWxpZGF0b3IiLGM9InZhbHVlIixoPSJ2YWx1ZUZuIixwPSJsYXp5QWRkIixkPSJhZGRlZCIsdj0iX2J5cGFzc1Byb3h5IixtPSJpbml0VmFsdWUiLGc9ImxhenkiLHk7Yi5JTlZBTElEX1ZBTFVFPXt9LHk9Yi5JTlZBTElEX1ZBTFVFLGIuX0FUVFJfQ0ZHPVtvLHMsbCxjLGgsYSx1LHAsdl0sYi5wcm90ZWN0QXR0cnM9ZnVuY3Rpb24odCl7aWYodCl7dD1lLm1lcmdlKHQpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJih0W25dPWUubWVyZ2UodFtuXSkpfXJldHVybiB0fSxiLnByb3RvdHlwZT17X2luaXRBdHRySG9zdDpmdW5jdGlvbih0LG4scil7dGhpcy5fc3RhdGU9bmV3IGUuU3RhdGUsdGhpcy5faW5pdEF0dHJzKHQsbixyKX0sYWRkQXR0cjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyxpPXIuX3N0YXRlLHM9aS5kYXRhLG8sdSxhO3Q9dHx8e30scCBpbiB0JiYobj10W3BdKSx1PWkuZ2V0KGUsZCk7aWYobiYmIXUpaS5kYXRhW2VdPXtsYXp5OnQsYWRkZWQ6ITB9O2Vsc2UgaWYoIXV8fHQuaXNMYXp5QWRkKWE9YyBpbiB0LGEmJihvPXQudmFsdWUsdC52YWx1ZT11bmRlZmluZWQpLHQuYWRkZWQ9ITAsdC5pbml0aWFsaXppbmc9ITAsc1tlXT10LGEmJnIuc2V0KGUsbyksdC5pbml0aWFsaXppbmc9ITE7cmV0dXJuIHJ9LGF0dHJBZGRlZDpmdW5jdGlvbihlKXtyZXR1cm4hIXRoaXMuX3N0YXRlLmdldChlLGQpfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2dldEF0dHIoZSl9LF9pc0xhenlBdHRyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9zdGF0ZS5nZXQoZSxnKX0sX2FkZExhenlBdHRyOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fc3RhdGU7dD10fHxuLmdldChlLGcpLHQmJihuLmRhdGFbZV0ubGF6eT11bmRlZmluZWQsdC5pc0xhenlBZGQ9ITAsdGhpcy5hZGRBdHRyKGUsdCkpfSxzZXQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLl9zZXRBdHRyKGUsdCxuKX0sX3NldDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuX3NldEF0dHIoZSx0LG4sITApfSxfc2V0QXR0cjpmdW5jdGlvbih0LHIscyxvKXt2YXIgdT0hMCxhPXRoaXMuX3N0YXRlLGw9dGhpcy5fc3RhdGVQcm94eSxjPXRoaXMuX3RDZmdzLGgscCxkLHYsbSxnLHk7cmV0dXJuIHQuaW5kZXhPZihpKSE9PS0xJiYoZD10LHY9dC5zcGxpdChpKSx0PXYuc2hpZnQoKSksYyYmY1t0XSYmdGhpcy5fYWRkT3V0T2ZPcmRlcih0LGNbdF0pLGg9YS5kYXRhW3RdfHx7fSxoLmxhenkmJihoPWgubGF6eSx0aGlzLl9hZGRMYXp5QXR0cih0LGgpKSxwPWgudmFsdWU9PT11bmRlZmluZWQsbCYmdCBpbiBsJiYhaC5fYnlwYXNzUHJveHkmJihwPSExKSxnPWgud3JpdGVPbmNlLHk9aC5pbml0aWFsaXppbmcsIXAmJiFvJiYoZyYmKHU9ITEpLGgucmVhZE9ubHkmJih1PSExKSksIXkmJiFvJiZnPT09ZiYmKHU9ITEpLHUmJihwfHwobT10aGlzLmdldCh0KSksdiYmKHI9bi5zZXRWYWx1ZShlLmNsb25lKG0pLHYscikscj09PXVuZGVmaW5lZCYmKHU9ITEpKSx1JiYoIXRoaXMuX2ZpcmVBdHRyQ2hhbmdlfHx5P3RoaXMuX3NldEF0dHJWYWwodCxkLG0scixzLGgpOnRoaXMuX2ZpcmVBdHRyQ2hhbmdlKHQsZCxtLHIscyxoKSkpLHRoaXN9LF9hZGRPdXRPZk9yZGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49e307bltlXT10LGRlbGV0ZSB0aGlzLl90Q2Znc1tlXSx0aGlzLl9hZGRBdHRycyhuLHRoaXMuX3RWYWxzKX0sX2dldEF0dHI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxyPXRoaXMuX3RDZmdzLHMsbyx1LGE7cmV0dXJuIGUuaW5kZXhPZihpKSE9PS0xJiYocz1lLnNwbGl0KGkpLGU9cy5zaGlmdCgpKSxyJiZyW2VdJiZ0aGlzLl9hZGRPdXRPZk9yZGVyKGUscltlXSksYT10aGlzLl9zdGF0ZS5kYXRhW2VdfHx7fSxhLmxhenkmJihhPWEubGF6eSx0aGlzLl9hZGRMYXp5QXR0cihlLGEpKSx1PXRoaXMuX2dldFN0YXRlVmFsKGUsYSksbz1hLmdldHRlcixvJiYhby5jYWxsJiYobz10aGlzW29dKSx1PW8/by5jYWxsKHRoaXMsdSx0KTp1LHU9cz9uLmdldFZhbHVlKHUscyk6dSx1fSxfZ2V0U3RhdGVWYWw6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9zdGF0ZVByb3h5O3JldHVybiB0fHwodD10aGlzLl9zdGF0ZS5nZXRBbGwoZSl8fHt9KSxuJiZlIGluIG4mJiF0Ll9ieXBhc3NQcm94eT9uW2VdOnQudmFsdWV9LF9zZXRTdGF0ZVZhbDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX3N0YXRlUHJveHk7biYmZSBpbiBuJiYhdGhpcy5fc3RhdGUuZ2V0KGUsdik/bltlXT10OnRoaXMuX3N0YXRlLmFkZChlLGMsdCl9LF9zZXRBdHRyVmFsOmZ1bmN0aW9uKGUsdCxuLGkscyxvKXt2YXIgdT10aGlzLGE9ITAsZj1vfHx0aGlzLl9zdGF0ZS5kYXRhW2VdfHx7fSxsPWYudmFsaWRhdG9yLGM9Zi5zZXR0ZXIsaD1mLmluaXRpYWxpemluZyxwPXRoaXMuX2dldFN0YXRlVmFsKGUsZiksZD10fHxlLHYsZztyZXR1cm4gbCYmKGwuY2FsbHx8KGw9dGhpc1tsXSksbCYmKGc9bC5jYWxsKHUsaSxkLHMpLCFnJiZoJiYoaT1mLmRlZmF1bHRWYWx1ZSxnPSEwKSkpLCFsfHxnPyhjJiYoYy5jYWxsfHwoYz10aGlzW2NdKSxjJiYodj1jLmNhbGwodSxpLGQscyksdj09PXk/aD9pPWYuZGVmYXVsdFZhbHVlOmE9ITE6diE9PXVuZGVmaW5lZCYmKGk9dikpKSxhJiYoIXQmJmk9PT1wJiYhci5pc09iamVjdChpKT9hPSExOihtIGluIGZ8fChmLmluaXRWYWx1ZT1pKSx1Ll9zZXRTdGF0ZVZhbChlLGkpKSkpOmE9ITEsYX0sc2V0QXR0cnM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fc2V0QXR0cnMoZSx0KX0sX3NldEF0dHJzOmZ1bmN0aW9uKGUsdCl7dmFyIG47Zm9yKG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiZ0aGlzLnNldChuLGVbbl0sdCk7cmV0dXJuIHRoaXN9LGdldEF0dHJzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9nZXRBdHRycyhlKX0sX2dldEF0dHJzOmZ1bmN0aW9uKGUpe3ZhciB0PXt9LHIsaSxzLG89ZT09PSEwO2lmKCFlfHxvKWU9bi5rZXlzKHRoaXMuX3N0YXRlLmRhdGEpO2ZvcihpPTAscz1lLmxlbmd0aDtpPHM7aSsrKXtyPWVbaV07aWYoIW98fHRoaXMuX2dldFN0YXRlVmFsKHIpIT10aGlzLl9zdGF0ZS5nZXQocixtKSl0W3JdPXRoaXMuZ2V0KHIpfXJldHVybiB0fSxhZGRBdHRyczpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUmJih0aGlzLl90Q2Zncz1lLHRoaXMuX3RWYWxzPXQ/dGhpcy5fbm9ybUF0dHJWYWxzKHQpOm51bGwsdGhpcy5fYWRkQXR0cnMoZSx0aGlzLl90VmFscyxuKSx0aGlzLl90Q2Zncz10aGlzLl90VmFscz1udWxsKSx0aGlzfSxfYWRkQXR0cnM6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3RDZmdzLGk9dGhpcy5fdFZhbHMscyxvLHU7Zm9yKHMgaW4gZSllLmhhc093blByb3BlcnR5KHMpJiYobz1lW3NdLG8uZGVmYXVsdFZhbHVlPW8udmFsdWUsdT10aGlzLl9nZXRBdHRySW5pdFZhbChzLG8saSksdSE9PXVuZGVmaW5lZCYmKG8udmFsdWU9dSkscltzXSYmKHJbc109dW5kZWZpbmVkKSx0aGlzLmFkZEF0dHIocyxvLG4pKX0sX3Byb3RlY3RBdHRyczpiLnByb3RlY3RBdHRycyxfbm9ybUF0dHJWYWxzOmZ1bmN0aW9uKGUpe3ZhciB0LG4scixzLG8sdTtpZighZSlyZXR1cm4gbnVsbDt0PXt9O2Zvcih1IGluIGUpZS5oYXNPd25Qcm9wZXJ0eSh1KSYmKHUuaW5kZXhPZihpKSE9PS0xPyhyPXUuc3BsaXQoaSkscz1yLnNoaWZ0KCksbj1ufHx7fSxvPW5bc109bltzXXx8W10sb1tvLmxlbmd0aF09e3BhdGg6cix2YWx1ZTplW3VdfSk6dFt1XT1lW3VdKTtyZXR1cm57c2ltcGxlOnQsY29tcGxleDpufX0sX2dldEF0dHJJbml0VmFsOmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10LnZhbHVlLHM9dC52YWx1ZUZuLG8sdT0hMSxhPXQucmVhZE9ubHksZixsLGMsaCxwLGQsdjshYSYmciYmKGY9ci5zaW1wbGUsZiYmZi5oYXNPd25Qcm9wZXJ0eShlKSYmKGk9ZltlXSx1PSEwKSkscyYmIXUmJihzLmNhbGx8fChzPXRoaXNbc10pLHMmJihvPXMuY2FsbCh0aGlzLGUpLGk9bykpO2lmKCFhJiZyKXtsPXIuY29tcGxleDtpZihsJiZsLmhhc093blByb3BlcnR5KGUpJiZpIT09dW5kZWZpbmVkJiZpIT09bnVsbCl7dj1sW2VdO2ZvcihjPTAsaD12Lmxlbmd0aDtjPGg7KytjKXA9dltjXS5wYXRoLGQ9dltjXS52YWx1ZSxuLnNldFZhbHVlKGkscCxkKX19cmV0dXJuIGl9LF9pbml0QXR0cnM6ZnVuY3Rpb24odCxuLHIpe3Q9dHx8dGhpcy5jb25zdHJ1Y3Rvci5BVFRSUzt2YXIgaT1lLkJhc2Uscz1lLkJhc2VDb3JlLG89aSYmZS5pbnN0YW5jZU9mKHRoaXMsaSksdT0hbyYmcyYmZS5pbnN0YW5jZU9mKHRoaXMscyk7dCYmIW8mJiF1JiZ0aGlzLmFkZEF0dHJzKGUuQXR0cmlidXRlQ29yZS5wcm90ZWN0QXR0cnModCksbixyKX19LGUuQXR0cmlidXRlQ29yZT1ifSwiMy4xNy4yIix7cmVxdWlyZXM6WyJvb3AiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgiYXR0cmlidXRlLW9ic2VydmFibGUiLGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcygpe3RoaXMuX0FUVFJfRV9GQUNBREU9e30sbi5jYWxsKHRoaXMse2VtaXRGYWNhZGU6ITB9KX12YXIgbj1lLkV2ZW50VGFyZ2V0LHI9IkNoYW5nZSIsaT0iYnJvYWRjYXN0IjtzLl9BVFRSX0NGRz1baV0scy5wcm90b3R5cGU9e3NldDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuX3NldEF0dHIoZSx0LG4pfSxfc2V0OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5fc2V0QXR0cihlLHQsbiwhMCl9LHNldEF0dHJzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3NldEF0dHJzKGUsdCl9LF9zZXRBdHRyczpmdW5jdGlvbihlLHQpe3ZhciBuO2ZvcihuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmdGhpcy5zZXQobixlW25dLHQpO3JldHVybiB0aGlzfSxfZmlyZUF0dHJDaGFuZ2U6ZnVuY3Rpb24odCxuLGkscyxvLHUpe3ZhciBhPXRoaXMsZj10aGlzLl9nZXRGdWxsVHlwZSh0K3IpLGw9YS5fc3RhdGUsYyxoLHA7dXx8KHU9bC5kYXRhW3RdfHx7fSksdS5wdWJsaXNoZWR8fChwPWEuX3B1Ymxpc2goZikscC5lbWl0RmFjYWRlPSEwLHAuZGVmYXVsdFRhcmdldE9ubHk9ITAscC5kZWZhdWx0Rm49YS5fZGVmQXR0ckNoYW5nZUZuLGg9dS5icm9hZGNhc3QsaCE9PXVuZGVmaW5lZCYmKHAuYnJvYWRjYXN0PWgpLHUucHVibGlzaGVkPSEwKSxvPyhjPWUubWVyZ2UobyksYy5fYXR0ck9wdHM9byk6Yz1hLl9BVFRSX0VfRkFDQURFLGMuYXR0ck5hbWU9dCxjLnN1YkF0dHJOYW1lPW4sYy5wcmV2VmFsPWksYy5uZXdWYWw9cyxhLl9oYXNQb3RlbnRpYWxTdWJzY3JpYmVycyhmKT9hLmZpcmUoZixjKTp0aGlzLl9zZXRBdHRyVmFsKHQsbixpLHMsbyx1KX0sX2RlZkF0dHJDaGFuZ2VGbjpmdW5jdGlvbihlLHQpe3ZhciBuPWUuX2F0dHJPcHRzO24mJmRlbGV0ZSBlLl9hdHRyT3B0cyx0aGlzLl9zZXRBdHRyVmFsKGUuYXR0ck5hbWUsZS5zdWJBdHRyTmFtZSxlLnByZXZWYWwsZS5uZXdWYWwsbik/dHx8KGUubmV3VmFsPXRoaXMuZ2V0KGUuYXR0ck5hbWUpKTp0fHxlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfX0sZS5taXgocyxuLCExLG51bGwsMSksZS5BdHRyaWJ1dGVPYnNlcnZhYmxlPXMsZS5BdHRyaWJ1dGVFdmVudHM9c30sIjMuMTcuMiIse3JlcXVpcmVzOlsiZXZlbnQtY3VzdG9tIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoImF0dHJpYnV0ZS1leHRyYXMiLGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbygpe312YXIgbj0iYnJvYWRjYXN0IixyPSJwdWJsaXNoZWQiLGk9ImluaXRWYWx1ZSIscz17cmVhZE9ubHk6MSx3cml0ZU9uY2U6MSxnZXR0ZXI6MSxicm9hZGNhc3Q6MX07by5wcm90b3R5cGU9e21vZGlmeUF0dHI6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLG8sdTtpZihpLmF0dHJBZGRlZChlKSl7aS5faXNMYXp5QXR0cihlKSYmaS5fYWRkTGF6eUF0dHIoZSksdT1pLl9zdGF0ZTtmb3IobyBpbiB0KXNbb10mJnQuaGFzT3duUHJvcGVydHkobykmJih1LmFkZChlLG8sdFtvXSksbz09PW4mJnUucmVtb3ZlKGUscikpfX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlKXt0aGlzLl9zdGF0ZS5yZW1vdmVBbGwoZSl9LHJlc2V0OmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXM7cmV0dXJuIHQ/KG4uX2lzTGF6eUF0dHIodCkmJm4uX2FkZExhenlBdHRyKHQpLG4uc2V0KHQsbi5fc3RhdGUuZ2V0KHQsaSkpKTplLk9iamVjdC5lYWNoKG4uX3N0YXRlLmRhdGEsZnVuY3Rpb24oZSx0KXtuLnJlc2V0KHQpfSksbn0sX2dldEF0dHJDZmc6ZnVuY3Rpb24odCl7dmFyIG4scj10aGlzLl9zdGF0ZTtyZXR1cm4gdD9uPXIuZ2V0QWxsKHQpfHx7fToobj17fSxlLmVhY2goci5kYXRhLGZ1bmN0aW9uKGUsdCl7blt0XT1yLmdldEFsbCh0KX0pKSxufX0sZS5BdHRyaWJ1dGVFeHRyYXM9b30sIjMuMTcuMiIse3JlcXVpcmVzOlsib29wIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoImF0dHJpYnV0ZS1iYXNlIixmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oKXtlLkF0dHJpYnV0ZUNvcmUuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUuQXR0cmlidXRlT2JzZXJ2YWJsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksZS5BdHRyaWJ1dGVFeHRyYXMuYXBwbHkodGhpcyxhcmd1bWVudHMpfWUubWl4KG4sZS5BdHRyaWJ1dGVDb3JlLCExLG51bGwsMSksZS5taXgobixlLkF0dHJpYnV0ZUV4dHJhcywhMSxudWxsLDEpLGUubWl4KG4sZS5BdHRyaWJ1dGVPYnNlcnZhYmxlLCEwLG51bGwsMSksbi5JTlZBTElEX1ZBTFVFPWUuQXR0cmlidXRlQ29yZS5JTlZBTElEX1ZBTFVFLG4uX0FUVFJfQ0ZHPWUuQXR0cmlidXRlQ29yZS5fQVRUUl9DRkcuY29uY2F0KGUuQXR0cmlidXRlT2JzZXJ2YWJsZS5fQVRUUl9DRkcpLG4ucHJvdGVjdEF0dHJzPWUuQXR0cmlidXRlQ29yZS5wcm90ZWN0QXR0cnMsZS5BdHRyaWJ1dGU9bn0sIjMuMTcuMiIse3JlcXVpcmVzOlsiYXR0cmlidXRlLWNvcmUiLCJhdHRyaWJ1dGUtb2JzZXJ2YWJsZSIsImF0dHJpYnV0ZS1leHRyYXMiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgiYmFzZS1jb3JlIixmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIHYoZSl7dGhpcy5fQmFzZUludm9rZWR8fCh0aGlzLl9CYXNlSW52b2tlZD0hMCx0aGlzLl9pbml0QmFzZShlKSl9dmFyIG49ZS5PYmplY3Qscj1lLkxhbmcsaT0iLiIscz0iaW5pdGlhbGl6ZWQiLG89ImRlc3Ryb3llZCIsdT0iaW5pdGlhbGl6ZXIiLGE9InZhbHVlIixmPU9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3IsbD0iZGVlcCIsYz0ic2hhbGxvdyIsaD0iZGVzdHJ1Y3RvciIscD1lLkF0dHJpYnV0ZUNvcmUsZD1mdW5jdGlvbihlLHQsbil7dmFyIHI7Zm9yKHIgaW4gdCluW3JdJiYoZVtyXT10W3JdKTtyZXR1cm4gZX07di5fQVRUUl9DRkc9cC5fQVRUUl9DRkcuY29uY2F0KCJjbG9uZURlZmF1bHRWYWx1ZSIpLHYuX05PTl9BVFRSU19DRkc9WyJwbHVnaW5zIl0sdi5OQU1FPSJiYXNlQ29yZSIsdi5BVFRSUz17aW5pdGlhbGl6ZWQ6e3JlYWRPbmx5OiEwLHZhbHVlOiExfSxkZXN0cm95ZWQ6e3JlYWRPbmx5OiEwLHZhbHVlOiExfX0sdi5tb2RpZnlBdHRycz1mdW5jdGlvbih0LG4pe3R5cGVvZiB0IT0iZnVuY3Rpb24iJiYobj10LHQ9dGhpcyk7dmFyIHIsaSxzO3I9dC5BVFRSU3x8KHQuQVRUUlM9e30pO2lmKG4pe3QuX0NBQ0hFRF9DTEFTU19EQVRBPW51bGw7Zm9yKHMgaW4gbiluLmhhc093blByb3BlcnR5KHMpJiYoaT1yW3NdfHwocltzXT17fSksZS5taXgoaSxuW3NdLCEwKSl9fSx2LnByb3RvdHlwZT17X2luaXRCYXNlOmZ1bmN0aW9uKHQpe2Uuc3RhbXAodGhpcyksdGhpcy5faW5pdEF0dHJpYnV0ZSh0KTt2YXIgbj1lLlBsdWdpbiYmZS5QbHVnaW4uSG9zdDt0aGlzLl9pbml0UGx1Z2lucyYmbiYmbi5jYWxsKHRoaXMpLHRoaXMuX2xhenlBZGRBdHRycyE9PSExJiYodGhpcy5fbGF6eUFkZEF0dHJzPSEwKSx0aGlzLm5hbWU9dGhpcy5jb25zdHJ1Y3Rvci5OQU1FLHRoaXMuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LF9pbml0QXR0cmlidXRlOmZ1bmN0aW9uKCl7cC5jYWxsKHRoaXMpfSxpbml0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9iYXNlSW5pdChlKSx0aGlzfSxfYmFzZUluaXQ6ZnVuY3Rpb24oZSl7dGhpcy5faW5pdEhpZXJhcmNoeShlKSx0aGlzLl9pbml0UGx1Z2lucyYmdGhpcy5faW5pdFBsdWdpbnMoZSksdGhpcy5fc2V0KHMsITApfSxkZXN0cm95OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jhc2VEZXN0cm95KCksdGhpc30sX2Jhc2VEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fZGVzdHJveVBsdWdpbnMmJnRoaXMuX2Rlc3Ryb3lQbHVnaW5zKCksdGhpcy5fZGVzdHJveUhpZXJhcmNoeSgpLHRoaXMuX3NldChvLCEwKX0sX2dldENsYXNzZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2xhc3Nlc3x8dGhpcy5faW5pdEhpZXJhcmNoeURhdGEoKSx0aGlzLl9jbGFzc2VzfSxfZ2V0QXR0ckNmZ3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXR0cnN8fHRoaXMuX2luaXRIaWVyYXJjaHlEYXRhKCksdGhpcy5fYXR0cnN9LF9nZXRJbnN0YW5jZUF0dHJDZmdzOmZ1bmN0aW9uKGUpe3ZhciB0PXt9LHIsaSxzLG8sdSxhLGYsbD1lLl9zdWJBdHRycyxjPXRoaXMuX2F0dHJDZmdIYXNoKCk7Zm9yKGEgaW4gZSlpZihlLmhhc093blByb3BlcnR5KGEpJiZhIT09Il9zdWJBdHRycyIpe2Y9ZVthXSxyPXRbYV09ZCh7fSxmLGMpLGk9ci52YWx1ZSxpJiZ0eXBlb2YgaT09Im9iamVjdCImJnRoaXMuX2Nsb25lRGVmYXVsdFZhbHVlKGEscik7aWYobCYmbC5oYXNPd25Qcm9wZXJ0eShhKSl7bz1lLl9zdWJBdHRyc1thXTtmb3IodSBpbiBvKXM9b1t1XSxzLnBhdGgmJm4uc2V0VmFsdWUoci52YWx1ZSxzLnBhdGgscy52YWx1ZSl9fXJldHVybiB0fSxfZmlsdGVyQWRIb2NBdHRyczpmdW5jdGlvbihlLHQpe3ZhciBuLHI9dGhpcy5fbm9uQXR0cnMsaTtpZih0KXtuPXt9O2ZvcihpIGluIHQpIWVbaV0mJiFyW2ldJiZ0Lmhhc093blByb3BlcnR5KGkpJiYobltpXT17dmFsdWU6dFtpXX0pfXJldHVybiBufSxfaW5pdEhpZXJhcmNoeURhdGE6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbnN0cnVjdG9yLHQ9ZS5fQ0FDSEVEX0NMQVNTX0RBVEEsbixyLGkscyxvLHU9IWUuX0FUVFJfQ0ZHX0hBU0gsYSxmPXt9LGw9W10sYz1bXTtuPWU7aWYoIXQpe3doaWxlKG4pe2xbbC5sZW5ndGhdPW4sbi5BVFRSUyYmKGNbYy5sZW5ndGhdPW4uQVRUUlMpO2lmKHUpe3M9bi5fQVRUUl9DRkcsbz1vfHx7fTtpZihzKWZvcihyPTAsaT1zLmxlbmd0aDtyPGk7cis9MSlvW3Nbcl1dPSEwfWE9bi5fTk9OX0FUVFJTX0NGRztpZihhKWZvcihyPTAsaT1hLmxlbmd0aDtyPGk7cisrKWZbYVtyXV09ITA7bj1uLnN1cGVyY2xhc3M/bi5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yOm51bGx9dSYmKGUuX0FUVFJfQ0ZHX0hBU0g9byksdD1lLl9DQUNIRURfQ0xBU1NfREFUQT17Y2xhc3NlczpsLG5vbkF0dHJzOmYsYXR0cnM6dGhpcy5fYWdncmVnYXRlQXR0cnMoYyl9fXRoaXMuX2NsYXNzZXM9dC5jbGFzc2VzLHRoaXMuX2F0dHJzPXQuYXR0cnMsdGhpcy5fbm9uQXR0cnM9dC5ub25BdHRyc30sX2F0dHJDZmdIYXNoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuX0FUVFJfQ0ZHX0hBU0h9LF9jbG9uZURlZmF1bHRWYWx1ZTpmdW5jdGlvbih0LG4pe3ZhciBpPW4udmFsdWUscz1uLmNsb25lRGVmYXVsdFZhbHVlO3M9PT1sfHxzPT09ITA/bi52YWx1ZT1lLmNsb25lKGkpOnM9PT1jP24udmFsdWU9ZS5tZXJnZShpKTpzPT09dW5kZWZpbmVkJiYoZj09PWkuY29uc3RydWN0b3J8fHIuaXNBcnJheShpKSkmJihuLnZhbHVlPWUuY2xvbmUoaSkpfSxfYWdncmVnYXRlQXR0cnM6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLHMsbyx1LGY9dGhpcy5fYXR0ckNmZ0hhc2goKSxsLGM9e307aWYoZSlmb3IodT1lLmxlbmd0aC0xO3U+PTA7LS11KXtuPWVbdV07Zm9yKHQgaW4gbiluLmhhc093blByb3BlcnR5KHQpJiYocz1kKHt9LG5bdF0sZiksbz1udWxsLHQuaW5kZXhPZihpKSE9PS0xJiYobz10LnNwbGl0KGkpLHQ9by5zaGlmdCgpKSxsPWNbdF0sbyYmbCYmbC52YWx1ZT8ocj1jLl9zdWJBdHRycyxyfHwocj1jLl9zdWJBdHRycz17fSksclt0XXx8KHJbdF09e30pLHJbdF1bby5qb2luKGkpXT17dmFsdWU6cy52YWx1ZSxwYXRoOm99KTpvfHwobD8obC52YWx1ZUZuJiZhIGluIHMmJihsLnZhbHVlRm49bnVsbCksZChsLHMsZikpOmNbdF09cykpfXJldHVybiBjfSxfaW5pdEhpZXJhcmNoeTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9sYXp5QWRkQXR0cnMsbixyLGkscyxvLGEsZixsLGMsaCxwLGQ9W10sdj10aGlzLl9nZXRDbGFzc2VzKCksbT10aGlzLl9nZXRBdHRyQ2ZncygpLGc9di5sZW5ndGgtMTtmb3Iobz1nO28+PTA7by0tKXtuPXZbb10scj1uLnByb3RvdHlwZSxoPW4uX3l1aWJ1aWxkJiZuLl95dWlidWlsZC5leHRzLHIuaGFzT3duUHJvcGVydHkodSkmJihkW2QubGVuZ3RoXT1yLmluaXRpYWxpemVyKTtpZihoKWZvcihhPTAsZj1oLmxlbmd0aDthPGY7YSsrKWw9aFthXSxsLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxjPWwucHJvdG90eXBlLGMuaGFzT3duUHJvcGVydHkodSkmJihkW2QubGVuZ3RoXT1jLmluaXRpYWxpemVyKX1wPXRoaXMuX2dldEluc3RhbmNlQXR0ckNmZ3MobSksdGhpcy5fcHJlQWRkQXR0cnMmJnRoaXMuX3ByZUFkZEF0dHJzKHAsZSx0KSx0aGlzLl9hbGxvd0FkSG9jQXR0cnMmJnRoaXMuYWRkQXR0cnModGhpcy5fZmlsdGVyQWRIb2NBdHRycyhtLGUpLGUsdCksdGhpcy5hZGRBdHRycyhwLGUsdCk7Zm9yKGk9MCxzPWQubGVuZ3RoO2k8cztpKyspZFtpXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LF9kZXN0cm95SGllcmFyY2h5OmZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaSxzLG8sdSxhPXRoaXMuX2dldENsYXNzZXMoKTtmb3Iobj0wLHI9YS5sZW5ndGg7bjxyO24rKyl7ZT1hW25dLHQ9ZS5wcm90b3R5cGUsbz1lLl95dWlidWlsZCYmZS5feXVpYnVpbGQuZXh0cztpZihvKWZvcihpPTAscz1vLmxlbmd0aDtpPHM7aSsrKXU9b1tpXS5wcm90b3R5cGUsdS5oYXNPd25Qcm9wZXJ0eShoKSYmdS5kZXN0cnVjdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0Lmhhc093blByb3BlcnR5KGgpJiZ0LmRlc3RydWN0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lKyJbIitlLnN0YW1wKHRoaXMsITApKyJdIn19LGUubWl4KHYscCwhMSxudWxsLDEpLHYucHJvdG90eXBlLmNvbnN0cnVjdG9yPXYsZS5CYXNlQ29yZT12fSwiMy4xNy4yIix7cmVxdWlyZXM6WyJhdHRyaWJ1dGUtY29yZSJdfSk7Ci8qCllVSSAzLjE3LjIgKGJ1aWxkIDljM2M3OGUpCkNvcHlyaWdodCAyMDE0IFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZS4KaHR0cDovL3l1aWxpYnJhcnkuY29tL2xpY2Vuc2UvCiovCgpZVUkuYWRkKCJiYXNlLW9ic2VydmFibGUiLGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gZigpe312YXIgbj1lLkxhbmcscj0iZGVzdHJveSIsaT0iaW5pdCIscz0iYnViYmxlVGFyZ2V0cyIsbz0iX2J1YmJsZVRhcmdldHMiLHU9ZS5BdHRyaWJ1dGVPYnNlcnZhYmxlLGE9ZS5CYXNlQ29yZTtmLl9BVFRSX0NGRz11Ll9BVFRSX0NGRy5jb25jYXQoKSxmLl9OT05fQVRUUlNfQ0ZHPVsib24iLCJhZnRlciIsImJ1YmJsZVRhcmdldHMiXSxmLnByb3RvdHlwZT17X2luaXRBdHRyaWJ1dGU6ZnVuY3Rpb24oKXthLnByb3RvdHlwZS5faW5pdEF0dHJpYnV0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksdS5jYWxsKHRoaXMpLHRoaXMuX2V2ZW50UHJlZml4PXRoaXMuY29uc3RydWN0b3IuRVZFTlRfUFJFRklYfHx0aGlzLmNvbnN0cnVjdG9yLk5BTUUsdGhpcy5feXVpZXZ0LmNvbmZpZy5wcmVmaXg9dGhpcy5fZXZlbnRQcmVmaXh9LGluaXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZ2V0RnVsbFR5cGUoaSksbj10aGlzLl9wdWJsaXNoKHQpO3JldHVybiBuLmVtaXRGYWNhZGU9ITAsbi5maXJlT25jZT0hMCxuLmRlZmF1bHRUYXJnZXRPbmx5PSEwLG4uZGVmYXVsdEZuPXRoaXMuX2RlZkluaXRGbix0aGlzLl9wcmVJbml0RXZlbnRDZmcoZSksbi5faGFzUG90ZW50aWFsU3Vic2NyaWJlcnMoKT90aGlzLmZpcmUodCx7Y2ZnOmV9KToodGhpcy5fYmFzZUluaXQoZSksbi5maXJlZD0hMCxuLmZpcmVkV2l0aD1be2NmZzplfV0pLHRoaXN9LF9wcmVJbml0RXZlbnRDZmc6ZnVuY3Rpb24oZSl7ZSYmKGUub24mJnRoaXMub24oZS5vbiksZS5hZnRlciYmdGhpcy5hZnRlcihlLmFmdGVyKSk7dmFyIHQscixpLHU9ZSYmcyBpbiBlO2lmKHV8fG8gaW4gdGhpcyl7aT11P2UmJmUuYnViYmxlVGFyZ2V0czp0aGlzLl9idWJibGVUYXJnZXRzO2lmKG4uaXNBcnJheShpKSlmb3IodD0wLHI9aS5sZW5ndGg7dDxyO3QrKyl0aGlzLmFkZFRhcmdldChpW3RdKTtlbHNlIGkmJnRoaXMuYWRkVGFyZ2V0KGkpfX0sZGVzdHJveTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1Ymxpc2gocix7ZmlyZU9uY2U6ITAsZGVmYXVsdFRhcmdldE9ubHk6ITAsZGVmYXVsdEZuOnRoaXMuX2RlZkRlc3Ryb3lGbn0pLHRoaXMuZmlyZShyKSx0aGlzLmRldGFjaEFsbCgpLHRoaXN9LF9kZWZJbml0Rm46ZnVuY3Rpb24oZSl7dGhpcy5fYmFzZUluaXQoZS5jZmcpfSxfZGVmRGVzdHJveUZuOmZ1bmN0aW9uKGUpe3RoaXMuX2Jhc2VEZXN0cm95KGUuY2ZnKX19LGUubWl4KGYsdSwhMSxudWxsLDEpLGUuQmFzZU9ic2VydmFibGU9Zn0sIjMuMTcuMiIse3JlcXVpcmVzOlsiYXR0cmlidXRlLW9ic2VydmFibGUiLCJiYXNlLWNvcmUiXX0pOwo="></script><script charset=utf-8 id=yui_3_17_2_1_1703147614323_5 async data-sf-original-src=https://yui-s.yahooapis.com/combo?3.17.2/base-base/base-base-min.js&3.17.2/base-build/base-build-min.js&3.17.2/escape/escape-min.js&3.17.2/event-focus/event-focus-min.js&3.17.2/event-valuechange/event-valuechange-min.js&3.17.2/autocomplete-base/autocomplete-base-min.js&3.17.2/autocomplete-sources/autocomplete-sources-min.js&3.17.2/autocomplete-list/lang/autocomplete-list_en.js&3.17.2/event-resize/event-resize-min.js&3.17.2/dom-screen/dom-screen-min.js&3.17.2/node-screen/node-screen-min.js&3.17.2/selector-css2/selector-css2-min.js&3.17.2/selector-css3/selector-css3-min.js&3.17.2/node-style/node-style-min.js&3.17.2/pluginhost-base/pluginhost-base-min.js&3.17.2/pluginhost-config/pluginhost-config-min.js&3.17.2/node-pluginhost/node-pluginhost-min.js&3.17.2/shim-plugin/shim-plugin-min.js&3.17.2/attribute-complex/attribute-complex-min.js&3.17.2/base-pluginhost/base-pluginhost-min.js&3.17.2/classnamemanager/classnamemanager-min.js&3.17.2/widget-base/widget-base-min.js src=data:application/javascript;base64,LyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoImJhc2UtYmFzZSIsZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBvKCl7aS5hcHBseSh0aGlzLGFyZ3VtZW50cykscy5hcHBseSh0aGlzLGFyZ3VtZW50cyksci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIG49ZS5BdHRyaWJ1dGVDb3JlLHI9ZS5BdHRyaWJ1dGVFeHRyYXMsaT1lLkJhc2VDb3JlLHM9ZS5CYXNlT2JzZXJ2YWJsZTtvLl9BVFRSX0NGRz1pLl9BVFRSX0NGRy5jb25jYXQocy5fQVRUUl9DRkcpLG8uX05PTl9BVFRSU19DRkc9aS5fTk9OX0FUVFJTX0NGRy5jb25jYXQocy5fTk9OX0FUVFJTX0NGRyksby5OQU1FPSJiYXNlIixvLkFUVFJTPW4ucHJvdGVjdEF0dHJzKGkuQVRUUlMpLG8ubW9kaWZ5QXR0cnM9aS5tb2RpZnlBdHRycyxlLm1peChvLGksITEsbnVsbCwxKSxlLm1peChvLHIsITEsbnVsbCwxKSxlLm1peChvLHMsITAsbnVsbCwxKSxvLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1vLGUuQmFzZT1vfSwiMy4xNy4yIix7cmVxdWlyZXM6WyJhdHRyaWJ1dGUtYmFzZSIsImJhc2UtY29yZSIsImJhc2Utb2JzZXJ2YWJsZSJdfSk7Ci8qCllVSSAzLjE3LjIgKGJ1aWxkIDljM2M3OGUpCkNvcHlyaWdodCAyMDE0IFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZS4KaHR0cDovL3l1aWxpYnJhcnkuY29tL2xpY2Vuc2UvCiovCgpZVUkuYWRkKCJiYXNlLWJ1aWxkIixmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIGYoZSx0LG4pe25bZV0mJih0W2VdPSh0W2VdfHxbXSkuY29uY2F0KG5bZV0pKX1mdW5jdGlvbiBsKGUsdCxuKXtuLl9BVFRSX0NGRyYmKHQuX0FUVFJfQ0ZHX0hBU0g9bnVsbCxmLmFwcGx5KG51bGwsYXJndW1lbnRzKSl9ZnVuY3Rpb24gYyhlLHQscil7bi5tb2RpZnlBdHRycyh0LHIuQVRUUlMpfXZhciBuPWUuQmFzZUNvcmUscj1lLkJhc2UsaT1lLkxhbmcscz0iaW5pdGlhbGl6ZXIiLG89ImRlc3RydWN0b3IiLHU9WyJfUExVRyIsIl9VTlBMVUciXSxhO3IuX2J1aWxkPWZ1bmN0aW9uKHQsbixpLHUsYSxmKXt2YXIgbD1yLl9idWlsZCxjPWwuX2N0b3IobixmKSxoPWwuX2NmZyhuLGYsaSkscD1sLl9taXhDdXN0LGQ9Yy5feXVpYnVpbGQuZHluYW1pYyx2LG0sZyx5LGIsdztmb3Iodj0wLG09aS5sZW5ndGg7djxtO3YrKylnPWlbdl0seT1nLnByb3RvdHlwZSxiPXlbc10sdz15W29dLGRlbGV0ZSB5W3NdLGRlbGV0ZSB5W29dLGUubWl4KGMsZywhMCxudWxsLDEpLHAoYyxnLGgpLGImJih5W3NdPWIpLHcmJih5W29dPXcpLGMuX3l1aWJ1aWxkLmV4dHMucHVzaChnKTtyZXR1cm4gdSYmZS5taXgoYy5wcm90b3R5cGUsdSwhMCksYSYmKGUubWl4KGMsbC5fY2xlYW4oYSxoKSwhMCkscChjLGEsaCkpLGMucHJvdG90eXBlLmhhc0ltcGw9bC5faW1wbCxkJiYoYy5OQU1FPXQsYy5wcm90b3R5cGUuY29uc3RydWN0b3I9YyxjLm1vZGlmeUF0dHJzPW4ubW9kaWZ5QXR0cnMpLGN9LGE9ci5fYnVpbGQsZS5taXgoYSx7X21peEN1c3Q6ZnVuY3Rpb24odCxuLHIpe3ZhciBzLG8sdSxhLGYsbDtyJiYocz1yLmFnZ3JlZ2F0ZXMsbz1yLmN1c3RvbSx1PXIuc3RhdGljcyksdSYmZS5taXgodCxuLCEwLHUpO2lmKHMpZm9yKGw9MCxmPXMubGVuZ3RoO2w8ZjtsKyspYT1zW2xdLCF0Lmhhc093blByb3BlcnR5KGEpJiZuLmhhc093blByb3BlcnR5KGEpJiYodFthXT1pLmlzQXJyYXkoblthXSk/W106e30pLGUuYWdncmVnYXRlKHQsbiwhMCxbYV0pO2lmKG8pZm9yKGwgaW4gbylvLmhhc093blByb3BlcnR5KGwpJiZvW2xdKGwsdCxuKX0sX3RtcGw6ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbigpe24uc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGUuZXh0ZW5kKG4sdCksbn0sX2ltcGw6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZ2V0Q2xhc3NlcygpLG4scixpLHMsbyx1O2ZvcihuPTAscj10Lmxlbmd0aDtuPHI7bisrKXtpPXRbbl07aWYoaS5feXVpYnVpbGQpe3M9aS5feXVpYnVpbGQuZXh0cyxvPXMubGVuZ3RoO2Zvcih1PTA7dTxvO3UrKylpZihzW3VdPT09ZSlyZXR1cm4hMH19cmV0dXJuITF9LF9jdG9yOmZ1bmN0aW9uKGUsdCl7dmFyIG49dCYmITE9PT10LmR5bmFtaWM/ITE6ITAscj1uP2EuX3RtcGwoZSk6ZSxpPXIuX3l1aWJ1aWxkO3JldHVybiBpfHwoaT1yLl95dWlidWlsZD17fSksaS5pZD1pLmlkfHxudWxsLGkuZXh0cz1pLmV4dHN8fFtdLGkuZHluYW1pYz1uLHJ9LF9jZmc6ZnVuY3Rpb24odCxuLHIpe3ZhciBpPVtdLHM9e30sbz1bXSx1LGE9biYmbi5hZ2dyZWdhdGVzLGY9biYmbi5jdXN0b20sbD1uJiZuLnN0YXRpY3MsYz10LGgscDt3aGlsZShjJiZjLnByb3RvdHlwZSl1PWMuX2J1aWxkQ2ZnLHUmJih1LmFnZ3JlZ2F0ZXMmJihpPWkuY29uY2F0KHUuYWdncmVnYXRlcykpLHUuY3VzdG9tJiZlLm1peChzLHUuY3VzdG9tLCEwKSx1LnN0YXRpY3MmJihvPW8uY29uY2F0KHUuc3RhdGljcykpKSxjPWMuc3VwZXJjbGFzcz9jLnN1cGVyY2xhc3MuY29uc3RydWN0b3I6bnVsbDtpZihyKWZvcihoPTAscD1yLmxlbmd0aDtoPHA7aCsrKWM9cltoXSx1PWMuX2J1aWxkQ2ZnLHUmJih1LmFnZ3JlZ2F0ZXMmJihpPWkuY29uY2F0KHUuYWdncmVnYXRlcykpLHUuY3VzdG9tJiZlLm1peChzLHUuY3VzdG9tLCEwKSx1LnN0YXRpY3MmJihvPW8uY29uY2F0KHUuc3RhdGljcykpKTtyZXR1cm4gYSYmKGk9aS5jb25jYXQoYSkpLGYmJmUubWl4KHMsbi5jZmdCdWlsZCwhMCksbCYmKG89by5jb25jYXQobCkpLHthZ2dyZWdhdGVzOmksY3VzdG9tOnMsc3RhdGljczpvfX0sX2NsZWFuOmZ1bmN0aW9uKHQsbil7dmFyIHIsaSxzLG89ZS5tZXJnZSh0KSx1PW4uYWdncmVnYXRlcyxhPW4uY3VzdG9tO2ZvcihyIGluIGEpby5oYXNPd25Qcm9wZXJ0eShyKSYmZGVsZXRlIG9bcl07Zm9yKGk9MCxzPXUubGVuZ3RoO2k8cztpKyspcj11W2ldLG8uaGFzT3duUHJvcGVydHkocikmJmRlbGV0ZSBvW3JdO3JldHVybiBvfX0pLHIuYnVpbGQ9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIGEoZSx0LG4sbnVsbCxudWxsLHIpfSxyLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiBhKGUsdCxuLHIsaSl9LHIubWl4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX0NBQ0hFRF9DTEFTU19EQVRBJiYoZS5fQ0FDSEVEX0NMQVNTX0RBVEE9bnVsbCksYShudWxsLGUsdCxudWxsLG51bGwse2R5bmFtaWM6ITF9KX0sbi5fYnVpbGRDZmc9e2FnZ3JlZ2F0ZXM6dS5jb25jYXQoKSxjdXN0b206e0FUVFJTOmMsX0FUVFJfQ0ZHOmwsX05PTl9BVFRSU19DRkc6Zn19LHIuX2J1aWxkQ2ZnPXthZ2dyZWdhdGVzOnUuY29uY2F0KCksY3VzdG9tOntBVFRSUzpjLF9BVFRSX0NGRzpsLF9OT05fQVRUUlNfQ0ZHOmZ9fX0sIjMuMTcuMiIse3JlcXVpcmVzOlsiYmFzZS1iYXNlIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoImVzY2FwZSIsZnVuY3Rpb24oZSx0KXt2YXIgbj17IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjeDI3OyIsIi8iOiImI3gyRjsiLCJgIjoiJiN4NjA7In0scj17aHRtbDpmdW5jdGlvbihlKXtyZXR1cm4oZSsiIikucmVwbGFjZSgvWyY8PiInXC9gXS9nLHIuX2h0bWxSZXBsYWNlcil9LHJlZ2V4OmZ1bmN0aW9uKGUpe3JldHVybihlKyIiKS5yZXBsYWNlKC9bXC0kXF4qKCkrXFtcXXt9fFxcLC4/XHNdL2csIlxcJCYiKX0sX2h0bWxSZXBsYWNlcjpmdW5jdGlvbihlKXtyZXR1cm4gbltlXX19O3IucmVnZXhwPXIucmVnZXgsZS5Fc2NhcGU9cn0sIjMuMTcuMiIse3JlcXVpcmVzOlsieXVpLWJhc2UiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgiZXZlbnQtZm9jdXMiLGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gdSh0LHIsdSl7dmFyIGE9Il8iK3QrIk5vdGlmaWVycyI7ZS5FdmVudC5kZWZpbmUodCx7X3VzZUFjdGl2YXRlOm8sX2F0dGFjaDpmdW5jdGlvbihpLHMsbyl7cmV0dXJuIGUuRE9NLmlzV2luZG93KGkpP24uX2F0dGFjaChbdCxmdW5jdGlvbihlKXtzLmZpcmUoZSl9LGldKTpuLl9hdHRhY2goW3IsdGhpcy5fcHJveHksaSx0aGlzLHMsb10se2NhcHR1cmU6ITB9KX0sX3Byb3h5OmZ1bmN0aW9uKHQscixpKXt2YXIgcz10LnRhcmdldCxmPXQuY3VycmVudFRhcmdldCxsPXMuZ2V0RGF0YShhKSxjPWUuc3RhbXAoZi5fbm9kZSksaD1vfHxzIT09ZixwO3IuY3VycmVudFRhcmdldD1pP3M6ZixyLmNvbnRhaW5lcj1pP2Y6bnVsbCxsP2g9ITA6KGw9e30scy5zZXREYXRhKGEsbCksaCYmKHA9bi5fYXR0YWNoKFt1LHRoaXMuX25vdGlmeSxzLl9ub2RlXSkuc3ViLHAub25jZT0hMCkpLGxbY118fChsW2NdPVtdKSxsW2NdLnB1c2gociksaHx8dGhpcy5fbm90aWZ5KHQpfSxfbm90aWZ5OmZ1bmN0aW9uKHQsbil7dmFyIHI9dC5jdXJyZW50VGFyZ2V0LGk9ci5nZXREYXRhKGEpLG89ci5hbmNlc3RvcnMoKSx1PXIuZ2V0KCJvd25lckRvY3VtZW50IiksZj1bXSxsPWk/ZS5PYmplY3Qua2V5cyhpKS5sZW5ndGg6MCxjLGgscCxkLHYsbSxnLHksYix3O3IuY2xlYXJEYXRhKGEpLG8ucHVzaChyKSx1JiZvLnVuc2hpZnQodSksby5fbm9kZXMucmV2ZXJzZSgpLGwmJihtPWwsby5zb21lKGZ1bmN0aW9uKHQpe3ZhciBuPWUuc3RhbXAodCkscj1pW25dLHMsbztpZihyKXtsLS07Zm9yKHM9MCxvPXIubGVuZ3RoO3M8bzsrK3MpcltzXS5oYW5kbGUuc3ViLmZpbHRlciYmZi5wdXNoKHJbc10pfXJldHVybiFsfSksbD1tKTt3aGlsZShsJiYoYz1vLnNoaWZ0KCkpKXtkPWUuc3RhbXAoYyksaD1pW2RdO2lmKGgpe2ZvcihnPTAseT1oLmxlbmd0aDtnPHk7KytnKXtwPWhbZ10sYj1wLmhhbmRsZS5zdWIsdj0hMCx0LmN1cnJlbnRUYXJnZXQ9YyxiLmZpbHRlciYmKHY9Yi5maWx0ZXIuYXBwbHkoYyxbYyx0XS5jb25jYXQoYi5hcmdzfHxbXSkpLGYuc3BsaWNlKHMoZixwKSwxKSksdiYmKHQuY29udGFpbmVyPXAuY29udGFpbmVyLHc9cC5maXJlKHQpKTtpZih3PT09ITF8fHQuc3RvcHBlZD09PTIpYnJlYWt9ZGVsZXRlIGhbZF0sbC0tfWlmKHQuc3RvcHBlZCE9PTIpZm9yKGc9MCx5PWYubGVuZ3RoO2c8eTsrK2cpe3A9ZltnXSxiPXAuaGFuZGxlLnN1YixiLmZpbHRlci5hcHBseShjLFtjLHRdLmNvbmNhdChiLmFyZ3N8fFtdKSkmJih0LmNvbnRhaW5lcj1wLmNvbnRhaW5lcix0LmN1cnJlbnRUYXJnZXQ9Yyx3PXAuZmlyZSh0KSk7aWYodz09PSExfHx0LnN0b3BwZWQ9PT0yfHx0LnN0b3BwZWQmJmZbZysxXSYmZltnKzFdLmNvbnRhaW5lciE9PXAuY29udGFpbmVyKWJyZWFrfWlmKHQuc3RvcHBlZClicmVha319LG9uOmZ1bmN0aW9uKGUsdCxuKXt0LmhhbmRsZT10aGlzLl9hdHRhY2goZS5fbm9kZSxuKX0sZGV0YWNoOmZ1bmN0aW9uKGUsdCl7dC5oYW5kbGUuZGV0YWNoKCl9LGRlbGVnYXRlOmZ1bmN0aW9uKHQsbixyLHMpe2kocykmJihuLmZpbHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gZS5TZWxlY3Rvci50ZXN0KG4uX25vZGUscyx0PT09bj9udWxsOnQuX25vZGUpfSksbi5oYW5kbGU9dGhpcy5fYXR0YWNoKHQuX25vZGUsciwhMCl9LGRldGFjaERlbGVnYXRlOmZ1bmN0aW9uKGUsdCl7dC5oYW5kbGUuZGV0YWNoKCl9fSwhMCl9dmFyIG49ZS5FdmVudCxyPWUuTGFuZyxpPXIuaXNTdHJpbmcscz1lLkFycmF5LmluZGV4T2Ysbz1mdW5jdGlvbigpe3ZhciB0PSExLG49ZS5jb25maWcuZG9jLHI7cmV0dXJuIG4mJihyPW4uY3JlYXRlRWxlbWVudCgicCIpLHIuc2V0QXR0cmlidXRlKCJvbmJlZm9yZWFjdGl2YXRlIiwiOyIpLHQ9ci5vbmJlZm9yZWFjdGl2YXRlIT09dW5kZWZpbmVkKSx0fSgpO28/KHUoImZvY3VzIiwiYmVmb3JlYWN0aXZhdGUiLCJmb2N1c2luIiksdSgiYmx1ciIsImJlZm9yZWRlYWN0aXZhdGUiLCJmb2N1c291dCIpKToodSgiZm9jdXMiLCJmb2N1cyIsImZvY3VzIiksdSgiYmx1ciIsImJsdXIiLCJibHVyIikpfSwiMy4xNy4yIix7cmVxdWlyZXM6WyJldmVudC1zeW50aGV0aWMiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgiZXZlbnQtdmFsdWVjaGFuZ2UiLGZ1bmN0aW9uKGUsdCl7dmFyIG49Il92YWx1ZWNoYW5nZSIscj0idmFsdWUiLGk9Im5vZGVOYW1lIixzLG89e1BPTExfSU5URVJWQUw6NTAsVElNRU9VVDoxZTQsX3BvbGw6ZnVuY3Rpb24odCxyKXt2YXIgaT10Ll9ub2RlLHM9ci5lLHU9dC5fZGF0YSYmdC5fZGF0YVtuXSxhPTAsZixsLGMsaCxwLGQ7aWYoIWl8fCF1KXtvLl9zdG9wUG9sbGluZyh0KTtyZXR1cm59bD11LnByZXZWYWwsaD11Lm5vZGVOYW1lLHUuaXNFZGl0YWJsZT9jPWkuaW5uZXJIVE1MOmg9PT0iaW5wdXQifHxoPT09InRleHRhcmVhIj9jPWkudmFsdWU6aD09PSJzZWxlY3QiJiYocD1pLm9wdGlvbnNbaS5zZWxlY3RlZEluZGV4XSxjPXAudmFsdWV8fHAudGV4dCksYyE9PWwmJih1LnByZXZWYWw9YyxmPXtfZXZlbnQ6cyxjdXJyZW50VGFyZ2V0OnMmJnMuY3VycmVudFRhcmdldHx8dCxuZXdWYWw6YyxwcmV2VmFsOmwsdGFyZ2V0OnMmJnMudGFyZ2V0fHx0fSxlLk9iamVjdC5zb21lKHUubm90aWZpZXJzLGZ1bmN0aW9uKGUpe3ZhciB0PWUuaGFuZGxlLmV2dCxuO2EhPT0xP2UuZmlyZShmKTp0LmVsPT09ZCYmZS5maXJlKGYpLG49dCYmdC5fZmFjYWRlP3QuX2ZhY2FkZS5zdG9wcGVkOjAsbj5hJiYoYT1uLGE9PT0xJiYoZD10LmVsKSk7aWYoYT09PTIpcmV0dXJuITB9KSxvLl9yZWZyZXNoVGltZW91dCh0KSl9LF9yZWZyZXNoVGltZW91dDpmdW5jdGlvbihlLHQpe2lmKCFlLl9ub2RlKXJldHVybjt2YXIgcj1lLmdldERhdGEobik7by5fc3RvcFRpbWVvdXQoZSksci50aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtvLl9zdG9wUG9sbGluZyhlLHQpfSxvLlRJTUVPVVQpfSxfc3RhcnRQb2xsaW5nOmZ1bmN0aW9uKHQscyx1KXt2YXIgYSxmO2lmKCF0LnRlc3QoImlucHV0LHRleHRhcmVhLHNlbGVjdCIpJiYhKGY9by5faXNFZGl0YWJsZSh0KSkpcmV0dXJuO2E9dC5nZXREYXRhKG4pLGF8fChhPXtub2RlTmFtZTp0LmdldChpKS50b0xvd2VyQ2FzZSgpLGlzRWRpdGFibGU6ZixwcmV2VmFsOmY/dC5nZXRET01Ob2RlKCkuaW5uZXJIVE1MOnQuZ2V0KHIpfSx0LnNldERhdGEobixhKSksYS5ub3RpZmllcnN8fChhLm5vdGlmaWVycz17fSk7aWYoYS5pbnRlcnZhbCl7aWYoIXUuZm9yY2Upe2Eubm90aWZpZXJzW2Uuc3RhbXAocyldPXM7cmV0dXJufW8uX3N0b3BQb2xsaW5nKHQscyl9YS5ub3RpZmllcnNbZS5zdGFtcChzKV09cyxhLmludGVydmFsPXNldEludGVydmFsKGZ1bmN0aW9uKCl7by5fcG9sbCh0LHUpfSxvLlBPTExfSU5URVJWQUwpLG8uX3JlZnJlc2hUaW1lb3V0KHQscyl9LF9zdG9wUG9sbGluZzpmdW5jdGlvbih0LHIpe2lmKCF0Ll9ub2RlKXJldHVybjt2YXIgaT10LmdldERhdGEobil8fHt9O2NsZWFySW50ZXJ2YWwoaS5pbnRlcnZhbCksZGVsZXRlIGkuaW50ZXJ2YWwsby5fc3RvcFRpbWVvdXQodCkscj9pLm5vdGlmaWVycyYmZGVsZXRlIGkubm90aWZpZXJzW2Uuc3RhbXAocildOmkubm90aWZpZXJzPXt9fSxfc3RvcFRpbWVvdXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXREYXRhKG4pfHx7fTtjbGVhclRpbWVvdXQodC50aW1lb3V0KSxkZWxldGUgdC50aW1lb3V0fSxfaXNFZGl0YWJsZTpmdW5jdGlvbihlKXt2YXIgdD1lLl9ub2RlO3JldHVybiB0LmNvbnRlbnRFZGl0YWJsZT09PSJ0cnVlInx8dC5jb250ZW50RWRpdGFibGU9PT0iIn0sX29uQmx1cjpmdW5jdGlvbihlLHQpe28uX3N0b3BQb2xsaW5nKGUuY3VycmVudFRhcmdldCx0KX0sX29uRm9jdXM6ZnVuY3Rpb24oZSx0KXt2YXIgcz1lLmN1cnJlbnRUYXJnZXQsdT1zLmdldERhdGEobik7dXx8KHU9e2lzRWRpdGFibGU6by5faXNFZGl0YWJsZShzKSxub2RlTmFtZTpzLmdldChpKS50b0xvd2VyQ2FzZSgpfSxzLnNldERhdGEobix1KSksdS5wcmV2VmFsPXUuaXNFZGl0YWJsZT9zLmdldERPTU5vZGUoKS5pbm5lckhUTUw6cy5nZXQociksby5fc3RhcnRQb2xsaW5nKHMsdCx7ZTplfSl9LF9vbktleURvd246ZnVuY3Rpb24oZSx0KXtvLl9zdGFydFBvbGxpbmcoZS5jdXJyZW50VGFyZ2V0LHQse2U6ZX0pfSxfb25LZXlVcDpmdW5jdGlvbihlLHQpeyhlLmNoYXJDb2RlPT09MjI5fHxlLmNoYXJDb2RlPT09MTk3KSYmby5fc3RhcnRQb2xsaW5nKGUuY3VycmVudFRhcmdldCx0LHtlOmUsZm9yY2U6ITB9KX0sX29uTW91c2VEb3duOmZ1bmN0aW9uKGUsdCl7by5fc3RhcnRQb2xsaW5nKGUuY3VycmVudFRhcmdldCx0LHtlOmV9KX0sX29uU3Vic2NyaWJlOmZ1bmN0aW9uKHQscyx1LGEpe3ZhciBmLGwsYyxoLHA7bD17Ymx1cjpvLl9vbkJsdXIsZm9jdXM6by5fb25Gb2N1cyxrZXlkb3duOm8uX29uS2V5RG93bixrZXl1cDpvLl9vbktleVVwLG1vdXNlZG93bjpvLl9vbk1vdXNlRG93bn0sZj11Ll92YWx1ZWNoYW5nZT17fTtpZihhKWYuZGVsZWdhdGVkPSEwLGYuZ2V0Tm9kZXM9ZnVuY3Rpb24oKXtyZXR1cm4gaD10LmFsbCgiaW5wdXQsdGV4dGFyZWEsc2VsZWN0IikuZmlsdGVyKGEpLHA9dC5hbGwoJ1tjb250ZW50ZWRpdGFibGU9InRydWUiXSxbY29udGVudGVkaXRhYmxlPSIiXScpLmZpbHRlcihhKSxoLmNvbmNhdChwKX0sZi5nZXROb2RlcygpLmVhY2goZnVuY3Rpb24oZSl7ZS5nZXREYXRhKG4pfHxlLnNldERhdGEobix7bm9kZU5hbWU6ZS5nZXQoaSkudG9Mb3dlckNhc2UoKSxpc0VkaXRhYmxlOm8uX2lzRWRpdGFibGUoZSkscHJldlZhbDpjP2UuZ2V0RE9NTm9kZSgpLmlubmVySFRNTDplLmdldChyKX0pfSksdS5faGFuZGxlcz1lLmRlbGVnYXRlKGwsdCxhLG51bGwsdSk7ZWxzZXtjPW8uX2lzRWRpdGFibGUodCk7aWYoIXQudGVzdCgiaW5wdXQsdGV4dGFyZWEsc2VsZWN0IikmJiFjKXJldHVybjt0LmdldERhdGEobil8fHQuc2V0RGF0YShuLHtub2RlTmFtZTp0LmdldChpKS50b0xvd2VyQ2FzZSgpLGlzRWRpdGFibGU6YyxwcmV2VmFsOmM/dC5nZXRET01Ob2RlKCkuaW5uZXJIVE1MOnQuZ2V0KHIpfSksdS5faGFuZGxlcz10Lm9uKGwsbnVsbCxudWxsLHUpfX0sX29uVW5zdWJzY3JpYmU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4uX3ZhbHVlY2hhbmdlO24uX2hhbmRsZXMmJm4uX2hhbmRsZXMuZGV0YWNoKCksci5kZWxlZ2F0ZWQ/ci5nZXROb2RlcygpLmVhY2goZnVuY3Rpb24oZSl7by5fc3RvcFBvbGxpbmcoZSxuKX0pOm8uX3N0b3BQb2xsaW5nKGUsbil9fTtzPXtkZXRhY2g6by5fb25VbnN1YnNjcmliZSxvbjpvLl9vblN1YnNjcmliZSxkZWxlZ2F0ZTpvLl9vblN1YnNjcmliZSxkZXRhY2hEZWxlZ2F0ZTpvLl9vblVuc3Vic2NyaWJlLHB1Ymxpc2hDb25maWc6e2VtaXRGYWNhZGU6ITB9fSxlLkV2ZW50LmRlZmluZSgidmFsdWVjaGFuZ2UiLHMpLGUuRXZlbnQuZGVmaW5lKCJ2YWx1ZUNoYW5nZSIscyksZS5WYWx1ZUNoYW5nZT1vfSwiMy4xNy4yIix7cmVxdWlyZXM6WyJldmVudC1mb2N1cyIsImV2ZW50LXN5bnRoZXRpYyJdfSk7Ci8qCllVSSAzLjE3LjIgKGJ1aWxkIDljM2M3OGUpCkNvcHlyaWdodCAyMDE0IFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZS4KaHR0cDovL3l1aWxpYnJhcnkuY29tL2xpY2Vuc2UvCiovCgpZVUkuYWRkKCJhdXRvY29tcGxldGUtYmFzZSIsZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBUKCl7fXZhciBuPWUuRXNjYXBlLHI9ZS5MYW5nLGk9ZS5BcnJheSxzPWUuT2JqZWN0LG89ci5pc0Z1bmN0aW9uLHU9ci5pc1N0cmluZyxhPXIudHJpbSxmPWUuQXR0cmlidXRlLklOVkFMSURfVkFMVUUsbD0iX2Z1bmN0aW9uVmFsaWRhdG9yIixjPSJfc291cmNlU3VjY2VzcyIsaD0iYWxsb3dCcm93c2VyQXV0b2NvbXBsZXRlIixwPSJpbnB1dE5vZGUiLGQ9InF1ZXJ5Iix2PSJxdWVyeURlbGltaXRlciIsbT0icmVxdWVzdFRlbXBsYXRlIixnPSJyZXN1bHRzIix5PSJyZXN1bHRMaXN0TG9jYXRvciIsYj0idmFsdWUiLHc9InZhbHVlQ2hhbmdlIixFPSJjbGVhciIsUz1kLHg9ZztULnByb3RvdHlwZT17aW5pdGlhbGl6ZXI6ZnVuY3Rpb24oKXtlLmJlZm9yZSh0aGlzLl9iaW5kVUlBQ0Jhc2UsdGhpcywiYmluZFVJIiksZS5iZWZvcmUodGhpcy5fc3luY1VJQUNCYXNlLHRoaXMsInN5bmNVSSIpLHRoaXMucHVibGlzaChFLHtkZWZhdWx0Rm46dGhpcy5fZGVmQ2xlYXJGbn0pLHRoaXMucHVibGlzaChTLHtkZWZhdWx0Rm46dGhpcy5fZGVmUXVlcnlGbn0pLHRoaXMucHVibGlzaCh4LHtkZWZhdWx0Rm46dGhpcy5fZGVmUmVzdWx0c0ZufSl9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlzLl9hY0Jhc2VFdmVudHMmJnRoaXMuX2FjQmFzZUV2ZW50cy5kZXRhY2goKSxkZWxldGUgdGhpcy5fYWNCYXNlRXZlbnRzLGRlbGV0ZSB0aGlzLl9jYWNoZSxkZWxldGUgdGhpcy5faW5wdXROb2RlLGRlbGV0ZSB0aGlzLl9yYXdTb3VyY2V9LGNsZWFyQ2FjaGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FjaGUmJih0aGlzLl9jYWNoZT17fSksdGhpc30sc2VuZFJlcXVlc3Q6ZnVuY3Rpb24odCxuKXt2YXIgcixpPXRoaXMuZ2V0KCJzb3VyY2UiKTtyZXR1cm4gdHx8dD09PSIiP3RoaXMuX3NldChkLHQpOnQ9dGhpcy5nZXQoZCl8fCIiLGkmJihufHwobj10aGlzLmdldChtKSkscj1uP24uY2FsbCh0aGlzLHQpOnQsaS5zZW5kUmVxdWVzdCh7cXVlcnk6dCxyZXF1ZXN0OnIsY2FsbGJhY2s6e3N1Y2Nlc3M6ZS5iaW5kKHRoaXMuX29uUmVzcG9uc2UsdGhpcyx0KX19KSksdGhpc30sX2JpbmRVSUFDQmFzZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0KHApLG49dCYmdC50b2tlbklucHV0O24mJih0PW4uZ2V0KHApLHRoaXMuX3NldCgidG9rZW5JbnB1dCIsbikpO2lmKCF0KXtlLmVycm9yKCJObyBpbnB1dE5vZGUgc3BlY2lmaWVkLiIpO3JldHVybn10aGlzLl9pbnB1dE5vZGU9dCx0aGlzLl9hY0Jhc2VFdmVudHM9bmV3IGUuRXZlbnRIYW5kbGUoW3Qub24odyx0aGlzLl9vbklucHV0VmFsdWVDaGFuZ2UsdGhpcyksdC5vbigiYmx1ciIsdGhpcy5fb25JbnB1dEJsdXIsdGhpcyksdGhpcy5hZnRlcihoKyJDaGFuZ2UiLHRoaXMuX3N5bmNCcm93c2VyQXV0b2NvbXBsZXRlKSx0aGlzLmFmdGVyKCJzb3VyY2VUeXBlQ2hhbmdlIix0aGlzLl9hZnRlclNvdXJjZVR5cGVDaGFuZ2UpLHRoaXMuYWZ0ZXIodyx0aGlzLl9hZnRlclZhbHVlQ2hhbmdlKV0pfSxfc3luY1VJQUNCYXNlOmZ1bmN0aW9uKCl7dGhpcy5fc3luY0Jyb3dzZXJBdXRvY29tcGxldGUoKSx0aGlzLnNldChiLHRoaXMuZ2V0KHApLmdldChiKSl9LF9jcmVhdGVBcnJheVNvdXJjZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybnt0eXBlOiJhcnJheSIsc2VuZFJlcXVlc3Q6ZnVuY3Rpb24obil7dFtjXShlLmNvbmNhdCgpLG4pfX19LF9jcmVhdGVGdW5jdGlvblNvdXJjZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybnt0eXBlOiJmdW5jdGlvbiIsc2VuZFJlcXVlc3Q6ZnVuY3Rpb24obil7ZnVuY3Rpb24gaShlKXt0W2NdKGV8fFtdLG4pfXZhciByOyhyPWUobi5xdWVyeSxpKSkmJmkocil9fX0sX2NyZWF0ZU9iamVjdFNvdXJjZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybnt0eXBlOiJvYmplY3QiLHNlbmRSZXF1ZXN0OmZ1bmN0aW9uKG4pe3ZhciByPW4ucXVlcnk7dFtjXShzLm93bnMoZSxyKT9lW3JdOltdLG4pfX19LF9mdW5jdGlvblZhbGlkYXRvcjpmdW5jdGlvbihlKXtyZXR1cm4gZT09PW51bGx8fG8oZSl9LF9nZXRPYmplY3RWYWx1ZTpmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtmb3IodmFyIG49MCxyPXQubGVuZ3RoO2UmJm48cjtuKyspZT1lW3Rbbl1dO3JldHVybiBlfSxfcGFyc2VSZXNwb25zZTpmdW5jdGlvbihlLHQscil7dmFyIGk9e2RhdGE6cixxdWVyeTplLHJlc3VsdHM6W119LHM9dGhpcy5nZXQoeSksbz1bXSx1PXQmJnQucmVzdWx0cyxhLGYsbCxjLGgscCxkLHYsbSxnLGI7dSYmcyYmKHU9cy5jYWxsKHRoaXMsdSkpO2lmKHUmJnUubGVuZ3RoKXthPXRoaXMuZ2V0KCJyZXN1bHRGaWx0ZXJzIiksYj10aGlzLmdldCgicmVzdWx0VGV4dExvY2F0b3IiKTtmb3IocD0wLGQ9dS5sZW5ndGg7cDxkOysrcCltPXVbcF0sZz1iP2IuY2FsbCh0aGlzLG0pOm0udG9TdHJpbmcoKSxvLnB1c2goe2Rpc3BsYXk6bi5odG1sKGcpLHJhdzptLHRleHQ6Z30pO2ZvcihwPTAsZD1hLmxlbmd0aDtwPGQ7KytwKXtvPWFbcF0uY2FsbCh0aGlzLGUsby5jb25jYXQoKSk7aWYoIW8pcmV0dXJuO2lmKCFvLmxlbmd0aClicmVha31pZihvLmxlbmd0aCl7bD10aGlzLmdldCgicmVzdWx0Rm9ybWF0dGVyIiksaD10aGlzLmdldCgicmVzdWx0SGlnaGxpZ2h0ZXIiKSx2PXRoaXMuZ2V0KCJtYXhSZXN1bHRzIiksdiYmdj4wJiZvLmxlbmd0aD52JiYoby5sZW5ndGg9dik7aWYoaCl7Yz1oLmNhbGwodGhpcyxlLG8uY29uY2F0KCkpO2lmKCFjKXJldHVybjtmb3IocD0wLGQ9Yy5sZW5ndGg7cDxkOysrcCltPW9bcF0sbS5oaWdobGlnaHRlZD1jW3BdLG0uZGlzcGxheT1tLmhpZ2hsaWdodGVkfWlmKGwpe2Y9bC5jYWxsKHRoaXMsZSxvLmNvbmNhdCgpKTtpZighZilyZXR1cm47Zm9yKHA9MCxkPWYubGVuZ3RoO3A8ZDsrK3Apb1twXS5kaXNwbGF5PWZbcF19fX1pLnJlc3VsdHM9byx0aGlzLmZpcmUoeCxpKX0sX3BhcnNlVmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXQodik7cmV0dXJuIHQmJihlPWUuc3BsaXQodCksZT1lW2UubGVuZ3RoLTFdKSxyLnRyaW1MZWZ0KGUpfSxfc2V0RW5hYmxlQ2FjaGU6ZnVuY3Rpb24oZSl7dGhpcy5fY2FjaGU9ZT97fTpudWxsfSxfc2V0TG9jYXRvcjpmdW5jdGlvbihlKXtpZih0aGlzW2xdKGUpKXJldHVybiBlO3ZhciB0PXRoaXM7cmV0dXJuIGU9ZS50b1N0cmluZygpLnNwbGl0KCIuIiksZnVuY3Rpb24obil7cmV0dXJuIG4mJnQuX2dldE9iamVjdFZhbHVlKG4sZSl9fSxfc2V0UmVxdWVzdFRlbXBsYXRlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzW2xdKGUpP2U6KGU9ZS50b1N0cmluZygpLGZ1bmN0aW9uKHQpe3JldHVybiByLnN1YihlLHtxdWVyeTplbmNvZGVVUklDb21wb25lbnQodCl9KX0pfSxfc2V0UmVzdWx0RmlsdGVyczpmdW5jdGlvbih0KXt2YXIgbixzO3JldHVybiB0PT09bnVsbD9bXToobj1lLkF1dG9Db21wbGV0ZUZpbHRlcnMscz1mdW5jdGlvbihlKXtyZXR1cm4gbyhlKT9lOnUoZSkmJm4mJm8obltlXSk/bltlXTohMX0sci5pc0FycmF5KHQpPyh0PWkubWFwKHQscyksaS5ldmVyeSh0LGZ1bmN0aW9uKGUpe3JldHVybiEhZX0pP3Q6Zik6KHQ9cyh0KSx0P1t0XTpmKSl9LF9zZXRSZXN1bHRIaWdobGlnaHRlcjpmdW5jdGlvbih0KXt2YXIgbjtyZXR1cm4gdGhpc1tsXSh0KT90OihuPWUuQXV0b0NvbXBsZXRlSGlnaGxpZ2h0ZXJzLHUodCkmJm4mJm8oblt0XSk/blt0XTpmKX0sX3NldFNvdXJjZTpmdW5jdGlvbih0KXt2YXIgbj10aGlzLmdldCgic291cmNlVHlwZSIpfHxyLnR5cGUodCksaTtyZXR1cm4gdCYmbyh0LnNlbmRSZXF1ZXN0KXx8dD09PW51bGx8fG49PT0iZGF0YXNvdXJjZSI/KHRoaXMuX3Jhd1NvdXJjZT10LHQpOihpPVQuU09VUkNFX1RZUEVTW25dKT8odGhpcy5fcmF3U291cmNlPXQsci5pc1N0cmluZyhpKT90aGlzW2ldKHQpOmkodCkpOihlLmVycm9yKCJVbnN1cHBvcnRlZCBzb3VyY2UgdHlwZSAnIituKyInLiBNYXliZSBhdXRvY29tcGxldGUtc291cmNlcyBpc24ndCBsb2FkZWQ/IiksZil9LF9zb3VyY2VTdWNjZXNzOmZ1bmN0aW9uKGUsdCl7dC5jYWxsYmFjay5zdWNjZXNzKHtkYXRhOmUscmVzcG9uc2U6e3Jlc3VsdHM6ZX19KX0sX3N5bmNCcm93c2VyQXV0b2NvbXBsZXRlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXQocCk7ZS5nZXQoIm5vZGVOYW1lIikudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJmUuc2V0QXR0cmlidXRlKCJhdXRvY29tcGxldGUiLHRoaXMuZ2V0KGgpPyJvbiI6Im9mZiIpfSxfdXBkYXRlVmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXQodiksbixzLG87ZT1yLnRyaW1MZWZ0KGUpLHQmJihuPWEodCksbz1pLm1hcChhKHRoaXMuZ2V0KGIpKS5zcGxpdCh0KSxhKSxzPW8ubGVuZ3RoLHM+MSYmKG9bcy0xXT1lLGU9by5qb2luKG4rIiAiKSksZT1lK24rIiAiKSx0aGlzLnNldChiLGUpfSxfYWZ0ZXJTb3VyY2VUeXBlQ2hhbmdlOmZ1bmN0aW9uKGUpe3RoaXMuX3Jhd1NvdXJjZSYmdGhpcy5zZXQoInNvdXJjZSIsdGhpcy5fcmF3U291cmNlKX0sX2FmdGVyVmFsdWVDaGFuZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5uZXdWYWwsbj10aGlzLHI9ZS5zcmM9PT1ULlVJX1NSQyxpLHMsbyx1O3J8fG4uX2lucHV0Tm9kZS5zZXQoYix0KSxvPW4uZ2V0KCJtaW5RdWVyeUxlbmd0aCIpLHU9bi5fcGFyc2VWYWx1ZSh0KXx8IiIsbz49MCYmdS5sZW5ndGg+PW8/cj8oaT1uLmdldCgicXVlcnlEZWxheSIpLHM9ZnVuY3Rpb24oKXtuLmZpcmUoUyx7aW5wdXRWYWx1ZTp0LHF1ZXJ5OnUsc3JjOmUuc3JjfSl9LGk/KGNsZWFyVGltZW91dChuLl9kZWxheSksbi5fZGVsYXk9c2V0VGltZW91dChzLGkpKTpzKCkpOm4uX3NldChkLHUpOihjbGVhclRpbWVvdXQobi5fZGVsYXkpLG4uZmlyZShFLHtwcmV2VmFsOmUucHJldlZhbD9uLl9wYXJzZVZhbHVlKGUucHJldlZhbCk6bnVsbCxzcmM6ZS5zcmN9KSl9LF9vbklucHV0Qmx1cjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldCh2KSxuLGkscztpZih0JiYhdGhpcy5nZXQoImFsbG93VHJhaWxpbmdEZWxpbWl0ZXIiKSl7dD1yLnRyaW1SaWdodCh0KSxzPWk9dGhpcy5faW5wdXROb2RlLmdldChiKTtpZih0KXdoaWxlKChpPXIudHJpbVJpZ2h0KGkpKSYmKG49aS5sZW5ndGgtdC5sZW5ndGgpJiZpLmxhc3RJbmRleE9mKHQpPT09bilpPWkuc3Vic3RyaW5nKDAsbik7ZWxzZSBpPXIudHJpbVJpZ2h0KGkpO2khPT1zJiZ0aGlzLnNldChiLGkpfX0sX29uSW5wdXRWYWx1ZUNoYW5nZTpmdW5jdGlvbihlKXt2YXIgdD1lLm5ld1ZhbDt0IT09dGhpcy5nZXQoYikmJnRoaXMuc2V0KGIsdCx7c3JjOlQuVUlfU1JDfSl9LF9vblJlc3BvbnNlOmZ1bmN0aW9uKGUsdCl7ZT09PSh0aGlzLmdldChkKXx8IiIpJiZ0aGlzLl9wYXJzZVJlc3BvbnNlKGV8fCIiLHQucmVzcG9uc2UsdC5kYXRhKX0sX2RlZkNsZWFyRm46ZnVuY3Rpb24oKXt0aGlzLl9zZXQoZCxudWxsKSx0aGlzLl9zZXQoZyxbXSl9LF9kZWZRdWVyeUZuOmZ1bmN0aW9uKGUpe3RoaXMuc2VuZFJlcXVlc3QoZS5xdWVyeSl9LF9kZWZSZXN1bHRzRm46ZnVuY3Rpb24oZSl7dGhpcy5fc2V0KGcsZVtnXSl9fSxULkFUVFJTPXthbGxvd0Jyb3dzZXJBdXRvY29tcGxldGU6e3ZhbHVlOiExfSxhbGxvd1RyYWlsaW5nRGVsaW1pdGVyOnt2YWx1ZTohMX0sZW5hYmxlQ2FjaGU6e2xhenlBZGQ6ITEsc2V0dGVyOiJfc2V0RW5hYmxlQ2FjaGUiLHZhbHVlOiEwfSxpbnB1dE5vZGU6e3NldHRlcjplLm9uZSx3cml0ZU9uY2U6ImluaXRPbmx5In0sbWF4UmVzdWx0czp7dmFsdWU6MH0sbWluUXVlcnlMZW5ndGg6e3ZhbHVlOjF9LHF1ZXJ5OntyZWFkT25seTohMCx2YWx1ZTpudWxsfSxxdWVyeURlbGF5Ont2YWx1ZToxMDB9LHF1ZXJ5RGVsaW1pdGVyOnt2YWx1ZTpudWxsfSxyZXF1ZXN0VGVtcGxhdGU6e3NldHRlcjoiX3NldFJlcXVlc3RUZW1wbGF0ZSIsdmFsdWU6bnVsbH0scmVzdWx0RmlsdGVyczp7c2V0dGVyOiJfc2V0UmVzdWx0RmlsdGVycyIsdmFsdWU6W119LHJlc3VsdEZvcm1hdHRlcgo6e3ZhbGlkYXRvcjpsLHZhbHVlOm51bGx9LHJlc3VsdEhpZ2hsaWdodGVyOntzZXR0ZXI6Il9zZXRSZXN1bHRIaWdobGlnaHRlciIsdmFsdWU6bnVsbH0scmVzdWx0TGlzdExvY2F0b3I6e3NldHRlcjoiX3NldExvY2F0b3IiLHZhbHVlOm51bGx9LHJlc3VsdHM6e3JlYWRPbmx5OiEwLHZhbHVlOltdfSxyZXN1bHRUZXh0TG9jYXRvcjp7c2V0dGVyOiJfc2V0TG9jYXRvciIsdmFsdWU6bnVsbH0sc291cmNlOntzZXR0ZXI6Il9zZXRTb3VyY2UiLHZhbHVlOm51bGx9LHNvdXJjZVR5cGU6e3ZhbHVlOm51bGx9LHRva2VuSW5wdXQ6e3JlYWRPbmx5OiEwfSx2YWx1ZTp7dmFsdWU6IiJ9fSxULl9idWlsZENmZz17YWdncmVnYXRlczpbIlNPVVJDRV9UWVBFUyJdLHN0YXRpY3M6WyJVSV9TUkMiXX0sVC5TT1VSQ0VfVFlQRVM9e2FycmF5OiJfY3JlYXRlQXJyYXlTb3VyY2UiLCJmdW5jdGlvbiI6Il9jcmVhdGVGdW5jdGlvblNvdXJjZSIsb2JqZWN0OiJfY3JlYXRlT2JqZWN0U291cmNlIn0sVC5VSV9TUkM9ZS5XaWRnZXQmJmUuV2lkZ2V0LlVJX1NSQ3x8InVpIixlLkF1dG9Db21wbGV0ZUJhc2U9VH0sIjMuMTcuMiIse29wdGlvbmFsOlsiYXV0b2NvbXBsZXRlLXNvdXJjZXMiXSxyZXF1aXJlczpbImFycmF5LWV4dHJhcyIsImJhc2UtYnVpbGQiLCJlc2NhcGUiLCJldmVudC12YWx1ZWNoYW5nZSIsIm5vZGUtYmFzZSJdfSk7Ci8qCllVSSAzLjE3LjIgKGJ1aWxkIDljM2M3OGUpCkNvcHlyaWdodCAyMDE0IFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZS4KaHR0cDovL3l1aWxpYnJhcnkuY29tL2xpY2Vuc2UvCiovCgpZVUkuYWRkKCJhdXRvY29tcGxldGUtc291cmNlcyIsZnVuY3Rpb24oZSx0KXt2YXIgbj1lLkF1dG9Db21wbGV0ZUJhc2Uscj1lLkxhbmcsaT0iX3NvdXJjZVN1Y2Nlc3MiLHM9Im1heFJlc3VsdHMiLG89InJlcXVlc3RUZW1wbGF0ZSIsdT0icmVzdWx0TGlzdExvY2F0b3IiO2UubWl4KG4ucHJvdG90eXBlLHtfWVFMX1NPVVJDRV9SRUdFWDovXig/OnNlbGVjdHxzZXR8dXNlKVxzKy9pLF9iZWZvcmVDcmVhdGVPYmplY3RTb3VyY2U6ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBlLk5vZGUmJnQuZ2V0KCJub2RlTmFtZSIpLnRvTG93ZXJDYXNlKCk9PT0ic2VsZWN0Ij90aGlzLl9jcmVhdGVTZWxlY3RTb3VyY2UodCk6ZS5KU09OUFJlcXVlc3QmJnQgaW5zdGFuY2VvZiBlLkpTT05QUmVxdWVzdD90aGlzLl9jcmVhdGVKU09OUFNvdXJjZSh0KTp0aGlzLl9jcmVhdGVPYmplY3RTb3VyY2UodCl9LF9jcmVhdGVJT1NvdXJjZTpmdW5jdGlvbih0KXtmdW5jdGlvbiBhKG4pe3ZhciBvPW4ucmVxdWVzdDtpZihyLl9jYWNoZSYmbyBpbiByLl9jYWNoZSl7cltpXShyLl9jYWNoZVtvXSxuKTtyZXR1cm59cyYmcy5pc0luUHJvZ3Jlc3MoKSYmcy5hYm9ydCgpLHM9ZS5pbyhyLl9nZXRYSFJVcmwodCxuKSx7b246e3N1Y2Nlc3M6ZnVuY3Rpb24odCxzKXt2YXIgdTt0cnl7dT1lLkpTT04ucGFyc2Uocy5yZXNwb25zZVRleHQpfWNhdGNoKGEpe2UuZXJyb3IoIkpTT04gcGFyc2UgZXJyb3IiLGEpfXUmJihyLl9jYWNoZSYmKHIuX2NhY2hlW29dPXUpLHJbaV0odSxuKSl9fX0pfXZhciBuPXt0eXBlOiJpbyJ9LHI9dGhpcyxzLG8sdTtyZXR1cm4gbi5zZW5kUmVxdWVzdD1mdW5jdGlvbih0KXtvPXQ7aWYodSlyZXR1cm47dT0hMCxlLnVzZSgiaW8tYmFzZSIsImpzb24tcGFyc2UiLGZ1bmN0aW9uKCl7bi5zZW5kUmVxdWVzdD1hLGEobyl9KX0sbn0sX2NyZWF0ZUpTT05QU291cmNlOmZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHUoZSl7dmFyIG49ZS5yZXF1ZXN0LHM9ZS5xdWVyeTtpZihyLl9jYWNoZSYmbiBpbiByLl9jYWNoZSl7cltpXShyLl9jYWNoZVtuXSxlKTtyZXR1cm59dC5fY29uZmlnLm9uLnN1Y2Nlc3M9ZnVuY3Rpb24odCl7ci5fY2FjaGUmJihyLl9jYWNoZVtuXT10KSxyW2ldKHQsZSl9LHQuc2VuZChzKX12YXIgbj17dHlwZToianNvbnAifSxyPXRoaXMscyxvO3JldHVybiBuLnNlbmRSZXF1ZXN0PWZ1bmN0aW9uKGkpe3M9aTtpZihvKXJldHVybjtvPSEwLGUudXNlKCJqc29ucCIsZnVuY3Rpb24oKXt0IGluc3RhbmNlb2YgZS5KU09OUFJlcXVlc3R8fCh0PW5ldyBlLkpTT05QUmVxdWVzdCh0LHtmb3JtYXQ6ZS5iaW5kKHIuX2pzb25wRm9ybWF0dGVyLHIpfSkpLG4uc2VuZFJlcXVlc3Q9dSx1KHMpfSl9LG59LF9jcmVhdGVTZWxlY3RTb3VyY2U6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm57dHlwZToic2VsZWN0IixzZW5kUmVxdWVzdDpmdW5jdGlvbihuKXt2YXIgcj1bXTtlLmdldCgib3B0aW9ucyIpLmVhY2goZnVuY3Rpb24oZSl7ci5wdXNoKHtodG1sOmUuZ2V0KCJpbm5lckhUTUwiKSxpbmRleDplLmdldCgiaW5kZXgiKSxub2RlOmUsc2VsZWN0ZWQ6ZS5nZXQoInNlbGVjdGVkIiksdGV4dDplLmdldCgidGV4dCIpLHZhbHVlOmUuZ2V0KCJ2YWx1ZSIpfSl9KSx0W2ldKHIsbil9fX0sX2NyZWF0ZVN0cmluZ1NvdXJjZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fWVFMX1NPVVJDRV9SRUdFWC50ZXN0KGUpP3RoaXMuX2NyZWF0ZVlRTFNvdXJjZShlKTplLmluZGV4T2YoIntjYWxsYmFja30iKSE9PS0xP3RoaXMuX2NyZWF0ZUpTT05QU291cmNlKGUpOnRoaXMuX2NyZWF0ZUlPU291cmNlKGUpfSxfY3JlYXRlWVFMU291cmNlOmZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGMobyl7dmFyIHU9by5xdWVyeSxhPW4uZ2V0KCJ5cWxFbnYiKSxmPW4uZ2V0KHMpLGMsaCxwO3A9ci5zdWIodCx7bWF4UmVzdWx0czpmPjA/ZjoxZTMscmVxdWVzdDpvLnJlcXVlc3QscXVlcnk6dX0pO2lmKG4uX2NhY2hlJiZwIGluIG4uX2NhY2hlKXtuW2ldKG4uX2NhY2hlW3BdLG8pO3JldHVybn1jPWZ1bmN0aW9uKGUpe24uX2NhY2hlJiYobi5fY2FjaGVbcF09ZSksbltpXShlLG8pfSxoPXtwcm90bzpuLmdldCgieXFsUHJvdG9jb2wiKX0sbD8obC5fY2FsbGJhY2s9YyxsLl9vcHRzPWgsbC5fcGFyYW1zLnE9cCxhJiYobC5fcGFyYW1zLmVudj1hKSk6bD1uZXcgZS5ZUUxSZXF1ZXN0KHAse29uOntzdWNjZXNzOmN9LGFsbG93Q2FjaGU6ITF9LGE/e2VudjphfTpudWxsLGgpLGwuc2VuZCgpfXZhciBuPXRoaXMsbz17dHlwZToieXFsIn0sYSxmLGw7cmV0dXJuIG4uZ2V0KHUpfHxuLnNldCh1LG4uX2RlZmF1bHRZUUxMb2NhdG9yKSxvLnNlbmRSZXF1ZXN0PWZ1bmN0aW9uKHQpe2E9dCxmfHwoZj0hMCxlLnVzZSgieXFsIixmdW5jdGlvbigpe28uc2VuZFJlcXVlc3Q9YyxjKGEpfSkpfSxvfSxfZGVmYXVsdFlRTExvY2F0b3I6ZnVuY3Rpb24odCl7dmFyIG49dCYmdC5xdWVyeSYmdC5xdWVyeS5yZXN1bHRzLGk7cmV0dXJuIG4mJnIuaXNPYmplY3Qobik/KGk9ZS5PYmplY3QudmFsdWVzKG4pfHxbXSxuPWkubGVuZ3RoPT09MT9pWzBdOmksci5pc0FycmF5KG4pfHwobj1bbl0pKTpuPVtdLG59LF9nZXRYSFJVcmw6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmdldChzKTtyZXR1cm4gdC5xdWVyeSE9PXQucmVxdWVzdCYmKGUrPXQucmVxdWVzdCksci5zdWIoZSx7bWF4UmVzdWx0czpuPjA/bjoxZTMscXVlcnk6ZW5jb2RlVVJJQ29tcG9uZW50KHQucXVlcnkpfSl9LF9qc29ucEZvcm1hdHRlcjpmdW5jdGlvbihlLHQsbil7dmFyIGk9dGhpcy5nZXQocyksdT10aGlzLmdldChvKTtyZXR1cm4gdSYmKGUrPXUobikpLHIuc3ViKGUse2NhbGxiYWNrOnQsbWF4UmVzdWx0czppPjA/aToxZTMscXVlcnk6ZW5jb2RlVVJJQ29tcG9uZW50KG4pfSl9fSksZS5taXgobi5BVFRSUyx7eXFsRW52Ont2YWx1ZTpudWxsfSx5cWxQcm90b2NvbDp7dmFsdWU6Imh0dHAifX0pLGUubWl4KG4uU09VUkNFX1RZUEVTLHtpbzoiX2NyZWF0ZUlPU291cmNlIixqc29ucDoiX2NyZWF0ZUpTT05QU291cmNlIixvYmplY3Q6Il9iZWZvcmVDcmVhdGVPYmplY3RTb3VyY2UiLHNlbGVjdDoiX2NyZWF0ZVNlbGVjdFNvdXJjZSIsc3RyaW5nOiJfY3JlYXRlU3RyaW5nU291cmNlIix5cWw6Il9jcmVhdGVZUUxTb3VyY2UifSwhMCl9LCIzLjE3LjIiLHtvcHRpb25hbDpbImlvLWJhc2UiLCJqc29uLXBhcnNlIiwianNvbnAiLCJ5cWwiXSxyZXF1aXJlczpbImF1dG9jb21wbGV0ZS1iYXNlIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoImxhbmcvYXV0b2NvbXBsZXRlLWxpc3RfZW4iLGZ1bmN0aW9uKGUpe2UuSW50bC5hZGQoImF1dG9jb21wbGV0ZS1saXN0IiwiZW4iLHtpdGVtX3NlbGVjdGVkOiJ7aXRlbX0gc2VsZWN0ZWQuIixpdGVtc19hdmFpbGFibGU6IlN1Z2dlc3Rpb25zIGFyZSBhdmFpbGFibGUuIFVzZSB1cCBhbmQgZG93biBhcnJvd3MgdG8gc2VsZWN0LiJ9KX0sIjMuMTcuMiIpOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgiZXZlbnQtcmVzaXplIixmdW5jdGlvbihlLHQpe2UuRXZlbnQuZGVmaW5lKCJ3aW5kb3dyZXNpemUiLHtvbjplLlVBLmdlY2tvJiZlLlVBLmdlY2tvPDEuOTE/ZnVuY3Rpb24odCxuLHIpe24uX2hhbmRsZT1lLkV2ZW50LmF0dGFjaCgicmVzaXplIixmdW5jdGlvbihlKXtyLmZpcmUoZSl9KX06ZnVuY3Rpb24odCxuLHIpe3ZhciBpPWUuY29uZmlnLndpbmRvd1Jlc2l6ZURlbGF5fHwxMDA7bi5faGFuZGxlPWUuRXZlbnQuYXR0YWNoKCJyZXNpemUiLGZ1bmN0aW9uKHQpe24uX3RpbWVyJiZuLl90aW1lci5jYW5jZWwoKSxuLl90aW1lcj1lLmxhdGVyKGksZSxmdW5jdGlvbigpe3IuZmlyZSh0KX0pfSl9LGRldGFjaDpmdW5jdGlvbihlLHQpe3QuX3RpbWVyJiZ0Ll90aW1lci5jYW5jZWwoKSx0Ll9oYW5kbGUuZGV0YWNoKCl9fSl9LCIzLjE3LjIiLHtyZXF1aXJlczpbIm5vZGUtYmFzZSIsImV2ZW50LXN5bnRoZXRpYyJdfSk7Ci8qCllVSSAzLjE3LjIgKGJ1aWxkIDljM2M3OGUpCkNvcHlyaWdodCAyMDE0IFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZS4KaHR0cDovL3l1aWxpYnJhcnkuY29tL2xpY2Vuc2UvCiovCgpZVUkuYWRkKCJkb20tc2NyZWVuIixmdW5jdGlvbihlLHQpeyhmdW5jdGlvbihlKXt2YXIgdD0iZG9jdW1lbnRFbGVtZW50IixuPSJjb21wYXRNb2RlIixyPSJwb3NpdGlvbiIsaT0iZml4ZWQiLHM9InJlbGF0aXZlIixvPSJsZWZ0Iix1PSJ0b3AiLGE9IkJhY2tDb21wYXQiLGY9Im1lZGl1bSIsbD0iYm9yZGVyTGVmdFdpZHRoIixjPSJib3JkZXJUb3BXaWR0aCIsaD0iZ2V0Qm91bmRpbmdDbGllbnRSZWN0IixwPSJnZXRDb21wdXRlZFN0eWxlIixkPWUuRE9NLHY9L150KD86YWJsZXxkfGgpJC9pLG07ZS5VQS5pZSYmKGUuY29uZmlnLmRvY1tuXSE9PSJCYWNrQ29tcGF0Ij9tPXQ6bT0iYm9keSIpLGUubWl4KGQse3dpbkhlaWdodDpmdW5jdGlvbihlKXt2YXIgdD1kLl9nZXRXaW5TaXplKGUpLmhlaWdodDtyZXR1cm4gdH0sd2luV2lkdGg6ZnVuY3Rpb24oZSl7dmFyIHQ9ZC5fZ2V0V2luU2l6ZShlKS53aWR0aDtyZXR1cm4gdH0sZG9jSGVpZ2h0OmZ1bmN0aW9uKGUpe3ZhciB0PWQuX2dldERvY1NpemUoZSkuaGVpZ2h0O3JldHVybiBNYXRoLm1heCh0LGQuX2dldFdpblNpemUoZSkuaGVpZ2h0KX0sZG9jV2lkdGg6ZnVuY3Rpb24oZSl7dmFyIHQ9ZC5fZ2V0RG9jU2l6ZShlKS53aWR0aDtyZXR1cm4gTWF0aC5tYXgodCxkLl9nZXRXaW5TaXplKGUpLndpZHRoKX0sZG9jU2Nyb2xsWDpmdW5jdGlvbihuLHIpe3I9cnx8bj9kLl9nZXREb2Mobik6ZS5jb25maWcuZG9jO3ZhciBpPXIuZGVmYXVsdFZpZXcscz1pP2kucGFnZVhPZmZzZXQ6MDtyZXR1cm4gTWF0aC5tYXgoclt0XS5zY3JvbGxMZWZ0LHIuYm9keS5zY3JvbGxMZWZ0LHMpfSxkb2NTY3JvbGxZOmZ1bmN0aW9uKG4scil7cj1yfHxuP2QuX2dldERvYyhuKTplLmNvbmZpZy5kb2M7dmFyIGk9ci5kZWZhdWx0VmlldyxzPWk/aS5wYWdlWU9mZnNldDowO3JldHVybiBNYXRoLm1heChyW3RdLnNjcm9sbFRvcCxyLmJvZHkuc2Nyb2xsVG9wLHMpfSxnZXRYWTpmdW5jdGlvbigpe3JldHVybiBlLmNvbmZpZy5kb2NbdF1baF0/ZnVuY3Rpb24ocil7dmFyIGk9bnVsbCxzLG8sdSxmLGwsYyxwLHYsZyx5O2lmKHImJnIudGFnTmFtZSl7cD1yLm93bmVyRG9jdW1lbnQsdT1wW25dLHUhPT1hP3k9cFt0XTp5PXAuYm9keSx5LmNvbnRhaW5zP2c9eS5jb250YWlucyhyKTpnPWUuRE9NLmNvbnRhaW5zKHkscik7aWYoZyl7dj1wLmRlZmF1bHRWaWV3LHYmJiJwYWdlWE9mZnNldCJpbiB2PyhzPXYucGFnZVhPZmZzZXQsbz12LnBhZ2VZT2Zmc2V0KToocz1tP3BbbV0uc2Nyb2xsTGVmdDpkLmRvY1Njcm9sbFgocixwKSxvPW0/cFttXS5zY3JvbGxUb3A6ZC5kb2NTY3JvbGxZKHIscCkpLGUuVUEuaWUmJighcC5kb2N1bWVudE1vZGV8fHAuZG9jdW1lbnRNb2RlPDh8fHU9PT1hKSYmKGw9eS5jbGllbnRMZWZ0LGM9eS5jbGllbnRUb3ApLGY9cltoXSgpLGk9W2YubGVmdCxmLnRvcF07aWYobHx8YylpWzBdLT1sLGlbMV0tPWM7aWYob3x8cylpZighZS5VQS5pb3N8fGUuVUEuaW9zPj00LjIpaVswXSs9cyxpWzFdKz1vfWVsc2UgaT1kLl9nZXRPZmZzZXQocil9cmV0dXJuIGl9OmZ1bmN0aW9uKHQpe3ZhciBuPW51bGwscyxvLHUsYSxmO2lmKHQpaWYoZC5pbkRvYyh0KSl7bj1bdC5vZmZzZXRMZWZ0LHQub2Zmc2V0VG9wXSxzPXQub3duZXJEb2N1bWVudCxvPXQsdT1lLlVBLmdlY2tvfHxlLlVBLndlYmtpdD41MTk/ITA6ITE7d2hpbGUobz1vLm9mZnNldFBhcmVudCluWzBdKz1vLm9mZnNldExlZnQsblsxXSs9by5vZmZzZXRUb3AsdSYmKG49ZC5fY2FsY0JvcmRlcnMobyxuKSk7aWYoZC5nZXRTdHlsZSh0LHIpIT1pKXtvPXQ7d2hpbGUobz1vLnBhcmVudE5vZGUpe2E9by5zY3JvbGxUb3AsZj1vLnNjcm9sbExlZnQsZS5VQS5nZWNrbyYmZC5nZXRTdHlsZShvLCJvdmVyZmxvdyIpIT09InZpc2libGUiJiYobj1kLl9jYWxjQm9yZGVycyhvLG4pKTtpZihhfHxmKW5bMF0tPWYsblsxXS09YX1uWzBdKz1kLmRvY1Njcm9sbFgodCxzKSxuWzFdKz1kLmRvY1Njcm9sbFkodCxzKX1lbHNlIG5bMF0rPWQuZG9jU2Nyb2xsWCh0LHMpLG5bMV0rPWQuZG9jU2Nyb2xsWSh0LHMpfWVsc2Ugbj1kLl9nZXRPZmZzZXQodCk7cmV0dXJuIG59fSgpLGdldFNjcm9sbGJhcldpZHRoOmUuY2FjaGVkKGZ1bmN0aW9uKCl7dmFyIHQ9ZS5jb25maWcuZG9jLG49dC5jcmVhdGVFbGVtZW50KCJkaXYiKSxyPXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxpPS4xO3JldHVybiByJiYobi5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTt2aXNpYmlsaXR5OmhpZGRlbjtvdmVyZmxvdzpzY3JvbGw7d2lkdGg6MjBweDsiLG4uYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVtZW50KCJwIikpLnN0eWxlLmhlaWdodD0iMXB4IixyLmluc2VydEJlZm9yZShuLHIuZmlyc3RDaGlsZCksaT1uLm9mZnNldFdpZHRoLW4uY2xpZW50V2lkdGgsci5yZW1vdmVDaGlsZChuKSksaX0sbnVsbCwuMSksZ2V0WDpmdW5jdGlvbihlKXtyZXR1cm4gZC5nZXRYWShlKVswXX0sZ2V0WTpmdW5jdGlvbihlKXtyZXR1cm4gZC5nZXRYWShlKVsxXX0sc2V0WFk6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPWQuc2V0U3R5bGUsYSxmLGwsYztlJiZ0JiYoYT1kLmdldFN0eWxlKGUsciksZj1kLl9nZXRPZmZzZXQoZSksYT09InN0YXRpYyImJihhPXMsaShlLHIsYSkpLGM9ZC5nZXRYWShlKSx0WzBdIT09bnVsbCYmaShlLG8sdFswXS1jWzBdK2ZbMF0rInB4IiksdFsxXSE9PW51bGwmJmkoZSx1LHRbMV0tY1sxXStmWzFdKyJweCIpLG58fChsPWQuZ2V0WFkoZSksKGxbMF0hPT10WzBdfHxsWzFdIT09dFsxXSkmJmQuc2V0WFkoZSx0LCEwKSkpfSxzZXRYOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGQuc2V0WFkoZSxbdCxudWxsXSl9LHNldFk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZC5zZXRYWShlLFtudWxsLHRdKX0sc3dhcFhZOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZC5nZXRYWShlKTtkLnNldFhZKGUsZC5nZXRYWSh0KSksZC5zZXRYWSh0LG4pfSxfY2FsY0JvcmRlcnM6ZnVuY3Rpb24odCxuKXt2YXIgcj1wYXJzZUludChkW3BdKHQsYyksMTApfHwwLGk9cGFyc2VJbnQoZFtwXSh0LGwpLDEwKXx8MDtyZXR1cm4gZS5VQS5nZWNrbyYmdi50ZXN0KHQudGFnTmFtZSkmJihyPTAsaT0wKSxuWzBdKz1pLG5bMV0rPXIsbn0sX2dldFdpblNpemU6ZnVuY3Rpb24ocixpKXtpPWl8fHI/ZC5fZ2V0RG9jKHIpOmUuY29uZmlnLmRvYzt2YXIgcz1pLmRlZmF1bHRWaWV3fHxpLnBhcmVudFdpbmRvdyxvPWlbbl0sdT1zLmlubmVySGVpZ2h0LGE9cy5pbm5lcldpZHRoLGY9aVt0XTtyZXR1cm4gbyYmIWUuVUEub3BlcmEmJihvIT0iQ1NTMUNvbXBhdCImJihmPWkuYm9keSksdT1mLmNsaWVudEhlaWdodCxhPWYuY2xpZW50V2lkdGgpLHtoZWlnaHQ6dSx3aWR0aDphfX0sX2dldERvY1NpemU6ZnVuY3Rpb24ocil7dmFyIGk9cj9kLl9nZXREb2Mocik6ZS5jb25maWcuZG9jLHM9aVt0XTtyZXR1cm4gaVtuXSE9IkNTUzFDb21wYXQiJiYocz1pLmJvZHkpLHtoZWlnaHQ6cy5zY3JvbGxIZWlnaHQsd2lkdGg6cy5zY3JvbGxXaWR0aH19fSl9KShlKSxmdW5jdGlvbihlKXt2YXIgdD0idG9wIixuPSJyaWdodCIscj0iYm90dG9tIixpPSJsZWZ0IixzPWZ1bmN0aW9uKGUscyl7dmFyIG89TWF0aC5tYXgoZVt0XSxzW3RdKSx1PU1hdGgubWluKGVbbl0sc1tuXSksYT1NYXRoLm1pbihlW3JdLHNbcl0pLGY9TWF0aC5tYXgoZVtpXSxzW2ldKSxsPXt9O3JldHVybiBsW3RdPW8sbFtuXT11LGxbcl09YSxsW2ldPWYsbH0sbz1lLkRPTTtlLm1peChvLHtyZWdpb246ZnVuY3Rpb24oZSl7dmFyIHQ9by5nZXRYWShlKSxuPSExO3JldHVybiBlJiZ0JiYobj1vLl9nZXRSZWdpb24odFsxXSx0WzBdK2Uub2Zmc2V0V2lkdGgsdFsxXStlLm9mZnNldEhlaWdodCx0WzBdKSksbn0saW50ZXJzZWN0OmZ1bmN0aW9uKHUsYSxmKXt2YXIgbD1mfHxvLnJlZ2lvbih1KSxjPXt9LGg9YSxwO2lmKGgudGFnTmFtZSljPW8ucmVnaW9uKGgpO2Vsc2V7aWYoIWUuTGFuZy5pc09iamVjdChhKSlyZXR1cm4hMTtjPWF9cmV0dXJuIHA9cyhjLGwpLHt0b3A6cFt0XSxyaWdodDpwW25dLGJvdHRvbTpwW3JdLGxlZnQ6cFtpXSxhcmVhOihwW3JdLXBbdF0pKihwW25dLXBbaV0pLHlvZmY6cFtyXS1wW3RdLHhvZmY6cFtuXS1wW2ldLGluUmVnaW9uOm8uaW5SZWdpb24odSxhLCExLGYpfX0saW5SZWdpb246ZnVuY3Rpb24odSxhLGYsbCl7dmFyIGM9e30saD1sfHxvLnJlZ2lvbih1KSxwPWEsZDtpZihwLnRhZ05hbWUpYz1vLnJlZ2lvbihwKTtlbHNle2lmKCFlLkxhbmcuaXNPYmplY3QoYSkpcmV0dXJuITE7Yz1hfXJldHVybiBmP2hbaV0+PWNbaV0mJmhbbl08PWNbbl0mJmhbdF0+PWNbdF0mJmhbcl08PWNbcl06KGQ9cyhjLGgpLGRbcl0+PWRbdF0mJmRbbl0+PWRbaV0/ITA6ITEpfSxpblZpZXdwb3J0UmVnaW9uOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gby5pblJlZ2lvbihlLG8udmlld3BvcnRSZWdpb24oZSksdCxuKX0sX2dldFJlZ2lvbjpmdW5jdGlvbihlLHMsbyx1KXt2YXIgYT17fTtyZXR1cm4gYVt0XT1hWzFdPWUsYVtpXT1hWzBdPXUsYVtyXT1vLGFbbl09cyxhLndpZHRoPWFbbl0tYVtpXSxhLmhlaWdodD1hW3JdLWFbdF0sYX0sdmlld3BvcnRSZWdpb246ZnVuY3Rpb24odCl7dD10fHxlLmNvbmZpZy5kb2MuZG9jdW1lbnRFbGVtZW50O3ZhciBuPSExLHIsaTtyZXR1cm4gdCYmKHI9by5kb2NTY3JvbGxYKHQpLGk9by5kb2NTY3JvbGxZKHQpLG49by5fZ2V0UmVnaW9uKGksby53aW5XaWR0aCh0KStyLGkrby53aW5IZWlnaHQodCkscikpLG59fSl9KGUpfSwiMy4xNy4yIix7cmVxdWlyZXM6WyJkb20tYmFzZSIsImRvbS1zdHlsZSJdfSk7Ci8qCllVSSAzLjE3LjIgKGJ1aWxkIDljM2M3OGUpCkNvcHlyaWdodCAyMDE0IFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZS4KaHR0cDovL3l1aWxpYnJhcnkuY29tL2xpY2Vuc2UvCiovCgpZVUkuYWRkKCJub2RlLXNjcmVlbiIsZnVuY3Rpb24oZSx0KXtlLmVhY2goWyJ3aW5XaWR0aCIsIndpbkhlaWdodCIsImRvY1dpZHRoIiwiZG9jSGVpZ2h0IiwiZG9jU2Nyb2xsWCIsImRvY1Njcm9sbFkiXSxmdW5jdGlvbih0KXtlLk5vZGUuQVRUUlNbdF09e2dldHRlcjpmdW5jdGlvbigpe3ZhciBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIG4udW5zaGlmdChlLk5vZGUuZ2V0RE9NTm9kZSh0aGlzKSksZS5ET01bdF0uYXBwbHkodGhpcyxuKX19fSksZS5Ob2RlLkFUVFJTLnNjcm9sbExlZnQ9e2dldHRlcjpmdW5jdGlvbigpe3ZhciB0PWUuTm9kZS5nZXRET01Ob2RlKHRoaXMpO3JldHVybiJzY3JvbGxMZWZ0ImluIHQ/dC5zY3JvbGxMZWZ0OmUuRE9NLmRvY1Njcm9sbFgodCl9LHNldHRlcjpmdW5jdGlvbih0KXt2YXIgbj1lLk5vZGUuZ2V0RE9NTm9kZSh0aGlzKTtuJiYoInNjcm9sbExlZnQiaW4gbj9uLnNjcm9sbExlZnQ9dDoobi5kb2N1bWVudHx8bi5ub2RlVHlwZT09PTkpJiZlLkRPTS5fZ2V0V2luKG4pLnNjcm9sbFRvKHQsZS5ET00uZG9jU2Nyb2xsWShuKSkpfX0sZS5Ob2RlLkFUVFJTLnNjcm9sbFRvcD17Z2V0dGVyOmZ1bmN0aW9uKCl7dmFyIHQ9ZS5Ob2RlLmdldERPTU5vZGUodGhpcyk7cmV0dXJuInNjcm9sbFRvcCJpbiB0P3Quc2Nyb2xsVG9wOmUuRE9NLmRvY1Njcm9sbFkodCl9LHNldHRlcjpmdW5jdGlvbih0KXt2YXIgbj1lLk5vZGUuZ2V0RE9NTm9kZSh0aGlzKTtuJiYoInNjcm9sbFRvcCJpbiBuP24uc2Nyb2xsVG9wPXQ6KG4uZG9jdW1lbnR8fG4ubm9kZVR5cGU9PT05KSYmZS5ET00uX2dldFdpbihuKS5zY3JvbGxUbyhlLkRPTS5kb2NTY3JvbGxYKG4pLHQpKX19LGUuTm9kZS5pbXBvcnRNZXRob2QoZS5ET00sWyJnZXRYWSIsInNldFhZIiwiZ2V0WCIsInNldFgiLCJnZXRZIiwic2V0WSIsInN3YXBYWSJdKSxlLk5vZGUuQVRUUlMucmVnaW9uPXtnZXR0ZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldERPTU5vZGUoKSxuO3JldHVybiB0JiYhdC50YWdOYW1lJiZ0Lm5vZGVUeXBlPT09OSYmKHQ9dC5kb2N1bWVudEVsZW1lbnQpLGUuRE9NLmlzV2luZG93KHQpP249ZS5ET00udmlld3BvcnRSZWdpb24odCk6bj1lLkRPTS5yZWdpb24odCksbn19LGUuTm9kZS5BVFRSUy52aWV3cG9ydFJlZ2lvbj17Z2V0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIGUuRE9NLnZpZXdwb3J0UmVnaW9uKGUuTm9kZS5nZXRET01Ob2RlKHRoaXMpKX19LGUuTm9kZS5pbXBvcnRNZXRob2QoZS5ET00sImluVmlld3BvcnRSZWdpb24iKSxlLk5vZGUucHJvdG90eXBlLmludGVyc2VjdD1mdW5jdGlvbih0LG4pe3ZhciByPWUuTm9kZS5nZXRET01Ob2RlKHRoaXMpO3JldHVybiBlLmluc3RhbmNlT2YodCxlLk5vZGUpJiYodD1lLk5vZGUuZ2V0RE9NTm9kZSh0KSksZS5ET00uaW50ZXJzZWN0KHIsdCxuKX0sZS5Ob2RlLnByb3RvdHlwZS5pblJlZ2lvbj1mdW5jdGlvbih0LG4scil7dmFyIGk9ZS5Ob2RlLmdldERPTU5vZGUodGhpcyk7cmV0dXJuIGUuaW5zdGFuY2VPZih0LGUuTm9kZSkmJih0PWUuTm9kZS5nZXRET01Ob2RlKHQpKSxlLkRPTS5pblJlZ2lvbihpLHQsbixyKX19LCIzLjE3LjIiLHtyZXF1aXJlczpbImRvbS1zY3JlZW4iLCJub2RlLWJhc2UiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgic2VsZWN0b3ItY3NzMiIsZnVuY3Rpb24oZSx0KXt2YXIgbj0icGFyZW50Tm9kZSIscj0idGFnTmFtZSIsaT0iYXR0cmlidXRlcyIscz0iY29tYmluYXRvciIsbz0icHNldWRvcyIsdT1lLlNlbGVjdG9yLGE9e19yZVJlZ0V4cFRva2VuczovKFtcXlwkXD9cW1xdXCpcK1wtXC5cKFwpXHxcXF0pLyxTT1JUX1JFU1VMVFM6ITAsX2lzWE1MOmZ1bmN0aW9uKCl7dmFyIHQ9ZS5jb25maWcuZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnRhZ05hbWUhPT0iRElWIjtyZXR1cm4gdH0oKSxzaG9ydGhhbmQ6eyJcXCMoLT9bX2EtejAtOV0rWy1cXHdcXHVFMDAwXSopIjoiW2lkPSQxXSIsIlxcLigtP1tfYS16XStbLVxcd1xcdUUwMDBdKikiOiJbY2xhc3NOYW1lfj0kMV0ifSxvcGVyYXRvcnM6eyIiOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuRE9NLmdldEF0dHJpYnV0ZSh0LG4pIT09IiJ9LCJ+PSI6Iig/Ol58XFxzKyl7dmFsfSg/Olxccyt8JCkiLCJ8PSI6Il57dmFsfS0/In0scHNldWRvczp7ImZpcnN0LWNoaWxkIjpmdW5jdGlvbih0KXtyZXR1cm4gZS5ET00uX2NoaWxkcmVuKHRbbl0pWzBdPT09dH19LF9icnV0ZVF1ZXJ5OmZ1bmN0aW9uKHQsbixyKXt2YXIgaT1bXSxzPVtdLG8sYT11Ll90b2tlbml6ZSh0KSxmPWFbYS5sZW5ndGgtMV0sbD1lLkRPTS5fZ2V0RG9jKG4pLGMsaCxwLGQsdjtpZihmKXtoPWYuaWQscD1mLmNsYXNzTmFtZSxkPWYudGFnTmFtZXx8IioiO2lmKG4uZ2V0RWxlbWVudHNCeVRhZ05hbWUpaCYmKG4uYWxsfHxuLm5vZGVUeXBlPT09OXx8ZS5ET00uaW5Eb2MobikpP3M9ZS5ET00uYWxsQnlJZChoLG4pOnA/cz1uLmdldEVsZW1lbnRzQnlDbGFzc05hbWUocCk6cz1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKGQpO2Vsc2V7bz1bXSxjPW4uZmlyc3RDaGlsZCx2PWQ9PT0iKiI7d2hpbGUoYyl7d2hpbGUoYyljLnRhZ05hbWU+IkAiJiYodnx8Yy50YWdOYW1lPT09ZCkmJnMucHVzaChjKSxvLnB1c2goYyksYz1jLmZpcnN0Q2hpbGQ7d2hpbGUoby5sZW5ndGg+MCYmIWMpYz1vLnBvcCgpLm5leHRTaWJsaW5nfX1zLmxlbmd0aCYmKGk9dS5fZmlsdGVyTm9kZXMocyxhLHIpKX1yZXR1cm4gaX0sX2ZpbHRlck5vZGVzOmZ1bmN0aW9uKHQsbixyKXt2YXIgaT0wLHMsbz1uLmxlbmd0aCxhPW8tMSxmPVtdLGw9dFswXSxjPWwsaD1lLlNlbGVjdG9yLmdldHRlcnMscCxkLHYsbSxnLHksYix3O2ZvcihpPTA7Yz1sPXRbaSsrXTspe2E9by0xLG09bnVsbDtlOndoaWxlKGMmJmMudGFnTmFtZSl7dj1uW2FdLGI9di50ZXN0cyxzPWIubGVuZ3RoO2lmKHMmJiFnKXdoaWxlKHc9YlstLXNdKXtwPXdbMV0saFt3WzBdXT95PWhbd1swXV0oYyx3WzBdKTooeT1jW3dbMF1dLHdbMF09PT0idGFnTmFtZSImJiF1Ll9pc1hNTCYmKHk9eS50b1VwcGVyQ2FzZSgpKSx0eXBlb2YgeSE9InN0cmluZyImJnkhPT11bmRlZmluZWQmJnkudG9TdHJpbmc/eT15LnRvU3RyaW5nKCk6eT09PXVuZGVmaW5lZCYmYy5nZXRBdHRyaWJ1dGUmJih5PWMuZ2V0QXR0cmlidXRlKHdbMF0sMikpKTtpZihwPT09Ij0iJiZ5IT09d1syXXx8dHlwZW9mIHAhPSJzdHJpbmciJiZwLnRlc3QmJiFwLnRlc3QoeSl8fCFwLnRlc3QmJnR5cGVvZiBwPT0iZnVuY3Rpb24iJiYhcChjLHdbMF0sd1syXSkpe2lmKGM9Y1ttXSl3aGlsZShjJiYoIWMudGFnTmFtZXx8di50YWdOYW1lJiZ2LnRhZ05hbWUhPT1jLnRhZ05hbWUpKWM9Y1ttXTtjb250aW51ZSBlfX1hLS07aWYoISFnfHwhKGQ9di5jb21iaW5hdG9yKSl7Zi5wdXNoKGwpO2lmKHIpcmV0dXJuIGY7YnJlYWt9bT1kLmF4aXMsYz1jW21dO3doaWxlKGMmJiFjLnRhZ05hbWUpYz1jW21dO2QuZGlyZWN0JiYobT1udWxsKX19cmV0dXJuIGw9Yz1udWxsLGZ9LGNvbWJpbmF0b3JzOnsiICI6e2F4aXM6InBhcmVudE5vZGUifSwiPiI6e2F4aXM6InBhcmVudE5vZGUiLGRpcmVjdDohMH0sIisiOntheGlzOiJwcmV2aW91c1NpYmxpbmciLGRpcmVjdDohMH19LF9wYXJzZXJzOlt7bmFtZTppLHJlOi9eXHVFMDAzKC0/W2Etel0rW1x3XC1dKikrKFt+XHxcXlwkXCohPV09Pyk/WyciXT8oW15cdUUwMDQnIl0qKVsnIl0/XHVFMDA0L2ksZm46ZnVuY3Rpb24odCxuKXt2YXIgcj10WzJdfHwiIixpPXUub3BlcmF0b3JzLHM9dFszXT90WzNdLnJlcGxhY2UoL1xcL2csIiIpOiIiLG87aWYodFsxXT09PSJpZCImJnI9PT0iPSJ8fHRbMV09PT0iY2xhc3NOYW1lIiYmZS5jb25maWcuZG9jLmRvY3VtZW50RWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiYocj09PSJ+PSJ8fHI9PT0iPSIpKW4ucHJlZmlsdGVyPXRbMV0sdFszXT1zLG5bdFsxXV09dFsxXT09PSJpZCI/dFszXTpzO3IgaW4gaSYmKG89aVtyXSx0eXBlb2Ygbz09InN0cmluZyImJih0WzNdPXMucmVwbGFjZSh1Ll9yZVJlZ0V4cFRva2VucywiXFwkMSIpLG89bmV3IFJlZ0V4cChvLnJlcGxhY2UoInt2YWx9Iix0WzNdKSkpLHRbMl09byk7aWYoIW4ubGFzdHx8bi5wcmVmaWx0ZXIhPT10WzFdKXJldHVybiB0LnNsaWNlKDEpfX0se25hbWU6cixyZTovXigoPzotP1tfYS16XStbXHctXSopfFwqKS9pLGZuOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZVsxXTt1Ll9pc1hNTHx8KG49bi50b1VwcGVyQ2FzZSgpKSx0LnRhZ05hbWU9bjtpZihuIT09IioiJiYoIXQubGFzdHx8dC5wcmVmaWx0ZXIpKXJldHVybltyLCI9IixuXTt0LnByZWZpbHRlcnx8KHQucHJlZmlsdGVyPSJ0YWdOYW1lIil9fSx7bmFtZTpzLHJlOi9eXHMqKFs+K35dfFxzKVxzKi8sZm46ZnVuY3Rpb24oZSx0KXt9fSx7bmFtZTpvLHJlOi9eOihbXC1cd10rKSg/Olx1RTAwNVsnIl0/KFteXHVFMDA1XSopWyciXT9cdUUwMDYpKi9pLGZuOmZ1bmN0aW9uKGUsdCl7dmFyIG49dVtvXVtlWzFdXTtyZXR1cm4gbj8oZVsyXSYmKGVbMl09ZVsyXS5yZXBsYWNlKC9cXC9nLCIiKSksW2VbMl0sbl0pOiExfX1dLF9nZXRUb2tlbjpmdW5jdGlvbihlKXtyZXR1cm57dGFnTmFtZTpudWxsLGlkOm51bGwsY2xhc3NOYW1lOm51bGwsYXR0cmlidXRlczp7fSxjb21iaW5hdG9yOm51bGwsdGVzdHM6W119fSxfdG9rZW5pemU6ZnVuY3Rpb24odCl7dD10fHwiIix0PXUuX3BhcnNlU2VsZWN0b3IoZS5MYW5nLnRyaW0odCkpO3ZhciBuPXUuX2dldFRva2VuKCkscj10LGk9W10sbz0hMSxhLGYsbCxjO2U6ZG97bz0hMTtmb3IobD0wO2M9dS5fcGFyc2Vyc1tsKytdOylpZihhPWMucmUuZXhlYyh0KSl7Yy5uYW1lIT09cyYmKG4uc2VsZWN0b3I9dCksdD10LnJlcGxhY2UoYVswXSwiIiksdC5sZW5ndGh8fChuLmxhc3Q9ITApLHUuX2F0dHJGaWx0ZXJzW2FbMV1dJiYoYVsxXT11Ll9hdHRyRmlsdGVyc1thWzFdXSksZj1jLmZuKGEsbik7aWYoZj09PSExKXtvPSExO2JyZWFrIGV9ZiYmbi50ZXN0cy5wdXNoKGYpO2lmKCF0Lmxlbmd0aHx8Yy5uYW1lPT09cylpLnB1c2gobiksbj11Ll9nZXRUb2tlbihuKSxjLm5hbWU9PT1zJiYobi5jb21iaW5hdG9yPWUuU2VsZWN0b3IuY29tYmluYXRvcnNbYVsxXV0pO289ITB9fXdoaWxlKG8mJnQubGVuZ3RoKTtpZighb3x8dC5sZW5ndGgpaT1bXTtyZXR1cm4gaX0sX3JlcGxhY2VNYXJrZXJzOmZ1bmN0aW9uKGUpe3JldHVybiBlPWUucmVwbGFjZSgvXFsvZywiXHVlMDAzIiksZT1lLnJlcGxhY2UoL1xdL2csIlx1ZTAwNCIpLGU9ZS5yZXBsYWNlKC9cKC9nLCJcdWUwMDUiKSxlPWUucmVwbGFjZSgvXCkvZywiXHVlMDA2IiksZX0sX3JlcGxhY2VTaG9ydGhhbmQ6ZnVuY3Rpb24odCl7dmFyIG49ZS5TZWxlY3Rvci5zaG9ydGhhbmQscjtmb3IociBpbiBuKW4uaGFzT3duUHJvcGVydHkocikmJih0PXQucmVwbGFjZShuZXcgUmVnRXhwKHIsImdpIiksbltyXSkpO3JldHVybiB0fSxfcGFyc2VTZWxlY3RvcjpmdW5jdGlvbih0KXt2YXIgbj1lLlNlbGVjdG9yLl9yZXBsYWNlU2VsZWN0b3IodCksdD1uLnNlbGVjdG9yO3JldHVybiB0PWUuU2VsZWN0b3IuX3JlcGxhY2VTaG9ydGhhbmQodCksdD1lLlNlbGVjdG9yLl9yZXN0b3JlKCJhdHRyIix0LG4uYXR0cnMpLHQ9ZS5TZWxlY3Rvci5fcmVzdG9yZSgicHNldWRvIix0LG4ucHNldWRvcyksdD1lLlNlbGVjdG9yLl9yZXBsYWNlTWFya2Vycyh0KSx0PWUuU2VsZWN0b3IuX3Jlc3RvcmUoImVzYyIsdCxuLmVzYyksdH0sX2F0dHJGaWx0ZXJzOnsiY2xhc3MiOiJjbGFzc05hbWUiLCJmb3IiOiJodG1sRm9yIn0sZ2V0dGVyczp7aHJlZjpmdW5jdGlvbih0LG4pe3JldHVybiBlLkRPTS5nZXRBdHRyaWJ1dGUodCxuKX0saWQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5ET00uZ2V0SWQodCl9fX07ZS5taXgoZS5TZWxlY3RvcixhLCEwKSxlLlNlbGVjdG9yLmdldHRlcnMuc3JjPWUuU2VsZWN0b3IuZ2V0dGVycy5yZWw9ZS5TZWxlY3Rvci5nZXR0ZXJzLmhyZWYsZS5TZWxlY3Rvci51c2VOYXRpdmUmJmUuY29uZmlnLmRvYy5xdWVyeVNlbGVjdG9yJiYoZS5TZWxlY3Rvci5zaG9ydGhhbmRbIlxcLigtP1tfYS16XStbLVxcd10qKSJdPSJbY2xhc3N+PSQxXSIpfSwiMy4xNy4yIix7cmVxdWlyZXM6WyJzZWxlY3Rvci1uYXRpdmUiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgic2VsZWN0b3ItY3NzMyIsZnVuY3Rpb24oZSx0KXtlLlNlbGVjdG9yLl9yZU50aD0vXig/OihbXC1dP1xkKikobil7MX18KG9kZHxldmVuKSQpKihbXC0rXT9cZCopJC8sZS5TZWxlY3Rvci5fZ2V0TnRoPWZ1bmN0aW9uKHQsbixyLGkpe2UuU2VsZWN0b3IuX3JlTnRoLnRlc3Qobik7dmFyIHM9cGFyc2VJbnQoUmVnRXhwLiQxLDEwKSxvPVJlZ0V4cC4kMix1PVJlZ0V4cC4kMyxhPXBhcnNlSW50KFJlZ0V4cC4kNCwxMCl8fDAsZj1bXSxsPWUuRE9NLl9jaGlsZHJlbih0LnBhcmVudE5vZGUsciksYzt1PyhzPTIsYz0iKyIsbz0ibiIsYT11PT09Im9kZCI/MTowKTppc05hTihzKSYmKHM9bz8xOjApO2lmKHM9PT0wKXJldHVybiBpJiYoYT1sLmxlbmd0aC1hKzEpLGxbYS0xXT09PXQ/ITA6ITE7czwwJiYoaT0hIWkscz1NYXRoLmFicyhzKSk7aWYoIWkpe2Zvcih2YXIgaD1hLTEscD1sLmxlbmd0aDtoPHA7aCs9cylpZihoPj0wJiZsW2hdPT09dClyZXR1cm4hMH1lbHNlIGZvcih2YXIgaD1sLmxlbmd0aC1hLHA9bC5sZW5ndGg7aD49MDtoLT1zKWlmKGg8cCYmbFtoXT09PXQpcmV0dXJuITA7cmV0dXJuITF9LGUubWl4KGUuU2VsZWN0b3IucHNldWRvcyx7cm9vdDpmdW5jdGlvbihlKXtyZXR1cm4gZT09PWUub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9LCJudGgtY2hpbGQiOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuU2VsZWN0b3IuX2dldE50aCh0LG4pfSwibnRoLWxhc3QtY2hpbGQiOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuU2VsZWN0b3IuX2dldE50aCh0LG4sbnVsbCwhMCl9LCJudGgtb2YtdHlwZSI6ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5TZWxlY3Rvci5fZ2V0TnRoKHQsbix0LnRhZ05hbWUpfSwibnRoLWxhc3Qtb2YtdHlwZSI6ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5TZWxlY3Rvci5fZ2V0TnRoKHQsbix0LnRhZ05hbWUsITApfSwibGFzdC1jaGlsZCI6ZnVuY3Rpb24odCl7dmFyIG49ZS5ET00uX2NoaWxkcmVuKHQucGFyZW50Tm9kZSk7cmV0dXJuIG5bbi5sZW5ndGgtMV09PT10fSwiZmlyc3Qtb2YtdHlwZSI6ZnVuY3Rpb24odCl7cmV0dXJuIGUuRE9NLl9jaGlsZHJlbih0LnBhcmVudE5vZGUsdC50YWdOYW1lKVswXT09PXR9LCJsYXN0LW9mLXR5cGUiOmZ1bmN0aW9uKHQpe3ZhciBuPWUuRE9NLl9jaGlsZHJlbih0LnBhcmVudE5vZGUsdC50YWdOYW1lKTtyZXR1cm4gbltuLmxlbmd0aC0xXT09PXR9LCJvbmx5LWNoaWxkIjpmdW5jdGlvbih0KXt2YXIgbj1lLkRPTS5fY2hpbGRyZW4odC5wYXJlbnROb2RlKTtyZXR1cm4gbi5sZW5ndGg9PT0xJiZuWzBdPT09dH0sIm9ubHktb2YtdHlwZSI6ZnVuY3Rpb24odCl7dmFyIG49ZS5ET00uX2NoaWxkcmVuKHQucGFyZW50Tm9kZSx0LnRhZ05hbWUpO3JldHVybiBuLmxlbmd0aD09PTEmJm5bMF09PT10fSxlbXB0eTpmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGlsZE5vZGVzLmxlbmd0aD09PTB9LG5vdDpmdW5jdGlvbih0LG4pe3JldHVybiFlLlNlbGVjdG9yLnRlc3QodCxuKX0sY29udGFpbnM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmlubmVyVGV4dHx8ZS50ZXh0Q29udGVudHx8IiI7cmV0dXJuIG4uaW5kZXhPZih0KT4tMX0sY2hlY2tlZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGVja2VkPT09ITB8fGUuc2VsZWN0ZWQ9PT0hMH0sZW5hYmxlZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZCE9PXVuZGVmaW5lZCYmIWUuZGlzYWJsZWR9LGRpc2FibGVkOmZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkfX0pLGUubWl4KGUuU2VsZWN0b3Iub3BlcmF0b3JzLHsiXj0iOiJee3ZhbH0iLCIkPSI6Int2YWx9JCIsIio9Ijoie3ZhbH0ifSksZS5TZWxlY3Rvci5jb21iaW5hdG9yc1sifiJdPXtheGlzOiJwcmV2aW91c1NpYmxpbmcifX0sIjMuMTcuMiIse3JlcXVpcmVzOlsic2VsZWN0b3ItbmF0aXZlIiwic2VsZWN0b3ItY3NzMiJdfSk7Ci8qCllVSSAzLjE3LjIgKGJ1aWxkIDljM2M3OGUpCkNvcHlyaWdodCAyMDE0IFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZS4KaHR0cDovL3l1aWxpYnJhcnkuY29tL2xpY2Vuc2UvCiovCgpZVUkuYWRkKCJub2RlLXN0eWxlIixmdW5jdGlvbihlLHQpeyhmdW5jdGlvbihlKXtlLm1peChlLk5vZGUucHJvdG90eXBlLHtzZXRTdHlsZTpmdW5jdGlvbih0LG4pe3JldHVybiBlLkRPTS5zZXRTdHlsZSh0aGlzLl9ub2RlLHQsbiksdGhpc30sc2V0U3R5bGVzOmZ1bmN0aW9uKHQpe3JldHVybiBlLkRPTS5zZXRTdHlsZXModGhpcy5fbm9kZSx0KSx0aGlzfSxnZXRTdHlsZTpmdW5jdGlvbih0KXtyZXR1cm4gZS5ET00uZ2V0U3R5bGUodGhpcy5fbm9kZSx0KX0sZ2V0Q29tcHV0ZWRTdHlsZTpmdW5jdGlvbih0KXtyZXR1cm4gZS5ET00uZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9ub2RlLHQpfX0pLGUuTm9kZUxpc3QuaW1wb3J0TWV0aG9kKGUuTm9kZS5wcm90b3R5cGUsWyJnZXRTdHlsZSIsImdldENvbXB1dGVkU3R5bGUiLCJzZXRTdHlsZSIsInNldFN0eWxlcyJdKX0pKGUpO3ZhciBuPWUuTm9kZTtlLm1peChuLnByb3RvdHlwZSx7c2hvdzpmdW5jdGlvbihlKXtyZXR1cm4gZT1hcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXSx0aGlzLnRvZ2dsZVZpZXcoITAsZSksdGhpc30sX3Nob3c6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiaGlkZGVuIiksdGhpcy5zZXRTdHlsZSgiZGlzcGxheSIsIiIpfSxfaXNIaWRkZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNBdHRyaWJ1dGUoImhpZGRlbiIpfHxlLkRPTS5nZXRDb21wdXRlZFN0eWxlKHRoaXMuX25vZGUsImRpc3BsYXkiKT09PSJub25lIn0sdG9nZ2xlVmlldzpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl90b2dnbGVWaWV3LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzfSxfdG9nZ2xlVmlldzpmdW5jdGlvbihlLHQpe3JldHVybiB0PWFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdLHR5cGVvZiBlIT0iYm9vbGVhbiImJihlPXRoaXMuX2lzSGlkZGVuKCk/MTowKSxlP3RoaXMuX3Nob3coKTp0aGlzLl9oaWRlKCksdHlwZW9mIHQ9PSJmdW5jdGlvbiImJnQuY2FsbCh0aGlzKSx0aGlzfSxoaWRlOmZ1bmN0aW9uKGUpe3JldHVybiBlPWFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdLHRoaXMudG9nZ2xlVmlldyghMSxlKSx0aGlzfSxfaGlkZTpmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKCJoaWRkZW4iLCJoaWRkZW4iKSx0aGlzLnNldFN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpfX0pLGUuTm9kZUxpc3QuaW1wb3J0TWV0aG9kKGUuTm9kZS5wcm90b3R5cGUsWyJzaG93IiwiaGlkZSIsInRvZ2dsZVZpZXciXSl9LCIzLjE3LjIiLHtyZXF1aXJlczpbImRvbS1zdHlsZSIsIm5vZGUtYmFzZSJdfSk7Ci8qCllVSSAzLjE3LjIgKGJ1aWxkIDljM2M3OGUpCkNvcHlyaWdodCAyMDE0IFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkxpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgTGljZW5zZS4KaHR0cDovL3l1aWxpYnJhcnkuY29tL2xpY2Vuc2UvCiovCgpZVUkuYWRkKCJwbHVnaW5ob3N0LWJhc2UiLGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcigpe3RoaXMuX3BsdWdpbnM9e319dmFyIG49ZS5MYW5nO3IucHJvdG90eXBlPXtwbHVnOmZ1bmN0aW9uKGUsdCl7dmFyIHIsaSxzO2lmKG4uaXNBcnJheShlKSlmb3Iocj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl0aGlzLnBsdWcoZVtyXSk7ZWxzZSBlJiYhbi5pc0Z1bmN0aW9uKGUpJiYodD1lLmNmZyxlPWUuZm4pLGUmJmUuTlMmJihzPWUuTlMsdD10fHx7fSx0Lmhvc3Q9dGhpcyx0aGlzLmhhc1BsdWdpbihzKT90aGlzW3NdLnNldEF0dHJzJiZ0aGlzW3NdLnNldEF0dHJzKHQpOih0aGlzW3NdPW5ldyBlKHQpLHRoaXMuX3BsdWdpbnNbc109ZSkpO3JldHVybiB0aGlzfSx1bnBsdWc6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxyPXRoaXMuX3BsdWdpbnM7aWYoZSluLmlzRnVuY3Rpb24oZSkmJih0PWUuTlMsdCYmKCFyW3RdfHxyW3RdIT09ZSkmJih0PW51bGwpKSx0JiYodGhpc1t0XSYmKHRoaXNbdF0uZGVzdHJveSYmdGhpc1t0XS5kZXN0cm95KCksZGVsZXRlIHRoaXNbdF0pLHJbdF0mJmRlbGV0ZSByW3RdKTtlbHNlIGZvcih0IGluIHRoaXMuX3BsdWdpbnMpdGhpcy5fcGx1Z2lucy5oYXNPd25Qcm9wZXJ0eSh0KSYmdGhpcy51bnBsdWcodCk7cmV0dXJuIHRoaXN9LGhhc1BsdWdpbjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fcGx1Z2luc1tlXSYmdGhpc1tlXX0sX2luaXRQbHVnaW5zOmZ1bmN0aW9uKGUpe3RoaXMuX3BsdWdpbnM9dGhpcy5fcGx1Z2luc3x8e30sdGhpcy5faW5pdENvbmZpZ1BsdWdpbnMmJnRoaXMuX2luaXRDb25maWdQbHVnaW5zKGUpfSxfZGVzdHJveVBsdWdpbnM6ZnVuY3Rpb24oKXt0aGlzLnVucGx1ZygpfX0sZS5uYW1lc3BhY2UoIlBsdWdpbiIpLkhvc3Q9cn0sIjMuMTcuMiIse3JlcXVpcmVzOlsieXVpLWJhc2UiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgicGx1Z2luaG9zdC1jb25maWciLGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5QbHVnaW4uSG9zdCxyPWUuTGFuZztuLnByb3RvdHlwZS5faW5pdENvbmZpZ1BsdWdpbnM9ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5fZ2V0Q2xhc3Nlcz90aGlzLl9nZXRDbGFzc2VzKCk6W3RoaXMuY29uc3RydWN0b3JdLHI9W10saT17fSxzLG8sdSxhLGY7Zm9yKG89bi5sZW5ndGgtMTtvPj0wO28tLSlzPW5bb10sYT1zLl9VTlBMVUcsYSYmZS5taXgoaSxhLCEwKSx1PXMuX1BMVUcsdSYmZS5taXgocix1LCEwKTtmb3IoZiBpbiByKXIuaGFzT3duUHJvcGVydHkoZikmJihpW2ZdfHx0aGlzLnBsdWcocltmXSkpO3QmJnQucGx1Z2lucyYmdGhpcy5wbHVnKHQucGx1Z2lucyl9LG4ucGx1Zz1mdW5jdGlvbih0LG4saSl7dmFyIHMsbyx1LGE7aWYodCE9PWUuQmFzZSl7dC5fUExVRz10Ll9QTFVHfHx7fSxyLmlzQXJyYXkobil8fChpJiYobj17Zm46bixjZmc6aX0pLG49W25dKTtmb3Iobz0wLHU9bi5sZW5ndGg7bzx1O28rKylzPW5bb10sYT1zLk5BTUV8fHMuZm4uTkFNRSx0Ll9QTFVHW2FdPXN9fSxuLnVucGx1Zz1mdW5jdGlvbih0LG4pe3ZhciBpLHMsbyx1O2lmKHQhPT1lLkJhc2Upe3QuX1VOUExVRz10Ll9VTlBMVUd8fHt9LHIuaXNBcnJheShuKXx8KG49W25dKTtmb3Iocz0wLG89bi5sZW5ndGg7czxvO3MrKylpPW5bc10sdT1pLk5BTUUsdC5fUExVR1t1XT9kZWxldGUgdC5fUExVR1t1XTp0Ll9VTlBMVUdbdV09aX19fSwiMy4xNy4yIix7cmVxdWlyZXM6WyJwbHVnaW5ob3N0LWJhc2UiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgibm9kZS1wbHVnaW5ob3N0IixmdW5jdGlvbihlLHQpe2UuTm9kZS5wbHVnPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5BcnJheShhcmd1bWVudHMpO3JldHVybiB0LnVuc2hpZnQoZS5Ob2RlKSxlLlBsdWdpbi5Ib3N0LnBsdWcuYXBwbHkoZS5CYXNlLHQpLGUuTm9kZX0sZS5Ob2RlLnVucGx1Zz1mdW5jdGlvbigpe3ZhciB0PWUuQXJyYXkoYXJndW1lbnRzKTtyZXR1cm4gdC51bnNoaWZ0KGUuTm9kZSksZS5QbHVnaW4uSG9zdC51bnBsdWcuYXBwbHkoZS5CYXNlLHQpLGUuTm9kZX0sZS5taXgoZS5Ob2RlLGUuUGx1Z2luLkhvc3QsITEsbnVsbCwxKSxlLk9iamVjdC5lYWNoKGUuTm9kZS5faW5zdGFuY2VzLGZ1bmN0aW9uKHQpe2UuUGx1Z2luLkhvc3QuYXBwbHkodCl9KSxlLk5vZGVMaXN0LnByb3RvdHlwZS5wbHVnPWZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzO3JldHVybiBlLk5vZGVMaXN0LmVhY2godGhpcyxmdW5jdGlvbihuKXtlLk5vZGUucHJvdG90eXBlLnBsdWcuYXBwbHkoZS5vbmUobiksdCl9KSx0aGlzfSxlLk5vZGVMaXN0LnByb3RvdHlwZS51bnBsdWc9ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHM7cmV0dXJuIGUuTm9kZUxpc3QuZWFjaCh0aGlzLGZ1bmN0aW9uKG4pe2UuTm9kZS5wcm90b3R5cGUudW5wbHVnLmFwcGx5KGUub25lKG4pLHQpfSksdGhpc319LCIzLjE3LjIiLHtyZXF1aXJlczpbIm5vZGUtYmFzZSIsInBsdWdpbmhvc3QiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgic2hpbS1wbHVnaW4iLGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlKXt0aGlzLmluaXQoZSl9bi5DTEFTU19OQU1FPSJ5dWktbm9kZS1zaGltIixuLlRFTVBMQVRFPSc8aWZyYW1lIGNsYXNzPSInK24uQ0xBU1NfTkFNRSsnIiBmcmFtZWJvcmRlcj0iMCIgdGl0bGU9Ik5vZGUgU3RhY2tpbmcgU2hpbSInKydzcmM9ImphdmFzY3JpcHQ6ZmFsc2UiIHRhYmluZGV4PSItMSIgcm9sZT0icHJlc2VudGF0aW9uIicrJ3N0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDotMTsiPjwvaWZyYW1lPicsbi5wcm90b3R5cGU9e2luaXQ6ZnVuY3Rpb24oZSl7dGhpcy5faG9zdD1lLmhvc3QsdGhpcy5pbml0RXZlbnRzKCksdGhpcy5pbnNlcnQoKSx0aGlzLnN5bmMoKX0saW5pdEV2ZW50czpmdW5jdGlvbigpe3RoaXMuX3Jlc2l6ZUhhbmRsZT10aGlzLl9ob3N0Lm9uKCJyZXNpemUiLHRoaXMuc3luYyx0aGlzKX0sZ2V0U2hpbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaGltfHwodGhpcy5fc2hpbT1lLk5vZGUuY3JlYXRlKG4uVEVNUExBVEUsdGhpcy5faG9zdC5nZXQoIm93bmVyRG9jdW1lbnQiKSkpfSxpbnNlcnQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9ob3N0O3RoaXMuX3NoaW09ZS5pbnNlcnRCZWZvcmUodGhpcy5nZXRTaGltKCksZS5nZXQoImZpcnN0Q2hpbGQiKSl9LHN5bmM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9zaGltLHQ9dGhpcy5faG9zdDtlJiZlLnNldEF0dHJzKHt3aWR0aDp0LmdldFN0eWxlKCJ3aWR0aCIpLGhlaWdodDp0LmdldFN0eWxlKCJoZWlnaHQiKX0pfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fc2hpbTtlJiZlLnJlbW92ZSghMCksdGhpcy5fcmVzaXplSGFuZGxlLmRldGFjaCgpfX0sbi5OQU1FPSJTaGltIixuLk5TPSJzaGltIixlLm5hbWVzcGFjZSgiUGx1Z2luIiksZS5QbHVnaW4uU2hpbT1ufSwiMy4xNy4yIix7cmVxdWlyZXM6WyJub2RlLXN0eWxlIiwibm9kZS1wbHVnaW5ob3N0Il19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoImF0dHJpYnV0ZS1jb21wbGV4IixmdW5jdGlvbihlLHQpe3ZhciBuPWUuQXR0cmlidXRlO24uQ29tcGxleD1mdW5jdGlvbigpe30sbi5Db21wbGV4LnByb3RvdHlwZT17X25vcm1BdHRyVmFsczpuLnByb3RvdHlwZS5fbm9ybUF0dHJWYWxzLF9nZXRBdHRySW5pdFZhbDpuLnByb3RvdHlwZS5fZ2V0QXR0ckluaXRWYWx9LGUuQXR0cmlidXRlQ29tcGxleD1uLkNvbXBsZXh9LCIzLjE3LjIiLHtyZXF1aXJlczpbImF0dHJpYnV0ZS1iYXNlIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoImJhc2UtcGx1Z2luaG9zdCIsZnVuY3Rpb24oZSx0KXt2YXIgbj1lLkJhc2Uscj1lLlBsdWdpbi5Ib3N0O2UubWl4KG4sciwhMSxudWxsLDEpLG4ucGx1Zz1yLnBsdWcsbi51bnBsdWc9ci51bnBsdWd9LCIzLjE3LjIiLHtyZXF1aXJlczpbImJhc2UtYmFzZSIsInBsdWdpbmhvc3QiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgiY2xhc3NuYW1lbWFuYWdlciIsZnVuY3Rpb24oZSx0KXt2YXIgbj0iY2xhc3NOYW1lUHJlZml4IixyPSJjbGFzc05hbWVEZWxpbWl0ZXIiLGk9ZS5jb25maWc7aVtuXT1pW25dfHwieXVpMyIsaVtyXT1pW3JdfHwiLSIsZS5DbGFzc05hbWVNYW5hZ2VyPWZ1bmN0aW9uKCl7dmFyIHQ9aVtuXSxzPWlbcl07cmV0dXJue2dldENsYXNzTmFtZTplLmNhY2hlZChmdW5jdGlvbigpe3ZhciBuPWUuQXJyYXkoYXJndW1lbnRzKTtyZXR1cm4gbltuLmxlbmd0aC0xXSE9PSEwP24udW5zaGlmdCh0KTpuLnBvcCgpLG4uam9pbihzKX0pfX0oKX0sIjMuMTcuMiIse3JlcXVpcmVzOlsieXVpLWJhc2UiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgid2lkZ2V0LWJhc2UiLGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gUihlKXt2YXIgdD10aGlzLG4scixpPXQuY29uc3RydWN0b3I7dC5fc3Rycz17fSx0Ll9jc3NQcmVmaXg9aS5DU1NfUFJFRklYfHxzKGkuTkFNRS50b0xvd2VyQ2FzZSgpKSxlPWV8fHt9LFIuc3VwZXJjbGFzcy5jb25zdHJ1Y3Rvci5jYWxsKHQsZSkscj10LmdldChUKSxyJiYociE9PVAmJihuPXIpLHQucmVuZGVyKG4pKX12YXIgbj1lLkxhbmcscj1lLk5vZGUsaT1lLkNsYXNzTmFtZU1hbmFnZXIscz1pLmdldENsYXNzTmFtZSxvLHU9ZS5jYWNoZWQoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3Vic3RyaW5nKDAsMSkudG9VcHBlckNhc2UoKStlLnN1YnN0cmluZygxKX0pLGE9ImNvbnRlbnQiLGY9InZpc2libGUiLGw9ImhpZGRlbiIsYz0iZGlzYWJsZWQiLGg9ImZvY3VzZWQiLHA9IndpZHRoIixkPSJoZWlnaHQiLHY9ImJvdW5kaW5nQm94IixtPSJjb250ZW50Qm94IixnPSJwYXJlbnROb2RlIix5PSJvd25lckRvY3VtZW50IixiPSJhdXRvIix3PSJzcmNOb2RlIixFPSJib2R5IixTPSJ0YWJJbmRleCIseD0iaWQiLFQ9InJlbmRlciIsTj0icmVuZGVyZWQiLEM9ImRlc3Ryb3llZCIsaz0ic3RyaW5ncyIsTD0iPGRpdj48L2Rpdj4iLEE9IkNoYW5nZSIsTz0ibG9hZGluZyIsTT0iX3VpU2V0IixfPSIiLEQ9ZnVuY3Rpb24oKXt9LFA9ITAsSD0hMSxCLGo9e30sRj1bZixjLGQscCxoLFNdLEk9ZS5VQS53ZWJraXQscT17fTtSLk5BTUU9IndpZGdldCIsQj1SLlVJX1NSQz0idWkiLFIuQVRUUlM9aixqW3hdPXt2YWx1ZUZuOiJfZ3VpZCIsd3JpdGVPbmNlOlB9LGpbTl09e3ZhbHVlOkgscmVhZE9ubHk6UH0salt2XT17dmFsdWVGbjoiX2RlZmF1bHRCQiIsc2V0dGVyOiJfc2V0QkIiLHdyaXRlT25jZTpQfSxqW21dPXt2YWx1ZUZuOiJfZGVmYXVsdENCIixzZXR0ZXI6Il9zZXRDQiIsd3JpdGVPbmNlOlB9LGpbU109e3ZhbHVlOm51bGwsdmFsaWRhdG9yOiJfdmFsaWRUYWJJbmRleCJ9LGpbaF09e3ZhbHVlOkgscmVhZE9ubHk6UH0saltjXT17dmFsdWU6SH0saltmXT17dmFsdWU6UH0saltkXT17dmFsdWU6X30saltwXT17dmFsdWU6X30saltrXT17dmFsdWU6e30sc2V0dGVyOiJfc3RyU2V0dGVyIixnZXR0ZXI6Il9zdHJHZXR0ZXIifSxqW1RdPXt2YWx1ZTpILHdyaXRlT25jZTpQfSxSLkNTU19QUkVGSVg9cyhSLk5BTUUudG9Mb3dlckNhc2UoKSksUi5nZXRDbGFzc05hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gcy5hcHBseShpLFtSLkNTU19QUkVGSVhdLmNvbmNhdChlLkFycmF5KGFyZ3VtZW50cyksITApKX0sbz1SLmdldENsYXNzTmFtZSxSLmdldEJ5Tm9kZT1mdW5jdGlvbih0KXt2YXIgbixpPW8oKTtyZXR1cm4gdD1yLm9uZSh0KSx0JiYodD10LmFuY2VzdG9yKCIuIitpLCEwKSx0JiYobj1xW2Uuc3RhbXAodCwhMCldKSksbnx8bnVsbH0sZS5leHRlbmQoUixlLkJhc2Use2dldENsYXNzTmFtZTpmdW5jdGlvbigpe3JldHVybiBzLmFwcGx5KGksW3RoaXMuX2Nzc1ByZWZpeF0uY29uY2F0KGUuQXJyYXkoYXJndW1lbnRzKSwhMCkpfSxpbml0aWFsaXplcjpmdW5jdGlvbih0KXt2YXIgbj10aGlzLmdldCh2KTtuIGluc3RhbmNlb2YgciYmdGhpcy5fbWFwSW5zdGFuY2UoZS5zdGFtcChuKSl9LF9tYXBJbnN0YW5jZTpmdW5jdGlvbihlKXtxW2VdPXRoaXN9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldCh2KSxuO3QgaW5zdGFuY2VvZiByJiYobj1lLnN0YW1wKHQsITApLG4gaW4gcSYmZGVsZXRlIHFbbl0sdGhpcy5fZGVzdHJveUJveCgpKX0sZGVzdHJveTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fZGVzdHJveUFsbE5vZGVzPWUsUi5zdXBlcmNsYXNzLmRlc3Ryb3kuYXBwbHkodGhpcyl9LF9kZXN0cm95Qm94OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXQodiksdD10aGlzLmdldChtKSxuPXRoaXMuX2Rlc3Ryb3lBbGxOb2RlcyxyO3I9ZSYmZS5jb21wYXJlVG8odCksdGhpcy5VSV9FVkVOVFMmJnRoaXMuX2Rlc3Ryb3lVSUV2ZW50cygpLHRoaXMuX3VuYmluZFVJKGUpLHQmJihuJiZ0LmVtcHR5KCksdC5yZW1vdmUoUCkpLHJ8fChuJiZlLmVtcHR5KCksZS5yZW1vdmUoUCkpfSxyZW5kZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIXRoaXMuZ2V0KEMpJiYhdGhpcy5nZXQoTikmJih0aGlzLnB1Ymxpc2goVCx7cXVldWFibGU6SCxmaXJlT25jZTpQLGRlZmF1bHRUYXJnZXRPbmx5OlAsZGVmYXVsdEZuOnRoaXMuX2RlZlJlbmRlckZufSksdGhpcy5maXJlKFQse3BhcmVudE5vZGU6ZT9yLm9uZShlKTpudWxsfSkpLHRoaXN9LF9kZWZSZW5kZXJGbjpmdW5jdGlvbihlKXt0aGlzLl9wYXJlbnROb2RlPWUucGFyZW50Tm9kZSx0aGlzLnJlbmRlcmVyKCksdGhpcy5fc2V0KE4sUCksdGhpcy5fcmVtb3ZlTG9hZGluZ0NsYXNzTmFtZXMoKX0scmVuZGVyZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuX3JlbmRlclVJKCksZS5yZW5kZXJVSSgpLGUuX2JpbmRVSSgpLGUuYmluZFVJKCksZS5fc3luY1VJKCksZS5zeW5jVUkoKX0sYmluZFVJOkQscmVuZGVyVUk6RCxzeW5jVUk6RCxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0KGYsSCl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXQoZixQKX0sZm9jdXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0KGgsUCl9LGJsdXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0KGgsSCl9LGVuYWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNldChjLEgpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0KGMsUCl9LF91aVNpemVDQjpmdW5jdGlvbihlKXt0aGlzLmdldChtKS50b2dnbGVDbGFzcyhvKGEsImV4cGFuZGVkIiksZSl9LF9yZW5kZXJCb3g6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXQuZ2V0KG0pLGk9dC5nZXQodikscz10LmdldCh3KSxvPXQuREVGX1BBUkVOVF9OT0RFLHU9cyYmcy5nZXQoeSl8fGkuZ2V0KHkpfHxuLmdldCh5KTtzJiYhcy5jb21wYXJlVG8obikmJiFuLmluRG9jKHUpJiZzLnJlcGxhY2UobiksIWkuY29tcGFyZVRvKG4uZ2V0KGcpKSYmIWkuY29tcGFyZVRvKG4pJiYobi5pbkRvYyh1KSYmbi5yZXBsYWNlKGkpLGkuYXBwZW5kQ2hpbGQobikpLGU9ZXx8byYmci5vbmUobyksZT9lLmFwcGVuZENoaWxkKGkpOmkuaW5Eb2ModSl8fHIub25lKEUpLmluc2VydChpLDApfSxfc2V0QkI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3NldEJveCh0aGlzLmdldCh4KSxlLHRoaXMuQk9VTkRJTkdfVEVNUExBVEUsITApfSxfc2V0Q0I6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuQ09OVEVOVF9URU1QTEFURT09PW51bGw/dGhpcy5nZXQodik6dGhpcy5fc2V0Qm94KG51bGwsZSx0aGlzLkNPTlRFTlRfVEVNUExBVEUsITEpfSxfZGVmYXVsdEJCOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXQodyksdD10aGlzLkNPTlRFTlRfVEVNUExBVEU9PT1udWxsO3JldHVybiBlJiZ0P2U6bnVsbH0sX2RlZmF1bHRDQjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5nZXQodyl8fG51bGx9LF9zZXRCb3g6ZnVuY3Rpb24odCxuLGkscyl7cmV0dXJuIG49ci5vbmUobiksbnx8KG49ci5jcmVhdGUoaSkscz90aGlzLl9iYkZyb21UZW1wbGF0ZT0hMDp0aGlzLl9jYkZyb21UZW1wbGF0ZT0hMCksbi5nZXQoeCl8fG4uc2V0KHgsdHx8ZS5ndWlkKCkpLG59LF9yZW5kZXJVSTpmdW5jdGlvbigpe3RoaXMuX3JlbmRlckJveENsYXNzTmFtZXMoKSx0aGlzLl9yZW5kZXJCb3godGhpcy5fcGFyZW50Tm9kZSl9LF9yZW5kZXJCb3hDbGFzc05hbWVzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fZ2V0Q2xhc3NlcygpLHQsbj10aGlzLmdldCh2KSxyO24uYWRkQ2xhc3MobygpKTtmb3Iocj1lLmxlbmd0aC0zO3I+PTA7ci0tKXQ9ZVtyXSxuLmFkZENsYXNzKHQuQ1NTX1BSRUZJWHx8cyh0Lk5BTUUudG9Mb3dlckNhc2UoKSkpO3RoaXMuZ2V0KG0pLmFkZENsYXNzKHRoaXMuZ2V0Q2xhc3NOYW1lKGEpKX0sX3JlbW92ZUxvYWRpbmdDbGFzc05hbWVzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXQodiksdD10aGlzLmdldChtKSxuPXRoaXMuZ2V0Q2xhc3NOYW1lKE8pLHI9byhPKTtlLnJlbW92ZUNsYXNzKHIpLnJlbW92ZUNsYXNzKG4pLHQucmVtb3ZlQ2xhc3MocikucmVtb3ZlQ2xhc3Mobil9LF9iaW5kVUk6ZnVuY3Rpb24oKXt0aGlzLl9iaW5kQXR0clVJKHRoaXMuX1VJX0FUVFJTLkJJTkQpLHRoaXMuX2JpbmRET00oKX0sX3VuYmluZFVJOmZ1bmN0aW9uKGUpe3RoaXMuX3VuYmluZERPTShlKX0sX2JpbmRET006ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldCh2KS5nZXQoeSksbj1SLl9oRG9jRm9jdXM7bnx8KG49Ui5faERvY0ZvY3VzPXQub24oImZvY3VzIix0aGlzLl9vbkRvY0ZvY3VzLHRoaXMpLG4ubGlzdGVuZXJzPXtjb3VudDowfSksbi5saXN0ZW5lcnNbZS5zdGFtcCh0aGlzLCEwKV09ITAsbi5saXN0ZW5lcnMuY291bnQrKyxJJiYodGhpcy5faERvY01vdXNlRG93bj10Lm9uKCJtb3VzZWRvd24iLHRoaXMuX29uRG9jTW91c2VEb3duLHRoaXMpKX0sX3VuYmluZERPTTpmdW5jdGlvbih0KXt2YXIgbj1SLl9oRG9jRm9jdXMscj1lLnN0YW1wKHRoaXMsITApLGkscz10aGlzLl9oRG9jTW91c2VEb3duO24mJihpPW4ubGlzdGVuZXJzLGlbcl0mJihkZWxldGUgaVtyXSxpLmNvdW50LS0pLGkuY291bnQ9PT0wJiYobi5kZXRhY2goKSxSLl9oRG9jRm9jdXM9bnVsbCkpLEkmJnMmJnMuZGV0YWNoKCl9LF9zeW5jVUk6ZnVuY3Rpb24oKXt0aGlzLl9zeW5jQXR0clVJKHRoaXMuX1VJX0FUVFJTLlNZTkMpfSxfdWlTZXRIZWlnaHQ6ZnVuY3Rpb24oZSl7dGhpcy5fdWlTZXREaW0oZCxlKSx0aGlzLl91aVNpemVDQihlIT09XyYmZSE9PWIpfSxfdWlTZXRXaWR0aDpmdW5jdGlvbihlKXt0aGlzLl91aVNldERpbShwLGUpfSxfdWlTZXREaW06ZnVuY3Rpb24oZSx0KXt0aGlzLmdldCh2KS5zZXRTdHlsZShlLG4uaXNOdW1iZXIodCk/dCt0aGlzLkRFRl9VTklUOnQpfSxfdWlTZXRWaXNpYmxlOmZ1bmN0aW9uKGUpe3RoaXMuZ2V0KHYpLnRvZ2dsZUNsYXNzKHRoaXMuZ2V0Q2xhc3NOYW1lKGwpLCFlKX0sX3VpU2V0RGlzYWJsZWQ6ZnVuY3Rpb24oZSl7dGhpcy5nZXQodikudG9nZ2xlQ2xhc3ModGhpcy5nZXRDbGFzc05hbWUoYyksZSl9LF91aVNldEZvY3VzZWQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmdldCh2KTtuLnRvZ2dsZUNsYXNzKHRoaXMuZ2V0Q2xhc3NOYW1lKGgpLGUpLHQhPT1CJiYoZT9uLmZvY3VzKCk6bi5ibHVyKCkpfSxfdWlTZXRUYWJJbmRleDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldCh2KTtuLmlzTnVtYmVyKGUpP3Quc2V0KFMsZSk6dC5yZW1vdmVBdHRyaWJ1dGUoUyl9LF9vbkRvY01vdXNlRG93bjpmdW5jdGlvbihlKXt0aGlzLl9kb21Gb2N1cyYmdGhpcy5fb25Eb2NGb2N1cyhlKX0sX29uRG9jRm9jdXM6ZnVuY3Rpb24oZSl7dmFyIHQ9Ui5nZXRCeU5vZGUoZS50YXJnZXQpLG49Ui5fYWN0aXZlO24mJm4hPT10JiYobi5fZG9tRm9jdXM9ITEsbi5fc2V0KGgsITEse3NyYzpCfSksUi5fYWN0aXZlPW51bGwpLHQmJih0Ll9kb21Gb2N1cz0hMCx0Ll9zZXQoaCwhMCx7c3JjOkJ9KSxSLl9hY3RpdmU9dCl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSsiWyIrdGhpcy5nZXQoeCkrIl0ifSxERUZfVU5JVDoicHgiLERFRl9QQVJFTlRfTk9ERTpudWxsLENPTlRFTlRfVEVNUExBVEU6TCxCT1VORElOR19URU1QTEFURTpMLF9ndWlkOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZ3VpZCgpfSxfdmFsaWRUYWJJbmRleDpmdW5jdGlvbihlKXtyZXR1cm4gbi5pc051bWJlcihlKXx8bi5pc051bGwoZSl9LF9iaW5kQXR0clVJOmZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5sZW5ndGg7Zm9yKHQ9MDt0PG47dCsrKXRoaXMuYWZ0ZXIoZVt0XStBLHRoaXMuX3NldEF0dHJVSSl9LF9zeW5jQXR0clVJOmZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5sZW5ndGgscjtmb3IodD0wO3Q8bjt0Kyspcj1lW3RdLHRoaXNbTSt1KHIpXSh0aGlzLmdldChyKSl9LF9zZXRBdHRyVUk6ZnVuY3Rpb24oZSl7ZS50YXJnZXQ9PT10aGlzJiZ0aGlzW00rdShlLmF0dHJOYW1lCildKGUubmV3VmFsLGUuc3JjKX0sX3N0clNldHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gZS5tZXJnZSh0aGlzLmdldChrKSx0KX0sZ2V0U3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmdldChrKVtlXX0sZ2V0U3RyaW5nczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldChrKX0sX1VJX0FUVFJTOntCSU5EOkYsU1lOQzpGfX0pLGUuV2lkZ2V0PVJ9LCIzLjE3LjIiLHtyZXF1aXJlczpbImF0dHJpYnV0ZSIsImJhc2UtYmFzZSIsImJhc2UtcGx1Z2luaG9zdCIsImNsYXNzbmFtZW1hbmFnZXIiLCJldmVudC1mb2N1cyIsIm5vZGUtYmFzZSIsIm5vZGUtc3R5bGUiXSxza2lubmFibGU6ITB9KTsK></script><script charset=utf-8 id=yui_3_17_2_1_1703147614323_6 async data-sf-original-src=https://yui-s.yahooapis.com/combo?3.17.2/widget-htmlparser/widget-htmlparser-min.js&3.17.2/widget-skin/widget-skin-min.js&3.17.2/widget-uievents/widget-uievents-min.js&3.17.2/widget-position/widget-position-min.js&3.17.2/widget-position-align/widget-position-align-min.js&3.17.2/autocomplete-list/autocomplete-list-min.js&3.17.2/autocomplete-list-keys/autocomplete-list-keys-min.js&3.17.2/autocomplete-plugin/autocomplete-plugin-min.js&3.17.2/text-data-wordbreak/text-data-wordbreak-min.js&3.17.2/text-wordbreak/text-wordbreak-min.js&3.17.2/highlight-base/highlight-base-min.js&3.17.2/autocomplete-highlighters/autocomplete-highlighters-min.js src=data:application/javascript;base64,LyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoIndpZGdldC1odG1scGFyc2VyIixmdW5jdGlvbihlLHQpe3ZhciBuPWUuV2lkZ2V0LHI9ZS5Ob2RlLGk9ZS5MYW5nLHM9InNyY05vZGUiLG89ImNvbnRlbnRCb3giO24uSFRNTF9QQVJTRVI9e30sbi5fYnVpbGRDZmc9e2FnZ3JlZ2F0ZXM6WyJIVE1MX1BBUlNFUiJdfSxuLkFUVFJTW3NdPXt2YWx1ZTpudWxsLHNldHRlcjpyLm9uZSxnZXR0ZXI6Il9nZXRTcmNOb2RlIix3cml0ZU9uY2U6ITB9LGUubWl4KG4ucHJvdG90eXBlLHtfZ2V0U3JjTm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZXx8dGhpcy5nZXQobyl9LF9wcmVBZGRBdHRyczpmdW5jdGlvbihlLHQsbil7dmFyIHI9e2lkOmUuaWQsYm91bmRpbmdCb3g6ZS5ib3VuZGluZ0JveCxjb250ZW50Qm94OmUuY29udGVudEJveCxzcmNOb2RlOmUuc3JjTm9kZX07dGhpcy5hZGRBdHRycyhyLHQsbiksZGVsZXRlIGUuYm91bmRpbmdCb3gsZGVsZXRlIGUuY29udGVudEJveCxkZWxldGUgZS5zcmNOb2RlLGRlbGV0ZSBlLmlkLHRoaXMuX2FwcGx5UGFyc2VyJiZ0aGlzLl9hcHBseVBhcnNlcih0KX0sX2FwcGx5UGFyc2VkQ29uZmlnOmZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gcj9lLm1peChuLHIsITEpOm59LF9hcHBseVBhcnNlcjpmdW5jdGlvbih0KXt2YXIgbj10aGlzLHI9dGhpcy5fZ2V0Tm9kZVRvUGFyc2UoKSxzPW4uX2dldEh0bWxQYXJzZXIoKSxvLHU7cyYmciYmZS5PYmplY3QuZWFjaChzLGZ1bmN0aW9uKGUsdCxzKXt1PW51bGwsaS5pc0Z1bmN0aW9uKGUpP3U9ZS5jYWxsKG4scik6aS5pc0FycmF5KGUpPyh1PXIuYWxsKGVbMF0pLHUuaXNFbXB0eSgpJiYodT1udWxsKSk6dT1yLm9uZShlKSx1IT09bnVsbCYmdSE9PXVuZGVmaW5lZCYmKG89b3x8e30sb1t0XT11KX0pLHQ9bi5fYXBwbHlQYXJzZWRDb25maWcocix0LG8pfSxfZ2V0Tm9kZVRvUGFyc2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldCgic3JjTm9kZSIpO3JldHVybiB0aGlzLl9jYkZyb21UZW1wbGF0ZT9udWxsOmV9LF9nZXRIdG1sUGFyc2VyOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZ2V0Q2xhc3NlcygpLG49e30scixpO2ZvcihyPXQubGVuZ3RoLTE7cj49MDtyLS0paT10W3JdLkhUTUxfUEFSU0VSLGkmJmUubWl4KG4saSwhMCk7cmV0dXJuIG59fSl9LCIzLjE3LjIiLHtyZXF1aXJlczpbIndpZGdldC1iYXNlIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoIndpZGdldC1za2luIixmdW5jdGlvbihlLHQpe3ZhciBuPSJib3VuZGluZ0JveCIscj0iY29udGVudEJveCIsaT0ic2tpbiIscz1lLkNsYXNzTmFtZU1hbmFnZXIuZ2V0Q2xhc3NOYW1lO2UuV2lkZ2V0LnByb3RvdHlwZS5nZXRTa2luTmFtZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldChyKXx8dGhpcy5nZXQobiksbyx1O3JldHVybiBlPWV8fHMoaSwiIiksdT1uZXcgUmVnRXhwKCJcXGIiK2UrIihcXFMrKSIpLHQmJnQuYW5jZXN0b3IoZnVuY3Rpb24oZSl7cmV0dXJuIG89ZS5nZXQoImNsYXNzTmFtZSIpLm1hdGNoKHUpLG99KSxvP29bMV06bnVsbH19LCIzLjE3LjIiLHtyZXF1aXJlczpbIndpZGdldC1iYXNlIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoIndpZGdldC11aWV2ZW50cyIsZnVuY3Rpb24oZSx0KXt2YXIgbj0iYm91bmRpbmdCb3giLHI9ZS5XaWRnZXQsaT0icmVuZGVyIixzPWUuTGFuZyxvPSI6Iix1PWUuV2lkZ2V0Ll91aWV2dHM9ZS5XaWRnZXQuX3VpZXZ0c3x8e307ZS5taXgoci5wcm90b3R5cGUse19kZXN0cm95VUlFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD1lLnN0YW1wKHRoaXMsITApO2UuZWFjaCh1LGZ1bmN0aW9uKG4scil7bi5pbnN0YW5jZXNbdF0mJihkZWxldGUgbi5pbnN0YW5jZXNbdF0sZS5PYmplY3QuaXNFbXB0eShuLmluc3RhbmNlcykmJihuLmhhbmRsZS5kZXRhY2goKSx1W3JdJiZkZWxldGUgdVtyXSkpfSl9LFVJX0VWRU5UUzplLk5vZGUuRE9NX0VWRU5UUyxfZ2V0VUlFdmVudE5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQobil9LF9jcmVhdGVVSUV2ZW50OmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuX2dldFVJRXZlbnROb2RlKCksaT1lLnN0YW1wKG4pK3Qscz11W2ldLG87c3x8KG89bi5kZWxlZ2F0ZSh0LGZ1bmN0aW9uKGUpe3ZhciB0PXIuZ2V0QnlOb2RlKHRoaXMpO3QmJnQuX2ZpbHRlclVJRXZlbnQoZSkmJnQuZmlyZShlLnR5cGUse2RvbUV2ZW50OmV9KX0sIi4iK2UuV2lkZ2V0LmdldENsYXNzTmFtZSgpKSx1W2ldPXM9e2luc3RhbmNlczp7fSxoYW5kbGU6b30pLHMuaW5zdGFuY2VzW2Uuc3RhbXAodGhpcyldPTF9LF9maWx0ZXJVSUV2ZW50OmZ1bmN0aW9uKGUpe3JldHVybiBlLmN1cnJlbnRUYXJnZXQuY29tcGFyZVRvKGUuY29udGFpbmVyKXx8ZS5jb250YWluZXIuY29tcGFyZVRvKHRoaXMuX2dldFVJRXZlbnROb2RlKCkpfSxfZ2V0VUlFdmVudDpmdW5jdGlvbihlKXtpZihzLmlzU3RyaW5nKGUpKXt2YXIgdD10aGlzLnBhcnNlVHlwZShlKVsxXSxuLHI7cmV0dXJuIHQmJihuPXQuaW5kZXhPZihvKSxuPi0xJiYodD10LnN1YnN0cmluZyhuK28ubGVuZ3RoKSksdGhpcy5VSV9FVkVOVFNbdF0mJihyPXQpKSxyfX0sX2luaXRVSUV2ZW50OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2dldFVJRXZlbnQoZSksbj10aGlzLl91aUV2dHNJbml0UXVldWV8fHt9O3QmJiFuW3RdJiYodGhpcy5fdWlFdnRzSW5pdFF1ZXVlPW5bdF09MSx0aGlzLmFmdGVyKGksZnVuY3Rpb24oKXt0aGlzLl9jcmVhdGVVSUV2ZW50KHQpLGRlbGV0ZSB0aGlzLl91aUV2dHNJbml0UXVldWVbdF19KSl9LG9uOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pbml0VUlFdmVudChlKSxyLnN1cGVyY2xhc3Mub24uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxwdWJsaXNoOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fZ2V0VUlFdmVudChlKTtyZXR1cm4gbiYmdCYmdC5kZWZhdWx0Rm4mJnRoaXMuX2luaXRVSUV2ZW50KG4pLHIuc3VwZXJjbGFzcy5wdWJsaXNoLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LCEwKX0sIjMuMTcuMiIse3JlcXVpcmVzOlsibm9kZS1ldmVudC1kZWxlZ2F0ZSIsIndpZGdldC1iYXNlIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoIndpZGdldC1wb3NpdGlvbiIsZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBkKGUpe312YXIgbj1lLkxhbmcscj1lLldpZGdldCxpPSJ4eSIscz0icG9zaXRpb24iLG89InBvc2l0aW9uZWQiLHU9ImJvdW5kaW5nQm94IixhPSJyZWxhdGl2ZSIsZj0icmVuZGVyVUkiLGw9ImJpbmRVSSIsYz0ic3luY1VJIixoPXIuVUlfU1JDLHA9Inh5Q2hhbmdlIjtkLkFUVFJTPXt4OntzZXR0ZXI6ZnVuY3Rpb24oZSl7dGhpcy5fc2V0WChlKX0sZ2V0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFgoKX0sbGF6eUFkZDohMX0seTp7c2V0dGVyOmZ1bmN0aW9uKGUpe3RoaXMuX3NldFkoZSl9LGdldHRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9nZXRZKCl9LGxhenlBZGQ6ITF9LHh5Ont2YWx1ZTpbMCwwXSx2YWxpZGF0b3I6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlWFkoZSl9fX0sZC5QT1NJVElPTkVEX0NMQVNTX05BTUU9ci5nZXRDbGFzc05hbWUobyksZC5wcm90b3R5cGU9e2luaXRpYWxpemVyOmZ1bmN0aW9uKCl7dGhpcy5fcG9zTm9kZT10aGlzLmdldCh1KSxlLmFmdGVyKHRoaXMuX3JlbmRlclVJUG9zaXRpb24sdGhpcyxmKSxlLmFmdGVyKHRoaXMuX3N5bmNVSVBvc2l0aW9uLHRoaXMsYyksZS5hZnRlcih0aGlzLl9iaW5kVUlQb3NpdGlvbix0aGlzLGwpfSxfcmVuZGVyVUlQb3NpdGlvbjpmdW5jdGlvbigpe3RoaXMuX3Bvc05vZGUuYWRkQ2xhc3MoZC5QT1NJVElPTkVEX0NMQVNTX05BTUUpfSxfc3luY1VJUG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9wb3NOb2RlO2UuZ2V0U3R5bGUocyk9PT1hJiZ0aGlzLnN5bmNYWSgpLHRoaXMuX3VpU2V0WFkodGhpcy5nZXQoaSkpfSxfYmluZFVJUG9zaXRpb246ZnVuY3Rpb24oKXt0aGlzLmFmdGVyKHAsdGhpcy5fYWZ0ZXJYWUNoYW5nZSl9LG1vdmU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMsdD1uLmlzQXJyYXkoZVswXSk/ZVswXTpbZVswXSxlWzFdXTt0aGlzLnNldChpLHQpfSxzeW5jWFk6ZnVuY3Rpb24oKXt0aGlzLnNldChpLHRoaXMuX3Bvc05vZGUuZ2V0WFkoKSx7c3JjOmh9KX0sX3ZhbGlkYXRlWFk6ZnVuY3Rpb24oZSl7cmV0dXJuIG4uaXNBcnJheShlKSYmbi5pc051bWJlcihlWzBdKSYmbi5pc051bWJlcihlWzFdKX0sX3NldFg6ZnVuY3Rpb24oZSl7dGhpcy5zZXQoaSxbZSx0aGlzLmdldChpKVsxXV0pfSxfc2V0WTpmdW5jdGlvbihlKXt0aGlzLnNldChpLFt0aGlzLmdldChpKVswXSxlXSl9LF9nZXRYOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KGkpWzBdfSxfZ2V0WTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldChpKVsxXX0sX2FmdGVyWFlDaGFuZ2U6ZnVuY3Rpb24oZSl7ZS5zcmMhPWgmJnRoaXMuX3VpU2V0WFkoZS5uZXdWYWwpfSxfdWlTZXRYWTpmdW5jdGlvbihlKXt0aGlzLl9wb3NOb2RlLnNldFhZKGUpfX0sZS5XaWRnZXRQb3NpdGlvbj1kfSwiMy4xNy4yIix7cmVxdWlyZXM6WyJiYXNlLWJ1aWxkIiwibm9kZS1zY3JlZW4iLCJ3aWRnZXQiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgid2lkZ2V0LXBvc2l0aW9uLWFsaWduIixmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIGMoZSl7fXZhciBuPWUuTGFuZyxyPSJhbGlnbiIsaT0iYWxpZ25PbiIscz0idmlzaWJsZSIsbz0iYm91bmRpbmdCb3giLHU9Im9mZnNldFdpZHRoIixhPSJvZmZzZXRIZWlnaHQiLGY9InJlZ2lvbiIsbD0idmlld3BvcnRSZWdpb24iO2MuQVRUUlM9e2FsaWduOnt2YWx1ZTpudWxsfSxjZW50ZXJlZDp7c2V0dGVyOiJfc2V0QWxpZ25DZW50ZXIiLGxhenlBZGQ6ITEsdmFsdWU6ITF9LGFsaWduT246e3ZhbHVlOltdLHZhbGlkYXRvcjplLkxhbmcuaXNBcnJheX19LGMuVEw9InRsIixjLlRSPSJ0ciIsYy5CTD0iYmwiLGMuQlI9ImJyIixjLlRDPSJ0YyIsYy5SQz0icmMiLGMuQkM9ImJjIixjLkxDPSJsYyIsYy5DQz0iY2MiLGMucHJvdG90eXBlPXtpbml0aWFsaXplcjpmdW5jdGlvbigpe3RoaXMuX3Bvc05vZGV8fGUuZXJyb3IoIldpZGdldFBvc2l0aW9uIG5lZWRzIHRvIGJlIGFkZGVkIHRvIHRoZSBXaWRnZXQsIGJlZm9yZSBXaWRnZXRQb3NpdGlvbkFsaWduIGlzIGFkZGVkIiksZS5hZnRlcih0aGlzLl9iaW5kVUlQb3NBbGlnbix0aGlzLCJiaW5kVUkiKSxlLmFmdGVyKHRoaXMuX3N5bmNVSVBvc0FsaWduLHRoaXMsInN5bmNVSSIpfSxfcG9zQWxpZ25VSUhhbmRsZXM6bnVsbCxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5fZGV0YWNoUG9zQWxpZ25VSUhhbmRsZXMoKX0sX2JpbmRVSVBvc0FsaWduOmZ1bmN0aW9uKCl7dGhpcy5hZnRlcigiYWxpZ25DaGFuZ2UiLHRoaXMuX2FmdGVyQWxpZ25DaGFuZ2UpLHRoaXMuYWZ0ZXIoImFsaWduT25DaGFuZ2UiLHRoaXMuX2FmdGVyQWxpZ25PbkNoYW5nZSksdGhpcy5hZnRlcigidmlzaWJsZUNoYW5nZSIsdGhpcy5fc3luY1VJUG9zQWxpZ24pfSxfc3luY1VJUG9zQWxpZ246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldChyKTt0aGlzLl91aVNldFZpc2libGVQb3NBbGlnbih0aGlzLmdldChzKSksZSYmdGhpcy5fdWlTZXRBbGlnbihlLm5vZGUsZS5wb2ludHMpfSxhbGlnbjpmdW5jdGlvbihlLHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuc2V0KHIse25vZGU6ZSxwb2ludHM6dH0pOnRoaXMuX3N5bmNVSVBvc0FsaWduKCksdGhpc30sY2VudGVyZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWxpZ24oZSxbYy5DQyxjLkNDXSl9LF9zZXRBbGlnbkNlbnRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZSYmdGhpcy5zZXQocix7bm9kZTplPT09ITA/bnVsbDplLHBvaW50czpbYy5DQyxjLkNDXX0pLGV9LF91aVNldEFsaWduOmZ1bmN0aW9uKHQscil7aWYoIW4uaXNBcnJheShyKXx8ci5sZW5ndGghPT0yKXtlLmVycm9yKCJhbGlnbjogSW52YWxpZCBQb2ludHMgQXJndW1lbnRzIik7cmV0dXJufXZhciBpPXRoaXMuX2dldFJlZ2lvbih0KSxzLG8sdTtpZighaSlyZXR1cm47cz1yWzBdLG89clsxXTtzd2l0Y2gobyl7Y2FzZSBjLlRMOnU9W2kubGVmdCxpLnRvcF07YnJlYWs7Y2FzZSBjLlRSOnU9W2kucmlnaHQsaS50b3BdO2JyZWFrO2Nhc2UgYy5CTDp1PVtpLmxlZnQsaS5ib3R0b21dO2JyZWFrO2Nhc2UgYy5CUjp1PVtpLnJpZ2h0LGkuYm90dG9tXTticmVhaztjYXNlIGMuVEM6dT1baS5sZWZ0K01hdGguZmxvb3IoaS53aWR0aC8yKSxpLnRvcF07YnJlYWs7Y2FzZSBjLkJDOnU9W2kubGVmdCtNYXRoLmZsb29yKGkud2lkdGgvMiksaS5ib3R0b21dO2JyZWFrO2Nhc2UgYy5MQzp1PVtpLmxlZnQsaS50b3ArTWF0aC5mbG9vcihpLmhlaWdodC8yKV07YnJlYWs7Y2FzZSBjLlJDOnU9W2kucmlnaHQsaS50b3ArTWF0aC5mbG9vcihpLmhlaWdodC8yKV07YnJlYWs7Y2FzZSBjLkNDOnU9W2kubGVmdCtNYXRoLmZsb29yKGkud2lkdGgvMiksaS50b3ArTWF0aC5mbG9vcihpLmhlaWdodC8yKV07YnJlYWs7ZGVmYXVsdDp9dSYmdGhpcy5fZG9BbGlnbihzLHVbMF0sdVsxXSl9LF91aVNldFZpc2libGVQb3NBbGlnbjpmdW5jdGlvbihlKXtlP3RoaXMuX2F0dGFjaFBvc0FsaWduVUlIYW5kbGVzKCk6dGhpcy5fZGV0YWNoUG9zQWxpZ25VSUhhbmRsZXMoKX0sX2F0dGFjaFBvc0FsaWduVUlIYW5kbGVzOmZ1bmN0aW9uKCl7aWYodGhpcy5fcG9zQWxpZ25VSUhhbmRsZXMpcmV0dXJuO3ZhciB0PXRoaXMuZ2V0KG8pLG49ZS5iaW5kKHRoaXMuX3N5bmNVSVBvc0FsaWduLHRoaXMpLHI9W107ZS5BcnJheS5lYWNoKHRoaXMuZ2V0KGkpLGZ1bmN0aW9uKGkpe3ZhciBzPWkuZXZlbnROYW1lLG89ZS5vbmUoaS5ub2RlKXx8dDtzJiZyLnB1c2goby5vbihzLG4pKX0pLHRoaXMuX3Bvc0FsaWduVUlIYW5kbGVzPXJ9LF9kZXRhY2hQb3NBbGlnblVJSGFuZGxlczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3Bvc0FsaWduVUlIYW5kbGVzO3QmJigobmV3IGUuRXZlbnRIYW5kbGUodCkpLmRldGFjaCgpLHRoaXMuX3Bvc0FsaWduVUlIYW5kbGVzPW51bGwpfSxfZG9BbGlnbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fcG9zTm9kZSxpO3N3aXRjaChlKXtjYXNlIGMuVEw6aT1bdCxuXTticmVhaztjYXNlIGMuVFI6aT1bdC1yLmdldCh1KSxuXTticmVhaztjYXNlIGMuQkw6aT1bdCxuLXIuZ2V0KGEpXTticmVhaztjYXNlIGMuQlI6aT1bdC1yLmdldCh1KSxuLXIuZ2V0KGEpXTticmVhaztjYXNlIGMuVEM6aT1bdC1yLmdldCh1KS8yLG5dO2JyZWFrO2Nhc2UgYy5CQzppPVt0LXIuZ2V0KHUpLzIsbi1yLmdldChhKV07YnJlYWs7Y2FzZSBjLkxDOmk9W3Qsbi1yLmdldChhKS8yXTticmVhaztjYXNlIGMuUkM6aT1bdC1yLmdldCh1KSxuLXIuZ2V0KGEpLzJdO2JyZWFrO2Nhc2UgYy5DQzppPVt0LXIuZ2V0KHUpLzIsbi1yLmdldChhKS8yXTticmVhaztkZWZhdWx0On1pJiZ0aGlzLm1vdmUoaSl9LF9nZXRSZWdpb246ZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuIHQ/KHQ9ZS5Ob2RlLm9uZSh0KSx0JiYobj10LmdldChmKSkpOm49dGhpcy5fcG9zTm9kZS5nZXQobCksbn0sX2FmdGVyQWxpZ25DaGFuZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5uZXdWYWw7dCYmdGhpcy5fdWlTZXRBbGlnbih0Lm5vZGUsdC5wb2ludHMpfSxfYWZ0ZXJBbGlnbk9uQ2hhbmdlOmZ1bmN0aW9uKGUpe3RoaXMuX2RldGFjaFBvc0FsaWduVUlIYW5kbGVzKCksdGhpcy5nZXQocykmJnRoaXMuX2F0dGFjaFBvc0FsaWduVUlIYW5kbGVzKCl9fSxlLldpZGdldFBvc2l0aW9uQWxpZ249Y30sIjMuMTcuMiIse3JlcXVpcmVzOlsid2lkZ2V0LXBvc2l0aW9uIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoImF1dG9jb21wbGV0ZS1saXN0IixmdW5jdGlvbihlLHQpe3ZhciBuPWUuTGFuZyxyPWUuTm9kZSxpPWUuQXJyYXkscz1lLlVBLmllJiZlLlVBLmllPDcsbz05LHU9Il9DTEFTU19JVEVNIixhPSJfQ0xBU1NfSVRFTV9BQ1RJVkUiLGY9Il9DTEFTU19JVEVNX0hPVkVSIixsPSJfU0VMRUNUT1JfSVRFTSIsYz0iYWN0aXZlSXRlbSIsaD0iYWx3YXlzU2hvd0xpc3QiLHA9ImNpcmN1bGFyIixkPSJob3ZlcmVkSXRlbSIsdj0iaWQiLG09Iml0ZW0iLGc9Imxpc3QiLHk9InJlc3VsdCIsYj0icmVzdWx0cyIsdz0idmlzaWJsZSIsRT0id2lkdGgiLFM9InNlbGVjdCIseD1lLkJhc2UuY3JlYXRlKCJhdXRvY29tcGxldGVMaXN0IixlLldpZGdldCxbZS5BdXRvQ29tcGxldGVCYXNlLGUuV2lkZ2V0UG9zaXRpb24sZS5XaWRnZXRQb3NpdGlvbkFsaWduXSx7QVJJQV9URU1QTEFURToiPGRpdi8+IixJVEVNX1RFTVBMQVRFOiI8bGkvPiIsTElTVF9URU1QTEFURToiPHVsLz4iLFVJX0VWRU5UUzpmdW5jdGlvbigpe3ZhciB0PWUubWVyZ2UoZS5Ob2RlLkRPTV9FVkVOVFMpO3JldHVybiBkZWxldGUgdC52YWx1ZWNoYW5nZSxkZWxldGUgdC52YWx1ZUNoYW5nZSx0fSgpLGluaXRpYWxpemVyOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXQoImlucHV0Tm9kZSIpO2lmKCF0KXtlLmVycm9yKCJObyBpbnB1dE5vZGUgc3BlY2lmaWVkLiIpO3JldHVybn10aGlzLl9pbnB1dE5vZGU9dCx0aGlzLl9saXN0RXZlbnRzPVtdLHRoaXMuREVGX1BBUkVOVF9OT0RFPXQuZ2V0KCJwYXJlbnROb2RlIiksdGhpc1t1XT10aGlzLmdldENsYXNzTmFtZShtKSx0aGlzW2FdPXRoaXMuZ2V0Q2xhc3NOYW1lKG0sImFjdGl2ZSIpLHRoaXNbZl09dGhpcy5nZXRDbGFzc05hbWUobSwiaG92ZXIiKSx0aGlzW2xdPSIuIit0aGlzW3VdLHRoaXMucHVibGlzaChTLHtkZWZhdWx0Rm46dGhpcy5fZGVmU2VsZWN0Rm59KX0sZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3doaWxlKHRoaXMuX2xpc3RFdmVudHMubGVuZ3RoKXRoaXMuX2xpc3RFdmVudHMucG9wKCkuZGV0YWNoKCk7dGhpcy5fYXJpYU5vZGUmJnRoaXMuX2FyaWFOb2RlLnJlbW92ZSgpLmRlc3Ryb3koITApfSxiaW5kVUk6ZnVuY3Rpb24oKXt0aGlzLl9iaW5kSW5wdXQoKSx0aGlzLl9iaW5kTGlzdCgpfSxyZW5kZXJVSTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NyZWF0ZUFyaWFOb2RlKCksbj10aGlzLmdldCgiYm91bmRpbmdCb3giKSxyPXRoaXMuZ2V0KCJjb250ZW50Qm94IiksaT10aGlzLl9pbnB1dE5vZGUsbz10aGlzLl9jcmVhdGVMaXN0Tm9kZSgpLHU9aS5nZXQoInBhcmVudE5vZGUiKTtpLmFkZENsYXNzKHRoaXMuZ2V0Q2xhc3NOYW1lKCJpbnB1dCIpKS5zZXRBdHRycyh7ImFyaWEtYXV0b2NvbXBsZXRlIjpnLCJhcmlhLWV4cGFuZGVkIjohMSwiYXJpYS1vd25zIjpvLmdldCgiaWQiKX0pLHUuYXBwZW5kKHQpLHMmJm4ucGx1ZyhlLlBsdWdpbi5TaGltKSx0aGlzLl9hcmlhTm9kZT10LHRoaXMuX2JvdW5kaW5nQm94PW4sdGhpcy5fY29udGVudEJveD1yLHRoaXMuX2xpc3ROb2RlPW8sdGhpcy5fcGFyZW50Tm9kZT11fSxzeW5jVUk6ZnVuY3Rpb24oKXt0aGlzLl9zeW5jUmVzdWx0cygpLHRoaXMuX3N5bmNWaXNpYmlsaXR5KCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQoaCk/dGhpczp0aGlzLnNldCh3LCExKX0sc2VsZWN0SXRlbTpmdW5jdGlvbihlLHQpe2lmKGUpe2lmKCFlLmhhc0NsYXNzKHRoaXNbdV0pKXJldHVybiB0aGlzfWVsc2V7ZT10aGlzLmdldChjKTtpZighZSlyZXR1cm4gdGhpc31yZXR1cm4gdGhpcy5maXJlKFMse2l0ZW1Ob2RlOmUsb3JpZ2luRXZlbnQ6dHx8bnVsbCxyZXN1bHQ6ZS5nZXREYXRhKHkpfSksdGhpc30sX2FjdGl2YXRlTmV4dEl0ZW06ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldChjKSx0O3JldHVybiBlP3Q9ZS5uZXh0KHRoaXNbbF0pfHwodGhpcy5nZXQocCk/bnVsbDplKTp0PXRoaXMuX2dldEZpcnN0SXRlbU5vZGUoKSx0aGlzLnNldChjLHQpLHRoaXN9LF9hY3RpdmF0ZVByZXZJdGVtOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXQoYyksdD1lP2UucHJldmlvdXModGhpc1tsXSk6dGhpcy5nZXQocCkmJnRoaXMuX2dldExhc3RJdGVtTm9kZSgpO3JldHVybiB0aGlzLnNldChjLHR8fG51bGwpLHRoaXN9LF9hZGQ6ZnVuY3Rpb24odCl7dmFyIHI9W107cmV0dXJuIGkuZWFjaChuLmlzQXJyYXkodCk/dDpbdF0sZnVuY3Rpb24oZSl7ci5wdXNoKHRoaXMuX2NyZWF0ZUl0ZW1Ob2RlKGUpLnNldERhdGEoeSxlKSl9LHRoaXMpLHI9ZS5hbGwociksdGhpcy5fbGlzdE5vZGUuYXBwZW5kKHIudG9GcmFnKCkpLHJ9LF9hcmlhU2F5OmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5nZXQoInN0cmluZ3MuIitlKTt0aGlzLl9hcmlhTm9kZS5zZXQoInRleHQiLHQ/bi5zdWIocix0KTpyKX0sX2JpbmRJbnB1dDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2lucHV0Tm9kZSx0LG4scjt0aGlzLmdldCgiYWxpZ24iKT09PW51bGwmJihyPXRoaXMuZ2V0KCJ0b2tlbklucHV0IiksdD1yJiZyLmdldCgiYm91bmRpbmdCb3giKXx8ZSx0aGlzLnNldCgiYWxpZ24iLHtub2RlOnQscG9pbnRzOlsidGwiLCJibCJdfSksIXRoaXMuZ2V0KEUpJiYobj10LmdldCgib2Zmc2V0V2lkdGgiKSkmJnRoaXMuc2V0KEUsbikpLHRoaXMuX2xpc3RFdmVudHM9dGhpcy5fbGlzdEV2ZW50cy5jb25jYXQoW2UuYWZ0ZXIoImJsdXIiLHRoaXMuX2FmdGVyTGlzdElucHV0Qmx1cix0aGlzKSxlLmFmdGVyKCJmb2N1cyIsdGhpcy5fYWZ0ZXJMaXN0SW5wdXRGb2N1cyx0aGlzKV0pfSxfYmluZExpc3Q6ZnVuY3Rpb24oKXt0aGlzLl9saXN0RXZlbnRzPXRoaXMuX2xpc3RFdmVudHMuY29uY2F0KFtlLm9uZSgiZG9jIikuYWZ0ZXIoImNsaWNrIix0aGlzLl9hZnRlckRvY0NsaWNrLHRoaXMpLGUub25lKCJ3aW4iKS5hZnRlcigid2luZG93cmVzaXplIix0aGlzLl9zeW5jUG9zaXRpb24sdGhpcyksdGhpcy5hZnRlcih7bW91c2VvdmVyOnRoaXMuX2FmdGVyTW91c2VPdmVyLG1vdXNlb3V0OnRoaXMuX2FmdGVyTW91c2VPdXQsYWN0aXZlSXRlbUNoYW5nZTp0aGlzLl9hZnRlckFjdGl2ZUl0ZW1DaGFuZ2UsYWx3YXlzU2hvd0xpc3RDaGFuZ2U6dGhpcy5fYWZ0ZXJBbHdheXNTaG93TGlzdENoYW5nZSxob3ZlcmVkSXRlbUNoYW5nZTp0aGlzLl9hZnRlckhvdmVyZWRJdGVtQ2hhbmdlLHJlc3VsdHNDaGFuZ2U6dGhpcy5fYWZ0ZXJSZXN1bHRzQ2hhbmdlLHZpc2libGVDaGFuZ2U6dGhpcy5fYWZ0ZXJWaXNpYmxlQ2hhbmdlfSksdGhpcy5fbGlzdE5vZGUuZGVsZWdhdGUoImNsaWNrIix0aGlzLl9vbkl0ZW1DbGljayx0aGlzW2xdLHRoaXMpXSl9LF9jbGVhcjpmdW5jdGlvbigpe3RoaXMuc2V0KGMsbnVsbCksdGhpcy5fc2V0KGQsbnVsbCksdGhpcy5fbGlzdE5vZGUuZ2V0KCJjaGlsZHJlbiIpLnJlbW92ZSghMCl9LF9jcmVhdGVBcmlhTm9kZTpmdW5jdGlvbigpe3ZhciBlPXIuY3JlYXRlKHRoaXMuQVJJQV9URU1QTEFURSk7cmV0dXJuIGUuYWRkQ2xhc3ModGhpcy5nZXRDbGFzc05hbWUoImFyaWEiKSkuc2V0QXR0cnMoeyJhcmlhLWxpdmUiOiJwb2xpdGUiLHJvbGU6InN0YXR1cyJ9KX0sX2NyZWF0ZUl0ZW1Ob2RlOmZ1bmN0aW9uKHQpe3ZhciBuPXIuY3JlYXRlKHRoaXMuSVRFTV9URU1QTEFURSk7cmV0dXJuIG4uYWRkQ2xhc3ModGhpc1t1XSkuc2V0QXR0cnMoe2lkOmUuc3RhbXAobikscm9sZToib3B0aW9uIn0pLnNldEF0dHJpYnV0ZSgiZGF0YS10ZXh0Iix0LnRleHQpLmFwcGVuZCh0LmRpc3BsYXkpfSxfY3JlYXRlTGlzdE5vZGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldCgibGlzdE5vZGUiKXx8ci5jcmVhdGUodGhpcy5MSVNUX1RFTVBMQVRFKTtyZXR1cm4gdC5hZGRDbGFzcyh0aGlzLmdldENsYXNzTmFtZShnKSkuc2V0QXR0cnMoe2lkOmUuc3RhbXAodCkscm9sZToibGlzdGJveCJ9KSx0aGlzLl9zZXQoImxpc3ROb2RlIix0KSx0aGlzLmdldCgiY29udGVudEJveCIpLmFwcGVuZCh0KSx0fSxfZ2V0Rmlyc3RJdGVtTm9kZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9saXN0Tm9kZS5vbmUodGhpc1tsXSl9LF9nZXRMYXN0SXRlbU5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGlzdE5vZGUub25lKHRoaXNbbF0rIjpsYXN0LWNoaWxkIil9LF9zeW5jUG9zaXRpb246ZnVuY3Rpb24oKXt0aGlzLl9zeW5jVUlQb3NBbGlnbigpLHRoaXMuX3N5bmNTaGltKCl9LF9zeW5jUmVzdWx0czpmdW5jdGlvbihlKXtlfHwoZT10aGlzLmdldChiKSksdGhpcy5fY2xlYXIoKSxlLmxlbmd0aCYmKHRoaXMuX2FkZChlKSx0aGlzLl9hcmlhU2F5KCJpdGVtc19hdmFpbGFibGUiKSksdGhpcy5fc3luY1Bvc2l0aW9uKCksdGhpcy5nZXQoImFjdGl2YXRlRmlyc3RJdGVtIikmJiF0aGlzLmdldChjKSYmdGhpcy5zZXQoYyx0aGlzLl9nZXRGaXJzdEl0ZW1Ob2RlKCkpfSxfc3luY1NoaW06cz9mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2JvdW5kaW5nQm94LnNoaW07ZSYmZS5zeW5jKCl9OmZ1bmN0aW9uKCl7fSxfc3luY1Zpc2liaWxpdHk6ZnVuY3Rpb24odCl7dGhpcy5nZXQoaCkmJih0PSEwLHRoaXMuc2V0KHcsdCkpLHR5cGVvZiB0PT0idW5kZWZpbmVkIiYmKHQ9dGhpcy5nZXQodykpLHRoaXMuX2lucHV0Tm9kZS5zZXQoImFyaWEtZXhwYW5kZWQiLHQpLHRoaXMuX2JvdW5kaW5nQm94LnNldCgiYXJpYS1oaWRkZW4iLCF0KSx0P3RoaXMuX3N5bmNQb3NpdGlvbigpOih0aGlzLnNldChjLG51bGwpLHRoaXMuX3NldChkLG51bGwpLHRoaXMuX2JvdW5kaW5nQm94LmdldCgib2Zmc2V0V2lkdGgiKSksZS5VQS5pZT09PTcmJmUub25lKCJib2R5IikuYWRkQ2xhc3MoInl1aTMtaWU3LXN1Y2tzIikucmVtb3ZlQ2xhc3MoInl1aTMtaWU3LXN1Y2tzIil9LF9hZnRlckFjdGl2ZUl0ZW1DaGFuZ2U6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5faW5wdXROb2RlLHI9dC5uZXdWYWwsaT10LnByZXZWYWwscztpJiZpLl9ub2RlJiZpLnJlbW92ZUNsYXNzKHRoaXNbYV0pLHI/KHIuYWRkQ2xhc3ModGhpc1thXSksbi5zZXQoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsci5nZXQodikpKTpuLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1hY3RpdmVkZXNjZW5kYW50IiksdGhpcy5nZXQoInNjcm9sbEludG9WaWV3IikmJihzPXJ8fG4sKCFzLmluUmVnaW9uKGUuRE9NLnZpZXdwb3J0UmVnaW9uKCksITApfHwhcy5pblJlZ2lvbih0aGlzLl9jb250ZW50Qm94LCEwKSkmJnMuc2Nyb2xsSW50b1ZpZXcoKSl9LF9hZnRlckFsd2F5c1Nob3dMaXN0Q2hhbmdlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0KHcsZS5uZXdWYWx8fHRoaXMuZ2V0KGIpLmxlbmd0aD4wKX0sX2FmdGVyRG9jQ2xpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fYm91bmRpbmdCb3gsbj1lLnRhcmdldDtuIT09dGhpcy5faW5wdXROb2RlJiZuIT09dCYmIW4uYW5jZXN0b3IoIiMiK3QuZ2V0KCJpZCIpLCEwKSYmdGhpcy5oaWRlKCl9LF9hZnRlckhvdmVyZWRJdGVtQ2hhbmdlOmZ1bmN0aW9uKGUpe3ZhciB0PWUubmV3VmFsLG49ZS5wcmV2VmFsO24mJm4ucmVtb3ZlQ2xhc3ModGhpc1tmXSksdCYmdC5hZGRDbGFzcyh0aGlzW2ZdKX0sX2FmdGVyTGlzdElucHV0Qmx1cjpmdW5jdGlvbigpe3RoaXMuX2xpc3RJbnB1dEZvY3VzZWQ9ITEsdGhpcy5nZXQodykmJiF0aGlzLl9tb3VzZU92ZXJMaXN0JiYodGhpcy5fbGFzdElucHV0S2V5IT09b3x8IXRoaXMuZ2V0KCJ0YWJTZWxlY3QiKXx8IXRoaXMuZ2V0KGMpKSYmdGhpcy5oaWRlKCl9LF9hZnRlckxpc3RJbnB1dEZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5fbGlzdElucHV0Rm9jdXNlZD0hMH0sX2FmdGVyTW91c2VPdmVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZG9tRXZlbnQudGFyZ2V0LmFuY2VzdG9yKHRoaXNbbF0sITApO3RoaXMuX21vdXNlT3Zlckxpc3Q9ITAsdCYmdGhpcy5fc2V0KGQsdCl9LF9hZnRlck1vdXNlT3V0OmZ1bmN0aW9uKCl7dGhpcy5fbW91c2VPdmVyTGlzdD0hMSx0aGlzLl9zZXQoZCxudWxsKX0sX2FmdGVyUmVzdWx0c0NoYW5nZTpmdW5jdGlvbihlKXt0aGlzLl9zeW5jUmVzdWx0cyhlLm5ld1ZhbAopLHRoaXMuZ2V0KGgpfHx0aGlzLnNldCh3LCEhZS5uZXdWYWwubGVuZ3RoKX0sX2FmdGVyVmlzaWJsZUNoYW5nZTpmdW5jdGlvbihlKXt0aGlzLl9zeW5jVmlzaWJpbGl0eSghIWUubmV3VmFsKX0sX29uSXRlbUNsaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PWUuY3VycmVudFRhcmdldDt0aGlzLnNldChjLHQpLHRoaXMuc2VsZWN0SXRlbSh0LGUpfSxfZGVmU2VsZWN0Rm46ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXN1bHQudGV4dDt0aGlzLl9pbnB1dE5vZGUuZm9jdXMoKSx0aGlzLl91cGRhdGVWYWx1ZSh0KSx0aGlzLl9hcmlhU2F5KCJpdGVtX3NlbGVjdGVkIix7aXRlbTp0fSksdGhpcy5oaWRlKCl9fSx7QVRUUlM6e2FjdGl2YXRlRmlyc3RJdGVtOnt2YWx1ZTohMX0sYWN0aXZlSXRlbTp7c2V0dGVyOmUub25lLHZhbHVlOm51bGx9LGFsd2F5c1Nob3dMaXN0Ont2YWx1ZTohMX0sY2lyY3VsYXI6e3ZhbHVlOiEwfSxob3ZlcmVkSXRlbTp7cmVhZE9ubHk6ITAsdmFsdWU6bnVsbH0sbGlzdE5vZGU6e3dyaXRlT25jZToiaW5pdE9ubHkiLHZhbHVlOm51bGx9LHNjcm9sbEludG9WaWV3Ont2YWx1ZTohMX0sc3RyaW5nczp7dmFsdWVGbjpmdW5jdGlvbigpe3JldHVybiBlLkludGwuZ2V0KCJhdXRvY29tcGxldGUtbGlzdCIpfX0sdGFiU2VsZWN0Ont2YWx1ZTohMH0sdmlzaWJsZTp7dmFsdWU6ITF9fSxDU1NfUFJFRklYOmUuQ2xhc3NOYW1lTWFuYWdlci5nZXRDbGFzc05hbWUoImFjbGlzdCIpfSk7ZS5BdXRvQ29tcGxldGVMaXN0PXgsZS5BdXRvQ29tcGxldGU9eH0sIjMuMTcuMiIse2xhbmc6WyJlbiIsImVzIiwiaHUiLCJpdCJdLHJlcXVpcmVzOlsiYXV0b2NvbXBsZXRlLWJhc2UiLCJldmVudC1yZXNpemUiLCJub2RlLXNjcmVlbiIsInNlbGVjdG9yLWNzczMiLCJzaGltLXBsdWdpbiIsIndpZGdldCIsIndpZGdldC1wb3NpdGlvbiIsIndpZGdldC1wb3NpdGlvbi1hbGlnbiJdLHNraW5uYWJsZTohMH0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgiYXV0b2NvbXBsZXRlLWxpc3Qta2V5cyIsZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiB1KCl7ZS5iZWZvcmUodGhpcy5fYmluZEtleXMsdGhpcywiYmluZFVJIiksdGhpcy5faW5pdEtleXMoKX12YXIgbj00MCxyPTEzLGk9Mjcscz05LG89Mzg7dS5wcm90b3R5cGU9e19pbml0S2V5czpmdW5jdGlvbigpe3ZhciBlPXt9LHQ9e307ZVtuXT10aGlzLl9rZXlEb3duLHRbcl09dGhpcy5fa2V5RW50ZXIsdFtpXT10aGlzLl9rZXlFc2MsdFtzXT10aGlzLl9rZXlUYWIsdFtvXT10aGlzLl9rZXlVcCx0aGlzLl9rZXlzPWUsdGhpcy5fa2V5c1Zpc2libGU9dH0sZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3RoaXMuX3VuYmluZEtleXMoKX0sX2JpbmRLZXlzOmZ1bmN0aW9uKCl7dGhpcy5fa2V5RXZlbnRzPXRoaXMuX2lucHV0Tm9kZS5vbigia2V5ZG93biIsdGhpcy5fb25JbnB1dEtleSx0aGlzKX0sX3VuYmluZEtleXM6ZnVuY3Rpb24oKXt0aGlzLl9rZXlFdmVudHMmJnRoaXMuX2tleUV2ZW50cy5kZXRhY2goKSx0aGlzLl9rZXlFdmVudHM9bnVsbH0sX2tleURvd246ZnVuY3Rpb24oKXt0aGlzLmdldCgidmlzaWJsZSIpP3RoaXMuX2FjdGl2YXRlTmV4dEl0ZW0oKTp0aGlzLnNob3coKX0sX2tleUVudGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0KCJhY3RpdmVJdGVtIik7aWYoIXQpcmV0dXJuITE7dGhpcy5zZWxlY3RJdGVtKHQsZSl9LF9rZXlFc2M6ZnVuY3Rpb24oKXt0aGlzLmhpZGUoKX0sX2tleVRhYjpmdW5jdGlvbihlKXt2YXIgdDtpZih0aGlzLmdldCgidGFiU2VsZWN0Iikpe3Q9dGhpcy5nZXQoImFjdGl2ZUl0ZW0iKTtpZih0KXJldHVybiB0aGlzLnNlbGVjdEl0ZW0odCxlKSwhMH1yZXR1cm4hMX0sX2tleVVwOmZ1bmN0aW9uKCl7dGhpcy5fYWN0aXZhdGVQcmV2SXRlbSgpfSxfb25JbnB1dEtleTpmdW5jdGlvbihlKXt2YXIgdCxuPWUua2V5Q29kZTt0aGlzLl9sYXN0SW5wdXRLZXk9bix0aGlzLmdldCgicmVzdWx0cyIpLmxlbmd0aCYmKHQ9dGhpcy5fa2V5c1tuXSwhdCYmdGhpcy5nZXQoInZpc2libGUiKSYmKHQ9dGhpcy5fa2V5c1Zpc2libGVbbl0pLHQmJnQuY2FsbCh0aGlzLGUpIT09ITEmJmUucHJldmVudERlZmF1bHQoKSl9fSxlLkJhc2UubWl4KGUuQXV0b0NvbXBsZXRlTGlzdCxbdV0pfSwiMy4xNy4yIix7cmVxdWlyZXM6WyJhdXRvY29tcGxldGUtbGlzdCIsImJhc2UtYnVpbGQiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgiYXV0b2NvbXBsZXRlLXBsdWdpbiIsZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiByKGUpe2UuaW5wdXROb2RlPWUuaG9zdCwhZS5yZW5kZXImJmUucmVuZGVyIT09ITEmJihlLnJlbmRlcj0hMCksci5zdXBlcmNsYXNzLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgbj1lLlBsdWdpbjtlLmV4dGVuZChyLGUuQXV0b0NvbXBsZXRlTGlzdCx7fSx7TkFNRToiYXV0b2NvbXBsZXRlTGlzdFBsdWdpbiIsTlM6ImFjIixDU1NfUFJFRklYOmUuQ2xhc3NOYW1lTWFuYWdlci5nZXRDbGFzc05hbWUoImFjbGlzdCIpfSksbi5BdXRvQ29tcGxldGU9cixuLkF1dG9Db21wbGV0ZUxpc3Q9cn0sIjMuMTcuMiIse3JlcXVpcmVzOlsiYXV0b2NvbXBsZXRlLWxpc3QiLCJub2RlLXBsdWdpbmhvc3QiXX0pOwovKgpZVUkgMy4xNy4yIChidWlsZCA5YzNjNzhlKQpDb3B5cmlnaHQgMjAxNCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpMaWNlbnNlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2UuCmh0dHA6Ly95dWlsaWJyYXJ5LmNvbS9saWNlbnNlLwoqLwoKWVVJLmFkZCgidGV4dC1kYXRhLXdvcmRicmVhayIsZnVuY3Rpb24oZSx0KXtlLm5hbWVzcGFjZSgiVGV4dC5EYXRhIikuV29yZEJyZWFrPXthbGV0dGVyOiJbQS1aYS16XHUwMGFhXHUwMGI1XHUwMGJhXHUwMGMwLVx1MDBkNlx1MDBkOC1cdTAwZjZcdTAwZjgtXHUwMmMxXHUwMmM2LVx1MDJkMVx1MDJlMC1cdTAyZTRcdTAyZWNcdTAyZWVcdTAzNzAtXHUwMzc0XHUwMzc2XHUwMzc3XHUwMzdhLVx1MDM3ZFx1MDM4Nlx1MDM4OC1cdTAzOGFcdTAzOGNcdTAzOGUtXHUwM2ExXHUwM2EzLVx1MDNmNVx1MDNmNy1cdTA0ODFcdTA0OGEtXHUwNTI3XHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1cdTA1ODdcdTA1ZDAtXHUwNWVhXHUwNWYwLVx1MDVmM1x1MDYyMC1cdTA2NGFcdTA2NmVcdTA2NmZcdTA2NzEtXHUwNmQzXHUwNmQ1XHUwNmU1XHUwNmU2XHUwNmVlXHUwNmVmXHUwNmZhLVx1MDZmY1x1MDZmZlx1MDcxMFx1MDcxMi1cdTA3MmZcdTA3NGQtXHUwN2E1XHUwN2IxXHUwN2NhLVx1MDdlYVx1MDdmNFx1MDdmNVx1MDdmYVx1MDgwMC1cdTA4MTVcdTA4MWFcdTA4MjRcdTA4MjhcdTA4NDAtXHUwODU4XHUwOTA0LVx1MDkzOVx1MDkzZFx1MDk1MFx1MDk1OC1cdTA5NjFcdTA5NzEtXHUwOTc3XHUwOTc5LVx1MDk3Zlx1MDk4NS1cdTA5OGNcdTA5OGZcdTA5OTBcdTA5OTMtXHUwOWE4XHUwOWFhLVx1MDliMFx1MDliMlx1MDliNi1cdTA5YjlcdTA5YmRcdTA5Y2VcdTA5ZGNcdTA5ZGRcdTA5ZGYtXHUwOWUxXHUwOWYwXHUwOWYxXHUwYTA1LVx1MGEwYVx1MGEwZlx1MGExMFx1MGExMy1cdTBhMjhcdTBhMmEtXHUwYTMwXHUwYTMyXHUwYTMzXHUwYTM1XHUwYTM2XHUwYTM4XHUwYTM5XHUwYTU5LVx1MGE1Y1x1MGE1ZVx1MGE3Mi1cdTBhNzRcdTBhODUtXHUwYThkXHUwYThmLVx1MGE5MVx1MGE5My1cdTBhYThcdTBhYWEtXHUwYWIwXHUwYWIyXHUwYWIzXHUwYWI1LVx1MGFiOVx1MGFiZFx1MGFkMFx1MGFlMFx1MGFlMVx1MGIwNS1cdTBiMGNcdTBiMGZcdTBiMTBcdTBiMTMtXHUwYjI4XHUwYjJhLVx1MGIzMFx1MGIzMlx1MGIzM1x1MGIzNS1cdTBiMzlcdTBiM2RcdTBiNWNcdTBiNWRcdTBiNWYtXHUwYjYxXHUwYjcxXHUwYjgzXHUwYjg1LVx1MGI4YVx1MGI4ZS1cdTBiOTBcdTBiOTItXHUwYjk1XHUwYjk5XHUwYjlhXHUwYjljXHUwYjllXHUwYjlmXHUwYmEzXHUwYmE0XHUwYmE4LVx1MGJhYVx1MGJhZS1cdTBiYjlcdTBiZDBcdTBjMDUtXHUwYzBjXHUwYzBlLVx1MGMxMFx1MGMxMi1cdTBjMjhcdTBjMmEtXHUwYzMzXHUwYzM1LVx1MGMzOVx1MGMzZFx1MGM1OFx1MGM1OVx1MGM2MFx1MGM2MVx1MGM4NS1cdTBjOGNcdTBjOGUtXHUwYzkwXHUwYzkyLVx1MGNhOFx1MGNhYS1cdTBjYjNcdTBjYjUtXHUwY2I5XHUwY2JkXHUwY2RlXHUwY2UwXHUwY2UxXHUwY2YxXHUwY2YyXHUwZDA1LVx1MGQwY1x1MGQwZS1cdTBkMTBcdTBkMTItXHUwZDNhXHUwZDNkXHUwZDRlXHUwZDYwXHUwZDYxXHUwZDdhLVx1MGQ3Zlx1MGQ4NS1cdTBkOTZcdTBkOWEtXHUwZGIxXHUwZGIzLVx1MGRiYlx1MGRiZFx1MGRjMC1cdTBkYzZcdTBmMDBcdTBmNDAtXHUwZjQ3XHUwZjQ5LVx1MGY2Y1x1MGY4OC1cdTBmOGNcdTEwYTAtXHUxMGM1XHUxMGQwLVx1MTBmYVx1MTBmY1x1MTEwMC1cdTEyNDhcdTEyNGEtXHUxMjRkXHUxMjUwLVx1MTI1Nlx1MTI1OFx1MTI1YS1cdTEyNWRcdTEyNjAtXHUxMjg4XHUxMjhhLVx1MTI4ZFx1MTI5MC1cdTEyYjBcdTEyYjItXHUxMmI1XHUxMmI4LVx1MTJiZVx1MTJjMFx1MTJjMi1cdTEyYzVcdTEyYzgtXHUxMmQ2XHUxMmQ4LVx1MTMxMFx1MTMxMi1cdTEzMTVcdTEzMTgtXHUxMzVhXHUxMzgwLVx1MTM4Zlx1MTNhMC1cdTEzZjRcdTE0MDEtXHUxNjZjXHUxNjZmLVx1MTY3Zlx1MTY4MS1cdTE2OWFcdTE2YTAtXHUxNmVhXHUxNmVlLVx1MTZmMFx1MTcwMC1cdTE3MGNcdTE3MGUtXHUxNzExXHUxNzIwLVx1MTczMVx1MTc0MC1cdTE3NTFcdTE3NjAtXHUxNzZjXHUxNzZlLVx1MTc3MFx1MTgyMC1cdTE4NzdcdTE4ODAtXHUxOGE4XHUxOGFhXHUxOGIwLVx1MThmNVx1MTkwMC1cdTE5MWNcdTFhMDAtXHUxYTE2XHUxYjA1LVx1MWIzM1x1MWI0NS1cdTFiNGJcdTFiODMtXHUxYmEwXHUxYmFlXHUxYmFmXHUxYmMwLVx1MWJlNVx1MWMwMC1cdTFjMjNcdTFjNGQtXHUxYzRmXHUxYzVhLVx1MWM3ZFx1MWNlOS1cdTFjZWNcdTFjZWUtXHUxY2YxXHUxZDAwLVx1MWRiZlx1MWUwMC1cdTFmMTVcdTFmMTgtXHUxZjFkXHUxZjIwLVx1MWY0NVx1MWY0OC1cdTFmNGRcdTFmNTAtXHUxZjU3XHUxZjU5XHUxZjViXHUxZjVkXHUxZjVmLVx1MWY3ZFx1MWY4MC1cdTFmYjRcdTFmYjYtXHUxZmJjXHUxZmJlXHUxZmMyLVx1MWZjNFx1MWZjNi1cdTFmY2NcdTFmZDAtXHUxZmQzXHUxZmQ2LVx1MWZkYlx1MWZlMC1cdTFmZWNcdTFmZjItXHUxZmY0XHUxZmY2LVx1MWZmY1x1MjA3MVx1MjA3Zlx1MjA5MC1cdTIwOWNcdTIxMDJcdTIxMDdcdTIxMGEtXHUyMTEzXHUyMTE1XHUyMTE5LVx1MjExZFx1MjEyNFx1MjEyNlx1MjEyOFx1MjEyYS1cdTIxMmRcdTIxMmYtXHUyMTM5XHUyMTNjLVx1MjEzZlx1MjE0NS1cdTIxNDlcdTIxNGVcdTIxNjAtXHUyMTg4XHUyNGI2LVx1MjRlOVx1MmMwMC1cdTJjMmVcdTJjMzAtXHUyYzVlXHUyYzYwLVx1MmNlNFx1MmNlYi1cdTJjZWVcdTJkMDAtXHUyZDI1XHUyZDMwLVx1MmQ2NVx1MmQ2Zlx1MmQ4MC1cdTJkOTZcdTJkYTAtXHUyZGE2XHUyZGE4LVx1MmRhZVx1MmRiMC1cdTJkYjZcdTJkYjgtXHUyZGJlXHUyZGMwLVx1MmRjNlx1MmRjOC1cdTJkY2VcdTJkZDAtXHUyZGQ2XHUyZGQ4LVx1MmRkZVx1MmUyZlx1MzAwNVx1MzAzYlx1MzAzY1x1MzEwNS1cdTMxMmRcdTMxMzEtXHUzMThlXHUzMWEwLVx1MzFiYVx1YTAwMC1cdWE0OGNcdWE0ZDAtXHVhNGZkXHVhNTAwLVx1YTYwY1x1YTYxMC1cdWE2MWZcdWE2MmFcdWE2MmJcdWE2NDAtXHVhNjZlXHVhNjdmLVx1YTY5N1x1YTZhMC1cdWE2ZWZcdWE3MTctXHVhNzFmXHVhNzIyLVx1YTc4OFx1YTc4Yi1cdWE3OGVcdWE3OTBcdWE3OTFcdWE3YTAtXHVhN2E5XHVhN2ZhLVx1YTgwMVx1YTgwMy1cdWE4MDVcdWE4MDctXHVhODBhXHVhODBjLVx1YTgyMlx1YTg0MC1cdWE4NzNcdWE4ODItXHVhOGIzXHVhOGYyLVx1YThmN1x1YThmYlx1YTkwYS1cdWE5MjVcdWE5MzAtXHVhOTQ2XHVhOTYwLVx1YTk3Y1x1YTk4NC1cdWE5YjJcdWE5Y2ZcdWFhMDAtXHVhYTI4XHVhYTQwLVx1YWE0Mlx1YWE0NC1cdWFhNGJcdWFiMDEtXHVhYjA2XHVhYjA5LVx1YWIwZVx1YWIxMS1cdWFiMTZcdWFiMjAtXHVhYjI2XHVhYjI4LVx1YWIyZVx1YWJjMC1cdWFiZTJcdWFjMDAtXHVkN2EzXHVkN2IwLVx1ZDdjNlx1ZDdjYi1cdWQ3ZmJcdWZiMDAtXHVmYjA2XHVmYjEzLVx1ZmIxN1x1ZmIxZFx1ZmIxZi1cdWZiMjhcdWZiMmEtXHVmYjM2XHVmYjM4LVx1ZmIzY1x1ZmIzZVx1ZmI0MFx1ZmI0MVx1ZmI0M1x1ZmI0NFx1ZmI0Ni1cdWZiYjFcdWZiZDMtXHVmZDNkXHVmZDUwLVx1ZmQ4Zlx1ZmQ5Mi1cdWZkYzdcdWZkZjAtXHVmZGZiXHVmZTcwLVx1ZmU3NFx1ZmU3Ni1cdWZlZmNcdWZmMjEtXHVmZjNhXHVmZjQxLVx1ZmY1YVx1ZmZhMC1cdWZmYmVcdWZmYzItXHVmZmM3XHVmZmNhLVx1ZmZjZlx1ZmZkMi1cdWZmZDdcdWZmZGEtXHVmZmRjXSIsbWlkbnVtbGV0OiJbJ1xcLlx1MjAxOFx1MjAxOVx1MjAyNFx1ZmU1Mlx1ZmYwN1x1ZmYwZV0iLG1pZGxldHRlcjoiWzpcdTAwYjdcdTAwYjdcdTA1ZjRcdTIwMjdcdWZlMTNcdWZlNTVcdWZmMWFdIixtaWRudW06IlssOztcdTA1ODlcdTA2MGNcdTA2MGRcdTA2NmNcdTA3ZjhcdTIwNDRcdWZlMTBcdWZlMTRcdWZlNTBcdWZlNTRcdWZmMGNcdWZmMWJdIixudW1lcmljOiJbMC05XHUwNjYwLVx1MDY2OVx1MDY2Ylx1MDZmMC1cdTA2ZjlcdTA3YzAtXHUwN2M5XHUwOTY2LVx1MDk2Zlx1MDllNi1cdTA5ZWZcdTBhNjYtXHUwYTZmXHUwYWU2LVx1MGFlZlx1MGI2Ni1cdTBiNmZcdTBiZTYtXHUwYmVmXHUwYzY2LVx1MGM2Zlx1MGNlNi1cdTBjZWZcdTBkNjYtXHUwZDZmXHUwZTUwLVx1MGU1OVx1MGVkMC1cdTBlZDlcdTBmMjAtXHUwZjI5XHUxMDQwLVx1MTA0OVx1MTA5MC1cdTEwOTlcdTE3ZTAtXHUxN2U5XHUxODEwLVx1MTgxOVx1MTk0Ni1cdTE5NGZcdTE5ZDAtXHUxOWQ5XHUxYTgwLVx1MWE4OVx1MWE5MC1cdTFhOTlcdTFiNTAtXHUxYjU5XHUxYmIwLVx1MWJiOVx1MWM0MC1cdTFjNDlcdTFjNTAtXHUxYzU5XHVhNjIwLVx1YTYyOVx1YThkMC1cdWE4ZDlcdWE5MDAtXHVhOTA5XHVhOWQwLVx1YTlkOVx1YWE1MC1cdWFhNTlcdWFiZjAtXHVhYmY5XSIsY3I6IlxcciIsbGY6IlxcbiIsbmV3bGluZToiWwtcZlx1MDA4NVx1MjAyOFx1MjAyOV0iLGV4dGVuZDoiW1x1MDMwMC1cdTAzNmZcdTA0ODMtXHUwNDg5XHUwNTkxLVx1MDViZFx1MDViZlx1MDVjMVx1MDVjMlx1MDVjNFx1MDVjNVx1MDVjN1x1MDYxMC1cdTA2MWFcdTA2NGItXHUwNjVmXHUwNjcwXHUwNmQ2LVx1MDZkY1x1MDZkZi1cdTA2ZTRcdTA2ZTdcdTA2ZThcdTA2ZWEtXHUwNmVkXHUwNzExXHUwNzMwLVx1MDc0YVx1MDdhNi1cdTA3YjBcdTA3ZWItXHUwN2YzXHUwODE2LVx1MDgxOVx1MDgxYi1cdTA4MjNcdTA4MjUtXHUwODI3XHUwODI5LVx1MDgyZFx1MDg1OS1cdTA4NWJcdTA5MDAtXHUwOTAzXHUwOTNhLVx1MDkzY1x1MDkzZS1cdTA5NGZcdTA5NTEtXHUwOTU3XHUwOTYyXHUwOTYzXHUwOTgxLVx1MDk4M1x1MDliY1x1MDliZS1cdTA5YzRcdTA5YzdcdTA5YzhcdTA5Y2ItXHUwOWNkXHUwOWQ3XHUwOWUyXHUwOWUzXHUwYTAxLVx1MGEwM1x1MGEzY1x1MGEzZS1cdTBhNDJcdTBhNDdcdTBhNDhcdTBhNGItXHUwYTRkXHUwYTUxXHUwYTcwXHUwYTcxXHUwYTc1XHUwYTgxLVx1MGE4M1x1MGFiY1x1MGFiZS1cdTBhYzVcdTBhYzctXHUwYWM5XHUwYWNiLVx1MGFjZFx1MGFlMlx1MGFlM1x1MGIwMS1cdTBiMDNcdTBiM2NcdTBiM2UtXHUwYjQ0XHUwYjQ3XHUwYjQ4XHUwYjRiLVx1MGI0ZFx1MGI1Nlx1MGI1N1x1MGI2Mlx1MGI2M1x1MGI4Mlx1MGJiZS1cdTBiYzJcdTBiYzYtXHUwYmM4XHUwYmNhLVx1MGJjZFx1MGJkN1x1MGMwMS1cdTBjMDNcdTBjM2UtXHUwYzQ0XHUwYzQ2LVx1MGM0OFx1MGM0YS1cdTBjNGRcdTBjNTVcdTBjNTZcdTBjNjJcdTBjNjNcdTBjODJcdTBjODNcdTBjYmNcdTBjYmUtXHUwY2M0XHUwY2M2LVx1MGNjOFx1MGNjYS1cdTBjY2RcdTBjZDVcdTBjZDZcdTBjZTJcdTBjZTNcdTBkMDJcdTBkMDNcdTBkM2UtXHUwZDQ0XHUwZDQ2LVx1MGQ0OFx1MGQ0YS1cdTBkNGRcdTBkNTdcdTBkNjJcdTBkNjNcdTBkODJcdTBkODNcdTBkY2FcdTBkY2YtXHUwZGQ0XHUwZGQ2XHUwZGQ4LVx1MGRkZlx1MGRmMlx1MGRmM1x1MGUzMVx1MGUzNC1cdTBlM2FcdTBlNDctXHUwZTRlXHUwZWIxXHUwZWI0LVx1MGViOVx1MGViYlx1MGViY1x1MGVjOC1cdTBlY2RcdTBmMThcdTBmMTlcdTBmMzVcdTBmMzdcdTBmMzlcdTBmM2VcdTBmM2ZcdTBmNzEtXHUwZjg0XHUwZjg2XHUwZjg3XHUwZjhkLVx1MGY5N1x1MGY5OS1cdTBmYmNcdTBmYzZcdTEwMmItXHUxMDNlXHUxMDU2LVx1MTA1OVx1MTA1ZS1cdTEwNjBcdTEwNjItXHUxMDY0XHUxMDY3LVx1MTA2ZFx1MTA3MS1cdTEwNzRcdTEwODItXHUxMDhkXHUxMDhmXHUxMDlhLVx1MTA5ZFx1MTM1ZC1cdTEzNWZcdTE3MTItXHUxNzE0XHUxNzMyLVx1MTczNFx1MTc1Mlx1MTc1M1x1MTc3Mlx1MTc3M1x1MTdiNi1cdTE3ZDNcdTE3ZGRcdTE4MGItXHUxODBkXHUxOGE5XHUxOTIwLVx1MTkyYlx1MTkzMC1cdTE5M2JcdTE5YjAtXHUxOWMwXHUxOWM4XHUxOWM5XHUxYTE3LVx1MWExYlx1MWE1NS1cdTFhNWVcdTFhNjAtXHUxYTdjXHUxYTdmXHUxYjAwLVx1MWIwNFx1MWIzNC1cdTFiNDRcdTFiNmItXHUxYjczXHUxYjgwLVx1MWI4Mlx1MWJhMS1cdTFiYWFcdTFiZTYtXHUxYmYzXHUxYzI0LVx1MWMzN1x1MWNkMC1cdTFjZDJcdTFjZDQtXHUxY2U4XHUxY2VkXHUxY2YyXHUxZGMwLVx1MWRlNlx1MWRmYy1cdTFkZmZcdTIwMGNcdTIwMGRcdTIwZDAtXHUyMGYwXHUyY2VmLVx1MmNmMVx1MmQ3Zlx1MmRlMC1cdTJkZmZcdTMwMmEtXHUzMDJmXHUzMDk5XHUzMDlhXHVhNjZmLVx1YTY3Mlx1YTY3Y1x1YTY3ZFx1YTZmMFx1YTZmMVx1YTgwMlx1YTgwNlx1YTgwYlx1YTgyMy1cdWE4MjdcdWE4ODBcdWE4ODFcdWE4YjQtXHVhOGM0XHVhOGUwLVx1YThmMVx1YTkyNi1cdWE5MmRcdWE5NDctXHVhOTUzXHVhOTgwLVx1YTk4M1x1YTliMy1cdWE5YzBcdWFhMjktXHVhYTM2XHVhYTQzXHVhYTRjXHVhYTRkXHVhYTdiXHVhYWIwXHVhYWIyLVx1YWFiNFx1YWFiN1x1YWFiOFx1YWFiZVx1YWFiZlx1YWFjMVx1YWJlMy1cdWFiZWFcdWFiZWNcdWFiZWRcdWZiMWVcdWZlMDAtXHVmZTBmXHVmZTIwLVx1ZmUyNlx1ZmY5ZVx1ZmY5Zl0iCixmb3JtYXQ6IltcdTAwYWRcdTA2MDAtXHUwNjAzXHUwNmRkXHUwNzBmXHUxN2I0XHUxN2I1XHUyMDBlXHUyMDBmXHUyMDJhLVx1MjAyZVx1MjA2MC1cdTIwNjRcdTIwNmEtXHUyMDZmXHVmZWZmXHVmZmY5LVx1ZmZmYl0iLGthdGFrYW5hOiJbXHUzMDMxLVx1MzAzNVx1MzA5Ylx1MzA5Y1x1MzBhMC1cdTMwZmFcdTMwZmMtXHUzMGZmXHUzMWYwLVx1MzFmZlx1MzJkMC1cdTMyZmVcdTMzMDAtXHUzMzU3XHVmZjY2LVx1ZmY5ZF0iLGV4dGVuZG51bWxldDoiW19cdTIwM2ZcdTIwNDBcdTIwNTRcdWZlMzNcdWZlMzRcdWZlNGQtXHVmZTRmXHVmZjNmXSIscHVuY3R1YXRpb246IlshLSMlLSosLVxcLzo7P0BcXFstXFxdX3t9XHUwMGExXHUwMGFiXHUwMGI3XHUwMGJiXHUwMGJmO1x1MDBiN1x1MDU1YS1cdTA1NWZcdTA1ODlcdTA1OGFcdTA1YmVcdTA1YzBcdTA1YzNcdTA1YzZcdTA1ZjNcdTA1ZjRcdTA2MDlcdTA2MGFcdTA2MGNcdTA2MGRcdTA2MWJcdTA2MWVcdTA2MWZcdTA2NmEtXHUwNjZkXHUwNmQ0XHUwNzAwLVx1MDcwZFx1MDdmNy1cdTA3ZjlcdTA4MzAtXHUwODNlXHUwODVlXHUwOTY0XHUwOTY1XHUwOTcwXHUwZGY0XHUwZTRmXHUwZTVhXHUwZTViXHUwZjA0LVx1MGYxMlx1MGYzYS1cdTBmM2RcdTBmODVcdTBmZDAtXHUwZmQ0XHUwZmQ5XHUwZmRhXHUxMDRhLVx1MTA0Zlx1MTBmYlx1MTM2MS1cdTEzNjhcdTE0MDBcdTE2NmRcdTE2NmVcdTE2OWJcdTE2OWNcdTE2ZWItXHUxNmVkXHUxNzM1XHUxNzM2XHUxN2Q0LVx1MTdkNlx1MTdkOC1cdTE3ZGFcdTE4MDAtXHUxODBhXHUxOTQ0XHUxOTQ1XHUxYTFlXHUxYTFmXHUxYWEwLVx1MWFhNlx1MWFhOC1cdTFhYWRcdTFiNWEtXHUxYjYwXHUxYmZjLVx1MWJmZlx1MWMzYi1cdTFjM2ZcdTFjN2VcdTFjN2ZcdTFjZDNcdTIwMTAtXHUyMDI3XHUyMDMwLVx1MjA0M1x1MjA0NS1cdTIwNTFcdTIwNTMtXHUyMDVlXHUyMDdkXHUyMDdlXHUyMDhkXHUyMDhlXHUzMDA4XHUzMDA5XHUyNzY4LVx1Mjc3NVx1MjdjNVx1MjdjNlx1MjdlNi1cdTI3ZWZcdTI5ODMtXHUyOTk4XHUyOWQ4LVx1MjlkYlx1MjlmY1x1MjlmZFx1MmNmOS1cdTJjZmNcdTJjZmVcdTJjZmZcdTJkNzBcdTJlMDAtXHUyZTJlXHUyZTMwXHUyZTMxXHUzMDAxLVx1MzAwM1x1MzAwOC1cdTMwMTFcdTMwMTQtXHUzMDFmXHUzMDMwXHUzMDNkXHUzMGEwXHUzMGZiXHVhNGZlXHVhNGZmXHVhNjBkLVx1YTYwZlx1YTY3M1x1YTY3ZVx1YTZmMi1cdWE2ZjdcdWE4NzQtXHVhODc3XHVhOGNlXHVhOGNmXHVhOGY4LVx1YThmYVx1YTkyZVx1YTkyZlx1YTk1Zlx1YTljMS1cdWE5Y2RcdWE5ZGVcdWE5ZGZcdWFhNWMtXHVhYTVmXHVhYWRlXHVhYWRmXHVhYmViXHVmZDNlXHVmZDNmXHVmZTEwLVx1ZmUxOVx1ZmUzMC1cdWZlNTJcdWZlNTQtXHVmZTYxXHVmZTYzXHVmZTY4XHVmZTZhXHVmZTZiXHVmZjAxLVx1ZmYwM1x1ZmYwNS1cdWZmMGFcdWZmMGMtXHVmZjBmXHVmZjFhXHVmZjFiXHVmZjFmXHVmZjIwXHVmZjNiLVx1ZmYzZFx1ZmYzZlx1ZmY1Ylx1ZmY1ZFx1ZmY1Zi1cdWZmNjVdIn19LCIzLjE3LjIiLHtyZXF1aXJlczpbInl1aS1iYXNlIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoInRleHQtd29yZGJyZWFrIixmdW5jdGlvbihlLHQpe3ZhciBuPWUuVGV4dCxyPW4uRGF0YS5Xb3JkQnJlYWssaT0wLHM9MSxvPTIsdT0zLGE9NCxmPTUsbD02LGM9NyxoPTgscD05LGQ9MTAsdj0xMSxtPTEyLGc9W25ldyBSZWdFeHAoci5hbGV0dGVyKSxuZXcgUmVnRXhwKHIubWlkbnVtbGV0KSxuZXcgUmVnRXhwKHIubWlkbGV0dGVyKSxuZXcgUmVnRXhwKHIubWlkbnVtKSxuZXcgUmVnRXhwKHIubnVtZXJpYyksbmV3IFJlZ0V4cChyLmNyKSxuZXcgUmVnRXhwKHIubGYpLG5ldyBSZWdFeHAoci5uZXdsaW5lKSxuZXcgUmVnRXhwKHIuZXh0ZW5kKSxuZXcgUmVnRXhwKHIuZm9ybWF0KSxuZXcgUmVnRXhwKHIua2F0YWthbmEpLG5ldyBSZWdFeHAoci5leHRlbmRudW1sZXQpXSx5PSIiLGI9bmV3IFJlZ0V4cCgiXiIrci5wdW5jdHVhdGlvbisiJCIpLHc9L1xzLyxFPXtnZXRXb3JkczpmdW5jdGlvbihlLHQpe3ZhciBuPTAscj1FLl9jbGFzc2lmeShlKSxpPXIubGVuZ3RoLHM9W10sbz1bXSx1LGEsZjt0fHwodD17fSksdC5pZ25vcmVDYXNlJiYoZT1lLnRvTG93ZXJDYXNlKCkpLGE9dC5pbmNsdWRlUHVuY3R1YXRpb24sZj10LmluY2x1ZGVXaGl0ZXNwYWNlO2Zvcig7bjxpOysrbil1PWUuY2hhckF0KG4pLHMucHVzaCh1KSxFLl9pc1dvcmRCb3VuZGFyeShyLG4pJiYocz1zLmpvaW4oeSkscyYmKGZ8fCF3LnRlc3QocykpJiYoYXx8IWIudGVzdChzKSkmJm8ucHVzaChzKSxzPVtdKTtyZXR1cm4gb30sZ2V0VW5pcXVlV29yZHM6ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5BcnJheS51bmlxdWUoRS5nZXRXb3Jkcyh0LG4pKX0saXNXb3JkQm91bmRhcnk6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRS5faXNXb3JkQm91bmRhcnkoRS5fY2xhc3NpZnkoZSksdCl9LF9jbGFzc2lmeTpmdW5jdGlvbihlKXt2YXIgdCxuPVtdLHI9MCxpLHMsbz1lLmxlbmd0aCx1PWcubGVuZ3RoLGE7Zm9yKDtyPG87KytyKXt0PWUuY2hhckF0KHIpLGE9bTtmb3IoaT0wO2k8dTsrK2kpe3M9Z1tpXTtpZihzJiZzLnRlc3QodCkpe2E9aTticmVha319bi5wdXNoKGEpfXJldHVybiBufSxfaXNXb3JkQm91bmRhcnk6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWVbdF0sbT1lW3QrMV0sZztyZXR1cm4gdDwwfHx0PmUubGVuZ3RoLTEmJnQhPT0wPyExOnI9PT1pJiZtPT09aT8hMTooZz1lW3QrMl0sciE9PWl8fG0hPT1vJiZtIT09c3x8ZyE9PWk/KG49ZVt0LTFdLHIhPT1vJiZyIT09c3x8bSE9PWl8fG4hPT1pP3IhPT1hJiZyIT09aXx8bSE9PWEmJm0hPT1pP3IhPT11JiZyIT09c3x8bSE9PWF8fG4hPT1hP3IhPT1hfHxtIT09dSYmbSE9PXN8fGchPT1hP3I9PT1ofHxyPT09cHx8bj09PWh8fG49PT1wfHxtPT09aHx8bT09PXA/ITE6cj09PWYmJm09PT1sPyExOnI9PT1jfHxyPT09Znx8cj09PWw/ITA6bT09PWN8fG09PT1mfHxtPT09bD8hMDpyPT09ZCYmbT09PWQ/ITE6bSE9PXZ8fHIhPT1pJiZyIT09YSYmciE9PWQmJnIhPT12P3IhPT12fHxtIT09aSYmbSE9PWEmJm0hPT1kPyEwOiExOiExOiExOiExOiExOiExKTohMSl9fTtuLldvcmRCcmVhaz1FfSwiMy4xNy4yIix7cmVxdWlyZXM6WyJhcnJheS1leHRyYXMiLCJ0ZXh0LWRhdGEtd29yZGJyZWFrIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoImhpZ2hsaWdodC1iYXNlIixmdW5jdGlvbihlLHQpe3ZhciBuPWUuQXJyYXkscj1lLkVzY2FwZSxpPWUuVGV4dC5Xb3JkQnJlYWsscz1lLkxhbmcuaXNBcnJheSxvPXt9LHU9IigmW147XFxzXSopPyIsYT17X1JFR0VYOnUrIiglbmVlZGxlcykiLF9SRVBMQUNFUjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHQmJiEvXHMvLnRlc3Qobik/ZTphLl9URU1QTEFURS5yZXBsYWNlKC9ce3NcfS9nLG4pfSxfU1RBUlRfUkVHRVg6Il4iK3UrIiglbmVlZGxlcykiLF9URU1QTEFURTonPGIgY2xhc3M9IicrZS5DbGFzc05hbWVNYW5hZ2VyLmdldENsYXNzTmFtZSgiaGlnaGxpZ2h0IikrJyI+e3N9PC9iPicsYWxsOmZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1bXSx1LGYsbCxjLGgscDtufHwobj1vKSx1PW4uZXNjYXBlSFRNTCE9PSExLGg9bi5zdGFydHNXaXRoP2EuX1NUQVJUX1JFR0VYOmEuX1JFR0VYLHA9bi5yZXBsYWNlcnx8YS5fUkVQTEFDRVIsdD1zKHQpP3Q6W3RdO2ZvcihmPTAsbD10Lmxlbmd0aDtmPGw7KytmKWM9dFtmXSxjJiZpLnB1c2goci5yZWdleCh1P3IuaHRtbChjKTpjKSk7cmV0dXJuIHUmJihlPXIuaHRtbChlKSksaS5sZW5ndGg/ZS5yZXBsYWNlKG5ldyBSZWdFeHAoaC5yZXBsYWNlKCIlbmVlZGxlcyIsaS5qb2luKCJ8IikpLG4uY2FzZVNlbnNpdGl2ZT8iZyI6ImdpIikscCk6ZX0sYWxsQ2FzZTpmdW5jdGlvbih0LG4scil7cmV0dXJuIGEuYWxsKHQsbixlLm1lcmdlKHJ8fG8se2Nhc2VTZW5zaXRpdmU6ITB9KSl9LHN0YXJ0OmZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gYS5hbGwodCxuLGUubWVyZ2Uocnx8byx7c3RhcnRzV2l0aDohMH0pKX0sc3RhcnRDYXNlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEuc3RhcnQoZSx0LHtjYXNlU2Vuc2l0aXZlOiEwfSl9LHdvcmRzOmZ1bmN0aW9uKGUsdCx1KXt2YXIgZixsLGM9YS5fVEVNUExBVEUsaDtyZXR1cm4gdXx8KHU9byksZj0hIXUuY2FzZVNlbnNpdGl2ZSx0PW4uaGFzaChzKHQpP3Q6aS5nZXRVbmlxdWVXb3Jkcyh0LHtpZ25vcmVDYXNlOiFmfSkpLGw9dS5tYXBwZXJ8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoZj9lOmUudG9Mb3dlckNhc2UoKSk/Yy5yZXBsYWNlKC9ce3NcfS9nLHIuaHRtbChlKSk6ci5odG1sKGUpfSxoPWkuZ2V0V29yZHMoZSx7aW5jbHVkZVB1bmN0dWF0aW9uOiEwLGluY2x1ZGVXaGl0ZXNwYWNlOiEwfSksbi5tYXAoaCxmdW5jdGlvbihlKXtyZXR1cm4gbChlLHQpfSkuam9pbigiIil9LHdvcmRzQ2FzZTpmdW5jdGlvbihlLHQpe3JldHVybiBhLndvcmRzKGUsdCx7Y2FzZVNlbnNpdGl2ZTohMH0pfX07ZS5IaWdobGlnaHQ9YX0sIjMuMTcuMiIse3JlcXVpcmVzOlsiYXJyYXktZXh0cmFzIiwiY2xhc3NuYW1lbWFuYWdlciIsImVzY2FwZSIsInRleHQtd29yZGJyZWFrIl19KTsKLyoKWVVJIDMuMTcuMiAoYnVpbGQgOWMzYzc4ZSkKQ29weXJpZ2h0IDIwMTQgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KTGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgpodHRwOi8veXVpbGlicmFyeS5jb20vbGljZW5zZS8KKi8KCllVSS5hZGQoImF1dG9jb21wbGV0ZS1oaWdobGlnaHRlcnMiLGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5BcnJheSxyPWUuSGlnaGxpZ2h0LGk9ZS5taXgoZS5uYW1lc3BhY2UoIkF1dG9Db21wbGV0ZUhpZ2hsaWdodGVycyIpLHtjaGFyTWF0Y2g6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzPW4udW5pcXVlKChpP2U6ZS50b0xvd2VyQ2FzZSgpKS5zcGxpdCgiIikpO3JldHVybiBuLm1hcCh0LGZ1bmN0aW9uKGUpe3JldHVybiByLmFsbChlLnRleHQscyx7Y2FzZVNlbnNpdGl2ZTppfSl9KX0sY2hhck1hdGNoQ2FzZTpmdW5jdGlvbihlLHQpe3JldHVybiBpLmNoYXJNYXRjaChlLHQsITApfSxwaHJhc2VNYXRjaDpmdW5jdGlvbihlLHQsaSl7cmV0dXJuIG4ubWFwKHQsZnVuY3Rpb24odCl7cmV0dXJuIHIuYWxsKHQudGV4dCxbZV0se2Nhc2VTZW5zaXRpdmU6aX0pfSl9LHBocmFzZU1hdGNoQ2FzZTpmdW5jdGlvbihlLHQpe3JldHVybiBpLnBocmFzZU1hdGNoKGUsdCwhMCl9LHN0YXJ0c1dpdGg6ZnVuY3Rpb24oZSx0LGkpe3JldHVybiBuLm1hcCh0LGZ1bmN0aW9uKHQpe3JldHVybiByLmFsbCh0LnRleHQsW2VdLHtjYXNlU2Vuc2l0aXZlOmksc3RhcnRzV2l0aDohMH0pfSl9LHN0YXJ0c1dpdGhDYXNlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkuc3RhcnRzV2l0aChlLHQsITApfSxzdWJXb3JkTWF0Y2g6ZnVuY3Rpb24odCxpLHMpe3ZhciBvPWUuVGV4dC5Xb3JkQnJlYWsuZ2V0VW5pcXVlV29yZHModCx7aWdub3JlQ2FzZTohc30pO3JldHVybiBuLm1hcChpLGZ1bmN0aW9uKGUpe3JldHVybiByLmFsbChlLnRleHQsbyx7Y2FzZVNlbnNpdGl2ZTpzfSl9KX0sc3ViV29yZE1hdGNoQ2FzZTpmdW5jdGlvbihlLHQpe3JldHVybiBpLnN1YldvcmRNYXRjaChlLHQsITApfSx3b3JkTWF0Y2g6ZnVuY3Rpb24oZSx0LGkpe3JldHVybiBuLm1hcCh0LGZ1bmN0aW9uKHQpe3JldHVybiByLndvcmRzKHQudGV4dCxlLHtjYXNlU2Vuc2l0aXZlOml9KX0pfSx3b3JkTWF0Y2hDYXNlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkud29yZE1hdGNoKGUsdCwhMCl9fSl9LCIzLjE3LjIiLHtyZXF1aXJlczpbImFycmF5LWV4dHJhcyIsImhpZ2hsaWdodC1iYXNlIl19KTsK></script><style>@-webkit-keyframes spinner-rotator{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}}@keyframes spinner-rotator{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}}@-webkit-keyframes spinner-dash{0%{stroke-dashoffset:187}50%{stroke-dashoffset:46.75;-webkit-transform:rotate(135deg);transform:rotate(135deg)}100%{stroke-dashoffset:187;-webkit-transform:rotate(450deg);transform:rotate(450deg)}}@keyframes spinner-dash{0%{stroke-dashoffset:187}50%{stroke-dashoffset:46.75;-webkit-transform:rotate(135deg);transform:rotate(135deg)}100%{stroke-dashoffset:187;-webkit-transform:rotate(450deg);transform:rotate(450deg)}}</style><script>/**
* @license
* pako 1.0.6 nodeca/pako
* Copyright (C) 2014-2017 by Vitaly Puzrin and Andrei Tuputcyn
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* Ported from zlib 1.2.8
* Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*
* Jean-loup Gailly Mark Adler
*/
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).pako=t()}}(function(){return function t(e,a,i){function n(s,o){if(!a[s]){if(!e[s]){var l="function"==typeof require&&require;if(!o&&l)return l(s,!0);if(r)return r(s,!0);var h=new Error("Cannot find module '"+s+"'");throw h.code="MODULE_NOT_FOUND",h}var d=a[s]={exports:{}};e[s][0].call(d.exports,function(t){var a=e[s][1][t];return n(a||t)},d,d.exports,t,e,a,i)}return a[s].exports}for(var r="function"==typeof require&&require,s=0;s<i.length;s++)n(i[s]);return n}({1:[function(t,e,a){"use strict";function i(t){if(!(this instanceof i))return new i(t);this.options=s.assign({level:_,method:c,chunkSize:16384,windowBits:15,memLevel:8,strategy:u,to:""},t||{});var e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new h,this.strm.avail_out=0;var a=r.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==f)throw new Error(l[a]);if(e.header&&r.deflateSetHeader(this.strm,e.header),e.dictionary){var n;if(n="string"==typeof e.dictionary?o.string2buf(e.dictionary):"[object ArrayBuffer]"===d.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,(a=r.deflateSetDictionary(this.strm,n))!==f)throw new Error(l[a]);this._dict_set=!0}}function n(t,e){var a=new i(e);if(a.push(t,!0),a.err)throw a.msg||l[a.err];return a.result}var r=t("./zlib/deflate"),s=t("./utils/common"),o=t("./utils/strings"),l=t("./zlib/messages"),h=t("./zlib/zstream"),d=Object.prototype.toString,f=0,_=-1,u=0,c=8;i.prototype.push=function(t,e){var a,i,n=this.strm,l=this.options.chunkSize;if(this.ended)return!1;i=e===~~e?e:!0===e?4:0,"string"==typeof t?n.input=o.string2buf(t):"[object ArrayBuffer]"===d.call(t)?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;do{if(0===n.avail_out&&(n.output=new s.Buf8(l),n.next_out=0,n.avail_out=l),1!==(a=r.deflate(n,i))&&a!==f)return this.onEnd(a),this.ended=!0,!1;0!==n.avail_out&&(0!==n.avail_in||4!==i&&2!==i)||("string"===this.options.to?this.onData(o.buf2binstring(s.shrinkBuf(n.output,n.next_out))):this.onData(s.shrinkBuf(n.output,n.next_out)))}while((n.avail_in>0||0===n.avail_out)&&1!==a);return 4===i?(a=r.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===f):2!==i||(this.onEnd(f),n.avail_out=0,!0)},i.prototype.onData=function(t){this.chunks.push(t)},i.prototype.onEnd=function(t){t===f&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=s.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},a.Deflate=i,a.deflate=n,a.deflateRaw=function(t,e){return e=e||{},e.raw=!0,n(t,e)},a.gzip=function(t,e){return e=e||{},e.gzip=!0,n(t,e)}},{"./utils/common":3,"./utils/strings":4,"./zlib/deflate":8,"./zlib/messages":13,"./zlib/zstream":15}],2:[function(t,e,a){"use strict";function i(t){if(!(this instanceof i))return new i(t);this.options=s.assign({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var a=r.inflateInit2(this.strm,e.windowBits);if(a!==l.Z_OK)throw new Error(h[a]);this.header=new f,r.inflateGetHeader(this.strm,this.header)}function n(t,e){var a=new i(e);if(a.push(t,!0),a.err)throw a.msg||h[a.err];return a.result}var r=t("./zlib/inflate"),s=t("./utils/common"),o=t("./utils/strings"),l=t("./zlib/constants"),h=t("./zlib/messages"),d=t("./zlib/zstream"),f=t("./zlib/gzheader"),_=Object.prototype.toString;i.prototype.push=function(t,e){var a,i,n,h,d,f,u=this.strm,c=this.options.chunkSize,b=this.options.dictionary,g=!1;if(this.ended)return!1;i=e===~~e?e:!0===e?l.Z_FINISH:l.Z_NO_FLUSH,"string"==typeof t?u.input=o.binstring2buf(t):"[object ArrayBuffer]"===_.call(t)?u.input=new Uint8Array(t):u.input=t,u.next_in=0,u.avail_in=u.input.length;do{if(0===u.avail_out&&(u.output=new s.Buf8(c),u.next_out=0,u.avail_out=c),(a=r.inflate(u,l.Z_NO_FLUSH))===l.Z_NEED_DICT&&b&&(f="string"==typeof b?o.string2buf(b):"[object ArrayBuffer]"===_.call(b)?new Uint8Array(b):b,a=r.inflateSetDictionary(this.strm,f)),a===l.Z_BUF_ERROR&&!0===g&&(a=l.Z_OK,g=!1),a!==l.Z_STREAM_END&&a!==l.Z_OK)return this.onEnd(a),this.ended=!0,!1;u.next_out&&(0!==u.avail_out&&a!==l.Z_STREAM_END&&(0!==u.avail_in||i!==l.Z_FINISH&&i!==l.Z_SYNC_FLUSH)||("string"===this.options.to?(n=o.utf8border(u.output,u.next_out),h=u.next_out-n,d=o.buf2string(u.output,n),u.next_out=h,u.avail_out=c-h,h&&s.arraySet(u.output,u.output,n,h,0),this.onData(d)):this.onData(s.shrinkBuf(u.output,u.next_out)))),0===u.avail_in&&0===u.avail_out&&(g=!0)}while((u.avail_in>0||0===u.avail_out)&&a!==l.Z_STREAM_END);return a===l.Z_STREAM_END&&(i=l.Z_FINISH),i===l.Z_FINISH?(a=r.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===l.Z_OK):i!==l.Z_SYNC_FLUSH||(this.onEnd(l.Z_OK),u.avail_out=0,!0)},i.prototype.onData=function(t){this.chunks.push(t)},i.prototype.onEnd=function(t){t===l.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=s.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},a.Inflate=i,a.inflate=n,a.inflateRaw=function(t,e){return e=e||{},e.raw=!0,n(t,e)},a.ungzip=n},{"./utils/common":3,"./utils/strings":4,"./zlib/constants":6,"./zlib/gzheader":9,"./zlib/inflate":11,"./zlib/messages":13,"./zlib/zstream":15}],3:[function(t,e,a){"use strict";function i(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;a.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(var n in a)i(a,n)&&(t[n]=a[n])}}return t},a.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var r={arraySet:function(t,e,a,i,n){if(e.subarray&&t.subarray)t.set(e.subarray(a,a+i),n);else for(var r=0;r<i;r++)t[n+r]=e[a+r]},flattenChunks:function(t){var e,a,i,n,r,s;for(i=0,e=0,a=t.length;e<a;e++)i+=t[e].length;for(s=new Uint8Array(i),n=0,e=0,a=t.length;e<a;e++)r=t[e],s.set(r,n),n+=r.length;return s}},s={arraySet:function(t,e,a,i,n){for(var r=0;r<i;r++)t[n+r]=e[a+r]},flattenChunks:function(t){return[].concat.apply([],t)}};a.setTyped=function(t){t?(a.Buf8=Uint8Array,a.Buf16=Uint16Array,a.Buf32=Int32Array,a.assign(a,r)):(a.Buf8=Array,a.Buf16=Array,a.Buf32=Array,a.assign(a,s))},a.setTyped(n)},{}],4:[function(t,e,a){"use strict";function i(t,e){if(e<65537&&(t.subarray&&s||!t.subarray&&r))return String.fromCharCode.apply(null,n.shrinkBuf(t,e));for(var a="",i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a}var n=t("./common"),r=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(t){r=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){s=!1}for(var o=new n.Buf8(256),l=0;l<256;l++)o[l]=l>=252?6:l>=248?5:l>=240?4:l>=224?3:l>=192?2:1;o[254]=o[254]=1,a.string2buf=function(t){var e,a,i,r,s,o=t.length,l=0;for(r=0;r<o;r++)55296==(64512&(a=t.charCodeAt(r)))&&r+1<o&&56320==(64512&(i=t.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(i-56320),r++),l+=a<128?1:a<2048?2:a<65536?3:4;for(e=new n.Buf8(l),s=0,r=0;s<l;r++)55296==(64512&(a=t.charCodeAt(r)))&&r+1<o&&56320==(64512&(i=t.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(i-56320),r++),a<128?e[s++]=a:a<2048?(e[s++]=192|a>>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},a.buf2binstring=function(t){return i(t,t.length)},a.binstring2buf=function(t){for(var e=new n.Buf8(t.length),a=0,i=e.length;a<i;a++)e[a]=t.charCodeAt(a);return e},a.buf2string=function(t,e){var a,n,r,s,l=e||t.length,h=new Array(2*l);for(n=0,a=0;a<l;)if((r=t[a++])<128)h[n++]=r;else if((s=o[r])>4)h[n++]=65533,a+=s-1;else{for(r&=2===s?31:3===s?15:7;s>1&&a<l;)r=r<<6|63&t[a++],s--;s>1?h[n++]=65533:r<65536?h[n++]=r:(r-=65536,h[n++]=55296|r>>10&1023,h[n++]=56320|1023&r)}return i(h,n)},a.utf8border=function(t,e){var a;for((e=e||t.length)>t.length&&(e=t.length),a=e-1;a>=0&&128==(192&t[a]);)a--;return a<0?e:0===a?e:a+o[t[a]]>e?a:e}},{"./common":3}],5:[function(t,e,a){"use strict";e.exports=function(t,e,a,i){for(var n=65535&t|0,r=t>>>16&65535|0,s=0;0!==a;){a-=s=a>2e3?2e3:a;do{r=r+(n=n+e[i++]|0)|0}while(--s);n%=65521,r%=65521}return n|r<<16|0}},{}],6:[function(t,e,a){"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],7:[function(t,e,a){"use strict";var i=function(){for(var t,e=[],a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e}();e.exports=function(t,e,a,n){var r=i,s=n+a;t^=-1;for(var o=n;o<s;o++)t=t>>>8^r[255&(t^e[o])];return-1^t}},{}],8:[function(t,e,a){"use strict";function i(t,e){return t.msg=A[e],e}function n(t){return(t<<1)-(t>4?9:0)}function r(t){for(var e=t.length;--e>=0;)t[e]=0}function s(t){var e=t.state,a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(z.arraySet(t.output,e.pending_buf,e.pending_out,a,t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))}function o(t,e){B._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,s(t.strm)}function l(t,e){t.pending_buf[t.pending++]=e}function h(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function d(t,e,a,i){var n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,z.arraySet(e,t.input,t.next_in,n,a),1===t.state.wrap?t.adler=S(t.adler,e,n,a):2===t.state.wrap&&(t.adler=E(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)}function f(t,e){var a,i,n=t.max_chain_length,r=t.strstart,s=t.prev_length,o=t.nice_match,l=t.strstart>t.w_size-it?t.strstart-(t.w_size-it):0,h=t.window,d=t.w_mask,f=t.prev,_=t.strstart+at,u=h[r+s-1],c=h[r+s];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+s]===c&&h[a+s-1]===u&&h[a]===h[r]&&h[++a]===h[r+1]){r+=2,a++;do{}while(h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&r<_);if(i=at-(_-r),r=_-at,i>s){if(t.match_start=e,s=i,i>=o)break;u=h[r+s-1],c=h[r+s]}}}while((e=f[e&d])>l&&0!=--n);return s<=t.lookahead?s:t.lookahead}function _(t){var e,a,i,n,r,s=t.w_size;do{if(n=t.window_size-t.lookahead-t.strstart,t.strstart>=s+(s-it)){z.arraySet(t.window,t.window,s,s,0),t.match_start-=s,t.strstart-=s,t.block_start-=s,e=a=t.hash_size;do{i=t.head[--e],t.head[e]=i>=s?i-s:0}while(--a);e=a=s;do{i=t.prev[--e],t.prev[e]=i>=s?i-s:0}while(--a);n+=s}if(0===t.strm.avail_in)break;if(a=d(t.strm,t.window,t.strstart+t.lookahead,n),t.lookahead+=a,t.lookahead+t.insert>=et)for(r=t.strstart-t.insert,t.ins_h=t.window[r],t.ins_h=(t.ins_h<<t.hash_shift^t.window[r+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[r+et-1])&t.hash_mask,t.prev[r&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=r,r++,t.insert--,!(t.lookahead+t.insert<et)););}while(t.lookahead<it&&0!==t.strm.avail_in)}function u(t,e){for(var a,i;;){if(t.lookahead<it){if(_(t),t.lookahead<it&&e===Z)return _t;if(0===t.lookahead)break}if(a=0,t.lookahead>=et&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+et-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-it&&(t.match_length=f(t,a)),t.match_length>=et)if(i=B._tr_tally(t,t.strstart-t.match_start,t.match_length-et),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=et){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+et-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else i=B._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(o(t,!1),0===t.strm.avail_out))return _t}return t.insert=t.strstart<et-1?t.strstart:et-1,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):t.last_lit&&(o(t,!1),0===t.strm.avail_out)?_t:ut}function c(t,e){for(var a,i,n;;){if(t.lookahead<it){if(_(t),t.lookahead<it&&e===Z)return _t;if(0===t.lookahead)break}if(a=0,t.lookahead>=et&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+et-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=et-1,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-it&&(t.match_length=f(t,a),t.match_length<=5&&(t.strategy===H||t.match_length===et&&t.strstart-t.match_start>4096)&&(t.match_length=et-1)),t.prev_length>=et&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-et,i=B._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-et),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+et-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=et-1,t.strstart++,i&&(o(t,!1),0===t.strm.avail_out))return _t}else if(t.match_available){if((i=B._tr_tally(t,0,t.window[t.strstart-1]))&&o(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return _t}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=B._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<et-1?t.strstart:et-1,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):t.last_lit&&(o(t,!1),0===t.strm.avail_out)?_t:ut}function b(t,e){for(var a,i,n,r,s=t.window;;){if(t.lookahead<=at){if(_(t),t.lookahead<=at&&e===Z)return _t;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=et&&t.strstart>0&&(n=t.strstart-1,(i=s[n])===s[++n]&&i===s[++n]&&i===s[++n])){r=t.strstart+at;do{}while(i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&n<r);t.match_length=at-(r-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=et?(a=B._tr_tally(t,1,t.match_length-et),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=B._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(o(t,!1),0===t.strm.avail_out))return _t}return t.insert=0,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):t.last_lit&&(o(t,!1),0===t.strm.avail_out)?_t:ut}function g(t,e){for(var a;;){if(0===t.lookahead&&(_(t),0===t.lookahead)){if(e===Z)return _t;break}if(t.match_length=0,a=B._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(o(t,!1),0===t.strm.avail_out))return _t}return t.insert=0,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):t.last_lit&&(o(t,!1),0===t.strm.avail_out)?_t:ut}function m(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}function w(t){t.window_size=2*t.w_size,r(t.head),t.max_lazy_match=x[t.level].max_lazy,t.good_match=x[t.level].good_length,t.nice_match=x[t.level].nice_length,t.max_chain_length=x[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=et-1,t.match_available=0,t.ins_h=0}function p(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=q,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new z.Buf16(2*$),this.dyn_dtree=new z.Buf16(2*(2*Q+1)),this.bl_tree=new z.Buf16(2*(2*V+1)),r(this.dyn_ltree),r(this.dyn_dtree),r(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new z.Buf16(tt+1),this.heap=new z.Buf16(2*J+1),r(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new z.Buf16(2*J+1),r(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function v(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=Y,e=t.state,e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?rt:dt,t.adler=2===e.wrap?0:1,e.last_flush=Z,B._tr_init(e),D):i(t,U)}function k(t){var e=v(t);return e===D&&w(t.state),e}function y(t,e,a,n,r,s){if(!t)return U;var o=1;if(e===L&&(e=6),n<0?(o=0,n=-n):n>15&&(o=2,n-=16),r<1||r>G||a!==q||n<8||n>15||e<0||e>9||s<0||s>M)return i(t,U);8===n&&(n=9);var l=new p;return t.state=l,l.strm=t,l.wrap=o,l.gzhead=null,l.w_bits=n,l.w_size=1<<l.w_bits,l.w_mask=l.w_size-1,l.hash_bits=r+7,l.hash_size=1<<l.hash_bits,l.hash_mask=l.hash_size-1,l.hash_shift=~~((l.hash_bits+et-1)/et),l.window=new z.Buf8(2*l.w_size),l.head=new z.Buf16(l.hash_size),l.prev=new z.Buf16(l.w_size),l.lit_bufsize=1<<r+6,l.pending_buf_size=4*l.lit_bufsize,l.pending_buf=new z.Buf8(l.pending_buf_size),l.d_buf=1*l.lit_bufsize,l.l_buf=3*l.lit_bufsize,l.level=e,l.strategy=s,l.method=a,k(t)}var x,z=t("../utils/common"),B=t("./trees"),S=t("./adler32"),E=t("./crc32"),A=t("./messages"),Z=0,R=1,C=3,N=4,O=5,D=0,I=1,U=-2,T=-3,F=-5,L=-1,H=1,j=2,K=3,M=4,P=0,Y=2,q=8,G=9,X=15,W=8,J=286,Q=30,V=19,$=2*J+1,tt=15,et=3,at=258,it=at+et+1,nt=32,rt=42,st=69,ot=73,lt=91,ht=103,dt=113,ft=666,_t=1,ut=2,ct=3,bt=4,gt=3;x=[new m(0,0,0,0,function(t,e){var a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(_(t),0===t.lookahead&&e===Z)return _t;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+a;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,o(t,!1),0===t.strm.avail_out))return _t;if(t.strstart-t.block_start>=t.w_size-it&&(o(t,!1),0===t.strm.avail_out))return _t}return t.insert=0,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):(t.strstart>t.block_start&&(o(t,!1),t.strm.avail_out),_t)}),new m(4,4,8,4,u),new m(4,5,16,8,u),new m(4,6,32,32,u),new m(4,4,16,16,c),new m(8,16,32,32,c),new m(8,16,128,128,c),new m(8,32,128,256,c),new m(32,128,258,1024,c),new m(32,258,258,4096,c)],a.deflateInit=function(t,e){return y(t,e,q,X,W,P)},a.deflateInit2=y,a.deflateReset=k,a.deflateResetKeep=v,a.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?U:(t.state.gzhead=e,D):U},a.deflate=function(t,e){var a,o,d,f;if(!t||!t.state||e>O||e<0)return t?i(t,U):U;if(o=t.state,!t.output||!t.input&&0!==t.avail_in||o.status===ft&&e!==N)return i(t,0===t.avail_out?F:U);if(o.strm=t,a=o.last_flush,o.last_flush=e,o.status===rt)if(2===o.wrap)t.adler=0,l(o,31),l(o,139),l(o,8),o.gzhead?(l(o,(o.gzhead.text?1:0)+(o.gzhead.hcrc?2:0)+(o.gzhead.extra?4:0)+(o.gzhead.name?8:0)+(o.gzhead.comment?16:0)),l(o,255&o.gzhead.time),l(o,o.gzhead.time>>8&255),l(o,o.gzhead.time>>16&255),l(o,o.gzhead.time>>24&255),l(o,9===o.level?2:o.strategy>=j||o.level<2?4:0),l(o,255&o.gzhead.os),o.gzhead.extra&&o.gzhead.extra.length&&(l(o,255&o.gzhead.extra.length),l(o,o.gzhead.extra.length>>8&255)),o.gzhead.hcrc&&(t.adler=E(t.adler,o.pending_buf,o.pending,0)),o.gzindex=0,o.status=st):(l(o,0),l(o,0),l(o,0),l(o,0),l(o,0),l(o,9===o.level?2:o.strategy>=j||o.level<2?4:0),l(o,gt),o.status=dt);else{var _=q+(o.w_bits-8<<4)<<8;_|=(o.strategy>=j||o.level<2?0:o.level<6?1:6===o.level?2:3)<<6,0!==o.strstart&&(_|=nt),_+=31-_%31,o.status=dt,h(o,_),0!==o.strstart&&(h(o,t.adler>>>16),h(o,65535&t.adler)),t.adler=1}if(o.status===st)if(o.gzhead.extra){for(d=o.pending;o.gzindex<(65535&o.gzhead.extra.length)&&(o.pending!==o.pending_buf_size||(o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),s(t),d=o.pending,o.pending!==o.pending_buf_size));)l(o,255&o.gzhead.extra[o.gzindex]),o.gzindex++;o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),o.gzindex===o.gzhead.extra.length&&(o.gzindex=0,o.status=ot)}else o.status=ot;if(o.status===ot)if(o.gzhead.name){d=o.pending;do{if(o.pending===o.pending_buf_size&&(o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),s(t),d=o.pending,o.pending===o.pending_buf_size)){f=1;break}f=o.gzindex<o.gzhead.name.length?255&o.gzhead.name.charCodeAt(o.gzindex++):0,l(o,f)}while(0!==f);o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),0===f&&(o.gzindex=0,o.status=lt)}else o.status=lt;if(o.status===lt)if(o.gzhead.comment){d=o.pending;do{if(o.pending===o.pending_buf_size&&(o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),s(t),d=o.pending,o.pending===o.pending_buf_size)){f=1;break}f=o.gzindex<o.gzhead.comment.length?255&o.gzhead.comment.charCodeAt(o.gzindex++):0,l(o,f)}while(0!==f);o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),0===f&&(o.status=ht)}else o.status=ht;if(o.status===ht&&(o.gzhead.hcrc?(o.pending+2>o.pending_buf_size&&s(t),o.pending+2<=o.pending_buf_size&&(l(o,255&t.adler),l(o,t.adler>>8&255),t.adler=0,o.status=dt)):o.status=dt),0!==o.pending){if(s(t),0===t.avail_out)return o.last_flush=-1,D}else if(0===t.avail_in&&n(e)<=n(a)&&e!==N)return i(t,F);if(o.status===ft&&0!==t.avail_in)return i(t,F);if(0!==t.avail_in||0!==o.lookahead||e!==Z&&o.status!==ft){var u=o.strategy===j?g(o,e):o.strategy===K?b(o,e):x[o.level].func(o,e);if(u!==ct&&u!==bt||(o.status=ft),u===_t||u===ct)return 0===t.avail_out&&(o.last_flush=-1),D;if(u===ut&&(e===R?B._tr_align(o):e!==O&&(B._tr_stored_block(o,0,0,!1),e===C&&(r(o.head),0===o.lookahead&&(o.strstart=0,o.block_start=0,o.insert=0))),s(t),0===t.avail_out))return o.last_flush=-1,D}return e!==N?D:o.wrap<=0?I:(2===o.wrap?(l(o,255&t.adler),l(o,t.adler>>8&255),l(o,t.adler>>16&255),l(o,t.adler>>24&255),l(o,255&t.total_in),l(o,t.total_in>>8&255),l(o,t.total_in>>16&255),l(o,t.total_in>>24&255)):(h(o,t.adler>>>16),h(o,65535&t.adler)),s(t),o.wrap>0&&(o.wrap=-o.wrap),0!==o.pending?D:I)},a.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==rt&&e!==st&&e!==ot&&e!==lt&&e!==ht&&e!==dt&&e!==ft?i(t,U):(t.state=null,e===dt?i(t,T):D):U},a.deflateSetDictionary=function(t,e){var a,i,n,s,o,l,h,d,f=e.length;if(!t||!t.state)return U;if(a=t.state,2===(s=a.wrap)||1===s&&a.status!==rt||a.lookahead)return U;for(1===s&&(t.adler=S(t.adler,e,f,0)),a.wrap=0,f>=a.w_size&&(0===s&&(r(a.head),a.strstart=0,a.block_start=0,a.insert=0),d=new z.Buf8(a.w_size),z.arraySet(d,e,f-a.w_size,a.w_size,0),e=d,f=a.w_size),o=t.avail_in,l=t.next_in,h=t.input,t.avail_in=f,t.next_in=0,t.input=e,_(a);a.lookahead>=et;){i=a.strstart,n=a.lookahead-(et-1);do{a.ins_h=(a.ins_h<<a.hash_shift^a.window[i+et-1])&a.hash_mask,a.prev[i&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=i,i++}while(--n);a.strstart=i,a.lookahead=et-1,_(a)}return a.strstart+=a.lookahead,a.block_start=a.strstart,a.insert=a.lookahead,a.lookahead=0,a.match_length=a.prev_length=et-1,a.match_available=0,t.next_in=l,t.input=h,t.avail_in=o,a.wrap=s,D},a.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":3,"./adler32":5,"./crc32":7,"./messages":13,"./trees":14}],9:[function(t,e,a){"use strict";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],10:[function(t,e,a){"use strict";e.exports=function(t,e){var a,i,n,r,s,o,l,h,d,f,_,u,c,b,g,m,w,p,v,k,y,x,z,B,S;a=t.state,i=t.next_in,B=t.input,n=i+(t.avail_in-5),r=t.next_out,S=t.output,s=r-(e-t.avail_out),o=r+(t.avail_out-257),l=a.dmax,h=a.wsize,d=a.whave,f=a.wnext,_=a.window,u=a.hold,c=a.bits,b=a.lencode,g=a.distcode,m=(1<<a.lenbits)-1,w=(1<<a.distbits)-1;t:do{c<15&&(u+=B[i++]<<c,c+=8,u+=B[i++]<<c,c+=8),p=b[u&m];e:for(;;){if(v=p>>>24,u>>>=v,c-=v,0===(v=p>>>16&255))S[r++]=65535&p;else{if(!(16&v)){if(0==(64&v)){p=b[(65535&p)+(u&(1<<v)-1)];continue e}if(32&v){a.mode=12;break t}t.msg="invalid literal/length code",a.mode=30;break t}k=65535&p,(v&=15)&&(c<v&&(u+=B[i++]<<c,c+=8),k+=u&(1<<v)-1,u>>>=v,c-=v),c<15&&(u+=B[i++]<<c,c+=8,u+=B[i++]<<c,c+=8),p=g[u&w];a:for(;;){if(v=p>>>24,u>>>=v,c-=v,!(16&(v=p>>>16&255))){if(0==(64&v)){p=g[(65535&p)+(u&(1<<v)-1)];continue a}t.msg="invalid distance code",a.mode=30;break t}if(y=65535&p,v&=15,c<v&&(u+=B[i++]<<c,(c+=8)<v&&(u+=B[i++]<<c,c+=8)),(y+=u&(1<<v)-1)>l){t.msg="invalid distance too far back",a.mode=30;break t}if(u>>>=v,c-=v,v=r-s,y>v){if((v=y-v)>d&&a.sane){t.msg="invalid distance too far back",a.mode=30;break t}if(x=0,z=_,0===f){if(x+=h-v,v<k){k-=v;do{S[r++]=_[x++]}while(--v);x=r-y,z=S}}else if(f<v){if(x+=h+f-v,(v-=f)<k){k-=v;do{S[r++]=_[x++]}while(--v);if(x=0,f<k){k-=v=f;do{S[r++]=_[x++]}while(--v);x=r-y,z=S}}}else if(x+=f-v,v<k){k-=v;do{S[r++]=_[x++]}while(--v);x=r-y,z=S}for(;k>2;)S[r++]=z[x++],S[r++]=z[x++],S[r++]=z[x++],k-=3;k&&(S[r++]=z[x++],k>1&&(S[r++]=z[x++]))}else{x=r-y;do{S[r++]=S[x++],S[r++]=S[x++],S[r++]=S[x++],k-=3}while(k>2);k&&(S[r++]=S[x++],k>1&&(S[r++]=S[x++]))}break}}break}}while(i<n&&r<o);i-=k=c>>3,u&=(1<<(c-=k<<3))-1,t.next_in=i,t.next_out=r,t.avail_in=i<n?n-i+5:5-(i-n),t.avail_out=r<o?o-r+257:257-(r-o),a.hold=u,a.bits=c}},{}],11:[function(t,e,a){"use strict";function i(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function n(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new u.Buf16(320),this.work=new u.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function r(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=N,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new u.Buf32(dt),e.distcode=e.distdyn=new u.Buf32(ft),e.sane=1,e.back=-1,z):E}function s(t){var e;return t&&t.state?(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,r(t)):E}function o(t,e){var a,i;return t&&t.state?(i=t.state,e<0?(a=0,e=-e):(a=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?E:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,s(t))):E}function l(t,e){var a,i;return t?(i=new n,t.state=i,i.window=null,(a=o(t,e))!==z&&(t.state=null),a):E}function h(t){if(ut){var e;for(f=new u.Buf32(512),_=new u.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(m(p,t.lens,0,288,f,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;m(v,t.lens,0,32,_,0,t.work,{bits:5}),ut=!1}t.lencode=f,t.lenbits=9,t.distcode=_,t.distbits=5}function d(t,e,a,i){var n,r=t.state;return null===r.window&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new u.Buf8(r.wsize)),i>=r.wsize?(u.arraySet(r.window,e,a-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):((n=r.wsize-r.wnext)>i&&(n=i),u.arraySet(r.window,e,a-i,n,r.wnext),(i-=n)?(u.arraySet(r.window,e,a-i,i,0),r.wnext=i,r.whave=r.wsize):(r.wnext+=n,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=n))),0}var f,_,u=t("../utils/common"),c=t("./adler32"),b=t("./crc32"),g=t("./inffast"),m=t("./inftrees"),w=0,p=1,v=2,k=4,y=5,x=6,z=0,B=1,S=2,E=-2,A=-3,Z=-4,R=-5,C=8,N=1,O=2,D=3,I=4,U=5,T=6,F=7,L=8,H=9,j=10,K=11,M=12,P=13,Y=14,q=15,G=16,X=17,W=18,J=19,Q=20,V=21,$=22,tt=23,et=24,at=25,it=26,nt=27,rt=28,st=29,ot=30,lt=31,ht=32,dt=852,ft=592,_t=15,ut=!0;a.inflateReset=s,a.inflateReset2=o,a.inflateResetKeep=r,a.inflateInit=function(t){return l(t,_t)},a.inflateInit2=l,a.inflate=function(t,e){var a,n,r,s,o,l,f,_,dt,ft,_t,ut,ct,bt,gt,mt,wt,pt,vt,kt,yt,xt,zt,Bt,St=0,Et=new u.Buf8(4),At=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return E;(a=t.state).mode===M&&(a.mode=P),o=t.next_out,r=t.output,f=t.avail_out,s=t.next_in,n=t.input,l=t.avail_in,_=a.hold,dt=a.bits,ft=l,_t=f,xt=z;t:for(;;)switch(a.mode){case N:if(0===a.wrap){a.mode=P;break}for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(2&a.wrap&&35615===_){a.check=0,Et[0]=255&_,Et[1]=_>>>8&255,a.check=b(a.check,Et,2,0),_=0,dt=0,a.mode=O;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&_)<<8)+(_>>8))%31){t.msg="incorrect header check",a.mode=ot;break}if((15&_)!==C){t.msg="unknown compression method",a.mode=ot;break}if(_>>>=4,dt-=4,yt=8+(15&_),0===a.wbits)a.wbits=yt;else if(yt>a.wbits){t.msg="invalid window size",a.mode=ot;break}a.dmax=1<<yt,t.adler=a.check=1,a.mode=512&_?j:M,_=0,dt=0;break;case O:for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(a.flags=_,(255&a.flags)!==C){t.msg="unknown compression method",a.mode=ot;break}if(57344&a.flags){t.msg="unknown header flags set",a.mode=ot;break}a.head&&(a.head.text=_>>8&1),512&a.flags&&(Et[0]=255&_,Et[1]=_>>>8&255,a.check=b(a.check,Et,2,0)),_=0,dt=0,a.mode=D;case D:for(;dt<32;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.head&&(a.head.time=_),512&a.flags&&(Et[0]=255&_,Et[1]=_>>>8&255,Et[2]=_>>>16&255,Et[3]=_>>>24&255,a.check=b(a.check,Et,4,0)),_=0,dt=0,a.mode=I;case I:for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.head&&(a.head.xflags=255&_,a.head.os=_>>8),512&a.flags&&(Et[0]=255&_,Et[1]=_>>>8&255,a.check=b(a.check,Et,2,0)),_=0,dt=0,a.mode=U;case U:if(1024&a.flags){for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.length=_,a.head&&(a.head.extra_len=_),512&a.flags&&(Et[0]=255&_,Et[1]=_>>>8&255,a.check=b(a.check,Et,2,0)),_=0,dt=0}else a.head&&(a.head.extra=null);a.mode=T;case T:if(1024&a.flags&&((ut=a.length)>l&&(ut=l),ut&&(a.head&&(yt=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),u.arraySet(a.head.extra,n,s,ut,yt)),512&a.flags&&(a.check=b(a.check,n,ut,s)),l-=ut,s+=ut,a.length-=ut),a.length))break t;a.length=0,a.mode=F;case F:if(2048&a.flags){if(0===l)break t;ut=0;do{yt=n[s+ut++],a.head&&yt&&a.length<65536&&(a.head.name+=String.fromCharCode(yt))}while(yt&&ut<l);if(512&a.flags&&(a.check=b(a.check,n,ut,s)),l-=ut,s+=ut,yt)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=L;case L:if(4096&a.flags){if(0===l)break t;ut=0;do{yt=n[s+ut++],a.head&&yt&&a.length<65536&&(a.head.comment+=String.fromCharCode(yt))}while(yt&&ut<l);if(512&a.flags&&(a.check=b(a.check,n,ut,s)),l-=ut,s+=ut,yt)break t}else a.head&&(a.head.comment=null);a.mode=H;case H:if(512&a.flags){for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(_!==(65535&a.check)){t.msg="header crc mismatch",a.mode=ot;break}_=0,dt=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=M;break;case j:for(;dt<32;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}t.adler=a.check=i(_),_=0,dt=0,a.mode=K;case K:if(0===a.havedict)return t.next_out=o,t.avail_out=f,t.next_in=s,t.avail_in=l,a.hold=_,a.bits=dt,S;t.adler=a.check=1,a.mode=M;case M:if(e===y||e===x)break t;case P:if(a.last){_>>>=7&dt,dt-=7&dt,a.mode=nt;break}for(;dt<3;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}switch(a.last=1&_,_>>>=1,dt-=1,3&_){case 0:a.mode=Y;break;case 1:if(h(a),a.mode=Q,e===x){_>>>=2,dt-=2;break t}break;case 2:a.mode=X;break;case 3:t.msg="invalid block type",a.mode=ot}_>>>=2,dt-=2;break;case Y:for(_>>>=7&dt,dt-=7&dt;dt<32;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if((65535&_)!=(_>>>16^65535)){t.msg="invalid stored block lengths",a.mode=ot;break}if(a.length=65535&_,_=0,dt=0,a.mode=q,e===x)break t;case q:a.mode=G;case G:if(ut=a.length){if(ut>l&&(ut=l),ut>f&&(ut=f),0===ut)break t;u.arraySet(r,n,s,ut,o),l-=ut,s+=ut,f-=ut,o+=ut,a.length-=ut;break}a.mode=M;break;case X:for(;dt<14;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(a.nlen=257+(31&_),_>>>=5,dt-=5,a.ndist=1+(31&_),_>>>=5,dt-=5,a.ncode=4+(15&_),_>>>=4,dt-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=ot;break}a.have=0,a.mode=W;case W:for(;a.have<a.ncode;){for(;dt<3;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.lens[At[a.have++]]=7&_,_>>>=3,dt-=3}for(;a.have<19;)a.lens[At[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,zt={bits:a.lenbits},xt=m(w,a.lens,0,19,a.lencode,0,a.work,zt),a.lenbits=zt.bits,xt){t.msg="invalid code lengths set",a.mode=ot;break}a.have=0,a.mode=J;case J:for(;a.have<a.nlen+a.ndist;){for(;St=a.lencode[_&(1<<a.lenbits)-1],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(gt<=dt);){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(wt<16)_>>>=gt,dt-=gt,a.lens[a.have++]=wt;else{if(16===wt){for(Bt=gt+2;dt<Bt;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(_>>>=gt,dt-=gt,0===a.have){t.msg="invalid bit length repeat",a.mode=ot;break}yt=a.lens[a.have-1],ut=3+(3&_),_>>>=2,dt-=2}else if(17===wt){for(Bt=gt+3;dt<Bt;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}dt-=gt,yt=0,ut=3+(7&(_>>>=gt)),_>>>=3,dt-=3}else{for(Bt=gt+7;dt<Bt;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}dt-=gt,yt=0,ut=11+(127&(_>>>=gt)),_>>>=7,dt-=7}if(a.have+ut>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=ot;break}for(;ut--;)a.lens[a.have++]=yt}}if(a.mode===ot)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=ot;break}if(a.lenbits=9,zt={bits:a.lenbits},xt=m(p,a.lens,0,a.nlen,a.lencode,0,a.work,zt),a.lenbits=zt.bits,xt){t.msg="invalid literal/lengths set",a.mode=ot;break}if(a.distbits=6,a.distcode=a.distdyn,zt={bits:a.distbits},xt=m(v,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,zt),a.distbits=zt.bits,xt){t.msg="invalid distances set",a.mode=ot;break}if(a.mode=Q,e===x)break t;case Q:a.mode=V;case V:if(l>=6&&f>=258){t.next_out=o,t.avail_out=f,t.next_in=s,t.avail_in=l,a.hold=_,a.bits=dt,g(t,_t),o=t.next_out,r=t.output,f=t.avail_out,s=t.next_in,n=t.input,l=t.avail_in,_=a.hold,dt=a.bits,a.mode===M&&(a.back=-1);break}for(a.back=0;St=a.lencode[_&(1<<a.lenbits)-1],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(gt<=dt);){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(mt&&0==(240&mt)){for(pt=gt,vt=mt,kt=wt;St=a.lencode[kt+((_&(1<<pt+vt)-1)>>pt)],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(pt+gt<=dt);){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}_>>>=pt,dt-=pt,a.back+=pt}if(_>>>=gt,dt-=gt,a.back+=gt,a.length=wt,0===mt){a.mode=it;break}if(32&mt){a.back=-1,a.mode=M;break}if(64&mt){t.msg="invalid literal/length code",a.mode=ot;break}a.extra=15&mt,a.mode=$;case $:if(a.extra){for(Bt=a.extra;dt<Bt;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.length+=_&(1<<a.extra)-1,_>>>=a.extra,dt-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=tt;case tt:for(;St=a.distcode[_&(1<<a.distbits)-1],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(gt<=dt);){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(0==(240&mt)){for(pt=gt,vt=mt,kt=wt;St=a.distcode[kt+((_&(1<<pt+vt)-1)>>pt)],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(pt+gt<=dt);){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}_>>>=pt,dt-=pt,a.back+=pt}if(_>>>=gt,dt-=gt,a.back+=gt,64&mt){t.msg="invalid distance code",a.mode=ot;break}a.offset=wt,a.extra=15&mt,a.mode=et;case et:if(a.extra){for(Bt=a.extra;dt<Bt;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.offset+=_&(1<<a.extra)-1,_>>>=a.extra,dt-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=ot;break}a.mode=at;case at:if(0===f)break t;if(ut=_t-f,a.offset>ut){if((ut=a.offset-ut)>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=ot;break}ut>a.wnext?(ut-=a.wnext,ct=a.wsize-ut):ct=a.wnext-ut,ut>a.length&&(ut=a.length),bt=a.window}else bt=r,ct=o-a.offset,ut=a.length;ut>f&&(ut=f),f-=ut,a.length-=ut;do{r[o++]=bt[ct++]}while(--ut);0===a.length&&(a.mode=V);break;case it:if(0===f)break t;r[o++]=a.length,f--,a.mode=V;break;case nt:if(a.wrap){for(;dt<32;){if(0===l)break t;l--,_|=n[s++]<<dt,dt+=8}if(_t-=f,t.total_out+=_t,a.total+=_t,_t&&(t.adler=a.check=a.flags?b(a.check,r,_t,o-_t):c(a.check,r,_t,o-_t)),_t=f,(a.flags?_:i(_))!==a.check){t.msg="incorrect data check",a.mode=ot;break}_=0,dt=0}a.mode=rt;case rt:if(a.wrap&&a.flags){for(;dt<32;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(_!==(4294967295&a.total)){t.msg="incorrect length check",a.mode=ot;break}_=0,dt=0}a.mode=st;case st:xt=B;break t;case ot:xt=A;break t;case lt:return Z;case ht:default:return E}return t.next_out=o,t.avail_out=f,t.next_in=s,t.avail_in=l,a.hold=_,a.bits=dt,(a.wsize||_t!==t.avail_out&&a.mode<ot&&(a.mode<nt||e!==k))&&d(t,t.output,t.next_out,_t-t.avail_out)?(a.mode=lt,Z):(ft-=t.avail_in,_t-=t.avail_out,t.total_in+=ft,t.total_out+=_t,a.total+=_t,a.wrap&&_t&&(t.adler=a.check=a.flags?b(a.check,r,_t,t.next_out-_t):c(a.check,r,_t,t.next_out-_t)),t.data_type=a.bits+(a.last?64:0)+(a.mode===M?128:0)+(a.mode===Q||a.mode===q?256:0),(0===ft&&0===_t||e===k)&&xt===z&&(xt=R),xt)},a.inflateEnd=function(t){if(!t||!t.state)return E;var e=t.state;return e.window&&(e.window=null),t.state=null,z},a.inflateGetHeader=function(t,e){var a;return t&&t.state?0==(2&(a=t.state).wrap)?E:(a.head=e,e.done=!1,z):E},a.inflateSetDictionary=function(t,e){var a,i,n=e.length;return t&&t.state?0!==(a=t.state).wrap&&a.mode!==K?E:a.mode===K&&(i=1,(i=c(i,e,n,0))!==a.check)?A:d(t,e,n,n)?(a.mode=lt,Z):(a.havedict=1,z):E},a.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":3,"./adler32":5,"./crc32":7,"./inffast":10,"./inftrees":12}],12:[function(t,e,a){"use strict";var i=t("../utils/common"),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],r=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],s=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],o=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(t,e,a,l,h,d,f,_){var u,c,b,g,m,w,p,v,k,y=_.bits,x=0,z=0,B=0,S=0,E=0,A=0,Z=0,R=0,C=0,N=0,O=null,D=0,I=new i.Buf16(16),U=new i.Buf16(16),T=null,F=0;for(x=0;x<=15;x++)I[x]=0;for(z=0;z<l;z++)I[e[a+z]]++;for(E=y,S=15;S>=1&&0===I[S];S--);if(E>S&&(E=S),0===S)return h[d++]=20971520,h[d++]=20971520,_.bits=1,0;for(B=1;B<S&&0===I[B];B++);for(E<B&&(E=B),R=1,x=1;x<=15;x++)if(R<<=1,(R-=I[x])<0)return-1;if(R>0&&(0===t||1!==S))return-1;for(U[1]=0,x=1;x<15;x++)U[x+1]=U[x]+I[x];for(z=0;z<l;z++)0!==e[a+z]&&(f[U[e[a+z]]++]=z);if(0===t?(O=T=f,w=19):1===t?(O=n,D-=257,T=r,F-=257,w=256):(O=s,T=o,w=-1),N=0,z=0,x=B,m=d,A=E,Z=0,b=-1,C=1<<E,g=C-1,1===t&&C>852||2===t&&C>592)return 1;for(;;){p=x-Z,f[z]<w?(v=0,k=f[z]):f[z]>w?(v=T[F+f[z]],k=O[D+f[z]]):(v=96,k=0),u=1<<x-Z,B=c=1<<A;do{h[m+(N>>Z)+(c-=u)]=p<<24|v<<16|k|0}while(0!==c);for(u=1<<x-1;N&u;)u>>=1;if(0!==u?(N&=u-1,N+=u):N=0,z++,0==--I[x]){if(x===S)break;x=e[a+f[z]]}if(x>E&&(N&g)!==b){for(0===Z&&(Z=E),m+=B,R=1<<(A=x-Z);A+Z<S&&!((R-=I[A+Z])<=0);)A++,R<<=1;if(C+=1<<A,1===t&&C>852||2===t&&C>592)return 1;h[b=N&g]=E<<24|A<<16|m-d|0}}return 0!==N&&(h[m+N]=x-Z<<24|64<<16|0),_.bits=E,0}},{"../utils/common":3}],13:[function(t,e,a){"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],14:[function(t,e,a){"use strict";function i(t){for(var e=t.length;--e>=0;)t[e]=0}function n(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}function r(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function s(t){return t<256?et[t]:et[256+(t>>>7)]}function o(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function l(t,e,a){t.bi_valid>M-a?(t.bi_buf|=e<<t.bi_valid&65535,o(t,t.bi_buf),t.bi_buf=e>>M-t.bi_valid,t.bi_valid+=a-M):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)}function h(t,e,a){l(t,a[2*e],a[2*e+1])}function d(t,e){var a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1}function f(t){16===t.bi_valid?(o(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}function _(t,e){var a,i,n,r,s,o,l=e.dyn_tree,h=e.max_code,d=e.stat_desc.static_tree,f=e.stat_desc.has_stree,_=e.stat_desc.extra_bits,u=e.stat_desc.extra_base,c=e.stat_desc.max_length,b=0;for(r=0;r<=K;r++)t.bl_count[r]=0;for(l[2*t.heap[t.heap_max]+1]=0,a=t.heap_max+1;a<j;a++)(r=l[2*l[2*(i=t.heap[a])+1]+1]+1)>c&&(r=c,b++),l[2*i+1]=r,i>h||(t.bl_count[r]++,s=0,i>=u&&(s=_[i-u]),o=l[2*i],t.opt_len+=o*(r+s),f&&(t.static_len+=o*(d[2*i+1]+s)));if(0!==b){do{for(r=c-1;0===t.bl_count[r];)r--;t.bl_count[r]--,t.bl_count[r+1]+=2,t.bl_count[c]--,b-=2}while(b>0);for(r=c;0!==r;r--)for(i=t.bl_count[r];0!==i;)(n=t.heap[--a])>h||(l[2*n+1]!==r&&(t.opt_len+=(r-l[2*n+1])*l[2*n],l[2*n+1]=r),i--)}}function u(t,e,a){var i,n,r=new Array(K+1),s=0;for(i=1;i<=K;i++)r[i]=s=s+a[i-1]<<1;for(n=0;n<=e;n++){var o=t[2*n+1];0!==o&&(t[2*n]=d(r[o]++,o))}}function c(){var t,e,a,i,r,s=new Array(K+1);for(a=0,i=0;i<U-1;i++)for(it[i]=a,t=0;t<1<<W[i];t++)at[a++]=i;for(at[a-1]=i,r=0,i=0;i<16;i++)for(nt[i]=r,t=0;t<1<<J[i];t++)et[r++]=i;for(r>>=7;i<L;i++)for(nt[i]=r<<7,t=0;t<1<<J[i]-7;t++)et[256+r++]=i;for(e=0;e<=K;e++)s[e]=0;for(t=0;t<=143;)$[2*t+1]=8,t++,s[8]++;for(;t<=255;)$[2*t+1]=9,t++,s[9]++;for(;t<=279;)$[2*t+1]=7,t++,s[7]++;for(;t<=287;)$[2*t+1]=8,t++,s[8]++;for(u($,F+1,s),t=0;t<L;t++)tt[2*t+1]=5,tt[2*t]=d(t,5);rt=new n($,W,T+1,F,K),st=new n(tt,J,0,L,K),ot=new n(new Array(0),Q,0,H,P)}function b(t){var e;for(e=0;e<F;e++)t.dyn_ltree[2*e]=0;for(e=0;e<L;e++)t.dyn_dtree[2*e]=0;for(e=0;e<H;e++)t.bl_tree[2*e]=0;t.dyn_ltree[2*Y]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function g(t){t.bi_valid>8?o(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function m(t,e,a,i){g(t),i&&(o(t,a),o(t,~a)),A.arraySet(t.pending_buf,t.window,e,a,t.pending),t.pending+=a}function w(t,e,a,i){var n=2*e,r=2*a;return t[n]<t[r]||t[n]===t[r]&&i[e]<=i[a]}function p(t,e,a){for(var i=t.heap[a],n=a<<1;n<=t.heap_len&&(n<t.heap_len&&w(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!w(e,i,t.heap[n],t.depth));)t.heap[a]=t.heap[n],a=n,n<<=1;t.heap[a]=i}function v(t,e,a){var i,n,r,o,d=0;if(0!==t.last_lit)do{i=t.pending_buf[t.d_buf+2*d]<<8|t.pending_buf[t.d_buf+2*d+1],n=t.pending_buf[t.l_buf+d],d++,0===i?h(t,n,e):(h(t,(r=at[n])+T+1,e),0!==(o=W[r])&&l(t,n-=it[r],o),h(t,r=s(--i),a),0!==(o=J[r])&&l(t,i-=nt[r],o))}while(d<t.last_lit);h(t,Y,e)}function k(t,e){var a,i,n,r=e.dyn_tree,s=e.stat_desc.static_tree,o=e.stat_desc.has_stree,l=e.stat_desc.elems,h=-1;for(t.heap_len=0,t.heap_max=j,a=0;a<l;a++)0!==r[2*a]?(t.heap[++t.heap_len]=h=a,t.depth[a]=0):r[2*a+1]=0;for(;t.heap_len<2;)r[2*(n=t.heap[++t.heap_len]=h<2?++h:0)]=1,t.depth[n]=0,t.opt_len--,o&&(t.static_len-=s[2*n+1]);for(e.max_code=h,a=t.heap_len>>1;a>=1;a--)p(t,r,a);n=l;do{a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],p(t,r,1),i=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=i,r[2*n]=r[2*a]+r[2*i],t.depth[n]=(t.depth[a]>=t.depth[i]?t.depth[a]:t.depth[i])+1,r[2*a+1]=r[2*i+1]=n,t.heap[1]=n++,p(t,r,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],_(t,e),u(r,h,t.bl_count)}function y(t,e,a){var i,n,r=-1,s=e[1],o=0,l=7,h=4;for(0===s&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=s,s=e[2*(i+1)+1],++o<l&&n===s||(o<h?t.bl_tree[2*n]+=o:0!==n?(n!==r&&t.bl_tree[2*n]++,t.bl_tree[2*q]++):o<=10?t.bl_tree[2*G]++:t.bl_tree[2*X]++,o=0,r=n,0===s?(l=138,h=3):n===s?(l=6,h=3):(l=7,h=4))}function x(t,e,a){var i,n,r=-1,s=e[1],o=0,d=7,f=4;for(0===s&&(d=138,f=3),i=0;i<=a;i++)if(n=s,s=e[2*(i+1)+1],!(++o<d&&n===s)){if(o<f)do{h(t,n,t.bl_tree)}while(0!=--o);else 0!==n?(n!==r&&(h(t,n,t.bl_tree),o--),h(t,q,t.bl_tree),l(t,o-3,2)):o<=10?(h(t,G,t.bl_tree),l(t,o-3,3)):(h(t,X,t.bl_tree),l(t,o-11,7));o=0,r=n,0===s?(d=138,f=3):n===s?(d=6,f=3):(d=7,f=4)}}function z(t){var e;for(y(t,t.dyn_ltree,t.l_desc.max_code),y(t,t.dyn_dtree,t.d_desc.max_code),k(t,t.bl_desc),e=H-1;e>=3&&0===t.bl_tree[2*V[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}function B(t,e,a,i){var n;for(l(t,e-257,5),l(t,a-1,5),l(t,i-4,4),n=0;n<i;n++)l(t,t.bl_tree[2*V[n]+1],3);x(t,t.dyn_ltree,e-1),x(t,t.dyn_dtree,a-1)}function S(t){var e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return R;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return C;for(e=32;e<T;e++)if(0!==t.dyn_ltree[2*e])return C;return R}function E(t,e,a,i){l(t,(O<<1)+(i?1:0),3),m(t,e,a,!0)}var A=t("../utils/common"),Z=4,R=0,C=1,N=2,O=0,D=1,I=2,U=29,T=256,F=T+1+U,L=30,H=19,j=2*F+1,K=15,M=16,P=7,Y=256,q=16,G=17,X=18,W=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],J=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],Q=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],V=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],$=new Array(2*(F+2));i($);var tt=new Array(2*L);i(tt);var et=new Array(512);i(et);var at=new Array(256);i(at);var it=new Array(U);i(it);var nt=new Array(L);i(nt);var rt,st,ot,lt=!1;a._tr_init=function(t){lt||(c(),lt=!0),t.l_desc=new r(t.dyn_ltree,rt),t.d_desc=new r(t.dyn_dtree,st),t.bl_desc=new r(t.bl_tree,ot),t.bi_buf=0,t.bi_valid=0,b(t)},a._tr_stored_block=E,a._tr_flush_block=function(t,e,a,i){var n,r,s=0;t.level>0?(t.strm.data_type===N&&(t.strm.data_type=S(t)),k(t,t.l_desc),k(t,t.d_desc),s=z(t),n=t.opt_len+3+7>>>3,(r=t.static_len+3+7>>>3)<=n&&(n=r)):n=r=a+5,a+4<=n&&-1!==e?E(t,e,a,i):t.strategy===Z||r===n?(l(t,(D<<1)+(i?1:0),3),v(t,$,tt)):(l(t,(I<<1)+(i?1:0),3),B(t,t.l_desc.max_code+1,t.d_desc.max_code+1,s+1),v(t,t.dyn_ltree,t.dyn_dtree)),b(t),i&&g(t)},a._tr_tally=function(t,e,a){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&a,t.last_lit++,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(at[a]+T+1)]++,t.dyn_dtree[2*s(e)]++),t.last_lit===t.lit_bufsize-1},a._tr_align=function(t){l(t,D<<1,3),h(t,Y,$),f(t)}},{"../utils/common":3}],15:[function(t,e,a){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],"/":[function(t,e,a){"use strict";var i={};(0,t("./lib/utils/common").assign)(i,t("./lib/deflate"),t("./lib/inflate"),t("./lib/zlib/constants")),e.exports=i},{"./lib/deflate":1,"./lib/inflate":2,"./lib/utils/common":3,"./lib/zlib/constants":6}]},{},[])("/")});</script>
<div id=doc>
<div id=hd class=yui3-g><header>
<div class=content>
<div class=yui3-u-3-4>
<a href=https://clarle.github.io/yui3 rel=home><div id=hd-logo role=image aria-label="YUI logo"></div></a>
</div>
<div class=yui3-u-1-4>
<form id=main-search class=search action=http://search.yahoo.com/search role=search>
<input type=search class="search-input yui3-aclist-input" name=q aria-label="Search docs and APIs" placeholder="Search docs and APIs" aria-autocomplete=list aria-expanded=false aria-owns=yui_3_17_2_1_1703147614323_36 id=yui_3_17_2_1_1703147614323_60 autocomplete=off value>
<div id=yui_3_17_2_1_1703147614323_18 class="yui3-widget yui3-aclist yui3-widget-positioned yui3-aclist-hidden" aria-hidden=true style=width:300px;left:881.25px;top:33px><div id=yui_3_17_2_1_1703147614323_20 class=yui3-aclist-content><ul class=yui3-aclist-list id=yui_3_17_2_1_1703147614323_36 role=listbox></ul></div></div><div class=yui3-aclist-aria aria-live=polite role=status></div></form>
</div>
<div id=main-nav class=yui3-u><nav>
<ul class="nav hoverable-group">
<li class="nav-tab hoverable">
<a href=https://clarle.github.io/yui3>Home</a>
</li>
<li class="nav-tab hoverable">
<a href=https://github.com/yui/yui3/wiki/Quick-Start>Quick Start</a>
<ul class=nav-submenu>
<li class=nav-child>
<a href=https://clarle.github.io/yui3/yui/configurator/>Configurator</a>
</li>
<li class=nav-child>
<a href=https://clarle.github.io/download/yui3/>Download YUI 3</a>
</li>
</ul>
</li>
<li class="nav-tab hoverable nav-tab-active">
<a href=https://github.com/yui/yui3/wiki/YUI-Documentation>Documentation</a>
<ul class=nav-submenu>
<li class=nav-child>
<a href=https://clarle.github.io/yui3/yui/docs/guides/>User Guides</a>
</li>
<li class=nav-child>
<a href=https://clarle.github.io/yui3/yui/docs/examples/>Examples</a>
</li>
<li class=nav-child>
<a href=https://clarle.github.io/yui3/yui/docs/api/>API Docs</a>
</li>
<li class=nav-child>
<a href=https://clarle.github.io/yui3/yui/environments/>Environments</a>
</li>
<li class=nav-child>
<a href=https://clarle.github.io/yui3/yui/docs/tutorials/>Tutorials</a>
</li>
<li class=nav-child>
<a href=https://clarle.github.io/yui3/yui/docs/tutorials/faq/>FAQ</a>
</li>
</ul>
</li>
<li class="nav-tab hoverable nav-break">
<a href=https://clarle.github.io/community/>Community</a>
<ul class=nav-submenu>
<li class=nav-child>
<a href=https://clarle.github.io/gallery/>Gallery</a>
</li>
<li class=nav-child>
<a href=http://yuiblog.com/>Blog</a>
</li>
<li class=nav-child>
<a href=https://clarle.github.io/forum/>Forums</a>
</li>
<li class=nav-child>
<a href=https://clarle.github.io/theater/>YUI Theater</a>
</li>
<li class=nav-child>
<a href=https://github.com/yui/yui3/wiki/Development-Schedule target=_blank title="External link">Calendar »</a>
</li>
</ul>
</li>
<li class="nav-tab hoverable">
<a href=https://clarle.github.io/contribute/>Contribute</a>
<ul class=nav-submenu>
<li class=nav-child>
<a href=https://github.com/yui/ target=_blank title="External link">YUI on GitHub »</a>
</li>
<li class=nav-child>
<a href=https://clarle.github.io/projects/yui3/newticket/>File a Ticket</a>
</li>
<li class=nav-child>
<a href=https://clarle.github.io/projects/yui3/report/>View Tickets</a>
</li>
<li class=nav-child>
<a href=https://clarle.github.io/projects/yui3/dashboard/>Dashboard</a>
</li>
</ul>
</li>
<li class="nav-tab hoverable">
<a href=https://clarle.github.io/projects/>Other Projects</a>
<ul class=nav-submenu>
<li class=nav-child>
<a href=http://yui.github.com/shifter/ target=_blank title="External link">Shifter »</a>
</li>
<li class=nav-child>
<a href=http://yui.github.com/yogi/ target=_blank title="External link">Yogi »</a>
</li>
<li class=nav-child>
<a href=https://clarle.github.io/projects/yui2/>YUI 2</a>
</li>
<li class=nav-child>
<a href=http://yui.github.com/yuidoc/ target=_blank title="External link">YUI Doc »</a>
</li>
<li class=nav-child>
<a href=https://clarle.github.io/projects/yuitest/>YUI Test</a>
</li>
<li class=nav-child>
<a href=https://clarle.github.io/projects/yuilibrary/>YUI Website</a>
</li>
<li class=nav-child>
<a href=http://yui.github.com/yuicompressor/ target=_blank title="External link">YUI Compressor »</a>
</li>
<li class=nav-child>
<a href=http://github.com/yui/builder target=_blank title="External link">YUI Builder »</a>
</li>
<li class=nav-child>
<a href=https://clarle.github.io/projects/phploader/>YUI PHP Loader</a>
</li>
<li class=nav-child>
<a href=http://yui.github.com/gridbuilder/ target=_blank title="External link">Grid Builder »</a>
</li>
<li class=nav-child>
<a href=http://yui.github.com/skinbuilder/ target=_blank title="External link">Skin Builder »</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
</header></div>
<div id=bd class="clearfix yui3-g">
<div id=breadcrumbs class=yui3-u-1>
<ul class=breadcrumbs>
<li class=crumb><a href=https://github.com/yui/yui3/wiki/YUI-Documentation>YUI</a></li>
<li class=separator>></li>
<li class=crumb><a href=https://clarle.github.io/yui3/yui/core>Core</a></li>
<li class=separator>></li>
<li class=crumb><a href=https://clarle.github.io/yui3/yui/docs/event/simulate.html>Event</a></li>
</ul>
</div>
<div class="project-version yui3-u">Version 3.17.2</div>
<div class=yui3-u-1>
<div id=docs-hd class=content>
<h1>Simulating DOM Events</h1>
<a href=#docs-toc class=jump tabindex=1>Jump to Table of Contents</a>
</div>
</div>
<div class="yui3-u-3-4 print-max-width">
<div id=docs-main class=content>
<div class=intro>
<p>
When creating automated tests for your application or modules, you need
to be able to mock user events. The DOM supports creating native events
that behave essentially the same as user generated events, though
without the associated browser default behaviors (e.g. following a link
on click).
</p>
<p>
The <code>event-simulate</code> module adds the <code>Y.Event.simulate</code> method for
working with raw DOM nodes, but for most cases, the
<code>node-event-simulate</code> module is the right choice, since it allows you
to call the <code>simulate</code> method directly from the <code>Node</code>.
</p>
</div>
<h2 id=simulating-mouse-events>Simulating Mouse Events</h2>
<p>
There are seven mouse events that can be simulated:
</p>
<ul>
<li><code>click</code></li>
<li><code>dblclick</code></li>
<li><code>mousedown</code></li>
<li><code>mouseup</code></li>
<li><code>mouseover</code></li>
<li><code>mouseout</code></li>
<li><code>mousemove</code></li>
</ul>
<p>
Each event is fired by calling <code>simulate()</code> and passing in two
arguments: the type of event to fire and an optional object specifying
additional information for the event. To simulate a click on the document's
body element, for example, the following code can be used:
</p>
<pre class="code prettyprint prettyprinted"><span class=pln>YUI</span><span class=pun>().</span><span class=kwd>use</span><span class=pun>(</span><span class=str>'node-event-simulate'</span><span class=pun>,</span><span class=pln> </span><span class=kwd>function</span><span class=pun>(</span><span class=pln>Y</span><span class=pun>)</span><span class=pln> </span><span class=pun>{</span><span class=pln>
Y</span><span class=pun>.</span><span class=pln>one</span><span class=pun>(</span><span class=str>"body"</span><span class=pun>).</span><span class=pln>simulate</span><span class=pun>(</span><span class=str>"click"</span><span class=pun>);</span><span class=pln>
</span><span class=pun>});</span></pre>
<p>
This code simulates a click with all of the default properties on the
<code>event</code> object. To specify additional information, such as the
Shift key being down, the second argument must be used and the exact DOM
name for the event property specified (there is browser-normalizing logic
that translates these into browser-specific properties when necessary):
</p>
<pre class="code prettyprint prettyprinted"><span class=pln>Y</span><span class=pun>.</span><span class=pln>one</span><span class=pun>(</span><span class=str>"body"</span><span class=pun>).</span><span class=pln>simulate</span><span class=pun>(</span><span class=str>"click"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln> shiftKey</span><span class=pun>:</span><span class=pln> </span><span class=kwd>true</span><span class=pln> </span><span class=pun>});</span></pre>
<p>
In this updated example, a click event is fired on the document's body
while simulating that the Shift key is down.
</p>
<p>
The extra properties to specify vary depending on the event being simulated
and are limited to this list:
</p>
<dl>
<dt><code>detail</code></dt>
<dd>
Indicates the number of times a button was clicked (DOM-compliant
browsers only).
</dd>
<dt><code>screenX</code>, <code>screenY</code></dt>
<dd>
Coordinates of the mouse event in relation to the entire screen
(DOM-compliant browsers only).
</dd>
<dt><code>clientX</code>, <code>clientY</code></dt>
<dd>
Coordinates of the mouse event in relation to the browser client
area.
</dd>
<dt><code>ctrlKey</code>, <code>altKey</code>, <code>shiftKey</code>, <code>metaKey</code></dt>
<dd>
The state of the Ctrl, Alt, Shift, and Meta keys, respectively
(true for down, false for up).
</dd>
<dt><code>button</code></dt>
<dd>
The button being used for the event, 0 for left (default), 1 for
right, 2 for center.
</dd>
<dt><code>relatedTarget</code></dt>
<dd>
the element the mouse moved from (during a <code>mouseover</code> event) or to
(during a <code>mouseout</code> event).
</dd>
</dl>
<pre class="code prettyprint prettyprinted"><span class=pln>YUI</span><span class=pun>().</span><span class=kwd>use</span><span class=pun>(</span><span class=str>'node-event-simulate'</span><span class=pun>,</span><span class=pln> </span><span class=kwd>function</span><span class=pun>(</span><span class=pln>Y</span><span class=pun>)</span><span class=pln> </span><span class=pun>{</span><span class=pln>
</span><span class=kwd>var</span><span class=pln> node </span><span class=pun>=</span><span class=pln> Y</span><span class=pun>.</span><span class=pln>one</span><span class=pun>(</span><span class=str>"#myDiv"</span><span class=pun>);</span><span class=pln>
</span><span class=com>//simulate a click Alt key down</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulate</span><span class=pun>(</span><span class=str>"click"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln> altKey</span><span class=pun>:</span><span class=pln> </span><span class=kwd>true</span><span class=pun>});</span><span class=pln>
</span><span class=com>//simulate a double click with Ctrl key down</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulate</span><span class=pun>(</span><span class=str>"dblclick"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln> ctrlKey</span><span class=pun>:</span><span class=pln> </span><span class=kwd>true</span><span class=pln> </span><span class=pun>});</span><span class=pln>
</span><span class=com>//simulate a mouse over</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulate</span><span class=pun>(</span><span class=str>"mouseover"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln> relatedTarget</span><span class=pun>:</span><span class=pln> document</span><span class=pun>.</span><span class=pln>body </span><span class=pun>});</span><span class=pln>
</span><span class=com>//simulate a mouse out</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulate</span><span class=pun>(</span><span class=str>"mouseout"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln> relatedTarget</span><span class=pun>:</span><span class=pln> document</span><span class=pun>.</span><span class=pln>body </span><span class=pun>});</span><span class=pln>
</span><span class=com>//simulate a mouse down at point (100,100) in the client area</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulate</span><span class=pun>(</span><span class=str>"mousedown"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln> clientX</span><span class=pun>:</span><span class=pln> </span><span class=lit>100</span><span class=pun>,</span><span class=pln> clientY</span><span class=pun>:</span><span class=pln> </span><span class=lit>100</span><span class=pln> </span><span class=pun>});</span><span class=pln>
</span><span class=com>//simulate a mouse up at point (100,100) in the client area</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulate</span><span class=pun>(</span><span class=str>"mouseup"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln> clientX</span><span class=pun>:</span><span class=pln> </span><span class=lit>100</span><span class=pun>,</span><span class=pln> clientY</span><span class=pun>:</span><span class=pln> </span><span class=lit>100</span><span class=pln> </span><span class=pun>});</span><span class=pln>
</span><span class=com>//simulate a mouse move at point (200, 200) in the client area</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulate</span><span class=pun>(</span><span class=str>"mousemove"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln> clientX</span><span class=pun>:</span><span class=pln> </span><span class=lit>200</span><span class=pun>,</span><span class=pln> clientY</span><span class=pun>:</span><span class=pln> </span><span class=lit>200</span><span class=pln> </span><span class=pun>});</span><span class=pln>
</span><span class=pun>});</span></pre>
<h2 id=simulating-key-events>Simulating Key Events</h2>
<p>There are three key event simulations available:</p>
<ul>
<li><code>keyup</code></li>
<li><code>keydown</code></li>
<li><code>keypress</code></li>
</ul>
<p>
As with the mouse events, key events are simulated using
<code>simulate()</code>. For <code>keyup</code> and <code>keydown</code>,
the <code>keyCode</code> property must be specified; for
<code>keypress</code>, the <code>charCode</code> property must be included.
In many cases, <code>keyCode</code> and <code>charCode</code> may be the
same value to represent the same key (97, for instance, represents the
"A" key as well as being the ASCII code for the letter
"a"). For example:
</p>
<pre class="code prettyprint prettyprinted"><span class=pln>YUI</span><span class=pun>().</span><span class=kwd>use</span><span class=pun>(</span><span class=str>'node-event-simulate'</span><span class=pun>,</span><span class=pln> </span><span class=kwd>function</span><span class=pun>(</span><span class=pln>Y</span><span class=pun>)</span><span class=pln> </span><span class=pun>{</span><span class=pln>
</span><span class=kwd>var</span><span class=pln> node </span><span class=pun>=</span><span class=pln> Y</span><span class=pun>.</span><span class=pln>one</span><span class=pun>(</span><span class=str>"#myDiv"</span><span class=pun>);</span><span class=pln>
</span><span class=com>//simulate a keydown on the A key</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulate</span><span class=pun>(</span><span class=str>"keydown"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln> keyCode</span><span class=pun>:</span><span class=pln> </span><span class=lit>97</span><span class=pln> </span><span class=pun>});</span><span class=pln>
</span><span class=com>//simulate a keyup on the A key</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulate</span><span class=pun>(</span><span class=str>"keyup"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln> keyCode</span><span class=pun>:</span><span class=pln> </span><span class=lit>97</span><span class=pln> </span><span class=pun>});</span><span class=pln>
</span><span class=com>//simulate typing "a"</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulate</span><span class=pun>(</span><span class=str>"keypress"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln> charCode</span><span class=pun>:</span><span class=pln> </span><span class=lit>97</span><span class=pln> </span><span class=pun>});</span><span class=pln>
</span><span class=pun>});</span></pre>
<p>
Key events also support the <code>ctrlKey</code>, <code>altKey</code>,
<code>shiftKey</code>, and <code>metaKey</code> event properties.
</p>
<p>
<strong>Note:</strong> Due to differences in browser implementations, key
events may not be simulated in the same manner across all browsers. For
instance, when simulating a keypress event on a textbox, only Firefox will
update the textbox with the new character of the key that was simulated to
be pressed. For other browsers, the events are still registered and all
event handlers are called, however, the textbox display and
<code>value</code> property are not updated. These differences should go
away as browser support for simulated events improves in the future.
</p>
<h2 id=simulating-ui-events>Simulating UI Events</h2>
<p>There are several UI event simulations available:</p>
<ul>
<li><code>blur</code></li>
<li><code>change</code></li>
<li><code>focus</code></li>
<li><code>resize</code></li>
<li><code>scroll</code></li>
<li><code>select</code></li>
</ul>
<p>
As with the other events, UI events are simulated using
<code>simulate()</code>. There are no properties that are required to
simulate UI events as these events don't carry extra information. Some
examples:
</p>
<pre class="code prettyprint prettyprinted"><span class=pln>YUI</span><span class=pun>().</span><span class=kwd>use</span><span class=pun>(</span><span class=str>'node-event-simulate'</span><span class=pun>,</span><span class=pln> </span><span class=kwd>function</span><span class=pun>(</span><span class=pln>Y</span><span class=pun>)</span><span class=pln> </span><span class=pun>{</span><span class=pln>
</span><span class=kwd>var</span><span class=pln> node </span><span class=pun>=</span><span class=pln> Y</span><span class=pun>.</span><span class=pln>one</span><span class=pun>(</span><span class=str>"#myInput"</span><span class=pun>);</span><span class=pln>
</span><span class=com>//simulate a change event</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulate</span><span class=pun>(</span><span class=str>"change"</span><span class=pun>);</span><span class=pln>
</span><span class=com>//simulate a select event</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulate</span><span class=pun>(</span><span class=str>"select"</span><span class=pun>);</span><span class=pln>
</span><span class=pun>});</span></pre>
<h2 id=simulating-touch-gestures>Simulating Touch Gestures</h2>
<p>
There are several high level gesture simulations primarily targeted for
smartphones, tablets, and other touch-enabled devices. Single touch gestures
such as <code>tap</code> and <code>flick</code> are simulated using Mouse Events on desktop or mobile
devices where creating Touch Events are not supported. All gesture simulations
are done by calling the <code>simulateGesture()</code> method against a Node instance. The
method is asynchronous by default so an optional callback function can be
passed.
</p>
<dl>
<dt><code>tap</code></dt>
<dd>
Single finger gesture to simulate a tap. Default is to simulate
one tap but it can be configured to simulate any number of taps.
</dd>
<dt><code>doubletap</code></dt>
<dd>
Single finger gesture to simulate double taps.
</dd>
<dt><code>press</code></dt>
<dd>
Single finger gesture to simulate a long press.
</dd>
<dt><code>move</code></dt>
<dd>
Single finger gesture to simulate a move. It simulates moving
one finger straight in any direction.
</dd>
<dt><code>flick</code></dt>
<dd>
Single finger gesture to simulate the flick gesture. It simulates
moving one finger with a certain velocity along either an X or Y
axis.
</dd>
<dt><code>pinch</code></dt>
<dd>
Two finger gesture to simulate pinch and spread gestures.
</dd>
<dt><code>rotate</code></dt>
<dd>
Two finger gesture to simulate a rotate.
</dd>
</dl>
<p>
Gesture can be simulated by calling <code>simulateGesture()</code> and
passing the following arguments: the name of the gesture to simulate, an
optional object to define gesture properties, and an optional callback function.
The available properties vary per gesture.
</p>
<p>If the location of the finger is not given, the center of the node element is
used by default. This default behavior can be overridden by passing coordinates
into the optional object. The coordinate values are relative to the top/left
corner of the node element.
</p>
<h3 id=single-touch-gestures-tap-double-tab-and-press>Single Touch Gestures: Tap, Double Tab and Press</h3>
<p>
The following code simulates tap, double tap and press gestures:
</p>
<pre class="code prettyprint prettyprinted"><span class=pln>YUI</span><span class=pun>().</span><span class=kwd>use</span><span class=pun>(</span><span class=str>'node-event-simulate'</span><span class=pun>,</span><span class=pln> </span><span class=kwd>function</span><span class=pun>(</span><span class=pln>Y</span><span class=pun>)</span><span class=pln> </span><span class=pun>{</span><span class=pln>
</span><span class=kwd>var</span><span class=pln> node </span><span class=pun>=</span><span class=pln> Y</span><span class=pun>.</span><span class=pln>one</span><span class=pun>(</span><span class=str>"#myElement"</span><span class=pun>);</span><span class=pln>
</span><span class=com>//simulate tap gesture</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulateGesture</span><span class=pun>(</span><span class=str>"tap"</span><span class=pun>);</span><span class=pln>
</span><span class=com>//simulate double-tap gesture</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulateGesture</span><span class=pun>(</span><span class=str>"doubletap"</span><span class=pun>);</span><span class=pln>
</span><span class=com>//simulate press gesture</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulateGesture</span><span class=pun>(</span><span class=str>"press"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln>
hold</span><span class=pun>:</span><span class=pln> </span><span class=lit>3000</span><span class=pln> </span><span class=com>// press and hold for 3000ms</span><span class=pln>
</span><span class=pun>});</span><span class=pln>
</span><span class=com>// simulate tap with options and callback</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulateGesture</span><span class=pun>(</span><span class=str>"tap"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln>
point</span><span class=pun>:</span><span class=pln> </span><span class=pun>[</span><span class=lit>30</span><span class=pun>,</span><span class=pln> </span><span class=lit>30</span><span class=pun>],</span><span class=pln> </span><span class=com>// tap (30, 30) relative to the top/left of the node</span><span class=pln>
hold</span><span class=pun>:</span><span class=pln> </span><span class=lit>3000</span><span class=pun>,</span><span class=pln> </span><span class=com>// hold for 3sec in a tap</span><span class=pln>
times</span><span class=pun>:</span><span class=pln> </span><span class=lit>2</span><span class=pun>,</span><span class=pln> </span><span class=com>// tap 2 times</span><span class=pln>
delay</span><span class=pun>:</span><span class=pln> </span><span class=lit>500</span><span class=pln> </span><span class=com>// delay time before next tap starts</span><span class=pln>
</span><span class=pun>},</span><span class=pln> </span><span class=kwd>function</span><span class=pun>()</span><span class=pln> </span><span class=pun>{</span><span class=pln>
Y</span><span class=pun>.</span><span class=pln>log</span><span class=pun>(</span><span class=str>"I was called."</span><span class=pun>);</span><span class=pln>
</span><span class=pun>});</span><span class=pln>
</span><span class=pun>});</span></pre>
<h4 id=valid-options>Valid Options</h4>
<p>
Optional properties for the <code>tap</code> gesture:
</p>
<dl>
<dt><code>point</code></dt>
<dd>
Indicates the [x,y] coordinates where the tap should be
simulated. Default is the center of the node element.
</dd>
<dt><code>hold</code></dt>
<dd>
The hold time in milliseconds. This is the time between
<code>touchstart</code> and <code>touchend</code> event generation.
</dd>
<dt><code>times</code></dt>
<dd>
Indicates the number of taps. Default is 1.
</dd>
<dt><code>delay</code></dt>
<dd>
The number of milliseconds before the next tap simulation
happens. This is valid only when <code>times</code> is more than 1.
</dd>
</dl>
<p>
Optional properties for the <code>doubletap</code> gesture:
</p>
<dl>
<dt><code>point</code></dt>
<dd>
Indicates the [x, y] coordinates where the doubletap should be
simulated. Default is the center of the node element.
</dd>
</dl>
<p>
The <code>press</code> gesture is essentially a single tap with the <code>hold</code> property
defined. Optional properties for the <code>press</code> gesture:
</p>
<dl>
<dt><code>point</code></dt>
<dd>
Indicates the [x, y] coordinates where the tap should be
simulated. Default is the center of the node element.
</dd>
<dt><code>hold</code></dt>
<dd>
The hold time in milliseconds. This is the time between
<code>touchstart</code> and <code>touchend</code> event generation.
</dd>
</dl>
<h3 id=single-touch-gestures-move-and-flick>Single Touch Gestures: Move and Flick</h3>
<p>
The following code can be used To simulate various gestures of moving one
finger:
</p>
<pre class="code prettyprint prettyprinted"><span class=pln>YUI</span><span class=pun>().</span><span class=kwd>use</span><span class=pun>(</span><span class=str>'node-event-simulate'</span><span class=pun>,</span><span class=pln> </span><span class=kwd>function</span><span class=pun>(</span><span class=pln>Y</span><span class=pun>)</span><span class=pln> </span><span class=pun>{</span><span class=pln>
</span><span class=kwd>var</span><span class=pln> node </span><span class=pun>=</span><span class=pln> Y</span><span class=pun>.</span><span class=pln>one</span><span class=pun>(</span><span class=str>"#myElement"</span><span class=pun>);</span><span class=pln>
</span><span class=com>//simulate moving a finger 200 pixels along the x-axis </span><span class=pln>
</span><span class=com>//to the right for one second (default)</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulateGesture</span><span class=pun>(</span><span class=str>"move"</span><span class=pun>);</span><span class=pln>
</span><span class=com>//simulate moving a finger from the center of the node</span><span class=pln>
</span><span class=com>//to a point 70 pixels to the right and 50 pixels down over 2000ms</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulateGesture</span><span class=pun>(</span><span class=str>"move"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln>
path</span><span class=pun>:</span><span class=pln> </span><span class=pun>{</span><span class=pln>
xdist</span><span class=pun>:</span><span class=pln> </span><span class=lit>70</span><span class=pun>,</span><span class=pln>
ydist</span><span class=pun>:</span><span class=pln> </span><span class=pun>-</span><span class=lit>50</span><span class=pln>
</span><span class=pun>}</span><span class=pln> </span><span class=pun>,</span><span class=pln>
duration</span><span class=pun>:</span><span class=pln> </span><span class=lit>2000</span><span class=pln>
</span><span class=pun>});</span><span class=pln>
</span><span class=com>//simulate a flick to the right (default)</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulateGesture</span><span class=pun>(</span><span class=str>"flick"</span><span class=pun>);</span><span class=pln>
</span><span class=com>//simulate a flick down 100 pixels over 50ms</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulateGesture</span><span class=pun>(</span><span class=str>"flick"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln>
axis</span><span class=pun>:</span><span class=pln> </span><span class=str>"y"</span><span class=pun>,</span><span class=pln>
distance</span><span class=pun>:</span><span class=pln> </span><span class=pun>-</span><span class=lit>100</span><span class=pun>,</span><span class=pln>
duration</span><span class=pun>:</span><span class=pln> </span><span class=lit>50</span><span class=pln>
</span><span class=pun>});</span><span class=pln>
</span><span class=pun>});</span></pre>
<h4 id=valid-options2>Valid Options</h4>
<p>
Optional properties for the <code>move</code> gesture:
</p>
<dl>
<dt><code>path</code></dt>
<dd>
Indicates the path of the finger movement. It's an object with three
optional properties: <code>point</code>, <code>xdist</code> and <code>ydist</code>. The <code>point</code> is
the start point and defaults to the center of the node element.
<code>xdist</code> and <code>ydist</code> indicate the distance moved in pixels along the
x- and y-axis. A negative distance value indicates moving to left
for <code>xdist</code> and down for <code>ydist</code>.
</dd>
<dt><code>duration</code></dt>
<dd>
The duration of the gesture in milliseconds.
</dd>
</dl>
<p>
Optional properties for the <code>flick</code> gesture:
</p>
<dl>
<dt><code>point</code></dt>
<dd>
Indicates the [x, y] coordinates where the flick should be
simulated. Default is the center of the node element.
</dd>
<dt><code>axis</code></dt>
<dd>
Valid values are either "x" or "y". Indicates moving axis. The flick
moves in only 4 directions (left, right, up and down).
</dd>
<dt><code>distance</code></dt>
<dd>
Distance to move (in pixels).
</dd>
<dt><code>duration</code></dt>
<dd>
The duration of the gesture in milliseconds. This value may be
adjusted if it is below the minimum velocity to be a flick gesture.
</dd>
</dl>
<h3 id=two-finger-gestures-pinch-and-rotate>Two Finger Gestures: Pinch and Rotate</h3>
<p>
The <code>pinch</code> gesture is used to simulate the pinching and spreading of two
fingers. During a pinch simulation, rotation is also possible. Essentially
<code>pinch</code> and <code>rotate</code> simulations share the same base implementation to allow
both pinching and rotation at the same time. The only difference is <code>pinch</code>
requires <code>start</code> and <code>end</code> option properties while <code>rotate</code> requires <code>rotation</code>
option property.
</p>
<p>
The <code>pinch</code> and <code>rotate</code> gestures can be described as placing 2 fingers along a
circle. Pinching and spreading can be described by start and end circles while
rotation occurs on a single circle. If the radius of the start circle is greater
than the end circle, the gesture becomes a pinch, otherwise it is a spread spread.
</p>
<p>
The following code can be used to simulate two finger gestures:
</p>
<pre class="code prettyprint prettyprinted"><span class=pln>YUI</span><span class=pun>().</span><span class=kwd>use</span><span class=pun>(</span><span class=str>'node-event-simulate'</span><span class=pun>,</span><span class=pln> </span><span class=kwd>function</span><span class=pun>(</span><span class=pln>Y</span><span class=pun>)</span><span class=pln> </span><span class=pun>{</span><span class=pln>
</span><span class=kwd>var</span><span class=pln> node </span><span class=pun>=</span><span class=pln> Y</span><span class=pun>.</span><span class=pln>one</span><span class=pun>(</span><span class=str>"#myElement"</span><span class=pun>);</span><span class=pln>
</span><span class=com>//simulate a pinch: "r1" and "r2" are required</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulateGesture</span><span class=pun>(</span><span class=str>"pinch"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln>
r1</span><span class=pun>:</span><span class=pln> </span><span class=lit>100</span><span class=pun>,</span><span class=pln> </span><span class=com>// start circle radius at the center of the node</span><span class=pln>
r2</span><span class=pun>:</span><span class=pln> </span><span class=lit>50</span><span class=pln> </span><span class=com>// end circle radius at the center of the node</span><span class=pln>
</span><span class=pun>});</span><span class=pln>
</span><span class=com>//simulate a spread: same as "pinch" gesture but r2>r1</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulateGesture</span><span class=pun>(</span><span class=str>"pinch"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln>
r1</span><span class=pun>:</span><span class=pln> </span><span class=lit>50</span><span class=pun>,</span><span class=pln>
r2</span><span class=pun>:</span><span class=pln> </span><span class=lit>100</span><span class=pln>
</span><span class=pun>});</span><span class=pln>
</span><span class=com>//simulate rotating a node 75 degrees counter-clockwise </span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulateGesture</span><span class=pun>(</span><span class=str>"rotate"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln>
rotation</span><span class=pun>:</span><span class=pln> </span><span class=pun>-</span><span class=lit>75</span><span class=pln>
</span><span class=pun>});</span><span class=pln>
</span><span class=com>//simulate a pinch and a rotation at the same time. </span><span class=pln>
</span><span class=com>//fingers start on a circle of radius 100 px, placed at top/bottom</span><span class=pln>
</span><span class=com>//fingers end on a circle of radius 50px, placed at right/left </span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulateGesture</span><span class=pun>(</span><span class=str>"pinch"</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln>
r1</span><span class=pun>:</span><span class=pln> </span><span class=lit>100</span><span class=pun>,</span><span class=pln>
r2</span><span class=pun>:</span><span class=pln> </span><span class=lit>50</span><span class=pun>,</span><span class=pln>
start</span><span class=pun>:</span><span class=pln> </span><span class=lit>0</span><span class=pln>
rotation</span><span class=pun>:</span><span class=pln> </span><span class=lit>90</span><span class=pln>
</span><span class=pun>});</span><span class=pln>
</span><span class=pun>});</span></pre>
<h4 id=valid-options3>Valid Options</h4>
<p>
The optional properties available for <code>pinch</code> and <code>rotate</code> gestures are the
same:
</p>
<dl>
<dt><code>center</code></dt>
<dd>
The center of the circle where the two fingers are placed. Default
is the center of the node element.
</dd>
<dt><code>r1</code></dt>
<dd>
Required for <code>pinch</code> gestures but optional for <code>rotate</code>. Pixel radius
of the start circle. If omitted in <code>rotate</code> gestures, default is
a fourth of the node element width or height, whichever is smaller.
</dd>
<dt><code>r2</code></dt>
<dd>
Required for <code>pinch</code> gestures but optional for <code>rotate</code> gestures.
Pixel radius of the end circle. If omitted in <code>rotate</code> gestures,
default is a fourth of the node element width or height, whichever
is smaller.
</dd>
<dt><code>duration</code></dt>
<dd>
The duration of the gesture in milliseconds.
</dd>
<dt><code>start</code></dt>
<dd>
Start degree of the first finger for the rotation gesture. Default
is 0 (i.e., 12:00 on a clock).
</dd>
<dt><code>rotation</code></dt>
<dd>
Degrees to rotate from the start degree. Negative value means
rotation of counter-clockwise direction.
</dd>
</dl>
<h3 id=gesture-simulation-on-ios>Gesture Simulation on iOS</h3>
<p>
If the gesture simulation is called in iOS, it generates not only touch events
but also <a href=http://developer.apple.com/library/safari/#documentation/UserExperience/Reference/GestureEventClassReference/GestureEvent/GestureEvent.html>
iOS specific gesture events</a>: <code>gesturestart</code>, <code>gesturechange</code>
and <code>gestureend</code>.
</p>
<h3 id=customizing-default-gesture-properties>Customizing Default Gesture Properties</h3>
<p>
You can define custom default behaviors for gesture simulations by modifying the
following <code>Y.GestureSimulation.defaults</code> object properties:
</p>
<ul>
<li>HOLD_TAP</li>
<li>DELAY_TAP</li>
<li>HOLD_PRESS</li>
<li>MIN_HOLD_PRESS</li>
<li>MAX_HOLD_PRESS</li>
<li>DISTANCE_MOVE</li>
<li>DURATION_MOVE</li>
<li>MAX_DURATION_MOVE</li>
<li>MIN_VELOCITY_FLICK</li>
<li>DISTANCE_FLICK</li>
<li>DURATION_FLICK</li>
<li>MAX_DURATION_FLICK</li>
<li>DURATION_PINCH</li>
</ul>
<p>
And an example:
</p>
<pre class="code prettyprint prettyprinted"><span class=pln>YUI</span><span class=pun>().</span><span class=kwd>use</span><span class=pun>(</span><span class=str>'node-event-simulate'</span><span class=pun>,</span><span class=pln> </span><span class=kwd>function</span><span class=pun>(</span><span class=pln>Y</span><span class=pun>)</span><span class=pln> </span><span class=pun>{</span><span class=pln>
</span><span class=kwd>var</span><span class=pln> node </span><span class=pun>=</span><span class=pln> Y</span><span class=pun>.</span><span class=pln>one</span><span class=pun>(</span><span class=str>"#myElement"</span><span class=pun>);</span><span class=pln>
Y</span><span class=pun>.</span><span class=typ>GestureSimulation</span><span class=pun>.</span><span class=pln>defaults </span><span class=pun>=</span><span class=pln> Y</span><span class=pun>.</span><span class=pln>merge</span><span class=pun>(</span><span class=pln>Y</span><span class=pun>.</span><span class=typ>GestureSimulation</span><span class=pun>.</span><span class=pln>defaults</span><span class=pun>,</span><span class=pln> </span><span class=pun>{</span><span class=pln>
HOLD_TAP</span><span class=pun>:</span><span class=pln> </span><span class=lit>3000</span><span class=pln>
</span><span class=pun>});</span><span class=pln>
</span><span class=com>//now touchend event will be generated after 3 sec from the touchstart </span><span class=pln>
</span><span class=com>//event generation.</span><span class=pln>
node</span><span class=pun>.</span><span class=pln>simulateGesture</span><span class=pun>(</span><span class=str>"tap"</span><span class=pun>);</span><span class=pln>
</span><span class=pun>});</span></pre>
<h2 id=caveats-and-coming-soons>Caveats and Coming Soons</h2>
<h3 id=faking>Don't use simulation in user facing code</h3>
<p>
Event simulation is for automated testing. Your application should respond
to real user events. For reasons
<a href=#only-what-you-ask-for>mentioned below</a>, it can be easy to get
your application into a confused runtime state when some callbacks have
been executed but not others.
</p>
<p>
Typically, event simulation is sought to trigger certain callbacks. If a
function needs to respond to user action or be called programmatically, it
should be written accordingly and called directly in the latter case.
Often a better solution is to extract the core logic from the event handler
into a separate function and call that method from the event handler and
from the other part of the application that was going to use simulation.
</p>
<p>
In some cases, simulation is wanted because there may be any number of
subscriptions on a node, and all applicable callbacks should be triggered.
If this is the case, investigate using <a href=https://clarle.github.io/yui3/yui/docs/event-custom/index.html>custom events</a>, instead.
</p>
<p>
The bottom line is, reliance on event simulation in production code is a
warning sign that the architecture is not scaling. The affected code
should be refactored before it becomes a larger problem.
</p>
<h3 id=only-what-you-ask-for>Only what you ask for</h3>
<p>
In many cases, events happen in groups (<code>mousedown</code>, <code>mouseup</code>, <code>click</code>, or
<code>keydown</code>, <code>keyup</code>, <code>keypress</code>). If you simulate an event that is
typically part of a group or is often followed by other events, <em>the
other events will NOT be generated</em> for free.
</p>
<p>
For example, if you simulate a <code>click</code> event on a submit button, you only
simulate the <code>click</code> event. The preceding <code>mousedown</code> and <code>mouseup</code>, as
well as the subsequently expected 'submit' are neither simulated or fired
natively.
</p>
<h3 id=no-synthetic-event-simulation-yet>No synthetic event simulation yet</h3>
<p>
The <a href=https://clarle.github.io/yui3/yui/docs/event/synths.html>Synthetic event system</a> doesn't yet support
defining simulation. In most cases, though, synthetic events are triggered
by other DOM events that can be simulated, so it's often possible to
trigger them by simulating the underlying events. But that ignores the
point that synthetic events are supposed to mask that abstraction for your
benefit.
</p>
<p>
Support for synthetic event simulation is on the roadmap.
</p>
</div>
</div>
<div class=yui3-u-1-4>
<div id=docs-sidebar class=sidebar>
<div id=docs-toc class=sidebox>
<div class=hd>
<h2 class=no-toc>Table of Contents</h2>
</div>
<div class=bd>
<ul class=toc>
<li>
<a href=#simulating-mouse-events>Simulating Mouse Events</a>
</li>
<li>
<a href=#simulating-key-events>Simulating Key Events</a>
</li>
<li>
<a href=#simulating-ui-events>Simulating UI Events</a>
</li>
<li>
<a href=#simulating-touch-gestures>Simulating Touch Gestures</a>
<ul class=toc>
<li>
<a href=#single-touch-gestures-tap-double-tab-and-press>Single Touch Gestures: Tap, Double Tab and Press</a>
<ul class=toc>
<li>
<a href=#valid-options>Valid Options</a>
</li>
</ul>
</li>
<li>
<a href=#single-touch-gestures-move-and-flick>Single Touch Gestures: Move and Flick</a>
<ul class=toc>
<li>
<a href=#valid-options2>Valid Options</a>
</li>
</ul>
</li>
<li>
<a href=#two-finger-gestures-pinch-and-rotate>Two Finger Gestures: Pinch and Rotate</a>
<ul class=toc>
<li>
<a href=#valid-options3>Valid Options</a>
</li>