video_info 2.8.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (276) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/unit_test.yml +39 -0
  3. data/Guardfile +1 -1
  4. data/README.md +8 -21
  5. data/lib/video_info.rb +2 -3
  6. data/lib/video_info/provider.rb +3 -2
  7. data/lib/video_info/providers/vimeo_scraper.rb +12 -2
  8. data/lib/video_info/providers/youtube.rb +4 -0
  9. data/lib/video_info/providers/youtube_api.rb +1 -1
  10. data/lib/video_info/providers/youtube_scraper.rb +42 -25
  11. data/lib/video_info/providers/youtubeplaylist_api.rb +15 -1
  12. data/lib/video_info/version.rb +1 -1
  13. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_invalid_video_url/_available_/1_2_2_1_1.yml +26 -37
  14. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_valid_video/_available_/1_2_1_1_1.yml +26 -35
  15. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author/1_3_7_1.yml +31 -40
  16. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author_thumbnail/1_3_9_1.yml +31 -40
  17. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author_url/1_3_8_1.yml +31 -40
  18. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_date/should_show_correct_date.yml +31 -40
  19. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_description/1_3_10_1.yml +31 -40
  20. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_duration/1_3_12_1.yml +31 -40
  21. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_keywords/1_3_11_1.yml +31 -40
  22. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail/{1_3_19_1.yml → 1_3_21_1.yml} +31 -40
  23. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_large/1_3_18_1.yml +31 -40
  24. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_medium/1_3_17_1.yml +31 -40
  25. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_small/1_3_16_1.yml +31 -40
  26. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_title/1_3_6_1.yml +31 -40
  27. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_view_count/{1_3_20_1.yml → 1_3_22_1.yml} +31 -40
  28. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_password_required_video/_available_/1_2_3_1_1.yml +38 -37
  29. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_password_required_video/_available_/2_2_3_1_1.yml +28 -25
  30. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_this_video_does_not_exist_video/_available_/1_2_2_1_1.yml +44 -41
  31. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_this_video_does_not_exist_video/_available_/2_2_2_1_1.yml +26 -23
  32. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_valid_video/_available_/1_2_1_1_1.yml +46 -38
  33. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_valid_video/_available_/2_2_1_1_1.yml +24 -23
  34. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author/1_13_2_1.yml +33 -31
  35. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author_thumbnail/1_13_3_1.yml +33 -31
  36. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author_url/1_13_4_1.yml +32 -28
  37. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/available_/1_13_1_1.yml +33 -31
  38. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/date/1_13_7_1.yml +34 -34
  39. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/description/1_13_6_1.yml +33 -30
  40. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/duration/1_13_8_1.yml +34 -32
  41. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/height/1_13_10_1.yml +33 -30
  42. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/keywords/1_13_9_1.yml +34 -34
  43. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_large/1_13_14_1.yml +34 -33
  44. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_medium/1_13_13_1.yml +34 -33
  45. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_small/1_13_12_1.yml +34 -33
  46. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/title/1_13_5_1.yml +33 -31
  47. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/view_count/1_13_15_1.yml +34 -33
  48. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/width/1_13_11_1.yml +34 -33
  49. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/1_3_20_1.yml +158 -0
  50. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/2_3_20_1.yml +80 -0
  51. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/1_3_19_1.yml +158 -0
  52. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/2_3_19_1.yml +85 -0
  53. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/1_3_21_1.yml +159 -0
  54. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/2_3_21_1.yml +80 -0
  55. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_date/should_have_correct_upload_date.yml +82 -68
  56. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_description/1_3_7_1.yml +44 -34
  57. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_description/2_3_7_1.yml +36 -35
  58. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_duration/1_3_9_1.yml +45 -37
  59. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_duration/2_3_9_1.yml +39 -33
  60. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_height/1_3_11_1.yml +46 -38
  61. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_height/2_3_11_1.yml +36 -35
  62. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_keywords/should_return_a_string_list_of_keywords.yml +85 -71
  63. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail/1_3_18_1.yml +236 -0
  64. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail/2_3_18_1.yml +82 -0
  65. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_large/1_3_15_1.yml +67 -53
  66. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_large/2_3_15_1.yml +37 -34
  67. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_medium/1_3_14_1.yml +67 -54
  68. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_medium/2_3_14_1.yml +37 -32
  69. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_small/1_3_13_1.yml +67 -53
  70. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_small/2_3_13_1.yml +37 -32
  71. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_title/1_3_6_1.yml +45 -36
  72. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_title/2_3_6_1.yml +39 -33
  73. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/1_3_22_1.yml +158 -0
  74. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/2_3_22_1.yml +84 -0
  75. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_width/1_3_10_1.yml +46 -40
  76. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_width/2_3_10_1.yml +37 -34
  77. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail/1_12_1_1.yml +234 -0
  78. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail/2_12_1_1.yml +78 -0
  79. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_large/1_12_2_1.yml +233 -0
  80. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_large/2_12_2_1.yml +78 -0
  81. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_medium/1_12_3_1.yml +235 -0
  82. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_medium/2_12_3_1.yml +73 -0
  83. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_small/1_12_4_1.yml +234 -0
  84. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_small/2_12_4_1.yml +77 -0
  85. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/_available_/with_invalid_video/_available_/1_2_2_1_1.yml +25 -17
  86. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/_available_/with_valid_video/_available_/1_2_1_1_1.yml +28 -18
  87. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_duration/1_4_7_1.yml +33 -25
  88. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_height/1_4_9_1.yml +33 -25
  89. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_large/1_4_12_1.yml +33 -24
  90. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_medium/1_4_11_1.yml +34 -25
  91. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_small/1_4_10_1.yml +33 -25
  92. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_title/1_4_6_1.yml +33 -24
  93. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_width/1_4_8_1.yml +33 -24
  94. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_duration/1_3_7_1.yml +33 -25
  95. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_height/1_3_9_1.yml +33 -23
  96. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail/{1_3_13_1.yml → 1_3_15_1.yml} +33 -23
  97. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_large/1_3_12_1.yml +33 -23
  98. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_medium/1_3_11_1.yml +33 -23
  99. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_small/1_3_10_1.yml +33 -25
  100. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_title/1_3_6_1.yml +33 -25
  101. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_width/1_3_8_1.yml +33 -23
  102. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/1_2_2_1_1.yml +20 -442
  103. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/2_2_2_1_1.yml +81 -21
  104. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/1_2_2_11_1.yml +24 -446
  105. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/2_2_2_11_1.yml +81 -21
  106. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/1_2_2_8_1.yml +25 -449
  107. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/2_2_2_8_1.yml +81 -21
  108. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/1_2_2_10_1.yml +24 -450
  109. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/2_2_2_10_1.yml +81 -21
  110. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/1_2_2_9_1.yml +23 -449
  111. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/2_2_2_9_1.yml +81 -21
  112. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/1_2_2_7_1.yml +24 -446
  113. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/2_2_2_7_1.yml +81 -21
  114. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/1_2_2_18_1.yml +59 -0
  115. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/2_2_2_18_1.yml +114 -0
  116. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_valid_video/_available_/1_2_1_1_1.yml +23 -20
  117. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_valid_video/_available_/2_2_1_1_1.yml +152 -90
  118. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/1_2_3_1_1.yml +23 -447
  119. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/2_2_3_1_1.yml +81 -21
  120. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_a_video_without_description/_description/1_1_1_1.yml +59 -0
  121. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_date/should_return_date_video_was_posted.yml +181 -110
  122. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_description/1_17_7_1.yml +22 -19
  123. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_description/2_17_7_1.yml +152 -90
  124. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_duration/1_17_9_1.yml +23 -20
  125. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_duration/2_17_9_1.yml +152 -90
  126. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_keywords/1_17_8_1.yml +23 -20
  127. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_keywords/2_17_8_1.yml +152 -90
  128. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_title/1_17_6_1.yml +20 -17
  129. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_title/2_17_6_1.yml +152 -90
  130. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/1_17_17_1.yml +59 -0
  131. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/2_17_17_1.yml +187 -0
  132. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author/1_3_6_1.yml +74 -15
  133. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author/2_3_6_1.yml +152 -90
  134. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_thumbnail/1_3_7_1.yml +74 -15
  135. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_thumbnail/2_3_7_1.yml +271 -144
  136. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/1_3_8_1.yml +21 -18
  137. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/2_3_8_1.yml +271 -144
  138. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/can_be_called_twice_and_receive_the_same_value.yml +391 -0
  139. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_date/should_return_date_video_was_posted.yml +173 -108
  140. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_description/1_3_10_1.yml +23 -19
  141. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_description/2_3_10_1.yml +152 -90
  142. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_duration/1_3_12_1.yml +21 -18
  143. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_duration/2_3_12_1.yml +152 -90
  144. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_keywords/1_3_11_1.yml +21 -18
  145. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_keywords/2_3_11_1.yml +152 -90
  146. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_title/1_3_9_1.yml +23 -20
  147. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_title/2_3_9_1.yml +152 -90
  148. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/1_3_21_1.yml +59 -0
  149. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/2_3_21_1.yml +187 -0
  150. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_invalid_playlist/_available_/1_2_2_1_1.yml +87 -27
  151. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_list_url/_available_/1_2_3_1_1.yml +120 -60
  152. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_valid_playlist/_available_/1_2_1_1_1.yml +120 -60
  153. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author/1_3_21_1.yml +165 -0
  154. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_thumbnail/1_3_22_1.yml +274 -0
  155. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_url/1_3_23_1.yml +274 -0
  156. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_description/1_3_7_1.yml +131 -71
  157. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_keywords/1_3_8_1.yml +131 -71
  158. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail/1_3_18_1.yml +165 -0
  159. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_large/1_3_15_1.yml +131 -71
  160. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_large_2x/1_3_16_1.yml +165 -0
  161. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_maxres/1_3_17_1.yml +165 -0
  162. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_medium/1_3_14_1.yml +131 -71
  163. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_small/1_3_13_1.yml +131 -71
  164. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_title/1_3_6_1.yml +131 -71
  165. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_videos/returns_list_of_videos_in_playlist.yml +78 -231
  166. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_that_does_not_exist_in_embed_path/_videos/1_4_2_1.yml +81 -21
  167. data/spec/lib/video_info/providers/dailymotion_spec.rb +6 -6
  168. data/spec/lib/video_info/providers/vimeo_spec.rb +21 -21
  169. data/spec/lib/video_info/providers/wistia_spec.rb +6 -6
  170. data/spec/lib/video_info/providers/youtube_playlist_spec.rb +22 -28
  171. data/spec/lib/video_info/providers/youtube_scraper_spec.rb +4 -2
  172. data/spec/lib/video_info/providers/youtube_spec.rb +28 -26
  173. data/spec/lib/video_info_spec.rb +0 -4
  174. data/spec/spec_helper.rb +6 -1
  175. data/tmp/rspec_guard_result +25 -0
  176. data/video_info.gemspec +4 -4
  177. metadata +85 -215
  178. data/.travis.yml +0 -21
  179. data/lib/video_info/providers/vkontakte.rb +0 -208
  180. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/1_3_18_1.yml +0 -150
  181. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/2_3_18_1.yml +0 -79
  182. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/1_3_17_1.yml +0 -150
  183. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/2_3_17_1.yml +0 -79
  184. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/1_3_19_1.yml +0 -150
  185. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/2_3_19_1.yml +0 -79
  186. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail/1_3_16_1.yml +0 -222
  187. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail/2_3_16_1.yml +0 -79
  188. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/1_3_20_1.yml +0 -150
  189. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/2_3_20_1.yml +0 -79
  190. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail/1_12_1_1.yml +0 -222
  191. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail/2_12_1_1.yml +0 -75
  192. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_large/1_12_2_1.yml +0 -222
  193. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_large/2_12_2_1.yml +0 -75
  194. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_medium/1_12_3_1.yml +0 -222
  195. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_medium/2_12_3_1.yml +0 -75
  196. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_small/1_12_4_1.yml +0 -222
  197. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_193970014/thumbnail_small/2_12_4_1.yml +0 -75
  198. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_hashes/available_/1_2_6_1_1.yml +0 -86
  199. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_invalid_video/available_/1_2_2_1_1.yml +0 -50
  200. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_private_video/available_/1_2_3_1_1.yml +0 -132
  201. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_redirect/available_/1_2_4_1_1.yml +0 -134
  202. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_redirect_to_main_page_for_auth/available_/1_2_5_1_1.yml +0 -85
  203. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_valid_video/available_/1_2_1_1_1.yml +0 -87
  204. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/author/1_5_14_1.yml +0 -48
  205. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/author_thumbnail/1_5_15_1.yml +0 -48
  206. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/author_url/1_5_16_1.yml +0 -48
  207. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/description/1_5_8_1.yml +0 -48
  208. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/duration/1_5_10_1.yml +0 -48
  209. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/embed_code/1_5_6_1.yml +0 -48
  210. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/embed_url/1_5_5_1.yml +0 -48
  211. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/height/1_5_12_1.yml +0 -48
  212. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/thumbnail_small/1_5_18_1.yml +0 -48
  213. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/title/1_5_7_1.yml +0 -48
  214. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/view_count/1_5_13_1.yml +0 -48
  215. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/width/1_5_11_1.yml +0 -50
  216. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_https_/vk_com/id44052340_z_video61291456_159590018_2F2521d92730a272a9ea/author/1_3_7_1.yml +0 -48
  217. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_https_/vk_com/id44052340_z_video61291456_159590018_2F2521d92730a272a9ea/embed_code/1_3_6_1.yml +0 -48
  218. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_https_/vk_com/id44052340_z_video61291456_159590018_2F2521d92730a272a9ea/embed_url/1_3_5_1.yml +0 -48
  219. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_https_/vk_com/id44052340_z_video61291456_159590018_2F2521d92730a272a9ea/title/1_3_4_1.yml +0 -48
  220. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video-54799401_165822734/title/1_7_4_1.yml +0 -48
  221. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video3552522_171340713/embed_url/1_10_1_1.yml +0 -48
  222. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/description/1_6_8_1.yml +0 -48
  223. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/duration/1_6_10_1.yml +0 -48
  224. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/embed_code/1_6_6_1.yml +0 -48
  225. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/embed_url/1_6_5_1.yml +0 -48
  226. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/height/1_6_12_1.yml +0 -48
  227. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/title/1_6_7_1.yml +0 -48
  228. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/view_count/1_6_13_1.yml +0 -48
  229. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_161598544/width/1_6_11_1.yml +0 -48
  230. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_videos43640822_/video43640822_168790809/author/1_4_5_1.yml +0 -48
  231. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_videos43640822_/video43640822_168790809/author_thumbnail/1_4_6_1.yml +0 -48
  232. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_videos43640822_/video43640822_168790809/author_url/1_4_7_1.yml +0 -48
  233. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_videos43640822_/video43640822_168790809/title/1_4_4_1.yml +0 -48
  234. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/foo/_available/1_2_2_1_1.yml +0 -1447
  235. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/foo/_available/2_2_2_1_1.yml +0 -156
  236. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/1_2_3_1_1.yml +0 -485
  237. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/2_2_3_1_1.yml +0 -54
  238. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/1_2_3_11_1.yml +0 -481
  239. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/2_2_3_11_1.yml +0 -54
  240. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/1_2_3_8_1.yml +0 -483
  241. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/2_2_3_8_1.yml +0 -54
  242. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/1_2_3_10_1.yml +0 -484
  243. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/2_2_3_10_1.yml +0 -54
  244. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/1_2_3_9_1.yml +0 -484
  245. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/2_2_3_9_1.yml +0 -54
  246. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/1_2_3_7_1.yml +0 -484
  247. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/2_2_3_7_1.yml +0 -54
  248. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/1_2_2_17_1.yml +0 -485
  249. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/1_2_3_17_1.yml +0 -485
  250. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/2_2_2_17_1.yml +0 -54
  251. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/2_2_3_17_1.yml +0 -54
  252. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/1_2_4_1_1.yml +0 -484
  253. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/2_2_4_1_1.yml +0 -54
  254. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/1_17_16_1.yml +0 -56
  255. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/2_17_16_1.yml +0 -125
  256. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/1_3_20_1.yml +0 -56
  257. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/2_3_20_1.yml +0 -125
  258. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_invalid_playlist/_available_/2_2_2_1_1.yml +0 -60
  259. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_list_url/_available_/2_2_3_1_1.yml +0 -94
  260. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_valid_playlist/_available_/2_2_1_1_1.yml +0 -94
  261. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author/1_3_19_1.yml +0 -105
  262. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author/2_3_19_1.yml +0 -105
  263. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_thumbnail/1_3_20_1.yml +0 -189
  264. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_thumbnail/2_3_20_1.yml +0 -189
  265. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_url/1_3_21_1.yml +0 -189
  266. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_url/2_3_21_1.yml +0 -189
  267. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_description/2_3_7_1.yml +0 -105
  268. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_keywords/2_3_8_1.yml +0 -105
  269. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail/1_3_16_1.yml +0 -105
  270. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail/2_3_16_1.yml +0 -105
  271. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_large/2_3_15_1.yml +0 -105
  272. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_medium/2_3_14_1.yml +0 -105
  273. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_small/2_3_13_1.yml +0 -105
  274. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_title/2_3_6_1.yml +0 -105
  275. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_that_does_not_exist_in_embed_path/_videos/2_4_2_1.yml +0 -54
  276. data/spec/lib/video_info/providers/vkontakte_spec.rb +0 -236
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  User-Agent:
11
- - VideoInfo/2.7
11
+ - VideoInfo/2.8.0
12
12
  Accept:
13
13
  - "*/*"
14
14
  response:
@@ -16,51 +16,51 @@ http_interactions:
16
16
  code: 404
17
17
  message: Not Found
18
18
  headers:
19
+ Connection:
20
+ - keep-alive
21
+ Content-Length:
22
+ - '149583'
19
23
  Server:
20
24
  - nginx
21
25
  Content-Type:
22
26
  - text/html; charset=UTF-8
23
27
  Expires:
24
- - Mon, 27 Mar 2017 09:01:05 GMT
28
+ - Tue, 27 Oct 2020 06:22:57 GMT
25
29
  X-Frame-Options:
26
30
  - sameorigin
31
+ X-Bapp-Server:
32
+ - pweb-v4874-vsflp
27
33
  Via:
28
- - 1.1 varnish
29
- - 1.1 varnish
30
- - 1.1 varnish
34
+ - 1.1 varnish, 1.1 varnish, 1.1 varnish
31
35
  Cache-Control:
32
36
  - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
33
37
  X-Varnish-Cache:
34
38
  - '0'
35
39
  X-Vserver:
36
- - dfvimeowebproxy3
37
- Fastly-Debug-Digest:
38
- - 5c8cad581c94a8a0faf793c8c4898a0848cc94c3ce18c6c8e7834c3408b6d12c
39
- Content-Length:
40
- - '57829'
40
+ - infra-webproxy-a-3
41
+ X-Vimeo-Dc:
42
+ - ge
41
43
  Accept-Ranges:
42
44
  - bytes
43
45
  Date:
44
- - Mon, 27 Mar 2017 21:01:06 GMT
46
+ - Tue, 27 Oct 2020 18:22:57 GMT
45
47
  Age:
46
48
  - '0'
47
- Connection:
48
- - keep-alive
49
49
  X-Served-By:
50
- - cache-iad2141-IAD, cache-lax8628-LAX
50
+ - cache-bwi5140-BWI, cache-cwb20520-CWB
51
51
  X-Cache:
52
52
  - MISS, MISS
53
53
  X-Cache-Hits:
54
54
  - 0, 0
55
55
  X-Timer:
56
- - S1490648465.870236,VS0,VE379
56
+ - S1603822977.307973,VS0,VE563
57
57
  Vary:
58
58
  - Accept-Encoding
59
59
  body:
60
60
  encoding: UTF-8
61
61
  string: ''
62
- http_version:
63
- recorded_at: Mon, 27 Mar 2017 21:01:06 GMT
62
+ http_version:
63
+ recorded_at: Tue, 27 Oct 2020 18:22:57 GMT
64
64
  - request:
65
65
  method: get
66
66
  uri: https://vimeo.com/0812455
@@ -79,50 +79,50 @@ http_interactions:
79
79
  code: 404
80
80
  message: Not Found
81
81
  headers:
82
+ Connection:
83
+ - keep-alive
84
+ Content-Length:
85
+ - '35169'
82
86
  Server:
83
87
  - nginx
84
88
  Content-Type:
85
89
  - text/html; charset=UTF-8
86
90
  Expires:
87
- - Mon, 27 Mar 2017 09:01:06 GMT
91
+ - Tue, 27 Oct 2020 06:22:58 GMT
88
92
  X-Frame-Options:
89
93
  - sameorigin
94
+ X-Bapp-Server:
95
+ - pweb-v4874-lxfdj
90
96
  Via:
91
- - 1.1 varnish
92
- - 1.1 varnish
93
- - 1.1 varnish
97
+ - 1.1 varnish, 1.1 varnish, 1.1 varnish
94
98
  Cache-Control:
95
99
  - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
96
100
  X-Varnish-Cache:
97
101
  - '0'
98
102
  X-Vserver:
99
- - dfvimeowebproxy3
100
- Fastly-Debug-Digest:
101
- - 5c8cad581c94a8a0faf793c8c4898a0848cc94c3ce18c6c8e7834c3408b6d12c
102
- Content-Length:
103
- - '15228'
103
+ - infra-webproxy-a-3
104
+ X-Vimeo-Dc:
105
+ - ge
104
106
  Accept-Ranges:
105
107
  - bytes
106
108
  Date:
107
- - Mon, 27 Mar 2017 21:01:06 GMT
109
+ - Tue, 27 Oct 2020 18:22:58 GMT
108
110
  Age:
109
111
  - '0'
110
- Connection:
111
- - keep-alive
112
112
  X-Served-By:
113
- - cache-iad2141-IAD, cache-lax8622-LAX
113
+ - cache-bwi5135-BWI, cache-cwb20521-CWB
114
114
  X-Cache:
115
115
  - MISS, MISS
116
116
  X-Cache-Hits:
117
117
  - 0, 0
118
118
  X-Timer:
119
- - S1490648466.281941,VS0,VE639
119
+ - S1603822978.308210,VS0,VE377
120
120
  Vary:
121
121
  - Accept-Encoding
122
122
  body:
123
123
  encoding: ASCII-8BIT
124
124
  string: !binary |-
125
- PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KIDxoZWFkPgogPG1ldGEgY2hhcnNldD0idXRmLTgiPgoKCiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTEuMCx1c2VyLXNjYWxhYmxlPW5vIj4KIAo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Ii8vcGxheWVyLnZpbWVvLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9pLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9mLnZpbWVvY2RuLmNvbSI+CjxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE5ODg0MDI4OTYzIj4KCgogIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJTb3JyeSwgd2UgY291bGRuJnJzcXVvO3QgZmluZCB0aGF0IHBhZ2UiPgogIDxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0ibm9pbmRleCI+CgoKCgoKIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIgaHJlZj0iaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9mYXZpY29uL21haW4tdG91Y2hfMTgwIj4KCjxsaW5rIHJlbD0ibWFzay1pY29uIiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N2Zy9sZWdhY3lfdmlld19zdXBwb3J0L2lyaXNfaWNvbl92XzY0LnN2ZyIgY29sb3I9IiMxNzI3MmUiPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vaW1hZ2VzX3Y2L2Zhdmljb24uaWNvIiBkYXRhLXBsYXk9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9wbGF5XzMyIiBkYXRhLXBhdXNlPSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vcGF1c2VfMzIiPgoKPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi1UaWxlSW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9tYWluLXRvdWNoXzE0NCI+CjxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tVGlsZUNvbG9yIiBjb250ZW50PSIjMDBhZGVmIj4KCjxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvc2VhcmNoL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iVmltZW8gc2VhcmNoIj4KPGxpbmsgcmVsPSJsb2dvIiB0eXBlPSJpbWFnZS9zdmciIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vbG9nby5zdmciPgogPHRpdGxlPlZpbWVVaE9oPC90aXRsZT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9nbG9iYWwvaWNvbl9mb250cy5taW4uY3NzP0RFViI+CgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N0eWxlcy9jc3Nfb3B0L2V4Y2VwdGlvbl9jb21iaW5lZC5taW4uY3NzPzcwMmFiZWMxIj4KCgoKIDxzY3JpcHQ+CiAgCiAgdmFyIHBsYXllckFzc2V0VXJscyA9IHsianMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzIuNTMuMTBcL2pzXC9wbGF5ZXIuanMiLCJtb29nIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC9mbGFzaFwvbW9vZ2Fsb29wXC82LjQuNVwvbW9vZ2Fsb29wLnN3ZiIsImNocm9tZWxlc3NfY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8yLjUzLjEwXC9jc3NcL2Nocm9tZWxlc3MuY3NzIiwiY2hyb21lbGVzc19qcyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvMi41My4xMFwvanNcL2Nocm9tZWxlc3MuanMiLCJtb29nX2pzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8yLjUzLjEwXC9qc1wvbW9vZ2Fsb29wLmpzIiwiY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8yLjUzLjEwXC9jc3NcL3BsYXllci5jc3MiLCJwbGF5ZXJfdXJsIjoicGxheWVyLnZpbWVvLmNvbSJ9OwoKICB2YXIgX2V4dGVuZCA9IGZ1bmN0aW9uKCl7Zm9yKHZhciByPWFyZ3VtZW50c1swXSxuPTEsZT1hcmd1bWVudHMubGVuZ3RoO2U+bjtuKyspe3ZhciB0PWFyZ3VtZW50c1tuXTtmb3IodmFyIGEgaW4gdCl0Lmhhc093blByb3BlcnR5KGEpJiYoclthXT10W2FdKX1yZXR1cm4gcn07CgogIHdpbmRvdyA9IF9leHRlbmQod2luZG93LCB7InZpbWVvX2VzaSI6eyJjb25maWciOnsiYXV0b2NvbXBsZXRlX2VuYWJsZWQiOnRydWV9fSwiZ2xvYmFsX25vdGlmaWNhdGlvbnMiOltdfSk7Cjwvc2NyaXB0PgoKIDxzdHlsZSBpZD0iZXNpX3JpYmJvbiI+CiAuZXNpX3JpYmJvbiB7CiBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB3aWR0aCUzRCUyMjUwMCUyMiUzRSUzQ3JlY3QlMjB4JTNEJTIyMCUyMiUyMHdpZHRoJTNEJTIyMzQlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjMyOGExZDglMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjM0JTIyJTIwd2lkdGglM0QlMjI1NSUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyMzI0OGJjNyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyODklMjIlMjB3aWR0aCUzRCUyMjMlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjMxZTM5NTUlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjkyJTIyJTIwd2lkdGglM0QlMjIxNTclMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjMyZjUxMzIlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjI0OSUyMiUyMHdpZHRoJTNEJTIyMzAlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjM0MTY4MjglMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjI3OSUyMiUyMHdpZHRoJTNEJTIyNTQlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjM3ZWFhMjklMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjMzMyUyMiUyMHdpZHRoJTNEJTIyMTElMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjNkY2JkNDIlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjM0NCUyMiUyMHdpZHRoJTNEJTIyNCUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2RjYWQyNyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyMzQ4JTIyJTIwd2lkdGglM0QlMjIyMyUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2UzOWEyMyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyMzcxJTIyJTIwd2lkdGglM0QlMjIzNSUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2NjNTU0YyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyNDA2JTIyJTIwd2lkdGglM0QlMjIxOCUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2NhNDczZiUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyNDI0JTIyJTIwd2lkdGglM0QlMjI2JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzYTcyODM0JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjI0MzAlMjIlMjB3aWR0aCUzRCUyMjQ2JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzNzM1Njc1JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjI0NzYlMjIlMjB3aWR0aCUzRCUyMjEyJTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzNjUzZTY2JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjI0ODglMjIlMjB3aWR0aCUzRCUyMjEyJTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzM2IzMTViJTIyJTJGJTNFJTNDJTJGc3ZnJTNFJTBBKSB0b3AgbGVmdC81MDBweCAxMDAlIHJlcGVhdC14ICFpbXBvcnRhbnQ7CiB9CiA8L3N0eWxlPgogCiA8c2NyaXB0PgogdmFyIGFibGluY29sbl9jb25maWcgPSBhYmxpbmNvbG5fY29uZmlnIHx8IHt9OwogYWJsaW5jb2xuX2NvbmZpZy50ZXN0cyA9IHsiREZQQWRDb2hvcnRzIjp7ImlkIjo2OSwibmFtZSI6IkRGUEFkQ29ob3J0cyIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6bnVsbCwiZXhwZXJpbWVudHMiOltdfSwiRXhwbG9yZSI6eyJpZCI6NjQsIm5hbWUiOiJFeHBsb3JlIiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjoiXC8iLCJleHBlcmltZW50cyI6W119LCJUb3BOYXZBQiI6eyJpZCI6NjcsIm5hbWUiOiJUb3BOYXZBQiIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOltdfSwiVG9wTmF2Q29weVRlc3QiOnsiaWQiOjc3LCJuYW1lIjoiVG9wTmF2Q29weVRlc3QiLCJidWNrZXRzIjoxMDAwLCJpbnB1dCI6InZ1aWQiLCJ1cmwiOiJcL2Fib3V0IiwiZXhwZXJpbWVudHMiOltdfSwiVG9wTmF2Lkhvc3RWaWRlb3NMaW5rIjp7ImlkIjoxMDMsIm5hbWUiOiJUb3BOYXYuSG9zdFZpZGVvc0xpbmsiLCJidWNrZXRzIjoxMDAwLCJpbnB1dCI6InZ1aWQiLCJ1cmwiOm51bGwsImV4cGVyaW1lbnRzIjpbXX19OwogPC9zY3JpcHQ+CgoKIAogPHNjcmlwdD4KIHZhciBnb29nbGV0YWcgPSBnb29nbGV0YWcgfHwge30sCiBncHRhZHNsb3RzID0gW10sCiBsYW5ndWFnZSwKIGhhc191cGxvYWRlZCwKIGNvaG9ydDsKIGdvb2dsZXRhZy5jbWQgPSBnb29nbGV0YWcuY21kIHx8IFtdOwoKIChmdW5jdGlvbigpIHsKIHZhciBnYWRzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksCiB1c2VTU0wgPSAnaHR0cHM6JyA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCwKIG5vZGU7CiBnYWRzLmFzeW5jID0gdHJ1ZTsKIGdhZHMudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogZ2Fkcy5zcmMgPSAodXNlU1NMID8gJ2h0dHBzOicgOiAnaHR0cDonKSArICcvL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vdGFnL2pzL2dwdC5qcyc7CiBub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdOwogbm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnYWRzLCBub2RlKTsKIH0pKCk7CgogZ29vZ2xldGFnLmNtZC5wdXNoKGZ1bmN0aW9uKCkgewogCiAgbGFuZ3VhZ2UgPSBkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopbGFuZ3VhZ2VccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKTsKIGhhc191cGxvYWRlZCA9IChkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopaGFzX3VwbG9hZGVkXHMqXD1ccyooW147XSopLiokKXxeLiokLywgIiQxIikpID8gJ1knIDogJ04nOwogCiBjb2hvcnQgPSAod2luZG93LkFCTGluY29sbikgPyB3aW5kb3cuQUJMaW5jb2xuLmdldFRlc3QoJ0RGUEFkQ29ob3J0cycpLmdldCgnY29ob3J0JywgJ0EnKSA6ICdBJzsKCiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdsYW5ndWFnZScsIFtsYW5ndWFnZV0pOwogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnaXNfdXBsb2FkZXInLCBbaGFzX3VwbG9hZGVkXSk7CiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnQnLCBbY29ob3J0XSk7CiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnRfYScsIFsoY29ob3J0ID09PSAnQScpID8gJ1knIDogJ04nXSk7CiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnRfYicsIFsoY29ob3J0ID09PSAnQicpID8gJ1knIDogJ04nXSk7CgogIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ3NlYycsIFsnZmFsc2UnXSk7CgogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnbG9nZ2VkX2luJywgWydmYWxzZSddKTsKCiAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygncnB2JywgKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxMDApKzEpLnRvU3RyaW5nKCkpOwoKIGdvb2dsZXRhZy5wdWJhZHMoKS5lbmFibGVBc3luY1JlbmRlcmluZygpOwogZ29vZ2xldGFnLmVuYWJsZVNlcnZpY2VzKCk7CiB9KTsKIDwvc2NyaXB0PgoKPHNjcmlwdD4KIWZ1bmN0aW9uKCl7dmFyIGU9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OmV4cG9ydHMscj1bXTtpZihlLnBlcmZvcm1hbmNlfHwoZS5wZXJmb3JtYW5jZT17fSksZS5wZXJmb3JtYW5jZS5ub3d8fChlLnBlcmZvcm1hbmNlLm5vdz1wZXJmb3JtYW5jZS5ub3d8fHBlcmZvcm1hbmNlLndlYmtpdE5vd3x8cGVyZm9ybWFuY2UubXNOb3d8fHBlcmZvcm1hbmNlLm1vek5vdyksIWUucGVyZm9ybWFuY2Uubm93KXt2YXIgbj1EYXRlLm5vdz9EYXRlLm5vdygpOituZXcgRGF0ZTtwZXJmb3JtYW5jZS50aW1pbmcmJnBlcmZvcm1hbmNlLnRpbWluZyYmKG49cGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydCksZS5wZXJmb3JtYW5jZS5ub3c9ZnVuY3Rpb24oKXt2YXIgZT1EYXRlLm5vdz9EYXRlLm5vdygpOituZXcgRGF0ZTtyZXR1cm4gZS1ufX1lLnBlcmZvcm1hbmNlLm1hcmt8fChlLnBlcmZvcm1hbmNlLm1hcms9ZS5wZXJmb3JtYW5jZS53ZWJraXRNYXJrP2UucGVyZm9ybWFuY2Uud2Via2l0TWFyazpmdW5jdGlvbihuKXtyLmZvckVhY2goZnVuY3Rpb24oZSxyLGEpe2UubmFtZT09PW4mJmEuc3BsaWNlKHIsMSl9KSxyLnB1c2goe25hbWU6bixlbnRyeVR5cGU6Im1hcmsiLHN0YXJ0VGltZTplLnBlcmZvcm1hbmNlLm5vdygpLGR1cmF0aW9uOjB9KX0pLGUucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZXx8KGUucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZT1lLnBlcmZvcm1hbmNlLndlYmtpdEdldEVudHJpZXNCeVR5cGU/ZS5wZXJmb3JtYW5jZS53ZWJraXRHZXRFbnRyaWVzQnlUeXBlOmZ1bmN0aW9uKGUpe3ZhciBuPWZ1bmN0aW9uKHIpe3JldHVybiByLmVudHJ5VHlwZT09PWV9O3JldHVybi0xIT09WyJtYXJrIiwibWVhc3VyZSJdLmluZGV4T2YoZSk/ci5maWx0ZXIobik6dm9pZCAwfSksZS5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lfHwoZS5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lPWUucGVyZm9ybWFuY2Uud2Via2l0R2V0RW50cmllc0J5TmFtZT9lLnBlcmZvcm1hbmNlLndlYmtpdEdldEVudHJpZXNCeU5hbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHIuZmlsdGVyKGZ1bmN0aW9uKHIpe3JldHVybiByLm5hbWU9PT1lfSl9KSxlLnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXN8fChlLnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXM9ZS5wZXJmb3JtYW5jZS53ZWJraXRDbGVhck1lYXN1cmVzP2UucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJNZWFzdXJlczpmdW5jdGlvbigpe3IuZm9yRWFjaChmdW5jdGlvbihlLHIsbil7Im1lYXN1cmUiPT09ZS5lbnRyeVR5cGUmJm4uc3BsaWNlKHIsMSl9KSxyPVtdfSksZS5wZXJmb3JtYW5jZS5jbGVhck1hcmtzfHwoZS5wZXJmb3JtYW5jZS5jbGVhck1hcmtzPWUucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJNYXJrcz9lLnBlcmZvcm1hbmNlLndlYmtpdENsZWFyTWFya3M6ZnVuY3Rpb24oKXtyLmZvckVhY2goZnVuY3Rpb24oZSxyLG4peyJtYXJrIj09PWUuZW50cnlUeXBlJiZuLnNwbGljZShyLDEpfSkscj1bXX0pLGUucGVyZm9ybWFuY2UubWVhc3VyZXx8KGUucGVyZm9ybWFuY2UubWVhc3VyZT1lLnBlcmZvcm1hbmNlLndlYmtpdE1lYXN1cmU/ZS5wZXJmb3JtYW5jZS53ZWJraXRNZWFzdXJlOmZ1bmN0aW9uKGUsbixhKXt2YXIgdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHIubmFtZT09PWUmJiJtYXJrIj09PXIuZW50cnlUeXBlfX0sbz1yLmZpbHRlcih0KG4pKVswXSxtPXIuZmlsdGVyKHQoYSkpWzBdLGk9bS5zdGFydFRpbWUtby5zdGFydFRpbWU7ci5wdXNoKHtuYW1lOmUsZW50cnlUeXBlOiJtZWFzdXJlIixzdGFydFRpbWU6by5zdGFydFRpbWUsZHVyYXRpb246aX0pfSl9KCksd2luZG93Lm1hcmtVc2VyVGltZT1mdW5jdGlvbihlKXt2YXIgcj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxmdW5jdGlvbihlKXtzZXRUaW1lb3V0KGUsMCl9O3IoZnVuY3Rpb24oKXt3aW5kb3cucGVyZm9ybWFuY2UubWFyayhlKSx3aW5kb3cuY29uc29sZSYmY29uc29sZS50aW1lU3RhbXAmJmNvbnNvbGUudGltZVN0YW1wKGUpfSl9OwoKKGZ1bmN0aW9uKCkgewogd2luZG93Lm1hcmtVc2VyVGltZSA9IGZ1bmN0aW9uKGxhYmVsKSB7CiB3aW5kb3cuX2d0bSA9IHdpbmRvdy5fZ3RtIHx8IFtdOwoKIC8vIEV4aXQgZWFybHkgaWYgdGhlIGJyb3dzZXIgY2FuJ3QgaGFuZGxlIG5ldyB0aGluZ3MKIGlmICh0eXBlb2YgcGVyZm9ybWFuY2UgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBwZXJmb3JtYW5jZS5tYXJrICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBwZXJmb3JtYW5jZS5jbGVhck1hcmtzICE9PSAnZnVuY3Rpb24nKSB7CiByZXR1cm47CiB9CgogdmFyIHVpZCA9IHBhcnNlSW50KE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKS5zcGxpdCgnMC4nKVsxXSkgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSwKIG1hcmtfbmFtZSA9IGxhYmVsICsgJ18nICsgdWlkLAogcGFydHMgPSBsYWJlbC5zcGxpdCgnfCcpLAogY2F0ZWdvcnkgPSBwYXJ0c1swXSwKIHZhcmlhYmxlID0gcGFydHNbMV0sCiBsYWJlbCA9IHBhcnRzWzJdLAogbWFya190aW1lLAogbWFya19lbnRyaWVzOwoKIHBlcmZvcm1hbmNlLm1hcmsobWFya19uYW1lKTsKIG1hcmtfZW50cmllcyA9IHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUobWFya19uYW1lKTsKCiBpZiAobWFya19lbnRyaWVzLmxlbmd0aCkgewogbWFya190aW1lID0gbWFya19lbnRyaWVzWzBdLnN0YXJ0VGltZTsKIHdpbmRvdy5fZ3RtLnB1c2goewogJ2V2ZW50JzogJ3BlcmZvcm1hbmNlX3RpbWluZycsCiAncGVyZm9ybWFuY2VfdGltaW5nLmNhdGVnb3J5JzogY2F0ZWdvcnksCiAncGVyZm9ybWFuY2VfdGltaW5nLnZhcmlhYmxlJzogdmFyaWFibGUsCiAncGVyZm9ybWFuY2VfdGltaW5nLnRpbWUnOiBtYXJrX3RpbWUgLyAxMDAwLAogJ3BlcmZvcm1hbmNlX3RpbWluZy5sYWJlbCc6IGxhYmVsCiB9KTsKIH0KIH07Cn0oKSk7Cjwvc2NyaXB0PgoKIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9hYmxpbmNvbG5fY29tYmluZWQubWluLmpzPzQ2NDIzMGYwIj48L3NjcmlwdD4KCgoKIDwvaGVhZD4KIDxib2R5IGNsYXNzPSJvbnNpdGUgIj4KIDxkaXYgaWQ9IndyYXAiIGNsYXNzPSJvdXRlcl93cmFwIj4KIAogPGRpdiBjbGFzcz0iYm9keV9yaWJib24gZXNpX3JpYmJvbiI+PC9kaXY+CgogCiAKPHNjcmlwdD4KIHdpbmRvdy52aW1lbyA9IHdpbmRvdy52aW1lbyB8fCB7fTsKPC9zY3JpcHQ+CjxkaXYgaWQ9InRvcG5hdl9kZXNrdG9wIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3AgIiByb2xlPSJiYW5uZXIiPgogPGRpdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfd3JhcHBlciI+CgogICA8YSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbG9nbyIgaHJlZj0iLy92aW1lby5jb20iIGFsdD0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiB0aXRsZT0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiBhcmlhLWxhYmVsPSJHbyB0byBWaW1lbyBob21lIHBhZ2UiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnZpbWVvX2hvbWUiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2hvbWVfY2xpY2siPgogIDxzdmcgYWx0PSJWaW1lbyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI0MCI+PHBhdGggZD0iTTIyLjQ0OCAxNC41NzVjLS4xMDQgMi4xNy0xLjYxOCA1LjE0Ni00LjU0NCA4LjkxMi0zLjAzIDMuOTQyLTUuNTkgNS45MTItNy42ODYgNS45MTItMS4yOTcgMC0yLjM5Ny0xLjIwNC0zLjMtMy42LS42LTIuMi0xLjIwMi00LjM5OC0xLjc5NC02LjU5OC0uNjY0LTIuMzk2LTEuMzgtMy42LTIuMTQ3LTMuNi0uMTY2IDAtLjc0Ny4zNTQtMS43NTMgMS4wNWwtMS4wNDgtMS4zNWMxLjEtLjk2NSAyLjE5LTEuOTMgMy4yNTctMi45MDUgMS40NjMtMS4yNjUgMi41NzMtMS45NCAzLjMtMi4wMDIgMS43MzItLjE2NiAyLjggMS4wMTcgMy4yMDUgMy41NTguNDM1IDIuNzQuNzM2IDQuNDQuOTAyIDUuMTE1LjQ5OCAyLjI3IDEuMDQ4IDMuNDAyIDEuNjUgMy40MDIuNDY2IDAgMS4xNzItLjczNyAyLjEwNS0yLjIxLjkzNC0xLjQ3MyAxLjQzMi0yLjU5MyAxLjUwNC0zLjM3LjEzMy0xLjI3Ny0uMzY1LTEuOTEtMS41MDYtMS45MS0uNTMgMC0xLjA4LjEyNS0xLjY1LjM2NCAxLjEtMy41OSAzLjE4Ni01LjMzMyA2LjI3Ny01LjIzIDIuMjczLjA3MyAzLjM1IDEuNTU2IDMuMjI3IDQuNDZtMTMuNzU1IDcuMDM0Yy0uOTMzIDEuNzY0LTIuMjIgMy4zNy0zLjg2IDQuODAzLTIuMjQgMS45My00LjQ3IDIuOTA1LTYuNyAyLjkwNS0xLjAzNy4wMDItMS44MjYtLjMzLTIuMzc2LS45OTQtLjU1LS42NjMtLjgxLTEuNTM1LS43NzctMi42MDMuMDMtMS4xLjM3Mi0yLjggMS4wMjUtNS4xMDQuNjU0LTIuMzAzLjk3Ni0zLjUzNy45NzYtMy43MDMgMC0uODYtLjMtMS4yOTctLjkwMi0xLjI5Ny0uMTk4IDAtLjc3LjM1My0xLjcwMiAxLjA0OGwtMS4xNTItMS4zNWMxLjA3LS45NjIgMi4xMzctMS45MjcgMy4yMDYtMi45MDIgMS40My0xLjI2NiAyLjUtMS45NCAzLjIwNS0yLjAwMiAxLjEtLjEwMyAxLjkxLjIzIDIuNDI4Ljk3Ni41MTguNzQ3LjcwNSAxLjcyMi41OCAyLjkxNS0uNDM1IDIuMDM0LS45MDIgNC42MDctMS40IDcuNzMtLjAzIDEuNDMuNDg4IDIuMTQ2IDEuNTU2IDIuMTQ2LjQ2NyAwIDEuMjk3LS40OTggMi41LTEuNDgzLjk5Ni0uODIgMS44MTUtMS41OTggMi40NS0yLjMyNGwuOTQyIDEuMjQ0bS00LjM1Ny0xNy44Yy0uMDMuODMtLjQ0NiAxLjYyOC0xLjI1NSAyLjM5NS0uOS44Ni0xLjk3IDEuMjk2LTMuMjA0IDEuMjk2LTEuOSAwLTIuODIyLS44My0yLjc1LTIuNDkuMDMyLS44Ni41NC0xLjY5IDEuNTI2LTIuNDkuOTg1LS43OTcgMi4wNzQtMS4xOSAzLjI3OC0xLjE5LjcwNSAwIDEuMjg2LjI3IDEuNzUzLjgyLjQ2Ny41NC42ODQgMS4xLjY1MyAxLjY2bTM1LjYxMiAxNy44Yy0uOTMzIDEuNzYzLTIuMjIgMy4zNy0zLjg2IDQuODAyLTIuMjQgMS45My00LjQ3IDIuOTA0LTYuNyAyLjkwNC0yLjE2OC4wMDItMy4yMTYtMS4yMDItMy4xNTMtMy41OTguMDMtMS4wNy4yMzgtMi4zNTUuNjIyLTMuODUuMzg0LTEuNTAzLjU5LTIuNjY1LjYyMy0zLjUwNS4wMy0xLjI2NS0uMzUzLTEuODk4LTEuMTUyLTEuODk4LS44NyAwLTEuOTEgMS4wMzYtMy4xMTIgMy4xLTEuMjc2IDIuMTY4LTEuOTYgNC4yNzQtMi4wNjQgNi4zMDgtLjA3MyAxLjQzLjA3MiAyLjU0LjQyNSAzLjI5OC0yLjMyNC4wNjQtMy45NjMtLjMyLTQuODg2LTEuMTUtLjgzLS43MzctMS4yMTItMS45NS0xLjE1LTMuNjUyLjAzLTEuMDY4LjE5OC0yLjEzNy40ODgtMy4yMDUuMjktMS4wNy40NTctMi4wMjMuNDg4LTIuODUzLjA2Mi0xLjIzNC0uMzg0LTEuODU3LTEuMzUtMS44NTctLjg0IDAtMS43NC45NTUtMi43MDYgMi44NTMtLjk2NiAxLjktMS41MDUgMy44OS0xLjYxIDUuOTU2LS4wNiAxLjg2Ny4wNTMgMy4xNzQuMzY0IDMuOS0yLjI5My4wNjItMy45Mi0uNDE1LTQuODc2LTEuNDUyLS43OTgtLjg2LTEuMTYtMi4xOC0xLjEtMy45NDIuMDMyLS44Ni4xODgtMi4wNzUuNDU3LTMuNjIuMjgtMS41NDYuNDI1LTIuNzUuNDU3LTMuNjIuMDYyLS42MDMtLjA4My0uOTAzLS40NDYtLjkwMy0uMTk3IDAtLjc2OC4zNC0xLjcwMiAxLjAxNWwtMS4yMDMtMS4zNDhjLjE2OC0uMTM1IDEuMjE2LTEuMSAzLjE1Ni0yLjkwNSAxLjQtMS4yOTcgMi4zNTQtMS45NyAyLjg1Mi0yLjAwMi44NzItLjA3MyAxLjU2Ny4yOSAyLjEwNiAxLjA4LjUzLjc4Ny44IDEuNjkuOCAyLjcyNyAwIC4zMzItLjAzMi42NTQtLjEwNS45NTQuNDk3LS43NjYgMS4wOC0xLjQzIDEuNzUyLTIgMS41MzctMS4zNCAzLjI2LTIuMDg2IDUuMTU3LTIuMjUyIDEuNjQtLjEzNSAyLjguMjUgMy41MDUgMS4xNTIuNTcuNzM2LjgzIDEuNzg0LjggMy4xNTMuMjM3LS4xOTguNDg2LS40MTYuNzQ2LS42NTQuNzY3LS45MDMgMS41MTQtMS42MiAyLjI1LTIuMTQ4IDEuMjM1LS45MDIgMi41Mi0xLjQgMy44Ni0xLjUwNCAxLjU5Ny0uMTM1IDIuNzUuMjUgMy40NTQgMS4xNTIuNjAyLjcyNi44NyAxLjc3NC44IDMuMTQzLS4wMzIuOTMzLS4yNiAyLjI4LS42NzUgNC4wNjUtLjQxNiAxLjc3My0uNjI0IDIuOC0uNjI0IDMuMDctLjAzLjY5NS4wMyAxLjE4Mi4xOTcgMS40NDIuMTY2LjI3LjU3LjM5NCAxLjIwMy4zOTQuNDY3IDAgMS4yOTctLjQ5NyAyLjUtMS40ODIuOTk2LS44MiAxLjgxNi0xLjU5OCAyLjQ1LTIuMzI0bC45NjMgMS4yNTRtMTguNzY1LS4wNTJjLS45NjUgMS41OTgtMi44NzQgMy4xOTUtNS43MDYgNC43OTMtMy41MzggMi4wMzItNy4xMjcgMy4wNS0xMC43NTggMy4wNS0yLjcwNiAwLTQuNjM2LS45MDQtNS44MDgtMi43LS44My0xLjIzMy0xLjIzNC0yLjY5Ni0xLjIwMy00LjQwNy4wMy0yLjY5OCAxLjIzNC01LjI3IDMuNi03LjcxIDIuNjAzLTIuNjY1IDUuNjc0LTQuMDAzIDkuMjEtNC4wMDMgMy4yNyAwIDUgMS4zMjggNS4yMDggMy45OTQuMTM1IDEuNzAyLS43OTggMy40NDUtMi44IDUuMjQtMi4xMzcgMS45Ni00LjgyNCAzLjIxNS04LjA2IDMuNzQ0LjYuODMgMS41MDQgMS4yNDUgMi43MDcgMS4yNDUgMi4zOTYgMCA1LjAyLS42MTMgNy44NjMtMS44MzcgMi4wMzMtLjg2IDMuNjMtMS43NTMgNC44MDMtMi42NzZsLjk0NSAxLjI2NW0tMTEuMzYtNS4yMjhjLjAzMi0uODkyLS4zMy0xLjM1LTEuMS0xLjM1LS45OTQgMC0yLjAxLjY4Ni0zLjA0OCAyLjA2Ni0xLjAzOCAxLjM4LTEuNTY3IDIuNjk3LTEuNTk4IDMuOTYyLS4wMiAwLS4wMi4yMTggMCAuNjQzIDEuNjMtLjYgMy4wNS0xLjUxNCA0LjI0Mi0yLjczOC45NjYtMS4wNTggMS40NjMtMS45MiAxLjUwNS0yLjU4M20yNC45NDYgMS44NjhjLS4xMzUgMy4wNzItMS4yNjUgNS43MTctMy40MDIgNy45NDctMi4xMzUgMi4yMy00Ljc5IDMuMzUtNy45NTUgMy4zNS0yLjYzNSAwLTQuNjM3LS44NS02LjAwNi0yLjU1LS45OTctMS4yNjctMS41NTctMi44NTQtMS42NS00Ljc1Mi0uMTY2LTIuODYzLjg2LTUuNDk4IDMuMS03Ljg5NCAyLjQwOC0yLjY2NSA1LjQyNy0zLjk5MyA5LjA1Ny0zLjk5MyAyLjMzNCAwIDQuMDk4Ljc4OCA1LjMgMi4zNDQgMS4xMzIgMS40NDMgMS42NSAzLjI5IDEuNTU3IDUuNTVtLTUuNjY0LS4xODVjLjAzLS45MDMtLjA5NC0xLjczMy0uMzc0LTIuNDgtLjI4LS43NDctLjY5NS0xLjEzLTEuMjI0LTEuMTMtMS43MDIgMC0zLjEwMi45MjMtNC4yMDIgMi43Ni0uOTMzIDEuNTAzLTEuNDMgMy4xMS0xLjUwNCA0LjgxMi0uMDMuODQuMTE0IDEuNTc3LjQ0NiAyLjIxLjM2NC43MzYuODgyIDEuMSAxLjU1NiAxLjEgMS41MDUgMCAyLjc5LS44ODMgMy44Ni0yLjY1Ni44OTItMS40NzIgMS4zOC0zLjAwOCAxLjQ0LTQuNjE1aC4wMDJ6IiBmaWxsPSIjMTEyMjMzIi8+PC9zdmc+CiAgPC9hPgogCiAgIDxuYXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnUiIHJvbGU9Im5hdmlnYXRpb24iIGFyaWEtbGFiZWw9Ik1haW4gbWVudSI+CiA8dWwgY2xhc3M9InRvcG5hdl9tZW51X2Rlc2t0b3BfbWFpbiIgcm9sZT0ibWVudWJhciI+CgogIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0iam9pbiI+CiA8YSBjbGFzcz0idG9wbmF2X21lbnVfam9pbiBqcy10b3BuYXZfbWVudV9hdXRoIiBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO3ZpbWVvLk1vZGFsLmNyZWF0ZSh7c2l6ZToneHNtYWxsJyxjb250ZW50Oicvam9pbj9tb2RhbD1uZXcnfSkiIGRhdGEtZ2EtZXZlbnQtY2xpY2s9InRvcF9uYXZ8am9pbiIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6am9pbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfam9pbl9jbGljayIgaHJlZj0iLy92aW1lby5jb20vam9pbiIgdGl0bGU9IkJlY29tZSBhIFZpbWVvIG1lbWJlciIgdGFiaW5kZXg9IjAiIHJlbD0idG9nZ2xlIiByb2xlPSJidXR0b24iIGFyaWEtb3ducz0idG9wbmF2X2pvaW4iPgogSm9pbiA8L2E+CgogICA8L2xpPgogCiAKIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJsb2dpbiI+CiA8YSBjbGFzcz0ianMtdG9wbmF2X21lbnVfYXV0aCIgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTt2aW1lby5TZXNzaW9uLmNyZWF0ZSgncmVnJywgbnVsbCwgdHJ1ZSk7IiBkYXRhLWdhLWV2ZW50LWNsaWNrPSJ0b3BfbmF2fGxvZ2luIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpsb2dpbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfbG9naW5fY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2xvZ19pbiIgdGl0bGU9IkxvZyBpbiB0byB5b3VyIGFjY291bnQiIHRhYmluZGV4PSIwIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9sb2dpbiI+CiBMb2cgaW4gPC9hPgoKICAgPC9saT4KIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0iY3JlYXRlIj4KIDxhIGNsYXNzPSJqcy10b3BuYXYtY3JlYXRlIHRvcG5hdl9oYXNfZHJvcGRvd24gdG9wbmF2X2ljb25fY2hldnJvbl9hIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDptYW5hZ2VfdmlkZW9zfGtleXdvcmQ6aG9zdF92aWRlb3MiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2NyZWF0ZV9jbGljayIgaHJlZj0iLy92aW1lby5jb20vY3JlYXRlIiB0aXRsZT0iIiB0YWJpbmRleD0iMCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfY3JlYXRlIj4KIEhvc3QgdmlkZW9zIDwvYT4KCiAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfY3JlYXRlIj4KICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpob3N0X3ZpZGVvc3xrZXl3b3JkOmNvbXBhcmVfcGxhbnMiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2NyZWF0ZV9tZW1iZXJzaGlwX29wdGlvbnNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3VwZ3JhZGUiIHRpdGxlPSJVcGdyYWRlIG9yIGNvbXBhcmUgb3VyIHBsYW5zIj5Db21wYXJlIHBsYW5zPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aG9zdF92aWRlb3N8a2V5d29yZDpwcm9mZXNzaW9uYWxzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfbWVtYmVyc2hpcF9vcHRpb25zX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9wcm9mZXNzaW9uYWxzIiB0aXRsZT0iR2V0IHByb2Zlc3Npb25hbCB2aWRlbyBob3N0aW5nIHRvb2xzIj5Qcm9mZXNzaW9uYWxzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aG9zdF92aWRlb3N8a2V5d29yZDpidXNpbmVzc2VzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfbWVtYmVyc2hpcF9vcHRpb25zX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9idXNpbmVzcyIgdGl0bGU9IkdldCBwb3dlcmZ1bCB2aWRlbyBtYXJrZXRpbmcgdG9vbHMiPkJ1c2luZXNzZXM8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpob3N0X3ZpZGVvc3xrZXl3b3JkOnZpZGVvX2xvdmVycyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfY3JlYXRlX21lbWJlcnNoaXBfb3B0aW9uc19jbGljayIgaHJlZj0iLy92aW1lby5jb20vZXZlcnlvbmUiIHRpdGxlPSJVcGxvYWQgYW5kIHNoYXJlIHlvdXIgdmlkZW9zIj5WaWRlbyBsb3ZlcnM8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpob3N0X3ZpZGVvc3xrZXl3b3JkOnZpZGVvX3NjaG9vbCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfY3JlYXRlX3ZpZGVvX3NjaG9vbF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vdmlkZW9zY2hvb2wiIHRpdGxlPSJMZWFybiBob3cgdG8gbWFrZSBiZXR0ZXIgdmlkZW9zIj5WaWRlbyBTY2hvb2w8L2E+CiA8L2xpPgogICA8L3VsPgogIDwvbGk+CiAKIAogPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9IndhdGNoIj4KIDxhIGNsYXNzPSJ0b3BuYXZfaGFzX2Ryb3Bkb3duIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDp3YXRjaCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3dhdGNoIiB0aXRsZT0iIiB0YWJpbmRleD0iMCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfd2F0Y2giPgogV2F0Y2ggPC9hPgoKICAgPHVsIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl93YXRjaCI+CiAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDpzdGFmZl9waWNrcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfc3RhZmZfcGlja3NfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2NoYW5uZWxzL3N0YWZmcGlja3MiIHRpdGxlPSJUaGUgYmVzdCB2aWRlb3Mgb24gVmltZW8sIGN1cmF0ZWQgZGFpbHkgYnkgb3VyIHRlYW0iPlN0YWZmIFBpY2tzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDpjYXRlZ29yaWVzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9jYXRlZ29yaWVzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9jYXRlZ29yaWVzIiB0aXRsZT0iQnJvd3NlIHZpZGVvcyBieSBpbnRlcmVzdCwgZ2VucmUsIGFuZCBtb3JlIj5DYXRlZ29yaWVzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDpjaGFubmVscyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfY2hhbm5lbHNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2NoYW5uZWxzIiB0aXRsZT0iVmlldyB2aWRlbyBwbGF5bGlzdHMgY3JlYXRlZCBhbmQgY3VyYXRlZCBieSBvdGhlciBtZW1iZXJzIj5DaGFubmVsczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6Z3JvdXBzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9ncm91cHNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2dyb3VwcyIgdGl0bGU9IldhdGNoIGFuZCBkaXNjdXNzIHZpZGVvcyB3aXRoIG90aGVycyI+R3JvdXBzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDphcHAiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX2FwcHNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2V2ZXJ5d2hlcmUiIHRpdGxlPSJXYXRjaCBWaW1lbyB2aWRlb3Mgb24gVFZzLCBwaG9uZXMsIHRhYmxldHMsIGFuZCBtb3JlIj5BcHBzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDptb3JlIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9tb3JlX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS93YXRjaCIgdGl0bGU9IkRpc2NvdmVyIG1vcmUgd2F5cyB0byB3YXRjaCBvbiBWaW1lbyI+TW9yZeKApjwvYT4KIDwvbGk+CiAgIDwvdWw+CiAgPC9saT4KIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0ib25kZW1hbmQiPgogPGEgY2xhc3M9InRvcG5hdl9oYXNfZHJvcGRvd24gdG9wbmF2X2lzX29uZGVtYW5kIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6b25fZGVtYW5kIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9vbmRlbWFuZF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vb25kZW1hbmQiIHRpdGxlPSJXYXRjaCBtb3ZpZXMsIHNlcmllcywgYW5kIG1vcmUiIHRhYmluZGV4PSIwIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9vbmRlbWFuZCI+CiBPbiBEZW1hbmQgPC9hPgoKICAgPHVsIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl9vbmRlbWFuZCI+CiAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6d2hhdHNfbmV3IiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9vbmRlbWFuZF93aGF0c19uZXdfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kIiB0aXRsZT0iU2VlIG5ldyBhbmQgbm90ZXdvcnRoeSB0aXRsZXMgYWRkZWQgdG8gT24gRGVtYW5kIj5XaGF04oCZcyBuZXc8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpvbl9kZW1hbmR8a2V5d29yZDpkaXNjb3ZlciIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfZGlzY292ZXJfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kL2Rpc2NvdmVyIiB0aXRsZT0iRGlzY292ZXIgdGl0bGVzIG91ciB0ZWFtIHJlY29tbWVuZHMiPkRpc2NvdmVyPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6Z2VucmVzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9vbmRlbWFuZF9nZW5yZXNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kL2Jyb3dzZSIgdGl0bGU9IkJyb3dzZSB0aXRsZXMgYnkgZ2VucmUiPkdlbnJlczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om9uX2RlbWFuZHxrZXl3b3JkOnR2X3NlcmllcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfdHZfc2VyaWVzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9vbmRlbWFuZC9icm93c2UvdHYrc2VyaWVzIiB0aXRsZT0iQnJvd3NlIHNlcmllcyBhbmQgVFYgc2hvd3MiPlRWICsgU2VyaWVzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6c3RhcnRfc2VsbGluZyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfc2VsbF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vb25kZW1hbmQvc3RhcnRzZWxsaW5nIiB0aXRsZT0iU2VsbCBkaXJlY3RseSB0byB5b3VyIGZhbnMgd2l0aCBWaW1lbyBPbiBEZW1hbmQiPlN0YXJ0IHNlbGxpbmc8L2E+CiA8L2xpPgogICA8L3VsPgogIDwvbGk+CiAKIDwvdWw+CiA8L25hdj48IS0tIC8udG9wbmF2X2Rlc2t0b3BfbWVudSAtLT4KIAogICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbWVudV9yaWdodCI+CgogICA8Zm9ybSBjbGFzcz0idG9wbmF2X21lbnVfc2VhcmNoIiBhY3Rpb249Ii8vdmltZW8uY29tL3NlYXJjaCIgbWV0aG9kPSJnZXQiIHJvbGU9InNlYXJjaCIgZGF0YS1kcy1wcm90ZWN0aW9uPgogPGlucHV0IGNsYXNzPSJ0b3BuYXZfbWVudV9zZWFyY2hfaW5wdXQganMtdG9wbmF2X21lbnVfc2VhcmNoX2lucHV0IGpzLXNlYXJjaF9hdXRvY29tcGxldGUiICB0eXBlPSJ0ZXh0IiBuYW1lPSJxIiB0aXRsZT0iU2VhcmNoIHZpZGVvcywgcGVvcGxlLCBhbmQgbW9yZSIgdmFsdWU9IiIgYXJpYS1sYWJlbD0iU2VhcmNoIHZpZGVvcywgcGVvcGxlLCBhbmQgbW9yZSIgcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIGF1dG9jb21wbGV0ZT0ib2ZmIj48YnV0dG9uIGNsYXNzPSJ0b3BuYXZfbWVudV9zZWFyY2hfc3VibWl0IHRvcG5hdl9pY29uX3NlYXJjaF9iIiB0eXBlPSJzdWJtaXQiIGFyaWEtbGFiZWw9IlNlYXJjaCI+PC9idXR0b24+CiA8L2Zvcm0+CiAKICAKICAKICAgPGEgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3VwbG9hZCB0b3BuYXZfaWNvbl91cGxvYWRfYiIgaHJlZj0iL3VwbG9hZCIgdGl0bGU9IlVwbG9hZCB5b3VyIHZpZGVvcyIgcm9sZT0iYnV0dG9uIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbXBvbmVudDp0b3BfbmF2fGtleXdvcmQ6dXBsb2FkIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl91cGxvYWRfY2xpY2siPjxzcGFuPlVwbG9hZDwvc3Bhbj48L2E+CiAgPC9kaXY+PCEtLSAvLnRvcG5hdl9tZW51X3JpZ2h0IC0tPgogIDwvZGl2PjwhLS0gLy50b3BuYXZfZGVza3RvcF93cmFwcGVyIC0tPgo8L2Rpdj4KCiA8bmF2IGlkPSJ0b3BuYXZfbW9iaWxlIiBjbGFzcz0idG9wbmF2X21vYmlsZSAiIHJvbGU9ImJhbm5lciI+CgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogIDxidXR0b24gY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9sZWZ0IHRvcG5hdl9tb2JpbGVfaGVhZGVyX2xvZ28ganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfbG9nbyB0b3BuYXZfaWNvbl9tb2JpbGVfdmxvZ29fYiI+CiAgPC9idXR0b24+CiA8YSBocmVmPSIvL3ZpbWVvLmNvbS9zZWFyY2giIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2J1dHRvbiB0b3BuYXZfbW9iaWxlX3B1bGxfcmlnaHQgdG9wbmF2X21vYmlsZV9oZWFkZXJfc2VhcmNoIHRvcG5hdl9pY29uX21vYmlsZV9zZWFyY2hfYiI+IDwvYT4KIDxzcGFuIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2hlYWRlcl90aXRsZSI+PC9zcGFuPgogPC9kaXY+CgogIDxzZWN0aW9uIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnUganMtdG9wbmF2X21vYmlsZV9tZW51X21haW4iPgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfY2xvc2UgdG9wbmF2X2ljb25fbW9iaWxlX3hfYiI+IDwvYnV0dG9uPgogPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX3JpZ2h0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbmdzIHRvcG5hdl9pY29uX21vYmlsZV9nZWFyX2IiPiA8L2J1dHRvbj4KIDwvZGl2PgoKIDx1bD4KICAgPGxpPgogPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfY2hhbm5lbF9iICIgaHJlZj0iLy92aW1lby5jb20vIj4KIFN0YWZmIFBpY2tzIDwvYT4KIDwvbGk+CiAgIDxsaT4KIDxhIGRhdGEtYWN0aW9uPSJsYXN0X3BhZ2UiIGRhdGEtYnJlZXplLWlnbm9yZSBjbGFzcz0idG9wbmF2X2ljb25fbW9iaWxlX2F2YXRhcl9iICIgaHJlZj0iL2xvZ19pbiI+CiA8c3BhbiBjbGFzcz0ibWVudV9hdXRoIj5Kb2luIG9yIGxvZyBpbjwvc3Bhbj4gPC9hPgogPC9saT4KICAgPGxpPgogPGEgZGF0YS1icmVlemUtaWdub3JlIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfc3Rhcl9iIiBocmVmPSIvL3ZpbWVvLmNvbS93YXRjaCI+CiBXYXRjaCA8L2E+CiA8L2xpPgogICA8bGk+CiA8YSBvbmNsaWNrPSJ2aW1lby5tb2JpbGUuZGVza3RvcF9zaGFyZWQuX3VwbG9hZCh0aGlzKTsgcmV0dXJuIGZhbHNlOyIgZGF0YS1icmVlemUtaWdub3JlIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfdXBsb2FkX2IiIGhyZWY9Ii8vdmltZW8uY29tL3VwbG9hZCI+CiBVcGxvYWQgPC9hPgogPC9saT4KICAgPGxpPgogPGEgZGF0YS1icmVlemUtaWdub3JlIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfdm9kX2IgIiBocmVmPSIvL3ZpbWVvLmNvbS9vbmRlbWFuZCI+CiBPbiBEZW1hbmQgPC9hPgogPC9saT4KICAgPGxpPgogPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfZm9yZ290X2IgIiBocmVmPSJodHRwczovL2hlbHAudmltZW8uY29tL2hjL2VuLXVzIj4KIEhlbHAgPC9hPgogPC9saT4KICA8L3VsPgogPC9zZWN0aW9uPgoKICA8c2VjdGlvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9tZW51IHRvcG5hdl9tb2JpbGVfbWVudV9zZXR0aW5ncyBqcy10b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3MiPgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluc19jbG9zZSB0b3BuYXZfaWNvbl9tb2JpbGVfYXJyb3dsZWZ0X2IiPiA8L2J1dHRvbj4KIDxzcGFuIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2hlYWRlcl90aXRsZSI+TW9yZSBzdHVmZjwvc3Bhbj4KIDwvZGl2PgoKIDx1bD4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS90ZXJtcyI+CiBUZXJtcyBvZiBTZXJ2aWNlIDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9wcml2YWN5Ij4KIFByaXZhY3kgUG9saWN5IDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9kbWNhIj4KIENvcHlyaWdodCA8L2E+CiAgIDwvbGk+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vY29va2llX3BvbGljeSI+CiBDb29raWVzIDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249ImRlc2t0b3AiIG9uY2xpY2s9InZpbWVvLm1vYmlsZS5kZXNrdG9wX3NoYXJlZC5fczJkcygpOyByZXR1cm4gZmFsc2UiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSI+CiBEZXNrdG9wIHNpdGUgPC9hPgogICA8L2xpPgogIDxsaT4KICA8YSBsYW5ndWFnZSBocmVmPSIjIj4KIExhbmd1YWdlIDwvYT4KICAgPHNlbGVjdCBvbmNoYW5nZT0idmltZW8ubW9iaWxlLmRlc2t0b3Bfc2hhcmVkLl9zMmwodGhpcykiIHRpdGxlPSJDaG9vc2UgYSBkaWZmZXJlbnQgbGFuZ3VhZ2UiIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3NfbGFuZ3VhZ2UiPgogICA8b3B0aW9uIGNsYXNzPSJzZWxlY3RlZCIgc2VsZWN0ZWQgdmFsdWU9ImVuIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIEVuZ2xpc2ggPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZXMiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogRXNwYcOxb2wgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZGUtREUiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogRGV1dHNjaCA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJmci1GUiIKIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiBGcmFuw6dhaXMgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iamEtSlAiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgog5pel5pys6KqeIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InB0LUJSIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIFBvcnR1Z3XDqnMgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ia28tS1IiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgog7ZWc6rWt7Ja0IDwvb3B0aW9uPgogIDwvc2VsZWN0PgogIDwvbGk+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vZmFxIj4KIEZBUSA8L2E+CiAgIDwvbGk+CiAgPC91bD4KCiA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfY29weXJpZ2h0Ij5UTSArIMKpIDIwMTcgVmltZW8sIEluYy48L2Rpdj4KIDwvc2VjdGlvbj4KPC9uYXY+Cgo8c2NyaXB0PgohZnVuY3Rpb24oYSxiKXthLnZpbWVvPWEudmltZW98fHt9LHZpbWVvLm1vYmlsZT12aW1lby5tb2JpbGV8fHt9LFZpbWVvPXZpbWVvLm1vYmlsZXx8e30sVmltZW8uZGVza3RvcF9zaGFyZWQ9VmltZW8uZGVza3RvcF9zaGFyZWR8fHt9O3ZhciBjPWIuZ2V0RWxlbWVudEJ5SWQoInRvcG5hdl9kZXNrdG9wIiksZD0ib250b3VjaHN0YXJ0ImluIGE/InRvdWNoc3RhcnQiOmEuUG9pbnRlckV2ZW50PyJwb2ludGVyZG93biI6YS5NU1BvaW50ZXJFdmVudD8iTVNQb2ludGVyRG93biI6ImNsaWNrIjsiY2xpY2siIT09ZCYmYy5hZGRFdmVudExpc3RlbmVyKGQsZnVuY3Rpb24oYSl7dmFyIGI9ImltZyI9PT1hLnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCk/YS50YXJnZXQucGFyZW50Tm9kZTphLnRhcmdldDtiLmNsYXNzTGlzdC5jb250YWlucygidG9wbmF2X2hhc19kcm9wZG93biIpJiYoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCkpfSwhMSksYy5hZGRFdmVudExpc3RlbmVyKGQsZnVuY3Rpb24oYyl7Yy50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJqcy10b3BuYXZfbWVudV9hdXRoIikmJihiLmNvb2tpZT0ibGFzdF9wYWdlPSIrZW5jb2RlVVJJQ29tcG9uZW50KGEubG9jYXRpb24ucGF0aG5hbWUpKyI7cGF0aD0nLyc7bWF4LWFnZT0xODAwOyIpfSwhMSksVmltZW8uZGVza3RvcF9zaGFyZWQuX3VwbG9hZD1mdW5jdGlvbihjKXtpZigvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7dmFyIGYsZyxkPSJ2aW1lbzovL2FwcC52aW1lby5jb20vdXBsb2FkP3JlZj1tb2JpbGV3ZWIiLGU9Ii91cGxvYWQiO3JldHVybiBmPWZ1bmN0aW9uKCl7Yi53ZWJraXRIaWRkZW58fChhLmxvY2F0aW9uPWUpfSxnPWZ1bmN0aW9uKCl7YS5sb2NhdGlvbj1kLHNldFRpbWVvdXQoZiwyNSl9LGcoKSwhMX1hLmxvY2F0aW9uPWMuaHJlZn0sVmltZW8uZGVza3RvcF9zaGFyZWQuX3MyZHM9ZnVuY3Rpb24oKXtiLmNvb2tpZT0ib3B0X291dF9tb2JpbGU9MTtleHBpcmVzPUZyaSwgMzEgRGVjIDk5OTkgMjM6NTk6NTkgR01UO2RvbWFpbj0iK3ZpbWVvLmRvbWFpbixhLmxvY2F0aW9uLnJlbG9hZCgpfSxWaW1lby5kZXNrdG9wX3NoYXJlZC5fczJsPWZ1bmN0aW9uKGIpe3ZhciBjPWIudmFsdWUsZD1uZXcgWE1MSHR0cFJlcXVlc3Q7ZC5vcGVuKCJQT1NUIiwiL3NldHRpbmdzL2xvY2FsZSIpLGQuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEh0dHBSZXF1ZXN0IiksZC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSxkLnNlbmQoImxvY2FsZT0iK2MrIiZ0b2tlbj0iK3ZpbWVvLnhzcmZ0KSxkLm9ubG9hZD1mdW5jdGlvbigpezIwMD09PWQuc3RhdHVzJiZhLmxvY2F0aW9uLnJlbG9hZCgpfX07dmFyIGU9ImNsaWNrIixmPSJibG9jayIsZz0ibm9uZSIsaD1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9sb2dvIik7aCYmaC5hZGRFdmVudExpc3RlbmVyKGUsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSxhLnByZXZlbnREZWZhdWx0KCk7dmFyIGM9Yi5xdWVyeVNlbGVjdG9yKCIuanMtdG9wbmF2X21vYmlsZV9tZW51X21haW4iKTtjLnN0eWxlLmRpc3BsYXk9Zjt2YXIgZD1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9jbG9zZSIpO2QuYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVmYXVsdCgpLGMuc3R5bGUuZGlzcGxheT1nfSk7dmFyIGg9Yi5xdWVyeVNlbGVjdG9yKCIuanMtdG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzIiksaT1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9zZXR0aW5ncyIpO2kuYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVmYXVsdCgpLGguc3R5bGUuZGlzcGxheT1mLGMuc3R5bGUuZGlzcGxheT1nO3ZhciBkPWIucXVlcnlTZWxlY3RvcigiLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbnNfY2xvc2UiKTtkLmFkZEV2ZW50TGlzdGVuZXIoZSxmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpLGEucHJldmVudERlZmF1bHQoKSxoLnN0eWxlLmRpc3BsYXk9ZyxjLnN0eWxlLmRpc3BsYXk9Zn0pfSl9LCExKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZihhKXt2YXIgYj1uZXcgWE1MSHR0cFJlcXVlc3Q7Yi5vcGVuKCJQT1NUIiwiL3NldHRpbmdzL25hdiIpLGIuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEh0dHBSZXF1ZXN0IiksYi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSxiLnNlbmQoIm1lc3NhZ2Vfc3RhdGU9IithKyImdG9rZW49Iit2aW1lby54c3JmdCksYi5vbmxvYWQ9ZnVuY3Rpb24oKXt9fXZhciBhPWIuZ2V0RWxlbWVudEJ5SWQoInRvcG5hdl9tZW51X2F2YXRhciIpO2lmKGEpe3ZhciBjPWEucXVlcnlTZWxlY3RvcigiLnRvcG5hdl9tZW51X2F2YXRhcl9idWJibGUiKSxlPShhLnF1ZXJ5U2VsZWN0b3IoIiN0b3BuYXZfdXNlcl9kcm9wZG93biIpLCExKTtjJiZjLmNsYXNzTGlzdC5hZGQoIm9uIiksYS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7ZXx8KGU9ITAsYyYmYy5jbGFzc0xpc3QucmVtb3ZlKCJvbiIpLGYoMSkpfSwhMSl9fSwxZTMpfSh3aW5kb3csZG9jdW1lbnQpOwo8L3NjcmlwdD4KCiA8ZGl2IGNsYXNzPSJ3cmFwX2NvbnRlbnQiPgogCgoKCjxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9jb250YWluZXIiPgogPGRpdiBjbGFzcz0iZXhjZXB0aW9uX3NlY3Rpb24gZXhjZXB0aW9uX3NlY3Rpb24tLWluZm8iPgogPGRpdiBjbGFzcz0iZXhjZXB0aW9uX3NocnVnX28iPjwvZGl2PgogPGgxIGNsYXNzPSJleGNlcHRpb25fdGl0bGUgaXJpc19oZWFkZXIiPlNvcnJ5LCB3ZSBjb3VsZG7igJl0IGZpbmQgdGhhdCBwYWdlPC9oMT4KCiA8ZGl2IGNsYXNzPSJleGNlcHRpb25fY29udGVudCI+CiA8cCBjbGFzcz0iZXhjZXB0aW9uX21lc3NhZ2UiPgogIDwvcD4KCiA8ZGl2IGNsYXNzPSJleGNlcHRpb25fbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uLS11cHNlbGwiPgogPGRpdiBjbGFzcz0iaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbC1pY29uIj4KIDxzcGFuIGNsYXNzPSJpcmlzX2ljIGlzLS0xNiI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6TTcgNGgydjJIN1Y0em0wIDNoMnY1SDdWN3oiLz48L3N2Zz48L3NwYW4+CiA8L2Rpdj4KCiA8ZGl2IGNsYXNzPSJpcmlzX25vdGlmaWNhdGlvbi1oZWFkZXIiPgogPHN0cm9uZz5SZWFzb25zIHlvdSBtaWdodCBiZSBzZWVpbmcgdGhpcyBwYWdlPC9zdHJvbmc+CiA8L2Rpdj4KCiA8dWwgY2xhc3M9ImlyaXNfbm90aWZpY2F0aW9uLWxpc3QiPgogIDxsaT5JdCBleGlzdHMsIGJ1dCB5b3UgZG9u4oCZdCBoYXZlIHBlcm1pc3Npb24gdG8gc2VlIGl0LCBvciB5b3UgbmVlZCB0byA8YSBvbmNsaWNrPSJ2aW1lby5TZXNzaW9uLmNyZWF0ZSgpIj5sb2cgaW48L2E+LjwvbGk+CiAgPGxpPk5vdGhpbmcgaGFzIGV2ZXIgZXhpc3RlZCBoZXJlLiBTcG9va3kuPC9saT4KIDxsaT5Tb21ldGhpbmcgb25jZSBsaXZlZCBoZXJlLCBidXQgaGFzIGJlZW4gZGVsZXRlZC48L2xpPgogPC91bD4KPC9kaXY+CgogIDxmb3JtIGNsYXNzPSJleGNlcHRpb25fc2VhcmNoIiBhY3Rpb249Ii9zZWFyY2giIG1ldGhvZD0iZ2V0Ij4KIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtaW5wdXQtd3JhcHBlciI+CiA8aW5wdXQgY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtaW5wdXQgaXJpc19pbnB1dCBpcmlzX2lucHV0LS1zZWFyY2gganMtc2VhcmNoX2F1dG9jb21wbGV0ZSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgogPC9kaXY+CiA8YnV0dG9uIGNsYXNzPSJleGNlcHRpb25fc2VhcmNoLWJ1dHRvbiBpcmlzX2J0biBpcmlzX2J0bi0tcHJpbWFyeSI+CiA8c3BhbiBjbGFzcz0iaXJpc19idG4tY29udGVudCI+U2VhcmNoPC9zcGFuPgogPC9idXR0b24+CiA8L2Zvcm0+CiAgPC9kaXY+CiA8L2Rpdj4KCiA8ZGl2IGNsYXNzPSJleGNlcHRpb25fYXV4aWxpYXJ5Ij48L2Rpdj4KPC9kaXY+CgogPC9kaXY+CgogIAo8Zm9vdGVyIGNsYXNzPSJmb290ZXJfdjIgZm9vdGVyX3YyLS1yZXNwb25zaXZlIj4KICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX3NpdGVtYXAiPgogPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19saW5rcyI+CgogPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5WaW1lbzwvc3Bhbj4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiA8L2Rpdj4KIDwvaDQ+CiA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvYWJvdXQiIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19hYm91dF9jbGljayI+CiBBYm91dCBWaW1lbyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvYmxvZyIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpbWVvX2Jsb2dfY2xpY2siPgogVmltZW8gQmxvZyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvaGVscC9ndWlkZWxpbmVzIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmltZW9fZ3VpZGVsaW5lc19jbGljayI+CiBWaW1lbyBHdWlkZWxpbmVzIDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLnZpbWVvLmNvbSIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2RldmVsb3BlcnNfY2xpY2siPgogRGV2ZWxvcGVycyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvam9icyI+CiBKb2JzIDwvYT4KIDwvbGk+CiA8L3VsPgogPC9zZWN0aW9uPgoKIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+SGVscDwvc3Bhbj4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiA8L2Rpdj4KIDwvaDQ+CiA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvaGVscCIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2hlbHBfY2VudGVyX2NsaWNrIj4KIEhlbHAgQ2VudGVyIDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiIGhyZWY9Ii92aWRlb3NjaG9vbCIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpZGVvX3NjaG9vbF9jbGljayI+CiBWaWRlbyBTY2hvb2wgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2hlbHAvZmFxIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZmFxX2NsaWNrIj4KIEZBUSA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvZm9ydW1zIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZm9ydW1zX2NsaWNrIj4KIEZvcnVtcyA8L2E+CiA8L2xpPgogPC91bD4KIDwvc2VjdGlvbj4KCiA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPk1vcmU8L3NwYW4+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogPC9kaXY+CiA8L2g0PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL29uZGVtYW5kIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfb25fZGVtYW5kX2NsaWNrIj4KIE9uIERlbWFuZCA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvZXZlcnl3aGVyZSIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2V2ZXJ5d2hlcmVfY2xpY2siPgogRXZlcnl3aGVyZSA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvdXBsb2FkIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBsb2FkX2NsaWNrIj4KIFVwbG9hZCA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvc2l0ZV9tYXAiIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zaXRlX21hcF9jbGljayI+CiBTaXRlIE1hcCA8L2E+CiA8L2xpPgogPC91bD4KIDwvc2VjdGlvbj4KCiA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlVwZ3JhZGU8L3NwYW4+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogPC9kaXY+CiA8L2g0PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL3BsdXM/dj1mb290ZXIiPgogVmltZW8gUGx1cyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvcHJvP3Y9Zm9vdGVyIj4KIFZpbWVvIFBSTyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvYnVzaW5lc3MiPgogVmltZW8gQnVzaW5lc3MgPC9hPgogPC9saT4KIDwvdWw+CiA8L3NlY3Rpb24+CiA8L2Rpdj4KCiAgIDxhc2lkZSBpZD0iZm9vdGVyX3RpcCIgY2xhc3M9ImZvb3Rlcl92Ml9fdGlwIiBhcmlhLWxpdmU9InBvbGl0ZSI+CiA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fdGlwLWhlYWRlciI+RGlkIHlvdSBrbm93PzwvaDQ+CiA8cCBjbGFzcz0iYWN0aXZlIGZvb3Rlcl92Ml9fdGlwLWNvbnRlbnQiPk1ha2UgeW91ciB2aWRlb3MgZXh0cmEgYWNjZXNzaWJsZSBieSA8YSBocmVmPSJodHRwczovL3ZpbWVvLmNvbS9zL3VjdiI+YWRkaW5nIGNhcHRpb25zICsgc3VidGl0bGVzLjwvYT48L3A+CiA8L2FzaWRlPgogPC9zZWN0aW9uPgogCiAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fYXV4aWxpYXJ5ICI+CgogPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbCI+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50Ij4KIDxwPlRNICsgJmNvcHk7IDIwMTcgVmltZW8sIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC48L3A+CiA8L2Rpdj4KIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL3Rlcm1zIiB0aXRsZT0iVGVybXMgJmFtcDsgQ29uZGl0aW9ucyI+CiBUZXJtcyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvcHJpdmFjeSIgdGl0bGU9IlByaXZhY3kgUG9saWN5Ij4KIFByaXZhY3kgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL2RtY2EiIHRpdGxlPSJDb3B5cmlnaHQgSW5mb3JtYXRpb24iPgogQ29weXJpZ2h0IDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9jb29raWVfcG9saWN5IiB0aXRsZT0iTGVhcm4gbW9yZSBhYm91dCBob3cgVmltZW8gdXNlcyBjb29raWVzIj4KIENvb2tpZXMgPC9hPgogPC9saT4KIDwvdWw+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50IGZvb3Rlcl92Ml9fd2l0aGxvdmUiPgogTWFkZSB3aXRoIDxhIGhyZWY9Imh0dHBzOi8vdmltZW8uY29tL2xvdmUiPjxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIGZvb3Rlcl92Ml9fbG92ZWhlYXJ0IGZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWljb24iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEyIDEyIj48cGF0aCBkPSJNOSAyQzcuMzEyIDIgNiAzLjUgNiAzLjVTNC42ODcgMiAzIDJDMS4zMTIgMiAwIDMuMzEyIDAgNWMwIDMuMTg4IDMuNzUgMy4wMTIgNiA2IDIuMjUtMi45ODggNi0yLjgxMiA2LTYgMC0xLjY4OC0xLjMxMy0zLTMtM3oiLz48L3N2Zz48L2E+IGluIE5ZQy4gPC9kaXY+CiA8L2Rpdj4KCiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2ZpbHRlcnMgZm9vdGVyX3YyX19hdXhpbGlhcnktY29udGVudCI+CiA8c3BhbiBjbGFzcz0ibGFuZ3VhZ2UiPgogTGFuZ3VhZ2U6CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIjbGFuZ3VhZ2UiIG9uY2xpY2s9InZpbWVvLk1vZGFsLmNyZWF0ZSh7Y29udGVudDogJy9zZXR0aW5ncy9sb2NhbGUnLCBzaXplOiAnc21hbGwnfSk7IHJldHVybiBmYWxzZTsiIHRpdGxlPSJDaG9vc2UgYSBkaWZmZXJlbnQgbGFuZ3VhZ2UiPkVuZ2xpc2g8L2E+CiA8L3NwYW4+CgogIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2ZpbHRlciI+TWF0dXJlIGNvbnRlbnQgZmlsdGVyOiA8L3NwYW4+PGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCBmb290ZXJfdjJfX2ZpbHRlcnNfX2xhbmcgY29udGVudGZpbHRlciBqcy1mb290ZXJfY29udGVudGZpbHRlcl9saW5rIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InZpbWVvLk1vZGFsLmNyZWF0ZSh7Y29udGVudDogJy9zZXR0aW5ncy9jb250ZW50cmF0aW5nJ30pIiB0aXRsZT0iQ2hhbmdlIHlvdXIgbWF0dXJlIGNvbnRlbnQgZmlsdGVyIj5Ob25lPC9hPgogIDwvZGl2PgoKPC9zZWN0aW9uPgo8L2Zvb3Rlcj4KIAogPC9kaXY+CgogCiAKIAogCjxzY3JpcHQ+CiB2YXIgX19mYSA9IF9fZmEgfHwgW107CiBfX2ZhLnB1c2goWyd0cmFja1BhZ2V2aWV3J10pOwoKICAvLyBBbmFseXRpY3MgU2V0dXAKIHZhciBfZ3RtID0gX2d0bSB8fCBbXSwKIF9pbml0aWFsX2d0bV9zdGF0ZSA9IHsiZXhjZXB0aW9uX2h0dHBfY29kZSI6IkhUVFBcLzEuMSA0MDQgTm90IEZvdW5kIiwibGFuZ3VhZ2UiOiJlbiIsInVzZXJfc3RhdHVzIjoibG9nZ2VkX291dCIsInVzZXJfdHlwZSI6Im5vbmUiLCJnYV91bml2ZXJzYWxfaWQiOiJVQS03NjY0MS04IiwiY29tc2NvcmVfc2l0ZV9pZCI6MTAzNDgyODl9OwoKIF9pbml0aWFsX2d0bV9zdGF0ZVsndnVpZCddID0gZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKXZ1aWRccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKTsKIF9pbml0aWFsX2d0bV9zdGF0ZVsnZ3RtLnN0YXJ0J10gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKIF9pbml0aWFsX2d0bV9zdGF0ZVsnZXZlbnQnXSA9ICdndG0uanMnOwogX2d0bS5wdXNoKF9pbml0aWFsX2d0bV9zdGF0ZSk7CiAKIC8qKgogKiBJZiB0aGUgY3VycmVudCByZXF1ZXN0IHdhcyBidWNrZXRlZCBpbiBhbiBBQkxpbmNvbG4gZXhwZXJpbWVudCwKICogc2VuZCB0aGUgc2VsZWN0ZWQgdHJlYXRtZW50IGJhY2sgZnJvbSB0aGUgY2xpZW50LCB0byBmaWx0ZXIgYWIgdGVzdAogKiBkYXRhIGRvd24gdG8gbm9uLXJvYm90IHVzZXJzIHRoYXQgcnVuIEphdmFTY3JpcHQuCiAqLwogaWYgKCJBQkxpbmNvbG4iIGluIHdpbmRvdykgewogKGZ1bmN0aW9uICgpIHsKICAgfSkoKTsKIH0KCiAgdmFyIF9leHRlbmQgPSBmdW5jdGlvbigpe2Zvcih2YXIgcj1hcmd1bWVudHNbMF0sbj0xLGU9YXJndW1lbnRzLmxlbmd0aDtlPm47bisrKXt2YXIgdD1hcmd1bWVudHNbbl07Zm9yKHZhciBhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmKHJbYV09dFthXSl9cmV0dXJuIHJ9OwoKICB2YXIgQ1NTX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL3N0eWxlcy9jc3Nfb3B0LycsCiBKU19ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvJywKIElNQUdFX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL2ltYWdlc192Ni8nLAogU1ZHX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL3N2Zy8nLAogIEJVSUxEX0hBU0ggPSAnNzI0NTQnOwoKICB2YXIgdmltZW8gPSBfZXh0ZW5kKCh3aW5kb3cudmltZW8gfHwge30pLCB7ImFwcF92ZXJzaW9uIjoidjYiLCJkb21haW4iOiJ2aW1lby5jb20iLCJ1cmwiOiJ2aW1lby5jb20iLCJjdXJfdXNlciI6ZmFsc2UsImlzX21vYmlsZSI6ZmFsc2V9KTsKIHZpbWVvLmNvbmZpZyA9IF9leHRlbmQoKHZpbWVvLmNvbmZpZyB8fCB7fSksIHsibG9jYWxlIjoiZW4ifSk7CgogIHZhciBsb2NhbGVDb25maWcgPSB7CiBsYW5nOiAnZW4nLAogJ0RhdGUnOiB7CiBtb250aHM6IFsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSwKIG1vbnRoc19hYmJyOiBbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLAogZGF5czogWyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLAogZGF5c19hYmJyOiBbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLAoKIC8vIEN1bHR1cmUncyBkYXRlIG9yZGVyOiBNTS9ERC9ZWVlZCiBkYXRlT3JkZXI6IFsnZGF0ZScsICdtb250aCcsICd5ZWFyJ10sCiBzaG9ydERhdGU6ICclZC8lbS8lWScsCiBzaG9ydFRpbWU6ICclSTolTSVwJywKIEFNOiAnQU0nLAogUE06ICdQTScsCiBmaXJzdERheU9mV2VlazogMCwKCiAvLyBEYXRlLkV4dHJhcwogb3JkaW5hbDogZnVuY3Rpb24oZGF5T2ZNb250aCl7CiByZXR1cm4gZGF5T2ZNb250aDsKIH0KIH0sCiAnRGF0ZVBpY2tlcic6IHsKIHNlbGVjdF9hX3RpbWU6ICJTZWxlY3QgYSB0aW1lIiwKIHVzZV9tb3VzZV93aGVlbDogIlVzZSB0aGUgbW91c2Ugd2hlZWwgdG8gcXVpY2tseSBjaGFuZ2UgdmFsdWUiLAogdGltZV9jb25maXJtX2J1dHRvbjogIk9LIiwKIGFwcGx5X3JhbmdlOiAiQXBwbHkiLAogY2FuY2VsOiAiQ2FuY2VsIiwKIHdlZWs6ICJXayIgfSwKICAnTnVtYmVyJzogewogZGVjaW1hbDogJy4nLAogZ3JvdXA6ICcsJywKIGN1cnJlbmN5OiB7CiBwcmVmaXg6ICckJwogfQogfSwKICdGb3JtVmFsaWRhdG9yJzogeyJyZXF1aXJlZCI6IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIiwicmVxdWlyZWRDaGsiOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiJ9IH07CgogdmFyIGZ1bGxMb2NhbGUgPSAnJzsKCiAKICB2YXIgQ29weSA9IHt0cmFuc2xhdGU6ZnVuY3Rpb24odCxpLHUpe3ZhciBlPSdvYmplY3QnIT10eXBlb2YgdGhpcy5kaWN0W3RdP3RoaXMuZGljdFt0XTppP3RoaXMuZGljdFt0XS5wbHVyYWw6dGhpcy5kaWN0W3RdLnNpbmd1bGFyO3JldHVybidvYmplY3QnPT10eXBlb2YgdSYmKGU9dGhpcy5zdWJzdGl0dXRlKGUsdSkpLGV9LHN1YnN0aXR1dGU6ZnVuY3Rpb24odCxpKXtyZXR1cm4gdm9pZCAwIT09dC5zdWJzdGl0dXRlP3Quc3Vic3RpdHV0ZShpKTp0LnJlcGxhY2UoL1xcP1x7KFtee31dKylcfS9nLGZ1bmN0aW9uKHQsdSl7cmV0dXJuJ1xcJz09dC5jaGFyQXQoMCk/dC5zbGljZSgxKTpudWxsIT1pW3VdP2lbdV06Jyd9KX0sZGljdDp7fX07CiBDb3B5LmRpY3QgPSB7ImRpZF95b3VfbWVhbl9lbWFpbCI6IkRpZCB5b3UgbWVhbiA8ZW0+e1NVR0dFU1R9PFwvZW0+PyIsImVtYWlsX3Bhc3N3b3JkX21pc21hdGNoIjoiRW1haWwgYW5kIHBhc3N3b3JkIGRvIG5vdCBtYXRjaCIsImp1c3Rfbm93IjoianVzdCBub3ciLCJzZWNvbmRzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gc2Vjb25kIGFnbyIsInBsdXJhbCI6IntDT1VOVH0gc2Vjb25kcyBhZ28ifSwibWludXRlc19hZ28iOnsic2luZ3VsYXIiOiJ7Q09VTlR9IG1pbnV0ZSBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IG1pbnV0ZXMgYWdvIn0sImhvdXJzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gaG91ciBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IGhvdXJzIGFnbyJ9LCJvcGVuX2NvbW1lbnRfYm94IjoiQWRkIG5ldyBjb21tZW50IGluc3RlYWQgJnJhcXVvOyIsInVybF91bmF2YWlsYWJsZSI6IlNvcnJ5LCB0aGlzIHVybCBpcyB1bmF2YWlsYWJsZS4iLCJ1bnNhdmVkX2NoYW5nZXNfZ2VuZXJpYyI6IllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcywgYXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRvIGxlYXZlPyIsImFkZCI6IkFkZCIsInJlbW92ZSI6IlJlbW92ZSIsInNlbGVjdCI6IlNlbGVjdCIsIm5vX2ZvbGxvd2Vyc19mb3JfbGV0dGVyIjoiWW91IGRvbiZyc3F1bzt0IGZvbGxvdyBhbnlvbmUgdGhhdCBiZWdpbiB3aXRoIHRoZSBsZXR0ZXIgJmxkcXVvO3tQQUdFX0xFVFRFUn0mcmRxdW87Iiwic2hhcmVfbGltaXRfcmVhY2hlZCI6IllvdSBoYXZlIHJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVzZXJzIHRvIHNoYXJlIHdpdGguIiwiYXRfbGVhc3Rfb25lIjoiVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgdXNlci4iLCJhdmFpbGFibGUiOiJBdmFpbGFibGUiLCJ1bmF2YWlsYWJsZSI6IlVuYXZhaWxhYmxlIiwiYnJvd3NlX2Vycm9yX2dlbmVyaWMiOiJTb3JyeSwgdGhlcmUgd2FzIGFuIGVycm9yIiwiYnJvd3NlX2Vycm9yX25vX3ZpZGVvcyI6IlNvcnJ5LCBubyB2aWRlb3MgZm91bmQiLCJmb2xsb3ciOiJGb2xsb3ciLCJmb2xsb3dpbmciOiJGb2xsb3dpbmciLCJ1bmZvbGxvdyI6IlVuZm9sbG93IiwidW5mb2xsb3dpbmciOiJVbmZvbGxvd2luZyIsImNvdW50X2NvbW1lbnRzIjp7InNpbmd1bGFyIjoie0NPVU5UfSBjb21tZW50IiwicGx1cmFsIjoie0NPVU5UfSBjb21tZW50cyJ9LCJmaXJzdF9jb21tZW50IjoiQmUgdGhlIGZpcnN0IHRvIGNvbW1lbnRcdTIwMjYiLCJub19jb21tZW50c19mb3JfeW91IjoiRm9yYmlkZGVuLiBZb3UgY2Fubm90IHBvc3QgY29tbWVudHMgb24gdGhpcyBwYWdlLiIsIm9vcHMiOiJPb3BzISIsInBsYXllcl90cnlfYWdhaW4iOiJUaGF0IHdhc24ndCBzdXBwb3NlZCB0byBoYXBwZW4uIFBsZWFzZSB0cnkgYWdhaW4gaW4gYSBmZXcgbWludXRlcy4iLCJkdXJhdGlvbl9pbnB1dF9taW5fZHVyYXRpb24iOiJUaGUgZHVyYXRpb24gY2Fubm90IGJlIGxlc3MgdGhhbiB7TUlOX0RVUkFUSU9OfS4iLCJkdXJhdGlvbl9pbnB1dF9tYXhfZHVyYXRpb24iOiJUaGUgZHVyYXRpb24gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiB7TUFYX0RVUkFUSU9OfS4iLCJkdXJhdGlvbl9pbnB1dF9pbnZhbGlkX2NoYXJhY3RlcnMiOiIwLTkgYW5kIDogYXJlIHRoZSBvbmx5IGFjY2VwdGFibGUgaW5wdXRzLiIsImNsb3NlIjoiQ2xvc2UiLCJleHBhbmQiOiJFeHBhbmQiLCJsb2FkaW5nIjoiTG9hZGluZy4uLiIsInRvcCI6InRvcCIsImFkdmFuY2VkX3NlYXJjaCI6IkFkdmFuY2VkIFNlYXJjaCIsIm5vX3N1Z2dlc3Rpb25zIjoiTm8gc3VnZ2VzdGlvbnMiLCJyZWNlbnRfc2VhcmNoZXMiOiJSZWNlbnQgU2VhcmNoZXMiLCJzZWFyY2hfYWxsIjoiU2VhcmNoIEFsbCBvZiBWaW1lbyIsImVtYWlsX2FuZF9wYXNzd29yZCI6IlBsZWFzZSBlbnRlciB5b3VyIGVtYWlsIGFuZCBwYXNzd29yZCIsImVtYWlsX2FkZHJlc3MiOiJQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIiwibmFtZV9lbWFpbF9hbmRfcGFzc3dvcmQiOiJQbGVhc2UgZW50ZXIgeW91ciBuYW1lLCBlbWFpbCwgYW5kIHBhc3N3b3JkIiwiQWN0aXZpdHkiOiJBY3Rpdml0eSIsIkZvbGxvdyI6IkZvbGxvdyIsIkZvbGxvd2luZyI6IkZvbGxvd2luZyIsIkxvYWRpbmciOiJMb2FkaW5nIiwiTm8gYWN0aXZpdHkgaW4gdGhlIHBhc3QgMzAgZGF5cyI6Ik5vIGFjdGl2aXR5IGluIHRoZSBwYXN0IDMwIGRheXMiLCJTZWUgYWxsIjoiU2VlIGFsbCIsIlVuZm9sbG93IjoiVW5mb2xsb3ciLCJWaWV3IG1lc3NhZ2UiOiJWaWV3IG1lc3NhZ2UiLCJXZSdsbCBhbGVydCB5b3Ugb25jZSBzb21ldGhpbmcgY29vbCBoYXBwZW5zLiI6IldlJ2xsIGFsZXJ0IHlvdSBvbmNlIHNvbWV0aGluZyBjb29sIGhhcHBlbnMuIn07Cjwvc2NyaXB0PgoKCiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvcmVhY3RfcHJvZF9jb21iaW5lZC5taW4uanM/YjZlZTdhNGUiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L2V4Y2VwdGlvbl9jb21iaW5lZC5taW4uanM/MGM3YWFlODQiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L2FjdGl2aXR5X3RvcG5hdl9jb21iaW5lZC5taW4uanM/NTM5YjZjODMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L21vZHVsZXMvZ2xvYmFsL2FibGluY29sbi9ob3N0X3ZpZGVvcy5taW4uanM/NjVkYzQ1MWEiPjwvc2NyaXB0PgoKIDxzY3JpcHQgYXN5bmMgc3JjPSIvL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndG0uanM/aWQ9R1RNLVJCS0smbD1fZ3RtIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiBvblZpbWVvRG9tUmVhZHkoZSkgewogICAKIChmdW5jdGlvbigpIHsKIGlmICh0eXBlb2YgdmltZW8gIT09ICd1bmRlZmluZWQnICYmIHZpbWVvLmN1cl91c2VyKSB7CiB2aW1lby5jb25maWcuYXBpID0ge307CiB2aW1lby5jb25maWcuYXBpLnVybCA9ICdhcGkudmltZW8uY29tJzsKIHZpbWVvLmNvbmZpZy5hcGkuand0ID0gICdleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKMElqb3hPVFE1TXpNMk9URXNJbVY0Y0NJNk1UUTVNRGN6TkRnMk5uMC5SV0tob1JGdk8wbUpYMVJPUno1NUZWb2IxNGo4QzhGYVlXMHFnczU0Z2cwJzsKIHZpbWVvLmNvbmZpZy5hcGkudmVyc2lvbiA9ICczLjMnOwogfQogfSgpKTsKCiB3aW5kb3cudmltZW8gPSB3aW5kb3cudmltZW8gfHwge307CiB3aW5kb3cudmltZW8uZXhjZXB0aW9uX2RhdGEgPSB7InRpdGxlIjoiU29ycnksIHdlIGNvdWxkblx1MjAxOXQgZmluZCB0aGF0IHBhZ2UiLCJtZXNzYWdlIjoiIiwibm90aWZpY2F0aW9uIjoiPGRpdiBjbGFzcz1cImV4Y2VwdGlvbl9ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbFwiPlxuIDxkaXYgY2xhc3M9XCJpcmlzX25vdGlmaWNhdGlvbi0tdXBzZWxsLWljb25cIj5cbiA8c3BhbiBjbGFzcz1cImlyaXNfaWMgaXMtLTE2XCI+PHN2ZyB4bWxucz1cImh0dHA6XC9cL3d3dy53My5vcmdcLzIwMDBcL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj48cGF0aCBkPVwiTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6TTcgNGgydjJIN1Y0em0wIDNoMnY1SDdWN3pcIlwvPjxcL3N2Zz48XC9zcGFuPlxuIDxcL2Rpdj5cblxuIDxkaXYgY2xhc3M9XCJpcmlzX25vdGlmaWNhdGlvbi1oZWFkZXJcIj5cbiA8c3Ryb25nPlJlYXNvbnMgeW91IG1pZ2h0IGJlIHNlZWluZyB0aGlzIHBhZ2U8XC9zdHJvbmc+XG4gPFwvZGl2PlxuXG4gPHVsIGNsYXNzPVwiaXJpc19ub3RpZmljYXRpb24tbGlzdFwiPlxuICA8bGk+SXQgZXhpc3RzLCBidXQgeW91IGRvblx1MjAxOXQgaGF2ZSBwZXJtaXNzaW9uIHRvIHNlZSBpdCwgb3IgeW91IG5lZWQgdG8gPGEgb25jbGljaz1cInZpbWVvLlNlc3Npb24uY3JlYXRlKClcIj5sb2cgaW48XC9hPi48XC9saT5cbiAgPGxpPk5vdGhpbmcgaGFzIGV2ZXIgZXhpc3RlZCBoZXJlLiBTcG9va3kuPFwvbGk+XG4gPGxpPlNvbWV0aGluZyBvbmNlIGxpdmVkIGhlcmUsIGJ1dCBoYXMgYmVlbiBkZWxldGVkLjxcL2xpPlxuIDxcL3VsPlxuPFwvZGl2PlxuIiwic2VhcmNoIjp0cnVlLCJ2aWRlb3MiOlt7InNldHRpbmdzIjp7InRpdGxlIjp7InRleHQiOiJEaXNjb3ZlciB2aWRlb3MgZnJvbSB0aGUgd29ybGRcdTIwMTlzIGJlc3QgY3JlYXRvcnMiLCJzaG9ydF90ZXh0IjoiRGlzY292ZXIgYW1hemluZyB2aWRlb3MifSwidmlkZW9zIjpbeyJjbGlwX2lkIjoyMTAyMTE4MDAsImlzX3N0YWZmcGljayI6dHJ1ZSwiaXNfZmVhdHVyZWQiOmZhbHNlLCJ2b2RfaWQiOm51bGwsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU5OTMzMjNfMzkweDIyMC5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU5OTMzMjNfNzgweDQzOS5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU5OTMzMjNfMTU2MHg4NzguanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1OTkzMzIzXzMxMjB4MTc1Ni5qcGciLCJhbHQiOiJNT1RIRVIgLSBtb3RoZXIifSwidXBsb2FkZWRfb24iOiIxNCBob3VycyBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjE4NiwiZm9ybWF0dGVkIjoiMDM6MDYifSwicXVpY2tzdGF0cyI6eyJ0b3RhbF9jb21tZW50cyI6eyJyYXciOjE0LCJmb3JtYXR0ZWQiOiIxNCJ9LCJ0b3RhbF9saWtlcyI6eyJyYXciOjE1OCwiZm9ybWF0dGVkIjoiMTU4In0sInRvdGFsX3BsYXlzIjp7InJhdyI6MCwiZm9ybWF0dGVkIjoiMCJ9fSwidGl0bGUiOiJNT1RIRVIiLCJ1cmwiOiJcLzIxMDIxMTgwMCIsInVzZXIiOnsiaWQiOjIyNjUyMTksIm5hbWUiOiJNb3JnYW4gSm91cXVhbmQiLCJ1cmwiOiJcL21vcmdhbmpvdXF1YW5kIiwiYWNjb3VudF90eXBlIjoicGx1cyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjQzODU3Ml8xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjQzODU3Ml8zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjQzODU3Ml82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjQzODU3Ml8xMjh4MTI4LmpwZyJ9fSwiYXV0b3BsYXkiOmZhbHNlLCJzZWVrdGltZSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9LHsiY2xpcF9pZCI6MjA3NzYzMjUzLCJpc19zdGFmZnBpY2siOnRydWUsImlzX2ZlYXR1cmVkIjpmYWxzZSwidm9kX2lkIjpudWxsLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIyOTQwNDg3XzM5MHgyMjAuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIyOTQwNDg3Xzc4MHg0MzkuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIyOTQwNDg3XzE1NjB4ODc4LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyMjk0MDQ4N18zMTIweDE3NTYuanBnIiwiYWx0IjoiVGhlIEJpcnRoIE9mIEEgRHVnb3V0IENhbm9lIGJ5IE5vcnRobWVuIC0gd29vZCBjYXJ2aW5nIn0sInVwbG9hZGVkX29uIjoiMiB3ZWVrcyBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjExMjQsImZvcm1hdHRlZCI6IjE4OjQ0In0sInF1aWNrc3RhdHMiOnsidG90YWxfY29tbWVudHMiOnsicmF3IjoxNCwiZm9ybWF0dGVkIjoiMTQifSwidG90YWxfbGlrZXMiOnsicmF3IjoyMDQsImZvcm1hdHRlZCI6IjIwNCJ9LCJ0b3RhbF9wbGF5cyI6eyJyYXciOjM1ODYsImZvcm1hdHRlZCI6IjM1ODYifX0sInRpdGxlIjoiVGhlIEJpcnRoIE9mIEEgRHVnb3V0IENhbm9lIGJ5IE5vcnRobWVuIiwidXJsIjoiXC8yMDc3NjMyNTMiLCJ1c2VyIjp7ImlkIjoxMDU2NTYwNSwibmFtZSI6Ik5vcnRobWVuIiwidXJsIjoiXC9ub3J0aG1lbiIsImFjY291bnRfdHlwZSI6InBybyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNzcyMDU4OF8xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNzcyMDU4OF8zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNzcyMDU4OF82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNzcyMDU4OF8xMjh4MTI4LmpwZyJ9fSwiYXV0b3BsYXkiOmZhbHNlLCJzZWVrdGltZSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9LHsiY2xpcF9pZCI6MjA0Nzc2NjM2LCJpc19zdGFmZnBpY2siOnRydWUsImlzX2ZlYXR1cmVkIjpmYWxzZSwidm9kX2lkIjpudWxsLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjE5MzY4OTYzXzM5MHgyMjAuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjE5MzY4OTYzXzc4MHg0MzkuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjE5MzY4OTYzXzE1NjB4ODc4LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYxOTM2ODk2M18zMTIweDE3NTYuanBnIiwiYWx0IjoiTmFjaHRoZXhlbiAtIE5pZ2h0IFdpdGNoZXMifSwidXBsb2FkZWRfb24iOiIxIG1vbnRoIGFnbyIsImR1cmF0aW9uIjp7InJhdyI6NDkyLCJmb3JtYXR0ZWQiOiIwODoxMiJ9LCJxdWlja3N0YXRzIjp7InRvdGFsX2NvbW1lbnRzIjp7InJhdyI6MTEsImZvcm1hdHRlZCI6IjExIn0sInRvdGFsX2xpa2VzIjp7InJhdyI6MjIwLCJmb3JtYXR0ZWQiOiIyMjAifSwidG90YWxfcGxheXMiOnsicmF3Ijo2ODAzLCJmb3JtYXR0ZWQiOiI2ODAzIn19LCJ0aXRsZSI6Ik5hY2h0aGV4ZW4iLCJ1cmwiOiJcLzIwNDc3NjYzNiIsInVzZXIiOnsiaWQiOjMxOTQzMjQsIm5hbWUiOiJUaGUgQW5pbWF0aW9uIFdvcmtzaG9wIiwidXJsIjoiXC90aGVhbmltYXRpb253b3Jrc2hvcCIsImFjY291bnRfdHlwZSI6InBsdXMiLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTY2NTM1MjNfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTY2NTM1MjNfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTY2NTM1MjNfNjR4NjQuanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTY2NTM1MjNfMTI4eDEyOC5qcGcifX0sImF1dG9wbGF5IjpmYWxzZSwic2Vla3RpbWUiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7ImNsaXBfaWQiOjE3MTc0NjM4MSwiaXNfc3RhZmZwaWNrIjp0cnVlLCJpc19mZWF0dXJlZCI6ZmFsc2UsInZvZF9pZCI6bnVsbCwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzU3NzI5MjIwMV8zOTB4MjIwLmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzU3NzI5MjIwMV83ODB4NDM5LmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzU3NzI5MjIwMV8xNTYweDg3OC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC81NzcyOTIyMDFfMzEyMHgxNzU2LmpwZyIsImFsdCI6IkJheWEgLSBHYXRlIDIxMiBcLyBHaW1tZSBUaGF0IERpdmUgLSBpc2F3am9obmZpcnN0In0sInVwbG9hZGVkX29uIjoiOSBtb250aHMgYWdvIiwiZHVyYXRpb24iOnsicmF3IjozNjEsImZvcm1hdHRlZCI6IjA2OjAxIn0sInF1aWNrc3RhdHMiOnsidG90YWxfY29tbWVudHMiOnsicmF3IjoxOSwiZm9ybWF0dGVkIjoiMTkifSwidG90YWxfbGlrZXMiOnsicmF3Ijo1MzIsImZvcm1hdHRlZCI6IjUzMiJ9LCJ0b3RhbF9wbGF5cyI6eyJyYXciOjYyMTksImZvcm1hdHRlZCI6IjYyMTkifX0sInRpdGxlIjoiQmF5YSAtIEdhdGUgMjEyIFwvIEdpbW1lIFRoYXQgRGl2ZSIsInVybCI6IlwvMTcxNzQ2MzgxIiwidXNlciI6eyJpZCI6MzMzODcwNywibmFtZSI6IkpvaG4gQ2hyaXN0aWFuIEZlcm5lciBBcGFsbmVzIiwidXJsIjoiXC9pc2F3am9obmZpcnN0IiwiYWNjb3VudF90eXBlIjoicGx1cyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC83NzkwNTQ5XzE2eDE2LmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzc3OTA1NDlfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvNzc5MDU0OV82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC83NzkwNTQ5XzEyOHgxMjguanBnIn19LCJhdXRvcGxheSI6ZmFsc2UsInNlZWt0aW1lIjpmYWxzZSwid2F0Y2hfbGF0ZXIiOmZhbHNlLCJpc19zcGF0aWFsIjpmYWxzZX1dfX0seyJzZXR0aW5ncyI6eyJ0aXRsZSI6eyJ0ZXh0IjoiUHVyY2hhc2UgaGlnaC1xdWFsaXR5IGZpbG1zIGFuZCBzZXJpZXMiLCJzaG9ydF90ZXh0IjoiUHVyY2hhc2UgZmlsbXMgYW5kIHNlcmllcyJ9LCJ2aWRlb3MiOlt7InZvZF9pZCI6MTAzNzAxLCJ0cmFpbGVyX2lkIjoxNzY5NTQzNzIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0NjY3NzhfMzkweDIxOS5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0NjY3NzhfNzgweDQzOS5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0NjY3NzhfMTU2MHg4NzguanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDY2Nzc4XzMxMjB4MTc1Ni5qcGciLCJhbHQiOiJDb21lIERvd24gTW9sbHkgLSB0cmliZWNhIGZpbG0gZmVzdGl2YWwifSwidXBsb2FkZWRfb24iOiI0IGRheXMgYWdvIiwiZHVyYXRpb24iOnsicmF3Ijo0ODM3LCJmb3JtYXR0ZWQiOiIwMToyMDozNyJ9LCJ0aXRsZSI6IkNvbWUgRG93biBNb2xseSIsInVybCI6Ilwvb25kZW1hbmRcL2NvbWVkb3dubW9sbHkiLCJ1c2VyIjp7ImlkIjoxMjI5MzUwLCJuYW1lIjoiRmFjdG9yeSAyNSIsInVybCI6IlwvZmFjdG9yeTI1IiwiYWNjb3VudF90eXBlIjoicHJvIiwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE4MDA1XzE2eDE2LmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE4MDA1XzMyeDMyLmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE4MDA1XzY0eDY0LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE4MDA1XzEyOHgxMjguanBnIn19LCJwcmljZSI6IiQ0LjI1IiwiYXV0b3BsYXkiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7InZvZF9pZCI6MTAzNzM0LCJ0cmFpbGVyX2lkIjoyMDU0MjI3MDUsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0MjQyNDNfMzkweDIxOS5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0MjQyNDNfNzgweDQzOS5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0MjQyNDNfMTU2MHg4NzguanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDI0MjQzXzMxMjB4MTc1Ni5qcGciLCJhbHQiOiJCbG9vbWluIE11ZCBTaHVmZmxlIC0gSmFtZXMgUmFuc29uZSJ9LCJ1cGxvYWRlZF9vbiI6IjQgZGF5cyBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjQ1MTAsImZvcm1hdHRlZCI6IjAxOjE1OjEwIn0sInRpdGxlIjoiQmxvb21pbiBNdWQgU2h1ZmZsZSIsInVybCI6Ilwvb25kZW1hbmRcL2Jsb29taW5tdWRzaHVmZmxlIiwidXNlciI6eyJpZCI6MTIyOTM1MCwibmFtZSI6IkZhY3RvcnkgMjUiLCJ1cmwiOiJcL2ZhY3RvcnkyNSIsImFjY291bnRfdHlwZSI6InBybyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xODAwNV8xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xODAwNV8zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xODAwNV82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xODAwNV8xMjh4MTI4LmpwZyJ9fSwicHJpY2UiOiIkNC4yNSIsImF1dG9wbGF5IjpmYWxzZSwid2F0Y2hfbGF0ZXIiOmZhbHNlLCJpc19zcGF0aWFsIjpmYWxzZX0seyJ2b2RfaWQiOjEwMzc0NywidHJhaWxlcl9pZCI6MjA3Njg2MTQ0LCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDMzMjk0XzM5MHgyMTkuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDMzMjk0Xzc4MHg0MzkuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDMzMjk0XzE1NjB4ODc4LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTQzMzI5NF8zMTIweDE3NTYuanBnIiwiYWx0IjoiVGhleSBMb29rIExpa2UgUGVvcGxlIC0gcGVvcGxlIn0sInVwbG9hZGVkX29uIjoiNCBkYXlzIGFnbyIsImR1cmF0aW9uIjp7InJhdyI6NDc3MSwiZm9ybWF0dGVkIjoiMDE6MTk6MzEifSwidGl0bGUiOiJUaGV5IExvb2sgTGlrZSBQZW9wbGUiLCJ1cmwiOiJcL29uZGVtYW5kXC90aGV5bG9va2xpa2VwZW9wbGUiLCJ1c2VyIjp7ImlkIjo0NTk1MDYyLCJuYW1lIjoiR3Jhdml0YXMgVmVudHVyZXMiLCJ1cmwiOiJcL2dyYXZpdGFzdmVudHVyZXMiLCJhY2NvdW50X3R5cGUiOiJidXNpbmVzcyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC83MTEzMTY3XzE2eDE2LmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzcxMTMxNjdfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvNzExMzE2N182NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC83MTEzMTY3XzEyOHgxMjguanBnIn19LCJwcmljZSI6IiQzLjk5IiwiYXV0b3BsYXkiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7InZvZF9pZCI6MTAyOTUyLCJ0cmFpbGVyX2lkIjoyMDc4NzM0MzksInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZvZF9wYWdlX3RodW1ibmFpbFwvMjQ4NzhfMzkweDIxOSIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdm9kX3BhZ2VfdGh1bWJuYWlsXC8yNDg3OF83ODB4NDM5Iiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92b2RfcGFnZV90aHVtYm5haWxcLzI0ODc4XzE1NjB4ODc4Iiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92b2RfcGFnZV90aHVtYm5haWxcLzI0ODc4XzMxMjB4MTc1NSIsImFsdCI6Ik1FTU9SWSJ9LCJ1cGxvYWRlZF9vbiI6IjUgZGF5cyBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjUzNjcsImZvcm1hdHRlZCI6IjAxOjI5OjI3In0sInRpdGxlIjoiTUVNT1JZIHByZXNlbnRzOiBQcm9ncmFtIE5vLiAyIiwidXJsIjoiXC9vbmRlbWFuZFwvcHJvZ3JhbTIiLCJ1c2VyIjp7ImlkIjozMDQzMzU0MCwibmFtZSI6Ik1FTU9SWSIsInVybCI6IlwvbWVtb3J5aXMiLCJhY2NvdW50X3R5cGUiOiJwcm8iLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTU1ODU3NDNfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTU1ODU3NDNfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTU1ODU3NDNfNjR4NjQuanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTU1ODU3NDNfMTI4eDEyOC5qcGcifX0sInByaWNlIjoiJDguOTkiLCJhdXRvcGxheSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9XX19LHsic2V0dGluZ3MiOnsidGl0bGUiOnsidGV4dCI6IldhdGNoIGh1bWFuLWN1cmF0ZWQgU3RhZmYgUGlja3MiLCJzaG9ydF90ZXh0IjoiV2F0Y2ggU3RhZmYgUGlja3MifSwidmlkZW9zIjpbeyJjbGlwX2lkIjoyMDkyNTc1NjQsImlzX3N0YWZmcGljayI6dHJ1ZSwiaXNfZmVhdHVyZWQiOmZhbHNlLCJ2b2RfaWQiOm51bGwsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU3NzgyNDdfMzkweDIyMC5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU3NzgyNDdfNzgweDQzOS5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU3NzgyNDdfMTU2MHg4NzguanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1Nzc4MjQ3XzMxMjB4MTc1Ni5qcGciLCJhbHQiOiJFbHV2aXVtIC0gUmVnZW5lcmF0aXZlIEJlaW5nIChPZmZpY2lhbCBWaWRlbykgLSBFbHV2aXVtIn0sInVwbG9hZGVkX29uIjoiMSB3ZWVrIGFnbyIsImR1cmF0aW9uIjp7InJhdyI6NDQxLCJmb3JtYXR0ZWQiOiIwNzoyMSJ9LCJxdWlja3N0YXRzIjp7InRvdGFsX2NvbW1lbnRzIjp7InJhdyI6NywiZm9ybWF0dGVkIjoiNyJ9LCJ0b3RhbF9saWtlcyI6eyJyYXciOjE0NiwiZm9ybWF0dGVkIjoiMTQ2In0sInRvdGFsX3BsYXlzIjp7InJhdyI6Mjk4MywiZm9ybWF0dGVkIjoiMjk4MyJ9fSwidGl0bGUiOiJFbHV2aXVtIC0gUmVnZW5lcmF0aXZlIEJlaW5nIChPZmZpY2lhbCBWaWRlbykiLCJ1cmwiOiJcLzIwOTI1NzU2NCIsInVzZXIiOnsiaWQiOjEyODgxMDA4LCJuYW1lIjoiU3RhcyBTYW50aW1vdiIsInVybCI6Ilwvc2FudGltb3YiLCJhY2NvdW50X3R5cGUiOiJwbHVzIiwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzg4NDkxNDlfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvODg0OTE0OV8zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC84ODQ5MTQ5XzY0eDY0LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzg4NDkxNDlfMTI4eDEyOC5qcGcifX0sImF1dG9wbGF5IjpmYWxzZSwic2Vla3RpbWUiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7ImNsaXBfaWQiOjIwOTY5NDMwMCwiaXNfc3RhZmZwaWNrIjp0cnVlLCJpc19mZWF0dXJlZCI6ZmFsc2UsInZvZF9pZCI6bnVsbCwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTMwMzc2Nl8zOTB4MjIwLmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTMwMzc2Nl83ODB4NDM5LmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTMwMzc2Nl8xNTYweDg3OC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjUzMDM3NjZfMzEyMHgxNzU2LmpwZyIsImFsdCI6IkJ1bGxkb3plciAtIG5vd25lc3MifSwidXBsb2FkZWRfb24iOiI0IGRheXMgYWdvIiwiZHVyYXRpb24iOnsicmF3IjoyNjYsImZvcm1hdHRlZCI6IjA0OjI2In0sInF1aWNrc3RhdHMiOnsidG90YWxfY29tbWVudHMiOnsicmF3IjozNCwiZm9ybWF0dGVkIjoiMzQifSwidG90YWxfbGlrZXMiOnsicmF3IjoyNjIsImZvcm1hdHRlZCI6IjI2MiJ9LCJ0b3RhbF9wbGF5cyI6eyJyYXciOjU5OTcsImZvcm1hdHRlZCI6IjU5OTcifX0sInRpdGxlIjoiQnVsbGRvemVyIiwidXJsIjoiXC8yMDk2OTQzMDAiLCJ1c2VyIjp7ImlkIjoxMDk5MDgyLCJuYW1lIjoiSXRzYm9uZ29ib3kiLCJ1cmwiOiJcL2l0c2JvbmdvYm95IiwiYWNjb3VudF90eXBlIjoicGx1cyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjE4NTAxN18xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjE4NTAxN18zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjE4NTAxN182NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjE4NTAxN18xMjh4MTI4LmpwZyJ9fSwiYXV0b3BsYXkiOmZhbHNlLCJzZWVrdGltZSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9LHsiY2xpcF9pZCI6MjA4NDY0OTY2LCJpc19zdGFmZnBpY2siOnRydWUsImlzX2ZlYXR1cmVkIjpmYWxzZSwidm9kX2lkIjpudWxsLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIzNzg5OTM3XzM5MHgyMjAuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIzNzg5OTM3Xzc4MHg0MzkuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIzNzg5OTM3XzE1NjB4ODc4LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyMzc4OTkzN18zMTIweDE3NTYuanBnIiwiYWx0IjoiVG9tIE1jQ2FydGVuIn0sInVwbG9hZGVkX29uIjoiMiB3ZWVrcyBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjIzOCwiZm9ybWF0dGVkIjoiMDM6NTgifSwicXVpY2tzdGF0cyI6eyJ0b3RhbF9jb21tZW50cyI6eyJyYXciOjQwLCJmb3JtYXR0ZWQiOiI0MCJ9LCJ0b3RhbF9saWtlcyI6eyJyYXciOjIwNTEsImZvcm1hdHRlZCI6IjIwNTEifSwidG90YWxfcGxheXMiOnsicmF3IjoxMzIzMzgsImZvcm1hdHRlZCI6IjEzMksifX0sInRpdGxlIjoiU3BhY2UgU2V4IGlzIFNlcmlvdXMgQnVzaW5lc3MiLCJ1cmwiOiJcLzIwODQ2NDk2NiIsInVzZXIiOnsiaWQiOjI0NzEwOTQsIm5hbWUiOiJUb20gTWNDYXJ0ZW4iLCJ1cmwiOiJcL21jY2FydGVuIiwiYWNjb3VudF90eXBlIjoiYmFzaWMiLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTc3ODc2ODVfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTc3ODc2ODVfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTc3ODc2ODVfNjR4NjQuanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTc3ODc2ODVfMTI4eDEyOC5qcGcifX0sImF1dG9wbGF5IjpmYWxzZSwic2Vla3RpbWUiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7ImNsaXBfaWQiOjIwNzUzNTMwMiwiaXNfc3RhZmZwaWNrIjp0cnVlLCJpc19mZWF0dXJlZCI6ZmFsc2UsInZvZF9pZCI6bnVsbCwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNDQ3NjY2Ml8zOTB4MjIwLmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNDQ3NjY2Ml83ODB4NDM5LmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNDQ3NjY2Ml8xNTYweDg3OC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjQ0NzY2NjJfMzEyMHgxNzU2LmpwZyIsImFsdCI6IkJ5IFRoZSBOYW1lIG9mIEJvc3RvbiAtIGFuaW1hdGlvbiJ9LCJ1cGxvYWRlZF9vbiI6IjIgd2Vla3MgYWdvIiwiZHVyYXRpb24iOnsicmF3IjoxNDQsImZvcm1hdHRlZCI6IjAyOjI0In0sInF1aWNrc3RhdHMiOnsidG90YWxfY29tbWVudHMiOnsicmF3IjoxMywiZm9ybWF0dGVkIjoiMTMifSwidG90YWxfbGlrZXMiOnsicmF3Ijo1NzcsImZvcm1hdHRlZCI6IjU3NyJ9LCJ0b3RhbF9wbGF5cyI6eyJyYXciOjExMzk5MCwiZm9ybWF0dGVkIjoiMTE0SyJ9fSwidGl0bGUiOiJCeSBUaGUgTmFtZSBvZiBCb3N0b24iLCJ1cmwiOiJcLzIwNzUzNTMwMiIsInVzZXIiOnsiaWQiOjkzMDc5MjMsIm5hbWUiOiJHcmFudCBLb2x0b24iLCJ1cmwiOiJcL2dyYW50a29sdG9uIiwiYWNjb3VudF90eXBlIjoicGx1cyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xMDE1MTcxMl8xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xMDE1MTcxMl8zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xMDE1MTcxMl82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xMDE1MTcxMl8xMjh4MTI4LmpwZyJ9fSwiYXV0b3BsYXkiOmZhbHNlLCJzZWVrdGltZSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9XX19XSwiYWRfY29uZmlnIjp7Im5ldHdvcmtfaWQiOiI1NDU0OTU0NCIsInVuaXRfbmFtZSI6ImVycm9ycGFnZSIsInNpemVzIjpbMzAwLDI1MF19LCJ3YXRjaF9sYXRlcl9jbGlwX2lkcyI6W119OwoKIG5ldyB3aW5kb3cuRXhjZXB0aW9uKCk7CiAgCiAKICB9CgogICQoZG9jdW1lbnQpLnJlYWR5KG9uVmltZW9Eb21SZWFkeSk7CiAgPC9zY3JpcHQ+CgoKIDwvYm9keT4KPC9odG1sPgo=
126
- http_version:
127
- recorded_at: Mon, 27 Mar 2017 21:01:06 GMT
125
+ PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICAgIDxoZWFkPgogICAgICAgIAo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CjxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE5ODg0MDI4OTYzIj4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Ii8vcGxheWVyLnZpbWVvLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9pLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9mLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvc2VhcmNoL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iVmltZW8iPgo8bGluayByZWw9ImxvZ28iIHR5cGU9ImltYWdlL3N2ZyIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9sb2dvLnN2ZyI+CgoKICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTUuMCx1c2VyLXNjYWxhYmxlPXllcyI+CiAgICAKCiAgICAgICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlNvcnJ5LCB3ZSBjb3VsZG4mcnNxdW87dCBmaW5kIHRoYXQgcGFnZSI+CiAgICAgICAgPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4Ij4KCgoKCiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiIGhyZWY9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9tYWluLXRvdWNoXzE4MCI+Cgo8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdmcvbGVnYWN5X3ZpZXdfc3VwcG9ydC9pcmlzX2ljb25fdl82NC5zdmc/ZTEwMTNkZWI2ZTg0NDcwYzc1ZDA3NWY4NmRiM2NkNGQ5NGQyMTgxNiIgY29sb3I9IiMxNzI3MmUiPgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9pbWFnZXNfdjYvZmF2aWNvbi5pY28/ZTEwMTNkZWI2ZTg0NDcwYzc1ZDA3NWY4NmRiM2NkNGQ5NGQyMTgxNiIgZGF0YS1wbGF5PSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vcGxheV8zMiIgZGF0YS1wYXVzZT0iaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9mYXZpY29uL3BhdXNlXzMyIj4KCjxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tVGlsZUltYWdlIiBjb250ZW50PSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vbWFpbi10b3VjaF8xNDQiPgo8bWV0YSBuYW1lPSJtc2FwcGxpY2F0aW9uLVRpbGVDb2xvciIgY29udGVudD0iIzAwYWRlZiI+CiAgICAgICAgPHRpdGxlPlZpbWVVaE9oPC90aXRsZT4KICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAvLyBGaXJzdCBJbnB1dCBEZWxheSB0cmFja2luZy4gSGlnaCBwcmlvcml0eSBsb2FkaW5nIHRvIG5vdCBtaXNzIGV2ZW50CiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWVMYWJzL2ZpcnN0LWlucHV0LWRlbGF5L2Jsb2IvbWFzdGVyL2Rpc3QvZmlyc3QtaW5wdXQtZGVsYXkubWluLmpzCiAgICAgICAgICAgICFmdW5jdGlvbihuLGUpe3ZhciB0LG8saSxjPVtdLGY9e3Bhc3NpdmU6ITAsY2FwdHVyZTohMH0scj1uZXcgRGF0ZSxhPSJwb2ludGVydXAiLHU9InBvaW50ZXJjYW5jZWwiO2Z1bmN0aW9uIHAobixjKXt0fHwodD1jLG89bixpPW5ldyBEYXRlLHcoZSkscygpKX1mdW5jdGlvbiBzKCl7bz49MCYmbzxpLXImJihjLmZvckVhY2goZnVuY3Rpb24obil7bihvLHQpfSksYz1bXSl9ZnVuY3Rpb24gbCh0KXtpZih0LmNhbmNlbGFibGUpe3ZhciBvPSh0LnRpbWVTdGFtcD4xZTEyP25ldyBEYXRlOnBlcmZvcm1hbmNlLm5vdygpKS10LnRpbWVTdGFtcDsicG9pbnRlcmRvd24iPT10LnR5cGU/ZnVuY3Rpb24odCxvKXtmdW5jdGlvbiBpKCl7cCh0LG8pLHIoKX1mdW5jdGlvbiBjKCl7cigpfWZ1bmN0aW9uIHIoKXtlKGEsaSxmKSxlKHUsYyxmKX1uKGEsaSxmKSxuKHUsYyxmKX0obyx0KTpwKG8sdCl9fWZ1bmN0aW9uIHcobil7WyJjbGljayIsIm1vdXNlZG93biIsImtleWRvd24iLCJ0b3VjaHN0YXJ0IiwicG9pbnRlcmRvd24iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe24oZSxsLGYpfSl9dyhuKSxzZWxmLnBlcmZNZXRyaWNzPXNlbGYucGVyZk1ldHJpY3N8fHt9LHNlbGYucGVyZk1ldHJpY3Mub25GaXJzdElucHV0RGVsYXk9ZnVuY3Rpb24obil7Yy5wdXNoKG4pLHMoKX19KGFkZEV2ZW50TGlzdGVuZXIscmVtb3ZlRXZlbnRMaXN0ZW5lcik7CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgIC8vIENyZWF0ZSBQZXJmb3JtYW5jZU9ic2VydmVyIGZvciB0cmFja2luZyBUVEkKICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWVMYWJzL3R0aS1wb2x5ZmlsbAogICAgICAgICAgIWZ1bmN0aW9uKCl7aWYoJ1BlcmZvcm1hbmNlTG9uZ1Rhc2tUaW1pbmcnIGluIHdpbmRvdyl7dmFyIGc9d2luZG93Ll9fdHRpPXtlOltdfTsKICAgICAgICAgIGcubz1uZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihmdW5jdGlvbihsKXtnLmU9Zy5lLmNvbmNhdChsLmdldEVudHJpZXMoKSl9KTsKICAgICAgICAgIGcuby5vYnNlcnZlKHtlbnRyeVR5cGVzOlsnbG9uZ3Rhc2snXX0pfX0oKTsKICAgICAgICA8L3NjcmlwdD4KICAgICAgICA8c2NyaXB0PgogICAgICAgICAgLy8gTmV3IFJlbGljIEFnZW50CiAgICAgICAgICA7d2luZG93Lk5SRVVNfHwoTlJFVU09e30pO05SRVVNLmluaXQ9e2Rpc3RyaWJ1dGVkX3RyYWNpbmc6e2VuYWJsZWQ6dHJ1ZX0scHJpdmFjeTp7Y29va2llc19lbmFibGVkOnRydWV9fTsKICAgICAgICAgIHdpbmRvdy5OUkVVTXx8KE5SRVVNPXt9KSxfX25yX3JlcXVpcmU9ZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIobil7aWYoIWVbbl0pe3ZhciBvPWVbbl09e2V4cG9ydHM6e319O3Rbbl1bMF0uY2FsbChvLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG89dFtuXVsxXVtlXTtyZXR1cm4gcihvfHxlKX0sbyxvLmV4cG9ydHMpfXJldHVybiBlW25dLmV4cG9ydHN9aWYoImZ1bmN0aW9uIj09dHlwZW9mIF9fbnJfcmVxdWlyZSlyZXR1cm4gX19ucl9yZXF1aXJlO2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKXIobltvXSk7cmV0dXJuIHJ9KHsxOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXt0cnl7cy5jb25zb2xlJiZjb25zb2xlLmxvZyh0KX1jYXRjaChlKXt9fXZhciBvLGk9dCgiZWUiKSxhPXQoMjUpLHM9e307dHJ5e289bG9jYWxTdG9yYWdlLmdldEl0ZW0oIl9fbnJfZmxhZ3MiKS5zcGxpdCgiLCIpLGNvbnNvbGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLmxvZyYmKHMuY29uc29sZT0hMCxvLmluZGV4T2YoImRldiIpIT09LTEmJihzLmRldj0hMCksby5pbmRleE9mKCJucl9kZXYiKSE9PS0xJiYocy5uckRldj0hMCkpfWNhdGNoKGMpe31zLm5yRGV2JiZpLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7cih0LnN0YWNrKX0pLHMuZGV2JiZpLm9uKCJmbi1lcnIiLGZ1bmN0aW9uKHQsZSxuKXtyKG4uc3RhY2spfSkscy5kZXYmJihyKCJOUiBBR0VOVCBJTiBERVZFTE9QTUVOVCBNT0RFIikscigiZmxhZ3M6ICIrYShzLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHR9KS5qb2luKCIsICIpKSl9LHt9XSwyOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbixyLHMpe3RyeXtsP2wtPTE6byhzfHxuZXcgVW5jYXVnaHRFeGNlcHRpb24odCxlLG4pLCEwKX1jYXRjaChmKXt0cnl7aSgiaWVyciIsW2YsYy5ub3coKSwhMF0pfWNhdGNoKGQpe319cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHUmJnUuYXBwbHkodGhpcyxhKGFyZ3VtZW50cykpfWZ1bmN0aW9uIFVuY2F1Z2h0RXhjZXB0aW9uKHQsZSxuKXt0aGlzLm1lc3NhZ2U9dHx8IlVuY2F1Z2h0IGVycm9yIHdpdGggbm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiIsdGhpcy5zb3VyY2VVUkw9ZSx0aGlzLmxpbmU9bn1mdW5jdGlvbiBvKHQsZSl7dmFyIG49ZT9udWxsOmMubm93KCk7aSgiZXJyIixbdCxuXSl9dmFyIGk9dCgiaGFuZGxlIiksYT10KDI2KSxzPXQoImVlIiksYz10KCJsb2FkZXIiKSxmPXQoImdvcyIpLHU9d2luZG93Lm9uZXJyb3IsZD0hMSxwPSJuckBzZWVuRXJyb3IiLGw9MDtjLmZlYXR1cmVzLmVycj0hMCx0KDEpLHdpbmRvdy5vbmVycm9yPXI7dHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaChoKXsic3RhY2siaW4gaCYmKHQoMTMpLHQoMTIpLCJhZGRFdmVudExpc3RlbmVyImluIHdpbmRvdyYmdCg2KSxjLnhocldyYXBwYWJsZSYmdCgxNCksZD0hMCl9cy5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXtkJiYobCs9MSl9KSxzLm9uKCJmbi1lcnIiLGZ1bmN0aW9uKHQsZSxuKXtkJiYhbltwXSYmKGYobixwLGZ1bmN0aW9uKCl7cmV0dXJuITB9KSx0aGlzLnRocm93bj0hMCxvKG4pKX0pLHMub24oImZuLWVuZCIsZnVuY3Rpb24oKXtkJiYhdGhpcy50aHJvd24mJmw+MCYmKGwtPTEpfSkscy5vbigiaW50ZXJuYWwtZXJyb3IiLGZ1bmN0aW9uKHQpe2koImllcnIiLFt0LGMubm93KCksITBdKX0pfSx7fV0sMzpbZnVuY3Rpb24odCxlLG4pe3QoImxvYWRlciIpLmZlYXR1cmVzLmlucz0hMH0se31dLDQ6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7TCsrLEM9Zy5oYXNoLHRoaXNbdV09eS5ub3coKX1mdW5jdGlvbiBvKCl7TC0tLGcuaGFzaCE9PUMmJmkoMCwhMCk7dmFyIHQ9eS5ub3coKTt0aGlzW2hdPX5+dGhpc1toXSt0LXRoaXNbdV0sdGhpc1tkXT10fWZ1bmN0aW9uIGkodCxlKXtFLmVtaXQoIm5ld1VSTCIsWyIiK2csZV0pfWZ1bmN0aW9uIGEodCxlKXt0Lm9uKGUsZnVuY3Rpb24oKXt0aGlzW2VdPXkubm93KCl9KX12YXIgcz0iLXN0YXJ0IixjPSItZW5kIixmPSItYm9keSIsdT0iZm4iK3MsZD0iZm4iK2MscD0iY2IiK3MsbD0iY2IiK2MsaD0ianNUaW1lIixtPSJmZXRjaCIsdj0iYWRkRXZlbnRMaXN0ZW5lciIsdz13aW5kb3csZz13LmxvY2F0aW9uLHk9dCgibG9hZGVyIik7aWYod1t2XSYmeS54aHJXcmFwcGFibGUpe3ZhciB4PXQoMTApLGI9dCgxMSksRT10KDgpLE89dCg2KSxSPXQoMTMpLFA9dCg3KSxUPXQoMTQpLE49dCg5KSxNPXQoImVlIiksUz1NLmdldCgidHJhY2VyIik7dCgxNikseS5mZWF0dXJlcy5zcGE9ITA7dmFyIEMsTD0wO00ub24odSxyKSxNLm9uKHAsciksTS5vbihkLG8pLE0ub24obCxvKSxNLmJ1ZmZlcihbdSxkLCJ4aHItZG9uZSIsInhoci1yZXNvbHZlZCJdKSxPLmJ1ZmZlcihbdV0pLFIuYnVmZmVyKFsic2V0VGltZW91dCIrYywiY2xlYXJUaW1lb3V0IitzLHVdKSxULmJ1ZmZlcihbdSwibmV3LXhociIsInNlbmQteGhyIitzXSksUC5idWZmZXIoW20rcyxtKyItZG9uZSIsbStmK3MsbStmK2NdKSxFLmJ1ZmZlcihbIm5ld1VSTCJdKSx4LmJ1ZmZlcihbdV0pLGIuYnVmZmVyKFsicHJvcGFnYXRlIixwLGwsImV4ZWN1dG9yLWVyciIsInJlc29sdmUiK3NdKSxTLmJ1ZmZlcihbdSwibm8tIit1XSksTi5idWZmZXIoWyJuZXctanNvbnAiLCJjYi1zdGFydCIsImpzb25wLWVycm9yIiwianNvbnAtZW5kIl0pLGEoVCwic2VuZC14aHIiK3MpLGEoTSwieGhyLXJlc29sdmVkIiksYShNLCJ4aHItZG9uZSIpLGEoUCxtK3MpLGEoUCxtKyItZG9uZSIpLGEoTiwibmV3LWpzb25wIiksYShOLCJqc29ucC1lbmQiKSxhKE4sImNiLXN0YXJ0IiksRS5vbigicHVzaFN0YXRlLWVuZCIsaSksRS5vbigicmVwbGFjZVN0YXRlLWVuZCIsaSksd1t2XSgiaGFzaGNoYW5nZSIsaSwhMCksd1t2XSgibG9hZCIsaSwhMCksd1t2XSgicG9wc3RhdGUiLGZ1bmN0aW9uKCl7aSgwLEw+MSl9LCEwKX19LHt9XSw1OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXt9aWYod2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nJiZ3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSl7dmFyIG89dCgiZWUiKSxpPXQoImhhbmRsZSIpLGE9dCgxMykscz10KDEyKSxjPSJsZWFyUmVzb3VyY2VUaW1pbmdzIixmPSJhZGRFdmVudExpc3RlbmVyIix1PSJyZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwiLGQ9ImJzdFJlc291cmNlIixwPSJyZXNvdXJjZSIsbD0iLXN0YXJ0IixoPSItZW5kIixtPSJmbiIrbCx2PSJmbiIraCx3PSJic3RUaW1lciIsZz0icHVzaFN0YXRlIix5PXQoImxvYWRlciIpO3kuZmVhdHVyZXMuc3RuPSEwLHQoOCksImFkZEV2ZW50TGlzdGVuZXIiaW4gd2luZG93JiZ0KDYpO3ZhciB4PU5SRVVNLm8uRVY7by5vbihtLGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXTtuIGluc3RhbmNlb2YgeCYmKHRoaXMuYnN0U3RhcnQ9eS5ub3coKSl9KSxvLm9uKHYsZnVuY3Rpb24odCxlKXt2YXIgbj10WzBdO24gaW5zdGFuY2VvZiB4JiZpKCJic3QiLFtuLGUsdGhpcy5ic3RTdGFydCx5Lm5vdygpXSl9KSxhLm9uKG0sZnVuY3Rpb24odCxlLG4pe3RoaXMuYnN0U3RhcnQ9eS5ub3coKSx0aGlzLmJzdFR5cGU9bn0pLGEub24odixmdW5jdGlvbih0LGUpe2kodyxbZSx0aGlzLmJzdFN0YXJ0LHkubm93KCksdGhpcy5ic3RUeXBlXSl9KSxzLm9uKG0sZnVuY3Rpb24oKXt0aGlzLmJzdFN0YXJ0PXkubm93KCl9KSxzLm9uKHYsZnVuY3Rpb24odCxlKXtpKHcsW2UsdGhpcy5ic3RTdGFydCx5Lm5vdygpLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXSl9KSxvLm9uKGcrbCxmdW5jdGlvbih0KXt0aGlzLnRpbWU9eS5ub3coKSx0aGlzLnN0YXJ0UGF0aD1sb2NhdGlvbi5wYXRobmFtZStsb2NhdGlvbi5oYXNofSksby5vbihnK2gsZnVuY3Rpb24odCl7aSgiYnN0SGlzdCIsW2xvY2F0aW9uLnBhdGhuYW1lK2xvY2F0aW9uLmhhc2gsdGhpcy5zdGFydFBhdGgsdGhpcy50aW1lXSl9KSxmIGluIHdpbmRvdy5wZXJmb3JtYW5jZSYmKHdpbmRvdy5wZXJmb3JtYW5jZVsiYyIrY10/d2luZG93LnBlcmZvcm1hbmNlW2ZdKHUsZnVuY3Rpb24odCl7aShkLFt3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZShwKV0pLHdpbmRvdy5wZXJmb3JtYW5jZVsiYyIrY10oKX0sITEpOndpbmRvdy5wZXJmb3JtYW5jZVtmXSgid2Via2l0Iit1LGZ1bmN0aW9uKHQpe2koZCxbd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUocCldKSx3aW5kb3cucGVyZm9ybWFuY2VbIndlYmtpdEMiK2NdKCl9LCExKSksZG9jdW1lbnRbZl0oInNjcm9sbCIscix7cGFzc2l2ZTohMH0pLGRvY3VtZW50W2ZdKCJrZXlwcmVzcyIsciwhMSksZG9jdW1lbnRbZl0oImNsaWNrIixyLCExKX19LHt9XSw2OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXtmb3IodmFyIGU9dDtlJiYhZS5oYXNPd25Qcm9wZXJ0eSh1KTspZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7ZSYmbyhlKX1mdW5jdGlvbiBvKHQpe3MuaW5QbGFjZSh0LFt1LGRdLCItIixpKX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuIHRbMV19dmFyIGE9dCgiZWUiKS5nZXQoImV2ZW50cyIpLHM9dCgid3JhcC1mdW5jdGlvbiIpKGEsITApLGM9dCgiZ29zIiksZj1YTUxIdHRwUmVxdWVzdCx1PSJhZGRFdmVudExpc3RlbmVyIixkPSJyZW1vdmVFdmVudExpc3RlbmVyIjtlLmV4cG9ydHM9YSwiZ2V0UHJvdG90eXBlT2YiaW4gT2JqZWN0PyhyKGRvY3VtZW50KSxyKHdpbmRvdykscihmLnByb3RvdHlwZSkpOmYucHJvdG90eXBlLmhhc093blByb3BlcnR5KHUpJiYobyh3aW5kb3cpLG8oZi5wcm90b3R5cGUpKSxhLm9uKHUrIi1zdGFydCIsZnVuY3Rpb24odCxlKXt2YXIgbj10WzFdLHI9YyhuLCJuckB3cmFwcGVkIixmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbi5oYW5kbGVFdmVudClyZXR1cm4gbi5oYW5kbGVFdmVudC5hcHBseShuLGFyZ3VtZW50cyl9dmFyIGU9e29iamVjdDp0LCJmdW5jdGlvbiI6bn1bdHlwZW9mIG5dO3JldHVybiBlP3MoZSwiZm4tIixudWxsLGUubmFtZXx8ImFub255bW91cyIpOm59KTt0aGlzLndyYXBwZWQ9dFsxXT1yfSksYS5vbihkKyItc3RhcnQiLGZ1bmN0aW9uKHQpe3RbMV09dGhpcy53cmFwcGVkfHx0WzFdfSl9LHt9XSw3OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbil7dmFyIHI9dFtlXTsiZnVuY3Rpb24iPT10eXBlb2YgciYmKHRbZV09ZnVuY3Rpb24oKXt2YXIgdD1pKGFyZ3VtZW50cyksZT17fTtvLmVtaXQobisiYmVmb3JlLXN0YXJ0IixbdF0sZSk7dmFyIGE7ZVttXSYmZVttXS5kdCYmKGE9ZVttXS5kdCk7dmFyIHM9ci5hcHBseSh0aGlzLHQpO3JldHVybiBvLmVtaXQobisic3RhcnQiLFt0LGFdLHMpLHMudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gby5lbWl0KG4rImVuZCIsW251bGwsdF0scyksdH0sZnVuY3Rpb24odCl7dGhyb3cgby5lbWl0KG4rImVuZCIsW3RdLHMpLHR9KX0pfXZhciBvPXQoImVlIikuZ2V0KCJmZXRjaCIpLGk9dCgyNiksYT10KDI1KTtlLmV4cG9ydHM9bzt2YXIgcz13aW5kb3csYz0iZmV0Y2gtIixmPWMrImJvZHktIix1PVsiYXJyYXlCdWZmZXIiLCJibG9iIiwianNvbiIsInRleHQiLCJmb3JtRGF0YSJdLGQ9cy5SZXF1ZXN0LHA9cy5SZXNwb25zZSxsPXMuZmV0Y2gsaD0icHJvdG90eXBlIixtPSJuckBjb250ZXh0IjtkJiZwJiZsJiYoYSh1LGZ1bmN0aW9uKHQsZSl7cihkW2hdLGUsZikscihwW2hdLGUsZil9KSxyKHMsImZldGNoIixjKSxvLm9uKGMrImVuZCIsZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO2lmKGUpe3ZhciByPWUuaGVhZGVycy5nZXQoImNvbnRlbnQtbGVuZ3RoIik7bnVsbCE9PXImJihuLnJ4U2l6ZT1yKSxvLmVtaXQoYysiZG9uZSIsW251bGwsZV0sbil9ZWxzZSBvLmVtaXQoYysiZG9uZSIsW3RdLG4pfSkpfSx7fV0sODpbZnVuY3Rpb24odCxlLG4pe3ZhciByPXQoImVlIikuZ2V0KCJoaXN0b3J5Iiksbz10KCJ3cmFwLWZ1bmN0aW9uIikocik7ZS5leHBvcnRzPXI7dmFyIGk9d2luZG93Lmhpc3RvcnkmJndpbmRvdy5oaXN0b3J5LmNvbnN0cnVjdG9yJiZ3aW5kb3cuaGlzdG9yeS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsYT13aW5kb3cuaGlzdG9yeTtpJiZpLnB1c2hTdGF0ZSYmaS5yZXBsYWNlU3RhdGUmJihhPWkpLG8uaW5QbGFjZShhLFsicHVzaFN0YXRlIiwicmVwbGFjZVN0YXRlIl0sIi0iKX0se31dLDk6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe2Z1bmN0aW9uIGUoKXtjLmVtaXQoImpzb25wLWVuZCIsW10scCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixlLCExKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixuLCExKX1mdW5jdGlvbiBuKCl7Yy5lbWl0KCJqc29ucC1lcnJvciIsW10scCksYy5lbWl0KCJqc29ucC1lbmQiLFtdLHApLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsZSwhMSksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsbiwhMSl9dmFyIHI9dCYmInN0cmluZyI9PXR5cGVvZiB0Lm5vZGVOYW1lJiYic2NyaXB0Ij09PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihyKXt2YXIgbz0iZnVuY3Rpb24iPT10eXBlb2YgdC5hZGRFdmVudExpc3RlbmVyO2lmKG8pe3ZhciBhPWkodC5zcmMpO2lmKGEpe3ZhciB1PXMoYSksZD0iZnVuY3Rpb24iPT10eXBlb2YgdS5wYXJlbnRbdS5rZXldO2lmKGQpe3ZhciBwPXt9O2YuaW5QbGFjZSh1LnBhcmVudCxbdS5rZXldLCJjYi0iLHApLHQuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZSwhMSksdC5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsbiwhMSksYy5lbWl0KCJuZXctanNvbnAiLFt0LnNyY10scCl9fX19fWZ1bmN0aW9uIG8oKXtyZXR1cm4iYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3d9ZnVuY3Rpb24gaSh0KXt2YXIgZT10Lm1hdGNoKHUpO3JldHVybiBlP2VbMV06bnVsbH1mdW5jdGlvbiBhKHQsZSl7dmFyIG49dC5tYXRjaChwKSxyPW5bMV0sbz1uWzNdO3JldHVybiBvP2EobyxlW3JdKTplW3JdfWZ1bmN0aW9uIHModCl7dmFyIGU9dC5tYXRjaChkKTtyZXR1cm4gZSYmZS5sZW5ndGg+PTM/e2tleTplWzJdLHBhcmVudDphKGVbMV0sd2luZG93KX06e2tleTp0LHBhcmVudDp3aW5kb3d9fXZhciBjPXQoImVlIikuZ2V0KCJqc29ucCIpLGY9dCgid3JhcC1mdW5jdGlvbiIpKGMpO2lmKGUuZXhwb3J0cz1jLG8oKSl7dmFyIHU9L1s/Jl0oPzpjYWxsYmFja3xjYik9KFteJiNdKykvLGQ9LyguKilcLihbXi5dKykvLHA9L14oXHcrKShcLnwkKSguKikkLyxsPVsiYXBwZW5kQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJyZXBsYWNlQ2hpbGQiXTtOb2RlJiZOb2RlLnByb3RvdHlwZSYmTm9kZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ/Zi5pblBsYWNlKE5vZGUucHJvdG90eXBlLGwsImRvbS0iKTooZi5pblBsYWNlKEhUTUxFbGVtZW50LnByb3RvdHlwZSxsLCJkb20tIiksZi5pblBsYWNlKEhUTUxIZWFkRWxlbWVudC5wcm90b3R5cGUsbCwiZG9tLSIpLGYuaW5QbGFjZShIVE1MQm9keUVsZW1lbnQucHJvdG90eXBlLGwsImRvbS0iKSksYy5vbigiZG9tLXN0YXJ0IixmdW5jdGlvbih0KXtyKHRbMF0pfSl9fSx7fV0sMTA6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj10KCJlZSIpLmdldCgibXV0YXRpb24iKSxvPXQoIndyYXAtZnVuY3Rpb24iKShyKSxpPU5SRVVNLm8uTU87ZS5leHBvcnRzPXIsaSYmKHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgaT9uZXcgaShvKHQsImZuLSIpKTppLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sTXV0YXRpb25PYnNlcnZlci5wcm90b3R5cGU9aS5wcm90b3R5cGUpfSx7fV0sMTE6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3ZhciBlPWEuY29udGV4dCgpLG49cyh0LCJleGVjdXRvci0iLGUpLHI9bmV3IGYobik7cmV0dXJuIGEuY29udGV4dChyKS5nZXRDdHg9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sYS5lbWl0KCJuZXctcHJvbWlzZSIsW3IsZV0sZSkscn1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIGV9dmFyIGk9dCgid3JhcC1mdW5jdGlvbiIpLGE9dCgiZWUiKS5nZXQoInByb21pc2UiKSxzPWkoYSksYz10KDI1KSxmPU5SRVVNLm8uUFI7ZS5leHBvcnRzPWEsZiYmKHdpbmRvdy5Qcm9taXNlPXIsWyJhbGwiLCJyYWNlIl0uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1mW3RdO2ZbdF09ZnVuY3Rpb24obil7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZnVuY3Rpb24oKXthLmVtaXQoInByb3BhZ2F0ZSIsW251bGwsIW9dLGkpLG89b3x8IXR9fXZhciBvPSExO2MobixmdW5jdGlvbihlLG4pe1Byb21pc2UucmVzb2x2ZShuKS50aGVuKHIoImFsbCI9PT10KSxyKCExKSl9KTt2YXIgaT1lLmFwcGx5KGYsYXJndW1lbnRzKSxzPWYucmVzb2x2ZShpKTtyZXR1cm4gc319KSxbInJlc29sdmUiLCJyZWplY3QiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWZbdF07Zlt0XT1mdW5jdGlvbih0KXt2YXIgbj1lLmFwcGx5KGYsYXJndW1lbnRzKTtyZXR1cm4gdCE9PW4mJmEuZW1pdCgicHJvcGFnYXRlIixbdCwhMF0sbiksbn19KSxmLnByb3RvdHlwZVsiY2F0Y2giXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LGYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZi5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpyfX0pLGMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZiksZnVuY3Rpb24odCxlKXt0cnl7cltlXT1mW2VdfWNhdGNoKG4pe319KSxhLm9uKCJleGVjdXRvci1zdGFydCIsZnVuY3Rpb24odCl7dFswXT1zKHRbMF0sInJlc29sdmUtIix0aGlzKSx0WzFdPXModFsxXSwicmVzb2x2ZS0iLHRoaXMpfSksYS5vbigiZXhlY3V0b3ItZXJyIixmdW5jdGlvbih0LGUsbil7dFsxXShuKX0pLHMuaW5QbGFjZShmLnByb3RvdHlwZSxbInRoZW4iXSwidGhlbi0iLG8pLGEub24oInRoZW4tc3RhcnQiLGZ1bmN0aW9uKHQsZSl7dGhpcy5wcm9taXNlPWUsdFswXT1zKHRbMF0sImNiLSIsdGhpcyksdFsxXT1zKHRbMV0sImNiLSIsdGhpcyl9KSxhLm9uKCJ0aGVuLWVuZCIsZnVuY3Rpb24odCxlLG4pe3RoaXMubmV4dFByb21pc2U9bjt2YXIgcj10aGlzLnByb21pc2U7YS5lbWl0KCJwcm9wYWdhdGUiLFtyLCEwXSxuKX0pLGEub24oImNiLWVuZCIsZnVuY3Rpb24odCxlLG4pe2EuZW1pdCgicHJvcGFnYXRlIixbbiwhMF0sdGhpcy5uZXh0UHJvbWlzZSl9KSxhLm9uKCJwcm9wYWdhdGUiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmdldEN0eCYmIWV8fCh0aGlzLmdldEN0eD1mdW5jdGlvbigpe2lmKHQgaW5zdGFuY2VvZiBQcm9taXNlKXZhciBlPWEuY29udGV4dCh0KTtyZXR1cm4gZSYmZS5nZXRDdHg/ZS5nZXRDdHgoKTp0aGlzfSl9KSxyLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIiIrZn0pfSx7fV0sMTI6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj10KCJlZSIpLmdldCgicmFmIiksbz10KCJ3cmFwLWZ1bmN0aW9uIikociksaT0iZXF1ZXN0QW5pbWF0aW9uRnJhbWUiO2UuZXhwb3J0cz1yLG8uaW5QbGFjZSh3aW5kb3csWyJyIitpLCJtb3pSIitpLCJ3ZWJraXRSIitpLCJtc1IiK2ldLCJyYWYtIiksci5vbigicmFmLXN0YXJ0IixmdW5jdGlvbih0KXt0WzBdPW8odFswXSwiZm4tIil9KX0se31dLDEzOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbil7dFswXT1hKHRbMF0sImZuLSIsbnVsbCxuKX1mdW5jdGlvbiBvKHQsZSxuKXt0aGlzLm1ldGhvZD1uLHRoaXMudGltZXJEdXJhdGlvbj1pc05hTih0WzFdKT8wOit0WzFdLHRbMF09YSh0WzBdLCJmbi0iLHRoaXMsbil9dmFyIGk9dCgiZWUiKS5nZXQoInRpbWVyIiksYT10KCJ3cmFwLWZ1bmN0aW9uIikoaSkscz0ic2V0VGltZW91dCIsYz0ic2V0SW50ZXJ2YWwiLGY9ImNsZWFyVGltZW91dCIsdT0iLXN0YXJ0IixkPSItIjtlLmV4cG9ydHM9aSxhLmluUGxhY2Uod2luZG93LFtzLCJzZXRJbW1lZGlhdGUiXSxzK2QpLGEuaW5QbGFjZSh3aW5kb3csW2NdLGMrZCksYS5pblBsYWNlKHdpbmRvdyxbZiwiY2xlYXJJbW1lZGlhdGUiXSxmK2QpLGkub24oYyt1LHIpLGkub24ocyt1LG8pfSx7fV0sMTQ6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7ZC5pblBsYWNlKGUsWyJvbnJlYWR5c3RhdGVjaGFuZ2UiXSwiZm4tIixzKX1mdW5jdGlvbiBvKCl7dmFyIHQ9dGhpcyxlPXUuY29udGV4dCh0KTt0LnJlYWR5U3RhdGU+MyYmIWUucmVzb2x2ZWQmJihlLnJlc29sdmVkPSEwLHUuZW1pdCgieGhyLXJlc29sdmVkIixbXSx0KSksZC5pblBsYWNlKHQsZywiZm4tIixzKX1mdW5jdGlvbiBpKHQpe3kucHVzaCh0KSxoJiYoYj9iLnRoZW4oYSk6dj92KGEpOihFPS1FLE8uZGF0YT1FKSl9ZnVuY3Rpb24gYSgpe2Zvcih2YXIgdD0wO3Q8eS5sZW5ndGg7dCsrKXIoW10seVt0XSk7eS5sZW5ndGgmJih5PVtdKX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIGV9ZnVuY3Rpb24gYyh0LGUpe2Zvcih2YXIgbiBpbiB0KWVbbl09dFtuXTtyZXR1cm4gZX10KDYpO3ZhciBmPXQoImVlIiksdT1mLmdldCgieGhyIiksZD10KCJ3cmFwLWZ1bmN0aW9uIikodSkscD1OUkVVTS5vLGw9cC5YSFIsaD1wLk1PLG09cC5QUix2PXAuU0ksdz0icmVhZHlzdGF0ZWNoYW5nZSIsZz1bIm9ubG9hZCIsIm9uZXJyb3IiLCJvbmFib3J0Iiwib25sb2Fkc3RhcnQiLCJvbmxvYWRlbmQiLCJvbnByb2dyZXNzIiwib250aW1lb3V0Il0seT1bXTtlLmV4cG9ydHM9dTt2YXIgeD13aW5kb3cuWE1MSHR0cFJlcXVlc3Q9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGwodCk7dHJ5e3UuZW1pdCgibmV3LXhociIsW2VdLGUpLGUuYWRkRXZlbnRMaXN0ZW5lcih3LG8sITEpfWNhdGNoKG4pe3RyeXt1LmVtaXQoImludGVybmFsLWVycm9yIixbbl0pfWNhdGNoKHIpe319cmV0dXJuIGV9O2lmKGMobCx4KSx4LnByb3RvdHlwZT1sLnByb3RvdHlwZSxkLmluUGxhY2UoeC5wcm90b3R5cGUsWyJvcGVuIiwic2VuZCJdLCIteGhyLSIscyksdS5vbigic2VuZC14aHItc3RhcnQiLGZ1bmN0aW9uKHQsZSl7cih0LGUpLGkoZSl9KSx1Lm9uKCJvcGVuLXhoci1zdGFydCIsciksaCl7dmFyIGI9bSYmbS5yZXNvbHZlKCk7aWYoIXYmJiFtKXt2YXIgRT0xLE89ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoRSk7bmV3IGgoYSkub2JzZXJ2ZShPLHtjaGFyYWN0ZXJEYXRhOiEwfSl9fWVsc2UgZi5vbigiZm4tZW5kIixmdW5jdGlvbih0KXt0WzBdJiZ0WzBdLnR5cGU9PT13fHxhKCl9KX0se31dLDE1OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXtpZighaSh0KSlyZXR1cm4gbnVsbDt2YXIgZT13aW5kb3cuTlJFVU07aWYoIWUubG9hZGVyX2NvbmZpZylyZXR1cm4gbnVsbDt2YXIgbj0oZS5sb2FkZXJfY29uZmlnLmFjY291bnRJRHx8IiIpLnRvU3RyaW5nKCl8fG51bGwscj0oZS5sb2FkZXJfY29uZmlnLmFnZW50SUR8fCIiKS50b1N0cmluZygpfHxudWxsLHM9KGUubG9hZGVyX2NvbmZpZy50cnVzdEtleXx8IiIpLnRvU3RyaW5nKCl8fG51bGw7aWYoIW58fCFyKXJldHVybiBudWxsO3ZhciBjPWEuZ2VuZXJhdGVDYXRJZCgpLGY9YS5nZW5lcmF0ZUNhdElkKCksdT1EYXRlLm5vdygpLGQ9byhjLGYsdSxuLHIscyk7cmV0dXJue2hlYWRlcjpkLGd1aWQ6Yyx0cmFjZUlkOmYsdGltZXN0YW1wOnV9fWZ1bmN0aW9uIG8odCxlLG4scixvLGkpe3ZhciBhPSJidG9hImluIHdpbmRvdyYmImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5idG9hO2lmKCFhKXJldHVybiBudWxsO3ZhciBzPXt2OlswLDFdLGQ6e3R5OiJCcm93c2VyIixhYzpyLGFwOm8saWQ6dCx0cjplLHRpOm59fTtyZXR1cm4gaSYmciE9PWkmJihzLmQudGs9aSksYnRvYShKU09OLnN0cmluZ2lmeShzKSl9ZnVuY3Rpb24gaSh0KXt2YXIgZT0hMSxuPSExLHI9e307aWYoImluaXQiaW4gTlJFVU0mJiJkaXN0cmlidXRlZF90cmFjaW5nImluIE5SRVVNLmluaXQmJihyPU5SRVVNLmluaXQuZGlzdHJpYnV0ZWRfdHJhY2luZyxuPSEhci5lbmFibGVkKSxuKWlmKHQuc2FtZU9yaWdpbillPSEwO2Vsc2UgaWYoci5hbGxvd2VkX29yaWdpbnMgaW5zdGFuY2VvZiBBcnJheSlmb3IodmFyIG89MDtvPHIuYWxsb3dlZF9vcmlnaW5zLmxlbmd0aDtvKyspe3ZhciBpPXMoci5hbGxvd2VkX29yaWdpbnNbb10pO2lmKHQuaG9zdG5hbWU9PT1pLmhvc3RuYW1lJiZ0LnByb3RvY29sPT09aS5wcm90b2NvbCYmdC5wb3J0PT09aS5wb3J0KXtlPSEwO2JyZWFrfX1yZXR1cm4gbiYmZX12YXIgYT10KDIzKSxzPXQoMTcpO2UuZXhwb3J0cz17Z2VuZXJhdGVUcmFjZVBheWxvYWQ6cixzaG91bGRHZW5lcmF0ZVRyYWNlOml9fSx7fV0sMTY6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3ZhciBlPXRoaXMucGFyYW1zLG49dGhpcy5tZXRyaWNzO2lmKCF0aGlzLmVuZGVkKXt0aGlzLmVuZGVkPSEwO2Zvcih2YXIgcj0wO3I8cDtyKyspdC5yZW1vdmVFdmVudExpc3RlbmVyKGRbcl0sdGhpcy5saXN0ZW5lciwhMSk7ZS5hYm9ydGVkfHwobi5kdXJhdGlvbj1hLm5vdygpLXRoaXMuc3RhcnRUaW1lLHRoaXMubG9hZENhcHR1cmVDYWxsZWR8fDQhPT10LnJlYWR5U3RhdGU/bnVsbD09ZS5zdGF0dXMmJihlLnN0YXR1cz0wKTppKHRoaXMsdCksbi5jYlRpbWU9dGhpcy5jYlRpbWUsdS5lbWl0KCJ4aHItZG9uZSIsW3RdLHQpLHMoInhociIsW2Usbix0aGlzLnN0YXJ0VGltZV0pKX19ZnVuY3Rpb24gbyh0LGUpe3ZhciBuPWMoZSkscj10LnBhcmFtcztyLmhvc3Q9bi5ob3N0bmFtZSsiOiIrbi5wb3J0LHIucGF0aG5hbWU9bi5wYXRobmFtZSx0LnBhcnNlZE9yaWdpbj1jKGUpLHQuc2FtZU9yaWdpbj10LnBhcnNlZE9yaWdpbi5zYW1lT3JpZ2lufWZ1bmN0aW9uIGkodCxlKXt0LnBhcmFtcy5zdGF0dXM9ZS5zdGF0dXM7dmFyIG49dihlLHQubGFzdFNpemUpO2lmKG4mJih0Lm1ldHJpY3MucnhTaXplPW4pLHQuc2FtZU9yaWdpbil7dmFyIHI9ZS5nZXRSZXNwb25zZUhlYWRlcigiWC1OZXdSZWxpYy1BcHAtRGF0YSIpO3ImJih0LnBhcmFtcy5jYXQ9ci5zcGxpdCgiLCAiKS5wb3AoKSl9dC5sb2FkQ2FwdHVyZUNhbGxlZD0hMH12YXIgYT10KCJsb2FkZXIiKTtpZihhLnhocldyYXBwYWJsZSl7dmFyIHM9dCgiaGFuZGxlIiksYz10KDE3KSxmPXQoMTUpLmdlbmVyYXRlVHJhY2VQYXlsb2FkLHU9dCgiZWUiKSxkPVsibG9hZCIsImVycm9yIiwiYWJvcnQiLCJ0aW1lb3V0Il0scD1kLmxlbmd0aCxsPXQoImlkIiksaD10KDIxKSxtPXQoMjApLHY9dCgxOCksdz13aW5kb3cuWE1MSHR0cFJlcXVlc3Q7YS5mZWF0dXJlcy54aHI9ITAsdCgxNCksdCg3KSx1Lm9uKCJuZXcteGhyIixmdW5jdGlvbih0KXt2YXIgZT10aGlzO2UudG90YWxDYnM9MCxlLmNhbGxlZD0wLGUuY2JUaW1lPTAsZS5lbmQ9cixlLmVuZGVkPSExLGUueGhyR3VpZHM9e30sZS5sYXN0U2l6ZT1udWxsLGUubG9hZENhcHR1cmVDYWxsZWQ9ITEsdC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbihuKXtpKGUsdCl9LCExKSxoJiYoaD4zNHx8aDwxMCl8fHdpbmRvdy5vcGVyYXx8dC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZnVuY3Rpb24odCl7ZS5sYXN0U2l6ZT10LmxvYWRlZH0sITEpfSksdS5vbigib3Blbi14aHItc3RhcnQiLGZ1bmN0aW9uKHQpe3RoaXMucGFyYW1zPXttZXRob2Q6dFswXX0sbyh0aGlzLHRbMV0pLHRoaXMubWV0cmljcz17fX0pLHUub24oIm9wZW4teGhyLWVuZCIsZnVuY3Rpb24odCxlKXsibG9hZGVyX2NvbmZpZyJpbiBOUkVVTSYmInhwaWQiaW4gTlJFVU0ubG9hZGVyX2NvbmZpZyYmdGhpcy5zYW1lT3JpZ2luJiZlLnNldFJlcXVlc3RIZWFkZXIoIlgtTmV3UmVsaWMtSUQiLE5SRVVNLmxvYWRlcl9jb25maWcueHBpZCk7dmFyIG49Zih0aGlzLnBhcnNlZE9yaWdpbik7biYmbi5oZWFkZXImJihlLnNldFJlcXVlc3RIZWFkZXIoIm5ld3JlbGljIixuLmhlYWRlciksdGhpcy5kdD1uKX0pLHUub24oInNlbmQteGhyLXN0YXJ0IixmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMubWV0cmljcyxyPXRbMF0sbz10aGlzO2lmKG4mJnIpe3ZhciBpPW0ocik7aSYmKG4udHhTaXplPWkpfXRoaXMuc3RhcnRUaW1lPWEubm93KCksdGhpcy5saXN0ZW5lcj1mdW5jdGlvbih0KXt0cnl7ImFib3J0IiE9PXQudHlwZXx8by5sb2FkQ2FwdHVyZUNhbGxlZHx8KG8ucGFyYW1zLmFib3J0ZWQ9ITApLCgibG9hZCIhPT10LnR5cGV8fG8uY2FsbGVkPT09by50b3RhbENicyYmKG8ub25sb2FkQ2FsbGVkfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5vbmxvYWQpKSYmby5lbmQoZSl9Y2F0Y2gobil7dHJ5e3UuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLFtuXSl9Y2F0Y2gocil7fX19O2Zvcih2YXIgcz0wO3M8cDtzKyspZS5hZGRFdmVudExpc3RlbmVyKGRbc10sdGhpcy5saXN0ZW5lciwhMSl9KSx1Lm9uKCJ4aHItY2ItdGltZSIsZnVuY3Rpb24odCxlLG4pe3RoaXMuY2JUaW1lKz10LGU/dGhpcy5vbmxvYWRDYWxsZWQ9ITA6dGhpcy5jYWxsZWQrPTEsdGhpcy5jYWxsZWQhPT10aGlzLnRvdGFsQ2JzfHwhdGhpcy5vbmxvYWRDYWxsZWQmJiJmdW5jdGlvbiI9PXR5cGVvZiBuLm9ubG9hZHx8dGhpcy5lbmQobil9KSx1Lm9uKCJ4aHItbG9hZC1hZGRlZCIsZnVuY3Rpb24odCxlKXt2YXIgbj0iIitsKHQpKyEhZTt0aGlzLnhockd1aWRzJiYhdGhpcy54aHJHdWlkc1tuXSYmKHRoaXMueGhyR3VpZHNbbl09ITAsdGhpcy50b3RhbENicys9MSl9KSx1Lm9uKCJ4aHItbG9hZC1yZW1vdmVkIixmdW5jdGlvbih0LGUpe3ZhciBuPSIiK2wodCkrISFlO3RoaXMueGhyR3VpZHMmJnRoaXMueGhyR3VpZHNbbl0mJihkZWxldGUgdGhpcy54aHJHdWlkc1tuXSx0aGlzLnRvdGFsQ2JzLT0xKX0pLHUub24oImFkZEV2ZW50TGlzdGVuZXItZW5kIixmdW5jdGlvbih0LGUpe2UgaW5zdGFuY2VvZiB3JiYibG9hZCI9PT10WzBdJiZ1LmVtaXQoInhoci1sb2FkLWFkZGVkIixbdFsxXSx0WzJdXSxlKX0pLHUub24oInJlbW92ZUV2ZW50TGlzdGVuZXItZW5kIixmdW5jdGlvbih0LGUpe2UgaW5zdGFuY2VvZiB3JiYibG9hZCI9PT10WzBdJiZ1LmVtaXQoInhoci1sb2FkLXJlbW92ZWQiLFt0WzFdLHRbMl1dLGUpfSksdS5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXtlIGluc3RhbmNlb2YgdyYmKCJvbmxvYWQiPT09biYmKHRoaXMub25sb2FkPSEwKSwoImxvYWQiPT09KHRbMF0mJnRbMF0udHlwZSl8fHRoaXMub25sb2FkKSYmKHRoaXMueGhyQ2JTdGFydD1hLm5vdygpKSl9KSx1Lm9uKCJmbi1lbmQiLGZ1bmN0aW9uKHQsZSl7dGhpcy54aHJDYlN0YXJ0JiZ1LmVtaXQoInhoci1jYi10aW1lIixbYS5ub3coKS10aGlzLnhockNiU3RhcnQsdGhpcy5vbmxvYWQsZV0sZSl9KSx1Lm9uKCJmZXRjaC1iZWZvcmUtc3RhcnQiLGZ1bmN0aW9uKHQpe3ZhciBlLG49dFsxXXx8e307InN0cmluZyI9PXR5cGVvZiB0WzBdP2U9dFswXTp0WzBdJiZ0WzBdLnVybCYmKGU9dFswXS51cmwpLGUmJih0aGlzLnBhcnNlZE9yaWdpbj1jKGUpLHRoaXMuc2FtZU9yaWdpbj10aGlzLnBhcnNlZE9yaWdpbi5zYW1lT3JpZ2luKTt2YXIgcj1mKHRoaXMucGFyc2VkT3JpZ2luKTtpZihyJiZyLmhlYWRlcil7dmFyIG89ci5oZWFkZXI7aWYoInN0cmluZyI9PXR5cGVvZiB0WzBdKXt2YXIgaT17fTtmb3IodmFyIGEgaW4gbilpW2FdPW5bYV07aS5oZWFkZXJzPW5ldyBIZWFkZXJzKG4uaGVhZGVyc3x8e30pLGkuaGVhZGVycy5zZXQoIm5ld3JlbGljIixvKSx0aGlzLmR0PXIsdC5sZW5ndGg+MT90WzFdPWk6dC5wdXNoKGkpfWVsc2UgdFswXSYmdFswXS5oZWFkZXJzJiYodFswXS5oZWFkZXJzLmFwcGVuZCgibmV3cmVsaWMiLG8pLHRoaXMuZHQ9cil9fSl9fSx7fV0sMTc6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj17fTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYodCBpbiByKXJldHVybiByW3RdO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxuPXdpbmRvdy5sb2NhdGlvbixvPXt9O2UuaHJlZj10LG8ucG9ydD1lLnBvcnQ7dmFyIGk9ZS5ocmVmLnNwbGl0KCI6Ly8iKTshby5wb3J0JiZpWzFdJiYoby5wb3J0PWlbMV0uc3BsaXQoIi8iKVswXS5zcGxpdCgiQCIpLnBvcCgpLnNwbGl0KCI6IilbMV0pLG8ucG9ydCYmIjAiIT09by5wb3J0fHwoby5wb3J0PSJodHRwcyI9PT1pWzBdPyI0NDMiOiI4MCIpLG8uaG9zdG5hbWU9ZS5ob3N0bmFtZXx8bi5ob3N0bmFtZSxvLnBhdGhuYW1lPWUucGF0aG5hbWUsby5wcm90b2NvbD1pWzBdLCIvIiE9PW8ucGF0aG5hbWUuY2hhckF0KDApJiYoby5wYXRobmFtZT0iLyIrby5wYXRobmFtZSk7dmFyIGE9IWUucHJvdG9jb2x8fCI6Ij09PWUucHJvdG9jb2x8fGUucHJvdG9jb2w9PT1uLnByb3RvY29sLHM9ZS5ob3N0bmFtZT09PWRvY3VtZW50LmRvbWFpbiYmZS5wb3J0PT09bi5wb3J0O3JldHVybiBvLnNhbWVPcmlnaW49YSYmKCFlLmhvc3RuYW1lfHxzKSwiLyI9PT1vLnBhdGhuYW1lJiYoclt0XT1vKSxvfX0se31dLDE4OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUpe3ZhciBuPXQucmVzcG9uc2VUeXBlO3JldHVybiJqc29uIj09PW4mJm51bGwhPT1lP2U6ImFycmF5YnVmZmVyIj09PW58fCJibG9iIj09PW58fCJqc29uIj09PW4/byh0LnJlc3BvbnNlKToidGV4dCI9PT1ufHwiIj09PW58fHZvaWQgMD09PW4/byh0LnJlc3BvbnNlVGV4dCk6dm9pZCAwfXZhciBvPXQoMjApO2UuZXhwb3J0cz1yfSx7fV0sMTk6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7fWZ1bmN0aW9uIG8odCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBpKHQsW2Yubm93KCldLmNvbmNhdChzKGFyZ3VtZW50cykpLGU/bnVsbDp0aGlzLG4pLGU/dm9pZCAwOnRoaXN9fXZhciBpPXQoImhhbmRsZSIpLGE9dCgyNSkscz10KDI2KSxjPXQoImVlIikuZ2V0KCJ0cmFjZXIiKSxmPXQoImxvYWRlciIpLHU9TlJFVU07InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cubmV3cmVsaWMmJihuZXdyZWxpYz11KTt2YXIgZD1bInNldFBhZ2VWaWV3TmFtZSIsInNldEN1c3RvbUF0dHJpYnV0ZSIsInNldEVycm9ySGFuZGxlciIsImZpbmlzaGVkIiwiYWRkVG9UcmFjZSIsImlubGluZUhpdCIsImFkZFJlbGVhc2UiXSxwPSJhcGktIixsPXArIml4bi0iO2EoZCxmdW5jdGlvbih0LGUpe3VbZV09byhwK2UsITAsImFwaSIpfSksdS5hZGRQYWdlQWN0aW9uPW8ocCsiYWRkUGFnZUFjdGlvbiIsITApLHUuc2V0Q3VycmVudFJvdXRlTmFtZT1vKHArInJvdXRlTmFtZSIsITApLGUuZXhwb3J0cz1uZXdyZWxpYyx1LmludGVyYWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuKG5ldyByKS5nZXQoKX07dmFyIGg9ci5wcm90b3R5cGU9e2NyZWF0ZVRyYWNlcjpmdW5jdGlvbih0LGUpe3ZhciBuPXt9LHI9dGhpcyxvPSJmdW5jdGlvbiI9PXR5cGVvZiBlO3JldHVybiBpKGwrInRyYWNlciIsW2Yubm93KCksdCxuXSxyKSxmdW5jdGlvbigpe2lmKGMuZW1pdCgobz8iIjoibm8tIikrImZuLXN0YXJ0IixbZi5ub3coKSxyLG9dLG4pLG8pdHJ5e3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1jYXRjaCh0KXt0aHJvdyBjLmVtaXQoImZuLWVyciIsW2FyZ3VtZW50cyx0aGlzLHRdLG4pLHR9ZmluYWxseXtjLmVtaXQoImZuLWVuZCIsW2Yubm93KCldLG4pfX19fTthKCJhY3Rpb25UZXh0LHNldE5hbWUsc2V0QXR0cmlidXRlLHNhdmUsaWdub3JlLG9uRW5kLGdldENvbnRleHQsZW5kLGdldCIuc3BsaXQoIiwiKSxmdW5jdGlvbih0LGUpe2hbZV09byhsK2UpfSksbmV3cmVsaWMubm90aWNlRXJyb3I9ZnVuY3Rpb24odCxlKXsic3RyaW5nIj09dHlwZW9mIHQmJih0PW5ldyBFcnJvcih0KSksaSgiZXJyIixbdCxmLm5vdygpLCExLGVdKX19LHt9XSwyMDpbZnVuY3Rpb24odCxlLG4pe2UuZXhwb3J0cz1mdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJnQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDtpZigib2JqZWN0Ij09dHlwZW9mIHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmdC5ieXRlTGVuZ3RoKXJldHVybiB0LmJ5dGVMZW5ndGg7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiZ0IGluc3RhbmNlb2YgQmxvYiYmdC5zaXplKXJldHVybiB0LnNpemU7aWYoISgidW5kZWZpbmVkIiE9dHlwZW9mIEZvcm1EYXRhJiZ0IGluc3RhbmNlb2YgRm9ybURhdGEpKXRyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkubGVuZ3RofWNhdGNoKGUpe3JldHVybn19fX0se31dLDIxOltmdW5jdGlvbih0LGUsbil7dmFyIHI9MCxvPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0ZpcmVmb3hbXC9cc10oXGQrXC5cZCspLyk7byYmKHI9K29bMV0pLGUuZXhwb3J0cz1yfSx7fV0sMjI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7dmFyIG49dC5nZXRFbnRyaWVzKCk7bi5mb3JFYWNoKGZ1bmN0aW9uKHQpeyJmaXJzdC1wYWludCI9PT10Lm5hbWU/YygidGltaW5nIixbImZwIixNYXRoLmZsb29yKHQuc3RhcnRUaW1lKV0pOiJmaXJzdC1jb250ZW50ZnVsLXBhaW50Ij09PXQubmFtZSYmYygidGltaW5nIixbImZjcCIsTWF0aC5mbG9vcih0LnN0YXJ0VGltZSldKX0pfWZ1bmN0aW9uIG8odCxlKXt2YXIgbj10LmdldEVudHJpZXMoKTtuLmxlbmd0aD4wJiZjKCJsY3AiLFtuW24ubGVuZ3RoLTFdXSl9ZnVuY3Rpb24gaSh0KXtpZih0IGluc3RhbmNlb2YgdSYmIXApe3ZhciBlLG49TWF0aC5yb3VuZCh0LnRpbWVTdGFtcCk7ZT1uPjFlMTI/RGF0ZS5ub3coKS1uOmYubm93KCktbixwPSEwLGMoInRpbWluZyIsWyJmaSIsbix7dHlwZTp0LnR5cGUsZmlkOmV9XSl9fWlmKCEoImluaXQiaW4gTlJFVU0mJiJwYWdlX3ZpZXdfdGltaW5nImluIE5SRVVNLmluaXQmJiJlbmFibGVkImluIE5SRVVNLmluaXQucGFnZV92aWV3X3RpbWluZyYmTlJFVU0uaW5pdC5wYWdlX3ZpZXdfdGltaW5nLmVuYWJsZWQ9PT0hMSkpe3ZhciBhLHMsYz10KCJoYW5kbGUiKSxmPXQoImxvYWRlciIpLHU9TlJFVU0uby5FVjtpZigiUGVyZm9ybWFuY2VPYnNlcnZlciJpbiB3aW5kb3cmJiJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuUGVyZm9ybWFuY2VPYnNlcnZlcil7YT1uZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihyKSxzPW5ldyBQZXJmb3JtYW5jZU9ic2VydmVyKG8pO3RyeXthLm9ic2VydmUoe2VudHJ5VHlwZXM6WyJwYWludCJdfSkscy5vYnNlcnZlKHtlbnRyeVR5cGVzOlsibGFyZ2VzdC1jb250ZW50ZnVsLXBhaW50Il19KX1jYXRjaChkKXt9fWlmKCJhZGRFdmVudExpc3RlbmVyImluIGRvY3VtZW50KXt2YXIgcD0hMSxsPVsiY2xpY2siLCJrZXlkb3duIiwibW91c2Vkb3duIiwicG9pbnRlcmRvd24iLCJ0b3VjaHN0YXJ0Il07bC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIodCxpLCExKX0pfX19LHt9XSwyMzpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIoKXtmdW5jdGlvbiB0KCl7cmV0dXJuIGU/MTUmZVtuKytdOjE2Kk1hdGgucmFuZG9tKCl8MH12YXIgZT1udWxsLG49MCxyPXdpbmRvdy5jcnlwdG98fHdpbmRvdy5tc0NyeXB0bztyJiZyLmdldFJhbmRvbVZhbHVlcyYmKGU9ci5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMzEpKSk7Zm9yKHZhciBvLGk9Inh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCIsYT0iIixzPTA7czxpLmxlbmd0aDtzKyspbz1pW3NdLCJ4Ij09PW8/YSs9dCgpLnRvU3RyaW5nKDE2KToieSI9PT1vPyhvPTMmdCgpfDgsYSs9by50b1N0cmluZygxNikpOmErPW87cmV0dXJuIGF9ZnVuY3Rpb24gbygpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gZT8xNSZlW24rK106MTYqTWF0aC5yYW5kb20oKXwwfXZhciBlPW51bGwsbj0wLHI9d2luZG93LmNyeXB0b3x8d2luZG93Lm1zQ3J5cHRvO3ImJnIuZ2V0UmFuZG9tVmFsdWVzJiZVaW50OEFycmF5JiYoZT1yLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgzMSkpKTtmb3IodmFyIG89W10saT0wO2k8MTY7aSsrKW8ucHVzaCh0KCkudG9TdHJpbmcoMTYpKTtyZXR1cm4gby5qb2luKCIiKX1lLmV4cG9ydHM9e2dlbmVyYXRlVXVpZDpyLGdlbmVyYXRlQ2F0SWQ6b319LHt9XSwyNDpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlKXtpZighbylyZXR1cm4hMTtpZih0IT09bylyZXR1cm4hMTtpZighZSlyZXR1cm4hMDtpZighaSlyZXR1cm4hMTtmb3IodmFyIG49aS5zcGxpdCgiLiIpLHI9ZS5zcGxpdCgiLiIpLGE9MDthPHIubGVuZ3RoO2ErKylpZihyW2FdIT09blthXSlyZXR1cm4hMTtyZXR1cm4hMH12YXIgbz1udWxsLGk9bnVsbCxhPS9WZXJzaW9uXC8oXFMrKVxzK1NhZmFyaS87aWYobmF2aWdhdG9yLnVzZXJBZ2VudCl7dmFyIHM9bmF2aWdhdG9yLnVzZXJBZ2VudCxjPXMubWF0Y2goYSk7YyYmcy5pbmRleE9mKCJDaHJvbWUiKT09PS0xJiZzLmluZGV4T2YoIkNocm9taXVtIik9PT0tMSYmKG89IlNhZmFyaSIsaT1jWzFdKX1lLmV4cG9ydHM9e2FnZW50Om8sdmVyc2lvbjppLG1hdGNoOnJ9fSx7fV0sMjU6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7dmFyIG49W10scj0iIixpPTA7Zm9yKHIgaW4gdClvLmNhbGwodCxyKSYmKG5baV09ZShyLHRbcl0pLGkrPTEpO3JldHVybiBufXZhciBvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPXJ9LHt9XSwyNjpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4pe2V8fChlPTApLCJ1bmRlZmluZWQiPT10eXBlb2YgbiYmKG49dD90Lmxlbmd0aDowKTtmb3IodmFyIHI9LTEsbz1uLWV8fDAsaT1BcnJheShvPDA/MDpvKTsrK3I8bzspaVtyXT10W2Urcl07cmV0dXJuIGl9ZS5leHBvcnRzPXJ9LHt9XSwyNzpbZnVuY3Rpb24odCxlLG4pe2UuZXhwb3J0cz17ZXhpc3RzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcubmF2aWdhdGlvblN0YXJ0fX0se31dLGVlOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBvKHQpe2Z1bmN0aW9uIGUodCl7cmV0dXJuIHQmJnQgaW5zdGFuY2VvZiByP3Q6dD9jKHQscyxpKTppKCl9ZnVuY3Rpb24gbihuLHIsbyxpKXtpZighcC5hYm9ydGVkfHxpKXt0JiZ0KG4scixvKTtmb3IodmFyIGE9ZShvKSxzPW0obiksYz1zLmxlbmd0aCxmPTA7ZjxjO2YrKylzW2ZdLmFwcGx5KGEscik7dmFyIGQ9dVt5W25dXTtyZXR1cm4gZCYmZC5wdXNoKFt4LG4scixhXSksYX19ZnVuY3Rpb24gbCh0LGUpe2dbdF09bSh0KS5jb25jYXQoZSl9ZnVuY3Rpb24gaCh0LGUpe3ZhciBuPWdbdF07aWYobilmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyluW3JdPT09ZSYmbi5zcGxpY2UociwxKX1mdW5jdGlvbiBtKHQpe3JldHVybiBnW3RdfHxbXX1mdW5jdGlvbiB2KHQpe3JldHVybiBkW3RdPWRbdF18fG8obil9ZnVuY3Rpb24gdyh0LGUpe2YodCxmdW5jdGlvbih0LG4pe2U9ZXx8ImZlYXR1cmUiLHlbbl09ZSxlIGluIHV8fCh1W2VdPVtdKX0pfXZhciBnPXt9LHk9e30seD17b246bCxhZGRFdmVudExpc3RlbmVyOmwscmVtb3ZlRXZlbnRMaXN0ZW5lcjpoLGVtaXQ6bixnZXQ6dixsaXN0ZW5lcnM6bSxjb250ZXh0OmUsYnVmZmVyOncsYWJvcnQ6YSxhYm9ydGVkOiExfTtyZXR1cm4geH1mdW5jdGlvbiBpKCl7cmV0dXJuIG5ldyByfWZ1bmN0aW9uIGEoKXsodS5hcGl8fHUuZmVhdHVyZSkmJihwLmFib3J0ZWQ9ITAsdT1wLmJhY2tsb2c9e30pfXZhciBzPSJuckBjb250ZXh0IixjPXQoImdvcyIpLGY9dCgyNSksdT17fSxkPXt9LHA9ZS5leHBvcnRzPW8oKTtwLmJhY2tsb2c9dX0se31dLGdvczpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4pe2lmKG8uY2FsbCh0LGUpKXJldHVybiB0W2VdO3ZhciByPW4oKTtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5rZXlzKXRyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cix3cml0YWJsZTohMCxlbnVtZXJhYmxlOiExfSkscn1jYXRjaChpKXt9cmV0dXJuIHRbZV09cixyfXZhciBvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPXJ9LHt9XSxoYW5kbGU6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSxuLHIpe28uYnVmZmVyKFt0XSxyKSxvLmVtaXQodCxlLG4pfXZhciBvPXQoImVlIikuZ2V0KCJoYW5kbGUiKTtlLmV4cG9ydHM9cixyLmVlPW99LHt9XSxpZDpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIXR8fCJvYmplY3QiIT09ZSYmImZ1bmN0aW9uIiE9PWU/LTE6dD09PXdpbmRvdz8wOmEodCxpLGZ1bmN0aW9uKCl7cmV0dXJuIG8rK30pfXZhciBvPTEsaT0ibnJAaWQiLGE9dCgiZ29zIik7ZS5leHBvcnRzPXJ9LHt9XSxsb2FkZXI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7aWYoIUUrKyl7dmFyIHQ9Yi5pbmZvPU5SRVVNLmluZm8sZT1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXTtpZihzZXRUaW1lb3V0KHUuYWJvcnQsM2U0KSwhKHQmJnQubGljZW5zZUtleSYmdC5hcHBsaWNhdGlvbklEJiZlKSlyZXR1cm4gdS5hYm9ydCgpO2YoeSxmdW5jdGlvbihlLG4pe3RbZV18fCh0W2VdPW4pfSksYygibWFyayIsWyJvbmxvYWQiLGEoKStiLm9mZnNldF0sbnVsbCwiYXBpIik7dmFyIG49bC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLnNyYz0iaHR0cHM6Ly8iK3QuYWdlbnQsZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLGUpfX1mdW5jdGlvbiBvKCl7ImNvbXBsZXRlIj09PWwucmVhZHlTdGF0ZSYmaSgpfWZ1bmN0aW9uIGkoKXtjKCJtYXJrIixbImRvbUNvbnRlbnQiLGEoKStiLm9mZnNldF0sbnVsbCwiYXBpIil9ZnVuY3Rpb24gYSgpe3JldHVybiBPLmV4aXN0cyYmcGVyZm9ybWFuY2Uubm93P01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkpOihzPU1hdGgubWF4KChuZXcgRGF0ZSkuZ2V0VGltZSgpLHMpKS1iLm9mZnNldH12YXIgcz0obmV3IERhdGUpLmdldFRpbWUoKSxjPXQoImhhbmRsZSIpLGY9dCgyNSksdT10KCJlZSIpLGQ9dCgyNCkscD13aW5kb3csbD1wLmRvY3VtZW50LGg9ImFkZEV2ZW50TGlzdGVuZXIiLG09ImF0dGFjaEV2ZW50Iix2PXAuWE1MSHR0cFJlcXVlc3Qsdz12JiZ2LnByb3RvdHlwZTtOUkVVTS5vPXtTVDpzZXRUaW1lb3V0LFNJOnAuc2V0SW1tZWRpYXRlLENUOmNsZWFyVGltZW91dCxYSFI6dixSRVE6cC5SZXF1ZXN0LEVWOnAuRXZlbnQsUFI6cC5Qcm9taXNlLE1POnAuTXV0YXRpb25PYnNlcnZlcn07dmFyIGc9IiIrbG9jYXRpb24seT17YmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGVycm9yQmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGFnZW50OiJqcy1hZ2VudC5uZXdyZWxpYy5jb20vbnItc3BhLTExNjkubWluLmpzIn0seD12JiZ3JiZ3W2hdJiYhL0NyaU9TLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGI9ZS5leHBvcnRzPXtvZmZzZXQ6cyxub3c6YSxvcmlnaW46ZyxmZWF0dXJlczp7fSx4aHJXcmFwcGFibGU6eCx1c2VyQWdlbnQ6ZH07dCgxOSksdCgyMiksbFtoXT8obFtoXSgiRE9NQ29udGVudExvYWRlZCIsaSwhMSkscFtoXSgibG9hZCIsciwhMSkpOihsW21dKCJvbnJlYWR5c3RhdGVjaGFuZ2UiLG8pLHBbbV0oIm9ubG9hZCIscikpLGMoIm1hcmsiLFsiZmlyc3RieXRlIixzXSxudWxsLCJhcGkiKTt2YXIgRT0wLE89dCgyNyl9LHt9XSwid3JhcC1mdW5jdGlvbiI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3JldHVybiEodCYmdCBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZ0LmFwcGx5JiYhdFthXSl9dmFyIG89dCgiZWUiKSxpPXQoMjYpLGE9Im5yQG9yaWdpbmFsIixzPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksYz0hMTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSxuLG8pe2Z1bmN0aW9uIG5yV3JhcHBlcigpe3ZhciByLGEscyxjO3RyeXthPXRoaXMscj1pKGFyZ3VtZW50cykscz0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uKHIsYSk6bnx8e319Y2F0Y2goZil7cChbZiwiIixbcixhLG9dLHNdKX11KGUrInN0YXJ0IixbcixhLG9dLHMpO3RyeXtyZXR1cm4gYz10LmFwcGx5KGEscil9Y2F0Y2goZCl7dGhyb3cgdShlKyJlcnIiLFtyLGEsZF0scyksZH1maW5hbGx5e3UoZSsiZW5kIixbcixhLGNdLHMpfX1yZXR1cm4gcih0KT90OihlfHwoZT0iIiksbnJXcmFwcGVyW2FdPXQsZCh0LG5yV3JhcHBlciksbnJXcmFwcGVyKX1mdW5jdGlvbiBmKHQsZSxvLGkpe298fChvPSIiKTt2YXIgYSxzLGMsZj0iLSI9PT1vLmNoYXJBdCgwKTtmb3IoYz0wO2M8ZS5sZW5ndGg7YysrKXM9ZVtjXSxhPXRbc10scihhKXx8KHRbc109bihhLGY/cytvOm8saSxzKSl9ZnVuY3Rpb24gdShuLHIsbyl7aWYoIWN8fGUpe3ZhciBpPWM7Yz0hMDt0cnl7dC5lbWl0KG4scixvLGUpfWNhdGNoKGEpe3AoW2EsbixyLG9dKX1jPWl9fWZ1bmN0aW9uIGQodCxlKXtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5rZXlzKXRyeXt2YXIgbj1PYmplY3Qua2V5cyh0KTtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2dldDpmdW5jdGlvbigpe3JldHVybiB0W25dfSxzZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRbbl09ZSxlfX0pfSksZX1jYXRjaChyKXtwKFtyXSl9Zm9yKHZhciBvIGluIHQpcy5jYWxsKHQsbykmJihlW29dPXRbb10pO3JldHVybiBlfWZ1bmN0aW9uIHAoZSl7dHJ5e3QuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLGUpfWNhdGNoKG4pe319cmV0dXJuIHR8fCh0PW8pLG4uaW5QbGFjZT1mLG4uZmxhZz1hLG59fSx7fV19LHt9LFsibG9hZGVyIiwyLDE2LDUsMyw0XSk7CiAgICAgICAgICA7TlJFVU0ubG9hZGVyX2NvbmZpZz17YWNjb3VudElEOiIzOTI4NCIsdHJ1c3RLZXk6IjM5Mjg0IixhZ2VudElEOiI3NDQ3NDY4IixsaWNlbnNlS2V5OiI2ODlkNWI0NTYyIixhcHBsaWNhdGlvbklEOiIyMDExMjI0In0KICAgICAgICAgIDtOUkVVTS5pbmZvPXtiZWFjb246ImJhbS5uci1kYXRhLm5ldCIsZXJyb3JCZWFjb246ImJhbS5uci1kYXRhLm5ldCIsbGljZW5zZUtleToiNjg5ZDViNDU2MiIsYXBwbGljYXRpb25JRDoiMjAxMTIyNCIsc2E6MX0KICAgICAgICA8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9nbG9iYWwvaWNvbl9mb250cy5taW4uY3NzP2UxMDEzZGViNmU4NDQ3MGM3NWQwNzVmODZkYjNjZDRkOTRkMjE4MTYiPgoKICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9leGNlcHRpb25fY29tYmluZWQubWluLmNzcz80YTU4YjNiNyI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vc3R5bGVzL2Nzc19vcHQvdG9wbmF2X2NhcnRfYnV0dG9uX2NvbWJpbmVkLm1pbi5jc3M/YTIwYTc1NjYiPgoKCgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgCiAgICAgICAgdmFyIHBsYXllckFzc2V0VXJscyA9IHsiYmFyZWJvbmVfanMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzMuMjMuMFwvanNcL2JhcmVib25lLmpzIiwianMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzMuMjMuMFwvanNcL3BsYXllci5qcyIsImNocm9tZWxlc3NfY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2Nzc1wvY2hyb21lbGVzcy5jc3MiLCJjaHJvbWVsZXNzX2pzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2pzXC9jaHJvbWVsZXNzLmpzIiwiY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2Nzc1wvcGxheWVyLmNzcyIsInBsYXllcl91cmwiOiJwbGF5ZXIudmltZW8uY29tIn07CgogICAgICAgIHZhciBfZXh0ZW5kID0gZnVuY3Rpb24oKXtmb3IodmFyIHI9YXJndW1lbnRzWzBdLG49MSxlPWFyZ3VtZW50cy5sZW5ndGg7ZT5uO24rKyl7dmFyIHQ9YXJndW1lbnRzW25dO2Zvcih2YXIgYSBpbiB0KXQuaGFzT3duUHJvcGVydHkoYSkmJihyW2FdPXRbYV0pfXJldHVybiByfTsKCiAgICAgICAgICAgIHdpbmRvdyA9IF9leHRlbmQod2luZG93LCB7InZpbWVvX2VzaSI6eyJjb25maWciOnsicm91dGUiOiJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcENvbnRyb2xsZXI6bWFpbiIsImNvbnRyb2xsZXIiOiJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcENvbnRyb2xsZXIiLCJhdXRvY29tcGxldGVfZW5hYmxlZCI6dHJ1ZSwib25zaXRlX3JlZmVycmVyIjpmYWxzZX19LCJhYmxpbmNvbG5fY29uZmlnIjpbXSwidmltZW8iOnsiY29uZmlnIjp7ImNhcnQiOnsiY2FydF9jb250ZW50Ijp7InN0b2NrIjp7InN0b3JlIjoic3RvY2siLCJ2ZXJzaW9uIjoxLCJxdWFudGl0aWVzIjpbXSwiaXRlbXMiOltdLCJhdHRyaWJ1dGVzIjpbXSwiY3VycmVuY3kiOiJCUkwiLCJpdGVtc19zb3J0ZWRfYnlfaW5kZXgiOltdLCJpdGVtc19jb3VudCI6MH19fX19fSk7Cjwvc2NyaXB0PgoKICAgICAgICAgICAgICAgIAogICAgPHNjcmlwdD4KICAgICAgICB2YXIgYWJsaW5jb2xuX2NvbmZpZyA9IGFibGluY29sbl9jb25maWcgfHwge307CiAgICAgICAgYWJsaW5jb2xuX2NvbmZpZy50ZXN0cyA9IHsiSlMuT21uaXNlYXJjaCI6eyJpZCI6NTI3LCJuYW1lIjoiSlMuT21uaXNlYXJjaCIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoiY3VpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOlt7ImlkIjoxNDUyLCJuYW1lIjoicGhhc2UxIiwiYnVja2V0cyI6MTAwLCJzdGF0ZSI6MSwicHVibGlzaGVkX29uIjoiMjAyMC0xMC0yMiAxMzo0Njo1MSIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNTQ1LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoidHJ1ZSIsIndlaWdodCI6MX0seyJpZCI6MjU0NiwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6ImZhbHNlIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX0seyJpZCI6MTQ1NCwibmFtZSI6InBoYXNlMiIsImJ1Y2tldHMiOjIwMCwic3RhdGUiOjEsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMTAtMjMgMDg6MTY6NTUiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjU1MSwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6InRydWUiLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NTIsIm5hbWUiOiJvbW5pc2VhcmNoX2VuYWJsZWQiLCJjaG9pY2UiOiJmYWxzZSIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119LHsiaWQiOjE0NTgsIm5hbWUiOiJwaGFzZTMiLCJidWNrZXRzIjozMDAsInN0YXRlIjoxLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTI2IDA4OjU0OjQ4IiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NTcsIm5hbWUiOiJvbW5pc2VhcmNoX2VuYWJsZWQiLCJjaG9pY2UiOiJ0cnVlIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTU4LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoiZmFsc2UiLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDYxLCJuYW1lIjoicGhhc2U0IiwiYnVja2V0cyI6NDAwLCJzdGF0ZSI6MSwicHVibGlzaGVkX29uIjoiMjAyMC0xMC0yNyAwODo0Njo1NiIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNTY1LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoidHJ1ZSIsIndlaWdodCI6MX0seyJpZCI6MjU2NiwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6ImZhbHNlIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX1dfSwiSlMuVG9wTmF2LkNyZWF0ZSI6eyJpZCI6NDUyLCJuYW1lIjoiSlMuVG9wTmF2LkNyZWF0ZSIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IjphbGwiLCJleHBlcmltZW50cyI6W3siaWQiOjEyMzUsIm5hbWUiOiIqIExvZ2dlZCBvdXQgSm9pbiBNb2RhbCIsImJ1Y2tldHMiOjEwMCwic3RhdGUiOjMsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMDYtMTUgMTY6MTc6MTUiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjIwMjAtMTAtMTUgMDY6NTM6MjUiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjE1MCwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiY29udHJvbCIsIndlaWdodCI6MX0seyJpZCI6MjE1MSwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiam9pbl93aXRob3V0X2Rlc2lnbiIsIndlaWdodCI6MX0seyJpZCI6MjE1MiwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiam9pbl93aXRoX2Rlc2lnbiIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119LHsiaWQiOjEzMTEsIm5hbWUiOiIqICogTG9nZ2VkIG91dCBKb2luIE1vZGFsIiwiYnVja2V0cyI6OTAwLCJzdGF0ZSI6MywicHVibGlzaGVkX29uIjoiMjAyMC0wNi0yMyAxNTowMTo1MiIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMjAyMC0xMC0xNSAwNjo1MzozNSIsInBhcmFtZXRlcnMiOlt7ImlkIjoyMjc1LCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyMjc2LCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJqb2luX3dpdGhvdXRfZGVzaWduIiwid2VpZ2h0IjoxfSx7ImlkIjoyMjc3LCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJqb2luX3dpdGhfZGVzaWduIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX1dfSwiSlMuVXBzZWxsLlJldmlldyI6eyJpZCI6NDQ0LCJuYW1lIjoiSlMuVXBzZWxsLlJldmlldyIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOltdfSwiVG9wTmF2Lk5ld1ZpZGVvLlNjcmVlblJlY29yZEZvckFsbCI6eyJpZCI6NTQxLCJuYW1lIjoiVG9wTmF2Lk5ld1ZpZGVvLlNjcmVlblJlY29yZEZvckFsbCIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOlt7ImlkIjoxNDE4LCJuYW1lIjoiU2hvdyByZWNvcmRlciBsaW5rIGZvciBhbGwiLCJidWNrZXRzIjoxMDAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTA1IDE0OjMwOjQwIiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTIxIDAzOjI4OjQzIiwicGFyYW1ldGVycyI6W3siaWQiOjI0NzcsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNDc4LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDUwLCJuYW1lIjoiKiBTaG93IHJlY29yZGVyIGxpbmsgZm9yIGFsbCIsImJ1Y2tldHMiOjAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTIyIDE3OjE3OjExIiwicGF1c2VkX29uIjoiMjAyMC0xMC0yMiAxNzoxNzoyNyIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTIyIDE3OjE3OjQwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NDAsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTQxLCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NDIsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbl9hbmltYXRpb24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDUzLCJuYW1lIjoiKiAqIFNob3cgcmVjb3JkZXIgbGluayBmb3IgYWxsIiwiYnVja2V0cyI6NTAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTIyIDE3OjM2OjQxIiwicGF1c2VkX29uIjoiMjAyMC0xMC0yNiAxNTowNzoyOCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTI2IDE1OjA3OjU2IiwicGFyYW1ldGVycyI6W3siaWQiOjI1NDcsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTQ4LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NDksIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbl9hbmltYXRpb24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDYwLCJuYW1lIjoiKiAqICogU2hvdyByZWNvcmRlciBsaW5rIGZvciBhbGwiLCJidWNrZXRzIjoxMDAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTI2IDE1OjA4OjU0IiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTI3IDEwOjAyOjU0IiwicGFyYW1ldGVycyI6W3siaWQiOjI1NjIsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTYzLCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NjQsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbl9hbmltYXRpb24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDYyLCJuYW1lIjoiKiAqICogKiBTaG93IHJlY29yZGVyIGxpbmsgZm9yIGFsbCIsImJ1Y2tldHMiOjEwMDAsInN0YXRlIjoxLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTI3IDEwOjA0OjEwIiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NjcsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0Ijo1fSx7ImlkIjoyNTY4LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjkwfSx7ImlkIjoyNTY5LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW5fYW5pbWF0aW9uIiwid2VpZ2h0Ijo1fV0sInNlZ21lbnRzIjpbXX1dfX07CiAgICA8L3NjcmlwdD4KPHNjcmlwdD4KKGZ1bmN0aW9uKCkgewogICAgd2luZG93Ll9ndG0gPSBbeyJleGNlcHRpb25faHR0cF9jb2RlIjoiSFRUUFwvMS4xIDQwNCBOb3QgRm91bmQiLCJsYW5ndWFnZSI6ImVuIiwidXNlcl9zdGF0dXMiOiJsb2dnZWRfb3V0IiwidXNlcl90eXBlIjoibm9uZSIsImdhX3VuaXZlcnNhbF9pZCI6IlVBLTc2NjQxLTgiLCJjb21zY29yZV9zaXRlX2lkIjoxMDM0ODI4OX1dOwoKICAgICAgICB2YXIgZ2RwckNvb2tpZSA9IChkb2N1bWVudC5jb29raWUubWF0Y2goL14oPzouKjspP1xzKnZpbWVvX2dkcHJfb3B0aW5ccyo9XHMqKFteO10rKSg/Oi4qKT8kLyl8fFssbnVsbF0pWzFdOwogICAgaWYgKGdkcHJDb29raWUgPT09ICctMScpIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgICAgIHdpbmRvdy5fZ3RtLnB1c2goewogICAgICAgICd2dWlkJzogZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKXZ1aWRccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKSwKICAgICAgICAnZ3RtLnN0YXJ0JzogbmV3IERhdGUoKS5nZXRUaW1lKCksCiAgICAgICAgJ2V2ZW50JzogJ2d0bS5qcycKICAgIH0pOwogICAgdmFyIGd0bXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwKICAgICAgICBub2RlOwogICAgZ3Rtcy5hc3luYyA9IHRydWU7CiAgICBndG1zLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgIGd0bXMuc3JjID0gJy8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0bS5qcz9pZD1HVE0tUkJLSyZsPV9ndG0nOwogICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsKICAgIG5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZ3Rtcywgbm9kZSk7Cn0pKCk7Cjwvc2NyaXB0Pgo8c2NyaXB0PgogICAgdmFyIGdvb2dsZXRhZyA9IGdvb2dsZXRhZyB8fCB7fSwKICAgICAgICBncHRhZHNsb3RzID0gW10sCiAgICAgICAgbGFuZ3VhZ2UsCiAgICAgICAgaGFzX3VwbG9hZGVkLAogICAgICAgIGNvaG9ydDsKICAgIGdvb2dsZXRhZy5jbWQgPSBnb29nbGV0YWcuY21kIHx8IFtdOwoKICAgIChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZ2RwckNvb2tpZSA9IChkb2N1bWVudC5jb29raWUubWF0Y2goL14oPzouKjspP1xzKnZpbWVvX2dkcHJfb3B0aW5ccyo9XHMqKFteO10rKSg/Oi4qKT8kLyl8fFssbnVsbF0pWzFdOwogICAgICAgIGlmIChnZHByQ29va2llID09PSAnLTEnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdmFyIGdhZHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwKICAgICAgICAgICAgdXNlU1NMID0gJ2h0dHBzOicgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wsCiAgICAgICAgICAgIG5vZGU7CiAgICAgICAgZ2Fkcy5hc3luYyA9IHRydWU7CiAgICAgICAgZ2Fkcy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICAgICAgZ2Fkcy5zcmMgPSAodXNlU1NMID8gJ2h0dHBzOicgOiAnaHR0cDonKSArICcvL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vdGFnL2pzL2dwdC5qcyc7CiAgICAgICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsKICAgICAgICBub2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGdhZHMsIG5vZGUpOwogICAgfSkoKTsKCiAgICBnb29nbGV0YWcuY21kLnB1c2goZnVuY3Rpb24oKSB7CiAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2UgPSBkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopbGFuZ3VhZ2VccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKTsKICAgICAgICAgICAgaGFzX3VwbG9hZGVkID0gKGRvY3VtZW50LmNvb2tpZS5yZXBsYWNlKC8oPzooPzpefC4qO1xzKiloYXNfdXBsb2FkZWRccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKSkgPyAnWScgOiAnTic7CiAgICAgICAgICAgIGNvbnNlbnQgPSAoZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKXZpbWVvX2dkcHJfb3B0aW5ccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKSkgPT09ICctMScgPyAxIDogMDsKICAgICAgICAgICAgY29ob3J0ID0gJ0EnOwogICAgICAgIAogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2xhbmd1YWdlJywgW2xhbmd1YWdlXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnaXNfdXBsb2FkZXInLCBbaGFzX3VwbG9hZGVkXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnY29ob3J0JywgW2NvaG9ydF0pOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2NvaG9ydF9hJywgWyhjb2hvcnQgPT09ICdBJykgPyAnWScgOiAnTiddKTsKICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnRfYicsIFsoY29ob3J0ID09PSAnQicpID8gJ1knIDogJ04nXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygncHJvZHVjdCcsIFsnJ10pOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ3N0b3JhZ2UnLCBbJ04nXSk7CgogICAgICAgICAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnc2VjJywgWydmYWxzZSddKTsKCiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnbG9nZ2VkX2luJywgWydmYWxzZSddKTsKCiAgICAgICAgICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdycHYnLCAoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMCkrMSkudG9TdHJpbmcoKSk7CgogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRSZXF1ZXN0Tm9uUGVyc29uYWxpemVkQWRzKGNvbnNlbnQpOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5lbmFibGVBc3luY1JlbmRlcmluZygpOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5kaXNhYmxlSW5pdGlhbExvYWQoKTsKICAgICAgICBnb29nbGV0YWcuZW5hYmxlU2VydmljZXMoKTsKICAgIH0pOwo8L3NjcmlwdD4KCiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvbG9nZ2luZ19jb21iaW5lZC5taW4uanM/OTc0MjEzZDEiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L2FibGluY29sbl9jb21iaW5lZC5taW4uanM/NmM0YWNiNTciPjwvc2NyaXB0PgoKCgogICAgPC9oZWFkPgogICAgPGJvZHkgY2xhc3M9Im9uc2l0ZSAiPgogICAgICAgIDxkaXYgaWQ9IndyYXAiIGNsYXNzPSJvdXRlcl93cmFwIj4KICAgICAgICAgICAgPGRpdiBpZD0idG9wbmF2X291dGVyX3dyYXAiPgogICAgICAgICAgICAgICAgPGRpdiBpZD0iY3JlYXRlLWZhY2Vib29rLWhlYWRlciI+PC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZpbWVvQnJhbmRfQ29sb3JSaWJib24gIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAoKPHN0eWxlPgogICAgQC13ZWJraXQta2V5ZnJhbWVzIHJlY29yZF9hbmltYXRpb24gewogICAgICAgIDAlLCAyMCUsIDUwJSwgODAlLCAxMDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CiAgICAgICAgNDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMnB4KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7CiAgICAgICAgfQogICAgICAgIDYwJSB7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDNweCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpOwogICAgICAgIH0KICAgIH0KCiAgICBAa2V5ZnJhbWVzIHJlY29yZF9hbmltYXRpb24gewogICAgICAgIDAlLCAyMCUsIDUwJSwgODAlLCAxMDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CiAgICAgICAgNDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMnB4KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7CiAgICAgICAgfQogICAgICAgIDYwJSB7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDNweCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpOwogICAgICAgIH0KICAgIH0KCiAgICAubG9nZ2VkX291dF9yZWNvcmRfYW5pbWF0aW9uIHsKICAgICAgICBhbmltYXRpb246IHJlY29yZF9hbmltYXRpb24gMS41cyAuMjVzIDU7CiAgICB9CgogICAgLmxvZ2dlZF9pbl9yZWNvcmRfYW5pbWF0aW9uIHsKICAgICAgICBhbmltYXRpb246IHJlY29yZF9hbmltYXRpb24gMS41cyAuMjVzIGluZmluaXRlOwogICAgfQoKICAgIC5yZWNvcmRlcl9uZXdfbGFiZWwgewogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzExNDBDNjsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAxNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICB3aWR0aDogNDBweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIH0KPC9zdHlsZT4KCjxzY3JpcHQ+CiAgICB3aW5kb3cudmltZW8gPSB3aW5kb3cudmltZW8gfHwge307Cjwvc2NyaXB0PgoKPGRpdiBpZD0idG9wbmF2X2Rlc2t0b3AiIGNsYXNzPSJ0b3BuYXZfZGVza3RvcCAiIHJvbGU9ImJhbm5lciI+CiAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF93cmFwcGVyIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbG9nbyIgaHJlZj0iLy92aW1lby5jb20iIGFsdD0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiB0aXRsZT0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiBhcmlhLWxhYmVsPSJHbyB0byBWaW1lbyBob21lIHBhZ2UiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnZpbWVvX2hvbWUiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2hvbWVfY2xpY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFsdD0iVmltZW8iIHdpZHRoPSIxMDAiIGhlaWdodD0iNDAiPjxwYXRoIGQ9Ik0yMi40NDggMTQuNTc1Yy0uMTA0IDIuMTctMS42MTggNS4xNDYtNC41NDQgOC45MTItMy4wMyAzLjk0Mi01LjU5IDUuOTEyLTcuNjg2IDUuOTEyLTEuMjk3IDAtMi4zOTctMS4yMDQtMy4zLTMuNi0uNi0yLjItMS4yMDItNC4zOTgtMS43OTQtNi41OTgtLjY2NC0yLjM5Ni0xLjM4LTMuNi0yLjE0Ny0zLjYtLjE2NiAwLS43NDcuMzU0LTEuNzUzIDEuMDVsLTEuMDQ4LTEuMzVjMS4xLS45NjUgMi4xOS0xLjkzIDMuMjU3LTIuOTA1IDEuNDYzLTEuMjY1IDIuNTczLTEuOTQgMy4zLTIuMDAyIDEuNzMyLS4xNjYgMi44IDEuMDE3IDMuMjA1IDMuNTU4LjQzNSAyLjc0LjczNiA0LjQ0LjkwMiA1LjExNS40OTggMi4yNyAxLjA0OCAzLjQwMiAxLjY1IDMuNDAyLjQ2NiAwIDEuMTcyLS43MzcgMi4xMDUtMi4yMS45MzQtMS40NzMgMS40MzItMi41OTMgMS41MDQtMy4zNy4xMzMtMS4yNzctLjM2NS0xLjkxLTEuNTA2LTEuOTEtLjUzIDAtMS4wOC4xMjUtMS42NS4zNjQgMS4xLTMuNTkgMy4xODYtNS4zMzMgNi4yNzctNS4yMyAyLjI3My4wNzMgMy4zNSAxLjU1NiAzLjIyNyA0LjQ2bTEzLjc1NSA3LjAzNGMtLjkzMyAxLjc2NC0yLjIyIDMuMzctMy44NiA0LjgwMy0yLjI0IDEuOTMtNC40NyAyLjkwNS02LjcgMi45MDUtMS4wMzcuMDAyLTEuODI2LS4zMy0yLjM3Ni0uOTk0LS41NS0uNjYzLS44MS0xLjUzNS0uNzc3LTIuNjAzLjAzLTEuMS4zNzItMi44IDEuMDI1LTUuMTA0LjY1NC0yLjMwMy45NzYtMy41MzcuOTc2LTMuNzAzIDAtLjg2LS4zLTEuMjk3LS45MDItMS4yOTctLjE5OCAwLS43Ny4zNTMtMS43MDIgMS4wNDhsLTEuMTUyLTEuMzVjMS4wNy0uOTYyIDIuMTM3LTEuOTI3IDMuMjA2LTIuOTAyIDEuNDMtMS4yNjYgMi41LTEuOTQgMy4yMDUtMi4wMDIgMS4xLS4xMDMgMS45MS4yMyAyLjQyOC45NzYuNTE4Ljc0Ny43MDUgMS43MjIuNTggMi45MTUtLjQzNSAyLjAzNC0uOTAyIDQuNjA3LTEuNCA3LjczLS4wMyAxLjQzLjQ4OCAyLjE0NiAxLjU1NiAyLjE0Ni40NjcgMCAxLjI5Ny0uNDk4IDIuNS0xLjQ4My45OTYtLjgyIDEuODE1LTEuNTk4IDIuNDUtMi4zMjRsLjk0MiAxLjI0NG0tNC4zNTctMTcuOGMtLjAzLjgzLS40NDYgMS42MjgtMS4yNTUgMi4zOTUtLjkuODYtMS45NyAxLjI5Ni0zLjIwNCAxLjI5Ni0xLjkgMC0yLjgyMi0uODMtMi43NS0yLjQ5LjAzMi0uODYuNTQtMS42OSAxLjUyNi0yLjQ5Ljk4NS0uNzk3IDIuMDc0LTEuMTkgMy4yNzgtMS4xOS43MDUgMCAxLjI4Ni4yNyAxLjc1My44Mi40NjcuNTQuNjg0IDEuMS42NTMgMS42Nm0zNS42MTIgMTcuOGMtLjkzMyAxLjc2My0yLjIyIDMuMzctMy44NiA0LjgwMi0yLjI0IDEuOTMtNC40NyAyLjkwNC02LjcgMi45MDQtMi4xNjguMDAyLTMuMjE2LTEuMjAyLTMuMTUzLTMuNTk4LjAzLTEuMDcuMjM4LTIuMzU1LjYyMi0zLjg1LjM4NC0xLjUwMy41OS0yLjY2NS42MjMtMy41MDUuMDMtMS4yNjUtLjM1My0xLjg5OC0xLjE1Mi0xLjg5OC0uODcgMC0xLjkxIDEuMDM2LTMuMTEyIDMuMS0xLjI3NiAyLjE2OC0xLjk2IDQuMjc0LTIuMDY0IDYuMzA4LS4wNzMgMS40My4wNzIgMi41NC40MjUgMy4yOTgtMi4zMjQuMDY0LTMuOTYzLS4zMi00Ljg4Ni0xLjE1LS44My0uNzM3LTEuMjEyLTEuOTUtMS4xNS0zLjY1Mi4wMy0xLjA2OC4xOTgtMi4xMzcuNDg4LTMuMjA1LjI5LTEuMDcuNDU3LTIuMDIzLjQ4OC0yLjg1My4wNjItMS4yMzQtLjM4NC0xLjg1Ny0xLjM1LTEuODU3LS44NCAwLTEuNzQuOTU1LTIuNzA2IDIuODUzLS45NjYgMS45LTEuNTA1IDMuODktMS42MSA1Ljk1Ni0uMDYgMS44NjcuMDUzIDMuMTc0LjM2NCAzLjktMi4yOTMuMDYyLTMuOTItLjQxNS00Ljg3Ni0xLjQ1Mi0uNzk4LS44Ni0xLjE2LTIuMTgtMS4xLTMuOTQyLjAzMi0uODYuMTg4LTIuMDc1LjQ1Ny0zLjYyLjI4LTEuNTQ2LjQyNS0yLjc1LjQ1Ny0zLjYyLjA2Mi0uNjAzLS4wODMtLjkwMy0uNDQ2LS45MDMtLjE5NyAwLS43NjguMzQtMS43MDIgMS4wMTVsLTEuMjAzLTEuMzQ4Yy4xNjgtLjEzNSAxLjIxNi0xLjEgMy4xNTYtMi45MDUgMS40LTEuMjk3IDIuMzU0LTEuOTcgMi44NTItMi4wMDIuODcyLS4wNzMgMS41NjcuMjkgMi4xMDYgMS4wOC41My43ODcuOCAxLjY5LjggMi43MjcgMCAuMzMyLS4wMzIuNjU0LS4xMDUuOTU0LjQ5Ny0uNzY2IDEuMDgtMS40MyAxLjc1Mi0yIDEuNTM3LTEuMzQgMy4yNi0yLjA4NiA1LjE1Ny0yLjI1MiAxLjY0LS4xMzUgMi44LjI1IDMuNTA1IDEuMTUyLjU3LjczNi44MyAxLjc4NC44IDMuMTUzLjIzNy0uMTk4LjQ4Ni0uNDE2Ljc0Ni0uNjU0Ljc2Ny0uOTAzIDEuNTE0LTEuNjIgMi4yNS0yLjE0OCAxLjIzNS0uOTAyIDIuNTItMS40IDMuODYtMS41MDQgMS41OTctLjEzNSAyLjc1LjI1IDMuNDU0IDEuMTUyLjYwMi43MjYuODcgMS43NzQuOCAzLjE0My0uMDMyLjkzMy0uMjYgMi4yOC0uNjc1IDQuMDY1LS40MTYgMS43NzMtLjYyNCAyLjgtLjYyNCAzLjA3LS4wMy42OTUuMDMgMS4xODIuMTk3IDEuNDQyLjE2Ni4yNy41Ny4zOTQgMS4yMDMuMzk0LjQ2NyAwIDEuMjk3LS40OTcgMi41LTEuNDgyLjk5Ni0uODIgMS44MTYtMS41OTggMi40NS0yLjMyNGwuOTYzIDEuMjU0bTE4Ljc2NS0uMDUyYy0uOTY1IDEuNTk4LTIuODc0IDMuMTk1LTUuNzA2IDQuNzkzLTMuNTM4IDIuMDMyLTcuMTI3IDMuMDUtMTAuNzU4IDMuMDUtMi43MDYgMC00LjYzNi0uOTA0LTUuODA4LTIuNy0uODMtMS4yMzMtMS4yMzQtMi42OTYtMS4yMDMtNC40MDcuMDMtMi42OTggMS4yMzQtNS4yNyAzLjYtNy43MSAyLjYwMy0yLjY2NSA1LjY3NC00LjAwMyA5LjIxLTQuMDAzIDMuMjcgMCA1IDEuMzI4IDUuMjA4IDMuOTk0LjEzNSAxLjcwMi0uNzk4IDMuNDQ1LTIuOCA1LjI0LTIuMTM3IDEuOTYtNC44MjQgMy4yMTUtOC4wNiAzLjc0NC42LjgzIDEuNTA0IDEuMjQ1IDIuNzA3IDEuMjQ1IDIuMzk2IDAgNS4wMi0uNjEzIDcuODYzLTEuODM3IDIuMDMzLS44NiAzLjYzLTEuNzUzIDQuODAzLTIuNjc2bC45NDUgMS4yNjVtLTExLjM2LTUuMjI4Yy4wMzItLjg5Mi0uMzMtMS4zNS0xLjEtMS4zNS0uOTk0IDAtMi4wMS42ODYtMy4wNDggMi4wNjYtMS4wMzggMS4zOC0xLjU2NyAyLjY5Ny0xLjU5OCAzLjk2Mi0uMDIgMC0uMDIuMjE4IDAgLjY0MyAxLjYzLS42IDMuMDUtMS41MTQgNC4yNDItMi43MzguOTY2LTEuMDU4IDEuNDYzLTEuOTIgMS41MDUtMi41ODNtMjQuOTQ2IDEuODY4Yy0uMTM1IDMuMDcyLTEuMjY1IDUuNzE3LTMuNDAyIDcuOTQ3LTIuMTM1IDIuMjMtNC43OSAzLjM1LTcuOTU1IDMuMzUtMi42MzUgMC00LjYzNy0uODUtNi4wMDYtMi41NS0uOTk3LTEuMjY3LTEuNTU3LTIuODU0LTEuNjUtNC43NTItLjE2Ni0yLjg2My44Ni01LjQ5OCAzLjEtNy44OTQgMi40MDgtMi42NjUgNS40MjctMy45OTMgOS4wNTctMy45OTMgMi4zMzQgMCA0LjA5OC43ODggNS4zIDIuMzQ0IDEuMTMyIDEuNDQzIDEuNjUgMy4yOSAxLjU1NyA1LjU1bS01LjY2NC0uMTg1Yy4wMy0uOTAzLS4wOTQtMS43MzMtLjM3NC0yLjQ4LS4yOC0uNzQ3LS42OTUtMS4xMy0xLjIyNC0xLjEzLTEuNzAyIDAtMy4xMDIuOTIzLTQuMjAyIDIuNzYtLjkzMyAxLjUwMy0xLjQzIDMuMTEtMS41MDQgNC44MTItLjAzLjg0LjExNCAxLjU3Ny40NDYgMi4yMS4zNjQuNzM2Ljg4MiAxLjEgMS41NTYgMS4xIDEuNTA1IDAgMi43OS0uODgzIDMuODYtMi42NTYuODkyLTEuNDcyIDEuMzgtMy4wMDggMS40NC00LjYxNWguMDAyeiIgZmlsbD0iIzExMjIzMyIvPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X3N0b2NrX2xvZ28iIGhyZWY9Ii9zdG9jayI+CiAgICAgICAgICAgICAgICA8c3ZnIGFsdD0iVmltZW8iIHdpZHRoPSIxNzAiIGhlaWdodD0iNDAiIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDc4MCAxMjAiPjxwYXRoIGQ9Ik00NzEuOSA3MC4zMWMtMTIuMTQtMi43NC0yNC4yOC0zLjktMjQuMjgtMTIgMC02LjUgOC44Mi03LjY2IDEzLjU5LTcuNjYgNy4yMiAwIDEzLjczIDIuMTcgMTUuMTcgMTBoMTcuMmMtMi0xNi42Mi0xNS45LTIzLTMxLjIyLTIzLTEzLjU4IDAtMzEuMjEgNS4wNS0zMS4yMSAyMS4zOCAwIDE1LjE3IDExLjg1IDE5LjUxIDI0IDIyLjExczI0IDMuNzYgMjQuNDIgMTIuNDNjLjQzIDguNTItMTAuNCA5LjgyLTE2LjYyIDkuODItOC44MSAwLTE2LTMuNDYtMTYuOS0xM2gtMTYuNDljLjI5IDE3LjYzIDE0LjMxIDI2IDMzLjA5IDI2IDE1LjQ2IDAgMzMuMzgtNi41IDMzLjM4LTI0LjI4LS4wMy0xNC43Mi0xMi4xNC0xOS4wNS0yNC4xMy0yMS44ek01MjUuNjYgMTcuMjhoLTE2LjQ4djIyLjRoLTEyLjQyVjUyaDEyLjQydjQ0Yy4yOSAxMi40MyAzLjQ3IDE5LjA4IDIwLjY3IDE5LjA4IDMuNjEgMCA3LjA4LS41OCAxMC42OS0uODd2LTEyLjY4YTI4LjUyIDI4LjUyIDAgMCAxLTYuOTQuNTdjLTcuMzcgMC03Ljk0LTMuNDctNy45NC0xMC4yNlY1MmgxNC44OFYzOS42OGgtMTQuODh6TTU4MC44NSAzNy42NmMtMjQgMC0zNy43MSAxNi40Ny0zNy43MSAzOS4zIDAgMjMgMTMuNzMgMzkuNDUgMzcuNzEgMzkuNDVTNjE4LjU3IDk5Ljk0IDYxOC41NyA3N2MwLTIyLjg3LTEzLjczLTM5LjM0LTM3LjcyLTM5LjM0em0wIDY1Ljc0Yy0xNC43MyAwLTIxLjI0LTEzLjQtMjEuMjQtMjYuNHM2LjUxLTI2LjMgMjEuMjQtMjYuM1M2MDIuMSA2NC4xIDYwMi4xIDc3cy02LjUxIDI2LjQtMjEuMjUgMjYuNHpNNjYyLjc5IDUwLjY2YzkuMSAwIDE1Ljc1IDQuOTEgMTcuMDUgMTRoMTYuNDdjLTEuNTktMTguMzUtMTYuMzMtMjctMzMuNjctMjctMjQuNTYgMC0zNi44NSAxNy42My0zNi44NSA0MC4xNyAwIDIyIDEyLjg2IDM4LjU4IDM2LjI3IDM4LjU4IDE5LjIyIDAgMzEuMjItMTAuNjkgMzQuMjUtMzAuMDZoLTE2LjQ3Yy0xLjU5IDEwLjctOC4yNCAxNy4wNS0xNy43OCAxNy4wNS0xNC4zIDAtMTkuNzktMTMuMTUtMTkuNzktMjUuNTcgMC0yMi42OSAxMS45OS0yNy4xNyAyMC41Mi0yNy4xN3pNNzQyLjI2IDY3LjEzbDI4LjYxLTI3LjQ1aC0yMC4yM2wtMjkuNzYgMzAuMlYxMS4yMUg3MDQuNHYxMDMuMThoMTYuNDhWODcuNjVsOS44Mi05LjUzIDIyLjgzIDM2LjI3aDIwLjA5bC0zMS4zNi00Ny4yNnoiIGZpbGw9IiNmZmYiPjwvcGF0aD48cGF0aCBkPSJNMTE3LjI1IDI2LjcyYTE4LjM3IDE4LjM3IDAgMCAwIDEzLjE0LTUuMzFxNC45Mi00LjY5IDUuMTMtOS44YTkuNjIgOS42MiAwIDAgMC0yLjY3LTYuODQgOS4wOCA5LjA4IDAgMCAwLTcuMTgtMy4zNyAyMC45MSAyMC45MSAwIDAgMC0xMy40NSA0LjlxLTYuMDYgNC45MS02LjI2IDEwLjIxLS40IDEwLjIyIDExLjI5IDEwLjIxek0zODYuMTIgMzguMjVxLTIyLjM4IDAtMzcuMTUgMTYuMzlRMzM1LjIgNjkuNCAzMzYuMjQgODdjLjA1Ljg2LjEyIDEuNy4yMiAyLjUzbC0xLjU0LjY4cS0xNy40NiA3LjUyLTMyLjIzIDcuNTEtNy40IDAtMTEuMDktNS4xMiAxOS45LTMuMjcgMzMtMTUuMzUgMTIuNC0xMS4wMyAxMS41NC0yMS40Ny0xLjIzLTE2LjM3LTIxLjM0LTE2LjM4LTIxLjggMC0zNy44IDE2LjQyLTE0LjU2IDE1LTE0Ljc3IDMxLjZhMzcuNTcgMzcuNTcgMCAwIDAgLjI3IDUuMzdjLTIuMjkgMS41MS00IDIuMjctNS4yIDIuMjdxLTMuOSAwLTQuOTItMS42M2MtLjY5LTEuMDktMS0zLjA2LS44My01LjkzcTAtMS42NCAyLjU3LTEyLjU3dDIuNzctMTYuNjdxLjQtOC4zNy0zLjI4LTEyLjg4LTQuMzItNS41Mi0xNC4xNy00LjdhMzAuNDIgMzAuNDIgMCAwIDAtMTUuOCA2LjE2IDU0LjU3IDU0LjU3IDAgMCAwLTkuMjMgOC44MmMtMS4xIDEtMi4xMiAxLjg2LTMuMDggMi42N3EuMTktOC40MS0zLjI4LTEyLjkzLTQuMzItNS41My0xNC4zOC00LjcyYTM2LjQ2IDM2LjQ2IDAgMCAwLTIxLjEzIDkuMjQgMzcuNjcgMzcuNjcgMCAwIDAtNy4xOSA4LjIxIDE4LjE1IDE4LjE1IDAgMCAwIC40MS0zLjlBMTkuNDIgMTkuNDIgMCAwIDAgMTYyLjUgNDNxLTMuMjgtNC44Mi04LjYyLTQuNDEtMy4wNy4yMS0xMS42OSA4LjIxLTExLjkxIDExLjA4LTEyLjkzIDExLjlsNC45MiA1LjU0YzMuODMtMi43NiA2LjE2LTQuMTUgNy00LjE1cTIuMjUgMCAxLjg1IDMuNjhhMTE0LjExIDExNC4xMSAwIDAgMS0xLjg5IDE0Ljg0Yy0uNyAzLjk0LTEuMiA3LjMzLTEuNTIgMTAuMTlsLS4xOC4xNXEtNy4zOSA2LjA4LTEwLjI2IDYuMDdjLTQuMzggMC02LjUtMi45Mi02LjM3LTguNzlxMy4wOC0xOS4yMiA1Ljc2LTMxLjY5LjgxLTcuMzYtMi4zNy0xMnQtMTAtNHEtNC4zMi40LTEzLjE0IDguMjFMOTcgNTIuMzljLS40MS05LjY4LTQuODItMTQuNjYtMTMuMjgtMTQuOTFxLTE5LS42LTI1Ljc0IDIxLjQ2YTE3LjE5IDE3LjE5IDAgMCAxIDYuNzYtMS41cTcgMCA2LjE2IDcuODQtLjQ2IDQuNzItNi4yIDEzLjgxdC04LjYyIDkuMDZxLTMuNjkgMC02Ljc3LTE0LTEtNC4xMS0zLjY5LTIxLTIuNDctMTUuNTQtMTMuMTQtMTQuNTJRMjggMzkgMTguOTQgNDYuODRxLTYuNTcgNi0xMy4zNCAxMS45bDQuMyA1LjU0UTE2LjA1IDYwIDE3LjA3IDYwcTQuNzEgMCA4LjgxIDE0Ljc2bDcuMzggMjcuMDZxNS41MiAxNC43NiAxMy41MSAxNC43NiAxMi45MiAwIDMxLjU1LTI0LjI0IDEzLjEtMTYuODQgMTctMjguNWMzLjQ0LTIuNTUgNS41Ny0zLjg0IDYuMzUtMy44NHEzLjY5IDAgMy42OSA1LjMzIDAgMS00IDE1LjE4dC00LjIgMjAuOTJxLS4yMSA2LjU3IDMuMTggMTAuNjZjMi4yNSAyLjc0IDUuNTEgNC4xMSA5Ljc1IDQuMTFxMTMuNzUgMCAyNy41LTExLjljLjgyLS43MSAxLjYxLTEuNDQgMi4zOS0yLjE4YTE2LjUxIDE2LjUxIDAgMCAwIDMuNzcgNy41NnE1LjkzIDYuMzQgMjAgNS45My0xLjg5LTQuNTItMS40Ny0xNmE1OS43IDU5LjcgMCAwIDEgNi41Ny0yNC40M3E2LTExLjY4IDExLjEtMTEuNyA2IDAgNS41NSA3LjU5YTUzLjEzIDUzLjEzIDAgMCAxLTIgMTEuNzEgNTUuMjMgNTUuMjMgMCAwIDAtMiAxMy4xM3EtLjQxIDEwLjQ3IDQuNzEgMTUgNS43MyA1LjEzIDIwLjA1IDQuNzItMi4xMy00LjcxLTEuNzItMTMuNTQuNi0xMi41MiA4LjQ0LTI1Ljg2IDcuNDEtMTIuNzIgMTIuNzYtMTIuNzMgNSAwIDQuNzQgNy44YTc0Ljk0IDc0Ljk0IDAgMCAxLTIuNTYgMTQuMzYgNzQuNjEgNzQuNjEgMCAwIDAtMi41NyAxNS43OXEtLjQxIDE0Ljc4IDEyLjk0IDE0Ljc3IDEzLjc0IDAgMjcuNS0xMS45bC40NC0uNGMuMzIuNTQuNjQgMS4wOCAxIDEuNnE3LjE5IDExLjA4IDIzLjgxIDExLjA4IDIyLjM2IDAgNDQuMTMtMTIuNWMxLjYzLS45MiAzLjE3LTEuODMgNC42NS0yLjc1YTI5LjQzIDI5LjQzIDAgMCAwIDMuMjQgNS4xOHE4LjQyIDEwLjQ1IDI0LjYzIDEwLjQ1IDE5LjUgMCAzMi42NC0xMy43M2E0OC43OSA0OC43OSAwIDAgMCAxNC0zMi41OHEuNjEtMTMuOTMtNi4zNi0yMi43NS03LjQ5LTkuNjUtMjEuODUtOS42N3ptLTk3Ljc2IDQ2LjU2YTExLjEyIDExLjEyIDAgMCAxIDAtMi42NnEuMTktNy43NSA2LjU1LTE2LjIzdDEyLjUtOC40OGMzLjE1IDAgNC42NSAxLjg1IDQuNTEgNS41MnEtLjE5IDQuMDgtNi4xNCAxMC42MmE0Ni4yNSA0Ni4yNSAwIDAgMS0xNy40MiAxMS4yM3pNMzkxIDY5Ljg1YTM5IDM5IDAgMCAxLTYgMTguOTJxLTYuNTcgMTAuOTEtMTUuODEgMTAuOS00LjExIDAtNi4zNi00LjUyYTE3LjY2IDE3LjY2IDAgMCAxLTEuODUtOS4wNSAzOS44MSAzOS44MSAwIDAgMSA2LjE2LTE5Ljc0cTYuODYtMTEuMzEgMTcuMzMtMTEuMzFjMi4xOSAwIDMuODYgMS41NCA1IDQuNjNBMjUuODIgMjUuODIgMCAwIDEgMzkxIDY5Ljg1eiIgZmlsbD0iIzAwYWRlZiI+PC9wYXRoPjwvc3ZnPgogICAgICAgICAgICA8L2E+CiAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51IiByb2xlPSJuYXZpZ2F0aW9uIiBhcmlhLWxhYmVsPSJNYWluIG1lbnUiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ0b3BuYXZfbWVudV9kZXNrdG9wX21haW4iIHJvbGU9Im1lbnViYXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0iam9pbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X21lbnVfam9pbiBqcy10b3BuYXZfbWVudV9hdXRoIiBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO3ZpbWVvLk1vZGFsLmNyZWF0ZSh7c2l6ZToneHNtYWxsJyxjb250ZW50Oicvam9pbj9tb2RhbD1uZXcnfSkudGhlbihjb21wbGV0ZVVzZXJMb2dpbikiIGRhdGEtZ2EtZXZlbnQtY2xpY2s9InRvcF9uYXZ8am9pbiIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6am9pbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfam9pbl9jbGljayIgaHJlZj0iLy92aW1lby5jb20vam9pbiIgdGl0bGU9IkJlY29tZSBhIFZpbWVvIG1lbWJlciIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfam9pbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJsb2dpbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ianMtdG9wbmF2X21lbnVfYXV0aCIgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTt2aW1lby5Nb2RhbC5jcmVhdGUoe3NpemU6J3hzbWFsbCcsY29udGVudDonL2xvZ19pbj9tb2RhbD1uZXcnfSkudGhlbihjb21wbGV0ZVVzZXJMb2dpbikiIGRhdGEtZ2EtZXZlbnQtY2xpY2s9InRvcF9uYXZ8bG9naW4iIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmxvZ2luIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9sb2dpbl9jbGljayIgaHJlZj0iLy92aW1lby5jb20vbG9nX2luIiB0aXRsZT0iTG9nIGluIHRvIHlvdXIgYWNjb3VudCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfbG9naW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZyBpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJwcmljaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByaWNpbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3ByaWNpbmdfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3VwZ3JhZGUiIHRpdGxlPSJQcmljaW5nIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9wcmljaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmljaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9InByb2R1Y3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTtldmVudC50YXJnZXQuYmx1cigpOyIgY2xhc3M9InRvcG5hdl9tZW51X25vX2xpbmsgdG9wbmF2X2hhc19kcm9wZG93biB0b3BuYXZfaWNvbl9jaGV2cm9uX2EiIGhyZWY9IiMiIHRpdGxlPSJQcm9kdWN0IiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9wcm9kdWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9kdWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duLS13cmFwcGVyIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl9wcm9kdWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3NvbHV0aW9ucy0tZmVhdHVyZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24tLWxhYmVscyI+RkVBVFVSRVM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDp2aWRlb19wbGF5ZXIiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfdmlkZW9fcGxheWVyIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1wbGF5ZXIiIHRpdGxlPSJWaWRlbyBwbGF5ZXIiPlZpZGVvIHBsYXllcjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOnNjcmVlbl9yZWNvcmRlciIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9zY3JlZW5fcmVjb3JkZXIiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3NjcmVlbi1yZWNvcmRlciIgdGl0bGU9IlNjcmVlbiByZWNvcmRlciI+U2NyZWVuIHJlY29yZGVyPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6bGl2ZV9zdHJlYW1pbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfbGl2ZV9zdHJlYW1pbmciIGhyZWY9Ii8vdmltZW8uY29tL2xpdmUiIHRpdGxlPSJMaXZlIHN0cmVhbWluZyI+TGl2ZSBzdHJlYW1pbmc8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDpwcml2YWN5IiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9wcm9kdWN0X3ByaXZhY3kiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLXByaXZhY3kiIHRpdGxlPSJQcml2YWN5Ij5Qcml2YWN5PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6Y29sbGFib3JhdGlvbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9jb2xsYWJvcmF0aW9uIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1jb2xsYWJvcmF0aW9uIiB0aXRsZT0iQ29sbGFib3JhdGlvbiI+Q29sbGFib3JhdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOmRpc3RyaWJ1dGlvbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9kaXN0cmlidXRpb24iIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLW1hcmtldGluZyIgdGl0bGU9IkRpc3RyaWJ1dGlvbiBhbmQgbWFya2V0aW5nIj5EaXN0cmlidXRpb24gJiBtYXJrZXRpbmc8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDptb25ldGl6YXRpb24iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfbW9uZXRpemF0aW9uIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1tb25ldGl6YXRpb24iIHRpdGxlPSJNb25ldGl6YXRpb24iPk1vbmV0aXphdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOmFuYWx5dGljcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9hbmFseXRpY3MiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLWFuYWx5dGljcyIgdGl0bGU9IkFuYWx5dGljcyI+QW5hbHl0aWNzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6aG9zdGluZyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9ob3N0aW5nIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy9vbmxpbmUtdmlkZW8taG9zdGluZyIgdGl0bGU9Ikhvc3RpbmcgYW5kIG1hbmFnZW1lbnQiPkhvc3RpbmcgJiBtYW5hZ2VtZW50PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvdXBncmFkZSIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24tLWNvbXBhcmVfcGxhbnMiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDpjb21wYXJlX3BsYW5zfHRhcmdldDovdXBncmFkZXx0eXBlOmNsaWNrIj5Db21wYXJlIFBsYW5zPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duLS1sYWJlbHMiPlNFUlZJQ0VTPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfc29sdXRpb25zLS1zZXJ2aWNlc19jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZXNfd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Y3JlYXRlfHRhcmdldDovY3JlYXRlfHR5cGU6Y2xpY2siIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2Jsb2NrIiBocmVmPSIvL3ZpbWVvLmNvbS9jcmVhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+TWFrZSBzb2NpYWwgdmlkZW9zIGluIGFuIGluc3RhbnQ6IHVzZSBjdXN0b20gdGVtcGxhdGVzIHRvIHRlbGwgdGhlIHJpZ2h0IHN0b3J5IGZvciB5b3VyIGJ1c2luZXNzLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2VzX3dyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmZvcl9oaXJlfHRhcmdldDovZm9yLWhpcmV8dHlwZTpjbGljayIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3NvbHV0aW9ucy0tc2VydmljZXNfYmxvY2siIGhyZWY9Ii8vdmltZW8uY29tL2Zvci1oaXJlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIEhpcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UG9zdCBqb2JzLCBmaW5kIHByb3MsIGFuZCBjb2xsYWJvcmF0ZSBjb21taXNzaW9uLWZyZWUgaW4gb3VyIHByb2Zlc3Npb25hbCBtYXJrZXRwbGFjZS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlc193cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDplbnRlcnByaXNlfHRhcmdldDovZW50ZXJwcmlzZXx0eXBlOmNsaWNrIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfc29sdXRpb25zLS1zZXJ2aWNlc19ibG9jayIgaHJlZj0iLy92aW1lby5jb20vZW50ZXJwcmlzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudGVycHJpc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+R2V0IHlvdXIgdGVhbSBhbGlnbmVkIHdpdGggYWxsIHRoZSB0b29scyB5b3UgbmVlZCBvbiBvbmUgc2VjdXJlLCByZWxpYWJsZSB2aWRlbyBwbGF0Zm9ybS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlc193cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpzdG9ja3x0YXJnZXQ6L3N0b2NrfHR5cGU6Y2xpY2siIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2Jsb2NrIiBocmVmPSIvL3ZpbWVvLmNvbS9zdG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkJyb3dzZSBhbmQgYnV5IGV4Y2VwdGlvbmFsLCByb3lhbHR5LWZyZWUgc3RvY2sgY2xpcHMsIGhhbmRwaWNrZWQgYnkgdGhlIGJlc3QuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9InNvbHV0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X2hhc19kcm9wZG93biB0b3BuYXZfaWNvbl9jaGV2cm9uX2EiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOnNvbHV0aW9ucyIgaHJlZj0iIyIgdGl0bGU9IlNvbHV0aW9ucyIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfc29sdXRpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb2x1dGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfc29sdXRpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Y3JlYXRpdmVfcHJvZmVzc2lvbmFscyIgaHJlZj0iLy92aW1lby5jb20vc29sdXRpb25zL2NyZWF0aXZlLXByb2Zlc3Npb25hbHMtc29sdXRpb25zIiB0aXRsZT0iQWxsIHlvdSBuZWVkIHRvIG1ha2UgZ3JlYXQgdmlkZW8uIj5DcmVhdGl2ZSBQcm9mZXNzaW9uYWxzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOnNtYWxsX2J1c2luZXNzIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvc21hbGwtYnVzaW5lc3Mtc29sdXRpb25zIiB0aXRsZT0iQ2FwdHVyZSB5b3VyIGN1c3RvbWVyc+KAmSBhdHRlbnRpb24gd2l0aCB2aWRlby4iPlNtYWxsIEJ1c2luZXNzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmVudGVycHJpc2UiIGhyZWY9Ii8vdmltZW8uY29tL2VudGVycHJpc2UiIHRpdGxlPSJFbnRlcnByaXNlIj5FbnRlcnByaXNlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmVkdWNhdGlvbiIgaHJlZj0iLy92aW1lby5jb20vc29sdXRpb25zL2VkdWNhdGlvbi1zb2x1dGlvbnMiIHRpdGxlPSJTaGFyZSBrbm93bGVkZ2Ugd2l0aCB2aWRlby4iPkVkdWNhdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpmaXRuZXNzIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvZml0bmVzcy1zb2x1dGlvbnMiIHRpdGxlPSJHZXQgeW91ciBmaXRuZXNzIHN0dWRpbyBvbmxpbmUuIj5GaXRuZXNzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmZhaXRoIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvZmFpdGgtc29sdXRpb25zIiB0aXRsZT0iS2VlcCB5b3VyIGNvbW11bml0eSBjb25uZWN0ZWQuIj5GYWl0aDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJpbnNwaXJhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO2V2ZW50LnRhcmdldC5ibHVyKCk7IiBjbGFzcz0idG9wbmF2X21lbnVfbm9fbGluayB0b3BuYXZfaGFzX2Ryb3Bkb3duIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgaHJlZj0iIyIgdGl0bGU9IldhdGNoIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9pbnNwaXJhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfaW5zcGlyYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDp3YXRjaHxrZXl3b3JkOndhdGNoIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vd2F0Y2giIHRpdGxlPSJFeHBsb3JlIj5FeHBsb3JlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6c3RhZmZfcGlja3MiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX3N0YWZmX3BpY2tzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9jaGFubmVscy9zdGFmZnBpY2tzIiB0aXRsZT0iVGhlIGJlc3QgdmlkZW9zIG9uIFZpbWVvLCBjdXJhdGVkIGRhaWx5IGJ5IG91ciB0ZWFtIj5TdGFmZiBQaWNrczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDptYW5hZ2VfdmlkZW9zfGtleXdvcmQ6dmlkZW9fc2Nob29sIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfdmlkZW9fc2Nob29sX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS92aWRlb3NjaG9vbCIgdGl0bGU9IkxlYXJuIGhvdyB0byBtYWtlIGJldHRlciB2aWRlb3MiPlZpZGVvIFNjaG9vbDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L25hdj48IS0tIC8udG9wbmF2X2Rlc2t0b3BfbWVudSAtLT4KICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InRvcG5hdl9tZW51X3NlYXJjaF9vbW5pc2VhcmNoIiBjbGFzcz0idG9wbmF2X21lbnVfc2VhcmNoIiBkYXRhLXF1ZXJ5PSIiIGRhdGEtcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9tZW51X3JpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icmVjb3JkX3RpcF93cmFwcGVyIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfdmlkZW9fcG9wb3ZlciIgb25Nb3VzZWVudGVyPSJ0cmFja05ld1ZpZGVvRHJvcGRvd25JbXByZXNzaW9uKCcnKSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPSJuZXdfdmlkZW9fZHJvcGRvd25fYnV0dG9uIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3ZpZGVvX3BvcG92ZXJfYnV0dG9uIGlyaXNfYnRuLS1wcmltYXJ5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6bmV3X3ZpZGVvIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jbGljaz0iaGFuZGxlTmV3VmlkZW9DbGljaygpIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfdmlkZW9fcG9wb3Zlcl9zcGFuX3dyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyB2aWRlbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9InJlY29yZF9hbmltYXRpb25fd3JhcHBlciIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3ZpZGVvX3BvcG92ZXJfc3Bhbl92YXJpYW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNMTIgMTUuNWExIDEgMCAwIDEtLjY3LS4yNmwtNS00LjUgMS4zNC0xLjQ4TDEyIDEzLjE1bDQuMzMtMy45IDEuMzQgMS40OS01IDQuNWExIDEgMCAwIDEtLjY3LjI2eiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSIjZmZmZmZmIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgaWQ9Im5ld192aWRlb19kcm9wZG93bl92YXJpYW50IiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biB0b3BuYXZfZGVza3RvcF92aWRlb19wb3BvdmVyX2Ryb3Bkb3duX3ZhcmlhbnQiIHJvbGU9Im1lbnUiIGFyaWEtaGlkZGVuPSJ0cnVlIiBzdHlsZT0icGFkZGluZzogdW5zZXQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW1fdmFyaWFudCIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBvbmNsaWNrPSIoZnVuY3Rpb24oZXZlbnQpIHsgaWYgKHdpbmRvdy5oYW5kbGVVcGxvYWRCdXR0b25DbGljaykgeyBoYW5kbGVVcGxvYWRCdXR0b25DbGljayhldmVudCk7IH19KShldmVudCkiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om5ld192aWRlb3xrZXl3b3JkOnsnYWN0aW9uJzondXBsb2FkJ318dGFyZ2V0Oi91cGxvYWR8dHlwZTpjbGljayIgaWQ9InRvcG5hdl9kZXNrdG9wX3VwbG9hZF9idXR0b24iIGhyZWY9Ii8vdmltZW8uY29tL3VwbG9hZCIgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFsaWduX3RvcG5hdl9kcm9wZG93bl9pY29ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b3BuYXZfZHJvcGRvd25faWNvbnMiPjxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTE4IDguNDhhNy4xNiA3LjE2IDAgMCAwLTEuODQtNC43NkE1LjgxIDUuODEgMCAwIDAgNi45MiA1YTUuMjQgNS4yNCAwIDAgMC00LjY5IDMuODVBNC45MSA0LjkxIDAgMCAwIDAgMTNhNS4xMyA1LjEzIDAgMCAwIDUgNWgxMGE1LjEgNS4xIDAgMCAwIDUtNC45NCA1Ljg5IDUuODkgMCAwIDAtMi00LjU4ek0xNSAxNmgtNHYtMy41OWwxLjI5IDEuMjkgMS40MS0xLjQxLTMuNy0zLjctMy43MSAzLjdMNy43IDEzLjcgOSAxMi40MVYxNkg1YTMuMTYgMy4xNiAwIDAgMS0zLTMgMi45MSAyLjkxIDAgMCAxIDEuNTItMi41OGwuNC0uMi4wOC0uNDRBMy4zOCAzLjM4IDAgMCAxIDcuNTkgN2guN2wuMjQtLjY2QTMuNjkgMy42OSAwIDAgMSAxMiA0YTMuNzMgMy43MyAwIDAgMSAyLjcyIDEuMTJBNS40NSA1LjQ1IDAgMCAxIDE2IDl2LjU0bC40NS4zQTMuNzkgMy43OSAwIDAgMSAxOCAxMy4wNiAzLjA5IDMuMDkgMCAwIDEgMTUgMTZ6IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiMxYTJlM2IiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtX3ZhcmlhbnQiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgb25jbGljaz0iaGFuZGxlQ3JlYXRlVmlkZW9DbGljayhldmVudCkiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om5ld192aWRlb3xrZXl3b3JkOnsnYWN0aW9uJzonY3JlYXRlJ318dGFyZ2V0Oi9jcmVhdGUvdmlkZW8tbWFrZXJ8dHlwZTpjbGljayIgaWQ9InRvcG5hdl9kZXNrdG9wX2NyZWF0ZV92aWRlb19idXR0b24iIGhyZWY9Ii8vdmltZW8uY29tL2NyZWF0ZS92aWRlby1tYWtlciIgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFsaWduX3RvcG5hdl9kcm9wZG93bl9pY29ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b3BuYXZfZHJvcGRvd25faWNvbnMiPjxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0zLjIgMTYuOGwzLjgtMSAxMC0xMGMuMi0uMi4yLS41IDAtLjdMMTQuOSAzYy0uMi0uMi0uNS0uMi0uNyAwbC0yLjEgMi4xIDIuOCAyLjhMMTMuOCA5IDExIDYuMiA0LjIgMTNsLTEgMy44em05LjktMTQuOWMuOC0uOCAyLS44IDIuOCAwTDE4LjEgNGMuOC44LjggMiAwIDIuOEw3LjggMTcuMmwtNS42IDEuNWMtLjUuMS0uOS0uMi0uNy0uN2wxLjQtNS43TDEzLjEgMS45eiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiMxYTJlM2IiCiAgICAgICAgICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgYSB2aWRlbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImNhcnRfdG9wX25hdiIgY2xhc3M9InRvcG5hdl9jYXJ0X2J1dHRvbiI+PC9kaXY+CgogICAgICAgICAgICA8L2Rpdj48IS0tIC8udG9wbmF2X21lbnVfcmlnaHQgLS0+CiAgICAgICAgICAgIDwvZGl2PjwhLS0gLy50b3BuYXZfZGVza3RvcF93cmFwcGVyIC0tPgo8L2Rpdj4KCiAgICA8c2NyaXB0PgogICAgICAgIHZhciBpc01vYmlsZSA9IC9pcGhvbmV8aXBvZHxhbmRyb2lkfHdlYm9zfGJsYWNrYmVycnl8d2luZG93cyBwaG9uZS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTsKCiAgICAgICAgLy8gRE8gTk9UIFJFTU9WRS4gVGhpcyBpcyBhIGNhbGxiYWNrIGZvciB0aGUgbG9naW4gJiBqb2luIGJ1dHRvbnMgaW4gVG9wTmF2QnVpbGRlci4KICAgICAgICBmdW5jdGlvbiBjb21wbGV0ZVVzZXJMb2dpbihyZXNwb25zZSkgewogICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgIXJlc3BvbnNlLnNpZ251cCkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIGhhbmRsZVVwbG9hZEJ1dHRvbkNsaWNrKGV2ZW50KSB7CiAgICAgICAgICAgIC8vIE9wZW5zIHRoZSBhdXRoIG1vZGFsIGZvciBsb2dnZWQgb3V0IHVzZXJzCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgd2luZG93LnZpbWVvCiAgICAgICAgICAgICAgICYmIHdpbmRvdy52aW1lby5jb25maWcKICAgICAgICAgICAgICAgJiYgd2luZG93LnZpbWVvLk1vZGFsCiAgICAgICAgICAgICAgICYmICF3aW5kb3cudmltZW8uY3VyX3VzZXIKICAgICAgICAgICAgKXsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBpc01vYmlsZSA/IHdpbmRvdy5sb2NhdGlvbi5ocmVmPSIvdXBsb2FkIiA6IHZpbWVvLk1vZGFsLmNyZWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3hzbWFsbCcsCiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJy9qb2luP21vZGFsPW5ldyZyZWRpcmVjdD0vdXBsb2FkJywKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICA8L3NjcmlwdD4KCjxzY3JpcHQ+CiAgICB2YXIgc2VydmljZUVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNlcnZpY2VzX3dyYXBwZXInKTsKICAgIHZhciBoaWRkZW5TZXJ2aWNlRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2VydmljZXNfd3JhcHBlci5oaWRlJyk7CiAgICB2YXIgY291bnQgPSBzZXJ2aWNlRWxlbWVudHMubGVuZ3RoIC0gaGlkZGVuU2VydmljZUVsZW1lbnRzLmxlbmd0aDsKICAgIGlmIChjb3VudCA+IDIpIHsKICAgICAgICB2YXIgc2VydmljZUNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy50b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2NvbnRhaW5lcicpOwogICAgICAgIGlmIChzZXJ2aWNlQ29udGFpbmVyKSB7CiAgICAgICAgICAgIHNlcnZpY2VDb250YWluZXIuc3R5bGUud2lkdGggPSAnNDUwcHgnOwogICAgICAgIH0KICAgIH0KPC9zY3JpcHQ+Cgo8c2NyaXB0PgogICAgZnVuY3Rpb24gaGFuZGxlTmV3VmlkZW9DbGljaygpIHsKICAgICAgICBpZiAod2luZG93LnZpbWVvICYmIHdpbmRvdy52aW1lby5jdXJfdXNlcikgewogICAgICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICE9PSAnL3VwbG9hZCcpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy91cGxvYWQnOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgd2luZG93LnZpbWVvLk1vZGFsLmNyZWF0ZSh7IHNpemU6ICd4c21hbGwnLCBjb250ZW50OiAnL2pvaW4/bW9kYWw9bmV3JnJlZGlyZWN0PS91cGxvYWQnIH0pCiAgICAgICAgICAgICAgICAudGhlbihjb21wbGV0ZVVzZXJMb2dpbik7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGhhbmRsZUNyZWF0ZVZpZGVvQ2xpY2soZSwgaXNSZWNvcmRTY3JlZW4gPSBmYWxzZSkgewogICAgICAgIGlmICh3aW5kb3cudmltZW8gJiYgIXdpbmRvdy52aW1lby5jdXJfdXNlcikgewogICAgICAgICAgICBpZiAoIWlzUmVjb3JkU2NyZWVuKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CgogICAgICAgICAgICAgICAgd2luZG93LnZpbWVvLk1vZGFsLmNyZWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3hzbWFsbCcsCiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJy9qb2luP21vZGFsPW5ldyZyZWRpcmVjdD0vY3JlYXRlL3ZpZGVvLW1ha2VyJwogICAgICAgICAgICAgICAgfSkudGhlbihjb21wbGV0ZVVzZXJMb2dpbik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gdHJhY2tOZXdWaWRlb0Ryb3Bkb3duSW1wcmVzc2lvbihyZWNvcmRPcHRpb24pIHsKICAgICAgICBpZiAod2luZG93Ll9fZmEpIHsKICAgICAgICAgICAgd2luZG93Ll9fZmEucHVzaChbJ3RyYWNrRXZlbnQnLCB7CiAgICAgICAgICAgICAgICB0eXBlOiAnaW1wcmVzc2lvbicsCiAgICAgICAgICAgICAgICBjb250YWluZXI6ICd0b3BfbmF2JywKICAgICAgICAgICAgICAgIGNvbXBvbmVudDogJ25ld192aWRlbycsCiAgICAgICAgICAgIH1dKTsKCiAgICAgICAgICAgIGlmIChyZWNvcmRPcHRpb24pIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5fX2ZhLnB1c2goWyd0cmFja0V2ZW50JywgewogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbXByZXNzaW9uJywKICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6ICd0b3BfbmF2JywKICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICdyZWNvcmQnLAogICAgICAgICAgICAgICAgICAgIGtleXdvcmQ6IHJlY29yZE9wdGlvbiwKICAgICAgICAgICAgICAgIH1dKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KPC9zY3JpcHQ+Cgo8c2NyaXB0PgogICAgLyoqCiAgICAgKiBUaGlzIGlzIHBhcnQgb2YgYW4gQUIgRXhwZXJpbWVudAogICAgICogRXhwZXJpbWVudCBsaW5rOiBodHRwczovL3ZpbWVvLmNvbS9tb2R3b3JsZC9hYmxpbmNvbG4vNTI4CiAgICAgKiBFeHBlcmltZW50IHBhcmFtOiBzaG93X215X2RyYWZ0cwogICAgICovCiAgICB2YXIgc2hvd1ZhcmlhbnQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIHNob3dNeURyYWZ0czsKICAgICAgICBpZiAod2luZG93LkFCTGluY29sbiAmJiB3aW5kb3cuQUJMaW5jb2xuLmdldFRlc3QoJ0pTLlRvcG5hdi5NeURyYWZ0cycpLmdldCgnc2hvd19teV9kcmFmdHMnLCAnY29udHJvbCcpID09PSAndmFyaWFudCcpIHsKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdi1tYW5hZ2UtZHJhZnRzJykuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZScpOwogICAgICAgIH0KICAgIH07CiAgICBzaG93VmFyaWFudCgpOwo8L3NjcmlwdD4KCiAgICA8c2NyaXB0PgogICAgICAgIHZhciBhcnJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWNvcmRfYW5pbWF0aW9uX3dyYXBwZXInKTsKICAgICAgICB2YXIgbmV3VmlkZW9CdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVjb3JkX3RpcF93cmFwcGVyJyk7CgogICAgICAgIGlmIChhcnJvdykgewogICAgICAgICAgICBhcnJvdy5jbGFzc0xpc3QuYWRkKCdub19hbmltYXRpb24nKTsKICAgICAgICB9CgogICAgICAgIHZhciBpc0hvdmVyZWQgPSBmYWxzZTsKCiAgICAgICAgaWYgKG5ld1ZpZGVvQnRuICYmIGZhbHNlKSB7CiAgICAgICAgICAgIG5ld1ZpZGVvQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmIChpc0hvdmVyZWQpIHJldHVybjsKCiAgICAgICAgICAgICAgICBpc0hvdmVyZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGlmIChhcnJvdykgewogICAgICAgICAgICAgICAgICAgIGFycm93LmNsYXNzTGlzdC5yZW1vdmUoJ25vX2FuaW1hdGlvbicpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHN0b3JlX3JlY29yZF90aXBfc2V0dGluZ3MoMSk7CgogICAgICAgICAgICB9LCBmYWxzZSk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBzdG9yZV9yZWNvcmRfdGlwX3NldHRpbmdzKHZhbHVlKSB7CiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdQT1NUJywgJy9zZXR0aW5ncy9uYXZfcmVjb3JkZXJfdGlwJyk7CiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdYLVJlcXVlc3RlZC1XaXRoJywgJ1hNTEh0dHBSZXF1ZXN0Jyk7CiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7CiAgICAgICAgICAgIHhoci5zZW5kKCdyZWNvcmRfc2NyZWVuX3RpcF9zdGF0ZT0nICsgdmFsdWUgKyAnJnRva2VuPScgKyB2aW1lby54c3JmdCk7CgogICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGhhbmRsZS4gV2UgaG9wZSBmb3IgdGhlIGJlc3QgaW4gdGhpcyBjYXNlCiAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7fTsKICAgICAgICB9OwogICAgPC9zY3JpcHQ+CgoKICAgIAo8IS0tIFJlc3BvbnNpdmUgVG9wIE5hdiAoRXhwbG9yZSwgTE9IUCwgV2F0Y2gsIHRjKSAtLT4KPG5hdiBpZD0idG9wbmF2X21vYmlsZSIgY2xhc3M9InRvcG5hdl9tb2JpbGUgICAgbmF2X2Jhci0tbGkiIHJvbGU9ImJhbm5lciI+CgogICAgPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgZGF0YS1hY3Rpb249Im1lbnUub3BlbiIgY2xhc3M9Im5hdmJhcl9oYW1idXJnZXIgbmF2X2Jhcl9pY29uIHRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9sZWZ0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2xvZ28iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj4KICAgICAgICAgICAgICAgIDx0aXRsZT5NZW51PC90aXRsZT4KICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGUtNCIgZD0iTTcsOEgyNWExLDEsMCwwLDEsMSwxaDBhMSwxLDAsMCwxLTEsMUg3QTEsMSwwLDAsMSw2LDlINkExLDEsMCwwLDEsNyw4WiIgLz4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik03LDE1SDI1YTEsMSwwLDAsMSwxLDFoMGExLDEsMCwwLDEtMSwxSDdhMSwxLDAsMCwxLTEtMUg2QTEsMSwwLDAsMSw3LDE1WiIvPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTcsMjJIMjVhMSwxLDAsMCwxLDEsMWgwYTEsMSwwLDAsMS0xLDFIN2ExLDEsMCwwLDEtMS0xSDZBMSwxLDAsMCwxLDcsMjJaIi8+CiAgICAgICAgICAgIDwvc3ZnPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X2FjdGlvbl9idXR0b25zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii8vdmltZW8uY29tL3NlYXJjaCIgY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9yaWdodCB0b3BuYXZfbW9iaWxlX2hlYWRlcl9zZWFyY2giPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im5hdl9iYXJfc2VhcmNoX2ljb24gbmF2X2Jhcl9pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5TZWFyY2g8L3RpdGxlPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjYuNzQsMjUuMzJsLTQuNTMtNC41M2ExLDEsMCwwLDAtLjIxLS4xNEE5LDksMCwxLDAsMjAuNjUsMjJhMSwxLDAsMCwwLC4xNC4yMWw0LjUzLDQuNTNhMSwxLDAsMCwwLDEuNDEtMS40MVpNMTUsMjJhNyw3LDAsMSwxLDctN0E3LDcsMCwwLDEsMTUsMjJaIi8+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iY2FydF90b3BfbmF2X21vYmlsZSIgY2xhc3M9InRvcG5hdl9jYXJ0X2J1dHRvbiI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8IS0tIFZpbWVvIExvZ28gLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdl9iYXJfdGl0bGUganMtbmF2X2Jhcl90aXRsZSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3ZpbWVvLmNvbSIgZ3RtLWRhdGEtY2xpY2s9Im1vYmlsZV9uYXZfaG9tZV9sb2dvX2NsaWNrIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNDQxIDEyNC42ODIiIHdpZHRoPSI4NnB4IiBoZWlnaHQ9IjI3cHgiPgogICAgICAgICAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMjAuNDgxLDI3LjMyNmM1LjQ2MiwwLDEwLjE4OC0xLjkxLDE0LjE3NC01LjcyOGMzLjU0Ny0zLjM3OSw1LjM5Mi02LjkwNiw1LjU0LTEwLjU4M2MwLjE0My0yLjQ5Mi0wLjgxNS00Ljk1MS0yLjg4LTcuMzc4QzEzNS4yNDQsMS4yMTcsMTMyLjY2MiwwLDEyOS41NjIsMGMtNS4zMiwwLTEwLjE1NSwxLjc2Ny0xNC41MTEsNS4yODhjLTQuMzU2LDMuNTI3LTYuNjA4LDcuMjA0LTYuNzUsMTEuMDIyQzEwOC4wMDIsMjMuNjU2LDExMi4wNjcsMjcuMzI2LDEyMC40ODEsMjcuMzI2eiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQzNC4wNzksNTAuMTZjLTUuMzE5LTYuOTI1LTEzLjE0NS0xMC4zOTUtMjMuNDc1LTEwLjM5NWMtMTYuMDk3LDAtMjkuNDU1LDUuODk2LTQwLjA4MywxNy42ODhjLTkuOTAyLDEwLjYxNC0xNC40NzgsMjIuMjY1LTEzLjczMywzNC45NDRjMC4wNDksMC45MzIsMC4xMzIsMS44NCwwLjIyOSwyLjczOGMtMC41NTQsMC4yNDEtMS4wOTMsMC40ODMtMS42NjIsMC43MjRjLTEyLjU1Niw1LjQxMS0yNC4xNDcsOC4xMS0zNC43NzUsOC4xMWMtNS4zMiwwLTkuMzA3LTEuODM5LTExLjk2LTUuNTIxYzE0LjMxNi0yLjM1NSwyNi4yMDYtNy44NzYsMzUuNjYyLTE2LjU2OGM4Ljg1NC03Ljk1NSwxMi45ODktMTUuNjg5LDEyLjQtMjMuMTk3Yy0wLjg4Ny0xMS43OC04LjU2Mi0xNy42NzYtMjMuMDM0LTE3LjY3NmMtMTUuNjUsMC0yOS4yMzUsNS45MDktNDAuNzUsMTcuNzE0Yy0xMC40ODQsMTAuNzgzLTE1LjgwNSwyMi4xNDgtMTUuOTQ3LDM0LjEwM2MtMC4wNCwyLjAwNSwwLjA2NiwzLjkzMiwwLjMsNS43ODljLTIuNDc3LDEuNjMyLTQuMzUyLDIuNDU2LTUuNjEzLDIuNDU2Yy0yLjgxLDAtNC41NzYtMC41ODItNS4zMTQtMS43NmMtMC43MzctMS4xNzgtMS4wMzUtMy4zMDgtMC44ODctNi40MDFjMC0xLjE3OCwwLjkxOS01LjY5NSwyLjc3MS0xMy41NjVjMS44NDUtNy44NywyLjg0MS0xMy44NjQsMi45OS0xNy45ODdjMC4yOTEtNi4wMjUtMC44OTQtMTAuNjYtMy41NDctMTMuODk2Yy0zLjEwMS0zLjk3NC04LjE5NC01LjY2My0xNS4yODEtNS4wNzRjLTUuOTAyLDAuNDQ3LTExLjU5MiwyLjY2LTE3LjA1NCw2LjY0N2MtMy4yNDksMi4zNjMtNi41NjksNS41MzQtOS45NjEsOS41MjFjLTEuMTg1LDEuMDM2LTIuMjkxLDItMy4zMjcsMi44OGMwLjE0My02LjA1MS0xLjAzNi0xMC43MDUtMy41NC0xMy45NTRjLTMuMTA3LTMuOTg3LTguMjcyLTUuNjgzLTE1LjUwOC01LjA5NGMtOC40MTUsMC43MzgtMTYuMDIsNC4wNjUtMjIuODA5LDkuOTY3Yy0yLjk1OCwyLjUxMS01LjU0LDUuNDY5LTcuNzUzLDguODYxYzAuMjkxLTEuMzI3LDAuNDQtMi43MzEsMC40NC00LjIwN2MwLTQuNTc2LTEuMTg1LTguNjAyLTMuNTQ3LTEyLjA3MXMtNS40NjItNS4wNTUtOS4zMDEtNC43NTdjLTIuMjEzLDAuMTQ5LTYuNDIsMy4xMDEtMTIuNjIxLDguODU0Yy04LjU2OSw3Ljk3NC0xMy4yMTYsMTIuMjU5LTEzLjk1NCwxMi44NDFsNS4zMTMsNS45OGM0LjEzNi0yLjk4NCw2LjY0Ny00LjQ3OSw3LjUzNC00LjQ3OWMxLjYxOCwwLDIuMjg1LDEuMzI3LDEuOTk0LDMuOTc1Yy0wLjE0MywzLjgzMS0wLjgyMiw5LjE2NC0yLjAzOSwxNi4wMTJjLTAuNzU0LDQuMjQzLTEuMjk4LDcuOTA0LTEuNjM4LDEwLjk4OGMtMC4wNjYsMC4wNTUtMC4xMjksMC4xMDktMC4xOTYsMC4xNjRjLTUuMzIsNC4zNzUtOS4wMDksNi41NTYtMTEuMDc0LDYuNTU2Yy00LjcyNSwwLTcuMDE2LTMuMTU4LTYuODY3LTkuNDg4YzIuMjEzLTEzLjgyNCw0LjI4NS0yNS4yMjIsNi4yMDctMzQuMTk5YzAuNTgzLTUuMjk0LTAuMjY2LTkuNTkyLTIuNTUtMTIuOTA2Yy0yLjI5MS0zLjMxNC01Ljg3LTQuNzQ0LTEwLjczNy00LjMwNGMtMy4xMDcsMC4yOTgtNy44MzIsMy4yNDktMTQuMTgxLDguODZjLTIuMjA1LDItNC40MSwzLjk5Ni02LjYxNSw1Ljk5M2MtMC40MzctMTAuNDQ3LTUuMjA0LTE1LjgyMi0xNC4zMjktMTYuMDljLTEzLjY2OS0wLjQ0LTIyLjkzMSw3LjI3NS0yNy43NzksMjMuMTU4YzIuNTA0LTEuMDc0LDQuOTM4LTEuNjE4LDcuMzAxLTEuNjE4YzUuMDE2LDAsNy4yMjksMi44MjIsNi42NCw4LjQ1M2MtMC4yOTcsMy40MTEtMi41MTEsOC4zNzUtNi42NCwxNC44OTljLTQuMTM2LDYuNTIzLTcuMjM2LDkuNzg2LTkuMzAxLDkuNzg2Yy0yLjY2LDAtNS4wOTQtNS4wMjMtNy4zMDctMTUuMDgxYy0wLjc0NS0yLjk1MS0yLjA3MS0xMC40OTEtMy45ODctMjIuNjE0Yy0xLjc3My0xMS4yMzYtNi40OTktMTYuNDg1LTE0LjE3NC0xNS43NDdjLTMuMjQ5LDAuMjk4LTguMTIzLDMuMjQ5LTE0LjYxNCw4Ljg2QzkuNjY5LDUzLjMxOCw0Ljg2Nyw1Ny41OTcsMCw2MS44NzVsNC42NDEsNS45OGM0LjQyLTMuMDk0LDcuMDAzLTQuNjQ3LDcuNzQxLTQuNjQ3YzMuMzg1LDAsNi41NSw1LjMxMyw5LjUwMSwxNS45MjljMi42NTMsOS43MzMsNS4zMDcsMTkuNDY4LDcuOTYxLDI5LjIwMmMzLjk3NCwxMC42MjEsOC44NDEsMTUuOTI5LDE0LjU4OCwxNS45MjljOS4yODEsMCwyMC42MjctOC43MTksMzQuMDM4LTI2LjE1NEM4Ny44OTIsODUuOTg3LDkzLjk5LDc1Ljc0LDk2LjgsNjcuMzU0YzMuNzItMi43NDgsNi4wMTgtNC4xNDYsNi44NTMtNC4xNDZjMi42NTMsMCwzLjk4NywxLjkyMiwzLjk4Nyw1Ljc1NGMwLDAuNzM4LTEuNDQzLDYuMi00LjMyNCwxNi4zODFjLTIuODgsMTAuMTgyLTQuMzk1LDE3LjcwOS00LjUzNywyMi41NzVjLTAuMTQ5LDQuNzI2LDAuOTk3LDguNTU3LDMuNDMsMTEuNTA4YzIuNDM0LDIuOTUyLDUuOTQxLDQuNDI4LDEwLjUyNCw0LjQyOGM5Ljg5LDAsMTkuNzc5LTQuMjc4LDI5LjY3NS0xMi44MzVjMC44ODEtMC43NzIsMS43MzgtMS41NTcsMi41NzMtMi4zNTJjMC43ODMsMy4zMTIsMi4xMjQsNi4wNDUsNC4wNyw4LjE1YzQuMjU5LDQuNTY5LDExLjQ1Niw2LjcwNiwyMS41OTIsNi40MDhjLTEuMzUzLTMuMjQ5LTEuODg0LTkuMDAzLTEuNTg2LTE3LjI3NGMwLjQ0LTkuMTUyLDIuODA5LTE3Ljk0MSw3LjA5NC0yNi4zNTVzOC4yNzgtMTIuNjI3LDExLjk4LTEyLjYyN2M0LjI4NSwwLDYuMjg1LDIuNzMxLDUuOTg3LDguMTkzYy0wLjE0OSwzLjY5Ni0wLjg3NCw3LjkwMy0yLjE3NSwxMi42MjhjLTEuMzA3LDQuNzI1LTIuMDMyLDkuNDQ5LTIuMTc0LDE0LjE3NGMtMC4yOTgsNy41MzQsMS4zOTIsMTIuOTE5LDUuMDgxLDE2LjE2OGM0LjExNiwzLjY4OSwxMS4zMzQsNS4zOTIsMjEuNjM4LDUuMDk0Yy0xLjU0MS0zLjM5Mi0yLjE2Mi04LjI2Ni0xLjg2NC0xNC42MjFjMC40NC05LjAwMywzLjQ4Mi0xOC4zMDQsOS4xMTMtMjcuOTAyYzUuMzMzLTkuMTUxLDkuOTIyLTEzLjczMywxMy43NzItMTMuNzMzYzMuNTYsMCw1LjI2MywyLjgwOSw1LjExMyw4LjQxNGMtMC4xNDgsMy42ODgtMS4wNzQsOC44NTQtMi43NzEsMTUuNDk0Yy0xLjY5NSw2LjY0MS0yLjYyMSwxMi4zMTYtMi43NjQsMTcuMDQxYy0wLjI5NywxMC42MjgsNC4zNSwxNS45MzYsMTMuOTU1LDE1LjkzNmM5Ljg4OSwwLDE5Ljc3OS00LjI3OCwyOS42NzUtMTIuODM1YzAuMTY0LTAuMTQ0LDAuMzE2LTAuMjkzLDAuNDc5LTAuNDM4YzAuMzQsMC41ODYsMC42ODgsMS4xNjgsMS4wNjgsMS43MzJjNS4xNjUsNy45NjcsMTMuNzM0LDExLjk1NCwyNS42OTUsMTEuOTU0YzE2LjA5LDAsMzEuOTY2LTQuNDkyLDQ3LjYxNi0xMy40ODhjMS43NTYtMC45OSwzLjQyMi0xLjk3OSw1LjAxNy0yLjk3YzAuOTg2LDEuOTkxLDIuMTM4LDMuODY2LDMuNTAyLDUuNTkxYzYuMDUyLDcuNTIxLDE0LjkxMiwxMS4yODEsMjYuNTc1LDExLjI4MWMxNC4wMjUsMCwyNS43NjctNC45MzgsMzUuMjE2LTE0LjgxNWM5LjQ0OS05Ljg3NiwxNC40NjYtMjEuNTk4LDE1LjA2MS0zNS4xNjNDNDQxLjM4Nyw2NC42ODQsNDM5LjEwMiw1Ni41MDMsNDM0LjA3OSw1MC4xNnogTTMwNS4xMTgsOTAuMDAzYy0wLjA4NC0xLjkwOS0wLjA4NC0yLjg2NywwLTIuODY3YzAuMTQzLTUuNTc5LDIuNTA1LTExLjQxNyw3LjA3NC0xNy41MTRzOS4wNjItOS4xNDYsMTMuNDg4LTkuMTQ2YzMuMzkyLDAsNS4wMSwxLjk4Nyw0Ljg2Nyw1Ljk0OGMtMC4xNDksMi45MzgtMi4zNjIsNi43NjQtNi42MzQsMTEuNDYyQzMxOC42MDYsODMuMzI0LDMxMi4zNDEsODcuMzYyLDMwNS4xMTgsOTAuMDAzeiBNNDE1LjkxOCw3My44NjhjLTAuMjk3LDcuMS0yLjQzNCwxMy45MDItNi40MiwyMC40MTNjLTQuNzI1LDcuODQ1LTEwLjQxNCwxMS43Ni0xNy4wNTUsMTEuNzZjLTIuOTU4LDAtNS4yNDktMS42MjQtNi44NjctNC44OGMtMS40NzYtMi44MDktMi4xNDItNi4wNjQtMS45OTMtOS43NjdjMC4yOTEtNy41NCwyLjUwNS0xNC42NCw2LjY0Ny0yMS4zYzQuODY2LTguMTM2LDExLjA2Ny0xMi4yMDcsMTguNjAxLTEyLjIwN2MyLjM1NiwwLDQuMTY4LDEuNjcsNS40MjQsNC45OTdTNDE2LjA2Nyw2OS44NzUsNDE1LjkxOCw3My44Njh6Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnUganMtdG9wbmF2X21vYmlsZV9tZW51X21haW4iPgogICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9tb2JpbGVfYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBkYXRhLWd0bS1jbGljaz0ibW9iaWxlX25hdl9tZW51X2Nsb3NlX2NsaWNrIiBjbGFzcz0ibWVudV9jbG9zZSBwdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfY2xvc2UiPgogICAgICAgICAgICAgICAgPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTAuNDlweCIKICAgICAgICAgICAgICAgIAkgaGVpZ2h0PSIxMC40OXB4IiB2aWV3Qm94PSIwIDAgMTAuNDkgMTAuNDkiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDEwLjQ5IDEwLjQ5OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iY2xvc2VfMV8iPgogICAgICAgICAgICAgICAgCTxnPgogICAgICAgICAgICAgICAgCQk8ZyBpZD0iR3JvdXBfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYuNTAwMDAwLCA2LjUwMDAwMCkiPgogICAgICAgICAgICAgICAgCQkJPHBhdGggaWQ9IlJlY3RhbmdsZS00XzFfIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgZD0iTTMuNjktNi4yMUwzLjY5LTYuMjFjMC4zOSwwLjM5LDAuMzksMS4wMiwwLDEuNDFsLTguNDksOC40OQogICAgICAgICAgICAgICAgCQkJCWMtMC4zOSwwLjM5LTEuMDIsMC4zOS0xLjQxLDBsMCwwYy0wLjM5LTAuMzktMC4zOS0xLjAyLDAtMS40MWw4LjQ5LTguNDlDMi42Ny02LjYsMy4zLTYuNiwzLjY5LTYuMjF6Ii8+CiAgICAgICAgICAgICAgICAJCQk8cGF0aCBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgZD0iTS02LjIxLTYuMjFMLTYuMjEtNi4yMWMwLjM5LTAuMzksMS4wMi0wLjM5LDEuNDEsMGw4LjQ5LDguNDljMC4zOSwwLjM5LDAuMzksMS4wMiwwLDEuNDFsMCwwCiAgICAgICAgICAgICAgICAJCQkJYy0wLjM5LDAuMzktMS4wMiwwLjM5LTEuNDEsMGwtOC40OS04LjQ5Qy02LjYtNS4xOC02LjYtNS44Mi02LjIxLTYuMjF6Ii8+CiAgICAgICAgICAgICAgICAJCTwvZz4KICAgICAgICAgICAgICAgIAk8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgPC9idXR0b24+CgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBkYXRhLWFjdGlvbj0ibWVudS5zZXR0aW5ncy5vcGVuIgogICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9Im1vYmlsZV9uYXZfc2V0dGluZ3NfY2xpY2siCiAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzZXR0aW5ncyIKICAgICAgICAgICAgICAgIGNsYXNzPSJtZW51X3NldHRpbmdzIHB1bGxfcmlnaHQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluZ3MiCiAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE4Ljg2cHgiCiAgICAgICAgICAgICAgICAJIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDE4Ljg2IDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOC44NiAyMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgPGcgaWQ9ImdlYXJfMV8iPgogICAgICAgICAgICAgICAgCTxnPgogICAgICAgICAgICAgICAgCQk8ZyBpZD0iSWNvbl8xXyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS4wMDAwMDAsIDUuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAJCQk8ZyBpZD0iR3JvdXAtMTBfMV8iPgogICAgICAgICAgICAgICAgCQkJPC9nPgogICAgICAgICAgICAgICAgCQk8L2c+CiAgICAgICAgICAgICAgICAJCTxwYXRoIGlkPSJDb21iaW5lZC1TaGFwZV8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0xMiw0LjU4bC0wLjU3LTAuMjdWMS45OWMwLTAuNTQtMC40NS0wLjk5LTEtMC45OWgtMmMtMC41NSwwLTEsMC40NS0xLDAuOTl2Mi4zMQogICAgICAgICAgICAgICAgCQkJTDYuODYsNC41OGMtMC4yOSwwLjE0LTAuNTcsMC4zLTAuODQsMC40OEw1LjUsNS40MkwzLjQ5LDQuMjZDMy4wMiwzLjk5LDIuNDEsNC4xNiwyLjE0LDQuNjNsLTEsMS43NAogICAgICAgICAgICAgICAgCQkJQzAuODYsNi44NCwxLjAyLDcuNDYsMS40OSw3LjczTDMuNSw4Ljg5TDMuNDUsOS41MkMzLjQ0LDkuNjgsMy40Myw5Ljg0LDMuNDMsMTBzMC4wMSwwLjMyLDAuMDIsMC40OGwwLjA1LDAuNjNsLTIuMDEsMS4xNgogICAgICAgICAgICAgICAgCQkJYy0wLjQ3LDAuMjctMC42MywwLjg4LTAuMzYsMS4zNmwxLDEuNzRjMC4yNywwLjQ4LDAuODksMC42NCwxLjM2LDAuMzdsMi4wMS0xLjE2bDAuNTIsMC4zNmMwLjI3LDAuMTgsMC41NSwwLjM1LDAuODQsMC40OAogICAgICAgICAgICAgICAgCQkJbDAuNTcsMC4yN3YyLjMxYzAsMC41NCwwLjQ1LDAuOTksMSwwLjk5aDJjMC41NSwwLDEtMC40NSwxLTAuOTl2LTIuMzFMMTIsMTUuNDJjMC4yOS0wLjE0LDAuNTctMC4zLDAuODQtMC40OGwwLjUyLTAuMzYKICAgICAgICAgICAgICAgIAkJCWwyLjAxLDEuMTZjMC40NywwLjI3LDEuMDgsMC4xMSwxLjM2LTAuMzdsMS0xLjc0YzAuMjctMC40OCwwLjExLTEuMDktMC4zNi0xLjM2bC0yLjAxLTEuMTZsMC4wNS0wLjYzCiAgICAgICAgICAgICAgICAJCQljMC4wMS0wLjE2LDAuMDItMC4zMiwwLjAyLTAuNDhzLTAuMDEtMC4zMi0wLjAyLTAuNDhsLTAuMDUtMC42M2wyLjAxLTEuMTZjMC40Ny0wLjI3LDAuNjMtMC44OCwwLjM2LTEuMzZsLTEtMS43NAogICAgICAgICAgICAgICAgCQkJYy0wLjI3LTAuNDgtMC44OS0wLjY0LTEuMzYtMC4zN2wtMi4wMSwxLjE2bC0wLjUyLTAuMzZDMTIuNTcsNC44OCwxMi4yOSw0LjcyLDEyLDQuNTh6Ii8+CiAgICAgICAgICAgICAgICAJCTxjaXJjbGUgaWQ9Ik92YWxfMV8iIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjI7IiBjeD0iOS40MyIgY3k9IjEwIiByPSIyIi8+CiAgICAgICAgICAgICAgICAJPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIDx1bCBpZD0ibWVudV9saXN0IiBjbGFzcz0ibWVudV9saXN0X2xvZ2dlZF9vdXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6am9pbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfam9pbl9jbGljayIgaWQ9ImpzLWpvaW4tbGluayIgaHJlZj0iLy92aW1lby5jb20vam9pbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fam9pbiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE2cHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9IjAgMCAxNiAyMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTYgMjA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iam9pbi1sb2ctaW5fMV8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtOF8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGN4PSI4IiBjeT0iNSIgcj0iNCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IlJlY3RhbmdsZS0yNV8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0xLDE5aDE0di0zYzAtMi4yMS0xLjc5LTQtNC00SDVjLTIuMjEsMC00LDEuNzktNCw0VjE5eiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpvaW4gb3IgbG9nIGluICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSAgaWQ9ImpzLWZlYXR1cmVzLWxpbmsiIGNsYXNzPSJmZWF0dXJlcy1sYWJlbCIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl9ob3N0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDIwIDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAyMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJmZWF0dXJlc18xXyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwLTJfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGUtOF8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0xLTFoMTBjMS4xLDAsMiwwLjksMiwydjEwYzAsMS4xLTAuOSwyLTIsMkgxYy0xLjEsMC0yLTAuOS0yLTJWMUMtMS0wLjEtMC4xLTEsMS0xeiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoLTVfMV8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRkZGRkY7IiBkPSJNMy42LDMuNTFjMC0wLjU1LDAuMzktMC43NywwLjg2LTAuNWw0LjI4LDIuNWMwLjQ3LDAuMjgsMC40OCwwLjczLDAsMS4wMUw0LjQ2LDkuMDgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQzMuOTgsOS4zNiwzLjYsOS4xNSwzLjYsOC41OUwzLjYsMy41MXoiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXBfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAzLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0iUGFnZS0xXzFfIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgZD0iTTExLDE1YzIuMjEsMCw0LTEuNzksNC00VjBjMC0xLjExLTAuOS0yLTItMnYxM2MwLDEuMS0wLjksMi0yLDJILTJjMCwxLjEsMC44OSwyLDIsMkgxMXoiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZWF0dXJlcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6dmlkZW9fcGxheWVyIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9mZWF0dXJlc192aWRlb19wbGF5ZXIiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLXBsYXllciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvIHBsYXllciAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6bGl2ZV9zdHJlYW1pbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2ZlYXR1cmVzX2xpdmVfc3RyZWFtaW5nIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy9saXZlc3RyZWFtaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl91cGxvYWQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjAgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGl2ZSBzdHJlYW1pbmcgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzdG9jayIgIiBocmVmPSIvL3ZpbWVvLmNvbS9zdG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b2NrIHZpZGVvcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6cHJpdmFjeSIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfZmVhdHVyZXNfcHJpdmFjeSIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tcHJpdmFjeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcml2YWN5ICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpkaXN0cmlidXRpb24iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2ZlYXR1cmVzX2Rpc3RyaWJ1dGlvbiIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tbWFya2V0aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl91cGxvYWQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjAgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzdHJpYnV0aW9uICYgTWFya2V0aW5nICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpob3N0aW5nIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9mZWF0dXJlc19ob3N0aW5nIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy9vbmxpbmUtdmlkZW8taG9zdGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvc3RpbmcgJiBNYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aW5zcGlyYXRpb258a2V5d29yZDp3YXRjaCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfaW5zcGlyYXRpb25fd2F0Y2giIGlkPSJqcy1pbnNwaXJhdGlvbi1saW5rIiAgaHJlZj0iLy92aW1lby5jb20vd2F0Y2giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3dhdGNoIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTRweCIgdmlld0JveD0iMCAwIDIwIDE0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJpbnNwaXJhdGlvbl8xXyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwXzFfIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzLjAwMDAwMCwgNi4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0iT3ZhbF8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjtzdHJva2UtbGluZWpvaW46cm91bmQ7IiBkPSJNNyw3YzMuMzEsMCw2LjMxLTIsOS02Yy0yLjY5LTQtNS42OS02LTktNlMwLjY5LTMtMiwxQzAuNjksNSwzLjY5LDcsNyw3eiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMl8xXyIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjsiIGN4PSI3IiBjeT0iMSIgcj0iMyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BpcmF0aW9uICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxrZXl3b3JkOnVwbG9hZCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfdXBsb2FkX2NsaWNrIiBpZD0ianMtdXBsb2FkLWxpbmsiIGhyZWY9Ii8vdmltZW8uY29tL3VwbG9hZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJ1cGxvYWRfMV8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxLjAwMDAwMCwgMS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJDb21iaW5lZC1TaGFwZV8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0wLDEwYzAsMi4xNywxLjk2LDQsNCw0aDEwYzIuMDQsMCw0LTEuNzYsNC0zLjk0YzAtMS43OS0wLjgtMy4yOC0xLjk5LTQuMDcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDMTYuMDEsMS43OSwxMy40OSwwLDExLDBDOS4wOCwwLDcuMjQsMS4xOSw2LjU5LDNDMy44MiwzLjAxLDIuNTcsNC43MSwyLjA3LDYuNTJDMS4wOCw3LjAyLDAsOC4yNiwwLDEweiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZV8xXyIgeD0iOCIgeT0iOCIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjsiIHdpZHRoPSIyIiBoZWlnaHQ9IjYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBpZD0iUGF0aC0xM18xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIHBvaW50cz0iNiwxMCA5LDcgMTIsMTAgICAgICAgIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6dXBncmFkZSIgZGF0YS1ndG0tY2xpY2s9Im1vYmlsZV9uYXZfdXBncmFkZV9jbGljayIgaWQ9ICJqcy11cGdyYWRlLWxpbmsiIGNsYXNzPSIiIGhyZWY9Ii8vdmltZW8uY29tL3VwZ3JhZGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3VwZ3JhZGUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIiB3aWR0aD0iMzJweCIgaGVpZ2h0PSIzMnB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNCw3SDE1VjloNi41OEw3LjI5LDIzLjI5bDEuNDEsMS40MUwyMywxMC40MVYxN2gyVjhBMSwxLDAsMCwwLDI0LDdaIiBmaWxsPSIjZmZmZmZmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGdyYWRlICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICA8L2Rpdj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InRvcG5hdl9tb2JpbGVfbWVudSB0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3MganMtdG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2JhciBzdWJtZW51Ij4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluc19jbG9zZSB0b3BuYXZfaWNvbl9tb2JpbGVfYXJyb3dsZWZ0X2IiPiA8L2J1dHRvbj4KICAgICAgICAgICAgPGgxIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2hlYWRlcl90aXRsZSBzdWJtZW51Ij5Nb3JlIHN0dWZmPC9oMT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPHVsIGNsYXNzPSJtZW51X2xpc3Rfc2V0dGluZ3NfbG9nZ2VkX291dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS90ZXJtcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXJtcyBvZiBTZXJ2aWNlICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9wcml2YWN5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaXZhY3kgUG9saWN5ICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9kbWNhIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vY29va2llX3BvbGljeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb29raWVzICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249ImRlc2t0b3AiIG9uY2xpY2s9InZpbWVvLm1vYmlsZS5kZXNrdG9wX3NoYXJlZC5fczJkcygpOyByZXR1cm4gZmFsc2UiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNrdG9wIHNpdGUgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBsYW5ndWFnZSBocmVmPSIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBvbmNoYW5nZT0idmltZW8ubW9iaWxlLmRlc2t0b3Bfc2hhcmVkLl9zMmwodGhpcykiIHRpdGxlPSJDaG9vc2UgYSBkaWZmZXJlbnQgbGFuZ3VhZ2UiIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3NfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBjbGFzcz0ic2VsZWN0ZWQiIHNlbGVjdGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9ImVuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmdsaXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXNwYcOxb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9ImRlLURFIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJmci1GUiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnYWlzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJqYS1KUCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5pel5pys6KqeICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJwdC1CUiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9ydHVndcOqcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT0ia28tS1IiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIO2VnOq1reyWtCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29tL2ZhcSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQVEgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29taGVscC52aW1lby5jb20vaGMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVscCAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgoKICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfY29weXJpZ2h0Ij5UTSArIMKpIDIwMjAgVmltZW8sIEluYy48L2Rpdj4KICAgIDwvc2VjdGlvbj4KCgogICAgICAgIDwvbmF2PgoKPHNjcmlwdD4KKGZ1bmN0aW9uKHdpbmRvdywgZG9jdW1lbnQpewoKICAgIC8vIEdsb2JhbCB2YWx1ZXMKICAgIHdpbmRvdy52aW1lbyA9IHdpbmRvdy52aW1lbyB8fCB7fTsKICAgIHZpbWVvLm1vYmlsZSA9IHZpbWVvLm1vYmlsZSB8fCB7fTsKICAgIFZpbWVvID0gdmltZW8ubW9iaWxlIHx8IHt9OwogICAgVmltZW8uZGVza3RvcF9zaGFyZWQgPSBWaW1lby5kZXNrdG9wX3NoYXJlZCB8fCB7fTsKCiAgICAvLyBERVNLVE9QIEhBTkRMRVJTCgogICAgdmFyIGRlc2t0b3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9wbmF2X2Rlc2t0b3AnKTsKCiAgICAvLyBQcmV2ZW50IHRvdWNoIGRldmljZSB0byBoaWd0bGlnaHQgdGhlIGFyZWEgdGFwcGVkCiAgICBkZXNrdG9wLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBmdW5jdGlvbihlKXsKICAgICAgICAvLyBUYWtlIGludG8gY29uc2lkZXJhdGlvbiBhdmF0YXIgaW1nCiAgICAgICAgdmFyIHRhcmdldCA9IChlLnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbWcnKSA/IGUudGFyZ2V0LnBhcmVudE5vZGUgOiBlLnRhcmdldDsKCiAgICAgICAgaWYgKHRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3RvcG5hdl9oYXNfZHJvcGRvd24nKSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgfQogICAgfSwgZmFsc2UpOwoKICAgIC8vIEFkZCBsYXN0X3BhZ2UgY29va2llCiAgICB2YXIgbGlzdGVuID0gJ29udG91Y2hzdGFydCcgaW4gd2luZG93ID8gJ3RvdWNoc3RhcnQnIDogd2luZG93LlBvaW50ZXJFdmVudCA/ICdwb2ludGVyZG93bicgOiB3aW5kb3cuTVNQb2ludGVyRXZlbnQgPyAnTVNQb2ludGVyRG93bicgOiAnY2xpY2snOwogICAgZGVza3RvcC5hZGRFdmVudExpc3RlbmVyKGxpc3RlbiwgZnVuY3Rpb24oZSl7CiAgICAgICAgaWYgKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnanMtdG9wbmF2X21lbnVfYXV0aCcpKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9ICdsYXN0X3BhZ2U9JyArIGVuY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpICsgJztwYXRoPVwnL1wnO21heC1hZ2U9MTgwMDsnOwogICAgICAgIH0KICAgIH0sIGZhbHNlKTsKCiAgICAvLyBNT0JJTEUgSEFORExFUlMKCiAgICAvLyBUcmlnZ2VyIGlPUyBVcGxvYWQgZmxvdwogICAgVmltZW8uZGVza3RvcF9zaGFyZWQuX3VwbG9hZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAvLyBzaG93IGlUdW5lcyBvbmx5IGlmIHdlIGFyZSBpbiBpT1Mgd29ybGQKICAgICAgICBpZiAoL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpewogICAgICAgICAgICB2YXIgZGVlcGxpbmsgPSAndmltZW86Ly9hcHAudmltZW8uY29tL3VwbG9hZD9yZWY9bW9iaWxld2ViJywKICAgICAgICAgICAgICAgIGZhbGxiYWNrID0gJy91cGxvYWQnLAogICAgICAgICAgICAgICAgd2Via2l0SGlkZGVuQ2FsbGJhY2ssCiAgICAgICAgICAgICAgICBoaXRDYWxsYmFjazsKCiAgICAgICAgICAgIC8vIENhbGxiYWNrcwogICAgICAgICAgICB3ZWJraXRIaWRkZW5DYWxsYmFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgLy8gSWYgdGhlIHVzZXIgaXMgc3RpbGwgaGVyZSBvcGVuIHRoZSB1cmwgcGFnZS4KICAgICAgICAgICAgICAgIGlmICghZG9jdW1lbnQud2Via2l0SGlkZGVuKSB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gZmFsbGJhY2s7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CgogICAgICAgICAgICAvLyBUcnkgdG8gb3BlbiB0aGUgVmltZW8gQXBwCiAgICAgICAgICAgIGhpdENhbGxiYWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBkZWVwbGluazsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQod2Via2l0SGlkZGVuQ2FsbGJhY2ssIDI1KTsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGhpdENhbGxiYWNrKCk7CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBlLmhyZWY7CgogICAgfQoKCi8vIEFGVEVSIE1PQklMRSBOQVYgVEVTVCBSRUNPTkNJTEUgV0lUSCBUSEUgYG1vYmlsZV9tZW51X3NjcmlwdC5waHRtbGAKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8gU3dpdGNoIHRvIGRlc2t0b3Agc2l0ZQogICAgVmltZW8uZGVza3RvcF9zaGFyZWQuX3MyZHMgPSBmdW5jdGlvbigpIHsKICAgICAgICBkb2N1bWVudC5jb29raWU9J29wdF9vdXRfbW9iaWxlPTE7ZXhwaXJlcz1GcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVDtkb21haW49JyArIHZpbWVvLmRvbWFpbjsKICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICB9OwoKICAgIC8vIFN3aXRjaCB0byBsYW5ndWFnZQogICAgVmltZW8uZGVza3RvcF9zaGFyZWQuX3MybCA9IGZ1bmN0aW9uKHNlbCkgewogICAgICAgIHZhciBsYW5nID0gc2VsLnZhbHVlLAogICAgICAgICAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCAnL3NldHRpbmdzL2xvY2FsZScpOwogICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdYLVJlcXVlc3RlZC1XaXRoJywgJ1hNTEh0dHBSZXF1ZXN0Jyk7CiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTsKICAgICAgICB4aHIuc2VuZCgnbG9jYWxlPScgKyBsYW5nICsgJyZ0b2tlbj0nICsgdmltZW8ueHNyZnQpOwogICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiBwb3N0KCkgewogICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfTsKCiAgICB2YXIgbW9iaWxlTWVudUVsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9sb2dvJyk7CiAgICBpZiAobW9iaWxlTWVudUVsZSkgewogICAgICAgIG1vYmlsZU1lbnVFbGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CgogICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIC8vIE9wZW4gTWVudQogICAgICAgICAgICB2YXIgbW9iaWxlX21lbnVfbWFpbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX21lbnVfbWFpbicpOwogICAgICAgICAgICBtb2JpbGVfbWVudV9tYWluLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwoKICAgICAgICAgICAgLy8gQ2xvc2UgTWVudQogICAgICAgICAgICB2YXIgbW9iaWxlX2hlYWRlcl9jbG9zZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9jbG9zZScpOwogICAgICAgICAgICBtb2JpbGVfaGVhZGVyX2Nsb3NlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X21haW4uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBUb2dnbGUgU2V0dGluZ3MKICAgICAgICAgICAgdmFyIG1vYmlsZV9tZW51X3NldHRpbmdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfbWVudV9zZXR0aW5ncycpOwogICAgICAgICAgICB2YXIgdG9wbmF2MjAxNV9tb2JpbGVfaGVhZGVyX3NldHRpbmdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbmdzJyk7CiAgICAgICAgICAgIHRvcG5hdjIwMTVfbW9iaWxlX2hlYWRlcl9zZXR0aW5ncy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBtb2JpbGVfbWVudV9zZXR0aW5ncy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X21haW4uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgIHZhciB0b3BuYXYyMDE1X21vYmlsZV9oZWFkZXJfc2V0dGluZ3NfY2xvc2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluc19jbG9zZScpOwogICAgICAgICAgICAgICAgdG9wbmF2MjAxNV9tb2JpbGVfaGVhZGVyX3NldHRpbmdzX2Nsb3NlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X3NldHRpbmdzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgbW9iaWxlX21lbnVfbWFpbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKCiAgICAgICAgfSwgZmFsc2UpOwogICAgfTsKCiAgICB2YXIgbW9iaWxlQWxidW1zRWxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2FsYnVtcycpOwogICAgaWYgKG1vYmlsZUFsYnVtc0VsZSkgewogICAgICAgIG1vYmlsZUFsYnVtc0VsZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB2YXIgbW9iaWxlX21lbnVfYWxidW1zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfYWxidW1fbGlzdCcpOwogICAgICAgICAgICBtb2JpbGVfbWVudV9hbGJ1bXMuY2xhc3NMaXN0LmFkZCgnb3BlbicpOwoKICAgICAgICAgICAgLy8gQ2xvc2UKICAgICAgICAgICAgdmFyIG1vYmlsZV9hbGJ1bXNfY2xvc2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9hbGJ1bV9saXN0X2Nsb3NlJyk7CiAgICAgICAgICAgIGlmIChtb2JpbGVfYWxidW1zX2Nsb3NlKSB7CiAgICAgICAgICAgICAgICBtb2JpbGVfYWxidW1zX2Nsb3NlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X2FsYnVtcy5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0sIGZhbHNlKTsKICAgIH07CgoKCi8vIF5eXl5eXl5eXl5eXl5eXl5eXl5eCi8vIEFGVEVSIE1PQklMRSBOQVYgVEVTVCBSRUNPTkNJTEUgV0lUSCBUSEUgYG1vYmlsZV9tZW51X3NjcmlwdC5waHRtbGAKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgIC8vIFVTRVIgTUVTU0FHRQoKICAgIC8vIFNob3cgbm90aWZpY2F0aW9uIGlmIGl0IGlzIHRoZSBjYXNlCiAgICAvLyBXZSB3cmFwIHRoaXMgaW4gYSBzZXRUaW1lb3V0IHNpbmNlIHRoZSBub3RpZmljYXRpb25zIHNob3VsZAogICAgLy8gaGF2ZSBhIGxvd2VyIHByaW9yaXR5IGluIHRlcm1zIG9mIHZpc3VhbCBjb21wYXJlZCB0byBvdGhlcgogICAgLy8gaXRlbXMgb24gdGhlIHBhZ2UuCiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgIC8vIERPTSBFbGVtZW50cwogICAgICAgIHZhciBhdmF0YXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9wbmF2X21lbnVfYXZhdGFyJyk7CiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYXZhdGFyIHRoZW4gc3RvcCBpdAogICAgICAgIGlmICghYXZhdGFyKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBidWJibGUgPSBhdmF0YXIucXVlcnlTZWxlY3RvcignLnRvcG5hdl9tZW51X2F2YXRhcl9idWJibGUnKTsKICAgICAgICB2YXIgZHJvcGRvd24gPSBhdmF0YXIucXVlcnlTZWxlY3RvcignI3RvcG5hdl91c2VyX2Ryb3Bkb3duJyk7CiAgICAgICAgLy92YXIgbWVzc2FnZSA9IGF2YXRhci5xdWVyeVNlbGVjdG9yKCcudG9wbmF2X3VzZXJfbWVudV9tZXNzYWdlJyk7CiAgICAgICAgLy92YXIgY2xvc2UgPSBhdmF0YXIucXVlcnlTZWxlY3RvcignLnRvcG5hdl91c2VyX21lbnVfbWVzc2FnZV9jbG9zZScpOwogICAgICAgIHZhciBvbl9ob3ZlciA9IGZhbHNlOwoKICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBidWJibGUgdGhlbiBzdG9wIGl0CiAgICAgICAgaWYgKGJ1YmJsZSkgewogICAgICAgICAgICBidWJibGUuY2xhc3NMaXN0LmFkZCgnb24nKTsKICAgICAgICB9CgogICAgICAgIC8vIEFuZCB3ZSBhdHRhY2ggaGlkZSB0aGUgYnViYmxlCiAgICAgICAgYXZhdGFyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAob25faG92ZXIpIHJldHVybjsKCiAgICAgICAgICAgIG9uX2hvdmVyID0gdHJ1ZTsKCiAgICAgICAgICAgIGlmIChidWJibGUpIHsKICAgICAgICAgICAgICAgIGJ1YmJsZS5jbGFzc0xpc3QucmVtb3ZlKCdvbicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTYXZlIHJlbW92ZWQgc3RhdGUgWzEgbWVhbnMgdGhlIHVzZXIgb3BlbiB0aGUgZHJvcGRvd25dCiAgICAgICAgICAgIHN0b3JlX3VzZXJfbWVzc2FnZV9zZXR0aW5ncygxKTsKCiAgICAgICAgfSwgZmFsc2UpOwoKICAgICAgICAvLyBTdG9yZSBzdGF0dXMgb2YgdXNlciBuYXYgbWVzc2FnZSAoYnViYmxlIGNsb3NlZCBbMV0sIG1lc3NhZ2UgaGlkZGVuIFsyXSkKICAgICAgICBmdW5jdGlvbiBzdG9yZV91c2VyX21lc3NhZ2Vfc2V0dGluZ3ModmFsdWUpIHsKICAgICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwoKICAgICAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCAnL3NldHRpbmdzL25hdicpOwogICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignWC1SZXF1ZXN0ZWQtV2l0aCcsICdYTUxIdHRwUmVxdWVzdCcpOwogICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpOwogICAgICAgICAgICB4aHIuc2VuZCgnbWVzc2FnZV9zdGF0ZT0nICsgdmFsdWUgKyAnJnRva2VuPScgKyB2aW1lby54c3JmdCk7CgogICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGhhbmRsZS4gV2UgaG9wZSBmb3IgdGhlIGJlc3QgaW4gdGhpcyBjYXNlCiAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7fTsKICAgICAgICB9OwoKICAgIH0sIDEwMDApOwp9KSh3aW5kb3csIGRvY3VtZW50KTsKPC9zY3JpcHQ+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0id3JhcF9jb250ZW50IHZhcmlhbnQtdjIiPgogICAgICAgICAgICAgICAgCgoKCjxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9jb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0iZXhjZXB0aW9uX3NlY3Rpb24gZXhjZXB0aW9uX3NlY3Rpb24tLWluZm8iPgogICAgICAgIDxoMSBjbGFzcz0iZXhjZXB0aW9uX3RpdGxlIGlyaXNfaGVhZGVyIj5Tb3JyeSwgd2UgY291bGRu4oCZdCBmaW5kIHRoYXQgcGFnZTwvaDE+CgogICAgICAgIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9jb250ZW50Ij4KICAgICAgICAgICAgPHAgY2xhc3M9ImV4Y2VwdGlvbl9tZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbCI+CiAgICAgPGRpdiBjbGFzcz0iaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbC1pY29uIj4KICAgICAgICAgPHNwYW4gY2xhc3M9ImlyaXNfaWMgaXMtLTE2Ij48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBkPSJNOCAxNmM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHpNNyA0aDJ2Mkg3VjR6bTAgM2gydjVIN1Y3eiIvPjwvc3ZnPjwvc3Bhbj4KICAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJpcmlzX25vdGlmaWNhdGlvbi1oZWFkZXIiPgogICAgICAgIDxzdHJvbmc+UmVhc29ucyB5b3UgbWlnaHQgYmUgc2VlaW5nIHRoaXMgcGFnZTwvc3Ryb25nPgogICAgPC9kaXY+CgogICAgPHVsIGNsYXNzPSJpcmlzX25vdGlmaWNhdGlvbi1saXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+SXQgZXhpc3RzLCBidXQgeW91IGRvbuKAmXQgaGF2ZSBwZXJtaXNzaW9uIHRvIHNlZSBpdCwgb3IgeW91IG5lZWQgdG8gPGEgb25jbGljaz0idmltZW8uU2Vzc2lvbi5jcmVhdGUoKSI+bG9nIGluPC9hPi48L2xpPgogICAgICAgICAgICAgICAgPGxpPk5vdGhpbmcgaGFzIGV2ZXIgZXhpc3RlZCBoZXJlLiBTcG9va3kuPC9saT4KICAgICAgICA8bGk+U29tZXRoaW5nIG9uY2UgbGl2ZWQgaGVyZSwgYnV0IGhhcyBiZWVuIGRlbGV0ZWQuPC9saT4KICAgIDwvdWw+CjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJleGNlcHRpb25fc2VhcmNoIiBhY3Rpb249Ii9zZWFyY2giIG1ldGhvZD0iZ2V0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJleGNlcHRpb25fc2VhcmNoLWlucHV0LXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtaW5wdXQgaXJpc19pbnB1dCBpcmlzX2lucHV0LS1zZWFyY2gganMtc2VhcmNoX2F1dG9jb21wbGV0ZSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtYnV0dG9uIGlyaXNfYnRuIGlyaXNfYnRuLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImlyaXNfYnRuLWNvbnRlbnQiPlNlYXJjaDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9hdXhpbGlhcnkiPjwvZGl2Pgo8L2Rpdj4KCiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjxmb290ZXIgY2xhc3M9ImZvb3Rlcl92MiBmb290ZXJfdjItLXJlc3BvbnNpdmUiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX3NpdGVtYXAiPgogICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19saW5rcyI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogICAgICAgICAgICA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+VklNRU88L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3VwZ3JhZGUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19wcmljaW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnZpbWVvfGtleXdvcmQ6cHJpY2luZyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFByaWNpbmcgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvdXBsb2FkIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBsb2FkX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnZpbWVvfGtleXdvcmQ6dXBsb2FkIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2NoYW5uZWxzL3N0YWZmcGlja3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zdGFmZl9waWNrcyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp2aW1lb3xrZXl3b3JkOnN0YWZmX3BpY2tzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU3RhZmYgUGlja3MgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvb25kZW1hbmQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19vbl9kZW1hbmRfY2xpY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dmltZW98a2V5d29yZDpvbl9kZW1hbmQiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBPbiBEZW1hbmQgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3ZpbWVvLmNvbS9vdHQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua192aW1lb19vdHQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dmltZW98a2V5d29yZDpvdHQiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBPVFQgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvc2l0ZV9tYXAiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zaXRlX21hcF9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp2aW1lb3xrZXl3b3JkOnNpdGVfbWFwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU2l0ZSBtYXAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5TT0xVVElPTlM8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2ZlYXR1cmVzL3ZpZGVvLXBsYXllciIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpZGVvX3BsYXllciIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOnZpZGVvX3BsYXllciIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvIFBsYXllciAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9jcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19jcmVhdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpjcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZmVhdHVyZXMvdmlkZW8tcHJpdmFjeSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ByaXZhY3kiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpwcml2YWN5IgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgUHJpdmFjeSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1jb2xsYWJvcmF0aW9uIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfY29sbGFib3JhdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmNvbGxhYm9yYXRpb24iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBDb2xsYWJvcmF0aW9uICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2ZlYXR1cmVzL3ZpZGVvLW1hcmtldGluZyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2Rpc3RyaWJ1dGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmRpc3RyaWJ1dGlvbiIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIERpc3RyaWJ1dGlvbiAmIG1hcmtldGluZyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1tb25ldGl6YXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19tb25ldGl6YXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDptb25ldGl6YXRpb24iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBNb25ldGl6YXRpb24gICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvbGl2ZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2xpdmVfc3RyZWFtaW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6bGl2ZV9zdHJlYW1pbmciCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBMaXZlIHN0cmVhbWluZyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1hbmFseXRpY3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19hbmFseXRpY3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDphbmFseXRpY3MiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBBbmFseXRpY3MgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZmVhdHVyZXMvb25saW5lLXZpZGVvLWhvc3RpbmciCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19ob3N0aW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6aG9zdGluZyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEhvc3RpbmcgJiBtYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2VudGVycHJpc2UiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19lbnRlcnByaXNlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmVudGVycHJpc2UiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBFbnRlcnByaXNlICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Zvci1oaXJlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZm9yX2hpcmUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Zm9yX2hpcmUiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBGb3IgSGlyZSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9zdG9jayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3N0b2NrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOnN0b2NrIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU3RvY2sgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5BUFBTPC9zcGFuPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fcmV2ZWFsIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9oND4KICAgICAgICAgICAgPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9hcHBzLmFwcGxlLmNvbS9hcHAvYXBwbGUtc3RvcmUvaWQxMzU2Njg2NzYzP3B0PTQxNzczMSZhbXA7Y3Q9bG9ocCZhbXA7bXQ9OCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOm1hY29zIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBmb3IgbWFjT1MgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9pdHVuZXMuYXBwbGUuY29tL2FwcC92aW1lby9pZDQyNTE5NDc1OT9tdD04IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6aW9zIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBmb3IgaU9TICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vcGxheS5nb29nbGUuY29tL3N0b3JlL2FwcHMvZGV0YWlscz9pZD1jb20udmltZW8uYW5kcm9pZC52aWRlb2FwcCZhbXA7cmVmZXJyZXI9dXRtX3NvdXJjZSUzRGZvb3RlciUyNnV0bV9tZWRpdW0lM0Rsb2hwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6YW5kcm9pZCIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gZm9yIEFuZHJvaWQgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9hcHBzLmFwcGxlLmNvbS91cy9hcHAvdmltZW8tY3JlYXRlL2lkMTQ5MTc5MTUxMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOmNyZWF0ZV9pb3MiCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIENyZWF0ZSBmb3IgaU9TICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vcGxheS5nb29nbGUuY29tL3N0b3JlL2FwcHMvZGV0YWlscz9pZD1jb20udmltZW9jcmVhdGUudmlkZW9lZGl0b3IubW92aWVtYWtlciZhbXA7cmVmZXJyZXI9dXRtX3NvdXJjZSUzRGZvb3RlciUyNnV0bV9tZWRpdW0lM0Rsb2hwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6Y3JlYXRlX2FuZHJvaWQiCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIENyZWF0ZSBmb3IgQW5kcm9pZCAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL21hZ2lzdG8uY29tIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6bWFnaXN0byIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFnaXN0byAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlJFU09VUkNFUzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvaDQ+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWxpc3QgZm9vdGVyX3YyX2FjY29yZGlvbl9fbWVudSI+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2hlbHAiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19oZWxwX2NlbnRlcl9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDpoZWxwX2NlbnRlciIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEhlbHAgQ2VudGVyICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Jsb2ciCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua192aW1lb19ibG9nX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOnZpbWVvX2Jsb2ciCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBCbG9nICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Jsb2cvY2F0ZWdvcnkvdmlkZW8tc2Nob29sIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmlkZW9fc2Nob29sX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOnZpZGVvX3NjaG9vbCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvIFNjaG9vbCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vdmltZW8uY29tL290dC9yZXNvdXJjZXMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19vdHRfcmVzb3VyY2VzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOm90dF9yZXNvdXJjZXMiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBPVFQgUmVzb3VyY2VzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIudmltZW8uY29tIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZGV2ZWxvcGVyc19jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDpkZXZlbG9wZXJzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVycyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9zdHVkZW50cyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3N0dWRlbnRzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOnN0dWRlbnRzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU3R1ZGVudHMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvaGVscC9ndWlkZWxpbmVzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmltZW9fZ3VpZGVsaW5lc19jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDp2aW1lb19ndWlkZWxpbmVzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgR3VpZGVsaW5lcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlVQR1JBREU8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL3BsdXMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua191cGdyYWRlX3BsdXMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cGx1cyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIFBsdXMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvc3RvcmUvcHJvIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9wcm8iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cHJvIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gUFJPICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL2J1c2luZXNzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9idXNpbmVzcyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp1cGdyYWRlX2xpbmt8a2V5d29yZDpidXNpbmVzcyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIEJ1c2luZXNzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL3ByZW1pdW0iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua191cGdyYWRlX3ByZW1pdW0iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cHJlbWl1bSIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIFByZW1pdW0gICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZW50ZXJwcmlzZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3VwZ3JhZGVfZW50ZXJwcmlzZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp1cGdyYWRlX2xpbmt8a2V5d29yZDplbnRlcnByaXNlIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gRW50ZXJwcmlzZSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHA6Ly92aW1lby5leHRvbGUuY29tL3dlYnNpdGVfZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9yZWZfZnJpZW5kIgogICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9Il9ibGFuayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp1cGdyYWRlX2xpbmt8a2V5d29yZDpyZWZlcl9hX2ZyaWVuZCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyIGEgZnJpZW5kICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogICAgICAgICAgICA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+Q09NUEFOWTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvaDQ+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWxpc3QgZm9vdGVyX3YyX2FjY29yZGlvbl9fbWVudSI+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvYWJvdXQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19hYm91dF9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpjb21wYW55fGtleXdvcmQ6YWJvdXRfdmltZW8iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBBYm91dCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9qb2JzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfam9icyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpjb21wYW55fGtleXdvcmQ6am9icyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEpvYnMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGFzaWRlIGlkPSJmb290ZXJfdGlwIiBjbGFzcz0iZm9vdGVyX3YyX190aXAiIGFyaWEtbGl2ZT0icG9saXRlIj4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX3RpcC1oZWFkZXIiPkRpZCB5b3Uga25vdz88L2g0PgogICAgICAgICAgICA8cCBjbGFzcz0iYWN0aXZlIGZvb3Rlcl92Ml9fdGlwLWNvbnRlbnQiPktlZXAgdXAgb24gdGhlIGxhdGVzdCB2aWRlb3MgYW5kIGFjdGl2aXR5IGJ5IHN1YnNjcmliaW5nIHRvIFZpbWVv4oCZcyA8YSBocmVmPSIvc2V0dGluZ3MvYWR2YW5jZWQiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmRpZF95b3Vfa25vd19ib3h8Y29tcG9uZW50OnByb2R1Y3QiPkRhaWx5IERpZ2VzdCBlbWFpbDwvYT4uPC9wPgogICAgICAgIDwvYXNpZGU+CiAgICA8L3NlY3Rpb24+CiAgICAKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19hdXhpbGlhcnkgIj4KCiAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsIj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50Ij4KICAgICAgICAgICAgPHA+VE0gKyAmY29weTsgMjAyMCBWaW1lbywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdCI+CiAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL3Rlcm1zIiB0aXRsZT0iVGVybXMgJmFtcDsgQ29uZGl0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgVGVybXMgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9wcml2YWN5IiB0aXRsZT0iUHJpdmFjeSBQb2xpY3kiPgogICAgICAgICAgICAgICAgICAgIFByaXZhY3kgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9wcml2YWN5L2NhbGlmb3JuaWEtcHJpdmFjeSIgdGl0bGU9IkNBIFByaXZhY3kiPgogICAgICAgICAgICAgICAgICAgIENBIFByaXZhY3kgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9kbWNhIiB0aXRsZT0iQ29weXJpZ2h0IEluZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9jb29raWVfcG9saWN5IiB0aXRsZT0iTGVhcm4gbW9yZSBhYm91dCBob3cgVmltZW8gdXNlcyBjb29raWVzIj4KICAgICAgICAgICAgICAgICAgICBDb29raWVzICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWNvbnRlbnQgZm9vdGVyX3YyX193aXRobG92ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWRlIHdpdGggPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIgZm9vdGVyX3YyX19sb3ZlaGVhcnQgZm9vdGVyX3YyX19hdXhpbGlhcnktaWNvbiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTIgMTIiPjxwYXRoIGQ9Ik05IDJDNy4zMTIgMiA2IDMuNSA2IDMuNVM0LjY4NyAyIDMgMkMxLjMxMiAyIDAgMy4zMTIgMCA1YzAgMy4xODggMy43NSAzLjAxMiA2IDYgMi4yNS0yLjk4OCA2LTIuODEyIDYtNiAwLTEuNjg4LTEuMzEzLTMtMy0zeiIvPjwvc3ZnPiBpbiBOWUMuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fZmlsdGVycyBmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50Ij4KICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZ3VhZ2UiPgogICAgICAgICAgICBMYW5ndWFnZToKICAgICAgICAgICAgPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iI2xhbmd1YWdlIiBvbmNsaWNrPSJ2aW1lby5Nb2RhbC5jcmVhdGUoe2NvbnRlbnQ6ICcvc2V0dGluZ3MvbG9jYWxlJywgc2l6ZTogJ3NtYWxsJ30pOyByZXR1cm4gZmFsc2U7IiB0aXRsZT0iQ2hvb3NlIGEgZGlmZmVyZW50IGxhbmd1YWdlIj5FbmdsaXNoPC9hPgogICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fZmlsdGVyIj5NYXR1cmUgY29udGVudCBmaWx0ZXI6IDwvc3Bhbj48YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IGZvb3Rlcl92Ml9fZmlsdGVyc19fbGFuZyBjb250ZW50ZmlsdGVyIGpzLWZvb3Rlcl9jb250ZW50ZmlsdGVyX2xpbmsiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0idmltZW8uTW9kYWwuY3JlYXRlKHtjb250ZW50OiAnL3NldHRpbmdzL2NvbnRlbnRyYXRpbmcnfSkiIHRpdGxlPSJDaGFuZ2UgeW91ciBtYXR1cmUgY29udGVudCBmaWx0ZXIiPk5vbmU8L2E+CiAgICAgICAgICAgIDwvZGl2PgoKPC9zZWN0aW9uPgo8L2Zvb3Rlcj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAo8c2NyaXB0PgogICAgdmFyIF9fZmEgPSBfX2ZhIHx8IFtdOwogICAgLyoqCiAgICAgKiBCZWNhdXNlIHNpbmdsZSBwYWdlIGFwcGxpY2F0aW9ucyBzdWNoIGFzIHRoZSBhcHAgc2hlbGwgd2lsbCBiZSB0cmFja2luZwogICAgICogRmF0YWwgQXR0cmFjdGlvbiBwYWdlIHZpZXdzIG9uIFJlYWN0IGxpZmVjeWNsZSBob29rcyAoY29tcG9uZW50RGlkTW91bnQpCiAgICAgKiB3ZSB3YW50IHRvIGF2b2lkIGRpc3BhdGNoaW5nIHRoZSBwYWdldmlldyBldmVudCBmcm9tIHRoZSBQSFAgdGVtcGxhdGUKICAgICAqIGFuZCBkZWZlciB0aGlzIHNvcnQgb2YgdHJhY2tpbmcgbG9naWMgdG8gdGhlIGZyb250IGVuZC4KICAgICAqCiAgICAgKiBUaGlzIGNoZWNrIGFsbG93cyB1cyB0byBkZWNsYXJlIGluIGEgY29udHJvbGxlciB3aGV0aGVyIG9yIG5vdCB3ZQogICAgICogd2FudCB0byBkaXNwYXRjaCB0aGF0IHByZWxpbWluYXJ5IHBhZ2V2aWV3LgogICAgICoKICAgICAqIFRoZSBwcm9wZXJ0eSBpcyBhZGRpdGl2ZSBvbmx5LCBhcyB0byBub3QgYWZmZWN0IGV4aXN0aW5nIHBhZ2V2aWV3cy4KICAgICAqLwogICAgICAgICAgICBfX2ZhLnB1c2goWyd0cmFja1BhZ2V2aWV3J10pOwogICAgCiAgICAvKioKICAgICAqIEFkZCBzZXJ2ZXIgc2lkZSBBQkxpbmNvbG4gZXhwZXJpbWVudHMgdG8gR1RNIGRhdGEgbGF5ZXIuCiAgICAgKi8KICAgIAogICAgICAgIHZhciBfZXh0ZW5kID0gZnVuY3Rpb24oKXtmb3IodmFyIHI9YXJndW1lbnRzWzBdLG49MSxlPWFyZ3VtZW50cy5sZW5ndGg7ZT5uO24rKyl7dmFyIHQ9YXJndW1lbnRzW25dO2Zvcih2YXIgYSBpbiB0KXQuaGFzT3duUHJvcGVydHkoYSkmJihyW2FdPXRbYV0pfXJldHVybiByfTsKCiAgICAgICAgdmFyIENTU19ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC8nLAogICAgICAgIEpTX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC8nLAogICAgICAgIElNQUdFX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL2ltYWdlc192Ni8nLAogICAgICAgIEZPTlRfRElSID0gJ2h0dHBzOi8vZi52aW1lb2Nkbi5jb20vZm9udHMvJywKICAgICAgICBTVkdfRElSID0gJ2h0dHBzOi8vZi52aW1lb2Nkbi5jb20vc3ZnLycsCiAgICAgICAgICAgICAgICBCVUlMRF9IQVNIID0gJzZhZWJlJzsKCiAgICAKICAgICAgICB2YXIgdmltZW8gPSBfZXh0ZW5kKCh3aW5kb3cudmltZW8gfHwge30pLCB7ImFwcF92ZXJzaW9uIjoidjYiLCJkb21haW4iOiJ2aW1lby5jb20iLCJ1cmwiOiJ2aW1lby5jb20iLCJjdXJfdXNlciI6ZmFsc2UsIm9yaWdpbl91c2VyX2lkIjpudWxsLCJvcmlnaW5fdXNlciI6ZmFsc2UsImlzX21vYmlsZSI6ZmFsc2V9KTsKICAgIHZpbWVvLmNvbmZpZyA9IF9leHRlbmQoKHZpbWVvLmNvbmZpZyB8fCB7fSksIHsic3RpY2t5X3RvcG5hdiI6eyJleGNsdWRlZF9wYWdlcyI6WyJWaW1lb1xcQ29udHJvbGxlclxcQWJvdXRDb250cm9sbGVyOm1haW4iLCJWaW1lb1xcQ29udHJvbGxlclxcQWJvdXRDb250cm9sbGVyOnByb2Zlc3Npb25hbHMiLCJWaW1lb1xcQ29udHJvbGxlclxcQWJvdXRDb250cm9sbGVyOmV2ZXJ5b25lIiwiVmltZW9cXENvbnRyb2xsZXJcXEhvbWVDb250cm9sbGVyOnVwZ3JhZGUiLCJWaW1lb1xcQ29udHJvbGxlclxcU3RvcmVDb250cm9sbGVyOm1haW4iLCJWaW1lb1xcQ29udHJvbGxlclxcVXNlclxcU2V0dGluZ3MyQ29udHJvbGxlcjptYWluIiwiVmltZW9cXENvbnRyb2xsZXJcXFVzZXJcXFNldHRpbmdzMkNvbnRyb2xsZXI6dGVhbV9tZW1iZXJzIiwiVmltZW9cXENvbnRyb2xsZXJcXFVzZXJcXFNldHRpbmdzMkNvbnRyb2xsZXI6cGFzc3dvcmQiLCJWaW1lb1xcQ29udHJvbGxlclxcUHJvZmlsZUNvbnRyb2xsZXI6bWFpbiIsIlZpbWVvXFxDb250cm9sbGVyXFxDbGlwU3RhdHNDb250cm9sbGVyOm1haW4iLCJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcFxcU2V0dGluZ3NcXEVtYmVkQ29udHJvbGxlcjplbWJlZCIsIlZpbWVvXFxDb250cm9sbGVyXFxWaWRlb01hbmFnZXJDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXFZpZGVvUmV2aWV3Q29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxNZXNzYWdlc0NvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcU3RhdHNDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXFVwbG9hZENvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcT25EZW1hbmRcXFNldHRpbmdzQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxDbGlwXFxTZXR0aW5nc0NvbnRyb2xsZXIiXSwic3RpY2t5X2luY2x1ZGVkX3BhZ2VzIjpbIlZpbWVvXFxDb250cm9sbGVyXFxTdG9ja1xcU3RvY2tIb21lUGFnZUNvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcU3RvY2tcXFN0b2NrRm9vdGFnZUNvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcU3RvY2tcXFN0b2NrU2VhcmNoQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxTdG9ja1xcU3RvY2tDb2xsZWN0aW9uc0NvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcQWxidW1Db250cm9sbGVyIl0sInRvcG5hdl93cmFwX3NlbGVjdG9yIjoiI3RvcG5hdl9vdXRlcl93cmFwIiwiY29udGVudF93cmFwX3NlbGVjdG9yIjoiLndyYXBfY29udGVudCJ9LCJsb2NhbGUiOiJlbiIsIm9tbmlzZWFyY2hfZW5hYmxlZCI6ZmFsc2UsIm9tbmlzZWFyY2hfZGlzYWJsZWQiOm51bGwsIm9tbmlzZWFyY2hfand0IjoiZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKSVV6STFOaUo5LmV5SmxlSEFpT2pFMk1ETTRNak00T0RBc0luVnpaWEpmYVdRaU9tNTFiR3dzSW1Gd2NGOXBaQ0k2TlRnME56a3NJbk5qYjNCbGN5STZJbkIxWW14cFl5QndjbWwyWVhSbElHUmxiR1YwWlNJc0luUmxZVzFmZFhObGNsOXBaQ0k2Ym5Wc2JIMC4zRHVXbWpKMVdlV0MzX1VhN1pEV0tsYXk4alloS2d5Rjg3RTB2SGtrR2hVIiwib21uaXNlYXJjaF91c2VyIjpudWxsLCJhcGlfdXJsIjoiYXBpLnZpbWVvLmNvbSIsInNob3dfb21uaXNlYXJjaF90aXAiOmZhbHNlfSk7CgogICAgICAgIHZhciBfX2kxOG5Mb2NhbGUgPSAnZW4nOwogICAgdmFyIGxvY2FsZUNvbmZpZyA9IHsKICAgICAgICBsYW5nOiAnZW4nLAogICAgICAgICdEYXRlJzogewogICAgICAgICAgICBtb250aHM6IFsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSwKICAgICAgICAgICAgbW9udGhzX2FiYnI6IFsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sCiAgICAgICAgICAgIGRheXM6IFsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSwKICAgICAgICAgICAgZGF5c19hYmJyOiBbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLAoKICAgICAgICAgICAgLy8gQ3VsdHVyZSdzIGRhdGUgb3JkZXI6IE1NL0REL1lZWVkKICAgICAgICAgICAgZGF0ZU9yZGVyOiBbJ2RhdGUnLCAnbW9udGgnLCAneWVhciddLAogICAgICAgICAgICBzaG9ydERhdGU6ICclZC8lbS8lWScsCiAgICAgICAgICAgIHNob3J0VGltZTogJyVJOiVNJXAnLAogICAgICAgICAgICBBTTogJ0FNJywKICAgICAgICAgICAgUE06ICdQTScsCiAgICAgICAgICAgIGZpcnN0RGF5T2ZXZWVrOiAwLAoKICAgICAgICAgICAgLy8gRGF0ZS5FeHRyYXMKICAgICAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24oZGF5T2ZNb250aCl7CiAgICAgICAgICAgICAgICByZXR1cm4gZGF5T2ZNb250aDsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgJ0RhdGVQaWNrZXInOiB7CiAgICAgICAgICAgIHNlbGVjdF9hX3RpbWU6ICJTZWxlY3QgYSB0aW1lIiwKICAgICAgICAgICAgdXNlX21vdXNlX3doZWVsOiAiVXNlIHRoZSBtb3VzZSB3aGVlbCB0byBxdWlja2x5IGNoYW5nZSB2YWx1ZSIsCiAgICAgICAgICAgIHRpbWVfY29uZmlybV9idXR0b246ICJPSyIsCiAgICAgICAgICAgIGFwcGx5X3JhbmdlOiAiQXBwbHkiLAogICAgICAgICAgICBjYW5jZWw6ICJDYW5jZWwiLAogICAgICAgICAgICB3ZWVrOiAiV2siICAgICAgICB9LAogICAgICAgICAgICAgICAgJ051bWJlcic6IHsKICAgICAgICAgICAgZGVjaW1hbDogJy4nLAogICAgICAgICAgICBncm91cDogJywnLAogICAgICAgICAgICBjdXJyZW5jeTogewogICAgICAgICAgICAgICAgcHJlZml4OiAnJCcKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgJ0Zvcm1WYWxpZGF0b3InOiB7InJlcXVpcmVkIjoiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iLCJyZXF1aXJlZENoayI6IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIn0gICAgfTsKCiAgICB2YXIgZnVsbExvY2FsZSA9ICcnOwoKICAgIAogICAgICAgIHZhciBDb3B5ID0ge3RyYW5zbGF0ZTpmdW5jdGlvbih0LGksdSl7dmFyIGU9J29iamVjdCchPXR5cGVvZiB0aGlzLmRpY3RbdF0/dGhpcy5kaWN0W3RdOmk/dGhpcy5kaWN0W3RdLnBsdXJhbDp0aGlzLmRpY3RbdF0uc2luZ3VsYXI7cmV0dXJuJ29iamVjdCc9PXR5cGVvZiB1JiYoZT10aGlzLnN1YnN0aXR1dGUoZSx1KSksZX0sc3Vic3RpdHV0ZTpmdW5jdGlvbih0LGkpe3JldHVybiB2b2lkIDAhPT10LnN1YnN0aXR1dGU/dC5zdWJzdGl0dXRlKGkpOnQucmVwbGFjZSgvXFw/XHsoW157fV0rKVx9L2csZnVuY3Rpb24odCx1KXtyZXR1cm4nXFwnPT10LmNoYXJBdCgwKT90LnNsaWNlKDEpOm51bGwhPWlbdV0/aVt1XTonJ30pfSxkaWN0Ont9fTsKICAgIENvcHkuZGljdCA9IHsiZGlkX3lvdV9tZWFuX2VtYWlsIjoiRGlkIHlvdSBtZWFuIDxlbT57U1VHR0VTVH08XC9lbT4/IiwiZW1haWxfcGFzc3dvcmRfbWlzbWF0Y2giOiJFbWFpbCBhbmQgcGFzc3dvcmQgZG8gbm90IG1hdGNoIiwib29wc190cnlfYWdhaW4iOiJPb3BzISBTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHRyeSBhZ2Fpbi4iLCJqdXN0X25vdyI6Imp1c3Qgbm93Iiwic2Vjb25kc19hZ28iOnsic2luZ3VsYXIiOiJ7Q09VTlR9IHNlY29uZCBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IHNlY29uZHMgYWdvIn0sIm1pbnV0ZXNfYWdvIjp7InNpbmd1bGFyIjoie0NPVU5UfSBtaW51dGUgYWdvIiwicGx1cmFsIjoie0NPVU5UfSBtaW51dGVzIGFnbyJ9LCJob3Vyc19hZ28iOnsic2luZ3VsYXIiOiJ7Q09VTlR9IGhvdXIgYWdvIiwicGx1cmFsIjoie0NPVU5UfSBob3VycyBhZ28ifSwib3Blbl9jb21tZW50X2JveCI6IkFkZCBuZXcgY29tbWVudCBpbnN0ZWFkICZyYXF1bzsiLCJ1cmxfdW5hdmFpbGFibGUiOiJTb3JyeSwgdGhpcyB1cmwgaXMgdW5hdmFpbGFibGUuIiwidW5zYXZlZF9jaGFuZ2VzX2dlbmVyaWMiOiJZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMsIGFyZSB5b3Ugc3VyZSB5b3Ugd2lzaCB0byBsZWF2ZT8iLCJhZGQiOiJBZGQiLCJyZW1vdmUiOiJSZW1vdmUiLCJzZWxlY3QiOiJTZWxlY3QiLCJub19mb2xsb3dlcnNfZm9yX2xldHRlciI6IllvdSBkb24mcnNxdW87dCBmb2xsb3cgYW55b25lIHRoYXQgYmVnaW4gd2l0aCB0aGUgbGV0dGVyICZsZHF1bzt7UEFHRV9MRVRURVJ9JnJkcXVvOyIsInNoYXJlX2xpbWl0X3JlYWNoZWQiOiJZb3UgaGF2ZSByZWFjaGVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1c2VycyB0byBzaGFyZSB3aXRoLiIsImF0X2xlYXN0X29uZSI6IlRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIHVzZXIuIiwiYXZhaWxhYmxlIjoiQXZhaWxhYmxlIiwidW5hdmFpbGFibGUiOiJVbmF2YWlsYWJsZSIsImJyb3dzZV9lcnJvcl9nZW5lcmljIjoiU29ycnksIHRoZXJlIHdhcyBhbiBlcnJvciIsImJyb3dzZV9lcnJvcl9ub192aWRlb3MiOiJTb3JyeSwgbm8gdmlkZW9zIGZvdW5kIiwiZm9sbG93IjoiRm9sbG93IiwiZm9sbG93aW5nIjoiRm9sbG93aW5nIiwidW5mb2xsb3ciOiJVbmZvbGxvdyIsInVuZm9sbG93aW5nIjoiVW5mb2xsb3dpbmciLCJjb3VudF9jb21tZW50cyI6eyJzaW5ndWxhciI6IntDT1VOVH0gY29tbWVudCIsInBsdXJhbCI6IntDT1VOVH0gY29tbWVudHMifSwiZmlyc3RfY29tbWVudCI6IkJlIHRoZSBmaXJzdCB0byBjb21tZW50XHUyMDI2Iiwibm9fY29tbWVudHNfZm9yX3lvdSI6IkZvcmJpZGRlbi4gWW91IGNhbm5vdCBwb3N0IGNvbW1lbnRzIG9uIHRoaXMgcGFnZS4iLCJvb3BzIjoiT29wcyEiLCJwbGF5ZXJfdHJ5X2FnYWluIjoiVGhhdCB3YXNuJ3Qgc3VwcG9zZWQgdG8gaGFwcGVuLiBQbGVhc2UgdHJ5IGFnYWluIGluIGEgZmV3IG1pbnV0ZXMuIiwiZHVyYXRpb25faW5wdXRfbWluX2R1cmF0aW9uIjoiVGhlIGR1cmF0aW9uIGNhbm5vdCBiZSBsZXNzIHRoYW4ge01JTl9EVVJBVElPTn0uIiwiZHVyYXRpb25faW5wdXRfbWF4X2R1cmF0aW9uIjoiVGhlIGR1cmF0aW9uIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4ge01BWF9EVVJBVElPTn0uIiwiZHVyYXRpb25faW5wdXRfaW52YWxpZF9jaGFyYWN0ZXJzIjoiMC05IGFuZCA6IGFyZSB0aGUgb25seSBhY2NlcHRhYmxlIGlucHV0cy4iLCJjbG9zZSI6IkNsb3NlIiwiZXhwYW5kIjoiRXhwYW5kIiwibG9hZGluZyI6IkxvYWRpbmcuLi4iLCJ0b3AiOiJ0b3AiLCJhZHZhbmNlZF9zZWFyY2giOiJBZHZhbmNlZCBTZWFyY2giLCJub19zdWdnZXN0aW9ucyI6Ik5vIHN1Z2dlc3Rpb25zIiwicmVjZW50X3NlYXJjaGVzIjoiUmVjZW50IFNlYXJjaGVzIiwic2VhcmNoX2FsbCI6IlNlYXJjaCBBbGwgb2YgVmltZW8iLCJlbWFpbF9hbmRfcGFzc3dvcmQiOiJQbGVhc2UgZW50ZXIgeW91ciBlbWFpbCBhbmQgcGFzc3dvcmQiLCJlbWFpbF9hZGRyZXNzIjoiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcyIsIm5hbWVfZW1haWxfYW5kX3Bhc3N3b3JkIjoiUGxlYXNlIGVudGVyIHlvdXIgbmFtZSwgZW1haWwsIGFuZCBwYXNzd29yZCJ9Owo8L3NjcmlwdD4KCgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L3N0aWNreV90b3BuYXZfY29tYmluZWQubWluLmpzPzVmZmQ2ZDRlIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9yZWFjdF9wcm9kX2NvbWJpbmVkLm1pbi5qcz8wMzE3NzVhNCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvZXhjZXB0aW9uX2NvbWJpbmVkLm1pbi5qcz8yYTJmMjYxMyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvdG9wbmF2X2NhcnRfYnV0dG9uX2NvbWJpbmVkLm1pbi5qcz80NDg4YzA5MiI+PC9zY3JpcHQ+CgogICAgPHNjcmlwdCBhc3luYyBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L19idW5kbGVzL2NyZWF0ZV9mYWNlYm9va19oZWFkZXIuYnVuZGxlLm1pbi5qcz85NTRjNDYwMCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0PgogICAgICAgIGZ1bmN0aW9uIG9uVmltZW9Eb21SZWFkeShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICB3aW5kb3cudmltZW8gPSB3aW5kb3cudmltZW8gfHwge307CiAgICAgIHdpbmRvdy52aW1lby5leGNlcHRpb25fZGF0YSA9IHsidGl0bGUiOiJTb3JyeSwgd2UgY291bGRuXHUyMDE5dCBmaW5kIHRoYXQgcGFnZSIsIm1lc3NhZ2UiOiIiLCJub3RpZmljYXRpb24iOiI8ZGl2IGNsYXNzPVwiZXhjZXB0aW9uX25vdGlmaWNhdGlvbiBpcmlzX25vdGlmaWNhdGlvbiBpcmlzX25vdGlmaWNhdGlvbi0tdXBzZWxsXCI+XG4gICAgIDxkaXYgY2xhc3M9XCJpcmlzX25vdGlmaWNhdGlvbi0tdXBzZWxsLWljb25cIj5cbiAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXJpc19pYyBpcy0tMTZcIj48c3ZnIHhtbG5zPVwiaHR0cDpcL1wvd3d3LnczLm9yZ1wvMjAwMFwvc3ZnXCIgdmlld0JveD1cIjAgMCAxNiAxNlwiPjxwYXRoIGQ9XCJNOCAxNmM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHpNNyA0aDJ2Mkg3VjR6bTAgM2gydjVIN1Y3elwiXC8+PFwvc3ZnPjxcL3NwYW4+XG4gICAgIDxcL2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJpcmlzX25vdGlmaWNhdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgPHN0cm9uZz5SZWFzb25zIHlvdSBtaWdodCBiZSBzZWVpbmcgdGhpcyBwYWdlPFwvc3Ryb25nPlxuICAgIDxcL2Rpdj5cblxuICAgIDx1bCBjbGFzcz1cImlyaXNfbm90aWZpY2F0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpPkl0IGV4aXN0cywgYnV0IHlvdSBkb25cdTIwMTl0IGhhdmUgcGVybWlzc2lvbiB0byBzZWUgaXQsIG9yIHlvdSBuZWVkIHRvIDxhIG9uY2xpY2s9XCJ2aW1lby5TZXNzaW9uLmNyZWF0ZSgpXCI+bG9nIGluPFwvYT4uPFwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPk5vdGhpbmcgaGFzIGV2ZXIgZXhpc3RlZCBoZXJlLiBTcG9va3kuPFwvbGk+XG4gICAgICAgIDxsaT5Tb21ldGhpbmcgb25jZSBsaXZlZCBoZXJlLCBidXQgaGFzIGJlZW4gZGVsZXRlZC48XC9saT5cbiAgICA8XC91bD5cbjxcL2Rpdj5cbiIsInNlYXJjaCI6dHJ1ZSwidmlkZW9zIjpudWxsLCJhZF9jb25maWciOnsiaG91c2VfYWRzX2VuYWJsZWQiOmZhbHNlfSwicGFnZV90eXBlIjoiZXhjZXB0aW9uIiwibW9kdWxlX3R5cGUiOiJzdGFuZGFyZF9tdWx0aSJ9OwoKICAgICAgbmV3IHdpbmRvdy5FeGNlcHRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KG9uVmltZW9Eb21SZWFkeSk7CiAgICAgICAgICAgIDwvc2NyaXB0PgoKCiAgICA8L2JvZHk+CjwvaHRtbD4K
126
+ http_version:
127
+ recorded_at: Tue, 27 Oct 2020 18:22:58 GMT
128
128
  recorded_with: VCR 3.0.3
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  User-Agent:
11
- - VideoInfo/2.7
11
+ - VideoInfo/2.8.0
12
12
  Accept:
13
13
  - "*/*"
14
14
  response:
@@ -16,51 +16,51 @@ http_interactions:
16
16
  code: 404
17
17
  message: Not Found
18
18
  headers:
19
+ Connection:
20
+ - keep-alive
21
+ Content-Length:
22
+ - '149613'
19
23
  Server:
20
24
  - nginx
21
25
  Content-Type:
22
26
  - text/html; charset=UTF-8
23
27
  Expires:
24
- - Mon, 27 Mar 2017 09:01:10 GMT
28
+ - Tue, 27 Oct 2020 06:23:05 GMT
25
29
  X-Frame-Options:
26
30
  - sameorigin
31
+ X-Bapp-Server:
32
+ - pweb-v4874-bdnd6
27
33
  Via:
28
- - 1.1 varnish
29
- - 1.1 varnish
30
- - 1.1 varnish
34
+ - 1.1 varnish, 1.1 varnish, 1.1 varnish
31
35
  Cache-Control:
32
36
  - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
33
37
  X-Varnish-Cache:
34
38
  - '0'
35
39
  X-Vserver:
36
- - dfvimeowebproxy3
37
- Fastly-Debug-Digest:
38
- - 5c8cad581c94a8a0faf793c8c4898a0848cc94c3ce18c6c8e7834c3408b6d12c
39
- Content-Length:
40
- - '57859'
40
+ - infra-webproxy-a-3
41
+ X-Vimeo-Dc:
42
+ - ge
41
43
  Accept-Ranges:
42
44
  - bytes
43
45
  Date:
44
- - Mon, 27 Mar 2017 21:01:10 GMT
46
+ - Tue, 27 Oct 2020 18:23:05 GMT
45
47
  Age:
46
48
  - '0'
47
- Connection:
48
- - keep-alive
49
49
  X-Served-By:
50
- - cache-iad2147-IAD, cache-lax8626-LAX
50
+ - cache-bwi5128-BWI, cache-cwb20521-CWB
51
51
  X-Cache:
52
52
  - MISS, MISS
53
53
  X-Cache-Hits:
54
54
  - 0, 0
55
55
  X-Timer:
56
- - S1490648470.433257,VS0,VE360
56
+ - S1603822985.019934,VS0,VE282
57
57
  Vary:
58
58
  - Accept-Encoding
59
59
  body:
60
60
  encoding: UTF-8
61
61
  string: ''
62
- http_version:
63
- recorded_at: Mon, 27 Mar 2017 21:01:10 GMT
62
+ http_version:
63
+ recorded_at: Tue, 27 Oct 2020 18:23:05 GMT
64
64
  - request:
65
65
  method: get
66
66
  uri: https://vimeo.com/0812455
@@ -79,50 +79,51 @@ http_interactions:
79
79
  code: 404
80
80
  message: Not Found
81
81
  headers:
82
+ Connection:
83
+ - keep-alive
84
+ Content-Length:
85
+ - '35209'
82
86
  Server:
83
87
  - nginx
84
88
  Content-Type:
85
89
  - text/html; charset=UTF-8
86
90
  Expires:
87
- - Mon, 27 Mar 2017 09:01:10 GMT
91
+ - Tue, 27 Oct 2020 06:23:05 GMT
88
92
  X-Frame-Options:
89
93
  - sameorigin
94
+ X-Bapp-Server:
95
+ - pweb-v4874-85hfd
90
96
  Via:
91
97
  - 1.1 varnish
92
- - 1.1 varnish
93
- - 1.1 varnish
98
+ - 1.1 varnish, 1.1 varnish
94
99
  Cache-Control:
95
100
  - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
96
101
  X-Varnish-Cache:
97
102
  - '0'
98
103
  X-Vserver:
99
- - dfvimeowebproxy3
100
- Fastly-Debug-Digest:
101
- - 5c8cad581c94a8a0faf793c8c4898a0848cc94c3ce18c6c8e7834c3408b6d12c
102
- Content-Length:
103
- - '15258'
104
+ - infra-webproxy-a-3
105
+ X-Vimeo-Dc:
106
+ - ge
104
107
  Accept-Ranges:
105
108
  - bytes
106
109
  Date:
107
- - Mon, 27 Mar 2017 21:01:11 GMT
110
+ - Tue, 27 Oct 2020 18:23:05 GMT
108
111
  Age:
109
112
  - '0'
110
- Connection:
111
- - keep-alive
112
113
  X-Served-By:
113
- - cache-iad2125-IAD, cache-lax8634-LAX
114
+ - cache-bwi5144-BWI, cache-cwb20526-CWB
114
115
  X-Cache:
115
116
  - MISS, MISS
116
117
  X-Cache-Hits:
117
118
  - 0, 0
118
119
  X-Timer:
119
- - S1490648470.822708,VS0,VE471
120
+ - S1603822986.583845,VS0,VE271
120
121
  Vary:
121
122
  - Accept-Encoding
122
123
  body:
123
124
  encoding: ASCII-8BIT
124
125
  string: !binary |-
125
- PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KIDxoZWFkPgogPG1ldGEgY2hhcnNldD0idXRmLTgiPgoKCiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTEuMCx1c2VyLXNjYWxhYmxlPW5vIj4KIAo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Ii8vcGxheWVyLnZpbWVvLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9pLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9mLnZpbWVvY2RuLmNvbSI+CjxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE5ODg0MDI4OTYzIj4KCgogIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJTb3JyeSwgd2UgY291bGRuJnJzcXVvO3QgZmluZCB0aGF0IHBhZ2UiPgogIDxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0ibm9pbmRleCI+CgoKCgoKIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIgaHJlZj0iaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9mYXZpY29uL21haW4tdG91Y2hfMTgwIj4KCjxsaW5rIHJlbD0ibWFzay1pY29uIiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N2Zy9sZWdhY3lfdmlld19zdXBwb3J0L2lyaXNfaWNvbl92XzY0LnN2ZyIgY29sb3I9IiMxNzI3MmUiPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vaW1hZ2VzX3Y2L2Zhdmljb24uaWNvIiBkYXRhLXBsYXk9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9wbGF5XzMyIiBkYXRhLXBhdXNlPSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vcGF1c2VfMzIiPgoKPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi1UaWxlSW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9tYWluLXRvdWNoXzE0NCI+CjxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tVGlsZUNvbG9yIiBjb250ZW50PSIjMDBhZGVmIj4KCjxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvc2VhcmNoL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iVmltZW8gc2VhcmNoIj4KPGxpbmsgcmVsPSJsb2dvIiB0eXBlPSJpbWFnZS9zdmciIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vbG9nby5zdmciPgogPHRpdGxlPlZpbWVVaE9oPC90aXRsZT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9nbG9iYWwvaWNvbl9mb250cy5taW4uY3NzP0RFViI+CgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N0eWxlcy9jc3Nfb3B0L2V4Y2VwdGlvbl9jb21iaW5lZC5taW4uY3NzPzcwMmFiZWMxIj4KCgoKIDxzY3JpcHQ+CiAgCiAgdmFyIHBsYXllckFzc2V0VXJscyA9IHsianMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzIuNTMuMTBcL2pzXC9wbGF5ZXIuanMiLCJtb29nIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC9mbGFzaFwvbW9vZ2Fsb29wXC82LjQuNVwvbW9vZ2Fsb29wLnN3ZiIsImNocm9tZWxlc3NfY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8yLjUzLjEwXC9jc3NcL2Nocm9tZWxlc3MuY3NzIiwiY2hyb21lbGVzc19qcyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvMi41My4xMFwvanNcL2Nocm9tZWxlc3MuanMiLCJtb29nX2pzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8yLjUzLjEwXC9qc1wvbW9vZ2Fsb29wLmpzIiwiY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8yLjUzLjEwXC9jc3NcL3BsYXllci5jc3MiLCJwbGF5ZXJfdXJsIjoicGxheWVyLnZpbWVvLmNvbSJ9OwoKICB2YXIgX2V4dGVuZCA9IGZ1bmN0aW9uKCl7Zm9yKHZhciByPWFyZ3VtZW50c1swXSxuPTEsZT1hcmd1bWVudHMubGVuZ3RoO2U+bjtuKyspe3ZhciB0PWFyZ3VtZW50c1tuXTtmb3IodmFyIGEgaW4gdCl0Lmhhc093blByb3BlcnR5KGEpJiYoclthXT10W2FdKX1yZXR1cm4gcn07CgogIHdpbmRvdyA9IF9leHRlbmQod2luZG93LCB7InZpbWVvX2VzaSI6eyJjb25maWciOnsiYXV0b2NvbXBsZXRlX2VuYWJsZWQiOnRydWV9fSwiZ2xvYmFsX25vdGlmaWNhdGlvbnMiOltdfSk7Cjwvc2NyaXB0PgoKIDxzdHlsZSBpZD0iZXNpX3JpYmJvbiI+CiAuZXNpX3JpYmJvbiB7CiBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB3aWR0aCUzRCUyMjUwMCUyMiUzRSUzQ3JlY3QlMjB4JTNEJTIyMCUyMiUyMHdpZHRoJTNEJTIyMzQlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjMyOGExZDglMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjM0JTIyJTIwd2lkdGglM0QlMjI1NSUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyMzI0OGJjNyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyODklMjIlMjB3aWR0aCUzRCUyMjMlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjMxZTM5NTUlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjkyJTIyJTIwd2lkdGglM0QlMjIxNTclMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjMyZjUxMzIlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjI0OSUyMiUyMHdpZHRoJTNEJTIyMzAlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjM0MTY4MjglMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjI3OSUyMiUyMHdpZHRoJTNEJTIyNTQlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjM3ZWFhMjklMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjMzMyUyMiUyMHdpZHRoJTNEJTIyMTElMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjNkY2JkNDIlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjM0NCUyMiUyMHdpZHRoJTNEJTIyNCUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2RjYWQyNyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyMzQ4JTIyJTIwd2lkdGglM0QlMjIyMyUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2UzOWEyMyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyMzcxJTIyJTIwd2lkdGglM0QlMjIzNSUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2NjNTU0YyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyNDA2JTIyJTIwd2lkdGglM0QlMjIxOCUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2NhNDczZiUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyNDI0JTIyJTIwd2lkdGglM0QlMjI2JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzYTcyODM0JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjI0MzAlMjIlMjB3aWR0aCUzRCUyMjQ2JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzNzM1Njc1JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjI0NzYlMjIlMjB3aWR0aCUzRCUyMjEyJTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzNjUzZTY2JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjI0ODglMjIlMjB3aWR0aCUzRCUyMjEyJTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzM2IzMTViJTIyJTJGJTNFJTNDJTJGc3ZnJTNFJTBBKSB0b3AgbGVmdC81MDBweCAxMDAlIHJlcGVhdC14ICFpbXBvcnRhbnQ7CiB9CiA8L3N0eWxlPgogCiA8c2NyaXB0PgogdmFyIGFibGluY29sbl9jb25maWcgPSBhYmxpbmNvbG5fY29uZmlnIHx8IHt9OwogYWJsaW5jb2xuX2NvbmZpZy50ZXN0cyA9IHsiREZQQWRDb2hvcnRzIjp7ImlkIjo2OSwibmFtZSI6IkRGUEFkQ29ob3J0cyIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6bnVsbCwiZXhwZXJpbWVudHMiOltdfSwiRXhwbG9yZSI6eyJpZCI6NjQsIm5hbWUiOiJFeHBsb3JlIiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjoiXC8iLCJleHBlcmltZW50cyI6W119LCJUb3BOYXZBQiI6eyJpZCI6NjcsIm5hbWUiOiJUb3BOYXZBQiIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOltdfSwiVG9wTmF2Q29weVRlc3QiOnsiaWQiOjc3LCJuYW1lIjoiVG9wTmF2Q29weVRlc3QiLCJidWNrZXRzIjoxMDAwLCJpbnB1dCI6InZ1aWQiLCJ1cmwiOiJcL2Fib3V0IiwiZXhwZXJpbWVudHMiOltdfSwiVG9wTmF2Lkhvc3RWaWRlb3NMaW5rIjp7ImlkIjoxMDMsIm5hbWUiOiJUb3BOYXYuSG9zdFZpZGVvc0xpbmsiLCJidWNrZXRzIjoxMDAwLCJpbnB1dCI6InZ1aWQiLCJ1cmwiOm51bGwsImV4cGVyaW1lbnRzIjpbXX19OwogPC9zY3JpcHQ+CgoKIAogPHNjcmlwdD4KIHZhciBnb29nbGV0YWcgPSBnb29nbGV0YWcgfHwge30sCiBncHRhZHNsb3RzID0gW10sCiBsYW5ndWFnZSwKIGhhc191cGxvYWRlZCwKIGNvaG9ydDsKIGdvb2dsZXRhZy5jbWQgPSBnb29nbGV0YWcuY21kIHx8IFtdOwoKIChmdW5jdGlvbigpIHsKIHZhciBnYWRzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksCiB1c2VTU0wgPSAnaHR0cHM6JyA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCwKIG5vZGU7CiBnYWRzLmFzeW5jID0gdHJ1ZTsKIGdhZHMudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogZ2Fkcy5zcmMgPSAodXNlU1NMID8gJ2h0dHBzOicgOiAnaHR0cDonKSArICcvL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vdGFnL2pzL2dwdC5qcyc7CiBub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdOwogbm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnYWRzLCBub2RlKTsKIH0pKCk7CgogZ29vZ2xldGFnLmNtZC5wdXNoKGZ1bmN0aW9uKCkgewogCiAgbGFuZ3VhZ2UgPSBkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopbGFuZ3VhZ2VccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKTsKIGhhc191cGxvYWRlZCA9IChkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopaGFzX3VwbG9hZGVkXHMqXD1ccyooW147XSopLiokKXxeLiokLywgIiQxIikpID8gJ1knIDogJ04nOwogCiBjb2hvcnQgPSAod2luZG93LkFCTGluY29sbikgPyB3aW5kb3cuQUJMaW5jb2xuLmdldFRlc3QoJ0RGUEFkQ29ob3J0cycpLmdldCgnY29ob3J0JywgJ0EnKSA6ICdBJzsKCiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdsYW5ndWFnZScsIFtsYW5ndWFnZV0pOwogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnaXNfdXBsb2FkZXInLCBbaGFzX3VwbG9hZGVkXSk7CiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnQnLCBbY29ob3J0XSk7CiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnRfYScsIFsoY29ob3J0ID09PSAnQScpID8gJ1knIDogJ04nXSk7CiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnRfYicsIFsoY29ob3J0ID09PSAnQicpID8gJ1knIDogJ04nXSk7CgogIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ3NlYycsIFsnZmFsc2UnXSk7CgogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnbG9nZ2VkX2luJywgWydmYWxzZSddKTsKCiAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygncnB2JywgKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxMDApKzEpLnRvU3RyaW5nKCkpOwoKIGdvb2dsZXRhZy5wdWJhZHMoKS5lbmFibGVBc3luY1JlbmRlcmluZygpOwogZ29vZ2xldGFnLmVuYWJsZVNlcnZpY2VzKCk7CiB9KTsKIDwvc2NyaXB0PgoKPHNjcmlwdD4KIWZ1bmN0aW9uKCl7dmFyIGU9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OmV4cG9ydHMscj1bXTtpZihlLnBlcmZvcm1hbmNlfHwoZS5wZXJmb3JtYW5jZT17fSksZS5wZXJmb3JtYW5jZS5ub3d8fChlLnBlcmZvcm1hbmNlLm5vdz1wZXJmb3JtYW5jZS5ub3d8fHBlcmZvcm1hbmNlLndlYmtpdE5vd3x8cGVyZm9ybWFuY2UubXNOb3d8fHBlcmZvcm1hbmNlLm1vek5vdyksIWUucGVyZm9ybWFuY2Uubm93KXt2YXIgbj1EYXRlLm5vdz9EYXRlLm5vdygpOituZXcgRGF0ZTtwZXJmb3JtYW5jZS50aW1pbmcmJnBlcmZvcm1hbmNlLnRpbWluZyYmKG49cGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydCksZS5wZXJmb3JtYW5jZS5ub3c9ZnVuY3Rpb24oKXt2YXIgZT1EYXRlLm5vdz9EYXRlLm5vdygpOituZXcgRGF0ZTtyZXR1cm4gZS1ufX1lLnBlcmZvcm1hbmNlLm1hcmt8fChlLnBlcmZvcm1hbmNlLm1hcms9ZS5wZXJmb3JtYW5jZS53ZWJraXRNYXJrP2UucGVyZm9ybWFuY2Uud2Via2l0TWFyazpmdW5jdGlvbihuKXtyLmZvckVhY2goZnVuY3Rpb24oZSxyLGEpe2UubmFtZT09PW4mJmEuc3BsaWNlKHIsMSl9KSxyLnB1c2goe25hbWU6bixlbnRyeVR5cGU6Im1hcmsiLHN0YXJ0VGltZTplLnBlcmZvcm1hbmNlLm5vdygpLGR1cmF0aW9uOjB9KX0pLGUucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZXx8KGUucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZT1lLnBlcmZvcm1hbmNlLndlYmtpdEdldEVudHJpZXNCeVR5cGU/ZS5wZXJmb3JtYW5jZS53ZWJraXRHZXRFbnRyaWVzQnlUeXBlOmZ1bmN0aW9uKGUpe3ZhciBuPWZ1bmN0aW9uKHIpe3JldHVybiByLmVudHJ5VHlwZT09PWV9O3JldHVybi0xIT09WyJtYXJrIiwibWVhc3VyZSJdLmluZGV4T2YoZSk/ci5maWx0ZXIobik6dm9pZCAwfSksZS5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lfHwoZS5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lPWUucGVyZm9ybWFuY2Uud2Via2l0R2V0RW50cmllc0J5TmFtZT9lLnBlcmZvcm1hbmNlLndlYmtpdEdldEVudHJpZXNCeU5hbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHIuZmlsdGVyKGZ1bmN0aW9uKHIpe3JldHVybiByLm5hbWU9PT1lfSl9KSxlLnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXN8fChlLnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXM9ZS5wZXJmb3JtYW5jZS53ZWJraXRDbGVhck1lYXN1cmVzP2UucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJNZWFzdXJlczpmdW5jdGlvbigpe3IuZm9yRWFjaChmdW5jdGlvbihlLHIsbil7Im1lYXN1cmUiPT09ZS5lbnRyeVR5cGUmJm4uc3BsaWNlKHIsMSl9KSxyPVtdfSksZS5wZXJmb3JtYW5jZS5jbGVhck1hcmtzfHwoZS5wZXJmb3JtYW5jZS5jbGVhck1hcmtzPWUucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJNYXJrcz9lLnBlcmZvcm1hbmNlLndlYmtpdENsZWFyTWFya3M6ZnVuY3Rpb24oKXtyLmZvckVhY2goZnVuY3Rpb24oZSxyLG4peyJtYXJrIj09PWUuZW50cnlUeXBlJiZuLnNwbGljZShyLDEpfSkscj1bXX0pLGUucGVyZm9ybWFuY2UubWVhc3VyZXx8KGUucGVyZm9ybWFuY2UubWVhc3VyZT1lLnBlcmZvcm1hbmNlLndlYmtpdE1lYXN1cmU/ZS5wZXJmb3JtYW5jZS53ZWJraXRNZWFzdXJlOmZ1bmN0aW9uKGUsbixhKXt2YXIgdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHIubmFtZT09PWUmJiJtYXJrIj09PXIuZW50cnlUeXBlfX0sbz1yLmZpbHRlcih0KG4pKVswXSxtPXIuZmlsdGVyKHQoYSkpWzBdLGk9bS5zdGFydFRpbWUtby5zdGFydFRpbWU7ci5wdXNoKHtuYW1lOmUsZW50cnlUeXBlOiJtZWFzdXJlIixzdGFydFRpbWU6by5zdGFydFRpbWUsZHVyYXRpb246aX0pfSl9KCksd2luZG93Lm1hcmtVc2VyVGltZT1mdW5jdGlvbihlKXt2YXIgcj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxmdW5jdGlvbihlKXtzZXRUaW1lb3V0KGUsMCl9O3IoZnVuY3Rpb24oKXt3aW5kb3cucGVyZm9ybWFuY2UubWFyayhlKSx3aW5kb3cuY29uc29sZSYmY29uc29sZS50aW1lU3RhbXAmJmNvbnNvbGUudGltZVN0YW1wKGUpfSl9OwoKKGZ1bmN0aW9uKCkgewogd2luZG93Lm1hcmtVc2VyVGltZSA9IGZ1bmN0aW9uKGxhYmVsKSB7CiB3aW5kb3cuX2d0bSA9IHdpbmRvdy5fZ3RtIHx8IFtdOwoKIC8vIEV4aXQgZWFybHkgaWYgdGhlIGJyb3dzZXIgY2FuJ3QgaGFuZGxlIG5ldyB0aGluZ3MKIGlmICh0eXBlb2YgcGVyZm9ybWFuY2UgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBwZXJmb3JtYW5jZS5tYXJrICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBwZXJmb3JtYW5jZS5jbGVhck1hcmtzICE9PSAnZnVuY3Rpb24nKSB7CiByZXR1cm47CiB9CgogdmFyIHVpZCA9IHBhcnNlSW50KE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKS5zcGxpdCgnMC4nKVsxXSkgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSwKIG1hcmtfbmFtZSA9IGxhYmVsICsgJ18nICsgdWlkLAogcGFydHMgPSBsYWJlbC5zcGxpdCgnfCcpLAogY2F0ZWdvcnkgPSBwYXJ0c1swXSwKIHZhcmlhYmxlID0gcGFydHNbMV0sCiBsYWJlbCA9IHBhcnRzWzJdLAogbWFya190aW1lLAogbWFya19lbnRyaWVzOwoKIHBlcmZvcm1hbmNlLm1hcmsobWFya19uYW1lKTsKIG1hcmtfZW50cmllcyA9IHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUobWFya19uYW1lKTsKCiBpZiAobWFya19lbnRyaWVzLmxlbmd0aCkgewogbWFya190aW1lID0gbWFya19lbnRyaWVzWzBdLnN0YXJ0VGltZTsKIHdpbmRvdy5fZ3RtLnB1c2goewogJ2V2ZW50JzogJ3BlcmZvcm1hbmNlX3RpbWluZycsCiAncGVyZm9ybWFuY2VfdGltaW5nLmNhdGVnb3J5JzogY2F0ZWdvcnksCiAncGVyZm9ybWFuY2VfdGltaW5nLnZhcmlhYmxlJzogdmFyaWFibGUsCiAncGVyZm9ybWFuY2VfdGltaW5nLnRpbWUnOiBtYXJrX3RpbWUgLyAxMDAwLAogJ3BlcmZvcm1hbmNlX3RpbWluZy5sYWJlbCc6IGxhYmVsCiB9KTsKIH0KIH07Cn0oKSk7Cjwvc2NyaXB0PgoKIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9hYmxpbmNvbG5fY29tYmluZWQubWluLmpzPzQ2NDIzMGYwIj48L3NjcmlwdD4KCgoKIDwvaGVhZD4KIDxib2R5IGNsYXNzPSJvbnNpdGUgIj4KIDxkaXYgaWQ9IndyYXAiIGNsYXNzPSJvdXRlcl93cmFwIj4KIAogPGRpdiBjbGFzcz0iYm9keV9yaWJib24gZXNpX3JpYmJvbiI+PC9kaXY+CgogCiAKPHNjcmlwdD4KIHdpbmRvdy52aW1lbyA9IHdpbmRvdy52aW1lbyB8fCB7fTsKPC9zY3JpcHQ+CjxkaXYgaWQ9InRvcG5hdl9kZXNrdG9wIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3AgIiByb2xlPSJiYW5uZXIiPgogPGRpdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfd3JhcHBlciI+CgogICA8YSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbG9nbyIgaHJlZj0iLy92aW1lby5jb20iIGFsdD0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiB0aXRsZT0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiBhcmlhLWxhYmVsPSJHbyB0byBWaW1lbyBob21lIHBhZ2UiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnZpbWVvX2hvbWUiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2hvbWVfY2xpY2siPgogIDxzdmcgYWx0PSJWaW1lbyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI0MCI+PHBhdGggZD0iTTIyLjQ0OCAxNC41NzVjLS4xMDQgMi4xNy0xLjYxOCA1LjE0Ni00LjU0NCA4LjkxMi0zLjAzIDMuOTQyLTUuNTkgNS45MTItNy42ODYgNS45MTItMS4yOTcgMC0yLjM5Ny0xLjIwNC0zLjMtMy42LS42LTIuMi0xLjIwMi00LjM5OC0xLjc5NC02LjU5OC0uNjY0LTIuMzk2LTEuMzgtMy42LTIuMTQ3LTMuNi0uMTY2IDAtLjc0Ny4zNTQtMS43NTMgMS4wNWwtMS4wNDgtMS4zNWMxLjEtLjk2NSAyLjE5LTEuOTMgMy4yNTctMi45MDUgMS40NjMtMS4yNjUgMi41NzMtMS45NCAzLjMtMi4wMDIgMS43MzItLjE2NiAyLjggMS4wMTcgMy4yMDUgMy41NTguNDM1IDIuNzQuNzM2IDQuNDQuOTAyIDUuMTE1LjQ5OCAyLjI3IDEuMDQ4IDMuNDAyIDEuNjUgMy40MDIuNDY2IDAgMS4xNzItLjczNyAyLjEwNS0yLjIxLjkzNC0xLjQ3MyAxLjQzMi0yLjU5MyAxLjUwNC0zLjM3LjEzMy0xLjI3Ny0uMzY1LTEuOTEtMS41MDYtMS45MS0uNTMgMC0xLjA4LjEyNS0xLjY1LjM2NCAxLjEtMy41OSAzLjE4Ni01LjMzMyA2LjI3Ny01LjIzIDIuMjczLjA3MyAzLjM1IDEuNTU2IDMuMjI3IDQuNDZtMTMuNzU1IDcuMDM0Yy0uOTMzIDEuNzY0LTIuMjIgMy4zNy0zLjg2IDQuODAzLTIuMjQgMS45My00LjQ3IDIuOTA1LTYuNyAyLjkwNS0xLjAzNy4wMDItMS44MjYtLjMzLTIuMzc2LS45OTQtLjU1LS42NjMtLjgxLTEuNTM1LS43NzctMi42MDMuMDMtMS4xLjM3Mi0yLjggMS4wMjUtNS4xMDQuNjU0LTIuMzAzLjk3Ni0zLjUzNy45NzYtMy43MDMgMC0uODYtLjMtMS4yOTctLjkwMi0xLjI5Ny0uMTk4IDAtLjc3LjM1My0xLjcwMiAxLjA0OGwtMS4xNTItMS4zNWMxLjA3LS45NjIgMi4xMzctMS45MjcgMy4yMDYtMi45MDIgMS40My0xLjI2NiAyLjUtMS45NCAzLjIwNS0yLjAwMiAxLjEtLjEwMyAxLjkxLjIzIDIuNDI4Ljk3Ni41MTguNzQ3LjcwNSAxLjcyMi41OCAyLjkxNS0uNDM1IDIuMDM0LS45MDIgNC42MDctMS40IDcuNzMtLjAzIDEuNDMuNDg4IDIuMTQ2IDEuNTU2IDIuMTQ2LjQ2NyAwIDEuMjk3LS40OTggMi41LTEuNDgzLjk5Ni0uODIgMS44MTUtMS41OTggMi40NS0yLjMyNGwuOTQyIDEuMjQ0bS00LjM1Ny0xNy44Yy0uMDMuODMtLjQ0NiAxLjYyOC0xLjI1NSAyLjM5NS0uOS44Ni0xLjk3IDEuMjk2LTMuMjA0IDEuMjk2LTEuOSAwLTIuODIyLS44My0yLjc1LTIuNDkuMDMyLS44Ni41NC0xLjY5IDEuNTI2LTIuNDkuOTg1LS43OTcgMi4wNzQtMS4xOSAzLjI3OC0xLjE5LjcwNSAwIDEuMjg2LjI3IDEuNzUzLjgyLjQ2Ny41NC42ODQgMS4xLjY1MyAxLjY2bTM1LjYxMiAxNy44Yy0uOTMzIDEuNzYzLTIuMjIgMy4zNy0zLjg2IDQuODAyLTIuMjQgMS45My00LjQ3IDIuOTA0LTYuNyAyLjkwNC0yLjE2OC4wMDItMy4yMTYtMS4yMDItMy4xNTMtMy41OTguMDMtMS4wNy4yMzgtMi4zNTUuNjIyLTMuODUuMzg0LTEuNTAzLjU5LTIuNjY1LjYyMy0zLjUwNS4wMy0xLjI2NS0uMzUzLTEuODk4LTEuMTUyLTEuODk4LS44NyAwLTEuOTEgMS4wMzYtMy4xMTIgMy4xLTEuMjc2IDIuMTY4LTEuOTYgNC4yNzQtMi4wNjQgNi4zMDgtLjA3MyAxLjQzLjA3MiAyLjU0LjQyNSAzLjI5OC0yLjMyNC4wNjQtMy45NjMtLjMyLTQuODg2LTEuMTUtLjgzLS43MzctMS4yMTItMS45NS0xLjE1LTMuNjUyLjAzLTEuMDY4LjE5OC0yLjEzNy40ODgtMy4yMDUuMjktMS4wNy40NTctMi4wMjMuNDg4LTIuODUzLjA2Mi0xLjIzNC0uMzg0LTEuODU3LTEuMzUtMS44NTctLjg0IDAtMS43NC45NTUtMi43MDYgMi44NTMtLjk2NiAxLjktMS41MDUgMy44OS0xLjYxIDUuOTU2LS4wNiAxLjg2Ny4wNTMgMy4xNzQuMzY0IDMuOS0yLjI5My4wNjItMy45Mi0uNDE1LTQuODc2LTEuNDUyLS43OTgtLjg2LTEuMTYtMi4xOC0xLjEtMy45NDIuMDMyLS44Ni4xODgtMi4wNzUuNDU3LTMuNjIuMjgtMS41NDYuNDI1LTIuNzUuNDU3LTMuNjIuMDYyLS42MDMtLjA4My0uOTAzLS40NDYtLjkwMy0uMTk3IDAtLjc2OC4zNC0xLjcwMiAxLjAxNWwtMS4yMDMtMS4zNDhjLjE2OC0uMTM1IDEuMjE2LTEuMSAzLjE1Ni0yLjkwNSAxLjQtMS4yOTcgMi4zNTQtMS45NyAyLjg1Mi0yLjAwMi44NzItLjA3MyAxLjU2Ny4yOSAyLjEwNiAxLjA4LjUzLjc4Ny44IDEuNjkuOCAyLjcyNyAwIC4zMzItLjAzMi42NTQtLjEwNS45NTQuNDk3LS43NjYgMS4wOC0xLjQzIDEuNzUyLTIgMS41MzctMS4zNCAzLjI2LTIuMDg2IDUuMTU3LTIuMjUyIDEuNjQtLjEzNSAyLjguMjUgMy41MDUgMS4xNTIuNTcuNzM2LjgzIDEuNzg0LjggMy4xNTMuMjM3LS4xOTguNDg2LS40MTYuNzQ2LS42NTQuNzY3LS45MDMgMS41MTQtMS42MiAyLjI1LTIuMTQ4IDEuMjM1LS45MDIgMi41Mi0xLjQgMy44Ni0xLjUwNCAxLjU5Ny0uMTM1IDIuNzUuMjUgMy40NTQgMS4xNTIuNjAyLjcyNi44NyAxLjc3NC44IDMuMTQzLS4wMzIuOTMzLS4yNiAyLjI4LS42NzUgNC4wNjUtLjQxNiAxLjc3My0uNjI0IDIuOC0uNjI0IDMuMDctLjAzLjY5NS4wMyAxLjE4Mi4xOTcgMS40NDIuMTY2LjI3LjU3LjM5NCAxLjIwMy4zOTQuNDY3IDAgMS4yOTctLjQ5NyAyLjUtMS40ODIuOTk2LS44MiAxLjgxNi0xLjU5OCAyLjQ1LTIuMzI0bC45NjMgMS4yNTRtMTguNzY1LS4wNTJjLS45NjUgMS41OTgtMi44NzQgMy4xOTUtNS43MDYgNC43OTMtMy41MzggMi4wMzItNy4xMjcgMy4wNS0xMC43NTggMy4wNS0yLjcwNiAwLTQuNjM2LS45MDQtNS44MDgtMi43LS44My0xLjIzMy0xLjIzNC0yLjY5Ni0xLjIwMy00LjQwNy4wMy0yLjY5OCAxLjIzNC01LjI3IDMuNi03LjcxIDIuNjAzLTIuNjY1IDUuNjc0LTQuMDAzIDkuMjEtNC4wMDMgMy4yNyAwIDUgMS4zMjggNS4yMDggMy45OTQuMTM1IDEuNzAyLS43OTggMy40NDUtMi44IDUuMjQtMi4xMzcgMS45Ni00LjgyNCAzLjIxNS04LjA2IDMuNzQ0LjYuODMgMS41MDQgMS4yNDUgMi43MDcgMS4yNDUgMi4zOTYgMCA1LjAyLS42MTMgNy44NjMtMS44MzcgMi4wMzMtLjg2IDMuNjMtMS43NTMgNC44MDMtMi42NzZsLjk0NSAxLjI2NW0tMTEuMzYtNS4yMjhjLjAzMi0uODkyLS4zMy0xLjM1LTEuMS0xLjM1LS45OTQgMC0yLjAxLjY4Ni0zLjA0OCAyLjA2Ni0xLjAzOCAxLjM4LTEuNTY3IDIuNjk3LTEuNTk4IDMuOTYyLS4wMiAwLS4wMi4yMTggMCAuNjQzIDEuNjMtLjYgMy4wNS0xLjUxNCA0LjI0Mi0yLjczOC45NjYtMS4wNTggMS40NjMtMS45MiAxLjUwNS0yLjU4M20yNC45NDYgMS44NjhjLS4xMzUgMy4wNzItMS4yNjUgNS43MTctMy40MDIgNy45NDctMi4xMzUgMi4yMy00Ljc5IDMuMzUtNy45NTUgMy4zNS0yLjYzNSAwLTQuNjM3LS44NS02LjAwNi0yLjU1LS45OTctMS4yNjctMS41NTctMi44NTQtMS42NS00Ljc1Mi0uMTY2LTIuODYzLjg2LTUuNDk4IDMuMS03Ljg5NCAyLjQwOC0yLjY2NSA1LjQyNy0zLjk5MyA5LjA1Ny0zLjk5MyAyLjMzNCAwIDQuMDk4Ljc4OCA1LjMgMi4zNDQgMS4xMzIgMS40NDMgMS42NSAzLjI5IDEuNTU3IDUuNTVtLTUuNjY0LS4xODVjLjAzLS45MDMtLjA5NC0xLjczMy0uMzc0LTIuNDgtLjI4LS43NDctLjY5NS0xLjEzLTEuMjI0LTEuMTMtMS43MDIgMC0zLjEwMi45MjMtNC4yMDIgMi43Ni0uOTMzIDEuNTAzLTEuNDMgMy4xMS0xLjUwNCA0LjgxMi0uMDMuODQuMTE0IDEuNTc3LjQ0NiAyLjIxLjM2NC43MzYuODgyIDEuMSAxLjU1NiAxLjEgMS41MDUgMCAyLjc5LS44ODMgMy44Ni0yLjY1Ni44OTItMS40NzIgMS4zOC0zLjAwOCAxLjQ0LTQuNjE1aC4wMDJ6IiBmaWxsPSIjMTEyMjMzIi8+PC9zdmc+CiAgPC9hPgogCiAgIDxuYXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnUiIHJvbGU9Im5hdmlnYXRpb24iIGFyaWEtbGFiZWw9Ik1haW4gbWVudSI+CiA8dWwgY2xhc3M9InRvcG5hdl9tZW51X2Rlc2t0b3BfbWFpbiIgcm9sZT0ibWVudWJhciI+CgogIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0iam9pbiI+CiA8YSBjbGFzcz0idG9wbmF2X21lbnVfam9pbiBqcy10b3BuYXZfbWVudV9hdXRoIiBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO3ZpbWVvLk1vZGFsLmNyZWF0ZSh7c2l6ZToneHNtYWxsJyxjb250ZW50Oicvam9pbj9tb2RhbD1uZXcnfSkiIGRhdGEtZ2EtZXZlbnQtY2xpY2s9InRvcF9uYXZ8am9pbiIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6am9pbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfam9pbl9jbGljayIgaHJlZj0iLy92aW1lby5jb20vam9pbiIgdGl0bGU9IkJlY29tZSBhIFZpbWVvIG1lbWJlciIgdGFiaW5kZXg9IjAiIHJlbD0idG9nZ2xlIiByb2xlPSJidXR0b24iIGFyaWEtb3ducz0idG9wbmF2X2pvaW4iPgogSm9pbiA8L2E+CgogICA8L2xpPgogCiAKIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJsb2dpbiI+CiA8YSBjbGFzcz0ianMtdG9wbmF2X21lbnVfYXV0aCIgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTt2aW1lby5TZXNzaW9uLmNyZWF0ZSgncmVnJywgbnVsbCwgdHJ1ZSk7IiBkYXRhLWdhLWV2ZW50LWNsaWNrPSJ0b3BfbmF2fGxvZ2luIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpsb2dpbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfbG9naW5fY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2xvZ19pbiIgdGl0bGU9IkxvZyBpbiB0byB5b3VyIGFjY291bnQiIHRhYmluZGV4PSIwIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9sb2dpbiI+CiBMb2cgaW4gPC9hPgoKICAgPC9saT4KIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0iY3JlYXRlIj4KIDxhIGNsYXNzPSJqcy10b3BuYXYtY3JlYXRlIHRvcG5hdl9oYXNfZHJvcGRvd24gdG9wbmF2X2ljb25fY2hldnJvbl9hIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDptYW5hZ2VfdmlkZW9zfGtleXdvcmQ6aG9zdF92aWRlb3MiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2NyZWF0ZV9jbGljayIgaHJlZj0iLy92aW1lby5jb20vY3JlYXRlIiB0aXRsZT0iIiB0YWJpbmRleD0iMCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfY3JlYXRlIj4KIEhvc3QgdmlkZW9zIDwvYT4KCiAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfY3JlYXRlIj4KICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpob3N0X3ZpZGVvc3xrZXl3b3JkOmNvbXBhcmVfcGxhbnMiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2NyZWF0ZV9tZW1iZXJzaGlwX29wdGlvbnNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3VwZ3JhZGUiIHRpdGxlPSJVcGdyYWRlIG9yIGNvbXBhcmUgb3VyIHBsYW5zIj5Db21wYXJlIHBsYW5zPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aG9zdF92aWRlb3N8a2V5d29yZDpwcm9mZXNzaW9uYWxzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfbWVtYmVyc2hpcF9vcHRpb25zX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9wcm9mZXNzaW9uYWxzIiB0aXRsZT0iR2V0IHByb2Zlc3Npb25hbCB2aWRlbyBob3N0aW5nIHRvb2xzIj5Qcm9mZXNzaW9uYWxzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aG9zdF92aWRlb3N8a2V5d29yZDpidXNpbmVzc2VzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfbWVtYmVyc2hpcF9vcHRpb25zX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9idXNpbmVzcyIgdGl0bGU9IkdldCBwb3dlcmZ1bCB2aWRlbyBtYXJrZXRpbmcgdG9vbHMiPkJ1c2luZXNzZXM8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpob3N0X3ZpZGVvc3xrZXl3b3JkOnZpZGVvX2xvdmVycyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfY3JlYXRlX21lbWJlcnNoaXBfb3B0aW9uc19jbGljayIgaHJlZj0iLy92aW1lby5jb20vZXZlcnlvbmUiIHRpdGxlPSJVcGxvYWQgYW5kIHNoYXJlIHlvdXIgdmlkZW9zIj5WaWRlbyBsb3ZlcnM8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpob3N0X3ZpZGVvc3xrZXl3b3JkOnZpZGVvX3NjaG9vbCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfY3JlYXRlX3ZpZGVvX3NjaG9vbF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vdmlkZW9zY2hvb2wiIHRpdGxlPSJMZWFybiBob3cgdG8gbWFrZSBiZXR0ZXIgdmlkZW9zIj5WaWRlbyBTY2hvb2w8L2E+CiA8L2xpPgogICA8L3VsPgogIDwvbGk+CiAKIAogPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9IndhdGNoIj4KIDxhIGNsYXNzPSJ0b3BuYXZfaGFzX2Ryb3Bkb3duIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDp3YXRjaCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3dhdGNoIiB0aXRsZT0iIiB0YWJpbmRleD0iMCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfd2F0Y2giPgogV2F0Y2ggPC9hPgoKICAgPHVsIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl93YXRjaCI+CiAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDpzdGFmZl9waWNrcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfc3RhZmZfcGlja3NfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2NoYW5uZWxzL3N0YWZmcGlja3MiIHRpdGxlPSJUaGUgYmVzdCB2aWRlb3Mgb24gVmltZW8sIGN1cmF0ZWQgZGFpbHkgYnkgb3VyIHRlYW0iPlN0YWZmIFBpY2tzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDpjYXRlZ29yaWVzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9jYXRlZ29yaWVzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9jYXRlZ29yaWVzIiB0aXRsZT0iQnJvd3NlIHZpZGVvcyBieSBpbnRlcmVzdCwgZ2VucmUsIGFuZCBtb3JlIj5DYXRlZ29yaWVzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDpjaGFubmVscyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfY2hhbm5lbHNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2NoYW5uZWxzIiB0aXRsZT0iVmlldyB2aWRlbyBwbGF5bGlzdHMgY3JlYXRlZCBhbmQgY3VyYXRlZCBieSBvdGhlciBtZW1iZXJzIj5DaGFubmVsczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6Z3JvdXBzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9ncm91cHNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2dyb3VwcyIgdGl0bGU9IldhdGNoIGFuZCBkaXNjdXNzIHZpZGVvcyB3aXRoIG90aGVycyI+R3JvdXBzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDphcHAiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX2FwcHNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2V2ZXJ5d2hlcmUiIHRpdGxlPSJXYXRjaCBWaW1lbyB2aWRlb3Mgb24gVFZzLCBwaG9uZXMsIHRhYmxldHMsIGFuZCBtb3JlIj5BcHBzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDptb3JlIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9tb3JlX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS93YXRjaCIgdGl0bGU9IkRpc2NvdmVyIG1vcmUgd2F5cyB0byB3YXRjaCBvbiBWaW1lbyI+TW9yZeKApjwvYT4KIDwvbGk+CiAgIDwvdWw+CiAgPC9saT4KIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0ib25kZW1hbmQiPgogPGEgY2xhc3M9InRvcG5hdl9oYXNfZHJvcGRvd24gdG9wbmF2X2lzX29uZGVtYW5kIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6b25fZGVtYW5kIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9vbmRlbWFuZF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vb25kZW1hbmQiIHRpdGxlPSJXYXRjaCBtb3ZpZXMsIHNlcmllcywgYW5kIG1vcmUiIHRhYmluZGV4PSIwIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9vbmRlbWFuZCI+CiBPbiBEZW1hbmQgPC9hPgoKICAgPHVsIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl9vbmRlbWFuZCI+CiAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6d2hhdHNfbmV3IiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9vbmRlbWFuZF93aGF0c19uZXdfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kIiB0aXRsZT0iU2VlIG5ldyBhbmQgbm90ZXdvcnRoeSB0aXRsZXMgYWRkZWQgdG8gT24gRGVtYW5kIj5XaGF04oCZcyBuZXc8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpvbl9kZW1hbmR8a2V5d29yZDpkaXNjb3ZlciIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfZGlzY292ZXJfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kL2Rpc2NvdmVyIiB0aXRsZT0iRGlzY292ZXIgdGl0bGVzIG91ciB0ZWFtIHJlY29tbWVuZHMiPkRpc2NvdmVyPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6Z2VucmVzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9vbmRlbWFuZF9nZW5yZXNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kL2Jyb3dzZSIgdGl0bGU9IkJyb3dzZSB0aXRsZXMgYnkgZ2VucmUiPkdlbnJlczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om9uX2RlbWFuZHxrZXl3b3JkOnR2X3NlcmllcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfdHZfc2VyaWVzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9vbmRlbWFuZC9icm93c2UvdHYrc2VyaWVzIiB0aXRsZT0iQnJvd3NlIHNlcmllcyBhbmQgVFYgc2hvd3MiPlRWICsgU2VyaWVzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6c3RhcnRfc2VsbGluZyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfc2VsbF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vb25kZW1hbmQvc3RhcnRzZWxsaW5nIiB0aXRsZT0iU2VsbCBkaXJlY3RseSB0byB5b3VyIGZhbnMgd2l0aCBWaW1lbyBPbiBEZW1hbmQiPlN0YXJ0IHNlbGxpbmc8L2E+CiA8L2xpPgogICA8L3VsPgogIDwvbGk+CiAKIDwvdWw+CiA8L25hdj48IS0tIC8udG9wbmF2X2Rlc2t0b3BfbWVudSAtLT4KIAogICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbWVudV9yaWdodCI+CgogICA8Zm9ybSBjbGFzcz0idG9wbmF2X21lbnVfc2VhcmNoIiBhY3Rpb249Ii8vdmltZW8uY29tL3NlYXJjaCIgbWV0aG9kPSJnZXQiIHJvbGU9InNlYXJjaCIgZGF0YS1kcy1wcm90ZWN0aW9uPgogPGlucHV0IGNsYXNzPSJ0b3BuYXZfbWVudV9zZWFyY2hfaW5wdXQganMtdG9wbmF2X21lbnVfc2VhcmNoX2lucHV0IGpzLXNlYXJjaF9hdXRvY29tcGxldGUiICB0eXBlPSJ0ZXh0IiBuYW1lPSJxIiB0aXRsZT0iU2VhcmNoIHZpZGVvcywgcGVvcGxlLCBhbmQgbW9yZSIgdmFsdWU9IiIgYXJpYS1sYWJlbD0iU2VhcmNoIHZpZGVvcywgcGVvcGxlLCBhbmQgbW9yZSIgcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIGF1dG9jb21wbGV0ZT0ib2ZmIj48YnV0dG9uIGNsYXNzPSJ0b3BuYXZfbWVudV9zZWFyY2hfc3VibWl0IHRvcG5hdl9pY29uX3NlYXJjaF9iIiB0eXBlPSJzdWJtaXQiIGFyaWEtbGFiZWw9IlNlYXJjaCI+PC9idXR0b24+CiA8L2Zvcm0+CiAKICAKICAKICAgPGEgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3VwbG9hZCB0b3BuYXZfaWNvbl91cGxvYWRfYiIgaHJlZj0iL3VwbG9hZCIgdGl0bGU9IlVwbG9hZCB5b3VyIHZpZGVvcyIgcm9sZT0iYnV0dG9uIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbXBvbmVudDp0b3BfbmF2fGtleXdvcmQ6dXBsb2FkIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl91cGxvYWRfY2xpY2siPjxzcGFuPlVwbG9hZDwvc3Bhbj48L2E+CiAgPC9kaXY+PCEtLSAvLnRvcG5hdl9tZW51X3JpZ2h0IC0tPgogIDwvZGl2PjwhLS0gLy50b3BuYXZfZGVza3RvcF93cmFwcGVyIC0tPgo8L2Rpdj4KCiA8bmF2IGlkPSJ0b3BuYXZfbW9iaWxlIiBjbGFzcz0idG9wbmF2X21vYmlsZSAiIHJvbGU9ImJhbm5lciI+CgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogIDxidXR0b24gY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9sZWZ0IHRvcG5hdl9tb2JpbGVfaGVhZGVyX2xvZ28ganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfbG9nbyB0b3BuYXZfaWNvbl9tb2JpbGVfdmxvZ29fYiI+CiAgPC9idXR0b24+CiA8YSBocmVmPSIvL3ZpbWVvLmNvbS9zZWFyY2giIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2J1dHRvbiB0b3BuYXZfbW9iaWxlX3B1bGxfcmlnaHQgdG9wbmF2X21vYmlsZV9oZWFkZXJfc2VhcmNoIHRvcG5hdl9pY29uX21vYmlsZV9zZWFyY2hfYiI+IDwvYT4KIDxzcGFuIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2hlYWRlcl90aXRsZSI+PC9zcGFuPgogPC9kaXY+CgogIDxzZWN0aW9uIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnUganMtdG9wbmF2X21vYmlsZV9tZW51X21haW4iPgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfY2xvc2UgdG9wbmF2X2ljb25fbW9iaWxlX3hfYiI+IDwvYnV0dG9uPgogPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX3JpZ2h0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbmdzIHRvcG5hdl9pY29uX21vYmlsZV9nZWFyX2IiPiA8L2J1dHRvbj4KIDwvZGl2PgoKIDx1bD4KICAgPGxpPgogPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfY2hhbm5lbF9iICIgaHJlZj0iLy92aW1lby5jb20vIj4KIFN0YWZmIFBpY2tzIDwvYT4KIDwvbGk+CiAgIDxsaT4KIDxhIGRhdGEtYWN0aW9uPSJsYXN0X3BhZ2UiIGRhdGEtYnJlZXplLWlnbm9yZSBjbGFzcz0idG9wbmF2X2ljb25fbW9iaWxlX2F2YXRhcl9iICIgaHJlZj0iL2xvZ19pbiI+CiA8c3BhbiBjbGFzcz0ibWVudV9hdXRoIj5Kb2luIG9yIGxvZyBpbjwvc3Bhbj4gPC9hPgogPC9saT4KICAgPGxpPgogPGEgZGF0YS1icmVlemUtaWdub3JlIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfc3Rhcl9iIiBocmVmPSIvL3ZpbWVvLmNvbS93YXRjaCI+CiBXYXRjaCA8L2E+CiA8L2xpPgogICA8bGk+CiA8YSBvbmNsaWNrPSJ2aW1lby5tb2JpbGUuZGVza3RvcF9zaGFyZWQuX3VwbG9hZCh0aGlzKTsgcmV0dXJuIGZhbHNlOyIgZGF0YS1icmVlemUtaWdub3JlIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfdXBsb2FkX2IiIGhyZWY9Ii8vdmltZW8uY29tL3VwbG9hZCI+CiBVcGxvYWQgPC9hPgogPC9saT4KICAgPGxpPgogPGEgZGF0YS1icmVlemUtaWdub3JlIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfdm9kX2IgIiBocmVmPSIvL3ZpbWVvLmNvbS9vbmRlbWFuZCI+CiBPbiBEZW1hbmQgPC9hPgogPC9saT4KICAgPGxpPgogPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfZm9yZ290X2IgIiBocmVmPSJodHRwczovL2hlbHAudmltZW8uY29tL2hjL2VuLXVzIj4KIEhlbHAgPC9hPgogPC9saT4KICA8L3VsPgogPC9zZWN0aW9uPgoKICA8c2VjdGlvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9tZW51IHRvcG5hdl9tb2JpbGVfbWVudV9zZXR0aW5ncyBqcy10b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3MiPgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluc19jbG9zZSB0b3BuYXZfaWNvbl9tb2JpbGVfYXJyb3dsZWZ0X2IiPiA8L2J1dHRvbj4KIDxzcGFuIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2hlYWRlcl90aXRsZSI+TW9yZSBzdHVmZjwvc3Bhbj4KIDwvZGl2PgoKIDx1bD4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS90ZXJtcyI+CiBUZXJtcyBvZiBTZXJ2aWNlIDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9wcml2YWN5Ij4KIFByaXZhY3kgUG9saWN5IDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9kbWNhIj4KIENvcHlyaWdodCA8L2E+CiAgIDwvbGk+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vY29va2llX3BvbGljeSI+CiBDb29raWVzIDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249ImRlc2t0b3AiIG9uY2xpY2s9InZpbWVvLm1vYmlsZS5kZXNrdG9wX3NoYXJlZC5fczJkcygpOyByZXR1cm4gZmFsc2UiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSI+CiBEZXNrdG9wIHNpdGUgPC9hPgogICA8L2xpPgogIDxsaT4KICA8YSBsYW5ndWFnZSBocmVmPSIjIj4KIExhbmd1YWdlIDwvYT4KICAgPHNlbGVjdCBvbmNoYW5nZT0idmltZW8ubW9iaWxlLmRlc2t0b3Bfc2hhcmVkLl9zMmwodGhpcykiIHRpdGxlPSJDaG9vc2UgYSBkaWZmZXJlbnQgbGFuZ3VhZ2UiIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3NfbGFuZ3VhZ2UiPgogICA8b3B0aW9uIGNsYXNzPSJzZWxlY3RlZCIgc2VsZWN0ZWQgdmFsdWU9ImVuIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIEVuZ2xpc2ggPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZXMiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogRXNwYcOxb2wgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZGUtREUiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogRGV1dHNjaCA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJmci1GUiIKIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiBGcmFuw6dhaXMgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iamEtSlAiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgog5pel5pys6KqeIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InB0LUJSIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIFBvcnR1Z3XDqnMgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ia28tS1IiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgog7ZWc6rWt7Ja0IDwvb3B0aW9uPgogIDwvc2VsZWN0PgogIDwvbGk+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vZmFxIj4KIEZBUSA8L2E+CiAgIDwvbGk+CiAgPC91bD4KCiA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfY29weXJpZ2h0Ij5UTSArIMKpIDIwMTcgVmltZW8sIEluYy48L2Rpdj4KIDwvc2VjdGlvbj4KPC9uYXY+Cgo8c2NyaXB0PgohZnVuY3Rpb24oYSxiKXthLnZpbWVvPWEudmltZW98fHt9LHZpbWVvLm1vYmlsZT12aW1lby5tb2JpbGV8fHt9LFZpbWVvPXZpbWVvLm1vYmlsZXx8e30sVmltZW8uZGVza3RvcF9zaGFyZWQ9VmltZW8uZGVza3RvcF9zaGFyZWR8fHt9O3ZhciBjPWIuZ2V0RWxlbWVudEJ5SWQoInRvcG5hdl9kZXNrdG9wIiksZD0ib250b3VjaHN0YXJ0ImluIGE/InRvdWNoc3RhcnQiOmEuUG9pbnRlckV2ZW50PyJwb2ludGVyZG93biI6YS5NU1BvaW50ZXJFdmVudD8iTVNQb2ludGVyRG93biI6ImNsaWNrIjsiY2xpY2siIT09ZCYmYy5hZGRFdmVudExpc3RlbmVyKGQsZnVuY3Rpb24oYSl7dmFyIGI9ImltZyI9PT1hLnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCk/YS50YXJnZXQucGFyZW50Tm9kZTphLnRhcmdldDtiLmNsYXNzTGlzdC5jb250YWlucygidG9wbmF2X2hhc19kcm9wZG93biIpJiYoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCkpfSwhMSksYy5hZGRFdmVudExpc3RlbmVyKGQsZnVuY3Rpb24oYyl7Yy50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJqcy10b3BuYXZfbWVudV9hdXRoIikmJihiLmNvb2tpZT0ibGFzdF9wYWdlPSIrZW5jb2RlVVJJQ29tcG9uZW50KGEubG9jYXRpb24ucGF0aG5hbWUpKyI7cGF0aD0nLyc7bWF4LWFnZT0xODAwOyIpfSwhMSksVmltZW8uZGVza3RvcF9zaGFyZWQuX3VwbG9hZD1mdW5jdGlvbihjKXtpZigvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7dmFyIGYsZyxkPSJ2aW1lbzovL2FwcC52aW1lby5jb20vdXBsb2FkP3JlZj1tb2JpbGV3ZWIiLGU9Ii91cGxvYWQiO3JldHVybiBmPWZ1bmN0aW9uKCl7Yi53ZWJraXRIaWRkZW58fChhLmxvY2F0aW9uPWUpfSxnPWZ1bmN0aW9uKCl7YS5sb2NhdGlvbj1kLHNldFRpbWVvdXQoZiwyNSl9LGcoKSwhMX1hLmxvY2F0aW9uPWMuaHJlZn0sVmltZW8uZGVza3RvcF9zaGFyZWQuX3MyZHM9ZnVuY3Rpb24oKXtiLmNvb2tpZT0ib3B0X291dF9tb2JpbGU9MTtleHBpcmVzPUZyaSwgMzEgRGVjIDk5OTkgMjM6NTk6NTkgR01UO2RvbWFpbj0iK3ZpbWVvLmRvbWFpbixhLmxvY2F0aW9uLnJlbG9hZCgpfSxWaW1lby5kZXNrdG9wX3NoYXJlZC5fczJsPWZ1bmN0aW9uKGIpe3ZhciBjPWIudmFsdWUsZD1uZXcgWE1MSHR0cFJlcXVlc3Q7ZC5vcGVuKCJQT1NUIiwiL3NldHRpbmdzL2xvY2FsZSIpLGQuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEh0dHBSZXF1ZXN0IiksZC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSxkLnNlbmQoImxvY2FsZT0iK2MrIiZ0b2tlbj0iK3ZpbWVvLnhzcmZ0KSxkLm9ubG9hZD1mdW5jdGlvbigpezIwMD09PWQuc3RhdHVzJiZhLmxvY2F0aW9uLnJlbG9hZCgpfX07dmFyIGU9ImNsaWNrIixmPSJibG9jayIsZz0ibm9uZSIsaD1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9sb2dvIik7aCYmaC5hZGRFdmVudExpc3RlbmVyKGUsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSxhLnByZXZlbnREZWZhdWx0KCk7dmFyIGM9Yi5xdWVyeVNlbGVjdG9yKCIuanMtdG9wbmF2X21vYmlsZV9tZW51X21haW4iKTtjLnN0eWxlLmRpc3BsYXk9Zjt2YXIgZD1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9jbG9zZSIpO2QuYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVmYXVsdCgpLGMuc3R5bGUuZGlzcGxheT1nfSk7dmFyIGg9Yi5xdWVyeVNlbGVjdG9yKCIuanMtdG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzIiksaT1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9zZXR0aW5ncyIpO2kuYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVmYXVsdCgpLGguc3R5bGUuZGlzcGxheT1mLGMuc3R5bGUuZGlzcGxheT1nO3ZhciBkPWIucXVlcnlTZWxlY3RvcigiLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbnNfY2xvc2UiKTtkLmFkZEV2ZW50TGlzdGVuZXIoZSxmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpLGEucHJldmVudERlZmF1bHQoKSxoLnN0eWxlLmRpc3BsYXk9ZyxjLnN0eWxlLmRpc3BsYXk9Zn0pfSl9LCExKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZihhKXt2YXIgYj1uZXcgWE1MSHR0cFJlcXVlc3Q7Yi5vcGVuKCJQT1NUIiwiL3NldHRpbmdzL25hdiIpLGIuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEh0dHBSZXF1ZXN0IiksYi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSxiLnNlbmQoIm1lc3NhZ2Vfc3RhdGU9IithKyImdG9rZW49Iit2aW1lby54c3JmdCksYi5vbmxvYWQ9ZnVuY3Rpb24oKXt9fXZhciBhPWIuZ2V0RWxlbWVudEJ5SWQoInRvcG5hdl9tZW51X2F2YXRhciIpO2lmKGEpe3ZhciBjPWEucXVlcnlTZWxlY3RvcigiLnRvcG5hdl9tZW51X2F2YXRhcl9idWJibGUiKSxlPShhLnF1ZXJ5U2VsZWN0b3IoIiN0b3BuYXZfdXNlcl9kcm9wZG93biIpLCExKTtjJiZjLmNsYXNzTGlzdC5hZGQoIm9uIiksYS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7ZXx8KGU9ITAsYyYmYy5jbGFzc0xpc3QucmVtb3ZlKCJvbiIpLGYoMSkpfSwhMSl9fSwxZTMpfSh3aW5kb3csZG9jdW1lbnQpOwo8L3NjcmlwdD4KCiA8ZGl2IGNsYXNzPSJ3cmFwX2NvbnRlbnQiPgogCgoKCjxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9jb250YWluZXIiPgogPGRpdiBjbGFzcz0iZXhjZXB0aW9uX3NlY3Rpb24gZXhjZXB0aW9uX3NlY3Rpb24tLWluZm8iPgogPGRpdiBjbGFzcz0iZXhjZXB0aW9uX3NocnVnX28iPjwvZGl2PgogPGgxIGNsYXNzPSJleGNlcHRpb25fdGl0bGUgaXJpc19oZWFkZXIiPlNvcnJ5LCB3ZSBjb3VsZG7igJl0IGZpbmQgdGhhdCBwYWdlPC9oMT4KCiA8ZGl2IGNsYXNzPSJleGNlcHRpb25fY29udGVudCI+CiA8cCBjbGFzcz0iZXhjZXB0aW9uX21lc3NhZ2UiPgogIDwvcD4KCiA8ZGl2IGNsYXNzPSJleGNlcHRpb25fbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uLS11cHNlbGwiPgogPGRpdiBjbGFzcz0iaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbC1pY29uIj4KIDxzcGFuIGNsYXNzPSJpcmlzX2ljIGlzLS0xNiI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6TTcgNGgydjJIN1Y0em0wIDNoMnY1SDdWN3oiLz48L3N2Zz48L3NwYW4+CiA8L2Rpdj4KCiA8ZGl2IGNsYXNzPSJpcmlzX25vdGlmaWNhdGlvbi1oZWFkZXIiPgogPHN0cm9uZz5SZWFzb25zIHlvdSBtaWdodCBiZSBzZWVpbmcgdGhpcyBwYWdlPC9zdHJvbmc+CiA8L2Rpdj4KCiA8dWwgY2xhc3M9ImlyaXNfbm90aWZpY2F0aW9uLWxpc3QiPgogIDxsaT5JdCBleGlzdHMsIGJ1dCB5b3UgZG9u4oCZdCBoYXZlIHBlcm1pc3Npb24gdG8gc2VlIGl0LCBvciB5b3UgbmVlZCB0byA8YSBvbmNsaWNrPSJ2aW1lby5TZXNzaW9uLmNyZWF0ZSgpIj5sb2cgaW48L2E+LjwvbGk+CiAgPGxpPk5vdGhpbmcgaGFzIGV2ZXIgZXhpc3RlZCBoZXJlLiBTcG9va3kuPC9saT4KIDxsaT5Tb21ldGhpbmcgb25jZSBsaXZlZCBoZXJlLCBidXQgaGFzIGJlZW4gZGVsZXRlZC48L2xpPgogPC91bD4KPC9kaXY+CgogIDxmb3JtIGNsYXNzPSJleGNlcHRpb25fc2VhcmNoIiBhY3Rpb249Ii9zZWFyY2giIG1ldGhvZD0iZ2V0Ij4KIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtaW5wdXQtd3JhcHBlciI+CiA8aW5wdXQgY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtaW5wdXQgaXJpc19pbnB1dCBpcmlzX2lucHV0LS1zZWFyY2gganMtc2VhcmNoX2F1dG9jb21wbGV0ZSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgogPC9kaXY+CiA8YnV0dG9uIGNsYXNzPSJleGNlcHRpb25fc2VhcmNoLWJ1dHRvbiBpcmlzX2J0biBpcmlzX2J0bi0tcHJpbWFyeSI+CiA8c3BhbiBjbGFzcz0iaXJpc19idG4tY29udGVudCI+U2VhcmNoPC9zcGFuPgogPC9idXR0b24+CiA8L2Zvcm0+CiAgPC9kaXY+CiA8L2Rpdj4KCiA8ZGl2IGNsYXNzPSJleGNlcHRpb25fYXV4aWxpYXJ5Ij48L2Rpdj4KPC9kaXY+CgogPC9kaXY+CgogIAo8Zm9vdGVyIGNsYXNzPSJmb290ZXJfdjIgZm9vdGVyX3YyLS1yZXNwb25zaXZlIj4KICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX3NpdGVtYXAiPgogPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19saW5rcyI+CgogPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5WaW1lbzwvc3Bhbj4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiA8L2Rpdj4KIDwvaDQ+CiA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvYWJvdXQiIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19hYm91dF9jbGljayI+CiBBYm91dCBWaW1lbyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvYmxvZyIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpbWVvX2Jsb2dfY2xpY2siPgogVmltZW8gQmxvZyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvaGVscC9ndWlkZWxpbmVzIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmltZW9fZ3VpZGVsaW5lc19jbGljayI+CiBWaW1lbyBHdWlkZWxpbmVzIDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLnZpbWVvLmNvbSIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2RldmVsb3BlcnNfY2xpY2siPgogRGV2ZWxvcGVycyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvam9icyI+CiBKb2JzIDwvYT4KIDwvbGk+CiA8L3VsPgogPC9zZWN0aW9uPgoKIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+SGVscDwvc3Bhbj4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiA8L2Rpdj4KIDwvaDQ+CiA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvaGVscCIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2hlbHBfY2VudGVyX2NsaWNrIj4KIEhlbHAgQ2VudGVyIDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiIGhyZWY9Ii92aWRlb3NjaG9vbCIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpZGVvX3NjaG9vbF9jbGljayI+CiBWaWRlbyBTY2hvb2wgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2hlbHAvZmFxIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZmFxX2NsaWNrIj4KIEZBUSA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvZm9ydW1zIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZm9ydW1zX2NsaWNrIj4KIEZvcnVtcyA8L2E+CiA8L2xpPgogPC91bD4KIDwvc2VjdGlvbj4KCiA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPk1vcmU8L3NwYW4+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogPC9kaXY+CiA8L2g0PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL29uZGVtYW5kIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfb25fZGVtYW5kX2NsaWNrIj4KIE9uIERlbWFuZCA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvZXZlcnl3aGVyZSIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2V2ZXJ5d2hlcmVfY2xpY2siPgogRXZlcnl3aGVyZSA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvdXBsb2FkIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBsb2FkX2NsaWNrIj4KIFVwbG9hZCA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvc2l0ZV9tYXAiIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zaXRlX21hcF9jbGljayI+CiBTaXRlIE1hcCA8L2E+CiA8L2xpPgogPC91bD4KIDwvc2VjdGlvbj4KCiA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlVwZ3JhZGU8L3NwYW4+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogPC9kaXY+CiA8L2g0PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL3BsdXM/dj1mb290ZXIiPgogVmltZW8gUGx1cyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvcHJvP3Y9Zm9vdGVyIj4KIFZpbWVvIFBSTyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvYnVzaW5lc3MiPgogVmltZW8gQnVzaW5lc3MgPC9hPgogPC9saT4KIDwvdWw+CiA8L3NlY3Rpb24+CiA8L2Rpdj4KCiAgIDxhc2lkZSBpZD0iZm9vdGVyX3RpcCIgY2xhc3M9ImZvb3Rlcl92Ml9fdGlwIiBhcmlhLWxpdmU9InBvbGl0ZSI+CiA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fdGlwLWhlYWRlciI+RGlkIHlvdSBrbm93PzwvaDQ+CiA8cCBjbGFzcz0iYWN0aXZlIGZvb3Rlcl92Ml9fdGlwLWNvbnRlbnQiPk1hc3RlciB0aGUgc2V2ZW4gc2VhcyBvZiA8YSBocmVmPSIvdmlkZW9zY2hvb2wvbGVzc29uLzI1NC90aGUtYmFzaWNzLW9mLXVuZGVyd2F0ZXItdmlkZW8iPnVuZGVyd2F0ZXIgdmlkZW88L2E+IGJ5IGRpdmluZyBpbnRvIFZpbWVvIFZpZGVvIFNjaG9vbC48L3A+CiA8L2FzaWRlPgogPC9zZWN0aW9uPgogCiAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fYXV4aWxpYXJ5ICI+CgogPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbCI+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50Ij4KIDxwPlRNICsgJmNvcHk7IDIwMTcgVmltZW8sIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC48L3A+CiA8L2Rpdj4KIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL3Rlcm1zIiB0aXRsZT0iVGVybXMgJmFtcDsgQ29uZGl0aW9ucyI+CiBUZXJtcyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvcHJpdmFjeSIgdGl0bGU9IlByaXZhY3kgUG9saWN5Ij4KIFByaXZhY3kgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL2RtY2EiIHRpdGxlPSJDb3B5cmlnaHQgSW5mb3JtYXRpb24iPgogQ29weXJpZ2h0IDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9jb29raWVfcG9saWN5IiB0aXRsZT0iTGVhcm4gbW9yZSBhYm91dCBob3cgVmltZW8gdXNlcyBjb29raWVzIj4KIENvb2tpZXMgPC9hPgogPC9saT4KIDwvdWw+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50IGZvb3Rlcl92Ml9fd2l0aGxvdmUiPgogTWFkZSB3aXRoIDxhIGhyZWY9Imh0dHBzOi8vdmltZW8uY29tL2xvdmUiPjxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIGZvb3Rlcl92Ml9fbG92ZWhlYXJ0IGZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWljb24iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEyIDEyIj48cGF0aCBkPSJNOSAyQzcuMzEyIDIgNiAzLjUgNiAzLjVTNC42ODcgMiAzIDJDMS4zMTIgMiAwIDMuMzEyIDAgNWMwIDMuMTg4IDMuNzUgMy4wMTIgNiA2IDIuMjUtMi45ODggNi0yLjgxMiA2LTYgMC0xLjY4OC0xLjMxMy0zLTMtM3oiLz48L3N2Zz48L2E+IGluIE5ZQy4gPC9kaXY+CiA8L2Rpdj4KCiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2ZpbHRlcnMgZm9vdGVyX3YyX19hdXhpbGlhcnktY29udGVudCI+CiA8c3BhbiBjbGFzcz0ibGFuZ3VhZ2UiPgogTGFuZ3VhZ2U6CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIjbGFuZ3VhZ2UiIG9uY2xpY2s9InZpbWVvLk1vZGFsLmNyZWF0ZSh7Y29udGVudDogJy9zZXR0aW5ncy9sb2NhbGUnLCBzaXplOiAnc21hbGwnfSk7IHJldHVybiBmYWxzZTsiIHRpdGxlPSJDaG9vc2UgYSBkaWZmZXJlbnQgbGFuZ3VhZ2UiPkVuZ2xpc2g8L2E+CiA8L3NwYW4+CgogIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2ZpbHRlciI+TWF0dXJlIGNvbnRlbnQgZmlsdGVyOiA8L3NwYW4+PGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCBmb290ZXJfdjJfX2ZpbHRlcnNfX2xhbmcgY29udGVudGZpbHRlciBqcy1mb290ZXJfY29udGVudGZpbHRlcl9saW5rIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InZpbWVvLk1vZGFsLmNyZWF0ZSh7Y29udGVudDogJy9zZXR0aW5ncy9jb250ZW50cmF0aW5nJ30pIiB0aXRsZT0iQ2hhbmdlIHlvdXIgbWF0dXJlIGNvbnRlbnQgZmlsdGVyIj5Ob25lPC9hPgogIDwvZGl2PgoKPC9zZWN0aW9uPgo8L2Zvb3Rlcj4KIAogPC9kaXY+CgogCiAKIAogCjxzY3JpcHQ+CiB2YXIgX19mYSA9IF9fZmEgfHwgW107CiBfX2ZhLnB1c2goWyd0cmFja1BhZ2V2aWV3J10pOwoKICAvLyBBbmFseXRpY3MgU2V0dXAKIHZhciBfZ3RtID0gX2d0bSB8fCBbXSwKIF9pbml0aWFsX2d0bV9zdGF0ZSA9IHsiZXhjZXB0aW9uX2h0dHBfY29kZSI6IkhUVFBcLzEuMSA0MDQgTm90IEZvdW5kIiwibGFuZ3VhZ2UiOiJlbiIsInVzZXJfc3RhdHVzIjoibG9nZ2VkX291dCIsInVzZXJfdHlwZSI6Im5vbmUiLCJnYV91bml2ZXJzYWxfaWQiOiJVQS03NjY0MS04IiwiY29tc2NvcmVfc2l0ZV9pZCI6MTAzNDgyODl9OwoKIF9pbml0aWFsX2d0bV9zdGF0ZVsndnVpZCddID0gZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKXZ1aWRccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKTsKIF9pbml0aWFsX2d0bV9zdGF0ZVsnZ3RtLnN0YXJ0J10gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKIF9pbml0aWFsX2d0bV9zdGF0ZVsnZXZlbnQnXSA9ICdndG0uanMnOwogX2d0bS5wdXNoKF9pbml0aWFsX2d0bV9zdGF0ZSk7CiAKIC8qKgogKiBJZiB0aGUgY3VycmVudCByZXF1ZXN0IHdhcyBidWNrZXRlZCBpbiBhbiBBQkxpbmNvbG4gZXhwZXJpbWVudCwKICogc2VuZCB0aGUgc2VsZWN0ZWQgdHJlYXRtZW50IGJhY2sgZnJvbSB0aGUgY2xpZW50LCB0byBmaWx0ZXIgYWIgdGVzdAogKiBkYXRhIGRvd24gdG8gbm9uLXJvYm90IHVzZXJzIHRoYXQgcnVuIEphdmFTY3JpcHQuCiAqLwogaWYgKCJBQkxpbmNvbG4iIGluIHdpbmRvdykgewogKGZ1bmN0aW9uICgpIHsKICAgfSkoKTsKIH0KCiAgdmFyIF9leHRlbmQgPSBmdW5jdGlvbigpe2Zvcih2YXIgcj1hcmd1bWVudHNbMF0sbj0xLGU9YXJndW1lbnRzLmxlbmd0aDtlPm47bisrKXt2YXIgdD1hcmd1bWVudHNbbl07Zm9yKHZhciBhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmKHJbYV09dFthXSl9cmV0dXJuIHJ9OwoKICB2YXIgQ1NTX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL3N0eWxlcy9jc3Nfb3B0LycsCiBKU19ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvJywKIElNQUdFX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL2ltYWdlc192Ni8nLAogU1ZHX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL3N2Zy8nLAogIEJVSUxEX0hBU0ggPSAnNzI0NTQnOwoKICB2YXIgdmltZW8gPSBfZXh0ZW5kKCh3aW5kb3cudmltZW8gfHwge30pLCB7ImFwcF92ZXJzaW9uIjoidjYiLCJkb21haW4iOiJ2aW1lby5jb20iLCJ1cmwiOiJ2aW1lby5jb20iLCJjdXJfdXNlciI6ZmFsc2UsImlzX21vYmlsZSI6ZmFsc2V9KTsKIHZpbWVvLmNvbmZpZyA9IF9leHRlbmQoKHZpbWVvLmNvbmZpZyB8fCB7fSksIHsibG9jYWxlIjoiZW4ifSk7CgogIHZhciBsb2NhbGVDb25maWcgPSB7CiBsYW5nOiAnZW4nLAogJ0RhdGUnOiB7CiBtb250aHM6IFsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSwKIG1vbnRoc19hYmJyOiBbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLAogZGF5czogWyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLAogZGF5c19hYmJyOiBbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLAoKIC8vIEN1bHR1cmUncyBkYXRlIG9yZGVyOiBNTS9ERC9ZWVlZCiBkYXRlT3JkZXI6IFsnZGF0ZScsICdtb250aCcsICd5ZWFyJ10sCiBzaG9ydERhdGU6ICclZC8lbS8lWScsCiBzaG9ydFRpbWU6ICclSTolTSVwJywKIEFNOiAnQU0nLAogUE06ICdQTScsCiBmaXJzdERheU9mV2VlazogMCwKCiAvLyBEYXRlLkV4dHJhcwogb3JkaW5hbDogZnVuY3Rpb24oZGF5T2ZNb250aCl7CiByZXR1cm4gZGF5T2ZNb250aDsKIH0KIH0sCiAnRGF0ZVBpY2tlcic6IHsKIHNlbGVjdF9hX3RpbWU6ICJTZWxlY3QgYSB0aW1lIiwKIHVzZV9tb3VzZV93aGVlbDogIlVzZSB0aGUgbW91c2Ugd2hlZWwgdG8gcXVpY2tseSBjaGFuZ2UgdmFsdWUiLAogdGltZV9jb25maXJtX2J1dHRvbjogIk9LIiwKIGFwcGx5X3JhbmdlOiAiQXBwbHkiLAogY2FuY2VsOiAiQ2FuY2VsIiwKIHdlZWs6ICJXayIgfSwKICAnTnVtYmVyJzogewogZGVjaW1hbDogJy4nLAogZ3JvdXA6ICcsJywKIGN1cnJlbmN5OiB7CiBwcmVmaXg6ICckJwogfQogfSwKICdGb3JtVmFsaWRhdG9yJzogeyJyZXF1aXJlZCI6IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIiwicmVxdWlyZWRDaGsiOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiJ9IH07CgogdmFyIGZ1bGxMb2NhbGUgPSAnJzsKCiAKICB2YXIgQ29weSA9IHt0cmFuc2xhdGU6ZnVuY3Rpb24odCxpLHUpe3ZhciBlPSdvYmplY3QnIT10eXBlb2YgdGhpcy5kaWN0W3RdP3RoaXMuZGljdFt0XTppP3RoaXMuZGljdFt0XS5wbHVyYWw6dGhpcy5kaWN0W3RdLnNpbmd1bGFyO3JldHVybidvYmplY3QnPT10eXBlb2YgdSYmKGU9dGhpcy5zdWJzdGl0dXRlKGUsdSkpLGV9LHN1YnN0aXR1dGU6ZnVuY3Rpb24odCxpKXtyZXR1cm4gdm9pZCAwIT09dC5zdWJzdGl0dXRlP3Quc3Vic3RpdHV0ZShpKTp0LnJlcGxhY2UoL1xcP1x7KFtee31dKylcfS9nLGZ1bmN0aW9uKHQsdSl7cmV0dXJuJ1xcJz09dC5jaGFyQXQoMCk/dC5zbGljZSgxKTpudWxsIT1pW3VdP2lbdV06Jyd9KX0sZGljdDp7fX07CiBDb3B5LmRpY3QgPSB7ImRpZF95b3VfbWVhbl9lbWFpbCI6IkRpZCB5b3UgbWVhbiA8ZW0+e1NVR0dFU1R9PFwvZW0+PyIsImVtYWlsX3Bhc3N3b3JkX21pc21hdGNoIjoiRW1haWwgYW5kIHBhc3N3b3JkIGRvIG5vdCBtYXRjaCIsImp1c3Rfbm93IjoianVzdCBub3ciLCJzZWNvbmRzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gc2Vjb25kIGFnbyIsInBsdXJhbCI6IntDT1VOVH0gc2Vjb25kcyBhZ28ifSwibWludXRlc19hZ28iOnsic2luZ3VsYXIiOiJ7Q09VTlR9IG1pbnV0ZSBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IG1pbnV0ZXMgYWdvIn0sImhvdXJzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gaG91ciBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IGhvdXJzIGFnbyJ9LCJvcGVuX2NvbW1lbnRfYm94IjoiQWRkIG5ldyBjb21tZW50IGluc3RlYWQgJnJhcXVvOyIsInVybF91bmF2YWlsYWJsZSI6IlNvcnJ5LCB0aGlzIHVybCBpcyB1bmF2YWlsYWJsZS4iLCJ1bnNhdmVkX2NoYW5nZXNfZ2VuZXJpYyI6IllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcywgYXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRvIGxlYXZlPyIsImFkZCI6IkFkZCIsInJlbW92ZSI6IlJlbW92ZSIsInNlbGVjdCI6IlNlbGVjdCIsIm5vX2ZvbGxvd2Vyc19mb3JfbGV0dGVyIjoiWW91IGRvbiZyc3F1bzt0IGZvbGxvdyBhbnlvbmUgdGhhdCBiZWdpbiB3aXRoIHRoZSBsZXR0ZXIgJmxkcXVvO3tQQUdFX0xFVFRFUn0mcmRxdW87Iiwic2hhcmVfbGltaXRfcmVhY2hlZCI6IllvdSBoYXZlIHJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVzZXJzIHRvIHNoYXJlIHdpdGguIiwiYXRfbGVhc3Rfb25lIjoiVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgdXNlci4iLCJhdmFpbGFibGUiOiJBdmFpbGFibGUiLCJ1bmF2YWlsYWJsZSI6IlVuYXZhaWxhYmxlIiwiYnJvd3NlX2Vycm9yX2dlbmVyaWMiOiJTb3JyeSwgdGhlcmUgd2FzIGFuIGVycm9yIiwiYnJvd3NlX2Vycm9yX25vX3ZpZGVvcyI6IlNvcnJ5LCBubyB2aWRlb3MgZm91bmQiLCJmb2xsb3ciOiJGb2xsb3ciLCJmb2xsb3dpbmciOiJGb2xsb3dpbmciLCJ1bmZvbGxvdyI6IlVuZm9sbG93IiwidW5mb2xsb3dpbmciOiJVbmZvbGxvd2luZyIsImNvdW50X2NvbW1lbnRzIjp7InNpbmd1bGFyIjoie0NPVU5UfSBjb21tZW50IiwicGx1cmFsIjoie0NPVU5UfSBjb21tZW50cyJ9LCJmaXJzdF9jb21tZW50IjoiQmUgdGhlIGZpcnN0IHRvIGNvbW1lbnRcdTIwMjYiLCJub19jb21tZW50c19mb3JfeW91IjoiRm9yYmlkZGVuLiBZb3UgY2Fubm90IHBvc3QgY29tbWVudHMgb24gdGhpcyBwYWdlLiIsIm9vcHMiOiJPb3BzISIsInBsYXllcl90cnlfYWdhaW4iOiJUaGF0IHdhc24ndCBzdXBwb3NlZCB0byBoYXBwZW4uIFBsZWFzZSB0cnkgYWdhaW4gaW4gYSBmZXcgbWludXRlcy4iLCJkdXJhdGlvbl9pbnB1dF9taW5fZHVyYXRpb24iOiJUaGUgZHVyYXRpb24gY2Fubm90IGJlIGxlc3MgdGhhbiB7TUlOX0RVUkFUSU9OfS4iLCJkdXJhdGlvbl9pbnB1dF9tYXhfZHVyYXRpb24iOiJUaGUgZHVyYXRpb24gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiB7TUFYX0RVUkFUSU9OfS4iLCJkdXJhdGlvbl9pbnB1dF9pbnZhbGlkX2NoYXJhY3RlcnMiOiIwLTkgYW5kIDogYXJlIHRoZSBvbmx5IGFjY2VwdGFibGUgaW5wdXRzLiIsImNsb3NlIjoiQ2xvc2UiLCJleHBhbmQiOiJFeHBhbmQiLCJsb2FkaW5nIjoiTG9hZGluZy4uLiIsInRvcCI6InRvcCIsImFkdmFuY2VkX3NlYXJjaCI6IkFkdmFuY2VkIFNlYXJjaCIsIm5vX3N1Z2dlc3Rpb25zIjoiTm8gc3VnZ2VzdGlvbnMiLCJyZWNlbnRfc2VhcmNoZXMiOiJSZWNlbnQgU2VhcmNoZXMiLCJzZWFyY2hfYWxsIjoiU2VhcmNoIEFsbCBvZiBWaW1lbyIsImVtYWlsX2FuZF9wYXNzd29yZCI6IlBsZWFzZSBlbnRlciB5b3VyIGVtYWlsIGFuZCBwYXNzd29yZCIsImVtYWlsX2FkZHJlc3MiOiJQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIiwibmFtZV9lbWFpbF9hbmRfcGFzc3dvcmQiOiJQbGVhc2UgZW50ZXIgeW91ciBuYW1lLCBlbWFpbCwgYW5kIHBhc3N3b3JkIiwiQWN0aXZpdHkiOiJBY3Rpdml0eSIsIkZvbGxvdyI6IkZvbGxvdyIsIkZvbGxvd2luZyI6IkZvbGxvd2luZyIsIkxvYWRpbmciOiJMb2FkaW5nIiwiTm8gYWN0aXZpdHkgaW4gdGhlIHBhc3QgMzAgZGF5cyI6Ik5vIGFjdGl2aXR5IGluIHRoZSBwYXN0IDMwIGRheXMiLCJTZWUgYWxsIjoiU2VlIGFsbCIsIlVuZm9sbG93IjoiVW5mb2xsb3ciLCJWaWV3IG1lc3NhZ2UiOiJWaWV3IG1lc3NhZ2UiLCJXZSdsbCBhbGVydCB5b3Ugb25jZSBzb21ldGhpbmcgY29vbCBoYXBwZW5zLiI6IldlJ2xsIGFsZXJ0IHlvdSBvbmNlIHNvbWV0aGluZyBjb29sIGhhcHBlbnMuIn07Cjwvc2NyaXB0PgoKCiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvcmVhY3RfcHJvZF9jb21iaW5lZC5taW4uanM/YjZlZTdhNGUiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L2V4Y2VwdGlvbl9jb21iaW5lZC5taW4uanM/MGM3YWFlODQiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L2FjdGl2aXR5X3RvcG5hdl9jb21iaW5lZC5taW4uanM/NTM5YjZjODMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L21vZHVsZXMvZ2xvYmFsL2FibGluY29sbi9ob3N0X3ZpZGVvcy5taW4uanM/NjVkYzQ1MWEiPjwvc2NyaXB0PgoKIDxzY3JpcHQgYXN5bmMgc3JjPSIvL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndG0uanM/aWQ9R1RNLVJCS0smbD1fZ3RtIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiBvblZpbWVvRG9tUmVhZHkoZSkgewogICAKIChmdW5jdGlvbigpIHsKIGlmICh0eXBlb2YgdmltZW8gIT09ICd1bmRlZmluZWQnICYmIHZpbWVvLmN1cl91c2VyKSB7CiB2aW1lby5jb25maWcuYXBpID0ge307CiB2aW1lby5jb25maWcuYXBpLnVybCA9ICdhcGkudmltZW8uY29tJzsKIHZpbWVvLmNvbmZpZy5hcGkuand0ID0gICdleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKMElqb3hPVFE1TXpNMk9URXNJbVY0Y0NJNk1UUTVNRGN6TkRnM01YMC5WS1g5WkMxY3JLS0tPdTY5cE1OeldaRGxwNWpfQkR5MlozS3hpRVVNWDZrJzsKIHZpbWVvLmNvbmZpZy5hcGkudmVyc2lvbiA9ICczLjMnOwogfQogfSgpKTsKCiB3aW5kb3cudmltZW8gPSB3aW5kb3cudmltZW8gfHwge307CiB3aW5kb3cudmltZW8uZXhjZXB0aW9uX2RhdGEgPSB7InRpdGxlIjoiU29ycnksIHdlIGNvdWxkblx1MjAxOXQgZmluZCB0aGF0IHBhZ2UiLCJtZXNzYWdlIjoiIiwibm90aWZpY2F0aW9uIjoiPGRpdiBjbGFzcz1cImV4Y2VwdGlvbl9ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbFwiPlxuIDxkaXYgY2xhc3M9XCJpcmlzX25vdGlmaWNhdGlvbi0tdXBzZWxsLWljb25cIj5cbiA8c3BhbiBjbGFzcz1cImlyaXNfaWMgaXMtLTE2XCI+PHN2ZyB4bWxucz1cImh0dHA6XC9cL3d3dy53My5vcmdcLzIwMDBcL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj48cGF0aCBkPVwiTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6TTcgNGgydjJIN1Y0em0wIDNoMnY1SDdWN3pcIlwvPjxcL3N2Zz48XC9zcGFuPlxuIDxcL2Rpdj5cblxuIDxkaXYgY2xhc3M9XCJpcmlzX25vdGlmaWNhdGlvbi1oZWFkZXJcIj5cbiA8c3Ryb25nPlJlYXNvbnMgeW91IG1pZ2h0IGJlIHNlZWluZyB0aGlzIHBhZ2U8XC9zdHJvbmc+XG4gPFwvZGl2PlxuXG4gPHVsIGNsYXNzPVwiaXJpc19ub3RpZmljYXRpb24tbGlzdFwiPlxuICA8bGk+SXQgZXhpc3RzLCBidXQgeW91IGRvblx1MjAxOXQgaGF2ZSBwZXJtaXNzaW9uIHRvIHNlZSBpdCwgb3IgeW91IG5lZWQgdG8gPGEgb25jbGljaz1cInZpbWVvLlNlc3Npb24uY3JlYXRlKClcIj5sb2cgaW48XC9hPi48XC9saT5cbiAgPGxpPk5vdGhpbmcgaGFzIGV2ZXIgZXhpc3RlZCBoZXJlLiBTcG9va3kuPFwvbGk+XG4gPGxpPlNvbWV0aGluZyBvbmNlIGxpdmVkIGhlcmUsIGJ1dCBoYXMgYmVlbiBkZWxldGVkLjxcL2xpPlxuIDxcL3VsPlxuPFwvZGl2PlxuIiwic2VhcmNoIjp0cnVlLCJ2aWRlb3MiOlt7InNldHRpbmdzIjp7InRpdGxlIjp7InRleHQiOiJEaXNjb3ZlciB2aWRlb3MgZnJvbSB0aGUgd29ybGRcdTIwMTlzIGJlc3QgY3JlYXRvcnMiLCJzaG9ydF90ZXh0IjoiRGlzY292ZXIgYW1hemluZyB2aWRlb3MifSwidmlkZW9zIjpbeyJjbGlwX2lkIjoyMTAyMTE4MDAsImlzX3N0YWZmcGljayI6dHJ1ZSwiaXNfZmVhdHVyZWQiOmZhbHNlLCJ2b2RfaWQiOm51bGwsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU5OTMzMjNfMzkweDIyMC5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU5OTMzMjNfNzgweDQzOS5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU5OTMzMjNfMTU2MHg4NzguanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1OTkzMzIzXzMxMjB4MTc1Ni5qcGciLCJhbHQiOiJNT1RIRVIgLSBtb3RoZXIifSwidXBsb2FkZWRfb24iOiIxNCBob3VycyBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjE4NiwiZm9ybWF0dGVkIjoiMDM6MDYifSwicXVpY2tzdGF0cyI6eyJ0b3RhbF9jb21tZW50cyI6eyJyYXciOjE0LCJmb3JtYXR0ZWQiOiIxNCJ9LCJ0b3RhbF9saWtlcyI6eyJyYXciOjE1OCwiZm9ybWF0dGVkIjoiMTU4In0sInRvdGFsX3BsYXlzIjp7InJhdyI6MCwiZm9ybWF0dGVkIjoiMCJ9fSwidGl0bGUiOiJNT1RIRVIiLCJ1cmwiOiJcLzIxMDIxMTgwMCIsInVzZXIiOnsiaWQiOjIyNjUyMTksIm5hbWUiOiJNb3JnYW4gSm91cXVhbmQiLCJ1cmwiOiJcL21vcmdhbmpvdXF1YW5kIiwiYWNjb3VudF90eXBlIjoicGx1cyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjQzODU3Ml8xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjQzODU3Ml8zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjQzODU3Ml82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjQzODU3Ml8xMjh4MTI4LmpwZyJ9fSwiYXV0b3BsYXkiOmZhbHNlLCJzZWVrdGltZSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9LHsiY2xpcF9pZCI6MjA3NzYzMjUzLCJpc19zdGFmZnBpY2siOnRydWUsImlzX2ZlYXR1cmVkIjpmYWxzZSwidm9kX2lkIjpudWxsLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIyOTQwNDg3XzM5MHgyMjAuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIyOTQwNDg3Xzc4MHg0MzkuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIyOTQwNDg3XzE1NjB4ODc4LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyMjk0MDQ4N18zMTIweDE3NTYuanBnIiwiYWx0IjoiVGhlIEJpcnRoIE9mIEEgRHVnb3V0IENhbm9lIGJ5IE5vcnRobWVuIC0gd29vZCBjYXJ2aW5nIn0sInVwbG9hZGVkX29uIjoiMiB3ZWVrcyBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjExMjQsImZvcm1hdHRlZCI6IjE4OjQ0In0sInF1aWNrc3RhdHMiOnsidG90YWxfY29tbWVudHMiOnsicmF3IjoxNCwiZm9ybWF0dGVkIjoiMTQifSwidG90YWxfbGlrZXMiOnsicmF3IjoyMDQsImZvcm1hdHRlZCI6IjIwNCJ9LCJ0b3RhbF9wbGF5cyI6eyJyYXciOjM1ODYsImZvcm1hdHRlZCI6IjM1ODYifX0sInRpdGxlIjoiVGhlIEJpcnRoIE9mIEEgRHVnb3V0IENhbm9lIGJ5IE5vcnRobWVuIiwidXJsIjoiXC8yMDc3NjMyNTMiLCJ1c2VyIjp7ImlkIjoxMDU2NTYwNSwibmFtZSI6Ik5vcnRobWVuIiwidXJsIjoiXC9ub3J0aG1lbiIsImFjY291bnRfdHlwZSI6InBybyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNzcyMDU4OF8xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNzcyMDU4OF8zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNzcyMDU4OF82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNzcyMDU4OF8xMjh4MTI4LmpwZyJ9fSwiYXV0b3BsYXkiOmZhbHNlLCJzZWVrdGltZSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9LHsiY2xpcF9pZCI6MjA0Nzc2NjM2LCJpc19zdGFmZnBpY2siOnRydWUsImlzX2ZlYXR1cmVkIjpmYWxzZSwidm9kX2lkIjpudWxsLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjE5MzY4OTYzXzM5MHgyMjAuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjE5MzY4OTYzXzc4MHg0MzkuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjE5MzY4OTYzXzE1NjB4ODc4LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYxOTM2ODk2M18zMTIweDE3NTYuanBnIiwiYWx0IjoiTmFjaHRoZXhlbiAtIE5pZ2h0IFdpdGNoZXMifSwidXBsb2FkZWRfb24iOiIxIG1vbnRoIGFnbyIsImR1cmF0aW9uIjp7InJhdyI6NDkyLCJmb3JtYXR0ZWQiOiIwODoxMiJ9LCJxdWlja3N0YXRzIjp7InRvdGFsX2NvbW1lbnRzIjp7InJhdyI6MTEsImZvcm1hdHRlZCI6IjExIn0sInRvdGFsX2xpa2VzIjp7InJhdyI6MjIwLCJmb3JtYXR0ZWQiOiIyMjAifSwidG90YWxfcGxheXMiOnsicmF3Ijo2ODAzLCJmb3JtYXR0ZWQiOiI2ODAzIn19LCJ0aXRsZSI6Ik5hY2h0aGV4ZW4iLCJ1cmwiOiJcLzIwNDc3NjYzNiIsInVzZXIiOnsiaWQiOjMxOTQzMjQsIm5hbWUiOiJUaGUgQW5pbWF0aW9uIFdvcmtzaG9wIiwidXJsIjoiXC90aGVhbmltYXRpb253b3Jrc2hvcCIsImFjY291bnRfdHlwZSI6InBsdXMiLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTY2NTM1MjNfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTY2NTM1MjNfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTY2NTM1MjNfNjR4NjQuanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTY2NTM1MjNfMTI4eDEyOC5qcGcifX0sImF1dG9wbGF5IjpmYWxzZSwic2Vla3RpbWUiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7ImNsaXBfaWQiOjE3MTc0NjM4MSwiaXNfc3RhZmZwaWNrIjp0cnVlLCJpc19mZWF0dXJlZCI6ZmFsc2UsInZvZF9pZCI6bnVsbCwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzU3NzI5MjIwMV8zOTB4MjIwLmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzU3NzI5MjIwMV83ODB4NDM5LmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzU3NzI5MjIwMV8xNTYweDg3OC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC81NzcyOTIyMDFfMzEyMHgxNzU2LmpwZyIsImFsdCI6IkJheWEgLSBHYXRlIDIxMiBcLyBHaW1tZSBUaGF0IERpdmUgLSBpc2F3am9obmZpcnN0In0sInVwbG9hZGVkX29uIjoiOSBtb250aHMgYWdvIiwiZHVyYXRpb24iOnsicmF3IjozNjEsImZvcm1hdHRlZCI6IjA2OjAxIn0sInF1aWNrc3RhdHMiOnsidG90YWxfY29tbWVudHMiOnsicmF3IjoxOSwiZm9ybWF0dGVkIjoiMTkifSwidG90YWxfbGlrZXMiOnsicmF3Ijo1MzIsImZvcm1hdHRlZCI6IjUzMiJ9LCJ0b3RhbF9wbGF5cyI6eyJyYXciOjYyMTksImZvcm1hdHRlZCI6IjYyMTkifX0sInRpdGxlIjoiQmF5YSAtIEdhdGUgMjEyIFwvIEdpbW1lIFRoYXQgRGl2ZSIsInVybCI6IlwvMTcxNzQ2MzgxIiwidXNlciI6eyJpZCI6MzMzODcwNywibmFtZSI6IkpvaG4gQ2hyaXN0aWFuIEZlcm5lciBBcGFsbmVzIiwidXJsIjoiXC9pc2F3am9obmZpcnN0IiwiYWNjb3VudF90eXBlIjoicGx1cyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC83NzkwNTQ5XzE2eDE2LmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzc3OTA1NDlfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvNzc5MDU0OV82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC83NzkwNTQ5XzEyOHgxMjguanBnIn19LCJhdXRvcGxheSI6ZmFsc2UsInNlZWt0aW1lIjpmYWxzZSwid2F0Y2hfbGF0ZXIiOmZhbHNlLCJpc19zcGF0aWFsIjpmYWxzZX1dfX0seyJzZXR0aW5ncyI6eyJ0aXRsZSI6eyJ0ZXh0IjoiUHVyY2hhc2UgaGlnaC1xdWFsaXR5IGZpbG1zIGFuZCBzZXJpZXMiLCJzaG9ydF90ZXh0IjoiUHVyY2hhc2UgZmlsbXMgYW5kIHNlcmllcyJ9LCJ2aWRlb3MiOlt7InZvZF9pZCI6MTAzNzAxLCJ0cmFpbGVyX2lkIjoxNzY5NTQzNzIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0NjY3NzhfMzkweDIxOS5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0NjY3NzhfNzgweDQzOS5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0NjY3NzhfMTU2MHg4NzguanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDY2Nzc4XzMxMjB4MTc1Ni5qcGciLCJhbHQiOiJDb21lIERvd24gTW9sbHkgLSB0cmliZWNhIGZpbG0gZmVzdGl2YWwifSwidXBsb2FkZWRfb24iOiI0IGRheXMgYWdvIiwiZHVyYXRpb24iOnsicmF3Ijo0ODM3LCJmb3JtYXR0ZWQiOiIwMToyMDozNyJ9LCJ0aXRsZSI6IkNvbWUgRG93biBNb2xseSIsInVybCI6Ilwvb25kZW1hbmRcL2NvbWVkb3dubW9sbHkiLCJ1c2VyIjp7ImlkIjoxMjI5MzUwLCJuYW1lIjoiRmFjdG9yeSAyNSIsInVybCI6IlwvZmFjdG9yeTI1IiwiYWNjb3VudF90eXBlIjoicHJvIiwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE4MDA1XzE2eDE2LmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE4MDA1XzMyeDMyLmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE4MDA1XzY0eDY0LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE4MDA1XzEyOHgxMjguanBnIn19LCJwcmljZSI6IiQ0LjI1IiwiYXV0b3BsYXkiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7InZvZF9pZCI6MTAzNzM0LCJ0cmFpbGVyX2lkIjoyMDU0MjI3MDUsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0MjQyNDNfMzkweDIxOS5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0MjQyNDNfNzgweDQzOS5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0MjQyNDNfMTU2MHg4NzguanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDI0MjQzXzMxMjB4MTc1Ni5qcGciLCJhbHQiOiJCbG9vbWluIE11ZCBTaHVmZmxlIC0gSmFtZXMgUmFuc29uZSJ9LCJ1cGxvYWRlZF9vbiI6IjQgZGF5cyBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjQ1MTAsImZvcm1hdHRlZCI6IjAxOjE1OjEwIn0sInRpdGxlIjoiQmxvb21pbiBNdWQgU2h1ZmZsZSIsInVybCI6Ilwvb25kZW1hbmRcL2Jsb29taW5tdWRzaHVmZmxlIiwidXNlciI6eyJpZCI6MTIyOTM1MCwibmFtZSI6IkZhY3RvcnkgMjUiLCJ1cmwiOiJcL2ZhY3RvcnkyNSIsImFjY291bnRfdHlwZSI6InBybyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xODAwNV8xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xODAwNV8zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xODAwNV82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xODAwNV8xMjh4MTI4LmpwZyJ9fSwicHJpY2UiOiIkNC4yNSIsImF1dG9wbGF5IjpmYWxzZSwid2F0Y2hfbGF0ZXIiOmZhbHNlLCJpc19zcGF0aWFsIjpmYWxzZX0seyJ2b2RfaWQiOjEwMzc0NywidHJhaWxlcl9pZCI6MjA3Njg2MTQ0LCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDMzMjk0XzM5MHgyMTkuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDMzMjk0Xzc4MHg0MzkuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDMzMjk0XzE1NjB4ODc4LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTQzMzI5NF8zMTIweDE3NTYuanBnIiwiYWx0IjoiVGhleSBMb29rIExpa2UgUGVvcGxlIC0gcGVvcGxlIn0sInVwbG9hZGVkX29uIjoiNCBkYXlzIGFnbyIsImR1cmF0aW9uIjp7InJhdyI6NDc3MSwiZm9ybWF0dGVkIjoiMDE6MTk6MzEifSwidGl0bGUiOiJUaGV5IExvb2sgTGlrZSBQZW9wbGUiLCJ1cmwiOiJcL29uZGVtYW5kXC90aGV5bG9va2xpa2VwZW9wbGUiLCJ1c2VyIjp7ImlkIjo0NTk1MDYyLCJuYW1lIjoiR3Jhdml0YXMgVmVudHVyZXMiLCJ1cmwiOiJcL2dyYXZpdGFzdmVudHVyZXMiLCJhY2NvdW50X3R5cGUiOiJidXNpbmVzcyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC83MTEzMTY3XzE2eDE2LmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzcxMTMxNjdfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvNzExMzE2N182NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC83MTEzMTY3XzEyOHgxMjguanBnIn19LCJwcmljZSI6IiQzLjk5IiwiYXV0b3BsYXkiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7InZvZF9pZCI6MTAyOTUyLCJ0cmFpbGVyX2lkIjoyMDc4NzM0MzksInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZvZF9wYWdlX3RodW1ibmFpbFwvMjQ4NzhfMzkweDIxOSIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdm9kX3BhZ2VfdGh1bWJuYWlsXC8yNDg3OF83ODB4NDM5Iiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92b2RfcGFnZV90aHVtYm5haWxcLzI0ODc4XzE1NjB4ODc4Iiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92b2RfcGFnZV90aHVtYm5haWxcLzI0ODc4XzMxMjB4MTc1NSIsImFsdCI6Ik1FTU9SWSJ9LCJ1cGxvYWRlZF9vbiI6IjUgZGF5cyBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjUzNjcsImZvcm1hdHRlZCI6IjAxOjI5OjI3In0sInRpdGxlIjoiTUVNT1JZIHByZXNlbnRzOiBQcm9ncmFtIE5vLiAyIiwidXJsIjoiXC9vbmRlbWFuZFwvcHJvZ3JhbTIiLCJ1c2VyIjp7ImlkIjozMDQzMzU0MCwibmFtZSI6Ik1FTU9SWSIsInVybCI6IlwvbWVtb3J5aXMiLCJhY2NvdW50X3R5cGUiOiJwcm8iLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTU1ODU3NDNfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTU1ODU3NDNfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTU1ODU3NDNfNjR4NjQuanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTU1ODU3NDNfMTI4eDEyOC5qcGcifX0sInByaWNlIjoiJDguOTkiLCJhdXRvcGxheSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9XX19LHsic2V0dGluZ3MiOnsidGl0bGUiOnsidGV4dCI6IldhdGNoIGh1bWFuLWN1cmF0ZWQgU3RhZmYgUGlja3MiLCJzaG9ydF90ZXh0IjoiV2F0Y2ggU3RhZmYgUGlja3MifSwidmlkZW9zIjpbeyJjbGlwX2lkIjoyMDkyNTc1NjQsImlzX3N0YWZmcGljayI6dHJ1ZSwiaXNfZmVhdHVyZWQiOmZhbHNlLCJ2b2RfaWQiOm51bGwsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU3NzgyNDdfMzkweDIyMC5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU3NzgyNDdfNzgweDQzOS5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU3NzgyNDdfMTU2MHg4NzguanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1Nzc4MjQ3XzMxMjB4MTc1Ni5qcGciLCJhbHQiOiJFbHV2aXVtIC0gUmVnZW5lcmF0aXZlIEJlaW5nIChPZmZpY2lhbCBWaWRlbykgLSBFbHV2aXVtIn0sInVwbG9hZGVkX29uIjoiMSB3ZWVrIGFnbyIsImR1cmF0aW9uIjp7InJhdyI6NDQxLCJmb3JtYXR0ZWQiOiIwNzoyMSJ9LCJxdWlja3N0YXRzIjp7InRvdGFsX2NvbW1lbnRzIjp7InJhdyI6NywiZm9ybWF0dGVkIjoiNyJ9LCJ0b3RhbF9saWtlcyI6eyJyYXciOjE0NiwiZm9ybWF0dGVkIjoiMTQ2In0sInRvdGFsX3BsYXlzIjp7InJhdyI6Mjk4MywiZm9ybWF0dGVkIjoiMjk4MyJ9fSwidGl0bGUiOiJFbHV2aXVtIC0gUmVnZW5lcmF0aXZlIEJlaW5nIChPZmZpY2lhbCBWaWRlbykiLCJ1cmwiOiJcLzIwOTI1NzU2NCIsInVzZXIiOnsiaWQiOjEyODgxMDA4LCJuYW1lIjoiU3RhcyBTYW50aW1vdiIsInVybCI6Ilwvc2FudGltb3YiLCJhY2NvdW50X3R5cGUiOiJwbHVzIiwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzg4NDkxNDlfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvODg0OTE0OV8zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC84ODQ5MTQ5XzY0eDY0LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzg4NDkxNDlfMTI4eDEyOC5qcGcifX0sImF1dG9wbGF5IjpmYWxzZSwic2Vla3RpbWUiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7ImNsaXBfaWQiOjIwOTY5NDMwMCwiaXNfc3RhZmZwaWNrIjp0cnVlLCJpc19mZWF0dXJlZCI6ZmFsc2UsInZvZF9pZCI6bnVsbCwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTMwMzc2Nl8zOTB4MjIwLmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTMwMzc2Nl83ODB4NDM5LmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTMwMzc2Nl8xNTYweDg3OC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjUzMDM3NjZfMzEyMHgxNzU2LmpwZyIsImFsdCI6IkJ1bGxkb3plciAtIG5vd25lc3MifSwidXBsb2FkZWRfb24iOiI0IGRheXMgYWdvIiwiZHVyYXRpb24iOnsicmF3IjoyNjYsImZvcm1hdHRlZCI6IjA0OjI2In0sInF1aWNrc3RhdHMiOnsidG90YWxfY29tbWVudHMiOnsicmF3IjozNCwiZm9ybWF0dGVkIjoiMzQifSwidG90YWxfbGlrZXMiOnsicmF3IjoyNjIsImZvcm1hdHRlZCI6IjI2MiJ9LCJ0b3RhbF9wbGF5cyI6eyJyYXciOjU5OTcsImZvcm1hdHRlZCI6IjU5OTcifX0sInRpdGxlIjoiQnVsbGRvemVyIiwidXJsIjoiXC8yMDk2OTQzMDAiLCJ1c2VyIjp7ImlkIjoxMDk5MDgyLCJuYW1lIjoiSXRzYm9uZ29ib3kiLCJ1cmwiOiJcL2l0c2JvbmdvYm95IiwiYWNjb3VudF90eXBlIjoicGx1cyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjE4NTAxN18xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjE4NTAxN18zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjE4NTAxN182NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjE4NTAxN18xMjh4MTI4LmpwZyJ9fSwiYXV0b3BsYXkiOmZhbHNlLCJzZWVrdGltZSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9LHsiY2xpcF9pZCI6MjA4NDY0OTY2LCJpc19zdGFmZnBpY2siOnRydWUsImlzX2ZlYXR1cmVkIjpmYWxzZSwidm9kX2lkIjpudWxsLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIzNzg5OTM3XzM5MHgyMjAuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIzNzg5OTM3Xzc4MHg0MzkuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIzNzg5OTM3XzE1NjB4ODc4LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyMzc4OTkzN18zMTIweDE3NTYuanBnIiwiYWx0IjoiVG9tIE1jQ2FydGVuIn0sInVwbG9hZGVkX29uIjoiMiB3ZWVrcyBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjIzOCwiZm9ybWF0dGVkIjoiMDM6NTgifSwicXVpY2tzdGF0cyI6eyJ0b3RhbF9jb21tZW50cyI6eyJyYXciOjQwLCJmb3JtYXR0ZWQiOiI0MCJ9LCJ0b3RhbF9saWtlcyI6eyJyYXciOjIwNTEsImZvcm1hdHRlZCI6IjIwNTEifSwidG90YWxfcGxheXMiOnsicmF3IjoxMzIzMzgsImZvcm1hdHRlZCI6IjEzMksifX0sInRpdGxlIjoiU3BhY2UgU2V4IGlzIFNlcmlvdXMgQnVzaW5lc3MiLCJ1cmwiOiJcLzIwODQ2NDk2NiIsInVzZXIiOnsiaWQiOjI0NzEwOTQsIm5hbWUiOiJUb20gTWNDYXJ0ZW4iLCJ1cmwiOiJcL21jY2FydGVuIiwiYWNjb3VudF90eXBlIjoiYmFzaWMiLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTc3ODc2ODVfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTc3ODc2ODVfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTc3ODc2ODVfNjR4NjQuanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTc3ODc2ODVfMTI4eDEyOC5qcGcifX0sImF1dG9wbGF5IjpmYWxzZSwic2Vla3RpbWUiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7ImNsaXBfaWQiOjIwNzUzNTMwMiwiaXNfc3RhZmZwaWNrIjp0cnVlLCJpc19mZWF0dXJlZCI6ZmFsc2UsInZvZF9pZCI6bnVsbCwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNDQ3NjY2Ml8zOTB4MjIwLmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNDQ3NjY2Ml83ODB4NDM5LmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNDQ3NjY2Ml8xNTYweDg3OC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjQ0NzY2NjJfMzEyMHgxNzU2LmpwZyIsImFsdCI6IkJ5IFRoZSBOYW1lIG9mIEJvc3RvbiAtIGFuaW1hdGlvbiJ9LCJ1cGxvYWRlZF9vbiI6IjIgd2Vla3MgYWdvIiwiZHVyYXRpb24iOnsicmF3IjoxNDQsImZvcm1hdHRlZCI6IjAyOjI0In0sInF1aWNrc3RhdHMiOnsidG90YWxfY29tbWVudHMiOnsicmF3IjoxNiwiZm9ybWF0dGVkIjoiMTYifSwidG90YWxfbGlrZXMiOnsicmF3Ijo1NzcsImZvcm1hdHRlZCI6IjU3NyJ9LCJ0b3RhbF9wbGF5cyI6eyJyYXciOjExMzk5MCwiZm9ybWF0dGVkIjoiMTE0SyJ9fSwidGl0bGUiOiJCeSBUaGUgTmFtZSBvZiBCb3N0b24iLCJ1cmwiOiJcLzIwNzUzNTMwMiIsInVzZXIiOnsiaWQiOjkzMDc5MjMsIm5hbWUiOiJHcmFudCBLb2x0b24iLCJ1cmwiOiJcL2dyYW50a29sdG9uIiwiYWNjb3VudF90eXBlIjoicGx1cyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xMDE1MTcxMl8xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xMDE1MTcxMl8zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xMDE1MTcxMl82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xMDE1MTcxMl8xMjh4MTI4LmpwZyJ9fSwiYXV0b3BsYXkiOmZhbHNlLCJzZWVrdGltZSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9XX19XSwiYWRfY29uZmlnIjp7Im5ldHdvcmtfaWQiOiI1NDU0OTU0NCIsInVuaXRfbmFtZSI6ImVycm9ycGFnZSIsInNpemVzIjpbMzAwLDI1MF19LCJ3YXRjaF9sYXRlcl9jbGlwX2lkcyI6W119OwoKIG5ldyB3aW5kb3cuRXhjZXB0aW9uKCk7CiAgCiAKICB9CgogICQoZG9jdW1lbnQpLnJlYWR5KG9uVmltZW9Eb21SZWFkeSk7CiAgPC9zY3JpcHQ+CgoKIDwvYm9keT4KPC9odG1sPgo=
126
- http_version:
127
- recorded_at: Mon, 27 Mar 2017 21:01:11 GMT
126
+ PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICAgIDxoZWFkPgogICAgICAgIAo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CjxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE5ODg0MDI4OTYzIj4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Ii8vcGxheWVyLnZpbWVvLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9pLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9mLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvc2VhcmNoL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iVmltZW8iPgo8bGluayByZWw9ImxvZ28iIHR5cGU9ImltYWdlL3N2ZyIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9sb2dvLnN2ZyI+CgoKICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTUuMCx1c2VyLXNjYWxhYmxlPXllcyI+CiAgICAKCiAgICAgICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlNvcnJ5LCB3ZSBjb3VsZG4mcnNxdW87dCBmaW5kIHRoYXQgcGFnZSI+CiAgICAgICAgPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4Ij4KCgoKCiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiIGhyZWY9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9tYWluLXRvdWNoXzE4MCI+Cgo8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdmcvbGVnYWN5X3ZpZXdfc3VwcG9ydC9pcmlzX2ljb25fdl82NC5zdmc/ZTEwMTNkZWI2ZTg0NDcwYzc1ZDA3NWY4NmRiM2NkNGQ5NGQyMTgxNiIgY29sb3I9IiMxNzI3MmUiPgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9pbWFnZXNfdjYvZmF2aWNvbi5pY28/ZTEwMTNkZWI2ZTg0NDcwYzc1ZDA3NWY4NmRiM2NkNGQ5NGQyMTgxNiIgZGF0YS1wbGF5PSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vcGxheV8zMiIgZGF0YS1wYXVzZT0iaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9mYXZpY29uL3BhdXNlXzMyIj4KCjxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tVGlsZUltYWdlIiBjb250ZW50PSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vbWFpbi10b3VjaF8xNDQiPgo8bWV0YSBuYW1lPSJtc2FwcGxpY2F0aW9uLVRpbGVDb2xvciIgY29udGVudD0iIzAwYWRlZiI+CiAgICAgICAgPHRpdGxlPlZpbWVVaE9oPC90aXRsZT4KICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAvLyBGaXJzdCBJbnB1dCBEZWxheSB0cmFja2luZy4gSGlnaCBwcmlvcml0eSBsb2FkaW5nIHRvIG5vdCBtaXNzIGV2ZW50CiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWVMYWJzL2ZpcnN0LWlucHV0LWRlbGF5L2Jsb2IvbWFzdGVyL2Rpc3QvZmlyc3QtaW5wdXQtZGVsYXkubWluLmpzCiAgICAgICAgICAgICFmdW5jdGlvbihuLGUpe3ZhciB0LG8saSxjPVtdLGY9e3Bhc3NpdmU6ITAsY2FwdHVyZTohMH0scj1uZXcgRGF0ZSxhPSJwb2ludGVydXAiLHU9InBvaW50ZXJjYW5jZWwiO2Z1bmN0aW9uIHAobixjKXt0fHwodD1jLG89bixpPW5ldyBEYXRlLHcoZSkscygpKX1mdW5jdGlvbiBzKCl7bz49MCYmbzxpLXImJihjLmZvckVhY2goZnVuY3Rpb24obil7bihvLHQpfSksYz1bXSl9ZnVuY3Rpb24gbCh0KXtpZih0LmNhbmNlbGFibGUpe3ZhciBvPSh0LnRpbWVTdGFtcD4xZTEyP25ldyBEYXRlOnBlcmZvcm1hbmNlLm5vdygpKS10LnRpbWVTdGFtcDsicG9pbnRlcmRvd24iPT10LnR5cGU/ZnVuY3Rpb24odCxvKXtmdW5jdGlvbiBpKCl7cCh0LG8pLHIoKX1mdW5jdGlvbiBjKCl7cigpfWZ1bmN0aW9uIHIoKXtlKGEsaSxmKSxlKHUsYyxmKX1uKGEsaSxmKSxuKHUsYyxmKX0obyx0KTpwKG8sdCl9fWZ1bmN0aW9uIHcobil7WyJjbGljayIsIm1vdXNlZG93biIsImtleWRvd24iLCJ0b3VjaHN0YXJ0IiwicG9pbnRlcmRvd24iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe24oZSxsLGYpfSl9dyhuKSxzZWxmLnBlcmZNZXRyaWNzPXNlbGYucGVyZk1ldHJpY3N8fHt9LHNlbGYucGVyZk1ldHJpY3Mub25GaXJzdElucHV0RGVsYXk9ZnVuY3Rpb24obil7Yy5wdXNoKG4pLHMoKX19KGFkZEV2ZW50TGlzdGVuZXIscmVtb3ZlRXZlbnRMaXN0ZW5lcik7CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgIC8vIENyZWF0ZSBQZXJmb3JtYW5jZU9ic2VydmVyIGZvciB0cmFja2luZyBUVEkKICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWVMYWJzL3R0aS1wb2x5ZmlsbAogICAgICAgICAgIWZ1bmN0aW9uKCl7aWYoJ1BlcmZvcm1hbmNlTG9uZ1Rhc2tUaW1pbmcnIGluIHdpbmRvdyl7dmFyIGc9d2luZG93Ll9fdHRpPXtlOltdfTsKICAgICAgICAgIGcubz1uZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihmdW5jdGlvbihsKXtnLmU9Zy5lLmNvbmNhdChsLmdldEVudHJpZXMoKSl9KTsKICAgICAgICAgIGcuby5vYnNlcnZlKHtlbnRyeVR5cGVzOlsnbG9uZ3Rhc2snXX0pfX0oKTsKICAgICAgICA8L3NjcmlwdD4KICAgICAgICA8c2NyaXB0PgogICAgICAgICAgLy8gTmV3IFJlbGljIEFnZW50CiAgICAgICAgICA7d2luZG93Lk5SRVVNfHwoTlJFVU09e30pO05SRVVNLmluaXQ9e2Rpc3RyaWJ1dGVkX3RyYWNpbmc6e2VuYWJsZWQ6dHJ1ZX0scHJpdmFjeTp7Y29va2llc19lbmFibGVkOnRydWV9fTsKICAgICAgICAgIHdpbmRvdy5OUkVVTXx8KE5SRVVNPXt9KSxfX25yX3JlcXVpcmU9ZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIobil7aWYoIWVbbl0pe3ZhciBvPWVbbl09e2V4cG9ydHM6e319O3Rbbl1bMF0uY2FsbChvLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG89dFtuXVsxXVtlXTtyZXR1cm4gcihvfHxlKX0sbyxvLmV4cG9ydHMpfXJldHVybiBlW25dLmV4cG9ydHN9aWYoImZ1bmN0aW9uIj09dHlwZW9mIF9fbnJfcmVxdWlyZSlyZXR1cm4gX19ucl9yZXF1aXJlO2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKXIobltvXSk7cmV0dXJuIHJ9KHsxOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXt0cnl7cy5jb25zb2xlJiZjb25zb2xlLmxvZyh0KX1jYXRjaChlKXt9fXZhciBvLGk9dCgiZWUiKSxhPXQoMjUpLHM9e307dHJ5e289bG9jYWxTdG9yYWdlLmdldEl0ZW0oIl9fbnJfZmxhZ3MiKS5zcGxpdCgiLCIpLGNvbnNvbGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLmxvZyYmKHMuY29uc29sZT0hMCxvLmluZGV4T2YoImRldiIpIT09LTEmJihzLmRldj0hMCksby5pbmRleE9mKCJucl9kZXYiKSE9PS0xJiYocy5uckRldj0hMCkpfWNhdGNoKGMpe31zLm5yRGV2JiZpLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7cih0LnN0YWNrKX0pLHMuZGV2JiZpLm9uKCJmbi1lcnIiLGZ1bmN0aW9uKHQsZSxuKXtyKG4uc3RhY2spfSkscy5kZXYmJihyKCJOUiBBR0VOVCBJTiBERVZFTE9QTUVOVCBNT0RFIikscigiZmxhZ3M6ICIrYShzLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHR9KS5qb2luKCIsICIpKSl9LHt9XSwyOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbixyLHMpe3RyeXtsP2wtPTE6byhzfHxuZXcgVW5jYXVnaHRFeGNlcHRpb24odCxlLG4pLCEwKX1jYXRjaChmKXt0cnl7aSgiaWVyciIsW2YsYy5ub3coKSwhMF0pfWNhdGNoKGQpe319cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHUmJnUuYXBwbHkodGhpcyxhKGFyZ3VtZW50cykpfWZ1bmN0aW9uIFVuY2F1Z2h0RXhjZXB0aW9uKHQsZSxuKXt0aGlzLm1lc3NhZ2U9dHx8IlVuY2F1Z2h0IGVycm9yIHdpdGggbm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiIsdGhpcy5zb3VyY2VVUkw9ZSx0aGlzLmxpbmU9bn1mdW5jdGlvbiBvKHQsZSl7dmFyIG49ZT9udWxsOmMubm93KCk7aSgiZXJyIixbdCxuXSl9dmFyIGk9dCgiaGFuZGxlIiksYT10KDI2KSxzPXQoImVlIiksYz10KCJsb2FkZXIiKSxmPXQoImdvcyIpLHU9d2luZG93Lm9uZXJyb3IsZD0hMSxwPSJuckBzZWVuRXJyb3IiLGw9MDtjLmZlYXR1cmVzLmVycj0hMCx0KDEpLHdpbmRvdy5vbmVycm9yPXI7dHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaChoKXsic3RhY2siaW4gaCYmKHQoMTMpLHQoMTIpLCJhZGRFdmVudExpc3RlbmVyImluIHdpbmRvdyYmdCg2KSxjLnhocldyYXBwYWJsZSYmdCgxNCksZD0hMCl9cy5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXtkJiYobCs9MSl9KSxzLm9uKCJmbi1lcnIiLGZ1bmN0aW9uKHQsZSxuKXtkJiYhbltwXSYmKGYobixwLGZ1bmN0aW9uKCl7cmV0dXJuITB9KSx0aGlzLnRocm93bj0hMCxvKG4pKX0pLHMub24oImZuLWVuZCIsZnVuY3Rpb24oKXtkJiYhdGhpcy50aHJvd24mJmw+MCYmKGwtPTEpfSkscy5vbigiaW50ZXJuYWwtZXJyb3IiLGZ1bmN0aW9uKHQpe2koImllcnIiLFt0LGMubm93KCksITBdKX0pfSx7fV0sMzpbZnVuY3Rpb24odCxlLG4pe3QoImxvYWRlciIpLmZlYXR1cmVzLmlucz0hMH0se31dLDQ6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7TCsrLEM9Zy5oYXNoLHRoaXNbdV09eS5ub3coKX1mdW5jdGlvbiBvKCl7TC0tLGcuaGFzaCE9PUMmJmkoMCwhMCk7dmFyIHQ9eS5ub3coKTt0aGlzW2hdPX5+dGhpc1toXSt0LXRoaXNbdV0sdGhpc1tkXT10fWZ1bmN0aW9uIGkodCxlKXtFLmVtaXQoIm5ld1VSTCIsWyIiK2csZV0pfWZ1bmN0aW9uIGEodCxlKXt0Lm9uKGUsZnVuY3Rpb24oKXt0aGlzW2VdPXkubm93KCl9KX12YXIgcz0iLXN0YXJ0IixjPSItZW5kIixmPSItYm9keSIsdT0iZm4iK3MsZD0iZm4iK2MscD0iY2IiK3MsbD0iY2IiK2MsaD0ianNUaW1lIixtPSJmZXRjaCIsdj0iYWRkRXZlbnRMaXN0ZW5lciIsdz13aW5kb3csZz13LmxvY2F0aW9uLHk9dCgibG9hZGVyIik7aWYod1t2XSYmeS54aHJXcmFwcGFibGUpe3ZhciB4PXQoMTApLGI9dCgxMSksRT10KDgpLE89dCg2KSxSPXQoMTMpLFA9dCg3KSxUPXQoMTQpLE49dCg5KSxNPXQoImVlIiksUz1NLmdldCgidHJhY2VyIik7dCgxNikseS5mZWF0dXJlcy5zcGE9ITA7dmFyIEMsTD0wO00ub24odSxyKSxNLm9uKHAsciksTS5vbihkLG8pLE0ub24obCxvKSxNLmJ1ZmZlcihbdSxkLCJ4aHItZG9uZSIsInhoci1yZXNvbHZlZCJdKSxPLmJ1ZmZlcihbdV0pLFIuYnVmZmVyKFsic2V0VGltZW91dCIrYywiY2xlYXJUaW1lb3V0IitzLHVdKSxULmJ1ZmZlcihbdSwibmV3LXhociIsInNlbmQteGhyIitzXSksUC5idWZmZXIoW20rcyxtKyItZG9uZSIsbStmK3MsbStmK2NdKSxFLmJ1ZmZlcihbIm5ld1VSTCJdKSx4LmJ1ZmZlcihbdV0pLGIuYnVmZmVyKFsicHJvcGFnYXRlIixwLGwsImV4ZWN1dG9yLWVyciIsInJlc29sdmUiK3NdKSxTLmJ1ZmZlcihbdSwibm8tIit1XSksTi5idWZmZXIoWyJuZXctanNvbnAiLCJjYi1zdGFydCIsImpzb25wLWVycm9yIiwianNvbnAtZW5kIl0pLGEoVCwic2VuZC14aHIiK3MpLGEoTSwieGhyLXJlc29sdmVkIiksYShNLCJ4aHItZG9uZSIpLGEoUCxtK3MpLGEoUCxtKyItZG9uZSIpLGEoTiwibmV3LWpzb25wIiksYShOLCJqc29ucC1lbmQiKSxhKE4sImNiLXN0YXJ0IiksRS5vbigicHVzaFN0YXRlLWVuZCIsaSksRS5vbigicmVwbGFjZVN0YXRlLWVuZCIsaSksd1t2XSgiaGFzaGNoYW5nZSIsaSwhMCksd1t2XSgibG9hZCIsaSwhMCksd1t2XSgicG9wc3RhdGUiLGZ1bmN0aW9uKCl7aSgwLEw+MSl9LCEwKX19LHt9XSw1OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXt9aWYod2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nJiZ3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSl7dmFyIG89dCgiZWUiKSxpPXQoImhhbmRsZSIpLGE9dCgxMykscz10KDEyKSxjPSJsZWFyUmVzb3VyY2VUaW1pbmdzIixmPSJhZGRFdmVudExpc3RlbmVyIix1PSJyZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwiLGQ9ImJzdFJlc291cmNlIixwPSJyZXNvdXJjZSIsbD0iLXN0YXJ0IixoPSItZW5kIixtPSJmbiIrbCx2PSJmbiIraCx3PSJic3RUaW1lciIsZz0icHVzaFN0YXRlIix5PXQoImxvYWRlciIpO3kuZmVhdHVyZXMuc3RuPSEwLHQoOCksImFkZEV2ZW50TGlzdGVuZXIiaW4gd2luZG93JiZ0KDYpO3ZhciB4PU5SRVVNLm8uRVY7by5vbihtLGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXTtuIGluc3RhbmNlb2YgeCYmKHRoaXMuYnN0U3RhcnQ9eS5ub3coKSl9KSxvLm9uKHYsZnVuY3Rpb24odCxlKXt2YXIgbj10WzBdO24gaW5zdGFuY2VvZiB4JiZpKCJic3QiLFtuLGUsdGhpcy5ic3RTdGFydCx5Lm5vdygpXSl9KSxhLm9uKG0sZnVuY3Rpb24odCxlLG4pe3RoaXMuYnN0U3RhcnQ9eS5ub3coKSx0aGlzLmJzdFR5cGU9bn0pLGEub24odixmdW5jdGlvbih0LGUpe2kodyxbZSx0aGlzLmJzdFN0YXJ0LHkubm93KCksdGhpcy5ic3RUeXBlXSl9KSxzLm9uKG0sZnVuY3Rpb24oKXt0aGlzLmJzdFN0YXJ0PXkubm93KCl9KSxzLm9uKHYsZnVuY3Rpb24odCxlKXtpKHcsW2UsdGhpcy5ic3RTdGFydCx5Lm5vdygpLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXSl9KSxvLm9uKGcrbCxmdW5jdGlvbih0KXt0aGlzLnRpbWU9eS5ub3coKSx0aGlzLnN0YXJ0UGF0aD1sb2NhdGlvbi5wYXRobmFtZStsb2NhdGlvbi5oYXNofSksby5vbihnK2gsZnVuY3Rpb24odCl7aSgiYnN0SGlzdCIsW2xvY2F0aW9uLnBhdGhuYW1lK2xvY2F0aW9uLmhhc2gsdGhpcy5zdGFydFBhdGgsdGhpcy50aW1lXSl9KSxmIGluIHdpbmRvdy5wZXJmb3JtYW5jZSYmKHdpbmRvdy5wZXJmb3JtYW5jZVsiYyIrY10/d2luZG93LnBlcmZvcm1hbmNlW2ZdKHUsZnVuY3Rpb24odCl7aShkLFt3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZShwKV0pLHdpbmRvdy5wZXJmb3JtYW5jZVsiYyIrY10oKX0sITEpOndpbmRvdy5wZXJmb3JtYW5jZVtmXSgid2Via2l0Iit1LGZ1bmN0aW9uKHQpe2koZCxbd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUocCldKSx3aW5kb3cucGVyZm9ybWFuY2VbIndlYmtpdEMiK2NdKCl9LCExKSksZG9jdW1lbnRbZl0oInNjcm9sbCIscix7cGFzc2l2ZTohMH0pLGRvY3VtZW50W2ZdKCJrZXlwcmVzcyIsciwhMSksZG9jdW1lbnRbZl0oImNsaWNrIixyLCExKX19LHt9XSw2OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXtmb3IodmFyIGU9dDtlJiYhZS5oYXNPd25Qcm9wZXJ0eSh1KTspZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7ZSYmbyhlKX1mdW5jdGlvbiBvKHQpe3MuaW5QbGFjZSh0LFt1LGRdLCItIixpKX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuIHRbMV19dmFyIGE9dCgiZWUiKS5nZXQoImV2ZW50cyIpLHM9dCgid3JhcC1mdW5jdGlvbiIpKGEsITApLGM9dCgiZ29zIiksZj1YTUxIdHRwUmVxdWVzdCx1PSJhZGRFdmVudExpc3RlbmVyIixkPSJyZW1vdmVFdmVudExpc3RlbmVyIjtlLmV4cG9ydHM9YSwiZ2V0UHJvdG90eXBlT2YiaW4gT2JqZWN0PyhyKGRvY3VtZW50KSxyKHdpbmRvdykscihmLnByb3RvdHlwZSkpOmYucHJvdG90eXBlLmhhc093blByb3BlcnR5KHUpJiYobyh3aW5kb3cpLG8oZi5wcm90b3R5cGUpKSxhLm9uKHUrIi1zdGFydCIsZnVuY3Rpb24odCxlKXt2YXIgbj10WzFdLHI9YyhuLCJuckB3cmFwcGVkIixmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbi5oYW5kbGVFdmVudClyZXR1cm4gbi5oYW5kbGVFdmVudC5hcHBseShuLGFyZ3VtZW50cyl9dmFyIGU9e29iamVjdDp0LCJmdW5jdGlvbiI6bn1bdHlwZW9mIG5dO3JldHVybiBlP3MoZSwiZm4tIixudWxsLGUubmFtZXx8ImFub255bW91cyIpOm59KTt0aGlzLndyYXBwZWQ9dFsxXT1yfSksYS5vbihkKyItc3RhcnQiLGZ1bmN0aW9uKHQpe3RbMV09dGhpcy53cmFwcGVkfHx0WzFdfSl9LHt9XSw3OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbil7dmFyIHI9dFtlXTsiZnVuY3Rpb24iPT10eXBlb2YgciYmKHRbZV09ZnVuY3Rpb24oKXt2YXIgdD1pKGFyZ3VtZW50cyksZT17fTtvLmVtaXQobisiYmVmb3JlLXN0YXJ0IixbdF0sZSk7dmFyIGE7ZVttXSYmZVttXS5kdCYmKGE9ZVttXS5kdCk7dmFyIHM9ci5hcHBseSh0aGlzLHQpO3JldHVybiBvLmVtaXQobisic3RhcnQiLFt0LGFdLHMpLHMudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gby5lbWl0KG4rImVuZCIsW251bGwsdF0scyksdH0sZnVuY3Rpb24odCl7dGhyb3cgby5lbWl0KG4rImVuZCIsW3RdLHMpLHR9KX0pfXZhciBvPXQoImVlIikuZ2V0KCJmZXRjaCIpLGk9dCgyNiksYT10KDI1KTtlLmV4cG9ydHM9bzt2YXIgcz13aW5kb3csYz0iZmV0Y2gtIixmPWMrImJvZHktIix1PVsiYXJyYXlCdWZmZXIiLCJibG9iIiwianNvbiIsInRleHQiLCJmb3JtRGF0YSJdLGQ9cy5SZXF1ZXN0LHA9cy5SZXNwb25zZSxsPXMuZmV0Y2gsaD0icHJvdG90eXBlIixtPSJuckBjb250ZXh0IjtkJiZwJiZsJiYoYSh1LGZ1bmN0aW9uKHQsZSl7cihkW2hdLGUsZikscihwW2hdLGUsZil9KSxyKHMsImZldGNoIixjKSxvLm9uKGMrImVuZCIsZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO2lmKGUpe3ZhciByPWUuaGVhZGVycy5nZXQoImNvbnRlbnQtbGVuZ3RoIik7bnVsbCE9PXImJihuLnJ4U2l6ZT1yKSxvLmVtaXQoYysiZG9uZSIsW251bGwsZV0sbil9ZWxzZSBvLmVtaXQoYysiZG9uZSIsW3RdLG4pfSkpfSx7fV0sODpbZnVuY3Rpb24odCxlLG4pe3ZhciByPXQoImVlIikuZ2V0KCJoaXN0b3J5Iiksbz10KCJ3cmFwLWZ1bmN0aW9uIikocik7ZS5leHBvcnRzPXI7dmFyIGk9d2luZG93Lmhpc3RvcnkmJndpbmRvdy5oaXN0b3J5LmNvbnN0cnVjdG9yJiZ3aW5kb3cuaGlzdG9yeS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsYT13aW5kb3cuaGlzdG9yeTtpJiZpLnB1c2hTdGF0ZSYmaS5yZXBsYWNlU3RhdGUmJihhPWkpLG8uaW5QbGFjZShhLFsicHVzaFN0YXRlIiwicmVwbGFjZVN0YXRlIl0sIi0iKX0se31dLDk6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe2Z1bmN0aW9uIGUoKXtjLmVtaXQoImpzb25wLWVuZCIsW10scCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixlLCExKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixuLCExKX1mdW5jdGlvbiBuKCl7Yy5lbWl0KCJqc29ucC1lcnJvciIsW10scCksYy5lbWl0KCJqc29ucC1lbmQiLFtdLHApLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsZSwhMSksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsbiwhMSl9dmFyIHI9dCYmInN0cmluZyI9PXR5cGVvZiB0Lm5vZGVOYW1lJiYic2NyaXB0Ij09PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihyKXt2YXIgbz0iZnVuY3Rpb24iPT10eXBlb2YgdC5hZGRFdmVudExpc3RlbmVyO2lmKG8pe3ZhciBhPWkodC5zcmMpO2lmKGEpe3ZhciB1PXMoYSksZD0iZnVuY3Rpb24iPT10eXBlb2YgdS5wYXJlbnRbdS5rZXldO2lmKGQpe3ZhciBwPXt9O2YuaW5QbGFjZSh1LnBhcmVudCxbdS5rZXldLCJjYi0iLHApLHQuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZSwhMSksdC5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsbiwhMSksYy5lbWl0KCJuZXctanNvbnAiLFt0LnNyY10scCl9fX19fWZ1bmN0aW9uIG8oKXtyZXR1cm4iYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3d9ZnVuY3Rpb24gaSh0KXt2YXIgZT10Lm1hdGNoKHUpO3JldHVybiBlP2VbMV06bnVsbH1mdW5jdGlvbiBhKHQsZSl7dmFyIG49dC5tYXRjaChwKSxyPW5bMV0sbz1uWzNdO3JldHVybiBvP2EobyxlW3JdKTplW3JdfWZ1bmN0aW9uIHModCl7dmFyIGU9dC5tYXRjaChkKTtyZXR1cm4gZSYmZS5sZW5ndGg+PTM/e2tleTplWzJdLHBhcmVudDphKGVbMV0sd2luZG93KX06e2tleTp0LHBhcmVudDp3aW5kb3d9fXZhciBjPXQoImVlIikuZ2V0KCJqc29ucCIpLGY9dCgid3JhcC1mdW5jdGlvbiIpKGMpO2lmKGUuZXhwb3J0cz1jLG8oKSl7dmFyIHU9L1s/Jl0oPzpjYWxsYmFja3xjYik9KFteJiNdKykvLGQ9LyguKilcLihbXi5dKykvLHA9L14oXHcrKShcLnwkKSguKikkLyxsPVsiYXBwZW5kQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJyZXBsYWNlQ2hpbGQiXTtOb2RlJiZOb2RlLnByb3RvdHlwZSYmTm9kZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ/Zi5pblBsYWNlKE5vZGUucHJvdG90eXBlLGwsImRvbS0iKTooZi5pblBsYWNlKEhUTUxFbGVtZW50LnByb3RvdHlwZSxsLCJkb20tIiksZi5pblBsYWNlKEhUTUxIZWFkRWxlbWVudC5wcm90b3R5cGUsbCwiZG9tLSIpLGYuaW5QbGFjZShIVE1MQm9keUVsZW1lbnQucHJvdG90eXBlLGwsImRvbS0iKSksYy5vbigiZG9tLXN0YXJ0IixmdW5jdGlvbih0KXtyKHRbMF0pfSl9fSx7fV0sMTA6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj10KCJlZSIpLmdldCgibXV0YXRpb24iKSxvPXQoIndyYXAtZnVuY3Rpb24iKShyKSxpPU5SRVVNLm8uTU87ZS5leHBvcnRzPXIsaSYmKHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgaT9uZXcgaShvKHQsImZuLSIpKTppLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sTXV0YXRpb25PYnNlcnZlci5wcm90b3R5cGU9aS5wcm90b3R5cGUpfSx7fV0sMTE6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3ZhciBlPWEuY29udGV4dCgpLG49cyh0LCJleGVjdXRvci0iLGUpLHI9bmV3IGYobik7cmV0dXJuIGEuY29udGV4dChyKS5nZXRDdHg9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sYS5lbWl0KCJuZXctcHJvbWlzZSIsW3IsZV0sZSkscn1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIGV9dmFyIGk9dCgid3JhcC1mdW5jdGlvbiIpLGE9dCgiZWUiKS5nZXQoInByb21pc2UiKSxzPWkoYSksYz10KDI1KSxmPU5SRVVNLm8uUFI7ZS5leHBvcnRzPWEsZiYmKHdpbmRvdy5Qcm9taXNlPXIsWyJhbGwiLCJyYWNlIl0uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1mW3RdO2ZbdF09ZnVuY3Rpb24obil7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZnVuY3Rpb24oKXthLmVtaXQoInByb3BhZ2F0ZSIsW251bGwsIW9dLGkpLG89b3x8IXR9fXZhciBvPSExO2MobixmdW5jdGlvbihlLG4pe1Byb21pc2UucmVzb2x2ZShuKS50aGVuKHIoImFsbCI9PT10KSxyKCExKSl9KTt2YXIgaT1lLmFwcGx5KGYsYXJndW1lbnRzKSxzPWYucmVzb2x2ZShpKTtyZXR1cm4gc319KSxbInJlc29sdmUiLCJyZWplY3QiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWZbdF07Zlt0XT1mdW5jdGlvbih0KXt2YXIgbj1lLmFwcGx5KGYsYXJndW1lbnRzKTtyZXR1cm4gdCE9PW4mJmEuZW1pdCgicHJvcGFnYXRlIixbdCwhMF0sbiksbn19KSxmLnByb3RvdHlwZVsiY2F0Y2giXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LGYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZi5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpyfX0pLGMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZiksZnVuY3Rpb24odCxlKXt0cnl7cltlXT1mW2VdfWNhdGNoKG4pe319KSxhLm9uKCJleGVjdXRvci1zdGFydCIsZnVuY3Rpb24odCl7dFswXT1zKHRbMF0sInJlc29sdmUtIix0aGlzKSx0WzFdPXModFsxXSwicmVzb2x2ZS0iLHRoaXMpfSksYS5vbigiZXhlY3V0b3ItZXJyIixmdW5jdGlvbih0LGUsbil7dFsxXShuKX0pLHMuaW5QbGFjZShmLnByb3RvdHlwZSxbInRoZW4iXSwidGhlbi0iLG8pLGEub24oInRoZW4tc3RhcnQiLGZ1bmN0aW9uKHQsZSl7dGhpcy5wcm9taXNlPWUsdFswXT1zKHRbMF0sImNiLSIsdGhpcyksdFsxXT1zKHRbMV0sImNiLSIsdGhpcyl9KSxhLm9uKCJ0aGVuLWVuZCIsZnVuY3Rpb24odCxlLG4pe3RoaXMubmV4dFByb21pc2U9bjt2YXIgcj10aGlzLnByb21pc2U7YS5lbWl0KCJwcm9wYWdhdGUiLFtyLCEwXSxuKX0pLGEub24oImNiLWVuZCIsZnVuY3Rpb24odCxlLG4pe2EuZW1pdCgicHJvcGFnYXRlIixbbiwhMF0sdGhpcy5uZXh0UHJvbWlzZSl9KSxhLm9uKCJwcm9wYWdhdGUiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmdldEN0eCYmIWV8fCh0aGlzLmdldEN0eD1mdW5jdGlvbigpe2lmKHQgaW5zdGFuY2VvZiBQcm9taXNlKXZhciBlPWEuY29udGV4dCh0KTtyZXR1cm4gZSYmZS5nZXRDdHg/ZS5nZXRDdHgoKTp0aGlzfSl9KSxyLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIiIrZn0pfSx7fV0sMTI6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj10KCJlZSIpLmdldCgicmFmIiksbz10KCJ3cmFwLWZ1bmN0aW9uIikociksaT0iZXF1ZXN0QW5pbWF0aW9uRnJhbWUiO2UuZXhwb3J0cz1yLG8uaW5QbGFjZSh3aW5kb3csWyJyIitpLCJtb3pSIitpLCJ3ZWJraXRSIitpLCJtc1IiK2ldLCJyYWYtIiksci5vbigicmFmLXN0YXJ0IixmdW5jdGlvbih0KXt0WzBdPW8odFswXSwiZm4tIil9KX0se31dLDEzOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbil7dFswXT1hKHRbMF0sImZuLSIsbnVsbCxuKX1mdW5jdGlvbiBvKHQsZSxuKXt0aGlzLm1ldGhvZD1uLHRoaXMudGltZXJEdXJhdGlvbj1pc05hTih0WzFdKT8wOit0WzFdLHRbMF09YSh0WzBdLCJmbi0iLHRoaXMsbil9dmFyIGk9dCgiZWUiKS5nZXQoInRpbWVyIiksYT10KCJ3cmFwLWZ1bmN0aW9uIikoaSkscz0ic2V0VGltZW91dCIsYz0ic2V0SW50ZXJ2YWwiLGY9ImNsZWFyVGltZW91dCIsdT0iLXN0YXJ0IixkPSItIjtlLmV4cG9ydHM9aSxhLmluUGxhY2Uod2luZG93LFtzLCJzZXRJbW1lZGlhdGUiXSxzK2QpLGEuaW5QbGFjZSh3aW5kb3csW2NdLGMrZCksYS5pblBsYWNlKHdpbmRvdyxbZiwiY2xlYXJJbW1lZGlhdGUiXSxmK2QpLGkub24oYyt1LHIpLGkub24ocyt1LG8pfSx7fV0sMTQ6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7ZC5pblBsYWNlKGUsWyJvbnJlYWR5c3RhdGVjaGFuZ2UiXSwiZm4tIixzKX1mdW5jdGlvbiBvKCl7dmFyIHQ9dGhpcyxlPXUuY29udGV4dCh0KTt0LnJlYWR5U3RhdGU+MyYmIWUucmVzb2x2ZWQmJihlLnJlc29sdmVkPSEwLHUuZW1pdCgieGhyLXJlc29sdmVkIixbXSx0KSksZC5pblBsYWNlKHQsZywiZm4tIixzKX1mdW5jdGlvbiBpKHQpe3kucHVzaCh0KSxoJiYoYj9iLnRoZW4oYSk6dj92KGEpOihFPS1FLE8uZGF0YT1FKSl9ZnVuY3Rpb24gYSgpe2Zvcih2YXIgdD0wO3Q8eS5sZW5ndGg7dCsrKXIoW10seVt0XSk7eS5sZW5ndGgmJih5PVtdKX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIGV9ZnVuY3Rpb24gYyh0LGUpe2Zvcih2YXIgbiBpbiB0KWVbbl09dFtuXTtyZXR1cm4gZX10KDYpO3ZhciBmPXQoImVlIiksdT1mLmdldCgieGhyIiksZD10KCJ3cmFwLWZ1bmN0aW9uIikodSkscD1OUkVVTS5vLGw9cC5YSFIsaD1wLk1PLG09cC5QUix2PXAuU0ksdz0icmVhZHlzdGF0ZWNoYW5nZSIsZz1bIm9ubG9hZCIsIm9uZXJyb3IiLCJvbmFib3J0Iiwib25sb2Fkc3RhcnQiLCJvbmxvYWRlbmQiLCJvbnByb2dyZXNzIiwib250aW1lb3V0Il0seT1bXTtlLmV4cG9ydHM9dTt2YXIgeD13aW5kb3cuWE1MSHR0cFJlcXVlc3Q9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGwodCk7dHJ5e3UuZW1pdCgibmV3LXhociIsW2VdLGUpLGUuYWRkRXZlbnRMaXN0ZW5lcih3LG8sITEpfWNhdGNoKG4pe3RyeXt1LmVtaXQoImludGVybmFsLWVycm9yIixbbl0pfWNhdGNoKHIpe319cmV0dXJuIGV9O2lmKGMobCx4KSx4LnByb3RvdHlwZT1sLnByb3RvdHlwZSxkLmluUGxhY2UoeC5wcm90b3R5cGUsWyJvcGVuIiwic2VuZCJdLCIteGhyLSIscyksdS5vbigic2VuZC14aHItc3RhcnQiLGZ1bmN0aW9uKHQsZSl7cih0LGUpLGkoZSl9KSx1Lm9uKCJvcGVuLXhoci1zdGFydCIsciksaCl7dmFyIGI9bSYmbS5yZXNvbHZlKCk7aWYoIXYmJiFtKXt2YXIgRT0xLE89ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoRSk7bmV3IGgoYSkub2JzZXJ2ZShPLHtjaGFyYWN0ZXJEYXRhOiEwfSl9fWVsc2UgZi5vbigiZm4tZW5kIixmdW5jdGlvbih0KXt0WzBdJiZ0WzBdLnR5cGU9PT13fHxhKCl9KX0se31dLDE1OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXtpZighaSh0KSlyZXR1cm4gbnVsbDt2YXIgZT13aW5kb3cuTlJFVU07aWYoIWUubG9hZGVyX2NvbmZpZylyZXR1cm4gbnVsbDt2YXIgbj0oZS5sb2FkZXJfY29uZmlnLmFjY291bnRJRHx8IiIpLnRvU3RyaW5nKCl8fG51bGwscj0oZS5sb2FkZXJfY29uZmlnLmFnZW50SUR8fCIiKS50b1N0cmluZygpfHxudWxsLHM9KGUubG9hZGVyX2NvbmZpZy50cnVzdEtleXx8IiIpLnRvU3RyaW5nKCl8fG51bGw7aWYoIW58fCFyKXJldHVybiBudWxsO3ZhciBjPWEuZ2VuZXJhdGVDYXRJZCgpLGY9YS5nZW5lcmF0ZUNhdElkKCksdT1EYXRlLm5vdygpLGQ9byhjLGYsdSxuLHIscyk7cmV0dXJue2hlYWRlcjpkLGd1aWQ6Yyx0cmFjZUlkOmYsdGltZXN0YW1wOnV9fWZ1bmN0aW9uIG8odCxlLG4scixvLGkpe3ZhciBhPSJidG9hImluIHdpbmRvdyYmImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5idG9hO2lmKCFhKXJldHVybiBudWxsO3ZhciBzPXt2OlswLDFdLGQ6e3R5OiJCcm93c2VyIixhYzpyLGFwOm8saWQ6dCx0cjplLHRpOm59fTtyZXR1cm4gaSYmciE9PWkmJihzLmQudGs9aSksYnRvYShKU09OLnN0cmluZ2lmeShzKSl9ZnVuY3Rpb24gaSh0KXt2YXIgZT0hMSxuPSExLHI9e307aWYoImluaXQiaW4gTlJFVU0mJiJkaXN0cmlidXRlZF90cmFjaW5nImluIE5SRVVNLmluaXQmJihyPU5SRVVNLmluaXQuZGlzdHJpYnV0ZWRfdHJhY2luZyxuPSEhci5lbmFibGVkKSxuKWlmKHQuc2FtZU9yaWdpbillPSEwO2Vsc2UgaWYoci5hbGxvd2VkX29yaWdpbnMgaW5zdGFuY2VvZiBBcnJheSlmb3IodmFyIG89MDtvPHIuYWxsb3dlZF9vcmlnaW5zLmxlbmd0aDtvKyspe3ZhciBpPXMoci5hbGxvd2VkX29yaWdpbnNbb10pO2lmKHQuaG9zdG5hbWU9PT1pLmhvc3RuYW1lJiZ0LnByb3RvY29sPT09aS5wcm90b2NvbCYmdC5wb3J0PT09aS5wb3J0KXtlPSEwO2JyZWFrfX1yZXR1cm4gbiYmZX12YXIgYT10KDIzKSxzPXQoMTcpO2UuZXhwb3J0cz17Z2VuZXJhdGVUcmFjZVBheWxvYWQ6cixzaG91bGRHZW5lcmF0ZVRyYWNlOml9fSx7fV0sMTY6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3ZhciBlPXRoaXMucGFyYW1zLG49dGhpcy5tZXRyaWNzO2lmKCF0aGlzLmVuZGVkKXt0aGlzLmVuZGVkPSEwO2Zvcih2YXIgcj0wO3I8cDtyKyspdC5yZW1vdmVFdmVudExpc3RlbmVyKGRbcl0sdGhpcy5saXN0ZW5lciwhMSk7ZS5hYm9ydGVkfHwobi5kdXJhdGlvbj1hLm5vdygpLXRoaXMuc3RhcnRUaW1lLHRoaXMubG9hZENhcHR1cmVDYWxsZWR8fDQhPT10LnJlYWR5U3RhdGU/bnVsbD09ZS5zdGF0dXMmJihlLnN0YXR1cz0wKTppKHRoaXMsdCksbi5jYlRpbWU9dGhpcy5jYlRpbWUsdS5lbWl0KCJ4aHItZG9uZSIsW3RdLHQpLHMoInhociIsW2Usbix0aGlzLnN0YXJ0VGltZV0pKX19ZnVuY3Rpb24gbyh0LGUpe3ZhciBuPWMoZSkscj10LnBhcmFtcztyLmhvc3Q9bi5ob3N0bmFtZSsiOiIrbi5wb3J0LHIucGF0aG5hbWU9bi5wYXRobmFtZSx0LnBhcnNlZE9yaWdpbj1jKGUpLHQuc2FtZU9yaWdpbj10LnBhcnNlZE9yaWdpbi5zYW1lT3JpZ2lufWZ1bmN0aW9uIGkodCxlKXt0LnBhcmFtcy5zdGF0dXM9ZS5zdGF0dXM7dmFyIG49dihlLHQubGFzdFNpemUpO2lmKG4mJih0Lm1ldHJpY3MucnhTaXplPW4pLHQuc2FtZU9yaWdpbil7dmFyIHI9ZS5nZXRSZXNwb25zZUhlYWRlcigiWC1OZXdSZWxpYy1BcHAtRGF0YSIpO3ImJih0LnBhcmFtcy5jYXQ9ci5zcGxpdCgiLCAiKS5wb3AoKSl9dC5sb2FkQ2FwdHVyZUNhbGxlZD0hMH12YXIgYT10KCJsb2FkZXIiKTtpZihhLnhocldyYXBwYWJsZSl7dmFyIHM9dCgiaGFuZGxlIiksYz10KDE3KSxmPXQoMTUpLmdlbmVyYXRlVHJhY2VQYXlsb2FkLHU9dCgiZWUiKSxkPVsibG9hZCIsImVycm9yIiwiYWJvcnQiLCJ0aW1lb3V0Il0scD1kLmxlbmd0aCxsPXQoImlkIiksaD10KDIxKSxtPXQoMjApLHY9dCgxOCksdz13aW5kb3cuWE1MSHR0cFJlcXVlc3Q7YS5mZWF0dXJlcy54aHI9ITAsdCgxNCksdCg3KSx1Lm9uKCJuZXcteGhyIixmdW5jdGlvbih0KXt2YXIgZT10aGlzO2UudG90YWxDYnM9MCxlLmNhbGxlZD0wLGUuY2JUaW1lPTAsZS5lbmQ9cixlLmVuZGVkPSExLGUueGhyR3VpZHM9e30sZS5sYXN0U2l6ZT1udWxsLGUubG9hZENhcHR1cmVDYWxsZWQ9ITEsdC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbihuKXtpKGUsdCl9LCExKSxoJiYoaD4zNHx8aDwxMCl8fHdpbmRvdy5vcGVyYXx8dC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZnVuY3Rpb24odCl7ZS5sYXN0U2l6ZT10LmxvYWRlZH0sITEpfSksdS5vbigib3Blbi14aHItc3RhcnQiLGZ1bmN0aW9uKHQpe3RoaXMucGFyYW1zPXttZXRob2Q6dFswXX0sbyh0aGlzLHRbMV0pLHRoaXMubWV0cmljcz17fX0pLHUub24oIm9wZW4teGhyLWVuZCIsZnVuY3Rpb24odCxlKXsibG9hZGVyX2NvbmZpZyJpbiBOUkVVTSYmInhwaWQiaW4gTlJFVU0ubG9hZGVyX2NvbmZpZyYmdGhpcy5zYW1lT3JpZ2luJiZlLnNldFJlcXVlc3RIZWFkZXIoIlgtTmV3UmVsaWMtSUQiLE5SRVVNLmxvYWRlcl9jb25maWcueHBpZCk7dmFyIG49Zih0aGlzLnBhcnNlZE9yaWdpbik7biYmbi5oZWFkZXImJihlLnNldFJlcXVlc3RIZWFkZXIoIm5ld3JlbGljIixuLmhlYWRlciksdGhpcy5kdD1uKX0pLHUub24oInNlbmQteGhyLXN0YXJ0IixmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMubWV0cmljcyxyPXRbMF0sbz10aGlzO2lmKG4mJnIpe3ZhciBpPW0ocik7aSYmKG4udHhTaXplPWkpfXRoaXMuc3RhcnRUaW1lPWEubm93KCksdGhpcy5saXN0ZW5lcj1mdW5jdGlvbih0KXt0cnl7ImFib3J0IiE9PXQudHlwZXx8by5sb2FkQ2FwdHVyZUNhbGxlZHx8KG8ucGFyYW1zLmFib3J0ZWQ9ITApLCgibG9hZCIhPT10LnR5cGV8fG8uY2FsbGVkPT09by50b3RhbENicyYmKG8ub25sb2FkQ2FsbGVkfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5vbmxvYWQpKSYmby5lbmQoZSl9Y2F0Y2gobil7dHJ5e3UuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLFtuXSl9Y2F0Y2gocil7fX19O2Zvcih2YXIgcz0wO3M8cDtzKyspZS5hZGRFdmVudExpc3RlbmVyKGRbc10sdGhpcy5saXN0ZW5lciwhMSl9KSx1Lm9uKCJ4aHItY2ItdGltZSIsZnVuY3Rpb24odCxlLG4pe3RoaXMuY2JUaW1lKz10LGU/dGhpcy5vbmxvYWRDYWxsZWQ9ITA6dGhpcy5jYWxsZWQrPTEsdGhpcy5jYWxsZWQhPT10aGlzLnRvdGFsQ2JzfHwhdGhpcy5vbmxvYWRDYWxsZWQmJiJmdW5jdGlvbiI9PXR5cGVvZiBuLm9ubG9hZHx8dGhpcy5lbmQobil9KSx1Lm9uKCJ4aHItbG9hZC1hZGRlZCIsZnVuY3Rpb24odCxlKXt2YXIgbj0iIitsKHQpKyEhZTt0aGlzLnhockd1aWRzJiYhdGhpcy54aHJHdWlkc1tuXSYmKHRoaXMueGhyR3VpZHNbbl09ITAsdGhpcy50b3RhbENicys9MSl9KSx1Lm9uKCJ4aHItbG9hZC1yZW1vdmVkIixmdW5jdGlvbih0LGUpe3ZhciBuPSIiK2wodCkrISFlO3RoaXMueGhyR3VpZHMmJnRoaXMueGhyR3VpZHNbbl0mJihkZWxldGUgdGhpcy54aHJHdWlkc1tuXSx0aGlzLnRvdGFsQ2JzLT0xKX0pLHUub24oImFkZEV2ZW50TGlzdGVuZXItZW5kIixmdW5jdGlvbih0LGUpe2UgaW5zdGFuY2VvZiB3JiYibG9hZCI9PT10WzBdJiZ1LmVtaXQoInhoci1sb2FkLWFkZGVkIixbdFsxXSx0WzJdXSxlKX0pLHUub24oInJlbW92ZUV2ZW50TGlzdGVuZXItZW5kIixmdW5jdGlvbih0LGUpe2UgaW5zdGFuY2VvZiB3JiYibG9hZCI9PT10WzBdJiZ1LmVtaXQoInhoci1sb2FkLXJlbW92ZWQiLFt0WzFdLHRbMl1dLGUpfSksdS5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXtlIGluc3RhbmNlb2YgdyYmKCJvbmxvYWQiPT09biYmKHRoaXMub25sb2FkPSEwKSwoImxvYWQiPT09KHRbMF0mJnRbMF0udHlwZSl8fHRoaXMub25sb2FkKSYmKHRoaXMueGhyQ2JTdGFydD1hLm5vdygpKSl9KSx1Lm9uKCJmbi1lbmQiLGZ1bmN0aW9uKHQsZSl7dGhpcy54aHJDYlN0YXJ0JiZ1LmVtaXQoInhoci1jYi10aW1lIixbYS5ub3coKS10aGlzLnhockNiU3RhcnQsdGhpcy5vbmxvYWQsZV0sZSl9KSx1Lm9uKCJmZXRjaC1iZWZvcmUtc3RhcnQiLGZ1bmN0aW9uKHQpe3ZhciBlLG49dFsxXXx8e307InN0cmluZyI9PXR5cGVvZiB0WzBdP2U9dFswXTp0WzBdJiZ0WzBdLnVybCYmKGU9dFswXS51cmwpLGUmJih0aGlzLnBhcnNlZE9yaWdpbj1jKGUpLHRoaXMuc2FtZU9yaWdpbj10aGlzLnBhcnNlZE9yaWdpbi5zYW1lT3JpZ2luKTt2YXIgcj1mKHRoaXMucGFyc2VkT3JpZ2luKTtpZihyJiZyLmhlYWRlcil7dmFyIG89ci5oZWFkZXI7aWYoInN0cmluZyI9PXR5cGVvZiB0WzBdKXt2YXIgaT17fTtmb3IodmFyIGEgaW4gbilpW2FdPW5bYV07aS5oZWFkZXJzPW5ldyBIZWFkZXJzKG4uaGVhZGVyc3x8e30pLGkuaGVhZGVycy5zZXQoIm5ld3JlbGljIixvKSx0aGlzLmR0PXIsdC5sZW5ndGg+MT90WzFdPWk6dC5wdXNoKGkpfWVsc2UgdFswXSYmdFswXS5oZWFkZXJzJiYodFswXS5oZWFkZXJzLmFwcGVuZCgibmV3cmVsaWMiLG8pLHRoaXMuZHQ9cil9fSl9fSx7fV0sMTc6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj17fTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYodCBpbiByKXJldHVybiByW3RdO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxuPXdpbmRvdy5sb2NhdGlvbixvPXt9O2UuaHJlZj10LG8ucG9ydD1lLnBvcnQ7dmFyIGk9ZS5ocmVmLnNwbGl0KCI6Ly8iKTshby5wb3J0JiZpWzFdJiYoby5wb3J0PWlbMV0uc3BsaXQoIi8iKVswXS5zcGxpdCgiQCIpLnBvcCgpLnNwbGl0KCI6IilbMV0pLG8ucG9ydCYmIjAiIT09by5wb3J0fHwoby5wb3J0PSJodHRwcyI9PT1pWzBdPyI0NDMiOiI4MCIpLG8uaG9zdG5hbWU9ZS5ob3N0bmFtZXx8bi5ob3N0bmFtZSxvLnBhdGhuYW1lPWUucGF0aG5hbWUsby5wcm90b2NvbD1pWzBdLCIvIiE9PW8ucGF0aG5hbWUuY2hhckF0KDApJiYoby5wYXRobmFtZT0iLyIrby5wYXRobmFtZSk7dmFyIGE9IWUucHJvdG9jb2x8fCI6Ij09PWUucHJvdG9jb2x8fGUucHJvdG9jb2w9PT1uLnByb3RvY29sLHM9ZS5ob3N0bmFtZT09PWRvY3VtZW50LmRvbWFpbiYmZS5wb3J0PT09bi5wb3J0O3JldHVybiBvLnNhbWVPcmlnaW49YSYmKCFlLmhvc3RuYW1lfHxzKSwiLyI9PT1vLnBhdGhuYW1lJiYoclt0XT1vKSxvfX0se31dLDE4OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUpe3ZhciBuPXQucmVzcG9uc2VUeXBlO3JldHVybiJqc29uIj09PW4mJm51bGwhPT1lP2U6ImFycmF5YnVmZmVyIj09PW58fCJibG9iIj09PW58fCJqc29uIj09PW4/byh0LnJlc3BvbnNlKToidGV4dCI9PT1ufHwiIj09PW58fHZvaWQgMD09PW4/byh0LnJlc3BvbnNlVGV4dCk6dm9pZCAwfXZhciBvPXQoMjApO2UuZXhwb3J0cz1yfSx7fV0sMTk6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7fWZ1bmN0aW9uIG8odCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBpKHQsW2Yubm93KCldLmNvbmNhdChzKGFyZ3VtZW50cykpLGU/bnVsbDp0aGlzLG4pLGU/dm9pZCAwOnRoaXN9fXZhciBpPXQoImhhbmRsZSIpLGE9dCgyNSkscz10KDI2KSxjPXQoImVlIikuZ2V0KCJ0cmFjZXIiKSxmPXQoImxvYWRlciIpLHU9TlJFVU07InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cubmV3cmVsaWMmJihuZXdyZWxpYz11KTt2YXIgZD1bInNldFBhZ2VWaWV3TmFtZSIsInNldEN1c3RvbUF0dHJpYnV0ZSIsInNldEVycm9ySGFuZGxlciIsImZpbmlzaGVkIiwiYWRkVG9UcmFjZSIsImlubGluZUhpdCIsImFkZFJlbGVhc2UiXSxwPSJhcGktIixsPXArIml4bi0iO2EoZCxmdW5jdGlvbih0LGUpe3VbZV09byhwK2UsITAsImFwaSIpfSksdS5hZGRQYWdlQWN0aW9uPW8ocCsiYWRkUGFnZUFjdGlvbiIsITApLHUuc2V0Q3VycmVudFJvdXRlTmFtZT1vKHArInJvdXRlTmFtZSIsITApLGUuZXhwb3J0cz1uZXdyZWxpYyx1LmludGVyYWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuKG5ldyByKS5nZXQoKX07dmFyIGg9ci5wcm90b3R5cGU9e2NyZWF0ZVRyYWNlcjpmdW5jdGlvbih0LGUpe3ZhciBuPXt9LHI9dGhpcyxvPSJmdW5jdGlvbiI9PXR5cGVvZiBlO3JldHVybiBpKGwrInRyYWNlciIsW2Yubm93KCksdCxuXSxyKSxmdW5jdGlvbigpe2lmKGMuZW1pdCgobz8iIjoibm8tIikrImZuLXN0YXJ0IixbZi5ub3coKSxyLG9dLG4pLG8pdHJ5e3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1jYXRjaCh0KXt0aHJvdyBjLmVtaXQoImZuLWVyciIsW2FyZ3VtZW50cyx0aGlzLHRdLG4pLHR9ZmluYWxseXtjLmVtaXQoImZuLWVuZCIsW2Yubm93KCldLG4pfX19fTthKCJhY3Rpb25UZXh0LHNldE5hbWUsc2V0QXR0cmlidXRlLHNhdmUsaWdub3JlLG9uRW5kLGdldENvbnRleHQsZW5kLGdldCIuc3BsaXQoIiwiKSxmdW5jdGlvbih0LGUpe2hbZV09byhsK2UpfSksbmV3cmVsaWMubm90aWNlRXJyb3I9ZnVuY3Rpb24odCxlKXsic3RyaW5nIj09dHlwZW9mIHQmJih0PW5ldyBFcnJvcih0KSksaSgiZXJyIixbdCxmLm5vdygpLCExLGVdKX19LHt9XSwyMDpbZnVuY3Rpb24odCxlLG4pe2UuZXhwb3J0cz1mdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJnQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDtpZigib2JqZWN0Ij09dHlwZW9mIHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmdC5ieXRlTGVuZ3RoKXJldHVybiB0LmJ5dGVMZW5ndGg7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiZ0IGluc3RhbmNlb2YgQmxvYiYmdC5zaXplKXJldHVybiB0LnNpemU7aWYoISgidW5kZWZpbmVkIiE9dHlwZW9mIEZvcm1EYXRhJiZ0IGluc3RhbmNlb2YgRm9ybURhdGEpKXRyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkubGVuZ3RofWNhdGNoKGUpe3JldHVybn19fX0se31dLDIxOltmdW5jdGlvbih0LGUsbil7dmFyIHI9MCxvPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0ZpcmVmb3hbXC9cc10oXGQrXC5cZCspLyk7byYmKHI9K29bMV0pLGUuZXhwb3J0cz1yfSx7fV0sMjI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7dmFyIG49dC5nZXRFbnRyaWVzKCk7bi5mb3JFYWNoKGZ1bmN0aW9uKHQpeyJmaXJzdC1wYWludCI9PT10Lm5hbWU/YygidGltaW5nIixbImZwIixNYXRoLmZsb29yKHQuc3RhcnRUaW1lKV0pOiJmaXJzdC1jb250ZW50ZnVsLXBhaW50Ij09PXQubmFtZSYmYygidGltaW5nIixbImZjcCIsTWF0aC5mbG9vcih0LnN0YXJ0VGltZSldKX0pfWZ1bmN0aW9uIG8odCxlKXt2YXIgbj10LmdldEVudHJpZXMoKTtuLmxlbmd0aD4wJiZjKCJsY3AiLFtuW24ubGVuZ3RoLTFdXSl9ZnVuY3Rpb24gaSh0KXtpZih0IGluc3RhbmNlb2YgdSYmIXApe3ZhciBlLG49TWF0aC5yb3VuZCh0LnRpbWVTdGFtcCk7ZT1uPjFlMTI/RGF0ZS5ub3coKS1uOmYubm93KCktbixwPSEwLGMoInRpbWluZyIsWyJmaSIsbix7dHlwZTp0LnR5cGUsZmlkOmV9XSl9fWlmKCEoImluaXQiaW4gTlJFVU0mJiJwYWdlX3ZpZXdfdGltaW5nImluIE5SRVVNLmluaXQmJiJlbmFibGVkImluIE5SRVVNLmluaXQucGFnZV92aWV3X3RpbWluZyYmTlJFVU0uaW5pdC5wYWdlX3ZpZXdfdGltaW5nLmVuYWJsZWQ9PT0hMSkpe3ZhciBhLHMsYz10KCJoYW5kbGUiKSxmPXQoImxvYWRlciIpLHU9TlJFVU0uby5FVjtpZigiUGVyZm9ybWFuY2VPYnNlcnZlciJpbiB3aW5kb3cmJiJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuUGVyZm9ybWFuY2VPYnNlcnZlcil7YT1uZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihyKSxzPW5ldyBQZXJmb3JtYW5jZU9ic2VydmVyKG8pO3RyeXthLm9ic2VydmUoe2VudHJ5VHlwZXM6WyJwYWludCJdfSkscy5vYnNlcnZlKHtlbnRyeVR5cGVzOlsibGFyZ2VzdC1jb250ZW50ZnVsLXBhaW50Il19KX1jYXRjaChkKXt9fWlmKCJhZGRFdmVudExpc3RlbmVyImluIGRvY3VtZW50KXt2YXIgcD0hMSxsPVsiY2xpY2siLCJrZXlkb3duIiwibW91c2Vkb3duIiwicG9pbnRlcmRvd24iLCJ0b3VjaHN0YXJ0Il07bC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIodCxpLCExKX0pfX19LHt9XSwyMzpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIoKXtmdW5jdGlvbiB0KCl7cmV0dXJuIGU/MTUmZVtuKytdOjE2Kk1hdGgucmFuZG9tKCl8MH12YXIgZT1udWxsLG49MCxyPXdpbmRvdy5jcnlwdG98fHdpbmRvdy5tc0NyeXB0bztyJiZyLmdldFJhbmRvbVZhbHVlcyYmKGU9ci5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMzEpKSk7Zm9yKHZhciBvLGk9Inh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCIsYT0iIixzPTA7czxpLmxlbmd0aDtzKyspbz1pW3NdLCJ4Ij09PW8/YSs9dCgpLnRvU3RyaW5nKDE2KToieSI9PT1vPyhvPTMmdCgpfDgsYSs9by50b1N0cmluZygxNikpOmErPW87cmV0dXJuIGF9ZnVuY3Rpb24gbygpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gZT8xNSZlW24rK106MTYqTWF0aC5yYW5kb20oKXwwfXZhciBlPW51bGwsbj0wLHI9d2luZG93LmNyeXB0b3x8d2luZG93Lm1zQ3J5cHRvO3ImJnIuZ2V0UmFuZG9tVmFsdWVzJiZVaW50OEFycmF5JiYoZT1yLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgzMSkpKTtmb3IodmFyIG89W10saT0wO2k8MTY7aSsrKW8ucHVzaCh0KCkudG9TdHJpbmcoMTYpKTtyZXR1cm4gby5qb2luKCIiKX1lLmV4cG9ydHM9e2dlbmVyYXRlVXVpZDpyLGdlbmVyYXRlQ2F0SWQ6b319LHt9XSwyNDpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlKXtpZighbylyZXR1cm4hMTtpZih0IT09bylyZXR1cm4hMTtpZighZSlyZXR1cm4hMDtpZighaSlyZXR1cm4hMTtmb3IodmFyIG49aS5zcGxpdCgiLiIpLHI9ZS5zcGxpdCgiLiIpLGE9MDthPHIubGVuZ3RoO2ErKylpZihyW2FdIT09blthXSlyZXR1cm4hMTtyZXR1cm4hMH12YXIgbz1udWxsLGk9bnVsbCxhPS9WZXJzaW9uXC8oXFMrKVxzK1NhZmFyaS87aWYobmF2aWdhdG9yLnVzZXJBZ2VudCl7dmFyIHM9bmF2aWdhdG9yLnVzZXJBZ2VudCxjPXMubWF0Y2goYSk7YyYmcy5pbmRleE9mKCJDaHJvbWUiKT09PS0xJiZzLmluZGV4T2YoIkNocm9taXVtIik9PT0tMSYmKG89IlNhZmFyaSIsaT1jWzFdKX1lLmV4cG9ydHM9e2FnZW50Om8sdmVyc2lvbjppLG1hdGNoOnJ9fSx7fV0sMjU6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7dmFyIG49W10scj0iIixpPTA7Zm9yKHIgaW4gdClvLmNhbGwodCxyKSYmKG5baV09ZShyLHRbcl0pLGkrPTEpO3JldHVybiBufXZhciBvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPXJ9LHt9XSwyNjpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4pe2V8fChlPTApLCJ1bmRlZmluZWQiPT10eXBlb2YgbiYmKG49dD90Lmxlbmd0aDowKTtmb3IodmFyIHI9LTEsbz1uLWV8fDAsaT1BcnJheShvPDA/MDpvKTsrK3I8bzspaVtyXT10W2Urcl07cmV0dXJuIGl9ZS5leHBvcnRzPXJ9LHt9XSwyNzpbZnVuY3Rpb24odCxlLG4pe2UuZXhwb3J0cz17ZXhpc3RzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcubmF2aWdhdGlvblN0YXJ0fX0se31dLGVlOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBvKHQpe2Z1bmN0aW9uIGUodCl7cmV0dXJuIHQmJnQgaW5zdGFuY2VvZiByP3Q6dD9jKHQscyxpKTppKCl9ZnVuY3Rpb24gbihuLHIsbyxpKXtpZighcC5hYm9ydGVkfHxpKXt0JiZ0KG4scixvKTtmb3IodmFyIGE9ZShvKSxzPW0obiksYz1zLmxlbmd0aCxmPTA7ZjxjO2YrKylzW2ZdLmFwcGx5KGEscik7dmFyIGQ9dVt5W25dXTtyZXR1cm4gZCYmZC5wdXNoKFt4LG4scixhXSksYX19ZnVuY3Rpb24gbCh0LGUpe2dbdF09bSh0KS5jb25jYXQoZSl9ZnVuY3Rpb24gaCh0LGUpe3ZhciBuPWdbdF07aWYobilmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyluW3JdPT09ZSYmbi5zcGxpY2UociwxKX1mdW5jdGlvbiBtKHQpe3JldHVybiBnW3RdfHxbXX1mdW5jdGlvbiB2KHQpe3JldHVybiBkW3RdPWRbdF18fG8obil9ZnVuY3Rpb24gdyh0LGUpe2YodCxmdW5jdGlvbih0LG4pe2U9ZXx8ImZlYXR1cmUiLHlbbl09ZSxlIGluIHV8fCh1W2VdPVtdKX0pfXZhciBnPXt9LHk9e30seD17b246bCxhZGRFdmVudExpc3RlbmVyOmwscmVtb3ZlRXZlbnRMaXN0ZW5lcjpoLGVtaXQ6bixnZXQ6dixsaXN0ZW5lcnM6bSxjb250ZXh0OmUsYnVmZmVyOncsYWJvcnQ6YSxhYm9ydGVkOiExfTtyZXR1cm4geH1mdW5jdGlvbiBpKCl7cmV0dXJuIG5ldyByfWZ1bmN0aW9uIGEoKXsodS5hcGl8fHUuZmVhdHVyZSkmJihwLmFib3J0ZWQ9ITAsdT1wLmJhY2tsb2c9e30pfXZhciBzPSJuckBjb250ZXh0IixjPXQoImdvcyIpLGY9dCgyNSksdT17fSxkPXt9LHA9ZS5leHBvcnRzPW8oKTtwLmJhY2tsb2c9dX0se31dLGdvczpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4pe2lmKG8uY2FsbCh0LGUpKXJldHVybiB0W2VdO3ZhciByPW4oKTtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5rZXlzKXRyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cix3cml0YWJsZTohMCxlbnVtZXJhYmxlOiExfSkscn1jYXRjaChpKXt9cmV0dXJuIHRbZV09cixyfXZhciBvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPXJ9LHt9XSxoYW5kbGU6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSxuLHIpe28uYnVmZmVyKFt0XSxyKSxvLmVtaXQodCxlLG4pfXZhciBvPXQoImVlIikuZ2V0KCJoYW5kbGUiKTtlLmV4cG9ydHM9cixyLmVlPW99LHt9XSxpZDpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIXR8fCJvYmplY3QiIT09ZSYmImZ1bmN0aW9uIiE9PWU/LTE6dD09PXdpbmRvdz8wOmEodCxpLGZ1bmN0aW9uKCl7cmV0dXJuIG8rK30pfXZhciBvPTEsaT0ibnJAaWQiLGE9dCgiZ29zIik7ZS5leHBvcnRzPXJ9LHt9XSxsb2FkZXI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7aWYoIUUrKyl7dmFyIHQ9Yi5pbmZvPU5SRVVNLmluZm8sZT1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXTtpZihzZXRUaW1lb3V0KHUuYWJvcnQsM2U0KSwhKHQmJnQubGljZW5zZUtleSYmdC5hcHBsaWNhdGlvbklEJiZlKSlyZXR1cm4gdS5hYm9ydCgpO2YoeSxmdW5jdGlvbihlLG4pe3RbZV18fCh0W2VdPW4pfSksYygibWFyayIsWyJvbmxvYWQiLGEoKStiLm9mZnNldF0sbnVsbCwiYXBpIik7dmFyIG49bC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLnNyYz0iaHR0cHM6Ly8iK3QuYWdlbnQsZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLGUpfX1mdW5jdGlvbiBvKCl7ImNvbXBsZXRlIj09PWwucmVhZHlTdGF0ZSYmaSgpfWZ1bmN0aW9uIGkoKXtjKCJtYXJrIixbImRvbUNvbnRlbnQiLGEoKStiLm9mZnNldF0sbnVsbCwiYXBpIil9ZnVuY3Rpb24gYSgpe3JldHVybiBPLmV4aXN0cyYmcGVyZm9ybWFuY2Uubm93P01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkpOihzPU1hdGgubWF4KChuZXcgRGF0ZSkuZ2V0VGltZSgpLHMpKS1iLm9mZnNldH12YXIgcz0obmV3IERhdGUpLmdldFRpbWUoKSxjPXQoImhhbmRsZSIpLGY9dCgyNSksdT10KCJlZSIpLGQ9dCgyNCkscD13aW5kb3csbD1wLmRvY3VtZW50LGg9ImFkZEV2ZW50TGlzdGVuZXIiLG09ImF0dGFjaEV2ZW50Iix2PXAuWE1MSHR0cFJlcXVlc3Qsdz12JiZ2LnByb3RvdHlwZTtOUkVVTS5vPXtTVDpzZXRUaW1lb3V0LFNJOnAuc2V0SW1tZWRpYXRlLENUOmNsZWFyVGltZW91dCxYSFI6dixSRVE6cC5SZXF1ZXN0LEVWOnAuRXZlbnQsUFI6cC5Qcm9taXNlLE1POnAuTXV0YXRpb25PYnNlcnZlcn07dmFyIGc9IiIrbG9jYXRpb24seT17YmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGVycm9yQmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGFnZW50OiJqcy1hZ2VudC5uZXdyZWxpYy5jb20vbnItc3BhLTExNjkubWluLmpzIn0seD12JiZ3JiZ3W2hdJiYhL0NyaU9TLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGI9ZS5leHBvcnRzPXtvZmZzZXQ6cyxub3c6YSxvcmlnaW46ZyxmZWF0dXJlczp7fSx4aHJXcmFwcGFibGU6eCx1c2VyQWdlbnQ6ZH07dCgxOSksdCgyMiksbFtoXT8obFtoXSgiRE9NQ29udGVudExvYWRlZCIsaSwhMSkscFtoXSgibG9hZCIsciwhMSkpOihsW21dKCJvbnJlYWR5c3RhdGVjaGFuZ2UiLG8pLHBbbV0oIm9ubG9hZCIscikpLGMoIm1hcmsiLFsiZmlyc3RieXRlIixzXSxudWxsLCJhcGkiKTt2YXIgRT0wLE89dCgyNyl9LHt9XSwid3JhcC1mdW5jdGlvbiI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3JldHVybiEodCYmdCBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZ0LmFwcGx5JiYhdFthXSl9dmFyIG89dCgiZWUiKSxpPXQoMjYpLGE9Im5yQG9yaWdpbmFsIixzPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksYz0hMTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSxuLG8pe2Z1bmN0aW9uIG5yV3JhcHBlcigpe3ZhciByLGEscyxjO3RyeXthPXRoaXMscj1pKGFyZ3VtZW50cykscz0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uKHIsYSk6bnx8e319Y2F0Y2goZil7cChbZiwiIixbcixhLG9dLHNdKX11KGUrInN0YXJ0IixbcixhLG9dLHMpO3RyeXtyZXR1cm4gYz10LmFwcGx5KGEscil9Y2F0Y2goZCl7dGhyb3cgdShlKyJlcnIiLFtyLGEsZF0scyksZH1maW5hbGx5e3UoZSsiZW5kIixbcixhLGNdLHMpfX1yZXR1cm4gcih0KT90OihlfHwoZT0iIiksbnJXcmFwcGVyW2FdPXQsZCh0LG5yV3JhcHBlciksbnJXcmFwcGVyKX1mdW5jdGlvbiBmKHQsZSxvLGkpe298fChvPSIiKTt2YXIgYSxzLGMsZj0iLSI9PT1vLmNoYXJBdCgwKTtmb3IoYz0wO2M8ZS5sZW5ndGg7YysrKXM9ZVtjXSxhPXRbc10scihhKXx8KHRbc109bihhLGY/cytvOm8saSxzKSl9ZnVuY3Rpb24gdShuLHIsbyl7aWYoIWN8fGUpe3ZhciBpPWM7Yz0hMDt0cnl7dC5lbWl0KG4scixvLGUpfWNhdGNoKGEpe3AoW2EsbixyLG9dKX1jPWl9fWZ1bmN0aW9uIGQodCxlKXtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5rZXlzKXRyeXt2YXIgbj1PYmplY3Qua2V5cyh0KTtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2dldDpmdW5jdGlvbigpe3JldHVybiB0W25dfSxzZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRbbl09ZSxlfX0pfSksZX1jYXRjaChyKXtwKFtyXSl9Zm9yKHZhciBvIGluIHQpcy5jYWxsKHQsbykmJihlW29dPXRbb10pO3JldHVybiBlfWZ1bmN0aW9uIHAoZSl7dHJ5e3QuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLGUpfWNhdGNoKG4pe319cmV0dXJuIHR8fCh0PW8pLG4uaW5QbGFjZT1mLG4uZmxhZz1hLG59fSx7fV19LHt9LFsibG9hZGVyIiwyLDE2LDUsMyw0XSk7CiAgICAgICAgICA7TlJFVU0ubG9hZGVyX2NvbmZpZz17YWNjb3VudElEOiIzOTI4NCIsdHJ1c3RLZXk6IjM5Mjg0IixhZ2VudElEOiI3NDQ3NDY4IixsaWNlbnNlS2V5OiI2ODlkNWI0NTYyIixhcHBsaWNhdGlvbklEOiIyMDExMjI0In0KICAgICAgICAgIDtOUkVVTS5pbmZvPXtiZWFjb246ImJhbS5uci1kYXRhLm5ldCIsZXJyb3JCZWFjb246ImJhbS5uci1kYXRhLm5ldCIsbGljZW5zZUtleToiNjg5ZDViNDU2MiIsYXBwbGljYXRpb25JRDoiMjAxMTIyNCIsc2E6MX0KICAgICAgICA8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9nbG9iYWwvaWNvbl9mb250cy5taW4uY3NzP2UxMDEzZGViNmU4NDQ3MGM3NWQwNzVmODZkYjNjZDRkOTRkMjE4MTYiPgoKICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9leGNlcHRpb25fY29tYmluZWQubWluLmNzcz80YTU4YjNiNyI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vc3R5bGVzL2Nzc19vcHQvdG9wbmF2X2NhcnRfYnV0dG9uX2NvbWJpbmVkLm1pbi5jc3M/YTIwYTc1NjYiPgoKCgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgCiAgICAgICAgdmFyIHBsYXllckFzc2V0VXJscyA9IHsiYmFyZWJvbmVfanMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzMuMjMuMFwvanNcL2JhcmVib25lLmpzIiwianMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzMuMjMuMFwvanNcL3BsYXllci5qcyIsImNocm9tZWxlc3NfY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2Nzc1wvY2hyb21lbGVzcy5jc3MiLCJjaHJvbWVsZXNzX2pzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2pzXC9jaHJvbWVsZXNzLmpzIiwiY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2Nzc1wvcGxheWVyLmNzcyIsInBsYXllcl91cmwiOiJwbGF5ZXIudmltZW8uY29tIn07CgogICAgICAgIHZhciBfZXh0ZW5kID0gZnVuY3Rpb24oKXtmb3IodmFyIHI9YXJndW1lbnRzWzBdLG49MSxlPWFyZ3VtZW50cy5sZW5ndGg7ZT5uO24rKyl7dmFyIHQ9YXJndW1lbnRzW25dO2Zvcih2YXIgYSBpbiB0KXQuaGFzT3duUHJvcGVydHkoYSkmJihyW2FdPXRbYV0pfXJldHVybiByfTsKCiAgICAgICAgICAgIHdpbmRvdyA9IF9leHRlbmQod2luZG93LCB7InZpbWVvX2VzaSI6eyJjb25maWciOnsicm91dGUiOiJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcENvbnRyb2xsZXI6bWFpbiIsImNvbnRyb2xsZXIiOiJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcENvbnRyb2xsZXIiLCJhdXRvY29tcGxldGVfZW5hYmxlZCI6dHJ1ZSwib25zaXRlX3JlZmVycmVyIjpmYWxzZX19LCJhYmxpbmNvbG5fY29uZmlnIjpbXSwidmltZW8iOnsiY29uZmlnIjp7ImNhcnQiOnsiY2FydF9jb250ZW50Ijp7InN0b2NrIjp7InN0b3JlIjoic3RvY2siLCJ2ZXJzaW9uIjoxLCJxdWFudGl0aWVzIjpbXSwiaXRlbXMiOltdLCJhdHRyaWJ1dGVzIjpbXSwiY3VycmVuY3kiOiJCUkwiLCJpdGVtc19zb3J0ZWRfYnlfaW5kZXgiOltdLCJpdGVtc19jb3VudCI6MH19fX19fSk7Cjwvc2NyaXB0PgoKICAgICAgICAgICAgICAgIAogICAgPHNjcmlwdD4KICAgICAgICB2YXIgYWJsaW5jb2xuX2NvbmZpZyA9IGFibGluY29sbl9jb25maWcgfHwge307CiAgICAgICAgYWJsaW5jb2xuX2NvbmZpZy50ZXN0cyA9IHsiSlMuT21uaXNlYXJjaCI6eyJpZCI6NTI3LCJuYW1lIjoiSlMuT21uaXNlYXJjaCIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoiY3VpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOlt7ImlkIjoxNDUyLCJuYW1lIjoicGhhc2UxIiwiYnVja2V0cyI6MTAwLCJzdGF0ZSI6MSwicHVibGlzaGVkX29uIjoiMjAyMC0xMC0yMiAxMzo0Njo1MSIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNTQ1LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoidHJ1ZSIsIndlaWdodCI6MX0seyJpZCI6MjU0NiwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6ImZhbHNlIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX0seyJpZCI6MTQ1NCwibmFtZSI6InBoYXNlMiIsImJ1Y2tldHMiOjIwMCwic3RhdGUiOjEsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMTAtMjMgMDg6MTY6NTUiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjU1MSwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6InRydWUiLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NTIsIm5hbWUiOiJvbW5pc2VhcmNoX2VuYWJsZWQiLCJjaG9pY2UiOiJmYWxzZSIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119LHsiaWQiOjE0NTgsIm5hbWUiOiJwaGFzZTMiLCJidWNrZXRzIjozMDAsInN0YXRlIjoxLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTI2IDA4OjU0OjQ4IiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NTcsIm5hbWUiOiJvbW5pc2VhcmNoX2VuYWJsZWQiLCJjaG9pY2UiOiJ0cnVlIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTU4LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoiZmFsc2UiLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDYxLCJuYW1lIjoicGhhc2U0IiwiYnVja2V0cyI6NDAwLCJzdGF0ZSI6MSwicHVibGlzaGVkX29uIjoiMjAyMC0xMC0yNyAwODo0Njo1NiIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNTY1LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoidHJ1ZSIsIndlaWdodCI6MX0seyJpZCI6MjU2NiwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6ImZhbHNlIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX1dfSwiSlMuVG9wTmF2LkNyZWF0ZSI6eyJpZCI6NDUyLCJuYW1lIjoiSlMuVG9wTmF2LkNyZWF0ZSIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IjphbGwiLCJleHBlcmltZW50cyI6W3siaWQiOjEyMzUsIm5hbWUiOiIqIExvZ2dlZCBvdXQgSm9pbiBNb2RhbCIsImJ1Y2tldHMiOjEwMCwic3RhdGUiOjMsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMDYtMTUgMTY6MTc6MTUiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjIwMjAtMTAtMTUgMDY6NTM6MjUiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjE1MCwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiY29udHJvbCIsIndlaWdodCI6MX0seyJpZCI6MjE1MSwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiam9pbl93aXRob3V0X2Rlc2lnbiIsIndlaWdodCI6MX0seyJpZCI6MjE1MiwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiam9pbl93aXRoX2Rlc2lnbiIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119LHsiaWQiOjEzMTEsIm5hbWUiOiIqICogTG9nZ2VkIG91dCBKb2luIE1vZGFsIiwiYnVja2V0cyI6OTAwLCJzdGF0ZSI6MywicHVibGlzaGVkX29uIjoiMjAyMC0wNi0yMyAxNTowMTo1MiIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMjAyMC0xMC0xNSAwNjo1MzozNSIsInBhcmFtZXRlcnMiOlt7ImlkIjoyMjc1LCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyMjc2LCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJqb2luX3dpdGhvdXRfZGVzaWduIiwid2VpZ2h0IjoxfSx7ImlkIjoyMjc3LCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJqb2luX3dpdGhfZGVzaWduIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX1dfSwiSlMuVXBzZWxsLlJldmlldyI6eyJpZCI6NDQ0LCJuYW1lIjoiSlMuVXBzZWxsLlJldmlldyIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOltdfSwiVG9wTmF2Lk5ld1ZpZGVvLlNjcmVlblJlY29yZEZvckFsbCI6eyJpZCI6NTQxLCJuYW1lIjoiVG9wTmF2Lk5ld1ZpZGVvLlNjcmVlblJlY29yZEZvckFsbCIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOlt7ImlkIjoxNDE4LCJuYW1lIjoiU2hvdyByZWNvcmRlciBsaW5rIGZvciBhbGwiLCJidWNrZXRzIjoxMDAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTA1IDE0OjMwOjQwIiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTIxIDAzOjI4OjQzIiwicGFyYW1ldGVycyI6W3siaWQiOjI0NzcsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNDc4LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDUwLCJuYW1lIjoiKiBTaG93IHJlY29yZGVyIGxpbmsgZm9yIGFsbCIsImJ1Y2tldHMiOjAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTIyIDE3OjE3OjExIiwicGF1c2VkX29uIjoiMjAyMC0xMC0yMiAxNzoxNzoyNyIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTIyIDE3OjE3OjQwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NDAsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTQxLCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NDIsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbl9hbmltYXRpb24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDUzLCJuYW1lIjoiKiAqIFNob3cgcmVjb3JkZXIgbGluayBmb3IgYWxsIiwiYnVja2V0cyI6NTAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTIyIDE3OjM2OjQxIiwicGF1c2VkX29uIjoiMjAyMC0xMC0yNiAxNTowNzoyOCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTI2IDE1OjA3OjU2IiwicGFyYW1ldGVycyI6W3siaWQiOjI1NDcsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTQ4LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NDksIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbl9hbmltYXRpb24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDYwLCJuYW1lIjoiKiAqICogU2hvdyByZWNvcmRlciBsaW5rIGZvciBhbGwiLCJidWNrZXRzIjoxMDAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTI2IDE1OjA4OjU0IiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTI3IDEwOjAyOjU0IiwicGFyYW1ldGVycyI6W3siaWQiOjI1NjIsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTYzLCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NjQsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbl9hbmltYXRpb24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDYyLCJuYW1lIjoiKiAqICogKiBTaG93IHJlY29yZGVyIGxpbmsgZm9yIGFsbCIsImJ1Y2tldHMiOjEwMDAsInN0YXRlIjoxLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTI3IDEwOjA0OjEwIiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NjcsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0Ijo1fSx7ImlkIjoyNTY4LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjkwfSx7ImlkIjoyNTY5LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW5fYW5pbWF0aW9uIiwid2VpZ2h0Ijo1fV0sInNlZ21lbnRzIjpbXX1dfX07CiAgICA8L3NjcmlwdD4KPHNjcmlwdD4KKGZ1bmN0aW9uKCkgewogICAgd2luZG93Ll9ndG0gPSBbeyJleGNlcHRpb25faHR0cF9jb2RlIjoiSFRUUFwvMS4xIDQwNCBOb3QgRm91bmQiLCJsYW5ndWFnZSI6ImVuIiwidXNlcl9zdGF0dXMiOiJsb2dnZWRfb3V0IiwidXNlcl90eXBlIjoibm9uZSIsImdhX3VuaXZlcnNhbF9pZCI6IlVBLTc2NjQxLTgiLCJjb21zY29yZV9zaXRlX2lkIjoxMDM0ODI4OX1dOwoKICAgICAgICB2YXIgZ2RwckNvb2tpZSA9IChkb2N1bWVudC5jb29raWUubWF0Y2goL14oPzouKjspP1xzKnZpbWVvX2dkcHJfb3B0aW5ccyo9XHMqKFteO10rKSg/Oi4qKT8kLyl8fFssbnVsbF0pWzFdOwogICAgaWYgKGdkcHJDb29raWUgPT09ICctMScpIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgICAgIHdpbmRvdy5fZ3RtLnB1c2goewogICAgICAgICd2dWlkJzogZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKXZ1aWRccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKSwKICAgICAgICAnZ3RtLnN0YXJ0JzogbmV3IERhdGUoKS5nZXRUaW1lKCksCiAgICAgICAgJ2V2ZW50JzogJ2d0bS5qcycKICAgIH0pOwogICAgdmFyIGd0bXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwKICAgICAgICBub2RlOwogICAgZ3Rtcy5hc3luYyA9IHRydWU7CiAgICBndG1zLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgIGd0bXMuc3JjID0gJy8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0bS5qcz9pZD1HVE0tUkJLSyZsPV9ndG0nOwogICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsKICAgIG5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZ3Rtcywgbm9kZSk7Cn0pKCk7Cjwvc2NyaXB0Pgo8c2NyaXB0PgogICAgdmFyIGdvb2dsZXRhZyA9IGdvb2dsZXRhZyB8fCB7fSwKICAgICAgICBncHRhZHNsb3RzID0gW10sCiAgICAgICAgbGFuZ3VhZ2UsCiAgICAgICAgaGFzX3VwbG9hZGVkLAogICAgICAgIGNvaG9ydDsKICAgIGdvb2dsZXRhZy5jbWQgPSBnb29nbGV0YWcuY21kIHx8IFtdOwoKICAgIChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZ2RwckNvb2tpZSA9IChkb2N1bWVudC5jb29raWUubWF0Y2goL14oPzouKjspP1xzKnZpbWVvX2dkcHJfb3B0aW5ccyo9XHMqKFteO10rKSg/Oi4qKT8kLyl8fFssbnVsbF0pWzFdOwogICAgICAgIGlmIChnZHByQ29va2llID09PSAnLTEnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdmFyIGdhZHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwKICAgICAgICAgICAgdXNlU1NMID0gJ2h0dHBzOicgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wsCiAgICAgICAgICAgIG5vZGU7CiAgICAgICAgZ2Fkcy5hc3luYyA9IHRydWU7CiAgICAgICAgZ2Fkcy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICAgICAgZ2Fkcy5zcmMgPSAodXNlU1NMID8gJ2h0dHBzOicgOiAnaHR0cDonKSArICcvL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vdGFnL2pzL2dwdC5qcyc7CiAgICAgICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsKICAgICAgICBub2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGdhZHMsIG5vZGUpOwogICAgfSkoKTsKCiAgICBnb29nbGV0YWcuY21kLnB1c2goZnVuY3Rpb24oKSB7CiAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2UgPSBkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopbGFuZ3VhZ2VccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKTsKICAgICAgICAgICAgaGFzX3VwbG9hZGVkID0gKGRvY3VtZW50LmNvb2tpZS5yZXBsYWNlKC8oPzooPzpefC4qO1xzKiloYXNfdXBsb2FkZWRccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKSkgPyAnWScgOiAnTic7CiAgICAgICAgICAgIGNvbnNlbnQgPSAoZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKXZpbWVvX2dkcHJfb3B0aW5ccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKSkgPT09ICctMScgPyAxIDogMDsKICAgICAgICAgICAgY29ob3J0ID0gJ0EnOwogICAgICAgIAogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2xhbmd1YWdlJywgW2xhbmd1YWdlXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnaXNfdXBsb2FkZXInLCBbaGFzX3VwbG9hZGVkXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnY29ob3J0JywgW2NvaG9ydF0pOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2NvaG9ydF9hJywgWyhjb2hvcnQgPT09ICdBJykgPyAnWScgOiAnTiddKTsKICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnRfYicsIFsoY29ob3J0ID09PSAnQicpID8gJ1knIDogJ04nXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygncHJvZHVjdCcsIFsnJ10pOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ3N0b3JhZ2UnLCBbJ04nXSk7CgogICAgICAgICAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnc2VjJywgWydmYWxzZSddKTsKCiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnbG9nZ2VkX2luJywgWydmYWxzZSddKTsKCiAgICAgICAgICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdycHYnLCAoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMCkrMSkudG9TdHJpbmcoKSk7CgogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRSZXF1ZXN0Tm9uUGVyc29uYWxpemVkQWRzKGNvbnNlbnQpOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5lbmFibGVBc3luY1JlbmRlcmluZygpOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5kaXNhYmxlSW5pdGlhbExvYWQoKTsKICAgICAgICBnb29nbGV0YWcuZW5hYmxlU2VydmljZXMoKTsKICAgIH0pOwo8L3NjcmlwdD4KCiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvbG9nZ2luZ19jb21iaW5lZC5taW4uanM/OTc0MjEzZDEiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L2FibGluY29sbl9jb21iaW5lZC5taW4uanM/NmM0YWNiNTciPjwvc2NyaXB0PgoKCgogICAgPC9oZWFkPgogICAgPGJvZHkgY2xhc3M9Im9uc2l0ZSAiPgogICAgICAgIDxkaXYgaWQ9IndyYXAiIGNsYXNzPSJvdXRlcl93cmFwIj4KICAgICAgICAgICAgPGRpdiBpZD0idG9wbmF2X291dGVyX3dyYXAiPgogICAgICAgICAgICAgICAgPGRpdiBpZD0iY3JlYXRlLWZhY2Vib29rLWhlYWRlciI+PC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZpbWVvQnJhbmRfQ29sb3JSaWJib24gIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAoKPHN0eWxlPgogICAgQC13ZWJraXQta2V5ZnJhbWVzIHJlY29yZF9hbmltYXRpb24gewogICAgICAgIDAlLCAyMCUsIDUwJSwgODAlLCAxMDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CiAgICAgICAgNDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMnB4KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7CiAgICAgICAgfQogICAgICAgIDYwJSB7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDNweCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpOwogICAgICAgIH0KICAgIH0KCiAgICBAa2V5ZnJhbWVzIHJlY29yZF9hbmltYXRpb24gewogICAgICAgIDAlLCAyMCUsIDUwJSwgODAlLCAxMDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CiAgICAgICAgNDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMnB4KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7CiAgICAgICAgfQogICAgICAgIDYwJSB7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDNweCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpOwogICAgICAgIH0KICAgIH0KCiAgICAubG9nZ2VkX291dF9yZWNvcmRfYW5pbWF0aW9uIHsKICAgICAgICBhbmltYXRpb246IHJlY29yZF9hbmltYXRpb24gMS41cyAuMjVzIDU7CiAgICB9CgogICAgLmxvZ2dlZF9pbl9yZWNvcmRfYW5pbWF0aW9uIHsKICAgICAgICBhbmltYXRpb246IHJlY29yZF9hbmltYXRpb24gMS41cyAuMjVzIGluZmluaXRlOwogICAgfQoKICAgIC5yZWNvcmRlcl9uZXdfbGFiZWwgewogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzExNDBDNjsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAxNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICB3aWR0aDogNDBweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIH0KPC9zdHlsZT4KCjxzY3JpcHQ+CiAgICB3aW5kb3cudmltZW8gPSB3aW5kb3cudmltZW8gfHwge307Cjwvc2NyaXB0PgoKPGRpdiBpZD0idG9wbmF2X2Rlc2t0b3AiIGNsYXNzPSJ0b3BuYXZfZGVza3RvcCAiIHJvbGU9ImJhbm5lciI+CiAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF93cmFwcGVyIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbG9nbyIgaHJlZj0iLy92aW1lby5jb20iIGFsdD0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiB0aXRsZT0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiBhcmlhLWxhYmVsPSJHbyB0byBWaW1lbyBob21lIHBhZ2UiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnZpbWVvX2hvbWUiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2hvbWVfY2xpY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFsdD0iVmltZW8iIHdpZHRoPSIxMDAiIGhlaWdodD0iNDAiPjxwYXRoIGQ9Ik0yMi40NDggMTQuNTc1Yy0uMTA0IDIuMTctMS42MTggNS4xNDYtNC41NDQgOC45MTItMy4wMyAzLjk0Mi01LjU5IDUuOTEyLTcuNjg2IDUuOTEyLTEuMjk3IDAtMi4zOTctMS4yMDQtMy4zLTMuNi0uNi0yLjItMS4yMDItNC4zOTgtMS43OTQtNi41OTgtLjY2NC0yLjM5Ni0xLjM4LTMuNi0yLjE0Ny0zLjYtLjE2NiAwLS43NDcuMzU0LTEuNzUzIDEuMDVsLTEuMDQ4LTEuMzVjMS4xLS45NjUgMi4xOS0xLjkzIDMuMjU3LTIuOTA1IDEuNDYzLTEuMjY1IDIuNTczLTEuOTQgMy4zLTIuMDAyIDEuNzMyLS4xNjYgMi44IDEuMDE3IDMuMjA1IDMuNTU4LjQzNSAyLjc0LjczNiA0LjQ0LjkwMiA1LjExNS40OTggMi4yNyAxLjA0OCAzLjQwMiAxLjY1IDMuNDAyLjQ2NiAwIDEuMTcyLS43MzcgMi4xMDUtMi4yMS45MzQtMS40NzMgMS40MzItMi41OTMgMS41MDQtMy4zNy4xMzMtMS4yNzctLjM2NS0xLjkxLTEuNTA2LTEuOTEtLjUzIDAtMS4wOC4xMjUtMS42NS4zNjQgMS4xLTMuNTkgMy4xODYtNS4zMzMgNi4yNzctNS4yMyAyLjI3My4wNzMgMy4zNSAxLjU1NiAzLjIyNyA0LjQ2bTEzLjc1NSA3LjAzNGMtLjkzMyAxLjc2NC0yLjIyIDMuMzctMy44NiA0LjgwMy0yLjI0IDEuOTMtNC40NyAyLjkwNS02LjcgMi45MDUtMS4wMzcuMDAyLTEuODI2LS4zMy0yLjM3Ni0uOTk0LS41NS0uNjYzLS44MS0xLjUzNS0uNzc3LTIuNjAzLjAzLTEuMS4zNzItMi44IDEuMDI1LTUuMTA0LjY1NC0yLjMwMy45NzYtMy41MzcuOTc2LTMuNzAzIDAtLjg2LS4zLTEuMjk3LS45MDItMS4yOTctLjE5OCAwLS43Ny4zNTMtMS43MDIgMS4wNDhsLTEuMTUyLTEuMzVjMS4wNy0uOTYyIDIuMTM3LTEuOTI3IDMuMjA2LTIuOTAyIDEuNDMtMS4yNjYgMi41LTEuOTQgMy4yMDUtMi4wMDIgMS4xLS4xMDMgMS45MS4yMyAyLjQyOC45NzYuNTE4Ljc0Ny43MDUgMS43MjIuNTggMi45MTUtLjQzNSAyLjAzNC0uOTAyIDQuNjA3LTEuNCA3LjczLS4wMyAxLjQzLjQ4OCAyLjE0NiAxLjU1NiAyLjE0Ni40NjcgMCAxLjI5Ny0uNDk4IDIuNS0xLjQ4My45OTYtLjgyIDEuODE1LTEuNTk4IDIuNDUtMi4zMjRsLjk0MiAxLjI0NG0tNC4zNTctMTcuOGMtLjAzLjgzLS40NDYgMS42MjgtMS4yNTUgMi4zOTUtLjkuODYtMS45NyAxLjI5Ni0zLjIwNCAxLjI5Ni0xLjkgMC0yLjgyMi0uODMtMi43NS0yLjQ5LjAzMi0uODYuNTQtMS42OSAxLjUyNi0yLjQ5Ljk4NS0uNzk3IDIuMDc0LTEuMTkgMy4yNzgtMS4xOS43MDUgMCAxLjI4Ni4yNyAxLjc1My44Mi40NjcuNTQuNjg0IDEuMS42NTMgMS42Nm0zNS42MTIgMTcuOGMtLjkzMyAxLjc2My0yLjIyIDMuMzctMy44NiA0LjgwMi0yLjI0IDEuOTMtNC40NyAyLjkwNC02LjcgMi45MDQtMi4xNjguMDAyLTMuMjE2LTEuMjAyLTMuMTUzLTMuNTk4LjAzLTEuMDcuMjM4LTIuMzU1LjYyMi0zLjg1LjM4NC0xLjUwMy41OS0yLjY2NS42MjMtMy41MDUuMDMtMS4yNjUtLjM1My0xLjg5OC0xLjE1Mi0xLjg5OC0uODcgMC0xLjkxIDEuMDM2LTMuMTEyIDMuMS0xLjI3NiAyLjE2OC0xLjk2IDQuMjc0LTIuMDY0IDYuMzA4LS4wNzMgMS40My4wNzIgMi41NC40MjUgMy4yOTgtMi4zMjQuMDY0LTMuOTYzLS4zMi00Ljg4Ni0xLjE1LS44My0uNzM3LTEuMjEyLTEuOTUtMS4xNS0zLjY1Mi4wMy0xLjA2OC4xOTgtMi4xMzcuNDg4LTMuMjA1LjI5LTEuMDcuNDU3LTIuMDIzLjQ4OC0yLjg1My4wNjItMS4yMzQtLjM4NC0xLjg1Ny0xLjM1LTEuODU3LS44NCAwLTEuNzQuOTU1LTIuNzA2IDIuODUzLS45NjYgMS45LTEuNTA1IDMuODktMS42MSA1Ljk1Ni0uMDYgMS44NjcuMDUzIDMuMTc0LjM2NCAzLjktMi4yOTMuMDYyLTMuOTItLjQxNS00Ljg3Ni0xLjQ1Mi0uNzk4LS44Ni0xLjE2LTIuMTgtMS4xLTMuOTQyLjAzMi0uODYuMTg4LTIuMDc1LjQ1Ny0zLjYyLjI4LTEuNTQ2LjQyNS0yLjc1LjQ1Ny0zLjYyLjA2Mi0uNjAzLS4wODMtLjkwMy0uNDQ2LS45MDMtLjE5NyAwLS43NjguMzQtMS43MDIgMS4wMTVsLTEuMjAzLTEuMzQ4Yy4xNjgtLjEzNSAxLjIxNi0xLjEgMy4xNTYtMi45MDUgMS40LTEuMjk3IDIuMzU0LTEuOTcgMi44NTItMi4wMDIuODcyLS4wNzMgMS41NjcuMjkgMi4xMDYgMS4wOC41My43ODcuOCAxLjY5LjggMi43MjcgMCAuMzMyLS4wMzIuNjU0LS4xMDUuOTU0LjQ5Ny0uNzY2IDEuMDgtMS40MyAxLjc1Mi0yIDEuNTM3LTEuMzQgMy4yNi0yLjA4NiA1LjE1Ny0yLjI1MiAxLjY0LS4xMzUgMi44LjI1IDMuNTA1IDEuMTUyLjU3LjczNi44MyAxLjc4NC44IDMuMTUzLjIzNy0uMTk4LjQ4Ni0uNDE2Ljc0Ni0uNjU0Ljc2Ny0uOTAzIDEuNTE0LTEuNjIgMi4yNS0yLjE0OCAxLjIzNS0uOTAyIDIuNTItMS40IDMuODYtMS41MDQgMS41OTctLjEzNSAyLjc1LjI1IDMuNDU0IDEuMTUyLjYwMi43MjYuODcgMS43NzQuOCAzLjE0My0uMDMyLjkzMy0uMjYgMi4yOC0uNjc1IDQuMDY1LS40MTYgMS43NzMtLjYyNCAyLjgtLjYyNCAzLjA3LS4wMy42OTUuMDMgMS4xODIuMTk3IDEuNDQyLjE2Ni4yNy41Ny4zOTQgMS4yMDMuMzk0LjQ2NyAwIDEuMjk3LS40OTcgMi41LTEuNDgyLjk5Ni0uODIgMS44MTYtMS41OTggMi40NS0yLjMyNGwuOTYzIDEuMjU0bTE4Ljc2NS0uMDUyYy0uOTY1IDEuNTk4LTIuODc0IDMuMTk1LTUuNzA2IDQuNzkzLTMuNTM4IDIuMDMyLTcuMTI3IDMuMDUtMTAuNzU4IDMuMDUtMi43MDYgMC00LjYzNi0uOTA0LTUuODA4LTIuNy0uODMtMS4yMzMtMS4yMzQtMi42OTYtMS4yMDMtNC40MDcuMDMtMi42OTggMS4yMzQtNS4yNyAzLjYtNy43MSAyLjYwMy0yLjY2NSA1LjY3NC00LjAwMyA5LjIxLTQuMDAzIDMuMjcgMCA1IDEuMzI4IDUuMjA4IDMuOTk0LjEzNSAxLjcwMi0uNzk4IDMuNDQ1LTIuOCA1LjI0LTIuMTM3IDEuOTYtNC44MjQgMy4yMTUtOC4wNiAzLjc0NC42LjgzIDEuNTA0IDEuMjQ1IDIuNzA3IDEuMjQ1IDIuMzk2IDAgNS4wMi0uNjEzIDcuODYzLTEuODM3IDIuMDMzLS44NiAzLjYzLTEuNzUzIDQuODAzLTIuNjc2bC45NDUgMS4yNjVtLTExLjM2LTUuMjI4Yy4wMzItLjg5Mi0uMzMtMS4zNS0xLjEtMS4zNS0uOTk0IDAtMi4wMS42ODYtMy4wNDggMi4wNjYtMS4wMzggMS4zOC0xLjU2NyAyLjY5Ny0xLjU5OCAzLjk2Mi0uMDIgMC0uMDIuMjE4IDAgLjY0MyAxLjYzLS42IDMuMDUtMS41MTQgNC4yNDItMi43MzguOTY2LTEuMDU4IDEuNDYzLTEuOTIgMS41MDUtMi41ODNtMjQuOTQ2IDEuODY4Yy0uMTM1IDMuMDcyLTEuMjY1IDUuNzE3LTMuNDAyIDcuOTQ3LTIuMTM1IDIuMjMtNC43OSAzLjM1LTcuOTU1IDMuMzUtMi42MzUgMC00LjYzNy0uODUtNi4wMDYtMi41NS0uOTk3LTEuMjY3LTEuNTU3LTIuODU0LTEuNjUtNC43NTItLjE2Ni0yLjg2My44Ni01LjQ5OCAzLjEtNy44OTQgMi40MDgtMi42NjUgNS40MjctMy45OTMgOS4wNTctMy45OTMgMi4zMzQgMCA0LjA5OC43ODggNS4zIDIuMzQ0IDEuMTMyIDEuNDQzIDEuNjUgMy4yOSAxLjU1NyA1LjU1bS01LjY2NC0uMTg1Yy4wMy0uOTAzLS4wOTQtMS43MzMtLjM3NC0yLjQ4LS4yOC0uNzQ3LS42OTUtMS4xMy0xLjIyNC0xLjEzLTEuNzAyIDAtMy4xMDIuOTIzLTQuMjAyIDIuNzYtLjkzMyAxLjUwMy0xLjQzIDMuMTEtMS41MDQgNC44MTItLjAzLjg0LjExNCAxLjU3Ny40NDYgMi4yMS4zNjQuNzM2Ljg4MiAxLjEgMS41NTYgMS4xIDEuNTA1IDAgMi43OS0uODgzIDMuODYtMi42NTYuODkyLTEuNDcyIDEuMzgtMy4wMDggMS40NC00LjYxNWguMDAyeiIgZmlsbD0iIzExMjIzMyIvPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X3N0b2NrX2xvZ28iIGhyZWY9Ii9zdG9jayI+CiAgICAgICAgICAgICAgICA8c3ZnIGFsdD0iVmltZW8iIHdpZHRoPSIxNzAiIGhlaWdodD0iNDAiIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDc4MCAxMjAiPjxwYXRoIGQ9Ik00NzEuOSA3MC4zMWMtMTIuMTQtMi43NC0yNC4yOC0zLjktMjQuMjgtMTIgMC02LjUgOC44Mi03LjY2IDEzLjU5LTcuNjYgNy4yMiAwIDEzLjczIDIuMTcgMTUuMTcgMTBoMTcuMmMtMi0xNi42Mi0xNS45LTIzLTMxLjIyLTIzLTEzLjU4IDAtMzEuMjEgNS4wNS0zMS4yMSAyMS4zOCAwIDE1LjE3IDExLjg1IDE5LjUxIDI0IDIyLjExczI0IDMuNzYgMjQuNDIgMTIuNDNjLjQzIDguNTItMTAuNCA5LjgyLTE2LjYyIDkuODItOC44MSAwLTE2LTMuNDYtMTYuOS0xM2gtMTYuNDljLjI5IDE3LjYzIDE0LjMxIDI2IDMzLjA5IDI2IDE1LjQ2IDAgMzMuMzgtNi41IDMzLjM4LTI0LjI4LS4wMy0xNC43Mi0xMi4xNC0xOS4wNS0yNC4xMy0yMS44ek01MjUuNjYgMTcuMjhoLTE2LjQ4djIyLjRoLTEyLjQyVjUyaDEyLjQydjQ0Yy4yOSAxMi40MyAzLjQ3IDE5LjA4IDIwLjY3IDE5LjA4IDMuNjEgMCA3LjA4LS41OCAxMC42OS0uODd2LTEyLjY4YTI4LjUyIDI4LjUyIDAgMCAxLTYuOTQuNTdjLTcuMzcgMC03Ljk0LTMuNDctNy45NC0xMC4yNlY1MmgxNC44OFYzOS42OGgtMTQuODh6TTU4MC44NSAzNy42NmMtMjQgMC0zNy43MSAxNi40Ny0zNy43MSAzOS4zIDAgMjMgMTMuNzMgMzkuNDUgMzcuNzEgMzkuNDVTNjE4LjU3IDk5Ljk0IDYxOC41NyA3N2MwLTIyLjg3LTEzLjczLTM5LjM0LTM3LjcyLTM5LjM0em0wIDY1Ljc0Yy0xNC43MyAwLTIxLjI0LTEzLjQtMjEuMjQtMjYuNHM2LjUxLTI2LjMgMjEuMjQtMjYuM1M2MDIuMSA2NC4xIDYwMi4xIDc3cy02LjUxIDI2LjQtMjEuMjUgMjYuNHpNNjYyLjc5IDUwLjY2YzkuMSAwIDE1Ljc1IDQuOTEgMTcuMDUgMTRoMTYuNDdjLTEuNTktMTguMzUtMTYuMzMtMjctMzMuNjctMjctMjQuNTYgMC0zNi44NSAxNy42My0zNi44NSA0MC4xNyAwIDIyIDEyLjg2IDM4LjU4IDM2LjI3IDM4LjU4IDE5LjIyIDAgMzEuMjItMTAuNjkgMzQuMjUtMzAuMDZoLTE2LjQ3Yy0xLjU5IDEwLjctOC4yNCAxNy4wNS0xNy43OCAxNy4wNS0xNC4zIDAtMTkuNzktMTMuMTUtMTkuNzktMjUuNTcgMC0yMi42OSAxMS45OS0yNy4xNyAyMC41Mi0yNy4xN3pNNzQyLjI2IDY3LjEzbDI4LjYxLTI3LjQ1aC0yMC4yM2wtMjkuNzYgMzAuMlYxMS4yMUg3MDQuNHYxMDMuMThoMTYuNDhWODcuNjVsOS44Mi05LjUzIDIyLjgzIDM2LjI3aDIwLjA5bC0zMS4zNi00Ny4yNnoiIGZpbGw9IiNmZmYiPjwvcGF0aD48cGF0aCBkPSJNMTE3LjI1IDI2LjcyYTE4LjM3IDE4LjM3IDAgMCAwIDEzLjE0LTUuMzFxNC45Mi00LjY5IDUuMTMtOS44YTkuNjIgOS42MiAwIDAgMC0yLjY3LTYuODQgOS4wOCA5LjA4IDAgMCAwLTcuMTgtMy4zNyAyMC45MSAyMC45MSAwIDAgMC0xMy40NSA0LjlxLTYuMDYgNC45MS02LjI2IDEwLjIxLS40IDEwLjIyIDExLjI5IDEwLjIxek0zODYuMTIgMzguMjVxLTIyLjM4IDAtMzcuMTUgMTYuMzlRMzM1LjIgNjkuNCAzMzYuMjQgODdjLjA1Ljg2LjEyIDEuNy4yMiAyLjUzbC0xLjU0LjY4cS0xNy40NiA3LjUyLTMyLjIzIDcuNTEtNy40IDAtMTEuMDktNS4xMiAxOS45LTMuMjcgMzMtMTUuMzUgMTIuNC0xMS4wMyAxMS41NC0yMS40Ny0xLjIzLTE2LjM3LTIxLjM0LTE2LjM4LTIxLjggMC0zNy44IDE2LjQyLTE0LjU2IDE1LTE0Ljc3IDMxLjZhMzcuNTcgMzcuNTcgMCAwIDAgLjI3IDUuMzdjLTIuMjkgMS41MS00IDIuMjctNS4yIDIuMjdxLTMuOSAwLTQuOTItMS42M2MtLjY5LTEuMDktMS0zLjA2LS44My01LjkzcTAtMS42NCAyLjU3LTEyLjU3dDIuNzctMTYuNjdxLjQtOC4zNy0zLjI4LTEyLjg4LTQuMzItNS41Mi0xNC4xNy00LjdhMzAuNDIgMzAuNDIgMCAwIDAtMTUuOCA2LjE2IDU0LjU3IDU0LjU3IDAgMCAwLTkuMjMgOC44MmMtMS4xIDEtMi4xMiAxLjg2LTMuMDggMi42N3EuMTktOC40MS0zLjI4LTEyLjkzLTQuMzItNS41My0xNC4zOC00LjcyYTM2LjQ2IDM2LjQ2IDAgMCAwLTIxLjEzIDkuMjQgMzcuNjcgMzcuNjcgMCAwIDAtNy4xOSA4LjIxIDE4LjE1IDE4LjE1IDAgMCAwIC40MS0zLjlBMTkuNDIgMTkuNDIgMCAwIDAgMTYyLjUgNDNxLTMuMjgtNC44Mi04LjYyLTQuNDEtMy4wNy4yMS0xMS42OSA4LjIxLTExLjkxIDExLjA4LTEyLjkzIDExLjlsNC45MiA1LjU0YzMuODMtMi43NiA2LjE2LTQuMTUgNy00LjE1cTIuMjUgMCAxLjg1IDMuNjhhMTE0LjExIDExNC4xMSAwIDAgMS0xLjg5IDE0Ljg0Yy0uNyAzLjk0LTEuMiA3LjMzLTEuNTIgMTAuMTlsLS4xOC4xNXEtNy4zOSA2LjA4LTEwLjI2IDYuMDdjLTQuMzggMC02LjUtMi45Mi02LjM3LTguNzlxMy4wOC0xOS4yMiA1Ljc2LTMxLjY5LjgxLTcuMzYtMi4zNy0xMnQtMTAtNHEtNC4zMi40LTEzLjE0IDguMjFMOTcgNTIuMzljLS40MS05LjY4LTQuODItMTQuNjYtMTMuMjgtMTQuOTFxLTE5LS42LTI1Ljc0IDIxLjQ2YTE3LjE5IDE3LjE5IDAgMCAxIDYuNzYtMS41cTcgMCA2LjE2IDcuODQtLjQ2IDQuNzItNi4yIDEzLjgxdC04LjYyIDkuMDZxLTMuNjkgMC02Ljc3LTE0LTEtNC4xMS0zLjY5LTIxLTIuNDctMTUuNTQtMTMuMTQtMTQuNTJRMjggMzkgMTguOTQgNDYuODRxLTYuNTcgNi0xMy4zNCAxMS45bDQuMyA1LjU0UTE2LjA1IDYwIDE3LjA3IDYwcTQuNzEgMCA4LjgxIDE0Ljc2bDcuMzggMjcuMDZxNS41MiAxNC43NiAxMy41MSAxNC43NiAxMi45MiAwIDMxLjU1LTI0LjI0IDEzLjEtMTYuODQgMTctMjguNWMzLjQ0LTIuNTUgNS41Ny0zLjg0IDYuMzUtMy44NHEzLjY5IDAgMy42OSA1LjMzIDAgMS00IDE1LjE4dC00LjIgMjAuOTJxLS4yMSA2LjU3IDMuMTggMTAuNjZjMi4yNSAyLjc0IDUuNTEgNC4xMSA5Ljc1IDQuMTFxMTMuNzUgMCAyNy41LTExLjljLjgyLS43MSAxLjYxLTEuNDQgMi4zOS0yLjE4YTE2LjUxIDE2LjUxIDAgMCAwIDMuNzcgNy41NnE1LjkzIDYuMzQgMjAgNS45My0xLjg5LTQuNTItMS40Ny0xNmE1OS43IDU5LjcgMCAwIDEgNi41Ny0yNC40M3E2LTExLjY4IDExLjEtMTEuNyA2IDAgNS41NSA3LjU5YTUzLjEzIDUzLjEzIDAgMCAxLTIgMTEuNzEgNTUuMjMgNTUuMjMgMCAwIDAtMiAxMy4xM3EtLjQxIDEwLjQ3IDQuNzEgMTUgNS43MyA1LjEzIDIwLjA1IDQuNzItMi4xMy00LjcxLTEuNzItMTMuNTQuNi0xMi41MiA4LjQ0LTI1Ljg2IDcuNDEtMTIuNzIgMTIuNzYtMTIuNzMgNSAwIDQuNzQgNy44YTc0Ljk0IDc0Ljk0IDAgMCAxLTIuNTYgMTQuMzYgNzQuNjEgNzQuNjEgMCAwIDAtMi41NyAxNS43OXEtLjQxIDE0Ljc4IDEyLjk0IDE0Ljc3IDEzLjc0IDAgMjcuNS0xMS45bC40NC0uNGMuMzIuNTQuNjQgMS4wOCAxIDEuNnE3LjE5IDExLjA4IDIzLjgxIDExLjA4IDIyLjM2IDAgNDQuMTMtMTIuNWMxLjYzLS45MiAzLjE3LTEuODMgNC42NS0yLjc1YTI5LjQzIDI5LjQzIDAgMCAwIDMuMjQgNS4xOHE4LjQyIDEwLjQ1IDI0LjYzIDEwLjQ1IDE5LjUgMCAzMi42NC0xMy43M2E0OC43OSA0OC43OSAwIDAgMCAxNC0zMi41OHEuNjEtMTMuOTMtNi4zNi0yMi43NS03LjQ5LTkuNjUtMjEuODUtOS42N3ptLTk3Ljc2IDQ2LjU2YTExLjEyIDExLjEyIDAgMCAxIDAtMi42NnEuMTktNy43NSA2LjU1LTE2LjIzdDEyLjUtOC40OGMzLjE1IDAgNC42NSAxLjg1IDQuNTEgNS41MnEtLjE5IDQuMDgtNi4xNCAxMC42MmE0Ni4yNSA0Ni4yNSAwIDAgMS0xNy40MiAxMS4yM3pNMzkxIDY5Ljg1YTM5IDM5IDAgMCAxLTYgMTguOTJxLTYuNTcgMTAuOTEtMTUuODEgMTAuOS00LjExIDAtNi4zNi00LjUyYTE3LjY2IDE3LjY2IDAgMCAxLTEuODUtOS4wNSAzOS44MSAzOS44MSAwIDAgMSA2LjE2LTE5Ljc0cTYuODYtMTEuMzEgMTcuMzMtMTEuMzFjMi4xOSAwIDMuODYgMS41NCA1IDQuNjNBMjUuODIgMjUuODIgMCAwIDEgMzkxIDY5Ljg1eiIgZmlsbD0iIzAwYWRlZiI+PC9wYXRoPjwvc3ZnPgogICAgICAgICAgICA8L2E+CiAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51IiByb2xlPSJuYXZpZ2F0aW9uIiBhcmlhLWxhYmVsPSJNYWluIG1lbnUiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ0b3BuYXZfbWVudV9kZXNrdG9wX21haW4iIHJvbGU9Im1lbnViYXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0iam9pbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X21lbnVfam9pbiBqcy10b3BuYXZfbWVudV9hdXRoIiBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO3ZpbWVvLk1vZGFsLmNyZWF0ZSh7c2l6ZToneHNtYWxsJyxjb250ZW50Oicvam9pbj9tb2RhbD1uZXcnfSkudGhlbihjb21wbGV0ZVVzZXJMb2dpbikiIGRhdGEtZ2EtZXZlbnQtY2xpY2s9InRvcF9uYXZ8am9pbiIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6am9pbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfam9pbl9jbGljayIgaHJlZj0iLy92aW1lby5jb20vam9pbiIgdGl0bGU9IkJlY29tZSBhIFZpbWVvIG1lbWJlciIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfam9pbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJsb2dpbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ianMtdG9wbmF2X21lbnVfYXV0aCIgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTt2aW1lby5Nb2RhbC5jcmVhdGUoe3NpemU6J3hzbWFsbCcsY29udGVudDonL2xvZ19pbj9tb2RhbD1uZXcnfSkudGhlbihjb21wbGV0ZVVzZXJMb2dpbikiIGRhdGEtZ2EtZXZlbnQtY2xpY2s9InRvcF9uYXZ8bG9naW4iIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmxvZ2luIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9sb2dpbl9jbGljayIgaHJlZj0iLy92aW1lby5jb20vbG9nX2luIiB0aXRsZT0iTG9nIGluIHRvIHlvdXIgYWNjb3VudCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfbG9naW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZyBpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJwcmljaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByaWNpbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3ByaWNpbmdfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3VwZ3JhZGUiIHRpdGxlPSJQcmljaW5nIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9wcmljaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmljaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9InByb2R1Y3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTtldmVudC50YXJnZXQuYmx1cigpOyIgY2xhc3M9InRvcG5hdl9tZW51X25vX2xpbmsgdG9wbmF2X2hhc19kcm9wZG93biB0b3BuYXZfaWNvbl9jaGV2cm9uX2EiIGhyZWY9IiMiIHRpdGxlPSJQcm9kdWN0IiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9wcm9kdWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9kdWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duLS13cmFwcGVyIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl9wcm9kdWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3NvbHV0aW9ucy0tZmVhdHVyZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24tLWxhYmVscyI+RkVBVFVSRVM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDp2aWRlb19wbGF5ZXIiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfdmlkZW9fcGxheWVyIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1wbGF5ZXIiIHRpdGxlPSJWaWRlbyBwbGF5ZXIiPlZpZGVvIHBsYXllcjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOnNjcmVlbl9yZWNvcmRlciIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9zY3JlZW5fcmVjb3JkZXIiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3NjcmVlbi1yZWNvcmRlciIgdGl0bGU9IlNjcmVlbiByZWNvcmRlciI+U2NyZWVuIHJlY29yZGVyPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6bGl2ZV9zdHJlYW1pbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfbGl2ZV9zdHJlYW1pbmciIGhyZWY9Ii8vdmltZW8uY29tL2xpdmUiIHRpdGxlPSJMaXZlIHN0cmVhbWluZyI+TGl2ZSBzdHJlYW1pbmc8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDpwcml2YWN5IiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9wcm9kdWN0X3ByaXZhY3kiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLXByaXZhY3kiIHRpdGxlPSJQcml2YWN5Ij5Qcml2YWN5PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6Y29sbGFib3JhdGlvbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9jb2xsYWJvcmF0aW9uIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1jb2xsYWJvcmF0aW9uIiB0aXRsZT0iQ29sbGFib3JhdGlvbiI+Q29sbGFib3JhdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOmRpc3RyaWJ1dGlvbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9kaXN0cmlidXRpb24iIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLW1hcmtldGluZyIgdGl0bGU9IkRpc3RyaWJ1dGlvbiBhbmQgbWFya2V0aW5nIj5EaXN0cmlidXRpb24gJiBtYXJrZXRpbmc8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDptb25ldGl6YXRpb24iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfbW9uZXRpemF0aW9uIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1tb25ldGl6YXRpb24iIHRpdGxlPSJNb25ldGl6YXRpb24iPk1vbmV0aXphdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOmFuYWx5dGljcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9hbmFseXRpY3MiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLWFuYWx5dGljcyIgdGl0bGU9IkFuYWx5dGljcyI+QW5hbHl0aWNzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6aG9zdGluZyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9ob3N0aW5nIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy9vbmxpbmUtdmlkZW8taG9zdGluZyIgdGl0bGU9Ikhvc3RpbmcgYW5kIG1hbmFnZW1lbnQiPkhvc3RpbmcgJiBtYW5hZ2VtZW50PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvdXBncmFkZSIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24tLWNvbXBhcmVfcGxhbnMiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDpjb21wYXJlX3BsYW5zfHRhcmdldDovdXBncmFkZXx0eXBlOmNsaWNrIj5Db21wYXJlIFBsYW5zPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duLS1sYWJlbHMiPlNFUlZJQ0VTPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfc29sdXRpb25zLS1zZXJ2aWNlc19jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZXNfd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Y3JlYXRlfHRhcmdldDovY3JlYXRlfHR5cGU6Y2xpY2siIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2Jsb2NrIiBocmVmPSIvL3ZpbWVvLmNvbS9jcmVhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+TWFrZSBzb2NpYWwgdmlkZW9zIGluIGFuIGluc3RhbnQ6IHVzZSBjdXN0b20gdGVtcGxhdGVzIHRvIHRlbGwgdGhlIHJpZ2h0IHN0b3J5IGZvciB5b3VyIGJ1c2luZXNzLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2VzX3dyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmZvcl9oaXJlfHRhcmdldDovZm9yLWhpcmV8dHlwZTpjbGljayIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3NvbHV0aW9ucy0tc2VydmljZXNfYmxvY2siIGhyZWY9Ii8vdmltZW8uY29tL2Zvci1oaXJlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIEhpcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UG9zdCBqb2JzLCBmaW5kIHByb3MsIGFuZCBjb2xsYWJvcmF0ZSBjb21taXNzaW9uLWZyZWUgaW4gb3VyIHByb2Zlc3Npb25hbCBtYXJrZXRwbGFjZS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlc193cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDplbnRlcnByaXNlfHRhcmdldDovZW50ZXJwcmlzZXx0eXBlOmNsaWNrIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfc29sdXRpb25zLS1zZXJ2aWNlc19ibG9jayIgaHJlZj0iLy92aW1lby5jb20vZW50ZXJwcmlzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudGVycHJpc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+R2V0IHlvdXIgdGVhbSBhbGlnbmVkIHdpdGggYWxsIHRoZSB0b29scyB5b3UgbmVlZCBvbiBvbmUgc2VjdXJlLCByZWxpYWJsZSB2aWRlbyBwbGF0Zm9ybS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlc193cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpzdG9ja3x0YXJnZXQ6L3N0b2NrfHR5cGU6Y2xpY2siIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2Jsb2NrIiBocmVmPSIvL3ZpbWVvLmNvbS9zdG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkJyb3dzZSBhbmQgYnV5IGV4Y2VwdGlvbmFsLCByb3lhbHR5LWZyZWUgc3RvY2sgY2xpcHMsIGhhbmRwaWNrZWQgYnkgdGhlIGJlc3QuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9InNvbHV0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X2hhc19kcm9wZG93biB0b3BuYXZfaWNvbl9jaGV2cm9uX2EiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOnNvbHV0aW9ucyIgaHJlZj0iIyIgdGl0bGU9IlNvbHV0aW9ucyIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfc29sdXRpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb2x1dGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfc29sdXRpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Y3JlYXRpdmVfcHJvZmVzc2lvbmFscyIgaHJlZj0iLy92aW1lby5jb20vc29sdXRpb25zL2NyZWF0aXZlLXByb2Zlc3Npb25hbHMtc29sdXRpb25zIiB0aXRsZT0iQWxsIHlvdSBuZWVkIHRvIG1ha2UgZ3JlYXQgdmlkZW8uIj5DcmVhdGl2ZSBQcm9mZXNzaW9uYWxzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOnNtYWxsX2J1c2luZXNzIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvc21hbGwtYnVzaW5lc3Mtc29sdXRpb25zIiB0aXRsZT0iQ2FwdHVyZSB5b3VyIGN1c3RvbWVyc+KAmSBhdHRlbnRpb24gd2l0aCB2aWRlby4iPlNtYWxsIEJ1c2luZXNzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmVudGVycHJpc2UiIGhyZWY9Ii8vdmltZW8uY29tL2VudGVycHJpc2UiIHRpdGxlPSJFbnRlcnByaXNlIj5FbnRlcnByaXNlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmVkdWNhdGlvbiIgaHJlZj0iLy92aW1lby5jb20vc29sdXRpb25zL2VkdWNhdGlvbi1zb2x1dGlvbnMiIHRpdGxlPSJTaGFyZSBrbm93bGVkZ2Ugd2l0aCB2aWRlby4iPkVkdWNhdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpmaXRuZXNzIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvZml0bmVzcy1zb2x1dGlvbnMiIHRpdGxlPSJHZXQgeW91ciBmaXRuZXNzIHN0dWRpbyBvbmxpbmUuIj5GaXRuZXNzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmZhaXRoIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvZmFpdGgtc29sdXRpb25zIiB0aXRsZT0iS2VlcCB5b3VyIGNvbW11bml0eSBjb25uZWN0ZWQuIj5GYWl0aDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJpbnNwaXJhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO2V2ZW50LnRhcmdldC5ibHVyKCk7IiBjbGFzcz0idG9wbmF2X21lbnVfbm9fbGluayB0b3BuYXZfaGFzX2Ryb3Bkb3duIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgaHJlZj0iIyIgdGl0bGU9IldhdGNoIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9pbnNwaXJhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfaW5zcGlyYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDp3YXRjaHxrZXl3b3JkOndhdGNoIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vd2F0Y2giIHRpdGxlPSJFeHBsb3JlIj5FeHBsb3JlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6c3RhZmZfcGlja3MiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX3N0YWZmX3BpY2tzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9jaGFubmVscy9zdGFmZnBpY2tzIiB0aXRsZT0iVGhlIGJlc3QgdmlkZW9zIG9uIFZpbWVvLCBjdXJhdGVkIGRhaWx5IGJ5IG91ciB0ZWFtIj5TdGFmZiBQaWNrczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDptYW5hZ2VfdmlkZW9zfGtleXdvcmQ6dmlkZW9fc2Nob29sIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfdmlkZW9fc2Nob29sX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS92aWRlb3NjaG9vbCIgdGl0bGU9IkxlYXJuIGhvdyB0byBtYWtlIGJldHRlciB2aWRlb3MiPlZpZGVvIFNjaG9vbDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L25hdj48IS0tIC8udG9wbmF2X2Rlc2t0b3BfbWVudSAtLT4KICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InRvcG5hdl9tZW51X3NlYXJjaF9vbW5pc2VhcmNoIiBjbGFzcz0idG9wbmF2X21lbnVfc2VhcmNoIiBkYXRhLXF1ZXJ5PSIiIGRhdGEtcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9tZW51X3JpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icmVjb3JkX3RpcF93cmFwcGVyIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfdmlkZW9fcG9wb3ZlciIgb25Nb3VzZWVudGVyPSJ0cmFja05ld1ZpZGVvRHJvcGRvd25JbXByZXNzaW9uKCcnKSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPSJuZXdfdmlkZW9fZHJvcGRvd25fYnV0dG9uIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3ZpZGVvX3BvcG92ZXJfYnV0dG9uIGlyaXNfYnRuLS1wcmltYXJ5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6bmV3X3ZpZGVvIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jbGljaz0iaGFuZGxlTmV3VmlkZW9DbGljaygpIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfdmlkZW9fcG9wb3Zlcl9zcGFuX3dyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyB2aWRlbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9InJlY29yZF9hbmltYXRpb25fd3JhcHBlciIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3ZpZGVvX3BvcG92ZXJfc3Bhbl92YXJpYW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNMTIgMTUuNWExIDEgMCAwIDEtLjY3LS4yNmwtNS00LjUgMS4zNC0xLjQ4TDEyIDEzLjE1bDQuMzMtMy45IDEuMzQgMS40OS01IDQuNWExIDEgMCAwIDEtLjY3LjI2eiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSIjZmZmZmZmIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgaWQ9Im5ld192aWRlb19kcm9wZG93bl92YXJpYW50IiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biB0b3BuYXZfZGVza3RvcF92aWRlb19wb3BvdmVyX2Ryb3Bkb3duX3ZhcmlhbnQiIHJvbGU9Im1lbnUiIGFyaWEtaGlkZGVuPSJ0cnVlIiBzdHlsZT0icGFkZGluZzogdW5zZXQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW1fdmFyaWFudCIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBvbmNsaWNrPSIoZnVuY3Rpb24oZXZlbnQpIHsgaWYgKHdpbmRvdy5oYW5kbGVVcGxvYWRCdXR0b25DbGljaykgeyBoYW5kbGVVcGxvYWRCdXR0b25DbGljayhldmVudCk7IH19KShldmVudCkiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om5ld192aWRlb3xrZXl3b3JkOnsnYWN0aW9uJzondXBsb2FkJ318dGFyZ2V0Oi91cGxvYWR8dHlwZTpjbGljayIgaWQ9InRvcG5hdl9kZXNrdG9wX3VwbG9hZF9idXR0b24iIGhyZWY9Ii8vdmltZW8uY29tL3VwbG9hZCIgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFsaWduX3RvcG5hdl9kcm9wZG93bl9pY29ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b3BuYXZfZHJvcGRvd25faWNvbnMiPjxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTE4IDguNDhhNy4xNiA3LjE2IDAgMCAwLTEuODQtNC43NkE1LjgxIDUuODEgMCAwIDAgNi45MiA1YTUuMjQgNS4yNCAwIDAgMC00LjY5IDMuODVBNC45MSA0LjkxIDAgMCAwIDAgMTNhNS4xMyA1LjEzIDAgMCAwIDUgNWgxMGE1LjEgNS4xIDAgMCAwIDUtNC45NCA1Ljg5IDUuODkgMCAwIDAtMi00LjU4ek0xNSAxNmgtNHYtMy41OWwxLjI5IDEuMjkgMS40MS0xLjQxLTMuNy0zLjctMy43MSAzLjdMNy43IDEzLjcgOSAxMi40MVYxNkg1YTMuMTYgMy4xNiAwIDAgMS0zLTMgMi45MSAyLjkxIDAgMCAxIDEuNTItMi41OGwuNC0uMi4wOC0uNDRBMy4zOCAzLjM4IDAgMCAxIDcuNTkgN2guN2wuMjQtLjY2QTMuNjkgMy42OSAwIDAgMSAxMiA0YTMuNzMgMy43MyAwIDAgMSAyLjcyIDEuMTJBNS40NSA1LjQ1IDAgMCAxIDE2IDl2LjU0bC40NS4zQTMuNzkgMy43OSAwIDAgMSAxOCAxMy4wNiAzLjA5IDMuMDkgMCAwIDEgMTUgMTZ6IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiMxYTJlM2IiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtX3ZhcmlhbnQiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgb25jbGljaz0iaGFuZGxlQ3JlYXRlVmlkZW9DbGljayhldmVudCkiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om5ld192aWRlb3xrZXl3b3JkOnsnYWN0aW9uJzonY3JlYXRlJ318dGFyZ2V0Oi9jcmVhdGUvdmlkZW8tbWFrZXJ8dHlwZTpjbGljayIgaWQ9InRvcG5hdl9kZXNrdG9wX2NyZWF0ZV92aWRlb19idXR0b24iIGhyZWY9Ii8vdmltZW8uY29tL2NyZWF0ZS92aWRlby1tYWtlciIgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFsaWduX3RvcG5hdl9kcm9wZG93bl9pY29ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b3BuYXZfZHJvcGRvd25faWNvbnMiPjxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0zLjIgMTYuOGwzLjgtMSAxMC0xMGMuMi0uMi4yLS41IDAtLjdMMTQuOSAzYy0uMi0uMi0uNS0uMi0uNyAwbC0yLjEgMi4xIDIuOCAyLjhMMTMuOCA5IDExIDYuMiA0LjIgMTNsLTEgMy44em05LjktMTQuOWMuOC0uOCAyLS44IDIuOCAwTDE4LjEgNGMuOC44LjggMiAwIDIuOEw3LjggMTcuMmwtNS42IDEuNWMtLjUuMS0uOS0uMi0uNy0uN2wxLjQtNS43TDEzLjEgMS45eiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiMxYTJlM2IiCiAgICAgICAgICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgYSB2aWRlbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImNhcnRfdG9wX25hdiIgY2xhc3M9InRvcG5hdl9jYXJ0X2J1dHRvbiI+PC9kaXY+CgogICAgICAgICAgICA8L2Rpdj48IS0tIC8udG9wbmF2X21lbnVfcmlnaHQgLS0+CiAgICAgICAgICAgIDwvZGl2PjwhLS0gLy50b3BuYXZfZGVza3RvcF93cmFwcGVyIC0tPgo8L2Rpdj4KCiAgICA8c2NyaXB0PgogICAgICAgIHZhciBpc01vYmlsZSA9IC9pcGhvbmV8aXBvZHxhbmRyb2lkfHdlYm9zfGJsYWNrYmVycnl8d2luZG93cyBwaG9uZS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTsKCiAgICAgICAgLy8gRE8gTk9UIFJFTU9WRS4gVGhpcyBpcyBhIGNhbGxiYWNrIGZvciB0aGUgbG9naW4gJiBqb2luIGJ1dHRvbnMgaW4gVG9wTmF2QnVpbGRlci4KICAgICAgICBmdW5jdGlvbiBjb21wbGV0ZVVzZXJMb2dpbihyZXNwb25zZSkgewogICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgIXJlc3BvbnNlLnNpZ251cCkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIGhhbmRsZVVwbG9hZEJ1dHRvbkNsaWNrKGV2ZW50KSB7CiAgICAgICAgICAgIC8vIE9wZW5zIHRoZSBhdXRoIG1vZGFsIGZvciBsb2dnZWQgb3V0IHVzZXJzCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgd2luZG93LnZpbWVvCiAgICAgICAgICAgICAgICYmIHdpbmRvdy52aW1lby5jb25maWcKICAgICAgICAgICAgICAgJiYgd2luZG93LnZpbWVvLk1vZGFsCiAgICAgICAgICAgICAgICYmICF3aW5kb3cudmltZW8uY3VyX3VzZXIKICAgICAgICAgICAgKXsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBpc01vYmlsZSA/IHdpbmRvdy5sb2NhdGlvbi5ocmVmPSIvdXBsb2FkIiA6IHZpbWVvLk1vZGFsLmNyZWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3hzbWFsbCcsCiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJy9qb2luP21vZGFsPW5ldyZyZWRpcmVjdD0vdXBsb2FkJywKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICA8L3NjcmlwdD4KCjxzY3JpcHQ+CiAgICB2YXIgc2VydmljZUVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNlcnZpY2VzX3dyYXBwZXInKTsKICAgIHZhciBoaWRkZW5TZXJ2aWNlRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2VydmljZXNfd3JhcHBlci5oaWRlJyk7CiAgICB2YXIgY291bnQgPSBzZXJ2aWNlRWxlbWVudHMubGVuZ3RoIC0gaGlkZGVuU2VydmljZUVsZW1lbnRzLmxlbmd0aDsKICAgIGlmIChjb3VudCA+IDIpIHsKICAgICAgICB2YXIgc2VydmljZUNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy50b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2NvbnRhaW5lcicpOwogICAgICAgIGlmIChzZXJ2aWNlQ29udGFpbmVyKSB7CiAgICAgICAgICAgIHNlcnZpY2VDb250YWluZXIuc3R5bGUud2lkdGggPSAnNDUwcHgnOwogICAgICAgIH0KICAgIH0KPC9zY3JpcHQ+Cgo8c2NyaXB0PgogICAgZnVuY3Rpb24gaGFuZGxlTmV3VmlkZW9DbGljaygpIHsKICAgICAgICBpZiAod2luZG93LnZpbWVvICYmIHdpbmRvdy52aW1lby5jdXJfdXNlcikgewogICAgICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICE9PSAnL3VwbG9hZCcpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy91cGxvYWQnOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgd2luZG93LnZpbWVvLk1vZGFsLmNyZWF0ZSh7IHNpemU6ICd4c21hbGwnLCBjb250ZW50OiAnL2pvaW4/bW9kYWw9bmV3JnJlZGlyZWN0PS91cGxvYWQnIH0pCiAgICAgICAgICAgICAgICAudGhlbihjb21wbGV0ZVVzZXJMb2dpbik7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGhhbmRsZUNyZWF0ZVZpZGVvQ2xpY2soZSwgaXNSZWNvcmRTY3JlZW4gPSBmYWxzZSkgewogICAgICAgIGlmICh3aW5kb3cudmltZW8gJiYgIXdpbmRvdy52aW1lby5jdXJfdXNlcikgewogICAgICAgICAgICBpZiAoIWlzUmVjb3JkU2NyZWVuKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CgogICAgICAgICAgICAgICAgd2luZG93LnZpbWVvLk1vZGFsLmNyZWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3hzbWFsbCcsCiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJy9qb2luP21vZGFsPW5ldyZyZWRpcmVjdD0vY3JlYXRlL3ZpZGVvLW1ha2VyJwogICAgICAgICAgICAgICAgfSkudGhlbihjb21wbGV0ZVVzZXJMb2dpbik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gdHJhY2tOZXdWaWRlb0Ryb3Bkb3duSW1wcmVzc2lvbihyZWNvcmRPcHRpb24pIHsKICAgICAgICBpZiAod2luZG93Ll9fZmEpIHsKICAgICAgICAgICAgd2luZG93Ll9fZmEucHVzaChbJ3RyYWNrRXZlbnQnLCB7CiAgICAgICAgICAgICAgICB0eXBlOiAnaW1wcmVzc2lvbicsCiAgICAgICAgICAgICAgICBjb250YWluZXI6ICd0b3BfbmF2JywKICAgICAgICAgICAgICAgIGNvbXBvbmVudDogJ25ld192aWRlbycsCiAgICAgICAgICAgIH1dKTsKCiAgICAgICAgICAgIGlmIChyZWNvcmRPcHRpb24pIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5fX2ZhLnB1c2goWyd0cmFja0V2ZW50JywgewogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbXByZXNzaW9uJywKICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6ICd0b3BfbmF2JywKICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICdyZWNvcmQnLAogICAgICAgICAgICAgICAgICAgIGtleXdvcmQ6IHJlY29yZE9wdGlvbiwKICAgICAgICAgICAgICAgIH1dKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KPC9zY3JpcHQ+Cgo8c2NyaXB0PgogICAgLyoqCiAgICAgKiBUaGlzIGlzIHBhcnQgb2YgYW4gQUIgRXhwZXJpbWVudAogICAgICogRXhwZXJpbWVudCBsaW5rOiBodHRwczovL3ZpbWVvLmNvbS9tb2R3b3JsZC9hYmxpbmNvbG4vNTI4CiAgICAgKiBFeHBlcmltZW50IHBhcmFtOiBzaG93X215X2RyYWZ0cwogICAgICovCiAgICB2YXIgc2hvd1ZhcmlhbnQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIHNob3dNeURyYWZ0czsKICAgICAgICBpZiAod2luZG93LkFCTGluY29sbiAmJiB3aW5kb3cuQUJMaW5jb2xuLmdldFRlc3QoJ0pTLlRvcG5hdi5NeURyYWZ0cycpLmdldCgnc2hvd19teV9kcmFmdHMnLCAnY29udHJvbCcpID09PSAndmFyaWFudCcpIHsKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdi1tYW5hZ2UtZHJhZnRzJykuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZScpOwogICAgICAgIH0KICAgIH07CiAgICBzaG93VmFyaWFudCgpOwo8L3NjcmlwdD4KCiAgICA8c2NyaXB0PgogICAgICAgIHZhciBhcnJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWNvcmRfYW5pbWF0aW9uX3dyYXBwZXInKTsKICAgICAgICB2YXIgbmV3VmlkZW9CdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVjb3JkX3RpcF93cmFwcGVyJyk7CgogICAgICAgIGlmIChhcnJvdykgewogICAgICAgICAgICBhcnJvdy5jbGFzc0xpc3QuYWRkKCdub19hbmltYXRpb24nKTsKICAgICAgICB9CgogICAgICAgIHZhciBpc0hvdmVyZWQgPSBmYWxzZTsKCiAgICAgICAgaWYgKG5ld1ZpZGVvQnRuICYmIGZhbHNlKSB7CiAgICAgICAgICAgIG5ld1ZpZGVvQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmIChpc0hvdmVyZWQpIHJldHVybjsKCiAgICAgICAgICAgICAgICBpc0hvdmVyZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGlmIChhcnJvdykgewogICAgICAgICAgICAgICAgICAgIGFycm93LmNsYXNzTGlzdC5yZW1vdmUoJ25vX2FuaW1hdGlvbicpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHN0b3JlX3JlY29yZF90aXBfc2V0dGluZ3MoMSk7CgogICAgICAgICAgICB9LCBmYWxzZSk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBzdG9yZV9yZWNvcmRfdGlwX3NldHRpbmdzKHZhbHVlKSB7CiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdQT1NUJywgJy9zZXR0aW5ncy9uYXZfcmVjb3JkZXJfdGlwJyk7CiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdYLVJlcXVlc3RlZC1XaXRoJywgJ1hNTEh0dHBSZXF1ZXN0Jyk7CiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7CiAgICAgICAgICAgIHhoci5zZW5kKCdyZWNvcmRfc2NyZWVuX3RpcF9zdGF0ZT0nICsgdmFsdWUgKyAnJnRva2VuPScgKyB2aW1lby54c3JmdCk7CgogICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGhhbmRsZS4gV2UgaG9wZSBmb3IgdGhlIGJlc3QgaW4gdGhpcyBjYXNlCiAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7fTsKICAgICAgICB9OwogICAgPC9zY3JpcHQ+CgoKICAgIAo8IS0tIFJlc3BvbnNpdmUgVG9wIE5hdiAoRXhwbG9yZSwgTE9IUCwgV2F0Y2gsIHRjKSAtLT4KPG5hdiBpZD0idG9wbmF2X21vYmlsZSIgY2xhc3M9InRvcG5hdl9tb2JpbGUgICAgbmF2X2Jhci0tbGkiIHJvbGU9ImJhbm5lciI+CgogICAgPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgZGF0YS1hY3Rpb249Im1lbnUub3BlbiIgY2xhc3M9Im5hdmJhcl9oYW1idXJnZXIgbmF2X2Jhcl9pY29uIHRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9sZWZ0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2xvZ28iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj4KICAgICAgICAgICAgICAgIDx0aXRsZT5NZW51PC90aXRsZT4KICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGUtNCIgZD0iTTcsOEgyNWExLDEsMCwwLDEsMSwxaDBhMSwxLDAsMCwxLTEsMUg3QTEsMSwwLDAsMSw2LDlINkExLDEsMCwwLDEsNyw4WiIgLz4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik03LDE1SDI1YTEsMSwwLDAsMSwxLDFoMGExLDEsMCwwLDEtMSwxSDdhMSwxLDAsMCwxLTEtMUg2QTEsMSwwLDAsMSw3LDE1WiIvPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTcsMjJIMjVhMSwxLDAsMCwxLDEsMWgwYTEsMSwwLDAsMS0xLDFIN2ExLDEsMCwwLDEtMS0xSDZBMSwxLDAsMCwxLDcsMjJaIi8+CiAgICAgICAgICAgIDwvc3ZnPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X2FjdGlvbl9idXR0b25zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii8vdmltZW8uY29tL3NlYXJjaCIgY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9yaWdodCB0b3BuYXZfbW9iaWxlX2hlYWRlcl9zZWFyY2giPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im5hdl9iYXJfc2VhcmNoX2ljb24gbmF2X2Jhcl9pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5TZWFyY2g8L3RpdGxlPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjYuNzQsMjUuMzJsLTQuNTMtNC41M2ExLDEsMCwwLDAtLjIxLS4xNEE5LDksMCwxLDAsMjAuNjUsMjJhMSwxLDAsMCwwLC4xNC4yMWw0LjUzLDQuNTNhMSwxLDAsMCwwLDEuNDEtMS40MVpNMTUsMjJhNyw3LDAsMSwxLDctN0E3LDcsMCwwLDEsMTUsMjJaIi8+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iY2FydF90b3BfbmF2X21vYmlsZSIgY2xhc3M9InRvcG5hdl9jYXJ0X2J1dHRvbiI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8IS0tIFZpbWVvIExvZ28gLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdl9iYXJfdGl0bGUganMtbmF2X2Jhcl90aXRsZSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3ZpbWVvLmNvbSIgZ3RtLWRhdGEtY2xpY2s9Im1vYmlsZV9uYXZfaG9tZV9sb2dvX2NsaWNrIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNDQxIDEyNC42ODIiIHdpZHRoPSI4NnB4IiBoZWlnaHQ9IjI3cHgiPgogICAgICAgICAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMjAuNDgxLDI3LjMyNmM1LjQ2MiwwLDEwLjE4OC0xLjkxLDE0LjE3NC01LjcyOGMzLjU0Ny0zLjM3OSw1LjM5Mi02LjkwNiw1LjU0LTEwLjU4M2MwLjE0My0yLjQ5Mi0wLjgxNS00Ljk1MS0yLjg4LTcuMzc4QzEzNS4yNDQsMS4yMTcsMTMyLjY2MiwwLDEyOS41NjIsMGMtNS4zMiwwLTEwLjE1NSwxLjc2Ny0xNC41MTEsNS4yODhjLTQuMzU2LDMuNTI3LTYuNjA4LDcuMjA0LTYuNzUsMTEuMDIyQzEwOC4wMDIsMjMuNjU2LDExMi4wNjcsMjcuMzI2LDEyMC40ODEsMjcuMzI2eiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQzNC4wNzksNTAuMTZjLTUuMzE5LTYuOTI1LTEzLjE0NS0xMC4zOTUtMjMuNDc1LTEwLjM5NWMtMTYuMDk3LDAtMjkuNDU1LDUuODk2LTQwLjA4MywxNy42ODhjLTkuOTAyLDEwLjYxNC0xNC40NzgsMjIuMjY1LTEzLjczMywzNC45NDRjMC4wNDksMC45MzIsMC4xMzIsMS44NCwwLjIyOSwyLjczOGMtMC41NTQsMC4yNDEtMS4wOTMsMC40ODMtMS42NjIsMC43MjRjLTEyLjU1Niw1LjQxMS0yNC4xNDcsOC4xMS0zNC43NzUsOC4xMWMtNS4zMiwwLTkuMzA3LTEuODM5LTExLjk2LTUuNTIxYzE0LjMxNi0yLjM1NSwyNi4yMDYtNy44NzYsMzUuNjYyLTE2LjU2OGM4Ljg1NC03Ljk1NSwxMi45ODktMTUuNjg5LDEyLjQtMjMuMTk3Yy0wLjg4Ny0xMS43OC04LjU2Mi0xNy42NzYtMjMuMDM0LTE3LjY3NmMtMTUuNjUsMC0yOS4yMzUsNS45MDktNDAuNzUsMTcuNzE0Yy0xMC40ODQsMTAuNzgzLTE1LjgwNSwyMi4xNDgtMTUuOTQ3LDM0LjEwM2MtMC4wNCwyLjAwNSwwLjA2NiwzLjkzMiwwLjMsNS43ODljLTIuNDc3LDEuNjMyLTQuMzUyLDIuNDU2LTUuNjEzLDIuNDU2Yy0yLjgxLDAtNC41NzYtMC41ODItNS4zMTQtMS43NmMtMC43MzctMS4xNzgtMS4wMzUtMy4zMDgtMC44ODctNi40MDFjMC0xLjE3OCwwLjkxOS01LjY5NSwyLjc3MS0xMy41NjVjMS44NDUtNy44NywyLjg0MS0xMy44NjQsMi45OS0xNy45ODdjMC4yOTEtNi4wMjUtMC44OTQtMTAuNjYtMy41NDctMTMuODk2Yy0zLjEwMS0zLjk3NC04LjE5NC01LjY2My0xNS4yODEtNS4wNzRjLTUuOTAyLDAuNDQ3LTExLjU5MiwyLjY2LTE3LjA1NCw2LjY0N2MtMy4yNDksMi4zNjMtNi41NjksNS41MzQtOS45NjEsOS41MjFjLTEuMTg1LDEuMDM2LTIuMjkxLDItMy4zMjcsMi44OGMwLjE0My02LjA1MS0xLjAzNi0xMC43MDUtMy41NC0xMy45NTRjLTMuMTA3LTMuOTg3LTguMjcyLTUuNjgzLTE1LjUwOC01LjA5NGMtOC40MTUsMC43MzgtMTYuMDIsNC4wNjUtMjIuODA5LDkuOTY3Yy0yLjk1OCwyLjUxMS01LjU0LDUuNDY5LTcuNzUzLDguODYxYzAuMjkxLTEuMzI3LDAuNDQtMi43MzEsMC40NC00LjIwN2MwLTQuNTc2LTEuMTg1LTguNjAyLTMuNTQ3LTEyLjA3MXMtNS40NjItNS4wNTUtOS4zMDEtNC43NTdjLTIuMjEzLDAuMTQ5LTYuNDIsMy4xMDEtMTIuNjIxLDguODU0Yy04LjU2OSw3Ljk3NC0xMy4yMTYsMTIuMjU5LTEzLjk1NCwxMi44NDFsNS4zMTMsNS45OGM0LjEzNi0yLjk4NCw2LjY0Ny00LjQ3OSw3LjUzNC00LjQ3OWMxLjYxOCwwLDIuMjg1LDEuMzI3LDEuOTk0LDMuOTc1Yy0wLjE0MywzLjgzMS0wLjgyMiw5LjE2NC0yLjAzOSwxNi4wMTJjLTAuNzU0LDQuMjQzLTEuMjk4LDcuOTA0LTEuNjM4LDEwLjk4OGMtMC4wNjYsMC4wNTUtMC4xMjksMC4xMDktMC4xOTYsMC4xNjRjLTUuMzIsNC4zNzUtOS4wMDksNi41NTYtMTEuMDc0LDYuNTU2Yy00LjcyNSwwLTcuMDE2LTMuMTU4LTYuODY3LTkuNDg4YzIuMjEzLTEzLjgyNCw0LjI4NS0yNS4yMjIsNi4yMDctMzQuMTk5YzAuNTgzLTUuMjk0LTAuMjY2LTkuNTkyLTIuNTUtMTIuOTA2Yy0yLjI5MS0zLjMxNC01Ljg3LTQuNzQ0LTEwLjczNy00LjMwNGMtMy4xMDcsMC4yOTgtNy44MzIsMy4yNDktMTQuMTgxLDguODZjLTIuMjA1LDItNC40MSwzLjk5Ni02LjYxNSw1Ljk5M2MtMC40MzctMTAuNDQ3LTUuMjA0LTE1LjgyMi0xNC4zMjktMTYuMDljLTEzLjY2OS0wLjQ0LTIyLjkzMSw3LjI3NS0yNy43NzksMjMuMTU4YzIuNTA0LTEuMDc0LDQuOTM4LTEuNjE4LDcuMzAxLTEuNjE4YzUuMDE2LDAsNy4yMjksMi44MjIsNi42NCw4LjQ1M2MtMC4yOTcsMy40MTEtMi41MTEsOC4zNzUtNi42NCwxNC44OTljLTQuMTM2LDYuNTIzLTcuMjM2LDkuNzg2LTkuMzAxLDkuNzg2Yy0yLjY2LDAtNS4wOTQtNS4wMjMtNy4zMDctMTUuMDgxYy0wLjc0NS0yLjk1MS0yLjA3MS0xMC40OTEtMy45ODctMjIuNjE0Yy0xLjc3My0xMS4yMzYtNi40OTktMTYuNDg1LTE0LjE3NC0xNS43NDdjLTMuMjQ5LDAuMjk4LTguMTIzLDMuMjQ5LTE0LjYxNCw4Ljg2QzkuNjY5LDUzLjMxOCw0Ljg2Nyw1Ny41OTcsMCw2MS44NzVsNC42NDEsNS45OGM0LjQyLTMuMDk0LDcuMDAzLTQuNjQ3LDcuNzQxLTQuNjQ3YzMuMzg1LDAsNi41NSw1LjMxMyw5LjUwMSwxNS45MjljMi42NTMsOS43MzMsNS4zMDcsMTkuNDY4LDcuOTYxLDI5LjIwMmMzLjk3NCwxMC42MjEsOC44NDEsMTUuOTI5LDE0LjU4OCwxNS45MjljOS4yODEsMCwyMC42MjctOC43MTksMzQuMDM4LTI2LjE1NEM4Ny44OTIsODUuOTg3LDkzLjk5LDc1Ljc0LDk2LjgsNjcuMzU0YzMuNzItMi43NDgsNi4wMTgtNC4xNDYsNi44NTMtNC4xNDZjMi42NTMsMCwzLjk4NywxLjkyMiwzLjk4Nyw1Ljc1NGMwLDAuNzM4LTEuNDQzLDYuMi00LjMyNCwxNi4zODFjLTIuODgsMTAuMTgyLTQuMzk1LDE3LjcwOS00LjUzNywyMi41NzVjLTAuMTQ5LDQuNzI2LDAuOTk3LDguNTU3LDMuNDMsMTEuNTA4YzIuNDM0LDIuOTUyLDUuOTQxLDQuNDI4LDEwLjUyNCw0LjQyOGM5Ljg5LDAsMTkuNzc5LTQuMjc4LDI5LjY3NS0xMi44MzVjMC44ODEtMC43NzIsMS43MzgtMS41NTcsMi41NzMtMi4zNTJjMC43ODMsMy4zMTIsMi4xMjQsNi4wNDUsNC4wNyw4LjE1YzQuMjU5LDQuNTY5LDExLjQ1Niw2LjcwNiwyMS41OTIsNi40MDhjLTEuMzUzLTMuMjQ5LTEuODg0LTkuMDAzLTEuNTg2LTE3LjI3NGMwLjQ0LTkuMTUyLDIuODA5LTE3Ljk0MSw3LjA5NC0yNi4zNTVzOC4yNzgtMTIuNjI3LDExLjk4LTEyLjYyN2M0LjI4NSwwLDYuMjg1LDIuNzMxLDUuOTg3LDguMTkzYy0wLjE0OSwzLjY5Ni0wLjg3NCw3LjkwMy0yLjE3NSwxMi42MjhjLTEuMzA3LDQuNzI1LTIuMDMyLDkuNDQ5LTIuMTc0LDE0LjE3NGMtMC4yOTgsNy41MzQsMS4zOTIsMTIuOTE5LDUuMDgxLDE2LjE2OGM0LjExNiwzLjY4OSwxMS4zMzQsNS4zOTIsMjEuNjM4LDUuMDk0Yy0xLjU0MS0zLjM5Mi0yLjE2Mi04LjI2Ni0xLjg2NC0xNC42MjFjMC40NC05LjAwMywzLjQ4Mi0xOC4zMDQsOS4xMTMtMjcuOTAyYzUuMzMzLTkuMTUxLDkuOTIyLTEzLjczMywxMy43NzItMTMuNzMzYzMuNTYsMCw1LjI2MywyLjgwOSw1LjExMyw4LjQxNGMtMC4xNDgsMy42ODgtMS4wNzQsOC44NTQtMi43NzEsMTUuNDk0Yy0xLjY5NSw2LjY0MS0yLjYyMSwxMi4zMTYtMi43NjQsMTcuMDQxYy0wLjI5NywxMC42MjgsNC4zNSwxNS45MzYsMTMuOTU1LDE1LjkzNmM5Ljg4OSwwLDE5Ljc3OS00LjI3OCwyOS42NzUtMTIuODM1YzAuMTY0LTAuMTQ0LDAuMzE2LTAuMjkzLDAuNDc5LTAuNDM4YzAuMzQsMC41ODYsMC42ODgsMS4xNjgsMS4wNjgsMS43MzJjNS4xNjUsNy45NjcsMTMuNzM0LDExLjk1NCwyNS42OTUsMTEuOTU0YzE2LjA5LDAsMzEuOTY2LTQuNDkyLDQ3LjYxNi0xMy40ODhjMS43NTYtMC45OSwzLjQyMi0xLjk3OSw1LjAxNy0yLjk3YzAuOTg2LDEuOTkxLDIuMTM4LDMuODY2LDMuNTAyLDUuNTkxYzYuMDUyLDcuNTIxLDE0LjkxMiwxMS4yODEsMjYuNTc1LDExLjI4MWMxNC4wMjUsMCwyNS43NjctNC45MzgsMzUuMjE2LTE0LjgxNWM5LjQ0OS05Ljg3NiwxNC40NjYtMjEuNTk4LDE1LjA2MS0zNS4xNjNDNDQxLjM4Nyw2NC42ODQsNDM5LjEwMiw1Ni41MDMsNDM0LjA3OSw1MC4xNnogTTMwNS4xMTgsOTAuMDAzYy0wLjA4NC0xLjkwOS0wLjA4NC0yLjg2NywwLTIuODY3YzAuMTQzLTUuNTc5LDIuNTA1LTExLjQxNyw3LjA3NC0xNy41MTRzOS4wNjItOS4xNDYsMTMuNDg4LTkuMTQ2YzMuMzkyLDAsNS4wMSwxLjk4Nyw0Ljg2Nyw1Ljk0OGMtMC4xNDksMi45MzgtMi4zNjIsNi43NjQtNi42MzQsMTEuNDYyQzMxOC42MDYsODMuMzI0LDMxMi4zNDEsODcuMzYyLDMwNS4xMTgsOTAuMDAzeiBNNDE1LjkxOCw3My44NjhjLTAuMjk3LDcuMS0yLjQzNCwxMy45MDItNi40MiwyMC40MTNjLTQuNzI1LDcuODQ1LTEwLjQxNCwxMS43Ni0xNy4wNTUsMTEuNzZjLTIuOTU4LDAtNS4yNDktMS42MjQtNi44NjctNC44OGMtMS40NzYtMi44MDktMi4xNDItNi4wNjQtMS45OTMtOS43NjdjMC4yOTEtNy41NCwyLjUwNS0xNC42NCw2LjY0Ny0yMS4zYzQuODY2LTguMTM2LDExLjA2Ny0xMi4yMDcsMTguNjAxLTEyLjIwN2MyLjM1NiwwLDQuMTY4LDEuNjcsNS40MjQsNC45OTdTNDE2LjA2Nyw2OS44NzUsNDE1LjkxOCw3My44Njh6Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnUganMtdG9wbmF2X21vYmlsZV9tZW51X21haW4iPgogICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9tb2JpbGVfYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBkYXRhLWd0bS1jbGljaz0ibW9iaWxlX25hdl9tZW51X2Nsb3NlX2NsaWNrIiBjbGFzcz0ibWVudV9jbG9zZSBwdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfY2xvc2UiPgogICAgICAgICAgICAgICAgPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTAuNDlweCIKICAgICAgICAgICAgICAgIAkgaGVpZ2h0PSIxMC40OXB4IiB2aWV3Qm94PSIwIDAgMTAuNDkgMTAuNDkiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDEwLjQ5IDEwLjQ5OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iY2xvc2VfMV8iPgogICAgICAgICAgICAgICAgCTxnPgogICAgICAgICAgICAgICAgCQk8ZyBpZD0iR3JvdXBfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYuNTAwMDAwLCA2LjUwMDAwMCkiPgogICAgICAgICAgICAgICAgCQkJPHBhdGggaWQ9IlJlY3RhbmdsZS00XzFfIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgZD0iTTMuNjktNi4yMUwzLjY5LTYuMjFjMC4zOSwwLjM5LDAuMzksMS4wMiwwLDEuNDFsLTguNDksOC40OQogICAgICAgICAgICAgICAgCQkJCWMtMC4zOSwwLjM5LTEuMDIsMC4zOS0xLjQxLDBsMCwwYy0wLjM5LTAuMzktMC4zOS0xLjAyLDAtMS40MWw4LjQ5LTguNDlDMi42Ny02LjYsMy4zLTYuNiwzLjY5LTYuMjF6Ii8+CiAgICAgICAgICAgICAgICAJCQk8cGF0aCBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgZD0iTS02LjIxLTYuMjFMLTYuMjEtNi4yMWMwLjM5LTAuMzksMS4wMi0wLjM5LDEuNDEsMGw4LjQ5LDguNDljMC4zOSwwLjM5LDAuMzksMS4wMiwwLDEuNDFsMCwwCiAgICAgICAgICAgICAgICAJCQkJYy0wLjM5LDAuMzktMS4wMiwwLjM5LTEuNDEsMGwtOC40OS04LjQ5Qy02LjYtNS4xOC02LjYtNS44Mi02LjIxLTYuMjF6Ii8+CiAgICAgICAgICAgICAgICAJCTwvZz4KICAgICAgICAgICAgICAgIAk8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgPC9idXR0b24+CgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBkYXRhLWFjdGlvbj0ibWVudS5zZXR0aW5ncy5vcGVuIgogICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9Im1vYmlsZV9uYXZfc2V0dGluZ3NfY2xpY2siCiAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzZXR0aW5ncyIKICAgICAgICAgICAgICAgIGNsYXNzPSJtZW51X3NldHRpbmdzIHB1bGxfcmlnaHQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluZ3MiCiAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE4Ljg2cHgiCiAgICAgICAgICAgICAgICAJIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDE4Ljg2IDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOC44NiAyMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgPGcgaWQ9ImdlYXJfMV8iPgogICAgICAgICAgICAgICAgCTxnPgogICAgICAgICAgICAgICAgCQk8ZyBpZD0iSWNvbl8xXyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS4wMDAwMDAsIDUuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAJCQk8ZyBpZD0iR3JvdXAtMTBfMV8iPgogICAgICAgICAgICAgICAgCQkJPC9nPgogICAgICAgICAgICAgICAgCQk8L2c+CiAgICAgICAgICAgICAgICAJCTxwYXRoIGlkPSJDb21iaW5lZC1TaGFwZV8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0xMiw0LjU4bC0wLjU3LTAuMjdWMS45OWMwLTAuNTQtMC40NS0wLjk5LTEtMC45OWgtMmMtMC41NSwwLTEsMC40NS0xLDAuOTl2Mi4zMQogICAgICAgICAgICAgICAgCQkJTDYuODYsNC41OGMtMC4yOSwwLjE0LTAuNTcsMC4zLTAuODQsMC40OEw1LjUsNS40MkwzLjQ5LDQuMjZDMy4wMiwzLjk5LDIuNDEsNC4xNiwyLjE0LDQuNjNsLTEsMS43NAogICAgICAgICAgICAgICAgCQkJQzAuODYsNi44NCwxLjAyLDcuNDYsMS40OSw3LjczTDMuNSw4Ljg5TDMuNDUsOS41MkMzLjQ0LDkuNjgsMy40Myw5Ljg0LDMuNDMsMTBzMC4wMSwwLjMyLDAuMDIsMC40OGwwLjA1LDAuNjNsLTIuMDEsMS4xNgogICAgICAgICAgICAgICAgCQkJYy0wLjQ3LDAuMjctMC42MywwLjg4LTAuMzYsMS4zNmwxLDEuNzRjMC4yNywwLjQ4LDAuODksMC42NCwxLjM2LDAuMzdsMi4wMS0xLjE2bDAuNTIsMC4zNmMwLjI3LDAuMTgsMC41NSwwLjM1LDAuODQsMC40OAogICAgICAgICAgICAgICAgCQkJbDAuNTcsMC4yN3YyLjMxYzAsMC41NCwwLjQ1LDAuOTksMSwwLjk5aDJjMC41NSwwLDEtMC40NSwxLTAuOTl2LTIuMzFMMTIsMTUuNDJjMC4yOS0wLjE0LDAuNTctMC4zLDAuODQtMC40OGwwLjUyLTAuMzYKICAgICAgICAgICAgICAgIAkJCWwyLjAxLDEuMTZjMC40NywwLjI3LDEuMDgsMC4xMSwxLjM2LTAuMzdsMS0xLjc0YzAuMjctMC40OCwwLjExLTEuMDktMC4zNi0xLjM2bC0yLjAxLTEuMTZsMC4wNS0wLjYzCiAgICAgICAgICAgICAgICAJCQljMC4wMS0wLjE2LDAuMDItMC4zMiwwLjAyLTAuNDhzLTAuMDEtMC4zMi0wLjAyLTAuNDhsLTAuMDUtMC42M2wyLjAxLTEuMTZjMC40Ny0wLjI3LDAuNjMtMC44OCwwLjM2LTEuMzZsLTEtMS43NAogICAgICAgICAgICAgICAgCQkJYy0wLjI3LTAuNDgtMC44OS0wLjY0LTEuMzYtMC4zN2wtMi4wMSwxLjE2bC0wLjUyLTAuMzZDMTIuNTcsNC44OCwxMi4yOSw0LjcyLDEyLDQuNTh6Ii8+CiAgICAgICAgICAgICAgICAJCTxjaXJjbGUgaWQ9Ik92YWxfMV8iIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjI7IiBjeD0iOS40MyIgY3k9IjEwIiByPSIyIi8+CiAgICAgICAgICAgICAgICAJPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIDx1bCBpZD0ibWVudV9saXN0IiBjbGFzcz0ibWVudV9saXN0X2xvZ2dlZF9vdXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6am9pbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfam9pbl9jbGljayIgaWQ9ImpzLWpvaW4tbGluayIgaHJlZj0iLy92aW1lby5jb20vam9pbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fam9pbiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE2cHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9IjAgMCAxNiAyMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTYgMjA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iam9pbi1sb2ctaW5fMV8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtOF8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGN4PSI4IiBjeT0iNSIgcj0iNCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IlJlY3RhbmdsZS0yNV8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0xLDE5aDE0di0zYzAtMi4yMS0xLjc5LTQtNC00SDVjLTIuMjEsMC00LDEuNzktNCw0VjE5eiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpvaW4gb3IgbG9nIGluICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSAgaWQ9ImpzLWZlYXR1cmVzLWxpbmsiIGNsYXNzPSJmZWF0dXJlcy1sYWJlbCIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl9ob3N0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDIwIDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAyMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJmZWF0dXJlc18xXyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwLTJfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGUtOF8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0xLTFoMTBjMS4xLDAsMiwwLjksMiwydjEwYzAsMS4xLTAuOSwyLTIsMkgxYy0xLjEsMC0yLTAuOS0yLTJWMUMtMS0wLjEtMC4xLTEsMS0xeiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoLTVfMV8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRkZGRkY7IiBkPSJNMy42LDMuNTFjMC0wLjU1LDAuMzktMC43NywwLjg2LTAuNWw0LjI4LDIuNWMwLjQ3LDAuMjgsMC40OCwwLjczLDAsMS4wMUw0LjQ2LDkuMDgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQzMuOTgsOS4zNiwzLjYsOS4xNSwzLjYsOC41OUwzLjYsMy41MXoiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXBfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAzLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0iUGFnZS0xXzFfIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgZD0iTTExLDE1YzIuMjEsMCw0LTEuNzksNC00VjBjMC0xLjExLTAuOS0yLTItMnYxM2MwLDEuMS0wLjksMi0yLDJILTJjMCwxLjEsMC44OSwyLDIsMkgxMXoiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZWF0dXJlcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6dmlkZW9fcGxheWVyIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9mZWF0dXJlc192aWRlb19wbGF5ZXIiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLXBsYXllciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvIHBsYXllciAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6bGl2ZV9zdHJlYW1pbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2ZlYXR1cmVzX2xpdmVfc3RyZWFtaW5nIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy9saXZlc3RyZWFtaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl91cGxvYWQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjAgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGl2ZSBzdHJlYW1pbmcgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzdG9jayIgIiBocmVmPSIvL3ZpbWVvLmNvbS9zdG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b2NrIHZpZGVvcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6cHJpdmFjeSIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfZmVhdHVyZXNfcHJpdmFjeSIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tcHJpdmFjeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcml2YWN5ICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpkaXN0cmlidXRpb24iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2ZlYXR1cmVzX2Rpc3RyaWJ1dGlvbiIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tbWFya2V0aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl91cGxvYWQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjAgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzdHJpYnV0aW9uICYgTWFya2V0aW5nICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpob3N0aW5nIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9mZWF0dXJlc19ob3N0aW5nIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy9vbmxpbmUtdmlkZW8taG9zdGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvc3RpbmcgJiBNYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aW5zcGlyYXRpb258a2V5d29yZDp3YXRjaCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfaW5zcGlyYXRpb25fd2F0Y2giIGlkPSJqcy1pbnNwaXJhdGlvbi1saW5rIiAgaHJlZj0iLy92aW1lby5jb20vd2F0Y2giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3dhdGNoIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTRweCIgdmlld0JveD0iMCAwIDIwIDE0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJpbnNwaXJhdGlvbl8xXyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwXzFfIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzLjAwMDAwMCwgNi4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0iT3ZhbF8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjtzdHJva2UtbGluZWpvaW46cm91bmQ7IiBkPSJNNyw3YzMuMzEsMCw2LjMxLTIsOS02Yy0yLjY5LTQtNS42OS02LTktNlMwLjY5LTMtMiwxQzAuNjksNSwzLjY5LDcsNyw3eiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMl8xXyIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjsiIGN4PSI3IiBjeT0iMSIgcj0iMyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BpcmF0aW9uICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxrZXl3b3JkOnVwbG9hZCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfdXBsb2FkX2NsaWNrIiBpZD0ianMtdXBsb2FkLWxpbmsiIGhyZWY9Ii8vdmltZW8uY29tL3VwbG9hZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJ1cGxvYWRfMV8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxLjAwMDAwMCwgMS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJDb21iaW5lZC1TaGFwZV8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0wLDEwYzAsMi4xNywxLjk2LDQsNCw0aDEwYzIuMDQsMCw0LTEuNzYsNC0zLjk0YzAtMS43OS0wLjgtMy4yOC0xLjk5LTQuMDcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDMTYuMDEsMS43OSwxMy40OSwwLDExLDBDOS4wOCwwLDcuMjQsMS4xOSw2LjU5LDNDMy44MiwzLjAxLDIuNTcsNC43MSwyLjA3LDYuNTJDMS4wOCw3LjAyLDAsOC4yNiwwLDEweiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZV8xXyIgeD0iOCIgeT0iOCIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjsiIHdpZHRoPSIyIiBoZWlnaHQ9IjYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBpZD0iUGF0aC0xM18xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIHBvaW50cz0iNiwxMCA5LDcgMTIsMTAgICAgICAgIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6dXBncmFkZSIgZGF0YS1ndG0tY2xpY2s9Im1vYmlsZV9uYXZfdXBncmFkZV9jbGljayIgaWQ9ICJqcy11cGdyYWRlLWxpbmsiIGNsYXNzPSIiIGhyZWY9Ii8vdmltZW8uY29tL3VwZ3JhZGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3VwZ3JhZGUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIiB3aWR0aD0iMzJweCIgaGVpZ2h0PSIzMnB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNCw3SDE1VjloNi41OEw3LjI5LDIzLjI5bDEuNDEsMS40MUwyMywxMC40MVYxN2gyVjhBMSwxLDAsMCwwLDI0LDdaIiBmaWxsPSIjZmZmZmZmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGdyYWRlICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICA8L2Rpdj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InRvcG5hdl9tb2JpbGVfbWVudSB0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3MganMtdG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2JhciBzdWJtZW51Ij4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluc19jbG9zZSB0b3BuYXZfaWNvbl9tb2JpbGVfYXJyb3dsZWZ0X2IiPiA8L2J1dHRvbj4KICAgICAgICAgICAgPGgxIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2hlYWRlcl90aXRsZSBzdWJtZW51Ij5Nb3JlIHN0dWZmPC9oMT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPHVsIGNsYXNzPSJtZW51X2xpc3Rfc2V0dGluZ3NfbG9nZ2VkX291dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS90ZXJtcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXJtcyBvZiBTZXJ2aWNlICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9wcml2YWN5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaXZhY3kgUG9saWN5ICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9kbWNhIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vY29va2llX3BvbGljeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb29raWVzICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249ImRlc2t0b3AiIG9uY2xpY2s9InZpbWVvLm1vYmlsZS5kZXNrdG9wX3NoYXJlZC5fczJkcygpOyByZXR1cm4gZmFsc2UiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNrdG9wIHNpdGUgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBsYW5ndWFnZSBocmVmPSIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBvbmNoYW5nZT0idmltZW8ubW9iaWxlLmRlc2t0b3Bfc2hhcmVkLl9zMmwodGhpcykiIHRpdGxlPSJDaG9vc2UgYSBkaWZmZXJlbnQgbGFuZ3VhZ2UiIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3NfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBjbGFzcz0ic2VsZWN0ZWQiIHNlbGVjdGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9ImVuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmdsaXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXNwYcOxb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9ImRlLURFIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJmci1GUiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnYWlzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJqYS1KUCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5pel5pys6KqeICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJwdC1CUiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9ydHVndcOqcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT0ia28tS1IiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIO2VnOq1reyWtCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29tL2ZhcSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQVEgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29taGVscC52aW1lby5jb20vaGMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVscCAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgoKICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfY29weXJpZ2h0Ij5UTSArIMKpIDIwMjAgVmltZW8sIEluYy48L2Rpdj4KICAgIDwvc2VjdGlvbj4KCgogICAgICAgIDwvbmF2PgoKPHNjcmlwdD4KKGZ1bmN0aW9uKHdpbmRvdywgZG9jdW1lbnQpewoKICAgIC8vIEdsb2JhbCB2YWx1ZXMKICAgIHdpbmRvdy52aW1lbyA9IHdpbmRvdy52aW1lbyB8fCB7fTsKICAgIHZpbWVvLm1vYmlsZSA9IHZpbWVvLm1vYmlsZSB8fCB7fTsKICAgIFZpbWVvID0gdmltZW8ubW9iaWxlIHx8IHt9OwogICAgVmltZW8uZGVza3RvcF9zaGFyZWQgPSBWaW1lby5kZXNrdG9wX3NoYXJlZCB8fCB7fTsKCiAgICAvLyBERVNLVE9QIEhBTkRMRVJTCgogICAgdmFyIGRlc2t0b3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9wbmF2X2Rlc2t0b3AnKTsKCiAgICAvLyBQcmV2ZW50IHRvdWNoIGRldmljZSB0byBoaWd0bGlnaHQgdGhlIGFyZWEgdGFwcGVkCiAgICBkZXNrdG9wLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBmdW5jdGlvbihlKXsKICAgICAgICAvLyBUYWtlIGludG8gY29uc2lkZXJhdGlvbiBhdmF0YXIgaW1nCiAgICAgICAgdmFyIHRhcmdldCA9IChlLnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbWcnKSA/IGUudGFyZ2V0LnBhcmVudE5vZGUgOiBlLnRhcmdldDsKCiAgICAgICAgaWYgKHRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3RvcG5hdl9oYXNfZHJvcGRvd24nKSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgfQogICAgfSwgZmFsc2UpOwoKICAgIC8vIEFkZCBsYXN0X3BhZ2UgY29va2llCiAgICB2YXIgbGlzdGVuID0gJ29udG91Y2hzdGFydCcgaW4gd2luZG93ID8gJ3RvdWNoc3RhcnQnIDogd2luZG93LlBvaW50ZXJFdmVudCA/ICdwb2ludGVyZG93bicgOiB3aW5kb3cuTVNQb2ludGVyRXZlbnQgPyAnTVNQb2ludGVyRG93bicgOiAnY2xpY2snOwogICAgZGVza3RvcC5hZGRFdmVudExpc3RlbmVyKGxpc3RlbiwgZnVuY3Rpb24oZSl7CiAgICAgICAgaWYgKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnanMtdG9wbmF2X21lbnVfYXV0aCcpKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9ICdsYXN0X3BhZ2U9JyArIGVuY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpICsgJztwYXRoPVwnL1wnO21heC1hZ2U9MTgwMDsnOwogICAgICAgIH0KICAgIH0sIGZhbHNlKTsKCiAgICAvLyBNT0JJTEUgSEFORExFUlMKCiAgICAvLyBUcmlnZ2VyIGlPUyBVcGxvYWQgZmxvdwogICAgVmltZW8uZGVza3RvcF9zaGFyZWQuX3VwbG9hZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAvLyBzaG93IGlUdW5lcyBvbmx5IGlmIHdlIGFyZSBpbiBpT1Mgd29ybGQKICAgICAgICBpZiAoL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpewogICAgICAgICAgICB2YXIgZGVlcGxpbmsgPSAndmltZW86Ly9hcHAudmltZW8uY29tL3VwbG9hZD9yZWY9bW9iaWxld2ViJywKICAgICAgICAgICAgICAgIGZhbGxiYWNrID0gJy91cGxvYWQnLAogICAgICAgICAgICAgICAgd2Via2l0SGlkZGVuQ2FsbGJhY2ssCiAgICAgICAgICAgICAgICBoaXRDYWxsYmFjazsKCiAgICAgICAgICAgIC8vIENhbGxiYWNrcwogICAgICAgICAgICB3ZWJraXRIaWRkZW5DYWxsYmFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgLy8gSWYgdGhlIHVzZXIgaXMgc3RpbGwgaGVyZSBvcGVuIHRoZSB1cmwgcGFnZS4KICAgICAgICAgICAgICAgIGlmICghZG9jdW1lbnQud2Via2l0SGlkZGVuKSB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gZmFsbGJhY2s7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CgogICAgICAgICAgICAvLyBUcnkgdG8gb3BlbiB0aGUgVmltZW8gQXBwCiAgICAgICAgICAgIGhpdENhbGxiYWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBkZWVwbGluazsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQod2Via2l0SGlkZGVuQ2FsbGJhY2ssIDI1KTsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGhpdENhbGxiYWNrKCk7CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBlLmhyZWY7CgogICAgfQoKCi8vIEFGVEVSIE1PQklMRSBOQVYgVEVTVCBSRUNPTkNJTEUgV0lUSCBUSEUgYG1vYmlsZV9tZW51X3NjcmlwdC5waHRtbGAKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8gU3dpdGNoIHRvIGRlc2t0b3Agc2l0ZQogICAgVmltZW8uZGVza3RvcF9zaGFyZWQuX3MyZHMgPSBmdW5jdGlvbigpIHsKICAgICAgICBkb2N1bWVudC5jb29raWU9J29wdF9vdXRfbW9iaWxlPTE7ZXhwaXJlcz1GcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVDtkb21haW49JyArIHZpbWVvLmRvbWFpbjsKICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICB9OwoKICAgIC8vIFN3aXRjaCB0byBsYW5ndWFnZQogICAgVmltZW8uZGVza3RvcF9zaGFyZWQuX3MybCA9IGZ1bmN0aW9uKHNlbCkgewogICAgICAgIHZhciBsYW5nID0gc2VsLnZhbHVlLAogICAgICAgICAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCAnL3NldHRpbmdzL2xvY2FsZScpOwogICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdYLVJlcXVlc3RlZC1XaXRoJywgJ1hNTEh0dHBSZXF1ZXN0Jyk7CiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTsKICAgICAgICB4aHIuc2VuZCgnbG9jYWxlPScgKyBsYW5nICsgJyZ0b2tlbj0nICsgdmltZW8ueHNyZnQpOwogICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiBwb3N0KCkgewogICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfTsKCiAgICB2YXIgbW9iaWxlTWVudUVsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9sb2dvJyk7CiAgICBpZiAobW9iaWxlTWVudUVsZSkgewogICAgICAgIG1vYmlsZU1lbnVFbGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CgogICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIC8vIE9wZW4gTWVudQogICAgICAgICAgICB2YXIgbW9iaWxlX21lbnVfbWFpbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX21lbnVfbWFpbicpOwogICAgICAgICAgICBtb2JpbGVfbWVudV9tYWluLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwoKICAgICAgICAgICAgLy8gQ2xvc2UgTWVudQogICAgICAgICAgICB2YXIgbW9iaWxlX2hlYWRlcl9jbG9zZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9jbG9zZScpOwogICAgICAgICAgICBtb2JpbGVfaGVhZGVyX2Nsb3NlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X21haW4uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBUb2dnbGUgU2V0dGluZ3MKICAgICAgICAgICAgdmFyIG1vYmlsZV9tZW51X3NldHRpbmdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfbWVudV9zZXR0aW5ncycpOwogICAgICAgICAgICB2YXIgdG9wbmF2MjAxNV9tb2JpbGVfaGVhZGVyX3NldHRpbmdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbmdzJyk7CiAgICAgICAgICAgIHRvcG5hdjIwMTVfbW9iaWxlX2hlYWRlcl9zZXR0aW5ncy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBtb2JpbGVfbWVudV9zZXR0aW5ncy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X21haW4uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgIHZhciB0b3BuYXYyMDE1X21vYmlsZV9oZWFkZXJfc2V0dGluZ3NfY2xvc2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluc19jbG9zZScpOwogICAgICAgICAgICAgICAgdG9wbmF2MjAxNV9tb2JpbGVfaGVhZGVyX3NldHRpbmdzX2Nsb3NlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X3NldHRpbmdzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgbW9iaWxlX21lbnVfbWFpbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKCiAgICAgICAgfSwgZmFsc2UpOwogICAgfTsKCiAgICB2YXIgbW9iaWxlQWxidW1zRWxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2FsYnVtcycpOwogICAgaWYgKG1vYmlsZUFsYnVtc0VsZSkgewogICAgICAgIG1vYmlsZUFsYnVtc0VsZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB2YXIgbW9iaWxlX21lbnVfYWxidW1zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfYWxidW1fbGlzdCcpOwogICAgICAgICAgICBtb2JpbGVfbWVudV9hbGJ1bXMuY2xhc3NMaXN0LmFkZCgnb3BlbicpOwoKICAgICAgICAgICAgLy8gQ2xvc2UKICAgICAgICAgICAgdmFyIG1vYmlsZV9hbGJ1bXNfY2xvc2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9hbGJ1bV9saXN0X2Nsb3NlJyk7CiAgICAgICAgICAgIGlmIChtb2JpbGVfYWxidW1zX2Nsb3NlKSB7CiAgICAgICAgICAgICAgICBtb2JpbGVfYWxidW1zX2Nsb3NlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X2FsYnVtcy5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0sIGZhbHNlKTsKICAgIH07CgoKCi8vIF5eXl5eXl5eXl5eXl5eXl5eXl5eCi8vIEFGVEVSIE1PQklMRSBOQVYgVEVTVCBSRUNPTkNJTEUgV0lUSCBUSEUgYG1vYmlsZV9tZW51X3NjcmlwdC5waHRtbGAKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgIC8vIFVTRVIgTUVTU0FHRQoKICAgIC8vIFNob3cgbm90aWZpY2F0aW9uIGlmIGl0IGlzIHRoZSBjYXNlCiAgICAvLyBXZSB3cmFwIHRoaXMgaW4gYSBzZXRUaW1lb3V0IHNpbmNlIHRoZSBub3RpZmljYXRpb25zIHNob3VsZAogICAgLy8gaGF2ZSBhIGxvd2VyIHByaW9yaXR5IGluIHRlcm1zIG9mIHZpc3VhbCBjb21wYXJlZCB0byBvdGhlcgogICAgLy8gaXRlbXMgb24gdGhlIHBhZ2UuCiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgIC8vIERPTSBFbGVtZW50cwogICAgICAgIHZhciBhdmF0YXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9wbmF2X21lbnVfYXZhdGFyJyk7CiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYXZhdGFyIHRoZW4gc3RvcCBpdAogICAgICAgIGlmICghYXZhdGFyKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBidWJibGUgPSBhdmF0YXIucXVlcnlTZWxlY3RvcignLnRvcG5hdl9tZW51X2F2YXRhcl9idWJibGUnKTsKICAgICAgICB2YXIgZHJvcGRvd24gPSBhdmF0YXIucXVlcnlTZWxlY3RvcignI3RvcG5hdl91c2VyX2Ryb3Bkb3duJyk7CiAgICAgICAgLy92YXIgbWVzc2FnZSA9IGF2YXRhci5xdWVyeVNlbGVjdG9yKCcudG9wbmF2X3VzZXJfbWVudV9tZXNzYWdlJyk7CiAgICAgICAgLy92YXIgY2xvc2UgPSBhdmF0YXIucXVlcnlTZWxlY3RvcignLnRvcG5hdl91c2VyX21lbnVfbWVzc2FnZV9jbG9zZScpOwogICAgICAgIHZhciBvbl9ob3ZlciA9IGZhbHNlOwoKICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBidWJibGUgdGhlbiBzdG9wIGl0CiAgICAgICAgaWYgKGJ1YmJsZSkgewogICAgICAgICAgICBidWJibGUuY2xhc3NMaXN0LmFkZCgnb24nKTsKICAgICAgICB9CgogICAgICAgIC8vIEFuZCB3ZSBhdHRhY2ggaGlkZSB0aGUgYnViYmxlCiAgICAgICAgYXZhdGFyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAob25faG92ZXIpIHJldHVybjsKCiAgICAgICAgICAgIG9uX2hvdmVyID0gdHJ1ZTsKCiAgICAgICAgICAgIGlmIChidWJibGUpIHsKICAgICAgICAgICAgICAgIGJ1YmJsZS5jbGFzc0xpc3QucmVtb3ZlKCdvbicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTYXZlIHJlbW92ZWQgc3RhdGUgWzEgbWVhbnMgdGhlIHVzZXIgb3BlbiB0aGUgZHJvcGRvd25dCiAgICAgICAgICAgIHN0b3JlX3VzZXJfbWVzc2FnZV9zZXR0aW5ncygxKTsKCiAgICAgICAgfSwgZmFsc2UpOwoKICAgICAgICAvLyBTdG9yZSBzdGF0dXMgb2YgdXNlciBuYXYgbWVzc2FnZSAoYnViYmxlIGNsb3NlZCBbMV0sIG1lc3NhZ2UgaGlkZGVuIFsyXSkKICAgICAgICBmdW5jdGlvbiBzdG9yZV91c2VyX21lc3NhZ2Vfc2V0dGluZ3ModmFsdWUpIHsKICAgICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwoKICAgICAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCAnL3NldHRpbmdzL25hdicpOwogICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignWC1SZXF1ZXN0ZWQtV2l0aCcsICdYTUxIdHRwUmVxdWVzdCcpOwogICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpOwogICAgICAgICAgICB4aHIuc2VuZCgnbWVzc2FnZV9zdGF0ZT0nICsgdmFsdWUgKyAnJnRva2VuPScgKyB2aW1lby54c3JmdCk7CgogICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGhhbmRsZS4gV2UgaG9wZSBmb3IgdGhlIGJlc3QgaW4gdGhpcyBjYXNlCiAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7fTsKICAgICAgICB9OwoKICAgIH0sIDEwMDApOwp9KSh3aW5kb3csIGRvY3VtZW50KTsKPC9zY3JpcHQ+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0id3JhcF9jb250ZW50IHZhcmlhbnQtdjIiPgogICAgICAgICAgICAgICAgCgoKCjxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9jb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0iZXhjZXB0aW9uX3NlY3Rpb24gZXhjZXB0aW9uX3NlY3Rpb24tLWluZm8iPgogICAgICAgIDxoMSBjbGFzcz0iZXhjZXB0aW9uX3RpdGxlIGlyaXNfaGVhZGVyIj5Tb3JyeSwgd2UgY291bGRu4oCZdCBmaW5kIHRoYXQgcGFnZTwvaDE+CgogICAgICAgIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9jb250ZW50Ij4KICAgICAgICAgICAgPHAgY2xhc3M9ImV4Y2VwdGlvbl9tZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbCI+CiAgICAgPGRpdiBjbGFzcz0iaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbC1pY29uIj4KICAgICAgICAgPHNwYW4gY2xhc3M9ImlyaXNfaWMgaXMtLTE2Ij48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBkPSJNOCAxNmM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHpNNyA0aDJ2Mkg3VjR6bTAgM2gydjVIN1Y3eiIvPjwvc3ZnPjwvc3Bhbj4KICAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJpcmlzX25vdGlmaWNhdGlvbi1oZWFkZXIiPgogICAgICAgIDxzdHJvbmc+UmVhc29ucyB5b3UgbWlnaHQgYmUgc2VlaW5nIHRoaXMgcGFnZTwvc3Ryb25nPgogICAgPC9kaXY+CgogICAgPHVsIGNsYXNzPSJpcmlzX25vdGlmaWNhdGlvbi1saXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+SXQgZXhpc3RzLCBidXQgeW91IGRvbuKAmXQgaGF2ZSBwZXJtaXNzaW9uIHRvIHNlZSBpdCwgb3IgeW91IG5lZWQgdG8gPGEgb25jbGljaz0idmltZW8uU2Vzc2lvbi5jcmVhdGUoKSI+bG9nIGluPC9hPi48L2xpPgogICAgICAgICAgICAgICAgPGxpPk5vdGhpbmcgaGFzIGV2ZXIgZXhpc3RlZCBoZXJlLiBTcG9va3kuPC9saT4KICAgICAgICA8bGk+U29tZXRoaW5nIG9uY2UgbGl2ZWQgaGVyZSwgYnV0IGhhcyBiZWVuIGRlbGV0ZWQuPC9saT4KICAgIDwvdWw+CjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJleGNlcHRpb25fc2VhcmNoIiBhY3Rpb249Ii9zZWFyY2giIG1ldGhvZD0iZ2V0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJleGNlcHRpb25fc2VhcmNoLWlucHV0LXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtaW5wdXQgaXJpc19pbnB1dCBpcmlzX2lucHV0LS1zZWFyY2gganMtc2VhcmNoX2F1dG9jb21wbGV0ZSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtYnV0dG9uIGlyaXNfYnRuIGlyaXNfYnRuLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImlyaXNfYnRuLWNvbnRlbnQiPlNlYXJjaDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9hdXhpbGlhcnkiPjwvZGl2Pgo8L2Rpdj4KCiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjxmb290ZXIgY2xhc3M9ImZvb3Rlcl92MiBmb290ZXJfdjItLXJlc3BvbnNpdmUiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX3NpdGVtYXAiPgogICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19saW5rcyI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogICAgICAgICAgICA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+VklNRU88L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3VwZ3JhZGUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19wcmljaW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnZpbWVvfGtleXdvcmQ6cHJpY2luZyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFByaWNpbmcgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvdXBsb2FkIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBsb2FkX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnZpbWVvfGtleXdvcmQ6dXBsb2FkIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2NoYW5uZWxzL3N0YWZmcGlja3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zdGFmZl9waWNrcyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp2aW1lb3xrZXl3b3JkOnN0YWZmX3BpY2tzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU3RhZmYgUGlja3MgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvb25kZW1hbmQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19vbl9kZW1hbmRfY2xpY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dmltZW98a2V5d29yZDpvbl9kZW1hbmQiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBPbiBEZW1hbmQgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3ZpbWVvLmNvbS9vdHQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua192aW1lb19vdHQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dmltZW98a2V5d29yZDpvdHQiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBPVFQgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvc2l0ZV9tYXAiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zaXRlX21hcF9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp2aW1lb3xrZXl3b3JkOnNpdGVfbWFwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU2l0ZSBtYXAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5TT0xVVElPTlM8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2ZlYXR1cmVzL3ZpZGVvLXBsYXllciIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpZGVvX3BsYXllciIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOnZpZGVvX3BsYXllciIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvIFBsYXllciAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9jcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19jcmVhdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpjcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZmVhdHVyZXMvdmlkZW8tcHJpdmFjeSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ByaXZhY3kiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpwcml2YWN5IgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgUHJpdmFjeSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1jb2xsYWJvcmF0aW9uIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfY29sbGFib3JhdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmNvbGxhYm9yYXRpb24iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBDb2xsYWJvcmF0aW9uICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2ZlYXR1cmVzL3ZpZGVvLW1hcmtldGluZyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2Rpc3RyaWJ1dGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmRpc3RyaWJ1dGlvbiIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIERpc3RyaWJ1dGlvbiAmIG1hcmtldGluZyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1tb25ldGl6YXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19tb25ldGl6YXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDptb25ldGl6YXRpb24iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBNb25ldGl6YXRpb24gICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvbGl2ZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2xpdmVfc3RyZWFtaW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6bGl2ZV9zdHJlYW1pbmciCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBMaXZlIHN0cmVhbWluZyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1hbmFseXRpY3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19hbmFseXRpY3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDphbmFseXRpY3MiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBBbmFseXRpY3MgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZmVhdHVyZXMvb25saW5lLXZpZGVvLWhvc3RpbmciCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19ob3N0aW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6aG9zdGluZyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEhvc3RpbmcgJiBtYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2VudGVycHJpc2UiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19lbnRlcnByaXNlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmVudGVycHJpc2UiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBFbnRlcnByaXNlICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Zvci1oaXJlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZm9yX2hpcmUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Zm9yX2hpcmUiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBGb3IgSGlyZSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9zdG9jayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3N0b2NrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOnN0b2NrIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU3RvY2sgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5BUFBTPC9zcGFuPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fcmV2ZWFsIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9oND4KICAgICAgICAgICAgPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9hcHBzLmFwcGxlLmNvbS9hcHAvYXBwbGUtc3RvcmUvaWQxMzU2Njg2NzYzP3B0PTQxNzczMSZhbXA7Y3Q9bG9ocCZhbXA7bXQ9OCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOm1hY29zIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBmb3IgbWFjT1MgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9pdHVuZXMuYXBwbGUuY29tL2FwcC92aW1lby9pZDQyNTE5NDc1OT9tdD04IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6aW9zIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBmb3IgaU9TICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vcGxheS5nb29nbGUuY29tL3N0b3JlL2FwcHMvZGV0YWlscz9pZD1jb20udmltZW8uYW5kcm9pZC52aWRlb2FwcCZhbXA7cmVmZXJyZXI9dXRtX3NvdXJjZSUzRGZvb3RlciUyNnV0bV9tZWRpdW0lM0Rsb2hwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6YW5kcm9pZCIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gZm9yIEFuZHJvaWQgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9hcHBzLmFwcGxlLmNvbS91cy9hcHAvdmltZW8tY3JlYXRlL2lkMTQ5MTc5MTUxMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOmNyZWF0ZV9pb3MiCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIENyZWF0ZSBmb3IgaU9TICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vcGxheS5nb29nbGUuY29tL3N0b3JlL2FwcHMvZGV0YWlscz9pZD1jb20udmltZW9jcmVhdGUudmlkZW9lZGl0b3IubW92aWVtYWtlciZhbXA7cmVmZXJyZXI9dXRtX3NvdXJjZSUzRGZvb3RlciUyNnV0bV9tZWRpdW0lM0Rsb2hwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6Y3JlYXRlX2FuZHJvaWQiCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIENyZWF0ZSBmb3IgQW5kcm9pZCAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL21hZ2lzdG8uY29tIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6bWFnaXN0byIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFnaXN0byAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlJFU09VUkNFUzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvaDQ+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWxpc3QgZm9vdGVyX3YyX2FjY29yZGlvbl9fbWVudSI+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2hlbHAiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19oZWxwX2NlbnRlcl9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDpoZWxwX2NlbnRlciIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEhlbHAgQ2VudGVyICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Jsb2ciCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua192aW1lb19ibG9nX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOnZpbWVvX2Jsb2ciCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBCbG9nICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Jsb2cvY2F0ZWdvcnkvdmlkZW8tc2Nob29sIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmlkZW9fc2Nob29sX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOnZpZGVvX3NjaG9vbCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvIFNjaG9vbCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vdmltZW8uY29tL290dC9yZXNvdXJjZXMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19vdHRfcmVzb3VyY2VzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOm90dF9yZXNvdXJjZXMiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBPVFQgUmVzb3VyY2VzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIudmltZW8uY29tIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZGV2ZWxvcGVyc19jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDpkZXZlbG9wZXJzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVycyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9zdHVkZW50cyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3N0dWRlbnRzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOnN0dWRlbnRzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU3R1ZGVudHMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvaGVscC9ndWlkZWxpbmVzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmltZW9fZ3VpZGVsaW5lc19jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDp2aW1lb19ndWlkZWxpbmVzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgR3VpZGVsaW5lcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlVQR1JBREU8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL3BsdXMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua191cGdyYWRlX3BsdXMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cGx1cyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIFBsdXMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvc3RvcmUvcHJvIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9wcm8iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cHJvIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gUFJPICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL2J1c2luZXNzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9idXNpbmVzcyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp1cGdyYWRlX2xpbmt8a2V5d29yZDpidXNpbmVzcyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIEJ1c2luZXNzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL3ByZW1pdW0iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua191cGdyYWRlX3ByZW1pdW0iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cHJlbWl1bSIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIFByZW1pdW0gICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZW50ZXJwcmlzZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3VwZ3JhZGVfZW50ZXJwcmlzZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp1cGdyYWRlX2xpbmt8a2V5d29yZDplbnRlcnByaXNlIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gRW50ZXJwcmlzZSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHA6Ly92aW1lby5leHRvbGUuY29tL3dlYnNpdGVfZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9yZWZfZnJpZW5kIgogICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9Il9ibGFuayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp1cGdyYWRlX2xpbmt8a2V5d29yZDpyZWZlcl9hX2ZyaWVuZCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyIGEgZnJpZW5kICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogICAgICAgICAgICA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+Q09NUEFOWTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvaDQ+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWxpc3QgZm9vdGVyX3YyX2FjY29yZGlvbl9fbWVudSI+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvYWJvdXQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19hYm91dF9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpjb21wYW55fGtleXdvcmQ6YWJvdXRfdmltZW8iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBBYm91dCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9qb2JzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfam9icyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpjb21wYW55fGtleXdvcmQ6am9icyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEpvYnMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGFzaWRlIGlkPSJmb290ZXJfdGlwIiBjbGFzcz0iZm9vdGVyX3YyX190aXAiIGFyaWEtbGl2ZT0icG9saXRlIj4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX3RpcC1oZWFkZXIiPkRpZCB5b3Uga25vdz88L2g0PgogICAgICAgICAgICA8cCBjbGFzcz0iYWN0aXZlIGZvb3Rlcl92Ml9fdGlwLWNvbnRlbnQiPjxhIGhyZWY9Imh0dHBzOi8vaGVscC52aW1lby5jb20vaGMvZW4tdXMvYXJ0aWNsZXMvMTE1MDA0NDg1NzI4LUF1dG9wbGF5aW5nLWFuZC1sb29waW5nLWVtYmVkZGVkLXZpZGVvcyIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6ZGlkX3lvdV9rbm93X2JveHxjb21wb25lbnQ6aGVscCI+VHVybiBvbiBsb29waW5nPC9hPiBmb3IgeW91ciBlbWJlZGRlZCB2aWRlbyBzbyBpdCB3aWxsIHBsYXkgb3ZlciBhbmQgb3ZlciBhbmQgb3ZlciBhbmQgb3ZlciBhbmQgb3ZlciBhbmQgeW91IGdldCB0aGUgaWRlYS48L3A+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvc2VjdGlvbj4KICAgIAogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2F1eGlsaWFyeSAiPgoKICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwiPgogICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWNvbnRlbnQiPgogICAgICAgICAgICA8cD5UTSArICZjb3B5OyAyMDIwIFZpbWVvLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0Ij4KICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvdGVybXMiIHRpdGxlPSJUZXJtcyAmYW1wOyBDb25kaXRpb25zIj4KICAgICAgICAgICAgICAgICAgICBUZXJtcyAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL3ByaXZhY3kiIHRpdGxlPSJQcml2YWN5IFBvbGljeSI+CiAgICAgICAgICAgICAgICAgICAgUHJpdmFjeSAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL3ByaXZhY3kvY2FsaWZvcm5pYS1wcml2YWN5IiB0aXRsZT0iQ0EgUHJpdmFjeSI+CiAgICAgICAgICAgICAgICAgICAgQ0EgUHJpdmFjeSAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL2RtY2EiIHRpdGxlPSJDb3B5cmlnaHQgSW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL2Nvb2tpZV9wb2xpY3kiIHRpdGxlPSJMZWFybiBtb3JlIGFib3V0IGhvdyBWaW1lbyB1c2VzIGNvb2tpZXMiPgogICAgICAgICAgICAgICAgICAgIENvb2tpZXMgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19hdXhpbGlhcnktY29udGVudCBmb290ZXJfdjJfX3dpdGhsb3ZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hZGUgd2l0aCA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiBmb290ZXJfdjJfX2xvdmVoZWFydCBmb290ZXJfdjJfX2F1eGlsaWFyeS1pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMiAxMiI+PHBhdGggZD0iTTkgMkM3LjMxMiAyIDYgMy41IDYgMy41UzQuNjg3IDIgMyAyQzEuMzEyIDIgMCAzLjMxMiAwIDVjMCAzLjE4OCAzLjc1IDMuMDEyIDYgNiAyLjI1LTIuOTg4IDYtMi44MTIgNi02IDAtMS42ODgtMS4zMTMtMy0zLTN6Ii8+PC9zdmc+IGluIE5ZQy4gICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19maWx0ZXJzIGZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWNvbnRlbnQiPgogICAgICAgIDxzcGFuIGNsYXNzPSJsYW5ndWFnZSI+CiAgICAgICAgICAgIExhbmd1YWdlOgogICAgICAgICAgICA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIjbGFuZ3VhZ2UiIG9uY2xpY2s9InZpbWVvLk1vZGFsLmNyZWF0ZSh7Y29udGVudDogJy9zZXR0aW5ncy9sb2NhbGUnLCBzaXplOiAnc21hbGwnfSk7IHJldHVybiBmYWxzZTsiIHRpdGxlPSJDaG9vc2UgYSBkaWZmZXJlbnQgbGFuZ3VhZ2UiPkVuZ2xpc2g8L2E+CiAgICAgICAgPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19maWx0ZXIiPk1hdHVyZSBjb250ZW50IGZpbHRlcjogPC9zcGFuPjxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQgZm9vdGVyX3YyX19maWx0ZXJzX19sYW5nIGNvbnRlbnRmaWx0ZXIganMtZm9vdGVyX2NvbnRlbnRmaWx0ZXJfbGluayIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJ2aW1lby5Nb2RhbC5jcmVhdGUoe2NvbnRlbnQ6ICcvc2V0dGluZ3MvY29udGVudHJhdGluZyd9KSIgdGl0bGU9IkNoYW5nZSB5b3VyIG1hdHVyZSBjb250ZW50IGZpbHRlciI+Tm9uZTwvYT4KICAgICAgICAgICAgPC9kaXY+Cgo8L3NlY3Rpb24+CjwvZm9vdGVyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCjxzY3JpcHQ+CiAgICB2YXIgX19mYSA9IF9fZmEgfHwgW107CiAgICAvKioKICAgICAqIEJlY2F1c2Ugc2luZ2xlIHBhZ2UgYXBwbGljYXRpb25zIHN1Y2ggYXMgdGhlIGFwcCBzaGVsbCB3aWxsIGJlIHRyYWNraW5nCiAgICAgKiBGYXRhbCBBdHRyYWN0aW9uIHBhZ2Ugdmlld3Mgb24gUmVhY3QgbGlmZWN5Y2xlIGhvb2tzIChjb21wb25lbnREaWRNb3VudCkKICAgICAqIHdlIHdhbnQgdG8gYXZvaWQgZGlzcGF0Y2hpbmcgdGhlIHBhZ2V2aWV3IGV2ZW50IGZyb20gdGhlIFBIUCB0ZW1wbGF0ZQogICAgICogYW5kIGRlZmVyIHRoaXMgc29ydCBvZiB0cmFja2luZyBsb2dpYyB0byB0aGUgZnJvbnQgZW5kLgogICAgICoKICAgICAqIFRoaXMgY2hlY2sgYWxsb3dzIHVzIHRvIGRlY2xhcmUgaW4gYSBjb250cm9sbGVyIHdoZXRoZXIgb3Igbm90IHdlCiAgICAgKiB3YW50IHRvIGRpc3BhdGNoIHRoYXQgcHJlbGltaW5hcnkgcGFnZXZpZXcuCiAgICAgKgogICAgICogVGhlIHByb3BlcnR5IGlzIGFkZGl0aXZlIG9ubHksIGFzIHRvIG5vdCBhZmZlY3QgZXhpc3RpbmcgcGFnZXZpZXdzLgogICAgICovCiAgICAgICAgICAgIF9fZmEucHVzaChbJ3RyYWNrUGFnZXZpZXcnXSk7CiAgICAKICAgIC8qKgogICAgICogQWRkIHNlcnZlciBzaWRlIEFCTGluY29sbiBleHBlcmltZW50cyB0byBHVE0gZGF0YSBsYXllci4KICAgICAqLwogICAgCiAgICAgICAgdmFyIF9leHRlbmQgPSBmdW5jdGlvbigpe2Zvcih2YXIgcj1hcmd1bWVudHNbMF0sbj0xLGU9YXJndW1lbnRzLmxlbmd0aDtlPm47bisrKXt2YXIgdD1hcmd1bWVudHNbbl07Zm9yKHZhciBhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmKHJbYV09dFthXSl9cmV0dXJuIHJ9OwoKICAgICAgICB2YXIgQ1NTX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL3N0eWxlcy9jc3Nfb3B0LycsCiAgICAgICAgSlNfRElSID0gJ2h0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0LycsCiAgICAgICAgSU1BR0VfRElSID0gJ2h0dHBzOi8vZi52aW1lb2Nkbi5jb20vaW1hZ2VzX3Y2LycsCiAgICAgICAgRk9OVF9ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9mb250cy8nLAogICAgICAgIFNWR19ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdmcvJywKICAgICAgICAgICAgICAgIEJVSUxEX0hBU0ggPSAnNmFlYmUnOwoKICAgIAogICAgICAgIHZhciB2aW1lbyA9IF9leHRlbmQoKHdpbmRvdy52aW1lbyB8fCB7fSksIHsiYXBwX3ZlcnNpb24iOiJ2NiIsImRvbWFpbiI6InZpbWVvLmNvbSIsInVybCI6InZpbWVvLmNvbSIsImN1cl91c2VyIjpmYWxzZSwib3JpZ2luX3VzZXJfaWQiOm51bGwsIm9yaWdpbl91c2VyIjpmYWxzZSwiaXNfbW9iaWxlIjpmYWxzZX0pOwogICAgdmltZW8uY29uZmlnID0gX2V4dGVuZCgodmltZW8uY29uZmlnIHx8IHt9KSwgeyJzdGlja3lfdG9wbmF2Ijp7ImV4Y2x1ZGVkX3BhZ2VzIjpbIlZpbWVvXFxDb250cm9sbGVyXFxBYm91dENvbnRyb2xsZXI6bWFpbiIsIlZpbWVvXFxDb250cm9sbGVyXFxBYm91dENvbnRyb2xsZXI6cHJvZmVzc2lvbmFscyIsIlZpbWVvXFxDb250cm9sbGVyXFxBYm91dENvbnRyb2xsZXI6ZXZlcnlvbmUiLCJWaW1lb1xcQ29udHJvbGxlclxcSG9tZUNvbnRyb2xsZXI6dXBncmFkZSIsIlZpbWVvXFxDb250cm9sbGVyXFxTdG9yZUNvbnRyb2xsZXI6bWFpbiIsIlZpbWVvXFxDb250cm9sbGVyXFxVc2VyXFxTZXR0aW5nczJDb250cm9sbGVyOm1haW4iLCJWaW1lb1xcQ29udHJvbGxlclxcVXNlclxcU2V0dGluZ3MyQ29udHJvbGxlcjp0ZWFtX21lbWJlcnMiLCJWaW1lb1xcQ29udHJvbGxlclxcVXNlclxcU2V0dGluZ3MyQ29udHJvbGxlcjpwYXNzd29yZCIsIlZpbWVvXFxDb250cm9sbGVyXFxQcm9maWxlQ29udHJvbGxlcjptYWluIiwiVmltZW9cXENvbnRyb2xsZXJcXENsaXBTdGF0c0NvbnRyb2xsZXI6bWFpbiIsIlZpbWVvXFxDb250cm9sbGVyXFxDbGlwXFxTZXR0aW5nc1xcRW1iZWRDb250cm9sbGVyOmVtYmVkIiwiVmltZW9cXENvbnRyb2xsZXJcXFZpZGVvTWFuYWdlckNvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcVmlkZW9SZXZpZXdDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXE1lc3NhZ2VzQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxTdGF0c0NvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcVXBsb2FkQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxPbkRlbWFuZFxcU2V0dGluZ3NDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXENsaXBcXFNldHRpbmdzQ29udHJvbGxlciJdLCJzdGlja3lfaW5jbHVkZWRfcGFnZXMiOlsiVmltZW9cXENvbnRyb2xsZXJcXFN0b2NrXFxTdG9ja0hvbWVQYWdlQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxTdG9ja1xcU3RvY2tGb290YWdlQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxTdG9ja1xcU3RvY2tTZWFyY2hDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXFN0b2NrXFxTdG9ja0NvbGxlY3Rpb25zQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxBbGJ1bUNvbnRyb2xsZXIiXSwidG9wbmF2X3dyYXBfc2VsZWN0b3IiOiIjdG9wbmF2X291dGVyX3dyYXAiLCJjb250ZW50X3dyYXBfc2VsZWN0b3IiOiIud3JhcF9jb250ZW50In0sImxvY2FsZSI6ImVuIiwib21uaXNlYXJjaF9lbmFibGVkIjpmYWxzZSwib21uaXNlYXJjaF9kaXNhYmxlZCI6bnVsbCwib21uaXNlYXJjaF9qd3QiOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKbGVIQWlPakUyTURNNE1qTTVOREFzSW5WelpYSmZhV1FpT201MWJHd3NJbUZ3Y0Y5cFpDSTZOVGcwTnprc0luTmpiM0JsY3lJNkluQjFZbXhwWXlCd2NtbDJZWFJsSUdSbGJHVjBaU0lzSW5SbFlXMWZkWE5sY2w5cFpDSTZiblZzYkgwLkpVNXZQY1hma3dEN01jRkZrcFFwSlBER0VqSE1mcFlkTUxqNXRWSndOYU0iLCJvbW5pc2VhcmNoX3VzZXIiOm51bGwsImFwaV91cmwiOiJhcGkudmltZW8uY29tIiwic2hvd19vbW5pc2VhcmNoX3RpcCI6ZmFsc2V9KTsKCiAgICAgICAgdmFyIF9faTE4bkxvY2FsZSA9ICdlbic7CiAgICB2YXIgbG9jYWxlQ29uZmlnID0gewogICAgICAgIGxhbmc6ICdlbicsCiAgICAgICAgJ0RhdGUnOiB7CiAgICAgICAgICAgIG1vbnRoczogWyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLAogICAgICAgICAgICBtb250aHNfYWJicjogWyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSwKICAgICAgICAgICAgZGF5czogWyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLAogICAgICAgICAgICBkYXlzX2FiYnI6IFsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sCgogICAgICAgICAgICAvLyBDdWx0dXJlJ3MgZGF0ZSBvcmRlcjogTU0vREQvWVlZWQogICAgICAgICAgICBkYXRlT3JkZXI6IFsnZGF0ZScsICdtb250aCcsICd5ZWFyJ10sCiAgICAgICAgICAgIHNob3J0RGF0ZTogJyVkLyVtLyVZJywKICAgICAgICAgICAgc2hvcnRUaW1lOiAnJUk6JU0lcCcsCiAgICAgICAgICAgIEFNOiAnQU0nLAogICAgICAgICAgICBQTTogJ1BNJywKICAgICAgICAgICAgZmlyc3REYXlPZldlZWs6IDAsCgogICAgICAgICAgICAvLyBEYXRlLkV4dHJhcwogICAgICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbihkYXlPZk1vbnRoKXsKICAgICAgICAgICAgICAgIHJldHVybiBkYXlPZk1vbnRoOwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAnRGF0ZVBpY2tlcic6IHsKICAgICAgICAgICAgc2VsZWN0X2FfdGltZTogIlNlbGVjdCBhIHRpbWUiLAogICAgICAgICAgICB1c2VfbW91c2Vfd2hlZWw6ICJVc2UgdGhlIG1vdXNlIHdoZWVsIHRvIHF1aWNrbHkgY2hhbmdlIHZhbHVlIiwKICAgICAgICAgICAgdGltZV9jb25maXJtX2J1dHRvbjogIk9LIiwKICAgICAgICAgICAgYXBwbHlfcmFuZ2U6ICJBcHBseSIsCiAgICAgICAgICAgIGNhbmNlbDogIkNhbmNlbCIsCiAgICAgICAgICAgIHdlZWs6ICJXayIgICAgICAgIH0sCiAgICAgICAgICAgICAgICAnTnVtYmVyJzogewogICAgICAgICAgICBkZWNpbWFsOiAnLicsCiAgICAgICAgICAgIGdyb3VwOiAnLCcsCiAgICAgICAgICAgIGN1cnJlbmN5OiB7CiAgICAgICAgICAgICAgICBwcmVmaXg6ICckJwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAnRm9ybVZhbGlkYXRvcic6IHsicmVxdWlyZWQiOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIsInJlcXVpcmVkQ2hrIjoiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifSAgICB9OwoKICAgIHZhciBmdWxsTG9jYWxlID0gJyc7CgogICAgCiAgICAgICAgdmFyIENvcHkgPSB7dHJhbnNsYXRlOmZ1bmN0aW9uKHQsaSx1KXt2YXIgZT0nb2JqZWN0JyE9dHlwZW9mIHRoaXMuZGljdFt0XT90aGlzLmRpY3RbdF06aT90aGlzLmRpY3RbdF0ucGx1cmFsOnRoaXMuZGljdFt0XS5zaW5ndWxhcjtyZXR1cm4nb2JqZWN0Jz09dHlwZW9mIHUmJihlPXRoaXMuc3Vic3RpdHV0ZShlLHUpKSxlfSxzdWJzdGl0dXRlOmZ1bmN0aW9uKHQsaSl7cmV0dXJuIHZvaWQgMCE9PXQuc3Vic3RpdHV0ZT90LnN1YnN0aXR1dGUoaSk6dC5yZXBsYWNlKC9cXD9ceyhbXnt9XSspXH0vZyxmdW5jdGlvbih0LHUpe3JldHVybidcXCc9PXQuY2hhckF0KDApP3Quc2xpY2UoMSk6bnVsbCE9aVt1XT9pW3VdOicnfSl9LGRpY3Q6e319OwogICAgQ29weS5kaWN0ID0geyJkaWRfeW91X21lYW5fZW1haWwiOiJEaWQgeW91IG1lYW4gPGVtPntTVUdHRVNUfTxcL2VtPj8iLCJlbWFpbF9wYXNzd29yZF9taXNtYXRjaCI6IkVtYWlsIGFuZCBwYXNzd29yZCBkbyBub3QgbWF0Y2giLCJvb3BzX3RyeV9hZ2FpbiI6Ik9vcHMhIFNvbWV0aGluZyB3ZW50IHdyb25nLiBQbGVhc2UgdHJ5IGFnYWluLiIsImp1c3Rfbm93IjoianVzdCBub3ciLCJzZWNvbmRzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gc2Vjb25kIGFnbyIsInBsdXJhbCI6IntDT1VOVH0gc2Vjb25kcyBhZ28ifSwibWludXRlc19hZ28iOnsic2luZ3VsYXIiOiJ7Q09VTlR9IG1pbnV0ZSBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IG1pbnV0ZXMgYWdvIn0sImhvdXJzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gaG91ciBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IGhvdXJzIGFnbyJ9LCJvcGVuX2NvbW1lbnRfYm94IjoiQWRkIG5ldyBjb21tZW50IGluc3RlYWQgJnJhcXVvOyIsInVybF91bmF2YWlsYWJsZSI6IlNvcnJ5LCB0aGlzIHVybCBpcyB1bmF2YWlsYWJsZS4iLCJ1bnNhdmVkX2NoYW5nZXNfZ2VuZXJpYyI6IllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcywgYXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRvIGxlYXZlPyIsImFkZCI6IkFkZCIsInJlbW92ZSI6IlJlbW92ZSIsInNlbGVjdCI6IlNlbGVjdCIsIm5vX2ZvbGxvd2Vyc19mb3JfbGV0dGVyIjoiWW91IGRvbiZyc3F1bzt0IGZvbGxvdyBhbnlvbmUgdGhhdCBiZWdpbiB3aXRoIHRoZSBsZXR0ZXIgJmxkcXVvO3tQQUdFX0xFVFRFUn0mcmRxdW87Iiwic2hhcmVfbGltaXRfcmVhY2hlZCI6IllvdSBoYXZlIHJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVzZXJzIHRvIHNoYXJlIHdpdGguIiwiYXRfbGVhc3Rfb25lIjoiVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgdXNlci4iLCJhdmFpbGFibGUiOiJBdmFpbGFibGUiLCJ1bmF2YWlsYWJsZSI6IlVuYXZhaWxhYmxlIiwiYnJvd3NlX2Vycm9yX2dlbmVyaWMiOiJTb3JyeSwgdGhlcmUgd2FzIGFuIGVycm9yIiwiYnJvd3NlX2Vycm9yX25vX3ZpZGVvcyI6IlNvcnJ5LCBubyB2aWRlb3MgZm91bmQiLCJmb2xsb3ciOiJGb2xsb3ciLCJmb2xsb3dpbmciOiJGb2xsb3dpbmciLCJ1bmZvbGxvdyI6IlVuZm9sbG93IiwidW5mb2xsb3dpbmciOiJVbmZvbGxvd2luZyIsImNvdW50X2NvbW1lbnRzIjp7InNpbmd1bGFyIjoie0NPVU5UfSBjb21tZW50IiwicGx1cmFsIjoie0NPVU5UfSBjb21tZW50cyJ9LCJmaXJzdF9jb21tZW50IjoiQmUgdGhlIGZpcnN0IHRvIGNvbW1lbnRcdTIwMjYiLCJub19jb21tZW50c19mb3JfeW91IjoiRm9yYmlkZGVuLiBZb3UgY2Fubm90IHBvc3QgY29tbWVudHMgb24gdGhpcyBwYWdlLiIsIm9vcHMiOiJPb3BzISIsInBsYXllcl90cnlfYWdhaW4iOiJUaGF0IHdhc24ndCBzdXBwb3NlZCB0byBoYXBwZW4uIFBsZWFzZSB0cnkgYWdhaW4gaW4gYSBmZXcgbWludXRlcy4iLCJkdXJhdGlvbl9pbnB1dF9taW5fZHVyYXRpb24iOiJUaGUgZHVyYXRpb24gY2Fubm90IGJlIGxlc3MgdGhhbiB7TUlOX0RVUkFUSU9OfS4iLCJkdXJhdGlvbl9pbnB1dF9tYXhfZHVyYXRpb24iOiJUaGUgZHVyYXRpb24gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiB7TUFYX0RVUkFUSU9OfS4iLCJkdXJhdGlvbl9pbnB1dF9pbnZhbGlkX2NoYXJhY3RlcnMiOiIwLTkgYW5kIDogYXJlIHRoZSBvbmx5IGFjY2VwdGFibGUgaW5wdXRzLiIsImNsb3NlIjoiQ2xvc2UiLCJleHBhbmQiOiJFeHBhbmQiLCJsb2FkaW5nIjoiTG9hZGluZy4uLiIsInRvcCI6InRvcCIsImFkdmFuY2VkX3NlYXJjaCI6IkFkdmFuY2VkIFNlYXJjaCIsIm5vX3N1Z2dlc3Rpb25zIjoiTm8gc3VnZ2VzdGlvbnMiLCJyZWNlbnRfc2VhcmNoZXMiOiJSZWNlbnQgU2VhcmNoZXMiLCJzZWFyY2hfYWxsIjoiU2VhcmNoIEFsbCBvZiBWaW1lbyIsImVtYWlsX2FuZF9wYXNzd29yZCI6IlBsZWFzZSBlbnRlciB5b3VyIGVtYWlsIGFuZCBwYXNzd29yZCIsImVtYWlsX2FkZHJlc3MiOiJQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIiwibmFtZV9lbWFpbF9hbmRfcGFzc3dvcmQiOiJQbGVhc2UgZW50ZXIgeW91ciBuYW1lLCBlbWFpbCwgYW5kIHBhc3N3b3JkIn07Cjwvc2NyaXB0PgoKCiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvc3RpY2t5X3RvcG5hdl9jb21iaW5lZC5taW4uanM/NWZmZDZkNGUiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L3JlYWN0X3Byb2RfY29tYmluZWQubWluLmpzPzAzMTc3NWE0Ij48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9leGNlcHRpb25fY29tYmluZWQubWluLmpzPzJhMmYyNjEzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC90b3BuYXZfY2FydF9idXR0b25fY29tYmluZWQubWluLmpzPzQ0ODhjMDkyIj48L3NjcmlwdD4KCiAgICA8c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvX2J1bmRsZXMvY3JlYXRlX2ZhY2Vib29rX2hlYWRlci5idW5kbGUubWluLmpzPzk1NGM0NjAwIj48L3NjcmlwdD4KICAgIDxzY3JpcHQ+CiAgICAgICAgZnVuY3Rpb24gb25WaW1lb0RvbVJlYWR5KGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIHdpbmRvdy52aW1lbyA9IHdpbmRvdy52aW1lbyB8fCB7fTsKICAgICAgd2luZG93LnZpbWVvLmV4Y2VwdGlvbl9kYXRhID0geyJ0aXRsZSI6IlNvcnJ5LCB3ZSBjb3VsZG5cdTIwMTl0IGZpbmQgdGhhdCBwYWdlIiwibWVzc2FnZSI6IiIsIm5vdGlmaWNhdGlvbiI6IjxkaXYgY2xhc3M9XCJleGNlcHRpb25fbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uLS11cHNlbGxcIj5cbiAgICAgPGRpdiBjbGFzcz1cImlyaXNfbm90aWZpY2F0aW9uLS11cHNlbGwtaWNvblwiPlxuICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcmlzX2ljIGlzLS0xNlwiPjxzdmcgeG1sbnM9XCJodHRwOlwvXC93d3cudzMub3JnXC8yMDAwXC9zdmdcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+PHBhdGggZD1cIk04IDE2YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04LTggMy41ODItOCA4IDMuNTgyIDggOCA4ek03IDRoMnYySDdWNHptMCAzaDJ2NUg3Vjd6XCJcLz48XC9zdmc+PFwvc3Bhbj5cbiAgICAgPFwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImlyaXNfbm90aWZpY2F0aW9uLWhlYWRlclwiPlxuICAgICAgICA8c3Ryb25nPlJlYXNvbnMgeW91IG1pZ2h0IGJlIHNlZWluZyB0aGlzIHBhZ2U8XC9zdHJvbmc+XG4gICAgPFwvZGl2PlxuXG4gICAgPHVsIGNsYXNzPVwiaXJpc19ub3RpZmljYXRpb24tbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGk+SXQgZXhpc3RzLCBidXQgeW91IGRvblx1MjAxOXQgaGF2ZSBwZXJtaXNzaW9uIHRvIHNlZSBpdCwgb3IgeW91IG5lZWQgdG8gPGEgb25jbGljaz1cInZpbWVvLlNlc3Npb24uY3JlYXRlKClcIj5sb2cgaW48XC9hPi48XC9saT5cbiAgICAgICAgICAgICAgICA8bGk+Tm90aGluZyBoYXMgZXZlciBleGlzdGVkIGhlcmUuIFNwb29reS48XC9saT5cbiAgICAgICAgPGxpPlNvbWV0aGluZyBvbmNlIGxpdmVkIGhlcmUsIGJ1dCBoYXMgYmVlbiBkZWxldGVkLjxcL2xpPlxuICAgIDxcL3VsPlxuPFwvZGl2PlxuIiwic2VhcmNoIjp0cnVlLCJ2aWRlb3MiOm51bGwsImFkX2NvbmZpZyI6eyJob3VzZV9hZHNfZW5hYmxlZCI6ZmFsc2V9LCJwYWdlX3R5cGUiOiJleGNlcHRpb24iLCJtb2R1bGVfdHlwZSI6InN0YW5kYXJkX211bHRpIn07CgogICAgICBuZXcgd2luZG93LkV4Y2VwdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkucmVhZHkob25WaW1lb0RvbVJlYWR5KTsKICAgICAgICAgICAgPC9zY3JpcHQ+CgoKICAgIDwvYm9keT4KPC9odG1sPgo=
127
+ http_version:
128
+ recorded_at: Tue, 27 Oct 2020 18:23:05 GMT
128
129
  recorded_with: VCR 3.0.3
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  User-Agent:
11
- - VideoInfo/2.7
11
+ - VideoInfo/2.8.0
12
12
  Accept:
13
13
  - "*/*"
14
14
  response:
@@ -16,51 +16,52 @@ http_interactions:
16
16
  code: 404
17
17
  message: Not Found
18
18
  headers:
19
+ Connection:
20
+ - keep-alive
21
+ Content-Length:
22
+ - '149599'
19
23
  Server:
20
24
  - nginx
21
25
  Content-Type:
22
26
  - text/html; charset=UTF-8
23
27
  Expires:
24
- - Mon, 27 Mar 2017 09:01:09 GMT
28
+ - Tue, 27 Oct 2020 06:23:03 GMT
25
29
  X-Frame-Options:
26
30
  - sameorigin
31
+ X-Bapp-Server:
32
+ - pweb-v4875-hmmhw
27
33
  Via:
28
34
  - 1.1 varnish
29
- - 1.1 varnish
30
- - 1.1 varnish
35
+ - 1.1 varnish, 1.1 varnish
31
36
  Cache-Control:
32
37
  - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
33
38
  X-Varnish-Cache:
34
39
  - '0'
35
40
  X-Vserver:
36
- - dfvimeowebproxy3
37
- Fastly-Debug-Digest:
38
- - 5c8cad581c94a8a0faf793c8c4898a0848cc94c3ce18c6c8e7834c3408b6d12c
39
- Content-Length:
40
- - '57889'
41
+ - infra-webproxy-a-3
42
+ X-Vimeo-Dc:
43
+ - ge
41
44
  Accept-Ranges:
42
45
  - bytes
43
46
  Date:
44
- - Mon, 27 Mar 2017 21:01:09 GMT
47
+ - Tue, 27 Oct 2020 18:23:04 GMT
45
48
  Age:
46
49
  - '0'
47
- Connection:
48
- - keep-alive
49
50
  X-Served-By:
50
- - cache-iad2141-IAD, cache-lax8620-LAX
51
+ - cache-bwi5148-BWI, cache-cwb20527-CWB
51
52
  X-Cache:
52
53
  - MISS, MISS
53
54
  X-Cache-Hits:
54
55
  - 0, 0
55
56
  X-Timer:
56
- - S1490648469.612213,VS0,VE314
57
+ - S1603822984.789020,VS0,VE306
57
58
  Vary:
58
59
  - Accept-Encoding
59
60
  body:
60
61
  encoding: UTF-8
61
62
  string: ''
62
- http_version:
63
- recorded_at: Mon, 27 Mar 2017 21:01:09 GMT
63
+ http_version:
64
+ recorded_at: Tue, 27 Oct 2020 18:23:04 GMT
64
65
  - request:
65
66
  method: get
66
67
  uri: https://vimeo.com/0812455
@@ -79,50 +80,50 @@ http_interactions:
79
80
  code: 404
80
81
  message: Not Found
81
82
  headers:
83
+ Connection:
84
+ - keep-alive
85
+ Content-Length:
86
+ - '35220'
82
87
  Server:
83
88
  - nginx
84
89
  Content-Type:
85
90
  - text/html; charset=UTF-8
86
91
  Expires:
87
- - Mon, 27 Mar 2017 09:01:10 GMT
92
+ - Tue, 27 Oct 2020 06:23:04 GMT
88
93
  X-Frame-Options:
89
94
  - sameorigin
95
+ X-Bapp-Server:
96
+ - pweb-v4874-gk7wh
90
97
  Via:
91
- - 1.1 varnish
92
- - 1.1 varnish
93
- - 1.1 varnish
98
+ - 1.1 varnish, 1.1 varnish, 1.1 varnish
94
99
  Cache-Control:
95
100
  - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
96
101
  X-Varnish-Cache:
97
102
  - '0'
98
103
  X-Vserver:
99
- - dfvimeowebproxy3
100
- Fastly-Debug-Digest:
101
- - 5c8cad581c94a8a0faf793c8c4898a0848cc94c3ce18c6c8e7834c3408b6d12c
102
- Content-Length:
103
- - '15264'
104
+ - infra-webproxy-a-3
105
+ X-Vimeo-Dc:
106
+ - ge
104
107
  Accept-Ranges:
105
108
  - bytes
106
109
  Date:
107
- - Mon, 27 Mar 2017 21:01:10 GMT
110
+ - Tue, 27 Oct 2020 18:23:04 GMT
108
111
  Age:
109
112
  - '0'
110
- Connection:
111
- - keep-alive
112
113
  X-Served-By:
113
- - cache-iad2150-IAD, cache-lax8630-LAX
114
+ - cache-bwi5141-BWI, cache-cwb20520-CWB
114
115
  X-Cache:
115
116
  - MISS, MISS
116
117
  X-Cache-Hits:
117
118
  - 0, 0
118
119
  X-Timer:
119
- - S1490648469.956719,VS0,VE433
120
+ - S1603822984.389056,VS0,VE269
120
121
  Vary:
121
122
  - Accept-Encoding
122
123
  body:
123
124
  encoding: ASCII-8BIT
124
125
  string: !binary |-
125
- PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KIDxoZWFkPgogPG1ldGEgY2hhcnNldD0idXRmLTgiPgoKCiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTEuMCx1c2VyLXNjYWxhYmxlPW5vIj4KIAo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Ii8vcGxheWVyLnZpbWVvLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9pLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9mLnZpbWVvY2RuLmNvbSI+CjxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE5ODg0MDI4OTYzIj4KCgogIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJTb3JyeSwgd2UgY291bGRuJnJzcXVvO3QgZmluZCB0aGF0IHBhZ2UiPgogIDxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0ibm9pbmRleCI+CgoKCgoKIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIgaHJlZj0iaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9mYXZpY29uL21haW4tdG91Y2hfMTgwIj4KCjxsaW5rIHJlbD0ibWFzay1pY29uIiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N2Zy9sZWdhY3lfdmlld19zdXBwb3J0L2lyaXNfaWNvbl92XzY0LnN2ZyIgY29sb3I9IiMxNzI3MmUiPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vaW1hZ2VzX3Y2L2Zhdmljb24uaWNvIiBkYXRhLXBsYXk9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9wbGF5XzMyIiBkYXRhLXBhdXNlPSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vcGF1c2VfMzIiPgoKPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi1UaWxlSW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9tYWluLXRvdWNoXzE0NCI+CjxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tVGlsZUNvbG9yIiBjb250ZW50PSIjMDBhZGVmIj4KCjxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvc2VhcmNoL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iVmltZW8gc2VhcmNoIj4KPGxpbmsgcmVsPSJsb2dvIiB0eXBlPSJpbWFnZS9zdmciIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vbG9nby5zdmciPgogPHRpdGxlPlZpbWVVaE9oPC90aXRsZT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9nbG9iYWwvaWNvbl9mb250cy5taW4uY3NzP0RFViI+CgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N0eWxlcy9jc3Nfb3B0L2V4Y2VwdGlvbl9jb21iaW5lZC5taW4uY3NzPzcwMmFiZWMxIj4KCgoKIDxzY3JpcHQ+CiAgCiAgdmFyIHBsYXllckFzc2V0VXJscyA9IHsianMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzIuNTMuMTBcL2pzXC9wbGF5ZXIuanMiLCJtb29nIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC9mbGFzaFwvbW9vZ2Fsb29wXC82LjQuNVwvbW9vZ2Fsb29wLnN3ZiIsImNocm9tZWxlc3NfY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8yLjUzLjEwXC9jc3NcL2Nocm9tZWxlc3MuY3NzIiwiY2hyb21lbGVzc19qcyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvMi41My4xMFwvanNcL2Nocm9tZWxlc3MuanMiLCJtb29nX2pzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8yLjUzLjEwXC9qc1wvbW9vZ2Fsb29wLmpzIiwiY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8yLjUzLjEwXC9jc3NcL3BsYXllci5jc3MiLCJwbGF5ZXJfdXJsIjoicGxheWVyLnZpbWVvLmNvbSJ9OwoKICB2YXIgX2V4dGVuZCA9IGZ1bmN0aW9uKCl7Zm9yKHZhciByPWFyZ3VtZW50c1swXSxuPTEsZT1hcmd1bWVudHMubGVuZ3RoO2U+bjtuKyspe3ZhciB0PWFyZ3VtZW50c1tuXTtmb3IodmFyIGEgaW4gdCl0Lmhhc093blByb3BlcnR5KGEpJiYoclthXT10W2FdKX1yZXR1cm4gcn07CgogIHdpbmRvdyA9IF9leHRlbmQod2luZG93LCB7InZpbWVvX2VzaSI6eyJjb25maWciOnsiYXV0b2NvbXBsZXRlX2VuYWJsZWQiOnRydWV9fSwiZ2xvYmFsX25vdGlmaWNhdGlvbnMiOltdfSk7Cjwvc2NyaXB0PgoKIDxzdHlsZSBpZD0iZXNpX3JpYmJvbiI+CiAuZXNpX3JpYmJvbiB7CiBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB3aWR0aCUzRCUyMjUwMCUyMiUzRSUzQ3JlY3QlMjB4JTNEJTIyMCUyMiUyMHdpZHRoJTNEJTIyMzQlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjMyOGExZDglMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjM0JTIyJTIwd2lkdGglM0QlMjI1NSUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyMzI0OGJjNyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyODklMjIlMjB3aWR0aCUzRCUyMjMlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjMxZTM5NTUlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjkyJTIyJTIwd2lkdGglM0QlMjIxNTclMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjMyZjUxMzIlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjI0OSUyMiUyMHdpZHRoJTNEJTIyMzAlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjM0MTY4MjglMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjI3OSUyMiUyMHdpZHRoJTNEJTIyNTQlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjM3ZWFhMjklMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjMzMyUyMiUyMHdpZHRoJTNEJTIyMTElMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjNkY2JkNDIlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjM0NCUyMiUyMHdpZHRoJTNEJTIyNCUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2RjYWQyNyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyMzQ4JTIyJTIwd2lkdGglM0QlMjIyMyUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2UzOWEyMyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyMzcxJTIyJTIwd2lkdGglM0QlMjIzNSUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2NjNTU0YyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyNDA2JTIyJTIwd2lkdGglM0QlMjIxOCUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2NhNDczZiUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyNDI0JTIyJTIwd2lkdGglM0QlMjI2JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzYTcyODM0JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjI0MzAlMjIlMjB3aWR0aCUzRCUyMjQ2JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzNzM1Njc1JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjI0NzYlMjIlMjB3aWR0aCUzRCUyMjEyJTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzNjUzZTY2JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjI0ODglMjIlMjB3aWR0aCUzRCUyMjEyJTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzM2IzMTViJTIyJTJGJTNFJTNDJTJGc3ZnJTNFJTBBKSB0b3AgbGVmdC81MDBweCAxMDAlIHJlcGVhdC14ICFpbXBvcnRhbnQ7CiB9CiA8L3N0eWxlPgogCiA8c2NyaXB0PgogdmFyIGFibGluY29sbl9jb25maWcgPSBhYmxpbmNvbG5fY29uZmlnIHx8IHt9OwogYWJsaW5jb2xuX2NvbmZpZy50ZXN0cyA9IHsiREZQQWRDb2hvcnRzIjp7ImlkIjo2OSwibmFtZSI6IkRGUEFkQ29ob3J0cyIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6bnVsbCwiZXhwZXJpbWVudHMiOltdfSwiRXhwbG9yZSI6eyJpZCI6NjQsIm5hbWUiOiJFeHBsb3JlIiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjoiXC8iLCJleHBlcmltZW50cyI6W119LCJUb3BOYXZBQiI6eyJpZCI6NjcsIm5hbWUiOiJUb3BOYXZBQiIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOltdfSwiVG9wTmF2Q29weVRlc3QiOnsiaWQiOjc3LCJuYW1lIjoiVG9wTmF2Q29weVRlc3QiLCJidWNrZXRzIjoxMDAwLCJpbnB1dCI6InZ1aWQiLCJ1cmwiOiJcL2Fib3V0IiwiZXhwZXJpbWVudHMiOltdfSwiVG9wTmF2Lkhvc3RWaWRlb3NMaW5rIjp7ImlkIjoxMDMsIm5hbWUiOiJUb3BOYXYuSG9zdFZpZGVvc0xpbmsiLCJidWNrZXRzIjoxMDAwLCJpbnB1dCI6InZ1aWQiLCJ1cmwiOm51bGwsImV4cGVyaW1lbnRzIjpbXX19OwogPC9zY3JpcHQ+CgoKIAogPHNjcmlwdD4KIHZhciBnb29nbGV0YWcgPSBnb29nbGV0YWcgfHwge30sCiBncHRhZHNsb3RzID0gW10sCiBsYW5ndWFnZSwKIGhhc191cGxvYWRlZCwKIGNvaG9ydDsKIGdvb2dsZXRhZy5jbWQgPSBnb29nbGV0YWcuY21kIHx8IFtdOwoKIChmdW5jdGlvbigpIHsKIHZhciBnYWRzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksCiB1c2VTU0wgPSAnaHR0cHM6JyA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCwKIG5vZGU7CiBnYWRzLmFzeW5jID0gdHJ1ZTsKIGdhZHMudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogZ2Fkcy5zcmMgPSAodXNlU1NMID8gJ2h0dHBzOicgOiAnaHR0cDonKSArICcvL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vdGFnL2pzL2dwdC5qcyc7CiBub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdOwogbm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnYWRzLCBub2RlKTsKIH0pKCk7CgogZ29vZ2xldGFnLmNtZC5wdXNoKGZ1bmN0aW9uKCkgewogCiAgbGFuZ3VhZ2UgPSBkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopbGFuZ3VhZ2VccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKTsKIGhhc191cGxvYWRlZCA9IChkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopaGFzX3VwbG9hZGVkXHMqXD1ccyooW147XSopLiokKXxeLiokLywgIiQxIikpID8gJ1knIDogJ04nOwogCiBjb2hvcnQgPSAod2luZG93LkFCTGluY29sbikgPyB3aW5kb3cuQUJMaW5jb2xuLmdldFRlc3QoJ0RGUEFkQ29ob3J0cycpLmdldCgnY29ob3J0JywgJ0EnKSA6ICdBJzsKCiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdsYW5ndWFnZScsIFtsYW5ndWFnZV0pOwogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnaXNfdXBsb2FkZXInLCBbaGFzX3VwbG9hZGVkXSk7CiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnQnLCBbY29ob3J0XSk7CiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnRfYScsIFsoY29ob3J0ID09PSAnQScpID8gJ1knIDogJ04nXSk7CiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnRfYicsIFsoY29ob3J0ID09PSAnQicpID8gJ1knIDogJ04nXSk7CgogIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ3NlYycsIFsnZmFsc2UnXSk7CgogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnbG9nZ2VkX2luJywgWydmYWxzZSddKTsKCiAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygncnB2JywgKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxMDApKzEpLnRvU3RyaW5nKCkpOwoKIGdvb2dsZXRhZy5wdWJhZHMoKS5lbmFibGVBc3luY1JlbmRlcmluZygpOwogZ29vZ2xldGFnLmVuYWJsZVNlcnZpY2VzKCk7CiB9KTsKIDwvc2NyaXB0PgoKPHNjcmlwdD4KIWZ1bmN0aW9uKCl7dmFyIGU9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OmV4cG9ydHMscj1bXTtpZihlLnBlcmZvcm1hbmNlfHwoZS5wZXJmb3JtYW5jZT17fSksZS5wZXJmb3JtYW5jZS5ub3d8fChlLnBlcmZvcm1hbmNlLm5vdz1wZXJmb3JtYW5jZS5ub3d8fHBlcmZvcm1hbmNlLndlYmtpdE5vd3x8cGVyZm9ybWFuY2UubXNOb3d8fHBlcmZvcm1hbmNlLm1vek5vdyksIWUucGVyZm9ybWFuY2Uubm93KXt2YXIgbj1EYXRlLm5vdz9EYXRlLm5vdygpOituZXcgRGF0ZTtwZXJmb3JtYW5jZS50aW1pbmcmJnBlcmZvcm1hbmNlLnRpbWluZyYmKG49cGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydCksZS5wZXJmb3JtYW5jZS5ub3c9ZnVuY3Rpb24oKXt2YXIgZT1EYXRlLm5vdz9EYXRlLm5vdygpOituZXcgRGF0ZTtyZXR1cm4gZS1ufX1lLnBlcmZvcm1hbmNlLm1hcmt8fChlLnBlcmZvcm1hbmNlLm1hcms9ZS5wZXJmb3JtYW5jZS53ZWJraXRNYXJrP2UucGVyZm9ybWFuY2Uud2Via2l0TWFyazpmdW5jdGlvbihuKXtyLmZvckVhY2goZnVuY3Rpb24oZSxyLGEpe2UubmFtZT09PW4mJmEuc3BsaWNlKHIsMSl9KSxyLnB1c2goe25hbWU6bixlbnRyeVR5cGU6Im1hcmsiLHN0YXJ0VGltZTplLnBlcmZvcm1hbmNlLm5vdygpLGR1cmF0aW9uOjB9KX0pLGUucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZXx8KGUucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZT1lLnBlcmZvcm1hbmNlLndlYmtpdEdldEVudHJpZXNCeVR5cGU/ZS5wZXJmb3JtYW5jZS53ZWJraXRHZXRFbnRyaWVzQnlUeXBlOmZ1bmN0aW9uKGUpe3ZhciBuPWZ1bmN0aW9uKHIpe3JldHVybiByLmVudHJ5VHlwZT09PWV9O3JldHVybi0xIT09WyJtYXJrIiwibWVhc3VyZSJdLmluZGV4T2YoZSk/ci5maWx0ZXIobik6dm9pZCAwfSksZS5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lfHwoZS5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lPWUucGVyZm9ybWFuY2Uud2Via2l0R2V0RW50cmllc0J5TmFtZT9lLnBlcmZvcm1hbmNlLndlYmtpdEdldEVudHJpZXNCeU5hbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHIuZmlsdGVyKGZ1bmN0aW9uKHIpe3JldHVybiByLm5hbWU9PT1lfSl9KSxlLnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXN8fChlLnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXM9ZS5wZXJmb3JtYW5jZS53ZWJraXRDbGVhck1lYXN1cmVzP2UucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJNZWFzdXJlczpmdW5jdGlvbigpe3IuZm9yRWFjaChmdW5jdGlvbihlLHIsbil7Im1lYXN1cmUiPT09ZS5lbnRyeVR5cGUmJm4uc3BsaWNlKHIsMSl9KSxyPVtdfSksZS5wZXJmb3JtYW5jZS5jbGVhck1hcmtzfHwoZS5wZXJmb3JtYW5jZS5jbGVhck1hcmtzPWUucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJNYXJrcz9lLnBlcmZvcm1hbmNlLndlYmtpdENsZWFyTWFya3M6ZnVuY3Rpb24oKXtyLmZvckVhY2goZnVuY3Rpb24oZSxyLG4peyJtYXJrIj09PWUuZW50cnlUeXBlJiZuLnNwbGljZShyLDEpfSkscj1bXX0pLGUucGVyZm9ybWFuY2UubWVhc3VyZXx8KGUucGVyZm9ybWFuY2UubWVhc3VyZT1lLnBlcmZvcm1hbmNlLndlYmtpdE1lYXN1cmU/ZS5wZXJmb3JtYW5jZS53ZWJraXRNZWFzdXJlOmZ1bmN0aW9uKGUsbixhKXt2YXIgdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHIubmFtZT09PWUmJiJtYXJrIj09PXIuZW50cnlUeXBlfX0sbz1yLmZpbHRlcih0KG4pKVswXSxtPXIuZmlsdGVyKHQoYSkpWzBdLGk9bS5zdGFydFRpbWUtby5zdGFydFRpbWU7ci5wdXNoKHtuYW1lOmUsZW50cnlUeXBlOiJtZWFzdXJlIixzdGFydFRpbWU6by5zdGFydFRpbWUsZHVyYXRpb246aX0pfSl9KCksd2luZG93Lm1hcmtVc2VyVGltZT1mdW5jdGlvbihlKXt2YXIgcj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxmdW5jdGlvbihlKXtzZXRUaW1lb3V0KGUsMCl9O3IoZnVuY3Rpb24oKXt3aW5kb3cucGVyZm9ybWFuY2UubWFyayhlKSx3aW5kb3cuY29uc29sZSYmY29uc29sZS50aW1lU3RhbXAmJmNvbnNvbGUudGltZVN0YW1wKGUpfSl9OwoKKGZ1bmN0aW9uKCkgewogd2luZG93Lm1hcmtVc2VyVGltZSA9IGZ1bmN0aW9uKGxhYmVsKSB7CiB3aW5kb3cuX2d0bSA9IHdpbmRvdy5fZ3RtIHx8IFtdOwoKIC8vIEV4aXQgZWFybHkgaWYgdGhlIGJyb3dzZXIgY2FuJ3QgaGFuZGxlIG5ldyB0aGluZ3MKIGlmICh0eXBlb2YgcGVyZm9ybWFuY2UgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBwZXJmb3JtYW5jZS5tYXJrICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBwZXJmb3JtYW5jZS5jbGVhck1hcmtzICE9PSAnZnVuY3Rpb24nKSB7CiByZXR1cm47CiB9CgogdmFyIHVpZCA9IHBhcnNlSW50KE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKS5zcGxpdCgnMC4nKVsxXSkgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSwKIG1hcmtfbmFtZSA9IGxhYmVsICsgJ18nICsgdWlkLAogcGFydHMgPSBsYWJlbC5zcGxpdCgnfCcpLAogY2F0ZWdvcnkgPSBwYXJ0c1swXSwKIHZhcmlhYmxlID0gcGFydHNbMV0sCiBsYWJlbCA9IHBhcnRzWzJdLAogbWFya190aW1lLAogbWFya19lbnRyaWVzOwoKIHBlcmZvcm1hbmNlLm1hcmsobWFya19uYW1lKTsKIG1hcmtfZW50cmllcyA9IHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUobWFya19uYW1lKTsKCiBpZiAobWFya19lbnRyaWVzLmxlbmd0aCkgewogbWFya190aW1lID0gbWFya19lbnRyaWVzWzBdLnN0YXJ0VGltZTsKIHdpbmRvdy5fZ3RtLnB1c2goewogJ2V2ZW50JzogJ3BlcmZvcm1hbmNlX3RpbWluZycsCiAncGVyZm9ybWFuY2VfdGltaW5nLmNhdGVnb3J5JzogY2F0ZWdvcnksCiAncGVyZm9ybWFuY2VfdGltaW5nLnZhcmlhYmxlJzogdmFyaWFibGUsCiAncGVyZm9ybWFuY2VfdGltaW5nLnRpbWUnOiBtYXJrX3RpbWUgLyAxMDAwLAogJ3BlcmZvcm1hbmNlX3RpbWluZy5sYWJlbCc6IGxhYmVsCiB9KTsKIH0KIH07Cn0oKSk7Cjwvc2NyaXB0PgoKIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9hYmxpbmNvbG5fY29tYmluZWQubWluLmpzPzQ2NDIzMGYwIj48L3NjcmlwdD4KCgoKIDwvaGVhZD4KIDxib2R5IGNsYXNzPSJvbnNpdGUgIj4KIDxkaXYgaWQ9IndyYXAiIGNsYXNzPSJvdXRlcl93cmFwIj4KIAogPGRpdiBjbGFzcz0iYm9keV9yaWJib24gZXNpX3JpYmJvbiI+PC9kaXY+CgogCiAKPHNjcmlwdD4KIHdpbmRvdy52aW1lbyA9IHdpbmRvdy52aW1lbyB8fCB7fTsKPC9zY3JpcHQ+CjxkaXYgaWQ9InRvcG5hdl9kZXNrdG9wIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3AgIiByb2xlPSJiYW5uZXIiPgogPGRpdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfd3JhcHBlciI+CgogICA8YSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbG9nbyIgaHJlZj0iLy92aW1lby5jb20iIGFsdD0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiB0aXRsZT0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiBhcmlhLWxhYmVsPSJHbyB0byBWaW1lbyBob21lIHBhZ2UiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnZpbWVvX2hvbWUiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2hvbWVfY2xpY2siPgogIDxzdmcgYWx0PSJWaW1lbyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI0MCI+PHBhdGggZD0iTTIyLjQ0OCAxNC41NzVjLS4xMDQgMi4xNy0xLjYxOCA1LjE0Ni00LjU0NCA4LjkxMi0zLjAzIDMuOTQyLTUuNTkgNS45MTItNy42ODYgNS45MTItMS4yOTcgMC0yLjM5Ny0xLjIwNC0zLjMtMy42LS42LTIuMi0xLjIwMi00LjM5OC0xLjc5NC02LjU5OC0uNjY0LTIuMzk2LTEuMzgtMy42LTIuMTQ3LTMuNi0uMTY2IDAtLjc0Ny4zNTQtMS43NTMgMS4wNWwtMS4wNDgtMS4zNWMxLjEtLjk2NSAyLjE5LTEuOTMgMy4yNTctMi45MDUgMS40NjMtMS4yNjUgMi41NzMtMS45NCAzLjMtMi4wMDIgMS43MzItLjE2NiAyLjggMS4wMTcgMy4yMDUgMy41NTguNDM1IDIuNzQuNzM2IDQuNDQuOTAyIDUuMTE1LjQ5OCAyLjI3IDEuMDQ4IDMuNDAyIDEuNjUgMy40MDIuNDY2IDAgMS4xNzItLjczNyAyLjEwNS0yLjIxLjkzNC0xLjQ3MyAxLjQzMi0yLjU5MyAxLjUwNC0zLjM3LjEzMy0xLjI3Ny0uMzY1LTEuOTEtMS41MDYtMS45MS0uNTMgMC0xLjA4LjEyNS0xLjY1LjM2NCAxLjEtMy41OSAzLjE4Ni01LjMzMyA2LjI3Ny01LjIzIDIuMjczLjA3MyAzLjM1IDEuNTU2IDMuMjI3IDQuNDZtMTMuNzU1IDcuMDM0Yy0uOTMzIDEuNzY0LTIuMjIgMy4zNy0zLjg2IDQuODAzLTIuMjQgMS45My00LjQ3IDIuOTA1LTYuNyAyLjkwNS0xLjAzNy4wMDItMS44MjYtLjMzLTIuMzc2LS45OTQtLjU1LS42NjMtLjgxLTEuNTM1LS43NzctMi42MDMuMDMtMS4xLjM3Mi0yLjggMS4wMjUtNS4xMDQuNjU0LTIuMzAzLjk3Ni0zLjUzNy45NzYtMy43MDMgMC0uODYtLjMtMS4yOTctLjkwMi0xLjI5Ny0uMTk4IDAtLjc3LjM1My0xLjcwMiAxLjA0OGwtMS4xNTItMS4zNWMxLjA3LS45NjIgMi4xMzctMS45MjcgMy4yMDYtMi45MDIgMS40My0xLjI2NiAyLjUtMS45NCAzLjIwNS0yLjAwMiAxLjEtLjEwMyAxLjkxLjIzIDIuNDI4Ljk3Ni41MTguNzQ3LjcwNSAxLjcyMi41OCAyLjkxNS0uNDM1IDIuMDM0LS45MDIgNC42MDctMS40IDcuNzMtLjAzIDEuNDMuNDg4IDIuMTQ2IDEuNTU2IDIuMTQ2LjQ2NyAwIDEuMjk3LS40OTggMi41LTEuNDgzLjk5Ni0uODIgMS44MTUtMS41OTggMi40NS0yLjMyNGwuOTQyIDEuMjQ0bS00LjM1Ny0xNy44Yy0uMDMuODMtLjQ0NiAxLjYyOC0xLjI1NSAyLjM5NS0uOS44Ni0xLjk3IDEuMjk2LTMuMjA0IDEuMjk2LTEuOSAwLTIuODIyLS44My0yLjc1LTIuNDkuMDMyLS44Ni41NC0xLjY5IDEuNTI2LTIuNDkuOTg1LS43OTcgMi4wNzQtMS4xOSAzLjI3OC0xLjE5LjcwNSAwIDEuMjg2LjI3IDEuNzUzLjgyLjQ2Ny41NC42ODQgMS4xLjY1MyAxLjY2bTM1LjYxMiAxNy44Yy0uOTMzIDEuNzYzLTIuMjIgMy4zNy0zLjg2IDQuODAyLTIuMjQgMS45My00LjQ3IDIuOTA0LTYuNyAyLjkwNC0yLjE2OC4wMDItMy4yMTYtMS4yMDItMy4xNTMtMy41OTguMDMtMS4wNy4yMzgtMi4zNTUuNjIyLTMuODUuMzg0LTEuNTAzLjU5LTIuNjY1LjYyMy0zLjUwNS4wMy0xLjI2NS0uMzUzLTEuODk4LTEuMTUyLTEuODk4LS44NyAwLTEuOTEgMS4wMzYtMy4xMTIgMy4xLTEuMjc2IDIuMTY4LTEuOTYgNC4yNzQtMi4wNjQgNi4zMDgtLjA3MyAxLjQzLjA3MiAyLjU0LjQyNSAzLjI5OC0yLjMyNC4wNjQtMy45NjMtLjMyLTQuODg2LTEuMTUtLjgzLS43MzctMS4yMTItMS45NS0xLjE1LTMuNjUyLjAzLTEuMDY4LjE5OC0yLjEzNy40ODgtMy4yMDUuMjktMS4wNy40NTctMi4wMjMuNDg4LTIuODUzLjA2Mi0xLjIzNC0uMzg0LTEuODU3LTEuMzUtMS44NTctLjg0IDAtMS43NC45NTUtMi43MDYgMi44NTMtLjk2NiAxLjktMS41MDUgMy44OS0xLjYxIDUuOTU2LS4wNiAxLjg2Ny4wNTMgMy4xNzQuMzY0IDMuOS0yLjI5My4wNjItMy45Mi0uNDE1LTQuODc2LTEuNDUyLS43OTgtLjg2LTEuMTYtMi4xOC0xLjEtMy45NDIuMDMyLS44Ni4xODgtMi4wNzUuNDU3LTMuNjIuMjgtMS41NDYuNDI1LTIuNzUuNDU3LTMuNjIuMDYyLS42MDMtLjA4My0uOTAzLS40NDYtLjkwMy0uMTk3IDAtLjc2OC4zNC0xLjcwMiAxLjAxNWwtMS4yMDMtMS4zNDhjLjE2OC0uMTM1IDEuMjE2LTEuMSAzLjE1Ni0yLjkwNSAxLjQtMS4yOTcgMi4zNTQtMS45NyAyLjg1Mi0yLjAwMi44NzItLjA3MyAxLjU2Ny4yOSAyLjEwNiAxLjA4LjUzLjc4Ny44IDEuNjkuOCAyLjcyNyAwIC4zMzItLjAzMi42NTQtLjEwNS45NTQuNDk3LS43NjYgMS4wOC0xLjQzIDEuNzUyLTIgMS41MzctMS4zNCAzLjI2LTIuMDg2IDUuMTU3LTIuMjUyIDEuNjQtLjEzNSAyLjguMjUgMy41MDUgMS4xNTIuNTcuNzM2LjgzIDEuNzg0LjggMy4xNTMuMjM3LS4xOTguNDg2LS40MTYuNzQ2LS42NTQuNzY3LS45MDMgMS41MTQtMS42MiAyLjI1LTIuMTQ4IDEuMjM1LS45MDIgMi41Mi0xLjQgMy44Ni0xLjUwNCAxLjU5Ny0uMTM1IDIuNzUuMjUgMy40NTQgMS4xNTIuNjAyLjcyNi44NyAxLjc3NC44IDMuMTQzLS4wMzIuOTMzLS4yNiAyLjI4LS42NzUgNC4wNjUtLjQxNiAxLjc3My0uNjI0IDIuOC0uNjI0IDMuMDctLjAzLjY5NS4wMyAxLjE4Mi4xOTcgMS40NDIuMTY2LjI3LjU3LjM5NCAxLjIwMy4zOTQuNDY3IDAgMS4yOTctLjQ5NyAyLjUtMS40ODIuOTk2LS44MiAxLjgxNi0xLjU5OCAyLjQ1LTIuMzI0bC45NjMgMS4yNTRtMTguNzY1LS4wNTJjLS45NjUgMS41OTgtMi44NzQgMy4xOTUtNS43MDYgNC43OTMtMy41MzggMi4wMzItNy4xMjcgMy4wNS0xMC43NTggMy4wNS0yLjcwNiAwLTQuNjM2LS45MDQtNS44MDgtMi43LS44My0xLjIzMy0xLjIzNC0yLjY5Ni0xLjIwMy00LjQwNy4wMy0yLjY5OCAxLjIzNC01LjI3IDMuNi03LjcxIDIuNjAzLTIuNjY1IDUuNjc0LTQuMDAzIDkuMjEtNC4wMDMgMy4yNyAwIDUgMS4zMjggNS4yMDggMy45OTQuMTM1IDEuNzAyLS43OTggMy40NDUtMi44IDUuMjQtMi4xMzcgMS45Ni00LjgyNCAzLjIxNS04LjA2IDMuNzQ0LjYuODMgMS41MDQgMS4yNDUgMi43MDcgMS4yNDUgMi4zOTYgMCA1LjAyLS42MTMgNy44NjMtMS44MzcgMi4wMzMtLjg2IDMuNjMtMS43NTMgNC44MDMtMi42NzZsLjk0NSAxLjI2NW0tMTEuMzYtNS4yMjhjLjAzMi0uODkyLS4zMy0xLjM1LTEuMS0xLjM1LS45OTQgMC0yLjAxLjY4Ni0zLjA0OCAyLjA2Ni0xLjAzOCAxLjM4LTEuNTY3IDIuNjk3LTEuNTk4IDMuOTYyLS4wMiAwLS4wMi4yMTggMCAuNjQzIDEuNjMtLjYgMy4wNS0xLjUxNCA0LjI0Mi0yLjczOC45NjYtMS4wNTggMS40NjMtMS45MiAxLjUwNS0yLjU4M20yNC45NDYgMS44NjhjLS4xMzUgMy4wNzItMS4yNjUgNS43MTctMy40MDIgNy45NDctMi4xMzUgMi4yMy00Ljc5IDMuMzUtNy45NTUgMy4zNS0yLjYzNSAwLTQuNjM3LS44NS02LjAwNi0yLjU1LS45OTctMS4yNjctMS41NTctMi44NTQtMS42NS00Ljc1Mi0uMTY2LTIuODYzLjg2LTUuNDk4IDMuMS03Ljg5NCAyLjQwOC0yLjY2NSA1LjQyNy0zLjk5MyA5LjA1Ny0zLjk5MyAyLjMzNCAwIDQuMDk4Ljc4OCA1LjMgMi4zNDQgMS4xMzIgMS40NDMgMS42NSAzLjI5IDEuNTU3IDUuNTVtLTUuNjY0LS4xODVjLjAzLS45MDMtLjA5NC0xLjczMy0uMzc0LTIuNDgtLjI4LS43NDctLjY5NS0xLjEzLTEuMjI0LTEuMTMtMS43MDIgMC0zLjEwMi45MjMtNC4yMDIgMi43Ni0uOTMzIDEuNTAzLTEuNDMgMy4xMS0xLjUwNCA0LjgxMi0uMDMuODQuMTE0IDEuNTc3LjQ0NiAyLjIxLjM2NC43MzYuODgyIDEuMSAxLjU1NiAxLjEgMS41MDUgMCAyLjc5LS44ODMgMy44Ni0yLjY1Ni44OTItMS40NzIgMS4zOC0zLjAwOCAxLjQ0LTQuNjE1aC4wMDJ6IiBmaWxsPSIjMTEyMjMzIi8+PC9zdmc+CiAgPC9hPgogCiAgIDxuYXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnUiIHJvbGU9Im5hdmlnYXRpb24iIGFyaWEtbGFiZWw9Ik1haW4gbWVudSI+CiA8dWwgY2xhc3M9InRvcG5hdl9tZW51X2Rlc2t0b3BfbWFpbiIgcm9sZT0ibWVudWJhciI+CgogIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0iam9pbiI+CiA8YSBjbGFzcz0idG9wbmF2X21lbnVfam9pbiBqcy10b3BuYXZfbWVudV9hdXRoIiBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO3ZpbWVvLk1vZGFsLmNyZWF0ZSh7c2l6ZToneHNtYWxsJyxjb250ZW50Oicvam9pbj9tb2RhbD1uZXcnfSkiIGRhdGEtZ2EtZXZlbnQtY2xpY2s9InRvcF9uYXZ8am9pbiIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6am9pbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfam9pbl9jbGljayIgaHJlZj0iLy92aW1lby5jb20vam9pbiIgdGl0bGU9IkJlY29tZSBhIFZpbWVvIG1lbWJlciIgdGFiaW5kZXg9IjAiIHJlbD0idG9nZ2xlIiByb2xlPSJidXR0b24iIGFyaWEtb3ducz0idG9wbmF2X2pvaW4iPgogSm9pbiA8L2E+CgogICA8L2xpPgogCiAKIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJsb2dpbiI+CiA8YSBjbGFzcz0ianMtdG9wbmF2X21lbnVfYXV0aCIgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTt2aW1lby5TZXNzaW9uLmNyZWF0ZSgncmVnJywgbnVsbCwgdHJ1ZSk7IiBkYXRhLWdhLWV2ZW50LWNsaWNrPSJ0b3BfbmF2fGxvZ2luIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpsb2dpbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfbG9naW5fY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2xvZ19pbiIgdGl0bGU9IkxvZyBpbiB0byB5b3VyIGFjY291bnQiIHRhYmluZGV4PSIwIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9sb2dpbiI+CiBMb2cgaW4gPC9hPgoKICAgPC9saT4KIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0iY3JlYXRlIj4KIDxhIGNsYXNzPSJqcy10b3BuYXYtY3JlYXRlIHRvcG5hdl9oYXNfZHJvcGRvd24gdG9wbmF2X2ljb25fY2hldnJvbl9hIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDptYW5hZ2VfdmlkZW9zfGtleXdvcmQ6aG9zdF92aWRlb3MiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2NyZWF0ZV9jbGljayIgaHJlZj0iLy92aW1lby5jb20vY3JlYXRlIiB0aXRsZT0iIiB0YWJpbmRleD0iMCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfY3JlYXRlIj4KIEhvc3QgdmlkZW9zIDwvYT4KCiAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfY3JlYXRlIj4KICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpob3N0X3ZpZGVvc3xrZXl3b3JkOmNvbXBhcmVfcGxhbnMiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2NyZWF0ZV9tZW1iZXJzaGlwX29wdGlvbnNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3VwZ3JhZGUiIHRpdGxlPSJVcGdyYWRlIG9yIGNvbXBhcmUgb3VyIHBsYW5zIj5Db21wYXJlIHBsYW5zPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aG9zdF92aWRlb3N8a2V5d29yZDpwcm9mZXNzaW9uYWxzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfbWVtYmVyc2hpcF9vcHRpb25zX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9wcm9mZXNzaW9uYWxzIiB0aXRsZT0iR2V0IHByb2Zlc3Npb25hbCB2aWRlbyBob3N0aW5nIHRvb2xzIj5Qcm9mZXNzaW9uYWxzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aG9zdF92aWRlb3N8a2V5d29yZDpidXNpbmVzc2VzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfbWVtYmVyc2hpcF9vcHRpb25zX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9idXNpbmVzcyIgdGl0bGU9IkdldCBwb3dlcmZ1bCB2aWRlbyBtYXJrZXRpbmcgdG9vbHMiPkJ1c2luZXNzZXM8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpob3N0X3ZpZGVvc3xrZXl3b3JkOnZpZGVvX2xvdmVycyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfY3JlYXRlX21lbWJlcnNoaXBfb3B0aW9uc19jbGljayIgaHJlZj0iLy92aW1lby5jb20vZXZlcnlvbmUiIHRpdGxlPSJVcGxvYWQgYW5kIHNoYXJlIHlvdXIgdmlkZW9zIj5WaWRlbyBsb3ZlcnM8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpob3N0X3ZpZGVvc3xrZXl3b3JkOnZpZGVvX3NjaG9vbCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfY3JlYXRlX3ZpZGVvX3NjaG9vbF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vdmlkZW9zY2hvb2wiIHRpdGxlPSJMZWFybiBob3cgdG8gbWFrZSBiZXR0ZXIgdmlkZW9zIj5WaWRlbyBTY2hvb2w8L2E+CiA8L2xpPgogICA8L3VsPgogIDwvbGk+CiAKIAogPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9IndhdGNoIj4KIDxhIGNsYXNzPSJ0b3BuYXZfaGFzX2Ryb3Bkb3duIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDp3YXRjaCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3dhdGNoIiB0aXRsZT0iIiB0YWJpbmRleD0iMCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfd2F0Y2giPgogV2F0Y2ggPC9hPgoKICAgPHVsIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl93YXRjaCI+CiAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDpzdGFmZl9waWNrcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfc3RhZmZfcGlja3NfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2NoYW5uZWxzL3N0YWZmcGlja3MiIHRpdGxlPSJUaGUgYmVzdCB2aWRlb3Mgb24gVmltZW8sIGN1cmF0ZWQgZGFpbHkgYnkgb3VyIHRlYW0iPlN0YWZmIFBpY2tzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDpjYXRlZ29yaWVzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9jYXRlZ29yaWVzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9jYXRlZ29yaWVzIiB0aXRsZT0iQnJvd3NlIHZpZGVvcyBieSBpbnRlcmVzdCwgZ2VucmUsIGFuZCBtb3JlIj5DYXRlZ29yaWVzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDpjaGFubmVscyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfY2hhbm5lbHNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2NoYW5uZWxzIiB0aXRsZT0iVmlldyB2aWRlbyBwbGF5bGlzdHMgY3JlYXRlZCBhbmQgY3VyYXRlZCBieSBvdGhlciBtZW1iZXJzIj5DaGFubmVsczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6Z3JvdXBzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9ncm91cHNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2dyb3VwcyIgdGl0bGU9IldhdGNoIGFuZCBkaXNjdXNzIHZpZGVvcyB3aXRoIG90aGVycyI+R3JvdXBzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDphcHAiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX2FwcHNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2V2ZXJ5d2hlcmUiIHRpdGxlPSJXYXRjaCBWaW1lbyB2aWRlb3Mgb24gVFZzLCBwaG9uZXMsIHRhYmxldHMsIGFuZCBtb3JlIj5BcHBzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDptb3JlIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9tb3JlX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS93YXRjaCIgdGl0bGU9IkRpc2NvdmVyIG1vcmUgd2F5cyB0byB3YXRjaCBvbiBWaW1lbyI+TW9yZeKApjwvYT4KIDwvbGk+CiAgIDwvdWw+CiAgPC9saT4KIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0ib25kZW1hbmQiPgogPGEgY2xhc3M9InRvcG5hdl9oYXNfZHJvcGRvd24gdG9wbmF2X2lzX29uZGVtYW5kIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6b25fZGVtYW5kIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9vbmRlbWFuZF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vb25kZW1hbmQiIHRpdGxlPSJXYXRjaCBtb3ZpZXMsIHNlcmllcywgYW5kIG1vcmUiIHRhYmluZGV4PSIwIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9vbmRlbWFuZCI+CiBPbiBEZW1hbmQgPC9hPgoKICAgPHVsIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl9vbmRlbWFuZCI+CiAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6d2hhdHNfbmV3IiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9vbmRlbWFuZF93aGF0c19uZXdfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kIiB0aXRsZT0iU2VlIG5ldyBhbmQgbm90ZXdvcnRoeSB0aXRsZXMgYWRkZWQgdG8gT24gRGVtYW5kIj5XaGF04oCZcyBuZXc8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpvbl9kZW1hbmR8a2V5d29yZDpkaXNjb3ZlciIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfZGlzY292ZXJfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kL2Rpc2NvdmVyIiB0aXRsZT0iRGlzY292ZXIgdGl0bGVzIG91ciB0ZWFtIHJlY29tbWVuZHMiPkRpc2NvdmVyPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6Z2VucmVzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9vbmRlbWFuZF9nZW5yZXNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kL2Jyb3dzZSIgdGl0bGU9IkJyb3dzZSB0aXRsZXMgYnkgZ2VucmUiPkdlbnJlczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om9uX2RlbWFuZHxrZXl3b3JkOnR2X3NlcmllcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfdHZfc2VyaWVzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9vbmRlbWFuZC9icm93c2UvdHYrc2VyaWVzIiB0aXRsZT0iQnJvd3NlIHNlcmllcyBhbmQgVFYgc2hvd3MiPlRWICsgU2VyaWVzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6c3RhcnRfc2VsbGluZyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfc2VsbF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vb25kZW1hbmQvc3RhcnRzZWxsaW5nIiB0aXRsZT0iU2VsbCBkaXJlY3RseSB0byB5b3VyIGZhbnMgd2l0aCBWaW1lbyBPbiBEZW1hbmQiPlN0YXJ0IHNlbGxpbmc8L2E+CiA8L2xpPgogICA8L3VsPgogIDwvbGk+CiAKIDwvdWw+CiA8L25hdj48IS0tIC8udG9wbmF2X2Rlc2t0b3BfbWVudSAtLT4KIAogICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbWVudV9yaWdodCI+CgogICA8Zm9ybSBjbGFzcz0idG9wbmF2X21lbnVfc2VhcmNoIiBhY3Rpb249Ii8vdmltZW8uY29tL3NlYXJjaCIgbWV0aG9kPSJnZXQiIHJvbGU9InNlYXJjaCIgZGF0YS1kcy1wcm90ZWN0aW9uPgogPGlucHV0IGNsYXNzPSJ0b3BuYXZfbWVudV9zZWFyY2hfaW5wdXQganMtdG9wbmF2X21lbnVfc2VhcmNoX2lucHV0IGpzLXNlYXJjaF9hdXRvY29tcGxldGUiICB0eXBlPSJ0ZXh0IiBuYW1lPSJxIiB0aXRsZT0iU2VhcmNoIHZpZGVvcywgcGVvcGxlLCBhbmQgbW9yZSIgdmFsdWU9IiIgYXJpYS1sYWJlbD0iU2VhcmNoIHZpZGVvcywgcGVvcGxlLCBhbmQgbW9yZSIgcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIGF1dG9jb21wbGV0ZT0ib2ZmIj48YnV0dG9uIGNsYXNzPSJ0b3BuYXZfbWVudV9zZWFyY2hfc3VibWl0IHRvcG5hdl9pY29uX3NlYXJjaF9iIiB0eXBlPSJzdWJtaXQiIGFyaWEtbGFiZWw9IlNlYXJjaCI+PC9idXR0b24+CiA8L2Zvcm0+CiAKICAKICAKICAgPGEgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3VwbG9hZCB0b3BuYXZfaWNvbl91cGxvYWRfYiIgaHJlZj0iL3VwbG9hZCIgdGl0bGU9IlVwbG9hZCB5b3VyIHZpZGVvcyIgcm9sZT0iYnV0dG9uIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbXBvbmVudDp0b3BfbmF2fGtleXdvcmQ6dXBsb2FkIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl91cGxvYWRfY2xpY2siPjxzcGFuPlVwbG9hZDwvc3Bhbj48L2E+CiAgPC9kaXY+PCEtLSAvLnRvcG5hdl9tZW51X3JpZ2h0IC0tPgogIDwvZGl2PjwhLS0gLy50b3BuYXZfZGVza3RvcF93cmFwcGVyIC0tPgo8L2Rpdj4KCiA8bmF2IGlkPSJ0b3BuYXZfbW9iaWxlIiBjbGFzcz0idG9wbmF2X21vYmlsZSAiIHJvbGU9ImJhbm5lciI+CgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogIDxidXR0b24gY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9sZWZ0IHRvcG5hdl9tb2JpbGVfaGVhZGVyX2xvZ28ganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfbG9nbyB0b3BuYXZfaWNvbl9tb2JpbGVfdmxvZ29fYiI+CiAgPC9idXR0b24+CiA8YSBocmVmPSIvL3ZpbWVvLmNvbS9zZWFyY2giIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2J1dHRvbiB0b3BuYXZfbW9iaWxlX3B1bGxfcmlnaHQgdG9wbmF2X21vYmlsZV9oZWFkZXJfc2VhcmNoIHRvcG5hdl9pY29uX21vYmlsZV9zZWFyY2hfYiI+IDwvYT4KIDxzcGFuIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2hlYWRlcl90aXRsZSI+PC9zcGFuPgogPC9kaXY+CgogIDxzZWN0aW9uIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnUganMtdG9wbmF2X21vYmlsZV9tZW51X21haW4iPgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfY2xvc2UgdG9wbmF2X2ljb25fbW9iaWxlX3hfYiI+IDwvYnV0dG9uPgogPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX3JpZ2h0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbmdzIHRvcG5hdl9pY29uX21vYmlsZV9nZWFyX2IiPiA8L2J1dHRvbj4KIDwvZGl2PgoKIDx1bD4KICAgPGxpPgogPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfY2hhbm5lbF9iICIgaHJlZj0iLy92aW1lby5jb20vIj4KIFN0YWZmIFBpY2tzIDwvYT4KIDwvbGk+CiAgIDxsaT4KIDxhIGRhdGEtYWN0aW9uPSJsYXN0X3BhZ2UiIGRhdGEtYnJlZXplLWlnbm9yZSBjbGFzcz0idG9wbmF2X2ljb25fbW9iaWxlX2F2YXRhcl9iICIgaHJlZj0iL2xvZ19pbiI+CiA8c3BhbiBjbGFzcz0ibWVudV9hdXRoIj5Kb2luIG9yIGxvZyBpbjwvc3Bhbj4gPC9hPgogPC9saT4KICAgPGxpPgogPGEgZGF0YS1icmVlemUtaWdub3JlIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfc3Rhcl9iIiBocmVmPSIvL3ZpbWVvLmNvbS93YXRjaCI+CiBXYXRjaCA8L2E+CiA8L2xpPgogICA8bGk+CiA8YSBvbmNsaWNrPSJ2aW1lby5tb2JpbGUuZGVza3RvcF9zaGFyZWQuX3VwbG9hZCh0aGlzKTsgcmV0dXJuIGZhbHNlOyIgZGF0YS1icmVlemUtaWdub3JlIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfdXBsb2FkX2IiIGhyZWY9Ii8vdmltZW8uY29tL3VwbG9hZCI+CiBVcGxvYWQgPC9hPgogPC9saT4KICAgPGxpPgogPGEgZGF0YS1icmVlemUtaWdub3JlIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfdm9kX2IgIiBocmVmPSIvL3ZpbWVvLmNvbS9vbmRlbWFuZCI+CiBPbiBEZW1hbmQgPC9hPgogPC9saT4KICAgPGxpPgogPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfZm9yZ290X2IgIiBocmVmPSJodHRwczovL2hlbHAudmltZW8uY29tL2hjL2VuLXVzIj4KIEhlbHAgPC9hPgogPC9saT4KICA8L3VsPgogPC9zZWN0aW9uPgoKICA8c2VjdGlvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9tZW51IHRvcG5hdl9tb2JpbGVfbWVudV9zZXR0aW5ncyBqcy10b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3MiPgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluc19jbG9zZSB0b3BuYXZfaWNvbl9tb2JpbGVfYXJyb3dsZWZ0X2IiPiA8L2J1dHRvbj4KIDxzcGFuIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2hlYWRlcl90aXRsZSI+TW9yZSBzdHVmZjwvc3Bhbj4KIDwvZGl2PgoKIDx1bD4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS90ZXJtcyI+CiBUZXJtcyBvZiBTZXJ2aWNlIDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9wcml2YWN5Ij4KIFByaXZhY3kgUG9saWN5IDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9kbWNhIj4KIENvcHlyaWdodCA8L2E+CiAgIDwvbGk+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vY29va2llX3BvbGljeSI+CiBDb29raWVzIDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249ImRlc2t0b3AiIG9uY2xpY2s9InZpbWVvLm1vYmlsZS5kZXNrdG9wX3NoYXJlZC5fczJkcygpOyByZXR1cm4gZmFsc2UiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSI+CiBEZXNrdG9wIHNpdGUgPC9hPgogICA8L2xpPgogIDxsaT4KICA8YSBsYW5ndWFnZSBocmVmPSIjIj4KIExhbmd1YWdlIDwvYT4KICAgPHNlbGVjdCBvbmNoYW5nZT0idmltZW8ubW9iaWxlLmRlc2t0b3Bfc2hhcmVkLl9zMmwodGhpcykiIHRpdGxlPSJDaG9vc2UgYSBkaWZmZXJlbnQgbGFuZ3VhZ2UiIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3NfbGFuZ3VhZ2UiPgogICA8b3B0aW9uIGNsYXNzPSJzZWxlY3RlZCIgc2VsZWN0ZWQgdmFsdWU9ImVuIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIEVuZ2xpc2ggPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZXMiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogRXNwYcOxb2wgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZGUtREUiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogRGV1dHNjaCA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJmci1GUiIKIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiBGcmFuw6dhaXMgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iamEtSlAiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgog5pel5pys6KqeIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InB0LUJSIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIFBvcnR1Z3XDqnMgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ia28tS1IiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgog7ZWc6rWt7Ja0IDwvb3B0aW9uPgogIDwvc2VsZWN0PgogIDwvbGk+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vZmFxIj4KIEZBUSA8L2E+CiAgIDwvbGk+CiAgPC91bD4KCiA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfY29weXJpZ2h0Ij5UTSArIMKpIDIwMTcgVmltZW8sIEluYy48L2Rpdj4KIDwvc2VjdGlvbj4KPC9uYXY+Cgo8c2NyaXB0PgohZnVuY3Rpb24oYSxiKXthLnZpbWVvPWEudmltZW98fHt9LHZpbWVvLm1vYmlsZT12aW1lby5tb2JpbGV8fHt9LFZpbWVvPXZpbWVvLm1vYmlsZXx8e30sVmltZW8uZGVza3RvcF9zaGFyZWQ9VmltZW8uZGVza3RvcF9zaGFyZWR8fHt9O3ZhciBjPWIuZ2V0RWxlbWVudEJ5SWQoInRvcG5hdl9kZXNrdG9wIiksZD0ib250b3VjaHN0YXJ0ImluIGE/InRvdWNoc3RhcnQiOmEuUG9pbnRlckV2ZW50PyJwb2ludGVyZG93biI6YS5NU1BvaW50ZXJFdmVudD8iTVNQb2ludGVyRG93biI6ImNsaWNrIjsiY2xpY2siIT09ZCYmYy5hZGRFdmVudExpc3RlbmVyKGQsZnVuY3Rpb24oYSl7dmFyIGI9ImltZyI9PT1hLnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCk/YS50YXJnZXQucGFyZW50Tm9kZTphLnRhcmdldDtiLmNsYXNzTGlzdC5jb250YWlucygidG9wbmF2X2hhc19kcm9wZG93biIpJiYoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCkpfSwhMSksYy5hZGRFdmVudExpc3RlbmVyKGQsZnVuY3Rpb24oYyl7Yy50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJqcy10b3BuYXZfbWVudV9hdXRoIikmJihiLmNvb2tpZT0ibGFzdF9wYWdlPSIrZW5jb2RlVVJJQ29tcG9uZW50KGEubG9jYXRpb24ucGF0aG5hbWUpKyI7cGF0aD0nLyc7bWF4LWFnZT0xODAwOyIpfSwhMSksVmltZW8uZGVza3RvcF9zaGFyZWQuX3VwbG9hZD1mdW5jdGlvbihjKXtpZigvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7dmFyIGYsZyxkPSJ2aW1lbzovL2FwcC52aW1lby5jb20vdXBsb2FkP3JlZj1tb2JpbGV3ZWIiLGU9Ii91cGxvYWQiO3JldHVybiBmPWZ1bmN0aW9uKCl7Yi53ZWJraXRIaWRkZW58fChhLmxvY2F0aW9uPWUpfSxnPWZ1bmN0aW9uKCl7YS5sb2NhdGlvbj1kLHNldFRpbWVvdXQoZiwyNSl9LGcoKSwhMX1hLmxvY2F0aW9uPWMuaHJlZn0sVmltZW8uZGVza3RvcF9zaGFyZWQuX3MyZHM9ZnVuY3Rpb24oKXtiLmNvb2tpZT0ib3B0X291dF9tb2JpbGU9MTtleHBpcmVzPUZyaSwgMzEgRGVjIDk5OTkgMjM6NTk6NTkgR01UO2RvbWFpbj0iK3ZpbWVvLmRvbWFpbixhLmxvY2F0aW9uLnJlbG9hZCgpfSxWaW1lby5kZXNrdG9wX3NoYXJlZC5fczJsPWZ1bmN0aW9uKGIpe3ZhciBjPWIudmFsdWUsZD1uZXcgWE1MSHR0cFJlcXVlc3Q7ZC5vcGVuKCJQT1NUIiwiL3NldHRpbmdzL2xvY2FsZSIpLGQuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEh0dHBSZXF1ZXN0IiksZC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSxkLnNlbmQoImxvY2FsZT0iK2MrIiZ0b2tlbj0iK3ZpbWVvLnhzcmZ0KSxkLm9ubG9hZD1mdW5jdGlvbigpezIwMD09PWQuc3RhdHVzJiZhLmxvY2F0aW9uLnJlbG9hZCgpfX07dmFyIGU9ImNsaWNrIixmPSJibG9jayIsZz0ibm9uZSIsaD1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9sb2dvIik7aCYmaC5hZGRFdmVudExpc3RlbmVyKGUsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSxhLnByZXZlbnREZWZhdWx0KCk7dmFyIGM9Yi5xdWVyeVNlbGVjdG9yKCIuanMtdG9wbmF2X21vYmlsZV9tZW51X21haW4iKTtjLnN0eWxlLmRpc3BsYXk9Zjt2YXIgZD1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9jbG9zZSIpO2QuYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVmYXVsdCgpLGMuc3R5bGUuZGlzcGxheT1nfSk7dmFyIGg9Yi5xdWVyeVNlbGVjdG9yKCIuanMtdG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzIiksaT1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9zZXR0aW5ncyIpO2kuYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVmYXVsdCgpLGguc3R5bGUuZGlzcGxheT1mLGMuc3R5bGUuZGlzcGxheT1nO3ZhciBkPWIucXVlcnlTZWxlY3RvcigiLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbnNfY2xvc2UiKTtkLmFkZEV2ZW50TGlzdGVuZXIoZSxmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpLGEucHJldmVudERlZmF1bHQoKSxoLnN0eWxlLmRpc3BsYXk9ZyxjLnN0eWxlLmRpc3BsYXk9Zn0pfSl9LCExKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZihhKXt2YXIgYj1uZXcgWE1MSHR0cFJlcXVlc3Q7Yi5vcGVuKCJQT1NUIiwiL3NldHRpbmdzL25hdiIpLGIuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEh0dHBSZXF1ZXN0IiksYi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSxiLnNlbmQoIm1lc3NhZ2Vfc3RhdGU9IithKyImdG9rZW49Iit2aW1lby54c3JmdCksYi5vbmxvYWQ9ZnVuY3Rpb24oKXt9fXZhciBhPWIuZ2V0RWxlbWVudEJ5SWQoInRvcG5hdl9tZW51X2F2YXRhciIpO2lmKGEpe3ZhciBjPWEucXVlcnlTZWxlY3RvcigiLnRvcG5hdl9tZW51X2F2YXRhcl9idWJibGUiKSxlPShhLnF1ZXJ5U2VsZWN0b3IoIiN0b3BuYXZfdXNlcl9kcm9wZG93biIpLCExKTtjJiZjLmNsYXNzTGlzdC5hZGQoIm9uIiksYS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7ZXx8KGU9ITAsYyYmYy5jbGFzc0xpc3QucmVtb3ZlKCJvbiIpLGYoMSkpfSwhMSl9fSwxZTMpfSh3aW5kb3csZG9jdW1lbnQpOwo8L3NjcmlwdD4KCiA8ZGl2IGNsYXNzPSJ3cmFwX2NvbnRlbnQiPgogCgoKCjxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9jb250YWluZXIiPgogPGRpdiBjbGFzcz0iZXhjZXB0aW9uX3NlY3Rpb24gZXhjZXB0aW9uX3NlY3Rpb24tLWluZm8iPgogPGRpdiBjbGFzcz0iZXhjZXB0aW9uX3NocnVnX28iPjwvZGl2PgogPGgxIGNsYXNzPSJleGNlcHRpb25fdGl0bGUgaXJpc19oZWFkZXIiPlNvcnJ5LCB3ZSBjb3VsZG7igJl0IGZpbmQgdGhhdCBwYWdlPC9oMT4KCiA8ZGl2IGNsYXNzPSJleGNlcHRpb25fY29udGVudCI+CiA8cCBjbGFzcz0iZXhjZXB0aW9uX21lc3NhZ2UiPgogIDwvcD4KCiA8ZGl2IGNsYXNzPSJleGNlcHRpb25fbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uLS11cHNlbGwiPgogPGRpdiBjbGFzcz0iaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbC1pY29uIj4KIDxzcGFuIGNsYXNzPSJpcmlzX2ljIGlzLS0xNiI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6TTcgNGgydjJIN1Y0em0wIDNoMnY1SDdWN3oiLz48L3N2Zz48L3NwYW4+CiA8L2Rpdj4KCiA8ZGl2IGNsYXNzPSJpcmlzX25vdGlmaWNhdGlvbi1oZWFkZXIiPgogPHN0cm9uZz5SZWFzb25zIHlvdSBtaWdodCBiZSBzZWVpbmcgdGhpcyBwYWdlPC9zdHJvbmc+CiA8L2Rpdj4KCiA8dWwgY2xhc3M9ImlyaXNfbm90aWZpY2F0aW9uLWxpc3QiPgogIDxsaT5JdCBleGlzdHMsIGJ1dCB5b3UgZG9u4oCZdCBoYXZlIHBlcm1pc3Npb24gdG8gc2VlIGl0LCBvciB5b3UgbmVlZCB0byA8YSBvbmNsaWNrPSJ2aW1lby5TZXNzaW9uLmNyZWF0ZSgpIj5sb2cgaW48L2E+LjwvbGk+CiAgPGxpPk5vdGhpbmcgaGFzIGV2ZXIgZXhpc3RlZCBoZXJlLiBTcG9va3kuPC9saT4KIDxsaT5Tb21ldGhpbmcgb25jZSBsaXZlZCBoZXJlLCBidXQgaGFzIGJlZW4gZGVsZXRlZC48L2xpPgogPC91bD4KPC9kaXY+CgogIDxmb3JtIGNsYXNzPSJleGNlcHRpb25fc2VhcmNoIiBhY3Rpb249Ii9zZWFyY2giIG1ldGhvZD0iZ2V0Ij4KIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtaW5wdXQtd3JhcHBlciI+CiA8aW5wdXQgY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtaW5wdXQgaXJpc19pbnB1dCBpcmlzX2lucHV0LS1zZWFyY2gganMtc2VhcmNoX2F1dG9jb21wbGV0ZSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgogPC9kaXY+CiA8YnV0dG9uIGNsYXNzPSJleGNlcHRpb25fc2VhcmNoLWJ1dHRvbiBpcmlzX2J0biBpcmlzX2J0bi0tcHJpbWFyeSI+CiA8c3BhbiBjbGFzcz0iaXJpc19idG4tY29udGVudCI+U2VhcmNoPC9zcGFuPgogPC9idXR0b24+CiA8L2Zvcm0+CiAgPC9kaXY+CiA8L2Rpdj4KCiA8ZGl2IGNsYXNzPSJleGNlcHRpb25fYXV4aWxpYXJ5Ij48L2Rpdj4KPC9kaXY+CgogPC9kaXY+CgogIAo8Zm9vdGVyIGNsYXNzPSJmb290ZXJfdjIgZm9vdGVyX3YyLS1yZXNwb25zaXZlIj4KICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX3NpdGVtYXAiPgogPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19saW5rcyI+CgogPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5WaW1lbzwvc3Bhbj4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiA8L2Rpdj4KIDwvaDQ+CiA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvYWJvdXQiIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19hYm91dF9jbGljayI+CiBBYm91dCBWaW1lbyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvYmxvZyIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpbWVvX2Jsb2dfY2xpY2siPgogVmltZW8gQmxvZyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvaGVscC9ndWlkZWxpbmVzIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmltZW9fZ3VpZGVsaW5lc19jbGljayI+CiBWaW1lbyBHdWlkZWxpbmVzIDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLnZpbWVvLmNvbSIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2RldmVsb3BlcnNfY2xpY2siPgogRGV2ZWxvcGVycyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvam9icyI+CiBKb2JzIDwvYT4KIDwvbGk+CiA8L3VsPgogPC9zZWN0aW9uPgoKIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+SGVscDwvc3Bhbj4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiA8L2Rpdj4KIDwvaDQ+CiA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvaGVscCIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2hlbHBfY2VudGVyX2NsaWNrIj4KIEhlbHAgQ2VudGVyIDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiIGhyZWY9Ii92aWRlb3NjaG9vbCIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpZGVvX3NjaG9vbF9jbGljayI+CiBWaWRlbyBTY2hvb2wgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2hlbHAvZmFxIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZmFxX2NsaWNrIj4KIEZBUSA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvZm9ydW1zIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZm9ydW1zX2NsaWNrIj4KIEZvcnVtcyA8L2E+CiA8L2xpPgogPC91bD4KIDwvc2VjdGlvbj4KCiA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPk1vcmU8L3NwYW4+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogPC9kaXY+CiA8L2g0PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL29uZGVtYW5kIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfb25fZGVtYW5kX2NsaWNrIj4KIE9uIERlbWFuZCA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvZXZlcnl3aGVyZSIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2V2ZXJ5d2hlcmVfY2xpY2siPgogRXZlcnl3aGVyZSA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvdXBsb2FkIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBsb2FkX2NsaWNrIj4KIFVwbG9hZCA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvc2l0ZV9tYXAiIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zaXRlX21hcF9jbGljayI+CiBTaXRlIE1hcCA8L2E+CiA8L2xpPgogPC91bD4KIDwvc2VjdGlvbj4KCiA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlVwZ3JhZGU8L3NwYW4+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogPC9kaXY+CiA8L2g0PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL3BsdXM/dj1mb290ZXIiPgogVmltZW8gUGx1cyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvcHJvP3Y9Zm9vdGVyIj4KIFZpbWVvIFBSTyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvYnVzaW5lc3MiPgogVmltZW8gQnVzaW5lc3MgPC9hPgogPC9saT4KIDwvdWw+CiA8L3NlY3Rpb24+CiA8L2Rpdj4KCiAgIDxhc2lkZSBpZD0iZm9vdGVyX3RpcCIgY2xhc3M9ImZvb3Rlcl92Ml9fdGlwIiBhcmlhLWxpdmU9InBvbGl0ZSI+CiA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fdGlwLWhlYWRlciI+RGlkIHlvdSBrbm93PzwvaDQ+CiA8cCBjbGFzcz0iYWN0aXZlIGZvb3Rlcl92Ml9fdGlwLWNvbnRlbnQiPkdyYWIgeW91ciBhdWRpZW5jZSBmcm9tIHRoZSBnZXQtZ28gd2l0aCBhbiBhbmltYXRlZCB0aXRsZSBzZXF1ZW5jZS4gTGVhcm4gaG93IGluIDxhIGhyZWY9Ii92aWRlb3NjaG9vbC9sZXNzb24vMTY0L21ha2luZy1hbi1hbmltYXRlZC10aXRsZS1zZXF1ZW5jZSI+VmltZW8gVmlkZW8gU2Nob29sPC9hPi48L3A+CiA8L2FzaWRlPgogPC9zZWN0aW9uPgogCiAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fYXV4aWxpYXJ5ICI+CgogPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbCI+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50Ij4KIDxwPlRNICsgJmNvcHk7IDIwMTcgVmltZW8sIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC48L3A+CiA8L2Rpdj4KIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL3Rlcm1zIiB0aXRsZT0iVGVybXMgJmFtcDsgQ29uZGl0aW9ucyI+CiBUZXJtcyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvcHJpdmFjeSIgdGl0bGU9IlByaXZhY3kgUG9saWN5Ij4KIFByaXZhY3kgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL2RtY2EiIHRpdGxlPSJDb3B5cmlnaHQgSW5mb3JtYXRpb24iPgogQ29weXJpZ2h0IDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9jb29raWVfcG9saWN5IiB0aXRsZT0iTGVhcm4gbW9yZSBhYm91dCBob3cgVmltZW8gdXNlcyBjb29raWVzIj4KIENvb2tpZXMgPC9hPgogPC9saT4KIDwvdWw+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50IGZvb3Rlcl92Ml9fd2l0aGxvdmUiPgogTWFkZSB3aXRoIDxhIGhyZWY9Imh0dHBzOi8vdmltZW8uY29tL2xvdmUiPjxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIGZvb3Rlcl92Ml9fbG92ZWhlYXJ0IGZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWljb24iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEyIDEyIj48cGF0aCBkPSJNOSAyQzcuMzEyIDIgNiAzLjUgNiAzLjVTNC42ODcgMiAzIDJDMS4zMTIgMiAwIDMuMzEyIDAgNWMwIDMuMTg4IDMuNzUgMy4wMTIgNiA2IDIuMjUtMi45ODggNi0yLjgxMiA2LTYgMC0xLjY4OC0xLjMxMy0zLTMtM3oiLz48L3N2Zz48L2E+IGluIE5ZQy4gPC9kaXY+CiA8L2Rpdj4KCiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2ZpbHRlcnMgZm9vdGVyX3YyX19hdXhpbGlhcnktY29udGVudCI+CiA8c3BhbiBjbGFzcz0ibGFuZ3VhZ2UiPgogTGFuZ3VhZ2U6CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIjbGFuZ3VhZ2UiIG9uY2xpY2s9InZpbWVvLk1vZGFsLmNyZWF0ZSh7Y29udGVudDogJy9zZXR0aW5ncy9sb2NhbGUnLCBzaXplOiAnc21hbGwnfSk7IHJldHVybiBmYWxzZTsiIHRpdGxlPSJDaG9vc2UgYSBkaWZmZXJlbnQgbGFuZ3VhZ2UiPkVuZ2xpc2g8L2E+CiA8L3NwYW4+CgogIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2ZpbHRlciI+TWF0dXJlIGNvbnRlbnQgZmlsdGVyOiA8L3NwYW4+PGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCBmb290ZXJfdjJfX2ZpbHRlcnNfX2xhbmcgY29udGVudGZpbHRlciBqcy1mb290ZXJfY29udGVudGZpbHRlcl9saW5rIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InZpbWVvLk1vZGFsLmNyZWF0ZSh7Y29udGVudDogJy9zZXR0aW5ncy9jb250ZW50cmF0aW5nJ30pIiB0aXRsZT0iQ2hhbmdlIHlvdXIgbWF0dXJlIGNvbnRlbnQgZmlsdGVyIj5Ob25lPC9hPgogIDwvZGl2PgoKPC9zZWN0aW9uPgo8L2Zvb3Rlcj4KIAogPC9kaXY+CgogCiAKIAogCjxzY3JpcHQ+CiB2YXIgX19mYSA9IF9fZmEgfHwgW107CiBfX2ZhLnB1c2goWyd0cmFja1BhZ2V2aWV3J10pOwoKICAvLyBBbmFseXRpY3MgU2V0dXAKIHZhciBfZ3RtID0gX2d0bSB8fCBbXSwKIF9pbml0aWFsX2d0bV9zdGF0ZSA9IHsiZXhjZXB0aW9uX2h0dHBfY29kZSI6IkhUVFBcLzEuMSA0MDQgTm90IEZvdW5kIiwibGFuZ3VhZ2UiOiJlbiIsInVzZXJfc3RhdHVzIjoibG9nZ2VkX291dCIsInVzZXJfdHlwZSI6Im5vbmUiLCJnYV91bml2ZXJzYWxfaWQiOiJVQS03NjY0MS04IiwiY29tc2NvcmVfc2l0ZV9pZCI6MTAzNDgyODl9OwoKIF9pbml0aWFsX2d0bV9zdGF0ZVsndnVpZCddID0gZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKXZ1aWRccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKTsKIF9pbml0aWFsX2d0bV9zdGF0ZVsnZ3RtLnN0YXJ0J10gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKIF9pbml0aWFsX2d0bV9zdGF0ZVsnZXZlbnQnXSA9ICdndG0uanMnOwogX2d0bS5wdXNoKF9pbml0aWFsX2d0bV9zdGF0ZSk7CiAKIC8qKgogKiBJZiB0aGUgY3VycmVudCByZXF1ZXN0IHdhcyBidWNrZXRlZCBpbiBhbiBBQkxpbmNvbG4gZXhwZXJpbWVudCwKICogc2VuZCB0aGUgc2VsZWN0ZWQgdHJlYXRtZW50IGJhY2sgZnJvbSB0aGUgY2xpZW50LCB0byBmaWx0ZXIgYWIgdGVzdAogKiBkYXRhIGRvd24gdG8gbm9uLXJvYm90IHVzZXJzIHRoYXQgcnVuIEphdmFTY3JpcHQuCiAqLwogaWYgKCJBQkxpbmNvbG4iIGluIHdpbmRvdykgewogKGZ1bmN0aW9uICgpIHsKICAgfSkoKTsKIH0KCiAgdmFyIF9leHRlbmQgPSBmdW5jdGlvbigpe2Zvcih2YXIgcj1hcmd1bWVudHNbMF0sbj0xLGU9YXJndW1lbnRzLmxlbmd0aDtlPm47bisrKXt2YXIgdD1hcmd1bWVudHNbbl07Zm9yKHZhciBhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmKHJbYV09dFthXSl9cmV0dXJuIHJ9OwoKICB2YXIgQ1NTX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL3N0eWxlcy9jc3Nfb3B0LycsCiBKU19ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvJywKIElNQUdFX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL2ltYWdlc192Ni8nLAogU1ZHX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL3N2Zy8nLAogIEJVSUxEX0hBU0ggPSAnNzI0NTQnOwoKICB2YXIgdmltZW8gPSBfZXh0ZW5kKCh3aW5kb3cudmltZW8gfHwge30pLCB7ImFwcF92ZXJzaW9uIjoidjYiLCJkb21haW4iOiJ2aW1lby5jb20iLCJ1cmwiOiJ2aW1lby5jb20iLCJjdXJfdXNlciI6ZmFsc2UsImlzX21vYmlsZSI6ZmFsc2V9KTsKIHZpbWVvLmNvbmZpZyA9IF9leHRlbmQoKHZpbWVvLmNvbmZpZyB8fCB7fSksIHsibG9jYWxlIjoiZW4ifSk7CgogIHZhciBsb2NhbGVDb25maWcgPSB7CiBsYW5nOiAnZW4nLAogJ0RhdGUnOiB7CiBtb250aHM6IFsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSwKIG1vbnRoc19hYmJyOiBbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLAogZGF5czogWyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLAogZGF5c19hYmJyOiBbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLAoKIC8vIEN1bHR1cmUncyBkYXRlIG9yZGVyOiBNTS9ERC9ZWVlZCiBkYXRlT3JkZXI6IFsnZGF0ZScsICdtb250aCcsICd5ZWFyJ10sCiBzaG9ydERhdGU6ICclZC8lbS8lWScsCiBzaG9ydFRpbWU6ICclSTolTSVwJywKIEFNOiAnQU0nLAogUE06ICdQTScsCiBmaXJzdERheU9mV2VlazogMCwKCiAvLyBEYXRlLkV4dHJhcwogb3JkaW5hbDogZnVuY3Rpb24oZGF5T2ZNb250aCl7CiByZXR1cm4gZGF5T2ZNb250aDsKIH0KIH0sCiAnRGF0ZVBpY2tlcic6IHsKIHNlbGVjdF9hX3RpbWU6ICJTZWxlY3QgYSB0aW1lIiwKIHVzZV9tb3VzZV93aGVlbDogIlVzZSB0aGUgbW91c2Ugd2hlZWwgdG8gcXVpY2tseSBjaGFuZ2UgdmFsdWUiLAogdGltZV9jb25maXJtX2J1dHRvbjogIk9LIiwKIGFwcGx5X3JhbmdlOiAiQXBwbHkiLAogY2FuY2VsOiAiQ2FuY2VsIiwKIHdlZWs6ICJXayIgfSwKICAnTnVtYmVyJzogewogZGVjaW1hbDogJy4nLAogZ3JvdXA6ICcsJywKIGN1cnJlbmN5OiB7CiBwcmVmaXg6ICckJwogfQogfSwKICdGb3JtVmFsaWRhdG9yJzogeyJyZXF1aXJlZCI6IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIiwicmVxdWlyZWRDaGsiOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiJ9IH07CgogdmFyIGZ1bGxMb2NhbGUgPSAnJzsKCiAKICB2YXIgQ29weSA9IHt0cmFuc2xhdGU6ZnVuY3Rpb24odCxpLHUpe3ZhciBlPSdvYmplY3QnIT10eXBlb2YgdGhpcy5kaWN0W3RdP3RoaXMuZGljdFt0XTppP3RoaXMuZGljdFt0XS5wbHVyYWw6dGhpcy5kaWN0W3RdLnNpbmd1bGFyO3JldHVybidvYmplY3QnPT10eXBlb2YgdSYmKGU9dGhpcy5zdWJzdGl0dXRlKGUsdSkpLGV9LHN1YnN0aXR1dGU6ZnVuY3Rpb24odCxpKXtyZXR1cm4gdm9pZCAwIT09dC5zdWJzdGl0dXRlP3Quc3Vic3RpdHV0ZShpKTp0LnJlcGxhY2UoL1xcP1x7KFtee31dKylcfS9nLGZ1bmN0aW9uKHQsdSl7cmV0dXJuJ1xcJz09dC5jaGFyQXQoMCk/dC5zbGljZSgxKTpudWxsIT1pW3VdP2lbdV06Jyd9KX0sZGljdDp7fX07CiBDb3B5LmRpY3QgPSB7ImRpZF95b3VfbWVhbl9lbWFpbCI6IkRpZCB5b3UgbWVhbiA8ZW0+e1NVR0dFU1R9PFwvZW0+PyIsImVtYWlsX3Bhc3N3b3JkX21pc21hdGNoIjoiRW1haWwgYW5kIHBhc3N3b3JkIGRvIG5vdCBtYXRjaCIsImp1c3Rfbm93IjoianVzdCBub3ciLCJzZWNvbmRzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gc2Vjb25kIGFnbyIsInBsdXJhbCI6IntDT1VOVH0gc2Vjb25kcyBhZ28ifSwibWludXRlc19hZ28iOnsic2luZ3VsYXIiOiJ7Q09VTlR9IG1pbnV0ZSBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IG1pbnV0ZXMgYWdvIn0sImhvdXJzX2FnbyI6eyJzaW5ndWxhciI6IntDT1VOVH0gaG91ciBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IGhvdXJzIGFnbyJ9LCJvcGVuX2NvbW1lbnRfYm94IjoiQWRkIG5ldyBjb21tZW50IGluc3RlYWQgJnJhcXVvOyIsInVybF91bmF2YWlsYWJsZSI6IlNvcnJ5LCB0aGlzIHVybCBpcyB1bmF2YWlsYWJsZS4iLCJ1bnNhdmVkX2NoYW5nZXNfZ2VuZXJpYyI6IllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcywgYXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRvIGxlYXZlPyIsImFkZCI6IkFkZCIsInJlbW92ZSI6IlJlbW92ZSIsInNlbGVjdCI6IlNlbGVjdCIsIm5vX2ZvbGxvd2Vyc19mb3JfbGV0dGVyIjoiWW91IGRvbiZyc3F1bzt0IGZvbGxvdyBhbnlvbmUgdGhhdCBiZWdpbiB3aXRoIHRoZSBsZXR0ZXIgJmxkcXVvO3tQQUdFX0xFVFRFUn0mcmRxdW87Iiwic2hhcmVfbGltaXRfcmVhY2hlZCI6IllvdSBoYXZlIHJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVzZXJzIHRvIHNoYXJlIHdpdGguIiwiYXRfbGVhc3Rfb25lIjoiVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgdXNlci4iLCJhdmFpbGFibGUiOiJBdmFpbGFibGUiLCJ1bmF2YWlsYWJsZSI6IlVuYXZhaWxhYmxlIiwiYnJvd3NlX2Vycm9yX2dlbmVyaWMiOiJTb3JyeSwgdGhlcmUgd2FzIGFuIGVycm9yIiwiYnJvd3NlX2Vycm9yX25vX3ZpZGVvcyI6IlNvcnJ5LCBubyB2aWRlb3MgZm91bmQiLCJmb2xsb3ciOiJGb2xsb3ciLCJmb2xsb3dpbmciOiJGb2xsb3dpbmciLCJ1bmZvbGxvdyI6IlVuZm9sbG93IiwidW5mb2xsb3dpbmciOiJVbmZvbGxvd2luZyIsImNvdW50X2NvbW1lbnRzIjp7InNpbmd1bGFyIjoie0NPVU5UfSBjb21tZW50IiwicGx1cmFsIjoie0NPVU5UfSBjb21tZW50cyJ9LCJmaXJzdF9jb21tZW50IjoiQmUgdGhlIGZpcnN0IHRvIGNvbW1lbnRcdTIwMjYiLCJub19jb21tZW50c19mb3JfeW91IjoiRm9yYmlkZGVuLiBZb3UgY2Fubm90IHBvc3QgY29tbWVudHMgb24gdGhpcyBwYWdlLiIsIm9vcHMiOiJPb3BzISIsInBsYXllcl90cnlfYWdhaW4iOiJUaGF0IHdhc24ndCBzdXBwb3NlZCB0byBoYXBwZW4uIFBsZWFzZSB0cnkgYWdhaW4gaW4gYSBmZXcgbWludXRlcy4iLCJkdXJhdGlvbl9pbnB1dF9taW5fZHVyYXRpb24iOiJUaGUgZHVyYXRpb24gY2Fubm90IGJlIGxlc3MgdGhhbiB7TUlOX0RVUkFUSU9OfS4iLCJkdXJhdGlvbl9pbnB1dF9tYXhfZHVyYXRpb24iOiJUaGUgZHVyYXRpb24gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiB7TUFYX0RVUkFUSU9OfS4iLCJkdXJhdGlvbl9pbnB1dF9pbnZhbGlkX2NoYXJhY3RlcnMiOiIwLTkgYW5kIDogYXJlIHRoZSBvbmx5IGFjY2VwdGFibGUgaW5wdXRzLiIsImNsb3NlIjoiQ2xvc2UiLCJleHBhbmQiOiJFeHBhbmQiLCJsb2FkaW5nIjoiTG9hZGluZy4uLiIsInRvcCI6InRvcCIsImFkdmFuY2VkX3NlYXJjaCI6IkFkdmFuY2VkIFNlYXJjaCIsIm5vX3N1Z2dlc3Rpb25zIjoiTm8gc3VnZ2VzdGlvbnMiLCJyZWNlbnRfc2VhcmNoZXMiOiJSZWNlbnQgU2VhcmNoZXMiLCJzZWFyY2hfYWxsIjoiU2VhcmNoIEFsbCBvZiBWaW1lbyIsImVtYWlsX2FuZF9wYXNzd29yZCI6IlBsZWFzZSBlbnRlciB5b3VyIGVtYWlsIGFuZCBwYXNzd29yZCIsImVtYWlsX2FkZHJlc3MiOiJQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIiwibmFtZV9lbWFpbF9hbmRfcGFzc3dvcmQiOiJQbGVhc2UgZW50ZXIgeW91ciBuYW1lLCBlbWFpbCwgYW5kIHBhc3N3b3JkIiwiQWN0aXZpdHkiOiJBY3Rpdml0eSIsIkZvbGxvdyI6IkZvbGxvdyIsIkZvbGxvd2luZyI6IkZvbGxvd2luZyIsIkxvYWRpbmciOiJMb2FkaW5nIiwiTm8gYWN0aXZpdHkgaW4gdGhlIHBhc3QgMzAgZGF5cyI6Ik5vIGFjdGl2aXR5IGluIHRoZSBwYXN0IDMwIGRheXMiLCJTZWUgYWxsIjoiU2VlIGFsbCIsIlVuZm9sbG93IjoiVW5mb2xsb3ciLCJWaWV3IG1lc3NhZ2UiOiJWaWV3IG1lc3NhZ2UiLCJXZSdsbCBhbGVydCB5b3Ugb25jZSBzb21ldGhpbmcgY29vbCBoYXBwZW5zLiI6IldlJ2xsIGFsZXJ0IHlvdSBvbmNlIHNvbWV0aGluZyBjb29sIGhhcHBlbnMuIn07Cjwvc2NyaXB0PgoKCiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvcmVhY3RfcHJvZF9jb21iaW5lZC5taW4uanM/YjZlZTdhNGUiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L2V4Y2VwdGlvbl9jb21iaW5lZC5taW4uanM/MGM3YWFlODQiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L2FjdGl2aXR5X3RvcG5hdl9jb21iaW5lZC5taW4uanM/NTM5YjZjODMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L21vZHVsZXMvZ2xvYmFsL2FibGluY29sbi9ob3N0X3ZpZGVvcy5taW4uanM/NjVkYzQ1MWEiPjwvc2NyaXB0PgoKIDxzY3JpcHQgYXN5bmMgc3JjPSIvL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndG0uanM/aWQ9R1RNLVJCS0smbD1fZ3RtIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiBvblZpbWVvRG9tUmVhZHkoZSkgewogICAKIChmdW5jdGlvbigpIHsKIGlmICh0eXBlb2YgdmltZW8gIT09ICd1bmRlZmluZWQnICYmIHZpbWVvLmN1cl91c2VyKSB7CiB2aW1lby5jb25maWcuYXBpID0ge307CiB2aW1lby5jb25maWcuYXBpLnVybCA9ICdhcGkudmltZW8uY29tJzsKIHZpbWVvLmNvbmZpZy5hcGkuand0ID0gICdleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKMElqb3hPVFE1TXpNMk9URXNJbVY0Y0NJNk1UUTVNRGN6TkRnM01IMC5EakR6UkFIUnZFNEVFd1V4SGdiTjZpd29mSlBTWTIyekRRamNKaUNWNFlvJzsKIHZpbWVvLmNvbmZpZy5hcGkudmVyc2lvbiA9ICczLjMnOwogfQogfSgpKTsKCiB3aW5kb3cudmltZW8gPSB3aW5kb3cudmltZW8gfHwge307CiB3aW5kb3cudmltZW8uZXhjZXB0aW9uX2RhdGEgPSB7InRpdGxlIjoiU29ycnksIHdlIGNvdWxkblx1MjAxOXQgZmluZCB0aGF0IHBhZ2UiLCJtZXNzYWdlIjoiIiwibm90aWZpY2F0aW9uIjoiPGRpdiBjbGFzcz1cImV4Y2VwdGlvbl9ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbFwiPlxuIDxkaXYgY2xhc3M9XCJpcmlzX25vdGlmaWNhdGlvbi0tdXBzZWxsLWljb25cIj5cbiA8c3BhbiBjbGFzcz1cImlyaXNfaWMgaXMtLTE2XCI+PHN2ZyB4bWxucz1cImh0dHA6XC9cL3d3dy53My5vcmdcLzIwMDBcL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj48cGF0aCBkPVwiTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6TTcgNGgydjJIN1Y0em0wIDNoMnY1SDdWN3pcIlwvPjxcL3N2Zz48XC9zcGFuPlxuIDxcL2Rpdj5cblxuIDxkaXYgY2xhc3M9XCJpcmlzX25vdGlmaWNhdGlvbi1oZWFkZXJcIj5cbiA8c3Ryb25nPlJlYXNvbnMgeW91IG1pZ2h0IGJlIHNlZWluZyB0aGlzIHBhZ2U8XC9zdHJvbmc+XG4gPFwvZGl2PlxuXG4gPHVsIGNsYXNzPVwiaXJpc19ub3RpZmljYXRpb24tbGlzdFwiPlxuICA8bGk+SXQgZXhpc3RzLCBidXQgeW91IGRvblx1MjAxOXQgaGF2ZSBwZXJtaXNzaW9uIHRvIHNlZSBpdCwgb3IgeW91IG5lZWQgdG8gPGEgb25jbGljaz1cInZpbWVvLlNlc3Npb24uY3JlYXRlKClcIj5sb2cgaW48XC9hPi48XC9saT5cbiAgPGxpPk5vdGhpbmcgaGFzIGV2ZXIgZXhpc3RlZCBoZXJlLiBTcG9va3kuPFwvbGk+XG4gPGxpPlNvbWV0aGluZyBvbmNlIGxpdmVkIGhlcmUsIGJ1dCBoYXMgYmVlbiBkZWxldGVkLjxcL2xpPlxuIDxcL3VsPlxuPFwvZGl2PlxuIiwic2VhcmNoIjp0cnVlLCJ2aWRlb3MiOlt7InNldHRpbmdzIjp7InRpdGxlIjp7InRleHQiOiJEaXNjb3ZlciB2aWRlb3MgZnJvbSB0aGUgd29ybGRcdTIwMTlzIGJlc3QgY3JlYXRvcnMiLCJzaG9ydF90ZXh0IjoiRGlzY292ZXIgYW1hemluZyB2aWRlb3MifSwidmlkZW9zIjpbeyJjbGlwX2lkIjoyMTAyMTE4MDAsImlzX3N0YWZmcGljayI6dHJ1ZSwiaXNfZmVhdHVyZWQiOmZhbHNlLCJ2b2RfaWQiOm51bGwsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU5OTMzMjNfMzkweDIyMC5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU5OTMzMjNfNzgweDQzOS5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU5OTMzMjNfMTU2MHg4NzguanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1OTkzMzIzXzMxMjB4MTc1Ni5qcGciLCJhbHQiOiJNT1RIRVIgLSBtb3RoZXIifSwidXBsb2FkZWRfb24iOiIxNCBob3VycyBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjE4NiwiZm9ybWF0dGVkIjoiMDM6MDYifSwicXVpY2tzdGF0cyI6eyJ0b3RhbF9jb21tZW50cyI6eyJyYXciOjE0LCJmb3JtYXR0ZWQiOiIxNCJ9LCJ0b3RhbF9saWtlcyI6eyJyYXciOjE1OCwiZm9ybWF0dGVkIjoiMTU4In0sInRvdGFsX3BsYXlzIjp7InJhdyI6MCwiZm9ybWF0dGVkIjoiMCJ9fSwidGl0bGUiOiJNT1RIRVIiLCJ1cmwiOiJcLzIxMDIxMTgwMCIsInVzZXIiOnsiaWQiOjIyNjUyMTksIm5hbWUiOiJNb3JnYW4gSm91cXVhbmQiLCJ1cmwiOiJcL21vcmdhbmpvdXF1YW5kIiwiYWNjb3VudF90eXBlIjoicGx1cyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjQzODU3Ml8xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjQzODU3Ml8zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjQzODU3Ml82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjQzODU3Ml8xMjh4MTI4LmpwZyJ9fSwiYXV0b3BsYXkiOmZhbHNlLCJzZWVrdGltZSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9LHsiY2xpcF9pZCI6MjA3NzYzMjUzLCJpc19zdGFmZnBpY2siOnRydWUsImlzX2ZlYXR1cmVkIjpmYWxzZSwidm9kX2lkIjpudWxsLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIyOTQwNDg3XzM5MHgyMjAuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIyOTQwNDg3Xzc4MHg0MzkuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIyOTQwNDg3XzE1NjB4ODc4LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyMjk0MDQ4N18zMTIweDE3NTYuanBnIiwiYWx0IjoiVGhlIEJpcnRoIE9mIEEgRHVnb3V0IENhbm9lIGJ5IE5vcnRobWVuIC0gd29vZCBjYXJ2aW5nIn0sInVwbG9hZGVkX29uIjoiMiB3ZWVrcyBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjExMjQsImZvcm1hdHRlZCI6IjE4OjQ0In0sInF1aWNrc3RhdHMiOnsidG90YWxfY29tbWVudHMiOnsicmF3IjoxNCwiZm9ybWF0dGVkIjoiMTQifSwidG90YWxfbGlrZXMiOnsicmF3IjoyMDQsImZvcm1hdHRlZCI6IjIwNCJ9LCJ0b3RhbF9wbGF5cyI6eyJyYXciOjM1ODYsImZvcm1hdHRlZCI6IjM1ODYifX0sInRpdGxlIjoiVGhlIEJpcnRoIE9mIEEgRHVnb3V0IENhbm9lIGJ5IE5vcnRobWVuIiwidXJsIjoiXC8yMDc3NjMyNTMiLCJ1c2VyIjp7ImlkIjoxMDU2NTYwNSwibmFtZSI6Ik5vcnRobWVuIiwidXJsIjoiXC9ub3J0aG1lbiIsImFjY291bnRfdHlwZSI6InBybyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNzcyMDU4OF8xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNzcyMDU4OF8zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNzcyMDU4OF82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNzcyMDU4OF8xMjh4MTI4LmpwZyJ9fSwiYXV0b3BsYXkiOmZhbHNlLCJzZWVrdGltZSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9LHsiY2xpcF9pZCI6MjA0Nzc2NjM2LCJpc19zdGFmZnBpY2siOnRydWUsImlzX2ZlYXR1cmVkIjpmYWxzZSwidm9kX2lkIjpudWxsLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjE5MzY4OTYzXzM5MHgyMjAuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjE5MzY4OTYzXzc4MHg0MzkuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjE5MzY4OTYzXzE1NjB4ODc4LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYxOTM2ODk2M18zMTIweDE3NTYuanBnIiwiYWx0IjoiTmFjaHRoZXhlbiAtIE5pZ2h0IFdpdGNoZXMifSwidXBsb2FkZWRfb24iOiIxIG1vbnRoIGFnbyIsImR1cmF0aW9uIjp7InJhdyI6NDkyLCJmb3JtYXR0ZWQiOiIwODoxMiJ9LCJxdWlja3N0YXRzIjp7InRvdGFsX2NvbW1lbnRzIjp7InJhdyI6MTEsImZvcm1hdHRlZCI6IjExIn0sInRvdGFsX2xpa2VzIjp7InJhdyI6MjIwLCJmb3JtYXR0ZWQiOiIyMjAifSwidG90YWxfcGxheXMiOnsicmF3Ijo2ODAzLCJmb3JtYXR0ZWQiOiI2ODAzIn19LCJ0aXRsZSI6Ik5hY2h0aGV4ZW4iLCJ1cmwiOiJcLzIwNDc3NjYzNiIsInVzZXIiOnsiaWQiOjMxOTQzMjQsIm5hbWUiOiJUaGUgQW5pbWF0aW9uIFdvcmtzaG9wIiwidXJsIjoiXC90aGVhbmltYXRpb253b3Jrc2hvcCIsImFjY291bnRfdHlwZSI6InBsdXMiLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTY2NTM1MjNfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTY2NTM1MjNfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTY2NTM1MjNfNjR4NjQuanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTY2NTM1MjNfMTI4eDEyOC5qcGcifX0sImF1dG9wbGF5IjpmYWxzZSwic2Vla3RpbWUiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7ImNsaXBfaWQiOjE3MTc0NjM4MSwiaXNfc3RhZmZwaWNrIjp0cnVlLCJpc19mZWF0dXJlZCI6ZmFsc2UsInZvZF9pZCI6bnVsbCwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzU3NzI5MjIwMV8zOTB4MjIwLmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzU3NzI5MjIwMV83ODB4NDM5LmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzU3NzI5MjIwMV8xNTYweDg3OC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC81NzcyOTIyMDFfMzEyMHgxNzU2LmpwZyIsImFsdCI6IkJheWEgLSBHYXRlIDIxMiBcLyBHaW1tZSBUaGF0IERpdmUgLSBpc2F3am9obmZpcnN0In0sInVwbG9hZGVkX29uIjoiOSBtb250aHMgYWdvIiwiZHVyYXRpb24iOnsicmF3IjozNjEsImZvcm1hdHRlZCI6IjA2OjAxIn0sInF1aWNrc3RhdHMiOnsidG90YWxfY29tbWVudHMiOnsicmF3IjoxOSwiZm9ybWF0dGVkIjoiMTkifSwidG90YWxfbGlrZXMiOnsicmF3Ijo1MzIsImZvcm1hdHRlZCI6IjUzMiJ9LCJ0b3RhbF9wbGF5cyI6eyJyYXciOjYyMTksImZvcm1hdHRlZCI6IjYyMTkifX0sInRpdGxlIjoiQmF5YSAtIEdhdGUgMjEyIFwvIEdpbW1lIFRoYXQgRGl2ZSIsInVybCI6IlwvMTcxNzQ2MzgxIiwidXNlciI6eyJpZCI6MzMzODcwNywibmFtZSI6IkpvaG4gQ2hyaXN0aWFuIEZlcm5lciBBcGFsbmVzIiwidXJsIjoiXC9pc2F3am9obmZpcnN0IiwiYWNjb3VudF90eXBlIjoicGx1cyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC83NzkwNTQ5XzE2eDE2LmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzc3OTA1NDlfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvNzc5MDU0OV82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC83NzkwNTQ5XzEyOHgxMjguanBnIn19LCJhdXRvcGxheSI6ZmFsc2UsInNlZWt0aW1lIjpmYWxzZSwid2F0Y2hfbGF0ZXIiOmZhbHNlLCJpc19zcGF0aWFsIjpmYWxzZX1dfX0seyJzZXR0aW5ncyI6eyJ0aXRsZSI6eyJ0ZXh0IjoiUHVyY2hhc2UgaGlnaC1xdWFsaXR5IGZpbG1zIGFuZCBzZXJpZXMiLCJzaG9ydF90ZXh0IjoiUHVyY2hhc2UgZmlsbXMgYW5kIHNlcmllcyJ9LCJ2aWRlb3MiOlt7InZvZF9pZCI6MTAzNzAxLCJ0cmFpbGVyX2lkIjoxNzY5NTQzNzIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0NjY3NzhfMzkweDIxOS5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0NjY3NzhfNzgweDQzOS5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0NjY3NzhfMTU2MHg4NzguanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDY2Nzc4XzMxMjB4MTc1Ni5qcGciLCJhbHQiOiJDb21lIERvd24gTW9sbHkgLSB0cmliZWNhIGZpbG0gZmVzdGl2YWwifSwidXBsb2FkZWRfb24iOiI0IGRheXMgYWdvIiwiZHVyYXRpb24iOnsicmF3Ijo0ODM3LCJmb3JtYXR0ZWQiOiIwMToyMDozNyJ9LCJ0aXRsZSI6IkNvbWUgRG93biBNb2xseSIsInVybCI6Ilwvb25kZW1hbmRcL2NvbWVkb3dubW9sbHkiLCJ1c2VyIjp7ImlkIjoxMjI5MzUwLCJuYW1lIjoiRmFjdG9yeSAyNSIsInVybCI6IlwvZmFjdG9yeTI1IiwiYWNjb3VudF90eXBlIjoicHJvIiwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE4MDA1XzE2eDE2LmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE4MDA1XzMyeDMyLmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE4MDA1XzY0eDY0LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE4MDA1XzEyOHgxMjguanBnIn19LCJwcmljZSI6IiQ0LjI1IiwiYXV0b3BsYXkiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7InZvZF9pZCI6MTAzNzM0LCJ0cmFpbGVyX2lkIjoyMDU0MjI3MDUsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0MjQyNDNfMzkweDIxOS5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0MjQyNDNfNzgweDQzOS5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0MjQyNDNfMTU2MHg4NzguanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDI0MjQzXzMxMjB4MTc1Ni5qcGciLCJhbHQiOiJCbG9vbWluIE11ZCBTaHVmZmxlIC0gSmFtZXMgUmFuc29uZSJ9LCJ1cGxvYWRlZF9vbiI6IjQgZGF5cyBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjQ1MTAsImZvcm1hdHRlZCI6IjAxOjE1OjEwIn0sInRpdGxlIjoiQmxvb21pbiBNdWQgU2h1ZmZsZSIsInVybCI6Ilwvb25kZW1hbmRcL2Jsb29taW5tdWRzaHVmZmxlIiwidXNlciI6eyJpZCI6MTIyOTM1MCwibmFtZSI6IkZhY3RvcnkgMjUiLCJ1cmwiOiJcL2ZhY3RvcnkyNSIsImFjY291bnRfdHlwZSI6InBybyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xODAwNV8xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xODAwNV8zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xODAwNV82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xODAwNV8xMjh4MTI4LmpwZyJ9fSwicHJpY2UiOiIkNC4yNSIsImF1dG9wbGF5IjpmYWxzZSwid2F0Y2hfbGF0ZXIiOmZhbHNlLCJpc19zcGF0aWFsIjpmYWxzZX0seyJ2b2RfaWQiOjEwMzc0NywidHJhaWxlcl9pZCI6MjA3Njg2MTQ0LCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDMzMjk0XzM5MHgyMTkuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDMzMjk0Xzc4MHg0MzkuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDMzMjk0XzE1NjB4ODc4LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTQzMzI5NF8zMTIweDE3NTYuanBnIiwiYWx0IjoiVGhleSBMb29rIExpa2UgUGVvcGxlIC0gcGVvcGxlIn0sInVwbG9hZGVkX29uIjoiNCBkYXlzIGFnbyIsImR1cmF0aW9uIjp7InJhdyI6NDc3MSwiZm9ybWF0dGVkIjoiMDE6MTk6MzEifSwidGl0bGUiOiJUaGV5IExvb2sgTGlrZSBQZW9wbGUiLCJ1cmwiOiJcL29uZGVtYW5kXC90aGV5bG9va2xpa2VwZW9wbGUiLCJ1c2VyIjp7ImlkIjo0NTk1MDYyLCJuYW1lIjoiR3Jhdml0YXMgVmVudHVyZXMiLCJ1cmwiOiJcL2dyYXZpdGFzdmVudHVyZXMiLCJhY2NvdW50X3R5cGUiOiJidXNpbmVzcyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC83MTEzMTY3XzE2eDE2LmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzcxMTMxNjdfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvNzExMzE2N182NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC83MTEzMTY3XzEyOHgxMjguanBnIn19LCJwcmljZSI6IiQzLjk5IiwiYXV0b3BsYXkiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7InZvZF9pZCI6MTAyOTUyLCJ0cmFpbGVyX2lkIjoyMDc4NzM0MzksInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZvZF9wYWdlX3RodW1ibmFpbFwvMjQ4NzhfMzkweDIxOSIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdm9kX3BhZ2VfdGh1bWJuYWlsXC8yNDg3OF83ODB4NDM5Iiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92b2RfcGFnZV90aHVtYm5haWxcLzI0ODc4XzE1NjB4ODc4Iiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92b2RfcGFnZV90aHVtYm5haWxcLzI0ODc4XzMxMjB4MTc1NSIsImFsdCI6Ik1FTU9SWSJ9LCJ1cGxvYWRlZF9vbiI6IjUgZGF5cyBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjUzNjcsImZvcm1hdHRlZCI6IjAxOjI5OjI3In0sInRpdGxlIjoiTUVNT1JZIHByZXNlbnRzOiBQcm9ncmFtIE5vLiAyIiwidXJsIjoiXC9vbmRlbWFuZFwvcHJvZ3JhbTIiLCJ1c2VyIjp7ImlkIjozMDQzMzU0MCwibmFtZSI6Ik1FTU9SWSIsInVybCI6IlwvbWVtb3J5aXMiLCJhY2NvdW50X3R5cGUiOiJwcm8iLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTU1ODU3NDNfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTU1ODU3NDNfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTU1ODU3NDNfNjR4NjQuanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTU1ODU3NDNfMTI4eDEyOC5qcGcifX0sInByaWNlIjoiJDguOTkiLCJhdXRvcGxheSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9XX19LHsic2V0dGluZ3MiOnsidGl0bGUiOnsidGV4dCI6IldhdGNoIGh1bWFuLWN1cmF0ZWQgU3RhZmYgUGlja3MiLCJzaG9ydF90ZXh0IjoiV2F0Y2ggU3RhZmYgUGlja3MifSwidmlkZW9zIjpbeyJjbGlwX2lkIjoyMDkyNTc1NjQsImlzX3N0YWZmcGljayI6dHJ1ZSwiaXNfZmVhdHVyZWQiOmZhbHNlLCJ2b2RfaWQiOm51bGwsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU3NzgyNDdfMzkweDIyMC5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU3NzgyNDdfNzgweDQzOS5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU3NzgyNDdfMTU2MHg4NzguanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1Nzc4MjQ3XzMxMjB4MTc1Ni5qcGciLCJhbHQiOiJFbHV2aXVtIC0gUmVnZW5lcmF0aXZlIEJlaW5nIChPZmZpY2lhbCBWaWRlbykgLSBFbHV2aXVtIn0sInVwbG9hZGVkX29uIjoiMSB3ZWVrIGFnbyIsImR1cmF0aW9uIjp7InJhdyI6NDQxLCJmb3JtYXR0ZWQiOiIwNzoyMSJ9LCJxdWlja3N0YXRzIjp7InRvdGFsX2NvbW1lbnRzIjp7InJhdyI6NywiZm9ybWF0dGVkIjoiNyJ9LCJ0b3RhbF9saWtlcyI6eyJyYXciOjE0NiwiZm9ybWF0dGVkIjoiMTQ2In0sInRvdGFsX3BsYXlzIjp7InJhdyI6Mjk4MywiZm9ybWF0dGVkIjoiMjk4MyJ9fSwidGl0bGUiOiJFbHV2aXVtIC0gUmVnZW5lcmF0aXZlIEJlaW5nIChPZmZpY2lhbCBWaWRlbykiLCJ1cmwiOiJcLzIwOTI1NzU2NCIsInVzZXIiOnsiaWQiOjEyODgxMDA4LCJuYW1lIjoiU3RhcyBTYW50aW1vdiIsInVybCI6Ilwvc2FudGltb3YiLCJhY2NvdW50X3R5cGUiOiJwbHVzIiwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzg4NDkxNDlfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvODg0OTE0OV8zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC84ODQ5MTQ5XzY0eDY0LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzg4NDkxNDlfMTI4eDEyOC5qcGcifX0sImF1dG9wbGF5IjpmYWxzZSwic2Vla3RpbWUiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7ImNsaXBfaWQiOjIwOTY5NDMwMCwiaXNfc3RhZmZwaWNrIjp0cnVlLCJpc19mZWF0dXJlZCI6ZmFsc2UsInZvZF9pZCI6bnVsbCwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTMwMzc2Nl8zOTB4MjIwLmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTMwMzc2Nl83ODB4NDM5LmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTMwMzc2Nl8xNTYweDg3OC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjUzMDM3NjZfMzEyMHgxNzU2LmpwZyIsImFsdCI6IkJ1bGxkb3plciAtIG5vd25lc3MifSwidXBsb2FkZWRfb24iOiI0IGRheXMgYWdvIiwiZHVyYXRpb24iOnsicmF3IjoyNjYsImZvcm1hdHRlZCI6IjA0OjI2In0sInF1aWNrc3RhdHMiOnsidG90YWxfY29tbWVudHMiOnsicmF3IjozNCwiZm9ybWF0dGVkIjoiMzQifSwidG90YWxfbGlrZXMiOnsicmF3IjoyNjIsImZvcm1hdHRlZCI6IjI2MiJ9LCJ0b3RhbF9wbGF5cyI6eyJyYXciOjU5OTcsImZvcm1hdHRlZCI6IjU5OTcifX0sInRpdGxlIjoiQnVsbGRvemVyIiwidXJsIjoiXC8yMDk2OTQzMDAiLCJ1c2VyIjp7ImlkIjoxMDk5MDgyLCJuYW1lIjoiSXRzYm9uZ29ib3kiLCJ1cmwiOiJcL2l0c2JvbmdvYm95IiwiYWNjb3VudF90eXBlIjoicGx1cyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjE4NTAxN18xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjE4NTAxN18zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjE4NTAxN182NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xNjE4NTAxN18xMjh4MTI4LmpwZyJ9fSwiYXV0b3BsYXkiOmZhbHNlLCJzZWVrdGltZSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9LHsiY2xpcF9pZCI6MjA4NDY0OTY2LCJpc19zdGFmZnBpY2siOnRydWUsImlzX2ZlYXR1cmVkIjpmYWxzZSwidm9kX2lkIjpudWxsLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIzNzg5OTM3XzM5MHgyMjAuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIzNzg5OTM3Xzc4MHg0MzkuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjIzNzg5OTM3XzE1NjB4ODc4LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyMzc4OTkzN18zMTIweDE3NTYuanBnIiwiYWx0IjoiVG9tIE1jQ2FydGVuIn0sInVwbG9hZGVkX29uIjoiMiB3ZWVrcyBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjIzOCwiZm9ybWF0dGVkIjoiMDM6NTgifSwicXVpY2tzdGF0cyI6eyJ0b3RhbF9jb21tZW50cyI6eyJyYXciOjM5LCJmb3JtYXR0ZWQiOiIzOSJ9LCJ0b3RhbF9saWtlcyI6eyJyYXciOjIwNTEsImZvcm1hdHRlZCI6IjIwNTEifSwidG90YWxfcGxheXMiOnsicmF3IjoxMzIzMzgsImZvcm1hdHRlZCI6IjEzMksifX0sInRpdGxlIjoiU3BhY2UgU2V4IGlzIFNlcmlvdXMgQnVzaW5lc3MiLCJ1cmwiOiJcLzIwODQ2NDk2NiIsInVzZXIiOnsiaWQiOjI0NzEwOTQsIm5hbWUiOiJUb20gTWNDYXJ0ZW4iLCJ1cmwiOiJcL21jY2FydGVuIiwiYWNjb3VudF90eXBlIjoiYmFzaWMiLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTc3ODc2ODVfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTc3ODc2ODVfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTc3ODc2ODVfNjR4NjQuanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTc3ODc2ODVfMTI4eDEyOC5qcGcifX0sImF1dG9wbGF5IjpmYWxzZSwic2Vla3RpbWUiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7ImNsaXBfaWQiOjIwNzUzNTMwMiwiaXNfc3RhZmZwaWNrIjp0cnVlLCJpc19mZWF0dXJlZCI6ZmFsc2UsInZvZF9pZCI6bnVsbCwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNDQ3NjY2Ml8zOTB4MjIwLmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNDQ3NjY2Ml83ODB4NDM5LmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNDQ3NjY2Ml8xNTYweDg3OC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjQ0NzY2NjJfMzEyMHgxNzU2LmpwZyIsImFsdCI6IkJ5IFRoZSBOYW1lIG9mIEJvc3RvbiAtIGFuaW1hdGlvbiJ9LCJ1cGxvYWRlZF9vbiI6IjIgd2Vla3MgYWdvIiwiZHVyYXRpb24iOnsicmF3IjoxNDQsImZvcm1hdHRlZCI6IjAyOjI0In0sInF1aWNrc3RhdHMiOnsidG90YWxfY29tbWVudHMiOnsicmF3IjoxMywiZm9ybWF0dGVkIjoiMTMifSwidG90YWxfbGlrZXMiOnsicmF3Ijo1NzcsImZvcm1hdHRlZCI6IjU3NyJ9LCJ0b3RhbF9wbGF5cyI6eyJyYXciOjExMzk5MCwiZm9ybWF0dGVkIjoiMTE0SyJ9fSwidGl0bGUiOiJCeSBUaGUgTmFtZSBvZiBCb3N0b24iLCJ1cmwiOiJcLzIwNzUzNTMwMiIsInVzZXIiOnsiaWQiOjkzMDc5MjMsIm5hbWUiOiJHcmFudCBLb2x0b24iLCJ1cmwiOiJcL2dyYW50a29sdG9uIiwiYWNjb3VudF90eXBlIjoicGx1cyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xMDE1MTcxMl8xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xMDE1MTcxMl8zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xMDE1MTcxMl82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xMDE1MTcxMl8xMjh4MTI4LmpwZyJ9fSwiYXV0b3BsYXkiOmZhbHNlLCJzZWVrdGltZSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9XX19XSwiYWRfY29uZmlnIjp7Im5ldHdvcmtfaWQiOiI1NDU0OTU0NCIsInVuaXRfbmFtZSI6ImVycm9ycGFnZSIsInNpemVzIjpbMzAwLDI1MF19LCJ3YXRjaF9sYXRlcl9jbGlwX2lkcyI6W119OwoKIG5ldyB3aW5kb3cuRXhjZXB0aW9uKCk7CiAgCiAKICB9CgogICQoZG9jdW1lbnQpLnJlYWR5KG9uVmltZW9Eb21SZWFkeSk7CiAgPC9zY3JpcHQ+CgoKIDwvYm9keT4KPC9odG1sPgo=
126
- http_version:
127
- recorded_at: Mon, 27 Mar 2017 21:01:10 GMT
126
+ PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICAgIDxoZWFkPgogICAgICAgIAo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CjxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE5ODg0MDI4OTYzIj4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Ii8vcGxheWVyLnZpbWVvLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9pLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9mLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvc2VhcmNoL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iVmltZW8iPgo8bGluayByZWw9ImxvZ28iIHR5cGU9ImltYWdlL3N2ZyIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9sb2dvLnN2ZyI+CgoKICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTUuMCx1c2VyLXNjYWxhYmxlPXllcyI+CiAgICAKCiAgICAgICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlNvcnJ5LCB3ZSBjb3VsZG4mcnNxdW87dCBmaW5kIHRoYXQgcGFnZSI+CiAgICAgICAgPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4Ij4KCgoKCiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiIGhyZWY9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9tYWluLXRvdWNoXzE4MCI+Cgo8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdmcvbGVnYWN5X3ZpZXdfc3VwcG9ydC9pcmlzX2ljb25fdl82NC5zdmc/ZTEwMTNkZWI2ZTg0NDcwYzc1ZDA3NWY4NmRiM2NkNGQ5NGQyMTgxNiIgY29sb3I9IiMxNzI3MmUiPgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9pbWFnZXNfdjYvZmF2aWNvbi5pY28/ZTEwMTNkZWI2ZTg0NDcwYzc1ZDA3NWY4NmRiM2NkNGQ5NGQyMTgxNiIgZGF0YS1wbGF5PSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vcGxheV8zMiIgZGF0YS1wYXVzZT0iaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9mYXZpY29uL3BhdXNlXzMyIj4KCjxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tVGlsZUltYWdlIiBjb250ZW50PSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vbWFpbi10b3VjaF8xNDQiPgo8bWV0YSBuYW1lPSJtc2FwcGxpY2F0aW9uLVRpbGVDb2xvciIgY29udGVudD0iIzAwYWRlZiI+CiAgICAgICAgPHRpdGxlPlZpbWVVaE9oPC90aXRsZT4KICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAvLyBGaXJzdCBJbnB1dCBEZWxheSB0cmFja2luZy4gSGlnaCBwcmlvcml0eSBsb2FkaW5nIHRvIG5vdCBtaXNzIGV2ZW50CiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWVMYWJzL2ZpcnN0LWlucHV0LWRlbGF5L2Jsb2IvbWFzdGVyL2Rpc3QvZmlyc3QtaW5wdXQtZGVsYXkubWluLmpzCiAgICAgICAgICAgICFmdW5jdGlvbihuLGUpe3ZhciB0LG8saSxjPVtdLGY9e3Bhc3NpdmU6ITAsY2FwdHVyZTohMH0scj1uZXcgRGF0ZSxhPSJwb2ludGVydXAiLHU9InBvaW50ZXJjYW5jZWwiO2Z1bmN0aW9uIHAobixjKXt0fHwodD1jLG89bixpPW5ldyBEYXRlLHcoZSkscygpKX1mdW5jdGlvbiBzKCl7bz49MCYmbzxpLXImJihjLmZvckVhY2goZnVuY3Rpb24obil7bihvLHQpfSksYz1bXSl9ZnVuY3Rpb24gbCh0KXtpZih0LmNhbmNlbGFibGUpe3ZhciBvPSh0LnRpbWVTdGFtcD4xZTEyP25ldyBEYXRlOnBlcmZvcm1hbmNlLm5vdygpKS10LnRpbWVTdGFtcDsicG9pbnRlcmRvd24iPT10LnR5cGU/ZnVuY3Rpb24odCxvKXtmdW5jdGlvbiBpKCl7cCh0LG8pLHIoKX1mdW5jdGlvbiBjKCl7cigpfWZ1bmN0aW9uIHIoKXtlKGEsaSxmKSxlKHUsYyxmKX1uKGEsaSxmKSxuKHUsYyxmKX0obyx0KTpwKG8sdCl9fWZ1bmN0aW9uIHcobil7WyJjbGljayIsIm1vdXNlZG93biIsImtleWRvd24iLCJ0b3VjaHN0YXJ0IiwicG9pbnRlcmRvd24iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe24oZSxsLGYpfSl9dyhuKSxzZWxmLnBlcmZNZXRyaWNzPXNlbGYucGVyZk1ldHJpY3N8fHt9LHNlbGYucGVyZk1ldHJpY3Mub25GaXJzdElucHV0RGVsYXk9ZnVuY3Rpb24obil7Yy5wdXNoKG4pLHMoKX19KGFkZEV2ZW50TGlzdGVuZXIscmVtb3ZlRXZlbnRMaXN0ZW5lcik7CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgIC8vIENyZWF0ZSBQZXJmb3JtYW5jZU9ic2VydmVyIGZvciB0cmFja2luZyBUVEkKICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWVMYWJzL3R0aS1wb2x5ZmlsbAogICAgICAgICAgIWZ1bmN0aW9uKCl7aWYoJ1BlcmZvcm1hbmNlTG9uZ1Rhc2tUaW1pbmcnIGluIHdpbmRvdyl7dmFyIGc9d2luZG93Ll9fdHRpPXtlOltdfTsKICAgICAgICAgIGcubz1uZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihmdW5jdGlvbihsKXtnLmU9Zy5lLmNvbmNhdChsLmdldEVudHJpZXMoKSl9KTsKICAgICAgICAgIGcuby5vYnNlcnZlKHtlbnRyeVR5cGVzOlsnbG9uZ3Rhc2snXX0pfX0oKTsKICAgICAgICA8L3NjcmlwdD4KICAgICAgICA8c2NyaXB0PgogICAgICAgICAgLy8gTmV3IFJlbGljIEFnZW50CiAgICAgICAgICA7d2luZG93Lk5SRVVNfHwoTlJFVU09e30pO05SRVVNLmluaXQ9e2Rpc3RyaWJ1dGVkX3RyYWNpbmc6e2VuYWJsZWQ6dHJ1ZX0scHJpdmFjeTp7Y29va2llc19lbmFibGVkOnRydWV9fTsKICAgICAgICAgIHdpbmRvdy5OUkVVTXx8KE5SRVVNPXt9KSxfX25yX3JlcXVpcmU9ZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIobil7aWYoIWVbbl0pe3ZhciBvPWVbbl09e2V4cG9ydHM6e319O3Rbbl1bMF0uY2FsbChvLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG89dFtuXVsxXVtlXTtyZXR1cm4gcihvfHxlKX0sbyxvLmV4cG9ydHMpfXJldHVybiBlW25dLmV4cG9ydHN9aWYoImZ1bmN0aW9uIj09dHlwZW9mIF9fbnJfcmVxdWlyZSlyZXR1cm4gX19ucl9yZXF1aXJlO2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKXIobltvXSk7cmV0dXJuIHJ9KHsxOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXt0cnl7cy5jb25zb2xlJiZjb25zb2xlLmxvZyh0KX1jYXRjaChlKXt9fXZhciBvLGk9dCgiZWUiKSxhPXQoMjUpLHM9e307dHJ5e289bG9jYWxTdG9yYWdlLmdldEl0ZW0oIl9fbnJfZmxhZ3MiKS5zcGxpdCgiLCIpLGNvbnNvbGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLmxvZyYmKHMuY29uc29sZT0hMCxvLmluZGV4T2YoImRldiIpIT09LTEmJihzLmRldj0hMCksby5pbmRleE9mKCJucl9kZXYiKSE9PS0xJiYocy5uckRldj0hMCkpfWNhdGNoKGMpe31zLm5yRGV2JiZpLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7cih0LnN0YWNrKX0pLHMuZGV2JiZpLm9uKCJmbi1lcnIiLGZ1bmN0aW9uKHQsZSxuKXtyKG4uc3RhY2spfSkscy5kZXYmJihyKCJOUiBBR0VOVCBJTiBERVZFTE9QTUVOVCBNT0RFIikscigiZmxhZ3M6ICIrYShzLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHR9KS5qb2luKCIsICIpKSl9LHt9XSwyOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbixyLHMpe3RyeXtsP2wtPTE6byhzfHxuZXcgVW5jYXVnaHRFeGNlcHRpb24odCxlLG4pLCEwKX1jYXRjaChmKXt0cnl7aSgiaWVyciIsW2YsYy5ub3coKSwhMF0pfWNhdGNoKGQpe319cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHUmJnUuYXBwbHkodGhpcyxhKGFyZ3VtZW50cykpfWZ1bmN0aW9uIFVuY2F1Z2h0RXhjZXB0aW9uKHQsZSxuKXt0aGlzLm1lc3NhZ2U9dHx8IlVuY2F1Z2h0IGVycm9yIHdpdGggbm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiIsdGhpcy5zb3VyY2VVUkw9ZSx0aGlzLmxpbmU9bn1mdW5jdGlvbiBvKHQsZSl7dmFyIG49ZT9udWxsOmMubm93KCk7aSgiZXJyIixbdCxuXSl9dmFyIGk9dCgiaGFuZGxlIiksYT10KDI2KSxzPXQoImVlIiksYz10KCJsb2FkZXIiKSxmPXQoImdvcyIpLHU9d2luZG93Lm9uZXJyb3IsZD0hMSxwPSJuckBzZWVuRXJyb3IiLGw9MDtjLmZlYXR1cmVzLmVycj0hMCx0KDEpLHdpbmRvdy5vbmVycm9yPXI7dHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaChoKXsic3RhY2siaW4gaCYmKHQoMTMpLHQoMTIpLCJhZGRFdmVudExpc3RlbmVyImluIHdpbmRvdyYmdCg2KSxjLnhocldyYXBwYWJsZSYmdCgxNCksZD0hMCl9cy5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXtkJiYobCs9MSl9KSxzLm9uKCJmbi1lcnIiLGZ1bmN0aW9uKHQsZSxuKXtkJiYhbltwXSYmKGYobixwLGZ1bmN0aW9uKCl7cmV0dXJuITB9KSx0aGlzLnRocm93bj0hMCxvKG4pKX0pLHMub24oImZuLWVuZCIsZnVuY3Rpb24oKXtkJiYhdGhpcy50aHJvd24mJmw+MCYmKGwtPTEpfSkscy5vbigiaW50ZXJuYWwtZXJyb3IiLGZ1bmN0aW9uKHQpe2koImllcnIiLFt0LGMubm93KCksITBdKX0pfSx7fV0sMzpbZnVuY3Rpb24odCxlLG4pe3QoImxvYWRlciIpLmZlYXR1cmVzLmlucz0hMH0se31dLDQ6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7TCsrLEM9Zy5oYXNoLHRoaXNbdV09eS5ub3coKX1mdW5jdGlvbiBvKCl7TC0tLGcuaGFzaCE9PUMmJmkoMCwhMCk7dmFyIHQ9eS5ub3coKTt0aGlzW2hdPX5+dGhpc1toXSt0LXRoaXNbdV0sdGhpc1tkXT10fWZ1bmN0aW9uIGkodCxlKXtFLmVtaXQoIm5ld1VSTCIsWyIiK2csZV0pfWZ1bmN0aW9uIGEodCxlKXt0Lm9uKGUsZnVuY3Rpb24oKXt0aGlzW2VdPXkubm93KCl9KX12YXIgcz0iLXN0YXJ0IixjPSItZW5kIixmPSItYm9keSIsdT0iZm4iK3MsZD0iZm4iK2MscD0iY2IiK3MsbD0iY2IiK2MsaD0ianNUaW1lIixtPSJmZXRjaCIsdj0iYWRkRXZlbnRMaXN0ZW5lciIsdz13aW5kb3csZz13LmxvY2F0aW9uLHk9dCgibG9hZGVyIik7aWYod1t2XSYmeS54aHJXcmFwcGFibGUpe3ZhciB4PXQoMTApLGI9dCgxMSksRT10KDgpLE89dCg2KSxSPXQoMTMpLFA9dCg3KSxUPXQoMTQpLE49dCg5KSxNPXQoImVlIiksUz1NLmdldCgidHJhY2VyIik7dCgxNikseS5mZWF0dXJlcy5zcGE9ITA7dmFyIEMsTD0wO00ub24odSxyKSxNLm9uKHAsciksTS5vbihkLG8pLE0ub24obCxvKSxNLmJ1ZmZlcihbdSxkLCJ4aHItZG9uZSIsInhoci1yZXNvbHZlZCJdKSxPLmJ1ZmZlcihbdV0pLFIuYnVmZmVyKFsic2V0VGltZW91dCIrYywiY2xlYXJUaW1lb3V0IitzLHVdKSxULmJ1ZmZlcihbdSwibmV3LXhociIsInNlbmQteGhyIitzXSksUC5idWZmZXIoW20rcyxtKyItZG9uZSIsbStmK3MsbStmK2NdKSxFLmJ1ZmZlcihbIm5ld1VSTCJdKSx4LmJ1ZmZlcihbdV0pLGIuYnVmZmVyKFsicHJvcGFnYXRlIixwLGwsImV4ZWN1dG9yLWVyciIsInJlc29sdmUiK3NdKSxTLmJ1ZmZlcihbdSwibm8tIit1XSksTi5idWZmZXIoWyJuZXctanNvbnAiLCJjYi1zdGFydCIsImpzb25wLWVycm9yIiwianNvbnAtZW5kIl0pLGEoVCwic2VuZC14aHIiK3MpLGEoTSwieGhyLXJlc29sdmVkIiksYShNLCJ4aHItZG9uZSIpLGEoUCxtK3MpLGEoUCxtKyItZG9uZSIpLGEoTiwibmV3LWpzb25wIiksYShOLCJqc29ucC1lbmQiKSxhKE4sImNiLXN0YXJ0IiksRS5vbigicHVzaFN0YXRlLWVuZCIsaSksRS5vbigicmVwbGFjZVN0YXRlLWVuZCIsaSksd1t2XSgiaGFzaGNoYW5nZSIsaSwhMCksd1t2XSgibG9hZCIsaSwhMCksd1t2XSgicG9wc3RhdGUiLGZ1bmN0aW9uKCl7aSgwLEw+MSl9LCEwKX19LHt9XSw1OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXt9aWYod2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nJiZ3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSl7dmFyIG89dCgiZWUiKSxpPXQoImhhbmRsZSIpLGE9dCgxMykscz10KDEyKSxjPSJsZWFyUmVzb3VyY2VUaW1pbmdzIixmPSJhZGRFdmVudExpc3RlbmVyIix1PSJyZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwiLGQ9ImJzdFJlc291cmNlIixwPSJyZXNvdXJjZSIsbD0iLXN0YXJ0IixoPSItZW5kIixtPSJmbiIrbCx2PSJmbiIraCx3PSJic3RUaW1lciIsZz0icHVzaFN0YXRlIix5PXQoImxvYWRlciIpO3kuZmVhdHVyZXMuc3RuPSEwLHQoOCksImFkZEV2ZW50TGlzdGVuZXIiaW4gd2luZG93JiZ0KDYpO3ZhciB4PU5SRVVNLm8uRVY7by5vbihtLGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXTtuIGluc3RhbmNlb2YgeCYmKHRoaXMuYnN0U3RhcnQ9eS5ub3coKSl9KSxvLm9uKHYsZnVuY3Rpb24odCxlKXt2YXIgbj10WzBdO24gaW5zdGFuY2VvZiB4JiZpKCJic3QiLFtuLGUsdGhpcy5ic3RTdGFydCx5Lm5vdygpXSl9KSxhLm9uKG0sZnVuY3Rpb24odCxlLG4pe3RoaXMuYnN0U3RhcnQ9eS5ub3coKSx0aGlzLmJzdFR5cGU9bn0pLGEub24odixmdW5jdGlvbih0LGUpe2kodyxbZSx0aGlzLmJzdFN0YXJ0LHkubm93KCksdGhpcy5ic3RUeXBlXSl9KSxzLm9uKG0sZnVuY3Rpb24oKXt0aGlzLmJzdFN0YXJ0PXkubm93KCl9KSxzLm9uKHYsZnVuY3Rpb24odCxlKXtpKHcsW2UsdGhpcy5ic3RTdGFydCx5Lm5vdygpLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXSl9KSxvLm9uKGcrbCxmdW5jdGlvbih0KXt0aGlzLnRpbWU9eS5ub3coKSx0aGlzLnN0YXJ0UGF0aD1sb2NhdGlvbi5wYXRobmFtZStsb2NhdGlvbi5oYXNofSksby5vbihnK2gsZnVuY3Rpb24odCl7aSgiYnN0SGlzdCIsW2xvY2F0aW9uLnBhdGhuYW1lK2xvY2F0aW9uLmhhc2gsdGhpcy5zdGFydFBhdGgsdGhpcy50aW1lXSl9KSxmIGluIHdpbmRvdy5wZXJmb3JtYW5jZSYmKHdpbmRvdy5wZXJmb3JtYW5jZVsiYyIrY10/d2luZG93LnBlcmZvcm1hbmNlW2ZdKHUsZnVuY3Rpb24odCl7aShkLFt3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZShwKV0pLHdpbmRvdy5wZXJmb3JtYW5jZVsiYyIrY10oKX0sITEpOndpbmRvdy5wZXJmb3JtYW5jZVtmXSgid2Via2l0Iit1LGZ1bmN0aW9uKHQpe2koZCxbd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUocCldKSx3aW5kb3cucGVyZm9ybWFuY2VbIndlYmtpdEMiK2NdKCl9LCExKSksZG9jdW1lbnRbZl0oInNjcm9sbCIscix7cGFzc2l2ZTohMH0pLGRvY3VtZW50W2ZdKCJrZXlwcmVzcyIsciwhMSksZG9jdW1lbnRbZl0oImNsaWNrIixyLCExKX19LHt9XSw2OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXtmb3IodmFyIGU9dDtlJiYhZS5oYXNPd25Qcm9wZXJ0eSh1KTspZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7ZSYmbyhlKX1mdW5jdGlvbiBvKHQpe3MuaW5QbGFjZSh0LFt1LGRdLCItIixpKX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuIHRbMV19dmFyIGE9dCgiZWUiKS5nZXQoImV2ZW50cyIpLHM9dCgid3JhcC1mdW5jdGlvbiIpKGEsITApLGM9dCgiZ29zIiksZj1YTUxIdHRwUmVxdWVzdCx1PSJhZGRFdmVudExpc3RlbmVyIixkPSJyZW1vdmVFdmVudExpc3RlbmVyIjtlLmV4cG9ydHM9YSwiZ2V0UHJvdG90eXBlT2YiaW4gT2JqZWN0PyhyKGRvY3VtZW50KSxyKHdpbmRvdykscihmLnByb3RvdHlwZSkpOmYucHJvdG90eXBlLmhhc093blByb3BlcnR5KHUpJiYobyh3aW5kb3cpLG8oZi5wcm90b3R5cGUpKSxhLm9uKHUrIi1zdGFydCIsZnVuY3Rpb24odCxlKXt2YXIgbj10WzFdLHI9YyhuLCJuckB3cmFwcGVkIixmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbi5oYW5kbGVFdmVudClyZXR1cm4gbi5oYW5kbGVFdmVudC5hcHBseShuLGFyZ3VtZW50cyl9dmFyIGU9e29iamVjdDp0LCJmdW5jdGlvbiI6bn1bdHlwZW9mIG5dO3JldHVybiBlP3MoZSwiZm4tIixudWxsLGUubmFtZXx8ImFub255bW91cyIpOm59KTt0aGlzLndyYXBwZWQ9dFsxXT1yfSksYS5vbihkKyItc3RhcnQiLGZ1bmN0aW9uKHQpe3RbMV09dGhpcy53cmFwcGVkfHx0WzFdfSl9LHt9XSw3OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbil7dmFyIHI9dFtlXTsiZnVuY3Rpb24iPT10eXBlb2YgciYmKHRbZV09ZnVuY3Rpb24oKXt2YXIgdD1pKGFyZ3VtZW50cyksZT17fTtvLmVtaXQobisiYmVmb3JlLXN0YXJ0IixbdF0sZSk7dmFyIGE7ZVttXSYmZVttXS5kdCYmKGE9ZVttXS5kdCk7dmFyIHM9ci5hcHBseSh0aGlzLHQpO3JldHVybiBvLmVtaXQobisic3RhcnQiLFt0LGFdLHMpLHMudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gby5lbWl0KG4rImVuZCIsW251bGwsdF0scyksdH0sZnVuY3Rpb24odCl7dGhyb3cgby5lbWl0KG4rImVuZCIsW3RdLHMpLHR9KX0pfXZhciBvPXQoImVlIikuZ2V0KCJmZXRjaCIpLGk9dCgyNiksYT10KDI1KTtlLmV4cG9ydHM9bzt2YXIgcz13aW5kb3csYz0iZmV0Y2gtIixmPWMrImJvZHktIix1PVsiYXJyYXlCdWZmZXIiLCJibG9iIiwianNvbiIsInRleHQiLCJmb3JtRGF0YSJdLGQ9cy5SZXF1ZXN0LHA9cy5SZXNwb25zZSxsPXMuZmV0Y2gsaD0icHJvdG90eXBlIixtPSJuckBjb250ZXh0IjtkJiZwJiZsJiYoYSh1LGZ1bmN0aW9uKHQsZSl7cihkW2hdLGUsZikscihwW2hdLGUsZil9KSxyKHMsImZldGNoIixjKSxvLm9uKGMrImVuZCIsZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO2lmKGUpe3ZhciByPWUuaGVhZGVycy5nZXQoImNvbnRlbnQtbGVuZ3RoIik7bnVsbCE9PXImJihuLnJ4U2l6ZT1yKSxvLmVtaXQoYysiZG9uZSIsW251bGwsZV0sbil9ZWxzZSBvLmVtaXQoYysiZG9uZSIsW3RdLG4pfSkpfSx7fV0sODpbZnVuY3Rpb24odCxlLG4pe3ZhciByPXQoImVlIikuZ2V0KCJoaXN0b3J5Iiksbz10KCJ3cmFwLWZ1bmN0aW9uIikocik7ZS5leHBvcnRzPXI7dmFyIGk9d2luZG93Lmhpc3RvcnkmJndpbmRvdy5oaXN0b3J5LmNvbnN0cnVjdG9yJiZ3aW5kb3cuaGlzdG9yeS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsYT13aW5kb3cuaGlzdG9yeTtpJiZpLnB1c2hTdGF0ZSYmaS5yZXBsYWNlU3RhdGUmJihhPWkpLG8uaW5QbGFjZShhLFsicHVzaFN0YXRlIiwicmVwbGFjZVN0YXRlIl0sIi0iKX0se31dLDk6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe2Z1bmN0aW9uIGUoKXtjLmVtaXQoImpzb25wLWVuZCIsW10scCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixlLCExKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixuLCExKX1mdW5jdGlvbiBuKCl7Yy5lbWl0KCJqc29ucC1lcnJvciIsW10scCksYy5lbWl0KCJqc29ucC1lbmQiLFtdLHApLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsZSwhMSksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsbiwhMSl9dmFyIHI9dCYmInN0cmluZyI9PXR5cGVvZiB0Lm5vZGVOYW1lJiYic2NyaXB0Ij09PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihyKXt2YXIgbz0iZnVuY3Rpb24iPT10eXBlb2YgdC5hZGRFdmVudExpc3RlbmVyO2lmKG8pe3ZhciBhPWkodC5zcmMpO2lmKGEpe3ZhciB1PXMoYSksZD0iZnVuY3Rpb24iPT10eXBlb2YgdS5wYXJlbnRbdS5rZXldO2lmKGQpe3ZhciBwPXt9O2YuaW5QbGFjZSh1LnBhcmVudCxbdS5rZXldLCJjYi0iLHApLHQuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZSwhMSksdC5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsbiwhMSksYy5lbWl0KCJuZXctanNvbnAiLFt0LnNyY10scCl9fX19fWZ1bmN0aW9uIG8oKXtyZXR1cm4iYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3d9ZnVuY3Rpb24gaSh0KXt2YXIgZT10Lm1hdGNoKHUpO3JldHVybiBlP2VbMV06bnVsbH1mdW5jdGlvbiBhKHQsZSl7dmFyIG49dC5tYXRjaChwKSxyPW5bMV0sbz1uWzNdO3JldHVybiBvP2EobyxlW3JdKTplW3JdfWZ1bmN0aW9uIHModCl7dmFyIGU9dC5tYXRjaChkKTtyZXR1cm4gZSYmZS5sZW5ndGg+PTM/e2tleTplWzJdLHBhcmVudDphKGVbMV0sd2luZG93KX06e2tleTp0LHBhcmVudDp3aW5kb3d9fXZhciBjPXQoImVlIikuZ2V0KCJqc29ucCIpLGY9dCgid3JhcC1mdW5jdGlvbiIpKGMpO2lmKGUuZXhwb3J0cz1jLG8oKSl7dmFyIHU9L1s/Jl0oPzpjYWxsYmFja3xjYik9KFteJiNdKykvLGQ9LyguKilcLihbXi5dKykvLHA9L14oXHcrKShcLnwkKSguKikkLyxsPVsiYXBwZW5kQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJyZXBsYWNlQ2hpbGQiXTtOb2RlJiZOb2RlLnByb3RvdHlwZSYmTm9kZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ/Zi5pblBsYWNlKE5vZGUucHJvdG90eXBlLGwsImRvbS0iKTooZi5pblBsYWNlKEhUTUxFbGVtZW50LnByb3RvdHlwZSxsLCJkb20tIiksZi5pblBsYWNlKEhUTUxIZWFkRWxlbWVudC5wcm90b3R5cGUsbCwiZG9tLSIpLGYuaW5QbGFjZShIVE1MQm9keUVsZW1lbnQucHJvdG90eXBlLGwsImRvbS0iKSksYy5vbigiZG9tLXN0YXJ0IixmdW5jdGlvbih0KXtyKHRbMF0pfSl9fSx7fV0sMTA6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj10KCJlZSIpLmdldCgibXV0YXRpb24iKSxvPXQoIndyYXAtZnVuY3Rpb24iKShyKSxpPU5SRVVNLm8uTU87ZS5leHBvcnRzPXIsaSYmKHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgaT9uZXcgaShvKHQsImZuLSIpKTppLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sTXV0YXRpb25PYnNlcnZlci5wcm90b3R5cGU9aS5wcm90b3R5cGUpfSx7fV0sMTE6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3ZhciBlPWEuY29udGV4dCgpLG49cyh0LCJleGVjdXRvci0iLGUpLHI9bmV3IGYobik7cmV0dXJuIGEuY29udGV4dChyKS5nZXRDdHg9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sYS5lbWl0KCJuZXctcHJvbWlzZSIsW3IsZV0sZSkscn1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIGV9dmFyIGk9dCgid3JhcC1mdW5jdGlvbiIpLGE9dCgiZWUiKS5nZXQoInByb21pc2UiKSxzPWkoYSksYz10KDI1KSxmPU5SRVVNLm8uUFI7ZS5leHBvcnRzPWEsZiYmKHdpbmRvdy5Qcm9taXNlPXIsWyJhbGwiLCJyYWNlIl0uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1mW3RdO2ZbdF09ZnVuY3Rpb24obil7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZnVuY3Rpb24oKXthLmVtaXQoInByb3BhZ2F0ZSIsW251bGwsIW9dLGkpLG89b3x8IXR9fXZhciBvPSExO2MobixmdW5jdGlvbihlLG4pe1Byb21pc2UucmVzb2x2ZShuKS50aGVuKHIoImFsbCI9PT10KSxyKCExKSl9KTt2YXIgaT1lLmFwcGx5KGYsYXJndW1lbnRzKSxzPWYucmVzb2x2ZShpKTtyZXR1cm4gc319KSxbInJlc29sdmUiLCJyZWplY3QiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWZbdF07Zlt0XT1mdW5jdGlvbih0KXt2YXIgbj1lLmFwcGx5KGYsYXJndW1lbnRzKTtyZXR1cm4gdCE9PW4mJmEuZW1pdCgicHJvcGFnYXRlIixbdCwhMF0sbiksbn19KSxmLnByb3RvdHlwZVsiY2F0Y2giXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LGYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZi5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpyfX0pLGMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZiksZnVuY3Rpb24odCxlKXt0cnl7cltlXT1mW2VdfWNhdGNoKG4pe319KSxhLm9uKCJleGVjdXRvci1zdGFydCIsZnVuY3Rpb24odCl7dFswXT1zKHRbMF0sInJlc29sdmUtIix0aGlzKSx0WzFdPXModFsxXSwicmVzb2x2ZS0iLHRoaXMpfSksYS5vbigiZXhlY3V0b3ItZXJyIixmdW5jdGlvbih0LGUsbil7dFsxXShuKX0pLHMuaW5QbGFjZShmLnByb3RvdHlwZSxbInRoZW4iXSwidGhlbi0iLG8pLGEub24oInRoZW4tc3RhcnQiLGZ1bmN0aW9uKHQsZSl7dGhpcy5wcm9taXNlPWUsdFswXT1zKHRbMF0sImNiLSIsdGhpcyksdFsxXT1zKHRbMV0sImNiLSIsdGhpcyl9KSxhLm9uKCJ0aGVuLWVuZCIsZnVuY3Rpb24odCxlLG4pe3RoaXMubmV4dFByb21pc2U9bjt2YXIgcj10aGlzLnByb21pc2U7YS5lbWl0KCJwcm9wYWdhdGUiLFtyLCEwXSxuKX0pLGEub24oImNiLWVuZCIsZnVuY3Rpb24odCxlLG4pe2EuZW1pdCgicHJvcGFnYXRlIixbbiwhMF0sdGhpcy5uZXh0UHJvbWlzZSl9KSxhLm9uKCJwcm9wYWdhdGUiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmdldEN0eCYmIWV8fCh0aGlzLmdldEN0eD1mdW5jdGlvbigpe2lmKHQgaW5zdGFuY2VvZiBQcm9taXNlKXZhciBlPWEuY29udGV4dCh0KTtyZXR1cm4gZSYmZS5nZXRDdHg/ZS5nZXRDdHgoKTp0aGlzfSl9KSxyLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIiIrZn0pfSx7fV0sMTI6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj10KCJlZSIpLmdldCgicmFmIiksbz10KCJ3cmFwLWZ1bmN0aW9uIikociksaT0iZXF1ZXN0QW5pbWF0aW9uRnJhbWUiO2UuZXhwb3J0cz1yLG8uaW5QbGFjZSh3aW5kb3csWyJyIitpLCJtb3pSIitpLCJ3ZWJraXRSIitpLCJtc1IiK2ldLCJyYWYtIiksci5vbigicmFmLXN0YXJ0IixmdW5jdGlvbih0KXt0WzBdPW8odFswXSwiZm4tIil9KX0se31dLDEzOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbil7dFswXT1hKHRbMF0sImZuLSIsbnVsbCxuKX1mdW5jdGlvbiBvKHQsZSxuKXt0aGlzLm1ldGhvZD1uLHRoaXMudGltZXJEdXJhdGlvbj1pc05hTih0WzFdKT8wOit0WzFdLHRbMF09YSh0WzBdLCJmbi0iLHRoaXMsbil9dmFyIGk9dCgiZWUiKS5nZXQoInRpbWVyIiksYT10KCJ3cmFwLWZ1bmN0aW9uIikoaSkscz0ic2V0VGltZW91dCIsYz0ic2V0SW50ZXJ2YWwiLGY9ImNsZWFyVGltZW91dCIsdT0iLXN0YXJ0IixkPSItIjtlLmV4cG9ydHM9aSxhLmluUGxhY2Uod2luZG93LFtzLCJzZXRJbW1lZGlhdGUiXSxzK2QpLGEuaW5QbGFjZSh3aW5kb3csW2NdLGMrZCksYS5pblBsYWNlKHdpbmRvdyxbZiwiY2xlYXJJbW1lZGlhdGUiXSxmK2QpLGkub24oYyt1LHIpLGkub24ocyt1LG8pfSx7fV0sMTQ6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7ZC5pblBsYWNlKGUsWyJvbnJlYWR5c3RhdGVjaGFuZ2UiXSwiZm4tIixzKX1mdW5jdGlvbiBvKCl7dmFyIHQ9dGhpcyxlPXUuY29udGV4dCh0KTt0LnJlYWR5U3RhdGU+MyYmIWUucmVzb2x2ZWQmJihlLnJlc29sdmVkPSEwLHUuZW1pdCgieGhyLXJlc29sdmVkIixbXSx0KSksZC5pblBsYWNlKHQsZywiZm4tIixzKX1mdW5jdGlvbiBpKHQpe3kucHVzaCh0KSxoJiYoYj9iLnRoZW4oYSk6dj92KGEpOihFPS1FLE8uZGF0YT1FKSl9ZnVuY3Rpb24gYSgpe2Zvcih2YXIgdD0wO3Q8eS5sZW5ndGg7dCsrKXIoW10seVt0XSk7eS5sZW5ndGgmJih5PVtdKX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIGV9ZnVuY3Rpb24gYyh0LGUpe2Zvcih2YXIgbiBpbiB0KWVbbl09dFtuXTtyZXR1cm4gZX10KDYpO3ZhciBmPXQoImVlIiksdT1mLmdldCgieGhyIiksZD10KCJ3cmFwLWZ1bmN0aW9uIikodSkscD1OUkVVTS5vLGw9cC5YSFIsaD1wLk1PLG09cC5QUix2PXAuU0ksdz0icmVhZHlzdGF0ZWNoYW5nZSIsZz1bIm9ubG9hZCIsIm9uZXJyb3IiLCJvbmFib3J0Iiwib25sb2Fkc3RhcnQiLCJvbmxvYWRlbmQiLCJvbnByb2dyZXNzIiwib250aW1lb3V0Il0seT1bXTtlLmV4cG9ydHM9dTt2YXIgeD13aW5kb3cuWE1MSHR0cFJlcXVlc3Q9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGwodCk7dHJ5e3UuZW1pdCgibmV3LXhociIsW2VdLGUpLGUuYWRkRXZlbnRMaXN0ZW5lcih3LG8sITEpfWNhdGNoKG4pe3RyeXt1LmVtaXQoImludGVybmFsLWVycm9yIixbbl0pfWNhdGNoKHIpe319cmV0dXJuIGV9O2lmKGMobCx4KSx4LnByb3RvdHlwZT1sLnByb3RvdHlwZSxkLmluUGxhY2UoeC5wcm90b3R5cGUsWyJvcGVuIiwic2VuZCJdLCIteGhyLSIscyksdS5vbigic2VuZC14aHItc3RhcnQiLGZ1bmN0aW9uKHQsZSl7cih0LGUpLGkoZSl9KSx1Lm9uKCJvcGVuLXhoci1zdGFydCIsciksaCl7dmFyIGI9bSYmbS5yZXNvbHZlKCk7aWYoIXYmJiFtKXt2YXIgRT0xLE89ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoRSk7bmV3IGgoYSkub2JzZXJ2ZShPLHtjaGFyYWN0ZXJEYXRhOiEwfSl9fWVsc2UgZi5vbigiZm4tZW5kIixmdW5jdGlvbih0KXt0WzBdJiZ0WzBdLnR5cGU9PT13fHxhKCl9KX0se31dLDE1OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXtpZighaSh0KSlyZXR1cm4gbnVsbDt2YXIgZT13aW5kb3cuTlJFVU07aWYoIWUubG9hZGVyX2NvbmZpZylyZXR1cm4gbnVsbDt2YXIgbj0oZS5sb2FkZXJfY29uZmlnLmFjY291bnRJRHx8IiIpLnRvU3RyaW5nKCl8fG51bGwscj0oZS5sb2FkZXJfY29uZmlnLmFnZW50SUR8fCIiKS50b1N0cmluZygpfHxudWxsLHM9KGUubG9hZGVyX2NvbmZpZy50cnVzdEtleXx8IiIpLnRvU3RyaW5nKCl8fG51bGw7aWYoIW58fCFyKXJldHVybiBudWxsO3ZhciBjPWEuZ2VuZXJhdGVDYXRJZCgpLGY9YS5nZW5lcmF0ZUNhdElkKCksdT1EYXRlLm5vdygpLGQ9byhjLGYsdSxuLHIscyk7cmV0dXJue2hlYWRlcjpkLGd1aWQ6Yyx0cmFjZUlkOmYsdGltZXN0YW1wOnV9fWZ1bmN0aW9uIG8odCxlLG4scixvLGkpe3ZhciBhPSJidG9hImluIHdpbmRvdyYmImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5idG9hO2lmKCFhKXJldHVybiBudWxsO3ZhciBzPXt2OlswLDFdLGQ6e3R5OiJCcm93c2VyIixhYzpyLGFwOm8saWQ6dCx0cjplLHRpOm59fTtyZXR1cm4gaSYmciE9PWkmJihzLmQudGs9aSksYnRvYShKU09OLnN0cmluZ2lmeShzKSl9ZnVuY3Rpb24gaSh0KXt2YXIgZT0hMSxuPSExLHI9e307aWYoImluaXQiaW4gTlJFVU0mJiJkaXN0cmlidXRlZF90cmFjaW5nImluIE5SRVVNLmluaXQmJihyPU5SRVVNLmluaXQuZGlzdHJpYnV0ZWRfdHJhY2luZyxuPSEhci5lbmFibGVkKSxuKWlmKHQuc2FtZU9yaWdpbillPSEwO2Vsc2UgaWYoci5hbGxvd2VkX29yaWdpbnMgaW5zdGFuY2VvZiBBcnJheSlmb3IodmFyIG89MDtvPHIuYWxsb3dlZF9vcmlnaW5zLmxlbmd0aDtvKyspe3ZhciBpPXMoci5hbGxvd2VkX29yaWdpbnNbb10pO2lmKHQuaG9zdG5hbWU9PT1pLmhvc3RuYW1lJiZ0LnByb3RvY29sPT09aS5wcm90b2NvbCYmdC5wb3J0PT09aS5wb3J0KXtlPSEwO2JyZWFrfX1yZXR1cm4gbiYmZX12YXIgYT10KDIzKSxzPXQoMTcpO2UuZXhwb3J0cz17Z2VuZXJhdGVUcmFjZVBheWxvYWQ6cixzaG91bGRHZW5lcmF0ZVRyYWNlOml9fSx7fV0sMTY6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3ZhciBlPXRoaXMucGFyYW1zLG49dGhpcy5tZXRyaWNzO2lmKCF0aGlzLmVuZGVkKXt0aGlzLmVuZGVkPSEwO2Zvcih2YXIgcj0wO3I8cDtyKyspdC5yZW1vdmVFdmVudExpc3RlbmVyKGRbcl0sdGhpcy5saXN0ZW5lciwhMSk7ZS5hYm9ydGVkfHwobi5kdXJhdGlvbj1hLm5vdygpLXRoaXMuc3RhcnRUaW1lLHRoaXMubG9hZENhcHR1cmVDYWxsZWR8fDQhPT10LnJlYWR5U3RhdGU/bnVsbD09ZS5zdGF0dXMmJihlLnN0YXR1cz0wKTppKHRoaXMsdCksbi5jYlRpbWU9dGhpcy5jYlRpbWUsdS5lbWl0KCJ4aHItZG9uZSIsW3RdLHQpLHMoInhociIsW2Usbix0aGlzLnN0YXJ0VGltZV0pKX19ZnVuY3Rpb24gbyh0LGUpe3ZhciBuPWMoZSkscj10LnBhcmFtcztyLmhvc3Q9bi5ob3N0bmFtZSsiOiIrbi5wb3J0LHIucGF0aG5hbWU9bi5wYXRobmFtZSx0LnBhcnNlZE9yaWdpbj1jKGUpLHQuc2FtZU9yaWdpbj10LnBhcnNlZE9yaWdpbi5zYW1lT3JpZ2lufWZ1bmN0aW9uIGkodCxlKXt0LnBhcmFtcy5zdGF0dXM9ZS5zdGF0dXM7dmFyIG49dihlLHQubGFzdFNpemUpO2lmKG4mJih0Lm1ldHJpY3MucnhTaXplPW4pLHQuc2FtZU9yaWdpbil7dmFyIHI9ZS5nZXRSZXNwb25zZUhlYWRlcigiWC1OZXdSZWxpYy1BcHAtRGF0YSIpO3ImJih0LnBhcmFtcy5jYXQ9ci5zcGxpdCgiLCAiKS5wb3AoKSl9dC5sb2FkQ2FwdHVyZUNhbGxlZD0hMH12YXIgYT10KCJsb2FkZXIiKTtpZihhLnhocldyYXBwYWJsZSl7dmFyIHM9dCgiaGFuZGxlIiksYz10KDE3KSxmPXQoMTUpLmdlbmVyYXRlVHJhY2VQYXlsb2FkLHU9dCgiZWUiKSxkPVsibG9hZCIsImVycm9yIiwiYWJvcnQiLCJ0aW1lb3V0Il0scD1kLmxlbmd0aCxsPXQoImlkIiksaD10KDIxKSxtPXQoMjApLHY9dCgxOCksdz13aW5kb3cuWE1MSHR0cFJlcXVlc3Q7YS5mZWF0dXJlcy54aHI9ITAsdCgxNCksdCg3KSx1Lm9uKCJuZXcteGhyIixmdW5jdGlvbih0KXt2YXIgZT10aGlzO2UudG90YWxDYnM9MCxlLmNhbGxlZD0wLGUuY2JUaW1lPTAsZS5lbmQ9cixlLmVuZGVkPSExLGUueGhyR3VpZHM9e30sZS5sYXN0U2l6ZT1udWxsLGUubG9hZENhcHR1cmVDYWxsZWQ9ITEsdC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbihuKXtpKGUsdCl9LCExKSxoJiYoaD4zNHx8aDwxMCl8fHdpbmRvdy5vcGVyYXx8dC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZnVuY3Rpb24odCl7ZS5sYXN0U2l6ZT10LmxvYWRlZH0sITEpfSksdS5vbigib3Blbi14aHItc3RhcnQiLGZ1bmN0aW9uKHQpe3RoaXMucGFyYW1zPXttZXRob2Q6dFswXX0sbyh0aGlzLHRbMV0pLHRoaXMubWV0cmljcz17fX0pLHUub24oIm9wZW4teGhyLWVuZCIsZnVuY3Rpb24odCxlKXsibG9hZGVyX2NvbmZpZyJpbiBOUkVVTSYmInhwaWQiaW4gTlJFVU0ubG9hZGVyX2NvbmZpZyYmdGhpcy5zYW1lT3JpZ2luJiZlLnNldFJlcXVlc3RIZWFkZXIoIlgtTmV3UmVsaWMtSUQiLE5SRVVNLmxvYWRlcl9jb25maWcueHBpZCk7dmFyIG49Zih0aGlzLnBhcnNlZE9yaWdpbik7biYmbi5oZWFkZXImJihlLnNldFJlcXVlc3RIZWFkZXIoIm5ld3JlbGljIixuLmhlYWRlciksdGhpcy5kdD1uKX0pLHUub24oInNlbmQteGhyLXN0YXJ0IixmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMubWV0cmljcyxyPXRbMF0sbz10aGlzO2lmKG4mJnIpe3ZhciBpPW0ocik7aSYmKG4udHhTaXplPWkpfXRoaXMuc3RhcnRUaW1lPWEubm93KCksdGhpcy5saXN0ZW5lcj1mdW5jdGlvbih0KXt0cnl7ImFib3J0IiE9PXQudHlwZXx8by5sb2FkQ2FwdHVyZUNhbGxlZHx8KG8ucGFyYW1zLmFib3J0ZWQ9ITApLCgibG9hZCIhPT10LnR5cGV8fG8uY2FsbGVkPT09by50b3RhbENicyYmKG8ub25sb2FkQ2FsbGVkfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5vbmxvYWQpKSYmby5lbmQoZSl9Y2F0Y2gobil7dHJ5e3UuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLFtuXSl9Y2F0Y2gocil7fX19O2Zvcih2YXIgcz0wO3M8cDtzKyspZS5hZGRFdmVudExpc3RlbmVyKGRbc10sdGhpcy5saXN0ZW5lciwhMSl9KSx1Lm9uKCJ4aHItY2ItdGltZSIsZnVuY3Rpb24odCxlLG4pe3RoaXMuY2JUaW1lKz10LGU/dGhpcy5vbmxvYWRDYWxsZWQ9ITA6dGhpcy5jYWxsZWQrPTEsdGhpcy5jYWxsZWQhPT10aGlzLnRvdGFsQ2JzfHwhdGhpcy5vbmxvYWRDYWxsZWQmJiJmdW5jdGlvbiI9PXR5cGVvZiBuLm9ubG9hZHx8dGhpcy5lbmQobil9KSx1Lm9uKCJ4aHItbG9hZC1hZGRlZCIsZnVuY3Rpb24odCxlKXt2YXIgbj0iIitsKHQpKyEhZTt0aGlzLnhockd1aWRzJiYhdGhpcy54aHJHdWlkc1tuXSYmKHRoaXMueGhyR3VpZHNbbl09ITAsdGhpcy50b3RhbENicys9MSl9KSx1Lm9uKCJ4aHItbG9hZC1yZW1vdmVkIixmdW5jdGlvbih0LGUpe3ZhciBuPSIiK2wodCkrISFlO3RoaXMueGhyR3VpZHMmJnRoaXMueGhyR3VpZHNbbl0mJihkZWxldGUgdGhpcy54aHJHdWlkc1tuXSx0aGlzLnRvdGFsQ2JzLT0xKX0pLHUub24oImFkZEV2ZW50TGlzdGVuZXItZW5kIixmdW5jdGlvbih0LGUpe2UgaW5zdGFuY2VvZiB3JiYibG9hZCI9PT10WzBdJiZ1LmVtaXQoInhoci1sb2FkLWFkZGVkIixbdFsxXSx0WzJdXSxlKX0pLHUub24oInJlbW92ZUV2ZW50TGlzdGVuZXItZW5kIixmdW5jdGlvbih0LGUpe2UgaW5zdGFuY2VvZiB3JiYibG9hZCI9PT10WzBdJiZ1LmVtaXQoInhoci1sb2FkLXJlbW92ZWQiLFt0WzFdLHRbMl1dLGUpfSksdS5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXtlIGluc3RhbmNlb2YgdyYmKCJvbmxvYWQiPT09biYmKHRoaXMub25sb2FkPSEwKSwoImxvYWQiPT09KHRbMF0mJnRbMF0udHlwZSl8fHRoaXMub25sb2FkKSYmKHRoaXMueGhyQ2JTdGFydD1hLm5vdygpKSl9KSx1Lm9uKCJmbi1lbmQiLGZ1bmN0aW9uKHQsZSl7dGhpcy54aHJDYlN0YXJ0JiZ1LmVtaXQoInhoci1jYi10aW1lIixbYS5ub3coKS10aGlzLnhockNiU3RhcnQsdGhpcy5vbmxvYWQsZV0sZSl9KSx1Lm9uKCJmZXRjaC1iZWZvcmUtc3RhcnQiLGZ1bmN0aW9uKHQpe3ZhciBlLG49dFsxXXx8e307InN0cmluZyI9PXR5cGVvZiB0WzBdP2U9dFswXTp0WzBdJiZ0WzBdLnVybCYmKGU9dFswXS51cmwpLGUmJih0aGlzLnBhcnNlZE9yaWdpbj1jKGUpLHRoaXMuc2FtZU9yaWdpbj10aGlzLnBhcnNlZE9yaWdpbi5zYW1lT3JpZ2luKTt2YXIgcj1mKHRoaXMucGFyc2VkT3JpZ2luKTtpZihyJiZyLmhlYWRlcil7dmFyIG89ci5oZWFkZXI7aWYoInN0cmluZyI9PXR5cGVvZiB0WzBdKXt2YXIgaT17fTtmb3IodmFyIGEgaW4gbilpW2FdPW5bYV07aS5oZWFkZXJzPW5ldyBIZWFkZXJzKG4uaGVhZGVyc3x8e30pLGkuaGVhZGVycy5zZXQoIm5ld3JlbGljIixvKSx0aGlzLmR0PXIsdC5sZW5ndGg+MT90WzFdPWk6dC5wdXNoKGkpfWVsc2UgdFswXSYmdFswXS5oZWFkZXJzJiYodFswXS5oZWFkZXJzLmFwcGVuZCgibmV3cmVsaWMiLG8pLHRoaXMuZHQ9cil9fSl9fSx7fV0sMTc6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj17fTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYodCBpbiByKXJldHVybiByW3RdO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxuPXdpbmRvdy5sb2NhdGlvbixvPXt9O2UuaHJlZj10LG8ucG9ydD1lLnBvcnQ7dmFyIGk9ZS5ocmVmLnNwbGl0KCI6Ly8iKTshby5wb3J0JiZpWzFdJiYoby5wb3J0PWlbMV0uc3BsaXQoIi8iKVswXS5zcGxpdCgiQCIpLnBvcCgpLnNwbGl0KCI6IilbMV0pLG8ucG9ydCYmIjAiIT09by5wb3J0fHwoby5wb3J0PSJodHRwcyI9PT1pWzBdPyI0NDMiOiI4MCIpLG8uaG9zdG5hbWU9ZS5ob3N0bmFtZXx8bi5ob3N0bmFtZSxvLnBhdGhuYW1lPWUucGF0aG5hbWUsby5wcm90b2NvbD1pWzBdLCIvIiE9PW8ucGF0aG5hbWUuY2hhckF0KDApJiYoby5wYXRobmFtZT0iLyIrby5wYXRobmFtZSk7dmFyIGE9IWUucHJvdG9jb2x8fCI6Ij09PWUucHJvdG9jb2x8fGUucHJvdG9jb2w9PT1uLnByb3RvY29sLHM9ZS5ob3N0bmFtZT09PWRvY3VtZW50LmRvbWFpbiYmZS5wb3J0PT09bi5wb3J0O3JldHVybiBvLnNhbWVPcmlnaW49YSYmKCFlLmhvc3RuYW1lfHxzKSwiLyI9PT1vLnBhdGhuYW1lJiYoclt0XT1vKSxvfX0se31dLDE4OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUpe3ZhciBuPXQucmVzcG9uc2VUeXBlO3JldHVybiJqc29uIj09PW4mJm51bGwhPT1lP2U6ImFycmF5YnVmZmVyIj09PW58fCJibG9iIj09PW58fCJqc29uIj09PW4/byh0LnJlc3BvbnNlKToidGV4dCI9PT1ufHwiIj09PW58fHZvaWQgMD09PW4/byh0LnJlc3BvbnNlVGV4dCk6dm9pZCAwfXZhciBvPXQoMjApO2UuZXhwb3J0cz1yfSx7fV0sMTk6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7fWZ1bmN0aW9uIG8odCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBpKHQsW2Yubm93KCldLmNvbmNhdChzKGFyZ3VtZW50cykpLGU/bnVsbDp0aGlzLG4pLGU/dm9pZCAwOnRoaXN9fXZhciBpPXQoImhhbmRsZSIpLGE9dCgyNSkscz10KDI2KSxjPXQoImVlIikuZ2V0KCJ0cmFjZXIiKSxmPXQoImxvYWRlciIpLHU9TlJFVU07InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cubmV3cmVsaWMmJihuZXdyZWxpYz11KTt2YXIgZD1bInNldFBhZ2VWaWV3TmFtZSIsInNldEN1c3RvbUF0dHJpYnV0ZSIsInNldEVycm9ySGFuZGxlciIsImZpbmlzaGVkIiwiYWRkVG9UcmFjZSIsImlubGluZUhpdCIsImFkZFJlbGVhc2UiXSxwPSJhcGktIixsPXArIml4bi0iO2EoZCxmdW5jdGlvbih0LGUpe3VbZV09byhwK2UsITAsImFwaSIpfSksdS5hZGRQYWdlQWN0aW9uPW8ocCsiYWRkUGFnZUFjdGlvbiIsITApLHUuc2V0Q3VycmVudFJvdXRlTmFtZT1vKHArInJvdXRlTmFtZSIsITApLGUuZXhwb3J0cz1uZXdyZWxpYyx1LmludGVyYWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuKG5ldyByKS5nZXQoKX07dmFyIGg9ci5wcm90b3R5cGU9e2NyZWF0ZVRyYWNlcjpmdW5jdGlvbih0LGUpe3ZhciBuPXt9LHI9dGhpcyxvPSJmdW5jdGlvbiI9PXR5cGVvZiBlO3JldHVybiBpKGwrInRyYWNlciIsW2Yubm93KCksdCxuXSxyKSxmdW5jdGlvbigpe2lmKGMuZW1pdCgobz8iIjoibm8tIikrImZuLXN0YXJ0IixbZi5ub3coKSxyLG9dLG4pLG8pdHJ5e3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1jYXRjaCh0KXt0aHJvdyBjLmVtaXQoImZuLWVyciIsW2FyZ3VtZW50cyx0aGlzLHRdLG4pLHR9ZmluYWxseXtjLmVtaXQoImZuLWVuZCIsW2Yubm93KCldLG4pfX19fTthKCJhY3Rpb25UZXh0LHNldE5hbWUsc2V0QXR0cmlidXRlLHNhdmUsaWdub3JlLG9uRW5kLGdldENvbnRleHQsZW5kLGdldCIuc3BsaXQoIiwiKSxmdW5jdGlvbih0LGUpe2hbZV09byhsK2UpfSksbmV3cmVsaWMubm90aWNlRXJyb3I9ZnVuY3Rpb24odCxlKXsic3RyaW5nIj09dHlwZW9mIHQmJih0PW5ldyBFcnJvcih0KSksaSgiZXJyIixbdCxmLm5vdygpLCExLGVdKX19LHt9XSwyMDpbZnVuY3Rpb24odCxlLG4pe2UuZXhwb3J0cz1mdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJnQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDtpZigib2JqZWN0Ij09dHlwZW9mIHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmdC5ieXRlTGVuZ3RoKXJldHVybiB0LmJ5dGVMZW5ndGg7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiZ0IGluc3RhbmNlb2YgQmxvYiYmdC5zaXplKXJldHVybiB0LnNpemU7aWYoISgidW5kZWZpbmVkIiE9dHlwZW9mIEZvcm1EYXRhJiZ0IGluc3RhbmNlb2YgRm9ybURhdGEpKXRyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkubGVuZ3RofWNhdGNoKGUpe3JldHVybn19fX0se31dLDIxOltmdW5jdGlvbih0LGUsbil7dmFyIHI9MCxvPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0ZpcmVmb3hbXC9cc10oXGQrXC5cZCspLyk7byYmKHI9K29bMV0pLGUuZXhwb3J0cz1yfSx7fV0sMjI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7dmFyIG49dC5nZXRFbnRyaWVzKCk7bi5mb3JFYWNoKGZ1bmN0aW9uKHQpeyJmaXJzdC1wYWludCI9PT10Lm5hbWU/YygidGltaW5nIixbImZwIixNYXRoLmZsb29yKHQuc3RhcnRUaW1lKV0pOiJmaXJzdC1jb250ZW50ZnVsLXBhaW50Ij09PXQubmFtZSYmYygidGltaW5nIixbImZjcCIsTWF0aC5mbG9vcih0LnN0YXJ0VGltZSldKX0pfWZ1bmN0aW9uIG8odCxlKXt2YXIgbj10LmdldEVudHJpZXMoKTtuLmxlbmd0aD4wJiZjKCJsY3AiLFtuW24ubGVuZ3RoLTFdXSl9ZnVuY3Rpb24gaSh0KXtpZih0IGluc3RhbmNlb2YgdSYmIXApe3ZhciBlLG49TWF0aC5yb3VuZCh0LnRpbWVTdGFtcCk7ZT1uPjFlMTI/RGF0ZS5ub3coKS1uOmYubm93KCktbixwPSEwLGMoInRpbWluZyIsWyJmaSIsbix7dHlwZTp0LnR5cGUsZmlkOmV9XSl9fWlmKCEoImluaXQiaW4gTlJFVU0mJiJwYWdlX3ZpZXdfdGltaW5nImluIE5SRVVNLmluaXQmJiJlbmFibGVkImluIE5SRVVNLmluaXQucGFnZV92aWV3X3RpbWluZyYmTlJFVU0uaW5pdC5wYWdlX3ZpZXdfdGltaW5nLmVuYWJsZWQ9PT0hMSkpe3ZhciBhLHMsYz10KCJoYW5kbGUiKSxmPXQoImxvYWRlciIpLHU9TlJFVU0uby5FVjtpZigiUGVyZm9ybWFuY2VPYnNlcnZlciJpbiB3aW5kb3cmJiJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuUGVyZm9ybWFuY2VPYnNlcnZlcil7YT1uZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihyKSxzPW5ldyBQZXJmb3JtYW5jZU9ic2VydmVyKG8pO3RyeXthLm9ic2VydmUoe2VudHJ5VHlwZXM6WyJwYWludCJdfSkscy5vYnNlcnZlKHtlbnRyeVR5cGVzOlsibGFyZ2VzdC1jb250ZW50ZnVsLXBhaW50Il19KX1jYXRjaChkKXt9fWlmKCJhZGRFdmVudExpc3RlbmVyImluIGRvY3VtZW50KXt2YXIgcD0hMSxsPVsiY2xpY2siLCJrZXlkb3duIiwibW91c2Vkb3duIiwicG9pbnRlcmRvd24iLCJ0b3VjaHN0YXJ0Il07bC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIodCxpLCExKX0pfX19LHt9XSwyMzpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIoKXtmdW5jdGlvbiB0KCl7cmV0dXJuIGU/MTUmZVtuKytdOjE2Kk1hdGgucmFuZG9tKCl8MH12YXIgZT1udWxsLG49MCxyPXdpbmRvdy5jcnlwdG98fHdpbmRvdy5tc0NyeXB0bztyJiZyLmdldFJhbmRvbVZhbHVlcyYmKGU9ci5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMzEpKSk7Zm9yKHZhciBvLGk9Inh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCIsYT0iIixzPTA7czxpLmxlbmd0aDtzKyspbz1pW3NdLCJ4Ij09PW8/YSs9dCgpLnRvU3RyaW5nKDE2KToieSI9PT1vPyhvPTMmdCgpfDgsYSs9by50b1N0cmluZygxNikpOmErPW87cmV0dXJuIGF9ZnVuY3Rpb24gbygpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gZT8xNSZlW24rK106MTYqTWF0aC5yYW5kb20oKXwwfXZhciBlPW51bGwsbj0wLHI9d2luZG93LmNyeXB0b3x8d2luZG93Lm1zQ3J5cHRvO3ImJnIuZ2V0UmFuZG9tVmFsdWVzJiZVaW50OEFycmF5JiYoZT1yLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgzMSkpKTtmb3IodmFyIG89W10saT0wO2k8MTY7aSsrKW8ucHVzaCh0KCkudG9TdHJpbmcoMTYpKTtyZXR1cm4gby5qb2luKCIiKX1lLmV4cG9ydHM9e2dlbmVyYXRlVXVpZDpyLGdlbmVyYXRlQ2F0SWQ6b319LHt9XSwyNDpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlKXtpZighbylyZXR1cm4hMTtpZih0IT09bylyZXR1cm4hMTtpZighZSlyZXR1cm4hMDtpZighaSlyZXR1cm4hMTtmb3IodmFyIG49aS5zcGxpdCgiLiIpLHI9ZS5zcGxpdCgiLiIpLGE9MDthPHIubGVuZ3RoO2ErKylpZihyW2FdIT09blthXSlyZXR1cm4hMTtyZXR1cm4hMH12YXIgbz1udWxsLGk9bnVsbCxhPS9WZXJzaW9uXC8oXFMrKVxzK1NhZmFyaS87aWYobmF2aWdhdG9yLnVzZXJBZ2VudCl7dmFyIHM9bmF2aWdhdG9yLnVzZXJBZ2VudCxjPXMubWF0Y2goYSk7YyYmcy5pbmRleE9mKCJDaHJvbWUiKT09PS0xJiZzLmluZGV4T2YoIkNocm9taXVtIik9PT0tMSYmKG89IlNhZmFyaSIsaT1jWzFdKX1lLmV4cG9ydHM9e2FnZW50Om8sdmVyc2lvbjppLG1hdGNoOnJ9fSx7fV0sMjU6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7dmFyIG49W10scj0iIixpPTA7Zm9yKHIgaW4gdClvLmNhbGwodCxyKSYmKG5baV09ZShyLHRbcl0pLGkrPTEpO3JldHVybiBufXZhciBvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPXJ9LHt9XSwyNjpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4pe2V8fChlPTApLCJ1bmRlZmluZWQiPT10eXBlb2YgbiYmKG49dD90Lmxlbmd0aDowKTtmb3IodmFyIHI9LTEsbz1uLWV8fDAsaT1BcnJheShvPDA/MDpvKTsrK3I8bzspaVtyXT10W2Urcl07cmV0dXJuIGl9ZS5leHBvcnRzPXJ9LHt9XSwyNzpbZnVuY3Rpb24odCxlLG4pe2UuZXhwb3J0cz17ZXhpc3RzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcubmF2aWdhdGlvblN0YXJ0fX0se31dLGVlOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBvKHQpe2Z1bmN0aW9uIGUodCl7cmV0dXJuIHQmJnQgaW5zdGFuY2VvZiByP3Q6dD9jKHQscyxpKTppKCl9ZnVuY3Rpb24gbihuLHIsbyxpKXtpZighcC5hYm9ydGVkfHxpKXt0JiZ0KG4scixvKTtmb3IodmFyIGE9ZShvKSxzPW0obiksYz1zLmxlbmd0aCxmPTA7ZjxjO2YrKylzW2ZdLmFwcGx5KGEscik7dmFyIGQ9dVt5W25dXTtyZXR1cm4gZCYmZC5wdXNoKFt4LG4scixhXSksYX19ZnVuY3Rpb24gbCh0LGUpe2dbdF09bSh0KS5jb25jYXQoZSl9ZnVuY3Rpb24gaCh0LGUpe3ZhciBuPWdbdF07aWYobilmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyluW3JdPT09ZSYmbi5zcGxpY2UociwxKX1mdW5jdGlvbiBtKHQpe3JldHVybiBnW3RdfHxbXX1mdW5jdGlvbiB2KHQpe3JldHVybiBkW3RdPWRbdF18fG8obil9ZnVuY3Rpb24gdyh0LGUpe2YodCxmdW5jdGlvbih0LG4pe2U9ZXx8ImZlYXR1cmUiLHlbbl09ZSxlIGluIHV8fCh1W2VdPVtdKX0pfXZhciBnPXt9LHk9e30seD17b246bCxhZGRFdmVudExpc3RlbmVyOmwscmVtb3ZlRXZlbnRMaXN0ZW5lcjpoLGVtaXQ6bixnZXQ6dixsaXN0ZW5lcnM6bSxjb250ZXh0OmUsYnVmZmVyOncsYWJvcnQ6YSxhYm9ydGVkOiExfTtyZXR1cm4geH1mdW5jdGlvbiBpKCl7cmV0dXJuIG5ldyByfWZ1bmN0aW9uIGEoKXsodS5hcGl8fHUuZmVhdHVyZSkmJihwLmFib3J0ZWQ9ITAsdT1wLmJhY2tsb2c9e30pfXZhciBzPSJuckBjb250ZXh0IixjPXQoImdvcyIpLGY9dCgyNSksdT17fSxkPXt9LHA9ZS5leHBvcnRzPW8oKTtwLmJhY2tsb2c9dX0se31dLGdvczpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4pe2lmKG8uY2FsbCh0LGUpKXJldHVybiB0W2VdO3ZhciByPW4oKTtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5rZXlzKXRyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cix3cml0YWJsZTohMCxlbnVtZXJhYmxlOiExfSkscn1jYXRjaChpKXt9cmV0dXJuIHRbZV09cixyfXZhciBvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPXJ9LHt9XSxoYW5kbGU6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSxuLHIpe28uYnVmZmVyKFt0XSxyKSxvLmVtaXQodCxlLG4pfXZhciBvPXQoImVlIikuZ2V0KCJoYW5kbGUiKTtlLmV4cG9ydHM9cixyLmVlPW99LHt9XSxpZDpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIXR8fCJvYmplY3QiIT09ZSYmImZ1bmN0aW9uIiE9PWU/LTE6dD09PXdpbmRvdz8wOmEodCxpLGZ1bmN0aW9uKCl7cmV0dXJuIG8rK30pfXZhciBvPTEsaT0ibnJAaWQiLGE9dCgiZ29zIik7ZS5leHBvcnRzPXJ9LHt9XSxsb2FkZXI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7aWYoIUUrKyl7dmFyIHQ9Yi5pbmZvPU5SRVVNLmluZm8sZT1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXTtpZihzZXRUaW1lb3V0KHUuYWJvcnQsM2U0KSwhKHQmJnQubGljZW5zZUtleSYmdC5hcHBsaWNhdGlvbklEJiZlKSlyZXR1cm4gdS5hYm9ydCgpO2YoeSxmdW5jdGlvbihlLG4pe3RbZV18fCh0W2VdPW4pfSksYygibWFyayIsWyJvbmxvYWQiLGEoKStiLm9mZnNldF0sbnVsbCwiYXBpIik7dmFyIG49bC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLnNyYz0iaHR0cHM6Ly8iK3QuYWdlbnQsZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLGUpfX1mdW5jdGlvbiBvKCl7ImNvbXBsZXRlIj09PWwucmVhZHlTdGF0ZSYmaSgpfWZ1bmN0aW9uIGkoKXtjKCJtYXJrIixbImRvbUNvbnRlbnQiLGEoKStiLm9mZnNldF0sbnVsbCwiYXBpIil9ZnVuY3Rpb24gYSgpe3JldHVybiBPLmV4aXN0cyYmcGVyZm9ybWFuY2Uubm93P01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkpOihzPU1hdGgubWF4KChuZXcgRGF0ZSkuZ2V0VGltZSgpLHMpKS1iLm9mZnNldH12YXIgcz0obmV3IERhdGUpLmdldFRpbWUoKSxjPXQoImhhbmRsZSIpLGY9dCgyNSksdT10KCJlZSIpLGQ9dCgyNCkscD13aW5kb3csbD1wLmRvY3VtZW50LGg9ImFkZEV2ZW50TGlzdGVuZXIiLG09ImF0dGFjaEV2ZW50Iix2PXAuWE1MSHR0cFJlcXVlc3Qsdz12JiZ2LnByb3RvdHlwZTtOUkVVTS5vPXtTVDpzZXRUaW1lb3V0LFNJOnAuc2V0SW1tZWRpYXRlLENUOmNsZWFyVGltZW91dCxYSFI6dixSRVE6cC5SZXF1ZXN0LEVWOnAuRXZlbnQsUFI6cC5Qcm9taXNlLE1POnAuTXV0YXRpb25PYnNlcnZlcn07dmFyIGc9IiIrbG9jYXRpb24seT17YmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGVycm9yQmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGFnZW50OiJqcy1hZ2VudC5uZXdyZWxpYy5jb20vbnItc3BhLTExNjkubWluLmpzIn0seD12JiZ3JiZ3W2hdJiYhL0NyaU9TLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGI9ZS5leHBvcnRzPXtvZmZzZXQ6cyxub3c6YSxvcmlnaW46ZyxmZWF0dXJlczp7fSx4aHJXcmFwcGFibGU6eCx1c2VyQWdlbnQ6ZH07dCgxOSksdCgyMiksbFtoXT8obFtoXSgiRE9NQ29udGVudExvYWRlZCIsaSwhMSkscFtoXSgibG9hZCIsciwhMSkpOihsW21dKCJvbnJlYWR5c3RhdGVjaGFuZ2UiLG8pLHBbbV0oIm9ubG9hZCIscikpLGMoIm1hcmsiLFsiZmlyc3RieXRlIixzXSxudWxsLCJhcGkiKTt2YXIgRT0wLE89dCgyNyl9LHt9XSwid3JhcC1mdW5jdGlvbiI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3JldHVybiEodCYmdCBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZ0LmFwcGx5JiYhdFthXSl9dmFyIG89dCgiZWUiKSxpPXQoMjYpLGE9Im5yQG9yaWdpbmFsIixzPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksYz0hMTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSxuLG8pe2Z1bmN0aW9uIG5yV3JhcHBlcigpe3ZhciByLGEscyxjO3RyeXthPXRoaXMscj1pKGFyZ3VtZW50cykscz0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uKHIsYSk6bnx8e319Y2F0Y2goZil7cChbZiwiIixbcixhLG9dLHNdKX11KGUrInN0YXJ0IixbcixhLG9dLHMpO3RyeXtyZXR1cm4gYz10LmFwcGx5KGEscil9Y2F0Y2goZCl7dGhyb3cgdShlKyJlcnIiLFtyLGEsZF0scyksZH1maW5hbGx5e3UoZSsiZW5kIixbcixhLGNdLHMpfX1yZXR1cm4gcih0KT90OihlfHwoZT0iIiksbnJXcmFwcGVyW2FdPXQsZCh0LG5yV3JhcHBlciksbnJXcmFwcGVyKX1mdW5jdGlvbiBmKHQsZSxvLGkpe298fChvPSIiKTt2YXIgYSxzLGMsZj0iLSI9PT1vLmNoYXJBdCgwKTtmb3IoYz0wO2M8ZS5sZW5ndGg7YysrKXM9ZVtjXSxhPXRbc10scihhKXx8KHRbc109bihhLGY/cytvOm8saSxzKSl9ZnVuY3Rpb24gdShuLHIsbyl7aWYoIWN8fGUpe3ZhciBpPWM7Yz0hMDt0cnl7dC5lbWl0KG4scixvLGUpfWNhdGNoKGEpe3AoW2EsbixyLG9dKX1jPWl9fWZ1bmN0aW9uIGQodCxlKXtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5rZXlzKXRyeXt2YXIgbj1PYmplY3Qua2V5cyh0KTtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2dldDpmdW5jdGlvbigpe3JldHVybiB0W25dfSxzZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRbbl09ZSxlfX0pfSksZX1jYXRjaChyKXtwKFtyXSl9Zm9yKHZhciBvIGluIHQpcy5jYWxsKHQsbykmJihlW29dPXRbb10pO3JldHVybiBlfWZ1bmN0aW9uIHAoZSl7dHJ5e3QuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLGUpfWNhdGNoKG4pe319cmV0dXJuIHR8fCh0PW8pLG4uaW5QbGFjZT1mLG4uZmxhZz1hLG59fSx7fV19LHt9LFsibG9hZGVyIiwyLDE2LDUsMyw0XSk7CiAgICAgICAgICA7TlJFVU0ubG9hZGVyX2NvbmZpZz17YWNjb3VudElEOiIzOTI4NCIsdHJ1c3RLZXk6IjM5Mjg0IixhZ2VudElEOiI3NDQ3NDY4IixsaWNlbnNlS2V5OiI2ODlkNWI0NTYyIixhcHBsaWNhdGlvbklEOiIyMDExMjI0In0KICAgICAgICAgIDtOUkVVTS5pbmZvPXtiZWFjb246ImJhbS5uci1kYXRhLm5ldCIsZXJyb3JCZWFjb246ImJhbS5uci1kYXRhLm5ldCIsbGljZW5zZUtleToiNjg5ZDViNDU2MiIsYXBwbGljYXRpb25JRDoiMjAxMTIyNCIsc2E6MX0KICAgICAgICA8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9nbG9iYWwvaWNvbl9mb250cy5taW4uY3NzP2UxMDEzZGViNmU4NDQ3MGM3NWQwNzVmODZkYjNjZDRkOTRkMjE4MTYiPgoKICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9leGNlcHRpb25fY29tYmluZWQubWluLmNzcz80YTU4YjNiNyI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vc3R5bGVzL2Nzc19vcHQvdG9wbmF2X2NhcnRfYnV0dG9uX2NvbWJpbmVkLm1pbi5jc3M/YTIwYTc1NjYiPgoKCgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgCiAgICAgICAgdmFyIHBsYXllckFzc2V0VXJscyA9IHsiYmFyZWJvbmVfanMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzMuMjMuMFwvanNcL2JhcmVib25lLmpzIiwianMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzMuMjMuMFwvanNcL3BsYXllci5qcyIsImNocm9tZWxlc3NfY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2Nzc1wvY2hyb21lbGVzcy5jc3MiLCJjaHJvbWVsZXNzX2pzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2pzXC9jaHJvbWVsZXNzLmpzIiwiY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2Nzc1wvcGxheWVyLmNzcyIsInBsYXllcl91cmwiOiJwbGF5ZXIudmltZW8uY29tIn07CgogICAgICAgIHZhciBfZXh0ZW5kID0gZnVuY3Rpb24oKXtmb3IodmFyIHI9YXJndW1lbnRzWzBdLG49MSxlPWFyZ3VtZW50cy5sZW5ndGg7ZT5uO24rKyl7dmFyIHQ9YXJndW1lbnRzW25dO2Zvcih2YXIgYSBpbiB0KXQuaGFzT3duUHJvcGVydHkoYSkmJihyW2FdPXRbYV0pfXJldHVybiByfTsKCiAgICAgICAgICAgIHdpbmRvdyA9IF9leHRlbmQod2luZG93LCB7InZpbWVvX2VzaSI6eyJjb25maWciOnsicm91dGUiOiJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcENvbnRyb2xsZXI6bWFpbiIsImNvbnRyb2xsZXIiOiJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcENvbnRyb2xsZXIiLCJhdXRvY29tcGxldGVfZW5hYmxlZCI6dHJ1ZSwib25zaXRlX3JlZmVycmVyIjpmYWxzZX19LCJhYmxpbmNvbG5fY29uZmlnIjpbXSwidmltZW8iOnsiY29uZmlnIjp7ImNhcnQiOnsiY2FydF9jb250ZW50Ijp7InN0b2NrIjp7InN0b3JlIjoic3RvY2siLCJ2ZXJzaW9uIjoxLCJxdWFudGl0aWVzIjpbXSwiaXRlbXMiOltdLCJhdHRyaWJ1dGVzIjpbXSwiY3VycmVuY3kiOiJCUkwiLCJpdGVtc19zb3J0ZWRfYnlfaW5kZXgiOltdLCJpdGVtc19jb3VudCI6MH19fX19fSk7Cjwvc2NyaXB0PgoKICAgICAgICAgICAgICAgIAogICAgPHNjcmlwdD4KICAgICAgICB2YXIgYWJsaW5jb2xuX2NvbmZpZyA9IGFibGluY29sbl9jb25maWcgfHwge307CiAgICAgICAgYWJsaW5jb2xuX2NvbmZpZy50ZXN0cyA9IHsiSlMuT21uaXNlYXJjaCI6eyJpZCI6NTI3LCJuYW1lIjoiSlMuT21uaXNlYXJjaCIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoiY3VpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOlt7ImlkIjoxNDUyLCJuYW1lIjoicGhhc2UxIiwiYnVja2V0cyI6MTAwLCJzdGF0ZSI6MSwicHVibGlzaGVkX29uIjoiMjAyMC0xMC0yMiAxMzo0Njo1MSIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNTQ1LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoidHJ1ZSIsIndlaWdodCI6MX0seyJpZCI6MjU0NiwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6ImZhbHNlIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX0seyJpZCI6MTQ1NCwibmFtZSI6InBoYXNlMiIsImJ1Y2tldHMiOjIwMCwic3RhdGUiOjEsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMTAtMjMgMDg6MTY6NTUiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjU1MSwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6InRydWUiLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NTIsIm5hbWUiOiJvbW5pc2VhcmNoX2VuYWJsZWQiLCJjaG9pY2UiOiJmYWxzZSIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119LHsiaWQiOjE0NTgsIm5hbWUiOiJwaGFzZTMiLCJidWNrZXRzIjozMDAsInN0YXRlIjoxLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTI2IDA4OjU0OjQ4IiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NTcsIm5hbWUiOiJvbW5pc2VhcmNoX2VuYWJsZWQiLCJjaG9pY2UiOiJ0cnVlIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTU4LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoiZmFsc2UiLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDYxLCJuYW1lIjoicGhhc2U0IiwiYnVja2V0cyI6NDAwLCJzdGF0ZSI6MSwicHVibGlzaGVkX29uIjoiMjAyMC0xMC0yNyAwODo0Njo1NiIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNTY1LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoidHJ1ZSIsIndlaWdodCI6MX0seyJpZCI6MjU2NiwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6ImZhbHNlIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX1dfSwiSlMuVG9wTmF2LkNyZWF0ZSI6eyJpZCI6NDUyLCJuYW1lIjoiSlMuVG9wTmF2LkNyZWF0ZSIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IjphbGwiLCJleHBlcmltZW50cyI6W3siaWQiOjEyMzUsIm5hbWUiOiIqIExvZ2dlZCBvdXQgSm9pbiBNb2RhbCIsImJ1Y2tldHMiOjEwMCwic3RhdGUiOjMsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMDYtMTUgMTY6MTc6MTUiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjIwMjAtMTAtMTUgMDY6NTM6MjUiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjE1MCwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiY29udHJvbCIsIndlaWdodCI6MX0seyJpZCI6MjE1MSwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiam9pbl93aXRob3V0X2Rlc2lnbiIsIndlaWdodCI6MX0seyJpZCI6MjE1MiwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiam9pbl93aXRoX2Rlc2lnbiIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119LHsiaWQiOjEzMTEsIm5hbWUiOiIqICogTG9nZ2VkIG91dCBKb2luIE1vZGFsIiwiYnVja2V0cyI6OTAwLCJzdGF0ZSI6MywicHVibGlzaGVkX29uIjoiMjAyMC0wNi0yMyAxNTowMTo1MiIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMjAyMC0xMC0xNSAwNjo1MzozNSIsInBhcmFtZXRlcnMiOlt7ImlkIjoyMjc1LCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyMjc2LCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJqb2luX3dpdGhvdXRfZGVzaWduIiwid2VpZ2h0IjoxfSx7ImlkIjoyMjc3LCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJqb2luX3dpdGhfZGVzaWduIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX1dfSwiSlMuVXBzZWxsLlJldmlldyI6eyJpZCI6NDQ0LCJuYW1lIjoiSlMuVXBzZWxsLlJldmlldyIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOltdfSwiVG9wTmF2Lk5ld1ZpZGVvLlNjcmVlblJlY29yZEZvckFsbCI6eyJpZCI6NTQxLCJuYW1lIjoiVG9wTmF2Lk5ld1ZpZGVvLlNjcmVlblJlY29yZEZvckFsbCIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOlt7ImlkIjoxNDE4LCJuYW1lIjoiU2hvdyByZWNvcmRlciBsaW5rIGZvciBhbGwiLCJidWNrZXRzIjoxMDAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTA1IDE0OjMwOjQwIiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTIxIDAzOjI4OjQzIiwicGFyYW1ldGVycyI6W3siaWQiOjI0NzcsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNDc4LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDUwLCJuYW1lIjoiKiBTaG93IHJlY29yZGVyIGxpbmsgZm9yIGFsbCIsImJ1Y2tldHMiOjAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTIyIDE3OjE3OjExIiwicGF1c2VkX29uIjoiMjAyMC0xMC0yMiAxNzoxNzoyNyIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTIyIDE3OjE3OjQwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NDAsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTQxLCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NDIsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbl9hbmltYXRpb24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDUzLCJuYW1lIjoiKiAqIFNob3cgcmVjb3JkZXIgbGluayBmb3IgYWxsIiwiYnVja2V0cyI6NTAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTIyIDE3OjM2OjQxIiwicGF1c2VkX29uIjoiMjAyMC0xMC0yNiAxNTowNzoyOCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTI2IDE1OjA3OjU2IiwicGFyYW1ldGVycyI6W3siaWQiOjI1NDcsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTQ4LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NDksIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbl9hbmltYXRpb24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDYwLCJuYW1lIjoiKiAqICogU2hvdyByZWNvcmRlciBsaW5rIGZvciBhbGwiLCJidWNrZXRzIjoxMDAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTI2IDE1OjA4OjU0IiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTI3IDEwOjAyOjU0IiwicGFyYW1ldGVycyI6W3siaWQiOjI1NjIsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTYzLCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NjQsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbl9hbmltYXRpb24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDYyLCJuYW1lIjoiKiAqICogKiBTaG93IHJlY29yZGVyIGxpbmsgZm9yIGFsbCIsImJ1Y2tldHMiOjEwMDAsInN0YXRlIjoxLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTI3IDEwOjA0OjEwIiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NjcsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0Ijo1fSx7ImlkIjoyNTY4LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjkwfSx7ImlkIjoyNTY5LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW5fYW5pbWF0aW9uIiwid2VpZ2h0Ijo1fV0sInNlZ21lbnRzIjpbXX1dfX07CiAgICA8L3NjcmlwdD4KPHNjcmlwdD4KKGZ1bmN0aW9uKCkgewogICAgd2luZG93Ll9ndG0gPSBbeyJleGNlcHRpb25faHR0cF9jb2RlIjoiSFRUUFwvMS4xIDQwNCBOb3QgRm91bmQiLCJsYW5ndWFnZSI6ImVuIiwidXNlcl9zdGF0dXMiOiJsb2dnZWRfb3V0IiwidXNlcl90eXBlIjoibm9uZSIsImdhX3VuaXZlcnNhbF9pZCI6IlVBLTc2NjQxLTgiLCJjb21zY29yZV9zaXRlX2lkIjoxMDM0ODI4OX1dOwoKICAgICAgICB2YXIgZ2RwckNvb2tpZSA9IChkb2N1bWVudC5jb29raWUubWF0Y2goL14oPzouKjspP1xzKnZpbWVvX2dkcHJfb3B0aW5ccyo9XHMqKFteO10rKSg/Oi4qKT8kLyl8fFssbnVsbF0pWzFdOwogICAgaWYgKGdkcHJDb29raWUgPT09ICctMScpIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgICAgIHdpbmRvdy5fZ3RtLnB1c2goewogICAgICAgICd2dWlkJzogZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKXZ1aWRccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKSwKICAgICAgICAnZ3RtLnN0YXJ0JzogbmV3IERhdGUoKS5nZXRUaW1lKCksCiAgICAgICAgJ2V2ZW50JzogJ2d0bS5qcycKICAgIH0pOwogICAgdmFyIGd0bXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwKICAgICAgICBub2RlOwogICAgZ3Rtcy5hc3luYyA9IHRydWU7CiAgICBndG1zLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgIGd0bXMuc3JjID0gJy8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0bS5qcz9pZD1HVE0tUkJLSyZsPV9ndG0nOwogICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsKICAgIG5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZ3Rtcywgbm9kZSk7Cn0pKCk7Cjwvc2NyaXB0Pgo8c2NyaXB0PgogICAgdmFyIGdvb2dsZXRhZyA9IGdvb2dsZXRhZyB8fCB7fSwKICAgICAgICBncHRhZHNsb3RzID0gW10sCiAgICAgICAgbGFuZ3VhZ2UsCiAgICAgICAgaGFzX3VwbG9hZGVkLAogICAgICAgIGNvaG9ydDsKICAgIGdvb2dsZXRhZy5jbWQgPSBnb29nbGV0YWcuY21kIHx8IFtdOwoKICAgIChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZ2RwckNvb2tpZSA9IChkb2N1bWVudC5jb29raWUubWF0Y2goL14oPzouKjspP1xzKnZpbWVvX2dkcHJfb3B0aW5ccyo9XHMqKFteO10rKSg/Oi4qKT8kLyl8fFssbnVsbF0pWzFdOwogICAgICAgIGlmIChnZHByQ29va2llID09PSAnLTEnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdmFyIGdhZHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwKICAgICAgICAgICAgdXNlU1NMID0gJ2h0dHBzOicgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wsCiAgICAgICAgICAgIG5vZGU7CiAgICAgICAgZ2Fkcy5hc3luYyA9IHRydWU7CiAgICAgICAgZ2Fkcy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICAgICAgZ2Fkcy5zcmMgPSAodXNlU1NMID8gJ2h0dHBzOicgOiAnaHR0cDonKSArICcvL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vdGFnL2pzL2dwdC5qcyc7CiAgICAgICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsKICAgICAgICBub2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGdhZHMsIG5vZGUpOwogICAgfSkoKTsKCiAgICBnb29nbGV0YWcuY21kLnB1c2goZnVuY3Rpb24oKSB7CiAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2UgPSBkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopbGFuZ3VhZ2VccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKTsKICAgICAgICAgICAgaGFzX3VwbG9hZGVkID0gKGRvY3VtZW50LmNvb2tpZS5yZXBsYWNlKC8oPzooPzpefC4qO1xzKiloYXNfdXBsb2FkZWRccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKSkgPyAnWScgOiAnTic7CiAgICAgICAgICAgIGNvbnNlbnQgPSAoZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKXZpbWVvX2dkcHJfb3B0aW5ccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKSkgPT09ICctMScgPyAxIDogMDsKICAgICAgICAgICAgY29ob3J0ID0gJ0EnOwogICAgICAgIAogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2xhbmd1YWdlJywgW2xhbmd1YWdlXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnaXNfdXBsb2FkZXInLCBbaGFzX3VwbG9hZGVkXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnY29ob3J0JywgW2NvaG9ydF0pOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2NvaG9ydF9hJywgWyhjb2hvcnQgPT09ICdBJykgPyAnWScgOiAnTiddKTsKICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnRfYicsIFsoY29ob3J0ID09PSAnQicpID8gJ1knIDogJ04nXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygncHJvZHVjdCcsIFsnJ10pOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ3N0b3JhZ2UnLCBbJ04nXSk7CgogICAgICAgICAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnc2VjJywgWydmYWxzZSddKTsKCiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnbG9nZ2VkX2luJywgWydmYWxzZSddKTsKCiAgICAgICAgICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdycHYnLCAoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMCkrMSkudG9TdHJpbmcoKSk7CgogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRSZXF1ZXN0Tm9uUGVyc29uYWxpemVkQWRzKGNvbnNlbnQpOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5lbmFibGVBc3luY1JlbmRlcmluZygpOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5kaXNhYmxlSW5pdGlhbExvYWQoKTsKICAgICAgICBnb29nbGV0YWcuZW5hYmxlU2VydmljZXMoKTsKICAgIH0pOwo8L3NjcmlwdD4KCiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvbG9nZ2luZ19jb21iaW5lZC5taW4uanM/OTc0MjEzZDEiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L2FibGluY29sbl9jb21iaW5lZC5taW4uanM/NmM0YWNiNTciPjwvc2NyaXB0PgoKCgogICAgPC9oZWFkPgogICAgPGJvZHkgY2xhc3M9Im9uc2l0ZSAiPgogICAgICAgIDxkaXYgaWQ9IndyYXAiIGNsYXNzPSJvdXRlcl93cmFwIj4KICAgICAgICAgICAgPGRpdiBpZD0idG9wbmF2X291dGVyX3dyYXAiPgogICAgICAgICAgICAgICAgPGRpdiBpZD0iY3JlYXRlLWZhY2Vib29rLWhlYWRlciI+PC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZpbWVvQnJhbmRfQ29sb3JSaWJib24gIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAoKPHN0eWxlPgogICAgQC13ZWJraXQta2V5ZnJhbWVzIHJlY29yZF9hbmltYXRpb24gewogICAgICAgIDAlLCAyMCUsIDUwJSwgODAlLCAxMDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CiAgICAgICAgNDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMnB4KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7CiAgICAgICAgfQogICAgICAgIDYwJSB7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDNweCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpOwogICAgICAgIH0KICAgIH0KCiAgICBAa2V5ZnJhbWVzIHJlY29yZF9hbmltYXRpb24gewogICAgICAgIDAlLCAyMCUsIDUwJSwgODAlLCAxMDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CiAgICAgICAgNDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMnB4KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7CiAgICAgICAgfQogICAgICAgIDYwJSB7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDNweCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpOwogICAgICAgIH0KICAgIH0KCiAgICAubG9nZ2VkX291dF9yZWNvcmRfYW5pbWF0aW9uIHsKICAgICAgICBhbmltYXRpb246IHJlY29yZF9hbmltYXRpb24gMS41cyAuMjVzIDU7CiAgICB9CgogICAgLmxvZ2dlZF9pbl9yZWNvcmRfYW5pbWF0aW9uIHsKICAgICAgICBhbmltYXRpb246IHJlY29yZF9hbmltYXRpb24gMS41cyAuMjVzIGluZmluaXRlOwogICAgfQoKICAgIC5yZWNvcmRlcl9uZXdfbGFiZWwgewogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzExNDBDNjsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAxNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICB3aWR0aDogNDBweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIH0KPC9zdHlsZT4KCjxzY3JpcHQ+CiAgICB3aW5kb3cudmltZW8gPSB3aW5kb3cudmltZW8gfHwge307Cjwvc2NyaXB0PgoKPGRpdiBpZD0idG9wbmF2X2Rlc2t0b3AiIGNsYXNzPSJ0b3BuYXZfZGVza3RvcCAiIHJvbGU9ImJhbm5lciI+CiAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF93cmFwcGVyIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbG9nbyIgaHJlZj0iLy92aW1lby5jb20iIGFsdD0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiB0aXRsZT0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiBhcmlhLWxhYmVsPSJHbyB0byBWaW1lbyBob21lIHBhZ2UiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnZpbWVvX2hvbWUiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2hvbWVfY2xpY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFsdD0iVmltZW8iIHdpZHRoPSIxMDAiIGhlaWdodD0iNDAiPjxwYXRoIGQ9Ik0yMi40NDggMTQuNTc1Yy0uMTA0IDIuMTctMS42MTggNS4xNDYtNC41NDQgOC45MTItMy4wMyAzLjk0Mi01LjU5IDUuOTEyLTcuNjg2IDUuOTEyLTEuMjk3IDAtMi4zOTctMS4yMDQtMy4zLTMuNi0uNi0yLjItMS4yMDItNC4zOTgtMS43OTQtNi41OTgtLjY2NC0yLjM5Ni0xLjM4LTMuNi0yLjE0Ny0zLjYtLjE2NiAwLS43NDcuMzU0LTEuNzUzIDEuMDVsLTEuMDQ4LTEuMzVjMS4xLS45NjUgMi4xOS0xLjkzIDMuMjU3LTIuOTA1IDEuNDYzLTEuMjY1IDIuNTczLTEuOTQgMy4zLTIuMDAyIDEuNzMyLS4xNjYgMi44IDEuMDE3IDMuMjA1IDMuNTU4LjQzNSAyLjc0LjczNiA0LjQ0LjkwMiA1LjExNS40OTggMi4yNyAxLjA0OCAzLjQwMiAxLjY1IDMuNDAyLjQ2NiAwIDEuMTcyLS43MzcgMi4xMDUtMi4yMS45MzQtMS40NzMgMS40MzItMi41OTMgMS41MDQtMy4zNy4xMzMtMS4yNzctLjM2NS0xLjkxLTEuNTA2LTEuOTEtLjUzIDAtMS4wOC4xMjUtMS42NS4zNjQgMS4xLTMuNTkgMy4xODYtNS4zMzMgNi4yNzctNS4yMyAyLjI3My4wNzMgMy4zNSAxLjU1NiAzLjIyNyA0LjQ2bTEzLjc1NSA3LjAzNGMtLjkzMyAxLjc2NC0yLjIyIDMuMzctMy44NiA0LjgwMy0yLjI0IDEuOTMtNC40NyAyLjkwNS02LjcgMi45MDUtMS4wMzcuMDAyLTEuODI2LS4zMy0yLjM3Ni0uOTk0LS41NS0uNjYzLS44MS0xLjUzNS0uNzc3LTIuNjAzLjAzLTEuMS4zNzItMi44IDEuMDI1LTUuMTA0LjY1NC0yLjMwMy45NzYtMy41MzcuOTc2LTMuNzAzIDAtLjg2LS4zLTEuMjk3LS45MDItMS4yOTctLjE5OCAwLS43Ny4zNTMtMS43MDIgMS4wNDhsLTEuMTUyLTEuMzVjMS4wNy0uOTYyIDIuMTM3LTEuOTI3IDMuMjA2LTIuOTAyIDEuNDMtMS4yNjYgMi41LTEuOTQgMy4yMDUtMi4wMDIgMS4xLS4xMDMgMS45MS4yMyAyLjQyOC45NzYuNTE4Ljc0Ny43MDUgMS43MjIuNTggMi45MTUtLjQzNSAyLjAzNC0uOTAyIDQuNjA3LTEuNCA3LjczLS4wMyAxLjQzLjQ4OCAyLjE0NiAxLjU1NiAyLjE0Ni40NjcgMCAxLjI5Ny0uNDk4IDIuNS0xLjQ4My45OTYtLjgyIDEuODE1LTEuNTk4IDIuNDUtMi4zMjRsLjk0MiAxLjI0NG0tNC4zNTctMTcuOGMtLjAzLjgzLS40NDYgMS42MjgtMS4yNTUgMi4zOTUtLjkuODYtMS45NyAxLjI5Ni0zLjIwNCAxLjI5Ni0xLjkgMC0yLjgyMi0uODMtMi43NS0yLjQ5LjAzMi0uODYuNTQtMS42OSAxLjUyNi0yLjQ5Ljk4NS0uNzk3IDIuMDc0LTEuMTkgMy4yNzgtMS4xOS43MDUgMCAxLjI4Ni4yNyAxLjc1My44Mi40NjcuNTQuNjg0IDEuMS42NTMgMS42Nm0zNS42MTIgMTcuOGMtLjkzMyAxLjc2My0yLjIyIDMuMzctMy44NiA0LjgwMi0yLjI0IDEuOTMtNC40NyAyLjkwNC02LjcgMi45MDQtMi4xNjguMDAyLTMuMjE2LTEuMjAyLTMuMTUzLTMuNTk4LjAzLTEuMDcuMjM4LTIuMzU1LjYyMi0zLjg1LjM4NC0xLjUwMy41OS0yLjY2NS42MjMtMy41MDUuMDMtMS4yNjUtLjM1My0xLjg5OC0xLjE1Mi0xLjg5OC0uODcgMC0xLjkxIDEuMDM2LTMuMTEyIDMuMS0xLjI3NiAyLjE2OC0xLjk2IDQuMjc0LTIuMDY0IDYuMzA4LS4wNzMgMS40My4wNzIgMi41NC40MjUgMy4yOTgtMi4zMjQuMDY0LTMuOTYzLS4zMi00Ljg4Ni0xLjE1LS44My0uNzM3LTEuMjEyLTEuOTUtMS4xNS0zLjY1Mi4wMy0xLjA2OC4xOTgtMi4xMzcuNDg4LTMuMjA1LjI5LTEuMDcuNDU3LTIuMDIzLjQ4OC0yLjg1My4wNjItMS4yMzQtLjM4NC0xLjg1Ny0xLjM1LTEuODU3LS44NCAwLTEuNzQuOTU1LTIuNzA2IDIuODUzLS45NjYgMS45LTEuNTA1IDMuODktMS42MSA1Ljk1Ni0uMDYgMS44NjcuMDUzIDMuMTc0LjM2NCAzLjktMi4yOTMuMDYyLTMuOTItLjQxNS00Ljg3Ni0xLjQ1Mi0uNzk4LS44Ni0xLjE2LTIuMTgtMS4xLTMuOTQyLjAzMi0uODYuMTg4LTIuMDc1LjQ1Ny0zLjYyLjI4LTEuNTQ2LjQyNS0yLjc1LjQ1Ny0zLjYyLjA2Mi0uNjAzLS4wODMtLjkwMy0uNDQ2LS45MDMtLjE5NyAwLS43NjguMzQtMS43MDIgMS4wMTVsLTEuMjAzLTEuMzQ4Yy4xNjgtLjEzNSAxLjIxNi0xLjEgMy4xNTYtMi45MDUgMS40LTEuMjk3IDIuMzU0LTEuOTcgMi44NTItMi4wMDIuODcyLS4wNzMgMS41NjcuMjkgMi4xMDYgMS4wOC41My43ODcuOCAxLjY5LjggMi43MjcgMCAuMzMyLS4wMzIuNjU0LS4xMDUuOTU0LjQ5Ny0uNzY2IDEuMDgtMS40MyAxLjc1Mi0yIDEuNTM3LTEuMzQgMy4yNi0yLjA4NiA1LjE1Ny0yLjI1MiAxLjY0LS4xMzUgMi44LjI1IDMuNTA1IDEuMTUyLjU3LjczNi44MyAxLjc4NC44IDMuMTUzLjIzNy0uMTk4LjQ4Ni0uNDE2Ljc0Ni0uNjU0Ljc2Ny0uOTAzIDEuNTE0LTEuNjIgMi4yNS0yLjE0OCAxLjIzNS0uOTAyIDIuNTItMS40IDMuODYtMS41MDQgMS41OTctLjEzNSAyLjc1LjI1IDMuNDU0IDEuMTUyLjYwMi43MjYuODcgMS43NzQuOCAzLjE0My0uMDMyLjkzMy0uMjYgMi4yOC0uNjc1IDQuMDY1LS40MTYgMS43NzMtLjYyNCAyLjgtLjYyNCAzLjA3LS4wMy42OTUuMDMgMS4xODIuMTk3IDEuNDQyLjE2Ni4yNy41Ny4zOTQgMS4yMDMuMzk0LjQ2NyAwIDEuMjk3LS40OTcgMi41LTEuNDgyLjk5Ni0uODIgMS44MTYtMS41OTggMi40NS0yLjMyNGwuOTYzIDEuMjU0bTE4Ljc2NS0uMDUyYy0uOTY1IDEuNTk4LTIuODc0IDMuMTk1LTUuNzA2IDQuNzkzLTMuNTM4IDIuMDMyLTcuMTI3IDMuMDUtMTAuNzU4IDMuMDUtMi43MDYgMC00LjYzNi0uOTA0LTUuODA4LTIuNy0uODMtMS4yMzMtMS4yMzQtMi42OTYtMS4yMDMtNC40MDcuMDMtMi42OTggMS4yMzQtNS4yNyAzLjYtNy43MSAyLjYwMy0yLjY2NSA1LjY3NC00LjAwMyA5LjIxLTQuMDAzIDMuMjcgMCA1IDEuMzI4IDUuMjA4IDMuOTk0LjEzNSAxLjcwMi0uNzk4IDMuNDQ1LTIuOCA1LjI0LTIuMTM3IDEuOTYtNC44MjQgMy4yMTUtOC4wNiAzLjc0NC42LjgzIDEuNTA0IDEuMjQ1IDIuNzA3IDEuMjQ1IDIuMzk2IDAgNS4wMi0uNjEzIDcuODYzLTEuODM3IDIuMDMzLS44NiAzLjYzLTEuNzUzIDQuODAzLTIuNjc2bC45NDUgMS4yNjVtLTExLjM2LTUuMjI4Yy4wMzItLjg5Mi0uMzMtMS4zNS0xLjEtMS4zNS0uOTk0IDAtMi4wMS42ODYtMy4wNDggMi4wNjYtMS4wMzggMS4zOC0xLjU2NyAyLjY5Ny0xLjU5OCAzLjk2Mi0uMDIgMC0uMDIuMjE4IDAgLjY0MyAxLjYzLS42IDMuMDUtMS41MTQgNC4yNDItMi43MzguOTY2LTEuMDU4IDEuNDYzLTEuOTIgMS41MDUtMi41ODNtMjQuOTQ2IDEuODY4Yy0uMTM1IDMuMDcyLTEuMjY1IDUuNzE3LTMuNDAyIDcuOTQ3LTIuMTM1IDIuMjMtNC43OSAzLjM1LTcuOTU1IDMuMzUtMi42MzUgMC00LjYzNy0uODUtNi4wMDYtMi41NS0uOTk3LTEuMjY3LTEuNTU3LTIuODU0LTEuNjUtNC43NTItLjE2Ni0yLjg2My44Ni01LjQ5OCAzLjEtNy44OTQgMi40MDgtMi42NjUgNS40MjctMy45OTMgOS4wNTctMy45OTMgMi4zMzQgMCA0LjA5OC43ODggNS4zIDIuMzQ0IDEuMTMyIDEuNDQzIDEuNjUgMy4yOSAxLjU1NyA1LjU1bS01LjY2NC0uMTg1Yy4wMy0uOTAzLS4wOTQtMS43MzMtLjM3NC0yLjQ4LS4yOC0uNzQ3LS42OTUtMS4xMy0xLjIyNC0xLjEzLTEuNzAyIDAtMy4xMDIuOTIzLTQuMjAyIDIuNzYtLjkzMyAxLjUwMy0xLjQzIDMuMTEtMS41MDQgNC44MTItLjAzLjg0LjExNCAxLjU3Ny40NDYgMi4yMS4zNjQuNzM2Ljg4MiAxLjEgMS41NTYgMS4xIDEuNTA1IDAgMi43OS0uODgzIDMuODYtMi42NTYuODkyLTEuNDcyIDEuMzgtMy4wMDggMS40NC00LjYxNWguMDAyeiIgZmlsbD0iIzExMjIzMyIvPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X3N0b2NrX2xvZ28iIGhyZWY9Ii9zdG9jayI+CiAgICAgICAgICAgICAgICA8c3ZnIGFsdD0iVmltZW8iIHdpZHRoPSIxNzAiIGhlaWdodD0iNDAiIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDc4MCAxMjAiPjxwYXRoIGQ9Ik00NzEuOSA3MC4zMWMtMTIuMTQtMi43NC0yNC4yOC0zLjktMjQuMjgtMTIgMC02LjUgOC44Mi03LjY2IDEzLjU5LTcuNjYgNy4yMiAwIDEzLjczIDIuMTcgMTUuMTcgMTBoMTcuMmMtMi0xNi42Mi0xNS45LTIzLTMxLjIyLTIzLTEzLjU4IDAtMzEuMjEgNS4wNS0zMS4yMSAyMS4zOCAwIDE1LjE3IDExLjg1IDE5LjUxIDI0IDIyLjExczI0IDMuNzYgMjQuNDIgMTIuNDNjLjQzIDguNTItMTAuNCA5LjgyLTE2LjYyIDkuODItOC44MSAwLTE2LTMuNDYtMTYuOS0xM2gtMTYuNDljLjI5IDE3LjYzIDE0LjMxIDI2IDMzLjA5IDI2IDE1LjQ2IDAgMzMuMzgtNi41IDMzLjM4LTI0LjI4LS4wMy0xNC43Mi0xMi4xNC0xOS4wNS0yNC4xMy0yMS44ek01MjUuNjYgMTcuMjhoLTE2LjQ4djIyLjRoLTEyLjQyVjUyaDEyLjQydjQ0Yy4yOSAxMi40MyAzLjQ3IDE5LjA4IDIwLjY3IDE5LjA4IDMuNjEgMCA3LjA4LS41OCAxMC42OS0uODd2LTEyLjY4YTI4LjUyIDI4LjUyIDAgMCAxLTYuOTQuNTdjLTcuMzcgMC03Ljk0LTMuNDctNy45NC0xMC4yNlY1MmgxNC44OFYzOS42OGgtMTQuODh6TTU4MC44NSAzNy42NmMtMjQgMC0zNy43MSAxNi40Ny0zNy43MSAzOS4zIDAgMjMgMTMuNzMgMzkuNDUgMzcuNzEgMzkuNDVTNjE4LjU3IDk5Ljk0IDYxOC41NyA3N2MwLTIyLjg3LTEzLjczLTM5LjM0LTM3LjcyLTM5LjM0em0wIDY1Ljc0Yy0xNC43MyAwLTIxLjI0LTEzLjQtMjEuMjQtMjYuNHM2LjUxLTI2LjMgMjEuMjQtMjYuM1M2MDIuMSA2NC4xIDYwMi4xIDc3cy02LjUxIDI2LjQtMjEuMjUgMjYuNHpNNjYyLjc5IDUwLjY2YzkuMSAwIDE1Ljc1IDQuOTEgMTcuMDUgMTRoMTYuNDdjLTEuNTktMTguMzUtMTYuMzMtMjctMzMuNjctMjctMjQuNTYgMC0zNi44NSAxNy42My0zNi44NSA0MC4xNyAwIDIyIDEyLjg2IDM4LjU4IDM2LjI3IDM4LjU4IDE5LjIyIDAgMzEuMjItMTAuNjkgMzQuMjUtMzAuMDZoLTE2LjQ3Yy0xLjU5IDEwLjctOC4yNCAxNy4wNS0xNy43OCAxNy4wNS0xNC4zIDAtMTkuNzktMTMuMTUtMTkuNzktMjUuNTcgMC0yMi42OSAxMS45OS0yNy4xNyAyMC41Mi0yNy4xN3pNNzQyLjI2IDY3LjEzbDI4LjYxLTI3LjQ1aC0yMC4yM2wtMjkuNzYgMzAuMlYxMS4yMUg3MDQuNHYxMDMuMThoMTYuNDhWODcuNjVsOS44Mi05LjUzIDIyLjgzIDM2LjI3aDIwLjA5bC0zMS4zNi00Ny4yNnoiIGZpbGw9IiNmZmYiPjwvcGF0aD48cGF0aCBkPSJNMTE3LjI1IDI2LjcyYTE4LjM3IDE4LjM3IDAgMCAwIDEzLjE0LTUuMzFxNC45Mi00LjY5IDUuMTMtOS44YTkuNjIgOS42MiAwIDAgMC0yLjY3LTYuODQgOS4wOCA5LjA4IDAgMCAwLTcuMTgtMy4zNyAyMC45MSAyMC45MSAwIDAgMC0xMy40NSA0LjlxLTYuMDYgNC45MS02LjI2IDEwLjIxLS40IDEwLjIyIDExLjI5IDEwLjIxek0zODYuMTIgMzguMjVxLTIyLjM4IDAtMzcuMTUgMTYuMzlRMzM1LjIgNjkuNCAzMzYuMjQgODdjLjA1Ljg2LjEyIDEuNy4yMiAyLjUzbC0xLjU0LjY4cS0xNy40NiA3LjUyLTMyLjIzIDcuNTEtNy40IDAtMTEuMDktNS4xMiAxOS45LTMuMjcgMzMtMTUuMzUgMTIuNC0xMS4wMyAxMS41NC0yMS40Ny0xLjIzLTE2LjM3LTIxLjM0LTE2LjM4LTIxLjggMC0zNy44IDE2LjQyLTE0LjU2IDE1LTE0Ljc3IDMxLjZhMzcuNTcgMzcuNTcgMCAwIDAgLjI3IDUuMzdjLTIuMjkgMS41MS00IDIuMjctNS4yIDIuMjdxLTMuOSAwLTQuOTItMS42M2MtLjY5LTEuMDktMS0zLjA2LS44My01LjkzcTAtMS42NCAyLjU3LTEyLjU3dDIuNzctMTYuNjdxLjQtOC4zNy0zLjI4LTEyLjg4LTQuMzItNS41Mi0xNC4xNy00LjdhMzAuNDIgMzAuNDIgMCAwIDAtMTUuOCA2LjE2IDU0LjU3IDU0LjU3IDAgMCAwLTkuMjMgOC44MmMtMS4xIDEtMi4xMiAxLjg2LTMuMDggMi42N3EuMTktOC40MS0zLjI4LTEyLjkzLTQuMzItNS41My0xNC4zOC00LjcyYTM2LjQ2IDM2LjQ2IDAgMCAwLTIxLjEzIDkuMjQgMzcuNjcgMzcuNjcgMCAwIDAtNy4xOSA4LjIxIDE4LjE1IDE4LjE1IDAgMCAwIC40MS0zLjlBMTkuNDIgMTkuNDIgMCAwIDAgMTYyLjUgNDNxLTMuMjgtNC44Mi04LjYyLTQuNDEtMy4wNy4yMS0xMS42OSA4LjIxLTExLjkxIDExLjA4LTEyLjkzIDExLjlsNC45MiA1LjU0YzMuODMtMi43NiA2LjE2LTQuMTUgNy00LjE1cTIuMjUgMCAxLjg1IDMuNjhhMTE0LjExIDExNC4xMSAwIDAgMS0xLjg5IDE0Ljg0Yy0uNyAzLjk0LTEuMiA3LjMzLTEuNTIgMTAuMTlsLS4xOC4xNXEtNy4zOSA2LjA4LTEwLjI2IDYuMDdjLTQuMzggMC02LjUtMi45Mi02LjM3LTguNzlxMy4wOC0xOS4yMiA1Ljc2LTMxLjY5LjgxLTcuMzYtMi4zNy0xMnQtMTAtNHEtNC4zMi40LTEzLjE0IDguMjFMOTcgNTIuMzljLS40MS05LjY4LTQuODItMTQuNjYtMTMuMjgtMTQuOTFxLTE5LS42LTI1Ljc0IDIxLjQ2YTE3LjE5IDE3LjE5IDAgMCAxIDYuNzYtMS41cTcgMCA2LjE2IDcuODQtLjQ2IDQuNzItNi4yIDEzLjgxdC04LjYyIDkuMDZxLTMuNjkgMC02Ljc3LTE0LTEtNC4xMS0zLjY5LTIxLTIuNDctMTUuNTQtMTMuMTQtMTQuNTJRMjggMzkgMTguOTQgNDYuODRxLTYuNTcgNi0xMy4zNCAxMS45bDQuMyA1LjU0UTE2LjA1IDYwIDE3LjA3IDYwcTQuNzEgMCA4LjgxIDE0Ljc2bDcuMzggMjcuMDZxNS41MiAxNC43NiAxMy41MSAxNC43NiAxMi45MiAwIDMxLjU1LTI0LjI0IDEzLjEtMTYuODQgMTctMjguNWMzLjQ0LTIuNTUgNS41Ny0zLjg0IDYuMzUtMy44NHEzLjY5IDAgMy42OSA1LjMzIDAgMS00IDE1LjE4dC00LjIgMjAuOTJxLS4yMSA2LjU3IDMuMTggMTAuNjZjMi4yNSAyLjc0IDUuNTEgNC4xMSA5Ljc1IDQuMTFxMTMuNzUgMCAyNy41LTExLjljLjgyLS43MSAxLjYxLTEuNDQgMi4zOS0yLjE4YTE2LjUxIDE2LjUxIDAgMCAwIDMuNzcgNy41NnE1LjkzIDYuMzQgMjAgNS45My0xLjg5LTQuNTItMS40Ny0xNmE1OS43IDU5LjcgMCAwIDEgNi41Ny0yNC40M3E2LTExLjY4IDExLjEtMTEuNyA2IDAgNS41NSA3LjU5YTUzLjEzIDUzLjEzIDAgMCAxLTIgMTEuNzEgNTUuMjMgNTUuMjMgMCAwIDAtMiAxMy4xM3EtLjQxIDEwLjQ3IDQuNzEgMTUgNS43MyA1LjEzIDIwLjA1IDQuNzItMi4xMy00LjcxLTEuNzItMTMuNTQuNi0xMi41MiA4LjQ0LTI1Ljg2IDcuNDEtMTIuNzIgMTIuNzYtMTIuNzMgNSAwIDQuNzQgNy44YTc0Ljk0IDc0Ljk0IDAgMCAxLTIuNTYgMTQuMzYgNzQuNjEgNzQuNjEgMCAwIDAtMi41NyAxNS43OXEtLjQxIDE0Ljc4IDEyLjk0IDE0Ljc3IDEzLjc0IDAgMjcuNS0xMS45bC40NC0uNGMuMzIuNTQuNjQgMS4wOCAxIDEuNnE3LjE5IDExLjA4IDIzLjgxIDExLjA4IDIyLjM2IDAgNDQuMTMtMTIuNWMxLjYzLS45MiAzLjE3LTEuODMgNC42NS0yLjc1YTI5LjQzIDI5LjQzIDAgMCAwIDMuMjQgNS4xOHE4LjQyIDEwLjQ1IDI0LjYzIDEwLjQ1IDE5LjUgMCAzMi42NC0xMy43M2E0OC43OSA0OC43OSAwIDAgMCAxNC0zMi41OHEuNjEtMTMuOTMtNi4zNi0yMi43NS03LjQ5LTkuNjUtMjEuODUtOS42N3ptLTk3Ljc2IDQ2LjU2YTExLjEyIDExLjEyIDAgMCAxIDAtMi42NnEuMTktNy43NSA2LjU1LTE2LjIzdDEyLjUtOC40OGMzLjE1IDAgNC42NSAxLjg1IDQuNTEgNS41MnEtLjE5IDQuMDgtNi4xNCAxMC42MmE0Ni4yNSA0Ni4yNSAwIDAgMS0xNy40MiAxMS4yM3pNMzkxIDY5Ljg1YTM5IDM5IDAgMCAxLTYgMTguOTJxLTYuNTcgMTAuOTEtMTUuODEgMTAuOS00LjExIDAtNi4zNi00LjUyYTE3LjY2IDE3LjY2IDAgMCAxLTEuODUtOS4wNSAzOS44MSAzOS44MSAwIDAgMSA2LjE2LTE5Ljc0cTYuODYtMTEuMzEgMTcuMzMtMTEuMzFjMi4xOSAwIDMuODYgMS41NCA1IDQuNjNBMjUuODIgMjUuODIgMCAwIDEgMzkxIDY5Ljg1eiIgZmlsbD0iIzAwYWRlZiI+PC9wYXRoPjwvc3ZnPgogICAgICAgICAgICA8L2E+CiAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51IiByb2xlPSJuYXZpZ2F0aW9uIiBhcmlhLWxhYmVsPSJNYWluIG1lbnUiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ0b3BuYXZfbWVudV9kZXNrdG9wX21haW4iIHJvbGU9Im1lbnViYXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0iam9pbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X21lbnVfam9pbiBqcy10b3BuYXZfbWVudV9hdXRoIiBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO3ZpbWVvLk1vZGFsLmNyZWF0ZSh7c2l6ZToneHNtYWxsJyxjb250ZW50Oicvam9pbj9tb2RhbD1uZXcnfSkudGhlbihjb21wbGV0ZVVzZXJMb2dpbikiIGRhdGEtZ2EtZXZlbnQtY2xpY2s9InRvcF9uYXZ8am9pbiIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6am9pbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfam9pbl9jbGljayIgaHJlZj0iLy92aW1lby5jb20vam9pbiIgdGl0bGU9IkJlY29tZSBhIFZpbWVvIG1lbWJlciIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfam9pbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJsb2dpbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ianMtdG9wbmF2X21lbnVfYXV0aCIgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTt2aW1lby5Nb2RhbC5jcmVhdGUoe3NpemU6J3hzbWFsbCcsY29udGVudDonL2xvZ19pbj9tb2RhbD1uZXcnfSkudGhlbihjb21wbGV0ZVVzZXJMb2dpbikiIGRhdGEtZ2EtZXZlbnQtY2xpY2s9InRvcF9uYXZ8bG9naW4iIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmxvZ2luIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9sb2dpbl9jbGljayIgaHJlZj0iLy92aW1lby5jb20vbG9nX2luIiB0aXRsZT0iTG9nIGluIHRvIHlvdXIgYWNjb3VudCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfbG9naW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZyBpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJwcmljaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByaWNpbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3ByaWNpbmdfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3VwZ3JhZGUiIHRpdGxlPSJQcmljaW5nIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9wcmljaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmljaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9InByb2R1Y3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTtldmVudC50YXJnZXQuYmx1cigpOyIgY2xhc3M9InRvcG5hdl9tZW51X25vX2xpbmsgdG9wbmF2X2hhc19kcm9wZG93biB0b3BuYXZfaWNvbl9jaGV2cm9uX2EiIGhyZWY9IiMiIHRpdGxlPSJQcm9kdWN0IiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9wcm9kdWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9kdWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duLS13cmFwcGVyIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl9wcm9kdWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3NvbHV0aW9ucy0tZmVhdHVyZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24tLWxhYmVscyI+RkVBVFVSRVM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDp2aWRlb19wbGF5ZXIiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfdmlkZW9fcGxheWVyIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1wbGF5ZXIiIHRpdGxlPSJWaWRlbyBwbGF5ZXIiPlZpZGVvIHBsYXllcjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOnNjcmVlbl9yZWNvcmRlciIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9zY3JlZW5fcmVjb3JkZXIiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3NjcmVlbi1yZWNvcmRlciIgdGl0bGU9IlNjcmVlbiByZWNvcmRlciI+U2NyZWVuIHJlY29yZGVyPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6bGl2ZV9zdHJlYW1pbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfbGl2ZV9zdHJlYW1pbmciIGhyZWY9Ii8vdmltZW8uY29tL2xpdmUiIHRpdGxlPSJMaXZlIHN0cmVhbWluZyI+TGl2ZSBzdHJlYW1pbmc8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDpwcml2YWN5IiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9wcm9kdWN0X3ByaXZhY3kiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLXByaXZhY3kiIHRpdGxlPSJQcml2YWN5Ij5Qcml2YWN5PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6Y29sbGFib3JhdGlvbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9jb2xsYWJvcmF0aW9uIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1jb2xsYWJvcmF0aW9uIiB0aXRsZT0iQ29sbGFib3JhdGlvbiI+Q29sbGFib3JhdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOmRpc3RyaWJ1dGlvbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9kaXN0cmlidXRpb24iIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLW1hcmtldGluZyIgdGl0bGU9IkRpc3RyaWJ1dGlvbiBhbmQgbWFya2V0aW5nIj5EaXN0cmlidXRpb24gJiBtYXJrZXRpbmc8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDptb25ldGl6YXRpb24iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfbW9uZXRpemF0aW9uIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1tb25ldGl6YXRpb24iIHRpdGxlPSJNb25ldGl6YXRpb24iPk1vbmV0aXphdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOmFuYWx5dGljcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9hbmFseXRpY3MiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLWFuYWx5dGljcyIgdGl0bGU9IkFuYWx5dGljcyI+QW5hbHl0aWNzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6aG9zdGluZyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9ob3N0aW5nIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy9vbmxpbmUtdmlkZW8taG9zdGluZyIgdGl0bGU9Ikhvc3RpbmcgYW5kIG1hbmFnZW1lbnQiPkhvc3RpbmcgJiBtYW5hZ2VtZW50PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvdXBncmFkZSIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24tLWNvbXBhcmVfcGxhbnMiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDpjb21wYXJlX3BsYW5zfHRhcmdldDovdXBncmFkZXx0eXBlOmNsaWNrIj5Db21wYXJlIFBsYW5zPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duLS1sYWJlbHMiPlNFUlZJQ0VTPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfc29sdXRpb25zLS1zZXJ2aWNlc19jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZXNfd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Y3JlYXRlfHRhcmdldDovY3JlYXRlfHR5cGU6Y2xpY2siIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2Jsb2NrIiBocmVmPSIvL3ZpbWVvLmNvbS9jcmVhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+TWFrZSBzb2NpYWwgdmlkZW9zIGluIGFuIGluc3RhbnQ6IHVzZSBjdXN0b20gdGVtcGxhdGVzIHRvIHRlbGwgdGhlIHJpZ2h0IHN0b3J5IGZvciB5b3VyIGJ1c2luZXNzLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2VzX3dyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmZvcl9oaXJlfHRhcmdldDovZm9yLWhpcmV8dHlwZTpjbGljayIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3NvbHV0aW9ucy0tc2VydmljZXNfYmxvY2siIGhyZWY9Ii8vdmltZW8uY29tL2Zvci1oaXJlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIEhpcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UG9zdCBqb2JzLCBmaW5kIHByb3MsIGFuZCBjb2xsYWJvcmF0ZSBjb21taXNzaW9uLWZyZWUgaW4gb3VyIHByb2Zlc3Npb25hbCBtYXJrZXRwbGFjZS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlc193cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDplbnRlcnByaXNlfHRhcmdldDovZW50ZXJwcmlzZXx0eXBlOmNsaWNrIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfc29sdXRpb25zLS1zZXJ2aWNlc19ibG9jayIgaHJlZj0iLy92aW1lby5jb20vZW50ZXJwcmlzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudGVycHJpc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+R2V0IHlvdXIgdGVhbSBhbGlnbmVkIHdpdGggYWxsIHRoZSB0b29scyB5b3UgbmVlZCBvbiBvbmUgc2VjdXJlLCByZWxpYWJsZSB2aWRlbyBwbGF0Zm9ybS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlc193cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpzdG9ja3x0YXJnZXQ6L3N0b2NrfHR5cGU6Y2xpY2siIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2Jsb2NrIiBocmVmPSIvL3ZpbWVvLmNvbS9zdG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkJyb3dzZSBhbmQgYnV5IGV4Y2VwdGlvbmFsLCByb3lhbHR5LWZyZWUgc3RvY2sgY2xpcHMsIGhhbmRwaWNrZWQgYnkgdGhlIGJlc3QuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9InNvbHV0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X2hhc19kcm9wZG93biB0b3BuYXZfaWNvbl9jaGV2cm9uX2EiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOnNvbHV0aW9ucyIgaHJlZj0iIyIgdGl0bGU9IlNvbHV0aW9ucyIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfc29sdXRpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb2x1dGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfc29sdXRpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Y3JlYXRpdmVfcHJvZmVzc2lvbmFscyIgaHJlZj0iLy92aW1lby5jb20vc29sdXRpb25zL2NyZWF0aXZlLXByb2Zlc3Npb25hbHMtc29sdXRpb25zIiB0aXRsZT0iQWxsIHlvdSBuZWVkIHRvIG1ha2UgZ3JlYXQgdmlkZW8uIj5DcmVhdGl2ZSBQcm9mZXNzaW9uYWxzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOnNtYWxsX2J1c2luZXNzIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvc21hbGwtYnVzaW5lc3Mtc29sdXRpb25zIiB0aXRsZT0iQ2FwdHVyZSB5b3VyIGN1c3RvbWVyc+KAmSBhdHRlbnRpb24gd2l0aCB2aWRlby4iPlNtYWxsIEJ1c2luZXNzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmVudGVycHJpc2UiIGhyZWY9Ii8vdmltZW8uY29tL2VudGVycHJpc2UiIHRpdGxlPSJFbnRlcnByaXNlIj5FbnRlcnByaXNlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmVkdWNhdGlvbiIgaHJlZj0iLy92aW1lby5jb20vc29sdXRpb25zL2VkdWNhdGlvbi1zb2x1dGlvbnMiIHRpdGxlPSJTaGFyZSBrbm93bGVkZ2Ugd2l0aCB2aWRlby4iPkVkdWNhdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpmaXRuZXNzIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvZml0bmVzcy1zb2x1dGlvbnMiIHRpdGxlPSJHZXQgeW91ciBmaXRuZXNzIHN0dWRpbyBvbmxpbmUuIj5GaXRuZXNzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmZhaXRoIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvZmFpdGgtc29sdXRpb25zIiB0aXRsZT0iS2VlcCB5b3VyIGNvbW11bml0eSBjb25uZWN0ZWQuIj5GYWl0aDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJpbnNwaXJhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO2V2ZW50LnRhcmdldC5ibHVyKCk7IiBjbGFzcz0idG9wbmF2X21lbnVfbm9fbGluayB0b3BuYXZfaGFzX2Ryb3Bkb3duIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgaHJlZj0iIyIgdGl0bGU9IldhdGNoIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9pbnNwaXJhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfaW5zcGlyYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDp3YXRjaHxrZXl3b3JkOndhdGNoIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vd2F0Y2giIHRpdGxlPSJFeHBsb3JlIj5FeHBsb3JlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6c3RhZmZfcGlja3MiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX3N0YWZmX3BpY2tzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9jaGFubmVscy9zdGFmZnBpY2tzIiB0aXRsZT0iVGhlIGJlc3QgdmlkZW9zIG9uIFZpbWVvLCBjdXJhdGVkIGRhaWx5IGJ5IG91ciB0ZWFtIj5TdGFmZiBQaWNrczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDptYW5hZ2VfdmlkZW9zfGtleXdvcmQ6dmlkZW9fc2Nob29sIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfdmlkZW9fc2Nob29sX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS92aWRlb3NjaG9vbCIgdGl0bGU9IkxlYXJuIGhvdyB0byBtYWtlIGJldHRlciB2aWRlb3MiPlZpZGVvIFNjaG9vbDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L25hdj48IS0tIC8udG9wbmF2X2Rlc2t0b3BfbWVudSAtLT4KICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InRvcG5hdl9tZW51X3NlYXJjaF9vbW5pc2VhcmNoIiBjbGFzcz0idG9wbmF2X21lbnVfc2VhcmNoIiBkYXRhLXF1ZXJ5PSIiIGRhdGEtcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9tZW51X3JpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icmVjb3JkX3RpcF93cmFwcGVyIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfdmlkZW9fcG9wb3ZlciIgb25Nb3VzZWVudGVyPSJ0cmFja05ld1ZpZGVvRHJvcGRvd25JbXByZXNzaW9uKCcnKSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPSJuZXdfdmlkZW9fZHJvcGRvd25fYnV0dG9uIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3ZpZGVvX3BvcG92ZXJfYnV0dG9uIGlyaXNfYnRuLS1wcmltYXJ5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6bmV3X3ZpZGVvIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jbGljaz0iaGFuZGxlTmV3VmlkZW9DbGljaygpIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfdmlkZW9fcG9wb3Zlcl9zcGFuX3dyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyB2aWRlbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9InJlY29yZF9hbmltYXRpb25fd3JhcHBlciIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3ZpZGVvX3BvcG92ZXJfc3Bhbl92YXJpYW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNMTIgMTUuNWExIDEgMCAwIDEtLjY3LS4yNmwtNS00LjUgMS4zNC0xLjQ4TDEyIDEzLjE1bDQuMzMtMy45IDEuMzQgMS40OS01IDQuNWExIDEgMCAwIDEtLjY3LjI2eiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSIjZmZmZmZmIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgaWQ9Im5ld192aWRlb19kcm9wZG93bl92YXJpYW50IiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biB0b3BuYXZfZGVza3RvcF92aWRlb19wb3BvdmVyX2Ryb3Bkb3duX3ZhcmlhbnQiIHJvbGU9Im1lbnUiIGFyaWEtaGlkZGVuPSJ0cnVlIiBzdHlsZT0icGFkZGluZzogdW5zZXQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW1fdmFyaWFudCIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBvbmNsaWNrPSIoZnVuY3Rpb24oZXZlbnQpIHsgaWYgKHdpbmRvdy5oYW5kbGVVcGxvYWRCdXR0b25DbGljaykgeyBoYW5kbGVVcGxvYWRCdXR0b25DbGljayhldmVudCk7IH19KShldmVudCkiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om5ld192aWRlb3xrZXl3b3JkOnsnYWN0aW9uJzondXBsb2FkJ318dGFyZ2V0Oi91cGxvYWR8dHlwZTpjbGljayIgaWQ9InRvcG5hdl9kZXNrdG9wX3VwbG9hZF9idXR0b24iIGhyZWY9Ii8vdmltZW8uY29tL3VwbG9hZCIgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFsaWduX3RvcG5hdl9kcm9wZG93bl9pY29ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b3BuYXZfZHJvcGRvd25faWNvbnMiPjxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTE4IDguNDhhNy4xNiA3LjE2IDAgMCAwLTEuODQtNC43NkE1LjgxIDUuODEgMCAwIDAgNi45MiA1YTUuMjQgNS4yNCAwIDAgMC00LjY5IDMuODVBNC45MSA0LjkxIDAgMCAwIDAgMTNhNS4xMyA1LjEzIDAgMCAwIDUgNWgxMGE1LjEgNS4xIDAgMCAwIDUtNC45NCA1Ljg5IDUuODkgMCAwIDAtMi00LjU4ek0xNSAxNmgtNHYtMy41OWwxLjI5IDEuMjkgMS40MS0xLjQxLTMuNy0zLjctMy43MSAzLjdMNy43IDEzLjcgOSAxMi40MVYxNkg1YTMuMTYgMy4xNiAwIDAgMS0zLTMgMi45MSAyLjkxIDAgMCAxIDEuNTItMi41OGwuNC0uMi4wOC0uNDRBMy4zOCAzLjM4IDAgMCAxIDcuNTkgN2guN2wuMjQtLjY2QTMuNjkgMy42OSAwIDAgMSAxMiA0YTMuNzMgMy43MyAwIDAgMSAyLjcyIDEuMTJBNS40NSA1LjQ1IDAgMCAxIDE2IDl2LjU0bC40NS4zQTMuNzkgMy43OSAwIDAgMSAxOCAxMy4wNiAzLjA5IDMuMDkgMCAwIDEgMTUgMTZ6IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiMxYTJlM2IiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtX3ZhcmlhbnQiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgb25jbGljaz0iaGFuZGxlQ3JlYXRlVmlkZW9DbGljayhldmVudCkiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om5ld192aWRlb3xrZXl3b3JkOnsnYWN0aW9uJzonY3JlYXRlJ318dGFyZ2V0Oi9jcmVhdGUvdmlkZW8tbWFrZXJ8dHlwZTpjbGljayIgaWQ9InRvcG5hdl9kZXNrdG9wX2NyZWF0ZV92aWRlb19idXR0b24iIGhyZWY9Ii8vdmltZW8uY29tL2NyZWF0ZS92aWRlby1tYWtlciIgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFsaWduX3RvcG5hdl9kcm9wZG93bl9pY29ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b3BuYXZfZHJvcGRvd25faWNvbnMiPjxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0zLjIgMTYuOGwzLjgtMSAxMC0xMGMuMi0uMi4yLS41IDAtLjdMMTQuOSAzYy0uMi0uMi0uNS0uMi0uNyAwbC0yLjEgMi4xIDIuOCAyLjhMMTMuOCA5IDExIDYuMiA0LjIgMTNsLTEgMy44em05LjktMTQuOWMuOC0uOCAyLS44IDIuOCAwTDE4LjEgNGMuOC44LjggMiAwIDIuOEw3LjggMTcuMmwtNS42IDEuNWMtLjUuMS0uOS0uMi0uNy0uN2wxLjQtNS43TDEzLjEgMS45eiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiMxYTJlM2IiCiAgICAgICAgICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgYSB2aWRlbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImNhcnRfdG9wX25hdiIgY2xhc3M9InRvcG5hdl9jYXJ0X2J1dHRvbiI+PC9kaXY+CgogICAgICAgICAgICA8L2Rpdj48IS0tIC8udG9wbmF2X21lbnVfcmlnaHQgLS0+CiAgICAgICAgICAgIDwvZGl2PjwhLS0gLy50b3BuYXZfZGVza3RvcF93cmFwcGVyIC0tPgo8L2Rpdj4KCiAgICA8c2NyaXB0PgogICAgICAgIHZhciBpc01vYmlsZSA9IC9pcGhvbmV8aXBvZHxhbmRyb2lkfHdlYm9zfGJsYWNrYmVycnl8d2luZG93cyBwaG9uZS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTsKCiAgICAgICAgLy8gRE8gTk9UIFJFTU9WRS4gVGhpcyBpcyBhIGNhbGxiYWNrIGZvciB0aGUgbG9naW4gJiBqb2luIGJ1dHRvbnMgaW4gVG9wTmF2QnVpbGRlci4KICAgICAgICBmdW5jdGlvbiBjb21wbGV0ZVVzZXJMb2dpbihyZXNwb25zZSkgewogICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgIXJlc3BvbnNlLnNpZ251cCkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIGhhbmRsZVVwbG9hZEJ1dHRvbkNsaWNrKGV2ZW50KSB7CiAgICAgICAgICAgIC8vIE9wZW5zIHRoZSBhdXRoIG1vZGFsIGZvciBsb2dnZWQgb3V0IHVzZXJzCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgd2luZG93LnZpbWVvCiAgICAgICAgICAgICAgICYmIHdpbmRvdy52aW1lby5jb25maWcKICAgICAgICAgICAgICAgJiYgd2luZG93LnZpbWVvLk1vZGFsCiAgICAgICAgICAgICAgICYmICF3aW5kb3cudmltZW8uY3VyX3VzZXIKICAgICAgICAgICAgKXsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBpc01vYmlsZSA/IHdpbmRvdy5sb2NhdGlvbi5ocmVmPSIvdXBsb2FkIiA6IHZpbWVvLk1vZGFsLmNyZWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3hzbWFsbCcsCiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJy9qb2luP21vZGFsPW5ldyZyZWRpcmVjdD0vdXBsb2FkJywKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICA8L3NjcmlwdD4KCjxzY3JpcHQ+CiAgICB2YXIgc2VydmljZUVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNlcnZpY2VzX3dyYXBwZXInKTsKICAgIHZhciBoaWRkZW5TZXJ2aWNlRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2VydmljZXNfd3JhcHBlci5oaWRlJyk7CiAgICB2YXIgY291bnQgPSBzZXJ2aWNlRWxlbWVudHMubGVuZ3RoIC0gaGlkZGVuU2VydmljZUVsZW1lbnRzLmxlbmd0aDsKICAgIGlmIChjb3VudCA+IDIpIHsKICAgICAgICB2YXIgc2VydmljZUNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy50b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2NvbnRhaW5lcicpOwogICAgICAgIGlmIChzZXJ2aWNlQ29udGFpbmVyKSB7CiAgICAgICAgICAgIHNlcnZpY2VDb250YWluZXIuc3R5bGUud2lkdGggPSAnNDUwcHgnOwogICAgICAgIH0KICAgIH0KPC9zY3JpcHQ+Cgo8c2NyaXB0PgogICAgZnVuY3Rpb24gaGFuZGxlTmV3VmlkZW9DbGljaygpIHsKICAgICAgICBpZiAod2luZG93LnZpbWVvICYmIHdpbmRvdy52aW1lby5jdXJfdXNlcikgewogICAgICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICE9PSAnL3VwbG9hZCcpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy91cGxvYWQnOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgd2luZG93LnZpbWVvLk1vZGFsLmNyZWF0ZSh7IHNpemU6ICd4c21hbGwnLCBjb250ZW50OiAnL2pvaW4/bW9kYWw9bmV3JnJlZGlyZWN0PS91cGxvYWQnIH0pCiAgICAgICAgICAgICAgICAudGhlbihjb21wbGV0ZVVzZXJMb2dpbik7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGhhbmRsZUNyZWF0ZVZpZGVvQ2xpY2soZSwgaXNSZWNvcmRTY3JlZW4gPSBmYWxzZSkgewogICAgICAgIGlmICh3aW5kb3cudmltZW8gJiYgIXdpbmRvdy52aW1lby5jdXJfdXNlcikgewogICAgICAgICAgICBpZiAoIWlzUmVjb3JkU2NyZWVuKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CgogICAgICAgICAgICAgICAgd2luZG93LnZpbWVvLk1vZGFsLmNyZWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3hzbWFsbCcsCiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJy9qb2luP21vZGFsPW5ldyZyZWRpcmVjdD0vY3JlYXRlL3ZpZGVvLW1ha2VyJwogICAgICAgICAgICAgICAgfSkudGhlbihjb21wbGV0ZVVzZXJMb2dpbik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gdHJhY2tOZXdWaWRlb0Ryb3Bkb3duSW1wcmVzc2lvbihyZWNvcmRPcHRpb24pIHsKICAgICAgICBpZiAod2luZG93Ll9fZmEpIHsKICAgICAgICAgICAgd2luZG93Ll9fZmEucHVzaChbJ3RyYWNrRXZlbnQnLCB7CiAgICAgICAgICAgICAgICB0eXBlOiAnaW1wcmVzc2lvbicsCiAgICAgICAgICAgICAgICBjb250YWluZXI6ICd0b3BfbmF2JywKICAgICAgICAgICAgICAgIGNvbXBvbmVudDogJ25ld192aWRlbycsCiAgICAgICAgICAgIH1dKTsKCiAgICAgICAgICAgIGlmIChyZWNvcmRPcHRpb24pIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5fX2ZhLnB1c2goWyd0cmFja0V2ZW50JywgewogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbXByZXNzaW9uJywKICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6ICd0b3BfbmF2JywKICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICdyZWNvcmQnLAogICAgICAgICAgICAgICAgICAgIGtleXdvcmQ6IHJlY29yZE9wdGlvbiwKICAgICAgICAgICAgICAgIH1dKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KPC9zY3JpcHQ+Cgo8c2NyaXB0PgogICAgLyoqCiAgICAgKiBUaGlzIGlzIHBhcnQgb2YgYW4gQUIgRXhwZXJpbWVudAogICAgICogRXhwZXJpbWVudCBsaW5rOiBodHRwczovL3ZpbWVvLmNvbS9tb2R3b3JsZC9hYmxpbmNvbG4vNTI4CiAgICAgKiBFeHBlcmltZW50IHBhcmFtOiBzaG93X215X2RyYWZ0cwogICAgICovCiAgICB2YXIgc2hvd1ZhcmlhbnQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIHNob3dNeURyYWZ0czsKICAgICAgICBpZiAod2luZG93LkFCTGluY29sbiAmJiB3aW5kb3cuQUJMaW5jb2xuLmdldFRlc3QoJ0pTLlRvcG5hdi5NeURyYWZ0cycpLmdldCgnc2hvd19teV9kcmFmdHMnLCAnY29udHJvbCcpID09PSAndmFyaWFudCcpIHsKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdi1tYW5hZ2UtZHJhZnRzJykuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZScpOwogICAgICAgIH0KICAgIH07CiAgICBzaG93VmFyaWFudCgpOwo8L3NjcmlwdD4KCiAgICA8c2NyaXB0PgogICAgICAgIHZhciBhcnJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWNvcmRfYW5pbWF0aW9uX3dyYXBwZXInKTsKICAgICAgICB2YXIgbmV3VmlkZW9CdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVjb3JkX3RpcF93cmFwcGVyJyk7CgogICAgICAgIGlmIChhcnJvdykgewogICAgICAgICAgICBhcnJvdy5jbGFzc0xpc3QuYWRkKCdub19hbmltYXRpb24nKTsKICAgICAgICB9CgogICAgICAgIHZhciBpc0hvdmVyZWQgPSBmYWxzZTsKCiAgICAgICAgaWYgKG5ld1ZpZGVvQnRuICYmIGZhbHNlKSB7CiAgICAgICAgICAgIG5ld1ZpZGVvQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmIChpc0hvdmVyZWQpIHJldHVybjsKCiAgICAgICAgICAgICAgICBpc0hvdmVyZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGlmIChhcnJvdykgewogICAgICAgICAgICAgICAgICAgIGFycm93LmNsYXNzTGlzdC5yZW1vdmUoJ25vX2FuaW1hdGlvbicpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHN0b3JlX3JlY29yZF90aXBfc2V0dGluZ3MoMSk7CgogICAgICAgICAgICB9LCBmYWxzZSk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBzdG9yZV9yZWNvcmRfdGlwX3NldHRpbmdzKHZhbHVlKSB7CiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdQT1NUJywgJy9zZXR0aW5ncy9uYXZfcmVjb3JkZXJfdGlwJyk7CiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdYLVJlcXVlc3RlZC1XaXRoJywgJ1hNTEh0dHBSZXF1ZXN0Jyk7CiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7CiAgICAgICAgICAgIHhoci5zZW5kKCdyZWNvcmRfc2NyZWVuX3RpcF9zdGF0ZT0nICsgdmFsdWUgKyAnJnRva2VuPScgKyB2aW1lby54c3JmdCk7CgogICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGhhbmRsZS4gV2UgaG9wZSBmb3IgdGhlIGJlc3QgaW4gdGhpcyBjYXNlCiAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7fTsKICAgICAgICB9OwogICAgPC9zY3JpcHQ+CgoKICAgIAo8IS0tIFJlc3BvbnNpdmUgVG9wIE5hdiAoRXhwbG9yZSwgTE9IUCwgV2F0Y2gsIHRjKSAtLT4KPG5hdiBpZD0idG9wbmF2X21vYmlsZSIgY2xhc3M9InRvcG5hdl9tb2JpbGUgICAgbmF2X2Jhci0tbGkiIHJvbGU9ImJhbm5lciI+CgogICAgPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgZGF0YS1hY3Rpb249Im1lbnUub3BlbiIgY2xhc3M9Im5hdmJhcl9oYW1idXJnZXIgbmF2X2Jhcl9pY29uIHRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9sZWZ0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2xvZ28iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj4KICAgICAgICAgICAgICAgIDx0aXRsZT5NZW51PC90aXRsZT4KICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGUtNCIgZD0iTTcsOEgyNWExLDEsMCwwLDEsMSwxaDBhMSwxLDAsMCwxLTEsMUg3QTEsMSwwLDAsMSw2LDlINkExLDEsMCwwLDEsNyw4WiIgLz4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik03LDE1SDI1YTEsMSwwLDAsMSwxLDFoMGExLDEsMCwwLDEtMSwxSDdhMSwxLDAsMCwxLTEtMUg2QTEsMSwwLDAsMSw3LDE1WiIvPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTcsMjJIMjVhMSwxLDAsMCwxLDEsMWgwYTEsMSwwLDAsMS0xLDFIN2ExLDEsMCwwLDEtMS0xSDZBMSwxLDAsMCwxLDcsMjJaIi8+CiAgICAgICAgICAgIDwvc3ZnPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X2FjdGlvbl9idXR0b25zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii8vdmltZW8uY29tL3NlYXJjaCIgY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9yaWdodCB0b3BuYXZfbW9iaWxlX2hlYWRlcl9zZWFyY2giPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im5hdl9iYXJfc2VhcmNoX2ljb24gbmF2X2Jhcl9pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5TZWFyY2g8L3RpdGxlPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjYuNzQsMjUuMzJsLTQuNTMtNC41M2ExLDEsMCwwLDAtLjIxLS4xNEE5LDksMCwxLDAsMjAuNjUsMjJhMSwxLDAsMCwwLC4xNC4yMWw0LjUzLDQuNTNhMSwxLDAsMCwwLDEuNDEtMS40MVpNMTUsMjJhNyw3LDAsMSwxLDctN0E3LDcsMCwwLDEsMTUsMjJaIi8+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iY2FydF90b3BfbmF2X21vYmlsZSIgY2xhc3M9InRvcG5hdl9jYXJ0X2J1dHRvbiI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8IS0tIFZpbWVvIExvZ28gLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdl9iYXJfdGl0bGUganMtbmF2X2Jhcl90aXRsZSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3ZpbWVvLmNvbSIgZ3RtLWRhdGEtY2xpY2s9Im1vYmlsZV9uYXZfaG9tZV9sb2dvX2NsaWNrIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNDQxIDEyNC42ODIiIHdpZHRoPSI4NnB4IiBoZWlnaHQ9IjI3cHgiPgogICAgICAgICAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMjAuNDgxLDI3LjMyNmM1LjQ2MiwwLDEwLjE4OC0xLjkxLDE0LjE3NC01LjcyOGMzLjU0Ny0zLjM3OSw1LjM5Mi02LjkwNiw1LjU0LTEwLjU4M2MwLjE0My0yLjQ5Mi0wLjgxNS00Ljk1MS0yLjg4LTcuMzc4QzEzNS4yNDQsMS4yMTcsMTMyLjY2MiwwLDEyOS41NjIsMGMtNS4zMiwwLTEwLjE1NSwxLjc2Ny0xNC41MTEsNS4yODhjLTQuMzU2LDMuNTI3LTYuNjA4LDcuMjA0LTYuNzUsMTEuMDIyQzEwOC4wMDIsMjMuNjU2LDExMi4wNjcsMjcuMzI2LDEyMC40ODEsMjcuMzI2eiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQzNC4wNzksNTAuMTZjLTUuMzE5LTYuOTI1LTEzLjE0NS0xMC4zOTUtMjMuNDc1LTEwLjM5NWMtMTYuMDk3LDAtMjkuNDU1LDUuODk2LTQwLjA4MywxNy42ODhjLTkuOTAyLDEwLjYxNC0xNC40NzgsMjIuMjY1LTEzLjczMywzNC45NDRjMC4wNDksMC45MzIsMC4xMzIsMS44NCwwLjIyOSwyLjczOGMtMC41NTQsMC4yNDEtMS4wOTMsMC40ODMtMS42NjIsMC43MjRjLTEyLjU1Niw1LjQxMS0yNC4xNDcsOC4xMS0zNC43NzUsOC4xMWMtNS4zMiwwLTkuMzA3LTEuODM5LTExLjk2LTUuNTIxYzE0LjMxNi0yLjM1NSwyNi4yMDYtNy44NzYsMzUuNjYyLTE2LjU2OGM4Ljg1NC03Ljk1NSwxMi45ODktMTUuNjg5LDEyLjQtMjMuMTk3Yy0wLjg4Ny0xMS43OC04LjU2Mi0xNy42NzYtMjMuMDM0LTE3LjY3NmMtMTUuNjUsMC0yOS4yMzUsNS45MDktNDAuNzUsMTcuNzE0Yy0xMC40ODQsMTAuNzgzLTE1LjgwNSwyMi4xNDgtMTUuOTQ3LDM0LjEwM2MtMC4wNCwyLjAwNSwwLjA2NiwzLjkzMiwwLjMsNS43ODljLTIuNDc3LDEuNjMyLTQuMzUyLDIuNDU2LTUuNjEzLDIuNDU2Yy0yLjgxLDAtNC41NzYtMC41ODItNS4zMTQtMS43NmMtMC43MzctMS4xNzgtMS4wMzUtMy4zMDgtMC44ODctNi40MDFjMC0xLjE3OCwwLjkxOS01LjY5NSwyLjc3MS0xMy41NjVjMS44NDUtNy44NywyLjg0MS0xMy44NjQsMi45OS0xNy45ODdjMC4yOTEtNi4wMjUtMC44OTQtMTAuNjYtMy41NDctMTMuODk2Yy0zLjEwMS0zLjk3NC04LjE5NC01LjY2My0xNS4yODEtNS4wNzRjLTUuOTAyLDAuNDQ3LTExLjU5MiwyLjY2LTE3LjA1NCw2LjY0N2MtMy4yNDksMi4zNjMtNi41NjksNS41MzQtOS45NjEsOS41MjFjLTEuMTg1LDEuMDM2LTIuMjkxLDItMy4zMjcsMi44OGMwLjE0My02LjA1MS0xLjAzNi0xMC43MDUtMy41NC0xMy45NTRjLTMuMTA3LTMuOTg3LTguMjcyLTUuNjgzLTE1LjUwOC01LjA5NGMtOC40MTUsMC43MzgtMTYuMDIsNC4wNjUtMjIuODA5LDkuOTY3Yy0yLjk1OCwyLjUxMS01LjU0LDUuNDY5LTcuNzUzLDguODYxYzAuMjkxLTEuMzI3LDAuNDQtMi43MzEsMC40NC00LjIwN2MwLTQuNTc2LTEuMTg1LTguNjAyLTMuNTQ3LTEyLjA3MXMtNS40NjItNS4wNTUtOS4zMDEtNC43NTdjLTIuMjEzLDAuMTQ5LTYuNDIsMy4xMDEtMTIuNjIxLDguODU0Yy04LjU2OSw3Ljk3NC0xMy4yMTYsMTIuMjU5LTEzLjk1NCwxMi44NDFsNS4zMTMsNS45OGM0LjEzNi0yLjk4NCw2LjY0Ny00LjQ3OSw3LjUzNC00LjQ3OWMxLjYxOCwwLDIuMjg1LDEuMzI3LDEuOTk0LDMuOTc1Yy0wLjE0MywzLjgzMS0wLjgyMiw5LjE2NC0yLjAzOSwxNi4wMTJjLTAuNzU0LDQuMjQzLTEuMjk4LDcuOTA0LTEuNjM4LDEwLjk4OGMtMC4wNjYsMC4wNTUtMC4xMjksMC4xMDktMC4xOTYsMC4xNjRjLTUuMzIsNC4zNzUtOS4wMDksNi41NTYtMTEuMDc0LDYuNTU2Yy00LjcyNSwwLTcuMDE2LTMuMTU4LTYuODY3LTkuNDg4YzIuMjEzLTEzLjgyNCw0LjI4NS0yNS4yMjIsNi4yMDctMzQuMTk5YzAuNTgzLTUuMjk0LTAuMjY2LTkuNTkyLTIuNTUtMTIuOTA2Yy0yLjI5MS0zLjMxNC01Ljg3LTQuNzQ0LTEwLjczNy00LjMwNGMtMy4xMDcsMC4yOTgtNy44MzIsMy4yNDktMTQuMTgxLDguODZjLTIuMjA1LDItNC40MSwzLjk5Ni02LjYxNSw1Ljk5M2MtMC40MzctMTAuNDQ3LTUuMjA0LTE1LjgyMi0xNC4zMjktMTYuMDljLTEzLjY2OS0wLjQ0LTIyLjkzMSw3LjI3NS0yNy43NzksMjMuMTU4YzIuNTA0LTEuMDc0LDQuOTM4LTEuNjE4LDcuMzAxLTEuNjE4YzUuMDE2LDAsNy4yMjksMi44MjIsNi42NCw4LjQ1M2MtMC4yOTcsMy40MTEtMi41MTEsOC4zNzUtNi42NCwxNC44OTljLTQuMTM2LDYuNTIzLTcuMjM2LDkuNzg2LTkuMzAxLDkuNzg2Yy0yLjY2LDAtNS4wOTQtNS4wMjMtNy4zMDctMTUuMDgxYy0wLjc0NS0yLjk1MS0yLjA3MS0xMC40OTEtMy45ODctMjIuNjE0Yy0xLjc3My0xMS4yMzYtNi40OTktMTYuNDg1LTE0LjE3NC0xNS43NDdjLTMuMjQ5LDAuMjk4LTguMTIzLDMuMjQ5LTE0LjYxNCw4Ljg2QzkuNjY5LDUzLjMxOCw0Ljg2Nyw1Ny41OTcsMCw2MS44NzVsNC42NDEsNS45OGM0LjQyLTMuMDk0LDcuMDAzLTQuNjQ3LDcuNzQxLTQuNjQ3YzMuMzg1LDAsNi41NSw1LjMxMyw5LjUwMSwxNS45MjljMi42NTMsOS43MzMsNS4zMDcsMTkuNDY4LDcuOTYxLDI5LjIwMmMzLjk3NCwxMC42MjEsOC44NDEsMTUuOTI5LDE0LjU4OCwxNS45MjljOS4yODEsMCwyMC42MjctOC43MTksMzQuMDM4LTI2LjE1NEM4Ny44OTIsODUuOTg3LDkzLjk5LDc1Ljc0LDk2LjgsNjcuMzU0YzMuNzItMi43NDgsNi4wMTgtNC4xNDYsNi44NTMtNC4xNDZjMi42NTMsMCwzLjk4NywxLjkyMiwzLjk4Nyw1Ljc1NGMwLDAuNzM4LTEuNDQzLDYuMi00LjMyNCwxNi4zODFjLTIuODgsMTAuMTgyLTQuMzk1LDE3LjcwOS00LjUzNywyMi41NzVjLTAuMTQ5LDQuNzI2LDAuOTk3LDguNTU3LDMuNDMsMTEuNTA4YzIuNDM0LDIuOTUyLDUuOTQxLDQuNDI4LDEwLjUyNCw0LjQyOGM5Ljg5LDAsMTkuNzc5LTQuMjc4LDI5LjY3NS0xMi44MzVjMC44ODEtMC43NzIsMS43MzgtMS41NTcsMi41NzMtMi4zNTJjMC43ODMsMy4zMTIsMi4xMjQsNi4wNDUsNC4wNyw4LjE1YzQuMjU5LDQuNTY5LDExLjQ1Niw2LjcwNiwyMS41OTIsNi40MDhjLTEuMzUzLTMuMjQ5LTEuODg0LTkuMDAzLTEuNTg2LTE3LjI3NGMwLjQ0LTkuMTUyLDIuODA5LTE3Ljk0MSw3LjA5NC0yNi4zNTVzOC4yNzgtMTIuNjI3LDExLjk4LTEyLjYyN2M0LjI4NSwwLDYuMjg1LDIuNzMxLDUuOTg3LDguMTkzYy0wLjE0OSwzLjY5Ni0wLjg3NCw3LjkwMy0yLjE3NSwxMi42MjhjLTEuMzA3LDQuNzI1LTIuMDMyLDkuNDQ5LTIuMTc0LDE0LjE3NGMtMC4yOTgsNy41MzQsMS4zOTIsMTIuOTE5LDUuMDgxLDE2LjE2OGM0LjExNiwzLjY4OSwxMS4zMzQsNS4zOTIsMjEuNjM4LDUuMDk0Yy0xLjU0MS0zLjM5Mi0yLjE2Mi04LjI2Ni0xLjg2NC0xNC42MjFjMC40NC05LjAwMywzLjQ4Mi0xOC4zMDQsOS4xMTMtMjcuOTAyYzUuMzMzLTkuMTUxLDkuOTIyLTEzLjczMywxMy43NzItMTMuNzMzYzMuNTYsMCw1LjI2MywyLjgwOSw1LjExMyw4LjQxNGMtMC4xNDgsMy42ODgtMS4wNzQsOC44NTQtMi43NzEsMTUuNDk0Yy0xLjY5NSw2LjY0MS0yLjYyMSwxMi4zMTYtMi43NjQsMTcuMDQxYy0wLjI5NywxMC42MjgsNC4zNSwxNS45MzYsMTMuOTU1LDE1LjkzNmM5Ljg4OSwwLDE5Ljc3OS00LjI3OCwyOS42NzUtMTIuODM1YzAuMTY0LTAuMTQ0LDAuMzE2LTAuMjkzLDAuNDc5LTAuNDM4YzAuMzQsMC41ODYsMC42ODgsMS4xNjgsMS4wNjgsMS43MzJjNS4xNjUsNy45NjcsMTMuNzM0LDExLjk1NCwyNS42OTUsMTEuOTU0YzE2LjA5LDAsMzEuOTY2LTQuNDkyLDQ3LjYxNi0xMy40ODhjMS43NTYtMC45OSwzLjQyMi0xLjk3OSw1LjAxNy0yLjk3YzAuOTg2LDEuOTkxLDIuMTM4LDMuODY2LDMuNTAyLDUuNTkxYzYuMDUyLDcuNTIxLDE0LjkxMiwxMS4yODEsMjYuNTc1LDExLjI4MWMxNC4wMjUsMCwyNS43NjctNC45MzgsMzUuMjE2LTE0LjgxNWM5LjQ0OS05Ljg3NiwxNC40NjYtMjEuNTk4LDE1LjA2MS0zNS4xNjNDNDQxLjM4Nyw2NC42ODQsNDM5LjEwMiw1Ni41MDMsNDM0LjA3OSw1MC4xNnogTTMwNS4xMTgsOTAuMDAzYy0wLjA4NC0xLjkwOS0wLjA4NC0yLjg2NywwLTIuODY3YzAuMTQzLTUuNTc5LDIuNTA1LTExLjQxNyw3LjA3NC0xNy41MTRzOS4wNjItOS4xNDYsMTMuNDg4LTkuMTQ2YzMuMzkyLDAsNS4wMSwxLjk4Nyw0Ljg2Nyw1Ljk0OGMtMC4xNDksMi45MzgtMi4zNjIsNi43NjQtNi42MzQsMTEuNDYyQzMxOC42MDYsODMuMzI0LDMxMi4zNDEsODcuMzYyLDMwNS4xMTgsOTAuMDAzeiBNNDE1LjkxOCw3My44NjhjLTAuMjk3LDcuMS0yLjQzNCwxMy45MDItNi40MiwyMC40MTNjLTQuNzI1LDcuODQ1LTEwLjQxNCwxMS43Ni0xNy4wNTUsMTEuNzZjLTIuOTU4LDAtNS4yNDktMS42MjQtNi44NjctNC44OGMtMS40NzYtMi44MDktMi4xNDItNi4wNjQtMS45OTMtOS43NjdjMC4yOTEtNy41NCwyLjUwNS0xNC42NCw2LjY0Ny0yMS4zYzQuODY2LTguMTM2LDExLjA2Ny0xMi4yMDcsMTguNjAxLTEyLjIwN2MyLjM1NiwwLDQuMTY4LDEuNjcsNS40MjQsNC45OTdTNDE2LjA2Nyw2OS44NzUsNDE1LjkxOCw3My44Njh6Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnUganMtdG9wbmF2X21vYmlsZV9tZW51X21haW4iPgogICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9tb2JpbGVfYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBkYXRhLWd0bS1jbGljaz0ibW9iaWxlX25hdl9tZW51X2Nsb3NlX2NsaWNrIiBjbGFzcz0ibWVudV9jbG9zZSBwdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfY2xvc2UiPgogICAgICAgICAgICAgICAgPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTAuNDlweCIKICAgICAgICAgICAgICAgIAkgaGVpZ2h0PSIxMC40OXB4IiB2aWV3Qm94PSIwIDAgMTAuNDkgMTAuNDkiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDEwLjQ5IDEwLjQ5OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iY2xvc2VfMV8iPgogICAgICAgICAgICAgICAgCTxnPgogICAgICAgICAgICAgICAgCQk8ZyBpZD0iR3JvdXBfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYuNTAwMDAwLCA2LjUwMDAwMCkiPgogICAgICAgICAgICAgICAgCQkJPHBhdGggaWQ9IlJlY3RhbmdsZS00XzFfIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgZD0iTTMuNjktNi4yMUwzLjY5LTYuMjFjMC4zOSwwLjM5LDAuMzksMS4wMiwwLDEuNDFsLTguNDksOC40OQogICAgICAgICAgICAgICAgCQkJCWMtMC4zOSwwLjM5LTEuMDIsMC4zOS0xLjQxLDBsMCwwYy0wLjM5LTAuMzktMC4zOS0xLjAyLDAtMS40MWw4LjQ5LTguNDlDMi42Ny02LjYsMy4zLTYuNiwzLjY5LTYuMjF6Ii8+CiAgICAgICAgICAgICAgICAJCQk8cGF0aCBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgZD0iTS02LjIxLTYuMjFMLTYuMjEtNi4yMWMwLjM5LTAuMzksMS4wMi0wLjM5LDEuNDEsMGw4LjQ5LDguNDljMC4zOSwwLjM5LDAuMzksMS4wMiwwLDEuNDFsMCwwCiAgICAgICAgICAgICAgICAJCQkJYy0wLjM5LDAuMzktMS4wMiwwLjM5LTEuNDEsMGwtOC40OS04LjQ5Qy02LjYtNS4xOC02LjYtNS44Mi02LjIxLTYuMjF6Ii8+CiAgICAgICAgICAgICAgICAJCTwvZz4KICAgICAgICAgICAgICAgIAk8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgPC9idXR0b24+CgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBkYXRhLWFjdGlvbj0ibWVudS5zZXR0aW5ncy5vcGVuIgogICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9Im1vYmlsZV9uYXZfc2V0dGluZ3NfY2xpY2siCiAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzZXR0aW5ncyIKICAgICAgICAgICAgICAgIGNsYXNzPSJtZW51X3NldHRpbmdzIHB1bGxfcmlnaHQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluZ3MiCiAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE4Ljg2cHgiCiAgICAgICAgICAgICAgICAJIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDE4Ljg2IDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOC44NiAyMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgPGcgaWQ9ImdlYXJfMV8iPgogICAgICAgICAgICAgICAgCTxnPgogICAgICAgICAgICAgICAgCQk8ZyBpZD0iSWNvbl8xXyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS4wMDAwMDAsIDUuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAJCQk8ZyBpZD0iR3JvdXAtMTBfMV8iPgogICAgICAgICAgICAgICAgCQkJPC9nPgogICAgICAgICAgICAgICAgCQk8L2c+CiAgICAgICAgICAgICAgICAJCTxwYXRoIGlkPSJDb21iaW5lZC1TaGFwZV8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0xMiw0LjU4bC0wLjU3LTAuMjdWMS45OWMwLTAuNTQtMC40NS0wLjk5LTEtMC45OWgtMmMtMC41NSwwLTEsMC40NS0xLDAuOTl2Mi4zMQogICAgICAgICAgICAgICAgCQkJTDYuODYsNC41OGMtMC4yOSwwLjE0LTAuNTcsMC4zLTAuODQsMC40OEw1LjUsNS40MkwzLjQ5LDQuMjZDMy4wMiwzLjk5LDIuNDEsNC4xNiwyLjE0LDQuNjNsLTEsMS43NAogICAgICAgICAgICAgICAgCQkJQzAuODYsNi44NCwxLjAyLDcuNDYsMS40OSw3LjczTDMuNSw4Ljg5TDMuNDUsOS41MkMzLjQ0LDkuNjgsMy40Myw5Ljg0LDMuNDMsMTBzMC4wMSwwLjMyLDAuMDIsMC40OGwwLjA1LDAuNjNsLTIuMDEsMS4xNgogICAgICAgICAgICAgICAgCQkJYy0wLjQ3LDAuMjctMC42MywwLjg4LTAuMzYsMS4zNmwxLDEuNzRjMC4yNywwLjQ4LDAuODksMC42NCwxLjM2LDAuMzdsMi4wMS0xLjE2bDAuNTIsMC4zNmMwLjI3LDAuMTgsMC41NSwwLjM1LDAuODQsMC40OAogICAgICAgICAgICAgICAgCQkJbDAuNTcsMC4yN3YyLjMxYzAsMC41NCwwLjQ1LDAuOTksMSwwLjk5aDJjMC41NSwwLDEtMC40NSwxLTAuOTl2LTIuMzFMMTIsMTUuNDJjMC4yOS0wLjE0LDAuNTctMC4zLDAuODQtMC40OGwwLjUyLTAuMzYKICAgICAgICAgICAgICAgIAkJCWwyLjAxLDEuMTZjMC40NywwLjI3LDEuMDgsMC4xMSwxLjM2LTAuMzdsMS0xLjc0YzAuMjctMC40OCwwLjExLTEuMDktMC4zNi0xLjM2bC0yLjAxLTEuMTZsMC4wNS0wLjYzCiAgICAgICAgICAgICAgICAJCQljMC4wMS0wLjE2LDAuMDItMC4zMiwwLjAyLTAuNDhzLTAuMDEtMC4zMi0wLjAyLTAuNDhsLTAuMDUtMC42M2wyLjAxLTEuMTZjMC40Ny0wLjI3LDAuNjMtMC44OCwwLjM2LTEuMzZsLTEtMS43NAogICAgICAgICAgICAgICAgCQkJYy0wLjI3LTAuNDgtMC44OS0wLjY0LTEuMzYtMC4zN2wtMi4wMSwxLjE2bC0wLjUyLTAuMzZDMTIuNTcsNC44OCwxMi4yOSw0LjcyLDEyLDQuNTh6Ii8+CiAgICAgICAgICAgICAgICAJCTxjaXJjbGUgaWQ9Ik92YWxfMV8iIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjI7IiBjeD0iOS40MyIgY3k9IjEwIiByPSIyIi8+CiAgICAgICAgICAgICAgICAJPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIDx1bCBpZD0ibWVudV9saXN0IiBjbGFzcz0ibWVudV9saXN0X2xvZ2dlZF9vdXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6am9pbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfam9pbl9jbGljayIgaWQ9ImpzLWpvaW4tbGluayIgaHJlZj0iLy92aW1lby5jb20vam9pbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fam9pbiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE2cHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9IjAgMCAxNiAyMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTYgMjA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iam9pbi1sb2ctaW5fMV8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtOF8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGN4PSI4IiBjeT0iNSIgcj0iNCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IlJlY3RhbmdsZS0yNV8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0xLDE5aDE0di0zYzAtMi4yMS0xLjc5LTQtNC00SDVjLTIuMjEsMC00LDEuNzktNCw0VjE5eiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpvaW4gb3IgbG9nIGluICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSAgaWQ9ImpzLWZlYXR1cmVzLWxpbmsiIGNsYXNzPSJmZWF0dXJlcy1sYWJlbCIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl9ob3N0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDIwIDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAyMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJmZWF0dXJlc18xXyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwLTJfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGUtOF8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0xLTFoMTBjMS4xLDAsMiwwLjksMiwydjEwYzAsMS4xLTAuOSwyLTIsMkgxYy0xLjEsMC0yLTAuOS0yLTJWMUMtMS0wLjEtMC4xLTEsMS0xeiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoLTVfMV8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRkZGRkY7IiBkPSJNMy42LDMuNTFjMC0wLjU1LDAuMzktMC43NywwLjg2LTAuNWw0LjI4LDIuNWMwLjQ3LDAuMjgsMC40OCwwLjczLDAsMS4wMUw0LjQ2LDkuMDgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQzMuOTgsOS4zNiwzLjYsOS4xNSwzLjYsOC41OUwzLjYsMy41MXoiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXBfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAzLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0iUGFnZS0xXzFfIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgZD0iTTExLDE1YzIuMjEsMCw0LTEuNzksNC00VjBjMC0xLjExLTAuOS0yLTItMnYxM2MwLDEuMS0wLjksMi0yLDJILTJjMCwxLjEsMC44OSwyLDIsMkgxMXoiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZWF0dXJlcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6dmlkZW9fcGxheWVyIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9mZWF0dXJlc192aWRlb19wbGF5ZXIiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLXBsYXllciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvIHBsYXllciAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6bGl2ZV9zdHJlYW1pbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2ZlYXR1cmVzX2xpdmVfc3RyZWFtaW5nIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy9saXZlc3RyZWFtaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl91cGxvYWQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjAgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGl2ZSBzdHJlYW1pbmcgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzdG9jayIgIiBocmVmPSIvL3ZpbWVvLmNvbS9zdG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b2NrIHZpZGVvcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6cHJpdmFjeSIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfZmVhdHVyZXNfcHJpdmFjeSIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tcHJpdmFjeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcml2YWN5ICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpkaXN0cmlidXRpb24iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2ZlYXR1cmVzX2Rpc3RyaWJ1dGlvbiIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tbWFya2V0aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl91cGxvYWQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjAgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzdHJpYnV0aW9uICYgTWFya2V0aW5nICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpob3N0aW5nIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9mZWF0dXJlc19ob3N0aW5nIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy9vbmxpbmUtdmlkZW8taG9zdGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvc3RpbmcgJiBNYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aW5zcGlyYXRpb258a2V5d29yZDp3YXRjaCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfaW5zcGlyYXRpb25fd2F0Y2giIGlkPSJqcy1pbnNwaXJhdGlvbi1saW5rIiAgaHJlZj0iLy92aW1lby5jb20vd2F0Y2giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3dhdGNoIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTRweCIgdmlld0JveD0iMCAwIDIwIDE0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJpbnNwaXJhdGlvbl8xXyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwXzFfIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzLjAwMDAwMCwgNi4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0iT3ZhbF8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjtzdHJva2UtbGluZWpvaW46cm91bmQ7IiBkPSJNNyw3YzMuMzEsMCw2LjMxLTIsOS02Yy0yLjY5LTQtNS42OS02LTktNlMwLjY5LTMtMiwxQzAuNjksNSwzLjY5LDcsNyw3eiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMl8xXyIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjsiIGN4PSI3IiBjeT0iMSIgcj0iMyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BpcmF0aW9uICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxrZXl3b3JkOnVwbG9hZCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfdXBsb2FkX2NsaWNrIiBpZD0ianMtdXBsb2FkLWxpbmsiIGhyZWY9Ii8vdmltZW8uY29tL3VwbG9hZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJ1cGxvYWRfMV8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxLjAwMDAwMCwgMS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJDb21iaW5lZC1TaGFwZV8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0wLDEwYzAsMi4xNywxLjk2LDQsNCw0aDEwYzIuMDQsMCw0LTEuNzYsNC0zLjk0YzAtMS43OS0wLjgtMy4yOC0xLjk5LTQuMDcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDMTYuMDEsMS43OSwxMy40OSwwLDExLDBDOS4wOCwwLDcuMjQsMS4xOSw2LjU5LDNDMy44MiwzLjAxLDIuNTcsNC43MSwyLjA3LDYuNTJDMS4wOCw3LjAyLDAsOC4yNiwwLDEweiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZV8xXyIgeD0iOCIgeT0iOCIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjsiIHdpZHRoPSIyIiBoZWlnaHQ9IjYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBpZD0iUGF0aC0xM18xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIHBvaW50cz0iNiwxMCA5LDcgMTIsMTAgICAgICAgIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6dXBncmFkZSIgZGF0YS1ndG0tY2xpY2s9Im1vYmlsZV9uYXZfdXBncmFkZV9jbGljayIgaWQ9ICJqcy11cGdyYWRlLWxpbmsiIGNsYXNzPSIiIGhyZWY9Ii8vdmltZW8uY29tL3VwZ3JhZGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3VwZ3JhZGUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIiB3aWR0aD0iMzJweCIgaGVpZ2h0PSIzMnB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNCw3SDE1VjloNi41OEw3LjI5LDIzLjI5bDEuNDEsMS40MUwyMywxMC40MVYxN2gyVjhBMSwxLDAsMCwwLDI0LDdaIiBmaWxsPSIjZmZmZmZmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGdyYWRlICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICA8L2Rpdj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InRvcG5hdl9tb2JpbGVfbWVudSB0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3MganMtdG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2JhciBzdWJtZW51Ij4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluc19jbG9zZSB0b3BuYXZfaWNvbl9tb2JpbGVfYXJyb3dsZWZ0X2IiPiA8L2J1dHRvbj4KICAgICAgICAgICAgPGgxIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2hlYWRlcl90aXRsZSBzdWJtZW51Ij5Nb3JlIHN0dWZmPC9oMT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPHVsIGNsYXNzPSJtZW51X2xpc3Rfc2V0dGluZ3NfbG9nZ2VkX291dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS90ZXJtcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXJtcyBvZiBTZXJ2aWNlICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9wcml2YWN5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaXZhY3kgUG9saWN5ICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9kbWNhIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vY29va2llX3BvbGljeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb29raWVzICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249ImRlc2t0b3AiIG9uY2xpY2s9InZpbWVvLm1vYmlsZS5kZXNrdG9wX3NoYXJlZC5fczJkcygpOyByZXR1cm4gZmFsc2UiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNrdG9wIHNpdGUgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBsYW5ndWFnZSBocmVmPSIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBvbmNoYW5nZT0idmltZW8ubW9iaWxlLmRlc2t0b3Bfc2hhcmVkLl9zMmwodGhpcykiIHRpdGxlPSJDaG9vc2UgYSBkaWZmZXJlbnQgbGFuZ3VhZ2UiIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3NfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBjbGFzcz0ic2VsZWN0ZWQiIHNlbGVjdGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9ImVuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmdsaXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXNwYcOxb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9ImRlLURFIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJmci1GUiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnYWlzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJqYS1KUCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5pel5pys6KqeICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJwdC1CUiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9ydHVndcOqcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT0ia28tS1IiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIO2VnOq1reyWtCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29tL2ZhcSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQVEgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29taGVscC52aW1lby5jb20vaGMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVscCAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgoKICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfY29weXJpZ2h0Ij5UTSArIMKpIDIwMjAgVmltZW8sIEluYy48L2Rpdj4KICAgIDwvc2VjdGlvbj4KCgogICAgICAgIDwvbmF2PgoKPHNjcmlwdD4KKGZ1bmN0aW9uKHdpbmRvdywgZG9jdW1lbnQpewoKICAgIC8vIEdsb2JhbCB2YWx1ZXMKICAgIHdpbmRvdy52aW1lbyA9IHdpbmRvdy52aW1lbyB8fCB7fTsKICAgIHZpbWVvLm1vYmlsZSA9IHZpbWVvLm1vYmlsZSB8fCB7fTsKICAgIFZpbWVvID0gdmltZW8ubW9iaWxlIHx8IHt9OwogICAgVmltZW8uZGVza3RvcF9zaGFyZWQgPSBWaW1lby5kZXNrdG9wX3NoYXJlZCB8fCB7fTsKCiAgICAvLyBERVNLVE9QIEhBTkRMRVJTCgogICAgdmFyIGRlc2t0b3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9wbmF2X2Rlc2t0b3AnKTsKCiAgICAvLyBQcmV2ZW50IHRvdWNoIGRldmljZSB0byBoaWd0bGlnaHQgdGhlIGFyZWEgdGFwcGVkCiAgICBkZXNrdG9wLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBmdW5jdGlvbihlKXsKICAgICAgICAvLyBUYWtlIGludG8gY29uc2lkZXJhdGlvbiBhdmF0YXIgaW1nCiAgICAgICAgdmFyIHRhcmdldCA9IChlLnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbWcnKSA/IGUudGFyZ2V0LnBhcmVudE5vZGUgOiBlLnRhcmdldDsKCiAgICAgICAgaWYgKHRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3RvcG5hdl9oYXNfZHJvcGRvd24nKSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgfQogICAgfSwgZmFsc2UpOwoKICAgIC8vIEFkZCBsYXN0X3BhZ2UgY29va2llCiAgICB2YXIgbGlzdGVuID0gJ29udG91Y2hzdGFydCcgaW4gd2luZG93ID8gJ3RvdWNoc3RhcnQnIDogd2luZG93LlBvaW50ZXJFdmVudCA/ICdwb2ludGVyZG93bicgOiB3aW5kb3cuTVNQb2ludGVyRXZlbnQgPyAnTVNQb2ludGVyRG93bicgOiAnY2xpY2snOwogICAgZGVza3RvcC5hZGRFdmVudExpc3RlbmVyKGxpc3RlbiwgZnVuY3Rpb24oZSl7CiAgICAgICAgaWYgKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnanMtdG9wbmF2X21lbnVfYXV0aCcpKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9ICdsYXN0X3BhZ2U9JyArIGVuY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpICsgJztwYXRoPVwnL1wnO21heC1hZ2U9MTgwMDsnOwogICAgICAgIH0KICAgIH0sIGZhbHNlKTsKCiAgICAvLyBNT0JJTEUgSEFORExFUlMKCiAgICAvLyBUcmlnZ2VyIGlPUyBVcGxvYWQgZmxvdwogICAgVmltZW8uZGVza3RvcF9zaGFyZWQuX3VwbG9hZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAvLyBzaG93IGlUdW5lcyBvbmx5IGlmIHdlIGFyZSBpbiBpT1Mgd29ybGQKICAgICAgICBpZiAoL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpewogICAgICAgICAgICB2YXIgZGVlcGxpbmsgPSAndmltZW86Ly9hcHAudmltZW8uY29tL3VwbG9hZD9yZWY9bW9iaWxld2ViJywKICAgICAgICAgICAgICAgIGZhbGxiYWNrID0gJy91cGxvYWQnLAogICAgICAgICAgICAgICAgd2Via2l0SGlkZGVuQ2FsbGJhY2ssCiAgICAgICAgICAgICAgICBoaXRDYWxsYmFjazsKCiAgICAgICAgICAgIC8vIENhbGxiYWNrcwogICAgICAgICAgICB3ZWJraXRIaWRkZW5DYWxsYmFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgLy8gSWYgdGhlIHVzZXIgaXMgc3RpbGwgaGVyZSBvcGVuIHRoZSB1cmwgcGFnZS4KICAgICAgICAgICAgICAgIGlmICghZG9jdW1lbnQud2Via2l0SGlkZGVuKSB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gZmFsbGJhY2s7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CgogICAgICAgICAgICAvLyBUcnkgdG8gb3BlbiB0aGUgVmltZW8gQXBwCiAgICAgICAgICAgIGhpdENhbGxiYWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBkZWVwbGluazsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQod2Via2l0SGlkZGVuQ2FsbGJhY2ssIDI1KTsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGhpdENhbGxiYWNrKCk7CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBlLmhyZWY7CgogICAgfQoKCi8vIEFGVEVSIE1PQklMRSBOQVYgVEVTVCBSRUNPTkNJTEUgV0lUSCBUSEUgYG1vYmlsZV9tZW51X3NjcmlwdC5waHRtbGAKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8gU3dpdGNoIHRvIGRlc2t0b3Agc2l0ZQogICAgVmltZW8uZGVza3RvcF9zaGFyZWQuX3MyZHMgPSBmdW5jdGlvbigpIHsKICAgICAgICBkb2N1bWVudC5jb29raWU9J29wdF9vdXRfbW9iaWxlPTE7ZXhwaXJlcz1GcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVDtkb21haW49JyArIHZpbWVvLmRvbWFpbjsKICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICB9OwoKICAgIC8vIFN3aXRjaCB0byBsYW5ndWFnZQogICAgVmltZW8uZGVza3RvcF9zaGFyZWQuX3MybCA9IGZ1bmN0aW9uKHNlbCkgewogICAgICAgIHZhciBsYW5nID0gc2VsLnZhbHVlLAogICAgICAgICAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCAnL3NldHRpbmdzL2xvY2FsZScpOwogICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdYLVJlcXVlc3RlZC1XaXRoJywgJ1hNTEh0dHBSZXF1ZXN0Jyk7CiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTsKICAgICAgICB4aHIuc2VuZCgnbG9jYWxlPScgKyBsYW5nICsgJyZ0b2tlbj0nICsgdmltZW8ueHNyZnQpOwogICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiBwb3N0KCkgewogICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfTsKCiAgICB2YXIgbW9iaWxlTWVudUVsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9sb2dvJyk7CiAgICBpZiAobW9iaWxlTWVudUVsZSkgewogICAgICAgIG1vYmlsZU1lbnVFbGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CgogICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIC8vIE9wZW4gTWVudQogICAgICAgICAgICB2YXIgbW9iaWxlX21lbnVfbWFpbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX21lbnVfbWFpbicpOwogICAgICAgICAgICBtb2JpbGVfbWVudV9tYWluLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwoKICAgICAgICAgICAgLy8gQ2xvc2UgTWVudQogICAgICAgICAgICB2YXIgbW9iaWxlX2hlYWRlcl9jbG9zZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9jbG9zZScpOwogICAgICAgICAgICBtb2JpbGVfaGVhZGVyX2Nsb3NlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X21haW4uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBUb2dnbGUgU2V0dGluZ3MKICAgICAgICAgICAgdmFyIG1vYmlsZV9tZW51X3NldHRpbmdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfbWVudV9zZXR0aW5ncycpOwogICAgICAgICAgICB2YXIgdG9wbmF2MjAxNV9tb2JpbGVfaGVhZGVyX3NldHRpbmdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbmdzJyk7CiAgICAgICAgICAgIHRvcG5hdjIwMTVfbW9iaWxlX2hlYWRlcl9zZXR0aW5ncy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBtb2JpbGVfbWVudV9zZXR0aW5ncy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X21haW4uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgIHZhciB0b3BuYXYyMDE1X21vYmlsZV9oZWFkZXJfc2V0dGluZ3NfY2xvc2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluc19jbG9zZScpOwogICAgICAgICAgICAgICAgdG9wbmF2MjAxNV9tb2JpbGVfaGVhZGVyX3NldHRpbmdzX2Nsb3NlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X3NldHRpbmdzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgbW9iaWxlX21lbnVfbWFpbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKCiAgICAgICAgfSwgZmFsc2UpOwogICAgfTsKCiAgICB2YXIgbW9iaWxlQWxidW1zRWxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2FsYnVtcycpOwogICAgaWYgKG1vYmlsZUFsYnVtc0VsZSkgewogICAgICAgIG1vYmlsZUFsYnVtc0VsZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB2YXIgbW9iaWxlX21lbnVfYWxidW1zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfYWxidW1fbGlzdCcpOwogICAgICAgICAgICBtb2JpbGVfbWVudV9hbGJ1bXMuY2xhc3NMaXN0LmFkZCgnb3BlbicpOwoKICAgICAgICAgICAgLy8gQ2xvc2UKICAgICAgICAgICAgdmFyIG1vYmlsZV9hbGJ1bXNfY2xvc2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9hbGJ1bV9saXN0X2Nsb3NlJyk7CiAgICAgICAgICAgIGlmIChtb2JpbGVfYWxidW1zX2Nsb3NlKSB7CiAgICAgICAgICAgICAgICBtb2JpbGVfYWxidW1zX2Nsb3NlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X2FsYnVtcy5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0sIGZhbHNlKTsKICAgIH07CgoKCi8vIF5eXl5eXl5eXl5eXl5eXl5eXl5eCi8vIEFGVEVSIE1PQklMRSBOQVYgVEVTVCBSRUNPTkNJTEUgV0lUSCBUSEUgYG1vYmlsZV9tZW51X3NjcmlwdC5waHRtbGAKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgIC8vIFVTRVIgTUVTU0FHRQoKICAgIC8vIFNob3cgbm90aWZpY2F0aW9uIGlmIGl0IGlzIHRoZSBjYXNlCiAgICAvLyBXZSB3cmFwIHRoaXMgaW4gYSBzZXRUaW1lb3V0IHNpbmNlIHRoZSBub3RpZmljYXRpb25zIHNob3VsZAogICAgLy8gaGF2ZSBhIGxvd2VyIHByaW9yaXR5IGluIHRlcm1zIG9mIHZpc3VhbCBjb21wYXJlZCB0byBvdGhlcgogICAgLy8gaXRlbXMgb24gdGhlIHBhZ2UuCiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgIC8vIERPTSBFbGVtZW50cwogICAgICAgIHZhciBhdmF0YXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9wbmF2X21lbnVfYXZhdGFyJyk7CiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYXZhdGFyIHRoZW4gc3RvcCBpdAogICAgICAgIGlmICghYXZhdGFyKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBidWJibGUgPSBhdmF0YXIucXVlcnlTZWxlY3RvcignLnRvcG5hdl9tZW51X2F2YXRhcl9idWJibGUnKTsKICAgICAgICB2YXIgZHJvcGRvd24gPSBhdmF0YXIucXVlcnlTZWxlY3RvcignI3RvcG5hdl91c2VyX2Ryb3Bkb3duJyk7CiAgICAgICAgLy92YXIgbWVzc2FnZSA9IGF2YXRhci5xdWVyeVNlbGVjdG9yKCcudG9wbmF2X3VzZXJfbWVudV9tZXNzYWdlJyk7CiAgICAgICAgLy92YXIgY2xvc2UgPSBhdmF0YXIucXVlcnlTZWxlY3RvcignLnRvcG5hdl91c2VyX21lbnVfbWVzc2FnZV9jbG9zZScpOwogICAgICAgIHZhciBvbl9ob3ZlciA9IGZhbHNlOwoKICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBidWJibGUgdGhlbiBzdG9wIGl0CiAgICAgICAgaWYgKGJ1YmJsZSkgewogICAgICAgICAgICBidWJibGUuY2xhc3NMaXN0LmFkZCgnb24nKTsKICAgICAgICB9CgogICAgICAgIC8vIEFuZCB3ZSBhdHRhY2ggaGlkZSB0aGUgYnViYmxlCiAgICAgICAgYXZhdGFyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAob25faG92ZXIpIHJldHVybjsKCiAgICAgICAgICAgIG9uX2hvdmVyID0gdHJ1ZTsKCiAgICAgICAgICAgIGlmIChidWJibGUpIHsKICAgICAgICAgICAgICAgIGJ1YmJsZS5jbGFzc0xpc3QucmVtb3ZlKCdvbicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTYXZlIHJlbW92ZWQgc3RhdGUgWzEgbWVhbnMgdGhlIHVzZXIgb3BlbiB0aGUgZHJvcGRvd25dCiAgICAgICAgICAgIHN0b3JlX3VzZXJfbWVzc2FnZV9zZXR0aW5ncygxKTsKCiAgICAgICAgfSwgZmFsc2UpOwoKICAgICAgICAvLyBTdG9yZSBzdGF0dXMgb2YgdXNlciBuYXYgbWVzc2FnZSAoYnViYmxlIGNsb3NlZCBbMV0sIG1lc3NhZ2UgaGlkZGVuIFsyXSkKICAgICAgICBmdW5jdGlvbiBzdG9yZV91c2VyX21lc3NhZ2Vfc2V0dGluZ3ModmFsdWUpIHsKICAgICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwoKICAgICAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCAnL3NldHRpbmdzL25hdicpOwogICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignWC1SZXF1ZXN0ZWQtV2l0aCcsICdYTUxIdHRwUmVxdWVzdCcpOwogICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpOwogICAgICAgICAgICB4aHIuc2VuZCgnbWVzc2FnZV9zdGF0ZT0nICsgdmFsdWUgKyAnJnRva2VuPScgKyB2aW1lby54c3JmdCk7CgogICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGhhbmRsZS4gV2UgaG9wZSBmb3IgdGhlIGJlc3QgaW4gdGhpcyBjYXNlCiAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7fTsKICAgICAgICB9OwoKICAgIH0sIDEwMDApOwp9KSh3aW5kb3csIGRvY3VtZW50KTsKPC9zY3JpcHQ+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0id3JhcF9jb250ZW50IHZhcmlhbnQtdjIiPgogICAgICAgICAgICAgICAgCgoKCjxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9jb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0iZXhjZXB0aW9uX3NlY3Rpb24gZXhjZXB0aW9uX3NlY3Rpb24tLWluZm8iPgogICAgICAgIDxoMSBjbGFzcz0iZXhjZXB0aW9uX3RpdGxlIGlyaXNfaGVhZGVyIj5Tb3JyeSwgd2UgY291bGRu4oCZdCBmaW5kIHRoYXQgcGFnZTwvaDE+CgogICAgICAgIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9jb250ZW50Ij4KICAgICAgICAgICAgPHAgY2xhc3M9ImV4Y2VwdGlvbl9tZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbCI+CiAgICAgPGRpdiBjbGFzcz0iaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbC1pY29uIj4KICAgICAgICAgPHNwYW4gY2xhc3M9ImlyaXNfaWMgaXMtLTE2Ij48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBkPSJNOCAxNmM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHpNNyA0aDJ2Mkg3VjR6bTAgM2gydjVIN1Y3eiIvPjwvc3ZnPjwvc3Bhbj4KICAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJpcmlzX25vdGlmaWNhdGlvbi1oZWFkZXIiPgogICAgICAgIDxzdHJvbmc+UmVhc29ucyB5b3UgbWlnaHQgYmUgc2VlaW5nIHRoaXMgcGFnZTwvc3Ryb25nPgogICAgPC9kaXY+CgogICAgPHVsIGNsYXNzPSJpcmlzX25vdGlmaWNhdGlvbi1saXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+SXQgZXhpc3RzLCBidXQgeW91IGRvbuKAmXQgaGF2ZSBwZXJtaXNzaW9uIHRvIHNlZSBpdCwgb3IgeW91IG5lZWQgdG8gPGEgb25jbGljaz0idmltZW8uU2Vzc2lvbi5jcmVhdGUoKSI+bG9nIGluPC9hPi48L2xpPgogICAgICAgICAgICAgICAgPGxpPk5vdGhpbmcgaGFzIGV2ZXIgZXhpc3RlZCBoZXJlLiBTcG9va3kuPC9saT4KICAgICAgICA8bGk+U29tZXRoaW5nIG9uY2UgbGl2ZWQgaGVyZSwgYnV0IGhhcyBiZWVuIGRlbGV0ZWQuPC9saT4KICAgIDwvdWw+CjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJleGNlcHRpb25fc2VhcmNoIiBhY3Rpb249Ii9zZWFyY2giIG1ldGhvZD0iZ2V0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJleGNlcHRpb25fc2VhcmNoLWlucHV0LXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtaW5wdXQgaXJpc19pbnB1dCBpcmlzX2lucHV0LS1zZWFyY2gganMtc2VhcmNoX2F1dG9jb21wbGV0ZSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtYnV0dG9uIGlyaXNfYnRuIGlyaXNfYnRuLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImlyaXNfYnRuLWNvbnRlbnQiPlNlYXJjaDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9hdXhpbGlhcnkiPjwvZGl2Pgo8L2Rpdj4KCiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjxmb290ZXIgY2xhc3M9ImZvb3Rlcl92MiBmb290ZXJfdjItLXJlc3BvbnNpdmUiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX3NpdGVtYXAiPgogICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19saW5rcyI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogICAgICAgICAgICA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+VklNRU88L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3VwZ3JhZGUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19wcmljaW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnZpbWVvfGtleXdvcmQ6cHJpY2luZyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFByaWNpbmcgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvdXBsb2FkIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBsb2FkX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnZpbWVvfGtleXdvcmQ6dXBsb2FkIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2NoYW5uZWxzL3N0YWZmcGlja3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zdGFmZl9waWNrcyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp2aW1lb3xrZXl3b3JkOnN0YWZmX3BpY2tzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU3RhZmYgUGlja3MgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvb25kZW1hbmQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19vbl9kZW1hbmRfY2xpY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dmltZW98a2V5d29yZDpvbl9kZW1hbmQiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBPbiBEZW1hbmQgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3ZpbWVvLmNvbS9vdHQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua192aW1lb19vdHQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dmltZW98a2V5d29yZDpvdHQiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBPVFQgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvc2l0ZV9tYXAiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zaXRlX21hcF9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp2aW1lb3xrZXl3b3JkOnNpdGVfbWFwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU2l0ZSBtYXAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5TT0xVVElPTlM8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2ZlYXR1cmVzL3ZpZGVvLXBsYXllciIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpZGVvX3BsYXllciIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOnZpZGVvX3BsYXllciIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvIFBsYXllciAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9jcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19jcmVhdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpjcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZmVhdHVyZXMvdmlkZW8tcHJpdmFjeSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ByaXZhY3kiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpwcml2YWN5IgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgUHJpdmFjeSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1jb2xsYWJvcmF0aW9uIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfY29sbGFib3JhdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmNvbGxhYm9yYXRpb24iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBDb2xsYWJvcmF0aW9uICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2ZlYXR1cmVzL3ZpZGVvLW1hcmtldGluZyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2Rpc3RyaWJ1dGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmRpc3RyaWJ1dGlvbiIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIERpc3RyaWJ1dGlvbiAmIG1hcmtldGluZyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1tb25ldGl6YXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19tb25ldGl6YXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDptb25ldGl6YXRpb24iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBNb25ldGl6YXRpb24gICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvbGl2ZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2xpdmVfc3RyZWFtaW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6bGl2ZV9zdHJlYW1pbmciCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBMaXZlIHN0cmVhbWluZyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1hbmFseXRpY3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19hbmFseXRpY3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDphbmFseXRpY3MiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBBbmFseXRpY3MgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZmVhdHVyZXMvb25saW5lLXZpZGVvLWhvc3RpbmciCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19ob3N0aW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6aG9zdGluZyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEhvc3RpbmcgJiBtYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2VudGVycHJpc2UiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19lbnRlcnByaXNlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmVudGVycHJpc2UiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBFbnRlcnByaXNlICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Zvci1oaXJlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZm9yX2hpcmUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Zm9yX2hpcmUiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBGb3IgSGlyZSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9zdG9jayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3N0b2NrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOnN0b2NrIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU3RvY2sgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5BUFBTPC9zcGFuPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fcmV2ZWFsIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9oND4KICAgICAgICAgICAgPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9hcHBzLmFwcGxlLmNvbS9hcHAvYXBwbGUtc3RvcmUvaWQxMzU2Njg2NzYzP3B0PTQxNzczMSZhbXA7Y3Q9bG9ocCZhbXA7bXQ9OCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOm1hY29zIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBmb3IgbWFjT1MgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9pdHVuZXMuYXBwbGUuY29tL2FwcC92aW1lby9pZDQyNTE5NDc1OT9tdD04IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6aW9zIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBmb3IgaU9TICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vcGxheS5nb29nbGUuY29tL3N0b3JlL2FwcHMvZGV0YWlscz9pZD1jb20udmltZW8uYW5kcm9pZC52aWRlb2FwcCZhbXA7cmVmZXJyZXI9dXRtX3NvdXJjZSUzRGZvb3RlciUyNnV0bV9tZWRpdW0lM0Rsb2hwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6YW5kcm9pZCIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gZm9yIEFuZHJvaWQgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9hcHBzLmFwcGxlLmNvbS91cy9hcHAvdmltZW8tY3JlYXRlL2lkMTQ5MTc5MTUxMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOmNyZWF0ZV9pb3MiCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIENyZWF0ZSBmb3IgaU9TICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vcGxheS5nb29nbGUuY29tL3N0b3JlL2FwcHMvZGV0YWlscz9pZD1jb20udmltZW9jcmVhdGUudmlkZW9lZGl0b3IubW92aWVtYWtlciZhbXA7cmVmZXJyZXI9dXRtX3NvdXJjZSUzRGZvb3RlciUyNnV0bV9tZWRpdW0lM0Rsb2hwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6Y3JlYXRlX2FuZHJvaWQiCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIENyZWF0ZSBmb3IgQW5kcm9pZCAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL21hZ2lzdG8uY29tIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6bWFnaXN0byIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFnaXN0byAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlJFU09VUkNFUzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvaDQ+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWxpc3QgZm9vdGVyX3YyX2FjY29yZGlvbl9fbWVudSI+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2hlbHAiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19oZWxwX2NlbnRlcl9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDpoZWxwX2NlbnRlciIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEhlbHAgQ2VudGVyICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Jsb2ciCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua192aW1lb19ibG9nX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOnZpbWVvX2Jsb2ciCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBCbG9nICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Jsb2cvY2F0ZWdvcnkvdmlkZW8tc2Nob29sIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmlkZW9fc2Nob29sX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOnZpZGVvX3NjaG9vbCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvIFNjaG9vbCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vdmltZW8uY29tL290dC9yZXNvdXJjZXMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19vdHRfcmVzb3VyY2VzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOm90dF9yZXNvdXJjZXMiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBPVFQgUmVzb3VyY2VzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIudmltZW8uY29tIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZGV2ZWxvcGVyc19jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDpkZXZlbG9wZXJzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVycyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9zdHVkZW50cyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3N0dWRlbnRzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOnN0dWRlbnRzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU3R1ZGVudHMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvaGVscC9ndWlkZWxpbmVzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmltZW9fZ3VpZGVsaW5lc19jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDp2aW1lb19ndWlkZWxpbmVzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgR3VpZGVsaW5lcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlVQR1JBREU8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL3BsdXMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua191cGdyYWRlX3BsdXMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cGx1cyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIFBsdXMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvc3RvcmUvcHJvIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9wcm8iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cHJvIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gUFJPICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL2J1c2luZXNzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9idXNpbmVzcyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp1cGdyYWRlX2xpbmt8a2V5d29yZDpidXNpbmVzcyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIEJ1c2luZXNzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL3ByZW1pdW0iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua191cGdyYWRlX3ByZW1pdW0iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cHJlbWl1bSIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIFByZW1pdW0gICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZW50ZXJwcmlzZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3VwZ3JhZGVfZW50ZXJwcmlzZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp1cGdyYWRlX2xpbmt8a2V5d29yZDplbnRlcnByaXNlIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gRW50ZXJwcmlzZSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHA6Ly92aW1lby5leHRvbGUuY29tL3dlYnNpdGVfZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9yZWZfZnJpZW5kIgogICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9Il9ibGFuayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp1cGdyYWRlX2xpbmt8a2V5d29yZDpyZWZlcl9hX2ZyaWVuZCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyIGEgZnJpZW5kICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogICAgICAgICAgICA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+Q09NUEFOWTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvaDQ+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWxpc3QgZm9vdGVyX3YyX2FjY29yZGlvbl9fbWVudSI+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvYWJvdXQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19hYm91dF9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpjb21wYW55fGtleXdvcmQ6YWJvdXRfdmltZW8iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBBYm91dCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9qb2JzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfam9icyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpjb21wYW55fGtleXdvcmQ6am9icyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEpvYnMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGFzaWRlIGlkPSJmb290ZXJfdGlwIiBjbGFzcz0iZm9vdGVyX3YyX190aXAiIGFyaWEtbGl2ZT0icG9saXRlIj4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX3RpcC1oZWFkZXIiPkRpZCB5b3Uga25vdz88L2g0PgogICAgICAgICAgICA8cCBjbGFzcz0iYWN0aXZlIGZvb3Rlcl92Ml9fdGlwLWNvbnRlbnQiPlZpbWVvIGdpdmVzIGNvbnRyb2wgZnJlYWtzIHRoZSBwb3dlciB0byA8YSBocmVmPSJodHRwczovL2hlbHAudmltZW8uY29tL2hjL2VuLXVzL2FydGljbGVzLzIyNDk3MjgwOC1DdXN0b21pemluZy10aGUtZW1iZWRkZWQtcGxheWVyIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpkaWRfeW91X2tub3dfYm94fGNvbXBvbmVudDpoZWxwIj50d2VhayBldmVyeSBhc3BlY3Q8L2E+IG9mIHRoZWlyIGVtYmVkZGVkIHZpZGVvczogY29sb3JzLCBidXR0b25zLCBlbmQgc2NyZWVucywgYW5kIG1vcmUuPC9wPgogICAgICAgIDwvYXNpZGU+CiAgICA8L3NlY3Rpb24+CiAgICAKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19hdXhpbGlhcnkgIj4KCiAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsIj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50Ij4KICAgICAgICAgICAgPHA+VE0gKyAmY29weTsgMjAyMCBWaW1lbywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdCI+CiAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL3Rlcm1zIiB0aXRsZT0iVGVybXMgJmFtcDsgQ29uZGl0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgVGVybXMgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9wcml2YWN5IiB0aXRsZT0iUHJpdmFjeSBQb2xpY3kiPgogICAgICAgICAgICAgICAgICAgIFByaXZhY3kgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9wcml2YWN5L2NhbGlmb3JuaWEtcHJpdmFjeSIgdGl0bGU9IkNBIFByaXZhY3kiPgogICAgICAgICAgICAgICAgICAgIENBIFByaXZhY3kgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9kbWNhIiB0aXRsZT0iQ29weXJpZ2h0IEluZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9jb29raWVfcG9saWN5IiB0aXRsZT0iTGVhcm4gbW9yZSBhYm91dCBob3cgVmltZW8gdXNlcyBjb29raWVzIj4KICAgICAgICAgICAgICAgICAgICBDb29raWVzICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWNvbnRlbnQgZm9vdGVyX3YyX193aXRobG92ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWRlIHdpdGggPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIgZm9vdGVyX3YyX19sb3ZlaGVhcnQgZm9vdGVyX3YyX19hdXhpbGlhcnktaWNvbiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTIgMTIiPjxwYXRoIGQ9Ik05IDJDNy4zMTIgMiA2IDMuNSA2IDMuNVM0LjY4NyAyIDMgMkMxLjMxMiAyIDAgMy4zMTIgMCA1YzAgMy4xODggMy43NSAzLjAxMiA2IDYgMi4yNS0yLjk4OCA2LTIuODEyIDYtNiAwLTEuNjg4LTEuMzEzLTMtMy0zeiIvPjwvc3ZnPiBpbiBOWUMuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fZmlsdGVycyBmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50Ij4KICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZ3VhZ2UiPgogICAgICAgICAgICBMYW5ndWFnZToKICAgICAgICAgICAgPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iI2xhbmd1YWdlIiBvbmNsaWNrPSJ2aW1lby5Nb2RhbC5jcmVhdGUoe2NvbnRlbnQ6ICcvc2V0dGluZ3MvbG9jYWxlJywgc2l6ZTogJ3NtYWxsJ30pOyByZXR1cm4gZmFsc2U7IiB0aXRsZT0iQ2hvb3NlIGEgZGlmZmVyZW50IGxhbmd1YWdlIj5FbmdsaXNoPC9hPgogICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fZmlsdGVyIj5NYXR1cmUgY29udGVudCBmaWx0ZXI6IDwvc3Bhbj48YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IGZvb3Rlcl92Ml9fZmlsdGVyc19fbGFuZyBjb250ZW50ZmlsdGVyIGpzLWZvb3Rlcl9jb250ZW50ZmlsdGVyX2xpbmsiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0idmltZW8uTW9kYWwuY3JlYXRlKHtjb250ZW50OiAnL3NldHRpbmdzL2NvbnRlbnRyYXRpbmcnfSkiIHRpdGxlPSJDaGFuZ2UgeW91ciBtYXR1cmUgY29udGVudCBmaWx0ZXIiPk5vbmU8L2E+CiAgICAgICAgICAgIDwvZGl2PgoKPC9zZWN0aW9uPgo8L2Zvb3Rlcj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAo8c2NyaXB0PgogICAgdmFyIF9fZmEgPSBfX2ZhIHx8IFtdOwogICAgLyoqCiAgICAgKiBCZWNhdXNlIHNpbmdsZSBwYWdlIGFwcGxpY2F0aW9ucyBzdWNoIGFzIHRoZSBhcHAgc2hlbGwgd2lsbCBiZSB0cmFja2luZwogICAgICogRmF0YWwgQXR0cmFjdGlvbiBwYWdlIHZpZXdzIG9uIFJlYWN0IGxpZmVjeWNsZSBob29rcyAoY29tcG9uZW50RGlkTW91bnQpCiAgICAgKiB3ZSB3YW50IHRvIGF2b2lkIGRpc3BhdGNoaW5nIHRoZSBwYWdldmlldyBldmVudCBmcm9tIHRoZSBQSFAgdGVtcGxhdGUKICAgICAqIGFuZCBkZWZlciB0aGlzIHNvcnQgb2YgdHJhY2tpbmcgbG9naWMgdG8gdGhlIGZyb250IGVuZC4KICAgICAqCiAgICAgKiBUaGlzIGNoZWNrIGFsbG93cyB1cyB0byBkZWNsYXJlIGluIGEgY29udHJvbGxlciB3aGV0aGVyIG9yIG5vdCB3ZQogICAgICogd2FudCB0byBkaXNwYXRjaCB0aGF0IHByZWxpbWluYXJ5IHBhZ2V2aWV3LgogICAgICoKICAgICAqIFRoZSBwcm9wZXJ0eSBpcyBhZGRpdGl2ZSBvbmx5LCBhcyB0byBub3QgYWZmZWN0IGV4aXN0aW5nIHBhZ2V2aWV3cy4KICAgICAqLwogICAgICAgICAgICBfX2ZhLnB1c2goWyd0cmFja1BhZ2V2aWV3J10pOwogICAgCiAgICAvKioKICAgICAqIEFkZCBzZXJ2ZXIgc2lkZSBBQkxpbmNvbG4gZXhwZXJpbWVudHMgdG8gR1RNIGRhdGEgbGF5ZXIuCiAgICAgKi8KICAgIAogICAgICAgIHZhciBfZXh0ZW5kID0gZnVuY3Rpb24oKXtmb3IodmFyIHI9YXJndW1lbnRzWzBdLG49MSxlPWFyZ3VtZW50cy5sZW5ndGg7ZT5uO24rKyl7dmFyIHQ9YXJndW1lbnRzW25dO2Zvcih2YXIgYSBpbiB0KXQuaGFzT3duUHJvcGVydHkoYSkmJihyW2FdPXRbYV0pfXJldHVybiByfTsKCiAgICAgICAgdmFyIENTU19ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC8nLAogICAgICAgIEpTX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC8nLAogICAgICAgIElNQUdFX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL2ltYWdlc192Ni8nLAogICAgICAgIEZPTlRfRElSID0gJ2h0dHBzOi8vZi52aW1lb2Nkbi5jb20vZm9udHMvJywKICAgICAgICBTVkdfRElSID0gJ2h0dHBzOi8vZi52aW1lb2Nkbi5jb20vc3ZnLycsCiAgICAgICAgICAgICAgICBCVUlMRF9IQVNIID0gJzZhZWJlJzsKCiAgICAKICAgICAgICB2YXIgdmltZW8gPSBfZXh0ZW5kKCh3aW5kb3cudmltZW8gfHwge30pLCB7ImFwcF92ZXJzaW9uIjoidjYiLCJkb21haW4iOiJ2aW1lby5jb20iLCJ1cmwiOiJ2aW1lby5jb20iLCJjdXJfdXNlciI6ZmFsc2UsIm9yaWdpbl91c2VyX2lkIjpudWxsLCJvcmlnaW5fdXNlciI6ZmFsc2UsImlzX21vYmlsZSI6ZmFsc2V9KTsKICAgIHZpbWVvLmNvbmZpZyA9IF9leHRlbmQoKHZpbWVvLmNvbmZpZyB8fCB7fSksIHsic3RpY2t5X3RvcG5hdiI6eyJleGNsdWRlZF9wYWdlcyI6WyJWaW1lb1xcQ29udHJvbGxlclxcQWJvdXRDb250cm9sbGVyOm1haW4iLCJWaW1lb1xcQ29udHJvbGxlclxcQWJvdXRDb250cm9sbGVyOnByb2Zlc3Npb25hbHMiLCJWaW1lb1xcQ29udHJvbGxlclxcQWJvdXRDb250cm9sbGVyOmV2ZXJ5b25lIiwiVmltZW9cXENvbnRyb2xsZXJcXEhvbWVDb250cm9sbGVyOnVwZ3JhZGUiLCJWaW1lb1xcQ29udHJvbGxlclxcU3RvcmVDb250cm9sbGVyOm1haW4iLCJWaW1lb1xcQ29udHJvbGxlclxcVXNlclxcU2V0dGluZ3MyQ29udHJvbGxlcjptYWluIiwiVmltZW9cXENvbnRyb2xsZXJcXFVzZXJcXFNldHRpbmdzMkNvbnRyb2xsZXI6dGVhbV9tZW1iZXJzIiwiVmltZW9cXENvbnRyb2xsZXJcXFVzZXJcXFNldHRpbmdzMkNvbnRyb2xsZXI6cGFzc3dvcmQiLCJWaW1lb1xcQ29udHJvbGxlclxcUHJvZmlsZUNvbnRyb2xsZXI6bWFpbiIsIlZpbWVvXFxDb250cm9sbGVyXFxDbGlwU3RhdHNDb250cm9sbGVyOm1haW4iLCJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcFxcU2V0dGluZ3NcXEVtYmVkQ29udHJvbGxlcjplbWJlZCIsIlZpbWVvXFxDb250cm9sbGVyXFxWaWRlb01hbmFnZXJDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXFZpZGVvUmV2aWV3Q29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxNZXNzYWdlc0NvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcU3RhdHNDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXFVwbG9hZENvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcT25EZW1hbmRcXFNldHRpbmdzQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxDbGlwXFxTZXR0aW5nc0NvbnRyb2xsZXIiXSwic3RpY2t5X2luY2x1ZGVkX3BhZ2VzIjpbIlZpbWVvXFxDb250cm9sbGVyXFxTdG9ja1xcU3RvY2tIb21lUGFnZUNvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcU3RvY2tcXFN0b2NrRm9vdGFnZUNvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcU3RvY2tcXFN0b2NrU2VhcmNoQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxTdG9ja1xcU3RvY2tDb2xsZWN0aW9uc0NvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcQWxidW1Db250cm9sbGVyIl0sInRvcG5hdl93cmFwX3NlbGVjdG9yIjoiI3RvcG5hdl9vdXRlcl93cmFwIiwiY29udGVudF93cmFwX3NlbGVjdG9yIjoiLndyYXBfY29udGVudCJ9LCJsb2NhbGUiOiJlbiIsIm9tbmlzZWFyY2hfZW5hYmxlZCI6ZmFsc2UsIm9tbmlzZWFyY2hfZGlzYWJsZWQiOm51bGwsIm9tbmlzZWFyY2hfand0IjoiZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKSVV6STFOaUo5LmV5SmxlSEFpT2pFMk1ETTRNak01TkRBc0luVnpaWEpmYVdRaU9tNTFiR3dzSW1Gd2NGOXBaQ0k2TlRnME56a3NJbk5qYjNCbGN5STZJbkIxWW14cFl5QndjbWwyWVhSbElHUmxiR1YwWlNJc0luUmxZVzFmZFhObGNsOXBaQ0k2Ym5Wc2JIMC5KVTV2UGNYZmt3RDdNY0ZGa3BRcEpQREdFakhNZnBZZE1MajV0Vkp3TmFNIiwib21uaXNlYXJjaF91c2VyIjpudWxsLCJhcGlfdXJsIjoiYXBpLnZpbWVvLmNvbSIsInNob3dfb21uaXNlYXJjaF90aXAiOmZhbHNlfSk7CgogICAgICAgIHZhciBfX2kxOG5Mb2NhbGUgPSAnZW4nOwogICAgdmFyIGxvY2FsZUNvbmZpZyA9IHsKICAgICAgICBsYW5nOiAnZW4nLAogICAgICAgICdEYXRlJzogewogICAgICAgICAgICBtb250aHM6IFsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSwKICAgICAgICAgICAgbW9udGhzX2FiYnI6IFsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sCiAgICAgICAgICAgIGRheXM6IFsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSwKICAgICAgICAgICAgZGF5c19hYmJyOiBbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLAoKICAgICAgICAgICAgLy8gQ3VsdHVyZSdzIGRhdGUgb3JkZXI6IE1NL0REL1lZWVkKICAgICAgICAgICAgZGF0ZU9yZGVyOiBbJ2RhdGUnLCAnbW9udGgnLCAneWVhciddLAogICAgICAgICAgICBzaG9ydERhdGU6ICclZC8lbS8lWScsCiAgICAgICAgICAgIHNob3J0VGltZTogJyVJOiVNJXAnLAogICAgICAgICAgICBBTTogJ0FNJywKICAgICAgICAgICAgUE06ICdQTScsCiAgICAgICAgICAgIGZpcnN0RGF5T2ZXZWVrOiAwLAoKICAgICAgICAgICAgLy8gRGF0ZS5FeHRyYXMKICAgICAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24oZGF5T2ZNb250aCl7CiAgICAgICAgICAgICAgICByZXR1cm4gZGF5T2ZNb250aDsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgJ0RhdGVQaWNrZXInOiB7CiAgICAgICAgICAgIHNlbGVjdF9hX3RpbWU6ICJTZWxlY3QgYSB0aW1lIiwKICAgICAgICAgICAgdXNlX21vdXNlX3doZWVsOiAiVXNlIHRoZSBtb3VzZSB3aGVlbCB0byBxdWlja2x5IGNoYW5nZSB2YWx1ZSIsCiAgICAgICAgICAgIHRpbWVfY29uZmlybV9idXR0b246ICJPSyIsCiAgICAgICAgICAgIGFwcGx5X3JhbmdlOiAiQXBwbHkiLAogICAgICAgICAgICBjYW5jZWw6ICJDYW5jZWwiLAogICAgICAgICAgICB3ZWVrOiAiV2siICAgICAgICB9LAogICAgICAgICAgICAgICAgJ051bWJlcic6IHsKICAgICAgICAgICAgZGVjaW1hbDogJy4nLAogICAgICAgICAgICBncm91cDogJywnLAogICAgICAgICAgICBjdXJyZW5jeTogewogICAgICAgICAgICAgICAgcHJlZml4OiAnJCcKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgJ0Zvcm1WYWxpZGF0b3InOiB7InJlcXVpcmVkIjoiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iLCJyZXF1aXJlZENoayI6IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIn0gICAgfTsKCiAgICB2YXIgZnVsbExvY2FsZSA9ICcnOwoKICAgIAogICAgICAgIHZhciBDb3B5ID0ge3RyYW5zbGF0ZTpmdW5jdGlvbih0LGksdSl7dmFyIGU9J29iamVjdCchPXR5cGVvZiB0aGlzLmRpY3RbdF0/dGhpcy5kaWN0W3RdOmk/dGhpcy5kaWN0W3RdLnBsdXJhbDp0aGlzLmRpY3RbdF0uc2luZ3VsYXI7cmV0dXJuJ29iamVjdCc9PXR5cGVvZiB1JiYoZT10aGlzLnN1YnN0aXR1dGUoZSx1KSksZX0sc3Vic3RpdHV0ZTpmdW5jdGlvbih0LGkpe3JldHVybiB2b2lkIDAhPT10LnN1YnN0aXR1dGU/dC5zdWJzdGl0dXRlKGkpOnQucmVwbGFjZSgvXFw/XHsoW157fV0rKVx9L2csZnVuY3Rpb24odCx1KXtyZXR1cm4nXFwnPT10LmNoYXJBdCgwKT90LnNsaWNlKDEpOm51bGwhPWlbdV0/aVt1XTonJ30pfSxkaWN0Ont9fTsKICAgIENvcHkuZGljdCA9IHsiZGlkX3lvdV9tZWFuX2VtYWlsIjoiRGlkIHlvdSBtZWFuIDxlbT57U1VHR0VTVH08XC9lbT4/IiwiZW1haWxfcGFzc3dvcmRfbWlzbWF0Y2giOiJFbWFpbCBhbmQgcGFzc3dvcmQgZG8gbm90IG1hdGNoIiwib29wc190cnlfYWdhaW4iOiJPb3BzISBTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHRyeSBhZ2Fpbi4iLCJqdXN0X25vdyI6Imp1c3Qgbm93Iiwic2Vjb25kc19hZ28iOnsic2luZ3VsYXIiOiJ7Q09VTlR9IHNlY29uZCBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IHNlY29uZHMgYWdvIn0sIm1pbnV0ZXNfYWdvIjp7InNpbmd1bGFyIjoie0NPVU5UfSBtaW51dGUgYWdvIiwicGx1cmFsIjoie0NPVU5UfSBtaW51dGVzIGFnbyJ9LCJob3Vyc19hZ28iOnsic2luZ3VsYXIiOiJ7Q09VTlR9IGhvdXIgYWdvIiwicGx1cmFsIjoie0NPVU5UfSBob3VycyBhZ28ifSwib3Blbl9jb21tZW50X2JveCI6IkFkZCBuZXcgY29tbWVudCBpbnN0ZWFkICZyYXF1bzsiLCJ1cmxfdW5hdmFpbGFibGUiOiJTb3JyeSwgdGhpcyB1cmwgaXMgdW5hdmFpbGFibGUuIiwidW5zYXZlZF9jaGFuZ2VzX2dlbmVyaWMiOiJZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMsIGFyZSB5b3Ugc3VyZSB5b3Ugd2lzaCB0byBsZWF2ZT8iLCJhZGQiOiJBZGQiLCJyZW1vdmUiOiJSZW1vdmUiLCJzZWxlY3QiOiJTZWxlY3QiLCJub19mb2xsb3dlcnNfZm9yX2xldHRlciI6IllvdSBkb24mcnNxdW87dCBmb2xsb3cgYW55b25lIHRoYXQgYmVnaW4gd2l0aCB0aGUgbGV0dGVyICZsZHF1bzt7UEFHRV9MRVRURVJ9JnJkcXVvOyIsInNoYXJlX2xpbWl0X3JlYWNoZWQiOiJZb3UgaGF2ZSByZWFjaGVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1c2VycyB0byBzaGFyZSB3aXRoLiIsImF0X2xlYXN0X29uZSI6IlRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIHVzZXIuIiwiYXZhaWxhYmxlIjoiQXZhaWxhYmxlIiwidW5hdmFpbGFibGUiOiJVbmF2YWlsYWJsZSIsImJyb3dzZV9lcnJvcl9nZW5lcmljIjoiU29ycnksIHRoZXJlIHdhcyBhbiBlcnJvciIsImJyb3dzZV9lcnJvcl9ub192aWRlb3MiOiJTb3JyeSwgbm8gdmlkZW9zIGZvdW5kIiwiZm9sbG93IjoiRm9sbG93IiwiZm9sbG93aW5nIjoiRm9sbG93aW5nIiwidW5mb2xsb3ciOiJVbmZvbGxvdyIsInVuZm9sbG93aW5nIjoiVW5mb2xsb3dpbmciLCJjb3VudF9jb21tZW50cyI6eyJzaW5ndWxhciI6IntDT1VOVH0gY29tbWVudCIsInBsdXJhbCI6IntDT1VOVH0gY29tbWVudHMifSwiZmlyc3RfY29tbWVudCI6IkJlIHRoZSBmaXJzdCB0byBjb21tZW50XHUyMDI2Iiwibm9fY29tbWVudHNfZm9yX3lvdSI6IkZvcmJpZGRlbi4gWW91IGNhbm5vdCBwb3N0IGNvbW1lbnRzIG9uIHRoaXMgcGFnZS4iLCJvb3BzIjoiT29wcyEiLCJwbGF5ZXJfdHJ5X2FnYWluIjoiVGhhdCB3YXNuJ3Qgc3VwcG9zZWQgdG8gaGFwcGVuLiBQbGVhc2UgdHJ5IGFnYWluIGluIGEgZmV3IG1pbnV0ZXMuIiwiZHVyYXRpb25faW5wdXRfbWluX2R1cmF0aW9uIjoiVGhlIGR1cmF0aW9uIGNhbm5vdCBiZSBsZXNzIHRoYW4ge01JTl9EVVJBVElPTn0uIiwiZHVyYXRpb25faW5wdXRfbWF4X2R1cmF0aW9uIjoiVGhlIGR1cmF0aW9uIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4ge01BWF9EVVJBVElPTn0uIiwiZHVyYXRpb25faW5wdXRfaW52YWxpZF9jaGFyYWN0ZXJzIjoiMC05IGFuZCA6IGFyZSB0aGUgb25seSBhY2NlcHRhYmxlIGlucHV0cy4iLCJjbG9zZSI6IkNsb3NlIiwiZXhwYW5kIjoiRXhwYW5kIiwibG9hZGluZyI6IkxvYWRpbmcuLi4iLCJ0b3AiOiJ0b3AiLCJhZHZhbmNlZF9zZWFyY2giOiJBZHZhbmNlZCBTZWFyY2giLCJub19zdWdnZXN0aW9ucyI6Ik5vIHN1Z2dlc3Rpb25zIiwicmVjZW50X3NlYXJjaGVzIjoiUmVjZW50IFNlYXJjaGVzIiwic2VhcmNoX2FsbCI6IlNlYXJjaCBBbGwgb2YgVmltZW8iLCJlbWFpbF9hbmRfcGFzc3dvcmQiOiJQbGVhc2UgZW50ZXIgeW91ciBlbWFpbCBhbmQgcGFzc3dvcmQiLCJlbWFpbF9hZGRyZXNzIjoiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcyIsIm5hbWVfZW1haWxfYW5kX3Bhc3N3b3JkIjoiUGxlYXNlIGVudGVyIHlvdXIgbmFtZSwgZW1haWwsIGFuZCBwYXNzd29yZCJ9Owo8L3NjcmlwdD4KCgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L3N0aWNreV90b3BuYXZfY29tYmluZWQubWluLmpzPzVmZmQ2ZDRlIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9yZWFjdF9wcm9kX2NvbWJpbmVkLm1pbi5qcz8wMzE3NzVhNCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvZXhjZXB0aW9uX2NvbWJpbmVkLm1pbi5qcz8yYTJmMjYxMyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvdG9wbmF2X2NhcnRfYnV0dG9uX2NvbWJpbmVkLm1pbi5qcz80NDg4YzA5MiI+PC9zY3JpcHQ+CgogICAgPHNjcmlwdCBhc3luYyBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L19idW5kbGVzL2NyZWF0ZV9mYWNlYm9va19oZWFkZXIuYnVuZGxlLm1pbi5qcz85NTRjNDYwMCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0PgogICAgICAgIGZ1bmN0aW9uIG9uVmltZW9Eb21SZWFkeShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICB3aW5kb3cudmltZW8gPSB3aW5kb3cudmltZW8gfHwge307CiAgICAgIHdpbmRvdy52aW1lby5leGNlcHRpb25fZGF0YSA9IHsidGl0bGUiOiJTb3JyeSwgd2UgY291bGRuXHUyMDE5dCBmaW5kIHRoYXQgcGFnZSIsIm1lc3NhZ2UiOiIiLCJub3RpZmljYXRpb24iOiI8ZGl2IGNsYXNzPVwiZXhjZXB0aW9uX25vdGlmaWNhdGlvbiBpcmlzX25vdGlmaWNhdGlvbiBpcmlzX25vdGlmaWNhdGlvbi0tdXBzZWxsXCI+XG4gICAgIDxkaXYgY2xhc3M9XCJpcmlzX25vdGlmaWNhdGlvbi0tdXBzZWxsLWljb25cIj5cbiAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXJpc19pYyBpcy0tMTZcIj48c3ZnIHhtbG5zPVwiaHR0cDpcL1wvd3d3LnczLm9yZ1wvMjAwMFwvc3ZnXCIgdmlld0JveD1cIjAgMCAxNiAxNlwiPjxwYXRoIGQ9XCJNOCAxNmM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHpNNyA0aDJ2Mkg3VjR6bTAgM2gydjVIN1Y3elwiXC8+PFwvc3ZnPjxcL3NwYW4+XG4gICAgIDxcL2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJpcmlzX25vdGlmaWNhdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgPHN0cm9uZz5SZWFzb25zIHlvdSBtaWdodCBiZSBzZWVpbmcgdGhpcyBwYWdlPFwvc3Ryb25nPlxuICAgIDxcL2Rpdj5cblxuICAgIDx1bCBjbGFzcz1cImlyaXNfbm90aWZpY2F0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpPkl0IGV4aXN0cywgYnV0IHlvdSBkb25cdTIwMTl0IGhhdmUgcGVybWlzc2lvbiB0byBzZWUgaXQsIG9yIHlvdSBuZWVkIHRvIDxhIG9uY2xpY2s9XCJ2aW1lby5TZXNzaW9uLmNyZWF0ZSgpXCI+bG9nIGluPFwvYT4uPFwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPk5vdGhpbmcgaGFzIGV2ZXIgZXhpc3RlZCBoZXJlLiBTcG9va3kuPFwvbGk+XG4gICAgICAgIDxsaT5Tb21ldGhpbmcgb25jZSBsaXZlZCBoZXJlLCBidXQgaGFzIGJlZW4gZGVsZXRlZC48XC9saT5cbiAgICA8XC91bD5cbjxcL2Rpdj5cbiIsInNlYXJjaCI6dHJ1ZSwidmlkZW9zIjpudWxsLCJhZF9jb25maWciOnsiaG91c2VfYWRzX2VuYWJsZWQiOmZhbHNlfSwicGFnZV90eXBlIjoiZXhjZXB0aW9uIiwibW9kdWxlX3R5cGUiOiJzdGFuZGFyZF9tdWx0aSJ9OwoKICAgICAgbmV3IHdpbmRvdy5FeGNlcHRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KG9uVmltZW9Eb21SZWFkeSk7CiAgICAgICAgICAgIDwvc2NyaXB0PgoKCiAgICA8L2JvZHk+CjwvaHRtbD4K
127
+ http_version:
128
+ recorded_at: Tue, 27 Oct 2020 18:23:04 GMT
128
129
  recorded_with: VCR 3.0.3
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  User-Agent:
11
- - VideoInfo/2.7
11
+ - VideoInfo/2.8.0
12
12
  Accept:
13
13
  - "*/*"
14
14
  response:
@@ -16,51 +16,51 @@ http_interactions:
16
16
  code: 404
17
17
  message: Not Found
18
18
  headers:
19
+ Connection:
20
+ - keep-alive
21
+ Content-Length:
22
+ - '149714'
19
23
  Server:
20
24
  - nginx
21
25
  Content-Type:
22
26
  - text/html; charset=UTF-8
23
27
  Expires:
24
- - Mon, 27 Mar 2017 09:01:08 GMT
28
+ - Tue, 27 Oct 2020 06:23:02 GMT
25
29
  X-Frame-Options:
26
30
  - sameorigin
31
+ X-Bapp-Server:
32
+ - pweb-v4874-9pjhp
27
33
  Via:
28
- - 1.1 varnish
29
- - 1.1 varnish
30
- - 1.1 varnish
34
+ - 1.1 varnish, 1.1 varnish, 1.1 varnish
31
35
  Cache-Control:
32
36
  - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
33
37
  X-Varnish-Cache:
34
38
  - '0'
35
39
  X-Vserver:
36
- - dfvimeowebproxy3
37
- Fastly-Debug-Digest:
38
- - 5c8cad581c94a8a0faf793c8c4898a0848cc94c3ce18c6c8e7834c3408b6d12c
39
- Content-Length:
40
- - '57900'
40
+ - infra-webproxy-a-3
41
+ X-Vimeo-Dc:
42
+ - ge
41
43
  Accept-Ranges:
42
44
  - bytes
43
45
  Date:
44
- - Mon, 27 Mar 2017 21:01:09 GMT
46
+ - Tue, 27 Oct 2020 18:23:02 GMT
45
47
  Age:
46
48
  - '0'
47
- Connection:
48
- - keep-alive
49
49
  X-Served-By:
50
- - cache-iad2125-IAD, cache-lax8631-LAX
50
+ - cache-bwi5147-BWI, cache-cwb20520-CWB
51
51
  X-Cache:
52
52
  - MISS, MISS
53
53
  X-Cache-Hits:
54
54
  - 0, 0
55
55
  X-Timer:
56
- - S1490648468.757355,VS0,VE381
56
+ - S1603822983.625988,VS0,VE268
57
57
  Vary:
58
58
  - Accept-Encoding
59
59
  body:
60
60
  encoding: UTF-8
61
61
  string: ''
62
- http_version:
63
- recorded_at: Mon, 27 Mar 2017 21:01:09 GMT
62
+ http_version:
63
+ recorded_at: Tue, 27 Oct 2020 18:23:02 GMT
64
64
  - request:
65
65
  method: get
66
66
  uri: https://vimeo.com/0812455
@@ -79,50 +79,51 @@ http_interactions:
79
79
  code: 404
80
80
  message: Not Found
81
81
  headers:
82
+ Connection:
83
+ - keep-alive
84
+ Content-Length:
85
+ - '35170'
82
86
  Server:
83
87
  - nginx
84
88
  Content-Type:
85
89
  - text/html; charset=UTF-8
86
90
  Expires:
87
- - Mon, 27 Mar 2017 09:01:09 GMT
91
+ - Tue, 27 Oct 2020 06:23:03 GMT
88
92
  X-Frame-Options:
89
93
  - sameorigin
94
+ X-Bapp-Server:
95
+ - pweb-v4874-l46p8
90
96
  Via:
91
97
  - 1.1 varnish
92
- - 1.1 varnish
93
- - 1.1 varnish
98
+ - 1.1 varnish, 1.1 varnish
94
99
  Cache-Control:
95
100
  - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
96
101
  X-Varnish-Cache:
97
102
  - '0'
98
103
  X-Vserver:
99
- - dfvimeowebproxy3
100
- Fastly-Debug-Digest:
101
- - 5c8cad581c94a8a0faf793c8c4898a0848cc94c3ce18c6c8e7834c3408b6d12c
102
- Content-Length:
103
- - '15281'
104
+ - infra-webproxy-a-3
105
+ X-Vimeo-Dc:
106
+ - ge
104
107
  Accept-Ranges:
105
108
  - bytes
106
109
  Date:
107
- - Mon, 27 Mar 2017 21:01:09 GMT
110
+ - Tue, 27 Oct 2020 18:23:03 GMT
108
111
  Age:
109
112
  - '0'
110
- Connection:
111
- - keep-alive
112
113
  X-Served-By:
113
- - cache-iad2145-IAD, cache-lax8651-LAX
114
+ - cache-bwi5121-BWI, cache-cwb20527-CWB
114
115
  X-Cache:
115
116
  - MISS, MISS
116
117
  X-Cache-Hits:
117
118
  - 0, 0
118
119
  X-Timer:
119
- - S1490648469.174202,VS0,VE390
120
+ - S1603822983.181064,VS0,VE288
120
121
  Vary:
121
122
  - Accept-Encoding
122
123
  body:
123
124
  encoding: ASCII-8BIT
124
125
  string: !binary |-
125
- PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KIDxoZWFkPgogPG1ldGEgY2hhcnNldD0idXRmLTgiPgoKCiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTEuMCx1c2VyLXNjYWxhYmxlPW5vIj4KIAo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Ii8vcGxheWVyLnZpbWVvLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9pLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9mLnZpbWVvY2RuLmNvbSI+CjxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE5ODg0MDI4OTYzIj4KCgogIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJTb3JyeSwgd2UgY291bGRuJnJzcXVvO3QgZmluZCB0aGF0IHBhZ2UiPgogIDxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0ibm9pbmRleCI+CgoKCgoKIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIgaHJlZj0iaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9mYXZpY29uL21haW4tdG91Y2hfMTgwIj4KCjxsaW5rIHJlbD0ibWFzay1pY29uIiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N2Zy9sZWdhY3lfdmlld19zdXBwb3J0L2lyaXNfaWNvbl92XzY0LnN2ZyIgY29sb3I9IiMxNzI3MmUiPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vaW1hZ2VzX3Y2L2Zhdmljb24uaWNvIiBkYXRhLXBsYXk9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9wbGF5XzMyIiBkYXRhLXBhdXNlPSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vcGF1c2VfMzIiPgoKPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi1UaWxlSW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9tYWluLXRvdWNoXzE0NCI+CjxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tVGlsZUNvbG9yIiBjb250ZW50PSIjMDBhZGVmIj4KCjxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvc2VhcmNoL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iVmltZW8gc2VhcmNoIj4KPGxpbmsgcmVsPSJsb2dvIiB0eXBlPSJpbWFnZS9zdmciIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vbG9nby5zdmciPgogPHRpdGxlPlZpbWVVaE9oPC90aXRsZT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9nbG9iYWwvaWNvbl9mb250cy5taW4uY3NzP0RFViI+CgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2YudmltZW9jZG4uY29tL3N0eWxlcy9jc3Nfb3B0L2V4Y2VwdGlvbl9jb21iaW5lZC5taW4uY3NzPzcwMmFiZWMxIj4KCgoKIDxzY3JpcHQ+CiAgCiAgdmFyIHBsYXllckFzc2V0VXJscyA9IHsianMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzIuNTMuMTBcL2pzXC9wbGF5ZXIuanMiLCJtb29nIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC9mbGFzaFwvbW9vZ2Fsb29wXC82LjQuNVwvbW9vZ2Fsb29wLnN3ZiIsImNocm9tZWxlc3NfY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8yLjUzLjEwXC9jc3NcL2Nocm9tZWxlc3MuY3NzIiwiY2hyb21lbGVzc19qcyI6Imh0dHBzOlwvXC9mLnZpbWVvY2RuLmNvbVwvcFwvMi41My4xMFwvanNcL2Nocm9tZWxlc3MuanMiLCJtb29nX2pzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8yLjUzLjEwXC9qc1wvbW9vZ2Fsb29wLmpzIiwiY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8yLjUzLjEwXC9jc3NcL3BsYXllci5jc3MiLCJwbGF5ZXJfdXJsIjoicGxheWVyLnZpbWVvLmNvbSJ9OwoKICB2YXIgX2V4dGVuZCA9IGZ1bmN0aW9uKCl7Zm9yKHZhciByPWFyZ3VtZW50c1swXSxuPTEsZT1hcmd1bWVudHMubGVuZ3RoO2U+bjtuKyspe3ZhciB0PWFyZ3VtZW50c1tuXTtmb3IodmFyIGEgaW4gdCl0Lmhhc093blByb3BlcnR5KGEpJiYoclthXT10W2FdKX1yZXR1cm4gcn07CgogIHdpbmRvdyA9IF9leHRlbmQod2luZG93LCB7InZpbWVvX2VzaSI6eyJjb25maWciOnsiYXV0b2NvbXBsZXRlX2VuYWJsZWQiOnRydWV9fSwiZ2xvYmFsX25vdGlmaWNhdGlvbnMiOltdfSk7Cjwvc2NyaXB0PgoKIDxzdHlsZSBpZD0iZXNpX3JpYmJvbiI+CiAuZXNpX3JpYmJvbiB7CiBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB3aWR0aCUzRCUyMjUwMCUyMiUzRSUzQ3JlY3QlMjB4JTNEJTIyMCUyMiUyMHdpZHRoJTNEJTIyMzQlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjMyOGExZDglMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjM0JTIyJTIwd2lkdGglM0QlMjI1NSUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyMzI0OGJjNyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyODklMjIlMjB3aWR0aCUzRCUyMjMlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjMxZTM5NTUlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjkyJTIyJTIwd2lkdGglM0QlMjIxNTclMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjMyZjUxMzIlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjI0OSUyMiUyMHdpZHRoJTNEJTIyMzAlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjM0MTY4MjglMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjI3OSUyMiUyMHdpZHRoJTNEJTIyNTQlMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjM3ZWFhMjklMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjMzMyUyMiUyMHdpZHRoJTNEJTIyMTElMjIlMjBoZWlnaHQlM0QlMjIxMDAlMjUlMjIlMjBzdHlsZSUzRCUyMmZpbGwlM0ElMjNkY2JkNDIlMjIlMkYlM0UlM0NyZWN0JTIweCUzRCUyMjM0NCUyMiUyMHdpZHRoJTNEJTIyNCUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2RjYWQyNyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyMzQ4JTIyJTIwd2lkdGglM0QlMjIyMyUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2UzOWEyMyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyMzcxJTIyJTIwd2lkdGglM0QlMjIzNSUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2NjNTU0YyUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyNDA2JTIyJTIwd2lkdGglM0QlMjIxOCUyMiUyMGhlaWdodCUzRCUyMjEwMCUyNSUyMiUyMHN0eWxlJTNEJTIyZmlsbCUzQSUyM2NhNDczZiUyMiUyRiUzRSUzQ3JlY3QlMjB4JTNEJTIyNDI0JTIyJTIwd2lkdGglM0QlMjI2JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzYTcyODM0JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjI0MzAlMjIlMjB3aWR0aCUzRCUyMjQ2JTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzNzM1Njc1JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjI0NzYlMjIlMjB3aWR0aCUzRCUyMjEyJTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzNjUzZTY2JTIyJTJGJTNFJTNDcmVjdCUyMHglM0QlMjI0ODglMjIlMjB3aWR0aCUzRCUyMjEyJTIyJTIwaGVpZ2h0JTNEJTIyMTAwJTI1JTIyJTIwc3R5bGUlM0QlMjJmaWxsJTNBJTIzM2IzMTViJTIyJTJGJTNFJTNDJTJGc3ZnJTNFJTBBKSB0b3AgbGVmdC81MDBweCAxMDAlIHJlcGVhdC14ICFpbXBvcnRhbnQ7CiB9CiA8L3N0eWxlPgogCiA8c2NyaXB0PgogdmFyIGFibGluY29sbl9jb25maWcgPSBhYmxpbmNvbG5fY29uZmlnIHx8IHt9OwogYWJsaW5jb2xuX2NvbmZpZy50ZXN0cyA9IHsiREZQQWRDb2hvcnRzIjp7ImlkIjo2OSwibmFtZSI6IkRGUEFkQ29ob3J0cyIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6bnVsbCwiZXhwZXJpbWVudHMiOltdfSwiRXhwbG9yZSI6eyJpZCI6NjQsIm5hbWUiOiJFeHBsb3JlIiwiYnVja2V0cyI6MTAwMCwiaW5wdXQiOiJ2dWlkIiwidXJsIjoiXC8iLCJleHBlcmltZW50cyI6W119LCJUb3BOYXZBQiI6eyJpZCI6NjcsIm5hbWUiOiJUb3BOYXZBQiIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOltdfSwiVG9wTmF2Q29weVRlc3QiOnsiaWQiOjc3LCJuYW1lIjoiVG9wTmF2Q29weVRlc3QiLCJidWNrZXRzIjoxMDAwLCJpbnB1dCI6InZ1aWQiLCJ1cmwiOiJcL2Fib3V0IiwiZXhwZXJpbWVudHMiOltdfSwiVG9wTmF2Lkhvc3RWaWRlb3NMaW5rIjp7ImlkIjoxMDMsIm5hbWUiOiJUb3BOYXYuSG9zdFZpZGVvc0xpbmsiLCJidWNrZXRzIjoxMDAwLCJpbnB1dCI6InZ1aWQiLCJ1cmwiOm51bGwsImV4cGVyaW1lbnRzIjpbXX19OwogPC9zY3JpcHQ+CgoKIAogPHNjcmlwdD4KIHZhciBnb29nbGV0YWcgPSBnb29nbGV0YWcgfHwge30sCiBncHRhZHNsb3RzID0gW10sCiBsYW5ndWFnZSwKIGhhc191cGxvYWRlZCwKIGNvaG9ydDsKIGdvb2dsZXRhZy5jbWQgPSBnb29nbGV0YWcuY21kIHx8IFtdOwoKIChmdW5jdGlvbigpIHsKIHZhciBnYWRzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksCiB1c2VTU0wgPSAnaHR0cHM6JyA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCwKIG5vZGU7CiBnYWRzLmFzeW5jID0gdHJ1ZTsKIGdhZHMudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogZ2Fkcy5zcmMgPSAodXNlU1NMID8gJ2h0dHBzOicgOiAnaHR0cDonKSArICcvL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vdGFnL2pzL2dwdC5qcyc7CiBub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdOwogbm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnYWRzLCBub2RlKTsKIH0pKCk7CgogZ29vZ2xldGFnLmNtZC5wdXNoKGZ1bmN0aW9uKCkgewogCiAgbGFuZ3VhZ2UgPSBkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopbGFuZ3VhZ2VccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKTsKIGhhc191cGxvYWRlZCA9IChkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopaGFzX3VwbG9hZGVkXHMqXD1ccyooW147XSopLiokKXxeLiokLywgIiQxIikpID8gJ1knIDogJ04nOwogCiBjb2hvcnQgPSAod2luZG93LkFCTGluY29sbikgPyB3aW5kb3cuQUJMaW5jb2xuLmdldFRlc3QoJ0RGUEFkQ29ob3J0cycpLmdldCgnY29ob3J0JywgJ0EnKSA6ICdBJzsKCiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdsYW5ndWFnZScsIFtsYW5ndWFnZV0pOwogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnaXNfdXBsb2FkZXInLCBbaGFzX3VwbG9hZGVkXSk7CiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnQnLCBbY29ob3J0XSk7CiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnRfYScsIFsoY29ob3J0ID09PSAnQScpID8gJ1knIDogJ04nXSk7CiBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnRfYicsIFsoY29ob3J0ID09PSAnQicpID8gJ1knIDogJ04nXSk7CgogIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ3NlYycsIFsnZmFsc2UnXSk7CgogZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnbG9nZ2VkX2luJywgWydmYWxzZSddKTsKCiAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygncnB2JywgKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxMDApKzEpLnRvU3RyaW5nKCkpOwoKIGdvb2dsZXRhZy5wdWJhZHMoKS5lbmFibGVBc3luY1JlbmRlcmluZygpOwogZ29vZ2xldGFnLmVuYWJsZVNlcnZpY2VzKCk7CiB9KTsKIDwvc2NyaXB0PgoKPHNjcmlwdD4KIWZ1bmN0aW9uKCl7dmFyIGU9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OmV4cG9ydHMscj1bXTtpZihlLnBlcmZvcm1hbmNlfHwoZS5wZXJmb3JtYW5jZT17fSksZS5wZXJmb3JtYW5jZS5ub3d8fChlLnBlcmZvcm1hbmNlLm5vdz1wZXJmb3JtYW5jZS5ub3d8fHBlcmZvcm1hbmNlLndlYmtpdE5vd3x8cGVyZm9ybWFuY2UubXNOb3d8fHBlcmZvcm1hbmNlLm1vek5vdyksIWUucGVyZm9ybWFuY2Uubm93KXt2YXIgbj1EYXRlLm5vdz9EYXRlLm5vdygpOituZXcgRGF0ZTtwZXJmb3JtYW5jZS50aW1pbmcmJnBlcmZvcm1hbmNlLnRpbWluZyYmKG49cGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydCksZS5wZXJmb3JtYW5jZS5ub3c9ZnVuY3Rpb24oKXt2YXIgZT1EYXRlLm5vdz9EYXRlLm5vdygpOituZXcgRGF0ZTtyZXR1cm4gZS1ufX1lLnBlcmZvcm1hbmNlLm1hcmt8fChlLnBlcmZvcm1hbmNlLm1hcms9ZS5wZXJmb3JtYW5jZS53ZWJraXRNYXJrP2UucGVyZm9ybWFuY2Uud2Via2l0TWFyazpmdW5jdGlvbihuKXtyLmZvckVhY2goZnVuY3Rpb24oZSxyLGEpe2UubmFtZT09PW4mJmEuc3BsaWNlKHIsMSl9KSxyLnB1c2goe25hbWU6bixlbnRyeVR5cGU6Im1hcmsiLHN0YXJ0VGltZTplLnBlcmZvcm1hbmNlLm5vdygpLGR1cmF0aW9uOjB9KX0pLGUucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZXx8KGUucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZT1lLnBlcmZvcm1hbmNlLndlYmtpdEdldEVudHJpZXNCeVR5cGU/ZS5wZXJmb3JtYW5jZS53ZWJraXRHZXRFbnRyaWVzQnlUeXBlOmZ1bmN0aW9uKGUpe3ZhciBuPWZ1bmN0aW9uKHIpe3JldHVybiByLmVudHJ5VHlwZT09PWV9O3JldHVybi0xIT09WyJtYXJrIiwibWVhc3VyZSJdLmluZGV4T2YoZSk/ci5maWx0ZXIobik6dm9pZCAwfSksZS5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lfHwoZS5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lPWUucGVyZm9ybWFuY2Uud2Via2l0R2V0RW50cmllc0J5TmFtZT9lLnBlcmZvcm1hbmNlLndlYmtpdEdldEVudHJpZXNCeU5hbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHIuZmlsdGVyKGZ1bmN0aW9uKHIpe3JldHVybiByLm5hbWU9PT1lfSl9KSxlLnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXN8fChlLnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXM9ZS5wZXJmb3JtYW5jZS53ZWJraXRDbGVhck1lYXN1cmVzP2UucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJNZWFzdXJlczpmdW5jdGlvbigpe3IuZm9yRWFjaChmdW5jdGlvbihlLHIsbil7Im1lYXN1cmUiPT09ZS5lbnRyeVR5cGUmJm4uc3BsaWNlKHIsMSl9KSxyPVtdfSksZS5wZXJmb3JtYW5jZS5jbGVhck1hcmtzfHwoZS5wZXJmb3JtYW5jZS5jbGVhck1hcmtzPWUucGVyZm9ybWFuY2Uud2Via2l0Q2xlYXJNYXJrcz9lLnBlcmZvcm1hbmNlLndlYmtpdENsZWFyTWFya3M6ZnVuY3Rpb24oKXtyLmZvckVhY2goZnVuY3Rpb24oZSxyLG4peyJtYXJrIj09PWUuZW50cnlUeXBlJiZuLnNwbGljZShyLDEpfSkscj1bXX0pLGUucGVyZm9ybWFuY2UubWVhc3VyZXx8KGUucGVyZm9ybWFuY2UubWVhc3VyZT1lLnBlcmZvcm1hbmNlLndlYmtpdE1lYXN1cmU/ZS5wZXJmb3JtYW5jZS53ZWJraXRNZWFzdXJlOmZ1bmN0aW9uKGUsbixhKXt2YXIgdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHIubmFtZT09PWUmJiJtYXJrIj09PXIuZW50cnlUeXBlfX0sbz1yLmZpbHRlcih0KG4pKVswXSxtPXIuZmlsdGVyKHQoYSkpWzBdLGk9bS5zdGFydFRpbWUtby5zdGFydFRpbWU7ci5wdXNoKHtuYW1lOmUsZW50cnlUeXBlOiJtZWFzdXJlIixzdGFydFRpbWU6by5zdGFydFRpbWUsZHVyYXRpb246aX0pfSl9KCksd2luZG93Lm1hcmtVc2VyVGltZT1mdW5jdGlvbihlKXt2YXIgcj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxmdW5jdGlvbihlKXtzZXRUaW1lb3V0KGUsMCl9O3IoZnVuY3Rpb24oKXt3aW5kb3cucGVyZm9ybWFuY2UubWFyayhlKSx3aW5kb3cuY29uc29sZSYmY29uc29sZS50aW1lU3RhbXAmJmNvbnNvbGUudGltZVN0YW1wKGUpfSl9OwoKKGZ1bmN0aW9uKCkgewogd2luZG93Lm1hcmtVc2VyVGltZSA9IGZ1bmN0aW9uKGxhYmVsKSB7CiB3aW5kb3cuX2d0bSA9IHdpbmRvdy5fZ3RtIHx8IFtdOwoKIC8vIEV4aXQgZWFybHkgaWYgdGhlIGJyb3dzZXIgY2FuJ3QgaGFuZGxlIG5ldyB0aGluZ3MKIGlmICh0eXBlb2YgcGVyZm9ybWFuY2UgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBwZXJmb3JtYW5jZS5tYXJrICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBwZXJmb3JtYW5jZS5jbGVhck1hcmtzICE9PSAnZnVuY3Rpb24nKSB7CiByZXR1cm47CiB9CgogdmFyIHVpZCA9IHBhcnNlSW50KE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKS5zcGxpdCgnMC4nKVsxXSkgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSwKIG1hcmtfbmFtZSA9IGxhYmVsICsgJ18nICsgdWlkLAogcGFydHMgPSBsYWJlbC5zcGxpdCgnfCcpLAogY2F0ZWdvcnkgPSBwYXJ0c1swXSwKIHZhcmlhYmxlID0gcGFydHNbMV0sCiBsYWJlbCA9IHBhcnRzWzJdLAogbWFya190aW1lLAogbWFya19lbnRyaWVzOwoKIHBlcmZvcm1hbmNlLm1hcmsobWFya19uYW1lKTsKIG1hcmtfZW50cmllcyA9IHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUobWFya19uYW1lKTsKCiBpZiAobWFya19lbnRyaWVzLmxlbmd0aCkgewogbWFya190aW1lID0gbWFya19lbnRyaWVzWzBdLnN0YXJ0VGltZTsKIHdpbmRvdy5fZ3RtLnB1c2goewogJ2V2ZW50JzogJ3BlcmZvcm1hbmNlX3RpbWluZycsCiAncGVyZm9ybWFuY2VfdGltaW5nLmNhdGVnb3J5JzogY2F0ZWdvcnksCiAncGVyZm9ybWFuY2VfdGltaW5nLnZhcmlhYmxlJzogdmFyaWFibGUsCiAncGVyZm9ybWFuY2VfdGltaW5nLnRpbWUnOiBtYXJrX3RpbWUgLyAxMDAwLAogJ3BlcmZvcm1hbmNlX3RpbWluZy5sYWJlbCc6IGxhYmVsCiB9KTsKIH0KIH07Cn0oKSk7Cjwvc2NyaXB0PgoKIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9hYmxpbmNvbG5fY29tYmluZWQubWluLmpzPzQ2NDIzMGYwIj48L3NjcmlwdD4KCgoKIDwvaGVhZD4KIDxib2R5IGNsYXNzPSJvbnNpdGUgIj4KIDxkaXYgaWQ9IndyYXAiIGNsYXNzPSJvdXRlcl93cmFwIj4KIAogPGRpdiBjbGFzcz0iYm9keV9yaWJib24gZXNpX3JpYmJvbiI+PC9kaXY+CgogCiAKPHNjcmlwdD4KIHdpbmRvdy52aW1lbyA9IHdpbmRvdy52aW1lbyB8fCB7fTsKPC9zY3JpcHQ+CjxkaXYgaWQ9InRvcG5hdl9kZXNrdG9wIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3AgIiByb2xlPSJiYW5uZXIiPgogPGRpdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfd3JhcHBlciI+CgogICA8YSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbG9nbyIgaHJlZj0iLy92aW1lby5jb20iIGFsdD0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiB0aXRsZT0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiBhcmlhLWxhYmVsPSJHbyB0byBWaW1lbyBob21lIHBhZ2UiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnZpbWVvX2hvbWUiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2hvbWVfY2xpY2siPgogIDxzdmcgYWx0PSJWaW1lbyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI0MCI+PHBhdGggZD0iTTIyLjQ0OCAxNC41NzVjLS4xMDQgMi4xNy0xLjYxOCA1LjE0Ni00LjU0NCA4LjkxMi0zLjAzIDMuOTQyLTUuNTkgNS45MTItNy42ODYgNS45MTItMS4yOTcgMC0yLjM5Ny0xLjIwNC0zLjMtMy42LS42LTIuMi0xLjIwMi00LjM5OC0xLjc5NC02LjU5OC0uNjY0LTIuMzk2LTEuMzgtMy42LTIuMTQ3LTMuNi0uMTY2IDAtLjc0Ny4zNTQtMS43NTMgMS4wNWwtMS4wNDgtMS4zNWMxLjEtLjk2NSAyLjE5LTEuOTMgMy4yNTctMi45MDUgMS40NjMtMS4yNjUgMi41NzMtMS45NCAzLjMtMi4wMDIgMS43MzItLjE2NiAyLjggMS4wMTcgMy4yMDUgMy41NTguNDM1IDIuNzQuNzM2IDQuNDQuOTAyIDUuMTE1LjQ5OCAyLjI3IDEuMDQ4IDMuNDAyIDEuNjUgMy40MDIuNDY2IDAgMS4xNzItLjczNyAyLjEwNS0yLjIxLjkzNC0xLjQ3MyAxLjQzMi0yLjU5MyAxLjUwNC0zLjM3LjEzMy0xLjI3Ny0uMzY1LTEuOTEtMS41MDYtMS45MS0uNTMgMC0xLjA4LjEyNS0xLjY1LjM2NCAxLjEtMy41OSAzLjE4Ni01LjMzMyA2LjI3Ny01LjIzIDIuMjczLjA3MyAzLjM1IDEuNTU2IDMuMjI3IDQuNDZtMTMuNzU1IDcuMDM0Yy0uOTMzIDEuNzY0LTIuMjIgMy4zNy0zLjg2IDQuODAzLTIuMjQgMS45My00LjQ3IDIuOTA1LTYuNyAyLjkwNS0xLjAzNy4wMDItMS44MjYtLjMzLTIuMzc2LS45OTQtLjU1LS42NjMtLjgxLTEuNTM1LS43NzctMi42MDMuMDMtMS4xLjM3Mi0yLjggMS4wMjUtNS4xMDQuNjU0LTIuMzAzLjk3Ni0zLjUzNy45NzYtMy43MDMgMC0uODYtLjMtMS4yOTctLjkwMi0xLjI5Ny0uMTk4IDAtLjc3LjM1My0xLjcwMiAxLjA0OGwtMS4xNTItMS4zNWMxLjA3LS45NjIgMi4xMzctMS45MjcgMy4yMDYtMi45MDIgMS40My0xLjI2NiAyLjUtMS45NCAzLjIwNS0yLjAwMiAxLjEtLjEwMyAxLjkxLjIzIDIuNDI4Ljk3Ni41MTguNzQ3LjcwNSAxLjcyMi41OCAyLjkxNS0uNDM1IDIuMDM0LS45MDIgNC42MDctMS40IDcuNzMtLjAzIDEuNDMuNDg4IDIuMTQ2IDEuNTU2IDIuMTQ2LjQ2NyAwIDEuMjk3LS40OTggMi41LTEuNDgzLjk5Ni0uODIgMS44MTUtMS41OTggMi40NS0yLjMyNGwuOTQyIDEuMjQ0bS00LjM1Ny0xNy44Yy0uMDMuODMtLjQ0NiAxLjYyOC0xLjI1NSAyLjM5NS0uOS44Ni0xLjk3IDEuMjk2LTMuMjA0IDEuMjk2LTEuOSAwLTIuODIyLS44My0yLjc1LTIuNDkuMDMyLS44Ni41NC0xLjY5IDEuNTI2LTIuNDkuOTg1LS43OTcgMi4wNzQtMS4xOSAzLjI3OC0xLjE5LjcwNSAwIDEuMjg2LjI3IDEuNzUzLjgyLjQ2Ny41NC42ODQgMS4xLjY1MyAxLjY2bTM1LjYxMiAxNy44Yy0uOTMzIDEuNzYzLTIuMjIgMy4zNy0zLjg2IDQuODAyLTIuMjQgMS45My00LjQ3IDIuOTA0LTYuNyAyLjkwNC0yLjE2OC4wMDItMy4yMTYtMS4yMDItMy4xNTMtMy41OTguMDMtMS4wNy4yMzgtMi4zNTUuNjIyLTMuODUuMzg0LTEuNTAzLjU5LTIuNjY1LjYyMy0zLjUwNS4wMy0xLjI2NS0uMzUzLTEuODk4LTEuMTUyLTEuODk4LS44NyAwLTEuOTEgMS4wMzYtMy4xMTIgMy4xLTEuMjc2IDIuMTY4LTEuOTYgNC4yNzQtMi4wNjQgNi4zMDgtLjA3MyAxLjQzLjA3MiAyLjU0LjQyNSAzLjI5OC0yLjMyNC4wNjQtMy45NjMtLjMyLTQuODg2LTEuMTUtLjgzLS43MzctMS4yMTItMS45NS0xLjE1LTMuNjUyLjAzLTEuMDY4LjE5OC0yLjEzNy40ODgtMy4yMDUuMjktMS4wNy40NTctMi4wMjMuNDg4LTIuODUzLjA2Mi0xLjIzNC0uMzg0LTEuODU3LTEuMzUtMS44NTctLjg0IDAtMS43NC45NTUtMi43MDYgMi44NTMtLjk2NiAxLjktMS41MDUgMy44OS0xLjYxIDUuOTU2LS4wNiAxLjg2Ny4wNTMgMy4xNzQuMzY0IDMuOS0yLjI5My4wNjItMy45Mi0uNDE1LTQuODc2LTEuNDUyLS43OTgtLjg2LTEuMTYtMi4xOC0xLjEtMy45NDIuMDMyLS44Ni4xODgtMi4wNzUuNDU3LTMuNjIuMjgtMS41NDYuNDI1LTIuNzUuNDU3LTMuNjIuMDYyLS42MDMtLjA4My0uOTAzLS40NDYtLjkwMy0uMTk3IDAtLjc2OC4zNC0xLjcwMiAxLjAxNWwtMS4yMDMtMS4zNDhjLjE2OC0uMTM1IDEuMjE2LTEuMSAzLjE1Ni0yLjkwNSAxLjQtMS4yOTcgMi4zNTQtMS45NyAyLjg1Mi0yLjAwMi44NzItLjA3MyAxLjU2Ny4yOSAyLjEwNiAxLjA4LjUzLjc4Ny44IDEuNjkuOCAyLjcyNyAwIC4zMzItLjAzMi42NTQtLjEwNS45NTQuNDk3LS43NjYgMS4wOC0xLjQzIDEuNzUyLTIgMS41MzctMS4zNCAzLjI2LTIuMDg2IDUuMTU3LTIuMjUyIDEuNjQtLjEzNSAyLjguMjUgMy41MDUgMS4xNTIuNTcuNzM2LjgzIDEuNzg0LjggMy4xNTMuMjM3LS4xOTguNDg2LS40MTYuNzQ2LS42NTQuNzY3LS45MDMgMS41MTQtMS42MiAyLjI1LTIuMTQ4IDEuMjM1LS45MDIgMi41Mi0xLjQgMy44Ni0xLjUwNCAxLjU5Ny0uMTM1IDIuNzUuMjUgMy40NTQgMS4xNTIuNjAyLjcyNi44NyAxLjc3NC44IDMuMTQzLS4wMzIuOTMzLS4yNiAyLjI4LS42NzUgNC4wNjUtLjQxNiAxLjc3My0uNjI0IDIuOC0uNjI0IDMuMDctLjAzLjY5NS4wMyAxLjE4Mi4xOTcgMS40NDIuMTY2LjI3LjU3LjM5NCAxLjIwMy4zOTQuNDY3IDAgMS4yOTctLjQ5NyAyLjUtMS40ODIuOTk2LS44MiAxLjgxNi0xLjU5OCAyLjQ1LTIuMzI0bC45NjMgMS4yNTRtMTguNzY1LS4wNTJjLS45NjUgMS41OTgtMi44NzQgMy4xOTUtNS43MDYgNC43OTMtMy41MzggMi4wMzItNy4xMjcgMy4wNS0xMC43NTggMy4wNS0yLjcwNiAwLTQuNjM2LS45MDQtNS44MDgtMi43LS44My0xLjIzMy0xLjIzNC0yLjY5Ni0xLjIwMy00LjQwNy4wMy0yLjY5OCAxLjIzNC01LjI3IDMuNi03LjcxIDIuNjAzLTIuNjY1IDUuNjc0LTQuMDAzIDkuMjEtNC4wMDMgMy4yNyAwIDUgMS4zMjggNS4yMDggMy45OTQuMTM1IDEuNzAyLS43OTggMy40NDUtMi44IDUuMjQtMi4xMzcgMS45Ni00LjgyNCAzLjIxNS04LjA2IDMuNzQ0LjYuODMgMS41MDQgMS4yNDUgMi43MDcgMS4yNDUgMi4zOTYgMCA1LjAyLS42MTMgNy44NjMtMS44MzcgMi4wMzMtLjg2IDMuNjMtMS43NTMgNC44MDMtMi42NzZsLjk0NSAxLjI2NW0tMTEuMzYtNS4yMjhjLjAzMi0uODkyLS4zMy0xLjM1LTEuMS0xLjM1LS45OTQgMC0yLjAxLjY4Ni0zLjA0OCAyLjA2Ni0xLjAzOCAxLjM4LTEuNTY3IDIuNjk3LTEuNTk4IDMuOTYyLS4wMiAwLS4wMi4yMTggMCAuNjQzIDEuNjMtLjYgMy4wNS0xLjUxNCA0LjI0Mi0yLjczOC45NjYtMS4wNTggMS40NjMtMS45MiAxLjUwNS0yLjU4M20yNC45NDYgMS44NjhjLS4xMzUgMy4wNzItMS4yNjUgNS43MTctMy40MDIgNy45NDctMi4xMzUgMi4yMy00Ljc5IDMuMzUtNy45NTUgMy4zNS0yLjYzNSAwLTQuNjM3LS44NS02LjAwNi0yLjU1LS45OTctMS4yNjctMS41NTctMi44NTQtMS42NS00Ljc1Mi0uMTY2LTIuODYzLjg2LTUuNDk4IDMuMS03Ljg5NCAyLjQwOC0yLjY2NSA1LjQyNy0zLjk5MyA5LjA1Ny0zLjk5MyAyLjMzNCAwIDQuMDk4Ljc4OCA1LjMgMi4zNDQgMS4xMzIgMS40NDMgMS42NSAzLjI5IDEuNTU3IDUuNTVtLTUuNjY0LS4xODVjLjAzLS45MDMtLjA5NC0xLjczMy0uMzc0LTIuNDgtLjI4LS43NDctLjY5NS0xLjEzLTEuMjI0LTEuMTMtMS43MDIgMC0zLjEwMi45MjMtNC4yMDIgMi43Ni0uOTMzIDEuNTAzLTEuNDMgMy4xMS0xLjUwNCA0LjgxMi0uMDMuODQuMTE0IDEuNTc3LjQ0NiAyLjIxLjM2NC43MzYuODgyIDEuMSAxLjU1NiAxLjEgMS41MDUgMCAyLjc5LS44ODMgMy44Ni0yLjY1Ni44OTItMS40NzIgMS4zOC0zLjAwOCAxLjQ0LTQuNjE1aC4wMDJ6IiBmaWxsPSIjMTEyMjMzIi8+PC9zdmc+CiAgPC9hPgogCiAgIDxuYXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnUiIHJvbGU9Im5hdmlnYXRpb24iIGFyaWEtbGFiZWw9Ik1haW4gbWVudSI+CiA8dWwgY2xhc3M9InRvcG5hdl9tZW51X2Rlc2t0b3BfbWFpbiIgcm9sZT0ibWVudWJhciI+CgogIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0iam9pbiI+CiA8YSBjbGFzcz0idG9wbmF2X21lbnVfam9pbiBqcy10b3BuYXZfbWVudV9hdXRoIiBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO3ZpbWVvLk1vZGFsLmNyZWF0ZSh7c2l6ZToneHNtYWxsJyxjb250ZW50Oicvam9pbj9tb2RhbD1uZXcnfSkiIGRhdGEtZ2EtZXZlbnQtY2xpY2s9InRvcF9uYXZ8am9pbiIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6am9pbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfam9pbl9jbGljayIgaHJlZj0iLy92aW1lby5jb20vam9pbiIgdGl0bGU9IkJlY29tZSBhIFZpbWVvIG1lbWJlciIgdGFiaW5kZXg9IjAiIHJlbD0idG9nZ2xlIiByb2xlPSJidXR0b24iIGFyaWEtb3ducz0idG9wbmF2X2pvaW4iPgogSm9pbiA8L2E+CgogICA8L2xpPgogCiAKIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJsb2dpbiI+CiA8YSBjbGFzcz0ianMtdG9wbmF2X21lbnVfYXV0aCIgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTt2aW1lby5TZXNzaW9uLmNyZWF0ZSgncmVnJywgbnVsbCwgdHJ1ZSk7IiBkYXRhLWdhLWV2ZW50LWNsaWNrPSJ0b3BfbmF2fGxvZ2luIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpsb2dpbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfbG9naW5fY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2xvZ19pbiIgdGl0bGU9IkxvZyBpbiB0byB5b3VyIGFjY291bnQiIHRhYmluZGV4PSIwIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9sb2dpbiI+CiBMb2cgaW4gPC9hPgoKICAgPC9saT4KIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0iY3JlYXRlIj4KIDxhIGNsYXNzPSJqcy10b3BuYXYtY3JlYXRlIHRvcG5hdl9oYXNfZHJvcGRvd24gdG9wbmF2X2ljb25fY2hldnJvbl9hIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDptYW5hZ2VfdmlkZW9zfGtleXdvcmQ6aG9zdF92aWRlb3MiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2NyZWF0ZV9jbGljayIgaHJlZj0iLy92aW1lby5jb20vY3JlYXRlIiB0aXRsZT0iIiB0YWJpbmRleD0iMCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfY3JlYXRlIj4KIEhvc3QgdmlkZW9zIDwvYT4KCiAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfY3JlYXRlIj4KICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpob3N0X3ZpZGVvc3xrZXl3b3JkOmNvbXBhcmVfcGxhbnMiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2NyZWF0ZV9tZW1iZXJzaGlwX29wdGlvbnNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3VwZ3JhZGUiIHRpdGxlPSJVcGdyYWRlIG9yIGNvbXBhcmUgb3VyIHBsYW5zIj5Db21wYXJlIHBsYW5zPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aG9zdF92aWRlb3N8a2V5d29yZDpwcm9mZXNzaW9uYWxzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfbWVtYmVyc2hpcF9vcHRpb25zX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9wcm9mZXNzaW9uYWxzIiB0aXRsZT0iR2V0IHByb2Zlc3Npb25hbCB2aWRlbyBob3N0aW5nIHRvb2xzIj5Qcm9mZXNzaW9uYWxzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aG9zdF92aWRlb3N8a2V5d29yZDpidXNpbmVzc2VzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfbWVtYmVyc2hpcF9vcHRpb25zX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9idXNpbmVzcyIgdGl0bGU9IkdldCBwb3dlcmZ1bCB2aWRlbyBtYXJrZXRpbmcgdG9vbHMiPkJ1c2luZXNzZXM8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpob3N0X3ZpZGVvc3xrZXl3b3JkOnZpZGVvX2xvdmVycyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfY3JlYXRlX21lbWJlcnNoaXBfb3B0aW9uc19jbGljayIgaHJlZj0iLy92aW1lby5jb20vZXZlcnlvbmUiIHRpdGxlPSJVcGxvYWQgYW5kIHNoYXJlIHlvdXIgdmlkZW9zIj5WaWRlbyBsb3ZlcnM8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpob3N0X3ZpZGVvc3xrZXl3b3JkOnZpZGVvX3NjaG9vbCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfY3JlYXRlX3ZpZGVvX3NjaG9vbF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vdmlkZW9zY2hvb2wiIHRpdGxlPSJMZWFybiBob3cgdG8gbWFrZSBiZXR0ZXIgdmlkZW9zIj5WaWRlbyBTY2hvb2w8L2E+CiA8L2xpPgogICA8L3VsPgogIDwvbGk+CiAKIAogPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9IndhdGNoIj4KIDxhIGNsYXNzPSJ0b3BuYXZfaGFzX2Ryb3Bkb3duIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDp3YXRjaCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3dhdGNoIiB0aXRsZT0iIiB0YWJpbmRleD0iMCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfd2F0Y2giPgogV2F0Y2ggPC9hPgoKICAgPHVsIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl93YXRjaCI+CiAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDpzdGFmZl9waWNrcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfc3RhZmZfcGlja3NfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2NoYW5uZWxzL3N0YWZmcGlja3MiIHRpdGxlPSJUaGUgYmVzdCB2aWRlb3Mgb24gVmltZW8sIGN1cmF0ZWQgZGFpbHkgYnkgb3VyIHRlYW0iPlN0YWZmIFBpY2tzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDpjYXRlZ29yaWVzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9jYXRlZ29yaWVzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9jYXRlZ29yaWVzIiB0aXRsZT0iQnJvd3NlIHZpZGVvcyBieSBpbnRlcmVzdCwgZ2VucmUsIGFuZCBtb3JlIj5DYXRlZ29yaWVzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDpjaGFubmVscyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfd2F0Y2hfY2hhbm5lbHNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2NoYW5uZWxzIiB0aXRsZT0iVmlldyB2aWRlbyBwbGF5bGlzdHMgY3JlYXRlZCBhbmQgY3VyYXRlZCBieSBvdGhlciBtZW1iZXJzIj5DaGFubmVsczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6Z3JvdXBzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9ncm91cHNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2dyb3VwcyIgdGl0bGU9IldhdGNoIGFuZCBkaXNjdXNzIHZpZGVvcyB3aXRoIG90aGVycyI+R3JvdXBzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDphcHAiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX2FwcHNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL2V2ZXJ5d2hlcmUiIHRpdGxlPSJXYXRjaCBWaW1lbyB2aWRlb3Mgb24gVFZzLCBwaG9uZXMsIHRhYmxldHMsIGFuZCBtb3JlIj5BcHBzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6d2F0Y2h8a2V5d29yZDptb3JlIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9tb3JlX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS93YXRjaCIgdGl0bGU9IkRpc2NvdmVyIG1vcmUgd2F5cyB0byB3YXRjaCBvbiBWaW1lbyI+TW9yZeKApjwvYT4KIDwvbGk+CiAgIDwvdWw+CiAgPC9saT4KIAogCiA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0ib25kZW1hbmQiPgogPGEgY2xhc3M9InRvcG5hdl9oYXNfZHJvcGRvd24gdG9wbmF2X2lzX29uZGVtYW5kIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6b25fZGVtYW5kIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9vbmRlbWFuZF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vb25kZW1hbmQiIHRpdGxlPSJXYXRjaCBtb3ZpZXMsIHNlcmllcywgYW5kIG1vcmUiIHRhYmluZGV4PSIwIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9vbmRlbWFuZCI+CiBPbiBEZW1hbmQgPC9hPgoKICAgPHVsIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl9vbmRlbWFuZCI+CiAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6d2hhdHNfbmV3IiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9vbmRlbWFuZF93aGF0c19uZXdfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kIiB0aXRsZT0iU2VlIG5ldyBhbmQgbm90ZXdvcnRoeSB0aXRsZXMgYWRkZWQgdG8gT24gRGVtYW5kIj5XaGF04oCZcyBuZXc8L2E+CiA8L2xpPgogICAKICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpvbl9kZW1hbmR8a2V5d29yZDpkaXNjb3ZlciIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfZGlzY292ZXJfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kL2Rpc2NvdmVyIiB0aXRsZT0iRGlzY292ZXIgdGl0bGVzIG91ciB0ZWFtIHJlY29tbWVuZHMiPkRpc2NvdmVyPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6Z2VucmVzIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9vbmRlbWFuZF9nZW5yZXNfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL29uZGVtYW5kL2Jyb3dzZSIgdGl0bGU9IkJyb3dzZSB0aXRsZXMgYnkgZ2VucmUiPkdlbnJlczwvYT4KIDwvbGk+CiAgIAogIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om9uX2RlbWFuZHxrZXl3b3JkOnR2X3NlcmllcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfdHZfc2VyaWVzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9vbmRlbWFuZC9icm93c2UvdHYrc2VyaWVzIiB0aXRsZT0iQnJvd3NlIHNlcmllcyBhbmQgVFYgc2hvd3MiPlRWICsgU2VyaWVzPC9hPgogPC9saT4KICAgCiAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6b25fZGVtYW5kfGtleXdvcmQ6c3RhcnRfc2VsbGluZyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfb25kZW1hbmRfc2VsbF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vb25kZW1hbmQvc3RhcnRzZWxsaW5nIiB0aXRsZT0iU2VsbCBkaXJlY3RseSB0byB5b3VyIGZhbnMgd2l0aCBWaW1lbyBPbiBEZW1hbmQiPlN0YXJ0IHNlbGxpbmc8L2E+CiA8L2xpPgogICA8L3VsPgogIDwvbGk+CiAKIDwvdWw+CiA8L25hdj48IS0tIC8udG9wbmF2X2Rlc2t0b3BfbWVudSAtLT4KIAogICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbWVudV9yaWdodCI+CgogICA8Zm9ybSBjbGFzcz0idG9wbmF2X21lbnVfc2VhcmNoIiBhY3Rpb249Ii8vdmltZW8uY29tL3NlYXJjaCIgbWV0aG9kPSJnZXQiIHJvbGU9InNlYXJjaCIgZGF0YS1kcy1wcm90ZWN0aW9uPgogPGlucHV0IGNsYXNzPSJ0b3BuYXZfbWVudV9zZWFyY2hfaW5wdXQganMtdG9wbmF2X21lbnVfc2VhcmNoX2lucHV0IGpzLXNlYXJjaF9hdXRvY29tcGxldGUiICB0eXBlPSJ0ZXh0IiBuYW1lPSJxIiB0aXRsZT0iU2VhcmNoIHZpZGVvcywgcGVvcGxlLCBhbmQgbW9yZSIgdmFsdWU9IiIgYXJpYS1sYWJlbD0iU2VhcmNoIHZpZGVvcywgcGVvcGxlLCBhbmQgbW9yZSIgcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIGF1dG9jb21wbGV0ZT0ib2ZmIj48YnV0dG9uIGNsYXNzPSJ0b3BuYXZfbWVudV9zZWFyY2hfc3VibWl0IHRvcG5hdl9pY29uX3NlYXJjaF9iIiB0eXBlPSJzdWJtaXQiIGFyaWEtbGFiZWw9IlNlYXJjaCI+PC9idXR0b24+CiA8L2Zvcm0+CiAKICAKICAKICAgPGEgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3VwbG9hZCB0b3BuYXZfaWNvbl91cGxvYWRfYiIgaHJlZj0iL3VwbG9hZCIgdGl0bGU9IlVwbG9hZCB5b3VyIHZpZGVvcyIgcm9sZT0iYnV0dG9uIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbXBvbmVudDp0b3BfbmF2fGtleXdvcmQ6dXBsb2FkIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl91cGxvYWRfY2xpY2siPjxzcGFuPlVwbG9hZDwvc3Bhbj48L2E+CiAgPC9kaXY+PCEtLSAvLnRvcG5hdl9tZW51X3JpZ2h0IC0tPgogIDwvZGl2PjwhLS0gLy50b3BuYXZfZGVza3RvcF93cmFwcGVyIC0tPgo8L2Rpdj4KCiA8bmF2IGlkPSJ0b3BuYXZfbW9iaWxlIiBjbGFzcz0idG9wbmF2X21vYmlsZSAiIHJvbGU9ImJhbm5lciI+CgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogIDxidXR0b24gY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9sZWZ0IHRvcG5hdl9tb2JpbGVfaGVhZGVyX2xvZ28ganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfbG9nbyB0b3BuYXZfaWNvbl9tb2JpbGVfdmxvZ29fYiI+CiAgPC9idXR0b24+CiA8YSBocmVmPSIvL3ZpbWVvLmNvbS9zZWFyY2giIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2J1dHRvbiB0b3BuYXZfbW9iaWxlX3B1bGxfcmlnaHQgdG9wbmF2X21vYmlsZV9oZWFkZXJfc2VhcmNoIHRvcG5hdl9pY29uX21vYmlsZV9zZWFyY2hfYiI+IDwvYT4KIDxzcGFuIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2hlYWRlcl90aXRsZSI+PC9zcGFuPgogPC9kaXY+CgogIDxzZWN0aW9uIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnUganMtdG9wbmF2X21vYmlsZV9tZW51X21haW4iPgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfY2xvc2UgdG9wbmF2X2ljb25fbW9iaWxlX3hfYiI+IDwvYnV0dG9uPgogPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX3JpZ2h0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbmdzIHRvcG5hdl9pY29uX21vYmlsZV9nZWFyX2IiPiA8L2J1dHRvbj4KIDwvZGl2PgoKIDx1bD4KICAgPGxpPgogPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfY2hhbm5lbF9iICIgaHJlZj0iLy92aW1lby5jb20vIj4KIFN0YWZmIFBpY2tzIDwvYT4KIDwvbGk+CiAgIDxsaT4KIDxhIGRhdGEtYWN0aW9uPSJsYXN0X3BhZ2UiIGRhdGEtYnJlZXplLWlnbm9yZSBjbGFzcz0idG9wbmF2X2ljb25fbW9iaWxlX2F2YXRhcl9iICIgaHJlZj0iL2xvZ19pbiI+CiA8c3BhbiBjbGFzcz0ibWVudV9hdXRoIj5Kb2luIG9yIGxvZyBpbjwvc3Bhbj4gPC9hPgogPC9saT4KICAgPGxpPgogPGEgZGF0YS1icmVlemUtaWdub3JlIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfc3Rhcl9iIiBocmVmPSIvL3ZpbWVvLmNvbS93YXRjaCI+CiBXYXRjaCA8L2E+CiA8L2xpPgogICA8bGk+CiA8YSBvbmNsaWNrPSJ2aW1lby5tb2JpbGUuZGVza3RvcF9zaGFyZWQuX3VwbG9hZCh0aGlzKTsgcmV0dXJuIGZhbHNlOyIgZGF0YS1icmVlemUtaWdub3JlIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfdXBsb2FkX2IiIGhyZWY9Ii8vdmltZW8uY29tL3VwbG9hZCI+CiBVcGxvYWQgPC9hPgogPC9saT4KICAgPGxpPgogPGEgZGF0YS1icmVlemUtaWdub3JlIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfdm9kX2IgIiBocmVmPSIvL3ZpbWVvLmNvbS9vbmRlbWFuZCI+CiBPbiBEZW1hbmQgPC9hPgogPC9saT4KICAgPGxpPgogPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSJ0b3BuYXZfaWNvbl9tb2JpbGVfZm9yZ290X2IgIiBocmVmPSJodHRwczovL2hlbHAudmltZW8uY29tL2hjL2VuLXVzIj4KIEhlbHAgPC9hPgogPC9saT4KICA8L3VsPgogPC9zZWN0aW9uPgoKICA8c2VjdGlvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9tZW51IHRvcG5hdl9tb2JpbGVfbWVudV9zZXR0aW5ncyBqcy10b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3MiPgogPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluc19jbG9zZSB0b3BuYXZfaWNvbl9tb2JpbGVfYXJyb3dsZWZ0X2IiPiA8L2J1dHRvbj4KIDxzcGFuIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2hlYWRlcl90aXRsZSI+TW9yZSBzdHVmZjwvc3Bhbj4KIDwvZGl2PgoKIDx1bD4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS90ZXJtcyI+CiBUZXJtcyBvZiBTZXJ2aWNlIDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9wcml2YWN5Ij4KIFByaXZhY3kgUG9saWN5IDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9kbWNhIj4KIENvcHlyaWdodCA8L2E+CiAgIDwvbGk+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vY29va2llX3BvbGljeSI+CiBDb29raWVzIDwvYT4KICAgPC9saT4KICA8bGk+CiAgPGEgZGF0YS1hY3Rpb249ImRlc2t0b3AiIG9uY2xpY2s9InZpbWVvLm1vYmlsZS5kZXNrdG9wX3NoYXJlZC5fczJkcygpOyByZXR1cm4gZmFsc2UiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSI+CiBEZXNrdG9wIHNpdGUgPC9hPgogICA8L2xpPgogIDxsaT4KICA8YSBsYW5ndWFnZSBocmVmPSIjIj4KIExhbmd1YWdlIDwvYT4KICAgPHNlbGVjdCBvbmNoYW5nZT0idmltZW8ubW9iaWxlLmRlc2t0b3Bfc2hhcmVkLl9zMmwodGhpcykiIHRpdGxlPSJDaG9vc2UgYSBkaWZmZXJlbnQgbGFuZ3VhZ2UiIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3NfbGFuZ3VhZ2UiPgogICA8b3B0aW9uIGNsYXNzPSJzZWxlY3RlZCIgc2VsZWN0ZWQgdmFsdWU9ImVuIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIEVuZ2xpc2ggPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZXMiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogRXNwYcOxb2wgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZGUtREUiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogRGV1dHNjaCA8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJmci1GUiIKIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiBGcmFuw6dhaXMgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iamEtSlAiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgog5pel5pys6KqeIDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InB0LUJSIgogbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KIFBvcnR1Z3XDqnMgPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ia28tS1IiCiBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgog7ZWc6rWt7Ja0IDwvb3B0aW9uPgogIDwvc2VsZWN0PgogIDwvbGk+CiAgPGxpPgogIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vZmFxIj4KIEZBUSA8L2E+CiAgIDwvbGk+CiAgPC91bD4KCiA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfY29weXJpZ2h0Ij5UTSArIMKpIDIwMTcgVmltZW8sIEluYy48L2Rpdj4KIDwvc2VjdGlvbj4KPC9uYXY+Cgo8c2NyaXB0PgohZnVuY3Rpb24oYSxiKXthLnZpbWVvPWEudmltZW98fHt9LHZpbWVvLm1vYmlsZT12aW1lby5tb2JpbGV8fHt9LFZpbWVvPXZpbWVvLm1vYmlsZXx8e30sVmltZW8uZGVza3RvcF9zaGFyZWQ9VmltZW8uZGVza3RvcF9zaGFyZWR8fHt9O3ZhciBjPWIuZ2V0RWxlbWVudEJ5SWQoInRvcG5hdl9kZXNrdG9wIiksZD0ib250b3VjaHN0YXJ0ImluIGE/InRvdWNoc3RhcnQiOmEuUG9pbnRlckV2ZW50PyJwb2ludGVyZG93biI6YS5NU1BvaW50ZXJFdmVudD8iTVNQb2ludGVyRG93biI6ImNsaWNrIjsiY2xpY2siIT09ZCYmYy5hZGRFdmVudExpc3RlbmVyKGQsZnVuY3Rpb24oYSl7dmFyIGI9ImltZyI9PT1hLnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCk/YS50YXJnZXQucGFyZW50Tm9kZTphLnRhcmdldDtiLmNsYXNzTGlzdC5jb250YWlucygidG9wbmF2X2hhc19kcm9wZG93biIpJiYoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCkpfSwhMSksYy5hZGRFdmVudExpc3RlbmVyKGQsZnVuY3Rpb24oYyl7Yy50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJqcy10b3BuYXZfbWVudV9hdXRoIikmJihiLmNvb2tpZT0ibGFzdF9wYWdlPSIrZW5jb2RlVVJJQ29tcG9uZW50KGEubG9jYXRpb24ucGF0aG5hbWUpKyI7cGF0aD0nLyc7bWF4LWFnZT0xODAwOyIpfSwhMSksVmltZW8uZGVza3RvcF9zaGFyZWQuX3VwbG9hZD1mdW5jdGlvbihjKXtpZigvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7dmFyIGYsZyxkPSJ2aW1lbzovL2FwcC52aW1lby5jb20vdXBsb2FkP3JlZj1tb2JpbGV3ZWIiLGU9Ii91cGxvYWQiO3JldHVybiBmPWZ1bmN0aW9uKCl7Yi53ZWJraXRIaWRkZW58fChhLmxvY2F0aW9uPWUpfSxnPWZ1bmN0aW9uKCl7YS5sb2NhdGlvbj1kLHNldFRpbWVvdXQoZiwyNSl9LGcoKSwhMX1hLmxvY2F0aW9uPWMuaHJlZn0sVmltZW8uZGVza3RvcF9zaGFyZWQuX3MyZHM9ZnVuY3Rpb24oKXtiLmNvb2tpZT0ib3B0X291dF9tb2JpbGU9MTtleHBpcmVzPUZyaSwgMzEgRGVjIDk5OTkgMjM6NTk6NTkgR01UO2RvbWFpbj0iK3ZpbWVvLmRvbWFpbixhLmxvY2F0aW9uLnJlbG9hZCgpfSxWaW1lby5kZXNrdG9wX3NoYXJlZC5fczJsPWZ1bmN0aW9uKGIpe3ZhciBjPWIudmFsdWUsZD1uZXcgWE1MSHR0cFJlcXVlc3Q7ZC5vcGVuKCJQT1NUIiwiL3NldHRpbmdzL2xvY2FsZSIpLGQuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEh0dHBSZXF1ZXN0IiksZC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSxkLnNlbmQoImxvY2FsZT0iK2MrIiZ0b2tlbj0iK3ZpbWVvLnhzcmZ0KSxkLm9ubG9hZD1mdW5jdGlvbigpezIwMD09PWQuc3RhdHVzJiZhLmxvY2F0aW9uLnJlbG9hZCgpfX07dmFyIGU9ImNsaWNrIixmPSJibG9jayIsZz0ibm9uZSIsaD1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9sb2dvIik7aCYmaC5hZGRFdmVudExpc3RlbmVyKGUsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSxhLnByZXZlbnREZWZhdWx0KCk7dmFyIGM9Yi5xdWVyeVNlbGVjdG9yKCIuanMtdG9wbmF2X21vYmlsZV9tZW51X21haW4iKTtjLnN0eWxlLmRpc3BsYXk9Zjt2YXIgZD1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9jbG9zZSIpO2QuYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVmYXVsdCgpLGMuc3R5bGUuZGlzcGxheT1nfSk7dmFyIGg9Yi5xdWVyeVNlbGVjdG9yKCIuanMtdG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzIiksaT1iLnF1ZXJ5U2VsZWN0b3IoIi5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9zZXR0aW5ncyIpO2kuYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVmYXVsdCgpLGguc3R5bGUuZGlzcGxheT1mLGMuc3R5bGUuZGlzcGxheT1nO3ZhciBkPWIucXVlcnlTZWxlY3RvcigiLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbnNfY2xvc2UiKTtkLmFkZEV2ZW50TGlzdGVuZXIoZSxmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpLGEucHJldmVudERlZmF1bHQoKSxoLnN0eWxlLmRpc3BsYXk9ZyxjLnN0eWxlLmRpc3BsYXk9Zn0pfSl9LCExKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZihhKXt2YXIgYj1uZXcgWE1MSHR0cFJlcXVlc3Q7Yi5vcGVuKCJQT1NUIiwiL3NldHRpbmdzL25hdiIpLGIuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEh0dHBSZXF1ZXN0IiksYi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSxiLnNlbmQoIm1lc3NhZ2Vfc3RhdGU9IithKyImdG9rZW49Iit2aW1lby54c3JmdCksYi5vbmxvYWQ9ZnVuY3Rpb24oKXt9fXZhciBhPWIuZ2V0RWxlbWVudEJ5SWQoInRvcG5hdl9tZW51X2F2YXRhciIpO2lmKGEpe3ZhciBjPWEucXVlcnlTZWxlY3RvcigiLnRvcG5hdl9tZW51X2F2YXRhcl9idWJibGUiKSxlPShhLnF1ZXJ5U2VsZWN0b3IoIiN0b3BuYXZfdXNlcl9kcm9wZG93biIpLCExKTtjJiZjLmNsYXNzTGlzdC5hZGQoIm9uIiksYS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7ZXx8KGU9ITAsYyYmYy5jbGFzc0xpc3QucmVtb3ZlKCJvbiIpLGYoMSkpfSwhMSl9fSwxZTMpfSh3aW5kb3csZG9jdW1lbnQpOwo8L3NjcmlwdD4KCiA8ZGl2IGNsYXNzPSJ3cmFwX2NvbnRlbnQiPgogCgoKCjxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9jb250YWluZXIiPgogPGRpdiBjbGFzcz0iZXhjZXB0aW9uX3NlY3Rpb24gZXhjZXB0aW9uX3NlY3Rpb24tLWluZm8iPgogPGRpdiBjbGFzcz0iZXhjZXB0aW9uX3NocnVnX28iPjwvZGl2PgogPGgxIGNsYXNzPSJleGNlcHRpb25fdGl0bGUgaXJpc19oZWFkZXIiPlNvcnJ5LCB3ZSBjb3VsZG7igJl0IGZpbmQgdGhhdCBwYWdlPC9oMT4KCiA8ZGl2IGNsYXNzPSJleGNlcHRpb25fY29udGVudCI+CiA8cCBjbGFzcz0iZXhjZXB0aW9uX21lc3NhZ2UiPgogIDwvcD4KCiA8ZGl2IGNsYXNzPSJleGNlcHRpb25fbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uLS11cHNlbGwiPgogPGRpdiBjbGFzcz0iaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbC1pY29uIj4KIDxzcGFuIGNsYXNzPSJpcmlzX2ljIGlzLS0xNiI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6TTcgNGgydjJIN1Y0em0wIDNoMnY1SDdWN3oiLz48L3N2Zz48L3NwYW4+CiA8L2Rpdj4KCiA8ZGl2IGNsYXNzPSJpcmlzX25vdGlmaWNhdGlvbi1oZWFkZXIiPgogPHN0cm9uZz5SZWFzb25zIHlvdSBtaWdodCBiZSBzZWVpbmcgdGhpcyBwYWdlPC9zdHJvbmc+CiA8L2Rpdj4KCiA8dWwgY2xhc3M9ImlyaXNfbm90aWZpY2F0aW9uLWxpc3QiPgogIDxsaT5JdCBleGlzdHMsIGJ1dCB5b3UgZG9u4oCZdCBoYXZlIHBlcm1pc3Npb24gdG8gc2VlIGl0LCBvciB5b3UgbmVlZCB0byA8YSBvbmNsaWNrPSJ2aW1lby5TZXNzaW9uLmNyZWF0ZSgpIj5sb2cgaW48L2E+LjwvbGk+CiAgPGxpPk5vdGhpbmcgaGFzIGV2ZXIgZXhpc3RlZCBoZXJlLiBTcG9va3kuPC9saT4KIDxsaT5Tb21ldGhpbmcgb25jZSBsaXZlZCBoZXJlLCBidXQgaGFzIGJlZW4gZGVsZXRlZC48L2xpPgogPC91bD4KPC9kaXY+CgogIDxmb3JtIGNsYXNzPSJleGNlcHRpb25fc2VhcmNoIiBhY3Rpb249Ii9zZWFyY2giIG1ldGhvZD0iZ2V0Ij4KIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtaW5wdXQtd3JhcHBlciI+CiA8aW5wdXQgY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtaW5wdXQgaXJpc19pbnB1dCBpcmlzX2lucHV0LS1zZWFyY2gganMtc2VhcmNoX2F1dG9jb21wbGV0ZSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgogPC9kaXY+CiA8YnV0dG9uIGNsYXNzPSJleGNlcHRpb25fc2VhcmNoLWJ1dHRvbiBpcmlzX2J0biBpcmlzX2J0bi0tcHJpbWFyeSI+CiA8c3BhbiBjbGFzcz0iaXJpc19idG4tY29udGVudCI+U2VhcmNoPC9zcGFuPgogPC9idXR0b24+CiA8L2Zvcm0+CiAgPC9kaXY+CiA8L2Rpdj4KCiA8ZGl2IGNsYXNzPSJleGNlcHRpb25fYXV4aWxpYXJ5Ij48L2Rpdj4KPC9kaXY+CgogPC9kaXY+CgogIAo8Zm9vdGVyIGNsYXNzPSJmb290ZXJfdjIgZm9vdGVyX3YyLS1yZXNwb25zaXZlIj4KICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX3NpdGVtYXAiPgogPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19saW5rcyI+CgogPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5WaW1lbzwvc3Bhbj4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiA8L2Rpdj4KIDwvaDQ+CiA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvYWJvdXQiIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19hYm91dF9jbGljayI+CiBBYm91dCBWaW1lbyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvYmxvZyIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpbWVvX2Jsb2dfY2xpY2siPgogVmltZW8gQmxvZyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvaGVscC9ndWlkZWxpbmVzIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmltZW9fZ3VpZGVsaW5lc19jbGljayI+CiBWaW1lbyBHdWlkZWxpbmVzIDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLnZpbWVvLmNvbSIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2RldmVsb3BlcnNfY2xpY2siPgogRGV2ZWxvcGVycyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvam9icyI+CiBKb2JzIDwvYT4KIDwvbGk+CiA8L3VsPgogPC9zZWN0aW9uPgoKIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+SGVscDwvc3Bhbj4KIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiA8L2Rpdj4KIDwvaDQ+CiA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvaGVscCIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2hlbHBfY2VudGVyX2NsaWNrIj4KIEhlbHAgQ2VudGVyIDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiIGhyZWY9Ii92aWRlb3NjaG9vbCIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpZGVvX3NjaG9vbF9jbGljayI+CiBWaWRlbyBTY2hvb2wgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL2hlbHAvZmFxIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZmFxX2NsaWNrIj4KIEZBUSA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvZm9ydW1zIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZm9ydW1zX2NsaWNrIj4KIEZvcnVtcyA8L2E+CiA8L2xpPgogPC91bD4KIDwvc2VjdGlvbj4KCiA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPk1vcmU8L3NwYW4+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogPC9kaXY+CiA8L2g0PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL29uZGVtYW5kIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfb25fZGVtYW5kX2NsaWNrIj4KIE9uIERlbWFuZCA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvZXZlcnl3aGVyZSIgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2V2ZXJ5d2hlcmVfY2xpY2siPgogRXZlcnl3aGVyZSA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvdXBsb2FkIiBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBsb2FkX2NsaWNrIj4KIFVwbG9hZCA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvc2l0ZV9tYXAiIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zaXRlX21hcF9jbGljayI+CiBTaXRlIE1hcCA8L2E+CiA8L2xpPgogPC91bD4KIDwvc2VjdGlvbj4KCiA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlVwZ3JhZGU8L3NwYW4+CiA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogPC9kaXY+CiA8L2g0PgogPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIgaHJlZj0iL3BsdXM/dj1mb290ZXIiPgogVmltZW8gUGx1cyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvcHJvP3Y9Zm9vdGVyIj4KIFZpbWVvIFBSTyA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIiBocmVmPSIvYnVzaW5lc3MiPgogVmltZW8gQnVzaW5lc3MgPC9hPgogPC9saT4KIDwvdWw+CiA8L3NlY3Rpb24+CiA8L2Rpdj4KCiAgIDxhc2lkZSBpZD0iZm9vdGVyX3RpcCIgY2xhc3M9ImZvb3Rlcl92Ml9fdGlwIiBhcmlhLWxpdmU9InBvbGl0ZSI+CiA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fdGlwLWhlYWRlciI+RGlkIHlvdSBrbm93PzwvaDQ+CiA8cCBjbGFzcz0iYWN0aXZlIGZvb3Rlcl92Ml9fdGlwLWNvbnRlbnQiPjxhIGhyZWY9Imh0dHBzOi8vaGVscC52aW1lby5jb20vaGMvZW4tdXMvYXJ0aWNsZXMvMjI0ODE4MDQ3I3Bob3RvcyI+U3BydWNlIHVwIHlvdXIgdmlkZW8gcGFnZTwvYT4gd2l0aCBwcm9kdWN0aW9uIHN0aWxscyBvciByYW5kb20gcGhvdG9zIGZyb20geW91ciBiaXJ0aGRheSBwYXJ0eS4gTGluayBzdHJhaWdodCBmcm9tIEluc3RhZ3JhbSBvciBGbGlja3IuPC9wPgogPC9hc2lkZT4KIDwvc2VjdGlvbj4KIAogIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2F1eGlsaWFyeSAiPgoKIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwiPgogPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19hdXhpbGlhcnktY29udGVudCI+CiA8cD5UTSArICZjb3B5OyAyMDE3IFZpbWVvLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPC9wPgogPC9kaXY+CiA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdCI+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii90ZXJtcyIgdGl0bGU9IlRlcm1zICZhbXA7IENvbmRpdGlvbnMiPgogVGVybXMgPC9hPgogPC9saT4KIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL3ByaXZhY3kiIHRpdGxlPSJQcml2YWN5IFBvbGljeSI+CiBQcml2YWN5IDwvYT4KIDwvbGk+CiA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9kbWNhIiB0aXRsZT0iQ29weXJpZ2h0IEluZm9ybWF0aW9uIj4KIENvcHlyaWdodCA8L2E+CiA8L2xpPgogPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsLWxpc3QtaXRlbSI+CiA8YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IiBocmVmPSIvY29va2llX3BvbGljeSIgdGl0bGU9IkxlYXJuIG1vcmUgYWJvdXQgaG93IFZpbWVvIHVzZXMgY29va2llcyI+CiBDb29raWVzIDwvYT4KIDwvbGk+CiA8L3VsPgogPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19hdXhpbGlhcnktY29udGVudCBmb290ZXJfdjJfX3dpdGhsb3ZlIj4KIE1hZGUgd2l0aCA8YSBocmVmPSJodHRwczovL3ZpbWVvLmNvbS9sb3ZlIj48c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiBmb290ZXJfdjJfX2xvdmVoZWFydCBmb290ZXJfdjJfX2F1eGlsaWFyeS1pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMiAxMiI+PHBhdGggZD0iTTkgMkM3LjMxMiAyIDYgMy41IDYgMy41UzQuNjg3IDIgMyAyQzEuMzEyIDIgMCAzLjMxMiAwIDVjMCAzLjE4OCAzLjc1IDMuMDEyIDYgNiAyLjI1LTIuOTg4IDYtMi44MTIgNi02IDAtMS42ODgtMS4zMTMtMy0zLTN6Ii8+PC9zdmc+PC9hPiBpbiBOWUMuIDwvZGl2PgogPC9kaXY+CgogPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19maWx0ZXJzIGZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWNvbnRlbnQiPgogPHNwYW4gY2xhc3M9Imxhbmd1YWdlIj4KIExhbmd1YWdlOgogPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iI2xhbmd1YWdlIiBvbmNsaWNrPSJ2aW1lby5Nb2RhbC5jcmVhdGUoe2NvbnRlbnQ6ICcvc2V0dGluZ3MvbG9jYWxlJywgc2l6ZTogJ3NtYWxsJ30pOyByZXR1cm4gZmFsc2U7IiB0aXRsZT0iQ2hvb3NlIGEgZGlmZmVyZW50IGxhbmd1YWdlIj5FbmdsaXNoPC9hPgogPC9zcGFuPgoKICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19maWx0ZXIiPk1hdHVyZSBjb250ZW50IGZpbHRlcjogPC9zcGFuPjxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQgZm9vdGVyX3YyX19maWx0ZXJzX19sYW5nIGNvbnRlbnRmaWx0ZXIganMtZm9vdGVyX2NvbnRlbnRmaWx0ZXJfbGluayIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJ2aW1lby5Nb2RhbC5jcmVhdGUoe2NvbnRlbnQ6ICcvc2V0dGluZ3MvY29udGVudHJhdGluZyd9KSIgdGl0bGU9IkNoYW5nZSB5b3VyIG1hdHVyZSBjb250ZW50IGZpbHRlciI+Tm9uZTwvYT4KICA8L2Rpdj4KCjwvc2VjdGlvbj4KPC9mb290ZXI+CiAKIDwvZGl2PgoKIAogCiAKIAo8c2NyaXB0PgogdmFyIF9fZmEgPSBfX2ZhIHx8IFtdOwogX19mYS5wdXNoKFsndHJhY2tQYWdldmlldyddKTsKCiAgLy8gQW5hbHl0aWNzIFNldHVwCiB2YXIgX2d0bSA9IF9ndG0gfHwgW10sCiBfaW5pdGlhbF9ndG1fc3RhdGUgPSB7ImV4Y2VwdGlvbl9odHRwX2NvZGUiOiJIVFRQXC8xLjEgNDA0IE5vdCBGb3VuZCIsImxhbmd1YWdlIjoiZW4iLCJ1c2VyX3N0YXR1cyI6ImxvZ2dlZF9vdXQiLCJ1c2VyX3R5cGUiOiJub25lIiwiZ2FfdW5pdmVyc2FsX2lkIjoiVUEtNzY2NDEtOCIsImNvbXNjb3JlX3NpdGVfaWQiOjEwMzQ4Mjg5fTsKCiBfaW5pdGlhbF9ndG1fc3RhdGVbJ3Z1aWQnXSA9IGRvY3VtZW50LmNvb2tpZS5yZXBsYWNlKC8oPzooPzpefC4qO1xzKil2dWlkXHMqXD1ccyooW147XSopLiokKXxeLiokLywgIiQxIik7CiBfaW5pdGlhbF9ndG1fc3RhdGVbJ2d0bS5zdGFydCddID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CiBfaW5pdGlhbF9ndG1fc3RhdGVbJ2V2ZW50J10gPSAnZ3RtLmpzJzsKIF9ndG0ucHVzaChfaW5pdGlhbF9ndG1fc3RhdGUpOwogCiAvKioKICogSWYgdGhlIGN1cnJlbnQgcmVxdWVzdCB3YXMgYnVja2V0ZWQgaW4gYW4gQUJMaW5jb2xuIGV4cGVyaW1lbnQsCiAqIHNlbmQgdGhlIHNlbGVjdGVkIHRyZWF0bWVudCBiYWNrIGZyb20gdGhlIGNsaWVudCwgdG8gZmlsdGVyIGFiIHRlc3QKICogZGF0YSBkb3duIHRvIG5vbi1yb2JvdCB1c2VycyB0aGF0IHJ1biBKYXZhU2NyaXB0LgogKi8KIGlmICgiQUJMaW5jb2xuIiBpbiB3aW5kb3cpIHsKIChmdW5jdGlvbiAoKSB7CiAgIH0pKCk7CiB9CgogIHZhciBfZXh0ZW5kID0gZnVuY3Rpb24oKXtmb3IodmFyIHI9YXJndW1lbnRzWzBdLG49MSxlPWFyZ3VtZW50cy5sZW5ndGg7ZT5uO24rKyl7dmFyIHQ9YXJndW1lbnRzW25dO2Zvcih2YXIgYSBpbiB0KXQuaGFzT3duUHJvcGVydHkoYSkmJihyW2FdPXRbYV0pfXJldHVybiByfTsKCiAgdmFyIENTU19ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC8nLAogSlNfRElSID0gJ2h0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0LycsCiBJTUFHRV9ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9pbWFnZXNfdjYvJywKIFNWR19ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdmcvJywKICBCVUlMRF9IQVNIID0gJzcyNDU0JzsKCiAgdmFyIHZpbWVvID0gX2V4dGVuZCgod2luZG93LnZpbWVvIHx8IHt9KSwgeyJhcHBfdmVyc2lvbiI6InY2IiwiZG9tYWluIjoidmltZW8uY29tIiwidXJsIjoidmltZW8uY29tIiwiY3VyX3VzZXIiOmZhbHNlLCJpc19tb2JpbGUiOmZhbHNlfSk7CiB2aW1lby5jb25maWcgPSBfZXh0ZW5kKCh2aW1lby5jb25maWcgfHwge30pLCB7ImxvY2FsZSI6ImVuIn0pOwoKICB2YXIgbG9jYWxlQ29uZmlnID0gewogbGFuZzogJ2VuJywKICdEYXRlJzogewogbW9udGhzOiBbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sCiBtb250aHNfYWJicjogWyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSwKIGRheXM6IFsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSwKIGRheXNfYWJicjogWyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSwKCiAvLyBDdWx0dXJlJ3MgZGF0ZSBvcmRlcjogTU0vREQvWVlZWQogZGF0ZU9yZGVyOiBbJ2RhdGUnLCAnbW9udGgnLCAneWVhciddLAogc2hvcnREYXRlOiAnJWQvJW0vJVknLAogc2hvcnRUaW1lOiAnJUk6JU0lcCcsCiBBTTogJ0FNJywKIFBNOiAnUE0nLAogZmlyc3REYXlPZldlZWs6IDAsCgogLy8gRGF0ZS5FeHRyYXMKIG9yZGluYWw6IGZ1bmN0aW9uKGRheU9mTW9udGgpewogcmV0dXJuIGRheU9mTW9udGg7CiB9CiB9LAogJ0RhdGVQaWNrZXInOiB7CiBzZWxlY3RfYV90aW1lOiAiU2VsZWN0IGEgdGltZSIsCiB1c2VfbW91c2Vfd2hlZWw6ICJVc2UgdGhlIG1vdXNlIHdoZWVsIHRvIHF1aWNrbHkgY2hhbmdlIHZhbHVlIiwKIHRpbWVfY29uZmlybV9idXR0b246ICJPSyIsCiBhcHBseV9yYW5nZTogIkFwcGx5IiwKIGNhbmNlbDogIkNhbmNlbCIsCiB3ZWVrOiAiV2siIH0sCiAgJ051bWJlcic6IHsKIGRlY2ltYWw6ICcuJywKIGdyb3VwOiAnLCcsCiBjdXJyZW5jeTogewogcHJlZml4OiAnJCcKIH0KIH0sCiAnRm9ybVZhbGlkYXRvcic6IHsicmVxdWlyZWQiOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIsInJlcXVpcmVkQ2hrIjoiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifSB9OwoKIHZhciBmdWxsTG9jYWxlID0gJyc7CgogCiAgdmFyIENvcHkgPSB7dHJhbnNsYXRlOmZ1bmN0aW9uKHQsaSx1KXt2YXIgZT0nb2JqZWN0JyE9dHlwZW9mIHRoaXMuZGljdFt0XT90aGlzLmRpY3RbdF06aT90aGlzLmRpY3RbdF0ucGx1cmFsOnRoaXMuZGljdFt0XS5zaW5ndWxhcjtyZXR1cm4nb2JqZWN0Jz09dHlwZW9mIHUmJihlPXRoaXMuc3Vic3RpdHV0ZShlLHUpKSxlfSxzdWJzdGl0dXRlOmZ1bmN0aW9uKHQsaSl7cmV0dXJuIHZvaWQgMCE9PXQuc3Vic3RpdHV0ZT90LnN1YnN0aXR1dGUoaSk6dC5yZXBsYWNlKC9cXD9ceyhbXnt9XSspXH0vZyxmdW5jdGlvbih0LHUpe3JldHVybidcXCc9PXQuY2hhckF0KDApP3Quc2xpY2UoMSk6bnVsbCE9aVt1XT9pW3VdOicnfSl9LGRpY3Q6e319OwogQ29weS5kaWN0ID0geyJkaWRfeW91X21lYW5fZW1haWwiOiJEaWQgeW91IG1lYW4gPGVtPntTVUdHRVNUfTxcL2VtPj8iLCJlbWFpbF9wYXNzd29yZF9taXNtYXRjaCI6IkVtYWlsIGFuZCBwYXNzd29yZCBkbyBub3QgbWF0Y2giLCJqdXN0X25vdyI6Imp1c3Qgbm93Iiwic2Vjb25kc19hZ28iOnsic2luZ3VsYXIiOiJ7Q09VTlR9IHNlY29uZCBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IHNlY29uZHMgYWdvIn0sIm1pbnV0ZXNfYWdvIjp7InNpbmd1bGFyIjoie0NPVU5UfSBtaW51dGUgYWdvIiwicGx1cmFsIjoie0NPVU5UfSBtaW51dGVzIGFnbyJ9LCJob3Vyc19hZ28iOnsic2luZ3VsYXIiOiJ7Q09VTlR9IGhvdXIgYWdvIiwicGx1cmFsIjoie0NPVU5UfSBob3VycyBhZ28ifSwib3Blbl9jb21tZW50X2JveCI6IkFkZCBuZXcgY29tbWVudCBpbnN0ZWFkICZyYXF1bzsiLCJ1cmxfdW5hdmFpbGFibGUiOiJTb3JyeSwgdGhpcyB1cmwgaXMgdW5hdmFpbGFibGUuIiwidW5zYXZlZF9jaGFuZ2VzX2dlbmVyaWMiOiJZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMsIGFyZSB5b3Ugc3VyZSB5b3Ugd2lzaCB0byBsZWF2ZT8iLCJhZGQiOiJBZGQiLCJyZW1vdmUiOiJSZW1vdmUiLCJzZWxlY3QiOiJTZWxlY3QiLCJub19mb2xsb3dlcnNfZm9yX2xldHRlciI6IllvdSBkb24mcnNxdW87dCBmb2xsb3cgYW55b25lIHRoYXQgYmVnaW4gd2l0aCB0aGUgbGV0dGVyICZsZHF1bzt7UEFHRV9MRVRURVJ9JnJkcXVvOyIsInNoYXJlX2xpbWl0X3JlYWNoZWQiOiJZb3UgaGF2ZSByZWFjaGVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1c2VycyB0byBzaGFyZSB3aXRoLiIsImF0X2xlYXN0X29uZSI6IlRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIHVzZXIuIiwiYXZhaWxhYmxlIjoiQXZhaWxhYmxlIiwidW5hdmFpbGFibGUiOiJVbmF2YWlsYWJsZSIsImJyb3dzZV9lcnJvcl9nZW5lcmljIjoiU29ycnksIHRoZXJlIHdhcyBhbiBlcnJvciIsImJyb3dzZV9lcnJvcl9ub192aWRlb3MiOiJTb3JyeSwgbm8gdmlkZW9zIGZvdW5kIiwiZm9sbG93IjoiRm9sbG93IiwiZm9sbG93aW5nIjoiRm9sbG93aW5nIiwidW5mb2xsb3ciOiJVbmZvbGxvdyIsInVuZm9sbG93aW5nIjoiVW5mb2xsb3dpbmciLCJjb3VudF9jb21tZW50cyI6eyJzaW5ndWxhciI6IntDT1VOVH0gY29tbWVudCIsInBsdXJhbCI6IntDT1VOVH0gY29tbWVudHMifSwiZmlyc3RfY29tbWVudCI6IkJlIHRoZSBmaXJzdCB0byBjb21tZW50XHUyMDI2Iiwibm9fY29tbWVudHNfZm9yX3lvdSI6IkZvcmJpZGRlbi4gWW91IGNhbm5vdCBwb3N0IGNvbW1lbnRzIG9uIHRoaXMgcGFnZS4iLCJvb3BzIjoiT29wcyEiLCJwbGF5ZXJfdHJ5X2FnYWluIjoiVGhhdCB3YXNuJ3Qgc3VwcG9zZWQgdG8gaGFwcGVuLiBQbGVhc2UgdHJ5IGFnYWluIGluIGEgZmV3IG1pbnV0ZXMuIiwiZHVyYXRpb25faW5wdXRfbWluX2R1cmF0aW9uIjoiVGhlIGR1cmF0aW9uIGNhbm5vdCBiZSBsZXNzIHRoYW4ge01JTl9EVVJBVElPTn0uIiwiZHVyYXRpb25faW5wdXRfbWF4X2R1cmF0aW9uIjoiVGhlIGR1cmF0aW9uIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4ge01BWF9EVVJBVElPTn0uIiwiZHVyYXRpb25faW5wdXRfaW52YWxpZF9jaGFyYWN0ZXJzIjoiMC05IGFuZCA6IGFyZSB0aGUgb25seSBhY2NlcHRhYmxlIGlucHV0cy4iLCJjbG9zZSI6IkNsb3NlIiwiZXhwYW5kIjoiRXhwYW5kIiwibG9hZGluZyI6IkxvYWRpbmcuLi4iLCJ0b3AiOiJ0b3AiLCJhZHZhbmNlZF9zZWFyY2giOiJBZHZhbmNlZCBTZWFyY2giLCJub19zdWdnZXN0aW9ucyI6Ik5vIHN1Z2dlc3Rpb25zIiwicmVjZW50X3NlYXJjaGVzIjoiUmVjZW50IFNlYXJjaGVzIiwic2VhcmNoX2FsbCI6IlNlYXJjaCBBbGwgb2YgVmltZW8iLCJlbWFpbF9hbmRfcGFzc3dvcmQiOiJQbGVhc2UgZW50ZXIgeW91ciBlbWFpbCBhbmQgcGFzc3dvcmQiLCJlbWFpbF9hZGRyZXNzIjoiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcyIsIm5hbWVfZW1haWxfYW5kX3Bhc3N3b3JkIjoiUGxlYXNlIGVudGVyIHlvdXIgbmFtZSwgZW1haWwsIGFuZCBwYXNzd29yZCIsIkFjdGl2aXR5IjoiQWN0aXZpdHkiLCJGb2xsb3ciOiJGb2xsb3ciLCJGb2xsb3dpbmciOiJGb2xsb3dpbmciLCJMb2FkaW5nIjoiTG9hZGluZyIsIk5vIGFjdGl2aXR5IGluIHRoZSBwYXN0IDMwIGRheXMiOiJObyBhY3Rpdml0eSBpbiB0aGUgcGFzdCAzMCBkYXlzIiwiU2VlIGFsbCI6IlNlZSBhbGwiLCJVbmZvbGxvdyI6IlVuZm9sbG93IiwiVmlldyBtZXNzYWdlIjoiVmlldyBtZXNzYWdlIiwiV2UnbGwgYWxlcnQgeW91IG9uY2Ugc29tZXRoaW5nIGNvb2wgaGFwcGVucy4iOiJXZSdsbCBhbGVydCB5b3Ugb25jZSBzb21ldGhpbmcgY29vbCBoYXBwZW5zLiJ9Owo8L3NjcmlwdD4KCgogPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L3JlYWN0X3Byb2RfY29tYmluZWQubWluLmpzP2I2ZWU3YTRlIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9leGNlcHRpb25fY29tYmluZWQubWluLmpzPzBjN2FhZTg0Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9hY3Rpdml0eV90b3BuYXZfY29tYmluZWQubWluLmpzPzUzOWI2YzgzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9tb2R1bGVzL2dsb2JhbC9hYmxpbmNvbG4vaG9zdF92aWRlb3MubWluLmpzPzY1ZGM0NTFhIj48L3NjcmlwdD4KCiA8c2NyaXB0IGFzeW5jIHNyYz0iLy93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RtLmpzP2lkPUdUTS1SQktLJmw9X2d0bSI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogZnVuY3Rpb24gb25WaW1lb0RvbVJlYWR5KGUpIHsKICAgCiAoZnVuY3Rpb24oKSB7CiBpZiAodHlwZW9mIHZpbWVvICE9PSAndW5kZWZpbmVkJyAmJiB2aW1lby5jdXJfdXNlcikgewogdmltZW8uY29uZmlnLmFwaSA9IHt9OwogdmltZW8uY29uZmlnLmFwaS51cmwgPSAnYXBpLnZpbWVvLmNvbSc7CiB2aW1lby5jb25maWcuYXBpLmp3dCA9ICAnZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKSVV6STFOaUo5LmV5SjBJam94T1RRNU16TTJPVEVzSW1WNGNDSTZNVFE1TURjek5EZzJPWDAucXJxVmdyQWFRc2VXVWEwRzRJNXY0aHl5b0tGWm9XZy04QzVZQ051cjdCSSc7CiB2aW1lby5jb25maWcuYXBpLnZlcnNpb24gPSAnMy4zJzsKIH0KIH0oKSk7Cgogd2luZG93LnZpbWVvID0gd2luZG93LnZpbWVvIHx8IHt9Owogd2luZG93LnZpbWVvLmV4Y2VwdGlvbl9kYXRhID0geyJ0aXRsZSI6IlNvcnJ5LCB3ZSBjb3VsZG5cdTIwMTl0IGZpbmQgdGhhdCBwYWdlIiwibWVzc2FnZSI6IiIsIm5vdGlmaWNhdGlvbiI6IjxkaXYgY2xhc3M9XCJleGNlcHRpb25fbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uIGlyaXNfbm90aWZpY2F0aW9uLS11cHNlbGxcIj5cbiA8ZGl2IGNsYXNzPVwiaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbC1pY29uXCI+XG4gPHNwYW4gY2xhc3M9XCJpcmlzX2ljIGlzLS0xNlwiPjxzdmcgeG1sbnM9XCJodHRwOlwvXC93d3cudzMub3JnXC8yMDAwXC9zdmdcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+PHBhdGggZD1cIk04IDE2YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04LTggMy41ODItOCA4IDMuNTgyIDggOCA4ek03IDRoMnYySDdWNHptMCAzaDJ2NUg3Vjd6XCJcLz48XC9zdmc+PFwvc3Bhbj5cbiA8XC9kaXY+XG5cbiA8ZGl2IGNsYXNzPVwiaXJpc19ub3RpZmljYXRpb24taGVhZGVyXCI+XG4gPHN0cm9uZz5SZWFzb25zIHlvdSBtaWdodCBiZSBzZWVpbmcgdGhpcyBwYWdlPFwvc3Ryb25nPlxuIDxcL2Rpdj5cblxuIDx1bCBjbGFzcz1cImlyaXNfbm90aWZpY2F0aW9uLWxpc3RcIj5cbiAgPGxpPkl0IGV4aXN0cywgYnV0IHlvdSBkb25cdTIwMTl0IGhhdmUgcGVybWlzc2lvbiB0byBzZWUgaXQsIG9yIHlvdSBuZWVkIHRvIDxhIG9uY2xpY2s9XCJ2aW1lby5TZXNzaW9uLmNyZWF0ZSgpXCI+bG9nIGluPFwvYT4uPFwvbGk+XG4gIDxsaT5Ob3RoaW5nIGhhcyBldmVyIGV4aXN0ZWQgaGVyZS4gU3Bvb2t5LjxcL2xpPlxuIDxsaT5Tb21ldGhpbmcgb25jZSBsaXZlZCBoZXJlLCBidXQgaGFzIGJlZW4gZGVsZXRlZC48XC9saT5cbiA8XC91bD5cbjxcL2Rpdj5cbiIsInNlYXJjaCI6dHJ1ZSwidmlkZW9zIjpbeyJzZXR0aW5ncyI6eyJ0aXRsZSI6eyJ0ZXh0IjoiRGlzY292ZXIgdmlkZW9zIGZyb20gdGhlIHdvcmxkXHUyMDE5cyBiZXN0IGNyZWF0b3JzIiwic2hvcnRfdGV4dCI6IkRpc2NvdmVyIGFtYXppbmcgdmlkZW9zIn0sInZpZGVvcyI6W3siY2xpcF9pZCI6MjEwMjExODAwLCJpc19zdGFmZnBpY2siOnRydWUsImlzX2ZlYXR1cmVkIjpmYWxzZSwidm9kX2lkIjpudWxsLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1OTkzMzIzXzM5MHgyMjAuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1OTkzMzIzXzc4MHg0MzkuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1OTkzMzIzXzE1NjB4ODc4LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTk5MzMyM18zMTIweDE3NTYuanBnIiwiYWx0IjoiTU9USEVSIC0gbW90aGVyIn0sInVwbG9hZGVkX29uIjoiMTQgaG91cnMgYWdvIiwiZHVyYXRpb24iOnsicmF3IjoxODYsImZvcm1hdHRlZCI6IjAzOjA2In0sInF1aWNrc3RhdHMiOnsidG90YWxfY29tbWVudHMiOnsicmF3IjoxNCwiZm9ybWF0dGVkIjoiMTQifSwidG90YWxfbGlrZXMiOnsicmF3IjoxNTgsImZvcm1hdHRlZCI6IjE1OCJ9LCJ0b3RhbF9wbGF5cyI6eyJyYXciOjAsImZvcm1hdHRlZCI6IjAifX0sInRpdGxlIjoiTU9USEVSIiwidXJsIjoiXC8yMTAyMTE4MDAiLCJ1c2VyIjp7ImlkIjoyMjY1MjE5LCJuYW1lIjoiTW9yZ2FuIEpvdXF1YW5kIiwidXJsIjoiXC9tb3JnYW5qb3VxdWFuZCIsImFjY291bnRfdHlwZSI6InBsdXMiLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTY0Mzg1NzJfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTY0Mzg1NzJfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTY0Mzg1NzJfNjR4NjQuanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTY0Mzg1NzJfMTI4eDEyOC5qcGcifX0sImF1dG9wbGF5IjpmYWxzZSwic2Vla3RpbWUiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7ImNsaXBfaWQiOjIwNzc2MzI1MywiaXNfc3RhZmZwaWNrIjp0cnVlLCJpc19mZWF0dXJlZCI6ZmFsc2UsInZvZF9pZCI6bnVsbCwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyMjk0MDQ4N18zOTB4MjIwLmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyMjk0MDQ4N183ODB4NDM5LmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyMjk0MDQ4N18xNTYweDg3OC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjI5NDA0ODdfMzEyMHgxNzU2LmpwZyIsImFsdCI6IlRoZSBCaXJ0aCBPZiBBIER1Z291dCBDYW5vZSBieSBOb3J0aG1lbiAtIHdvb2QgY2FydmluZyJ9LCJ1cGxvYWRlZF9vbiI6IjIgd2Vla3MgYWdvIiwiZHVyYXRpb24iOnsicmF3IjoxMTI0LCJmb3JtYXR0ZWQiOiIxODo0NCJ9LCJxdWlja3N0YXRzIjp7InRvdGFsX2NvbW1lbnRzIjp7InJhdyI6MTQsImZvcm1hdHRlZCI6IjE0In0sInRvdGFsX2xpa2VzIjp7InJhdyI6MjA0LCJmb3JtYXR0ZWQiOiIyMDQifSwidG90YWxfcGxheXMiOnsicmF3IjozNTg2LCJmb3JtYXR0ZWQiOiIzNTg2In19LCJ0aXRsZSI6IlRoZSBCaXJ0aCBPZiBBIER1Z291dCBDYW5vZSBieSBOb3J0aG1lbiIsInVybCI6IlwvMjA3NzYzMjUzIiwidXNlciI6eyJpZCI6MTA1NjU2MDUsIm5hbWUiOiJOb3J0aG1lbiIsInVybCI6Ilwvbm9ydGhtZW4iLCJhY2NvdW50X3R5cGUiOiJwcm8iLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTc3MjA1ODhfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTc3MjA1ODhfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTc3MjA1ODhfNjR4NjQuanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTc3MjA1ODhfMTI4eDEyOC5qcGcifX0sImF1dG9wbGF5IjpmYWxzZSwic2Vla3RpbWUiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7ImNsaXBfaWQiOjIwNDc3NjYzNiwiaXNfc3RhZmZwaWNrIjp0cnVlLCJpc19mZWF0dXJlZCI6ZmFsc2UsInZvZF9pZCI6bnVsbCwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYxOTM2ODk2M18zOTB4MjIwLmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYxOTM2ODk2M183ODB4NDM5LmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYxOTM2ODk2M18xNTYweDg3OC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MTkzNjg5NjNfMzEyMHgxNzU2LmpwZyIsImFsdCI6Ik5hY2h0aGV4ZW4gLSBOaWdodCBXaXRjaGVzIn0sInVwbG9hZGVkX29uIjoiMSBtb250aCBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjQ5MiwiZm9ybWF0dGVkIjoiMDg6MTIifSwicXVpY2tzdGF0cyI6eyJ0b3RhbF9jb21tZW50cyI6eyJyYXciOjExLCJmb3JtYXR0ZWQiOiIxMSJ9LCJ0b3RhbF9saWtlcyI6eyJyYXciOjIyMCwiZm9ybWF0dGVkIjoiMjIwIn0sInRvdGFsX3BsYXlzIjp7InJhdyI6NjgwMywiZm9ybWF0dGVkIjoiNjgwMyJ9fSwidGl0bGUiOiJOYWNodGhleGVuIiwidXJsIjoiXC8yMDQ3NzY2MzYiLCJ1c2VyIjp7ImlkIjozMTk0MzI0LCJuYW1lIjoiVGhlIEFuaW1hdGlvbiBXb3Jrc2hvcCIsInVybCI6IlwvdGhlYW5pbWF0aW9ud29ya3Nob3AiLCJhY2NvdW50X3R5cGUiOiJwbHVzIiwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE2NjUzNTIzXzE2eDE2LmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE2NjUzNTIzXzMyeDMyLmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE2NjUzNTIzXzY0eDY0LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE2NjUzNTIzXzEyOHgxMjguanBnIn19LCJhdXRvcGxheSI6ZmFsc2UsInNlZWt0aW1lIjpmYWxzZSwid2F0Y2hfbGF0ZXIiOmZhbHNlLCJpc19zcGF0aWFsIjpmYWxzZX0seyJjbGlwX2lkIjoxNzE3NDYzODEsImlzX3N0YWZmcGljayI6dHJ1ZSwiaXNfZmVhdHVyZWQiOmZhbHNlLCJ2b2RfaWQiOm51bGwsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC81NzcyOTIyMDFfMzkweDIyMC5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC81NzcyOTIyMDFfNzgweDQzOS5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC81NzcyOTIyMDFfMTU2MHg4NzguanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNTc3MjkyMjAxXzMxMjB4MTc1Ni5qcGciLCJhbHQiOiJCYXlhIC0gR2F0ZSAyMTIgXC8gR2ltbWUgVGhhdCBEaXZlIC0gaXNhd2pvaG5maXJzdCJ9LCJ1cGxvYWRlZF9vbiI6IjkgbW9udGhzIGFnbyIsImR1cmF0aW9uIjp7InJhdyI6MzYxLCJmb3JtYXR0ZWQiOiIwNjowMSJ9LCJxdWlja3N0YXRzIjp7InRvdGFsX2NvbW1lbnRzIjp7InJhdyI6MTksImZvcm1hdHRlZCI6IjE5In0sInRvdGFsX2xpa2VzIjp7InJhdyI6NTMyLCJmb3JtYXR0ZWQiOiI1MzIifSwidG90YWxfcGxheXMiOnsicmF3Ijo2MjE5LCJmb3JtYXR0ZWQiOiI2MjE5In19LCJ0aXRsZSI6IkJheWEgLSBHYXRlIDIxMiBcLyBHaW1tZSBUaGF0IERpdmUiLCJ1cmwiOiJcLzE3MTc0NjM4MSIsInVzZXIiOnsiaWQiOjMzMzg3MDcsIm5hbWUiOiJKb2huIENocmlzdGlhbiBGZXJuZXIgQXBhbG5lcyIsInVybCI6IlwvaXNhd2pvaG5maXJzdCIsImFjY291bnRfdHlwZSI6InBsdXMiLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvNzc5MDU0OV8xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC83NzkwNTQ5XzMyeDMyLmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzc3OTA1NDlfNjR4NjQuanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvNzc5MDU0OV8xMjh4MTI4LmpwZyJ9fSwiYXV0b3BsYXkiOmZhbHNlLCJzZWVrdGltZSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9XX19LHsic2V0dGluZ3MiOnsidGl0bGUiOnsidGV4dCI6IlB1cmNoYXNlIGhpZ2gtcXVhbGl0eSBmaWxtcyBhbmQgc2VyaWVzIiwic2hvcnRfdGV4dCI6IlB1cmNoYXNlIGZpbG1zIGFuZCBzZXJpZXMifSwidmlkZW9zIjpbeyJ2b2RfaWQiOjEwMzcwMSwidHJhaWxlcl9pZCI6MTc2OTU0MzcyLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDY2Nzc4XzM5MHgyMTkuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDY2Nzc4Xzc4MHg0MzkuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDY2Nzc4XzE1NjB4ODc4LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTQ2Njc3OF8zMTIweDE3NTYuanBnIiwiYWx0IjoiQ29tZSBEb3duIE1vbGx5IC0gdHJpYmVjYSBmaWxtIGZlc3RpdmFsIn0sInVwbG9hZGVkX29uIjoiNCBkYXlzIGFnbyIsImR1cmF0aW9uIjp7InJhdyI6NDgzNywiZm9ybWF0dGVkIjoiMDE6MjA6MzcifSwidGl0bGUiOiJDb21lIERvd24gTW9sbHkiLCJ1cmwiOiJcL29uZGVtYW5kXC9jb21lZG93bm1vbGx5IiwidXNlciI6eyJpZCI6MTIyOTM1MCwibmFtZSI6IkZhY3RvcnkgMjUiLCJ1cmwiOiJcL2ZhY3RvcnkyNSIsImFjY291bnRfdHlwZSI6InBybyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xODAwNV8xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xODAwNV8zMngzMi5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xODAwNV82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC8xODAwNV8xMjh4MTI4LmpwZyJ9fSwicHJpY2UiOiIkNC4yNSIsImF1dG9wbGF5IjpmYWxzZSwid2F0Y2hfbGF0ZXIiOmZhbHNlLCJpc19zcGF0aWFsIjpmYWxzZX0seyJ2b2RfaWQiOjEwMzczNCwidHJhaWxlcl9pZCI6MjA1NDIyNzA1LCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDI0MjQzXzM5MHgyMTkuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDI0MjQzXzc4MHg0MzkuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1NDI0MjQzXzE1NjB4ODc4LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTQyNDI0M18zMTIweDE3NTYuanBnIiwiYWx0IjoiQmxvb21pbiBNdWQgU2h1ZmZsZSAtIEphbWVzIFJhbnNvbmUifSwidXBsb2FkZWRfb24iOiI0IGRheXMgYWdvIiwiZHVyYXRpb24iOnsicmF3Ijo0NTEwLCJmb3JtYXR0ZWQiOiIwMToxNToxMCJ9LCJ0aXRsZSI6IkJsb29taW4gTXVkIFNodWZmbGUiLCJ1cmwiOiJcL29uZGVtYW5kXC9ibG9vbWlubXVkc2h1ZmZsZSIsInVzZXIiOnsiaWQiOjEyMjkzNTAsIm5hbWUiOiJGYWN0b3J5IDI1IiwidXJsIjoiXC9mYWN0b3J5MjUiLCJhY2NvdW50X3R5cGUiOiJwcm8iLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTgwMDVfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTgwMDVfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTgwMDVfNjR4NjQuanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTgwMDVfMTI4eDEyOC5qcGcifX0sInByaWNlIjoiJDQuMjUiLCJhdXRvcGxheSI6ZmFsc2UsIndhdGNoX2xhdGVyIjpmYWxzZSwiaXNfc3BhdGlhbCI6ZmFsc2V9LHsidm9kX2lkIjoxMDM3NDcsInRyYWlsZXJfaWQiOjIwNzY4NjE0NCwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTQzMzI5NF8zOTB4MjE5LmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTQzMzI5NF83ODB4NDM5LmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTQzMzI5NF8xNTYweDg3OC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjU0MzMyOTRfMzEyMHgxNzU2LmpwZyIsImFsdCI6IlRoZXkgTG9vayBMaWtlIFBlb3BsZSAtIHBlb3BsZSJ9LCJ1cGxvYWRlZF9vbiI6IjQgZGF5cyBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjQ3NzEsImZvcm1hdHRlZCI6IjAxOjE5OjMxIn0sInRpdGxlIjoiVGhleSBMb29rIExpa2UgUGVvcGxlIiwidXJsIjoiXC9vbmRlbWFuZFwvdGhleWxvb2tsaWtlcGVvcGxlIiwidXNlciI6eyJpZCI6NDU5NTA2MiwibmFtZSI6IkdyYXZpdGFzIFZlbnR1cmVzIiwidXJsIjoiXC9ncmF2aXRhc3ZlbnR1cmVzIiwiYWNjb3VudF90eXBlIjoiYnVzaW5lc3MiLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvNzExMzE2N18xNngxNi5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC83MTEzMTY3XzMyeDMyLmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzcxMTMxNjdfNjR4NjQuanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvNzExMzE2N18xMjh4MTI4LmpwZyJ9fSwicHJpY2UiOiIkMy45OSIsImF1dG9wbGF5IjpmYWxzZSwid2F0Y2hfbGF0ZXIiOmZhbHNlLCJpc19zcGF0aWFsIjpmYWxzZX0seyJ2b2RfaWQiOjEwMjk1MiwidHJhaWxlcl9pZCI6MjA3ODczNDM5LCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92b2RfcGFnZV90aHVtYm5haWxcLzI0ODc4XzM5MHgyMTkiLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZvZF9wYWdlX3RodW1ibmFpbFwvMjQ4NzhfNzgweDQzOSIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdm9kX3BhZ2VfdGh1bWJuYWlsXC8yNDg3OF8xNTYweDg3OCIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdm9kX3BhZ2VfdGh1bWJuYWlsXC8yNDg3OF8zMTIweDE3NTUiLCJhbHQiOiJNRU1PUlkifSwidXBsb2FkZWRfb24iOiI1IGRheXMgYWdvIiwiZHVyYXRpb24iOnsicmF3Ijo1MzY3LCJmb3JtYXR0ZWQiOiIwMToyOToyNyJ9LCJ0aXRsZSI6Ik1FTU9SWSBwcmVzZW50czogUHJvZ3JhbSBOby4gMiIsInVybCI6Ilwvb25kZW1hbmRcL3Byb2dyYW0yIiwidXNlciI6eyJpZCI6MzA0MzM1NDAsIm5hbWUiOiJNRU1PUlkiLCJ1cmwiOiJcL21lbW9yeWlzIiwiYWNjb3VudF90eXBlIjoicHJvIiwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE1NTg1NzQzXzE2eDE2LmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE1NTg1NzQzXzMyeDMyLmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE1NTg1NzQzXzY0eDY0LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE1NTg1NzQzXzEyOHgxMjguanBnIn19LCJwcmljZSI6IiQ4Ljk5IiwiYXV0b3BsYXkiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfV19fSx7InNldHRpbmdzIjp7InRpdGxlIjp7InRleHQiOiJXYXRjaCBodW1hbi1jdXJhdGVkIFN0YWZmIFBpY2tzIiwic2hvcnRfdGV4dCI6IldhdGNoIFN0YWZmIFBpY2tzIn0sInZpZGVvcyI6W3siY2xpcF9pZCI6MjA5MjU3NTY0LCJpc19zdGFmZnBpY2siOnRydWUsImlzX2ZlYXR1cmVkIjpmYWxzZSwidm9kX2lkIjpudWxsLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1Nzc4MjQ3XzM5MHgyMjAuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1Nzc4MjQ3Xzc4MHg0MzkuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1Nzc4MjQ3XzE1NjB4ODc4LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyNTc3ODI0N18zMTIweDE3NTYuanBnIiwiYWx0IjoiRWx1dml1bSAtIFJlZ2VuZXJhdGl2ZSBCZWluZyAoT2ZmaWNpYWwgVmlkZW8pIC0gRWx1dml1bSJ9LCJ1cGxvYWRlZF9vbiI6IjEgd2VlayBhZ28iLCJkdXJhdGlvbiI6eyJyYXciOjQ0MSwiZm9ybWF0dGVkIjoiMDc6MjEifSwicXVpY2tzdGF0cyI6eyJ0b3RhbF9jb21tZW50cyI6eyJyYXciOjcsImZvcm1hdHRlZCI6IjcifSwidG90YWxfbGlrZXMiOnsicmF3IjoxNDYsImZvcm1hdHRlZCI6IjE0NiJ9LCJ0b3RhbF9wbGF5cyI6eyJyYXciOjI5ODMsImZvcm1hdHRlZCI6IjI5ODMifX0sInRpdGxlIjoiRWx1dml1bSAtIFJlZ2VuZXJhdGl2ZSBCZWluZyAoT2ZmaWNpYWwgVmlkZW8pIiwidXJsIjoiXC8yMDkyNTc1NjQiLCJ1c2VyIjp7ImlkIjoxMjg4MTAwOCwibmFtZSI6IlN0YXMgU2FudGltb3YiLCJ1cmwiOiJcL3NhbnRpbW92IiwiYWNjb3VudF90eXBlIjoicGx1cyIsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC84ODQ5MTQ5XzE2eDE2LmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzg4NDkxNDlfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvODg0OTE0OV82NHg2NC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3BvcnRyYWl0XC84ODQ5MTQ5XzEyOHgxMjguanBnIn19LCJhdXRvcGxheSI6ZmFsc2UsInNlZWt0aW1lIjpmYWxzZSwid2F0Y2hfbGF0ZXIiOmZhbHNlLCJpc19zcGF0aWFsIjpmYWxzZX0seyJjbGlwX2lkIjoyMDk2OTQzMDAsImlzX3N0YWZmcGljayI6dHJ1ZSwiaXNfZmVhdHVyZWQiOmZhbHNlLCJ2b2RfaWQiOm51bGwsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjUzMDM3NjZfMzkweDIyMC5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjUzMDM3NjZfNzgweDQzOS5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjUzMDM3NjZfMTU2MHg4NzguanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI1MzAzNzY2XzMxMjB4MTc1Ni5qcGciLCJhbHQiOiJCdWxsZG96ZXIgLSBub3duZXNzIn0sInVwbG9hZGVkX29uIjoiNCBkYXlzIGFnbyIsImR1cmF0aW9uIjp7InJhdyI6MjY2LCJmb3JtYXR0ZWQiOiIwNDoyNiJ9LCJxdWlja3N0YXRzIjp7InRvdGFsX2NvbW1lbnRzIjp7InJhdyI6MzQsImZvcm1hdHRlZCI6IjM0In0sInRvdGFsX2xpa2VzIjp7InJhdyI6MjYyLCJmb3JtYXR0ZWQiOiIyNjIifSwidG90YWxfcGxheXMiOnsicmF3Ijo1OTk3LCJmb3JtYXR0ZWQiOiI1OTk3In19LCJ0aXRsZSI6IkJ1bGxkb3plciIsInVybCI6IlwvMjA5Njk0MzAwIiwidXNlciI6eyJpZCI6MTA5OTA4MiwibmFtZSI6Ikl0c2JvbmdvYm95IiwidXJsIjoiXC9pdHNib25nb2JveSIsImFjY291bnRfdHlwZSI6InBsdXMiLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTYxODUwMTdfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTYxODUwMTdfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTYxODUwMTdfNjR4NjQuanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTYxODUwMTdfMTI4eDEyOC5qcGcifX0sImF1dG9wbGF5IjpmYWxzZSwic2Vla3RpbWUiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfSx7ImNsaXBfaWQiOjIwODQ2NDk2NiwiaXNfc3RhZmZwaWNrIjp0cnVlLCJpc19mZWF0dXJlZCI6ZmFsc2UsInZvZF9pZCI6bnVsbCwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyMzc4OTkzN18zOTB4MjIwLmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyMzc4OTkzN183ODB4NDM5LmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvdmlkZW9cLzYyMzc4OTkzN18xNTYweDg3OC5qcGciLCJzcmNfOHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjM3ODk5MzdfMzEyMHgxNzU2LmpwZyIsImFsdCI6IlRvbSBNY0NhcnRlbiJ9LCJ1cGxvYWRlZF9vbiI6IjIgd2Vla3MgYWdvIiwiZHVyYXRpb24iOnsicmF3IjoyMzgsImZvcm1hdHRlZCI6IjAzOjU4In0sInF1aWNrc3RhdHMiOnsidG90YWxfY29tbWVudHMiOnsicmF3IjozOSwiZm9ybWF0dGVkIjoiMzkifSwidG90YWxfbGlrZXMiOnsicmF3IjoyMDUxLCJmb3JtYXR0ZWQiOiIyMDUxIn0sInRvdGFsX3BsYXlzIjp7InJhdyI6MTMyMzM4LCJmb3JtYXR0ZWQiOiIxMzJLIn19LCJ0aXRsZSI6IlNwYWNlIFNleCBpcyBTZXJpb3VzIEJ1c2luZXNzIiwidXJsIjoiXC8yMDg0NjQ5NjYiLCJ1c2VyIjp7ImlkIjoyNDcxMDk0LCJuYW1lIjoiVG9tIE1jQ2FydGVuIiwidXJsIjoiXC9tY2NhcnRlbiIsImFjY291bnRfdHlwZSI6ImJhc2ljIiwidGh1bWJuYWlsIjp7InNyYyI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE3Nzg3Njg1XzE2eDE2LmpwZyIsInNyY18yeCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE3Nzg3Njg1XzMyeDMyLmpwZyIsInNyY180eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE3Nzg3Njg1XzY0eDY0LmpwZyIsInNyY184eCI6Imh0dHBzOlwvXC9pLnZpbWVvY2RuLmNvbVwvcG9ydHJhaXRcLzE3Nzg3Njg1XzEyOHgxMjguanBnIn19LCJhdXRvcGxheSI6ZmFsc2UsInNlZWt0aW1lIjpmYWxzZSwid2F0Y2hfbGF0ZXIiOmZhbHNlLCJpc19zcGF0aWFsIjpmYWxzZX0seyJjbGlwX2lkIjoyMDc1MzUzMDIsImlzX3N0YWZmcGljayI6dHJ1ZSwiaXNfZmVhdHVyZWQiOmZhbHNlLCJ2b2RfaWQiOm51bGwsInRodW1ibmFpbCI6eyJzcmMiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjQ0NzY2NjJfMzkweDIyMC5qcGciLCJzcmNfMngiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjQ0NzY2NjJfNzgweDQzOS5qcGciLCJzcmNfNHgiOiJodHRwczpcL1wvaS52aW1lb2Nkbi5jb21cL3ZpZGVvXC82MjQ0NzY2NjJfMTU2MHg4NzguanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC92aWRlb1wvNjI0NDc2NjYyXzMxMjB4MTc1Ni5qcGciLCJhbHQiOiJCeSBUaGUgTmFtZSBvZiBCb3N0b24gLSBhbmltYXRpb24ifSwidXBsb2FkZWRfb24iOiIyIHdlZWtzIGFnbyIsImR1cmF0aW9uIjp7InJhdyI6MTQ0LCJmb3JtYXR0ZWQiOiIwMjoyNCJ9LCJxdWlja3N0YXRzIjp7InRvdGFsX2NvbW1lbnRzIjp7InJhdyI6MTMsImZvcm1hdHRlZCI6IjEzIn0sInRvdGFsX2xpa2VzIjp7InJhdyI6NTc3LCJmb3JtYXR0ZWQiOiI1NzcifSwidG90YWxfcGxheXMiOnsicmF3IjoxMTM5OTAsImZvcm1hdHRlZCI6IjExNEsifX0sInRpdGxlIjoiQnkgVGhlIE5hbWUgb2YgQm9zdG9uIiwidXJsIjoiXC8yMDc1MzUzMDIiLCJ1c2VyIjp7ImlkIjo5MzA3OTIzLCJuYW1lIjoiR3JhbnQgS29sdG9uIiwidXJsIjoiXC9ncmFudGtvbHRvbiIsImFjY291bnRfdHlwZSI6InBsdXMiLCJ0aHVtYm5haWwiOnsic3JjIjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTAxNTE3MTJfMTZ4MTYuanBnIiwic3JjXzJ4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTAxNTE3MTJfMzJ4MzIuanBnIiwic3JjXzR4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTAxNTE3MTJfNjR4NjQuanBnIiwic3JjXzh4IjoiaHR0cHM6XC9cL2kudmltZW9jZG4uY29tXC9wb3J0cmFpdFwvMTAxNTE3MTJfMTI4eDEyOC5qcGcifX0sImF1dG9wbGF5IjpmYWxzZSwic2Vla3RpbWUiOmZhbHNlLCJ3YXRjaF9sYXRlciI6ZmFsc2UsImlzX3NwYXRpYWwiOmZhbHNlfV19fV0sImFkX2NvbmZpZyI6eyJuZXR3b3JrX2lkIjoiNTQ1NDk1NDQiLCJ1bml0X25hbWUiOiJlcnJvcnBhZ2UiLCJzaXplcyI6WzMwMCwyNTBdfSwid2F0Y2hfbGF0ZXJfY2xpcF9pZHMiOltdfTsKCiBuZXcgd2luZG93LkV4Y2VwdGlvbigpOwogIAogCiAgfQoKICAkKGRvY3VtZW50KS5yZWFkeShvblZpbWVvRG9tUmVhZHkpOwogIDwvc2NyaXB0PgoKCiA8L2JvZHk+CjwvaHRtbD4K
126
- http_version:
127
- recorded_at: Mon, 27 Mar 2017 21:01:09 GMT
126
+ PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICAgIDxoZWFkPgogICAgICAgIAo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CjxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE5ODg0MDI4OTYzIj4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Ii8vcGxheWVyLnZpbWVvLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9pLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iLy9mLnZpbWVvY2RuLmNvbSI+CjxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvc2VhcmNoL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iVmltZW8iPgo8bGluayByZWw9ImxvZ28iIHR5cGU9ImltYWdlL3N2ZyIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9sb2dvLnN2ZyI+CgoKICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTUuMCx1c2VyLXNjYWxhYmxlPXllcyI+CiAgICAKCiAgICAgICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlNvcnJ5LCB3ZSBjb3VsZG4mcnNxdW87dCBmaW5kIHRoYXQgcGFnZSI+CiAgICAgICAgPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4Ij4KCgoKCiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiIGhyZWY9Imh0dHBzOi8vaS52aW1lb2Nkbi5jb20vZmF2aWNvbi9tYWluLXRvdWNoXzE4MCI+Cgo8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdmcvbGVnYWN5X3ZpZXdfc3VwcG9ydC9pcmlzX2ljb25fdl82NC5zdmc/ZTEwMTNkZWI2ZTg0NDcwYzc1ZDA3NWY4NmRiM2NkNGQ5NGQyMTgxNiIgY29sb3I9IiMxNzI3MmUiPgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9pbWFnZXNfdjYvZmF2aWNvbi5pY28/ZTEwMTNkZWI2ZTg0NDcwYzc1ZDA3NWY4NmRiM2NkNGQ5NGQyMTgxNiIgZGF0YS1wbGF5PSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vcGxheV8zMiIgZGF0YS1wYXVzZT0iaHR0cHM6Ly9pLnZpbWVvY2RuLmNvbS9mYXZpY29uL3BhdXNlXzMyIj4KCjxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tVGlsZUltYWdlIiBjb250ZW50PSJodHRwczovL2kudmltZW9jZG4uY29tL2Zhdmljb24vbWFpbi10b3VjaF8xNDQiPgo8bWV0YSBuYW1lPSJtc2FwcGxpY2F0aW9uLVRpbGVDb2xvciIgY29udGVudD0iIzAwYWRlZiI+CiAgICAgICAgPHRpdGxlPlZpbWVVaE9oPC90aXRsZT4KICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAvLyBGaXJzdCBJbnB1dCBEZWxheSB0cmFja2luZy4gSGlnaCBwcmlvcml0eSBsb2FkaW5nIHRvIG5vdCBtaXNzIGV2ZW50CiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWVMYWJzL2ZpcnN0LWlucHV0LWRlbGF5L2Jsb2IvbWFzdGVyL2Rpc3QvZmlyc3QtaW5wdXQtZGVsYXkubWluLmpzCiAgICAgICAgICAgICFmdW5jdGlvbihuLGUpe3ZhciB0LG8saSxjPVtdLGY9e3Bhc3NpdmU6ITAsY2FwdHVyZTohMH0scj1uZXcgRGF0ZSxhPSJwb2ludGVydXAiLHU9InBvaW50ZXJjYW5jZWwiO2Z1bmN0aW9uIHAobixjKXt0fHwodD1jLG89bixpPW5ldyBEYXRlLHcoZSkscygpKX1mdW5jdGlvbiBzKCl7bz49MCYmbzxpLXImJihjLmZvckVhY2goZnVuY3Rpb24obil7bihvLHQpfSksYz1bXSl9ZnVuY3Rpb24gbCh0KXtpZih0LmNhbmNlbGFibGUpe3ZhciBvPSh0LnRpbWVTdGFtcD4xZTEyP25ldyBEYXRlOnBlcmZvcm1hbmNlLm5vdygpKS10LnRpbWVTdGFtcDsicG9pbnRlcmRvd24iPT10LnR5cGU/ZnVuY3Rpb24odCxvKXtmdW5jdGlvbiBpKCl7cCh0LG8pLHIoKX1mdW5jdGlvbiBjKCl7cigpfWZ1bmN0aW9uIHIoKXtlKGEsaSxmKSxlKHUsYyxmKX1uKGEsaSxmKSxuKHUsYyxmKX0obyx0KTpwKG8sdCl9fWZ1bmN0aW9uIHcobil7WyJjbGljayIsIm1vdXNlZG93biIsImtleWRvd24iLCJ0b3VjaHN0YXJ0IiwicG9pbnRlcmRvd24iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe24oZSxsLGYpfSl9dyhuKSxzZWxmLnBlcmZNZXRyaWNzPXNlbGYucGVyZk1ldHJpY3N8fHt9LHNlbGYucGVyZk1ldHJpY3Mub25GaXJzdElucHV0RGVsYXk9ZnVuY3Rpb24obil7Yy5wdXNoKG4pLHMoKX19KGFkZEV2ZW50TGlzdGVuZXIscmVtb3ZlRXZlbnRMaXN0ZW5lcik7CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgIC8vIENyZWF0ZSBQZXJmb3JtYW5jZU9ic2VydmVyIGZvciB0cmFja2luZyBUVEkKICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWVMYWJzL3R0aS1wb2x5ZmlsbAogICAgICAgICAgIWZ1bmN0aW9uKCl7aWYoJ1BlcmZvcm1hbmNlTG9uZ1Rhc2tUaW1pbmcnIGluIHdpbmRvdyl7dmFyIGc9d2luZG93Ll9fdHRpPXtlOltdfTsKICAgICAgICAgIGcubz1uZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihmdW5jdGlvbihsKXtnLmU9Zy5lLmNvbmNhdChsLmdldEVudHJpZXMoKSl9KTsKICAgICAgICAgIGcuby5vYnNlcnZlKHtlbnRyeVR5cGVzOlsnbG9uZ3Rhc2snXX0pfX0oKTsKICAgICAgICA8L3NjcmlwdD4KICAgICAgICA8c2NyaXB0PgogICAgICAgICAgLy8gTmV3IFJlbGljIEFnZW50CiAgICAgICAgICA7d2luZG93Lk5SRVVNfHwoTlJFVU09e30pO05SRVVNLmluaXQ9e2Rpc3RyaWJ1dGVkX3RyYWNpbmc6e2VuYWJsZWQ6dHJ1ZX0scHJpdmFjeTp7Y29va2llc19lbmFibGVkOnRydWV9fTsKICAgICAgICAgIHdpbmRvdy5OUkVVTXx8KE5SRVVNPXt9KSxfX25yX3JlcXVpcmU9ZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIobil7aWYoIWVbbl0pe3ZhciBvPWVbbl09e2V4cG9ydHM6e319O3Rbbl1bMF0uY2FsbChvLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG89dFtuXVsxXVtlXTtyZXR1cm4gcihvfHxlKX0sbyxvLmV4cG9ydHMpfXJldHVybiBlW25dLmV4cG9ydHN9aWYoImZ1bmN0aW9uIj09dHlwZW9mIF9fbnJfcmVxdWlyZSlyZXR1cm4gX19ucl9yZXF1aXJlO2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKXIobltvXSk7cmV0dXJuIHJ9KHsxOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXt0cnl7cy5jb25zb2xlJiZjb25zb2xlLmxvZyh0KX1jYXRjaChlKXt9fXZhciBvLGk9dCgiZWUiKSxhPXQoMjUpLHM9e307dHJ5e289bG9jYWxTdG9yYWdlLmdldEl0ZW0oIl9fbnJfZmxhZ3MiKS5zcGxpdCgiLCIpLGNvbnNvbGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLmxvZyYmKHMuY29uc29sZT0hMCxvLmluZGV4T2YoImRldiIpIT09LTEmJihzLmRldj0hMCksby5pbmRleE9mKCJucl9kZXYiKSE9PS0xJiYocy5uckRldj0hMCkpfWNhdGNoKGMpe31zLm5yRGV2JiZpLm9uKCJpbnRlcm5hbC1lcnJvciIsZnVuY3Rpb24odCl7cih0LnN0YWNrKX0pLHMuZGV2JiZpLm9uKCJmbi1lcnIiLGZ1bmN0aW9uKHQsZSxuKXtyKG4uc3RhY2spfSkscy5kZXYmJihyKCJOUiBBR0VOVCBJTiBERVZFTE9QTUVOVCBNT0RFIikscigiZmxhZ3M6ICIrYShzLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHR9KS5qb2luKCIsICIpKSl9LHt9XSwyOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbixyLHMpe3RyeXtsP2wtPTE6byhzfHxuZXcgVW5jYXVnaHRFeGNlcHRpb24odCxlLG4pLCEwKX1jYXRjaChmKXt0cnl7aSgiaWVyciIsW2YsYy5ub3coKSwhMF0pfWNhdGNoKGQpe319cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHUmJnUuYXBwbHkodGhpcyxhKGFyZ3VtZW50cykpfWZ1bmN0aW9uIFVuY2F1Z2h0RXhjZXB0aW9uKHQsZSxuKXt0aGlzLm1lc3NhZ2U9dHx8IlVuY2F1Z2h0IGVycm9yIHdpdGggbm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiIsdGhpcy5zb3VyY2VVUkw9ZSx0aGlzLmxpbmU9bn1mdW5jdGlvbiBvKHQsZSl7dmFyIG49ZT9udWxsOmMubm93KCk7aSgiZXJyIixbdCxuXSl9dmFyIGk9dCgiaGFuZGxlIiksYT10KDI2KSxzPXQoImVlIiksYz10KCJsb2FkZXIiKSxmPXQoImdvcyIpLHU9d2luZG93Lm9uZXJyb3IsZD0hMSxwPSJuckBzZWVuRXJyb3IiLGw9MDtjLmZlYXR1cmVzLmVycj0hMCx0KDEpLHdpbmRvdy5vbmVycm9yPXI7dHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaChoKXsic3RhY2siaW4gaCYmKHQoMTMpLHQoMTIpLCJhZGRFdmVudExpc3RlbmVyImluIHdpbmRvdyYmdCg2KSxjLnhocldyYXBwYWJsZSYmdCgxNCksZD0hMCl9cy5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXtkJiYobCs9MSl9KSxzLm9uKCJmbi1lcnIiLGZ1bmN0aW9uKHQsZSxuKXtkJiYhbltwXSYmKGYobixwLGZ1bmN0aW9uKCl7cmV0dXJuITB9KSx0aGlzLnRocm93bj0hMCxvKG4pKX0pLHMub24oImZuLWVuZCIsZnVuY3Rpb24oKXtkJiYhdGhpcy50aHJvd24mJmw+MCYmKGwtPTEpfSkscy5vbigiaW50ZXJuYWwtZXJyb3IiLGZ1bmN0aW9uKHQpe2koImllcnIiLFt0LGMubm93KCksITBdKX0pfSx7fV0sMzpbZnVuY3Rpb24odCxlLG4pe3QoImxvYWRlciIpLmZlYXR1cmVzLmlucz0hMH0se31dLDQ6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7TCsrLEM9Zy5oYXNoLHRoaXNbdV09eS5ub3coKX1mdW5jdGlvbiBvKCl7TC0tLGcuaGFzaCE9PUMmJmkoMCwhMCk7dmFyIHQ9eS5ub3coKTt0aGlzW2hdPX5+dGhpc1toXSt0LXRoaXNbdV0sdGhpc1tkXT10fWZ1bmN0aW9uIGkodCxlKXtFLmVtaXQoIm5ld1VSTCIsWyIiK2csZV0pfWZ1bmN0aW9uIGEodCxlKXt0Lm9uKGUsZnVuY3Rpb24oKXt0aGlzW2VdPXkubm93KCl9KX12YXIgcz0iLXN0YXJ0IixjPSItZW5kIixmPSItYm9keSIsdT0iZm4iK3MsZD0iZm4iK2MscD0iY2IiK3MsbD0iY2IiK2MsaD0ianNUaW1lIixtPSJmZXRjaCIsdj0iYWRkRXZlbnRMaXN0ZW5lciIsdz13aW5kb3csZz13LmxvY2F0aW9uLHk9dCgibG9hZGVyIik7aWYod1t2XSYmeS54aHJXcmFwcGFibGUpe3ZhciB4PXQoMTApLGI9dCgxMSksRT10KDgpLE89dCg2KSxSPXQoMTMpLFA9dCg3KSxUPXQoMTQpLE49dCg5KSxNPXQoImVlIiksUz1NLmdldCgidHJhY2VyIik7dCgxNikseS5mZWF0dXJlcy5zcGE9ITA7dmFyIEMsTD0wO00ub24odSxyKSxNLm9uKHAsciksTS5vbihkLG8pLE0ub24obCxvKSxNLmJ1ZmZlcihbdSxkLCJ4aHItZG9uZSIsInhoci1yZXNvbHZlZCJdKSxPLmJ1ZmZlcihbdV0pLFIuYnVmZmVyKFsic2V0VGltZW91dCIrYywiY2xlYXJUaW1lb3V0IitzLHVdKSxULmJ1ZmZlcihbdSwibmV3LXhociIsInNlbmQteGhyIitzXSksUC5idWZmZXIoW20rcyxtKyItZG9uZSIsbStmK3MsbStmK2NdKSxFLmJ1ZmZlcihbIm5ld1VSTCJdKSx4LmJ1ZmZlcihbdV0pLGIuYnVmZmVyKFsicHJvcGFnYXRlIixwLGwsImV4ZWN1dG9yLWVyciIsInJlc29sdmUiK3NdKSxTLmJ1ZmZlcihbdSwibm8tIit1XSksTi5idWZmZXIoWyJuZXctanNvbnAiLCJjYi1zdGFydCIsImpzb25wLWVycm9yIiwianNvbnAtZW5kIl0pLGEoVCwic2VuZC14aHIiK3MpLGEoTSwieGhyLXJlc29sdmVkIiksYShNLCJ4aHItZG9uZSIpLGEoUCxtK3MpLGEoUCxtKyItZG9uZSIpLGEoTiwibmV3LWpzb25wIiksYShOLCJqc29ucC1lbmQiKSxhKE4sImNiLXN0YXJ0IiksRS5vbigicHVzaFN0YXRlLWVuZCIsaSksRS5vbigicmVwbGFjZVN0YXRlLWVuZCIsaSksd1t2XSgiaGFzaGNoYW5nZSIsaSwhMCksd1t2XSgibG9hZCIsaSwhMCksd1t2XSgicG9wc3RhdGUiLGZ1bmN0aW9uKCl7aSgwLEw+MSl9LCEwKX19LHt9XSw1OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXt9aWYod2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nJiZ3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSl7dmFyIG89dCgiZWUiKSxpPXQoImhhbmRsZSIpLGE9dCgxMykscz10KDEyKSxjPSJsZWFyUmVzb3VyY2VUaW1pbmdzIixmPSJhZGRFdmVudExpc3RlbmVyIix1PSJyZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGwiLGQ9ImJzdFJlc291cmNlIixwPSJyZXNvdXJjZSIsbD0iLXN0YXJ0IixoPSItZW5kIixtPSJmbiIrbCx2PSJmbiIraCx3PSJic3RUaW1lciIsZz0icHVzaFN0YXRlIix5PXQoImxvYWRlciIpO3kuZmVhdHVyZXMuc3RuPSEwLHQoOCksImFkZEV2ZW50TGlzdGVuZXIiaW4gd2luZG93JiZ0KDYpO3ZhciB4PU5SRVVNLm8uRVY7by5vbihtLGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXTtuIGluc3RhbmNlb2YgeCYmKHRoaXMuYnN0U3RhcnQ9eS5ub3coKSl9KSxvLm9uKHYsZnVuY3Rpb24odCxlKXt2YXIgbj10WzBdO24gaW5zdGFuY2VvZiB4JiZpKCJic3QiLFtuLGUsdGhpcy5ic3RTdGFydCx5Lm5vdygpXSl9KSxhLm9uKG0sZnVuY3Rpb24odCxlLG4pe3RoaXMuYnN0U3RhcnQ9eS5ub3coKSx0aGlzLmJzdFR5cGU9bn0pLGEub24odixmdW5jdGlvbih0LGUpe2kodyxbZSx0aGlzLmJzdFN0YXJ0LHkubm93KCksdGhpcy5ic3RUeXBlXSl9KSxzLm9uKG0sZnVuY3Rpb24oKXt0aGlzLmJzdFN0YXJ0PXkubm93KCl9KSxzLm9uKHYsZnVuY3Rpb24odCxlKXtpKHcsW2UsdGhpcy5ic3RTdGFydCx5Lm5vdygpLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXSl9KSxvLm9uKGcrbCxmdW5jdGlvbih0KXt0aGlzLnRpbWU9eS5ub3coKSx0aGlzLnN0YXJ0UGF0aD1sb2NhdGlvbi5wYXRobmFtZStsb2NhdGlvbi5oYXNofSksby5vbihnK2gsZnVuY3Rpb24odCl7aSgiYnN0SGlzdCIsW2xvY2F0aW9uLnBhdGhuYW1lK2xvY2F0aW9uLmhhc2gsdGhpcy5zdGFydFBhdGgsdGhpcy50aW1lXSl9KSxmIGluIHdpbmRvdy5wZXJmb3JtYW5jZSYmKHdpbmRvdy5wZXJmb3JtYW5jZVsiYyIrY10/d2luZG93LnBlcmZvcm1hbmNlW2ZdKHUsZnVuY3Rpb24odCl7aShkLFt3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZShwKV0pLHdpbmRvdy5wZXJmb3JtYW5jZVsiYyIrY10oKX0sITEpOndpbmRvdy5wZXJmb3JtYW5jZVtmXSgid2Via2l0Iit1LGZ1bmN0aW9uKHQpe2koZCxbd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUocCldKSx3aW5kb3cucGVyZm9ybWFuY2VbIndlYmtpdEMiK2NdKCl9LCExKSksZG9jdW1lbnRbZl0oInNjcm9sbCIscix7cGFzc2l2ZTohMH0pLGRvY3VtZW50W2ZdKCJrZXlwcmVzcyIsciwhMSksZG9jdW1lbnRbZl0oImNsaWNrIixyLCExKX19LHt9XSw2OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXtmb3IodmFyIGU9dDtlJiYhZS5oYXNPd25Qcm9wZXJ0eSh1KTspZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7ZSYmbyhlKX1mdW5jdGlvbiBvKHQpe3MuaW5QbGFjZSh0LFt1LGRdLCItIixpKX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuIHRbMV19dmFyIGE9dCgiZWUiKS5nZXQoImV2ZW50cyIpLHM9dCgid3JhcC1mdW5jdGlvbiIpKGEsITApLGM9dCgiZ29zIiksZj1YTUxIdHRwUmVxdWVzdCx1PSJhZGRFdmVudExpc3RlbmVyIixkPSJyZW1vdmVFdmVudExpc3RlbmVyIjtlLmV4cG9ydHM9YSwiZ2V0UHJvdG90eXBlT2YiaW4gT2JqZWN0PyhyKGRvY3VtZW50KSxyKHdpbmRvdykscihmLnByb3RvdHlwZSkpOmYucHJvdG90eXBlLmhhc093blByb3BlcnR5KHUpJiYobyh3aW5kb3cpLG8oZi5wcm90b3R5cGUpKSxhLm9uKHUrIi1zdGFydCIsZnVuY3Rpb24odCxlKXt2YXIgbj10WzFdLHI9YyhuLCJuckB3cmFwcGVkIixmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbi5oYW5kbGVFdmVudClyZXR1cm4gbi5oYW5kbGVFdmVudC5hcHBseShuLGFyZ3VtZW50cyl9dmFyIGU9e29iamVjdDp0LCJmdW5jdGlvbiI6bn1bdHlwZW9mIG5dO3JldHVybiBlP3MoZSwiZm4tIixudWxsLGUubmFtZXx8ImFub255bW91cyIpOm59KTt0aGlzLndyYXBwZWQ9dFsxXT1yfSksYS5vbihkKyItc3RhcnQiLGZ1bmN0aW9uKHQpe3RbMV09dGhpcy53cmFwcGVkfHx0WzFdfSl9LHt9XSw3OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbil7dmFyIHI9dFtlXTsiZnVuY3Rpb24iPT10eXBlb2YgciYmKHRbZV09ZnVuY3Rpb24oKXt2YXIgdD1pKGFyZ3VtZW50cyksZT17fTtvLmVtaXQobisiYmVmb3JlLXN0YXJ0IixbdF0sZSk7dmFyIGE7ZVttXSYmZVttXS5kdCYmKGE9ZVttXS5kdCk7dmFyIHM9ci5hcHBseSh0aGlzLHQpO3JldHVybiBvLmVtaXQobisic3RhcnQiLFt0LGFdLHMpLHMudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gby5lbWl0KG4rImVuZCIsW251bGwsdF0scyksdH0sZnVuY3Rpb24odCl7dGhyb3cgby5lbWl0KG4rImVuZCIsW3RdLHMpLHR9KX0pfXZhciBvPXQoImVlIikuZ2V0KCJmZXRjaCIpLGk9dCgyNiksYT10KDI1KTtlLmV4cG9ydHM9bzt2YXIgcz13aW5kb3csYz0iZmV0Y2gtIixmPWMrImJvZHktIix1PVsiYXJyYXlCdWZmZXIiLCJibG9iIiwianNvbiIsInRleHQiLCJmb3JtRGF0YSJdLGQ9cy5SZXF1ZXN0LHA9cy5SZXNwb25zZSxsPXMuZmV0Y2gsaD0icHJvdG90eXBlIixtPSJuckBjb250ZXh0IjtkJiZwJiZsJiYoYSh1LGZ1bmN0aW9uKHQsZSl7cihkW2hdLGUsZikscihwW2hdLGUsZil9KSxyKHMsImZldGNoIixjKSxvLm9uKGMrImVuZCIsZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO2lmKGUpe3ZhciByPWUuaGVhZGVycy5nZXQoImNvbnRlbnQtbGVuZ3RoIik7bnVsbCE9PXImJihuLnJ4U2l6ZT1yKSxvLmVtaXQoYysiZG9uZSIsW251bGwsZV0sbil9ZWxzZSBvLmVtaXQoYysiZG9uZSIsW3RdLG4pfSkpfSx7fV0sODpbZnVuY3Rpb24odCxlLG4pe3ZhciByPXQoImVlIikuZ2V0KCJoaXN0b3J5Iiksbz10KCJ3cmFwLWZ1bmN0aW9uIikocik7ZS5leHBvcnRzPXI7dmFyIGk9d2luZG93Lmhpc3RvcnkmJndpbmRvdy5oaXN0b3J5LmNvbnN0cnVjdG9yJiZ3aW5kb3cuaGlzdG9yeS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsYT13aW5kb3cuaGlzdG9yeTtpJiZpLnB1c2hTdGF0ZSYmaS5yZXBsYWNlU3RhdGUmJihhPWkpLG8uaW5QbGFjZShhLFsicHVzaFN0YXRlIiwicmVwbGFjZVN0YXRlIl0sIi0iKX0se31dLDk6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe2Z1bmN0aW9uIGUoKXtjLmVtaXQoImpzb25wLWVuZCIsW10scCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixlLCExKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixuLCExKX1mdW5jdGlvbiBuKCl7Yy5lbWl0KCJqc29ucC1lcnJvciIsW10scCksYy5lbWl0KCJqc29ucC1lbmQiLFtdLHApLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsZSwhMSksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsbiwhMSl9dmFyIHI9dCYmInN0cmluZyI9PXR5cGVvZiB0Lm5vZGVOYW1lJiYic2NyaXB0Ij09PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihyKXt2YXIgbz0iZnVuY3Rpb24iPT10eXBlb2YgdC5hZGRFdmVudExpc3RlbmVyO2lmKG8pe3ZhciBhPWkodC5zcmMpO2lmKGEpe3ZhciB1PXMoYSksZD0iZnVuY3Rpb24iPT10eXBlb2YgdS5wYXJlbnRbdS5rZXldO2lmKGQpe3ZhciBwPXt9O2YuaW5QbGFjZSh1LnBhcmVudCxbdS5rZXldLCJjYi0iLHApLHQuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZSwhMSksdC5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsbiwhMSksYy5lbWl0KCJuZXctanNvbnAiLFt0LnNyY10scCl9fX19fWZ1bmN0aW9uIG8oKXtyZXR1cm4iYWRkRXZlbnRMaXN0ZW5lciJpbiB3aW5kb3d9ZnVuY3Rpb24gaSh0KXt2YXIgZT10Lm1hdGNoKHUpO3JldHVybiBlP2VbMV06bnVsbH1mdW5jdGlvbiBhKHQsZSl7dmFyIG49dC5tYXRjaChwKSxyPW5bMV0sbz1uWzNdO3JldHVybiBvP2EobyxlW3JdKTplW3JdfWZ1bmN0aW9uIHModCl7dmFyIGU9dC5tYXRjaChkKTtyZXR1cm4gZSYmZS5sZW5ndGg+PTM/e2tleTplWzJdLHBhcmVudDphKGVbMV0sd2luZG93KX06e2tleTp0LHBhcmVudDp3aW5kb3d9fXZhciBjPXQoImVlIikuZ2V0KCJqc29ucCIpLGY9dCgid3JhcC1mdW5jdGlvbiIpKGMpO2lmKGUuZXhwb3J0cz1jLG8oKSl7dmFyIHU9L1s/Jl0oPzpjYWxsYmFja3xjYik9KFteJiNdKykvLGQ9LyguKilcLihbXi5dKykvLHA9L14oXHcrKShcLnwkKSguKikkLyxsPVsiYXBwZW5kQ2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJyZXBsYWNlQ2hpbGQiXTtOb2RlJiZOb2RlLnByb3RvdHlwZSYmTm9kZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ/Zi5pblBsYWNlKE5vZGUucHJvdG90eXBlLGwsImRvbS0iKTooZi5pblBsYWNlKEhUTUxFbGVtZW50LnByb3RvdHlwZSxsLCJkb20tIiksZi5pblBsYWNlKEhUTUxIZWFkRWxlbWVudC5wcm90b3R5cGUsbCwiZG9tLSIpLGYuaW5QbGFjZShIVE1MQm9keUVsZW1lbnQucHJvdG90eXBlLGwsImRvbS0iKSksYy5vbigiZG9tLXN0YXJ0IixmdW5jdGlvbih0KXtyKHRbMF0pfSl9fSx7fV0sMTA6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj10KCJlZSIpLmdldCgibXV0YXRpb24iKSxvPXQoIndyYXAtZnVuY3Rpb24iKShyKSxpPU5SRVVNLm8uTU87ZS5leHBvcnRzPXIsaSYmKHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgaT9uZXcgaShvKHQsImZuLSIpKTppLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sTXV0YXRpb25PYnNlcnZlci5wcm90b3R5cGU9aS5wcm90b3R5cGUpfSx7fV0sMTE6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3ZhciBlPWEuY29udGV4dCgpLG49cyh0LCJleGVjdXRvci0iLGUpLHI9bmV3IGYobik7cmV0dXJuIGEuY29udGV4dChyKS5nZXRDdHg9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sYS5lbWl0KCJuZXctcHJvbWlzZSIsW3IsZV0sZSkscn1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIGV9dmFyIGk9dCgid3JhcC1mdW5jdGlvbiIpLGE9dCgiZWUiKS5nZXQoInByb21pc2UiKSxzPWkoYSksYz10KDI1KSxmPU5SRVVNLm8uUFI7ZS5leHBvcnRzPWEsZiYmKHdpbmRvdy5Qcm9taXNlPXIsWyJhbGwiLCJyYWNlIl0uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1mW3RdO2ZbdF09ZnVuY3Rpb24obil7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZnVuY3Rpb24oKXthLmVtaXQoInByb3BhZ2F0ZSIsW251bGwsIW9dLGkpLG89b3x8IXR9fXZhciBvPSExO2MobixmdW5jdGlvbihlLG4pe1Byb21pc2UucmVzb2x2ZShuKS50aGVuKHIoImFsbCI9PT10KSxyKCExKSl9KTt2YXIgaT1lLmFwcGx5KGYsYXJndW1lbnRzKSxzPWYucmVzb2x2ZShpKTtyZXR1cm4gc319KSxbInJlc29sdmUiLCJyZWplY3QiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWZbdF07Zlt0XT1mdW5jdGlvbih0KXt2YXIgbj1lLmFwcGx5KGYsYXJndW1lbnRzKTtyZXR1cm4gdCE9PW4mJmEuZW1pdCgicHJvcGFnYXRlIixbdCwhMF0sbiksbn19KSxmLnByb3RvdHlwZVsiY2F0Y2giXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LGYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZi5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpyfX0pLGMoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZiksZnVuY3Rpb24odCxlKXt0cnl7cltlXT1mW2VdfWNhdGNoKG4pe319KSxhLm9uKCJleGVjdXRvci1zdGFydCIsZnVuY3Rpb24odCl7dFswXT1zKHRbMF0sInJlc29sdmUtIix0aGlzKSx0WzFdPXModFsxXSwicmVzb2x2ZS0iLHRoaXMpfSksYS5vbigiZXhlY3V0b3ItZXJyIixmdW5jdGlvbih0LGUsbil7dFsxXShuKX0pLHMuaW5QbGFjZShmLnByb3RvdHlwZSxbInRoZW4iXSwidGhlbi0iLG8pLGEub24oInRoZW4tc3RhcnQiLGZ1bmN0aW9uKHQsZSl7dGhpcy5wcm9taXNlPWUsdFswXT1zKHRbMF0sImNiLSIsdGhpcyksdFsxXT1zKHRbMV0sImNiLSIsdGhpcyl9KSxhLm9uKCJ0aGVuLWVuZCIsZnVuY3Rpb24odCxlLG4pe3RoaXMubmV4dFByb21pc2U9bjt2YXIgcj10aGlzLnByb21pc2U7YS5lbWl0KCJwcm9wYWdhdGUiLFtyLCEwXSxuKX0pLGEub24oImNiLWVuZCIsZnVuY3Rpb24odCxlLG4pe2EuZW1pdCgicHJvcGFnYXRlIixbbiwhMF0sdGhpcy5uZXh0UHJvbWlzZSl9KSxhLm9uKCJwcm9wYWdhdGUiLGZ1bmN0aW9uKHQsZSxuKXt0aGlzLmdldEN0eCYmIWV8fCh0aGlzLmdldEN0eD1mdW5jdGlvbigpe2lmKHQgaW5zdGFuY2VvZiBQcm9taXNlKXZhciBlPWEuY29udGV4dCh0KTtyZXR1cm4gZSYmZS5nZXRDdHg/ZS5nZXRDdHgoKTp0aGlzfSl9KSxyLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIiIrZn0pfSx7fV0sMTI6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj10KCJlZSIpLmdldCgicmFmIiksbz10KCJ3cmFwLWZ1bmN0aW9uIikociksaT0iZXF1ZXN0QW5pbWF0aW9uRnJhbWUiO2UuZXhwb3J0cz1yLG8uaW5QbGFjZSh3aW5kb3csWyJyIitpLCJtb3pSIitpLCJ3ZWJraXRSIitpLCJtc1IiK2ldLCJyYWYtIiksci5vbigicmFmLXN0YXJ0IixmdW5jdGlvbih0KXt0WzBdPW8odFswXSwiZm4tIil9KX0se31dLDEzOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbil7dFswXT1hKHRbMF0sImZuLSIsbnVsbCxuKX1mdW5jdGlvbiBvKHQsZSxuKXt0aGlzLm1ldGhvZD1uLHRoaXMudGltZXJEdXJhdGlvbj1pc05hTih0WzFdKT8wOit0WzFdLHRbMF09YSh0WzBdLCJmbi0iLHRoaXMsbil9dmFyIGk9dCgiZWUiKS5nZXQoInRpbWVyIiksYT10KCJ3cmFwLWZ1bmN0aW9uIikoaSkscz0ic2V0VGltZW91dCIsYz0ic2V0SW50ZXJ2YWwiLGY9ImNsZWFyVGltZW91dCIsdT0iLXN0YXJ0IixkPSItIjtlLmV4cG9ydHM9aSxhLmluUGxhY2Uod2luZG93LFtzLCJzZXRJbW1lZGlhdGUiXSxzK2QpLGEuaW5QbGFjZSh3aW5kb3csW2NdLGMrZCksYS5pblBsYWNlKHdpbmRvdyxbZiwiY2xlYXJJbW1lZGlhdGUiXSxmK2QpLGkub24oYyt1LHIpLGkub24ocyt1LG8pfSx7fV0sMTQ6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7ZC5pblBsYWNlKGUsWyJvbnJlYWR5c3RhdGVjaGFuZ2UiXSwiZm4tIixzKX1mdW5jdGlvbiBvKCl7dmFyIHQ9dGhpcyxlPXUuY29udGV4dCh0KTt0LnJlYWR5U3RhdGU+MyYmIWUucmVzb2x2ZWQmJihlLnJlc29sdmVkPSEwLHUuZW1pdCgieGhyLXJlc29sdmVkIixbXSx0KSksZC5pblBsYWNlKHQsZywiZm4tIixzKX1mdW5jdGlvbiBpKHQpe3kucHVzaCh0KSxoJiYoYj9iLnRoZW4oYSk6dj92KGEpOihFPS1FLE8uZGF0YT1FKSl9ZnVuY3Rpb24gYSgpe2Zvcih2YXIgdD0wO3Q8eS5sZW5ndGg7dCsrKXIoW10seVt0XSk7eS5sZW5ndGgmJih5PVtdKX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIGV9ZnVuY3Rpb24gYyh0LGUpe2Zvcih2YXIgbiBpbiB0KWVbbl09dFtuXTtyZXR1cm4gZX10KDYpO3ZhciBmPXQoImVlIiksdT1mLmdldCgieGhyIiksZD10KCJ3cmFwLWZ1bmN0aW9uIikodSkscD1OUkVVTS5vLGw9cC5YSFIsaD1wLk1PLG09cC5QUix2PXAuU0ksdz0icmVhZHlzdGF0ZWNoYW5nZSIsZz1bIm9ubG9hZCIsIm9uZXJyb3IiLCJvbmFib3J0Iiwib25sb2Fkc3RhcnQiLCJvbmxvYWRlbmQiLCJvbnByb2dyZXNzIiwib250aW1lb3V0Il0seT1bXTtlLmV4cG9ydHM9dTt2YXIgeD13aW5kb3cuWE1MSHR0cFJlcXVlc3Q9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGwodCk7dHJ5e3UuZW1pdCgibmV3LXhociIsW2VdLGUpLGUuYWRkRXZlbnRMaXN0ZW5lcih3LG8sITEpfWNhdGNoKG4pe3RyeXt1LmVtaXQoImludGVybmFsLWVycm9yIixbbl0pfWNhdGNoKHIpe319cmV0dXJuIGV9O2lmKGMobCx4KSx4LnByb3RvdHlwZT1sLnByb3RvdHlwZSxkLmluUGxhY2UoeC5wcm90b3R5cGUsWyJvcGVuIiwic2VuZCJdLCIteGhyLSIscyksdS5vbigic2VuZC14aHItc3RhcnQiLGZ1bmN0aW9uKHQsZSl7cih0LGUpLGkoZSl9KSx1Lm9uKCJvcGVuLXhoci1zdGFydCIsciksaCl7dmFyIGI9bSYmbS5yZXNvbHZlKCk7aWYoIXYmJiFtKXt2YXIgRT0xLE89ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoRSk7bmV3IGgoYSkub2JzZXJ2ZShPLHtjaGFyYWN0ZXJEYXRhOiEwfSl9fWVsc2UgZi5vbigiZm4tZW5kIixmdW5jdGlvbih0KXt0WzBdJiZ0WzBdLnR5cGU9PT13fHxhKCl9KX0se31dLDE1OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0KXtpZighaSh0KSlyZXR1cm4gbnVsbDt2YXIgZT13aW5kb3cuTlJFVU07aWYoIWUubG9hZGVyX2NvbmZpZylyZXR1cm4gbnVsbDt2YXIgbj0oZS5sb2FkZXJfY29uZmlnLmFjY291bnRJRHx8IiIpLnRvU3RyaW5nKCl8fG51bGwscj0oZS5sb2FkZXJfY29uZmlnLmFnZW50SUR8fCIiKS50b1N0cmluZygpfHxudWxsLHM9KGUubG9hZGVyX2NvbmZpZy50cnVzdEtleXx8IiIpLnRvU3RyaW5nKCl8fG51bGw7aWYoIW58fCFyKXJldHVybiBudWxsO3ZhciBjPWEuZ2VuZXJhdGVDYXRJZCgpLGY9YS5nZW5lcmF0ZUNhdElkKCksdT1EYXRlLm5vdygpLGQ9byhjLGYsdSxuLHIscyk7cmV0dXJue2hlYWRlcjpkLGd1aWQ6Yyx0cmFjZUlkOmYsdGltZXN0YW1wOnV9fWZ1bmN0aW9uIG8odCxlLG4scixvLGkpe3ZhciBhPSJidG9hImluIHdpbmRvdyYmImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5idG9hO2lmKCFhKXJldHVybiBudWxsO3ZhciBzPXt2OlswLDFdLGQ6e3R5OiJCcm93c2VyIixhYzpyLGFwOm8saWQ6dCx0cjplLHRpOm59fTtyZXR1cm4gaSYmciE9PWkmJihzLmQudGs9aSksYnRvYShKU09OLnN0cmluZ2lmeShzKSl9ZnVuY3Rpb24gaSh0KXt2YXIgZT0hMSxuPSExLHI9e307aWYoImluaXQiaW4gTlJFVU0mJiJkaXN0cmlidXRlZF90cmFjaW5nImluIE5SRVVNLmluaXQmJihyPU5SRVVNLmluaXQuZGlzdHJpYnV0ZWRfdHJhY2luZyxuPSEhci5lbmFibGVkKSxuKWlmKHQuc2FtZU9yaWdpbillPSEwO2Vsc2UgaWYoci5hbGxvd2VkX29yaWdpbnMgaW5zdGFuY2VvZiBBcnJheSlmb3IodmFyIG89MDtvPHIuYWxsb3dlZF9vcmlnaW5zLmxlbmd0aDtvKyspe3ZhciBpPXMoci5hbGxvd2VkX29yaWdpbnNbb10pO2lmKHQuaG9zdG5hbWU9PT1pLmhvc3RuYW1lJiZ0LnByb3RvY29sPT09aS5wcm90b2NvbCYmdC5wb3J0PT09aS5wb3J0KXtlPSEwO2JyZWFrfX1yZXR1cm4gbiYmZX12YXIgYT10KDIzKSxzPXQoMTcpO2UuZXhwb3J0cz17Z2VuZXJhdGVUcmFjZVBheWxvYWQ6cixzaG91bGRHZW5lcmF0ZVRyYWNlOml9fSx7fV0sMTY6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3ZhciBlPXRoaXMucGFyYW1zLG49dGhpcy5tZXRyaWNzO2lmKCF0aGlzLmVuZGVkKXt0aGlzLmVuZGVkPSEwO2Zvcih2YXIgcj0wO3I8cDtyKyspdC5yZW1vdmVFdmVudExpc3RlbmVyKGRbcl0sdGhpcy5saXN0ZW5lciwhMSk7ZS5hYm9ydGVkfHwobi5kdXJhdGlvbj1hLm5vdygpLXRoaXMuc3RhcnRUaW1lLHRoaXMubG9hZENhcHR1cmVDYWxsZWR8fDQhPT10LnJlYWR5U3RhdGU/bnVsbD09ZS5zdGF0dXMmJihlLnN0YXR1cz0wKTppKHRoaXMsdCksbi5jYlRpbWU9dGhpcy5jYlRpbWUsdS5lbWl0KCJ4aHItZG9uZSIsW3RdLHQpLHMoInhociIsW2Usbix0aGlzLnN0YXJ0VGltZV0pKX19ZnVuY3Rpb24gbyh0LGUpe3ZhciBuPWMoZSkscj10LnBhcmFtcztyLmhvc3Q9bi5ob3N0bmFtZSsiOiIrbi5wb3J0LHIucGF0aG5hbWU9bi5wYXRobmFtZSx0LnBhcnNlZE9yaWdpbj1jKGUpLHQuc2FtZU9yaWdpbj10LnBhcnNlZE9yaWdpbi5zYW1lT3JpZ2lufWZ1bmN0aW9uIGkodCxlKXt0LnBhcmFtcy5zdGF0dXM9ZS5zdGF0dXM7dmFyIG49dihlLHQubGFzdFNpemUpO2lmKG4mJih0Lm1ldHJpY3MucnhTaXplPW4pLHQuc2FtZU9yaWdpbil7dmFyIHI9ZS5nZXRSZXNwb25zZUhlYWRlcigiWC1OZXdSZWxpYy1BcHAtRGF0YSIpO3ImJih0LnBhcmFtcy5jYXQ9ci5zcGxpdCgiLCAiKS5wb3AoKSl9dC5sb2FkQ2FwdHVyZUNhbGxlZD0hMH12YXIgYT10KCJsb2FkZXIiKTtpZihhLnhocldyYXBwYWJsZSl7dmFyIHM9dCgiaGFuZGxlIiksYz10KDE3KSxmPXQoMTUpLmdlbmVyYXRlVHJhY2VQYXlsb2FkLHU9dCgiZWUiKSxkPVsibG9hZCIsImVycm9yIiwiYWJvcnQiLCJ0aW1lb3V0Il0scD1kLmxlbmd0aCxsPXQoImlkIiksaD10KDIxKSxtPXQoMjApLHY9dCgxOCksdz13aW5kb3cuWE1MSHR0cFJlcXVlc3Q7YS5mZWF0dXJlcy54aHI9ITAsdCgxNCksdCg3KSx1Lm9uKCJuZXcteGhyIixmdW5jdGlvbih0KXt2YXIgZT10aGlzO2UudG90YWxDYnM9MCxlLmNhbGxlZD0wLGUuY2JUaW1lPTAsZS5lbmQ9cixlLmVuZGVkPSExLGUueGhyR3VpZHM9e30sZS5sYXN0U2l6ZT1udWxsLGUubG9hZENhcHR1cmVDYWxsZWQ9ITEsdC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbihuKXtpKGUsdCl9LCExKSxoJiYoaD4zNHx8aDwxMCl8fHdpbmRvdy5vcGVyYXx8dC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZnVuY3Rpb24odCl7ZS5sYXN0U2l6ZT10LmxvYWRlZH0sITEpfSksdS5vbigib3Blbi14aHItc3RhcnQiLGZ1bmN0aW9uKHQpe3RoaXMucGFyYW1zPXttZXRob2Q6dFswXX0sbyh0aGlzLHRbMV0pLHRoaXMubWV0cmljcz17fX0pLHUub24oIm9wZW4teGhyLWVuZCIsZnVuY3Rpb24odCxlKXsibG9hZGVyX2NvbmZpZyJpbiBOUkVVTSYmInhwaWQiaW4gTlJFVU0ubG9hZGVyX2NvbmZpZyYmdGhpcy5zYW1lT3JpZ2luJiZlLnNldFJlcXVlc3RIZWFkZXIoIlgtTmV3UmVsaWMtSUQiLE5SRVVNLmxvYWRlcl9jb25maWcueHBpZCk7dmFyIG49Zih0aGlzLnBhcnNlZE9yaWdpbik7biYmbi5oZWFkZXImJihlLnNldFJlcXVlc3RIZWFkZXIoIm5ld3JlbGljIixuLmhlYWRlciksdGhpcy5kdD1uKX0pLHUub24oInNlbmQteGhyLXN0YXJ0IixmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMubWV0cmljcyxyPXRbMF0sbz10aGlzO2lmKG4mJnIpe3ZhciBpPW0ocik7aSYmKG4udHhTaXplPWkpfXRoaXMuc3RhcnRUaW1lPWEubm93KCksdGhpcy5saXN0ZW5lcj1mdW5jdGlvbih0KXt0cnl7ImFib3J0IiE9PXQudHlwZXx8by5sb2FkQ2FwdHVyZUNhbGxlZHx8KG8ucGFyYW1zLmFib3J0ZWQ9ITApLCgibG9hZCIhPT10LnR5cGV8fG8uY2FsbGVkPT09by50b3RhbENicyYmKG8ub25sb2FkQ2FsbGVkfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5vbmxvYWQpKSYmby5lbmQoZSl9Y2F0Y2gobil7dHJ5e3UuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLFtuXSl9Y2F0Y2gocil7fX19O2Zvcih2YXIgcz0wO3M8cDtzKyspZS5hZGRFdmVudExpc3RlbmVyKGRbc10sdGhpcy5saXN0ZW5lciwhMSl9KSx1Lm9uKCJ4aHItY2ItdGltZSIsZnVuY3Rpb24odCxlLG4pe3RoaXMuY2JUaW1lKz10LGU/dGhpcy5vbmxvYWRDYWxsZWQ9ITA6dGhpcy5jYWxsZWQrPTEsdGhpcy5jYWxsZWQhPT10aGlzLnRvdGFsQ2JzfHwhdGhpcy5vbmxvYWRDYWxsZWQmJiJmdW5jdGlvbiI9PXR5cGVvZiBuLm9ubG9hZHx8dGhpcy5lbmQobil9KSx1Lm9uKCJ4aHItbG9hZC1hZGRlZCIsZnVuY3Rpb24odCxlKXt2YXIgbj0iIitsKHQpKyEhZTt0aGlzLnhockd1aWRzJiYhdGhpcy54aHJHdWlkc1tuXSYmKHRoaXMueGhyR3VpZHNbbl09ITAsdGhpcy50b3RhbENicys9MSl9KSx1Lm9uKCJ4aHItbG9hZC1yZW1vdmVkIixmdW5jdGlvbih0LGUpe3ZhciBuPSIiK2wodCkrISFlO3RoaXMueGhyR3VpZHMmJnRoaXMueGhyR3VpZHNbbl0mJihkZWxldGUgdGhpcy54aHJHdWlkc1tuXSx0aGlzLnRvdGFsQ2JzLT0xKX0pLHUub24oImFkZEV2ZW50TGlzdGVuZXItZW5kIixmdW5jdGlvbih0LGUpe2UgaW5zdGFuY2VvZiB3JiYibG9hZCI9PT10WzBdJiZ1LmVtaXQoInhoci1sb2FkLWFkZGVkIixbdFsxXSx0WzJdXSxlKX0pLHUub24oInJlbW92ZUV2ZW50TGlzdGVuZXItZW5kIixmdW5jdGlvbih0LGUpe2UgaW5zdGFuY2VvZiB3JiYibG9hZCI9PT10WzBdJiZ1LmVtaXQoInhoci1sb2FkLXJlbW92ZWQiLFt0WzFdLHRbMl1dLGUpfSksdS5vbigiZm4tc3RhcnQiLGZ1bmN0aW9uKHQsZSxuKXtlIGluc3RhbmNlb2YgdyYmKCJvbmxvYWQiPT09biYmKHRoaXMub25sb2FkPSEwKSwoImxvYWQiPT09KHRbMF0mJnRbMF0udHlwZSl8fHRoaXMub25sb2FkKSYmKHRoaXMueGhyQ2JTdGFydD1hLm5vdygpKSl9KSx1Lm9uKCJmbi1lbmQiLGZ1bmN0aW9uKHQsZSl7dGhpcy54aHJDYlN0YXJ0JiZ1LmVtaXQoInhoci1jYi10aW1lIixbYS5ub3coKS10aGlzLnhockNiU3RhcnQsdGhpcy5vbmxvYWQsZV0sZSl9KSx1Lm9uKCJmZXRjaC1iZWZvcmUtc3RhcnQiLGZ1bmN0aW9uKHQpe3ZhciBlLG49dFsxXXx8e307InN0cmluZyI9PXR5cGVvZiB0WzBdP2U9dFswXTp0WzBdJiZ0WzBdLnVybCYmKGU9dFswXS51cmwpLGUmJih0aGlzLnBhcnNlZE9yaWdpbj1jKGUpLHRoaXMuc2FtZU9yaWdpbj10aGlzLnBhcnNlZE9yaWdpbi5zYW1lT3JpZ2luKTt2YXIgcj1mKHRoaXMucGFyc2VkT3JpZ2luKTtpZihyJiZyLmhlYWRlcil7dmFyIG89ci5oZWFkZXI7aWYoInN0cmluZyI9PXR5cGVvZiB0WzBdKXt2YXIgaT17fTtmb3IodmFyIGEgaW4gbilpW2FdPW5bYV07aS5oZWFkZXJzPW5ldyBIZWFkZXJzKG4uaGVhZGVyc3x8e30pLGkuaGVhZGVycy5zZXQoIm5ld3JlbGljIixvKSx0aGlzLmR0PXIsdC5sZW5ndGg+MT90WzFdPWk6dC5wdXNoKGkpfWVsc2UgdFswXSYmdFswXS5oZWFkZXJzJiYodFswXS5oZWFkZXJzLmFwcGVuZCgibmV3cmVsaWMiLG8pLHRoaXMuZHQ9cil9fSl9fSx7fV0sMTc6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj17fTtlLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYodCBpbiByKXJldHVybiByW3RdO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxuPXdpbmRvdy5sb2NhdGlvbixvPXt9O2UuaHJlZj10LG8ucG9ydD1lLnBvcnQ7dmFyIGk9ZS5ocmVmLnNwbGl0KCI6Ly8iKTshby5wb3J0JiZpWzFdJiYoby5wb3J0PWlbMV0uc3BsaXQoIi8iKVswXS5zcGxpdCgiQCIpLnBvcCgpLnNwbGl0KCI6IilbMV0pLG8ucG9ydCYmIjAiIT09by5wb3J0fHwoby5wb3J0PSJodHRwcyI9PT1pWzBdPyI0NDMiOiI4MCIpLG8uaG9zdG5hbWU9ZS5ob3N0bmFtZXx8bi5ob3N0bmFtZSxvLnBhdGhuYW1lPWUucGF0aG5hbWUsby5wcm90b2NvbD1pWzBdLCIvIiE9PW8ucGF0aG5hbWUuY2hhckF0KDApJiYoby5wYXRobmFtZT0iLyIrby5wYXRobmFtZSk7dmFyIGE9IWUucHJvdG9jb2x8fCI6Ij09PWUucHJvdG9jb2x8fGUucHJvdG9jb2w9PT1uLnByb3RvY29sLHM9ZS5ob3N0bmFtZT09PWRvY3VtZW50LmRvbWFpbiYmZS5wb3J0PT09bi5wb3J0O3JldHVybiBvLnNhbWVPcmlnaW49YSYmKCFlLmhvc3RuYW1lfHxzKSwiLyI9PT1vLnBhdGhuYW1lJiYoclt0XT1vKSxvfX0se31dLDE4OltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUpe3ZhciBuPXQucmVzcG9uc2VUeXBlO3JldHVybiJqc29uIj09PW4mJm51bGwhPT1lP2U6ImFycmF5YnVmZmVyIj09PW58fCJibG9iIj09PW58fCJqc29uIj09PW4/byh0LnJlc3BvbnNlKToidGV4dCI9PT1ufHwiIj09PW58fHZvaWQgMD09PW4/byh0LnJlc3BvbnNlVGV4dCk6dm9pZCAwfXZhciBvPXQoMjApO2UuZXhwb3J0cz1yfSx7fV0sMTk6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7fWZ1bmN0aW9uIG8odCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBpKHQsW2Yubm93KCldLmNvbmNhdChzKGFyZ3VtZW50cykpLGU/bnVsbDp0aGlzLG4pLGU/dm9pZCAwOnRoaXN9fXZhciBpPXQoImhhbmRsZSIpLGE9dCgyNSkscz10KDI2KSxjPXQoImVlIikuZ2V0KCJ0cmFjZXIiKSxmPXQoImxvYWRlciIpLHU9TlJFVU07InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cubmV3cmVsaWMmJihuZXdyZWxpYz11KTt2YXIgZD1bInNldFBhZ2VWaWV3TmFtZSIsInNldEN1c3RvbUF0dHJpYnV0ZSIsInNldEVycm9ySGFuZGxlciIsImZpbmlzaGVkIiwiYWRkVG9UcmFjZSIsImlubGluZUhpdCIsImFkZFJlbGVhc2UiXSxwPSJhcGktIixsPXArIml4bi0iO2EoZCxmdW5jdGlvbih0LGUpe3VbZV09byhwK2UsITAsImFwaSIpfSksdS5hZGRQYWdlQWN0aW9uPW8ocCsiYWRkUGFnZUFjdGlvbiIsITApLHUuc2V0Q3VycmVudFJvdXRlTmFtZT1vKHArInJvdXRlTmFtZSIsITApLGUuZXhwb3J0cz1uZXdyZWxpYyx1LmludGVyYWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuKG5ldyByKS5nZXQoKX07dmFyIGg9ci5wcm90b3R5cGU9e2NyZWF0ZVRyYWNlcjpmdW5jdGlvbih0LGUpe3ZhciBuPXt9LHI9dGhpcyxvPSJmdW5jdGlvbiI9PXR5cGVvZiBlO3JldHVybiBpKGwrInRyYWNlciIsW2Yubm93KCksdCxuXSxyKSxmdW5jdGlvbigpe2lmKGMuZW1pdCgobz8iIjoibm8tIikrImZuLXN0YXJ0IixbZi5ub3coKSxyLG9dLG4pLG8pdHJ5e3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1jYXRjaCh0KXt0aHJvdyBjLmVtaXQoImZuLWVyciIsW2FyZ3VtZW50cyx0aGlzLHRdLG4pLHR9ZmluYWxseXtjLmVtaXQoImZuLWVuZCIsW2Yubm93KCldLG4pfX19fTthKCJhY3Rpb25UZXh0LHNldE5hbWUsc2V0QXR0cmlidXRlLHNhdmUsaWdub3JlLG9uRW5kLGdldENvbnRleHQsZW5kLGdldCIuc3BsaXQoIiwiKSxmdW5jdGlvbih0LGUpe2hbZV09byhsK2UpfSksbmV3cmVsaWMubm90aWNlRXJyb3I9ZnVuY3Rpb24odCxlKXsic3RyaW5nIj09dHlwZW9mIHQmJih0PW5ldyBFcnJvcih0KSksaSgiZXJyIixbdCxmLm5vdygpLCExLGVdKX19LHt9XSwyMDpbZnVuY3Rpb24odCxlLG4pe2UuZXhwb3J0cz1mdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJnQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDtpZigib2JqZWN0Ij09dHlwZW9mIHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmdC5ieXRlTGVuZ3RoKXJldHVybiB0LmJ5dGVMZW5ndGg7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiZ0IGluc3RhbmNlb2YgQmxvYiYmdC5zaXplKXJldHVybiB0LnNpemU7aWYoISgidW5kZWZpbmVkIiE9dHlwZW9mIEZvcm1EYXRhJiZ0IGluc3RhbmNlb2YgRm9ybURhdGEpKXRyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkubGVuZ3RofWNhdGNoKGUpe3JldHVybn19fX0se31dLDIxOltmdW5jdGlvbih0LGUsbil7dmFyIHI9MCxvPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0ZpcmVmb3hbXC9cc10oXGQrXC5cZCspLyk7byYmKHI9K29bMV0pLGUuZXhwb3J0cz1yfSx7fV0sMjI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7dmFyIG49dC5nZXRFbnRyaWVzKCk7bi5mb3JFYWNoKGZ1bmN0aW9uKHQpeyJmaXJzdC1wYWludCI9PT10Lm5hbWU/YygidGltaW5nIixbImZwIixNYXRoLmZsb29yKHQuc3RhcnRUaW1lKV0pOiJmaXJzdC1jb250ZW50ZnVsLXBhaW50Ij09PXQubmFtZSYmYygidGltaW5nIixbImZjcCIsTWF0aC5mbG9vcih0LnN0YXJ0VGltZSldKX0pfWZ1bmN0aW9uIG8odCxlKXt2YXIgbj10LmdldEVudHJpZXMoKTtuLmxlbmd0aD4wJiZjKCJsY3AiLFtuW24ubGVuZ3RoLTFdXSl9ZnVuY3Rpb24gaSh0KXtpZih0IGluc3RhbmNlb2YgdSYmIXApe3ZhciBlLG49TWF0aC5yb3VuZCh0LnRpbWVTdGFtcCk7ZT1uPjFlMTI/RGF0ZS5ub3coKS1uOmYubm93KCktbixwPSEwLGMoInRpbWluZyIsWyJmaSIsbix7dHlwZTp0LnR5cGUsZmlkOmV9XSl9fWlmKCEoImluaXQiaW4gTlJFVU0mJiJwYWdlX3ZpZXdfdGltaW5nImluIE5SRVVNLmluaXQmJiJlbmFibGVkImluIE5SRVVNLmluaXQucGFnZV92aWV3X3RpbWluZyYmTlJFVU0uaW5pdC5wYWdlX3ZpZXdfdGltaW5nLmVuYWJsZWQ9PT0hMSkpe3ZhciBhLHMsYz10KCJoYW5kbGUiKSxmPXQoImxvYWRlciIpLHU9TlJFVU0uby5FVjtpZigiUGVyZm9ybWFuY2VPYnNlcnZlciJpbiB3aW5kb3cmJiJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuUGVyZm9ybWFuY2VPYnNlcnZlcil7YT1uZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihyKSxzPW5ldyBQZXJmb3JtYW5jZU9ic2VydmVyKG8pO3RyeXthLm9ic2VydmUoe2VudHJ5VHlwZXM6WyJwYWludCJdfSkscy5vYnNlcnZlKHtlbnRyeVR5cGVzOlsibGFyZ2VzdC1jb250ZW50ZnVsLXBhaW50Il19KX1jYXRjaChkKXt9fWlmKCJhZGRFdmVudExpc3RlbmVyImluIGRvY3VtZW50KXt2YXIgcD0hMSxsPVsiY2xpY2siLCJrZXlkb3duIiwibW91c2Vkb3duIiwicG9pbnRlcmRvd24iLCJ0b3VjaHN0YXJ0Il07bC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIodCxpLCExKX0pfX19LHt9XSwyMzpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIoKXtmdW5jdGlvbiB0KCl7cmV0dXJuIGU/MTUmZVtuKytdOjE2Kk1hdGgucmFuZG9tKCl8MH12YXIgZT1udWxsLG49MCxyPXdpbmRvdy5jcnlwdG98fHdpbmRvdy5tc0NyeXB0bztyJiZyLmdldFJhbmRvbVZhbHVlcyYmKGU9ci5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMzEpKSk7Zm9yKHZhciBvLGk9Inh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCIsYT0iIixzPTA7czxpLmxlbmd0aDtzKyspbz1pW3NdLCJ4Ij09PW8/YSs9dCgpLnRvU3RyaW5nKDE2KToieSI9PT1vPyhvPTMmdCgpfDgsYSs9by50b1N0cmluZygxNikpOmErPW87cmV0dXJuIGF9ZnVuY3Rpb24gbygpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gZT8xNSZlW24rK106MTYqTWF0aC5yYW5kb20oKXwwfXZhciBlPW51bGwsbj0wLHI9d2luZG93LmNyeXB0b3x8d2luZG93Lm1zQ3J5cHRvO3ImJnIuZ2V0UmFuZG9tVmFsdWVzJiZVaW50OEFycmF5JiYoZT1yLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgzMSkpKTtmb3IodmFyIG89W10saT0wO2k8MTY7aSsrKW8ucHVzaCh0KCkudG9TdHJpbmcoMTYpKTtyZXR1cm4gby5qb2luKCIiKX1lLmV4cG9ydHM9e2dlbmVyYXRlVXVpZDpyLGdlbmVyYXRlQ2F0SWQ6b319LHt9XSwyNDpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlKXtpZighbylyZXR1cm4hMTtpZih0IT09bylyZXR1cm4hMTtpZighZSlyZXR1cm4hMDtpZighaSlyZXR1cm4hMTtmb3IodmFyIG49aS5zcGxpdCgiLiIpLHI9ZS5zcGxpdCgiLiIpLGE9MDthPHIubGVuZ3RoO2ErKylpZihyW2FdIT09blthXSlyZXR1cm4hMTtyZXR1cm4hMH12YXIgbz1udWxsLGk9bnVsbCxhPS9WZXJzaW9uXC8oXFMrKVxzK1NhZmFyaS87aWYobmF2aWdhdG9yLnVzZXJBZ2VudCl7dmFyIHM9bmF2aWdhdG9yLnVzZXJBZ2VudCxjPXMubWF0Y2goYSk7YyYmcy5pbmRleE9mKCJDaHJvbWUiKT09PS0xJiZzLmluZGV4T2YoIkNocm9taXVtIik9PT0tMSYmKG89IlNhZmFyaSIsaT1jWzFdKX1lLmV4cG9ydHM9e2FnZW50Om8sdmVyc2lvbjppLG1hdGNoOnJ9fSx7fV0sMjU6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7dmFyIG49W10scj0iIixpPTA7Zm9yKHIgaW4gdClvLmNhbGwodCxyKSYmKG5baV09ZShyLHRbcl0pLGkrPTEpO3JldHVybiBufXZhciBvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPXJ9LHt9XSwyNjpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4pe2V8fChlPTApLCJ1bmRlZmluZWQiPT10eXBlb2YgbiYmKG49dD90Lmxlbmd0aDowKTtmb3IodmFyIHI9LTEsbz1uLWV8fDAsaT1BcnJheShvPDA/MDpvKTsrK3I8bzspaVtyXT10W2Urcl07cmV0dXJuIGl9ZS5leHBvcnRzPXJ9LHt9XSwyNzpbZnVuY3Rpb24odCxlLG4pe2UuZXhwb3J0cz17ZXhpc3RzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcubmF2aWdhdGlvblN0YXJ0fX0se31dLGVlOltmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBvKHQpe2Z1bmN0aW9uIGUodCl7cmV0dXJuIHQmJnQgaW5zdGFuY2VvZiByP3Q6dD9jKHQscyxpKTppKCl9ZnVuY3Rpb24gbihuLHIsbyxpKXtpZighcC5hYm9ydGVkfHxpKXt0JiZ0KG4scixvKTtmb3IodmFyIGE9ZShvKSxzPW0obiksYz1zLmxlbmd0aCxmPTA7ZjxjO2YrKylzW2ZdLmFwcGx5KGEscik7dmFyIGQ9dVt5W25dXTtyZXR1cm4gZCYmZC5wdXNoKFt4LG4scixhXSksYX19ZnVuY3Rpb24gbCh0LGUpe2dbdF09bSh0KS5jb25jYXQoZSl9ZnVuY3Rpb24gaCh0LGUpe3ZhciBuPWdbdF07aWYobilmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyluW3JdPT09ZSYmbi5zcGxpY2UociwxKX1mdW5jdGlvbiBtKHQpe3JldHVybiBnW3RdfHxbXX1mdW5jdGlvbiB2KHQpe3JldHVybiBkW3RdPWRbdF18fG8obil9ZnVuY3Rpb24gdyh0LGUpe2YodCxmdW5jdGlvbih0LG4pe2U9ZXx8ImZlYXR1cmUiLHlbbl09ZSxlIGluIHV8fCh1W2VdPVtdKX0pfXZhciBnPXt9LHk9e30seD17b246bCxhZGRFdmVudExpc3RlbmVyOmwscmVtb3ZlRXZlbnRMaXN0ZW5lcjpoLGVtaXQ6bixnZXQ6dixsaXN0ZW5lcnM6bSxjb250ZXh0OmUsYnVmZmVyOncsYWJvcnQ6YSxhYm9ydGVkOiExfTtyZXR1cm4geH1mdW5jdGlvbiBpKCl7cmV0dXJuIG5ldyByfWZ1bmN0aW9uIGEoKXsodS5hcGl8fHUuZmVhdHVyZSkmJihwLmFib3J0ZWQ9ITAsdT1wLmJhY2tsb2c9e30pfXZhciBzPSJuckBjb250ZXh0IixjPXQoImdvcyIpLGY9dCgyNSksdT17fSxkPXt9LHA9ZS5leHBvcnRzPW8oKTtwLmJhY2tsb2c9dX0se31dLGdvczpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4pe2lmKG8uY2FsbCh0LGUpKXJldHVybiB0W2VdO3ZhciByPW4oKTtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5rZXlzKXRyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cix3cml0YWJsZTohMCxlbnVtZXJhYmxlOiExfSkscn1jYXRjaChpKXt9cmV0dXJuIHRbZV09cixyfXZhciBvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPXJ9LHt9XSxoYW5kbGU6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSxuLHIpe28uYnVmZmVyKFt0XSxyKSxvLmVtaXQodCxlLG4pfXZhciBvPXQoImVlIikuZ2V0KCJoYW5kbGUiKTtlLmV4cG9ydHM9cixyLmVlPW99LHt9XSxpZDpbZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIXR8fCJvYmplY3QiIT09ZSYmImZ1bmN0aW9uIiE9PWU/LTE6dD09PXdpbmRvdz8wOmEodCxpLGZ1bmN0aW9uKCl7cmV0dXJuIG8rK30pfXZhciBvPTEsaT0ibnJAaWQiLGE9dCgiZ29zIik7ZS5leHBvcnRzPXJ9LHt9XSxsb2FkZXI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKCl7aWYoIUUrKyl7dmFyIHQ9Yi5pbmZvPU5SRVVNLmluZm8sZT1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXTtpZihzZXRUaW1lb3V0KHUuYWJvcnQsM2U0KSwhKHQmJnQubGljZW5zZUtleSYmdC5hcHBsaWNhdGlvbklEJiZlKSlyZXR1cm4gdS5hYm9ydCgpO2YoeSxmdW5jdGlvbihlLG4pe3RbZV18fCh0W2VdPW4pfSksYygibWFyayIsWyJvbmxvYWQiLGEoKStiLm9mZnNldF0sbnVsbCwiYXBpIik7dmFyIG49bC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLnNyYz0iaHR0cHM6Ly8iK3QuYWdlbnQsZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLGUpfX1mdW5jdGlvbiBvKCl7ImNvbXBsZXRlIj09PWwucmVhZHlTdGF0ZSYmaSgpfWZ1bmN0aW9uIGkoKXtjKCJtYXJrIixbImRvbUNvbnRlbnQiLGEoKStiLm9mZnNldF0sbnVsbCwiYXBpIil9ZnVuY3Rpb24gYSgpe3JldHVybiBPLmV4aXN0cyYmcGVyZm9ybWFuY2Uubm93P01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkpOihzPU1hdGgubWF4KChuZXcgRGF0ZSkuZ2V0VGltZSgpLHMpKS1iLm9mZnNldH12YXIgcz0obmV3IERhdGUpLmdldFRpbWUoKSxjPXQoImhhbmRsZSIpLGY9dCgyNSksdT10KCJlZSIpLGQ9dCgyNCkscD13aW5kb3csbD1wLmRvY3VtZW50LGg9ImFkZEV2ZW50TGlzdGVuZXIiLG09ImF0dGFjaEV2ZW50Iix2PXAuWE1MSHR0cFJlcXVlc3Qsdz12JiZ2LnByb3RvdHlwZTtOUkVVTS5vPXtTVDpzZXRUaW1lb3V0LFNJOnAuc2V0SW1tZWRpYXRlLENUOmNsZWFyVGltZW91dCxYSFI6dixSRVE6cC5SZXF1ZXN0LEVWOnAuRXZlbnQsUFI6cC5Qcm9taXNlLE1POnAuTXV0YXRpb25PYnNlcnZlcn07dmFyIGc9IiIrbG9jYXRpb24seT17YmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGVycm9yQmVhY29uOiJiYW0ubnItZGF0YS5uZXQiLGFnZW50OiJqcy1hZ2VudC5uZXdyZWxpYy5jb20vbnItc3BhLTExNjkubWluLmpzIn0seD12JiZ3JiZ3W2hdJiYhL0NyaU9TLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGI9ZS5leHBvcnRzPXtvZmZzZXQ6cyxub3c6YSxvcmlnaW46ZyxmZWF0dXJlczp7fSx4aHJXcmFwcGFibGU6eCx1c2VyQWdlbnQ6ZH07dCgxOSksdCgyMiksbFtoXT8obFtoXSgiRE9NQ29udGVudExvYWRlZCIsaSwhMSkscFtoXSgibG9hZCIsciwhMSkpOihsW21dKCJvbnJlYWR5c3RhdGVjaGFuZ2UiLG8pLHBbbV0oIm9ubG9hZCIscikpLGMoIm1hcmsiLFsiZmlyc3RieXRlIixzXSxudWxsLCJhcGkiKTt2YXIgRT0wLE89dCgyNyl9LHt9XSwid3JhcC1mdW5jdGlvbiI6W2Z1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQpe3JldHVybiEodCYmdCBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZ0LmFwcGx5JiYhdFthXSl9dmFyIG89dCgiZWUiKSxpPXQoMjYpLGE9Im5yQG9yaWdpbmFsIixzPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksYz0hMTtlLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSxuLG8pe2Z1bmN0aW9uIG5yV3JhcHBlcigpe3ZhciByLGEscyxjO3RyeXthPXRoaXMscj1pKGFyZ3VtZW50cykscz0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uKHIsYSk6bnx8e319Y2F0Y2goZil7cChbZiwiIixbcixhLG9dLHNdKX11KGUrInN0YXJ0IixbcixhLG9dLHMpO3RyeXtyZXR1cm4gYz10LmFwcGx5KGEscil9Y2F0Y2goZCl7dGhyb3cgdShlKyJlcnIiLFtyLGEsZF0scyksZH1maW5hbGx5e3UoZSsiZW5kIixbcixhLGNdLHMpfX1yZXR1cm4gcih0KT90OihlfHwoZT0iIiksbnJXcmFwcGVyW2FdPXQsZCh0LG5yV3JhcHBlciksbnJXcmFwcGVyKX1mdW5jdGlvbiBmKHQsZSxvLGkpe298fChvPSIiKTt2YXIgYSxzLGMsZj0iLSI9PT1vLmNoYXJBdCgwKTtmb3IoYz0wO2M8ZS5sZW5ndGg7YysrKXM9ZVtjXSxhPXRbc10scihhKXx8KHRbc109bihhLGY/cytvOm8saSxzKSl9ZnVuY3Rpb24gdShuLHIsbyl7aWYoIWN8fGUpe3ZhciBpPWM7Yz0hMDt0cnl7dC5lbWl0KG4scixvLGUpfWNhdGNoKGEpe3AoW2EsbixyLG9dKX1jPWl9fWZ1bmN0aW9uIGQodCxlKXtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5rZXlzKXRyeXt2YXIgbj1PYmplY3Qua2V5cyh0KTtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2dldDpmdW5jdGlvbigpe3JldHVybiB0W25dfSxzZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRbbl09ZSxlfX0pfSksZX1jYXRjaChyKXtwKFtyXSl9Zm9yKHZhciBvIGluIHQpcy5jYWxsKHQsbykmJihlW29dPXRbb10pO3JldHVybiBlfWZ1bmN0aW9uIHAoZSl7dHJ5e3QuZW1pdCgiaW50ZXJuYWwtZXJyb3IiLGUpfWNhdGNoKG4pe319cmV0dXJuIHR8fCh0PW8pLG4uaW5QbGFjZT1mLG4uZmxhZz1hLG59fSx7fV19LHt9LFsibG9hZGVyIiwyLDE2LDUsMyw0XSk7CiAgICAgICAgICA7TlJFVU0ubG9hZGVyX2NvbmZpZz17YWNjb3VudElEOiIzOTI4NCIsdHJ1c3RLZXk6IjM5Mjg0IixhZ2VudElEOiI3NDQ3NDY4IixsaWNlbnNlS2V5OiI2ODlkNWI0NTYyIixhcHBsaWNhdGlvbklEOiIyMDExMjI0In0KICAgICAgICAgIDtOUkVVTS5pbmZvPXtiZWFjb246ImJhbS5uci1kYXRhLm5ldCIsZXJyb3JCZWFjb246ImJhbS5uci1kYXRhLm5ldCIsbGljZW5zZUtleToiNjg5ZDViNDU2MiIsYXBwbGljYXRpb25JRDoiMjAxMTIyNCIsc2E6MX0KICAgICAgICA8L3NjcmlwdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9nbG9iYWwvaWNvbl9mb250cy5taW4uY3NzP2UxMDEzZGViNmU4NDQ3MGM3NWQwNzVmODZkYjNjZDRkOTRkMjE4MTYiPgoKICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC9leGNlcHRpb25fY29tYmluZWQubWluLmNzcz80YTU4YjNiNyI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vc3R5bGVzL2Nzc19vcHQvdG9wbmF2X2NhcnRfYnV0dG9uX2NvbWJpbmVkLm1pbi5jc3M/YTIwYTc1NjYiPgoKCgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgCiAgICAgICAgdmFyIHBsYXllckFzc2V0VXJscyA9IHsiYmFyZWJvbmVfanMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzMuMjMuMFwvanNcL2JhcmVib25lLmpzIiwianMiOiJodHRwczpcL1wvZi52aW1lb2Nkbi5jb21cL3BcLzMuMjMuMFwvanNcL3BsYXllci5qcyIsImNocm9tZWxlc3NfY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2Nzc1wvY2hyb21lbGVzcy5jc3MiLCJjaHJvbWVsZXNzX2pzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2pzXC9jaHJvbWVsZXNzLmpzIiwiY3NzIjoiaHR0cHM6XC9cL2YudmltZW9jZG4uY29tXC9wXC8zLjIzLjBcL2Nzc1wvcGxheWVyLmNzcyIsInBsYXllcl91cmwiOiJwbGF5ZXIudmltZW8uY29tIn07CgogICAgICAgIHZhciBfZXh0ZW5kID0gZnVuY3Rpb24oKXtmb3IodmFyIHI9YXJndW1lbnRzWzBdLG49MSxlPWFyZ3VtZW50cy5sZW5ndGg7ZT5uO24rKyl7dmFyIHQ9YXJndW1lbnRzW25dO2Zvcih2YXIgYSBpbiB0KXQuaGFzT3duUHJvcGVydHkoYSkmJihyW2FdPXRbYV0pfXJldHVybiByfTsKCiAgICAgICAgICAgIHdpbmRvdyA9IF9leHRlbmQod2luZG93LCB7InZpbWVvX2VzaSI6eyJjb25maWciOnsicm91dGUiOiJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcENvbnRyb2xsZXI6bWFpbiIsImNvbnRyb2xsZXIiOiJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcENvbnRyb2xsZXIiLCJhdXRvY29tcGxldGVfZW5hYmxlZCI6dHJ1ZSwib25zaXRlX3JlZmVycmVyIjpmYWxzZX19LCJhYmxpbmNvbG5fY29uZmlnIjpbXSwidmltZW8iOnsiY29uZmlnIjp7ImNhcnQiOnsiY2FydF9jb250ZW50Ijp7InN0b2NrIjp7InN0b3JlIjoic3RvY2siLCJ2ZXJzaW9uIjoxLCJxdWFudGl0aWVzIjpbXSwiaXRlbXMiOltdLCJhdHRyaWJ1dGVzIjpbXSwiY3VycmVuY3kiOiJCUkwiLCJpdGVtc19zb3J0ZWRfYnlfaW5kZXgiOltdLCJpdGVtc19jb3VudCI6MH19fX19fSk7Cjwvc2NyaXB0PgoKICAgICAgICAgICAgICAgIAogICAgPHNjcmlwdD4KICAgICAgICB2YXIgYWJsaW5jb2xuX2NvbmZpZyA9IGFibGluY29sbl9jb25maWcgfHwge307CiAgICAgICAgYWJsaW5jb2xuX2NvbmZpZy50ZXN0cyA9IHsiSlMuT21uaXNlYXJjaCI6eyJpZCI6NTI3LCJuYW1lIjoiSlMuT21uaXNlYXJjaCIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoiY3VpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOlt7ImlkIjoxNDUyLCJuYW1lIjoicGhhc2UxIiwiYnVja2V0cyI6MTAwLCJzdGF0ZSI6MSwicHVibGlzaGVkX29uIjoiMjAyMC0xMC0yMiAxMzo0Njo1MSIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNTQ1LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoidHJ1ZSIsIndlaWdodCI6MX0seyJpZCI6MjU0NiwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6ImZhbHNlIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX0seyJpZCI6MTQ1NCwibmFtZSI6InBoYXNlMiIsImJ1Y2tldHMiOjIwMCwic3RhdGUiOjEsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMTAtMjMgMDg6MTY6NTUiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjU1MSwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6InRydWUiLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NTIsIm5hbWUiOiJvbW5pc2VhcmNoX2VuYWJsZWQiLCJjaG9pY2UiOiJmYWxzZSIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119LHsiaWQiOjE0NTgsIm5hbWUiOiJwaGFzZTMiLCJidWNrZXRzIjozMDAsInN0YXRlIjoxLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTI2IDA4OjU0OjQ4IiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NTcsIm5hbWUiOiJvbW5pc2VhcmNoX2VuYWJsZWQiLCJjaG9pY2UiOiJ0cnVlIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTU4LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoiZmFsc2UiLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDYxLCJuYW1lIjoicGhhc2U0IiwiYnVja2V0cyI6NDAwLCJzdGF0ZSI6MSwicHVibGlzaGVkX29uIjoiMjAyMC0xMC0yNyAwODo0Njo1NiIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInBhcmFtZXRlcnMiOlt7ImlkIjoyNTY1LCJuYW1lIjoib21uaXNlYXJjaF9lbmFibGVkIiwiY2hvaWNlIjoidHJ1ZSIsIndlaWdodCI6MX0seyJpZCI6MjU2NiwibmFtZSI6Im9tbmlzZWFyY2hfZW5hYmxlZCIsImNob2ljZSI6ImZhbHNlIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX1dfSwiSlMuVG9wTmF2LkNyZWF0ZSI6eyJpZCI6NDUyLCJuYW1lIjoiSlMuVG9wTmF2LkNyZWF0ZSIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IjphbGwiLCJleHBlcmltZW50cyI6W3siaWQiOjEyMzUsIm5hbWUiOiIqIExvZ2dlZCBvdXQgSm9pbiBNb2RhbCIsImJ1Y2tldHMiOjEwMCwic3RhdGUiOjMsInB1Ymxpc2hlZF9vbiI6IjIwMjAtMDYtMTUgMTY6MTc6MTUiLCJwYXVzZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwic3RvcHBlZF9vbiI6IjIwMjAtMTAtMTUgMDY6NTM6MjUiLCJwYXJhbWV0ZXJzIjpbeyJpZCI6MjE1MCwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiY29udHJvbCIsIndlaWdodCI6MX0seyJpZCI6MjE1MSwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiam9pbl93aXRob3V0X2Rlc2lnbiIsIndlaWdodCI6MX0seyJpZCI6MjE1MiwibmFtZSI6InRvcF9uYXZfY3JlYXRlIiwiY2hvaWNlIjoiam9pbl93aXRoX2Rlc2lnbiIsIndlaWdodCI6MX1dLCJzZWdtZW50cyI6W119LHsiaWQiOjEzMTEsIm5hbWUiOiIqICogTG9nZ2VkIG91dCBKb2luIE1vZGFsIiwiYnVja2V0cyI6OTAwLCJzdGF0ZSI6MywicHVibGlzaGVkX29uIjoiMjAyMC0wNi0yMyAxNTowMTo1MiIsInBhdXNlZF9vbiI6IjAwMDAtMDAtMDAgMDA6MDA6MDAiLCJzdG9wcGVkX29uIjoiMjAyMC0xMC0xNSAwNjo1MzozNSIsInBhcmFtZXRlcnMiOlt7ImlkIjoyMjc1LCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyMjc2LCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJqb2luX3dpdGhvdXRfZGVzaWduIiwid2VpZ2h0IjoxfSx7ImlkIjoyMjc3LCJuYW1lIjoidG9wX25hdl9jcmVhdGUiLCJjaG9pY2UiOiJqb2luX3dpdGhfZGVzaWduIiwid2VpZ2h0IjoxfV0sInNlZ21lbnRzIjpbXX1dfSwiSlMuVXBzZWxsLlJldmlldyI6eyJpZCI6NDQ0LCJuYW1lIjoiSlMuVXBzZWxsLlJldmlldyIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOltdfSwiVG9wTmF2Lk5ld1ZpZGVvLlNjcmVlblJlY29yZEZvckFsbCI6eyJpZCI6NTQxLCJuYW1lIjoiVG9wTmF2Lk5ld1ZpZGVvLlNjcmVlblJlY29yZEZvckFsbCIsImJ1Y2tldHMiOjEwMDAsImlucHV0IjoidnVpZCIsInVybCI6IlwvIiwiZXhwZXJpbWVudHMiOlt7ImlkIjoxNDE4LCJuYW1lIjoiU2hvdyByZWNvcmRlciBsaW5rIGZvciBhbGwiLCJidWNrZXRzIjoxMDAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTA1IDE0OjMwOjQwIiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTIxIDAzOjI4OjQzIiwicGFyYW1ldGVycyI6W3siaWQiOjI0NzcsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNDc4LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDUwLCJuYW1lIjoiKiBTaG93IHJlY29yZGVyIGxpbmsgZm9yIGFsbCIsImJ1Y2tldHMiOjAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTIyIDE3OjE3OjExIiwicGF1c2VkX29uIjoiMjAyMC0xMC0yMiAxNzoxNzoyNyIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTIyIDE3OjE3OjQwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NDAsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTQxLCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NDIsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbl9hbmltYXRpb24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDUzLCJuYW1lIjoiKiAqIFNob3cgcmVjb3JkZXIgbGluayBmb3IgYWxsIiwiYnVja2V0cyI6NTAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTIyIDE3OjM2OjQxIiwicGF1c2VkX29uIjoiMjAyMC0xMC0yNiAxNTowNzoyOCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTI2IDE1OjA3OjU2IiwicGFyYW1ldGVycyI6W3siaWQiOjI1NDcsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTQ4LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NDksIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbl9hbmltYXRpb24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDYwLCJuYW1lIjoiKiAqICogU2hvdyByZWNvcmRlciBsaW5rIGZvciBhbGwiLCJidWNrZXRzIjoxMDAsInN0YXRlIjozLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTI2IDE1OjA4OjU0IiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIyMDIwLTEwLTI3IDEwOjAyOjU0IiwicGFyYW1ldGVycyI6W3siaWQiOjI1NjIsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0IjoxfSx7ImlkIjoyNTYzLCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjF9LHsiaWQiOjI1NjQsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJ2YXJpYW50X3NjcmVlbl9hbmltYXRpb24iLCJ3ZWlnaHQiOjF9XSwic2VnbWVudHMiOltdfSx7ImlkIjoxNDYyLCJuYW1lIjoiKiAqICogKiBTaG93IHJlY29yZGVyIGxpbmsgZm9yIGFsbCIsImJ1Y2tldHMiOjEwMDAsInN0YXRlIjoxLCJwdWJsaXNoZWRfb24iOiIyMDIwLTEwLTI3IDEwOjA0OjEwIiwicGF1c2VkX29uIjoiMDAwMC0wMC0wMCAwMDowMDowMCIsInN0b3BwZWRfb24iOiIwMDAwLTAwLTAwIDAwOjAwOjAwIiwicGFyYW1ldGVycyI6W3siaWQiOjI1NjcsIm5hbWUiOiJzaG93X3JlY29yZGVyX2Zvcl9hbGwiLCJjaG9pY2UiOiJjb250cm9sIiwid2VpZ2h0Ijo1fSx7ImlkIjoyNTY4LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW4iLCJ3ZWlnaHQiOjkwfSx7ImlkIjoyNTY5LCJuYW1lIjoic2hvd19yZWNvcmRlcl9mb3JfYWxsIiwiY2hvaWNlIjoidmFyaWFudF9zY3JlZW5fYW5pbWF0aW9uIiwid2VpZ2h0Ijo1fV0sInNlZ21lbnRzIjpbXX1dfX07CiAgICA8L3NjcmlwdD4KPHNjcmlwdD4KKGZ1bmN0aW9uKCkgewogICAgd2luZG93Ll9ndG0gPSBbeyJleGNlcHRpb25faHR0cF9jb2RlIjoiSFRUUFwvMS4xIDQwNCBOb3QgRm91bmQiLCJsYW5ndWFnZSI6ImVuIiwidXNlcl9zdGF0dXMiOiJsb2dnZWRfb3V0IiwidXNlcl90eXBlIjoibm9uZSIsImdhX3VuaXZlcnNhbF9pZCI6IlVBLTc2NjQxLTgiLCJjb21zY29yZV9zaXRlX2lkIjoxMDM0ODI4OX1dOwoKICAgICAgICB2YXIgZ2RwckNvb2tpZSA9IChkb2N1bWVudC5jb29raWUubWF0Y2goL14oPzouKjspP1xzKnZpbWVvX2dkcHJfb3B0aW5ccyo9XHMqKFteO10rKSg/Oi4qKT8kLyl8fFssbnVsbF0pWzFdOwogICAgaWYgKGdkcHJDb29raWUgPT09ICctMScpIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgICAgIHdpbmRvdy5fZ3RtLnB1c2goewogICAgICAgICd2dWlkJzogZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKXZ1aWRccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKSwKICAgICAgICAnZ3RtLnN0YXJ0JzogbmV3IERhdGUoKS5nZXRUaW1lKCksCiAgICAgICAgJ2V2ZW50JzogJ2d0bS5qcycKICAgIH0pOwogICAgdmFyIGd0bXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwKICAgICAgICBub2RlOwogICAgZ3Rtcy5hc3luYyA9IHRydWU7CiAgICBndG1zLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgIGd0bXMuc3JjID0gJy8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0bS5qcz9pZD1HVE0tUkJLSyZsPV9ndG0nOwogICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsKICAgIG5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZ3Rtcywgbm9kZSk7Cn0pKCk7Cjwvc2NyaXB0Pgo8c2NyaXB0PgogICAgdmFyIGdvb2dsZXRhZyA9IGdvb2dsZXRhZyB8fCB7fSwKICAgICAgICBncHRhZHNsb3RzID0gW10sCiAgICAgICAgbGFuZ3VhZ2UsCiAgICAgICAgaGFzX3VwbG9hZGVkLAogICAgICAgIGNvaG9ydDsKICAgIGdvb2dsZXRhZy5jbWQgPSBnb29nbGV0YWcuY21kIHx8IFtdOwoKICAgIChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZ2RwckNvb2tpZSA9IChkb2N1bWVudC5jb29raWUubWF0Y2goL14oPzouKjspP1xzKnZpbWVvX2dkcHJfb3B0aW5ccyo9XHMqKFteO10rKSg/Oi4qKT8kLyl8fFssbnVsbF0pWzFdOwogICAgICAgIGlmIChnZHByQ29va2llID09PSAnLTEnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdmFyIGdhZHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwKICAgICAgICAgICAgdXNlU1NMID0gJ2h0dHBzOicgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wsCiAgICAgICAgICAgIG5vZGU7CiAgICAgICAgZ2Fkcy5hc3luYyA9IHRydWU7CiAgICAgICAgZ2Fkcy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICAgICAgZ2Fkcy5zcmMgPSAodXNlU1NMID8gJ2h0dHBzOicgOiAnaHR0cDonKSArICcvL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vdGFnL2pzL2dwdC5qcyc7CiAgICAgICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsKICAgICAgICBub2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGdhZHMsIG5vZGUpOwogICAgfSkoKTsKCiAgICBnb29nbGV0YWcuY21kLnB1c2goZnVuY3Rpb24oKSB7CiAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2UgPSBkb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtccyopbGFuZ3VhZ2VccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKTsKICAgICAgICAgICAgaGFzX3VwbG9hZGVkID0gKGRvY3VtZW50LmNvb2tpZS5yZXBsYWNlKC8oPzooPzpefC4qO1xzKiloYXNfdXBsb2FkZWRccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKSkgPyAnWScgOiAnTic7CiAgICAgICAgICAgIGNvbnNlbnQgPSAoZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLyg/Oig/Ol58Lio7XHMqKXZpbWVvX2dkcHJfb3B0aW5ccypcPVxzKihbXjtdKikuKiQpfF4uKiQvLCAiJDEiKSkgPT09ICctMScgPyAxIDogMDsKICAgICAgICAgICAgY29ob3J0ID0gJ0EnOwogICAgICAgIAogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2xhbmd1YWdlJywgW2xhbmd1YWdlXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnaXNfdXBsb2FkZXInLCBbaGFzX3VwbG9hZGVkXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnY29ob3J0JywgW2NvaG9ydF0pOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ2NvaG9ydF9hJywgWyhjb2hvcnQgPT09ICdBJykgPyAnWScgOiAnTiddKTsKICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdjb2hvcnRfYicsIFsoY29ob3J0ID09PSAnQicpID8gJ1knIDogJ04nXSk7CiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygncHJvZHVjdCcsIFsnJ10pOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ3N0b3JhZ2UnLCBbJ04nXSk7CgogICAgICAgICAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnc2VjJywgWydmYWxzZSddKTsKCiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnbG9nZ2VkX2luJywgWydmYWxzZSddKTsKCiAgICAgICAgICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdycHYnLCAoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMCkrMSkudG9TdHJpbmcoKSk7CgogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRSZXF1ZXN0Tm9uUGVyc29uYWxpemVkQWRzKGNvbnNlbnQpOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5lbmFibGVBc3luY1JlbmRlcmluZygpOwogICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5kaXNhYmxlSW5pdGlhbExvYWQoKTsKICAgICAgICBnb29nbGV0YWcuZW5hYmxlU2VydmljZXMoKTsKICAgIH0pOwo8L3NjcmlwdD4KCiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvbG9nZ2luZ19jb21iaW5lZC5taW4uanM/OTc0MjEzZDEiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L2FibGluY29sbl9jb21iaW5lZC5taW4uanM/NmM0YWNiNTciPjwvc2NyaXB0PgoKCgogICAgPC9oZWFkPgogICAgPGJvZHkgY2xhc3M9Im9uc2l0ZSAiPgogICAgICAgIDxkaXYgaWQ9IndyYXAiIGNsYXNzPSJvdXRlcl93cmFwIj4KICAgICAgICAgICAgPGRpdiBpZD0idG9wbmF2X291dGVyX3dyYXAiPgogICAgICAgICAgICAgICAgPGRpdiBpZD0iY3JlYXRlLWZhY2Vib29rLWhlYWRlciI+PC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZpbWVvQnJhbmRfQ29sb3JSaWJib24gIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAoKPHN0eWxlPgogICAgQC13ZWJraXQta2V5ZnJhbWVzIHJlY29yZF9hbmltYXRpb24gewogICAgICAgIDAlLCAyMCUsIDUwJSwgODAlLCAxMDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CiAgICAgICAgNDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMnB4KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7CiAgICAgICAgfQogICAgICAgIDYwJSB7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDNweCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpOwogICAgICAgIH0KICAgIH0KCiAgICBAa2V5ZnJhbWVzIHJlY29yZF9hbmltYXRpb24gewogICAgICAgIDAlLCAyMCUsIDUwJSwgODAlLCAxMDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CiAgICAgICAgNDAlIHsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMnB4KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDJweCk7CiAgICAgICAgfQogICAgICAgIDYwJSB7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDNweCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpOwogICAgICAgIH0KICAgIH0KCiAgICAubG9nZ2VkX291dF9yZWNvcmRfYW5pbWF0aW9uIHsKICAgICAgICBhbmltYXRpb246IHJlY29yZF9hbmltYXRpb24gMS41cyAuMjVzIDU7CiAgICB9CgogICAgLmxvZ2dlZF9pbl9yZWNvcmRfYW5pbWF0aW9uIHsKICAgICAgICBhbmltYXRpb246IHJlY29yZF9hbmltYXRpb24gMS41cyAuMjVzIGluZmluaXRlOwogICAgfQoKICAgIC5yZWNvcmRlcl9uZXdfbGFiZWwgewogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzExNDBDNjsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAxNHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICB3aWR0aDogNDBweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIH0KPC9zdHlsZT4KCjxzY3JpcHQ+CiAgICB3aW5kb3cudmltZW8gPSB3aW5kb3cudmltZW8gfHwge307Cjwvc2NyaXB0PgoKPGRpdiBpZD0idG9wbmF2X2Rlc2t0b3AiIGNsYXNzPSJ0b3BuYXZfZGVza3RvcCAiIHJvbGU9ImJhbm5lciI+CiAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF93cmFwcGVyIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbG9nbyIgaHJlZj0iLy92aW1lby5jb20iIGFsdD0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiB0aXRsZT0iR28gdG8gVmltZW8gaG9tZSBwYWdlIiBhcmlhLWxhYmVsPSJHbyB0byBWaW1lbyBob21lIHBhZ2UiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnZpbWVvX2hvbWUiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2hvbWVfY2xpY2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFsdD0iVmltZW8iIHdpZHRoPSIxMDAiIGhlaWdodD0iNDAiPjxwYXRoIGQ9Ik0yMi40NDggMTQuNTc1Yy0uMTA0IDIuMTctMS42MTggNS4xNDYtNC41NDQgOC45MTItMy4wMyAzLjk0Mi01LjU5IDUuOTEyLTcuNjg2IDUuOTEyLTEuMjk3IDAtMi4zOTctMS4yMDQtMy4zLTMuNi0uNi0yLjItMS4yMDItNC4zOTgtMS43OTQtNi41OTgtLjY2NC0yLjM5Ni0xLjM4LTMuNi0yLjE0Ny0zLjYtLjE2NiAwLS43NDcuMzU0LTEuNzUzIDEuMDVsLTEuMDQ4LTEuMzVjMS4xLS45NjUgMi4xOS0xLjkzIDMuMjU3LTIuOTA1IDEuNDYzLTEuMjY1IDIuNTczLTEuOTQgMy4zLTIuMDAyIDEuNzMyLS4xNjYgMi44IDEuMDE3IDMuMjA1IDMuNTU4LjQzNSAyLjc0LjczNiA0LjQ0LjkwMiA1LjExNS40OTggMi4yNyAxLjA0OCAzLjQwMiAxLjY1IDMuNDAyLjQ2NiAwIDEuMTcyLS43MzcgMi4xMDUtMi4yMS45MzQtMS40NzMgMS40MzItMi41OTMgMS41MDQtMy4zNy4xMzMtMS4yNzctLjM2NS0xLjkxLTEuNTA2LTEuOTEtLjUzIDAtMS4wOC4xMjUtMS42NS4zNjQgMS4xLTMuNTkgMy4xODYtNS4zMzMgNi4yNzctNS4yMyAyLjI3My4wNzMgMy4zNSAxLjU1NiAzLjIyNyA0LjQ2bTEzLjc1NSA3LjAzNGMtLjkzMyAxLjc2NC0yLjIyIDMuMzctMy44NiA0LjgwMy0yLjI0IDEuOTMtNC40NyAyLjkwNS02LjcgMi45MDUtMS4wMzcuMDAyLTEuODI2LS4zMy0yLjM3Ni0uOTk0LS41NS0uNjYzLS44MS0xLjUzNS0uNzc3LTIuNjAzLjAzLTEuMS4zNzItMi44IDEuMDI1LTUuMTA0LjY1NC0yLjMwMy45NzYtMy41MzcuOTc2LTMuNzAzIDAtLjg2LS4zLTEuMjk3LS45MDItMS4yOTctLjE5OCAwLS43Ny4zNTMtMS43MDIgMS4wNDhsLTEuMTUyLTEuMzVjMS4wNy0uOTYyIDIuMTM3LTEuOTI3IDMuMjA2LTIuOTAyIDEuNDMtMS4yNjYgMi41LTEuOTQgMy4yMDUtMi4wMDIgMS4xLS4xMDMgMS45MS4yMyAyLjQyOC45NzYuNTE4Ljc0Ny43MDUgMS43MjIuNTggMi45MTUtLjQzNSAyLjAzNC0uOTAyIDQuNjA3LTEuNCA3LjczLS4wMyAxLjQzLjQ4OCAyLjE0NiAxLjU1NiAyLjE0Ni40NjcgMCAxLjI5Ny0uNDk4IDIuNS0xLjQ4My45OTYtLjgyIDEuODE1LTEuNTk4IDIuNDUtMi4zMjRsLjk0MiAxLjI0NG0tNC4zNTctMTcuOGMtLjAzLjgzLS40NDYgMS42MjgtMS4yNTUgMi4zOTUtLjkuODYtMS45NyAxLjI5Ni0zLjIwNCAxLjI5Ni0xLjkgMC0yLjgyMi0uODMtMi43NS0yLjQ5LjAzMi0uODYuNTQtMS42OSAxLjUyNi0yLjQ5Ljk4NS0uNzk3IDIuMDc0LTEuMTkgMy4yNzgtMS4xOS43MDUgMCAxLjI4Ni4yNyAxLjc1My44Mi40NjcuNTQuNjg0IDEuMS42NTMgMS42Nm0zNS42MTIgMTcuOGMtLjkzMyAxLjc2My0yLjIyIDMuMzctMy44NiA0LjgwMi0yLjI0IDEuOTMtNC40NyAyLjkwNC02LjcgMi45MDQtMi4xNjguMDAyLTMuMjE2LTEuMjAyLTMuMTUzLTMuNTk4LjAzLTEuMDcuMjM4LTIuMzU1LjYyMi0zLjg1LjM4NC0xLjUwMy41OS0yLjY2NS42MjMtMy41MDUuMDMtMS4yNjUtLjM1My0xLjg5OC0xLjE1Mi0xLjg5OC0uODcgMC0xLjkxIDEuMDM2LTMuMTEyIDMuMS0xLjI3NiAyLjE2OC0xLjk2IDQuMjc0LTIuMDY0IDYuMzA4LS4wNzMgMS40My4wNzIgMi41NC40MjUgMy4yOTgtMi4zMjQuMDY0LTMuOTYzLS4zMi00Ljg4Ni0xLjE1LS44My0uNzM3LTEuMjEyLTEuOTUtMS4xNS0zLjY1Mi4wMy0xLjA2OC4xOTgtMi4xMzcuNDg4LTMuMjA1LjI5LTEuMDcuNDU3LTIuMDIzLjQ4OC0yLjg1My4wNjItMS4yMzQtLjM4NC0xLjg1Ny0xLjM1LTEuODU3LS44NCAwLTEuNzQuOTU1LTIuNzA2IDIuODUzLS45NjYgMS45LTEuNTA1IDMuODktMS42MSA1Ljk1Ni0uMDYgMS44NjcuMDUzIDMuMTc0LjM2NCAzLjktMi4yOTMuMDYyLTMuOTItLjQxNS00Ljg3Ni0xLjQ1Mi0uNzk4LS44Ni0xLjE2LTIuMTgtMS4xLTMuOTQyLjAzMi0uODYuMTg4LTIuMDc1LjQ1Ny0zLjYyLjI4LTEuNTQ2LjQyNS0yLjc1LjQ1Ny0zLjYyLjA2Mi0uNjAzLS4wODMtLjkwMy0uNDQ2LS45MDMtLjE5NyAwLS43NjguMzQtMS43MDIgMS4wMTVsLTEuMjAzLTEuMzQ4Yy4xNjgtLjEzNSAxLjIxNi0xLjEgMy4xNTYtMi45MDUgMS40LTEuMjk3IDIuMzU0LTEuOTcgMi44NTItMi4wMDIuODcyLS4wNzMgMS41NjcuMjkgMi4xMDYgMS4wOC41My43ODcuOCAxLjY5LjggMi43MjcgMCAuMzMyLS4wMzIuNjU0LS4xMDUuOTU0LjQ5Ny0uNzY2IDEuMDgtMS40MyAxLjc1Mi0yIDEuNTM3LTEuMzQgMy4yNi0yLjA4NiA1LjE1Ny0yLjI1MiAxLjY0LS4xMzUgMi44LjI1IDMuNTA1IDEuMTUyLjU3LjczNi44MyAxLjc4NC44IDMuMTUzLjIzNy0uMTk4LjQ4Ni0uNDE2Ljc0Ni0uNjU0Ljc2Ny0uOTAzIDEuNTE0LTEuNjIgMi4yNS0yLjE0OCAxLjIzNS0uOTAyIDIuNTItMS40IDMuODYtMS41MDQgMS41OTctLjEzNSAyLjc1LjI1IDMuNDU0IDEuMTUyLjYwMi43MjYuODcgMS43NzQuOCAzLjE0My0uMDMyLjkzMy0uMjYgMi4yOC0uNjc1IDQuMDY1LS40MTYgMS43NzMtLjYyNCAyLjgtLjYyNCAzLjA3LS4wMy42OTUuMDMgMS4xODIuMTk3IDEuNDQyLjE2Ni4yNy41Ny4zOTQgMS4yMDMuMzk0LjQ2NyAwIDEuMjk3LS40OTcgMi41LTEuNDgyLjk5Ni0uODIgMS44MTYtMS41OTggMi40NS0yLjMyNGwuOTYzIDEuMjU0bTE4Ljc2NS0uMDUyYy0uOTY1IDEuNTk4LTIuODc0IDMuMTk1LTUuNzA2IDQuNzkzLTMuNTM4IDIuMDMyLTcuMTI3IDMuMDUtMTAuNzU4IDMuMDUtMi43MDYgMC00LjYzNi0uOTA0LTUuODA4LTIuNy0uODMtMS4yMzMtMS4yMzQtMi42OTYtMS4yMDMtNC40MDcuMDMtMi42OTggMS4yMzQtNS4yNyAzLjYtNy43MSAyLjYwMy0yLjY2NSA1LjY3NC00LjAwMyA5LjIxLTQuMDAzIDMuMjcgMCA1IDEuMzI4IDUuMjA4IDMuOTk0LjEzNSAxLjcwMi0uNzk4IDMuNDQ1LTIuOCA1LjI0LTIuMTM3IDEuOTYtNC44MjQgMy4yMTUtOC4wNiAzLjc0NC42LjgzIDEuNTA0IDEuMjQ1IDIuNzA3IDEuMjQ1IDIuMzk2IDAgNS4wMi0uNjEzIDcuODYzLTEuODM3IDIuMDMzLS44NiAzLjYzLTEuNzUzIDQuODAzLTIuNjc2bC45NDUgMS4yNjVtLTExLjM2LTUuMjI4Yy4wMzItLjg5Mi0uMzMtMS4zNS0xLjEtMS4zNS0uOTk0IDAtMi4wMS42ODYtMy4wNDggMi4wNjYtMS4wMzggMS4zOC0xLjU2NyAyLjY5Ny0xLjU5OCAzLjk2Mi0uMDIgMC0uMDIuMjE4IDAgLjY0MyAxLjYzLS42IDMuMDUtMS41MTQgNC4yNDItMi43MzguOTY2LTEuMDU4IDEuNDYzLTEuOTIgMS41MDUtMi41ODNtMjQuOTQ2IDEuODY4Yy0uMTM1IDMuMDcyLTEuMjY1IDUuNzE3LTMuNDAyIDcuOTQ3LTIuMTM1IDIuMjMtNC43OSAzLjM1LTcuOTU1IDMuMzUtMi42MzUgMC00LjYzNy0uODUtNi4wMDYtMi41NS0uOTk3LTEuMjY3LTEuNTU3LTIuODU0LTEuNjUtNC43NTItLjE2Ni0yLjg2My44Ni01LjQ5OCAzLjEtNy44OTQgMi40MDgtMi42NjUgNS40MjctMy45OTMgOS4wNTctMy45OTMgMi4zMzQgMCA0LjA5OC43ODggNS4zIDIuMzQ0IDEuMTMyIDEuNDQzIDEuNjUgMy4yOSAxLjU1NyA1LjU1bS01LjY2NC0uMTg1Yy4wMy0uOTAzLS4wOTQtMS43MzMtLjM3NC0yLjQ4LS4yOC0uNzQ3LS42OTUtMS4xMy0xLjIyNC0xLjEzLTEuNzAyIDAtMy4xMDIuOTIzLTQuMjAyIDIuNzYtLjkzMyAxLjUwMy0xLjQzIDMuMTEtMS41MDQgNC44MTItLjAzLjg0LjExNCAxLjU3Ny40NDYgMi4yMS4zNjQuNzM2Ljg4MiAxLjEgMS41NTYgMS4xIDEuNTA1IDAgMi43OS0uODgzIDMuODYtMi42NTYuODkyLTEuNDcyIDEuMzgtMy4wMDggMS40NC00LjYxNWguMDAyeiIgZmlsbD0iIzExMjIzMyIvPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X3N0b2NrX2xvZ28iIGhyZWY9Ii9zdG9jayI+CiAgICAgICAgICAgICAgICA8c3ZnIGFsdD0iVmltZW8iIHdpZHRoPSIxNzAiIGhlaWdodD0iNDAiIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDc4MCAxMjAiPjxwYXRoIGQ9Ik00NzEuOSA3MC4zMWMtMTIuMTQtMi43NC0yNC4yOC0zLjktMjQuMjgtMTIgMC02LjUgOC44Mi03LjY2IDEzLjU5LTcuNjYgNy4yMiAwIDEzLjczIDIuMTcgMTUuMTcgMTBoMTcuMmMtMi0xNi42Mi0xNS45LTIzLTMxLjIyLTIzLTEzLjU4IDAtMzEuMjEgNS4wNS0zMS4yMSAyMS4zOCAwIDE1LjE3IDExLjg1IDE5LjUxIDI0IDIyLjExczI0IDMuNzYgMjQuNDIgMTIuNDNjLjQzIDguNTItMTAuNCA5LjgyLTE2LjYyIDkuODItOC44MSAwLTE2LTMuNDYtMTYuOS0xM2gtMTYuNDljLjI5IDE3LjYzIDE0LjMxIDI2IDMzLjA5IDI2IDE1LjQ2IDAgMzMuMzgtNi41IDMzLjM4LTI0LjI4LS4wMy0xNC43Mi0xMi4xNC0xOS4wNS0yNC4xMy0yMS44ek01MjUuNjYgMTcuMjhoLTE2LjQ4djIyLjRoLTEyLjQyVjUyaDEyLjQydjQ0Yy4yOSAxMi40MyAzLjQ3IDE5LjA4IDIwLjY3IDE5LjA4IDMuNjEgMCA3LjA4LS41OCAxMC42OS0uODd2LTEyLjY4YTI4LjUyIDI4LjUyIDAgMCAxLTYuOTQuNTdjLTcuMzcgMC03Ljk0LTMuNDctNy45NC0xMC4yNlY1MmgxNC44OFYzOS42OGgtMTQuODh6TTU4MC44NSAzNy42NmMtMjQgMC0zNy43MSAxNi40Ny0zNy43MSAzOS4zIDAgMjMgMTMuNzMgMzkuNDUgMzcuNzEgMzkuNDVTNjE4LjU3IDk5Ljk0IDYxOC41NyA3N2MwLTIyLjg3LTEzLjczLTM5LjM0LTM3LjcyLTM5LjM0em0wIDY1Ljc0Yy0xNC43MyAwLTIxLjI0LTEzLjQtMjEuMjQtMjYuNHM2LjUxLTI2LjMgMjEuMjQtMjYuM1M2MDIuMSA2NC4xIDYwMi4xIDc3cy02LjUxIDI2LjQtMjEuMjUgMjYuNHpNNjYyLjc5IDUwLjY2YzkuMSAwIDE1Ljc1IDQuOTEgMTcuMDUgMTRoMTYuNDdjLTEuNTktMTguMzUtMTYuMzMtMjctMzMuNjctMjctMjQuNTYgMC0zNi44NSAxNy42My0zNi44NSA0MC4xNyAwIDIyIDEyLjg2IDM4LjU4IDM2LjI3IDM4LjU4IDE5LjIyIDAgMzEuMjItMTAuNjkgMzQuMjUtMzAuMDZoLTE2LjQ3Yy0xLjU5IDEwLjctOC4yNCAxNy4wNS0xNy43OCAxNy4wNS0xNC4zIDAtMTkuNzktMTMuMTUtMTkuNzktMjUuNTcgMC0yMi42OSAxMS45OS0yNy4xNyAyMC41Mi0yNy4xN3pNNzQyLjI2IDY3LjEzbDI4LjYxLTI3LjQ1aC0yMC4yM2wtMjkuNzYgMzAuMlYxMS4yMUg3MDQuNHYxMDMuMThoMTYuNDhWODcuNjVsOS44Mi05LjUzIDIyLjgzIDM2LjI3aDIwLjA5bC0zMS4zNi00Ny4yNnoiIGZpbGw9IiNmZmYiPjwvcGF0aD48cGF0aCBkPSJNMTE3LjI1IDI2LjcyYTE4LjM3IDE4LjM3IDAgMCAwIDEzLjE0LTUuMzFxNC45Mi00LjY5IDUuMTMtOS44YTkuNjIgOS42MiAwIDAgMC0yLjY3LTYuODQgOS4wOCA5LjA4IDAgMCAwLTcuMTgtMy4zNyAyMC45MSAyMC45MSAwIDAgMC0xMy40NSA0LjlxLTYuMDYgNC45MS02LjI2IDEwLjIxLS40IDEwLjIyIDExLjI5IDEwLjIxek0zODYuMTIgMzguMjVxLTIyLjM4IDAtMzcuMTUgMTYuMzlRMzM1LjIgNjkuNCAzMzYuMjQgODdjLjA1Ljg2LjEyIDEuNy4yMiAyLjUzbC0xLjU0LjY4cS0xNy40NiA3LjUyLTMyLjIzIDcuNTEtNy40IDAtMTEuMDktNS4xMiAxOS45LTMuMjcgMzMtMTUuMzUgMTIuNC0xMS4wMyAxMS41NC0yMS40Ny0xLjIzLTE2LjM3LTIxLjM0LTE2LjM4LTIxLjggMC0zNy44IDE2LjQyLTE0LjU2IDE1LTE0Ljc3IDMxLjZhMzcuNTcgMzcuNTcgMCAwIDAgLjI3IDUuMzdjLTIuMjkgMS41MS00IDIuMjctNS4yIDIuMjdxLTMuOSAwLTQuOTItMS42M2MtLjY5LTEuMDktMS0zLjA2LS44My01LjkzcTAtMS42NCAyLjU3LTEyLjU3dDIuNzctMTYuNjdxLjQtOC4zNy0zLjI4LTEyLjg4LTQuMzItNS41Mi0xNC4xNy00LjdhMzAuNDIgMzAuNDIgMCAwIDAtMTUuOCA2LjE2IDU0LjU3IDU0LjU3IDAgMCAwLTkuMjMgOC44MmMtMS4xIDEtMi4xMiAxLjg2LTMuMDggMi42N3EuMTktOC40MS0zLjI4LTEyLjkzLTQuMzItNS41My0xNC4zOC00LjcyYTM2LjQ2IDM2LjQ2IDAgMCAwLTIxLjEzIDkuMjQgMzcuNjcgMzcuNjcgMCAwIDAtNy4xOSA4LjIxIDE4LjE1IDE4LjE1IDAgMCAwIC40MS0zLjlBMTkuNDIgMTkuNDIgMCAwIDAgMTYyLjUgNDNxLTMuMjgtNC44Mi04LjYyLTQuNDEtMy4wNy4yMS0xMS42OSA4LjIxLTExLjkxIDExLjA4LTEyLjkzIDExLjlsNC45MiA1LjU0YzMuODMtMi43NiA2LjE2LTQuMTUgNy00LjE1cTIuMjUgMCAxLjg1IDMuNjhhMTE0LjExIDExNC4xMSAwIDAgMS0xLjg5IDE0Ljg0Yy0uNyAzLjk0LTEuMiA3LjMzLTEuNTIgMTAuMTlsLS4xOC4xNXEtNy4zOSA2LjA4LTEwLjI2IDYuMDdjLTQuMzggMC02LjUtMi45Mi02LjM3LTguNzlxMy4wOC0xOS4yMiA1Ljc2LTMxLjY5LjgxLTcuMzYtMi4zNy0xMnQtMTAtNHEtNC4zMi40LTEzLjE0IDguMjFMOTcgNTIuMzljLS40MS05LjY4LTQuODItMTQuNjYtMTMuMjgtMTQuOTFxLTE5LS42LTI1Ljc0IDIxLjQ2YTE3LjE5IDE3LjE5IDAgMCAxIDYuNzYtMS41cTcgMCA2LjE2IDcuODQtLjQ2IDQuNzItNi4yIDEzLjgxdC04LjYyIDkuMDZxLTMuNjkgMC02Ljc3LTE0LTEtNC4xMS0zLjY5LTIxLTIuNDctMTUuNTQtMTMuMTQtMTQuNTJRMjggMzkgMTguOTQgNDYuODRxLTYuNTcgNi0xMy4zNCAxMS45bDQuMyA1LjU0UTE2LjA1IDYwIDE3LjA3IDYwcTQuNzEgMCA4LjgxIDE0Ljc2bDcuMzggMjcuMDZxNS41MiAxNC43NiAxMy41MSAxNC43NiAxMi45MiAwIDMxLjU1LTI0LjI0IDEzLjEtMTYuODQgMTctMjguNWMzLjQ0LTIuNTUgNS41Ny0zLjg0IDYuMzUtMy44NHEzLjY5IDAgMy42OSA1LjMzIDAgMS00IDE1LjE4dC00LjIgMjAuOTJxLS4yMSA2LjU3IDMuMTggMTAuNjZjMi4yNSAyLjc0IDUuNTEgNC4xMSA5Ljc1IDQuMTFxMTMuNzUgMCAyNy41LTExLjljLjgyLS43MSAxLjYxLTEuNDQgMi4zOS0yLjE4YTE2LjUxIDE2LjUxIDAgMCAwIDMuNzcgNy41NnE1LjkzIDYuMzQgMjAgNS45My0xLjg5LTQuNTItMS40Ny0xNmE1OS43IDU5LjcgMCAwIDEgNi41Ny0yNC40M3E2LTExLjY4IDExLjEtMTEuNyA2IDAgNS41NSA3LjU5YTUzLjEzIDUzLjEzIDAgMCAxLTIgMTEuNzEgNTUuMjMgNTUuMjMgMCAwIDAtMiAxMy4xM3EtLjQxIDEwLjQ3IDQuNzEgMTUgNS43MyA1LjEzIDIwLjA1IDQuNzItMi4xMy00LjcxLTEuNzItMTMuNTQuNi0xMi41MiA4LjQ0LTI1Ljg2IDcuNDEtMTIuNzIgMTIuNzYtMTIuNzMgNSAwIDQuNzQgNy44YTc0Ljk0IDc0Ljk0IDAgMCAxLTIuNTYgMTQuMzYgNzQuNjEgNzQuNjEgMCAwIDAtMi41NyAxNS43OXEtLjQxIDE0Ljc4IDEyLjk0IDE0Ljc3IDEzLjc0IDAgMjcuNS0xMS45bC40NC0uNGMuMzIuNTQuNjQgMS4wOCAxIDEuNnE3LjE5IDExLjA4IDIzLjgxIDExLjA4IDIyLjM2IDAgNDQuMTMtMTIuNWMxLjYzLS45MiAzLjE3LTEuODMgNC42NS0yLjc1YTI5LjQzIDI5LjQzIDAgMCAwIDMuMjQgNS4xOHE4LjQyIDEwLjQ1IDI0LjYzIDEwLjQ1IDE5LjUgMCAzMi42NC0xMy43M2E0OC43OSA0OC43OSAwIDAgMCAxNC0zMi41OHEuNjEtMTMuOTMtNi4zNi0yMi43NS03LjQ5LTkuNjUtMjEuODUtOS42N3ptLTk3Ljc2IDQ2LjU2YTExLjEyIDExLjEyIDAgMCAxIDAtMi42NnEuMTktNy43NSA2LjU1LTE2LjIzdDEyLjUtOC40OGMzLjE1IDAgNC42NSAxLjg1IDQuNTEgNS41MnEtLjE5IDQuMDgtNi4xNCAxMC42MmE0Ni4yNSA0Ni4yNSAwIDAgMS0xNy40MiAxMS4yM3pNMzkxIDY5Ljg1YTM5IDM5IDAgMCAxLTYgMTguOTJxLTYuNTcgMTAuOTEtMTUuODEgMTAuOS00LjExIDAtNi4zNi00LjUyYTE3LjY2IDE3LjY2IDAgMCAxLTEuODUtOS4wNSAzOS44MSAzOS44MSAwIDAgMSA2LjE2LTE5Ljc0cTYuODYtMTEuMzEgMTcuMzMtMTEuMzFjMi4xOSAwIDMuODYgMS41NCA1IDQuNjNBMjUuODIgMjUuODIgMCAwIDEgMzkxIDY5Ljg1eiIgZmlsbD0iIzAwYWRlZiI+PC9wYXRoPjwvc3ZnPgogICAgICAgICAgICA8L2E+CiAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51IiByb2xlPSJuYXZpZ2F0aW9uIiBhcmlhLWxhYmVsPSJNYWluIG1lbnUiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ0b3BuYXZfbWVudV9kZXNrdG9wX21haW4iIHJvbGU9Im1lbnViYXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXMiIGRhdGEtbWVudS1pZD0iam9pbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X21lbnVfam9pbiBqcy10b3BuYXZfbWVudV9hdXRoIiBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO3ZpbWVvLk1vZGFsLmNyZWF0ZSh7c2l6ZToneHNtYWxsJyxjb250ZW50Oicvam9pbj9tb2RhbD1uZXcnfSkudGhlbihjb21wbGV0ZVVzZXJMb2dpbikiIGRhdGEtZ2EtZXZlbnQtY2xpY2s9InRvcF9uYXZ8am9pbiIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6am9pbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfam9pbl9jbGljayIgaHJlZj0iLy92aW1lby5jb20vam9pbiIgdGl0bGU9IkJlY29tZSBhIFZpbWVvIG1lbWJlciIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfam9pbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJsb2dpbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0ianMtdG9wbmF2X21lbnVfYXV0aCIgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTt2aW1lby5Nb2RhbC5jcmVhdGUoe3NpemU6J3hzbWFsbCcsY29udGVudDonL2xvZ19pbj9tb2RhbD1uZXcnfSkudGhlbihjb21wbGV0ZVVzZXJMb2dpbikiIGRhdGEtZ2EtZXZlbnQtY2xpY2s9InRvcF9uYXZ8bG9naW4iIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmxvZ2luIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9sb2dpbl9jbGljayIgaHJlZj0iLy92aW1lby5jb20vbG9nX2luIiB0aXRsZT0iTG9nIGluIHRvIHlvdXIgYWNjb3VudCIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfbG9naW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZyBpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJwcmljaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByaWNpbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3ByaWNpbmdfY2xpY2siIGhyZWY9Ii8vdmltZW8uY29tL3VwZ3JhZGUiIHRpdGxlPSJQcmljaW5nIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9wcmljaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmljaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9InByb2R1Y3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgb25jbGljaz0iZXZlbnQucHJldmVudERlZmF1bHQoKTtldmVudC50YXJnZXQuYmx1cigpOyIgY2xhc3M9InRvcG5hdl9tZW51X25vX2xpbmsgdG9wbmF2X2hhc19kcm9wZG93biB0b3BuYXZfaWNvbl9jaGV2cm9uX2EiIGhyZWY9IiMiIHRpdGxlPSJQcm9kdWN0IiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9wcm9kdWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9kdWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duLS13cmFwcGVyIiByb2xlPSJtZW51IiBhcmlhLWhpZGRlbj0idHJ1ZSIgaWQ9InRvcG5hdl9wcm9kdWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3NvbHV0aW9ucy0tZmVhdHVyZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24tLWxhYmVscyI+RkVBVFVSRVM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDp2aWRlb19wbGF5ZXIiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfdmlkZW9fcGxheWVyIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1wbGF5ZXIiIHRpdGxlPSJWaWRlbyBwbGF5ZXIiPlZpZGVvIHBsYXllcjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOnNjcmVlbl9yZWNvcmRlciIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9zY3JlZW5fcmVjb3JkZXIiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3NjcmVlbi1yZWNvcmRlciIgdGl0bGU9IlNjcmVlbiByZWNvcmRlciI+U2NyZWVuIHJlY29yZGVyPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6bGl2ZV9zdHJlYW1pbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfbGl2ZV9zdHJlYW1pbmciIGhyZWY9Ii8vdmltZW8uY29tL2xpdmUiIHRpdGxlPSJMaXZlIHN0cmVhbWluZyI+TGl2ZSBzdHJlYW1pbmc8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDpwcml2YWN5IiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9wcm9kdWN0X3ByaXZhY3kiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLXByaXZhY3kiIHRpdGxlPSJQcml2YWN5Ij5Qcml2YWN5PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6Y29sbGFib3JhdGlvbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9jb2xsYWJvcmF0aW9uIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1jb2xsYWJvcmF0aW9uIiB0aXRsZT0iQ29sbGFib3JhdGlvbiI+Q29sbGFib3JhdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOmRpc3RyaWJ1dGlvbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9kaXN0cmlidXRpb24iIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLW1hcmtldGluZyIgdGl0bGU9IkRpc3RyaWJ1dGlvbiBhbmQgbWFya2V0aW5nIj5EaXN0cmlidXRpb24gJiBtYXJrZXRpbmc8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDptb25ldGl6YXRpb24iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3Byb2R1Y3RfbW9uZXRpemF0aW9uIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy92aWRlby1tb25ldGl6YXRpb24iIHRpdGxlPSJNb25ldGl6YXRpb24iPk1vbmV0aXphdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6cHJvZHVjdHxrZXl3b3JkOmFuYWx5dGljcyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9hbmFseXRpY3MiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLWFuYWx5dGljcyIgdGl0bGU9IkFuYWx5dGljcyI+QW5hbHl0aWNzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpwcm9kdWN0fGtleXdvcmQ6aG9zdGluZyIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfcHJvZHVjdF9ob3N0aW5nIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy9vbmxpbmUtdmlkZW8taG9zdGluZyIgdGl0bGU9Ikhvc3RpbmcgYW5kIG1hbmFnZW1lbnQiPkhvc3RpbmcgJiBtYW5hZ2VtZW50PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvdXBncmFkZSIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd24tLWNvbXBhcmVfcGxhbnMiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnByb2R1Y3R8a2V5d29yZDpjb21wYXJlX3BsYW5zfHRhcmdldDovdXBncmFkZXx0eXBlOmNsaWNrIj5Db21wYXJlIFBsYW5zPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duLS1sYWJlbHMiPlNFUlZJQ0VTPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfc29sdXRpb25zLS1zZXJ2aWNlc19jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VydmljZXNfd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Y3JlYXRlfHRhcmdldDovY3JlYXRlfHR5cGU6Y2xpY2siIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2Jsb2NrIiBocmVmPSIvL3ZpbWVvLmNvbS9jcmVhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+TWFrZSBzb2NpYWwgdmlkZW9zIGluIGFuIGluc3RhbnQ6IHVzZSBjdXN0b20gdGVtcGxhdGVzIHRvIHRlbGwgdGhlIHJpZ2h0IHN0b3J5IGZvciB5b3VyIGJ1c2luZXNzLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlcnZpY2VzX3dyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmZvcl9oaXJlfHRhcmdldDovZm9yLWhpcmV8dHlwZTpjbGljayIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3NvbHV0aW9ucy0tc2VydmljZXNfYmxvY2siIGhyZWY9Ii8vdmltZW8uY29tL2Zvci1oaXJlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIEhpcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UG9zdCBqb2JzLCBmaW5kIHByb3MsIGFuZCBjb2xsYWJvcmF0ZSBjb21taXNzaW9uLWZyZWUgaW4gb3VyIHByb2Zlc3Npb25hbCBtYXJrZXRwbGFjZS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlc193cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDplbnRlcnByaXNlfHRhcmdldDovZW50ZXJwcmlzZXx0eXBlOmNsaWNrIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3Bfc29sdXRpb25zLS1zZXJ2aWNlc19ibG9jayIgaHJlZj0iLy92aW1lby5jb20vZW50ZXJwcmlzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudGVycHJpc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+R2V0IHlvdXIgdGVhbSBhbGlnbmVkIHdpdGggYWxsIHRoZSB0b29scyB5b3UgbmVlZCBvbiBvbmUgc2VjdXJlLCByZWxpYWJsZSB2aWRlbyBwbGF0Zm9ybS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlc193cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpzdG9ja3x0YXJnZXQ6L3N0b2NrfHR5cGU6Y2xpY2siIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2Jsb2NrIiBocmVmPSIvL3ZpbWVvLmNvbS9zdG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkJyb3dzZSBhbmQgYnV5IGV4Y2VwdGlvbmFsLCByb3lhbHR5LWZyZWUgc3RvY2sgY2xpcHMsIGhhbmRwaWNrZWQgYnkgdGhlIGJlc3QuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zIiBkYXRhLW1lbnUtaWQ9InNvbHV0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbmF2X2hhc19kcm9wZG93biB0b3BuYXZfaWNvbl9jaGV2cm9uX2EiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOnNvbHV0aW9ucyIgaHJlZj0iIyIgdGl0bGU9IlNvbHV0aW9ucyIgcmVsPSJ0b2dnbGUiIHJvbGU9ImJ1dHRvbiIgYXJpYS1vd25zPSJ0b3BuYXZfc29sdXRpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb2x1dGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfc29sdXRpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW0iIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Y3JlYXRpdmVfcHJvZmVzc2lvbmFscyIgaHJlZj0iLy92aW1lby5jb20vc29sdXRpb25zL2NyZWF0aXZlLXByb2Zlc3Npb25hbHMtc29sdXRpb25zIiB0aXRsZT0iQWxsIHlvdSBuZWVkIHRvIG1ha2UgZ3JlYXQgdmlkZW8uIj5DcmVhdGl2ZSBQcm9mZXNzaW9uYWxzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOnNtYWxsX2J1c2luZXNzIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvc21hbGwtYnVzaW5lc3Mtc29sdXRpb25zIiB0aXRsZT0iQ2FwdHVyZSB5b3VyIGN1c3RvbWVyc+KAmSBhdHRlbnRpb24gd2l0aCB2aWRlby4iPlNtYWxsIEJ1c2luZXNzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmVudGVycHJpc2UiIGhyZWY9Ii8vdmltZW8uY29tL2VudGVycHJpc2UiIHRpdGxlPSJFbnRlcnByaXNlIj5FbnRlcnByaXNlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmVkdWNhdGlvbiIgaHJlZj0iLy92aW1lby5jb20vc29sdXRpb25zL2VkdWNhdGlvbi1zb2x1dGlvbnMiIHRpdGxlPSJTaGFyZSBrbm93bGVkZ2Ugd2l0aCB2aWRlby4iPkVkdWNhdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpmaXRuZXNzIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvZml0bmVzcy1zb2x1dGlvbnMiIHRpdGxlPSJHZXQgeW91ciBmaXRuZXNzIHN0dWRpbyBvbmxpbmUuIj5GaXRuZXNzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmZhaXRoIiBocmVmPSIvL3ZpbWVvLmNvbS9zb2x1dGlvbnMvZmFpdGgtc29sdXRpb25zIiB0aXRsZT0iS2VlcCB5b3VyIGNvbW11bml0eSBjb25uZWN0ZWQuIj5GYWl0aDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtcyIgZGF0YS1tZW51LWlkPSJpbnNwaXJhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBvbmNsaWNrPSJldmVudC5wcmV2ZW50RGVmYXVsdCgpO2V2ZW50LnRhcmdldC5ibHVyKCk7IiBjbGFzcz0idG9wbmF2X21lbnVfbm9fbGluayB0b3BuYXZfaGFzX2Ryb3Bkb3duIHRvcG5hdl9pY29uX2NoZXZyb25fYSIgaHJlZj0iIyIgdGl0bGU9IldhdGNoIiByZWw9InRvZ2dsZSIgcm9sZT0iYnV0dG9uIiBhcmlhLW93bnM9InRvcG5hdl9pbnNwaXJhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biIgcm9sZT0ibWVudSIgYXJpYS1oaWRkZW49InRydWUiIGlkPSJ0b3BuYXZfaW5zcGlyYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDp3YXRjaHxrZXl3b3JkOndhdGNoIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl93YXRjaF9jbGljayIgaHJlZj0iLy92aW1lby5jb20vd2F0Y2giIHRpdGxlPSJFeHBsb3JlIj5FeHBsb3JlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtIiByb2xlPSJtZW51aXRlbSIgdGFiaW5kZXg9Ii0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OndhdGNofGtleXdvcmQ6c3RhZmZfcGlja3MiIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X3dhdGNoX3N0YWZmX3BpY2tzX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS9jaGFubmVscy9zdGFmZnBpY2tzIiB0aXRsZT0iVGhlIGJlc3QgdmlkZW9zIG9uIFZpbWVvLCBjdXJhdGVkIGRhaWx5IGJ5IG91ciB0ZWFtIj5TdGFmZiBQaWNrczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvcG5hdl9kZXNrdG9wX21lbnVfaXRlbXNfZHJvcGRvd25faXRlbSIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDptYW5hZ2VfdmlkZW9zfGtleXdvcmQ6dmlkZW9fc2Nob29sIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9jcmVhdGVfdmlkZW9fc2Nob29sX2NsaWNrIiBocmVmPSIvL3ZpbWVvLmNvbS92aWRlb3NjaG9vbCIgdGl0bGU9IkxlYXJuIGhvdyB0byBtYWtlIGJldHRlciB2aWRlb3MiPlZpZGVvIFNjaG9vbDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L25hdj48IS0tIC8udG9wbmF2X2Rlc2t0b3BfbWVudSAtLT4KICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InRvcG5hdl9tZW51X3NlYXJjaF9vbW5pc2VhcmNoIiBjbGFzcz0idG9wbmF2X21lbnVfc2VhcmNoIiBkYXRhLXF1ZXJ5PSIiIGRhdGEtcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9tZW51X3JpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icmVjb3JkX3RpcF93cmFwcGVyIiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfdmlkZW9fcG9wb3ZlciIgb25Nb3VzZWVudGVyPSJ0cmFja05ld1ZpZGVvRHJvcGRvd25JbXByZXNzaW9uKCcnKSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPSJuZXdfdmlkZW9fZHJvcGRvd25fYnV0dG9uIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3ZpZGVvX3BvcG92ZXJfYnV0dG9uIGlyaXNfYnRuLS1wcmltYXJ5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6bmV3X3ZpZGVvIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jbGljaz0iaGFuZGxlTmV3VmlkZW9DbGljaygpIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfdmlkZW9fcG9wb3Zlcl9zcGFuX3dyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldyB2aWRlbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9InJlY29yZF9hbmltYXRpb25fd3JhcHBlciIgY2xhc3M9InRvcG5hdl9kZXNrdG9wX3ZpZGVvX3BvcG92ZXJfc3Bhbl92YXJpYW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNMTIgMTUuNWExIDEgMCAwIDEtLjY3LS4yNmwtNS00LjUgMS4zNC0xLjQ4TDEyIDEzLjE1bDQuMzMtMy45IDEuMzQgMS40OS01IDQuNWExIDEgMCAwIDEtLjY3LjI2eiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSIjZmZmZmZmIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgaWQ9Im5ld192aWRlb19kcm9wZG93bl92YXJpYW50IiBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93biB0b3BuYXZfZGVza3RvcF92aWRlb19wb3BvdmVyX2Ryb3Bkb3duX3ZhcmlhbnQiIHJvbGU9Im1lbnUiIGFyaWEtaGlkZGVuPSJ0cnVlIiBzdHlsZT0icGFkZGluZzogdW5zZXQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b3BuYXZfZGVza3RvcF9tZW51X2l0ZW1zX2Ryb3Bkb3duX2l0ZW1fdmFyaWFudCIgcm9sZT0ibWVudWl0ZW0iIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBvbmNsaWNrPSIoZnVuY3Rpb24oZXZlbnQpIHsgaWYgKHdpbmRvdy5oYW5kbGVVcGxvYWRCdXR0b25DbGljaykgeyBoYW5kbGVVcGxvYWRCdXR0b25DbGljayhldmVudCk7IH19KShldmVudCkiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om5ld192aWRlb3xrZXl3b3JkOnsnYWN0aW9uJzondXBsb2FkJ318dGFyZ2V0Oi91cGxvYWR8dHlwZTpjbGljayIgaWQ9InRvcG5hdl9kZXNrdG9wX3VwbG9hZF9idXR0b24iIGhyZWY9Ii8vdmltZW8uY29tL3VwbG9hZCIgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFsaWduX3RvcG5hdl9kcm9wZG93bl9pY29ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b3BuYXZfZHJvcGRvd25faWNvbnMiPjxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTE4IDguNDhhNy4xNiA3LjE2IDAgMCAwLTEuODQtNC43NkE1LjgxIDUuODEgMCAwIDAgNi45MiA1YTUuMjQgNS4yNCAwIDAgMC00LjY5IDMuODVBNC45MSA0LjkxIDAgMCAwIDAgMTNhNS4xMyA1LjEzIDAgMCAwIDUgNWgxMGE1LjEgNS4xIDAgMCAwIDUtNC45NCA1Ljg5IDUuODkgMCAwIDAtMi00LjU4ek0xNSAxNmgtNHYtMy41OWwxLjI5IDEuMjkgMS40MS0xLjQxLTMuNy0zLjctMy43MSAzLjdMNy43IDEzLjcgOSAxMi40MVYxNkg1YTMuMTYgMy4xNiAwIDAgMS0zLTMgMi45MSAyLjkxIDAgMCAxIDEuNTItMi41OGwuNC0uMi4wOC0uNDRBMy4zOCAzLjM4IDAgMCAxIDcuNTkgN2guN2wuMjQtLjY2QTMuNjkgMy42OSAwIDAgMSAxMiA0YTMuNzMgMy43MyAwIDAgMSAyLjcyIDEuMTJBNS40NSA1LjQ1IDAgMCAxIDE2IDl2LjU0bC40NS4zQTMuNzkgMy43OSAwIDAgMSAxOCAxMy4wNiAzLjA5IDMuMDkgMCAwIDEgMTUgMTZ6IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiMxYTJlM2IiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9wbmF2X2Rlc2t0b3BfbWVudV9pdGVtc19kcm9wZG93bl9pdGVtX3ZhcmlhbnQiIHJvbGU9Im1lbnVpdGVtIiB0YWJpbmRleD0iLTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgb25jbGljaz0iaGFuZGxlQ3JlYXRlVmlkZW9DbGljayhldmVudCkiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50Om5ld192aWRlb3xrZXl3b3JkOnsnYWN0aW9uJzonY3JlYXRlJ318dGFyZ2V0Oi9jcmVhdGUvdmlkZW8tbWFrZXJ8dHlwZTpjbGljayIgaWQ9InRvcG5hdl9kZXNrdG9wX2NyZWF0ZV92aWRlb19idXR0b24iIGhyZWY9Ii8vdmltZW8uY29tL2NyZWF0ZS92aWRlby1tYWtlciIgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFsaWduX3RvcG5hdl9kcm9wZG93bl9pY29ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0b3BuYXZfZHJvcGRvd25faWNvbnMiPjxzdmcgdmlld0JveD0iMCAwIDIwIDIwIiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0zLjIgMTYuOGwzLjgtMSAxMC0xMGMuMi0uMi4yLS41IDAtLjdMMTQuOSAzYy0uMi0uMi0uNS0uMi0uNyAwbC0yLjEgMi4xIDIuOCAyLjhMMTMuOCA5IDExIDYuMiA0LjIgMTNsLTEgMy44em05LjktMTQuOWMuOC0uOCAyLS44IDIuOCAwTDE4LjEgNGMuOC44LjggMiAwIDIuOEw3LjggMTcuMmwtNS42IDEuNWMtLjUuMS0uOS0uMi0uNy0uN2wxLjQtNS43TDEzLjEgMS45eiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiMxYTJlM2IiCiAgICAgICAgICAgICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgYSB2aWRlbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImNhcnRfdG9wX25hdiIgY2xhc3M9InRvcG5hdl9jYXJ0X2J1dHRvbiI+PC9kaXY+CgogICAgICAgICAgICA8L2Rpdj48IS0tIC8udG9wbmF2X21lbnVfcmlnaHQgLS0+CiAgICAgICAgICAgIDwvZGl2PjwhLS0gLy50b3BuYXZfZGVza3RvcF93cmFwcGVyIC0tPgo8L2Rpdj4KCiAgICA8c2NyaXB0PgogICAgICAgIHZhciBpc01vYmlsZSA9IC9pcGhvbmV8aXBvZHxhbmRyb2lkfHdlYm9zfGJsYWNrYmVycnl8d2luZG93cyBwaG9uZS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTsKCiAgICAgICAgLy8gRE8gTk9UIFJFTU9WRS4gVGhpcyBpcyBhIGNhbGxiYWNrIGZvciB0aGUgbG9naW4gJiBqb2luIGJ1dHRvbnMgaW4gVG9wTmF2QnVpbGRlci4KICAgICAgICBmdW5jdGlvbiBjb21wbGV0ZVVzZXJMb2dpbihyZXNwb25zZSkgewogICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgIXJlc3BvbnNlLnNpZ251cCkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIGhhbmRsZVVwbG9hZEJ1dHRvbkNsaWNrKGV2ZW50KSB7CiAgICAgICAgICAgIC8vIE9wZW5zIHRoZSBhdXRoIG1vZGFsIGZvciBsb2dnZWQgb3V0IHVzZXJzCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgd2luZG93LnZpbWVvCiAgICAgICAgICAgICAgICYmIHdpbmRvdy52aW1lby5jb25maWcKICAgICAgICAgICAgICAgJiYgd2luZG93LnZpbWVvLk1vZGFsCiAgICAgICAgICAgICAgICYmICF3aW5kb3cudmltZW8uY3VyX3VzZXIKICAgICAgICAgICAgKXsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBpc01vYmlsZSA/IHdpbmRvdy5sb2NhdGlvbi5ocmVmPSIvdXBsb2FkIiA6IHZpbWVvLk1vZGFsLmNyZWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3hzbWFsbCcsCiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJy9qb2luP21vZGFsPW5ldyZyZWRpcmVjdD0vdXBsb2FkJywKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICA8L3NjcmlwdD4KCjxzY3JpcHQ+CiAgICB2YXIgc2VydmljZUVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNlcnZpY2VzX3dyYXBwZXInKTsKICAgIHZhciBoaWRkZW5TZXJ2aWNlRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2VydmljZXNfd3JhcHBlci5oaWRlJyk7CiAgICB2YXIgY291bnQgPSBzZXJ2aWNlRWxlbWVudHMubGVuZ3RoIC0gaGlkZGVuU2VydmljZUVsZW1lbnRzLmxlbmd0aDsKICAgIGlmIChjb3VudCA+IDIpIHsKICAgICAgICB2YXIgc2VydmljZUNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy50b3BuYXZfZGVza3RvcF9zb2x1dGlvbnMtLXNlcnZpY2VzX2NvbnRhaW5lcicpOwogICAgICAgIGlmIChzZXJ2aWNlQ29udGFpbmVyKSB7CiAgICAgICAgICAgIHNlcnZpY2VDb250YWluZXIuc3R5bGUud2lkdGggPSAnNDUwcHgnOwogICAgICAgIH0KICAgIH0KPC9zY3JpcHQ+Cgo8c2NyaXB0PgogICAgZnVuY3Rpb24gaGFuZGxlTmV3VmlkZW9DbGljaygpIHsKICAgICAgICBpZiAod2luZG93LnZpbWVvICYmIHdpbmRvdy52aW1lby5jdXJfdXNlcikgewogICAgICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICE9PSAnL3VwbG9hZCcpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy91cGxvYWQnOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgd2luZG93LnZpbWVvLk1vZGFsLmNyZWF0ZSh7IHNpemU6ICd4c21hbGwnLCBjb250ZW50OiAnL2pvaW4/bW9kYWw9bmV3JnJlZGlyZWN0PS91cGxvYWQnIH0pCiAgICAgICAgICAgICAgICAudGhlbihjb21wbGV0ZVVzZXJMb2dpbik7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGhhbmRsZUNyZWF0ZVZpZGVvQ2xpY2soZSwgaXNSZWNvcmRTY3JlZW4gPSBmYWxzZSkgewogICAgICAgIGlmICh3aW5kb3cudmltZW8gJiYgIXdpbmRvdy52aW1lby5jdXJfdXNlcikgewogICAgICAgICAgICBpZiAoIWlzUmVjb3JkU2NyZWVuKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CgogICAgICAgICAgICAgICAgd2luZG93LnZpbWVvLk1vZGFsLmNyZWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3hzbWFsbCcsCiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJy9qb2luP21vZGFsPW5ldyZyZWRpcmVjdD0vY3JlYXRlL3ZpZGVvLW1ha2VyJwogICAgICAgICAgICAgICAgfSkudGhlbihjb21wbGV0ZVVzZXJMb2dpbik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gdHJhY2tOZXdWaWRlb0Ryb3Bkb3duSW1wcmVzc2lvbihyZWNvcmRPcHRpb24pIHsKICAgICAgICBpZiAod2luZG93Ll9fZmEpIHsKICAgICAgICAgICAgd2luZG93Ll9fZmEucHVzaChbJ3RyYWNrRXZlbnQnLCB7CiAgICAgICAgICAgICAgICB0eXBlOiAnaW1wcmVzc2lvbicsCiAgICAgICAgICAgICAgICBjb250YWluZXI6ICd0b3BfbmF2JywKICAgICAgICAgICAgICAgIGNvbXBvbmVudDogJ25ld192aWRlbycsCiAgICAgICAgICAgIH1dKTsKCiAgICAgICAgICAgIGlmIChyZWNvcmRPcHRpb24pIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5fX2ZhLnB1c2goWyd0cmFja0V2ZW50JywgewogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbXByZXNzaW9uJywKICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6ICd0b3BfbmF2JywKICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICdyZWNvcmQnLAogICAgICAgICAgICAgICAgICAgIGtleXdvcmQ6IHJlY29yZE9wdGlvbiwKICAgICAgICAgICAgICAgIH1dKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KPC9zY3JpcHQ+Cgo8c2NyaXB0PgogICAgLyoqCiAgICAgKiBUaGlzIGlzIHBhcnQgb2YgYW4gQUIgRXhwZXJpbWVudAogICAgICogRXhwZXJpbWVudCBsaW5rOiBodHRwczovL3ZpbWVvLmNvbS9tb2R3b3JsZC9hYmxpbmNvbG4vNTI4CiAgICAgKiBFeHBlcmltZW50IHBhcmFtOiBzaG93X215X2RyYWZ0cwogICAgICovCiAgICB2YXIgc2hvd1ZhcmlhbnQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIHNob3dNeURyYWZ0czsKICAgICAgICBpZiAod2luZG93LkFCTGluY29sbiAmJiB3aW5kb3cuQUJMaW5jb2xuLmdldFRlc3QoJ0pTLlRvcG5hdi5NeURyYWZ0cycpLmdldCgnc2hvd19teV9kcmFmdHMnLCAnY29udHJvbCcpID09PSAndmFyaWFudCcpIHsKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdi1tYW5hZ2UtZHJhZnRzJykuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZScpOwogICAgICAgIH0KICAgIH07CiAgICBzaG93VmFyaWFudCgpOwo8L3NjcmlwdD4KCiAgICA8c2NyaXB0PgogICAgICAgIHZhciBhcnJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWNvcmRfYW5pbWF0aW9uX3dyYXBwZXInKTsKICAgICAgICB2YXIgbmV3VmlkZW9CdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVjb3JkX3RpcF93cmFwcGVyJyk7CgogICAgICAgIGlmIChhcnJvdykgewogICAgICAgICAgICBhcnJvdy5jbGFzc0xpc3QuYWRkKCdub19hbmltYXRpb24nKTsKICAgICAgICB9CgogICAgICAgIHZhciBpc0hvdmVyZWQgPSBmYWxzZTsKCiAgICAgICAgaWYgKG5ld1ZpZGVvQnRuICYmIGZhbHNlKSB7CiAgICAgICAgICAgIG5ld1ZpZGVvQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmIChpc0hvdmVyZWQpIHJldHVybjsKCiAgICAgICAgICAgICAgICBpc0hvdmVyZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGlmIChhcnJvdykgewogICAgICAgICAgICAgICAgICAgIGFycm93LmNsYXNzTGlzdC5yZW1vdmUoJ25vX2FuaW1hdGlvbicpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHN0b3JlX3JlY29yZF90aXBfc2V0dGluZ3MoMSk7CgogICAgICAgICAgICB9LCBmYWxzZSk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBzdG9yZV9yZWNvcmRfdGlwX3NldHRpbmdzKHZhbHVlKSB7CiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdQT1NUJywgJy9zZXR0aW5ncy9uYXZfcmVjb3JkZXJfdGlwJyk7CiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdYLVJlcXVlc3RlZC1XaXRoJywgJ1hNTEh0dHBSZXF1ZXN0Jyk7CiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7CiAgICAgICAgICAgIHhoci5zZW5kKCdyZWNvcmRfc2NyZWVuX3RpcF9zdGF0ZT0nICsgdmFsdWUgKyAnJnRva2VuPScgKyB2aW1lby54c3JmdCk7CgogICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGhhbmRsZS4gV2UgaG9wZSBmb3IgdGhlIGJlc3QgaW4gdGhpcyBjYXNlCiAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7fTsKICAgICAgICB9OwogICAgPC9zY3JpcHQ+CgoKICAgIAo8IS0tIFJlc3BvbnNpdmUgVG9wIE5hdiAoRXhwbG9yZSwgTE9IUCwgV2F0Y2gsIHRjKSAtLT4KPG5hdiBpZD0idG9wbmF2X21vYmlsZSIgY2xhc3M9InRvcG5hdl9tb2JpbGUgICAgbmF2X2Jhci0tbGkiIHJvbGU9ImJhbm5lciI+CgogICAgPGRpdiBjbGFzcz0idG9wbmF2X21vYmlsZV9iYXIiPgogICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgZGF0YS1hY3Rpb249Im1lbnUub3BlbiIgY2xhc3M9Im5hdmJhcl9oYW1idXJnZXIgbmF2X2Jhcl9pY29uIHRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9sZWZ0IGpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2xvZ28iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj4KICAgICAgICAgICAgICAgIDx0aXRsZT5NZW51PC90aXRsZT4KICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGUtNCIgZD0iTTcsOEgyNWExLDEsMCwwLDEsMSwxaDBhMSwxLDAsMCwxLTEsMUg3QTEsMSwwLDAsMSw2LDlINkExLDEsMCwwLDEsNyw4WiIgLz4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik03LDE1SDI1YTEsMSwwLDAsMSwxLDFoMGExLDEsMCwwLDEtMSwxSDdhMSwxLDAsMCwxLTEtMUg2QTEsMSwwLDAsMSw3LDE1WiIvPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTcsMjJIMjVhMSwxLDAsMCwxLDEsMWgwYTEsMSwwLDAsMS0xLDFIN2ExLDEsMCwwLDEtMS0xSDZBMSwxLDAsMCwxLDcsMjJaIi8+CiAgICAgICAgICAgIDwvc3ZnPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbmF2X2FjdGlvbl9idXR0b25zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii8vdmltZW8uY29tL3NlYXJjaCIgY2xhc3M9InRvcG5hdl9tb2JpbGVfYnV0dG9uIHRvcG5hdl9tb2JpbGVfcHVsbF9yaWdodCB0b3BuYXZfbW9iaWxlX2hlYWRlcl9zZWFyY2giPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im5hdl9iYXJfc2VhcmNoX2ljb24gbmF2X2Jhcl9pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5TZWFyY2g8L3RpdGxlPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjYuNzQsMjUuMzJsLTQuNTMtNC41M2ExLDEsMCwwLDAtLjIxLS4xNEE5LDksMCwxLDAsMjAuNjUsMjJhMSwxLDAsMCwwLC4xNC4yMWw0LjUzLDQuNTNhMSwxLDAsMCwwLDEuNDEtMS40MVpNMTUsMjJhNyw3LDAsMSwxLDctN0E3LDcsMCwwLDEsMTUsMjJaIi8+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iY2FydF90b3BfbmF2X21vYmlsZSIgY2xhc3M9InRvcG5hdl9jYXJ0X2J1dHRvbiI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8IS0tIFZpbWVvIExvZ28gLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdl9iYXJfdGl0bGUganMtbmF2X2Jhcl90aXRsZSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3ZpbWVvLmNvbSIgZ3RtLWRhdGEtY2xpY2s9Im1vYmlsZV9uYXZfaG9tZV9sb2dvX2NsaWNrIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNDQxIDEyNC42ODIiIHdpZHRoPSI4NnB4IiBoZWlnaHQ9IjI3cHgiPgogICAgICAgICAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMjAuNDgxLDI3LjMyNmM1LjQ2MiwwLDEwLjE4OC0xLjkxLDE0LjE3NC01LjcyOGMzLjU0Ny0zLjM3OSw1LjM5Mi02LjkwNiw1LjU0LTEwLjU4M2MwLjE0My0yLjQ5Mi0wLjgxNS00Ljk1MS0yLjg4LTcuMzc4QzEzNS4yNDQsMS4yMTcsMTMyLjY2MiwwLDEyOS41NjIsMGMtNS4zMiwwLTEwLjE1NSwxLjc2Ny0xNC41MTEsNS4yODhjLTQuMzU2LDMuNTI3LTYuNjA4LDcuMjA0LTYuNzUsMTEuMDIyQzEwOC4wMDIsMjMuNjU2LDExMi4wNjcsMjcuMzI2LDEyMC40ODEsMjcuMzI2eiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQzNC4wNzksNTAuMTZjLTUuMzE5LTYuOTI1LTEzLjE0NS0xMC4zOTUtMjMuNDc1LTEwLjM5NWMtMTYuMDk3LDAtMjkuNDU1LDUuODk2LTQwLjA4MywxNy42ODhjLTkuOTAyLDEwLjYxNC0xNC40NzgsMjIuMjY1LTEzLjczMywzNC45NDRjMC4wNDksMC45MzIsMC4xMzIsMS44NCwwLjIyOSwyLjczOGMtMC41NTQsMC4yNDEtMS4wOTMsMC40ODMtMS42NjIsMC43MjRjLTEyLjU1Niw1LjQxMS0yNC4xNDcsOC4xMS0zNC43NzUsOC4xMWMtNS4zMiwwLTkuMzA3LTEuODM5LTExLjk2LTUuNTIxYzE0LjMxNi0yLjM1NSwyNi4yMDYtNy44NzYsMzUuNjYyLTE2LjU2OGM4Ljg1NC03Ljk1NSwxMi45ODktMTUuNjg5LDEyLjQtMjMuMTk3Yy0wLjg4Ny0xMS43OC04LjU2Mi0xNy42NzYtMjMuMDM0LTE3LjY3NmMtMTUuNjUsMC0yOS4yMzUsNS45MDktNDAuNzUsMTcuNzE0Yy0xMC40ODQsMTAuNzgzLTE1LjgwNSwyMi4xNDgtMTUuOTQ3LDM0LjEwM2MtMC4wNCwyLjAwNSwwLjA2NiwzLjkzMiwwLjMsNS43ODljLTIuNDc3LDEuNjMyLTQuMzUyLDIuNDU2LTUuNjEzLDIuNDU2Yy0yLjgxLDAtNC41NzYtMC41ODItNS4zMTQtMS43NmMtMC43MzctMS4xNzgtMS4wMzUtMy4zMDgtMC44ODctNi40MDFjMC0xLjE3OCwwLjkxOS01LjY5NSwyLjc3MS0xMy41NjVjMS44NDUtNy44NywyLjg0MS0xMy44NjQsMi45OS0xNy45ODdjMC4yOTEtNi4wMjUtMC44OTQtMTAuNjYtMy41NDctMTMuODk2Yy0zLjEwMS0zLjk3NC04LjE5NC01LjY2My0xNS4yODEtNS4wNzRjLTUuOTAyLDAuNDQ3LTExLjU5MiwyLjY2LTE3LjA1NCw2LjY0N2MtMy4yNDksMi4zNjMtNi41NjksNS41MzQtOS45NjEsOS41MjFjLTEuMTg1LDEuMDM2LTIuMjkxLDItMy4zMjcsMi44OGMwLjE0My02LjA1MS0xLjAzNi0xMC43MDUtMy41NC0xMy45NTRjLTMuMTA3LTMuOTg3LTguMjcyLTUuNjgzLTE1LjUwOC01LjA5NGMtOC40MTUsMC43MzgtMTYuMDIsNC4wNjUtMjIuODA5LDkuOTY3Yy0yLjk1OCwyLjUxMS01LjU0LDUuNDY5LTcuNzUzLDguODYxYzAuMjkxLTEuMzI3LDAuNDQtMi43MzEsMC40NC00LjIwN2MwLTQuNTc2LTEuMTg1LTguNjAyLTMuNTQ3LTEyLjA3MXMtNS40NjItNS4wNTUtOS4zMDEtNC43NTdjLTIuMjEzLDAuMTQ5LTYuNDIsMy4xMDEtMTIuNjIxLDguODU0Yy04LjU2OSw3Ljk3NC0xMy4yMTYsMTIuMjU5LTEzLjk1NCwxMi44NDFsNS4zMTMsNS45OGM0LjEzNi0yLjk4NCw2LjY0Ny00LjQ3OSw3LjUzNC00LjQ3OWMxLjYxOCwwLDIuMjg1LDEuMzI3LDEuOTk0LDMuOTc1Yy0wLjE0MywzLjgzMS0wLjgyMiw5LjE2NC0yLjAzOSwxNi4wMTJjLTAuNzU0LDQuMjQzLTEuMjk4LDcuOTA0LTEuNjM4LDEwLjk4OGMtMC4wNjYsMC4wNTUtMC4xMjksMC4xMDktMC4xOTYsMC4xNjRjLTUuMzIsNC4zNzUtOS4wMDksNi41NTYtMTEuMDc0LDYuNTU2Yy00LjcyNSwwLTcuMDE2LTMuMTU4LTYuODY3LTkuNDg4YzIuMjEzLTEzLjgyNCw0LjI4NS0yNS4yMjIsNi4yMDctMzQuMTk5YzAuNTgzLTUuMjk0LTAuMjY2LTkuNTkyLTIuNTUtMTIuOTA2Yy0yLjI5MS0zLjMxNC01Ljg3LTQuNzQ0LTEwLjczNy00LjMwNGMtMy4xMDcsMC4yOTgtNy44MzIsMy4yNDktMTQuMTgxLDguODZjLTIuMjA1LDItNC40MSwzLjk5Ni02LjYxNSw1Ljk5M2MtMC40MzctMTAuNDQ3LTUuMjA0LTE1LjgyMi0xNC4zMjktMTYuMDljLTEzLjY2OS0wLjQ0LTIyLjkzMSw3LjI3NS0yNy43NzksMjMuMTU4YzIuNTA0LTEuMDc0LDQuOTM4LTEuNjE4LDcuMzAxLTEuNjE4YzUuMDE2LDAsNy4yMjksMi44MjIsNi42NCw4LjQ1M2MtMC4yOTcsMy40MTEtMi41MTEsOC4zNzUtNi42NCwxNC44OTljLTQuMTM2LDYuNTIzLTcuMjM2LDkuNzg2LTkuMzAxLDkuNzg2Yy0yLjY2LDAtNS4wOTQtNS4wMjMtNy4zMDctMTUuMDgxYy0wLjc0NS0yLjk1MS0yLjA3MS0xMC40OTEtMy45ODctMjIuNjE0Yy0xLjc3My0xMS4yMzYtNi40OTktMTYuNDg1LTE0LjE3NC0xNS43NDdjLTMuMjQ5LDAuMjk4LTguMTIzLDMuMjQ5LTE0LjYxNCw4Ljg2QzkuNjY5LDUzLjMxOCw0Ljg2Nyw1Ny41OTcsMCw2MS44NzVsNC42NDEsNS45OGM0LjQyLTMuMDk0LDcuMDAzLTQuNjQ3LDcuNzQxLTQuNjQ3YzMuMzg1LDAsNi41NSw1LjMxMyw5LjUwMSwxNS45MjljMi42NTMsOS43MzMsNS4zMDcsMTkuNDY4LDcuOTYxLDI5LjIwMmMzLjk3NCwxMC42MjEsOC44NDEsMTUuOTI5LDE0LjU4OCwxNS45MjljOS4yODEsMCwyMC42MjctOC43MTksMzQuMDM4LTI2LjE1NEM4Ny44OTIsODUuOTg3LDkzLjk5LDc1Ljc0LDk2LjgsNjcuMzU0YzMuNzItMi43NDgsNi4wMTgtNC4xNDYsNi44NTMtNC4xNDZjMi42NTMsMCwzLjk4NywxLjkyMiwzLjk4Nyw1Ljc1NGMwLDAuNzM4LTEuNDQzLDYuMi00LjMyNCwxNi4zODFjLTIuODgsMTAuMTgyLTQuMzk1LDE3LjcwOS00LjUzNywyMi41NzVjLTAuMTQ5LDQuNzI2LDAuOTk3LDguNTU3LDMuNDMsMTEuNTA4YzIuNDM0LDIuOTUyLDUuOTQxLDQuNDI4LDEwLjUyNCw0LjQyOGM5Ljg5LDAsMTkuNzc5LTQuMjc4LDI5LjY3NS0xMi44MzVjMC44ODEtMC43NzIsMS43MzgtMS41NTcsMi41NzMtMi4zNTJjMC43ODMsMy4zMTIsMi4xMjQsNi4wNDUsNC4wNyw4LjE1YzQuMjU5LDQuNTY5LDExLjQ1Niw2LjcwNiwyMS41OTIsNi40MDhjLTEuMzUzLTMuMjQ5LTEuODg0LTkuMDAzLTEuNTg2LTE3LjI3NGMwLjQ0LTkuMTUyLDIuODA5LTE3Ljk0MSw3LjA5NC0yNi4zNTVzOC4yNzgtMTIuNjI3LDExLjk4LTEyLjYyN2M0LjI4NSwwLDYuMjg1LDIuNzMxLDUuOTg3LDguMTkzYy0wLjE0OSwzLjY5Ni0wLjg3NCw3LjkwMy0yLjE3NSwxMi42MjhjLTEuMzA3LDQuNzI1LTIuMDMyLDkuNDQ5LTIuMTc0LDE0LjE3NGMtMC4yOTgsNy41MzQsMS4zOTIsMTIuOTE5LDUuMDgxLDE2LjE2OGM0LjExNiwzLjY4OSwxMS4zMzQsNS4zOTIsMjEuNjM4LDUuMDk0Yy0xLjU0MS0zLjM5Mi0yLjE2Mi04LjI2Ni0xLjg2NC0xNC42MjFjMC40NC05LjAwMywzLjQ4Mi0xOC4zMDQsOS4xMTMtMjcuOTAyYzUuMzMzLTkuMTUxLDkuOTIyLTEzLjczMywxMy43NzItMTMuNzMzYzMuNTYsMCw1LjI2MywyLjgwOSw1LjExMyw4LjQxNGMtMC4xNDgsMy42ODgtMS4wNzQsOC44NTQtMi43NzEsMTUuNDk0Yy0xLjY5NSw2LjY0MS0yLjYyMSwxMi4zMTYtMi43NjQsMTcuMDQxYy0wLjI5NywxMC42MjgsNC4zNSwxNS45MzYsMTMuOTU1LDE1LjkzNmM5Ljg4OSwwLDE5Ljc3OS00LjI3OCwyOS42NzUtMTIuODM1YzAuMTY0LTAuMTQ0LDAuMzE2LTAuMjkzLDAuNDc5LTAuNDM4YzAuMzQsMC41ODYsMC42ODgsMS4xNjgsMS4wNjgsMS43MzJjNS4xNjUsNy45NjcsMTMuNzM0LDExLjk1NCwyNS42OTUsMTEuOTU0YzE2LjA5LDAsMzEuOTY2LTQuNDkyLDQ3LjYxNi0xMy40ODhjMS43NTYtMC45OSwzLjQyMi0xLjk3OSw1LjAxNy0yLjk3YzAuOTg2LDEuOTkxLDIuMTM4LDMuODY2LDMuNTAyLDUuNTkxYzYuMDUyLDcuNTIxLDE0LjkxMiwxMS4yODEsMjYuNTc1LDExLjI4MWMxNC4wMjUsMCwyNS43NjctNC45MzgsMzUuMjE2LTE0LjgxNWM5LjQ0OS05Ljg3NiwxNC40NjYtMjEuNTk4LDE1LjA2MS0zNS4xNjNDNDQxLjM4Nyw2NC42ODQsNDM5LjEwMiw1Ni41MDMsNDM0LjA3OSw1MC4xNnogTTMwNS4xMTgsOTAuMDAzYy0wLjA4NC0xLjkwOS0wLjA4NC0yLjg2NywwLTIuODY3YzAuMTQzLTUuNTc5LDIuNTA1LTExLjQxNyw3LjA3NC0xNy41MTRzOS4wNjItOS4xNDYsMTMuNDg4LTkuMTQ2YzMuMzkyLDAsNS4wMSwxLjk4Nyw0Ljg2Nyw1Ljk0OGMtMC4xNDksMi45MzgtMi4zNjIsNi43NjQtNi42MzQsMTEuNDYyQzMxOC42MDYsODMuMzI0LDMxMi4zNDEsODcuMzYyLDMwNS4xMTgsOTAuMDAzeiBNNDE1LjkxOCw3My44NjhjLTAuMjk3LDcuMS0yLjQzNCwxMy45MDItNi40MiwyMC40MTNjLTQuNzI1LDcuODQ1LTEwLjQxNCwxMS43Ni0xNy4wNTUsMTEuNzZjLTIuOTU4LDAtNS4yNDktMS42MjQtNi44NjctNC44OGMtMS40NzYtMi44MDktMi4xNDItNi4wNjQtMS45OTMtOS43NjdjMC4yOTEtNy41NCwyLjUwNS0xNC42NCw2LjY0Ny0yMS4zYzQuODY2LTguMTM2LDExLjA2Ny0xMi4yMDcsMTguNjAxLTEyLjIwN2MyLjM1NiwwLDQuMTY4LDEuNjcsNS40MjQsNC45OTdTNDE2LjA2Nyw2OS44NzUsNDE1LjkxOCw3My44Njh6Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnUganMtdG9wbmF2X21vYmlsZV9tZW51X21haW4iPgogICAgICAgIDxkaXYgY2xhc3M9InRvcG5hdl9tb2JpbGVfYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBkYXRhLWd0bS1jbGljaz0ibW9iaWxlX25hdl9tZW51X2Nsb3NlX2NsaWNrIiBjbGFzcz0ibWVudV9jbG9zZSBwdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfY2xvc2UiPgogICAgICAgICAgICAgICAgPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMTAuNDlweCIKICAgICAgICAgICAgICAgIAkgaGVpZ2h0PSIxMC40OXB4IiB2aWV3Qm94PSIwIDAgMTAuNDkgMTAuNDkiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDEwLjQ5IDEwLjQ5OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iY2xvc2VfMV8iPgogICAgICAgICAgICAgICAgCTxnPgogICAgICAgICAgICAgICAgCQk8ZyBpZD0iR3JvdXBfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYuNTAwMDAwLCA2LjUwMDAwMCkiPgogICAgICAgICAgICAgICAgCQkJPHBhdGggaWQ9IlJlY3RhbmdsZS00XzFfIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgZD0iTTMuNjktNi4yMUwzLjY5LTYuMjFjMC4zOSwwLjM5LDAuMzksMS4wMiwwLDEuNDFsLTguNDksOC40OQogICAgICAgICAgICAgICAgCQkJCWMtMC4zOSwwLjM5LTEuMDIsMC4zOS0xLjQxLDBsMCwwYy0wLjM5LTAuMzktMC4zOS0xLjAyLDAtMS40MWw4LjQ5LTguNDlDMi42Ny02LjYsMy4zLTYuNiwzLjY5LTYuMjF6Ii8+CiAgICAgICAgICAgICAgICAJCQk8cGF0aCBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgZD0iTS02LjIxLTYuMjFMLTYuMjEtNi4yMWMwLjM5LTAuMzksMS4wMi0wLjM5LDEuNDEsMGw4LjQ5LDguNDljMC4zOSwwLjM5LDAuMzksMS4wMiwwLDEuNDFsMCwwCiAgICAgICAgICAgICAgICAJCQkJYy0wLjM5LDAuMzktMS4wMiwwLjM5LTEuNDEsMGwtOC40OS04LjQ5Qy02LjYtNS4xOC02LjYtNS44Mi02LjIxLTYuMjF6Ii8+CiAgICAgICAgICAgICAgICAJCTwvZz4KICAgICAgICAgICAgICAgIAk8L2c+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgPC9idXR0b24+CgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICBkYXRhLWFjdGlvbj0ibWVudS5zZXR0aW5ncy5vcGVuIgogICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9Im1vYmlsZV9uYXZfc2V0dGluZ3NfY2xpY2siCiAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzZXR0aW5ncyIKICAgICAgICAgICAgICAgIGNsYXNzPSJtZW51X3NldHRpbmdzIHB1bGxfcmlnaHQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluZ3MiCiAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE4Ljg2cHgiCiAgICAgICAgICAgICAgICAJIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDE4Ljg2IDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxOC44NiAyMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgPGcgaWQ9ImdlYXJfMV8iPgogICAgICAgICAgICAgICAgCTxnPgogICAgICAgICAgICAgICAgCQk8ZyBpZD0iSWNvbl8xXyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS4wMDAwMDAsIDUuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAJCQk8ZyBpZD0iR3JvdXAtMTBfMV8iPgogICAgICAgICAgICAgICAgCQkJPC9nPgogICAgICAgICAgICAgICAgCQk8L2c+CiAgICAgICAgICAgICAgICAJCTxwYXRoIGlkPSJDb21iaW5lZC1TaGFwZV8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0xMiw0LjU4bC0wLjU3LTAuMjdWMS45OWMwLTAuNTQtMC40NS0wLjk5LTEtMC45OWgtMmMtMC41NSwwLTEsMC40NS0xLDAuOTl2Mi4zMQogICAgICAgICAgICAgICAgCQkJTDYuODYsNC41OGMtMC4yOSwwLjE0LTAuNTcsMC4zLTAuODQsMC40OEw1LjUsNS40MkwzLjQ5LDQuMjZDMy4wMiwzLjk5LDIuNDEsNC4xNiwyLjE0LDQuNjNsLTEsMS43NAogICAgICAgICAgICAgICAgCQkJQzAuODYsNi44NCwxLjAyLDcuNDYsMS40OSw3LjczTDMuNSw4Ljg5TDMuNDUsOS41MkMzLjQ0LDkuNjgsMy40Myw5Ljg0LDMuNDMsMTBzMC4wMSwwLjMyLDAuMDIsMC40OGwwLjA1LDAuNjNsLTIuMDEsMS4xNgogICAgICAgICAgICAgICAgCQkJYy0wLjQ3LDAuMjctMC42MywwLjg4LTAuMzYsMS4zNmwxLDEuNzRjMC4yNywwLjQ4LDAuODksMC42NCwxLjM2LDAuMzdsMi4wMS0xLjE2bDAuNTIsMC4zNmMwLjI3LDAuMTgsMC41NSwwLjM1LDAuODQsMC40OAogICAgICAgICAgICAgICAgCQkJbDAuNTcsMC4yN3YyLjMxYzAsMC41NCwwLjQ1LDAuOTksMSwwLjk5aDJjMC41NSwwLDEtMC40NSwxLTAuOTl2LTIuMzFMMTIsMTUuNDJjMC4yOS0wLjE0LDAuNTctMC4zLDAuODQtMC40OGwwLjUyLTAuMzYKICAgICAgICAgICAgICAgIAkJCWwyLjAxLDEuMTZjMC40NywwLjI3LDEuMDgsMC4xMSwxLjM2LTAuMzdsMS0xLjc0YzAuMjctMC40OCwwLjExLTEuMDktMC4zNi0xLjM2bC0yLjAxLTEuMTZsMC4wNS0wLjYzCiAgICAgICAgICAgICAgICAJCQljMC4wMS0wLjE2LDAuMDItMC4zMiwwLjAyLTAuNDhzLTAuMDEtMC4zMi0wLjAyLTAuNDhsLTAuMDUtMC42M2wyLjAxLTEuMTZjMC40Ny0wLjI3LDAuNjMtMC44OCwwLjM2LTEuMzZsLTEtMS43NAogICAgICAgICAgICAgICAgCQkJYy0wLjI3LTAuNDgtMC44OS0wLjY0LTEuMzYtMC4zN2wtMi4wMSwxLjE2bC0wLjUyLTAuMzZDMTIuNTcsNC44OCwxMi4yOSw0LjcyLDEyLDQuNTh6Ii8+CiAgICAgICAgICAgICAgICAJCTxjaXJjbGUgaWQ9Ik92YWxfMV8iIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjI7IiBjeD0iOS40MyIgY3k9IjEwIiByPSIyIi8+CiAgICAgICAgICAgICAgICAJPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIDx1bCBpZD0ibWVudV9saXN0IiBjbGFzcz0ibWVudV9saXN0X2xvZ2dlZF9vdXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6am9pbiIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfam9pbl9jbGljayIgaWQ9ImpzLWpvaW4tbGluayIgaHJlZj0iLy92aW1lby5jb20vam9pbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fam9pbiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE2cHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9IjAgMCAxNiAyMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTYgMjA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iam9pbi1sb2ctaW5fMV8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtOF8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGN4PSI4IiBjeT0iNSIgcj0iNCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9IlJlY3RhbmdsZS0yNV8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0xLDE5aDE0di0zYzAtMi4yMS0xLjc5LTQtNC00SDVjLTIuMjEsMC00LDEuNzktNCw0VjE5eiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpvaW4gb3IgbG9nIGluICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSAgaWQ9ImpzLWZlYXR1cmVzLWxpbmsiIGNsYXNzPSJmZWF0dXJlcy1sYWJlbCIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl9ob3N0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDIwIDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAyMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJmZWF0dXJlc18xXyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwLTJfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJSZWN0YW5nbGUtOF8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0xLTFoMTBjMS4xLDAsMiwwLjksMiwydjEwYzAsMS4xLTAuOSwyLTIsMkgxYy0xLjEsMC0yLTAuOS0yLTJWMUMtMS0wLjEtMC4xLTEsMS0xeiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJQYXRoLTVfMV8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRkZGRkY7IiBkPSJNMy42LDMuNTFjMC0wLjU1LDAuMzktMC43NywwLjg2LTAuNWw0LjI4LDIuNWMwLjQ3LDAuMjgsMC40OCwwLjczLDAsMS4wMUw0LjQ2LDkuMDgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQzMuOTgsOS4zNiwzLjYsOS4xNSwzLjYsOC41OUwzLjYsMy41MXoiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXBfMV8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuMDAwMDAwLCAzLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0iUGFnZS0xXzFfIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojRkZGRkZGOyIgZD0iTTExLDE1YzIuMjEsMCw0LTEuNzksNC00VjBjMC0xLjExLTAuOS0yLTItMnYxM2MwLDEuMS0wLjksMi0yLDJILTJjMCwxLjEsMC44OSwyLDIsMkgxMXoiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZWF0dXJlcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6dmlkZW9fcGxheWVyIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9mZWF0dXJlc192aWRlb19wbGF5ZXIiIGhyZWY9Ii8vdmltZW8uY29tL2ZlYXR1cmVzL3ZpZGVvLXBsYXllciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvIHBsYXllciAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6bGl2ZV9zdHJlYW1pbmciIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2ZlYXR1cmVzX2xpdmVfc3RyZWFtaW5nIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy9saXZlc3RyZWFtaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl91cGxvYWQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjAgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGl2ZSBzdHJlYW1pbmcgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjp0b3BfbmF2fGNvbXBvbmVudDpzdG9jayIgIiBocmVmPSIvL3ZpbWVvLmNvbS9zdG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b2NrIHZpZGVvcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icmVlemUtaWdub3JlIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOnRvcF9uYXZ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6cHJpdmFjeSIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfZmVhdHVyZXNfcHJpdmFjeSIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tcHJpdmFjeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcml2YWN5ICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpkaXN0cmlidXRpb24iIGRhdGEtZ3RtLWNsaWNrPSJ0b3BfbmF2X2ZlYXR1cmVzX2Rpc3RyaWJ1dGlvbiIgaHJlZj0iLy92aW1lby5jb20vZmVhdHVyZXMvdmlkZW8tbWFya2V0aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im1lbnVfaWNvbl91cGxvYWQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyMHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjAgMTYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIwIDE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzdHJpYnV0aW9uICYgTWFya2V0aW5nICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpob3N0aW5nIiBkYXRhLWd0bS1jbGljaz0idG9wX25hdl9mZWF0dXJlc19ob3N0aW5nIiBocmVmPSIvL3ZpbWVvLmNvbS9mZWF0dXJlcy9vbmxpbmUtdmlkZW8taG9zdGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvc3RpbmcgJiBNYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6aW5zcGlyYXRpb258a2V5d29yZDp3YXRjaCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfaW5zcGlyYXRpb25fd2F0Y2giIGlkPSJqcy1pbnNwaXJhdGlvbi1saW5rIiAgaHJlZj0iLy92aW1lby5jb20vd2F0Y2giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3dhdGNoIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTRweCIgdmlld0JveD0iMCAwIDIwIDE0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJpbnNwaXJhdGlvbl8xXyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwXzFfIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzLjAwMDAwMCwgNi4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0iT3ZhbF8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjtzdHJva2UtbGluZWpvaW46cm91bmQ7IiBkPSJNNyw3YzMuMzEsMCw2LjMxLTIsOS02Yy0yLjY5LTQtNS42OS02LTktNlMwLjY5LTMtMiwxQzAuNjksNSwzLjY5LDcsNyw3eiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMl8xXyIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjsiIGN4PSI3IiBjeT0iMSIgcj0iMyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BpcmF0aW9uICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJyZWV6ZS1pZ25vcmUgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxrZXl3b3JkOnVwbG9hZCIgZGF0YS1ndG0tY2xpY2s9InRvcF9uYXZfdXBsb2FkX2NsaWNrIiBpZD0ianMtdXBsb2FkLWxpbmsiIGhyZWY9Ii8vdmltZW8uY29tL3VwbG9hZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtZW51X2ljb25fdXBsb2FkIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDIwIDE2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAxNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJ1cGxvYWRfMV8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxLjAwMDAwMCwgMS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJDb21iaW5lZC1TaGFwZV8xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIGQ9Ik0wLDEwYzAsMi4xNywxLjk2LDQsNCw0aDEwYzIuMDQsMCw0LTEuNzYsNC0zLjk0YzAtMS43OS0wLjgtMy4yOC0xLjk5LTQuMDcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDMTYuMDEsMS43OSwxMy40OSwwLDExLDBDOS4wOCwwLDcuMjQsMS4xOSw2LjU5LDNDMy44MiwzLjAxLDIuNTcsNC43MSwyLjA3LDYuNTJDMS4wOCw3LjAyLDAsOC4yNiwwLDEweiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZV8xXyIgeD0iOCIgeT0iOCIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjsiIHdpZHRoPSIyIiBoZWlnaHQ9IjYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBpZD0iUGF0aC0xM18xXyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjsiIHBvaW50cz0iNiwxMCA5LDcgMTIsMTAgICAgICAgIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6dG9wX25hdnxjb21wb25lbnQ6dXBncmFkZSIgZGF0YS1ndG0tY2xpY2s9Im1vYmlsZV9uYXZfdXBncmFkZV9jbGljayIgaWQ9ICJqcy11cGdyYWRlLWxpbmsiIGNsYXNzPSIiIGhyZWY9Ii8vdmltZW8uY29tL3VwZ3JhZGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibWVudV9pY29uX3VwZ3JhZGUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIiB3aWR0aD0iMzJweCIgaGVpZ2h0PSIzMnB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNCw3SDE1VjloNi41OEw3LjI5LDIzLjI5bDEuNDEsMS40MUwyMywxMC40MVYxN2gyVjhBMSwxLDAsMCwwLDI0LDdaIiBmaWxsPSIjZmZmZmZmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGdyYWRlICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICA8L2Rpdj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InRvcG5hdl9tb2JpbGVfbWVudSB0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3MganMtdG9wbmF2X21vYmlsZV9tZW51X3NldHRpbmdzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2JhciBzdWJtZW51Ij4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idG9wbmF2X21vYmlsZV9idXR0b24gdG9wbmF2X21vYmlsZV9wdWxsX2xlZnQganMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluc19jbG9zZSB0b3BuYXZfaWNvbl9tb2JpbGVfYXJyb3dsZWZ0X2IiPiA8L2J1dHRvbj4KICAgICAgICAgICAgPGgxIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX2hlYWRlcl90aXRsZSBzdWJtZW51Ij5Nb3JlIHN0dWZmPC9oMT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPHVsIGNsYXNzPSJtZW51X2xpc3Rfc2V0dGluZ3NfbG9nZ2VkX291dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS90ZXJtcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXJtcyBvZiBTZXJ2aWNlICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9wcml2YWN5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaXZhY3kgUG9saWN5ICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249Im1lbnUuY2xvc2UiIGNsYXNzPSIgIiBocmVmPSIvL3ZpbWVvLmNvbS9kbWNhIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYWN0aW9uPSJtZW51LmNsb3NlIiBjbGFzcz0iICIgaHJlZj0iLy92aW1lby5jb20vY29va2llX3BvbGljeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb29raWVzICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1hY3Rpb249ImRlc2t0b3AiIG9uY2xpY2s9InZpbWVvLm1vYmlsZS5kZXNrdG9wX3NoYXJlZC5fczJkcygpOyByZXR1cm4gZmFsc2UiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNrdG9wIHNpdGUgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBsYW5ndWFnZSBocmVmPSIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBvbmNoYW5nZT0idmltZW8ubW9iaWxlLmRlc2t0b3Bfc2hhcmVkLl9zMmwodGhpcykiIHRpdGxlPSJDaG9vc2UgYSBkaWZmZXJlbnQgbGFuZ3VhZ2UiIGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfc2V0dGluZ3NfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBjbGFzcz0ic2VsZWN0ZWQiIHNlbGVjdGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9ImVuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmdsaXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXNwYcOxb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9ImRlLURFIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJzZWxlY3RfbGFuZ3VhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXV0c2NoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJmci1GUiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnYWlzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJqYS1KUCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5pel5pys6KqeICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSJwdC1CUiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0ic2VsZWN0X2xhbmd1YWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9ydHVndcOqcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT0ia28tS1IiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9InNlbGVjdF9sYW5ndWFnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIO2VnOq1reyWtCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29tL2ZhcSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQVEgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWFjdGlvbj0ibWVudS5jbG9zZSIgY2xhc3M9IiAiIGhyZWY9Ii8vdmltZW8uY29taGVscC52aW1lby5jb20vaGMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVscCAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgoKICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BuYXZfbW9iaWxlX21lbnVfY29weXJpZ2h0Ij5UTSArIMKpIDIwMjAgVmltZW8sIEluYy48L2Rpdj4KICAgIDwvc2VjdGlvbj4KCgogICAgICAgIDwvbmF2PgoKPHNjcmlwdD4KKGZ1bmN0aW9uKHdpbmRvdywgZG9jdW1lbnQpewoKICAgIC8vIEdsb2JhbCB2YWx1ZXMKICAgIHdpbmRvdy52aW1lbyA9IHdpbmRvdy52aW1lbyB8fCB7fTsKICAgIHZpbWVvLm1vYmlsZSA9IHZpbWVvLm1vYmlsZSB8fCB7fTsKICAgIFZpbWVvID0gdmltZW8ubW9iaWxlIHx8IHt9OwogICAgVmltZW8uZGVza3RvcF9zaGFyZWQgPSBWaW1lby5kZXNrdG9wX3NoYXJlZCB8fCB7fTsKCiAgICAvLyBERVNLVE9QIEhBTkRMRVJTCgogICAgdmFyIGRlc2t0b3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9wbmF2X2Rlc2t0b3AnKTsKCiAgICAvLyBQcmV2ZW50IHRvdWNoIGRldmljZSB0byBoaWd0bGlnaHQgdGhlIGFyZWEgdGFwcGVkCiAgICBkZXNrdG9wLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBmdW5jdGlvbihlKXsKICAgICAgICAvLyBUYWtlIGludG8gY29uc2lkZXJhdGlvbiBhdmF0YXIgaW1nCiAgICAgICAgdmFyIHRhcmdldCA9IChlLnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbWcnKSA/IGUudGFyZ2V0LnBhcmVudE5vZGUgOiBlLnRhcmdldDsKCiAgICAgICAgaWYgKHRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3RvcG5hdl9oYXNfZHJvcGRvd24nKSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgfQogICAgfSwgZmFsc2UpOwoKICAgIC8vIEFkZCBsYXN0X3BhZ2UgY29va2llCiAgICB2YXIgbGlzdGVuID0gJ29udG91Y2hzdGFydCcgaW4gd2luZG93ID8gJ3RvdWNoc3RhcnQnIDogd2luZG93LlBvaW50ZXJFdmVudCA/ICdwb2ludGVyZG93bicgOiB3aW5kb3cuTVNQb2ludGVyRXZlbnQgPyAnTVNQb2ludGVyRG93bicgOiAnY2xpY2snOwogICAgZGVza3RvcC5hZGRFdmVudExpc3RlbmVyKGxpc3RlbiwgZnVuY3Rpb24oZSl7CiAgICAgICAgaWYgKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnanMtdG9wbmF2X21lbnVfYXV0aCcpKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9ICdsYXN0X3BhZ2U9JyArIGVuY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpICsgJztwYXRoPVwnL1wnO21heC1hZ2U9MTgwMDsnOwogICAgICAgIH0KICAgIH0sIGZhbHNlKTsKCiAgICAvLyBNT0JJTEUgSEFORExFUlMKCiAgICAvLyBUcmlnZ2VyIGlPUyBVcGxvYWQgZmxvdwogICAgVmltZW8uZGVza3RvcF9zaGFyZWQuX3VwbG9hZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAvLyBzaG93IGlUdW5lcyBvbmx5IGlmIHdlIGFyZSBpbiBpT1Mgd29ybGQKICAgICAgICBpZiAoL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpewogICAgICAgICAgICB2YXIgZGVlcGxpbmsgPSAndmltZW86Ly9hcHAudmltZW8uY29tL3VwbG9hZD9yZWY9bW9iaWxld2ViJywKICAgICAgICAgICAgICAgIGZhbGxiYWNrID0gJy91cGxvYWQnLAogICAgICAgICAgICAgICAgd2Via2l0SGlkZGVuQ2FsbGJhY2ssCiAgICAgICAgICAgICAgICBoaXRDYWxsYmFjazsKCiAgICAgICAgICAgIC8vIENhbGxiYWNrcwogICAgICAgICAgICB3ZWJraXRIaWRkZW5DYWxsYmFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgLy8gSWYgdGhlIHVzZXIgaXMgc3RpbGwgaGVyZSBvcGVuIHRoZSB1cmwgcGFnZS4KICAgICAgICAgICAgICAgIGlmICghZG9jdW1lbnQud2Via2l0SGlkZGVuKSB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gZmFsbGJhY2s7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CgogICAgICAgICAgICAvLyBUcnkgdG8gb3BlbiB0aGUgVmltZW8gQXBwCiAgICAgICAgICAgIGhpdENhbGxiYWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBkZWVwbGluazsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQod2Via2l0SGlkZGVuQ2FsbGJhY2ssIDI1KTsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGhpdENhbGxiYWNrKCk7CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBlLmhyZWY7CgogICAgfQoKCi8vIEFGVEVSIE1PQklMRSBOQVYgVEVTVCBSRUNPTkNJTEUgV0lUSCBUSEUgYG1vYmlsZV9tZW51X3NjcmlwdC5waHRtbGAKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8gU3dpdGNoIHRvIGRlc2t0b3Agc2l0ZQogICAgVmltZW8uZGVza3RvcF9zaGFyZWQuX3MyZHMgPSBmdW5jdGlvbigpIHsKICAgICAgICBkb2N1bWVudC5jb29raWU9J29wdF9vdXRfbW9iaWxlPTE7ZXhwaXJlcz1GcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVDtkb21haW49JyArIHZpbWVvLmRvbWFpbjsKICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICB9OwoKICAgIC8vIFN3aXRjaCB0byBsYW5ndWFnZQogICAgVmltZW8uZGVza3RvcF9zaGFyZWQuX3MybCA9IGZ1bmN0aW9uKHNlbCkgewogICAgICAgIHZhciBsYW5nID0gc2VsLnZhbHVlLAogICAgICAgICAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCAnL3NldHRpbmdzL2xvY2FsZScpOwogICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdYLVJlcXVlc3RlZC1XaXRoJywgJ1hNTEh0dHBSZXF1ZXN0Jyk7CiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTsKICAgICAgICB4aHIuc2VuZCgnbG9jYWxlPScgKyBsYW5nICsgJyZ0b2tlbj0nICsgdmltZW8ueHNyZnQpOwogICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiBwb3N0KCkgewogICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfTsKCiAgICB2YXIgbW9iaWxlTWVudUVsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9sb2dvJyk7CiAgICBpZiAobW9iaWxlTWVudUVsZSkgewogICAgICAgIG1vYmlsZU1lbnVFbGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CgogICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIC8vIE9wZW4gTWVudQogICAgICAgICAgICB2YXIgbW9iaWxlX21lbnVfbWFpbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX21lbnVfbWFpbicpOwogICAgICAgICAgICBtb2JpbGVfbWVudV9tYWluLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwoKICAgICAgICAgICAgLy8gQ2xvc2UgTWVudQogICAgICAgICAgICB2YXIgbW9iaWxlX2hlYWRlcl9jbG9zZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy10b3BuYXZfbW9iaWxlX2hlYWRlcl9jbG9zZScpOwogICAgICAgICAgICBtb2JpbGVfaGVhZGVyX2Nsb3NlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X21haW4uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBUb2dnbGUgU2V0dGluZ3MKICAgICAgICAgICAgdmFyIG1vYmlsZV9tZW51X3NldHRpbmdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfbWVudV9zZXR0aW5ncycpOwogICAgICAgICAgICB2YXIgdG9wbmF2MjAxNV9tb2JpbGVfaGVhZGVyX3NldHRpbmdzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX3NldHRpbmdzJyk7CiAgICAgICAgICAgIHRvcG5hdjIwMTVfbW9iaWxlX2hlYWRlcl9zZXR0aW5ncy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBtb2JpbGVfbWVudV9zZXR0aW5ncy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X21haW4uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgIHZhciB0b3BuYXYyMDE1X21vYmlsZV9oZWFkZXJfc2V0dGluZ3NfY2xvc2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9oZWFkZXJfc2V0dGluc19jbG9zZScpOwogICAgICAgICAgICAgICAgdG9wbmF2MjAxNV9tb2JpbGVfaGVhZGVyX3NldHRpbmdzX2Nsb3NlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X3NldHRpbmdzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgbW9iaWxlX21lbnVfbWFpbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKCiAgICAgICAgfSwgZmFsc2UpOwogICAgfTsKCiAgICB2YXIgbW9iaWxlQWxidW1zRWxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfaGVhZGVyX2FsYnVtcycpOwogICAgaWYgKG1vYmlsZUFsYnVtc0VsZSkgewogICAgICAgIG1vYmlsZUFsYnVtc0VsZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB2YXIgbW9iaWxlX21lbnVfYWxidW1zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRvcG5hdl9tb2JpbGVfYWxidW1fbGlzdCcpOwogICAgICAgICAgICBtb2JpbGVfbWVudV9hbGJ1bXMuY2xhc3NMaXN0LmFkZCgnb3BlbicpOwoKICAgICAgICAgICAgLy8gQ2xvc2UKICAgICAgICAgICAgdmFyIG1vYmlsZV9hbGJ1bXNfY2xvc2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdG9wbmF2X21vYmlsZV9hbGJ1bV9saXN0X2Nsb3NlJyk7CiAgICAgICAgICAgIGlmIChtb2JpbGVfYWxidW1zX2Nsb3NlKSB7CiAgICAgICAgICAgICAgICBtb2JpbGVfYWxidW1zX2Nsb3NlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIG1vYmlsZV9tZW51X2FsYnVtcy5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0sIGZhbHNlKTsKICAgIH07CgoKCi8vIF5eXl5eXl5eXl5eXl5eXl5eXl5eCi8vIEFGVEVSIE1PQklMRSBOQVYgVEVTVCBSRUNPTkNJTEUgV0lUSCBUSEUgYG1vYmlsZV9tZW51X3NjcmlwdC5waHRtbGAKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgIC8vIFVTRVIgTUVTU0FHRQoKICAgIC8vIFNob3cgbm90aWZpY2F0aW9uIGlmIGl0IGlzIHRoZSBjYXNlCiAgICAvLyBXZSB3cmFwIHRoaXMgaW4gYSBzZXRUaW1lb3V0IHNpbmNlIHRoZSBub3RpZmljYXRpb25zIHNob3VsZAogICAgLy8gaGF2ZSBhIGxvd2VyIHByaW9yaXR5IGluIHRlcm1zIG9mIHZpc3VhbCBjb21wYXJlZCB0byBvdGhlcgogICAgLy8gaXRlbXMgb24gdGhlIHBhZ2UuCiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgIC8vIERPTSBFbGVtZW50cwogICAgICAgIHZhciBhdmF0YXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9wbmF2X21lbnVfYXZhdGFyJyk7CiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYXZhdGFyIHRoZW4gc3RvcCBpdAogICAgICAgIGlmICghYXZhdGFyKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBidWJibGUgPSBhdmF0YXIucXVlcnlTZWxlY3RvcignLnRvcG5hdl9tZW51X2F2YXRhcl9idWJibGUnKTsKICAgICAgICB2YXIgZHJvcGRvd24gPSBhdmF0YXIucXVlcnlTZWxlY3RvcignI3RvcG5hdl91c2VyX2Ryb3Bkb3duJyk7CiAgICAgICAgLy92YXIgbWVzc2FnZSA9IGF2YXRhci5xdWVyeVNlbGVjdG9yKCcudG9wbmF2X3VzZXJfbWVudV9tZXNzYWdlJyk7CiAgICAgICAgLy92YXIgY2xvc2UgPSBhdmF0YXIucXVlcnlTZWxlY3RvcignLnRvcG5hdl91c2VyX21lbnVfbWVzc2FnZV9jbG9zZScpOwogICAgICAgIHZhciBvbl9ob3ZlciA9IGZhbHNlOwoKICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBidWJibGUgdGhlbiBzdG9wIGl0CiAgICAgICAgaWYgKGJ1YmJsZSkgewogICAgICAgICAgICBidWJibGUuY2xhc3NMaXN0LmFkZCgnb24nKTsKICAgICAgICB9CgogICAgICAgIC8vIEFuZCB3ZSBhdHRhY2ggaGlkZSB0aGUgYnViYmxlCiAgICAgICAgYXZhdGFyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAob25faG92ZXIpIHJldHVybjsKCiAgICAgICAgICAgIG9uX2hvdmVyID0gdHJ1ZTsKCiAgICAgICAgICAgIGlmIChidWJibGUpIHsKICAgICAgICAgICAgICAgIGJ1YmJsZS5jbGFzc0xpc3QucmVtb3ZlKCdvbicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTYXZlIHJlbW92ZWQgc3RhdGUgWzEgbWVhbnMgdGhlIHVzZXIgb3BlbiB0aGUgZHJvcGRvd25dCiAgICAgICAgICAgIHN0b3JlX3VzZXJfbWVzc2FnZV9zZXR0aW5ncygxKTsKCiAgICAgICAgfSwgZmFsc2UpOwoKICAgICAgICAvLyBTdG9yZSBzdGF0dXMgb2YgdXNlciBuYXYgbWVzc2FnZSAoYnViYmxlIGNsb3NlZCBbMV0sIG1lc3NhZ2UgaGlkZGVuIFsyXSkKICAgICAgICBmdW5jdGlvbiBzdG9yZV91c2VyX21lc3NhZ2Vfc2V0dGluZ3ModmFsdWUpIHsKICAgICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwoKICAgICAgICAgICAgeGhyLm9wZW4oJ1BPU1QnLCAnL3NldHRpbmdzL25hdicpOwogICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignWC1SZXF1ZXN0ZWQtV2l0aCcsICdYTUxIdHRwUmVxdWVzdCcpOwogICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpOwogICAgICAgICAgICB4aHIuc2VuZCgnbWVzc2FnZV9zdGF0ZT0nICsgdmFsdWUgKyAnJnRva2VuPScgKyB2aW1lby54c3JmdCk7CgogICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGhhbmRsZS4gV2UgaG9wZSBmb3IgdGhlIGJlc3QgaW4gdGhpcyBjYXNlCiAgICAgICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7fTsKICAgICAgICB9OwoKICAgIH0sIDEwMDApOwp9KSh3aW5kb3csIGRvY3VtZW50KTsKPC9zY3JpcHQ+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0id3JhcF9jb250ZW50IHZhcmlhbnQtdjIiPgogICAgICAgICAgICAgICAgCgoKCjxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9jb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0iZXhjZXB0aW9uX3NlY3Rpb24gZXhjZXB0aW9uX3NlY3Rpb24tLWluZm8iPgogICAgICAgIDxoMSBjbGFzcz0iZXhjZXB0aW9uX3RpdGxlIGlyaXNfaGVhZGVyIj5Tb3JyeSwgd2UgY291bGRu4oCZdCBmaW5kIHRoYXQgcGFnZTwvaDE+CgogICAgICAgIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9jb250ZW50Ij4KICAgICAgICAgICAgPHAgY2xhc3M9ImV4Y2VwdGlvbl9tZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24gaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbCI+CiAgICAgPGRpdiBjbGFzcz0iaXJpc19ub3RpZmljYXRpb24tLXVwc2VsbC1pY29uIj4KICAgICAgICAgPHNwYW4gY2xhc3M9ImlyaXNfaWMgaXMtLTE2Ij48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBkPSJNOCAxNmM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHpNNyA0aDJ2Mkg3VjR6bTAgM2gydjVIN1Y3eiIvPjwvc3ZnPjwvc3Bhbj4KICAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJpcmlzX25vdGlmaWNhdGlvbi1oZWFkZXIiPgogICAgICAgIDxzdHJvbmc+UmVhc29ucyB5b3UgbWlnaHQgYmUgc2VlaW5nIHRoaXMgcGFnZTwvc3Ryb25nPgogICAgPC9kaXY+CgogICAgPHVsIGNsYXNzPSJpcmlzX25vdGlmaWNhdGlvbi1saXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+SXQgZXhpc3RzLCBidXQgeW91IGRvbuKAmXQgaGF2ZSBwZXJtaXNzaW9uIHRvIHNlZSBpdCwgb3IgeW91IG5lZWQgdG8gPGEgb25jbGljaz0idmltZW8uU2Vzc2lvbi5jcmVhdGUoKSI+bG9nIGluPC9hPi48L2xpPgogICAgICAgICAgICAgICAgPGxpPk5vdGhpbmcgaGFzIGV2ZXIgZXhpc3RlZCBoZXJlLiBTcG9va3kuPC9saT4KICAgICAgICA8bGk+U29tZXRoaW5nIG9uY2UgbGl2ZWQgaGVyZSwgYnV0IGhhcyBiZWVuIGRlbGV0ZWQuPC9saT4KICAgIDwvdWw+CjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJleGNlcHRpb25fc2VhcmNoIiBhY3Rpb249Ii9zZWFyY2giIG1ldGhvZD0iZ2V0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJleGNlcHRpb25fc2VhcmNoLWlucHV0LXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtaW5wdXQgaXJpc19pbnB1dCBpcmlzX2lucHV0LS1zZWFyY2gganMtc2VhcmNoX2F1dG9jb21wbGV0ZSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCB2aWRlb3MsIHBlb3BsZSwgYW5kIG1vcmUiIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImV4Y2VwdGlvbl9zZWFyY2gtYnV0dG9uIGlyaXNfYnRuIGlyaXNfYnRuLS1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImlyaXNfYnRuLWNvbnRlbnQiPlNlYXJjaDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImV4Y2VwdGlvbl9hdXhpbGlhcnkiPjwvZGl2Pgo8L2Rpdj4KCiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjxmb290ZXIgY2xhc3M9ImZvb3Rlcl92MiBmb290ZXJfdjItLXJlc3BvbnNpdmUiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX3NpdGVtYXAiPgogICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX19saW5rcyI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogICAgICAgICAgICA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+VklNRU88L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3VwZ3JhZGUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19wcmljaW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnZpbWVvfGtleXdvcmQ6cHJpY2luZyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFByaWNpbmcgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvdXBsb2FkIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBsb2FkX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnZpbWVvfGtleXdvcmQ6dXBsb2FkIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2NoYW5uZWxzL3N0YWZmcGlja3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zdGFmZl9waWNrcyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp2aW1lb3xrZXl3b3JkOnN0YWZmX3BpY2tzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU3RhZmYgUGlja3MgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvb25kZW1hbmQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19vbl9kZW1hbmRfY2xpY2siCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dmltZW98a2V5d29yZDpvbl9kZW1hbmQiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBPbiBEZW1hbmQgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3ZpbWVvLmNvbS9vdHQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua192aW1lb19vdHQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dmltZW98a2V5d29yZDpvdHQiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBPVFQgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvc2l0ZV9tYXAiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19zaXRlX21hcF9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp2aW1lb3xrZXl3b3JkOnNpdGVfbWFwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU2l0ZSBtYXAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5TT0xVVElPTlM8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2ZlYXR1cmVzL3ZpZGVvLXBsYXllciIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ZpZGVvX3BsYXllciIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOnZpZGVvX3BsYXllciIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvIFBsYXllciAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9jcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19jcmVhdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpzb2x1dGlvbnN8a2V5d29yZDpjcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGUgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZmVhdHVyZXMvdmlkZW8tcHJpdmFjeSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3ByaXZhY3kiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDpwcml2YWN5IgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgUHJpdmFjeSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1jb2xsYWJvcmF0aW9uIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfY29sbGFib3JhdGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmNvbGxhYm9yYXRpb24iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBDb2xsYWJvcmF0aW9uICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2ZlYXR1cmVzL3ZpZGVvLW1hcmtldGluZyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2Rpc3RyaWJ1dGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpmZWF0dXJlc3xrZXl3b3JkOmRpc3RyaWJ1dGlvbiIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIERpc3RyaWJ1dGlvbiAmIG1hcmtldGluZyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1tb25ldGl6YXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19tb25ldGl6YXRpb24iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDptb25ldGl6YXRpb24iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBNb25ldGl6YXRpb24gICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvbGl2ZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX2xpdmVfc3RyZWFtaW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6bGl2ZV9zdHJlYW1pbmciCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBMaXZlIHN0cmVhbWluZyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9mZWF0dXJlcy92aWRlby1hbmFseXRpY3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19hbmFseXRpY3MiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6ZmVhdHVyZXN8a2V5d29yZDphbmFseXRpY3MiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBBbmFseXRpY3MgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZmVhdHVyZXMvb25saW5lLXZpZGVvLWhvc3RpbmciCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19ob3N0aW5nIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OmZlYXR1cmVzfGtleXdvcmQ6aG9zdGluZyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEhvc3RpbmcgJiBtYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2VudGVycHJpc2UiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19lbnRlcnByaXNlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOmVudGVycHJpc2UiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBFbnRlcnByaXNlICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Zvci1oaXJlIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZm9yX2hpcmUiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6c29sdXRpb25zfGtleXdvcmQ6Zm9yX2hpcmUiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBGb3IgSGlyZSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9zdG9jayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3N0b2NrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnNvbHV0aW9uc3xrZXl3b3JkOnN0b2NrIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU3RvY2sgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rIGZvb3Rlcl92Ml9hY2NvcmRpb24iPgogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX2NoZWNrIiB0eXBlPSJjaGVja2JveCI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWhlYWRlci10ZXh0Ij5BUFBTPC9zcGFuPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fcmV2ZWFsIj4KICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpcmlzX2ljIGlzLS0xMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOCA4Ij48cGF0aCBkPSJNNy43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDBMNCA0LjU4NiAxLjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMC0uMzkuMzktLjM5IDEuMDI0IDAgMS40MTRsMyAzYy4zOS4zOSAxLjAyNC4zOSAxLjQxNCAwbDMtM2MuMzktLjM5LjM5LTEuMDI0IDAtMS40MTR6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9oND4KICAgICAgICAgICAgPHVsIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstbGlzdCBmb290ZXJfdjJfYWNjb3JkaW9uX19tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9hcHBzLmFwcGxlLmNvbS9hcHAvYXBwbGUtc3RvcmUvaWQxMzU2Njg2NzYzP3B0PTQxNzczMSZhbXA7Y3Q9bG9ocCZhbXA7bXQ9OCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOm1hY29zIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBmb3IgbWFjT1MgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9pdHVuZXMuYXBwbGUuY29tL2FwcC92aW1lby9pZDQyNTE5NDc1OT9tdD04IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6aW9zIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaW1lbyBmb3IgaU9TICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vcGxheS5nb29nbGUuY29tL3N0b3JlL2FwcHMvZGV0YWlscz9pZD1jb20udmltZW8uYW5kcm9pZC52aWRlb2FwcCZhbXA7cmVmZXJyZXI9dXRtX3NvdXJjZSUzRGZvb3RlciUyNnV0bV9tZWRpdW0lM0Rsb2hwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6YW5kcm9pZCIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gZm9yIEFuZHJvaWQgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9hcHBzLmFwcGxlLmNvbS91cy9hcHAvdmltZW8tY3JlYXRlL2lkMTQ5MTc5MTUxMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6YXBwc3xrZXl3b3JkOmNyZWF0ZV9pb3MiCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIENyZWF0ZSBmb3IgaU9TICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vcGxheS5nb29nbGUuY29tL3N0b3JlL2FwcHMvZGV0YWlscz9pZD1jb20udmltZW9jcmVhdGUudmlkZW9lZGl0b3IubW92aWVtYWtlciZhbXA7cmVmZXJyZXI9dXRtX3NvdXJjZSUzRGZvb3RlciUyNnV0bV9tZWRpdW0lM0Rsb2hwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6Y3JlYXRlX2FuZHJvaWQiCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIENyZWF0ZSBmb3IgQW5kcm9pZCAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL21hZ2lzdG8uY29tIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDphcHBzfGtleXdvcmQ6bWFnaXN0byIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFnaXN0byAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlJFU09VUkNFUzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvaDQ+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWxpc3QgZm9vdGVyX3YyX2FjY29yZGlvbl9fbWVudSI+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2hlbHAiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19oZWxwX2NlbnRlcl9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDpoZWxwX2NlbnRlciIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEhlbHAgQ2VudGVyICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Jsb2ciCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua192aW1lb19ibG9nX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOnZpbWVvX2Jsb2ciCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBCbG9nICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL2Jsb2cvY2F0ZWdvcnkvdmlkZW8tc2Nob29sIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmlkZW9fc2Nob29sX2NsaWNrIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOnZpZGVvX3NjaG9vbCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvIFNjaG9vbCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vdmltZW8uY29tL290dC9yZXNvdXJjZXMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19vdHRfcmVzb3VyY2VzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOm90dF9yZXNvdXJjZXMiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBPVFQgUmVzb3VyY2VzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIudmltZW8uY29tIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfZGV2ZWxvcGVyc19jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDpkZXZlbG9wZXJzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVycyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9zdHVkZW50cyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3N0dWRlbnRzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZhdGFsLWF0dHJhY3Rpb249ImNvbnRhaW5lcjpmb290ZXJ8Y29tcG9uZW50OnJlc291cmNlc3xrZXl3b3JkOnN0dWRlbnRzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgU3R1ZGVudHMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvaGVscC9ndWlkZWxpbmVzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdmltZW9fZ3VpZGVsaW5lc19jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpyZXNvdXJjZXN8a2V5d29yZDp2aW1lb19ndWlkZWxpbmVzIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgR3VpZGVsaW5lcyAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJmb290ZXJfdjJfX2xpbmsgZm9vdGVyX3YyX2FjY29yZGlvbiI+CiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9vdGVyX3YyX2FjY29yZGlvbl9fY2hlY2siIHR5cGU9ImNoZWNrYm94Ij4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaGVhZGVyLXRleHQiPlVQR1JBREU8L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19yZXZlYWwiPgogICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImlyaXNfaWMgaXMtLTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGQ9Ik03LjcwNyAyLjI5M2MtLjM5LS4zOS0xLjAyNC0uMzktMS40MTQgMEw0IDQuNTg2IDEuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwLS4zOS4zOS0uMzkgMS4wMjQgMCAxLjQxNGwzIDNjLjM5LjM5IDEuMDI0LjM5IDEuNDE0IDBsMy0zYy4zOS0uMzkuMzktMS4wMjQgMC0xLjQxNHoiLz48L3N2Zz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1saXN0IGZvb3Rlcl92Ml9hY2NvcmRpb25fX21lbnUiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL3BsdXMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua191cGdyYWRlX3BsdXMiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cGx1cyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIFBsdXMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvc3RvcmUvcHJvIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9wcm8iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cHJvIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gUFJPICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL2J1c2luZXNzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9idXNpbmVzcyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp1cGdyYWRlX2xpbmt8a2V5d29yZDpidXNpbmVzcyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIEJ1c2luZXNzICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb290ZXJfdjJfX2xpbmstaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktMyBpcmlzX2xpbmstLWZvb3RlciIKICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3N0b3JlL3ByZW1pdW0iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua191cGdyYWRlX3ByZW1pdW0iCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmZvb3Rlcnxjb21wb25lbnQ6dXBncmFkZV9saW5rfGtleXdvcmQ6cHJlbWl1bSIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFZpbWVvIFByZW1pdW0gICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvZW50ZXJwcmlzZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1ndG0tY2xpY2s9ImZvb3Rlcl9saW5rX3VwZ3JhZGVfZW50ZXJwcmlzZSIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp1cGdyYWRlX2xpbmt8a2V5d29yZDplbnRlcnByaXNlIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgVmltZW8gRW50ZXJwcmlzZSAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHA6Ly92aW1lby5leHRvbGUuY29tL3dlYnNpdGVfZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfdXBncmFkZV9yZWZfZnJpZW5kIgogICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9Il9ibGFuayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDp1cGdyYWRlX2xpbmt8a2V5d29yZDpyZWZlcl9hX2ZyaWVuZCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyIGEgZnJpZW5kICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImZvb3Rlcl92Ml9fbGluayBmb290ZXJfdjJfYWNjb3JkaW9uIj4KICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJmb290ZXJfdjJfYWNjb3JkaW9uX19jaGVjayIgdHlwZT0iY2hlY2tib3giPgogICAgICAgICAgICA8aDQgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXIiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1oZWFkZXItdGV4dCI+Q09NUEFOWTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9hY2NvcmRpb25fX3JldmVhbCI+CiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDggOCI+PHBhdGggZD0iTTcuNzA3IDIuMjkzYy0uMzktLjM5LTEuMDI0LS4zOS0xLjQxNCAwTDQgNC41ODYgMS43MDcgMi4yOTNjLS4zOS0uMzktMS4wMjQtLjM5LTEuNDE0IDAtLjM5LjM5LS4zOSAxLjAyNCAwIDEuNDE0bDMgM2MuMzkuMzkgMS4wMjQuMzkgMS40MTQgMGwzLTNjLjM5LS4zOS4zOS0xLjAyNCAwLTEuNDE0eiIvPjwvc3ZnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvaDQ+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWxpc3QgZm9vdGVyX3YyX2FjY29yZGlvbl9fbWVudSI+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGluay1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS0zIGlyaXNfbGluay0tZm9vdGVyIgogICAgICAgICAgICAgICAgICAgICAgICBocmVmPSIvYWJvdXQiCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZ3RtLWNsaWNrPSJmb290ZXJfbGlua19hYm91dF9jbGljayIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpjb21wYW55fGtleXdvcmQ6YWJvdXRfdmltZW8iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBBYm91dCAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19saW5rLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTMgaXJpc19saW5rLS1mb290ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9qb2JzIgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWd0bS1jbGljaz0iZm9vdGVyX2xpbmtfam9icyIKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1mYXRhbC1hdHRyYWN0aW9uPSJjb250YWluZXI6Zm9vdGVyfGNvbXBvbmVudDpjb21wYW55fGtleXdvcmQ6am9icyIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIEpvYnMgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGFzaWRlIGlkPSJmb290ZXJfdGlwIiBjbGFzcz0iZm9vdGVyX3YyX190aXAiIGFyaWEtbGl2ZT0icG9saXRlIj4KICAgICAgICAgICAgPGg0IGNsYXNzPSJmb290ZXJfdjJfX3RpcC1oZWFkZXIiPkRpZCB5b3Uga25vdz88L2g0PgogICAgICAgICAgICA8cCBjbGFzcz0iYWN0aXZlIGZvb3Rlcl92Ml9fdGlwLWNvbnRlbnQiPktlZXAgdXAgb24gdGhlIGxhdGVzdCB2aWRlb3MgYW5kIGFjdGl2aXR5IGJ5IHN1YnNjcmliaW5nIHRvIFZpbWVv4oCZcyA8YSBocmVmPSIvc2V0dGluZ3MvYWR2YW5jZWQiIGRhdGEtZmF0YWwtYXR0cmFjdGlvbj0iY29udGFpbmVyOmRpZF95b3Vfa25vd19ib3h8Y29tcG9uZW50OnByb2R1Y3QiPkRhaWx5IERpZ2VzdCBlbWFpbDwvYT4uPC9wPgogICAgICAgIDwvYXNpZGU+CiAgICA8L3NlY3Rpb24+CiAgICAKICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZm9vdGVyX3YyX19hdXhpbGlhcnkgIj4KCiAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2xlZ2FsIj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50Ij4KICAgICAgICAgICAgPHA+VE0gKyAmY29weTsgMjAyMCBWaW1lbywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8dWwgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdCI+CiAgICAgICAgICAgIDxsaSBjbGFzcz0iZm9vdGVyX3YyX19sZWdhbC1saXN0LWl0ZW0iPgogICAgICAgICAgICAgICAgPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iL3Rlcm1zIiB0aXRsZT0iVGVybXMgJmFtcDsgQ29uZGl0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgVGVybXMgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9wcml2YWN5IiB0aXRsZT0iUHJpdmFjeSBQb2xpY3kiPgogICAgICAgICAgICAgICAgICAgIFByaXZhY3kgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9wcml2YWN5L2NhbGlmb3JuaWEtcHJpdmFjeSIgdGl0bGU9IkNBIFByaXZhY3kiPgogICAgICAgICAgICAgICAgICAgIENBIFByaXZhY3kgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9kbWNhIiB0aXRsZT0iQ29weXJpZ2h0IEluZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9ImZvb3Rlcl92Ml9fbGVnYWwtbGlzdC1pdGVtIj4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJpcmlzX2xpbmsgaXJpc19saW5rLS1ncmF5LTQiIGhyZWY9Ii9jb29raWVfcG9saWN5IiB0aXRsZT0iTGVhcm4gbW9yZSBhYm91dCBob3cgVmltZW8gdXNlcyBjb29raWVzIj4KICAgICAgICAgICAgICAgICAgICBDb29raWVzICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fYXV4aWxpYXJ5LWNvbnRlbnQgZm9vdGVyX3YyX193aXRobG92ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWRlIHdpdGggPHN2ZyBjbGFzcz0iaXJpc19pYyBpcy0tMTIgZm9vdGVyX3YyX19sb3ZlaGVhcnQgZm9vdGVyX3YyX19hdXhpbGlhcnktaWNvbiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTIgMTIiPjxwYXRoIGQ9Ik05IDJDNy4zMTIgMiA2IDMuNSA2IDMuNVM0LjY4NyAyIDMgMkMxLjMxMiAyIDAgMy4zMTIgMCA1YzAgMy4xODggMy43NSAzLjAxMiA2IDYgMi4yNS0yLjk4OCA2LTIuODEyIDYtNiAwLTEuNjg4LTEuMzEzLTMtMy0zeiIvPjwvc3ZnPiBpbiBOWUMuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImZvb3Rlcl92Ml9fZmlsdGVycyBmb290ZXJfdjJfX2F1eGlsaWFyeS1jb250ZW50Ij4KICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZ3VhZ2UiPgogICAgICAgICAgICBMYW5ndWFnZToKICAgICAgICAgICAgPGEgY2xhc3M9ImlyaXNfbGluayBpcmlzX2xpbmstLWdyYXktNCIgaHJlZj0iI2xhbmd1YWdlIiBvbmNsaWNrPSJ2aW1lby5Nb2RhbC5jcmVhdGUoe2NvbnRlbnQ6ICcvc2V0dGluZ3MvbG9jYWxlJywgc2l6ZTogJ3NtYWxsJ30pOyByZXR1cm4gZmFsc2U7IiB0aXRsZT0iQ2hvb3NlIGEgZGlmZmVyZW50IGxhbmd1YWdlIj5FbmdsaXNoPC9hPgogICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlcl92Ml9fZmlsdGVyIj5NYXR1cmUgY29udGVudCBmaWx0ZXI6IDwvc3Bhbj48YSBjbGFzcz0iaXJpc19saW5rIGlyaXNfbGluay0tZ3JheS00IGZvb3Rlcl92Ml9fZmlsdGVyc19fbGFuZyBjb250ZW50ZmlsdGVyIGpzLWZvb3Rlcl9jb250ZW50ZmlsdGVyX2xpbmsiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0idmltZW8uTW9kYWwuY3JlYXRlKHtjb250ZW50OiAnL3NldHRpbmdzL2NvbnRlbnRyYXRpbmcnfSkiIHRpdGxlPSJDaGFuZ2UgeW91ciBtYXR1cmUgY29udGVudCBmaWx0ZXIiPk5vbmU8L2E+CiAgICAgICAgICAgIDwvZGl2PgoKPC9zZWN0aW9uPgo8L2Zvb3Rlcj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAo8c2NyaXB0PgogICAgdmFyIF9fZmEgPSBfX2ZhIHx8IFtdOwogICAgLyoqCiAgICAgKiBCZWNhdXNlIHNpbmdsZSBwYWdlIGFwcGxpY2F0aW9ucyBzdWNoIGFzIHRoZSBhcHAgc2hlbGwgd2lsbCBiZSB0cmFja2luZwogICAgICogRmF0YWwgQXR0cmFjdGlvbiBwYWdlIHZpZXdzIG9uIFJlYWN0IGxpZmVjeWNsZSBob29rcyAoY29tcG9uZW50RGlkTW91bnQpCiAgICAgKiB3ZSB3YW50IHRvIGF2b2lkIGRpc3BhdGNoaW5nIHRoZSBwYWdldmlldyBldmVudCBmcm9tIHRoZSBQSFAgdGVtcGxhdGUKICAgICAqIGFuZCBkZWZlciB0aGlzIHNvcnQgb2YgdHJhY2tpbmcgbG9naWMgdG8gdGhlIGZyb250IGVuZC4KICAgICAqCiAgICAgKiBUaGlzIGNoZWNrIGFsbG93cyB1cyB0byBkZWNsYXJlIGluIGEgY29udHJvbGxlciB3aGV0aGVyIG9yIG5vdCB3ZQogICAgICogd2FudCB0byBkaXNwYXRjaCB0aGF0IHByZWxpbWluYXJ5IHBhZ2V2aWV3LgogICAgICoKICAgICAqIFRoZSBwcm9wZXJ0eSBpcyBhZGRpdGl2ZSBvbmx5LCBhcyB0byBub3QgYWZmZWN0IGV4aXN0aW5nIHBhZ2V2aWV3cy4KICAgICAqLwogICAgICAgICAgICBfX2ZhLnB1c2goWyd0cmFja1BhZ2V2aWV3J10pOwogICAgCiAgICAvKioKICAgICAqIEFkZCBzZXJ2ZXIgc2lkZSBBQkxpbmNvbG4gZXhwZXJpbWVudHMgdG8gR1RNIGRhdGEgbGF5ZXIuCiAgICAgKi8KICAgIAogICAgICAgIHZhciBfZXh0ZW5kID0gZnVuY3Rpb24oKXtmb3IodmFyIHI9YXJndW1lbnRzWzBdLG49MSxlPWFyZ3VtZW50cy5sZW5ndGg7ZT5uO24rKyl7dmFyIHQ9YXJndW1lbnRzW25dO2Zvcih2YXIgYSBpbiB0KXQuaGFzT3duUHJvcGVydHkoYSkmJihyW2FdPXRbYV0pfXJldHVybiByfTsKCiAgICAgICAgdmFyIENTU19ESVIgPSAnaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9zdHlsZXMvY3NzX29wdC8nLAogICAgICAgIEpTX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC8nLAogICAgICAgIElNQUdFX0RJUiA9ICdodHRwczovL2YudmltZW9jZG4uY29tL2ltYWdlc192Ni8nLAogICAgICAgIEZPTlRfRElSID0gJ2h0dHBzOi8vZi52aW1lb2Nkbi5jb20vZm9udHMvJywKICAgICAgICBTVkdfRElSID0gJ2h0dHBzOi8vZi52aW1lb2Nkbi5jb20vc3ZnLycsCiAgICAgICAgICAgICAgICBCVUlMRF9IQVNIID0gJzZhZWJlJzsKCiAgICAKICAgICAgICB2YXIgdmltZW8gPSBfZXh0ZW5kKCh3aW5kb3cudmltZW8gfHwge30pLCB7ImFwcF92ZXJzaW9uIjoidjYiLCJkb21haW4iOiJ2aW1lby5jb20iLCJ1cmwiOiJ2aW1lby5jb20iLCJjdXJfdXNlciI6ZmFsc2UsIm9yaWdpbl91c2VyX2lkIjpudWxsLCJvcmlnaW5fdXNlciI6ZmFsc2UsImlzX21vYmlsZSI6ZmFsc2V9KTsKICAgIHZpbWVvLmNvbmZpZyA9IF9leHRlbmQoKHZpbWVvLmNvbmZpZyB8fCB7fSksIHsic3RpY2t5X3RvcG5hdiI6eyJleGNsdWRlZF9wYWdlcyI6WyJWaW1lb1xcQ29udHJvbGxlclxcQWJvdXRDb250cm9sbGVyOm1haW4iLCJWaW1lb1xcQ29udHJvbGxlclxcQWJvdXRDb250cm9sbGVyOnByb2Zlc3Npb25hbHMiLCJWaW1lb1xcQ29udHJvbGxlclxcQWJvdXRDb250cm9sbGVyOmV2ZXJ5b25lIiwiVmltZW9cXENvbnRyb2xsZXJcXEhvbWVDb250cm9sbGVyOnVwZ3JhZGUiLCJWaW1lb1xcQ29udHJvbGxlclxcU3RvcmVDb250cm9sbGVyOm1haW4iLCJWaW1lb1xcQ29udHJvbGxlclxcVXNlclxcU2V0dGluZ3MyQ29udHJvbGxlcjptYWluIiwiVmltZW9cXENvbnRyb2xsZXJcXFVzZXJcXFNldHRpbmdzMkNvbnRyb2xsZXI6dGVhbV9tZW1iZXJzIiwiVmltZW9cXENvbnRyb2xsZXJcXFVzZXJcXFNldHRpbmdzMkNvbnRyb2xsZXI6cGFzc3dvcmQiLCJWaW1lb1xcQ29udHJvbGxlclxcUHJvZmlsZUNvbnRyb2xsZXI6bWFpbiIsIlZpbWVvXFxDb250cm9sbGVyXFxDbGlwU3RhdHNDb250cm9sbGVyOm1haW4iLCJWaW1lb1xcQ29udHJvbGxlclxcQ2xpcFxcU2V0dGluZ3NcXEVtYmVkQ29udHJvbGxlcjplbWJlZCIsIlZpbWVvXFxDb250cm9sbGVyXFxWaWRlb01hbmFnZXJDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXFZpZGVvUmV2aWV3Q29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxNZXNzYWdlc0NvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcU3RhdHNDb250cm9sbGVyIiwiVmltZW9cXENvbnRyb2xsZXJcXFVwbG9hZENvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcT25EZW1hbmRcXFNldHRpbmdzQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxDbGlwXFxTZXR0aW5nc0NvbnRyb2xsZXIiXSwic3RpY2t5X2luY2x1ZGVkX3BhZ2VzIjpbIlZpbWVvXFxDb250cm9sbGVyXFxTdG9ja1xcU3RvY2tIb21lUGFnZUNvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcU3RvY2tcXFN0b2NrRm9vdGFnZUNvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcU3RvY2tcXFN0b2NrU2VhcmNoQ29udHJvbGxlciIsIlZpbWVvXFxDb250cm9sbGVyXFxTdG9ja1xcU3RvY2tDb2xsZWN0aW9uc0NvbnRyb2xsZXIiLCJWaW1lb1xcQ29udHJvbGxlclxcQWxidW1Db250cm9sbGVyIl0sInRvcG5hdl93cmFwX3NlbGVjdG9yIjoiI3RvcG5hdl9vdXRlcl93cmFwIiwiY29udGVudF93cmFwX3NlbGVjdG9yIjoiLndyYXBfY29udGVudCJ9LCJsb2NhbGUiOiJlbiIsIm9tbmlzZWFyY2hfZW5hYmxlZCI6ZmFsc2UsIm9tbmlzZWFyY2hfZGlzYWJsZWQiOm51bGwsIm9tbmlzZWFyY2hfand0IjoiZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKSVV6STFOaUo5LmV5SmxlSEFpT2pFMk1ETTRNak01TkRBc0luVnpaWEpmYVdRaU9tNTFiR3dzSW1Gd2NGOXBaQ0k2TlRnME56a3NJbk5qYjNCbGN5STZJbkIxWW14cFl5QndjbWwyWVhSbElHUmxiR1YwWlNJc0luUmxZVzFmZFhObGNsOXBaQ0k2Ym5Wc2JIMC5KVTV2UGNYZmt3RDdNY0ZGa3BRcEpQREdFakhNZnBZZE1MajV0Vkp3TmFNIiwib21uaXNlYXJjaF91c2VyIjpudWxsLCJhcGlfdXJsIjoiYXBpLnZpbWVvLmNvbSIsInNob3dfb21uaXNlYXJjaF90aXAiOmZhbHNlfSk7CgogICAgICAgIHZhciBfX2kxOG5Mb2NhbGUgPSAnZW4nOwogICAgdmFyIGxvY2FsZUNvbmZpZyA9IHsKICAgICAgICBsYW5nOiAnZW4nLAogICAgICAgICdEYXRlJzogewogICAgICAgICAgICBtb250aHM6IFsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSwKICAgICAgICAgICAgbW9udGhzX2FiYnI6IFsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sCiAgICAgICAgICAgIGRheXM6IFsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSwKICAgICAgICAgICAgZGF5c19hYmJyOiBbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLAoKICAgICAgICAgICAgLy8gQ3VsdHVyZSdzIGRhdGUgb3JkZXI6IE1NL0REL1lZWVkKICAgICAgICAgICAgZGF0ZU9yZGVyOiBbJ2RhdGUnLCAnbW9udGgnLCAneWVhciddLAogICAgICAgICAgICBzaG9ydERhdGU6ICclZC8lbS8lWScsCiAgICAgICAgICAgIHNob3J0VGltZTogJyVJOiVNJXAnLAogICAgICAgICAgICBBTTogJ0FNJywKICAgICAgICAgICAgUE06ICdQTScsCiAgICAgICAgICAgIGZpcnN0RGF5T2ZXZWVrOiAwLAoKICAgICAgICAgICAgLy8gRGF0ZS5FeHRyYXMKICAgICAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24oZGF5T2ZNb250aCl7CiAgICAgICAgICAgICAgICByZXR1cm4gZGF5T2ZNb250aDsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgJ0RhdGVQaWNrZXInOiB7CiAgICAgICAgICAgIHNlbGVjdF9hX3RpbWU6ICJTZWxlY3QgYSB0aW1lIiwKICAgICAgICAgICAgdXNlX21vdXNlX3doZWVsOiAiVXNlIHRoZSBtb3VzZSB3aGVlbCB0byBxdWlja2x5IGNoYW5nZSB2YWx1ZSIsCiAgICAgICAgICAgIHRpbWVfY29uZmlybV9idXR0b246ICJPSyIsCiAgICAgICAgICAgIGFwcGx5X3JhbmdlOiAiQXBwbHkiLAogICAgICAgICAgICBjYW5jZWw6ICJDYW5jZWwiLAogICAgICAgICAgICB3ZWVrOiAiV2siICAgICAgICB9LAogICAgICAgICAgICAgICAgJ051bWJlcic6IHsKICAgICAgICAgICAgZGVjaW1hbDogJy4nLAogICAgICAgICAgICBncm91cDogJywnLAogICAgICAgICAgICBjdXJyZW5jeTogewogICAgICAgICAgICAgICAgcHJlZml4OiAnJCcKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgJ0Zvcm1WYWxpZGF0b3InOiB7InJlcXVpcmVkIjoiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iLCJyZXF1aXJlZENoayI6IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIn0gICAgfTsKCiAgICB2YXIgZnVsbExvY2FsZSA9ICcnOwoKICAgIAogICAgICAgIHZhciBDb3B5ID0ge3RyYW5zbGF0ZTpmdW5jdGlvbih0LGksdSl7dmFyIGU9J29iamVjdCchPXR5cGVvZiB0aGlzLmRpY3RbdF0/dGhpcy5kaWN0W3RdOmk/dGhpcy5kaWN0W3RdLnBsdXJhbDp0aGlzLmRpY3RbdF0uc2luZ3VsYXI7cmV0dXJuJ29iamVjdCc9PXR5cGVvZiB1JiYoZT10aGlzLnN1YnN0aXR1dGUoZSx1KSksZX0sc3Vic3RpdHV0ZTpmdW5jdGlvbih0LGkpe3JldHVybiB2b2lkIDAhPT10LnN1YnN0aXR1dGU/dC5zdWJzdGl0dXRlKGkpOnQucmVwbGFjZSgvXFw/XHsoW157fV0rKVx9L2csZnVuY3Rpb24odCx1KXtyZXR1cm4nXFwnPT10LmNoYXJBdCgwKT90LnNsaWNlKDEpOm51bGwhPWlbdV0/aVt1XTonJ30pfSxkaWN0Ont9fTsKICAgIENvcHkuZGljdCA9IHsiZGlkX3lvdV9tZWFuX2VtYWlsIjoiRGlkIHlvdSBtZWFuIDxlbT57U1VHR0VTVH08XC9lbT4/IiwiZW1haWxfcGFzc3dvcmRfbWlzbWF0Y2giOiJFbWFpbCBhbmQgcGFzc3dvcmQgZG8gbm90IG1hdGNoIiwib29wc190cnlfYWdhaW4iOiJPb3BzISBTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHRyeSBhZ2Fpbi4iLCJqdXN0X25vdyI6Imp1c3Qgbm93Iiwic2Vjb25kc19hZ28iOnsic2luZ3VsYXIiOiJ7Q09VTlR9IHNlY29uZCBhZ28iLCJwbHVyYWwiOiJ7Q09VTlR9IHNlY29uZHMgYWdvIn0sIm1pbnV0ZXNfYWdvIjp7InNpbmd1bGFyIjoie0NPVU5UfSBtaW51dGUgYWdvIiwicGx1cmFsIjoie0NPVU5UfSBtaW51dGVzIGFnbyJ9LCJob3Vyc19hZ28iOnsic2luZ3VsYXIiOiJ7Q09VTlR9IGhvdXIgYWdvIiwicGx1cmFsIjoie0NPVU5UfSBob3VycyBhZ28ifSwib3Blbl9jb21tZW50X2JveCI6IkFkZCBuZXcgY29tbWVudCBpbnN0ZWFkICZyYXF1bzsiLCJ1cmxfdW5hdmFpbGFibGUiOiJTb3JyeSwgdGhpcyB1cmwgaXMgdW5hdmFpbGFibGUuIiwidW5zYXZlZF9jaGFuZ2VzX2dlbmVyaWMiOiJZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMsIGFyZSB5b3Ugc3VyZSB5b3Ugd2lzaCB0byBsZWF2ZT8iLCJhZGQiOiJBZGQiLCJyZW1vdmUiOiJSZW1vdmUiLCJzZWxlY3QiOiJTZWxlY3QiLCJub19mb2xsb3dlcnNfZm9yX2xldHRlciI6IllvdSBkb24mcnNxdW87dCBmb2xsb3cgYW55b25lIHRoYXQgYmVnaW4gd2l0aCB0aGUgbGV0dGVyICZsZHF1bzt7UEFHRV9MRVRURVJ9JnJkcXVvOyIsInNoYXJlX2xpbWl0X3JlYWNoZWQiOiJZb3UgaGF2ZSByZWFjaGVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1c2VycyB0byBzaGFyZSB3aXRoLiIsImF0X2xlYXN0X29uZSI6IlRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIHVzZXIuIiwiYXZhaWxhYmxlIjoiQXZhaWxhYmxlIiwidW5hdmFpbGFibGUiOiJVbmF2YWlsYWJsZSIsImJyb3dzZV9lcnJvcl9nZW5lcmljIjoiU29ycnksIHRoZXJlIHdhcyBhbiBlcnJvciIsImJyb3dzZV9lcnJvcl9ub192aWRlb3MiOiJTb3JyeSwgbm8gdmlkZW9zIGZvdW5kIiwiZm9sbG93IjoiRm9sbG93IiwiZm9sbG93aW5nIjoiRm9sbG93aW5nIiwidW5mb2xsb3ciOiJVbmZvbGxvdyIsInVuZm9sbG93aW5nIjoiVW5mb2xsb3dpbmciLCJjb3VudF9jb21tZW50cyI6eyJzaW5ndWxhciI6IntDT1VOVH0gY29tbWVudCIsInBsdXJhbCI6IntDT1VOVH0gY29tbWVudHMifSwiZmlyc3RfY29tbWVudCI6IkJlIHRoZSBmaXJzdCB0byBjb21tZW50XHUyMDI2Iiwibm9fY29tbWVudHNfZm9yX3lvdSI6IkZvcmJpZGRlbi4gWW91IGNhbm5vdCBwb3N0IGNvbW1lbnRzIG9uIHRoaXMgcGFnZS4iLCJvb3BzIjoiT29wcyEiLCJwbGF5ZXJfdHJ5X2FnYWluIjoiVGhhdCB3YXNuJ3Qgc3VwcG9zZWQgdG8gaGFwcGVuLiBQbGVhc2UgdHJ5IGFnYWluIGluIGEgZmV3IG1pbnV0ZXMuIiwiZHVyYXRpb25faW5wdXRfbWluX2R1cmF0aW9uIjoiVGhlIGR1cmF0aW9uIGNhbm5vdCBiZSBsZXNzIHRoYW4ge01JTl9EVVJBVElPTn0uIiwiZHVyYXRpb25faW5wdXRfbWF4X2R1cmF0aW9uIjoiVGhlIGR1cmF0aW9uIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4ge01BWF9EVVJBVElPTn0uIiwiZHVyYXRpb25faW5wdXRfaW52YWxpZF9jaGFyYWN0ZXJzIjoiMC05IGFuZCA6IGFyZSB0aGUgb25seSBhY2NlcHRhYmxlIGlucHV0cy4iLCJjbG9zZSI6IkNsb3NlIiwiZXhwYW5kIjoiRXhwYW5kIiwibG9hZGluZyI6IkxvYWRpbmcuLi4iLCJ0b3AiOiJ0b3AiLCJhZHZhbmNlZF9zZWFyY2giOiJBZHZhbmNlZCBTZWFyY2giLCJub19zdWdnZXN0aW9ucyI6Ik5vIHN1Z2dlc3Rpb25zIiwicmVjZW50X3NlYXJjaGVzIjoiUmVjZW50IFNlYXJjaGVzIiwic2VhcmNoX2FsbCI6IlNlYXJjaCBBbGwgb2YgVmltZW8iLCJlbWFpbF9hbmRfcGFzc3dvcmQiOiJQbGVhc2UgZW50ZXIgeW91ciBlbWFpbCBhbmQgcGFzc3dvcmQiLCJlbWFpbF9hZGRyZXNzIjoiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcyIsIm5hbWVfZW1haWxfYW5kX3Bhc3N3b3JkIjoiUGxlYXNlIGVudGVyIHlvdXIgbmFtZSwgZW1haWwsIGFuZCBwYXNzd29yZCJ9Owo8L3NjcmlwdD4KCgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L3N0aWNreV90b3BuYXZfY29tYmluZWQubWluLmpzPzVmZmQ2ZDRlIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2YudmltZW9jZG4uY29tL2pzX29wdC9yZWFjdF9wcm9kX2NvbWJpbmVkLm1pbi5qcz8wMzE3NzVhNCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvZXhjZXB0aW9uX2NvbWJpbmVkLm1pbi5qcz8yYTJmMjYxMyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9mLnZpbWVvY2RuLmNvbS9qc19vcHQvdG9wbmF2X2NhcnRfYnV0dG9uX2NvbWJpbmVkLm1pbi5qcz80NDg4YzA5MiI+PC9zY3JpcHQ+CgogICAgPHNjcmlwdCBhc3luYyBzcmM9Imh0dHBzOi8vZi52aW1lb2Nkbi5jb20vanNfb3B0L19idW5kbGVzL2NyZWF0ZV9mYWNlYm9va19oZWFkZXIuYnVuZGxlLm1pbi5qcz85NTRjNDYwMCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0PgogICAgICAgIGZ1bmN0aW9uIG9uVmltZW9Eb21SZWFkeShlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICB3aW5kb3cudmltZW8gPSB3aW5kb3cudmltZW8gfHwge307CiAgICAgIHdpbmRvdy52aW1lby5leGNlcHRpb25fZGF0YSA9IHsidGl0bGUiOiJTb3JyeSwgd2UgY291bGRuXHUyMDE5dCBmaW5kIHRoYXQgcGFnZSIsIm1lc3NhZ2UiOiIiLCJub3RpZmljYXRpb24iOiI8ZGl2IGNsYXNzPVwiZXhjZXB0aW9uX25vdGlmaWNhdGlvbiBpcmlzX25vdGlmaWNhdGlvbiBpcmlzX25vdGlmaWNhdGlvbi0tdXBzZWxsXCI+XG4gICAgIDxkaXYgY2xhc3M9XCJpcmlzX25vdGlmaWNhdGlvbi0tdXBzZWxsLWljb25cIj5cbiAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXJpc19pYyBpcy0tMTZcIj48c3ZnIHhtbG5zPVwiaHR0cDpcL1wvd3d3LnczLm9yZ1wvMjAwMFwvc3ZnXCIgdmlld0JveD1cIjAgMCAxNiAxNlwiPjxwYXRoIGQ9XCJNOCAxNmM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHpNNyA0aDJ2Mkg3VjR6bTAgM2gydjVIN1Y3elwiXC8+PFwvc3ZnPjxcL3NwYW4+XG4gICAgIDxcL2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJpcmlzX25vdGlmaWNhdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgPHN0cm9uZz5SZWFzb25zIHlvdSBtaWdodCBiZSBzZWVpbmcgdGhpcyBwYWdlPFwvc3Ryb25nPlxuICAgIDxcL2Rpdj5cblxuICAgIDx1bCBjbGFzcz1cImlyaXNfbm90aWZpY2F0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpPkl0IGV4aXN0cywgYnV0IHlvdSBkb25cdTIwMTl0IGhhdmUgcGVybWlzc2lvbiB0byBzZWUgaXQsIG9yIHlvdSBuZWVkIHRvIDxhIG9uY2xpY2s9XCJ2aW1lby5TZXNzaW9uLmNyZWF0ZSgpXCI+bG9nIGluPFwvYT4uPFwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPk5vdGhpbmcgaGFzIGV2ZXIgZXhpc3RlZCBoZXJlLiBTcG9va3kuPFwvbGk+XG4gICAgICAgIDxsaT5Tb21ldGhpbmcgb25jZSBsaXZlZCBoZXJlLCBidXQgaGFzIGJlZW4gZGVsZXRlZC48XC9saT5cbiAgICA8XC91bD5cbjxcL2Rpdj5cbiIsInNlYXJjaCI6dHJ1ZSwidmlkZW9zIjpudWxsLCJhZF9jb25maWciOnsiaG91c2VfYWRzX2VuYWJsZWQiOmZhbHNlfSwicGFnZV90eXBlIjoiZXhjZXB0aW9uIiwibW9kdWxlX3R5cGUiOiJzdGFuZGFyZF9tdWx0aSJ9OwoKICAgICAgbmV3IHdpbmRvdy5FeGNlcHRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KG9uVmltZW9Eb21SZWFkeSk7CiAgICAgICAgICAgIDwvc2NyaXB0PgoKCiAgICA8L2JvZHk+CjwvaHRtbD4K
127
+ http_version:
128
+ recorded_at: Tue, 27 Oct 2020 18:23:03 GMT
128
129
  recorded_with: VCR 3.0.3