@codingame/monaco-editor-wrapper 3.9.2 → 4.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (535) hide show
  1. package/dist/C2Hs-configuration.json.js +3 -0
  2. package/dist/C2Hs.json.js +3 -0
  3. package/dist/COBOL.tmLanguage.json.js +3 -0
  4. package/dist/Erlang.plist.js +2 -1751
  5. package/dist/Hsc2Hs-configuration.json.js +3 -0
  6. package/dist/Hsc2Hs.json.js +3 -0
  7. package/dist/JavaProperties.tmLanguage.json.js +3 -0
  8. package/dist/Kotlin.tmLanguage.js +2 -723
  9. package/dist/META.json.js +3 -0
  10. package/dist/META.json2.js +3 -0
  11. package/dist/Markdown Redcarpet.json.js +3 -0
  12. package/dist/RMarkdown.json.js +3 -0
  13. package/dist/Rcpp.json.js +3 -0
  14. package/dist/Rd (R Documentation).json.js +3 -0
  15. package/dist/Scala.tmLanguage.json.js +3 -0
  16. package/dist/_commonjsHelpers.js +35 -0
  17. package/dist/_rollupPluginBabelHelpers.js +1 -1
  18. package/dist/add.svg.js +3 -0
  19. package/dist/add.svg2.js +3 -0
  20. package/dist/adddep-dark.svg.js +3 -0
  21. package/dist/adddep-light.svg.js +3 -0
  22. package/dist/alex.json.js +3 -0
  23. package/dist/angular-directives.json.js +3 -0
  24. package/dist/angular-interpolations.json.js +3 -0
  25. package/dist/angular-template-language-configuration.json.js +3 -0
  26. package/dist/arrow-circle-up-dark.svg.js +3 -0
  27. package/dist/arrow-circle-up-light.svg.js +3 -0
  28. package/dist/aspnetcorerazor.tmLanguage.json.js +3 -0
  29. package/dist/atd.json.js +3 -0
  30. package/dist/book-dark.svg.js +3 -0
  31. package/dist/book-light.svg.js +3 -0
  32. package/dist/book-open-dark.svg.js +3 -0
  33. package/dist/book-open-light.svg.js +3 -0
  34. package/dist/buildtarget.json.js +3 -0
  35. package/dist/cabal-configuration.json.js +3 -0
  36. package/dist/cabal.json.js +3 -0
  37. package/dist/codeblock-cabal.json.js +3 -0
  38. package/dist/codeblock-haskell.json.js +3 -0
  39. package/dist/codeblock-literate-haskell.json.js +3 -0
  40. package/dist/codeblock.json.js +3 -0
  41. package/dist/codeblock.json2.js +3 -0
  42. package/dist/configuration/index.d.ts +0 -1
  43. package/dist/cram.json.js +3 -0
  44. package/dist/csharp.json.js +3 -0
  45. package/dist/css.worker.js +1 -1
  46. package/dist/d.json.js +3 -0
  47. package/dist/d.json2.js +3 -0
  48. package/dist/dart-language-configuration.json.js +3 -0
  49. package/dist/dart.json.js +3 -0
  50. package/dist/dcf-configuration.json.js +3 -0
  51. package/dist/dcf.json.js +3 -0
  52. package/dist/diet.json.js +3 -0
  53. package/dist/diet.json2.js +3 -0
  54. package/dist/diet.json3.js +3 -0
  55. package/dist/django-html.tmLanguage.json.js +3 -0
  56. package/dist/django-txt.tmLanguage.json.js +3 -0
  57. package/dist/dml.json.js +3 -0
  58. package/dist/document-search-dark.svg.js +3 -0
  59. package/dist/document-search-light.svg.js +3 -0
  60. package/dist/documentation-inverse.svg.js +3 -0
  61. package/dist/documentation.svg.js +3 -0
  62. package/dist/dub-convert-inverse.svg.js +3 -0
  63. package/dist/dub-convert.svg.js +3 -0
  64. package/dist/dune-project.json.js +3 -0
  65. package/dist/dune-project.json2.js +3 -0
  66. package/dist/dune-workspace.json.js +3 -0
  67. package/dist/dune.json.js +3 -0
  68. package/dist/dune.json2.js +3 -0
  69. package/dist/dune.json3.js +3 -0
  70. package/dist/edit-dub-inverse.svg.js +3 -0
  71. package/dist/edit-dub.svg.js +3 -0
  72. package/dist/edit-source-inverse.svg.js +3 -0
  73. package/dist/edit-source.svg.js +3 -0
  74. package/dist/eex-language-configuration.json.js +3 -0
  75. package/dist/eex.json.js +3 -0
  76. package/dist/elixir-language-configuration.json.js +3 -0
  77. package/dist/elixir.json.js +3 -0
  78. package/dist/erlang.configuration.json.js +3 -0
  79. package/dist/erlang.json.js +3 -0
  80. package/dist/expression.json.js +3 -0
  81. package/dist/extension-web.js.js +3 -0
  82. package/dist/extension-web.js2.js +3 -0
  83. package/dist/extension.browser.js.js +3 -0
  84. package/dist/extensions.d.ts +35 -0
  85. package/dist/features/htmlContribution.js +0 -1
  86. package/dist/features/jsonContribution.d.ts +2 -4
  87. package/dist/features/jsonContribution.js +10 -29
  88. package/dist/features/typescriptContribution.js +2 -2
  89. package/dist/file_type_java.svg.js +3 -0
  90. package/dist/file_type_scala.svg.js +3 -0
  91. package/dist/filters.json.js +3 -0
  92. package/dist/focus-dark.svg.js +3 -0
  93. package/dist/focus-light.svg.js +3 -0
  94. package/dist/general.json.js +3 -0
  95. package/dist/get-inverse.svg.js +3 -0
  96. package/dist/get.svg.js +3 -0
  97. package/dist/go.json.js +3 -0
  98. package/dist/go.mod.language-configuration.json.js +3 -0
  99. package/dist/go.mod.tmGrammar.json.js +3 -0
  100. package/dist/go.sum.tmGrammar.json.js +3 -0
  101. package/dist/govulncheck.tmGrammar.json.js +3 -0
  102. package/dist/happy.json.js +3 -0
  103. package/dist/haskell-configuration.json.js +3 -0
  104. package/dist/haskell.json.js +3 -0
  105. package/dist/hot-reload-tb.png.js +3 -0
  106. package/dist/hot-reload.svg.js +3 -0
  107. package/dist/html-eex.json.js +3 -0
  108. package/dist/html.worker.js +1 -1
  109. package/dist/index.d.ts +2 -3
  110. package/dist/index.js +9 -6
  111. package/dist/index2.js +2 -1351
  112. package/dist/inline-styles.json.js +3 -0
  113. package/dist/inline-template.json.js +3 -0
  114. package/dist/inspector.svg.js +3 -0
  115. package/dist/java-properties-configuration.json.js +3 -0
  116. package/dist/java.json.js +3 -0
  117. package/dist/javascript.json.js +3 -0
  118. package/dist/json.worker.js +1 -1
  119. package/dist/jvm-bytecode-verbose.json.js +3 -0
  120. package/dist/jvm-bytecode.json.js +3 -0
  121. package/dist/kotlin.configuration.json.js +3 -0
  122. package/dist/kotlin.json.js +3 -0
  123. package/dist/lang-config.json.js +3 -0
  124. package/dist/language-configuration.json.js +3 -0
  125. package/dist/language-configuration.json2.js +3 -0
  126. package/dist/language-configuration.json3.js +3 -0
  127. package/dist/language-configuration.json4.js +3 -0
  128. package/dist/language-configuration.json5.js +3 -0
  129. package/dist/language-configuration.json6.js +3 -0
  130. package/dist/language-configuration.json7.js +3 -0
  131. package/dist/language-configuration.json8.js +3 -0
  132. package/dist/languages/index.d.ts +0 -2
  133. package/dist/literate-haskell-configuration.json.js +3 -0
  134. package/dist/literateHaskell.json.js +3 -0
  135. package/dist/main.js +839 -3070
  136. package/dist/markdown-svelte-css.json.js +3 -0
  137. package/dist/markdown-svelte-js.json.js +3 -0
  138. package/dist/markdown-svelte.json.js +3 -0
  139. package/dist/menhir-action.json.js +3 -0
  140. package/dist/menhir.json.js +3 -0
  141. package/dist/menhir.json2.js +3 -0
  142. package/dist/merlin.json.js +3 -0
  143. package/dist/monaco.d.ts +6 -9
  144. package/dist/oasis.json.js +3 -0
  145. package/dist/oasis.json2.js +3 -0
  146. package/dist/ocaml-markdown-codeblock.json.js +3 -0
  147. package/dist/ocaml.interface.json.js +3 -0
  148. package/dist/ocaml.json.js +3 -0
  149. package/dist/ocaml.json2.js +3 -0
  150. package/dist/ocaml.json3.js +3 -0
  151. package/dist/ocamlbuild.json.js +3 -0
  152. package/dist/ocamlbuild.json2.js +3 -0
  153. package/dist/ocamldoc.json.js +3 -0
  154. package/dist/ocamlformat.json.js +3 -0
  155. package/dist/ocamlformat.json2.js +3 -0
  156. package/dist/ocamllex.json.js +3 -0
  157. package/dist/ocamllex.json2.js +3 -0
  158. package/dist/ocamllex.json3.js +3 -0
  159. package/dist/opam-install.json.js +3 -0
  160. package/dist/opam-install.json2.js +3 -0
  161. package/dist/opam.json.js +3 -0
  162. package/dist/opam.json2.js +3 -0
  163. package/dist/outdated-inverse.svg.js +3 -0
  164. package/dist/outdated.svg.js +3 -0
  165. package/dist/pascal.configuration.json.js +3 -0
  166. package/dist/pascal.json.js +3 -0
  167. package/dist/pascal.tmLanguage.js +2 -168
  168. package/dist/performance.svg.js +3 -0
  169. package/dist/pgsql.tmLanguage.js +2 -283
  170. package/dist/pip-requirements.json.js +3 -0
  171. package/dist/pip-requirements.tmLanguage.json.js +3 -0
  172. package/dist/plus-dark.svg.js +3 -0
  173. package/dist/plus-light.svg.js +3 -0
  174. package/dist/postcss.json.js +3 -0
  175. package/dist/preview-right-dark.svg.js +3 -0
  176. package/dist/preview-right-light.svg.js +3 -0
  177. package/dist/pug-svelte-dotblock.json.js +3 -0
  178. package/dist/pug-svelte-tags.json.js +3 -0
  179. package/dist/pug-svelte.json.js +3 -0
  180. package/dist/r-configuration.json.js +3 -0
  181. package/dist/r-snippets.json.js +3 -0
  182. package/dist/r.json.js +3 -0
  183. package/dist/rbuildignore-configuration.json.js +3 -0
  184. package/dist/rbuildignore.json.js +3 -0
  185. package/dist/rd-configuration.json.js +3 -0
  186. package/dist/reason-markdown-codeblock.json.js +3 -0
  187. package/dist/reason.json.js +3 -0
  188. package/dist/reason.json2.js +3 -0
  189. package/dist/ref-group-by-type-dark.svg.js +3 -0
  190. package/dist/ref-group-by-type-light.svg.js +3 -0
  191. package/dist/ref-ungroup-by-type-dark.svg.js +3 -0
  192. package/dist/ref-ungroup-by-type-light.svg.js +3 -0
  193. package/dist/refresh-dark.svg.js +3 -0
  194. package/dist/refresh-dark.svg2.js +3 -0
  195. package/dist/refresh-light.svg.js +3 -0
  196. package/dist/refresh-light.svg2.js +3 -0
  197. package/dist/repl.svg.js +3 -0
  198. package/dist/repl.svg2.js +3 -0
  199. package/dist/rmarkdown.json2.js +3 -0
  200. package/dist/rmd-configuration.json.js +3 -0
  201. package/dist/rnamespace-configuration.json.js +3 -0
  202. package/dist/rnamespace.json.js +3 -0
  203. package/dist/save.svg.js +3 -0
  204. package/dist/save.svg2.js +3 -0
  205. package/dist/scalameta-logo.png.js +3 -0
  206. package/dist/sdl.json.js +3 -0
  207. package/dist/semanticdb.json.js +3 -0
  208. package/dist/services.d.ts +4 -0
  209. package/dist/solidity.configuration.json.js +3 -0
  210. package/dist/solidity.json.js +3 -0
  211. package/dist/solidity.json2.js +3 -0
  212. package/dist/svelte.json.js +3 -0
  213. package/dist/svelte.tmLanguage.json.js +3 -0
  214. package/dist/switch-impl-intf.dark.svg.js +3 -0
  215. package/dist/switch-impl-intf.light.svg.js +3 -0
  216. package/dist/systemverilog.json.js +3 -0
  217. package/dist/systemverilog.tmLanguage.json.js +3 -0
  218. package/dist/tags.json.js +3 -0
  219. package/dist/tasty.json.js +3 -0
  220. package/dist/tcl.json.js +3 -0
  221. package/dist/tcl.json2.js +3 -0
  222. package/dist/template.json.js +3 -0
  223. package/dist/theme/index.d.ts +1 -4
  224. package/dist/tools/EditorOpenHandlerRegistry.d.ts +3 -2
  225. package/dist/ts.worker.js +1 -1
  226. package/dist/typescript.json.js +3 -0
  227. package/dist/upgrade-inverse.svg.js +3 -0
  228. package/dist/upgrade.svg.js +3 -0
  229. package/dist/vim.js +37 -36
  230. package/dist/vs2019_dark.json.js +3 -0
  231. package/dist/vs2019_light.json.js +3 -0
  232. package/dist/worker.js +14 -2
  233. package/dist/x-dark.svg.js +3 -0
  234. package/dist/x-light.svg.js +3 -0
  235. package/package.json +40 -42
  236. package/stats.html +90 -1429
  237. package/dist/COBOL.tmLanguage.js +0 -172
  238. package/dist/HTML (Eex)2.js +0 -100
  239. package/dist/JSON.tmLanguage.js +0 -221
  240. package/dist/JSONC.tmLanguage.js +0 -221
  241. package/dist/JavaProperties.tmLanguage.js +0 -116
  242. package/dist/JavaScript.tmLanguage.js +0 -5922
  243. package/dist/JavaScriptReact.tmLanguage.js +0 -5922
  244. package/dist/META.js +0 -100
  245. package/dist/MagicPython.tmLanguage.js +0 -4221
  246. package/dist/MagicRegExp.tmLanguage.js +0 -505
  247. package/dist/Markdown Redcarpet.js +0 -221
  248. package/dist/RMarkdown.js +0 -25
  249. package/dist/Rcpp.js +0 -50
  250. package/dist/Rd (R Documentation).js +0 -131
  251. package/dist/Regular Expressions (JavaScript).tmLanguage.js +0 -166
  252. package/dist/Scala.tmLanguage.js +0 -1291
  253. package/dist/TypeScript.tmLanguage.js +0 -5673
  254. package/dist/TypeScriptReact.tmLanguage.js +0 -5922
  255. package/dist/angular.js +0 -74
  256. package/dist/asp-vb-net.tmlanguage.js +0 -247
  257. package/dist/aspnetcorerazor.js +0 -72
  258. package/dist/aspnetcorerazor.tmLanguage.js +0 -1522
  259. package/dist/atd.js +0 -110
  260. package/dist/atd2.js +0 -114
  261. package/dist/buildignore.r.js +0 -5
  262. package/dist/buildtarget.js +0 -53
  263. package/dist/c.js +0 -101
  264. package/dist/c.tmLanguage.js +0 -3565
  265. package/dist/cabal.js +0 -10
  266. package/dist/cabal.tmLanguage.js +0 -66
  267. package/dist/clojure.js +0 -68
  268. package/dist/clojure.tmLanguage.js +0 -439
  269. package/dist/cobol.js +0 -6
  270. package/dist/cobol2.js +0 -337
  271. package/dist/codeblock-cabal.js +0 -42
  272. package/dist/codeblock-haskell.js +0 -42
  273. package/dist/codeblock-literate-haskell.js +0 -42
  274. package/dist/codeblock.js +0 -59
  275. package/dist/codeblock2.js +0 -36
  276. package/dist/codeblock3.js +0 -95
  277. package/dist/coffeescript-coffeescript.code-snippets.js +0 -18
  278. package/dist/coffeescript.js +0 -91
  279. package/dist/coffeescript.tmLanguage.js +0 -1324
  280. package/dist/configuration/files.d.ts +0 -6
  281. package/dist/cpp-c.code-snippets.js +0 -18
  282. package/dist/cpp-cpp.code-snippets.js +0 -18
  283. package/dist/cpp.js +0 -101
  284. package/dist/cpp.tmLanguage.js +0 -16485
  285. package/dist/cpptools.js +0 -2608
  286. package/dist/cram.js +0 -257
  287. package/dist/csharp.js +0 -92
  288. package/dist/csharp.tmLanguage.js +0 -4992
  289. package/dist/css.js +0 -106
  290. package/dist/css.tmLanguage.js +0 -1873
  291. package/dist/cuda-cpp.js +0 -101
  292. package/dist/cuda-cpp.tmLanguage.js +0 -19993
  293. package/dist/d-diet.js +0 -92
  294. package/dist/d.js +0 -3173
  295. package/dist/d2.js +0 -97
  296. package/dist/d3.js +0 -609
  297. package/dist/dart.js +0 -543
  298. package/dist/dart2.js +0 -103
  299. package/dist/dart3.js +0 -1124
  300. package/dist/dcf.js +0 -93
  301. package/dist/debian-control.r.js +0 -69
  302. package/dist/diet.js +0 -758
  303. package/dist/diet2.js +0 -100
  304. package/dist/django-html.js +0 -155
  305. package/dist/django-html.tmLanguage.js +0 -715
  306. package/dist/django-txt.js +0 -155
  307. package/dist/django-txt.tmLanguage.js +0 -269
  308. package/dist/dml.js +0 -169
  309. package/dist/dml2.js +0 -90
  310. package/dist/dockercompose.js +0 -82
  311. package/dist/dpp.js +0 -97
  312. package/dist/dscript.js +0 -90
  313. package/dist/dune-project.js +0 -481
  314. package/dist/dune-project2.js +0 -65
  315. package/dist/dune-workspace.js +0 -298
  316. package/dist/dune-workspace2.js +0 -65
  317. package/dist/dune.js +0 -2962
  318. package/dist/dune2.js +0 -65
  319. package/dist/eex.js +0 -55
  320. package/dist/elixir-snippets.js +0 -184
  321. package/dist/elixir.js +0 -2341
  322. package/dist/elixir2.js +0 -69
  323. package/dist/elixir3.js +0 -40
  324. package/dist/erlang-erlang.js +0 -195
  325. package/dist/erlang.js +0 -81
  326. package/dist/erlang2.js +0 -92
  327. package/dist/expression.js +0 -846
  328. package/dist/features/extensionConfigurations.d.ts +0 -1
  329. package/dist/features/extensionConfigurations.js +0 -44
  330. package/dist/fsharp-fsharp.code-snippets.js +0 -18
  331. package/dist/fsharp.js +0 -80
  332. package/dist/fsharp.tmLanguage.js +0 -1844
  333. package/dist/go.js +0 -103
  334. package/dist/go.mod.js +0 -8
  335. package/dist/go.mod.tmGrammar.js +0 -182
  336. package/dist/go.sum.tmGrammar.js +0 -55
  337. package/dist/go.tmLanguage.js +0 -1025
  338. package/dist/go.work.js +0 -8
  339. package/dist/govulncheck.tmGrammar.js +0 -138
  340. package/dist/groovy-groovy.code-snippets.js +0 -229
  341. package/dist/groovy.js +0 -79
  342. package/dist/groovy.tmLanguage.js +0 -1391
  343. package/dist/haskell.js +0 -88
  344. package/dist/haskell.tmLanguage.js +0 -629
  345. package/dist/haskell2.js +0 -16
  346. package/dist/html (eex).js +0 -31
  347. package/dist/html-derivative.tmLanguage.js +0 -57
  348. package/dist/html-html.code-snippets.js +0 -20
  349. package/dist/html.js +0 -11
  350. package/dist/html.tmLanguage.js +0 -2652
  351. package/dist/html.tmLanguage2.js +0 -107
  352. package/dist/inline-styles.js +0 -104
  353. package/dist/inline-template.js +0 -88
  354. package/dist/jade.js +0 -11
  355. package/dist/java-java.js +0 -125
  356. package/dist/java-properties.js +0 -73
  357. package/dist/java.js +0 -95
  358. package/dist/java.tmLanguage.js +0 -1863
  359. package/dist/java2.js +0 -888
  360. package/dist/javascript-javascript.code-snippets.js +0 -205
  361. package/dist/javascript.js +0 -197
  362. package/dist/javascriptreact.js +0 -197
  363. package/dist/jsdoc.js.injection.tmLanguage.js +0 -32
  364. package/dist/jsdoc.ts.injection.tmLanguage.js +0 -32
  365. package/dist/json.js +0 -75
  366. package/dist/jsonc.js +0 -75
  367. package/dist/jsx-tags.js +0 -158
  368. package/dist/jvm-bytecode-verbose.js +0 -1231
  369. package/dist/jvm-bytecode.js +0 -565
  370. package/dist/kotlin-kotlin.js +0 -117
  371. package/dist/kotlin.js +0 -103
  372. package/dist/kotlinscript.js +0 -103
  373. package/dist/languages/extensions/extensionConfigurationLoader.d.ts +0 -3
  374. package/dist/languages/extensions/grammarLoader.d.ts +0 -2
  375. package/dist/languages/extensions/languageConfigurationLoader.d.ts +0 -2
  376. package/dist/languages/extensions/snippetLoader.d.ts +0 -2
  377. package/dist/languages/extensions/themeLoader.d.ts +0 -2
  378. package/dist/languages/snippets/index.d.ts +0 -1
  379. package/dist/languages/textMate/index.d.ts +0 -1
  380. package/dist/languages/textMate/semanticTokens.d.ts +0 -1
  381. package/dist/literate haskell.js +0 -88
  382. package/dist/literateHaskell.tmLanguage.js +0 -70
  383. package/dist/lua.js +0 -84
  384. package/dist/lua.tmLanguage.js +0 -906
  385. package/dist/lua2.js +0 -2859
  386. package/dist/markdown-basics-markdown.code-snippets.js +0 -121
  387. package/dist/markdown-svelte-css.js +0 -37
  388. package/dist/markdown-svelte-js.js +0 -37
  389. package/dist/markdown-svelte.js +0 -59
  390. package/dist/markdown-vue.js +0 -54
  391. package/dist/markdown.js +0 -49
  392. package/dist/markdown.tmLanguage.js +0 -3006
  393. package/dist/menhir-action.js +0 -51
  394. package/dist/menhir.js +0 -597
  395. package/dist/merlin.js +0 -111
  396. package/dist/namespace.r.js +0 -88
  397. package/dist/oasis.js +0 -99
  398. package/dist/objective-c.js +0 -79
  399. package/dist/objective-c.tmLanguage.js +0 -3763
  400. package/dist/objective-cpp.js +0 -79
  401. package/dist/ocaml-dune-project.js +0 -38
  402. package/dist/ocaml-dune.js +0 -53
  403. package/dist/ocaml-markdown-codeblock.js +0 -42
  404. package/dist/ocaml-ocaml.js +0 -88
  405. package/dist/ocaml-ocamllex.js +0 -12
  406. package/dist/ocaml.META.js +0 -29
  407. package/dist/ocaml.interface.js +0 -292
  408. package/dist/ocaml.interface2.js +0 -114
  409. package/dist/ocaml.js +0 -903
  410. package/dist/ocaml.menhir.js +0 -81
  411. package/dist/ocaml.oasis.js +0 -18
  412. package/dist/ocaml.ocamlbuild.js +0 -45
  413. package/dist/ocaml.ocamlformat.js +0 -8
  414. package/dist/ocaml.ocamllex.js +0 -60
  415. package/dist/ocaml.opam-install.js +0 -49
  416. package/dist/ocaml.opam.js +0 -69
  417. package/dist/ocaml2.js +0 -114
  418. package/dist/ocaml3.js +0 -136
  419. package/dist/ocamlbuild.js +0 -189
  420. package/dist/ocamldoc.js +0 -54
  421. package/dist/ocamlformat.js +0 -206
  422. package/dist/ocamllex.js +0 -133
  423. package/dist/omnisharp-csharp.js +0 -508
  424. package/dist/omnisharp.js +0 -590
  425. package/dist/opam-install.js +0 -40
  426. package/dist/opam.js +0 -140
  427. package/dist/pascal-pascal.js +0 -382
  428. package/dist/pascal.js +0 -80
  429. package/dist/pascal2.js +0 -26
  430. package/dist/perl.js +0 -93
  431. package/dist/perl.tmLanguage.js +0 -2986
  432. package/dist/perl6.js +0 -86
  433. package/dist/perl6.tmLanguage.js +0 -323
  434. package/dist/php-php.code-snippets.js +0 -267
  435. package/dist/php.js +0 -154
  436. package/dist/php.tmLanguage.js +0 -4008
  437. package/dist/pip-requirements.js +0 -8
  438. package/dist/pip-requirements.tmLanguage.js +0 -89
  439. package/dist/plaintext.js +0 -11
  440. package/dist/platform.tmLanguage.js +0 -1135
  441. package/dist/postcss.src.yaml.js +0 -393
  442. package/dist/postgres.js +0 -80
  443. package/dist/postgresql.js +0 -75
  444. package/dist/powershell.js +0 -107
  445. package/dist/powershell.tmLanguage.js +0 -1037
  446. package/dist/pug-svelte-dotblock.js +0 -69
  447. package/dist/pug-svelte-tags.js +0 -215
  448. package/dist/pug-svelte.js +0 -307
  449. package/dist/python.js +0 -236
  450. package/dist/r.js +0 -664
  451. package/dist/r2.js +0 -88
  452. package/dist/rbuildignore.js +0 -39
  453. package/dist/rd.js +0 -81
  454. package/dist/reason-markdown-codeblock.js +0 -42
  455. package/dist/reason.js +0 -79
  456. package/dist/rmd.js +0 -84
  457. package/dist/rnamespace.js +0 -283
  458. package/dist/ruby.js +0 -95
  459. package/dist/ruby.tmLanguage.js +0 -2784
  460. package/dist/rust.js +0 -84
  461. package/dist/rust.tmLanguage.js +0 -1178
  462. package/dist/sassdoc.tmLanguage.js +0 -362
  463. package/dist/scala.js +0 -85
  464. package/dist/scalameta.js +0 -223
  465. package/dist/scss.js +0 -117
  466. package/dist/scss.tmLanguage.js +0 -1887
  467. package/dist/sdl.js +0 -162
  468. package/dist/sdl2.js +0 -90
  469. package/dist/semanticdb.js +0 -62
  470. package/dist/shell-unix-bash.tmLanguage.js +0 -2016
  471. package/dist/shellscript.js +0 -93
  472. package/dist/solargraph.js +0 -192
  473. package/dist/solidity-solidity.js +0 -213
  474. package/dist/solidity.js +0 -1187
  475. package/dist/solidity2.js +0 -71
  476. package/dist/solidity3.js +0 -137
  477. package/dist/sql.js +0 -99
  478. package/dist/sql.tmLanguage.js +0 -636
  479. package/dist/svelte.js +0 -120
  480. package/dist/svelte.svelte-vscode-javascript.js +0 -45
  481. package/dist/svelte.svelte-vscode-svelte.js +0 -46
  482. package/dist/svelte.svelte-vscode-typescript.js +0 -43
  483. package/dist/svelte.svelte-vscode.js +0 -383
  484. package/dist/svelte.tmLanguage.src.yaml.js +0 -1099
  485. package/dist/svlangserver-systemverilog.js +0 -395
  486. package/dist/svlangserver.js +0 -85
  487. package/dist/swift-swift.code-snippets.js +0 -183
  488. package/dist/swift.js +0 -90
  489. package/dist/swift.tmLanguage.js +0 -3312
  490. package/dist/systemverilog.js +0 -187
  491. package/dist/systemverilog.tmLanguage.js +0 -1259
  492. package/dist/tasty.js +0 -72
  493. package/dist/tcl-tcl.js +0 -151
  494. package/dist/tcl.js +0 -78
  495. package/dist/tcl.tmlanguage.yaml.js +0 -5484
  496. package/dist/template.js +0 -207
  497. package/dist/theme-defaults~dark_plus.js +0 -207
  498. package/dist/theme-defaults~dark_plus_experimental.js +0 -146
  499. package/dist/theme-defaults~dark_vs.js +0 -412
  500. package/dist/theme-defaults~hc_black.js +0 -471
  501. package/dist/theme-defaults~hc_light.js +0 -595
  502. package/dist/theme-defaults~light_plus.js +0 -209
  503. package/dist/theme-defaults~light_plus_experimental.js +0 -159
  504. package/dist/theme-defaults~light_vs.js +0 -441
  505. package/dist/typescript-basics-typescript.code-snippets.js +0 -313
  506. package/dist/typescript-language-features.js +0 -1090
  507. package/dist/typescript.js +0 -216
  508. package/dist/typescriptreact.js +0 -216
  509. package/dist/vb-vb.code-snippets.js +0 -88
  510. package/dist/vb.js +0 -79
  511. package/dist/verilog.js +0 -187
  512. package/dist/volar-vue.js +0 -343
  513. package/dist/vscode-R-r-snippets.js +0 -534
  514. package/dist/vscode-R-rmarkdown.js +0 -461
  515. package/dist/vscode-R.js +0 -648
  516. package/dist/vscode-django-filters.js +0 -340
  517. package/dist/vscode-django.js +0 -37
  518. package/dist/vscode-go-go.js +0 -276
  519. package/dist/vscode-go.js +0 -1604
  520. package/dist/vscode-groovy.js +0 -28
  521. package/dist/vscode-python.js +0 -686
  522. package/dist/vue-directives.js +0 -25
  523. package/dist/vue-interpolations.js +0 -25
  524. package/dist/vue-sfc-style-variable-injection.js +0 -63
  525. package/dist/vue.js +0 -151
  526. package/dist/vue.tmLanguage.js +0 -1218
  527. package/dist/xml.js +0 -116
  528. package/dist/xml.tmLanguage.js +0 -395
  529. package/dist/xsl.js +0 -39
  530. package/dist/xsl.tmLanguage.js +0 -102
  531. package/dist/yaml.js +0 -82
  532. package/dist/yaml.tmLanguage.js +0 -629
  533. /package/dist/{extensions → editor}/autofold.d.ts +0 -0
  534. /package/dist/{extensions → editor}/cobol.d.ts +0 -0
  535. /package/dist/{extensions → editor}/index.d.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  import { c as createBase64WorkerFactory } from './worker.js';
2
2
 
3
- var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgZT1uZXcgY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmxpc3RlbmVycz1bXSx0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXI9ZnVuY3Rpb24oZSl7c2V0VGltZW91dCgoKCk9PntpZihlLnN0YWNrKXtpZihhLmlzRXJyb3JOb1RlbGVtZXRyeShlKSl0aHJvdyBuZXcgYShlLm1lc3NhZ2UrIlxuXG4iK2Uuc3RhY2spO3Rocm93IG5ldyBFcnJvcihlLm1lc3NhZ2UrIlxuXG4iK2Uuc3RhY2spfXRocm93IGV9KSwwKX19ZW1pdChlKXt0aGlzLmxpc3RlbmVycy5mb3JFYWNoKCh0PT57dChlKX0pKX1vblVuZXhwZWN0ZWRFcnJvcihlKXt0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoZSksdGhpcy5lbWl0KGUpfW9uVW5leHBlY3RlZEV4dGVybmFsRXJyb3IoZSl7dGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpfX07ZnVuY3Rpb24gdCh0KXsoZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGkpcmV0dXJuITA7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvciYmZS5uYW1lPT09ciYmZS5tZXNzYWdlPT09cn0pKHQpfHxlLm9uVW5leHBlY3RlZEVycm9yKHQpfWZ1bmN0aW9uIG4oZSl7aWYoZSBpbnN0YW5jZW9mIEVycm9yKXtjb25zdHtuYW1lOnQsbWVzc2FnZTpufT1lO3JldHVybnskaXNFcnJvcjohMCxuYW1lOnQsbWVzc2FnZTpuLHN0YWNrOmUuc3RhY2t0cmFjZXx8ZS5zdGFjayxub1RlbGVtZXRyeTphLmlzRXJyb3JOb1RlbGVtZXRyeShlKX19cmV0dXJuIGV9Y29uc3Qgcj0iQ2FuY2VsZWQiO2NsYXNzIGkgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKHIpLHRoaXMubmFtZT10aGlzLm1lc3NhZ2V9fWNsYXNzIGEgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLm5hbWU9IkVycm9yTm9UZWxlbWV0cnkifXN0YXRpYyBmcm9tRXJyb3IoZSl7aWYoZSBpbnN0YW5jZW9mIGEpcmV0dXJuIGU7Y29uc3QgdD1uZXcgYTtyZXR1cm4gdC5tZXNzYWdlPWUubWVzc2FnZSx0LnN0YWNrPWUuc3RhY2ssdH1zdGF0aWMgaXNFcnJvck5vVGVsZW1ldHJ5KGUpe3JldHVybiJFcnJvck5vVGVsZW1ldHJ5Ij09PWUubmFtZX19ZnVuY3Rpb24gbyhlKXtjb25zdCB0PXRoaXM7bGV0IG4scj0hMTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcnx8KHI9ITAsbj1lLmFwcGx5KHQsYXJndW1lbnRzKSksbn19dmFyIHM7IWZ1bmN0aW9uKGUpe2UuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbU3ltYm9sLml0ZXJhdG9yXX07Y29uc3QgdD1PYmplY3QuZnJlZXplKFtdKTtmdW5jdGlvbiBuKHQsbj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpe2NvbnN0IHI9W107aWYoMD09PW4pcmV0dXJuW3IsdF07Y29uc3QgaT10W1N5bWJvbC5pdGVyYXRvcl0oKTtmb3IobGV0IHQ9MDt0PG47dCsrKXtjb25zdCB0PWkubmV4dCgpO2lmKHQuZG9uZSlyZXR1cm5bcixlLmVtcHR5KCldO3IucHVzaCh0LnZhbHVlKX1yZXR1cm5bcix7W1N5bWJvbC5pdGVyYXRvcl06KCk9Pml9XX1lLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGUuc2luZ2xlPWZ1bmN0aW9uKihlKXt5aWVsZCBlfSxlLmZyb209ZnVuY3Rpb24oZSl7cmV0dXJuIGV8fHR9LGUuaXNFbXB0eT1mdW5jdGlvbihlKXtyZXR1cm4hZXx8ITA9PT1lW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KCkuZG9uZX0sZS5maXJzdD1mdW5jdGlvbihlKXtyZXR1cm4gZVtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLnZhbHVlfSxlLnNvbWU9ZnVuY3Rpb24oZSx0KXtmb3IoY29uc3QgbiBvZiBlKWlmKHQobikpcmV0dXJuITA7cmV0dXJuITF9LGUuZmluZD1mdW5jdGlvbihlLHQpe2Zvcihjb25zdCBuIG9mIGUpaWYodChuKSlyZXR1cm4gbn0sZS5maWx0ZXI9ZnVuY3Rpb24qKGUsdCl7Zm9yKGNvbnN0IG4gb2YgZSl0KG4pJiYoeWllbGQgbil9LGUubWFwPWZ1bmN0aW9uKihlLHQpe2xldCBuPTA7Zm9yKGNvbnN0IHIgb2YgZSl5aWVsZCB0KHIsbisrKX0sZS5jb25jYXQ9ZnVuY3Rpb24qKC4uLmUpe2Zvcihjb25zdCB0IG9mIGUpZm9yKGNvbnN0IGUgb2YgdCl5aWVsZCBlfSxlLmNvbmNhdE5lc3RlZD1mdW5jdGlvbiooZSl7Zm9yKGNvbnN0IHQgb2YgZSlmb3IoY29uc3QgZSBvZiB0KXlpZWxkIGV9LGUucmVkdWNlPWZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1uO2Zvcihjb25zdCBuIG9mIGUpcj10KHIsbik7cmV0dXJuIHJ9LGUuZm9yRWFjaD1mdW5jdGlvbihlLHQpe2xldCBuPTA7Zm9yKGNvbnN0IHIgb2YgZSl0KHIsbisrKX0sZS5zbGljZT1mdW5jdGlvbiooZSx0LG49ZS5sZW5ndGgpe2Zvcih0PDAmJih0Kz1lLmxlbmd0aCksbjwwP24rPWUubGVuZ3RoOm4+ZS5sZW5ndGgmJihuPWUubGVuZ3RoKTt0PG47dCsrKXlpZWxkIGVbdF19LGUuY29uc3VtZT1uLGUuY29sbGVjdD1mdW5jdGlvbihlKXtyZXR1cm4gbihlKVswXX0sZS5lcXVhbHM9ZnVuY3Rpb24oZSx0LG49KChlLHQpPT5lPT09dCkpe2NvbnN0IHI9ZVtTeW1ib2wuaXRlcmF0b3JdKCksaT10W1N5bWJvbC5pdGVyYXRvcl0oKTtmb3IoOzspe2NvbnN0IGU9ci5uZXh0KCksdD1pLm5leHQoKTtpZihlLmRvbmUhPT10LmRvbmUpcmV0dXJuITE7aWYoZS5kb25lKXJldHVybiEwO2lmKCFuKGUudmFsdWUsdC52YWx1ZSkpcmV0dXJuITF9fX0oc3x8KHM9e30pKTtjbGFzcyBsIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoYEVuY291bnRlcmVkIGVycm9ycyB3aGlsZSBkaXNwb3Npbmcgb2Ygc3RvcmUuIEVycm9yczogWyR7ZS5qb2luKCIsICIpfV1gKSx0aGlzLmVycm9ycz1lfX1mdW5jdGlvbiBjKGUpe2lmKHMuaXMoZSkpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2YgZSlpZihuKXRyeXtuLmRpc3Bvc2UoKX1jYXRjaChlKXt0LnB1c2goZSl9aWYoMT09PXQubGVuZ3RoKXRocm93IHRbMF07aWYodC5sZW5ndGg+MSl0aHJvdyBuZXcgbCh0KTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9bXTplfWlmKGUpcmV0dXJuIGUuZGlzcG9zZSgpLGV9ZnVuY3Rpb24gaChlKXtyZXR1cm57ZGlzcG9zZTpvKCgoKT0+e2UoKX0pKX19Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3RvRGlzcG9zZT1uZXcgU2V0LHRoaXMuX2lzRGlzcG9zZWQ9ITF9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWR8fCh0aGlzLl9pc0Rpc3Bvc2VkPSEwLHRoaXMuY2xlYXIoKSl9Z2V0IGlzRGlzcG9zZWQoKXtyZXR1cm4gdGhpcy5faXNEaXNwb3NlZH1jbGVhcigpe3RyeXtjKHRoaXMuX3RvRGlzcG9zZS52YWx1ZXMoKSl9ZmluYWxseXt0aGlzLl90b0Rpc3Bvc2UuY2xlYXIoKX19YWRkKGUpe2lmKCFlKXJldHVybiBlO2lmKGU9PT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGEgZGlzcG9zYWJsZSBvbiBpdHNlbGYhIik7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWQ/ZC5ESVNBQkxFX0RJU1BPU0VEX1dBUk5JTkd8fGNvbnNvbGUud2FybihuZXcgRXJyb3IoIlRyeWluZyB0byBhZGQgYSBkaXNwb3NhYmxlIHRvIGEgRGlzcG9zYWJsZVN0b3JlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkaXNwb3NlZCBvZi4gVGhlIGFkZGVkIG9iamVjdCB3aWxsIGJlIGxlYWtlZCEiKS5zdGFjayk6dGhpcy5fdG9EaXNwb3NlLmFkZChlKSxlfX1kLkRJU0FCTEVfRElTUE9TRURfV0FSTklORz0hMTtjbGFzcyB1e2NvbnN0cnVjdG9yKCl7dGhpcy5fc3RvcmU9bmV3IGQsdGhpcy5fc3RvcmV9ZGlzcG9zZSgpe3RoaXMuX3N0b3JlLmRpc3Bvc2UoKX1fcmVnaXN0ZXIoZSl7aWYoZT09PXRoaXMpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVnaXN0ZXIgYSBkaXNwb3NhYmxlIG9uIGl0c2VsZiEiKTtyZXR1cm4gdGhpcy5fc3RvcmUuYWRkKGUpfX11Lk5vbmU9T2JqZWN0LmZyZWV6ZSh7ZGlzcG9zZSgpe319KTtjbGFzcyBwe2NvbnN0cnVjdG9yKCl7dGhpcy5kaXNwb3NlPSgpPT57fSx0aGlzLnVuc2V0PSgpPT57fSx0aGlzLmlzc2V0PSgpPT4hMX1zZXQoZSl7bGV0IHQ9ZTtyZXR1cm4gdGhpcy51bnNldD0oKT0+dD12b2lkIDAsdGhpcy5pc3NldD0oKT0+dm9pZCAwIT09dCx0aGlzLmRpc3Bvc2U9KCk9Pnt0JiYodCgpLHQ9dm9pZCAwKX0sdGhpc319bGV0IG09Y2xhc3MgZXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmVsZW1lbnQ9dCx0aGlzLm5leHQ9ZS5VbmRlZmluZWQsdGhpcy5wcmV2PWUuVW5kZWZpbmVkfX07bS5VbmRlZmluZWQ9bmV3IG0odm9pZCAwKTtjbGFzcyBme2NvbnN0cnVjdG9yKCl7dGhpcy5fZmlyc3Q9bS5VbmRlZmluZWQsdGhpcy5fbGFzdD1tLlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1pc0VtcHR5KCl7cmV0dXJuIHRoaXMuX2ZpcnN0PT09bS5VbmRlZmluZWR9Y2xlYXIoKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1tLlVuZGVmaW5lZDspe2NvbnN0IHQ9ZS5uZXh0O2UucHJldj1tLlVuZGVmaW5lZCxlLm5leHQ9bS5VbmRlZmluZWQsZT10fXRoaXMuX2ZpcnN0PW0uVW5kZWZpbmVkLHRoaXMuX2xhc3Q9bS5VbmRlZmluZWQsdGhpcy5fc2l6ZT0wfXVuc2hpZnQoZSl7cmV0dXJuIHRoaXMuX2luc2VydChlLCExKX1wdXNoKGUpe3JldHVybiB0aGlzLl9pbnNlcnQoZSwhMCl9X2luc2VydChlLHQpe2NvbnN0IG49bmV3IG0oZSk7aWYodGhpcy5fZmlyc3Q9PT1tLlVuZGVmaW5lZCl0aGlzLl9maXJzdD1uLHRoaXMuX2xhc3Q9bjtlbHNlIGlmKHQpe2NvbnN0IGU9dGhpcy5fbGFzdDt0aGlzLl9sYXN0PW4sbi5wcmV2PWUsZS5uZXh0PW59ZWxzZXtjb25zdCBlPXRoaXMuX2ZpcnN0O3RoaXMuX2ZpcnN0PW4sbi5uZXh0PWUsZS5wcmV2PW59dGhpcy5fc2l6ZSs9MTtsZXQgcj0hMTtyZXR1cm4oKT0+e3J8fChyPSEwLHRoaXMuX3JlbW92ZShuKSl9fXNoaWZ0KCl7aWYodGhpcy5fZmlyc3QhPT1tLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9maXJzdC5lbGVtZW50O3JldHVybiB0aGlzLl9yZW1vdmUodGhpcy5fZmlyc3QpLGV9fXBvcCgpe2lmKHRoaXMuX2xhc3QhPT1tLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9sYXN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9sYXN0KSxlfX1fcmVtb3ZlKGUpe2lmKGUucHJldiE9PW0uVW5kZWZpbmVkJiZlLm5leHQhPT1tLlVuZGVmaW5lZCl7Y29uc3QgdD1lLnByZXY7dC5uZXh0PWUubmV4dCxlLm5leHQucHJldj10fWVsc2UgZS5wcmV2PT09bS5VbmRlZmluZWQmJmUubmV4dD09PW0uVW5kZWZpbmVkPyh0aGlzLl9maXJzdD1tLlVuZGVmaW5lZCx0aGlzLl9sYXN0PW0uVW5kZWZpbmVkKTplLm5leHQ9PT1tLlVuZGVmaW5lZD8odGhpcy5fbGFzdD10aGlzLl9sYXN0LnByZXYsdGhpcy5fbGFzdC5uZXh0PW0uVW5kZWZpbmVkKTplLnByZXY9PT1tLlVuZGVmaW5lZCYmKHRoaXMuX2ZpcnN0PXRoaXMuX2ZpcnN0Lm5leHQsdGhpcy5fZmlyc3QucHJldj1tLlVuZGVmaW5lZCk7dGhpcy5fc2l6ZS09MX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1tLlVuZGVmaW5lZDspeWllbGQgZS5lbGVtZW50LGU9ZS5uZXh0fX1sZXQgZz0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5sb2NhdGlvbiYmZG9jdW1lbnQubG9jYXRpb24uaGFzaC5pbmRleE9mKCJwc2V1ZG89dHJ1ZSIpPj0wO3ZhciBiO2NvbnN0IHc9ImVuIjtsZXQgXyx2LHksVD0hMSxrPSExLFM9ITEsQz0hMSx4PXc7Y29uc3QgTD0ib2JqZWN0Ij09dHlwZW9mIHNlbGY/c2VsZjoib2JqZWN0Ij09dHlwZW9mIGdsb2JhbD9nbG9iYWw6e307bGV0IEU7dm9pZCAwIT09TC52c2NvZGUmJnZvaWQgMCE9PUwudnNjb2RlLnByb2Nlc3M/RT1MLnZzY29kZS5wcm9jZXNzOiJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmKEU9cHJvY2Vzcyk7Y29uc3QgQT0ic3RyaW5nIj09dHlwZW9mKG51bGw9PT0oYj1udWxsPT1FP3ZvaWQgMDpFLnZlcnNpb25zKXx8dm9pZCAwPT09Yj92b2lkIDA6Yi5lbGVjdHJvbikmJiJyZW5kZXJlciI9PT0obnVsbD09RT92b2lkIDA6RS50eXBlKTtpZigib2JqZWN0IiE9dHlwZW9mIG5hdmlnYXRvcnx8QSlpZigib2JqZWN0Ij09dHlwZW9mIEUpe1Q9IndpbjMyIj09PUUucGxhdGZvcm0saz0iZGFyd2luIj09PUUucGxhdGZvcm0sUz0ibGludXgiPT09RS5wbGF0Zm9ybSxTJiZFLmVudi5TTkFQJiZFLmVudi5TTkFQX1JFVklTSU9OLEUuZW52LkNJfHxFLmVudi5CVUlMRF9BUlRJRkFDVFNUQUdJTkdESVJFQ1RPUlksXz13LHg9dztjb25zdCBlPUUuZW52LlZTQ09ERV9OTFNfQ09ORklHO2lmKGUpdHJ5e2NvbnN0IHQ9SlNPTi5wYXJzZShlKSxuPXQuYXZhaWxhYmxlTGFuZ3VhZ2VzWyIqIl07Xz10LmxvY2FsZSx4PW58fHcsdj10Ll90cmFuc2xhdGlvbnNDb25maWdGaWxlfWNhdGNoKGUpe319ZWxzZSBjb25zb2xlLmVycm9yKCJVbmFibGUgdG8gcmVzb2x2ZSBwbGF0Zm9ybS4iKTtlbHNlIHk9bmF2aWdhdG9yLnVzZXJBZ2VudCxUPXkuaW5kZXhPZigiV2luZG93cyIpPj0wLGs9eS5pbmRleE9mKCJNYWNpbnRvc2giKT49MCwoeS5pbmRleE9mKCJNYWNpbnRvc2giKT49MHx8eS5pbmRleE9mKCJpUGFkIik+PTB8fHkuaW5kZXhPZigiaVBob25lIik+PTApJiZuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyxTPXkuaW5kZXhPZigiTGludXgiKT49MCxDPSEwLGZ1bmN0aW9uKGUsdCwuLi5uKXshZnVuY3Rpb24oZSx0KXtsZXQgbjtuPTA9PT10Lmxlbmd0aD9lOmUucmVwbGFjZSgvXHsoXGQrKVx9L2csKChlLG4pPT57Y29uc3Qgcj1uWzBdLGk9dFtyXTtsZXQgYT1lO3JldHVybiJzdHJpbmciPT10eXBlb2YgaT9hPWk6Im51bWJlciIhPXR5cGVvZiBpJiYiYm9vbGVhbiIhPXR5cGVvZiBpJiZudWxsIT1pfHwoYT1TdHJpbmcoaSkpLGF9KSksZyYmKG49Iu+8uyIrbi5yZXBsYWNlKC9bYW91ZWldL2csIiQmJCYiKSsi77y9Iil9KHQsbil9KDAsIl8iKSxfPXcseD1fO2NvbnN0IE09VCxSPWs7QyYmTC5pbXBvcnRTY3JpcHRzO2NvbnN0IEk9eSxOPSJmdW5jdGlvbiI9PXR5cGVvZiBMLnBvc3RNZXNzYWdlJiYhTC5pbXBvcnRTY3JpcHRzOygoKT0+e2lmKE4pe2NvbnN0IGU9W107TC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwodD0+e2lmKHQuZGF0YSYmdC5kYXRhLnZzY29kZVNjaGVkdWxlQXN5bmNXb3JrKWZvcihsZXQgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl7Y29uc3Qgcj1lW25dO2lmKHIuaWQ9PT10LmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspcmV0dXJuIGUuc3BsaWNlKG4sMSksdm9pZCByLmNhbGxiYWNrKCl9fSkpO2xldCB0PTA7cmV0dXJuIG49Pntjb25zdCByPSsrdDtlLnB1c2goe2lkOnIsY2FsbGJhY2s6bn0pLEwucG9zdE1lc3NhZ2Uoe3ZzY29kZVNjaGVkdWxlQXN5bmNXb3JrOnJ9LCIqIil9fX0pKCk7Y29uc3QgVT0hIShJJiZJLmluZGV4T2YoIkNocm9tZSIpPj0wKTtJJiZJLmluZGV4T2YoIkZpcmVmb3giKSwhVSYmSSYmSS5pbmRleE9mKCJTYWZhcmkiKSxJJiZJLmluZGV4T2YoIkVkZy8iKSxJJiZJLmluZGV4T2YoIkFuZHJvaWQiKTtjb25zdCBIPUwucGVyZm9ybWFuY2UmJiJmdW5jdGlvbiI9PXR5cGVvZiBMLnBlcmZvcm1hbmNlLm5vdztjbGFzcyB6e2NvbnN0cnVjdG9yKGUpe3RoaXMuX2hpZ2hSZXNvbHV0aW9uPUgmJmUsdGhpcy5fc3RhcnRUaW1lPXRoaXMuX25vdygpLHRoaXMuX3N0b3BUaW1lPS0xfXN0YXRpYyBjcmVhdGUoZT0hMCl7cmV0dXJuIG5ldyB6KGUpfXN0b3AoKXt0aGlzLl9zdG9wVGltZT10aGlzLl9ub3coKX1lbGFwc2VkKCl7cmV0dXJuLTEhPT10aGlzLl9zdG9wVGltZT90aGlzLl9zdG9wVGltZS10aGlzLl9zdGFydFRpbWU6dGhpcy5fbm93KCktdGhpcy5fc3RhcnRUaW1lfV9ub3coKXtyZXR1cm4gdGhpcy5faGlnaFJlc29sdXRpb24/TC5wZXJmb3JtYW5jZS5ub3coKTpEYXRlLm5vdygpfX12YXIgRCxXOyFmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3JldHVybih0LG49bnVsbCxyKT0+e2xldCBpLGE9ITE7cmV0dXJuIGk9ZSgoZT0+e2lmKCFhKXJldHVybiBpP2kuZGlzcG9zZSgpOmE9ITAsdC5jYWxsKG4sZSl9KSxudWxsLHIpLGEmJmkuZGlzcG9zZSgpLGl9fWZ1bmN0aW9uIG4oZSx0LG4pe3JldHVybiBvKCgobixyPW51bGwsaSk9PmUoKGU9Pm4uY2FsbChyLHQoZSkpKSxudWxsLGkpKSxuKX1mdW5jdGlvbiByKGUsdCxuKXtyZXR1cm4gbygoKG4scj1udWxsLGkpPT5lKChlPT57dChlKSxuLmNhbGwocixlKX0pLG51bGwsaSkpLG4pfWZ1bmN0aW9uIGkoZSx0LG4pe3JldHVybiBvKCgobixyPW51bGwsaSk9PmUoKGU9PnQoZSkmJm4uY2FsbChyLGUpKSxudWxsLGkpKSxuKX1mdW5jdGlvbiBhKGUsdCxyLGkpe2xldCBhPXI7cmV0dXJuIG4oZSwoZT0+KGE9dChhLGUpLGEpKSxpKX1mdW5jdGlvbiBvKGUsdCl7bGV0IG47Y29uc3Qgcj1uZXcgRih7b25GaXJzdExpc3RlbmVyQWRkKCl7bj1lKHIuZmlyZSxyKX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXtudWxsPT1ufHxuLmRpc3Bvc2UoKX19KTtyZXR1cm4gbnVsbD09dHx8dC5hZGQociksci5ldmVudH1mdW5jdGlvbiBzKGUsdCxuPTEwMCxyPSExLGksYSl7bGV0IG8scyxsLGM9MDtjb25zdCBoPW5ldyBGKHtsZWFrV2FybmluZ1RocmVzaG9sZDppLG9uRmlyc3RMaXN0ZW5lckFkZCgpe289ZSgoZT0+e2MrKyxzPXQocyxlKSxyJiYhbCYmKGguZmlyZShzKSxzPXZvaWQgMCksY2xlYXJUaW1lb3V0KGwpLGw9c2V0VGltZW91dCgoKCk9Pntjb25zdCBlPXM7cz12b2lkIDAsbD12b2lkIDAsKCFyfHxjPjEpJiZoLmZpcmUoZSksYz0wfSksbil9KSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlKCl7by5kaXNwb3NlKCl9fSk7cmV0dXJuIG51bGw9PWF8fGEuYWRkKGgpLGguZXZlbnR9ZnVuY3Rpb24gbChlLHQ9KChlLHQpPT5lPT09dCksbil7bGV0IHIsYT0hMDtyZXR1cm4gaShlLChlPT57Y29uc3Qgbj1hfHwhdChlLHIpO3JldHVybiBhPSExLHI9ZSxufSksbil9ZS5Ob25lPSgpPT51Lk5vbmUsZS5vbmNlPXQsZS5tYXA9bixlLmZvckVhY2g9cixlLmZpbHRlcj1pLGUuc2lnbmFsPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLmFueT1mdW5jdGlvbiguLi5lKXtyZXR1cm4odCxuPW51bGwscik9PmZ1bmN0aW9uKC4uLmUpe3JldHVybiBoKCgoKT0+YyhlKSkpfSguLi5lLm1hcCgoZT0+ZSgoZT0+dC5jYWxsKG4sZSkpLG51bGwscikpKSl9LGUucmVkdWNlPWEsZS5kZWJvdW5jZT1zLGUubGF0Y2g9bCxlLnNwbGl0PWZ1bmN0aW9uKHQsbixyKXtyZXR1cm5bZS5maWx0ZXIodCxuLHIpLGUuZmlsdGVyKHQsKGU9PiFuKGUpKSxyKV19LGUuYnVmZmVyPWZ1bmN0aW9uKGUsdD0hMSxuPVtdKXtsZXQgcj1uLnNsaWNlKCksaT1lKChlPT57cj9yLnB1c2goZSk6by5maXJlKGUpfSkpO2NvbnN0IGE9KCk9PntudWxsPT1yfHxyLmZvckVhY2goKGU9Pm8uZmlyZShlKSkpLHI9bnVsbH0sbz1uZXcgRih7b25GaXJzdExpc3RlbmVyQWRkKCl7aXx8KGk9ZSgoZT0+by5maXJlKGUpKSkpfSxvbkZpcnN0TGlzdGVuZXJEaWRBZGQoKXtyJiYodD9zZXRUaW1lb3V0KGEpOmEoKSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlKCl7aSYmaS5kaXNwb3NlKCksaT1udWxsfX0pO3JldHVybiBvLmV2ZW50fTtjbGFzcyBwe2NvbnN0cnVjdG9yKGUpe3RoaXMuZXZlbnQ9ZSx0aGlzLmRpc3Bvc2FibGVzPW5ldyBkfW1hcChlKXtyZXR1cm4gbmV3IHAobih0aGlzLmV2ZW50LGUsdGhpcy5kaXNwb3NhYmxlcykpfWZvckVhY2goZSl7cmV0dXJuIG5ldyBwKHIodGhpcy5ldmVudCxlLHRoaXMuZGlzcG9zYWJsZXMpKX1maWx0ZXIoZSl7cmV0dXJuIG5ldyBwKGkodGhpcy5ldmVudCxlLHRoaXMuZGlzcG9zYWJsZXMpKX1yZWR1Y2UoZSx0KXtyZXR1cm4gbmV3IHAoYSh0aGlzLmV2ZW50LGUsdCx0aGlzLmRpc3Bvc2FibGVzKSl9bGF0Y2goKXtyZXR1cm4gbmV3IHAobCh0aGlzLmV2ZW50LHZvaWQgMCx0aGlzLmRpc3Bvc2FibGVzKSl9ZGVib3VuY2UoZSx0PTEwMCxuPSExLHIpe3JldHVybiBuZXcgcChzKHRoaXMuZXZlbnQsZSx0LG4scix0aGlzLmRpc3Bvc2FibGVzKSl9b24oZSx0LG4pe3JldHVybiB0aGlzLmV2ZW50KGUsdCxuKX1vbmNlKGUsbixyKXtyZXR1cm4gdCh0aGlzLmV2ZW50KShlLG4scil9ZGlzcG9zZSgpe3RoaXMuZGlzcG9zYWJsZXMuZGlzcG9zZSgpfX1lLmNoYWluPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgcChlKX0sZS5mcm9tTm9kZUV2ZW50RW1pdHRlcj1mdW5jdGlvbihlLHQsbj0oZT0+ZSkpe2NvbnN0IHI9KC4uLmUpPT5pLmZpcmUobiguLi5lKSksaT1uZXcgRih7b25GaXJzdExpc3RlbmVyQWRkOigpPT5lLm9uKHQsciksb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9PmUucmVtb3ZlTGlzdGVuZXIodCxyKX0pO3JldHVybiBpLmV2ZW50fSxlLmZyb21ET01FdmVudEVtaXR0ZXI9ZnVuY3Rpb24oZSx0LG49KGU9PmUpKXtjb25zdCByPSguLi5lKT0+aS5maXJlKG4oLi4uZSkpLGk9bmV3IEYoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+ZS5hZGRFdmVudExpc3RlbmVyKHQsciksb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHIpfSk7cmV0dXJuIGkuZXZlbnR9LGUudG9Qcm9taXNlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgobj0+dChlKShuKSkpfSxlLnJ1bkFuZFN1YnNjcmliZT1mdW5jdGlvbihlLHQpe3JldHVybiB0KHZvaWQgMCksZSgoZT0+dChlKSkpfSxlLnJ1bkFuZFN1YnNjcmliZVdpdGhTdG9yZT1mdW5jdGlvbihlLHQpe2xldCBuPW51bGw7ZnVuY3Rpb24gcihlKXtudWxsPT1ufHxuLmRpc3Bvc2UoKSxuPW5ldyBkLHQoZSxuKX1yKHZvaWQgMCk7Y29uc3QgaT1lKChlPT5yKGUpKSk7cmV0dXJuIGgoKCgpPT57aS5kaXNwb3NlKCksbnVsbD09bnx8bi5kaXNwb3NlKCl9KSl9O2NsYXNzIG17Y29uc3RydWN0b3IoZSx0KXt0aGlzLm9icz1lLHRoaXMuX2NvdW50ZXI9MCx0aGlzLl9oYXNDaGFuZ2VkPSExO2NvbnN0IG49e29uRmlyc3RMaXN0ZW5lckFkZDooKT0+e2UuYWRkT2JzZXJ2ZXIodGhpcyl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlOigpPT57ZS5yZW1vdmVPYnNlcnZlcih0aGlzKX19O3RoaXMuZW1pdHRlcj1uZXcgRihuKSx0JiZ0LmFkZCh0aGlzLmVtaXR0ZXIpfWJlZ2luVXBkYXRlKGUpe3RoaXMuX2NvdW50ZXIrK31oYW5kbGVDaGFuZ2UoZSx0KXt0aGlzLl9oYXNDaGFuZ2VkPSEwfWVuZFVwZGF0ZShlKXswPT0tLXRoaXMuX2NvdW50ZXImJnRoaXMuX2hhc0NoYW5nZWQmJih0aGlzLl9oYXNDaGFuZ2VkPSExLHRoaXMuZW1pdHRlci5maXJlKHRoaXMub2JzLmdldCgpKSl9fWUuZnJvbU9ic2VydmFibGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IG0oZSx0KS5lbWl0dGVyLmV2ZW50fX0oRHx8KEQ9e30pKTtjbGFzcyBPe2NvbnN0cnVjdG9yKGUpe3RoaXMuX2xpc3RlbmVyQ291bnQ9MCx0aGlzLl9pbnZvY2F0aW9uQ291bnQ9MCx0aGlzLl9lbGFwc2VkT3ZlcmFsbD0wLHRoaXMuX25hbWU9YCR7ZX1fJHtPLl9pZFBvb2wrK31gfXN0YXJ0KGUpe3RoaXMuX3N0b3BXYXRjaD1uZXcgeighMCksdGhpcy5fbGlzdGVuZXJDb3VudD1lfXN0b3AoKXtpZih0aGlzLl9zdG9wV2F0Y2gpe2NvbnN0IGU9dGhpcy5fc3RvcFdhdGNoLmVsYXBzZWQoKTt0aGlzLl9lbGFwc2VkT3ZlcmFsbCs9ZSx0aGlzLl9pbnZvY2F0aW9uQ291bnQrPTEsY29uc29sZS5pbmZvKGBkaWQgRklSRSAke3RoaXMuX25hbWV9OiBlbGFwc2VkX21zOiAke2UudG9GaXhlZCg1KX0sIGxpc3RlbmVyOiAke3RoaXMuX2xpc3RlbmVyQ291bnR9IChlbGFwc2VkX292ZXJhbGw6ICR7dGhpcy5fZWxhcHNlZE92ZXJhbGwudG9GaXhlZCgyKX0sIGludm9jYXRpb25zOiAke3RoaXMuX2ludm9jYXRpb25Db3VudH0pYCksdGhpcy5fc3RvcFdhdGNoPXZvaWQgMH19fU8uX2lkUG9vbD0wO2NsYXNzIFB7Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZT1lfXN0YXRpYyBjcmVhdGUoKXt2YXIgZTtyZXR1cm4gbmV3IFAobnVsbCE9PShlPShuZXcgRXJyb3IpLnN0YWNrKSYmdm9pZCAwIT09ZT9lOiIiKX1wcmludCgpe2NvbnNvbGUud2Fybih0aGlzLnZhbHVlLnNwbGl0KCJcbiIpLnNsaWNlKDIpLmpvaW4oIlxuIikpfX1jbGFzcyBxe2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmNhbGxiYWNrPWUsdGhpcy5jYWxsYmFja1RoaXM9dCx0aGlzLnN0YWNrPW4sdGhpcy5zdWJzY3JpcHRpb249bmV3IHB9aW52b2tlKGUpe3RoaXMuY2FsbGJhY2suY2FsbCh0aGlzLmNhbGxiYWNrVGhpcyxlKX19Y2xhc3MgRntjb25zdHJ1Y3RvcihlKXt2YXIgdCxuO3RoaXMuX2Rpc3Bvc2VkPSExLHRoaXMuX29wdGlvbnM9ZSx0aGlzLl9sZWFrYWdlTW9uPXZvaWQgMCx0aGlzLl9wZXJmTW9uPShudWxsPT09KHQ9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuX3Byb2ZOYW1lKT9uZXcgTyh0aGlzLl9vcHRpb25zLl9wcm9mTmFtZSk6dm9pZCAwLHRoaXMuX2RlbGl2ZXJ5UXVldWU9bnVsbD09PShuPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmRlbGl2ZXJ5UXVldWV9ZGlzcG9zZSgpe3ZhciBlLHQsbixyO3RoaXMuX2Rpc3Bvc2VkfHwodGhpcy5fZGlzcG9zZWQ9ITAsdGhpcy5fbGlzdGVuZXJzJiZ0aGlzLl9saXN0ZW5lcnMuY2xlYXIoKSxudWxsPT09KGU9dGhpcy5fZGVsaXZlcnlRdWV1ZSl8fHZvaWQgMD09PWV8fGUuY2xlYXIodGhpcyksbnVsbD09PShuPW51bGw9PT0odD10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09dD92b2lkIDA6dC5vbkxhc3RMaXN0ZW5lclJlbW92ZSl8fHZvaWQgMD09PW58fG4uY2FsbCh0KSxudWxsPT09KHI9dGhpcy5fbGVha2FnZU1vbil8fHZvaWQgMD09PXJ8fHIuZGlzcG9zZSgpKX1nZXQgZXZlbnQoKXtyZXR1cm4gdGhpcy5fZXZlbnR8fCh0aGlzLl9ldmVudD0oZSx0LG4pPT57dmFyIHIsaSxhO3RoaXMuX2xpc3RlbmVyc3x8KHRoaXMuX2xpc3RlbmVycz1uZXcgZik7Y29uc3Qgbz10aGlzLl9saXN0ZW5lcnMuaXNFbXB0eSgpO2xldCBzLGw7byYmKG51bGw9PT0ocj10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09cj92b2lkIDA6ci5vbkZpcnN0TGlzdGVuZXJBZGQpJiZ0aGlzLl9vcHRpb25zLm9uRmlyc3RMaXN0ZW5lckFkZCh0aGlzKSx0aGlzLl9sZWFrYWdlTW9uJiZ0aGlzLl9saXN0ZW5lcnMuc2l6ZT49MzAmJihsPVAuY3JlYXRlKCkscz10aGlzLl9sZWFrYWdlTW9uLmNoZWNrKGwsdGhpcy5fbGlzdGVuZXJzLnNpemUrMSkpO2NvbnN0IGM9bmV3IHEoZSx0LGwpLGg9dGhpcy5fbGlzdGVuZXJzLnB1c2goYyk7byYmKG51bGw9PT0oaT10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09aT92b2lkIDA6aS5vbkZpcnN0TGlzdGVuZXJEaWRBZGQpJiZ0aGlzLl9vcHRpb25zLm9uRmlyc3RMaXN0ZW5lckRpZEFkZCh0aGlzKSwobnVsbD09PShhPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLm9uTGlzdGVuZXJEaWRBZGQpJiZ0aGlzLl9vcHRpb25zLm9uTGlzdGVuZXJEaWRBZGQodGhpcyxlLHQpO2NvbnN0IHU9Yy5zdWJzY3JpcHRpb24uc2V0KCgoKT0+e2lmKG51bGw9PXN8fHMoKSwhdGhpcy5fZGlzcG9zZWQmJihoKCksdGhpcy5fb3B0aW9ucyYmdGhpcy5fb3B0aW9ucy5vbkxhc3RMaXN0ZW5lclJlbW92ZSkpe3RoaXMuX2xpc3RlbmVycyYmIXRoaXMuX2xpc3RlbmVycy5pc0VtcHR5KCl8fHRoaXMuX29wdGlvbnMub25MYXN0TGlzdGVuZXJSZW1vdmUodGhpcyl9fSkpO3JldHVybiBuIGluc3RhbmNlb2YgZD9uLmFkZCh1KTpBcnJheS5pc0FycmF5KG4pJiZuLnB1c2godSksdX0pLHRoaXMuX2V2ZW50fWZpcmUoZSl7dmFyIHQsbjtpZih0aGlzLl9saXN0ZW5lcnMpe3RoaXMuX2RlbGl2ZXJ5UXVldWV8fCh0aGlzLl9kZWxpdmVyeVF1ZXVlPW5ldyBCKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9saXN0ZW5lcnMpdGhpcy5fZGVsaXZlcnlRdWV1ZS5wdXNoKHRoaXMsdCxlKTtudWxsPT09KHQ9dGhpcy5fcGVyZk1vbil8fHZvaWQgMD09PXR8fHQuc3RhcnQodGhpcy5fZGVsaXZlcnlRdWV1ZS5zaXplKSx0aGlzLl9kZWxpdmVyeVF1ZXVlLmRlbGl2ZXIoKSxudWxsPT09KG49dGhpcy5fcGVyZk1vbil8fHZvaWQgMD09PW58fG4uc3RvcCgpfX19Y2xhc3MgVntjb25zdHJ1Y3Rvcigpe3RoaXMuX3F1ZXVlPW5ldyBmfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3F1ZXVlLnNpemV9cHVzaChlLHQsbil7dGhpcy5fcXVldWUucHVzaChuZXcgSyhlLHQsbikpfWNsZWFyKGUpe2NvbnN0IHQ9bmV3IGY7Zm9yKGNvbnN0IG4gb2YgdGhpcy5fcXVldWUpbi5lbWl0dGVyIT09ZSYmdC5wdXNoKG4pO3RoaXMuX3F1ZXVlPXR9ZGVsaXZlcigpe2Zvcig7dGhpcy5fcXVldWUuc2l6ZT4wOyl7Y29uc3QgZT10aGlzLl9xdWV1ZS5zaGlmdCgpO3RyeXtlLmxpc3RlbmVyLmludm9rZShlLmV2ZW50KX1jYXRjaChlKXt0KGUpfX19fWNsYXNzIEIgZXh0ZW5kcyBWe2NsZWFyKGUpe3RoaXMuX3F1ZXVlLmNsZWFyKCl9fWNsYXNzIEt7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuZW1pdHRlcj1lLHRoaXMubGlzdGVuZXI9dCx0aGlzLmV2ZW50PW59fWZ1bmN0aW9uIGooZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBmdW5jdGlvbihlKXtsZXQgdD1bXSxuPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtmb3IoO09iamVjdC5wcm90b3R5cGUhPT1uOyl0PXQuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG4pKSxuPU9iamVjdC5nZXRQcm90b3R5cGVPZihuKTtyZXR1cm4gdH0oZSkpImZ1bmN0aW9uIj09dHlwZW9mIGVbbl0mJnQucHVzaChuKTtyZXR1cm4gdH1mdW5jdGlvbiBHKGUsdD0iVW5yZWFjaGFibGUiKXt0aHJvdyBuZXcgRXJyb3IodCl9Y2xhc3MgJHtjb25zdHJ1Y3RvcihlKXt0aGlzLmV4ZWN1dG9yPWUsdGhpcy5fZGlkUnVuPSExfWhhc1ZhbHVlKCl7cmV0dXJuIHRoaXMuX2RpZFJ1bn1nZXRWYWx1ZSgpe2lmKCF0aGlzLl9kaWRSdW4pdHJ5e3RoaXMuX3ZhbHVlPXRoaXMuZXhlY3V0b3IoKX1jYXRjaChlKXt0aGlzLl9lcnJvcj1lfWZpbmFsbHl7dGhpcy5fZGlkUnVuPSEwfWlmKHRoaXMuX2Vycm9yKXRocm93IHRoaXMuX2Vycm9yO3JldHVybiB0aGlzLl92YWx1ZX1nZXQgcmF3VmFsdWUoKXtyZXR1cm4gdGhpcy5fdmFsdWV9fWZ1bmN0aW9uIEooZSl7cmV0dXJuIGU+PTY1JiZlPD05MH1mdW5jdGlvbiBYKGUpe3JldHVybiA1NTI5Njw9ZSYmZTw9NTYzMTl9ZnVuY3Rpb24gWShlLHQsbil7Y29uc3Qgcj1lLmNoYXJDb2RlQXQobik7aWYoWChyKSYmbisxPHQpe2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KG4rMSk7aWYoZnVuY3Rpb24oZSl7cmV0dXJuIDU2MzIwPD1lJiZlPD01NzM0M30odCkpcmV0dXJuIHQtNTYzMjArKHItNTUyOTY8PDEwKSs2NTUzNn1yZXR1cm4gcn1jb25zdCBRPS9eW1x0XG5cclx4MjAtXHg3RV0qJC87Y2xhc3MgWntjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5PWV9c3RhdGljIGdldEluc3RhbmNlKGUpe3JldHVybiBaLmNhY2hlLmdldChBcnJheS5mcm9tKGUpKX1zdGF0aWMgZ2V0TG9jYWxlcygpe3JldHVybiBaLl9sb2NhbGVzLmdldFZhbHVlKCl9aXNBbWJpZ3VvdXMoZSl7cmV0dXJuIHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkuaGFzKGUpfWdldFByaW1hcnlDb25mdXNhYmxlKGUpe3JldHVybiB0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmdldChlKX1nZXRDb25mdXNhYmxlQ29kZVBvaW50cygpe3JldHVybiBuZXcgU2V0KHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkua2V5cygpKX19Vz1aLFouYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YT1uZXcgJCgoKCk9PkpTT04ucGFyc2UoJ3siX2NvbW1vbiI6WzgyMzIsMzIsODIzMywzMiw1NzYwLDMyLDgxOTIsMzIsODE5MywzMiw4MTk0LDMyLDgxOTUsMzIsODE5NiwzMiw4MTk3LDMyLDgxOTgsMzIsODIwMCwzMiw4MjAxLDMyLDgyMDIsMzIsODI4NywzMiw4MTk5LDMyLDgyMzksMzIsMjA0Miw5NSw2NTEwMSw5NSw2NTEwMiw5NSw2NTEwMyw5NSw4MjA4LDQ1LDgyMDksNDUsODIxMCw0NSw2NTExMiw0NSwxNzQ4LDQ1LDgyNTksNDUsNzI3LDQ1LDg3MjIsNDUsMTAxMzQsNDUsMTE0NTAsNDUsMTU0OSw0NCwxNjQzLDQ0LDgyMTgsNDQsMTg0LDQ0LDQyMjMzLDQ0LDg5NCw1OSwyMzA3LDU4LDI2OTEsNTgsMTQxNyw1OCwxNzk1LDU4LDE3OTYsNTgsNTg2OCw1OCw2NTA3Miw1OCw2MTQ3LDU4LDYxNTMsNTgsODI4Miw1OCwxNDc1LDU4LDc2MCw1OCw0Mjg4OSw1OCw4NzU4LDU4LDcyMCw1OCw0MjIzNyw1OCw0NTEsMzMsMTE2MDEsMzMsNjYwLDYzLDU3Nyw2MywyNDI5LDYzLDUwMzgsNjMsNDI3MzEsNjMsMTE5MTQ5LDQ2LDgyMjgsNDYsMTc5Myw0NiwxNzk0LDQ2LDQyNTEwLDQ2LDY4MTc2LDQ2LDE2MzIsNDYsMTc3Niw0Niw0MjIzMiw0NiwxMzczLDk2LDY1Mjg3LDk2LDgyMTksOTYsODI0Miw5NiwxMzcwLDk2LDE1MjMsOTYsODE3NSw5Niw2NTM0NCw5Niw5MDAsOTYsODE4OSw5Niw4MTI1LDk2LDgxMjcsOTYsODE5MCw5Niw2OTcsOTYsODg0LDk2LDcxMiw5Niw3MTQsOTYsNzE1LDk2LDc1Niw5Niw2OTksOTYsNzAxLDk2LDcwMCw5Niw3MDIsOTYsNDI4OTIsOTYsMTQ5Nyw5NiwyMDM2LDk2LDIwMzcsOTYsNTE5NCw5Niw1ODM2LDk2LDk0MDMzLDk2LDk0MDM0LDk2LDY1MzM5LDkxLDEwMDg4LDQwLDEwMDk4LDQwLDEyMzA4LDQwLDY0ODMwLDQwLDY1MzQxLDkzLDEwMDg5LDQxLDEwMDk5LDQxLDEyMzA5LDQxLDY0ODMxLDQxLDEwMTAwLDEyMywxMTkwNjAsMTIzLDEwMTAxLDEyNSw2NTM0Miw5NCw4MjcwLDQyLDE2NDUsNDIsODcyNyw0Miw2NjMzNSw0Miw1OTQxLDQ3LDgyNTcsNDcsODcyNSw0Nyw4MjYwLDQ3LDk1ODUsNDcsMTAxODcsNDcsMTA3NDQsNDcsMTE5MzU0LDQ3LDEyNzU1LDQ3LDEyMzM5LDQ3LDExNDYyLDQ3LDIwMDMxLDQ3LDEyMDM1LDQ3LDY1MzQwLDkyLDY1MTI4LDkyLDg3MjYsOTIsMTAxODksOTIsMTA3NDEsOTIsMTA3NDUsOTIsMTE5MzExLDkyLDExOTM1NSw5MiwxMjc1Niw5MiwyMDAyMiw5MiwxMjAzNCw5Miw0Mjg3MiwzOCw3MDgsOTQsNzEwLDk0LDU4NjksNDMsMTAxMzMsNDMsNjYyMDMsNDMsODI0OSw2MCwxMDA5NCw2MCw3MDYsNjAsMTE5MzUwLDYwLDUxNzYsNjAsNTgxMCw2MCw1MTIwLDYxLDExODQwLDYxLDEyNDQ4LDYxLDQyMjM5LDYxLDgyNTAsNjIsMTAwOTUsNjIsNzA3LDYyLDExOTM1MSw2Miw1MTcxLDYyLDk0MDE1LDYyLDgyNzUsMTI2LDczMiwxMjYsODEyOCwxMjYsODc2NCwxMjYsNjUzNzIsMTI0LDY1MjkzLDQ1LDEyMDc4NCw1MCwxMjA3OTQsNTAsMTIwODA0LDUwLDEyMDgxNCw1MCwxMjA4MjQsNTAsMTMwMDM0LDUwLDQyODQyLDUwLDQyMyw1MCwxMDAwLDUwLDQyNTY0LDUwLDUzMTEsNTAsNDI3MzUsNTAsMTE5MzAyLDUxLDEyMDc4NSw1MSwxMjA3OTUsNTEsMTIwODA1LDUxLDEyMDgxNSw1MSwxMjA4MjUsNTEsMTMwMDM1LDUxLDQyOTIzLDUxLDU0MCw1MSw0MzksNTEsNDI4NTgsNTEsMTE0NjgsNTEsMTI0OCw1MSw5NDAxMSw1MSw3MTg4Miw1MSwxMjA3ODYsNTIsMTIwNzk2LDUyLDEyMDgwNiw1MiwxMjA4MTYsNTIsMTIwODI2LDUyLDEzMDAzNiw1Miw1MDcwLDUyLDcxODU1LDUyLDEyMDc4Nyw1MywxMjA3OTcsNTMsMTIwODA3LDUzLDEyMDgxNyw1MywxMjA4MjcsNTMsMTMwMDM3LDUzLDQ0NCw1Myw3MTg2Nyw1MywxMjA3ODgsNTQsMTIwNzk4LDU0LDEyMDgwOCw1NCwxMjA4MTgsNTQsMTIwODI4LDU0LDEzMDAzOCw1NCwxMTQ3NCw1NCw1MTAyLDU0LDcxODkzLDU0LDExOTMxNCw1NSwxMjA3ODksNTUsMTIwNzk5LDU1LDEyMDgwOSw1NSwxMjA4MTksNTUsMTIwODI5LDU1LDEzMDAzOSw1NSw2Njc3MCw1NSw3MTg3OCw1NSwyODE5LDU2LDI1MzgsNTYsMjY2Niw1NiwxMjUxMzEsNTYsMTIwNzkwLDU2LDEyMDgwMCw1NiwxMjA4MTAsNTYsMTIwODIwLDU2LDEyMDgzMCw1NiwxMzAwNDAsNTYsNTQ3LDU2LDU0Niw1Niw2NjMzMCw1NiwyNjYzLDU3LDI5MjAsNTcsMjU0MSw1NywzNDM3LDU3LDEyMDc5MSw1NywxMjA4MDEsNTcsMTIwODExLDU3LDEyMDgyMSw1NywxMjA4MzEsNTcsMTMwMDQxLDU3LDQyODYyLDU3LDExNDY2LDU3LDcxODg0LDU3LDcxODUyLDU3LDcxODk0LDU3LDkwODIsOTcsNjUzNDUsOTcsMTE5ODM0LDk3LDExOTg4Niw5NywxMTk5MzgsOTcsMTE5OTkwLDk3LDEyMDA0Miw5NywxMjAwOTQsOTcsMTIwMTQ2LDk3LDEyMDE5OCw5NywxMjAyNTAsOTcsMTIwMzAyLDk3LDEyMDM1NCw5NywxMjA0MDYsOTcsMTIwNDU4LDk3LDU5Myw5Nyw5NDUsOTcsMTIwNTE0LDk3LDEyMDU3Miw5NywxMjA2MzAsOTcsMTIwNjg4LDk3LDEyMDc0Niw5Nyw2NTMxMyw2NSwxMTk4MDgsNjUsMTE5ODYwLDY1LDExOTkxMiw2NSwxMTk5NjQsNjUsMTIwMDE2LDY1LDEyMDA2OCw2NSwxMjAxMjAsNjUsMTIwMTcyLDY1LDEyMDIyNCw2NSwxMjAyNzYsNjUsMTIwMzI4LDY1LDEyMDM4MCw2NSwxMjA0MzIsNjUsOTEzLDY1LDEyMDQ4OCw2NSwxMjA1NDYsNjUsMTIwNjA0LDY1LDEyMDY2Miw2NSwxMjA3MjAsNjUsNTAzNCw2NSw1NTczLDY1LDQyMjIyLDY1LDk0MDE2LDY1LDY2MjA4LDY1LDExOTgzNSw5OCwxMTk4ODcsOTgsMTE5OTM5LDk4LDExOTk5MSw5OCwxMjAwNDMsOTgsMTIwMDk1LDk4LDEyMDE0Nyw5OCwxMjAxOTksOTgsMTIwMjUxLDk4LDEyMDMwMyw5OCwxMjAzNTUsOTgsMTIwNDA3LDk4LDEyMDQ1OSw5OCwzODgsOTgsNTA3MSw5OCw1MjM0LDk4LDU1NTEsOTgsNjUzMTQsNjYsODQ5Miw2NiwxMTk4MDksNjYsMTE5ODYxLDY2LDExOTkxMyw2NiwxMjAwMTcsNjYsMTIwMDY5LDY2LDEyMDEyMSw2NiwxMjAxNzMsNjYsMTIwMjI1LDY2LDEyMDI3Nyw2NiwxMjAzMjksNjYsMTIwMzgxLDY2LDEyMDQzMyw2Niw0MjkzMiw2Niw5MTQsNjYsMTIwNDg5LDY2LDEyMDU0Nyw2NiwxMjA2MDUsNjYsMTIwNjYzLDY2LDEyMDcyMSw2Niw1MTA4LDY2LDU2MjMsNjYsNDIxOTIsNjYsNjYxNzgsNjYsNjYyMDksNjYsNjYzMDUsNjYsNjUzNDcsOTksODU3Myw5OSwxMTk4MzYsOTksMTE5ODg4LDk5LDExOTk0MCw5OSwxMTk5OTIsOTksMTIwMDQ0LDk5LDEyMDA5Niw5OSwxMjAxNDgsOTksMTIwMjAwLDk5LDEyMDI1Miw5OSwxMjAzMDQsOTksMTIwMzU2LDk5LDEyMDQwOCw5OSwxMjA0NjAsOTksNzQyOCw5OSwxMDEwLDk5LDExNDI5LDk5LDQzOTUxLDk5LDY2NjIxLDk5LDEyODg0NCw2Nyw3MTkyMiw2Nyw3MTkxMyw2Nyw2NTMxNSw2Nyw4NTU3LDY3LDg0NTAsNjcsODQ5Myw2NywxMTk4MTAsNjcsMTE5ODYyLDY3LDExOTkxNCw2NywxMTk5NjYsNjcsMTIwMDE4LDY3LDEyMDE3NCw2NywxMjAyMjYsNjcsMTIwMjc4LDY3LDEyMDMzMCw2NywxMjAzODIsNjcsMTIwNDM0LDY3LDEwMTcsNjcsMTE0MjgsNjcsNTA4Nyw2Nyw0MjIwMiw2Nyw2NjIxMCw2Nyw2NjMwNiw2Nyw2NjU4MSw2Nyw2Njg0NCw2Nyw4NTc0LDEwMCw4NTE4LDEwMCwxMTk4MzcsMTAwLDExOTg4OSwxMDAsMTE5OTQxLDEwMCwxMTk5OTMsMTAwLDEyMDA0NSwxMDAsMTIwMDk3LDEwMCwxMjAxNDksMTAwLDEyMDIwMSwxMDAsMTIwMjUzLDEwMCwxMjAzMDUsMTAwLDEyMDM1NywxMDAsMTIwNDA5LDEwMCwxMjA0NjEsMTAwLDEyODEsMTAwLDUwOTUsMTAwLDUyMzEsMTAwLDQyMTk0LDEwMCw4NTU4LDY4LDg1MTcsNjgsMTE5ODExLDY4LDExOTg2Myw2OCwxMTk5MTUsNjgsMTE5OTY3LDY4LDEyMDAxOSw2OCwxMjAwNzEsNjgsMTIwMTIzLDY4LDEyMDE3NSw2OCwxMjAyMjcsNjgsMTIwMjc5LDY4LDEyMDMzMSw2OCwxMjAzODMsNjgsMTIwNDM1LDY4LDUwMjQsNjgsNTU5OCw2OCw1NjEwLDY4LDQyMTk1LDY4LDg0OTQsMTAxLDY1MzQ5LDEwMSw4NDk1LDEwMSw4NTE5LDEwMSwxMTk4MzgsMTAxLDExOTg5MCwxMDEsMTE5OTQyLDEwMSwxMjAwNDYsMTAxLDEyMDA5OCwxMDEsMTIwMTUwLDEwMSwxMjAyMDIsMTAxLDEyMDI1NCwxMDEsMTIwMzA2LDEwMSwxMjAzNTgsMTAxLDEyMDQxMCwxMDEsMTIwNDYyLDEwMSw0MzgyNiwxMDEsMTIxMywxMDEsODk1OSw2OSw2NTMxNyw2OSw4NDk2LDY5LDExOTgxMiw2OSwxMTk4NjQsNjksMTE5OTE2LDY5LDEyMDAyMCw2OSwxMjAwNzIsNjksMTIwMTI0LDY5LDEyMDE3Niw2OSwxMjAyMjgsNjksMTIwMjgwLDY5LDEyMDMzMiw2OSwxMjAzODQsNjksMTIwNDM2LDY5LDkxNyw2OSwxMjA0OTIsNjksMTIwNTUwLDY5LDEyMDYwOCw2OSwxMjA2NjYsNjksMTIwNzI0LDY5LDExNTc3LDY5LDUwMzYsNjksNDIyMjQsNjksNzE4NDYsNjksNzE4NTQsNjksNjYxODIsNjksMTE5ODM5LDEwMiwxMTk4OTEsMTAyLDExOTk0MywxMDIsMTE5OTk1LDEwMiwxMjAwNDcsMTAyLDEyMDA5OSwxMDIsMTIwMTUxLDEwMiwxMjAyMDMsMTAyLDEyMDI1NSwxMDIsMTIwMzA3LDEwMiwxMjAzNTksMTAyLDEyMDQxMSwxMDIsMTIwNDYzLDEwMiw0MzgyOSwxMDIsNDI5MDUsMTAyLDM4MywxMDIsNzgzNywxMDIsMTQxMiwxMDIsMTE5MzE1LDcwLDg0OTcsNzAsMTE5ODEzLDcwLDExOTg2NSw3MCwxMTk5MTcsNzAsMTIwMDIxLDcwLDEyMDA3Myw3MCwxMjAxMjUsNzAsMTIwMTc3LDcwLDEyMDIyOSw3MCwxMjAyODEsNzAsMTIwMzMzLDcwLDEyMDM4NSw3MCwxMjA0MzcsNzAsNDI5MDQsNzAsOTg4LDcwLDEyMDc3OCw3MCw1NTU2LDcwLDQyMjA1LDcwLDcxODc0LDcwLDcxODQyLDcwLDY2MTgzLDcwLDY2MjEzLDcwLDY2ODUzLDcwLDY1MzUxLDEwMyw4NDU4LDEwMywxMTk4NDAsMTAzLDExOTg5MiwxMDMsMTE5OTQ0LDEwMywxMjAwNDgsMTAzLDEyMDEwMCwxMDMsMTIwMTUyLDEwMywxMjAyMDQsMTAzLDEyMDI1NiwxMDMsMTIwMzA4LDEwMywxMjAzNjAsMTAzLDEyMDQxMiwxMDMsMTIwNDY0LDEwMyw2MDksMTAzLDc1NTUsMTAzLDM5NywxMDMsMTQwOSwxMDMsMTE5ODE0LDcxLDExOTg2Niw3MSwxMTk5MTgsNzEsMTE5OTcwLDcxLDEyMDAyMiw3MSwxMjAwNzQsNzEsMTIwMTI2LDcxLDEyMDE3OCw3MSwxMjAyMzAsNzEsMTIwMjgyLDcxLDEyMDMzNCw3MSwxMjAzODYsNzEsMTIwNDM4LDcxLDEyOTIsNzEsNTA1Niw3MSw1MTA3LDcxLDQyMTk4LDcxLDY1MzUyLDEwNCw4NDYyLDEwNCwxMTk4NDEsMTA0LDExOTk0NSwxMDQsMTE5OTk3LDEwNCwxMjAwNDksMTA0LDEyMDEwMSwxMDQsMTIwMTUzLDEwNCwxMjAyMDUsMTA0LDEyMDI1NywxMDQsMTIwMzA5LDEwNCwxMjAzNjEsMTA0LDEyMDQxMywxMDQsMTIwNDY1LDEwNCwxMjExLDEwNCwxMzkyLDEwNCw1MDU4LDEwNCw2NTMyMCw3Miw4NDU5LDcyLDg0NjAsNzIsODQ2MSw3MiwxMTk4MTUsNzIsMTE5ODY3LDcyLDExOTkxOSw3MiwxMjAwMjMsNzIsMTIwMTc5LDcyLDEyMDIzMSw3MiwxMjAyODMsNzIsMTIwMzM1LDcyLDEyMDM4Nyw3MiwxMjA0MzksNzIsOTE5LDcyLDEyMDQ5NCw3MiwxMjA1NTIsNzIsMTIwNjEwLDcyLDEyMDY2OCw3MiwxMjA3MjYsNzIsMTE0MDYsNzIsNTA1MSw3Miw1NTAwLDcyLDQyMjE1LDcyLDY2MjU1LDcyLDczMSwxMDUsOTA3NSwxMDUsNjUzNTMsMTA1LDg1NjAsMTA1LDg1MDUsMTA1LDg1MjAsMTA1LDExOTg0MiwxMDUsMTE5ODk0LDEwNSwxMTk5NDYsMTA1LDExOTk5OCwxMDUsMTIwMDUwLDEwNSwxMjAxMDIsMTA1LDEyMDE1NCwxMDUsMTIwMjA2LDEwNSwxMjAyNTgsMTA1LDEyMDMxMCwxMDUsMTIwMzYyLDEwNSwxMjA0MTQsMTA1LDEyMDQ2NiwxMDUsMTIwNDg0LDEwNSw2MTgsMTA1LDYxNywxMDUsOTUzLDEwNSw4MTI2LDEwNSw4OTAsMTA1LDEyMDUyMiwxMDUsMTIwNTgwLDEwNSwxMjA2MzgsMTA1LDEyMDY5NiwxMDUsMTIwNzU0LDEwNSwxMTEwLDEwNSw0MjU2NywxMDUsMTIzMSwxMDUsNDM4OTMsMTA1LDUwMjksMTA1LDcxODc1LDEwNSw2NTM1NCwxMDYsODUyMSwxMDYsMTE5ODQzLDEwNiwxMTk4OTUsMTA2LDExOTk0NywxMDYsMTE5OTk5LDEwNiwxMjAwNTEsMTA2LDEyMDEwMywxMDYsMTIwMTU1LDEwNiwxMjAyMDcsMTA2LDEyMDI1OSwxMDYsMTIwMzExLDEwNiwxMjAzNjMsMTA2LDEyMDQxNSwxMDYsMTIwNDY3LDEwNiwxMDExLDEwNiwxMTEyLDEwNiw2NTMyMiw3NCwxMTk4MTcsNzQsMTE5ODY5LDc0LDExOTkyMSw3NCwxMTk5NzMsNzQsMTIwMDI1LDc0LDEyMDA3Nyw3NCwxMjAxMjksNzQsMTIwMTgxLDc0LDEyMDIzMyw3NCwxMjAyODUsNzQsMTIwMzM3LDc0LDEyMDM4OSw3NCwxMjA0NDEsNzQsNDI5MzAsNzQsODk1LDc0LDEwMzIsNzQsNTAzNSw3NCw1MjYxLDc0LDQyMjAxLDc0LDExOTg0NCwxMDcsMTE5ODk2LDEwNywxMTk5NDgsMTA3LDEyMDAwMCwxMDcsMTIwMDUyLDEwNywxMjAxMDQsMTA3LDEyMDE1NiwxMDcsMTIwMjA4LDEwNywxMjAyNjAsMTA3LDEyMDMxMiwxMDcsMTIwMzY0LDEwNywxMjA0MTYsMTA3LDEyMDQ2OCwxMDcsODQ5MCw3NSw2NTMyMyw3NSwxMTk4MTgsNzUsMTE5ODcwLDc1LDExOTkyMiw3NSwxMTk5NzQsNzUsMTIwMDI2LDc1LDEyMDA3OCw3NSwxMjAxMzAsNzUsMTIwMTgyLDc1LDEyMDIzNCw3NSwxMjAyODYsNzUsMTIwMzM4LDc1LDEyMDM5MCw3NSwxMjA0NDIsNzUsOTIyLDc1LDEyMDQ5Nyw3NSwxMjA1NTUsNzUsMTIwNjEzLDc1LDEyMDY3MSw3NSwxMjA3MjksNzUsMTE0MTIsNzUsNTA5NCw3NSw1ODQ1LDc1LDQyMTk5LDc1LDY2ODQwLDc1LDE0NzIsMTA4LDg3MzksNzMsOTIxMyw3Myw2NTUxMiw3MywxNjMzLDEwOCwxNzc3LDczLDY2MzM2LDEwOCwxMjUxMjcsMTA4LDEyMDc4Myw3MywxMjA3OTMsNzMsMTIwODAzLDczLDEyMDgxMyw3MywxMjA4MjMsNzMsMTMwMDMzLDczLDY1MzIxLDczLDg1NDQsNzMsODQ2NCw3Myw4NDY1LDczLDExOTgxNiw3MywxMTk4NjgsNzMsMTE5OTIwLDczLDEyMDAyNCw3MywxMjAxMjgsNzMsMTIwMTgwLDczLDEyMDIzMiw3MywxMjAyODQsNzMsMTIwMzM2LDczLDEyMDM4OCw3MywxMjA0NDAsNzMsNjUzNTYsMTA4LDg1NzIsNzMsODQ2NywxMDgsMTE5ODQ1LDEwOCwxMTk4OTcsMTA4LDExOTk0OSwxMDgsMTIwMDAxLDEwOCwxMjAwNTMsMTA4LDEyMDEwNSw3MywxMjAxNTcsNzMsMTIwMjA5LDczLDEyMDI2MSw3MywxMjAzMTMsNzMsMTIwMzY1LDczLDEyMDQxNyw3MywxMjA0NjksNzMsNDQ4LDczLDEyMDQ5Niw3MywxMjA1NTQsNzMsMTIwNjEyLDczLDEyMDY3MCw3MywxMjA3MjgsNzMsMTE0MTAsNzMsMTAzMCw3MywxMjE2LDczLDE0OTMsMTA4LDE1MDMsMTA4LDE1NzUsMTA4LDEyNjQ2NCwxMDgsMTI2NTkyLDEwOCw2NTE2NiwxMDgsNjUxNjUsMTA4LDE5OTQsMTA4LDExNTk5LDczLDU4MjUsNzMsNDIyMjYsNzMsOTM5OTIsNzMsNjYxODYsMTI0LDY2MzEzLDEyNCwxMTkzMzgsNzYsODU1Niw3Niw4NDY2LDc2LDExOTgxOSw3NiwxMTk4NzEsNzYsMTE5OTIzLDc2LDEyMDAyNyw3NiwxMjAwNzksNzYsMTIwMTMxLDc2LDEyMDE4Myw3NiwxMjAyMzUsNzYsMTIwMjg3LDc2LDEyMDMzOSw3NiwxMjAzOTEsNzYsMTIwNDQzLDc2LDExNDcyLDc2LDUwODYsNzYsNTI5MCw3Niw0MjIwOSw3Niw5Mzk3NCw3Niw3MTg0Myw3Niw3MTg1OCw3Niw2NjU4Nyw3Niw2Njg1NCw3Niw2NTMyNSw3Nyw4NTU5LDc3LDg0OTksNzcsMTE5ODIwLDc3LDExOTg3Miw3NywxMTk5MjQsNzcsMTIwMDI4LDc3LDEyMDA4MCw3NywxMjAxMzIsNzcsMTIwMTg0LDc3LDEyMDIzNiw3NywxMjAyODgsNzcsMTIwMzQwLDc3LDEyMDM5Miw3NywxMjA0NDQsNzcsOTI0LDc3LDEyMDQ5OSw3NywxMjA1NTcsNzcsMTIwNjE1LDc3LDEyMDY3Myw3NywxMjA3MzEsNzcsMTAxOCw3NywxMTQxNiw3Nyw1MDQ3LDc3LDU2MTYsNzcsNTg0Niw3Nyw0MjIwNyw3Nyw2NjIyNCw3Nyw2NjMyMSw3NywxMTk4NDcsMTEwLDExOTg5OSwxMTAsMTE5OTUxLDExMCwxMjAwMDMsMTEwLDEyMDA1NSwxMTAsMTIwMTA3LDExMCwxMjAxNTksMTEwLDEyMDIxMSwxMTAsMTIwMjYzLDExMCwxMjAzMTUsMTEwLDEyMDM2NywxMTAsMTIwNDE5LDExMCwxMjA0NzEsMTEwLDE0MDAsMTEwLDE0MDQsMTEwLDY1MzI2LDc4LDg0NjksNzgsMTE5ODIxLDc4LDExOTg3Myw3OCwxMTk5MjUsNzgsMTE5OTc3LDc4LDEyMDAyOSw3OCwxMjAwODEsNzgsMTIwMTg1LDc4LDEyMDIzNyw3OCwxMjAyODksNzgsMTIwMzQxLDc4LDEyMDM5Myw3OCwxMjA0NDUsNzgsOTI1LDc4LDEyMDUwMCw3OCwxMjA1NTgsNzgsMTIwNjE2LDc4LDEyMDY3NCw3OCwxMjA3MzIsNzgsMTE0MTgsNzgsNDIyMDgsNzgsNjY4MzUsNzgsMzA3NCwxMTEsMzIwMiwxMTEsMzMzMCwxMTEsMzQ1OCwxMTEsMjQwNiwxMTEsMjY2MiwxMTEsMjc5MCwxMTEsMzA0NiwxMTEsMzE3NCwxMTEsMzMwMiwxMTEsMzQzMCwxMTEsMzY2NCwxMTEsMzc5MiwxMTEsNDE2MCwxMTEsMTYzNywxMTEsMTc4MSwxMTEsNjUzNTksMTExLDg1MDAsMTExLDExOTg0OCwxMTEsMTE5OTAwLDExMSwxMTk5NTIsMTExLDEyMDA1NiwxMTEsMTIwMTA4LDExMSwxMjAxNjAsMTExLDEyMDIxMiwxMTEsMTIwMjY0LDExMSwxMjAzMTYsMTExLDEyMDM2OCwxMTEsMTIwNDIwLDExMSwxMjA0NzIsMTExLDc0MzksMTExLDc0NDEsMTExLDQzODM3LDExMSw5NTksMTExLDEyMDUyOCwxMTEsMTIwNTg2LDExMSwxMjA2NDQsMTExLDEyMDcwMiwxMTEsMTIwNzYwLDExMSw5NjMsMTExLDEyMDUzMiwxMTEsMTIwNTkwLDExMSwxMjA2NDgsMTExLDEyMDcwNiwxMTEsMTIwNzY0LDExMSwxMTQyMywxMTEsNDM1MSwxMTEsMTQxMywxMTEsMTUwNSwxMTEsMTYwNywxMTEsMTI2NTAwLDExMSwxMjY1NjQsMTExLDEyNjU5NiwxMTEsNjUyNTksMTExLDY1MjYwLDExMSw2NTI1OCwxMTEsNjUyNTcsMTExLDE3MjYsMTExLDY0NDI4LDExMSw2NDQyOSwxMTEsNjQ0MjcsMTExLDY0NDI2LDExMSwxNzI5LDExMSw2NDQyNCwxMTEsNjQ0MjUsMTExLDY0NDIzLDExMSw2NDQyMiwxMTEsMTc0OSwxMTEsMzM2MCwxMTEsNDEyNSwxMTEsNjY3OTQsMTExLDcxODgwLDExMSw3MTg5NSwxMTEsNjY2MDQsMTExLDE5ODQsNzksMjUzNCw3OSwyOTE4LDc5LDEyMjk1LDc5LDcwODY0LDc5LDcxOTA0LDc5LDEyMDc4Miw3OSwxMjA3OTIsNzksMTIwODAyLDc5LDEyMDgxMiw3OSwxMjA4MjIsNzksMTMwMDMyLDc5LDY1MzI3LDc5LDExOTgyMiw3OSwxMTk4NzQsNzksMTE5OTI2LDc5LDExOTk3OCw3OSwxMjAwMzAsNzksMTIwMDgyLDc5LDEyMDEzNCw3OSwxMjAxODYsNzksMTIwMjM4LDc5LDEyMDI5MCw3OSwxMjAzNDIsNzksMTIwMzk0LDc5LDEyMDQ0Niw3OSw5MjcsNzksMTIwNTAyLDc5LDEyMDU2MCw3OSwxMjA2MTgsNzksMTIwNjc2LDc5LDEyMDczNCw3OSwxMTQyMiw3OSwxMzY1LDc5LDExNjA0LDc5LDQ4MTYsNzksMjg0OCw3OSw2Njc1NCw3OSw0MjIyNyw3OSw3MTg2MSw3OSw2NjE5NCw3OSw2NjIxOSw3OSw2NjU2NCw3OSw2NjgzOCw3OSw5MDc2LDExMiw2NTM2MCwxMTIsMTE5ODQ5LDExMiwxMTk5MDEsMTEyLDExOTk1MywxMTIsMTIwMDA1LDExMiwxMjAwNTcsMTEyLDEyMDEwOSwxMTIsMTIwMTYxLDExMiwxMjAyMTMsMTEyLDEyMDI2NSwxMTIsMTIwMzE3LDExMiwxMjAzNjksMTEyLDEyMDQyMSwxMTIsMTIwNDczLDExMiw5NjEsMTEyLDEyMDUzMCwxMTIsMTIwNTQ0LDExMiwxMjA1ODgsMTEyLDEyMDYwMiwxMTIsMTIwNjQ2LDExMiwxMjA2NjAsMTEyLDEyMDcwNCwxMTIsMTIwNzE4LDExMiwxMjA3NjIsMTEyLDEyMDc3NiwxMTIsMTE0MjcsMTEyLDY1MzI4LDgwLDg0NzMsODAsMTE5ODIzLDgwLDExOTg3NSw4MCwxMTk5MjcsODAsMTE5OTc5LDgwLDEyMDAzMSw4MCwxMjAwODMsODAsMTIwMTg3LDgwLDEyMDIzOSw4MCwxMjAyOTEsODAsMTIwMzQzLDgwLDEyMDM5NSw4MCwxMjA0NDcsODAsOTI5LDgwLDEyMDUwNCw4MCwxMjA1NjIsODAsMTIwNjIwLDgwLDEyMDY3OCw4MCwxMjA3MzYsODAsMTE0MjYsODAsNTA5MCw4MCw1MjI5LDgwLDQyMTkzLDgwLDY2MTk3LDgwLDExOTg1MCwxMTMsMTE5OTAyLDExMywxMTk5NTQsMTEzLDEyMDAwNiwxMTMsMTIwMDU4LDExMywxMjAxMTAsMTEzLDEyMDE2MiwxMTMsMTIwMjE0LDExMywxMjAyNjYsMTEzLDEyMDMxOCwxMTMsMTIwMzcwLDExMywxMjA0MjIsMTEzLDEyMDQ3NCwxMTMsMTMwNywxMTMsMTM3OSwxMTMsMTM4MiwxMTMsODQ3NCw4MSwxMTk4MjQsODEsMTE5ODc2LDgxLDExOTkyOCw4MSwxMTk5ODAsODEsMTIwMDMyLDgxLDEyMDA4NCw4MSwxMjAxODgsODEsMTIwMjQwLDgxLDEyMDI5Miw4MSwxMjAzNDQsODEsMTIwMzk2LDgxLDEyMDQ0OCw4MSwxMTYwNSw4MSwxMTk4NTEsMTE0LDExOTkwMywxMTQsMTE5OTU1LDExNCwxMjAwMDcsMTE0LDEyMDA1OSwxMTQsMTIwMTExLDExNCwxMjAxNjMsMTE0LDEyMDIxNSwxMTQsMTIwMjY3LDExNCwxMjAzMTksMTE0LDEyMDM3MSwxMTQsMTIwNDIzLDExNCwxMjA0NzUsMTE0LDQzODQ3LDExNCw0Mzg0OCwxMTQsNzQ2MiwxMTQsMTEzOTcsMTE0LDQzOTA1LDExNCwxMTkzMTgsODIsODQ3NSw4Miw4NDc2LDgyLDg0NzcsODIsMTE5ODI1LDgyLDExOTg3Nyw4MiwxMTk5MjksODIsMTIwMDMzLDgyLDEyMDE4OSw4MiwxMjAyNDEsODIsMTIwMjkzLDgyLDEyMDM0NSw4MiwxMjAzOTcsODIsMTIwNDQ5LDgyLDQyMiw4Miw1MDI1LDgyLDUwNzQsODIsNjY3NDAsODIsNTUxMSw4Miw0MjIxMSw4Miw5NDAwNSw4Miw2NTM2MywxMTUsMTE5ODUyLDExNSwxMTk5MDQsMTE1LDExOTk1NiwxMTUsMTIwMDA4LDExNSwxMjAwNjAsMTE1LDEyMDExMiwxMTUsMTIwMTY0LDExNSwxMjAyMTYsMTE1LDEyMDI2OCwxMTUsMTIwMzIwLDExNSwxMjAzNzIsMTE1LDEyMDQyNCwxMTUsMTIwNDc2LDExNSw0MjgwMSwxMTUsNDQ1LDExNSwxMTA5LDExNSw0Mzk0NiwxMTUsNzE4NzMsMTE1LDY2NjMyLDExNSw2NTMzMSw4MywxMTk4MjYsODMsMTE5ODc4LDgzLDExOTkzMCw4MywxMTk5ODIsODMsMTIwMDM0LDgzLDEyMDA4Niw4MywxMjAxMzgsODMsMTIwMTkwLDgzLDEyMDI0Miw4MywxMjAyOTQsODMsMTIwMzQ2LDgzLDEyMDM5OCw4MywxMjA0NTAsODMsMTAyOSw4MywxMzU5LDgzLDUwNzcsODMsNTA4Miw4Myw0MjIxMCw4Myw5NDAxMCw4Myw2NjE5OCw4Myw2NjU5Miw4MywxMTk4NTMsMTE2LDExOTkwNSwxMTYsMTE5OTU3LDExNiwxMjAwMDksMTE2LDEyMDA2MSwxMTYsMTIwMTEzLDExNiwxMjAxNjUsMTE2LDEyMDIxNywxMTYsMTIwMjY5LDExNiwxMjAzMjEsMTE2LDEyMDM3MywxMTYsMTIwNDI1LDExNiwxMjA0NzcsMTE2LDg4NjgsODQsMTAyMDEsODQsMTI4ODcyLDg0LDY1MzMyLDg0LDExOTgyNyw4NCwxMTk4NzksODQsMTE5OTMxLDg0LDExOTk4Myw4NCwxMjAwMzUsODQsMTIwMDg3LDg0LDEyMDEzOSw4NCwxMjAxOTEsODQsMTIwMjQzLDg0LDEyMDI5NSw4NCwxMjAzNDcsODQsMTIwMzk5LDg0LDEyMDQ1MSw4NCw5MzIsODQsMTIwNTA3LDg0LDEyMDU2NSw4NCwxMjA2MjMsODQsMTIwNjgxLDg0LDEyMDczOSw4NCwxMTQzMCw4NCw1MDI2LDg0LDQyMTk2LDg0LDkzOTYyLDg0LDcxODY4LDg0LDY2MTk5LDg0LDY2MjI1LDg0LDY2MzI1LDg0LDExOTg1NCwxMTcsMTE5OTA2LDExNywxMTk5NTgsMTE3LDEyMDAxMCwxMTcsMTIwMDYyLDExNywxMjAxMTQsMTE3LDEyMDE2NiwxMTcsMTIwMjE4LDExNywxMjAyNzAsMTE3LDEyMDMyMiwxMTcsMTIwMzc0LDExNywxMjA0MjYsMTE3LDEyMDQ3OCwxMTcsNDI5MTEsMTE3LDc0NTIsMTE3LDQzODU0LDExNyw0Mzg1OCwxMTcsNjUxLDExNyw5NjUsMTE3LDEyMDUzNCwxMTcsMTIwNTkyLDExNywxMjA2NTAsMTE3LDEyMDcwOCwxMTcsMTIwNzY2LDExNywxNDA1LDExNyw2NjgwNiwxMTcsNzE4OTYsMTE3LDg3NDYsODUsODg5OSw4NSwxMTk4MjgsODUsMTE5ODgwLDg1LDExOTkzMiw4NSwxMTk5ODQsODUsMTIwMDM2LDg1LDEyMDA4OCw4NSwxMjAxNDAsODUsMTIwMTkyLDg1LDEyMDI0NCw4NSwxMjAyOTYsODUsMTIwMzQ4LDg1LDEyMDQwMCw4NSwxMjA0NTIsODUsMTM1Nyw4NSw0NjA4LDg1LDY2NzY2LDg1LDUxOTYsODUsNDIyMjgsODUsOTQwMTgsODUsNzE4NjQsODUsODc0NCwxMTgsODg5NywxMTgsNjUzNjYsMTE4LDg1NjQsMTE4LDExOTg1NSwxMTgsMTE5OTA3LDExOCwxMTk5NTksMTE4LDEyMDAxMSwxMTgsMTIwMDYzLDExOCwxMjAxMTUsMTE4LDEyMDE2NywxMTgsMTIwMjE5LDExOCwxMjAyNzEsMTE4LDEyMDMyMywxMTgsMTIwMzc1LDExOCwxMjA0MjcsMTE4LDEyMDQ3OSwxMTgsNzQ1NiwxMTgsOTU3LDExOCwxMjA1MjYsMTE4LDEyMDU4NCwxMTgsMTIwNjQyLDExOCwxMjA3MDAsMTE4LDEyMDc1OCwxMTgsMTE0MSwxMTgsMTQ5NiwxMTgsNzE0MzAsMTE4LDQzOTQ1LDExOCw3MTg3MiwxMTgsMTE5MzA5LDg2LDE2MzksODYsMTc4Myw4Niw4NTQ4LDg2LDExOTgyOSw4NiwxMTk4ODEsODYsMTE5OTMzLDg2LDExOTk4NSw4NiwxMjAwMzcsODYsMTIwMDg5LDg2LDEyMDE0MSw4NiwxMjAxOTMsODYsMTIwMjQ1LDg2LDEyMDI5Nyw4NiwxMjAzNDksODYsMTIwNDAxLDg2LDEyMDQ1Myw4NiwxMTQwLDg2LDExNTc2LDg2LDUwODEsODYsNTE2Nyw4Niw0MjcxOSw4Niw0MjIxNCw4Niw5Mzk2MCw4Niw3MTg0MCw4Niw2Njg0NSw4Niw2MjMsMTE5LDExOTg1NiwxMTksMTE5OTA4LDExOSwxMTk5NjAsMTE5LDEyMDAxMiwxMTksMTIwMDY0LDExOSwxMjAxMTYsMTE5LDEyMDE2OCwxMTksMTIwMjIwLDExOSwxMjAyNzIsMTE5LDEyMDMyNCwxMTksMTIwMzc2LDExOSwxMjA0MjgsMTE5LDEyMDQ4MCwxMTksNzQ1NywxMTksMTEyMSwxMTksMTMwOSwxMTksMTM3NywxMTksNzE0MzQsMTE5LDcxNDM4LDExOSw3MTQzOSwxMTksNDM5MDcsMTE5LDcxOTE5LDg3LDcxOTEwLDg3LDExOTgzMCw4NywxMTk4ODIsODcsMTE5OTM0LDg3LDExOTk4Niw4NywxMjAwMzgsODcsMTIwMDkwLDg3LDEyMDE0Miw4NywxMjAxOTQsODcsMTIwMjQ2LDg3LDEyMDI5OCw4NywxMjAzNTAsODcsMTIwNDAyLDg3LDEyMDQ1NCw4NywxMzA4LDg3LDUwNDMsODcsNTA3Niw4Nyw0MjIxOCw4Nyw1NzQyLDEyMCwxMDUzOSwxMjAsMTA1NDAsMTIwLDEwNzk5LDEyMCw2NTM2OCwxMjAsODU2OSwxMjAsMTE5ODU3LDEyMCwxMTk5MDksMTIwLDExOTk2MSwxMjAsMTIwMDEzLDEyMCwxMjAwNjUsMTIwLDEyMDExNywxMjAsMTIwMTY5LDEyMCwxMjAyMjEsMTIwLDEyMDI3MywxMjAsMTIwMzI1LDEyMCwxMjAzNzcsMTIwLDEyMDQyOSwxMjAsMTIwNDgxLDEyMCw1NDQxLDEyMCw1NTAxLDEyMCw1NzQxLDg4LDk1ODcsODgsNjYzMzgsODgsNzE5MTYsODgsNjUzMzYsODgsODU1Myw4OCwxMTk4MzEsODgsMTE5ODgzLDg4LDExOTkzNSw4OCwxMTk5ODcsODgsMTIwMDM5LDg4LDEyMDA5MSw4OCwxMjAxNDMsODgsMTIwMTk1LDg4LDEyMDI0Nyw4OCwxMjAyOTksODgsMTIwMzUxLDg4LDEyMDQwMyw4OCwxMjA0NTUsODgsNDI5MzEsODgsOTM1LDg4LDEyMDUxMCw4OCwxMjA1NjgsODgsMTIwNjI2LDg4LDEyMDY4NCw4OCwxMjA3NDIsODgsMTE0MzYsODgsMTE2MTMsODgsNTgxNSw4OCw0MjIxOSw4OCw2NjE5Miw4OCw2NjIyOCw4OCw2NjMyNyw4OCw2Njg1NSw4OCw2MTEsMTIxLDc1NjQsMTIxLDY1MzY5LDEyMSwxMTk4NTgsMTIxLDExOTkxMCwxMjEsMTE5OTYyLDEyMSwxMjAwMTQsMTIxLDEyMDA2NiwxMjEsMTIwMTE4LDEyMSwxMjAxNzAsMTIxLDEyMDIyMiwxMjEsMTIwMjc0LDEyMSwxMjAzMjYsMTIxLDEyMDM3OCwxMjEsMTIwNDMwLDEyMSwxMjA0ODIsMTIxLDY1NSwxMjEsNzkzNSwxMjEsNDM4NjYsMTIxLDk0NywxMjEsODUwOSwxMjEsMTIwNTE2LDEyMSwxMjA1NzQsMTIxLDEyMDYzMiwxMjEsMTIwNjkwLDEyMSwxMjA3NDgsMTIxLDExOTksMTIxLDQzMjcsMTIxLDcxOTAwLDEyMSw2NTMzNyw4OSwxMTk4MzIsODksMTE5ODg0LDg5LDExOTkzNiw4OSwxMTk5ODgsODksMTIwMDQwLDg5LDEyMDA5Miw4OSwxMjAxNDQsODksMTIwMTk2LDg5LDEyMDI0OCw4OSwxMjAzMDAsODksMTIwMzUyLDg5LDEyMDQwNCw4OSwxMjA0NTYsODksOTMzLDg5LDk3OCw4OSwxMjA1MDgsODksMTIwNTY2LDg5LDEyMDYyNCw4OSwxMjA2ODIsODksMTIwNzQwLDg5LDExNDMyLDg5LDExOTgsODksNTAzMyw4OSw1MDUzLDg5LDQyMjIwLDg5LDk0MDE5LDg5LDcxODQ0LDg5LDY2MjI2LDg5LDExOTg1OSwxMjIsMTE5OTExLDEyMiwxMTk5NjMsMTIyLDEyMDAxNSwxMjIsMTIwMDY3LDEyMiwxMjAxMTksMTIyLDEyMDE3MSwxMjIsMTIwMjIzLDEyMiwxMjAyNzUsMTIyLDEyMDMyNywxMjIsMTIwMzc5LDEyMiwxMjA0MzEsMTIyLDEyMDQ4MywxMjIsNzQ1OCwxMjIsNDM5MjMsMTIyLDcxODc2LDEyMiw2NjI5Myw5MCw3MTkwOSw5MCw2NTMzOCw5MCw4NDg0LDkwLDg0ODgsOTAsMTE5ODMzLDkwLDExOTg4NSw5MCwxMTk5MzcsOTAsMTE5OTg5LDkwLDEyMDA0MSw5MCwxMjAxOTcsOTAsMTIwMjQ5LDkwLDEyMDMwMSw5MCwxMjAzNTMsOTAsMTIwNDA1LDkwLDEyMDQ1Nyw5MCw5MTgsOTAsMTIwNDkzLDkwLDEyMDU1MSw5MCwxMjA2MDksOTAsMTIwNjY3LDkwLDEyMDcyNSw5MCw1MDU5LDkwLDQyMjA0LDkwLDcxODQ5LDkwLDY1MjgyLDM0LDY1Mjg0LDM2LDY1Mjg1LDM3LDY1Mjg2LDM4LDY1MjkwLDQyLDY1MjkxLDQzLDY1Mjk0LDQ2LDY1Mjk1LDQ3LDY1Mjk2LDQ4LDY1Mjk3LDQ5LDY1Mjk4LDUwLDY1Mjk5LDUxLDY1MzAwLDUyLDY1MzAxLDUzLDY1MzAyLDU0LDY1MzAzLDU1LDY1MzA0LDU2LDY1MzA1LDU3LDY1MzA4LDYwLDY1MzA5LDYxLDY1MzEwLDYyLDY1MzEyLDY0LDY1MzE2LDY4LDY1MzE4LDcwLDY1MzE5LDcxLDY1MzI0LDc2LDY1MzI5LDgxLDY1MzMwLDgyLDY1MzMzLDg1LDY1MzM0LDg2LDY1MzM1LDg3LDY1MzQzLDk1LDY1MzQ2LDk4LDY1MzQ4LDEwMCw2NTM1MCwxMDIsNjUzNTUsMTA3LDY1MzU3LDEwOSw2NTM1OCwxMTAsNjUzNjEsMTEzLDY1MzYyLDExNCw2NTM2NCwxMTYsNjUzNjUsMTE3LDY1MzY3LDExOSw2NTM3MCwxMjIsNjUzNzEsMTIzLDY1MzczLDEyNV0sIl9kZWZhdWx0IjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImNzIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJkZSI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZXMiOls4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSwxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZnIiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjQ1LDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiaXQiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImphIjpbODIxMSw0NSw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyOTIsNDQsNjUzMDcsNTldLCJrbyI6WzgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicGwiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicHQtQlIiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicXBzLXBsb2MiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicnUiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDMwNSwxMDUsOTIxLDczLDEwMDksMTEyLDIxNSwxMjAsNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJ0ciI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJ6aC1oYW5zIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1Mjg4LDQwLDY1Mjg5LDQxXSwiemgtaGFudCI6WzgyMTEsNDUsNjUzNzQsMTI2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTMwNyw1OV19JykpKSxaLmNhY2hlPW5ldyBjbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmZuPWUsdGhpcy5sYXN0Q2FjaGU9dm9pZCAwLHRoaXMubGFzdEFyZ0tleT12b2lkIDB9Z2V0KGUpe2NvbnN0IHQ9SlNPTi5zdHJpbmdpZnkoZSk7cmV0dXJuIHRoaXMubGFzdEFyZ0tleSE9PXQmJih0aGlzLmxhc3RBcmdLZXk9dCx0aGlzLmxhc3RDYWNoZT10aGlzLmZuKGUpKSx0aGlzLmxhc3RDYWNoZX19KChlPT57ZnVuY3Rpb24gdChlKXtjb25zdCB0PW5ldyBNYXA7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKz0yKXQuc2V0KGVbbl0sZVtuKzFdKTtyZXR1cm4gdH1mdW5jdGlvbiBuKGUsdCl7aWYoIWUpcmV0dXJuIHQ7Y29uc3Qgbj1uZXcgTWFwO2Zvcihjb25zdFtyLGldb2YgZSl0LmhhcyhyKSYmbi5zZXQocixpKTtyZXR1cm4gbn1jb25zdCByPVcuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS5nZXRWYWx1ZSgpO2xldCBpLGE9ZS5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSYmZSBpbiByKSk7MD09PWEubGVuZ3RoJiYoYT1bIl9kZWZhdWx0Il0pO2Zvcihjb25zdCBlIG9mIGEpe2k9bihpLHQocltlXSkpfWNvbnN0IG89ZnVuY3Rpb24oZSx0KXtjb25zdCBuPW5ldyBNYXAoZSk7Zm9yKGNvbnN0W2Uscl1vZiB0KW4uc2V0KGUscik7cmV0dXJuIG59KHQoci5fY29tbW9uKSxpKTtyZXR1cm4gbmV3IFoobyl9KSksWi5fbG9jYWxlcz1uZXcgJCgoKCk9Pk9iamVjdC5rZXlzKFouYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS5nZXRWYWx1ZSgpKS5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSkpKSk7Y2xhc3MgZWV7c3RhdGljIGdldFJhd0RhdGEoKXtyZXR1cm4gSlNPTi5wYXJzZSgiWzksMTAsMTEsMTIsMTMsMzIsMTI3LDE2MCwxNzMsODQ3LDE1NjQsNDQ0Nyw0NDQ4LDYwNjgsNjA2OSw2MTU1LDYxNTYsNjE1Nyw2MTU4LDczNTUsNzM1Niw4MTkyLDgxOTMsODE5NCw4MTk1LDgxOTYsODE5Nyw4MTk4LDgxOTksODIwMCw4MjAxLDgyMDIsODIwMyw4MjA0LDgyMDUsODIwNiw4MjA3LDgyMzQsODIzNSw4MjM2LDgyMzcsODIzOCw4MjM5LDgyODcsODI4OCw4Mjg5LDgyOTAsODI5MSw4MjkyLDgyOTMsODI5NCw4Mjk1LDgyOTYsODI5Nyw4Mjk4LDgyOTksODMwMCw4MzAxLDgzMDIsODMwMywxMDI0MCwxMjI4OCwxMjY0NCw2NTAyNCw2NTAyNSw2NTAyNiw2NTAyNyw2NTAyOCw2NTAyOSw2NTAzMCw2NTAzMSw2NTAzMiw2NTAzMyw2NTAzNCw2NTAzNSw2NTAzNiw2NTAzNyw2NTAzOCw2NTAzOSw2NTI3OSw2NTQ0MCw2NTUyMCw2NTUyMSw2NTUyMiw2NTUyMyw2NTUyNCw2NTUyNSw2NTUyNiw2NTUyNyw2NTUyOCw2NTUzMiw3ODg0NCwxMTkxNTUsMTE5MTU2LDExOTE1NywxMTkxNTgsMTE5MTU5LDExOTE2MCwxMTkxNjEsMTE5MTYyLDkxNzUwNCw5MTc1MDUsOTE3NTA2LDkxNzUwNyw5MTc1MDgsOTE3NTA5LDkxNzUxMCw5MTc1MTEsOTE3NTEyLDkxNzUxMyw5MTc1MTQsOTE3NTE1LDkxNzUxNiw5MTc1MTcsOTE3NTE4LDkxNzUxOSw5MTc1MjAsOTE3NTIxLDkxNzUyMiw5MTc1MjMsOTE3NTI0LDkxNzUyNSw5MTc1MjYsOTE3NTI3LDkxNzUyOCw5MTc1MjksOTE3NTMwLDkxNzUzMSw5MTc1MzIsOTE3NTMzLDkxNzUzNCw5MTc1MzUsOTE3NTM2LDkxNzUzNyw5MTc1MzgsOTE3NTM5LDkxNzU0MCw5MTc1NDEsOTE3NTQyLDkxNzU0Myw5MTc1NDQsOTE3NTQ1LDkxNzU0Niw5MTc1NDcsOTE3NTQ4LDkxNzU0OSw5MTc1NTAsOTE3NTUxLDkxNzU1Miw5MTc1NTMsOTE3NTU0LDkxNzU1NSw5MTc1NTYsOTE3NTU3LDkxNzU1OCw5MTc1NTksOTE3NTYwLDkxNzU2MSw5MTc1NjIsOTE3NTYzLDkxNzU2NCw5MTc1NjUsOTE3NTY2LDkxNzU2Nyw5MTc1NjgsOTE3NTY5LDkxNzU3MCw5MTc1NzEsOTE3NTcyLDkxNzU3Myw5MTc1NzQsOTE3NTc1LDkxNzU3Niw5MTc1NzcsOTE3NTc4LDkxNzU3OSw5MTc1ODAsOTE3NTgxLDkxNzU4Miw5MTc1ODMsOTE3NTg0LDkxNzU4NSw5MTc1ODYsOTE3NTg3LDkxNzU4OCw5MTc1ODksOTE3NTkwLDkxNzU5MSw5MTc1OTIsOTE3NTkzLDkxNzU5NCw5MTc1OTUsOTE3NTk2LDkxNzU5Nyw5MTc1OTgsOTE3NTk5LDkxNzYwMCw5MTc2MDEsOTE3NjAyLDkxNzYwMyw5MTc2MDQsOTE3NjA1LDkxNzYwNiw5MTc2MDcsOTE3NjA4LDkxNzYwOSw5MTc2MTAsOTE3NjExLDkxNzYxMiw5MTc2MTMsOTE3NjE0LDkxNzYxNSw5MTc2MTYsOTE3NjE3LDkxNzYxOCw5MTc2MTksOTE3NjIwLDkxNzYyMSw5MTc2MjIsOTE3NjIzLDkxNzYyNCw5MTc2MjUsOTE3NjI2LDkxNzYyNyw5MTc2MjgsOTE3NjI5LDkxNzYzMCw5MTc2MzEsOTE3NzYwLDkxNzc2MSw5MTc3NjIsOTE3NzYzLDkxNzc2NCw5MTc3NjUsOTE3NzY2LDkxNzc2Nyw5MTc3NjgsOTE3NzY5LDkxNzc3MCw5MTc3NzEsOTE3NzcyLDkxNzc3Myw5MTc3NzQsOTE3Nzc1LDkxNzc3Niw5MTc3NzcsOTE3Nzc4LDkxNzc3OSw5MTc3ODAsOTE3NzgxLDkxNzc4Miw5MTc3ODMsOTE3Nzg0LDkxNzc4NSw5MTc3ODYsOTE3Nzg3LDkxNzc4OCw5MTc3ODksOTE3NzkwLDkxNzc5MSw5MTc3OTIsOTE3NzkzLDkxNzc5NCw5MTc3OTUsOTE3Nzk2LDkxNzc5Nyw5MTc3OTgsOTE3Nzk5LDkxNzgwMCw5MTc4MDEsOTE3ODAyLDkxNzgwMyw5MTc4MDQsOTE3ODA1LDkxNzgwNiw5MTc4MDcsOTE3ODA4LDkxNzgwOSw5MTc4MTAsOTE3ODExLDkxNzgxMiw5MTc4MTMsOTE3ODE0LDkxNzgxNSw5MTc4MTYsOTE3ODE3LDkxNzgxOCw5MTc4MTksOTE3ODIwLDkxNzgyMSw5MTc4MjIsOTE3ODIzLDkxNzgyNCw5MTc4MjUsOTE3ODI2LDkxNzgyNyw5MTc4MjgsOTE3ODI5LDkxNzgzMCw5MTc4MzEsOTE3ODMyLDkxNzgzMyw5MTc4MzQsOTE3ODM1LDkxNzgzNiw5MTc4MzcsOTE3ODM4LDkxNzgzOSw5MTc4NDAsOTE3ODQxLDkxNzg0Miw5MTc4NDMsOTE3ODQ0LDkxNzg0NSw5MTc4NDYsOTE3ODQ3LDkxNzg0OCw5MTc4NDksOTE3ODUwLDkxNzg1MSw5MTc4NTIsOTE3ODUzLDkxNzg1NCw5MTc4NTUsOTE3ODU2LDkxNzg1Nyw5MTc4NTgsOTE3ODU5LDkxNzg2MCw5MTc4NjEsOTE3ODYyLDkxNzg2Myw5MTc4NjQsOTE3ODY1LDkxNzg2Niw5MTc4NjcsOTE3ODY4LDkxNzg2OSw5MTc4NzAsOTE3ODcxLDkxNzg3Miw5MTc4NzMsOTE3ODc0LDkxNzg3NSw5MTc4NzYsOTE3ODc3LDkxNzg3OCw5MTc4NzksOTE3ODgwLDkxNzg4MSw5MTc4ODIsOTE3ODgzLDkxNzg4NCw5MTc4ODUsOTE3ODg2LDkxNzg4Nyw5MTc4ODgsOTE3ODg5LDkxNzg5MCw5MTc4OTEsOTE3ODkyLDkxNzg5Myw5MTc4OTQsOTE3ODk1LDkxNzg5Niw5MTc4OTcsOTE3ODk4LDkxNzg5OSw5MTc5MDAsOTE3OTAxLDkxNzkwMiw5MTc5MDMsOTE3OTA0LDkxNzkwNSw5MTc5MDYsOTE3OTA3LDkxNzkwOCw5MTc5MDksOTE3OTEwLDkxNzkxMSw5MTc5MTIsOTE3OTEzLDkxNzkxNCw5MTc5MTUsOTE3OTE2LDkxNzkxNyw5MTc5MTgsOTE3OTE5LDkxNzkyMCw5MTc5MjEsOTE3OTIyLDkxNzkyMyw5MTc5MjQsOTE3OTI1LDkxNzkyNiw5MTc5MjcsOTE3OTI4LDkxNzkyOSw5MTc5MzAsOTE3OTMxLDkxNzkzMiw5MTc5MzMsOTE3OTM0LDkxNzkzNSw5MTc5MzYsOTE3OTM3LDkxNzkzOCw5MTc5MzksOTE3OTQwLDkxNzk0MSw5MTc5NDIsOTE3OTQzLDkxNzk0NCw5MTc5NDUsOTE3OTQ2LDkxNzk0Nyw5MTc5NDgsOTE3OTQ5LDkxNzk1MCw5MTc5NTEsOTE3OTUyLDkxNzk1Myw5MTc5NTQsOTE3OTU1LDkxNzk1Niw5MTc5NTcsOTE3OTU4LDkxNzk1OSw5MTc5NjAsOTE3OTYxLDkxNzk2Miw5MTc5NjMsOTE3OTY0LDkxNzk2NSw5MTc5NjYsOTE3OTY3LDkxNzk2OCw5MTc5NjksOTE3OTcwLDkxNzk3MSw5MTc5NzIsOTE3OTczLDkxNzk3NCw5MTc5NzUsOTE3OTc2LDkxNzk3Nyw5MTc5NzgsOTE3OTc5LDkxNzk4MCw5MTc5ODEsOTE3OTgyLDkxNzk4Myw5MTc5ODQsOTE3OTg1LDkxNzk4Niw5MTc5ODcsOTE3OTg4LDkxNzk4OSw5MTc5OTAsOTE3OTkxLDkxNzk5Miw5MTc5OTMsOTE3OTk0LDkxNzk5NSw5MTc5OTYsOTE3OTk3LDkxNzk5OCw5MTc5OTldIil9c3RhdGljIGdldERhdGEoKXtyZXR1cm4gdGhpcy5fZGF0YXx8KHRoaXMuX2RhdGE9bmV3IFNldChlZS5nZXRSYXdEYXRhKCkpKSx0aGlzLl9kYXRhfXN0YXRpYyBpc0ludmlzaWJsZUNoYXJhY3RlcihlKXtyZXR1cm4gZWUuZ2V0RGF0YSgpLmhhcyhlKX1zdGF0aWMgZ2V0IGNvZGVQb2ludHMoKXtyZXR1cm4gZWUuZ2V0RGF0YSgpfX1lZS5fZGF0YT12b2lkIDA7Y2xhc3MgdGV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5tZXRob2Q9bix0aGlzLmFyZ3M9cix0aGlzLnR5cGU9MH19Y2xhc3MgbmV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMuc2VxPXQsdGhpcy5yZXM9bix0aGlzLmVycj1yLHRoaXMudHlwZT0xfX1jbGFzcyByZXtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50TmFtZT1uLHRoaXMuYXJnPXIsdGhpcy50eXBlPTJ9fWNsYXNzIGlle2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50PW4sdGhpcy50eXBlPTN9fWNsYXNzIGFle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy50eXBlPTR9fWNsYXNzIG9le2NvbnN0cnVjdG9yKGUpe3RoaXMuX3dvcmtlcklkPS0xLHRoaXMuX2hhbmRsZXI9ZSx0aGlzLl9sYXN0U2VudFJlcT0wLHRoaXMuX3BlbmRpbmdSZXBsaWVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzPW5ldyBNYXAsdGhpcy5fcGVuZGluZ0V2ZW50cz1uZXcgTWFwfXNldFdvcmtlcklkKGUpe3RoaXMuX3dvcmtlcklkPWV9c2VuZE1lc3NhZ2UoZSx0KXtjb25zdCBuPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKTtyZXR1cm4gbmV3IFByb21pc2UoKChyLGkpPT57dGhpcy5fcGVuZGluZ1JlcGxpZXNbbl09e3Jlc29sdmU6cixyZWplY3Q6aX0sdGhpcy5fc2VuZChuZXcgdGUodGhpcy5fd29ya2VySWQsbixlLHQpKX0pKX1saXN0ZW4oZSx0KXtsZXQgbj1udWxsO2NvbnN0IHI9bmV3IEYoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+e249U3RyaW5nKCsrdGhpcy5fbGFzdFNlbnRSZXEpLHRoaXMuX3BlbmRpbmdFbWl0dGVycy5zZXQobixyKSx0aGlzLl9zZW5kKG5ldyByZSh0aGlzLl93b3JrZXJJZCxuLGUsdCkpfSxvbkxhc3RMaXN0ZW5lclJlbW92ZTooKT0+e3RoaXMuX3BlbmRpbmdFbWl0dGVycy5kZWxldGUobiksdGhpcy5fc2VuZChuZXcgYWUodGhpcy5fd29ya2VySWQsbikpLG49bnVsbH19KTtyZXR1cm4gci5ldmVudH1oYW5kbGVNZXNzYWdlKGUpe2UmJmUudnNXb3JrZXImJigtMSE9PXRoaXMuX3dvcmtlcklkJiZlLnZzV29ya2VyIT09dGhpcy5fd29ya2VySWR8fHRoaXMuX2hhbmRsZU1lc3NhZ2UoZSkpfV9oYW5kbGVNZXNzYWdlKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UgMTpyZXR1cm4gdGhpcy5faGFuZGxlUmVwbHlNZXNzYWdlKGUpO2Nhc2UgMDpyZXR1cm4gdGhpcy5faGFuZGxlUmVxdWVzdE1lc3NhZ2UoZSk7Y2FzZSAyOnJldHVybiB0aGlzLl9oYW5kbGVTdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSk7Y2FzZSAzOnJldHVybiB0aGlzLl9oYW5kbGVFdmVudE1lc3NhZ2UoZSk7Y2FzZSA0OnJldHVybiB0aGlzLl9oYW5kbGVVbnN1YnNjcmliZUV2ZW50TWVzc2FnZShlKX19X2hhbmRsZVJlcGx5TWVzc2FnZShlKXtpZighdGhpcy5fcGVuZGluZ1JlcGxpZXNbZS5zZXFdKXJldHVybiB2b2lkIGNvbnNvbGUud2FybigiR290IHJlcGx5IHRvIHVua25vd24gc2VxIik7Y29uc3QgdD10aGlzLl9wZW5kaW5nUmVwbGllc1tlLnNlcV07aWYoZGVsZXRlIHRoaXMuX3BlbmRpbmdSZXBsaWVzW2Uuc2VxXSxlLmVycil7bGV0IG49ZS5lcnI7cmV0dXJuIGUuZXJyLiRpc0Vycm9yJiYobj1uZXcgRXJyb3Isbi5uYW1lPWUuZXJyLm5hbWUsbi5tZXNzYWdlPWUuZXJyLm1lc3NhZ2Usbi5zdGFjaz1lLmVyci5zdGFjayksdm9pZCB0LnJlamVjdChuKX10LnJlc29sdmUoZS5yZXMpfV9oYW5kbGVSZXF1ZXN0TWVzc2FnZShlKXtjb25zdCB0PWUucmVxO3RoaXMuX2hhbmRsZXIuaGFuZGxlTWVzc2FnZShlLm1ldGhvZCxlLmFyZ3MpLnRoZW4oKGU9Pnt0aGlzLl9zZW5kKG5ldyBuZSh0aGlzLl93b3JrZXJJZCx0LGUsdm9pZCAwKSl9KSwoZT0+e2UuZGV0YWlsIGluc3RhbmNlb2YgRXJyb3ImJihlLmRldGFpbD1uKGUuZGV0YWlsKSksdGhpcy5fc2VuZChuZXcgbmUodGhpcy5fd29ya2VySWQsdCx2b2lkIDAsbihlKSkpfSkpfV9oYW5kbGVTdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSl7Y29uc3QgdD1lLnJlcSxuPXRoaXMuX2hhbmRsZXIuaGFuZGxlRXZlbnQoZS5ldmVudE5hbWUsZS5hcmcpKChlPT57dGhpcy5fc2VuZChuZXcgaWUodGhpcy5fd29ya2VySWQsdCxlKSl9KSk7dGhpcy5fcGVuZGluZ0V2ZW50cy5zZXQodCxuKX1faGFuZGxlRXZlbnRNZXNzYWdlKGUpe3RoaXMuX3BlbmRpbmdFbWl0dGVycy5oYXMoZS5yZXEpP3RoaXMuX3BlbmRpbmdFbWl0dGVycy5nZXQoZS5yZXEpLmZpcmUoZS5ldmVudCk6Y29uc29sZS53YXJuKCJHb3QgZXZlbnQgZm9yIHVua25vd24gcmVxIil9X2hhbmRsZVVuc3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpe3RoaXMuX3BlbmRpbmdFdmVudHMuaGFzKGUucmVxKT8odGhpcy5fcGVuZGluZ0V2ZW50cy5nZXQoZS5yZXEpLmRpc3Bvc2UoKSx0aGlzLl9wZW5kaW5nRXZlbnRzLmRlbGV0ZShlLnJlcSkpOmNvbnNvbGUud2FybigiR290IHVuc3Vic2NyaWJlIGZvciB1bmtub3duIHJlcSIpfV9zZW5kKGUpe2NvbnN0IHQ9W107aWYoMD09PWUudHlwZSlmb3IobGV0IG49MDtuPGUuYXJncy5sZW5ndGg7bisrKWUuYXJnc1tuXWluc3RhbmNlb2YgQXJyYXlCdWZmZXImJnQucHVzaChlLmFyZ3Nbbl0pO2Vsc2UgMT09PWUudHlwZSYmZS5yZXMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmdC5wdXNoKGUucmVzKTt0aGlzLl9oYW5kbGVyLnNlbmRNZXNzYWdlKGUsdCl9fWZ1bmN0aW9uIHNlKGUpe3JldHVybiJvIj09PWVbMF0mJiJuIj09PWVbMV0mJkooZS5jaGFyQ29kZUF0KDIpKX1mdW5jdGlvbiBsZShlKXtyZXR1cm4vXm9uRHluYW1pYy8udGVzdChlKSYmSihlLmNoYXJDb2RlQXQoOSkpfWNsYXNzIGNle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5PXQsdGhpcy5fcmVxdWVzdEhhbmRsZXI9bnVsbCx0aGlzLl9wcm90b2NvbD1uZXcgb2Uoe3NlbmRNZXNzYWdlOih0LG4pPT57ZSh0LG4pfSxoYW5kbGVNZXNzYWdlOihlLHQpPT50aGlzLl9oYW5kbGVNZXNzYWdlKGUsdCksaGFuZGxlRXZlbnQ6KGUsdCk9PnRoaXMuX2hhbmRsZUV2ZW50KGUsdCl9KX1vbm1lc3NhZ2UoZSl7dGhpcy5fcHJvdG9jb2wuaGFuZGxlTWVzc2FnZShlKX1faGFuZGxlTWVzc2FnZShlLHQpe2lmKCIkaW5pdGlhbGl6ZSI9PT1lKXJldHVybiB0aGlzLmluaXRpYWxpemUodFswXSx0WzFdLHRbMl0sdFszXSk7aWYoIXRoaXMuX3JlcXVlc3RIYW5kbGVyfHwiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0pcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiTWlzc2luZyByZXF1ZXN0SGFuZGxlciBvciBtZXRob2Q6ICIrZSkpO3RyeXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdLmFwcGx5KHRoaXMuX3JlcXVlc3RIYW5kbGVyLHQpKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9fV9oYW5kbGVFdmVudChlLHQpe2lmKCF0aGlzLl9yZXF1ZXN0SGFuZGxlcil0aHJvdyBuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIiKTtpZihsZShlKSl7Y29uc3Qgbj10aGlzLl9yZXF1ZXN0SGFuZGxlcltlXS5jYWxsKHRoaXMuX3JlcXVlc3RIYW5kbGVyLHQpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcihgTWlzc2luZyBkeW5hbWljIGV2ZW50ICR7ZX0gb24gcmVxdWVzdCBoYW5kbGVyLmApO3JldHVybiBufWlmKHNlKGUpKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcihgTWlzc2luZyBldmVudCAke2V9IG9uIHJlcXVlc3QgaGFuZGxlci5gKTtyZXR1cm4gdH10aHJvdyBuZXcgRXJyb3IoYE1hbGZvcm1lZCBldmVudCBuYW1lICR7ZX1gKX1pbml0aWFsaXplKGUsdCxuLHIpe3RoaXMuX3Byb3RvY29sLnNldFdvcmtlcklkKGUpO2NvbnN0IGk9ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9ZT0+ZnVuY3Rpb24oKXtjb25zdCBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gdChlLG4pfSxpPWU9PmZ1bmN0aW9uKHQpe3JldHVybiBuKGUsdCl9LGE9e307Zm9yKGNvbnN0IHQgb2YgZSlsZSh0KT9hW3RdPWkodCk6c2UodCk/YVt0XT1uKHQsdm9pZCAwKTphW3RdPXIodCk7cmV0dXJuIGF9KHIsKChlLHQpPT50aGlzLl9wcm90b2NvbC5zZW5kTWVzc2FnZShlLHQpKSwoKGUsdCk9PnRoaXMuX3Byb3RvY29sLmxpc3RlbihlLHQpKSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT8odGhpcy5fcmVxdWVzdEhhbmRsZXI9dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5KGkpLFByb21pc2UucmVzb2x2ZShqKHRoaXMuX3JlcXVlc3RIYW5kbGVyKSkpOih0JiYodm9pZCAwIT09dC5iYXNlVXJsJiZkZWxldGUgdC5iYXNlVXJsLHZvaWQgMCE9PXQucGF0aHMmJnZvaWQgMCE9PXQucGF0aHMudnMmJmRlbGV0ZSB0LnBhdGhzLnZzLHZvaWQgMCE9PXR5cGVvZiB0LnRydXN0ZWRUeXBlc1BvbGljeSYmZGVsZXRlIHQudHJ1c3RlZFR5cGVzUG9saWN5LHQuY2F0Y2hFcnJvcj0hMCxMLnJlcXVpcmUuY29uZmlnKHQpKSxuZXcgUHJvbWlzZSgoKGUsdCk9PnsoMCxMLnJlcXVpcmUpKFtuXSwobj0+e3RoaXMuX3JlcXVlc3RIYW5kbGVyPW4uY3JlYXRlKGkpLHRoaXMuX3JlcXVlc3RIYW5kbGVyP2Uoaih0aGlzLl9yZXF1ZXN0SGFuZGxlcikpOnQobmV3IEVycm9yKCJObyBSZXF1ZXN0SGFuZGxlciEiKSl9KSx0KX0pKSl9fWNsYXNzIGhle2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMub3JpZ2luYWxTdGFydD1lLHRoaXMub3JpZ2luYWxMZW5ndGg9dCx0aGlzLm1vZGlmaWVkU3RhcnQ9bix0aGlzLm1vZGlmaWVkTGVuZ3RoPXJ9Z2V0T3JpZ2luYWxFbmQoKXtyZXR1cm4gdGhpcy5vcmlnaW5hbFN0YXJ0K3RoaXMub3JpZ2luYWxMZW5ndGh9Z2V0TW9kaWZpZWRFbmQoKXtyZXR1cm4gdGhpcy5tb2RpZmllZFN0YXJ0K3RoaXMubW9kaWZpZWRMZW5ndGh9fWZ1bmN0aW9uIGRlKGUsdCl7cmV0dXJuKHQ8PDUpLXQrZXwwfWZ1bmN0aW9uIHVlKGUsdCl7dD1kZSgxNDk0MTcsdCk7Zm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXQ9ZGUoZS5jaGFyQ29kZUF0KG4pLHQpO3JldHVybiB0fWNsYXNzIHBle2NvbnN0cnVjdG9yKGUpe3RoaXMuc291cmNlPWV9Z2V0RWxlbWVudHMoKXtjb25zdCBlPXRoaXMuc291cmNlLHQ9bmV3IEludDMyQXJyYXkoZS5sZW5ndGgpO2ZvcihsZXQgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0W25dPWUuY2hhckNvZGVBdChuKTtyZXR1cm4gdH19ZnVuY3Rpb24gbWUoZSx0LG4pe3JldHVybiBuZXcgd2UobmV3IHBlKGUpLG5ldyBwZSh0KSkuQ29tcHV0ZURpZmYobikuY2hhbmdlc31jbGFzcyBmZXtzdGF0aWMgQXNzZXJ0KGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKHQpfX1jbGFzcyBnZXtzdGF0aWMgQ29weShlLHQsbixyLGkpe2ZvcihsZXQgYT0wO2E8aTthKyspbltyK2FdPWVbdCthXX1zdGF0aWMgQ29weTIoZSx0LG4scixpKXtmb3IobGV0IGE9MDthPGk7YSsrKW5bcithXT1lW3QrYV19fWNsYXNzIGJle2NvbnN0cnVjdG9yKCl7dGhpcy5tX2NoYW5nZXM9W10sdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0LHRoaXMubV9vcmlnaW5hbENvdW50PTAsdGhpcy5tX21vZGlmaWVkQ291bnQ9MH1NYXJrTmV4dENoYW5nZSgpeyh0aGlzLm1fb3JpZ2luYWxDb3VudD4wfHx0aGlzLm1fbW9kaWZpZWRDb3VudD4wKSYmdGhpcy5tX2NoYW5nZXMucHVzaChuZXcgaGUodGhpcy5tX29yaWdpbmFsU3RhcnQsdGhpcy5tX29yaWdpbmFsQ291bnQsdGhpcy5tX21vZGlmaWVkU3RhcnQsdGhpcy5tX21vZGlmaWVkQ291bnQpKSx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTAsdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0fUFkZE9yaWdpbmFsRWxlbWVudChlLHQpe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LGUpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LHQpLHRoaXMubV9vcmlnaW5hbENvdW50Kyt9QWRkTW9kaWZpZWRFbGVtZW50KGUsdCl7dGhpcy5tX29yaWdpbmFsU3RhcnQ9TWF0aC5taW4odGhpcy5tX29yaWdpbmFsU3RhcnQsZSksdGhpcy5tX21vZGlmaWVkU3RhcnQ9TWF0aC5taW4odGhpcy5tX21vZGlmaWVkU3RhcnQsdCksdGhpcy5tX21vZGlmaWVkQ291bnQrK31nZXRDaGFuZ2VzKCl7cmV0dXJuKHRoaXMubV9vcmlnaW5hbENvdW50PjB8fHRoaXMubV9tb2RpZmllZENvdW50PjApJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXN9Z2V0UmV2ZXJzZUNoYW5nZXMoKXtyZXR1cm4odGhpcy5tX29yaWdpbmFsQ291bnQ+MHx8dGhpcy5tX21vZGlmaWVkQ291bnQ+MCkmJnRoaXMuTWFya05leHRDaGFuZ2UoKSx0aGlzLm1fY2hhbmdlcy5yZXZlcnNlKCksdGhpcy5tX2NoYW5nZXN9fWNsYXNzIHdle2NvbnN0cnVjdG9yKGUsdCxuPW51bGwpe3RoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlPW4sdGhpcy5fb3JpZ2luYWxTZXF1ZW5jZT1lLHRoaXMuX21vZGlmaWVkU2VxdWVuY2U9dDtjb25zdFtyLGksYV09d2UuX2dldEVsZW1lbnRzKGUpLFtvLHMsbF09d2UuX2dldEVsZW1lbnRzKHQpO3RoaXMuX2hhc1N0cmluZ3M9YSYmbCx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzPXIsdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaD1pLHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHM9byx0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoPXMsdGhpcy5tX2ZvcndhcmRIaXN0b3J5PVtdLHRoaXMubV9yZXZlcnNlSGlzdG9yeT1bXX1zdGF0aWMgX2lzU3RyaW5nQXJyYXkoZSl7cmV0dXJuIGUubGVuZ3RoPjAmJiJzdHJpbmciPT10eXBlb2YgZVswXX1zdGF0aWMgX2dldEVsZW1lbnRzKGUpe2NvbnN0IHQ9ZS5nZXRFbGVtZW50cygpO2lmKHdlLl9pc1N0cmluZ0FycmF5KHQpKXtjb25zdCBlPW5ldyBJbnQzMkFycmF5KHQubGVuZ3RoKTtmb3IobGV0IG49MCxyPXQubGVuZ3RoO248cjtuKyspZVtuXT11ZSh0W25dLDApO3JldHVyblt0LGUsITBdfXJldHVybiB0IGluc3RhbmNlb2YgSW50MzJBcnJheT9bW10sdCwhMV06W1tdLG5ldyBJbnQzMkFycmF5KHQpLCExXX1FbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1FbGVtZW50c0FyZVN0cmljdEVxdWFsKGUsdCl7aWYoIXRoaXMuRWxlbWVudHNBcmVFcXVhbChlLHQpKXJldHVybiExO3JldHVybiB3ZS5fZ2V0U3RyaWN0RWxlbWVudCh0aGlzLl9vcmlnaW5hbFNlcXVlbmNlLGUpPT09d2UuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fbW9kaWZpZWRTZXF1ZW5jZSx0KX1zdGF0aWMgX2dldFN0cmljdEVsZW1lbnQoZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRTdHJpY3RFbGVtZW50P2UuZ2V0U3RyaWN0RWxlbWVudCh0KTpudWxsfU9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1t0XSl9TW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1Db21wdXRlRGlmZihlKXtyZXR1cm4gdGhpcy5fQ29tcHV0ZURpZmYoMCx0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xLDAsdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaC5sZW5ndGgtMSxlKX1fQ29tcHV0ZURpZmYoZSx0LG4scixpKXtjb25zdCBhPVshMV07bGV0IG89dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShlLHQsbixyLGEpO3JldHVybiBpJiYobz10aGlzLlByZXR0aWZ5Q2hhbmdlcyhvKSkse3F1aXRFYXJseTphWzBdLGNoYW5nZXM6b319Q29tcHV0ZURpZmZSZWN1cnNpdmUoZSx0LG4scixpKXtmb3IoaVswXT0hMTtlPD10JiZuPD1yJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwoZSxuKTspZSsrLG4rKztmb3IoO3Q+PWUmJnI+PW4mJnRoaXMuRWxlbWVudHNBcmVFcXVhbCh0LHIpOyl0LS0sci0tO2lmKGU+dHx8bj5yKXtsZXQgaTtyZXR1cm4gbjw9cj8oZmUuQXNzZXJ0KGU9PT10KzEsIm9yaWdpbmFsU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBvcmlnaW5hbEVuZCIpLGk9W25ldyBoZShlLDAsbixyLW4rMSldKTplPD10PyhmZS5Bc3NlcnQobj09PXIrMSwibW9kaWZpZWRTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG1vZGlmaWVkRW5kIiksaT1bbmV3IGhlKGUsdC1lKzEsbiwwKV0pOihmZS5Bc3NlcnQoZT09PXQrMSwib3JpZ2luYWxTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG9yaWdpbmFsRW5kIiksZmUuQXNzZXJ0KG49PT1yKzEsIm1vZGlmaWVkU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBtb2RpZmllZEVuZCIpLGk9W10pLGl9Y29uc3QgYT1bMF0sbz1bMF0scz10aGlzLkNvbXB1dGVSZWN1cnNpb25Qb2ludChlLHQsbixyLGEsbyxpKSxsPWFbMF0sYz1vWzBdO2lmKG51bGwhPT1zKXJldHVybiBzO2lmKCFpWzBdKXtjb25zdCBhPXRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUoZSxsLG4sYyxpKTtsZXQgbz1bXTtyZXR1cm4gbz1pWzBdP1tuZXcgaGUobCsxLHQtKGwrMSkrMSxjKzEsci0oYysxKSsxKV06dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShsKzEsdCxjKzEscixpKSx0aGlzLkNvbmNhdGVuYXRlQ2hhbmdlcyhhLG8pfXJldHVybltuZXcgaGUoZSx0LWUrMSxuLHItbisxKV19V0FMS1RSQUNFKGUsdCxuLHIsaSxhLG8scyxsLGMsaCxkLHUscCxtLGYsZyxiKXtsZXQgdz1udWxsLF89bnVsbCx2PW5ldyBiZSx5PXQsVD1uLGs9dVswXS1mWzBdLXIsUz0tMTA3Mzc0MTgyNCxDPXRoaXMubV9mb3J3YXJkSGlzdG9yeS5sZW5ndGgtMTtkb3tjb25zdCB0PWsrZTt0PT09eXx8dDxUJiZsW3QtMV08bFt0KzFdPyhwPShoPWxbdCsxXSktay1yLGg8UyYmdi5NYXJrTmV4dENoYW5nZSgpLFM9aCx2LkFkZE1vZGlmaWVkRWxlbWVudChoKzEscCksaz10KzEtZSk6KHA9KGg9bFt0LTFdKzEpLWstcixoPFMmJnYuTWFya05leHRDaGFuZ2UoKSxTPWgtMSx2LkFkZE9yaWdpbmFsRWxlbWVudChoLHArMSksaz10LTEtZSksQz49MCYmKGU9KGw9dGhpcy5tX2ZvcndhcmRIaXN0b3J5W0NdKVswXSx5PTEsVD1sLmxlbmd0aC0xKX13aGlsZSgtLUM+PS0xKTtpZih3PXYuZ2V0UmV2ZXJzZUNoYW5nZXMoKSxiWzBdKXtsZXQgZT11WzBdKzEsdD1mWzBdKzE7aWYobnVsbCE9PXcmJncubGVuZ3RoPjApe2NvbnN0IG49d1t3Lmxlbmd0aC0xXTtlPU1hdGgubWF4KGUsbi5nZXRPcmlnaW5hbEVuZCgpKSx0PU1hdGgubWF4KHQsbi5nZXRNb2RpZmllZEVuZCgpKX1fPVtuZXcgaGUoZSxkLWUrMSx0LG0tdCsxKV19ZWxzZXt2PW5ldyBiZSx5PWEsVD1vLGs9dVswXS1mWzBdLXMsUz0xMDczNzQxODI0LEM9Zz90aGlzLm1fcmV2ZXJzZUhpc3RvcnkubGVuZ3RoLTE6dGhpcy5tX3JldmVyc2VIaXN0b3J5Lmxlbmd0aC0yO2Rve2NvbnN0IGU9aytpO2U9PT15fHxlPFQmJmNbZS0xXT49Y1tlKzFdPyhwPShoPWNbZSsxXS0xKS1rLXMsaD5TJiZ2Lk1hcmtOZXh0Q2hhbmdlKCksUz1oKzEsdi5BZGRPcmlnaW5hbEVsZW1lbnQoaCsxLHArMSksaz1lKzEtaSk6KHA9KGg9Y1tlLTFdKS1rLXMsaD5TJiZ2Lk1hcmtOZXh0Q2hhbmdlKCksUz1oLHYuQWRkTW9kaWZpZWRFbGVtZW50KGgrMSxwKzEpLGs9ZS0xLWkpLEM+PTAmJihpPShjPXRoaXMubV9yZXZlcnNlSGlzdG9yeVtDXSlbMF0seT0xLFQ9Yy5sZW5ndGgtMSl9d2hpbGUoLS1DPj0tMSk7Xz12LmdldENoYW5nZXMoKX1yZXR1cm4gdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXModyxfKX1Db21wdXRlUmVjdXJzaW9uUG9pbnQoZSx0LG4scixpLGEsbyl7bGV0IHM9MCxsPTAsYz0wLGg9MCxkPTAsdT0wO2UtLSxuLS0saVswXT0wLGFbMF09MCx0aGlzLm1fZm9yd2FyZEhpc3Rvcnk9W10sdGhpcy5tX3JldmVyc2VIaXN0b3J5PVtdO2NvbnN0IHA9dC1lKyhyLW4pLG09cCsxLGY9bmV3IEludDMyQXJyYXkobSksZz1uZXcgSW50MzJBcnJheShtKSxiPXItbix3PXQtZSxfPWUtbix2PXQtcix5PSh3LWIpJTI9PTA7ZltiXT1lLGdbd109dCxvWzBdPSExO2ZvcihsZXQgVD0xO1Q8PXAvMisxO1QrKyl7bGV0IHA9MCxrPTA7Yz10aGlzLkNsaXBEaWFnb25hbEJvdW5kKGItVCxULGIsbSksaD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKGIrVCxULGIsbSk7Zm9yKGxldCBlPWM7ZTw9aDtlKz0yKXtzPWU9PT1jfHxlPGgmJmZbZS0xXTxmW2UrMV0/ZltlKzFdOmZbZS0xXSsxLGw9cy0oZS1iKS1fO2NvbnN0IG49cztmb3IoO3M8dCYmbDxyJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwocysxLGwrMSk7KXMrKyxsKys7aWYoZltlXT1zLHMrbD5wK2smJihwPXMsaz1sKSwheSYmTWF0aC5hYnMoZS13KTw9VC0xJiZzPj1nW2VdKXJldHVybiBpWzBdPXMsYVswXT1sLG48PWdbZV0mJlQ8PTE0NDg/dGhpcy5XQUxLVFJBQ0UoYixjLGgsXyx3LGQsdSx2LGYsZyxzLHQsaSxsLHIsYSx5LG8pOm51bGx9Y29uc3QgUz0ocC1lKyhrLW4pLVQpLzI7aWYobnVsbCE9PXRoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlJiYhdGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUocCxTKSlyZXR1cm4gb1swXT0hMCxpWzBdPXAsYVswXT1rLFM+MCYmVDw9MTQ0OD90aGlzLldBTEtUUkFDRShiLGMsaCxfLHcsZCx1LHYsZixnLHMsdCxpLGwscixhLHksbyk6KGUrKyxuKyssW25ldyBoZShlLHQtZSsxLG4sci1uKzEpXSk7ZD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHctVCxULHcsbSksdT10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHcrVCxULHcsbSk7Zm9yKGxldCBwPWQ7cDw9dTtwKz0yKXtzPXA9PT1kfHxwPHUmJmdbcC0xXT49Z1twKzFdP2dbcCsxXS0xOmdbcC0xXSxsPXMtKHAtdyktdjtjb25zdCBtPXM7Zm9yKDtzPmUmJmw+biYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKHMsbCk7KXMtLSxsLS07aWYoZ1twXT1zLHkmJk1hdGguYWJzKHAtYik8PVQmJnM8PWZbcF0pcmV0dXJuIGlbMF09cyxhWzBdPWwsbT49ZltwXSYmVDw9MTQ0OD90aGlzLldBTEtUUkFDRShiLGMsaCxfLHcsZCx1LHYsZixnLHMsdCxpLGwscixhLHksbyk6bnVsbH1pZihUPD0xNDQ3KXtsZXQgZT1uZXcgSW50MzJBcnJheShoLWMrMik7ZVswXT1iLWMrMSxnZS5Db3B5MihmLGMsZSwxLGgtYysxKSx0aGlzLm1fZm9yd2FyZEhpc3RvcnkucHVzaChlKSxlPW5ldyBJbnQzMkFycmF5KHUtZCsyKSxlWzBdPXctZCsxLGdlLkNvcHkyKGcsZCxlLDEsdS1kKzEpLHRoaXMubV9yZXZlcnNlSGlzdG9yeS5wdXNoKGUpfX1yZXR1cm4gdGhpcy5XQUxLVFJBQ0UoYixjLGgsXyx3LGQsdSx2LGYsZyxzLHQsaSxsLHIsYSx5LG8pfVByZXR0aWZ5Q2hhbmdlcyhlKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdLHI9dDxlLmxlbmd0aC0xP2VbdCsxXS5vcmlnaW5hbFN0YXJ0OnRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLGk9dDxlLmxlbmd0aC0xP2VbdCsxXS5tb2RpZmllZFN0YXJ0OnRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLGE9bi5vcmlnaW5hbExlbmd0aD4wLG89bi5tb2RpZmllZExlbmd0aD4wO2Zvcig7bi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGg8ciYmbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGg8aSYmKCFhfHx0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChuLm9yaWdpbmFsU3RhcnQsbi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgpKSYmKCFvfHx0aGlzLk1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChuLm1vZGlmaWVkU3RhcnQsbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgpKTspe2NvbnN0IGU9dGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKG4ub3JpZ2luYWxTdGFydCxuLm1vZGlmaWVkU3RhcnQpO2lmKHRoaXMuRWxlbWVudHNBcmVTdHJpY3RFcXVhbChuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aCxuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aCkmJiFlKWJyZWFrO24ub3JpZ2luYWxTdGFydCsrLG4ubW9kaWZpZWRTdGFydCsrfWNvbnN0IHM9W251bGxdO3Q8ZS5sZW5ndGgtMSYmdGhpcy5DaGFuZ2VzT3ZlcmxhcChlW3RdLGVbdCsxXSxzKSYmKGVbdF09c1swXSxlLnNwbGljZSh0KzEsMSksdC0tKX1mb3IobGV0IHQ9ZS5sZW5ndGgtMTt0Pj0wO3QtLSl7Y29uc3Qgbj1lW3RdO2xldCByPTAsaT0wO2lmKHQ+MCl7Y29uc3Qgbj1lW3QtMV07cj1uLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aCxpPW4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RofWNvbnN0IGE9bi5vcmlnaW5hbExlbmd0aD4wLG89bi5tb2RpZmllZExlbmd0aD4wO2xldCBzPTAsbD10aGlzLl9ib3VuZGFyeVNjb3JlKG4ub3JpZ2luYWxTdGFydCxuLm9yaWdpbmFsTGVuZ3RoLG4ubW9kaWZpZWRTdGFydCxuLm1vZGlmaWVkTGVuZ3RoKTtmb3IobGV0IGU9MTs7ZSsrKXtjb25zdCB0PW4ub3JpZ2luYWxTdGFydC1lLGM9bi5tb2RpZmllZFN0YXJ0LWU7aWYodDxyfHxjPGkpYnJlYWs7aWYoYSYmIXRoaXMuT3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKHQsdCtuLm9yaWdpbmFsTGVuZ3RoKSlicmVhaztpZihvJiYhdGhpcy5Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwoYyxjK24ubW9kaWZpZWRMZW5ndGgpKWJyZWFrO2NvbnN0IGg9KHQ9PT1yJiZjPT09aT81OjApK3RoaXMuX2JvdW5kYXJ5U2NvcmUodCxuLm9yaWdpbmFsTGVuZ3RoLGMsbi5tb2RpZmllZExlbmd0aCk7aD5sJiYobD1oLHM9ZSl9bi5vcmlnaW5hbFN0YXJ0LT1zLG4ubW9kaWZpZWRTdGFydC09cztjb25zdCBjPVtudWxsXTt0PjAmJnRoaXMuQ2hhbmdlc092ZXJsYXAoZVt0LTFdLGVbdF0sYykmJihlW3QtMV09Y1swXSxlLnNwbGljZSh0LDEpLHQrKyl9aWYodGhpcy5faGFzU3RyaW5ncylmb3IobGV0IHQ9MSxuPWUubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49ZVt0LTFdLHI9ZVt0XSxpPXIub3JpZ2luYWxTdGFydC1uLm9yaWdpbmFsU3RhcnQtbi5vcmlnaW5hbExlbmd0aCxhPW4ub3JpZ2luYWxTdGFydCxvPXIub3JpZ2luYWxTdGFydCtyLm9yaWdpbmFsTGVuZ3RoLHM9by1hLGw9bi5tb2RpZmllZFN0YXJ0LGM9ci5tb2RpZmllZFN0YXJ0K3IubW9kaWZpZWRMZW5ndGgsaD1jLWw7aWYoaTw1JiZzPDIwJiZoPDIwKXtjb25zdCBlPXRoaXMuX2ZpbmRCZXR0ZXJDb250aWd1b3VzU2VxdWVuY2UoYSxzLGwsaCxpKTtpZihlKXtjb25zdFt0LGFdPWU7dD09PW4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoJiZhPT09bi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGh8fChuLm9yaWdpbmFsTGVuZ3RoPXQtbi5vcmlnaW5hbFN0YXJ0LG4ubW9kaWZpZWRMZW5ndGg9YS1uLm1vZGlmaWVkU3RhcnQsci5vcmlnaW5hbFN0YXJ0PXQraSxyLm1vZGlmaWVkU3RhcnQ9YStpLHIub3JpZ2luYWxMZW5ndGg9by1yLm9yaWdpbmFsU3RhcnQsci5tb2RpZmllZExlbmd0aD1jLXIubW9kaWZpZWRTdGFydCl9fX1yZXR1cm4gZX1fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZShlLHQsbixyLGkpe2lmKHQ8aXx8cjxpKXJldHVybiBudWxsO2NvbnN0IGE9ZSt0LWkrMSxvPW4rci1pKzE7bGV0IHM9MCxsPTAsYz0wO2ZvcihsZXQgdD1lO3Q8YTt0KyspZm9yKGxldCBlPW47ZTxvO2UrKyl7Y29uc3Qgbj10aGlzLl9jb250aWd1b3VzU2VxdWVuY2VTY29yZSh0LGUsaSk7bj4wJiZuPnMmJihzPW4sbD10LGM9ZSl9cmV0dXJuIHM+MD9bbCxjXTpudWxsfV9jb250aWd1b3VzU2VxdWVuY2VTY29yZShlLHQsbil7bGV0IHI9MDtmb3IobGV0IGk9MDtpPG47aSsrKXtpZighdGhpcy5FbGVtZW50c0FyZUVxdWFsKGUraSx0K2kpKXJldHVybiAwO3IrPXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZStpXS5sZW5ndGh9cmV0dXJuIHJ9X09yaWdpbmFsSXNCb3VuZGFyeShlKXtyZXR1cm4gZTw9MHx8ZT49dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMXx8dGhpcy5faGFzU3RyaW5ncyYmL15ccyokLy50ZXN0KHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV0pfV9PcmlnaW5hbFJlZ2lvbklzQm91bmRhcnkoZSx0KXtpZih0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkoZSl8fHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShlLTEpKXJldHVybiEwO2lmKHQ+MCl7Y29uc3Qgbj1lK3Q7aWYodGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KG4tMSl8fHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShuKSlyZXR1cm4hMH1yZXR1cm4hMX1fTW9kaWZpZWRJc0JvdW5kYXJ5KGUpe3JldHVybiBlPD0wfHxlPj10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xfHx0aGlzLl9oYXNTdHJpbmdzJiYvXlxzKiQvLnRlc3QodGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1tlXSl9X01vZGlmaWVkUmVnaW9uSXNCb3VuZGFyeShlLHQpe2lmKHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShlKXx8dGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KGUtMSkpcmV0dXJuITA7aWYodD4wKXtjb25zdCBuPWUrdDtpZih0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkobi0xKXx8dGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KG4pKXJldHVybiEwfXJldHVybiExfV9ib3VuZGFyeVNjb3JlKGUsdCxuLHIpe3JldHVybih0aGlzLl9PcmlnaW5hbFJlZ2lvbklzQm91bmRhcnkoZSx0KT8xOjApKyh0aGlzLl9Nb2RpZmllZFJlZ2lvbklzQm91bmRhcnkobixyKT8xOjApfUNvbmNhdGVuYXRlQ2hhbmdlcyhlLHQpe2NvbnN0IG49W107aWYoMD09PWUubGVuZ3RofHwwPT09dC5sZW5ndGgpcmV0dXJuIHQubGVuZ3RoPjA/dDplO2lmKHRoaXMuQ2hhbmdlc092ZXJsYXAoZVtlLmxlbmd0aC0xXSx0WzBdLG4pKXtjb25zdCByPW5ldyBBcnJheShlLmxlbmd0aCt0Lmxlbmd0aC0xKTtyZXR1cm4gZ2UuQ29weShlLDAsciwwLGUubGVuZ3RoLTEpLHJbZS5sZW5ndGgtMV09blswXSxnZS5Db3B5KHQsMSxyLGUubGVuZ3RoLHQubGVuZ3RoLTEpLHJ9e2NvbnN0IG49bmV3IEFycmF5KGUubGVuZ3RoK3QubGVuZ3RoKTtyZXR1cm4gZ2UuQ29weShlLDAsbiwwLGUubGVuZ3RoKSxnZS5Db3B5KHQsMCxuLGUubGVuZ3RoLHQubGVuZ3RoKSxufX1DaGFuZ2VzT3ZlcmxhcChlLHQsbil7aWYoZmUuQXNzZXJ0KGUub3JpZ2luYWxTdGFydDw9dC5vcmlnaW5hbFN0YXJ0LCJMZWZ0IGNoYW5nZSBpcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJpZ2h0IGNoYW5nZSIpLGZlLkFzc2VydChlLm1vZGlmaWVkU3RhcnQ8PXQubW9kaWZpZWRTdGFydCwiTGVmdCBjaGFuZ2UgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byByaWdodCBjaGFuZ2UiKSxlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aD49dC5vcmlnaW5hbFN0YXJ0fHxlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aD49dC5tb2RpZmllZFN0YXJ0KXtjb25zdCByPWUub3JpZ2luYWxTdGFydDtsZXQgaT1lLm9yaWdpbmFsTGVuZ3RoO2NvbnN0IGE9ZS5tb2RpZmllZFN0YXJ0O2xldCBvPWUubW9kaWZpZWRMZW5ndGg7cmV0dXJuIGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoPj10Lm9yaWdpbmFsU3RhcnQmJihpPXQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoLWUub3JpZ2luYWxTdGFydCksZS5tb2RpZmllZFN0YXJ0K2UubW9kaWZpZWRMZW5ndGg+PXQubW9kaWZpZWRTdGFydCYmKG89dC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtZS5tb2RpZmllZFN0YXJ0KSxuWzBdPW5ldyBoZShyLGksYSxvKSwhMH1yZXR1cm4gblswXT1udWxsLCExfUNsaXBEaWFnb25hbEJvdW5kKGUsdCxuLHIpe2lmKGU+PTAmJmU8cilyZXR1cm4gZTtjb25zdCBpPXQlMj09MDtpZihlPDApe3JldHVybiBpPT09KG4lMj09MCk/MDoxfXJldHVybiBpPT09KChyLW4tMSklMj09MCk/ci0xOnItMn19bGV0IF9lO2lmKHZvaWQgMCE9PUwudnNjb2RlJiZ2b2lkIDAhPT1MLnZzY29kZS5wcm9jZXNzKXtjb25zdCBlPUwudnNjb2RlLnByb2Nlc3M7X2U9e2dldCBwbGF0Zm9ybSgpe3JldHVybiBlLnBsYXRmb3JtfSxnZXQgYXJjaCgpe3JldHVybiBlLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gZS5lbnZ9LGN3ZDooKT0+ZS5jd2QoKX19ZWxzZSBfZT0idW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3M/e2dldCBwbGF0Zm9ybSgpe3JldHVybiBwcm9jZXNzLnBsYXRmb3JtfSxnZXQgYXJjaCgpe3JldHVybiBwcm9jZXNzLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gcHJvY2Vzcy5lbnZ9LGN3ZDooKT0+cHJvY2Vzcy5lbnYuVlNDT0RFX0NXRHx8cHJvY2Vzcy5jd2QoKX06e2dldCBwbGF0Zm9ybSgpe3JldHVybiBNPyJ3aW4zMiI6Uj8iZGFyd2luIjoibGludXgifSxnZXQgYXJjaCgpe30sZ2V0IGVudigpe3JldHVybnt9fSxjd2Q6KCk9PiIvIn07Y29uc3QgdmU9X2UuY3dkLHllPV9lLmVudixUZT1fZS5wbGF0Zm9ybSxrZT00NixTZT00NyxDZT05Mix4ZT01ODtjbGFzcyBMZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCxuKXtsZXQgcjsic3RyaW5nIj09dHlwZW9mIHQmJjA9PT10LmluZGV4T2YoIm5vdCAiKT8ocj0ibXVzdCBub3QgYmUiLHQ9dC5yZXBsYWNlKC9ebm90IC8sIiIpKTpyPSJtdXN0IGJlIjtjb25zdCBpPS0xIT09ZS5pbmRleE9mKCIuIik/InByb3BlcnR5IjoiYXJndW1lbnQiO2xldCBhPWBUaGUgIiR7ZX0iICR7aX0gJHtyfSBvZiB0eXBlICR7dH1gO2ErPSIuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgbixzdXBlcihhKSx0aGlzLmNvZGU9IkVSUl9JTlZBTElEX0FSR19UWVBFIn19ZnVuY3Rpb24gRWUoZSx0KXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IExlKHQsInN0cmluZyIsZSl9ZnVuY3Rpb24gQWUoZSl7cmV0dXJuIGU9PT1TZXx8ZT09PUNlfWZ1bmN0aW9uIE1lKGUpe3JldHVybiBlPT09U2V9ZnVuY3Rpb24gUmUoZSl7cmV0dXJuIGU+PTY1JiZlPD05MHx8ZT49OTcmJmU8PTEyMn1mdW5jdGlvbiBJZShlLHQsbixyKXtsZXQgaT0iIixhPTAsbz0tMSxzPTAsbD0wO2ZvcihsZXQgYz0wO2M8PWUubGVuZ3RoOysrYyl7aWYoYzxlLmxlbmd0aClsPWUuY2hhckNvZGVBdChjKTtlbHNle2lmKHIobCkpYnJlYWs7bD1TZX1pZihyKGwpKXtpZihvPT09Yy0xfHwxPT09cyk7ZWxzZSBpZigyPT09cyl7aWYoaS5sZW5ndGg8Mnx8MiE9PWF8fGkuY2hhckNvZGVBdChpLmxlbmd0aC0xKSE9PWtlfHxpLmNoYXJDb2RlQXQoaS5sZW5ndGgtMikhPT1rZSl7aWYoaS5sZW5ndGg+Mil7Y29uc3QgZT1pLmxhc3RJbmRleE9mKG4pOy0xPT09ZT8oaT0iIixhPTApOihpPWkuc2xpY2UoMCxlKSxhPWkubGVuZ3RoLTEtaS5sYXN0SW5kZXhPZihuKSksbz1jLHM9MDtjb250aW51ZX1pZigwIT09aS5sZW5ndGgpe2k9IiIsYT0wLG89YyxzPTA7Y29udGludWV9fXQmJihpKz1pLmxlbmd0aD4wP2Ake259Li5gOiIuLiIsYT0yKX1lbHNlIGkubGVuZ3RoPjA/aSs9YCR7bn0ke2Uuc2xpY2UobysxLGMpfWA6aT1lLnNsaWNlKG8rMSxjKSxhPWMtby0xO289YyxzPTB9ZWxzZSBsPT09a2UmJi0xIT09cz8rK3M6cz0tMX1yZXR1cm4gaX1mdW5jdGlvbiBOZShlLHQpe2lmKG51bGw9PT10fHwib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IExlKCJwYXRoT2JqZWN0IiwiT2JqZWN0Iix0KTtjb25zdCBuPXQuZGlyfHx0LnJvb3Qscj10LmJhc2V8fGAke3QubmFtZXx8IiJ9JHt0LmV4dHx8IiJ9YDtyZXR1cm4gbj9uPT09dC5yb290P2Ake259JHtyfWA6YCR7bn0ke2V9JHtyfWA6cn1jb25zdCBVZT17cmVzb2x2ZSguLi5lKXtsZXQgdD0iIixuPSIiLHI9ITE7Zm9yKGxldCBpPWUubGVuZ3RoLTE7aT49LTE7aS0tKXtsZXQgYTtpZihpPj0wKXtpZihhPWVbaV0sRWUoYSwicGF0aCIpLDA9PT1hLmxlbmd0aCljb250aW51ZX1lbHNlIDA9PT10Lmxlbmd0aD9hPXZlKCk6KGE9eWVbYD0ke3R9YF18fHZlKCksKHZvaWQgMD09PWF8fGEuc2xpY2UoMCwyKS50b0xvd2VyQ2FzZSgpIT09dC50b0xvd2VyQ2FzZSgpJiZhLmNoYXJDb2RlQXQoMik9PT1DZSkmJihhPWAke3R9XFxgKSk7Y29uc3Qgbz1hLmxlbmd0aDtsZXQgcz0wLGw9IiIsYz0hMTtjb25zdCBoPWEuY2hhckNvZGVBdCgwKTtpZigxPT09bylBZShoKSYmKHM9MSxjPSEwKTtlbHNlIGlmKEFlKGgpKWlmKGM9ITAsQWUoYS5jaGFyQ29kZUF0KDEpKSl7bGV0IGU9Mix0PWU7Zm9yKDtlPG8mJiFBZShhLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxvJiZlIT09dCl7Y29uc3Qgbj1hLnNsaWNlKHQsZSk7Zm9yKHQ9ZTtlPG8mJkFlKGEuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPG8mJmUhPT10KXtmb3IodD1lO2U8byYmIUFlKGEuY2hhckNvZGVBdChlKSk7KWUrKztlIT09byYmZT09PXR8fChsPWBcXFxcJHtufVxcJHthLnNsaWNlKHQsZSl9YCxzPWUpfX19ZWxzZSBzPTE7ZWxzZSBSZShoKSYmYS5jaGFyQ29kZUF0KDEpPT09eGUmJihsPWEuc2xpY2UoMCwyKSxzPTIsbz4yJiZBZShhLmNoYXJDb2RlQXQoMikpJiYoYz0hMCxzPTMpKTtpZihsLmxlbmd0aD4wKWlmKHQubGVuZ3RoPjApe2lmKGwudG9Mb3dlckNhc2UoKSE9PXQudG9Mb3dlckNhc2UoKSljb250aW51ZX1lbHNlIHQ9bDtpZihyKXtpZih0Lmxlbmd0aD4wKWJyZWFrfWVsc2UgaWYobj1gJHthLnNsaWNlKHMpfVxcJHtufWAscj1jLGMmJnQubGVuZ3RoPjApYnJlYWt9cmV0dXJuIG49SWUobiwhciwiXFwiLEFlKSxyP2Ake3R9XFwke259YDpgJHt0fSR7bn1gfHwiLiJ9LG5vcm1hbGl6ZShlKXtFZShlLCJwYXRoIik7Y29uc3QgdD1lLmxlbmd0aDtpZigwPT09dClyZXR1cm4iLiI7bGV0IG4scj0wLGk9ITE7Y29uc3QgYT1lLmNoYXJDb2RlQXQoMCk7aWYoMT09PXQpcmV0dXJuIE1lKGEpPyJcXCI6ZTtpZihBZShhKSlpZihpPSEwLEFlKGUuY2hhckNvZGVBdCgxKSkpe2xldCBpPTIsYT1pO2Zvcig7aTx0JiYhQWUoZS5jaGFyQ29kZUF0KGkpKTspaSsrO2lmKGk8dCYmaSE9PWEpe2NvbnN0IG89ZS5zbGljZShhLGkpO2ZvcihhPWk7aTx0JiZBZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaTx0JiZpIT09YSl7Zm9yKGE9aTtpPHQmJiFBZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaT09PXQpcmV0dXJuYFxcXFwke299XFwke2Uuc2xpY2UoYSl9XFxgO2khPT1hJiYobj1gXFxcXCR7b31cXCR7ZS5zbGljZShhLGkpfWAscj1pKX19fWVsc2Ugcj0xO2Vsc2UgUmUoYSkmJmUuY2hhckNvZGVBdCgxKT09PXhlJiYobj1lLnNsaWNlKDAsMikscj0yLHQ+MiYmQWUoZS5jaGFyQ29kZUF0KDIpKSYmKGk9ITAscj0zKSk7bGV0IG89cjx0P0llKGUuc2xpY2UociksIWksIlxcIixBZSk6IiI7cmV0dXJuIDAhPT1vLmxlbmd0aHx8aXx8KG89Ii4iKSxvLmxlbmd0aD4wJiZBZShlLmNoYXJDb2RlQXQodC0xKSkmJihvKz0iXFwiKSx2b2lkIDA9PT1uP2k/YFxcJHtvfWA6bzppP2Ake259XFwke299YDpgJHtufSR7b31gfSxpc0Fic29sdXRlKGUpe0VlKGUsInBhdGgiKTtjb25zdCB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiExO2NvbnN0IG49ZS5jaGFyQ29kZUF0KDApO3JldHVybiBBZShuKXx8dD4yJiZSZShuKSYmZS5jaGFyQ29kZUF0KDEpPT09eGUmJkFlKGUuY2hhckNvZGVBdCgyKSl9LGpvaW4oLi4uZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybiIuIjtsZXQgdCxuO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7KytyKXtjb25zdCBpPWVbcl07RWUoaSwicGF0aCIpLGkubGVuZ3RoPjAmJih2b2lkIDA9PT10P3Q9bj1pOnQrPWBcXCR7aX1gKX1pZih2b2lkIDA9PT10KXJldHVybiIuIjtsZXQgcj0hMCxpPTA7aWYoInN0cmluZyI9PXR5cGVvZiBuJiZBZShuLmNoYXJDb2RlQXQoMCkpKXsrK2k7Y29uc3QgZT1uLmxlbmd0aDtlPjEmJkFlKG4uY2hhckNvZGVBdCgxKSkmJigrK2ksZT4yJiYoQWUobi5jaGFyQ29kZUF0KDIpKT8rK2k6cj0hMSkpfWlmKHIpe2Zvcig7aTx0Lmxlbmd0aCYmQWUodC5jaGFyQ29kZUF0KGkpKTspaSsrO2k+PTImJih0PWBcXCR7dC5zbGljZShpKX1gKX1yZXR1cm4gVWUubm9ybWFsaXplKHQpfSxyZWxhdGl2ZShlLHQpe2lmKEVlKGUsImZyb20iKSxFZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2NvbnN0IG49VWUucmVzb2x2ZShlKSxyPVVlLnJlc29sdmUodCk7aWYobj09PXIpcmV0dXJuIiI7aWYoKGU9bi50b0xvd2VyQ2FzZSgpKT09PSh0PXIudG9Mb3dlckNhc2UoKSkpcmV0dXJuIiI7bGV0IGk9MDtmb3IoO2k8ZS5sZW5ndGgmJmUuY2hhckNvZGVBdChpKT09PUNlOylpKys7bGV0IGE9ZS5sZW5ndGg7Zm9yKDthLTE+aSYmZS5jaGFyQ29kZUF0KGEtMSk9PT1DZTspYS0tO2NvbnN0IG89YS1pO2xldCBzPTA7Zm9yKDtzPHQubGVuZ3RoJiZ0LmNoYXJDb2RlQXQocyk9PT1DZTspcysrO2xldCBsPXQubGVuZ3RoO2Zvcig7bC0xPnMmJnQuY2hhckNvZGVBdChsLTEpPT09Q2U7KWwtLTtjb25zdCBjPWwtcyxoPW88Yz9vOmM7bGV0IGQ9LTEsdT0wO2Zvcig7dTxoO3UrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoaSt1KTtpZihuIT09dC5jaGFyQ29kZUF0KHMrdSkpYnJlYWs7bj09PUNlJiYoZD11KX1pZih1IT09aCl7aWYoLTE9PT1kKXJldHVybiByfWVsc2V7aWYoYz5oKXtpZih0LmNoYXJDb2RlQXQocyt1KT09PUNlKXJldHVybiByLnNsaWNlKHMrdSsxKTtpZigyPT09dSlyZXR1cm4gci5zbGljZShzK3UpfW8+aCYmKGUuY2hhckNvZGVBdChpK3UpPT09Q2U/ZD11OjI9PT11JiYoZD0zKSksLTE9PT1kJiYoZD0wKX1sZXQgcD0iIjtmb3IodT1pK2QrMTt1PD1hOysrdSl1IT09YSYmZS5jaGFyQ29kZUF0KHUpIT09Q2V8fChwKz0wPT09cC5sZW5ndGg/Ii4uIjoiXFwuLiIpO3JldHVybiBzKz1kLHAubGVuZ3RoPjA/YCR7cH0ke3Iuc2xpY2UocyxsKX1gOihyLmNoYXJDb2RlQXQocyk9PT1DZSYmKytzLHIuc2xpY2UocyxsKSl9LHRvTmFtZXNwYWNlZFBhdGgoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBlO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4iIjtjb25zdCB0PVVlLnJlc29sdmUoZSk7aWYodC5sZW5ndGg8PTIpcmV0dXJuIGU7aWYodC5jaGFyQ29kZUF0KDApPT09Q2Upe2lmKHQuY2hhckNvZGVBdCgxKT09PUNlKXtjb25zdCBlPXQuY2hhckNvZGVBdCgyKTtpZig2MyE9PWUmJmUhPT1rZSlyZXR1cm5gXFxcXD9cXFVOQ1xcJHt0LnNsaWNlKDIpfWB9fWVsc2UgaWYoUmUodC5jaGFyQ29kZUF0KDApKSYmdC5jaGFyQ29kZUF0KDEpPT09eGUmJnQuY2hhckNvZGVBdCgyKT09PUNlKXJldHVybmBcXFxcP1xcJHt0fWA7cmV0dXJuIGV9LGRpcm5hbWUoZSl7RWUoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIi4iO2xldCBuPS0xLHI9MDtjb25zdCBpPWUuY2hhckNvZGVBdCgwKTtpZigxPT09dClyZXR1cm4gQWUoaSk/ZToiLiI7aWYoQWUoaSkpe2lmKG49cj0xLEFlKGUuY2hhckNvZGVBdCgxKSkpe2xldCBpPTIsYT1pO2Zvcig7aTx0JiYhQWUoZS5jaGFyQ29kZUF0KGkpKTspaSsrO2lmKGk8dCYmaSE9PWEpe2ZvcihhPWk7aTx0JiZBZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaTx0JiZpIT09YSl7Zm9yKGE9aTtpPHQmJiFBZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaT09PXQpcmV0dXJuIGU7aSE9PWEmJihuPXI9aSsxKX19fX1lbHNlIFJlKGkpJiZlLmNoYXJDb2RlQXQoMSk9PT14ZSYmKG49dD4yJiZBZShlLmNoYXJDb2RlQXQoMikpPzM6MixyPW4pO2xldCBhPS0xLG89ITA7Zm9yKGxldCBuPXQtMTtuPj1yOy0tbilpZihBZShlLmNoYXJDb2RlQXQobikpKXtpZighbyl7YT1uO2JyZWFrfX1lbHNlIG89ITE7aWYoLTE9PT1hKXtpZigtMT09PW4pcmV0dXJuIi4iO2E9bn1yZXR1cm4gZS5zbGljZSgwLGEpfSxiYXNlbmFtZShlLHQpe3ZvaWQgMCE9PXQmJkVlKHQsImV4dCIpLEVlKGUsInBhdGgiKTtsZXQgbixyPTAsaT0tMSxhPSEwO2lmKGUubGVuZ3RoPj0yJiZSZShlLmNoYXJDb2RlQXQoMCkpJiZlLmNoYXJDb2RlQXQoMSk9PT14ZSYmKHI9Miksdm9pZCAwIT09dCYmdC5sZW5ndGg+MCYmdC5sZW5ndGg8PWUubGVuZ3RoKXtpZih0PT09ZSlyZXR1cm4iIjtsZXQgbz10Lmxlbmd0aC0xLHM9LTE7Zm9yKG49ZS5sZW5ndGgtMTtuPj1yOy0tbil7Y29uc3QgbD1lLmNoYXJDb2RlQXQobik7aWYoQWUobCkpe2lmKCFhKXtyPW4rMTticmVha319ZWxzZS0xPT09cyYmKGE9ITEscz1uKzEpLG8+PTAmJihsPT09dC5jaGFyQ29kZUF0KG8pPy0xPT0tLW8mJihpPW4pOihvPS0xLGk9cykpfXJldHVybiByPT09aT9pPXM6LTE9PT1pJiYoaT1lLmxlbmd0aCksZS5zbGljZShyLGkpfWZvcihuPWUubGVuZ3RoLTE7bj49cjstLW4paWYoQWUoZS5jaGFyQ29kZUF0KG4pKSl7aWYoIWEpe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1pJiYoYT0hMSxpPW4rMSk7cmV0dXJuLTE9PT1pPyIiOmUuc2xpY2UocixpKX0sZXh0bmFtZShlKXtFZShlLCJwYXRoIik7bGV0IHQ9MCxuPS0xLHI9MCxpPS0xLGE9ITAsbz0wO2UubGVuZ3RoPj0yJiZlLmNoYXJDb2RlQXQoMSk9PT14ZSYmUmUoZS5jaGFyQ29kZUF0KDApKSYmKHQ9cj0yKTtmb3IobGV0IHM9ZS5sZW5ndGgtMTtzPj10Oy0tcyl7Y29uc3QgdD1lLmNoYXJDb2RlQXQocyk7aWYoQWUodCkpe2lmKCFhKXtyPXMrMTticmVha319ZWxzZS0xPT09aSYmKGE9ITEsaT1zKzEpLHQ9PT1rZT8tMT09PW4/bj1zOjEhPT1vJiYobz0xKTotMSE9PW4mJihvPS0xKX1yZXR1cm4tMT09PW58fC0xPT09aXx8MD09PW98fDE9PT1vJiZuPT09aS0xJiZuPT09cisxPyIiOmUuc2xpY2UobixpKX0sZm9ybWF0Ok5lLmJpbmQobnVsbCwiXFwiKSxwYXJzZShlKXtFZShlLCJwYXRoIik7Y29uc3QgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PWUubGVuZ3RoKXJldHVybiB0O2NvbnN0IG49ZS5sZW5ndGg7bGV0IHI9MCxpPWUuY2hhckNvZGVBdCgwKTtpZigxPT09bilyZXR1cm4gQWUoaSk/KHQucm9vdD10LmRpcj1lLHQpOih0LmJhc2U9dC5uYW1lPWUsdCk7aWYoQWUoaSkpe2lmKHI9MSxBZShlLmNoYXJDb2RlQXQoMSkpKXtsZXQgdD0yLGk9dDtmb3IoO3Q8biYmIUFlKGUuY2hhckNvZGVBdCh0KSk7KXQrKztpZih0PG4mJnQhPT1pKXtmb3IoaT10O3Q8biYmQWUoZS5jaGFyQ29kZUF0KHQpKTspdCsrO2lmKHQ8biYmdCE9PWkpe2ZvcihpPXQ7dDxuJiYhQWUoZS5jaGFyQ29kZUF0KHQpKTspdCsrO3Q9PT1uP3I9dDp0IT09aSYmKHI9dCsxKX19fX1lbHNlIGlmKFJlKGkpJiZlLmNoYXJDb2RlQXQoMSk9PT14ZSl7aWYobjw9MilyZXR1cm4gdC5yb290PXQuZGlyPWUsdDtpZihyPTIsQWUoZS5jaGFyQ29kZUF0KDIpKSl7aWYoMz09PW4pcmV0dXJuIHQucm9vdD10LmRpcj1lLHQ7cj0zfX1yPjAmJih0LnJvb3Q9ZS5zbGljZSgwLHIpKTtsZXQgYT0tMSxvPXIscz0tMSxsPSEwLGM9ZS5sZW5ndGgtMSxoPTA7Zm9yKDtjPj1yOy0tYylpZihpPWUuY2hhckNvZGVBdChjKSxBZShpKSl7aWYoIWwpe289YysxO2JyZWFrfX1lbHNlLTE9PT1zJiYobD0hMSxzPWMrMSksaT09PWtlPy0xPT09YT9hPWM6MSE9PWgmJihoPTEpOi0xIT09YSYmKGg9LTEpO3JldHVybi0xIT09cyYmKC0xPT09YXx8MD09PWh8fDE9PT1oJiZhPT09cy0xJiZhPT09bysxP3QuYmFzZT10Lm5hbWU9ZS5zbGljZShvLHMpOih0Lm5hbWU9ZS5zbGljZShvLGEpLHQuYmFzZT1lLnNsaWNlKG8scyksdC5leHQ9ZS5zbGljZShhLHMpKSksdC5kaXI9bz4wJiZvIT09cj9lLnNsaWNlKDAsby0xKTp0LnJvb3QsdH0sc2VwOiJcXCIsZGVsaW1pdGVyOiI7Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9LEhlPXtyZXNvbHZlKC4uLmUpe2xldCB0PSIiLG49ITE7Zm9yKGxldCByPWUubGVuZ3RoLTE7cj49LTEmJiFuO3ItLSl7Y29uc3QgaT1yPj0wP2Vbcl06dmUoKTtFZShpLCJwYXRoIiksMCE9PWkubGVuZ3RoJiYodD1gJHtpfS8ke3R9YCxuPWkuY2hhckNvZGVBdCgwKT09PVNlKX1yZXR1cm4gdD1JZSh0LCFuLCIvIixNZSksbj9gLyR7dH1gOnQubGVuZ3RoPjA/dDoiLiJ9LG5vcm1hbGl6ZShlKXtpZihFZShlLCJwYXRoIiksMD09PWUubGVuZ3RoKXJldHVybiIuIjtjb25zdCB0PWUuY2hhckNvZGVBdCgwKT09PVNlLG49ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpPT09U2U7cmV0dXJuIDA9PT0oZT1JZShlLCF0LCIvIixNZSkpLmxlbmd0aD90PyIvIjpuPyIuLyI6Ii4iOihuJiYoZSs9Ii8iKSx0P2AvJHtlfWA6ZSl9LGlzQWJzb2x1dGU6ZT0+KEVlKGUsInBhdGgiKSxlLmxlbmd0aD4wJiZlLmNoYXJDb2RlQXQoMCk9PT1TZSksam9pbiguLi5lKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2xldCB0O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7KytuKXtjb25zdCByPWVbbl07RWUociwicGF0aCIpLHIubGVuZ3RoPjAmJih2b2lkIDA9PT10P3Q9cjp0Kz1gLyR7cn1gKX1yZXR1cm4gdm9pZCAwPT09dD8iLiI6SGUubm9ybWFsaXplKHQpfSxyZWxhdGl2ZShlLHQpe2lmKEVlKGUsImZyb20iKSxFZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2lmKChlPUhlLnJlc29sdmUoZSkpPT09KHQ9SGUucmVzb2x2ZSh0KSkpcmV0dXJuIiI7Y29uc3Qgbj1lLmxlbmd0aCxyPW4tMSxpPXQubGVuZ3RoLTEsYT1yPGk/cjppO2xldCBvPS0xLHM9MDtmb3IoO3M8YTtzKyspe2NvbnN0IG49ZS5jaGFyQ29kZUF0KDErcyk7aWYobiE9PXQuY2hhckNvZGVBdCgxK3MpKWJyZWFrO249PT1TZSYmKG89cyl9aWYocz09PWEpaWYoaT5hKXtpZih0LmNoYXJDb2RlQXQoMStzKT09PVNlKXJldHVybiB0LnNsaWNlKDErcysxKTtpZigwPT09cylyZXR1cm4gdC5zbGljZSgxK3MpfWVsc2Ugcj5hJiYoZS5jaGFyQ29kZUF0KDErcyk9PT1TZT9vPXM6MD09PXMmJihvPTApKTtsZXQgbD0iIjtmb3Iocz0xK28rMTtzPD1uOysrcylzIT09biYmZS5jaGFyQ29kZUF0KHMpIT09U2V8fChsKz0wPT09bC5sZW5ndGg/Ii4uIjoiLy4uIik7cmV0dXJuYCR7bH0ke3Quc2xpY2UoMStvKX1gfSx0b05hbWVzcGFjZWRQYXRoOmU9PmUsZGlybmFtZShlKXtpZihFZShlLCJwYXRoIiksMD09PWUubGVuZ3RoKXJldHVybiIuIjtjb25zdCB0PWUuY2hhckNvZGVBdCgwKT09PVNlO2xldCBuPS0xLHI9ITA7Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MTstLXQpaWYoZS5jaGFyQ29kZUF0KHQpPT09U2Upe2lmKCFyKXtuPXQ7YnJlYWt9fWVsc2Ugcj0hMTtyZXR1cm4tMT09PW4/dD8iLyI6Ii4iOnQmJjE9PT1uPyIvLyI6ZS5zbGljZSgwLG4pfSxiYXNlbmFtZShlLHQpe3ZvaWQgMCE9PXQmJkVlKHQsImV4dCIpLEVlKGUsInBhdGgiKTtsZXQgbixyPTAsaT0tMSxhPSEwO2lmKHZvaWQgMCE9PXQmJnQubGVuZ3RoPjAmJnQubGVuZ3RoPD1lLmxlbmd0aCl7aWYodD09PWUpcmV0dXJuIiI7bGV0IG89dC5sZW5ndGgtMSxzPS0xO2ZvcihuPWUubGVuZ3RoLTE7bj49MDstLW4pe2NvbnN0IGw9ZS5jaGFyQ29kZUF0KG4pO2lmKGw9PT1TZSl7aWYoIWEpe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1zJiYoYT0hMSxzPW4rMSksbz49MCYmKGw9PT10LmNoYXJDb2RlQXQobyk/LTE9PS0tbyYmKGk9bik6KG89LTEsaT1zKSl9cmV0dXJuIHI9PT1pP2k9czotMT09PWkmJihpPWUubGVuZ3RoKSxlLnNsaWNlKHIsaSl9Zm9yKG49ZS5sZW5ndGgtMTtuPj0wOy0tbilpZihlLmNoYXJDb2RlQXQobik9PT1TZSl7aWYoIWEpe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1pJiYoYT0hMSxpPW4rMSk7cmV0dXJuLTE9PT1pPyIiOmUuc2xpY2UocixpKX0sZXh0bmFtZShlKXtFZShlLCJwYXRoIik7bGV0IHQ9LTEsbj0wLHI9LTEsaT0hMCxhPTA7Zm9yKGxldCBvPWUubGVuZ3RoLTE7bz49MDstLW8pe2NvbnN0IHM9ZS5jaGFyQ29kZUF0KG8pO2lmKHMhPT1TZSktMT09PXImJihpPSExLHI9bysxKSxzPT09a2U/LTE9PT10P3Q9bzoxIT09YSYmKGE9MSk6LTEhPT10JiYoYT0tMSk7ZWxzZSBpZighaSl7bj1vKzE7YnJlYWt9fXJldHVybi0xPT09dHx8LTE9PT1yfHwwPT09YXx8MT09PWEmJnQ9PT1yLTEmJnQ9PT1uKzE/IiI6ZS5zbGljZSh0LHIpfSxmb3JtYXQ6TmUuYmluZChudWxsLCIvIikscGFyc2UoZSl7RWUoZSwicGF0aCIpO2NvbnN0IHQ9e3Jvb3Q6IiIsZGlyOiIiLGJhc2U6IiIsZXh0OiIiLG5hbWU6IiJ9O2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gdDtjb25zdCBuPWUuY2hhckNvZGVBdCgwKT09PVNlO2xldCByO24/KHQucm9vdD0iLyIscj0xKTpyPTA7bGV0IGk9LTEsYT0wLG89LTEscz0hMCxsPWUubGVuZ3RoLTEsYz0wO2Zvcig7bD49cjstLWwpe2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KGwpO2lmKHQhPT1TZSktMT09PW8mJihzPSExLG89bCsxKSx0PT09a2U/LTE9PT1pP2k9bDoxIT09YyYmKGM9MSk6LTEhPT1pJiYoYz0tMSk7ZWxzZSBpZighcyl7YT1sKzE7YnJlYWt9fWlmKC0xIT09byl7Y29uc3Qgcj0wPT09YSYmbj8xOmE7LTE9PT1pfHwwPT09Y3x8MT09PWMmJmk9PT1vLTEmJmk9PT1hKzE/dC5iYXNlPXQubmFtZT1lLnNsaWNlKHIsbyk6KHQubmFtZT1lLnNsaWNlKHIsaSksdC5iYXNlPWUuc2xpY2UocixvKSx0LmV4dD1lLnNsaWNlKGksbykpfXJldHVybiBhPjA/dC5kaXI9ZS5zbGljZSgwLGEtMSk6biYmKHQuZGlyPSIvIiksdH0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH07SGUud2luMzI9VWUud2luMzI9VWUsSGUucG9zaXg9VWUucG9zaXg9SGUsIndpbjMyIj09PVRlP1VlLm5vcm1hbGl6ZTpIZS5ub3JtYWxpemUsIndpbjMyIj09PVRlP1VlLnJlc29sdmU6SGUucmVzb2x2ZSwid2luMzIiPT09VGU/VWUucmVsYXRpdmU6SGUucmVsYXRpdmUsIndpbjMyIj09PVRlP1VlLmRpcm5hbWU6SGUuZGlybmFtZSwid2luMzIiPT09VGU/VWUuYmFzZW5hbWU6SGUuYmFzZW5hbWUsIndpbjMyIj09PVRlP1VlLmV4dG5hbWU6SGUuZXh0bmFtZSwid2luMzIiPT09VGU/VWUuc2VwOkhlLnNlcDtjb25zdCB6ZT0vXlx3W1x3XGQrLi1dKiQvLERlPS9eXC8vLFdlPS9eXC9cLy87ZnVuY3Rpb24gT2UoZSx0KXtpZighZS5zY2hlbWUmJnQpdGhyb3cgbmV3IEVycm9yKGBbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIiR7ZS5hdXRob3JpdHl9IiwgcGF0aDogIiR7ZS5wYXRofSIsIHF1ZXJ5OiAiJHtlLnF1ZXJ5fSIsIGZyYWdtZW50OiAiJHtlLmZyYWdtZW50fSJ9YCk7aWYoZS5zY2hlbWUmJiF6ZS50ZXN0KGUuc2NoZW1lKSl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IFNjaGVtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIik7aWYoZS5wYXRoKWlmKGUuYXV0aG9yaXR5KXtpZighRGUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYoV2UudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfWNvbnN0IFBlPSIiLHFlPSIvIixGZT0vXigoW146Lz8jXSs/KTopPyhcL1wvKFteLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/LztsZXQgVmU9Y2xhc3MgZXtjb25zdHJ1Y3RvcihlLHQsbixyLGksYT0hMSl7Im9iamVjdCI9PXR5cGVvZiBlPyh0aGlzLnNjaGVtZT1lLnNjaGVtZXx8UGUsdGhpcy5hdXRob3JpdHk9ZS5hdXRob3JpdHl8fFBlLHRoaXMucGF0aD1lLnBhdGh8fFBlLHRoaXMucXVlcnk9ZS5xdWVyeXx8UGUsdGhpcy5mcmFnbWVudD1lLmZyYWdtZW50fHxQZSk6KHRoaXMuc2NoZW1lPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV8fHQ/ZToiZmlsZSJ9KGUsYSksdGhpcy5hdXRob3JpdHk9dHx8UGUsdGhpcy5wYXRoPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UiaHR0cHMiOmNhc2UiaHR0cCI6Y2FzZSJmaWxlIjp0P3RbMF0hPT1xZSYmKHQ9cWUrdCk6dD1xZX1yZXR1cm4gdH0odGhpcy5zY2hlbWUsbnx8UGUpLHRoaXMucXVlcnk9cnx8UGUsdGhpcy5mcmFnbWVudD1pfHxQZSxPZSh0aGlzLGEpKX1zdGF0aWMgaXNVcmkodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBlfHwhIXQmJigic3RyaW5nIj09dHlwZW9mIHQuYXV0aG9yaXR5JiYic3RyaW5nIj09dHlwZW9mIHQuZnJhZ21lbnQmJiJzdHJpbmciPT10eXBlb2YgdC5wYXRoJiYic3RyaW5nIj09dHlwZW9mIHQucXVlcnkmJiJzdHJpbmciPT10eXBlb2YgdC5zY2hlbWUmJiJzdHJpbmciPT10eXBlb2YgdC5mc1BhdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LndpdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnRvU3RyaW5nKX1nZXQgZnNQYXRoKCl7cmV0dXJuIEplKHRoaXMsITEpfXdpdGgoZSl7aWYoIWUpcmV0dXJuIHRoaXM7bGV0e3NjaGVtZTp0LGF1dGhvcml0eTpuLHBhdGg6cixxdWVyeTppLGZyYWdtZW50OmF9PWU7cmV0dXJuIHZvaWQgMD09PXQ/dD10aGlzLnNjaGVtZTpudWxsPT09dCYmKHQ9UGUpLHZvaWQgMD09PW4/bj10aGlzLmF1dGhvcml0eTpudWxsPT09biYmKG49UGUpLHZvaWQgMD09PXI/cj10aGlzLnBhdGg6bnVsbD09PXImJihyPVBlKSx2b2lkIDA9PT1pP2k9dGhpcy5xdWVyeTpudWxsPT09aSYmKGk9UGUpLHZvaWQgMD09PWE/YT10aGlzLmZyYWdtZW50Om51bGw9PT1hJiYoYT1QZSksdD09PXRoaXMuc2NoZW1lJiZuPT09dGhpcy5hdXRob3JpdHkmJnI9PT10aGlzLnBhdGgmJmk9PT10aGlzLnF1ZXJ5JiZhPT09dGhpcy5mcmFnbWVudD90aGlzOm5ldyBLZSh0LG4scixpLGEpfXN0YXRpYyBwYXJzZShlLHQ9ITEpe2NvbnN0IG49RmUuZXhlYyhlKTtyZXR1cm4gbj9uZXcgS2UoblsyXXx8UGUsWmUobls0XXx8UGUpLFplKG5bNV18fFBlKSxaZShuWzddfHxQZSksWmUobls5XXx8UGUpLHQpOm5ldyBLZShQZSxQZSxQZSxQZSxQZSl9c3RhdGljIGZpbGUoZSl7bGV0IHQ9UGU7aWYoTSYmKGU9ZS5yZXBsYWNlKC9cXC9nLHFlKSksZVswXT09PXFlJiZlWzFdPT09cWUpe2NvbnN0IG49ZS5pbmRleE9mKHFlLDIpOy0xPT09bj8odD1lLnN1YnN0cmluZygyKSxlPXFlKToodD1lLnN1YnN0cmluZygyLG4pLGU9ZS5zdWJzdHJpbmcobil8fHFlKX1yZXR1cm4gbmV3IEtlKCJmaWxlIix0LGUsUGUsUGUpfXN0YXRpYyBmcm9tKGUpe2NvbnN0IHQ9bmV3IEtlKGUuc2NoZW1lLGUuYXV0aG9yaXR5LGUucGF0aCxlLnF1ZXJ5LGUuZnJhZ21lbnQpO3JldHVybiBPZSh0LCEwKSx0fXN0YXRpYyBqb2luUGF0aCh0LC4uLm4pe2lmKCF0LnBhdGgpdGhyb3cgbmV3IEVycm9yKCJbVXJpRXJyb3JdOiBjYW5ub3QgY2FsbCBqb2luUGF0aCBvbiBVUkkgd2l0aG91dCBwYXRoIik7bGV0IHI7cmV0dXJuIHI9TSYmImZpbGUiPT09dC5zY2hlbWU/ZS5maWxlKFVlLmpvaW4oSmUodCwhMCksLi4ubikpLnBhdGg6SGUuam9pbih0LnBhdGgsLi4ubiksdC53aXRoKHtwYXRoOnJ9KX10b1N0cmluZyhlPSExKXtyZXR1cm4gWGUodGhpcyxlKX10b0pTT04oKXtyZXR1cm4gdGhpc31zdGF0aWMgcmV2aXZlKHQpe2lmKHQpe2lmKHQgaW5zdGFuY2VvZiBlKXJldHVybiB0O3tjb25zdCBlPW5ldyBLZSh0KTtyZXR1cm4gZS5fZm9ybWF0dGVkPXQuZXh0ZXJuYWwsZS5fZnNQYXRoPXQuX3NlcD09PUJlP3QuZnNQYXRoOm51bGwsZX19cmV0dXJuIHR9fTtjb25zdCBCZT1NPzE6dm9pZCAwO2NsYXNzIEtlIGV4dGVuZHMgVmV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2Zvcm1hdHRlZD1udWxsLHRoaXMuX2ZzUGF0aD1udWxsfWdldCBmc1BhdGgoKXtyZXR1cm4gdGhpcy5fZnNQYXRofHwodGhpcy5fZnNQYXRoPUplKHRoaXMsITEpKSx0aGlzLl9mc1BhdGh9dG9TdHJpbmcoZT0hMSl7cmV0dXJuIGU/WGUodGhpcywhMCk6KHRoaXMuX2Zvcm1hdHRlZHx8KHRoaXMuX2Zvcm1hdHRlZD1YZSh0aGlzLCExKSksdGhpcy5fZm9ybWF0dGVkKX10b0pTT04oKXtjb25zdCBlPXskbWlkOjF9O3JldHVybiB0aGlzLl9mc1BhdGgmJihlLmZzUGF0aD10aGlzLl9mc1BhdGgsZS5fc2VwPUJlKSx0aGlzLl9mb3JtYXR0ZWQmJihlLmV4dGVybmFsPXRoaXMuX2Zvcm1hdHRlZCksdGhpcy5wYXRoJiYoZS5wYXRoPXRoaXMucGF0aCksdGhpcy5zY2hlbWUmJihlLnNjaGVtZT10aGlzLnNjaGVtZSksdGhpcy5hdXRob3JpdHkmJihlLmF1dGhvcml0eT10aGlzLmF1dGhvcml0eSksdGhpcy5xdWVyeSYmKGUucXVlcnk9dGhpcy5xdWVyeSksdGhpcy5mcmFnbWVudCYmKGUuZnJhZ21lbnQ9dGhpcy5mcmFnbWVudCksZX19Y29uc3QgamU9ezU4OiIlM0EiLDQ3OiIlMkYiLDYzOiIlM0YiLDM1OiIlMjMiLDkxOiIlNUIiLDkzOiIlNUQiLDY0OiIlNDAiLDMzOiIlMjEiLDM2OiIlMjQiLDM4OiIlMjYiLDM5OiIlMjciLDQwOiIlMjgiLDQxOiIlMjkiLDQyOiIlMkEiLDQzOiIlMkIiLDQ0OiIlMkMiLDU5OiIlM0IiLDYxOiIlM0QiLDMyOiIlMjAifTtmdW5jdGlvbiBHZShlLHQpe2xldCBuLHI9LTE7Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspe2NvbnN0IGE9ZS5jaGFyQ29kZUF0KGkpO2lmKGE+PTk3JiZhPD0xMjJ8fGE+PTY1JiZhPD05MHx8YT49NDgmJmE8PTU3fHw0NT09PWF8fDQ2PT09YXx8OTU9PT1hfHwxMjY9PT1hfHx0JiY0Nz09PWEpLTEhPT1yJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIsaSkpLHI9LTEpLHZvaWQgMCE9PW4mJihuKz1lLmNoYXJBdChpKSk7ZWxzZXt2b2lkIDA9PT1uJiYobj1lLnN1YnN0cigwLGkpKTtjb25zdCB0PWplW2FdO3ZvaWQgMCE9PXQ/KC0xIT09ciYmKG4rPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhyLGkpKSxyPS0xKSxuKz10KTotMT09PXImJihyPWkpfX1yZXR1cm4tMSE9PXImJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocikpKSx2b2lkIDAhPT1uP246ZX1mdW5jdGlvbiAkZShlKXtsZXQgdDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQobik7MzU9PT1yfHw2Mz09PXI/KHZvaWQgMD09PXQmJih0PWUuc3Vic3RyKDAsbikpLHQrPWplW3JdKTp2b2lkIDAhPT10JiYodCs9ZVtuXSl9cmV0dXJuIHZvaWQgMCE9PXQ/dDplfWZ1bmN0aW9uIEplKGUsdCl7bGV0IG47cmV0dXJuIG49ZS5hdXRob3JpdHkmJmUucGF0aC5sZW5ndGg+MSYmImZpbGUiPT09ZS5zY2hlbWU/YC8vJHtlLmF1dGhvcml0eX0ke2UucGF0aH1gOjQ3PT09ZS5wYXRoLmNoYXJDb2RlQXQoMCkmJihlLnBhdGguY2hhckNvZGVBdCgxKT49NjUmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD05MHx8ZS5wYXRoLmNoYXJDb2RlQXQoMSk+PTk3JiZlLnBhdGguY2hhckNvZGVBdCgxKTw9MTIyKSYmNTg9PT1lLnBhdGguY2hhckNvZGVBdCgyKT90P2UucGF0aC5zdWJzdHIoMSk6ZS5wYXRoWzFdLnRvTG93ZXJDYXNlKCkrZS5wYXRoLnN1YnN0cigyKTplLnBhdGgsTSYmKG49bi5yZXBsYWNlKC9cLy9nLCJcXCIpKSxufWZ1bmN0aW9uIFhlKGUsdCl7Y29uc3Qgbj10PyRlOkdlO2xldCByPSIiLHtzY2hlbWU6aSxhdXRob3JpdHk6YSxwYXRoOm8scXVlcnk6cyxmcmFnbWVudDpsfT1lO2lmKGkmJihyKz1pLHIrPSI6IiksKGF8fCJmaWxlIj09PWkpJiYocis9cWUscis9cWUpLGEpe2xldCBlPWEuaW5kZXhPZigiQCIpO2lmKC0xIT09ZSl7Y29uc3QgdD1hLnN1YnN0cigwLGUpO2E9YS5zdWJzdHIoZSsxKSxlPXQuaW5kZXhPZigiOiIpLC0xPT09ZT9yKz1uKHQsITEpOihyKz1uKHQuc3Vic3RyKDAsZSksITEpLHIrPSI6IixyKz1uKHQuc3Vic3RyKGUrMSksITEpKSxyKz0iQCJ9YT1hLnRvTG93ZXJDYXNlKCksZT1hLmluZGV4T2YoIjoiKSwtMT09PWU/cis9bihhLCExKToocis9bihhLnN1YnN0cigwLGUpLCExKSxyKz1hLnN1YnN0cihlKSl9aWYobyl7aWYoby5sZW5ndGg+PTMmJjQ3PT09by5jaGFyQ29kZUF0KDApJiY1OD09PW8uY2hhckNvZGVBdCgyKSl7Y29uc3QgZT1vLmNoYXJDb2RlQXQoMSk7ZT49NjUmJmU8PTkwJiYobz1gLyR7U3RyaW5nLmZyb21DaGFyQ29kZShlKzMyKX06JHtvLnN1YnN0cigzKX1gKX1lbHNlIGlmKG8ubGVuZ3RoPj0yJiY1OD09PW8uY2hhckNvZGVBdCgxKSl7Y29uc3QgZT1vLmNoYXJDb2RlQXQoMCk7ZT49NjUmJmU8PTkwJiYobz1gJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUrMzIpfToke28uc3Vic3RyKDIpfWApfXIrPW4obywhMCl9cmV0dXJuIHMmJihyKz0iPyIscis9bihzLCExKSksbCYmKHIrPSIjIixyKz10P2w6R2UobCwhMSkpLHJ9ZnVuY3Rpb24gWWUoZSl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZSl9Y2F0Y2godCl7cmV0dXJuIGUubGVuZ3RoPjM/ZS5zdWJzdHIoMCwzKStZZShlLnN1YnN0cigzKSk6ZX19Y29uc3QgUWU9LyglWzAtOUEtWmEtel1bMC05QS1aYS16XSkrL2c7ZnVuY3Rpb24gWmUoZSl7cmV0dXJuIGUubWF0Y2goUWUpP2UucmVwbGFjZShRZSwoZT0+WWUoZSkpKTplfWxldCBldD1jbGFzcyBle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5saW5lTnVtYmVyPWUsdGhpcy5jb2x1bW49dH13aXRoKHQ9dGhpcy5saW5lTnVtYmVyLG49dGhpcy5jb2x1bW4pe3JldHVybiB0PT09dGhpcy5saW5lTnVtYmVyJiZuPT09dGhpcy5jb2x1bW4/dGhpczpuZXcgZSh0LG4pfWRlbHRhKGU9MCx0PTApe3JldHVybiB0aGlzLndpdGgodGhpcy5saW5lTnVtYmVyK2UsdGhpcy5jb2x1bW4rdCl9ZXF1YWxzKHQpe3JldHVybiBlLmVxdWFscyh0aGlzLHQpfXN0YXRpYyBlcXVhbHMoZSx0KXtyZXR1cm4hZSYmIXR8fCEhZSYmISF0JiZlLmxpbmVOdW1iZXI9PT10LmxpbmVOdW1iZXImJmUuY29sdW1uPT09dC5jb2x1bW59aXNCZWZvcmUodCl7cmV0dXJuIGUuaXNCZWZvcmUodGhpcyx0KX1zdGF0aWMgaXNCZWZvcmUoZSx0KXtyZXR1cm4gZS5saW5lTnVtYmVyPHQubGluZU51bWJlcnx8ISh0LmxpbmVOdW1iZXI8ZS5saW5lTnVtYmVyKSYmZS5jb2x1bW48dC5jb2x1bW59aXNCZWZvcmVPckVxdWFsKHQpe3JldHVybiBlLmlzQmVmb3JlT3JFcXVhbCh0aGlzLHQpfXN0YXRpYyBpc0JlZm9yZU9yRXF1YWwoZSx0KXtyZXR1cm4gZS5saW5lTnVtYmVyPHQubGluZU51bWJlcnx8ISh0LmxpbmVOdW1iZXI8ZS5saW5lTnVtYmVyKSYmZS5jb2x1bW48PXQuY29sdW1ufXN0YXRpYyBjb21wYXJlKGUsdCl7Y29uc3Qgbj0wfGUubGluZU51bWJlcixyPTB8dC5saW5lTnVtYmVyO2lmKG49PT1yKXtyZXR1cm4oMHxlLmNvbHVtbiktKDB8dC5jb2x1bW4pfXJldHVybiBuLXJ9Y2xvbmUoKXtyZXR1cm4gbmV3IGUodGhpcy5saW5lTnVtYmVyLHRoaXMuY29sdW1uKX10b1N0cmluZygpe3JldHVybiIoIit0aGlzLmxpbmVOdW1iZXIrIiwiK3RoaXMuY29sdW1uKyIpIn1zdGF0aWMgbGlmdCh0KXtyZXR1cm4gbmV3IGUodC5saW5lTnVtYmVyLHQuY29sdW1uKX1zdGF0aWMgaXNJUG9zaXRpb24oZSl7cmV0dXJuIGUmJiJudW1iZXIiPT10eXBlb2YgZS5saW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUuY29sdW1ufX0sdHQ9Y2xhc3MgZXtjb25zdHJ1Y3RvcihlLHQsbixyKXtlPm58fGU9PT1uJiZ0PnI/KHRoaXMuc3RhcnRMaW5lTnVtYmVyPW4sdGhpcy5zdGFydENvbHVtbj1yLHRoaXMuZW5kTGluZU51bWJlcj1lLHRoaXMuZW5kQ29sdW1uPXQpOih0aGlzLnN0YXJ0TGluZU51bWJlcj1lLHRoaXMuc3RhcnRDb2x1bW49dCx0aGlzLmVuZExpbmVOdW1iZXI9bix0aGlzLmVuZENvbHVtbj1yKX1pc0VtcHR5KCl7cmV0dXJuIGUuaXNFbXB0eSh0aGlzKX1zdGF0aWMgaXNFbXB0eShlKXtyZXR1cm4gZS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJmUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbn1jb250YWluc1Bvc2l0aW9uKHQpe3JldHVybiBlLmNvbnRhaW5zUG9zaXRpb24odGhpcyx0KX1zdGF0aWMgY29udGFpbnNQb3NpdGlvbihlLHQpe3JldHVybiEodC5saW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmxpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5saW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuY29sdW1uPGUuc3RhcnRDb2x1bW4pJiYhKHQubGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5jb2x1bW4+ZS5lbmRDb2x1bW4pKX1zdGF0aWMgc3RyaWN0Q29udGFpbnNQb3NpdGlvbihlLHQpe3JldHVybiEodC5saW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmxpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5saW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuY29sdW1uPD1lLnN0YXJ0Q29sdW1uKSYmISh0LmxpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuY29sdW1uPj1lLmVuZENvbHVtbikpfWNvbnRhaW5zUmFuZ2UodCl7cmV0dXJuIGUuY29udGFpbnNSYW5nZSh0aGlzLHQpfXN0YXRpYyBjb250YWluc1JhbmdlKGUsdCl7cmV0dXJuISh0LnN0YXJ0TGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5zdGFydENvbHVtbjxlLnN0YXJ0Q29sdW1uKSYmISh0LmVuZExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPmUuZW5kQ29sdW1uKSkpfXN0cmljdENvbnRhaW5zUmFuZ2UodCl7cmV0dXJuIGUuc3RyaWN0Q29udGFpbnNSYW5nZSh0aGlzLHQpfXN0YXRpYyBzdHJpY3RDb250YWluc1JhbmdlKGUsdCl7cmV0dXJuISh0LnN0YXJ0TGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5zdGFydENvbHVtbjw9ZS5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbj49ZS5lbmRDb2x1bW4pKSl9cGx1c1JhbmdlKHQpe3JldHVybiBlLnBsdXNSYW5nZSh0aGlzLHQpfXN0YXRpYyBwbHVzUmFuZ2UodCxuKXtsZXQgcixpLGEsbztyZXR1cm4gbi5zdGFydExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXI/KHI9bi5zdGFydExpbmVOdW1iZXIsaT1uLnN0YXJ0Q29sdW1uKTpuLnN0YXJ0TGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyPyhyPW4uc3RhcnRMaW5lTnVtYmVyLGk9TWF0aC5taW4obi5zdGFydENvbHVtbix0LnN0YXJ0Q29sdW1uKSk6KHI9dC5zdGFydExpbmVOdW1iZXIsaT10LnN0YXJ0Q29sdW1uKSxuLmVuZExpbmVOdW1iZXI+dC5lbmRMaW5lTnVtYmVyPyhhPW4uZW5kTGluZU51bWJlcixvPW4uZW5kQ29sdW1uKTpuLmVuZExpbmVOdW1iZXI9PT10LmVuZExpbmVOdW1iZXI/KGE9bi5lbmRMaW5lTnVtYmVyLG89TWF0aC5tYXgobi5lbmRDb2x1bW4sdC5lbmRDb2x1bW4pKTooYT10LmVuZExpbmVOdW1iZXIsbz10LmVuZENvbHVtbiksbmV3IGUocixpLGEsbyl9aW50ZXJzZWN0UmFuZ2VzKHQpe3JldHVybiBlLmludGVyc2VjdFJhbmdlcyh0aGlzLHQpfXN0YXRpYyBpbnRlcnNlY3RSYW5nZXModCxuKXtsZXQgcj10LnN0YXJ0TGluZU51bWJlcixpPXQuc3RhcnRDb2x1bW4sYT10LmVuZExpbmVOdW1iZXIsbz10LmVuZENvbHVtbjtjb25zdCBzPW4uc3RhcnRMaW5lTnVtYmVyLGw9bi5zdGFydENvbHVtbixjPW4uZW5kTGluZU51bWJlcixoPW4uZW5kQ29sdW1uO3JldHVybiByPHM/KHI9cyxpPWwpOnI9PT1zJiYoaT1NYXRoLm1heChpLGwpKSxhPmM/KGE9YyxvPWgpOmE9PT1jJiYobz1NYXRoLm1pbihvLGgpKSxyPmF8fHI9PT1hJiZpPm8/bnVsbDpuZXcgZShyLGksYSxvKX1lcXVhbHNSYW5nZSh0KXtyZXR1cm4gZS5lcXVhbHNSYW5nZSh0aGlzLHQpfXN0YXRpYyBlcXVhbHNSYW5nZShlLHQpe3JldHVybiEhZSYmISF0JiZlLnN0YXJ0TGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZlLnN0YXJ0Q29sdW1uPT09dC5zdGFydENvbHVtbiYmZS5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyJiZlLmVuZENvbHVtbj09PXQuZW5kQ29sdW1ufWdldEVuZFBvc2l0aW9uKCl7cmV0dXJuIGUuZ2V0RW5kUG9zaXRpb24odGhpcyl9c3RhdGljIGdldEVuZFBvc2l0aW9uKGUpe3JldHVybiBuZXcgZXQoZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKX1nZXRTdGFydFBvc2l0aW9uKCl7cmV0dXJuIGUuZ2V0U3RhcnRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0U3RhcnRQb3NpdGlvbihlKXtyZXR1cm4gbmV3IGV0KGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLmVuZExpbmVOdW1iZXIrIiwiK3RoaXMuZW5kQ29sdW1uKyJdIn1zZXRFbmRQb3NpdGlvbih0LG4pe3JldHVybiBuZXcgZSh0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uLHQsbil9c2V0U3RhcnRQb3NpdGlvbih0LG4pe3JldHVybiBuZXcgZSh0LG4sdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKX1jb2xsYXBzZVRvU3RhcnQoKXtyZXR1cm4gZS5jb2xsYXBzZVRvU3RhcnQodGhpcyl9c3RhdGljIGNvbGxhcHNlVG9TdGFydCh0KXtyZXR1cm4gbmV3IGUodC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbix0LnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0Q29sdW1uKX1zdGF0aWMgZnJvbVBvc2l0aW9ucyh0LG49dCl7cmV0dXJuIG5ldyBlKHQubGluZU51bWJlcix0LmNvbHVtbixuLmxpbmVOdW1iZXIsbi5jb2x1bW4pfXN0YXRpYyBsaWZ0KHQpe3JldHVybiB0P25ldyBlKHQuc3RhcnRMaW5lTnVtYmVyLHQuc3RhcnRDb2x1bW4sdC5lbmRMaW5lTnVtYmVyLHQuZW5kQ29sdW1uKTpudWxsfXN0YXRpYyBpc0lSYW5nZShlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0TGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0Q29sdW1uJiYibnVtYmVyIj09dHlwZW9mIGUuZW5kTGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLmVuZENvbHVtbn1zdGF0aWMgYXJlSW50ZXJzZWN0aW5nT3JUb3VjaGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48dC5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5lbmRDb2x1bW48ZS5zdGFydENvbHVtbil9c3RhdGljIGFyZUludGVyc2VjdGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48PXQuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPD1lLnN0YXJ0Q29sdW1uKX1zdGF0aWMgY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKGUsdCl7aWYoZSYmdCl7Y29uc3Qgbj0wfGUuc3RhcnRMaW5lTnVtYmVyLHI9MHx0LnN0YXJ0TGluZU51bWJlcjtpZihuPT09cil7Y29uc3Qgbj0wfGUuc3RhcnRDb2x1bW4scj0wfHQuc3RhcnRDb2x1bW47aWYobj09PXIpe2NvbnN0IG49MHxlLmVuZExpbmVOdW1iZXIscj0wfHQuZW5kTGluZU51bWJlcjtpZihuPT09cil7cmV0dXJuKDB8ZS5lbmRDb2x1bW4pLSgwfHQuZW5kQ29sdW1uKX1yZXR1cm4gbi1yfXJldHVybiBuLXJ9cmV0dXJuIG4tcn1yZXR1cm4oZT8xOjApLSh0PzE6MCl9c3RhdGljIGNvbXBhcmVSYW5nZXNVc2luZ0VuZHMoZSx0KXtyZXR1cm4gZS5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyP2UuZW5kQ29sdW1uPT09dC5lbmRDb2x1bW4/ZS5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlcj9lLnN0YXJ0Q29sdW1uLXQuc3RhcnRDb2x1bW46ZS5zdGFydExpbmVOdW1iZXItdC5zdGFydExpbmVOdW1iZXI6ZS5lbmRDb2x1bW4tdC5lbmRDb2x1bW46ZS5lbmRMaW5lTnVtYmVyLXQuZW5kTGluZU51bWJlcn1zdGF0aWMgc3BhbnNNdWx0aXBsZUxpbmVzKGUpe3JldHVybiBlLmVuZExpbmVOdW1iZXI+ZS5zdGFydExpbmVOdW1iZXJ9dG9KU09OKCl7cmV0dXJuIHRoaXN9fTtmdW5jdGlvbiBudChlLHQsbixyKXtyZXR1cm4gbmV3IHdlKGUsdCxuKS5Db21wdXRlRGlmZihyKX1jbGFzcyBydHtjb25zdHJ1Y3RvcihlKXtjb25zdCB0PVtdLG49W107Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXRbcl09bHQoZVtyXSwxKSxuW3JdPWN0KGVbcl0sMSk7dGhpcy5saW5lcz1lLHRoaXMuX3N0YXJ0Q29sdW1ucz10LHRoaXMuX2VuZENvbHVtbnM9bn1nZXRFbGVtZW50cygpe2NvbnN0IGU9W107Zm9yKGxldCB0PTAsbj10aGlzLmxpbmVzLmxlbmd0aDt0PG47dCsrKWVbdF09dGhpcy5saW5lc1t0XS5zdWJzdHJpbmcodGhpcy5fc3RhcnRDb2x1bW5zW3RdLTEsdGhpcy5fZW5kQ29sdW1uc1t0XS0xKTtyZXR1cm4gZX1nZXRTdHJpY3RFbGVtZW50KGUpe3JldHVybiB0aGlzLmxpbmVzW2VdfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gZSsxfWdldEVuZExpbmVOdW1iZXIoZSl7cmV0dXJuIGUrMX1jcmVhdGVDaGFyU2VxdWVuY2UoZSx0LG4pe2NvbnN0IHI9W10saT1bXSxhPVtdO2xldCBvPTA7Zm9yKGxldCBzPXQ7czw9bjtzKyspe2NvbnN0IHQ9dGhpcy5saW5lc1tzXSxsPWU/dGhpcy5fc3RhcnRDb2x1bW5zW3NdOjEsYz1lP3RoaXMuX2VuZENvbHVtbnNbc106dC5sZW5ndGgrMTtmb3IobGV0IGU9bDtlPGM7ZSsrKXJbb109dC5jaGFyQ29kZUF0KGUtMSksaVtvXT1zKzEsYVtvXT1lLG8rKzshZSYmczxuJiYocltvXT0xMCxpW29dPXMrMSxhW29dPXQubGVuZ3RoKzEsbysrKX1yZXR1cm4gbmV3IGl0KHIsaSxhKX19Y2xhc3MgaXR7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuX2NoYXJDb2Rlcz1lLHRoaXMuX2xpbmVOdW1iZXJzPXQsdGhpcy5fY29sdW1ucz1ufXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuX2NoYXJDb2Rlcy5tYXAoKChlLHQpPT4oMTA9PT1lPyJcXG4iOlN0cmluZy5mcm9tQ2hhckNvZGUoZSkpK2AtKCR7dGhpcy5fbGluZU51bWJlcnNbdF19LCR7dGhpcy5fY29sdW1uc1t0XX0pYCkpLmpvaW4oIiwgIikrIl0ifV9hc3NlcnRJbmRleChlLHQpe2lmKGU8MHx8ZT49dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIGluZGV4Iil9Z2V0RWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fY2hhckNvZGVzfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gZT4wJiZlPT09dGhpcy5fbGluZU51bWJlcnMubGVuZ3RoP3RoaXMuZ2V0RW5kTGluZU51bWJlcihlLTEpOih0aGlzLl9hc3NlcnRJbmRleChlLHRoaXMuX2xpbmVOdW1iZXJzKSx0aGlzLl9saW5lTnVtYmVyc1tlXSl9Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4tMT09PWU/dGhpcy5nZXRTdGFydExpbmVOdW1iZXIoZSsxKToodGhpcy5fYXNzZXJ0SW5kZXgoZSx0aGlzLl9saW5lTnVtYmVycyksMTA9PT10aGlzLl9jaGFyQ29kZXNbZV0/dGhpcy5fbGluZU51bWJlcnNbZV0rMTp0aGlzLl9saW5lTnVtYmVyc1tlXSl9Z2V0U3RhcnRDb2x1bW4oZSl7cmV0dXJuIGU+MCYmZT09PXRoaXMuX2NvbHVtbnMubGVuZ3RoP3RoaXMuZ2V0RW5kQ29sdW1uKGUtMSk6KHRoaXMuX2Fzc2VydEluZGV4KGUsdGhpcy5fY29sdW1ucyksdGhpcy5fY29sdW1uc1tlXSl9Z2V0RW5kQ29sdW1uKGUpe3JldHVybi0xPT09ZT90aGlzLmdldFN0YXJ0Q29sdW1uKGUrMSk6KHRoaXMuX2Fzc2VydEluZGV4KGUsdGhpcy5fY29sdW1ucyksMTA9PT10aGlzLl9jaGFyQ29kZXNbZV0/MTp0aGlzLl9jb2x1bW5zW2VdKzEpfX1jbGFzcyBhdHtjb25zdHJ1Y3RvcihlLHQsbixyLGksYSxvLHMpe3RoaXMub3JpZ2luYWxTdGFydExpbmVOdW1iZXI9ZSx0aGlzLm9yaWdpbmFsU3RhcnRDb2x1bW49dCx0aGlzLm9yaWdpbmFsRW5kTGluZU51bWJlcj1uLHRoaXMub3JpZ2luYWxFbmRDb2x1bW49cix0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPWksdGhpcy5tb2RpZmllZFN0YXJ0Q29sdW1uPWEsdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9byx0aGlzLm1vZGlmaWVkRW5kQ29sdW1uPXN9c3RhdGljIGNyZWF0ZUZyb21EaWZmQ2hhbmdlKGUsdCxuKXtjb25zdCByPXQuZ2V0U3RhcnRMaW5lTnVtYmVyKGUub3JpZ2luYWxTdGFydCksaT10LmdldFN0YXJ0Q29sdW1uKGUub3JpZ2luYWxTdGFydCksYT10LmdldEVuZExpbmVOdW1iZXIoZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGgtMSksbz10LmdldEVuZENvbHVtbihlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aC0xKSxzPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKGUubW9kaWZpZWRTdGFydCksbD1uLmdldFN0YXJ0Q29sdW1uKGUubW9kaWZpZWRTdGFydCksYz1uLmdldEVuZExpbmVOdW1iZXIoZS5tb2RpZmllZFN0YXJ0K2UubW9kaWZpZWRMZW5ndGgtMSksaD1uLmdldEVuZENvbHVtbihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKTtyZXR1cm4gbmV3IGF0KHIsaSxhLG8scyxsLGMsaCl9fWNsYXNzIG90e2NvbnN0cnVjdG9yKGUsdCxuLHIsaSl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsdGhpcy5tb2RpZmllZFN0YXJ0TGluZU51bWJlcj1uLHRoaXMubW9kaWZpZWRFbmRMaW5lTnVtYmVyPXIsdGhpcy5jaGFyQ2hhbmdlcz1pfXN0YXRpYyBjcmVhdGVGcm9tRGlmZlJlc3VsdChlLHQsbixyLGksYSxvKXtsZXQgcyxsLGMsaCxkO2lmKDA9PT10Lm9yaWdpbmFsTGVuZ3RoPyhzPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCktMSxsPTApOihzPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCksbD1uLmdldEVuZExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSkpLDA9PT10Lm1vZGlmaWVkTGVuZ3RoPyhjPXIuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCktMSxoPTApOihjPXIuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCksaD1yLmdldEVuZExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSkpLGEmJnQub3JpZ2luYWxMZW5ndGg+MCYmdC5vcmlnaW5hbExlbmd0aDwyMCYmdC5tb2RpZmllZExlbmd0aD4wJiZ0Lm1vZGlmaWVkTGVuZ3RoPDIwJiZpKCkpe2NvbnN0IGE9bi5jcmVhdGVDaGFyU2VxdWVuY2UoZSx0Lm9yaWdpbmFsU3RhcnQsdC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSkscz1yLmNyZWF0ZUNoYXJTZXF1ZW5jZShlLHQubW9kaWZpZWRTdGFydCx0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC0xKTtpZihhLmdldEVsZW1lbnRzKCkubGVuZ3RoPjAmJnMuZ2V0RWxlbWVudHMoKS5sZW5ndGg+MCl7bGV0IGU9bnQoYSxzLGksITApLmNoYW5nZXM7byYmKGU9ZnVuY3Rpb24oZSl7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGU7Y29uc3QgdD1bZVswXV07bGV0IG49dFswXTtmb3IobGV0IHI9MSxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9ZVtyXSxhPWkub3JpZ2luYWxTdGFydC0obi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgpLG89aS5tb2RpZmllZFN0YXJ0LShuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aCk7TWF0aC5taW4oYSxvKTwzPyhuLm9yaWdpbmFsTGVuZ3RoPWkub3JpZ2luYWxTdGFydCtpLm9yaWdpbmFsTGVuZ3RoLW4ub3JpZ2luYWxTdGFydCxuLm1vZGlmaWVkTGVuZ3RoPWkubW9kaWZpZWRTdGFydCtpLm1vZGlmaWVkTGVuZ3RoLW4ubW9kaWZpZWRTdGFydCk6KHQucHVzaChpKSxuPWkpfXJldHVybiB0fShlKSksZD1bXTtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspZC5wdXNoKGF0LmNyZWF0ZUZyb21EaWZmQ2hhbmdlKGVbdF0sYSxzKSl9fXJldHVybiBuZXcgb3QocyxsLGMsaCxkKX19Y2xhc3Mgc3R7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPW4uc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1uLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1uLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9bi5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9ZSx0aGlzLm1vZGlmaWVkTGluZXM9dCx0aGlzLm9yaWdpbmFsPW5ldyBydChlKSx0aGlzLm1vZGlmaWVkPW5ldyBydCh0KSx0aGlzLmNvbnRpbnVlTGluZURpZmY9aHQobi5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1odCgwPT09bi5tYXhDb21wdXRhdGlvblRpbWU/MDpNYXRoLm1pbihuLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKDE9PT10aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMub3JpZ2luYWwubGluZXNbMF0ubGVuZ3RoKXJldHVybiAxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6W3ttb2RpZmllZEVuZENvbHVtbjowLG1vZGlmaWVkRW5kTGluZU51bWJlcjowLG1vZGlmaWVkU3RhcnRDb2x1bW46MCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjowLG9yaWdpbmFsRW5kQ29sdW1uOjAsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjAsb3JpZ2luYWxTdGFydENvbHVtbjowLG9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjB9XX1dfTtpZigxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aClyZXR1cm57cXVpdEVhcmx5OiExLGNoYW5nZXM6W3tvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjoxLG9yaWdpbmFsRW5kTGluZU51bWJlcjp0aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjoxLG1vZGlmaWVkRW5kTGluZU51bWJlcjoxLGNoYXJDaGFuZ2VzOlt7bW9kaWZpZWRFbmRDb2x1bW46MCxtb2RpZmllZEVuZExpbmVOdW1iZXI6MCxtb2RpZmllZFN0YXJ0Q29sdW1uOjAsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MCxvcmlnaW5hbEVuZENvbHVtbjowLG9yaWdpbmFsRW5kTGluZU51bWJlcjowLG9yaWdpbmFsU3RhcnRDb2x1bW46MCxvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjowfV19XX07Y29uc3QgZT1udCh0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUxpbmVEaWZmLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmYpLHQ9ZS5jaGFuZ2VzLG49ZS5xdWl0RWFybHk7aWYodGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZSl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxyPXQubGVuZ3RoO248cjtuKyspZS5wdXNoKG90LmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2UsdFtuXSx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpO3JldHVybntxdWl0RWFybHk6bixjaGFuZ2VzOmV9fWNvbnN0IHI9W107bGV0IGk9MCxhPTA7Zm9yKGxldCBlPS0xLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbz1lKzE8bj90W2UrMV06bnVsbCxzPW8/by5vcmlnaW5hbFN0YXJ0OnRoaXMub3JpZ2luYWxMaW5lcy5sZW5ndGgsbD1vP28ubW9kaWZpZWRTdGFydDp0aGlzLm1vZGlmaWVkTGluZXMubGVuZ3RoO2Zvcig7aTxzJiZhPGw7KXtjb25zdCBlPXRoaXMub3JpZ2luYWxMaW5lc1tpXSx0PXRoaXMubW9kaWZpZWRMaW5lc1thXTtpZihlIT09dCl7e2xldCBuPWx0KGUsMSksbz1sdCh0LDEpO2Zvcig7bj4xJiZvPjE7KXtpZihlLmNoYXJDb2RlQXQobi0yKSE9PXQuY2hhckNvZGVBdChvLTIpKWJyZWFrO24tLSxvLS19KG4+MXx8bz4xKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShyLGkrMSwxLG4sYSsxLDEsbyl9e2xldCBuPWN0KGUsMSksbz1jdCh0LDEpO2NvbnN0IHM9ZS5sZW5ndGgrMSxsPXQubGVuZ3RoKzE7Zm9yKDtuPHMmJm88bDspe2lmKGUuY2hhckNvZGVBdChuLTEpIT09ZS5jaGFyQ29kZUF0KG8tMSkpYnJlYWs7bisrLG8rK30objxzfHxvPGwpJiZ0aGlzLl9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHIsaSsxLG4scyxhKzEsbyxsKX19aSsrLGErK31vJiYoci5wdXNoKG90LmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Usbyx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpLGkrPW8ub3JpZ2luYWxMZW5ndGgsYSs9by5tb2RpZmllZExlbmd0aCl9cmV0dXJue3F1aXRFYXJseTpuLGNoYW5nZXM6cn19X3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLGEsbyl7aWYodGhpcy5fbWVyZ2VUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLGEsbykpcmV0dXJuO2xldCBzO3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiYocz1bbmV3IGF0KHQsbix0LHIsaSxhLGksbyldKSxlLnB1c2gobmV3IG90KHQsdCxpLGkscykpfV9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShlLHQsbixyLGksYSxvKXtjb25zdCBzPWUubGVuZ3RoO2lmKDA9PT1zKXJldHVybiExO2NvbnN0IGw9ZVtzLTFdO3JldHVybiAwIT09bC5vcmlnaW5hbEVuZExpbmVOdW1iZXImJjAhPT1sLm1vZGlmaWVkRW5kTGluZU51bWJlciYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyKzE9PT10JiZsLm1vZGlmaWVkRW5kTGluZU51bWJlcisxPT09aSYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsbC5tb2RpZmllZEVuZExpbmVOdW1iZXI9aSx0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcy5wdXNoKG5ldyBhdCh0LG4sdCxyLGksYSxpLG8pKSwhMCkpfX1mdW5jdGlvbiBsdChlLHQpe2NvbnN0IG49ZnVuY3Rpb24oZSl7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWUuY2hhckNvZGVBdCh0KTtpZigzMiE9PW4mJjkhPT1uKXJldHVybiB0fXJldHVybi0xfShlKTtyZXR1cm4tMT09PW4/dDpuKzF9ZnVuY3Rpb24gY3QoZSx0KXtjb25zdCBuPWZ1bmN0aW9uKGUsdD1lLmxlbmd0aC0xKXtmb3IobGV0IG49dDtuPj0wO24tLSl7Y29uc3QgdD1lLmNoYXJDb2RlQXQobik7aWYoMzIhPT10JiY5IT09dClyZXR1cm4gbn1yZXR1cm4tMX0oZSk7cmV0dXJuLTE9PT1uP3Q6bisyfWZ1bmN0aW9uIGh0KGUpe2lmKDA9PT1lKXJldHVybigpPT4hMDtjb25zdCB0PURhdGUubm93KCk7cmV0dXJuKCk9PkRhdGUubm93KCktdDxlfXZhciBkdDtmdW5jdGlvbiB1dChlKXtyZXR1cm4gZTwwPzA6ZT4yNTU/MjU1OjB8ZX1mdW5jdGlvbiBwdChlKXtyZXR1cm4gZTwwPzA6ZT40Mjk0OTY3Mjk1PzQyOTQ5NjcyOTU6MHxlfSFmdW5jdGlvbihlKXtlLmlzTGVzc1RoYW49ZnVuY3Rpb24oZSl7cmV0dXJuIGU8MH0sZS5pc0dyZWF0ZXJUaGFuPWZ1bmN0aW9uKGUpe3JldHVybiBlPjB9LGUuaXNOZWl0aGVyTGVzc09yR3JlYXRlclRoYW49ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lfSxlLmdyZWF0ZXJUaGFuPTEsZS5sZXNzVGhhbj0tMSxlLm5laXRoZXJMZXNzT3JHcmVhdGVyVGhhbj0wfShkdHx8KGR0PXt9KSk7Y2xhc3MgbXR7Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZXM9ZSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkoZS5sZW5ndGgpLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleD1uZXcgSW50MzJBcnJheSgxKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09LTF9aW5zZXJ0VmFsdWVzKGUsdCl7ZT1wdChlKTtjb25zdCBuPXRoaXMudmFsdWVzLHI9dGhpcy5wcmVmaXhTdW0saT10Lmxlbmd0aDtyZXR1cm4gMCE9PWkmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgraSksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheShlKSxlK2kpLHRoaXMudmFsdWVzLnNldCh0LGUpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodGhpcy52YWx1ZXMubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChyLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9c2V0VmFsdWUoZSx0KXtyZXR1cm4gZT1wdChlKSx0PXB0KHQpLHRoaXMudmFsdWVzW2VdIT09dCYmKHRoaXMudmFsdWVzW2VdPXQsZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLCEwKX1yZW1vdmVWYWx1ZXMoZSx0KXtlPXB0KGUpLHQ9cHQodCk7Y29uc3Qgbj10aGlzLnZhbHVlcyxyPXRoaXMucHJlZml4U3VtO2lmKGU+PW4ubGVuZ3RoKXJldHVybiExO2NvbnN0IGk9bi5sZW5ndGgtZTtyZXR1cm4gdD49aSYmKHQ9aSksMCE9PXQmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgtdCksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheShlK3QpLGUpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChyLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9Z2V0VG90YWxTdW0oKXtyZXR1cm4gMD09PXRoaXMudmFsdWVzLmxlbmd0aD8wOnRoaXMuX2dldFByZWZpeFN1bSh0aGlzLnZhbHVlcy5sZW5ndGgtMSl9Z2V0UHJlZml4U3VtKGUpe3JldHVybiBlPDA/MDooZT1wdChlKSx0aGlzLl9nZXRQcmVmaXhTdW0oZSkpfV9nZXRQcmVmaXhTdW0oZSl7aWYoZTw9dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKXJldHVybiB0aGlzLnByZWZpeFN1bVtlXTtsZXQgdD10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMTswPT09dCYmKHRoaXMucHJlZml4U3VtWzBdPXRoaXMudmFsdWVzWzBdLHQrKyksZT49dGhpcy52YWx1ZXMubGVuZ3RoJiYoZT10aGlzLnZhbHVlcy5sZW5ndGgtMSk7Zm9yKGxldCBuPXQ7bjw9ZTtuKyspdGhpcy5wcmVmaXhTdW1bbl09dGhpcy5wcmVmaXhTdW1bbi0xXSt0aGlzLnZhbHVlc1tuXTtyZXR1cm4gdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPU1hdGgubWF4KHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSxlKSx0aGlzLnByZWZpeFN1bVtlXX1nZXRJbmRleE9mKGUpe2U9TWF0aC5mbG9vcihlKSx0aGlzLmdldFRvdGFsU3VtKCk7bGV0IHQ9MCxuPXRoaXMudmFsdWVzLmxlbmd0aC0xLHI9MCxpPTAsYT0wO2Zvcig7dDw9bjspaWYocj10KyhuLXQpLzJ8MCxpPXRoaXMucHJlZml4U3VtW3JdLGE9aS10aGlzLnZhbHVlc1tyXSxlPGEpbj1yLTE7ZWxzZXtpZighKGU+PWkpKWJyZWFrO3Q9cisxfXJldHVybiBuZXcgZnQocixlLWEpfX1jbGFzcyBmdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaW5kZXg9ZSx0aGlzLnJlbWFpbmRlcj10LHRoaXMuX3ByZWZpeFN1bUluZGV4T2ZSZXN1bHRCcmFuZD12b2lkIDAsdGhpcy5pbmRleD1lLHRoaXMucmVtYWluZGVyPXR9fWNsYXNzIGd0e2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMuX3VyaT1lLHRoaXMuX2xpbmVzPXQsdGhpcy5fZW9sPW4sdGhpcy5fdmVyc2lvbklkPXIsdGhpcy5fbGluZVN0YXJ0cz1udWxsLHRoaXMuX2NhY2hlZFRleHRWYWx1ZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9saW5lcy5sZW5ndGg9MH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9uSWR9Z2V0VGV4dCgpe3JldHVybiBudWxsPT09dGhpcy5fY2FjaGVkVGV4dFZhbHVlJiYodGhpcy5fY2FjaGVkVGV4dFZhbHVlPXRoaXMuX2xpbmVzLmpvaW4odGhpcy5fZW9sKSksdGhpcy5fY2FjaGVkVGV4dFZhbHVlfW9uRXZlbnRzKGUpe2UuZW9sJiZlLmVvbCE9PXRoaXMuX2VvbCYmKHRoaXMuX2VvbD1lLmVvbCx0aGlzLl9saW5lU3RhcnRzPW51bGwpO2NvbnN0IHQ9ZS5jaGFuZ2VzO2Zvcihjb25zdCBlIG9mIHQpdGhpcy5fYWNjZXB0RGVsZXRlUmFuZ2UoZS5yYW5nZSksdGhpcy5fYWNjZXB0SW5zZXJ0VGV4dChuZXcgZXQoZS5yYW5nZS5zdGFydExpbmVOdW1iZXIsZS5yYW5nZS5zdGFydENvbHVtbiksZS50ZXh0KTt0aGlzLl92ZXJzaW9uSWQ9ZS52ZXJzaW9uSWQsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9X2Vuc3VyZUxpbmVTdGFydHMoKXtpZighdGhpcy5fbGluZVN0YXJ0cyl7Y29uc3QgZT10aGlzLl9lb2wubGVuZ3RoLHQ9dGhpcy5fbGluZXMubGVuZ3RoLG49bmV3IFVpbnQzMkFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDtyKyspbltyXT10aGlzLl9saW5lc1tyXS5sZW5ndGgrZTt0aGlzLl9saW5lU3RhcnRzPW5ldyBtdChuKX19X3NldExpbmVUZXh0KGUsdCl7dGhpcy5fbGluZXNbZV09dCx0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLnNldFZhbHVlKGUsdGhpcy5fbGluZXNbZV0ubGVuZ3RoK3RoaXMuX2VvbC5sZW5ndGgpfV9hY2NlcHREZWxldGVSYW5nZShlKXtpZihlLnN0YXJ0TGluZU51bWJlciE9PWUuZW5kTGluZU51bWJlcil0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5lbmRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSksdGhpcy5fbGluZXMuc3BsaWNlKGUuc3RhcnRMaW5lTnVtYmVyLGUuZW5kTGluZU51bWJlci1lLnN0YXJ0TGluZU51bWJlciksdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5yZW1vdmVWYWx1ZXMoZS5zdGFydExpbmVOdW1iZXIsZS5lbmRMaW5lTnVtYmVyLWUuc3RhcnRMaW5lTnVtYmVyKTtlbHNle2lmKGUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbilyZXR1cm47dGhpcy5fc2V0TGluZVRleHQoZS5zdGFydExpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCxlLnN0YXJ0Q29sdW1uLTEpK3RoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSl9fV9hY2NlcHRJbnNlcnRUZXh0KGUsdCl7aWYoMD09PXQubGVuZ3RoKXJldHVybjtjb25zdCBuPXQuc3BsaXQoL1xyXG58XHJ8XG4vKTtpZigxPT09bi5sZW5ndGgpcmV0dXJuIHZvaWQgdGhpcy5fc2V0TGluZVRleHQoZS5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuY29sdW1uLTEpK25bMF0rdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmNvbHVtbi0xKSk7bltuLmxlbmd0aC0xXSs9dGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmNvbHVtbi0xKSx0aGlzLl9zZXRMaW5lVGV4dChlLmxpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsZS5jb2x1bW4tMSkrblswXSk7Y29uc3Qgcj1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgtMSk7Zm9yKGxldCB0PTE7dDxuLmxlbmd0aDt0KyspdGhpcy5fbGluZXMuc3BsaWNlKGUubGluZU51bWJlcit0LTEsMCxuW3RdKSxyW3QtMV09blt0XS5sZW5ndGgrdGhpcy5fZW9sLmxlbmd0aDt0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLmluc2VydFZhbHVlcyhlLmxpbmVOdW1iZXIscil9fWNvbnN0IGJ0PWZ1bmN0aW9uKGU9IiIpe2xldCB0PSIoLT9cXGQqXFwuXFxkXFx3Kil8KFteIjtmb3IoY29uc3QgbiBvZiJgfiFAIyQlXiYqKCktPStbe119XFx8OzonXCIsLjw+Lz8iKWUuaW5kZXhPZihuKT49MHx8KHQrPSJcXCIrbik7cmV0dXJuIHQrPSJcXHNdKykiLG5ldyBSZWdFeHAodCwiZyIpfSgpO2NvbnN0IHd0PW5ldyBmO2Z1bmN0aW9uIF90KGUsdCxuLHIsaSl7aWYoaXx8KGk9cy5maXJzdCh3dCkpLG4ubGVuZ3RoPmkubWF4TGVuKXtsZXQgYT1lLWkubWF4TGVuLzI7cmV0dXJuIGE8MD9hPTA6cis9YSxfdChlLHQsbj1uLnN1YnN0cmluZyhhLGUraS5tYXhMZW4vMikscixpKX1jb25zdCBhPURhdGUubm93KCksbz1lLTEtcjtsZXQgbD0tMSxjPW51bGw7Zm9yKGxldCBlPTE7IShEYXRlLm5vdygpLWE+PWkudGltZUJ1ZGdldCk7ZSsrKXtjb25zdCByPW8taS53aW5kb3dTaXplKmU7dC5sYXN0SW5kZXg9TWF0aC5tYXgoMCxyKTtjb25zdCBhPXZ0KHQsbixvLGwpO2lmKCFhJiZjKWJyZWFrO2lmKGM9YSxyPD0wKWJyZWFrO2w9cn1pZihjKXtjb25zdCBlPXt3b3JkOmNbMF0sc3RhcnRDb2x1bW46cisxK2MuaW5kZXgsZW5kQ29sdW1uOnIrMStjLmluZGV4K2NbMF0ubGVuZ3RofTtyZXR1cm4gdC5sYXN0SW5kZXg9MCxlfXJldHVybiBudWxsfWZ1bmN0aW9uIHZ0KGUsdCxuLHIpe2xldCBpO2Zvcig7aT1lLmV4ZWModCk7KXtjb25zdCB0PWkuaW5kZXh8fDA7aWYodDw9biYmZS5sYXN0SW5kZXg+PW4pcmV0dXJuIGk7aWYocj4wJiZ0PnIpcmV0dXJuIG51bGx9cmV0dXJuIG51bGx9d3QudW5zaGlmdCh7bWF4TGVuOjFlMyx3aW5kb3dTaXplOjE1LHRpbWVCdWRnZXQ6MTUwfSk7Y2xhc3MgeXR7Y29uc3RydWN0b3IoZSl7Y29uc3QgdD11dChlKTt0aGlzLl9kZWZhdWx0VmFsdWU9dCx0aGlzLl9hc2NpaU1hcD15dC5fY3JlYXRlQXNjaWlNYXAodCksdGhpcy5fbWFwPW5ldyBNYXB9c3RhdGljIF9jcmVhdGVBc2NpaU1hcChlKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDI1Nik7Zm9yKGxldCBuPTA7bjwyNTY7bisrKXRbbl09ZTtyZXR1cm4gdH1zZXQoZSx0KXtjb25zdCBuPXV0KHQpO2U+PTAmJmU8MjU2P3RoaXMuX2FzY2lpTWFwW2VdPW46dGhpcy5fbWFwLnNldChlLG4pfWdldChlKXtyZXR1cm4gZT49MCYmZTwyNTY/dGhpcy5fYXNjaWlNYXBbZV06dGhpcy5fbWFwLmdldChlKXx8dGhpcy5fZGVmYXVsdFZhbHVlfX1jbGFzcyBUdHtjb25zdHJ1Y3RvcihlLHQsbil7Y29uc3Qgcj1uZXcgVWludDhBcnJheShlKnQpO2ZvcihsZXQgaT0wLGE9ZSp0O2k8YTtpKyspcltpXT1uO3RoaXMuX2RhdGE9cix0aGlzLnJvd3M9ZSx0aGlzLmNvbHM9dH1nZXQoZSx0KXtyZXR1cm4gdGhpcy5fZGF0YVtlKnRoaXMuY29scyt0XX1zZXQoZSx0LG4pe3RoaXMuX2RhdGFbZSp0aGlzLmNvbHMrdF09bn19Y2xhc3Mga3R7Y29uc3RydWN0b3IoZSl7bGV0IHQ9MCxuPTA7Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXtjb25zdFtpLGEsb109ZVtyXTthPnQmJih0PWEpLGk+biYmKG49aSksbz5uJiYobj1vKX10KyssbisrO2NvbnN0IHI9bmV3IFR0KG4sdCwwKTtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0W24saSxhXT1lW3RdO3Iuc2V0KG4saSxhKX10aGlzLl9zdGF0ZXM9cix0aGlzLl9tYXhDaGFyQ29kZT10fW5leHRTdGF0ZShlLHQpe3JldHVybiB0PDB8fHQ+PXRoaXMuX21heENoYXJDb2RlPzA6dGhpcy5fc3RhdGVzLmdldChlLHQpfX1sZXQgU3Q9bnVsbDtsZXQgQ3Q9bnVsbDtjbGFzcyB4dHtzdGF0aWMgX2NyZWF0ZUxpbmsoZSx0LG4scixpKXtsZXQgYT1pLTE7ZG97Y29uc3Qgbj10LmNoYXJDb2RlQXQoYSk7aWYoMiE9PWUuZ2V0KG4pKWJyZWFrO2EtLX13aGlsZShhPnIpO2lmKHI+MCl7Y29uc3QgZT10LmNoYXJDb2RlQXQoci0xKSxuPXQuY2hhckNvZGVBdChhKTsoNDA9PT1lJiY0MT09PW58fDkxPT09ZSYmOTM9PT1ufHwxMjM9PT1lJiYxMjU9PT1uKSYmYS0tfXJldHVybntyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOm4sc3RhcnRDb2x1bW46cisxLGVuZExpbmVOdW1iZXI6bixlbmRDb2x1bW46YSsyfSx1cmw6dC5zdWJzdHJpbmcocixhKzEpfX1zdGF0aWMgY29tcHV0ZUxpbmtzKGUsdD1mdW5jdGlvbigpe3JldHVybiBudWxsPT09U3QmJihTdD1uZXcga3QoW1sxLDEwNCwyXSxbMSw3MiwyXSxbMSwxMDIsNl0sWzEsNzAsNl0sWzIsMTE2LDNdLFsyLDg0LDNdLFszLDExNiw0XSxbMyw4NCw0XSxbNCwxMTIsNV0sWzQsODAsNV0sWzUsMTE1LDldLFs1LDgzLDldLFs1LDU4LDEwXSxbNiwxMDUsN10sWzYsNzMsN10sWzcsMTA4LDhdLFs3LDc2LDhdLFs4LDEwMSw5XSxbOCw2OSw5XSxbOSw1OCwxMF0sWzEwLDQ3LDExXSxbMTEsNDcsMTJdXSkpLFN0fSgpKXtjb25zdCBuPWZ1bmN0aW9uKCl7aWYobnVsbD09PUN0KXtDdD1uZXcgeXQoMCk7Y29uc3QgZT0iIFx0PD4nXCLjgIHjgILvvaHvvaTvvIzvvI7vvJrvvJvigJjjgIjjgIzjgI7jgJTvvIjvvLvvvZvvvaLvvaPvvZ3vvL3vvInjgJXjgI/jgI3jgInigJnvvYDvvZ7igKYiO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKUN0LnNldChlLmNoYXJDb2RlQXQodCksMSk7Y29uc3QgdD0iLiw7OiI7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspQ3Quc2V0KHQuY2hhckNvZGVBdChlKSwyKX1yZXR1cm4gQ3R9KCkscj1bXTtmb3IobGV0IGk9MSxhPWUuZ2V0TGluZUNvdW50KCk7aTw9YTtpKyspe2NvbnN0IGE9ZS5nZXRMaW5lQ29udGVudChpKSxvPWEubGVuZ3RoO2xldCBzPTAsbD0wLGM9MCxoPTEsZD0hMSx1PSExLHA9ITEsbT0hMTtmb3IoO3M8bzspe2xldCBlPSExO2NvbnN0IG89YS5jaGFyQ29kZUF0KHMpO2lmKDEzPT09aCl7bGV0IHQ7c3dpdGNoKG8pe2Nhc2UgNDA6ZD0hMCx0PTA7YnJlYWs7Y2FzZSA0MTp0PWQ/MDoxO2JyZWFrO2Nhc2UgOTE6cD0hMCx1PSEwLHQ9MDticmVhaztjYXNlIDkzOnA9ITEsdD11PzA6MTticmVhaztjYXNlIDEyMzptPSEwLHQ9MDticmVhaztjYXNlIDEyNTp0PW0/MDoxO2JyZWFrO2Nhc2UgMzk6dD0zOT09PWM/MTowO2JyZWFrO2Nhc2UgMzQ6dD0zND09PWM/MTowO2JyZWFrO2Nhc2UgOTY6dD05Nj09PWM/MTowO2JyZWFrO2Nhc2UgNDI6dD00Mj09PWM/MTowO2JyZWFrO2Nhc2UgMTI0OnQ9MTI0PT09Yz8xOjA7YnJlYWs7Y2FzZSAzMjp0PXA/MDoxO2JyZWFrO2RlZmF1bHQ6dD1uLmdldChvKX0xPT09dCYmKHIucHVzaCh4dC5fY3JlYXRlTGluayhuLGEsaSxsLHMpKSxlPSEwKX1lbHNlIGlmKDEyPT09aCl7bGV0IHQ7OTE9PT1vPyh1PSEwLHQ9MCk6dD1uLmdldChvKSwxPT09dD9lPSEwOmg9MTN9ZWxzZSBoPXQubmV4dFN0YXRlKGgsbyksMD09PWgmJihlPSEwKTtlJiYoaD0xLGQ9ITEsdT0hMSxtPSExLGw9cysxLGM9bykscysrfTEzPT09aCYmci5wdXNoKHh0Ll9jcmVhdGVMaW5rKG4sYSxpLGwsbykpfXJldHVybiByfX1jbGFzcyBMdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2RlZmF1bHRWYWx1ZVNldD1bWyJ0cnVlIiwiZmFsc2UiXSxbIlRydWUiLCJGYWxzZSJdLFsiUHJpdmF0ZSIsIlB1YmxpYyIsIkZyaWVuZCIsIlJlYWRPbmx5IiwiUGFydGlhbCIsIlByb3RlY3RlZCIsIldyaXRlT25seSJdLFsicHVibGljIiwicHJvdGVjdGVkIiwicHJpdmF0ZSJdXX1uYXZpZ2F0ZVZhbHVlU2V0KGUsdCxuLHIsaSl7aWYoZSYmdCl7Y29uc3Qgbj10aGlzLmRvTmF2aWdhdGVWYWx1ZVNldCh0LGkpO2lmKG4pcmV0dXJue3JhbmdlOmUsdmFsdWU6bn19aWYobiYmcil7Y29uc3QgZT10aGlzLmRvTmF2aWdhdGVWYWx1ZVNldChyLGkpO2lmKGUpcmV0dXJue3JhbmdlOm4sdmFsdWU6ZX19cmV0dXJuIG51bGx9ZG9OYXZpZ2F0ZVZhbHVlU2V0KGUsdCl7Y29uc3Qgbj10aGlzLm51bWJlclJlcGxhY2UoZSx0KTtyZXR1cm4gbnVsbCE9PW4/bjp0aGlzLnRleHRSZXBsYWNlKGUsdCl9bnVtYmVyUmVwbGFjZShlLHQpe2NvbnN0IG49TWF0aC5wb3coMTAsZS5sZW5ndGgtKGUubGFzdEluZGV4T2YoIi4iKSsxKSk7bGV0IHI9TnVtYmVyKGUpO2NvbnN0IGk9cGFyc2VGbG9hdChlKTtyZXR1cm4gaXNOYU4ocil8fGlzTmFOKGkpfHxyIT09aT9udWxsOjAhPT1yfHx0PyhyPU1hdGguZmxvb3IocipuKSxyKz10P246LW4sU3RyaW5nKHIvbikpOm51bGx9dGV4dFJlcGxhY2UoZSx0KXtyZXR1cm4gdGhpcy52YWx1ZVNldHNSZXBsYWNlKHRoaXMuX2RlZmF1bHRWYWx1ZVNldCxlLHQpfXZhbHVlU2V0c1JlcGxhY2UoZSx0LG4pe2xldCByPW51bGw7Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtudWxsPT09ciYmaTxhO2krKylyPXRoaXMudmFsdWVTZXRSZXBsYWNlKGVbaV0sdCxuKTtyZXR1cm4gcn12YWx1ZVNldFJlcGxhY2UoZSx0LG4pe2xldCByPWUuaW5kZXhPZih0KTtyZXR1cm4gcj49MD8ocis9bj8xOi0xLHI8MD9yPWUubGVuZ3RoLTE6ciU9ZS5sZW5ndGgsZVtyXSk6bnVsbH19THQuSU5TVEFOQ0U9bmV3IEx0O2NvbnN0IEV0PU9iamVjdC5mcmVlemUoKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1zZXRUaW1lb3V0KGUuYmluZCh0KSwwKTtyZXR1cm57ZGlzcG9zZSgpe2NsZWFyVGltZW91dChuKX19fSkpO3ZhciBBdDshZnVuY3Rpb24oZSl7ZS5pc0NhbmNlbGxhdGlvblRva2VuPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09ZS5Ob25lfHx0PT09ZS5DYW5jZWxsZWR8fCh0IGluc3RhbmNlb2YgTXR8fCEoIXR8fCJvYmplY3QiIT10eXBlb2YgdCkmJigiYm9vbGVhbiI9PXR5cGVvZiB0LmlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkJiYiZnVuY3Rpb24iPT10eXBlb2YgdC5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCkpfSxlLk5vbmU9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITEsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6RC5Ob25lfSksZS5DYW5jZWxsZWQ9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITAsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6RXR9KX0oQXR8fChBdD17fSkpO2NsYXNzIE10e2NvbnN0cnVjdG9yKCl7dGhpcy5faXNDYW5jZWxsZWQ9ITEsdGhpcy5fZW1pdHRlcj1udWxsfWNhbmNlbCgpe3RoaXMuX2lzQ2FuY2VsbGVkfHwodGhpcy5faXNDYW5jZWxsZWQ9ITAsdGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZmlyZSh2b2lkIDApLHRoaXMuZGlzcG9zZSgpKSl9Z2V0IGlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCl7cmV0dXJuIHRoaXMuX2lzQ2FuY2VsbGVkfWdldCBvbkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZD9FdDoodGhpcy5fZW1pdHRlcnx8KHRoaXMuX2VtaXR0ZXI9bmV3IEYpLHRoaXMuX2VtaXR0ZXIuZXZlbnQpfWRpc3Bvc2UoKXt0aGlzLl9lbWl0dGVyJiYodGhpcy5fZW1pdHRlci5kaXNwb3NlKCksdGhpcy5fZW1pdHRlcj1udWxsKX19Y2xhc3MgUnR7Y29uc3RydWN0b3IoZSl7dGhpcy5fdG9rZW49dm9pZCAwLHRoaXMuX3BhcmVudExpc3RlbmVyPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj1lJiZlLm9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKHRoaXMuY2FuY2VsLHRoaXMpfWdldCB0b2tlbigpe3JldHVybiB0aGlzLl90b2tlbnx8KHRoaXMuX3Rva2VuPW5ldyBNdCksdGhpcy5fdG9rZW59Y2FuY2VsKCl7dGhpcy5fdG9rZW4/dGhpcy5fdG9rZW4gaW5zdGFuY2VvZiBNdCYmdGhpcy5fdG9rZW4uY2FuY2VsKCk6dGhpcy5fdG9rZW49QXQuQ2FuY2VsbGVkfWRpc3Bvc2UoZT0hMSl7ZSYmdGhpcy5jYW5jZWwoKSx0aGlzLl9wYXJlbnRMaXN0ZW5lciYmdGhpcy5fcGFyZW50TGlzdGVuZXIuZGlzcG9zZSgpLHRoaXMuX3Rva2VuP3RoaXMuX3Rva2VuIGluc3RhbmNlb2YgTXQmJnRoaXMuX3Rva2VuLmRpc3Bvc2UoKTp0aGlzLl90b2tlbj1BdC5Ob25lfX1jbGFzcyBJdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2tleUNvZGVUb1N0cj1bXSx0aGlzLl9zdHJUb0tleUNvZGU9T2JqZWN0LmNyZWF0ZShudWxsKX1kZWZpbmUoZSx0KXt0aGlzLl9rZXlDb2RlVG9TdHJbZV09dCx0aGlzLl9zdHJUb0tleUNvZGVbdC50b0xvd2VyQ2FzZSgpXT1lfWtleUNvZGVUb1N0cihlKXtyZXR1cm4gdGhpcy5fa2V5Q29kZVRvU3RyW2VdfXN0clRvS2V5Q29kZShlKXtyZXR1cm4gdGhpcy5fc3RyVG9LZXlDb2RlW2UudG9Mb3dlckNhc2UoKV18fDB9fWNvbnN0IE50PW5ldyBJdCxVdD1uZXcgSXQsSHQ9bmV3IEl0LHp0PW5ldyBBcnJheSgyMzApLER0PU9iamVjdC5jcmVhdGUobnVsbCksV3Q9T2JqZWN0LmNyZWF0ZShudWxsKTt2YXIgT3QsUHQ7IWZ1bmN0aW9uKCl7Y29uc3QgZT0iIix0PVtbMCwxLDAsIk5vbmUiLDAsInVua25vd24iLDAsIlZLX1VOS05PV04iLGUsZV0sWzAsMSwxLCJIeXBlciIsMCxlLDAsZSxlLGVdLFswLDEsMiwiU3VwZXIiLDAsZSwwLGUsZSxlXSxbMCwxLDMsIkZuIiwwLGUsMCxlLGUsZV0sWzAsMSw0LCJGbkxvY2siLDAsZSwwLGUsZSxlXSxbMCwxLDUsIlN1c3BlbmQiLDAsZSwwLGUsZSxlXSxbMCwxLDYsIlJlc3VtZSIsMCxlLDAsZSxlLGVdLFswLDEsNywiVHVyYm8iLDAsZSwwLGUsZSxlXSxbMCwxLDgsIlNsZWVwIiwwLGUsMCwiVktfU0xFRVAiLGUsZV0sWzAsMSw5LCJXYWtlVXAiLDAsZSwwLGUsZSxlXSxbMzEsMCwxMCwiS2V5QSIsMzEsIkEiLDY1LCJWS19BIixlLGVdLFszMiwwLDExLCJLZXlCIiwzMiwiQiIsNjYsIlZLX0IiLGUsZV0sWzMzLDAsMTIsIktleUMiLDMzLCJDIiw2NywiVktfQyIsZSxlXSxbMzQsMCwxMywiS2V5RCIsMzQsIkQiLDY4LCJWS19EIixlLGVdLFszNSwwLDE0LCJLZXlFIiwzNSwiRSIsNjksIlZLX0UiLGUsZV0sWzM2LDAsMTUsIktleUYiLDM2LCJGIiw3MCwiVktfRiIsZSxlXSxbMzcsMCwxNiwiS2V5RyIsMzcsIkciLDcxLCJWS19HIixlLGVdLFszOCwwLDE3LCJLZXlIIiwzOCwiSCIsNzIsIlZLX0giLGUsZV0sWzM5LDAsMTgsIktleUkiLDM5LCJJIiw3MywiVktfSSIsZSxlXSxbNDAsMCwxOSwiS2V5SiIsNDAsIkoiLDc0LCJWS19KIixlLGVdLFs0MSwwLDIwLCJLZXlLIiw0MSwiSyIsNzUsIlZLX0siLGUsZV0sWzQyLDAsMjEsIktleUwiLDQyLCJMIiw3NiwiVktfTCIsZSxlXSxbNDMsMCwyMiwiS2V5TSIsNDMsIk0iLDc3LCJWS19NIixlLGVdLFs0NCwwLDIzLCJLZXlOIiw0NCwiTiIsNzgsIlZLX04iLGUsZV0sWzQ1LDAsMjQsIktleU8iLDQ1LCJPIiw3OSwiVktfTyIsZSxlXSxbNDYsMCwyNSwiS2V5UCIsNDYsIlAiLDgwLCJWS19QIixlLGVdLFs0NywwLDI2LCJLZXlRIiw0NywiUSIsODEsIlZLX1EiLGUsZV0sWzQ4LDAsMjcsIktleVIiLDQ4LCJSIiw4MiwiVktfUiIsZSxlXSxbNDksMCwyOCwiS2V5UyIsNDksIlMiLDgzLCJWS19TIixlLGVdLFs1MCwwLDI5LCJLZXlUIiw1MCwiVCIsODQsIlZLX1QiLGUsZV0sWzUxLDAsMzAsIktleVUiLDUxLCJVIiw4NSwiVktfVSIsZSxlXSxbNTIsMCwzMSwiS2V5ViIsNTIsIlYiLDg2LCJWS19WIixlLGVdLFs1MywwLDMyLCJLZXlXIiw1MywiVyIsODcsIlZLX1ciLGUsZV0sWzU0LDAsMzMsIktleVgiLDU0LCJYIiw4OCwiVktfWCIsZSxlXSxbNTUsMCwzNCwiS2V5WSIsNTUsIlkiLDg5LCJWS19ZIixlLGVdLFs1NiwwLDM1LCJLZXlaIiw1NiwiWiIsOTAsIlZLX1oiLGUsZV0sWzIyLDAsMzYsIkRpZ2l0MSIsMjIsIjEiLDQ5LCJWS18xIixlLGVdLFsyMywwLDM3LCJEaWdpdDIiLDIzLCIyIiw1MCwiVktfMiIsZSxlXSxbMjQsMCwzOCwiRGlnaXQzIiwyNCwiMyIsNTEsIlZLXzMiLGUsZV0sWzI1LDAsMzksIkRpZ2l0NCIsMjUsIjQiLDUyLCJWS180IixlLGVdLFsyNiwwLDQwLCJEaWdpdDUiLDI2LCI1Iiw1MywiVktfNSIsZSxlXSxbMjcsMCw0MSwiRGlnaXQ2IiwyNywiNiIsNTQsIlZLXzYiLGUsZV0sWzI4LDAsNDIsIkRpZ2l0NyIsMjgsIjciLDU1LCJWS183IixlLGVdLFsyOSwwLDQzLCJEaWdpdDgiLDI5LCI4Iiw1NiwiVktfOCIsZSxlXSxbMzAsMCw0NCwiRGlnaXQ5IiwzMCwiOSIsNTcsIlZLXzkiLGUsZV0sWzIxLDAsNDUsIkRpZ2l0MCIsMjEsIjAiLDQ4LCJWS18wIixlLGVdLFszLDEsNDYsIkVudGVyIiwzLCJFbnRlciIsMTMsIlZLX1JFVFVSTiIsZSxlXSxbOSwxLDQ3LCJFc2NhcGUiLDksIkVzY2FwZSIsMjcsIlZLX0VTQ0FQRSIsZSxlXSxbMSwxLDQ4LCJCYWNrc3BhY2UiLDEsIkJhY2tzcGFjZSIsOCwiVktfQkFDSyIsZSxlXSxbMiwxLDQ5LCJUYWIiLDIsIlRhYiIsOSwiVktfVEFCIixlLGVdLFsxMCwxLDUwLCJTcGFjZSIsMTAsIlNwYWNlIiwzMiwiVktfU1BBQ0UiLGUsZV0sWzgzLDAsNTEsIk1pbnVzIiw4MywiLSIsMTg5LCJWS19PRU1fTUlOVVMiLCItIiwiT0VNX01JTlVTIl0sWzgxLDAsNTIsIkVxdWFsIiw4MSwiPSIsMTg3LCJWS19PRU1fUExVUyIsIj0iLCJPRU1fUExVUyJdLFs4NywwLDUzLCJCcmFja2V0TGVmdCIsODcsIlsiLDIxOSwiVktfT0VNXzQiLCJbIiwiT0VNXzQiXSxbODksMCw1NCwiQnJhY2tldFJpZ2h0Iiw4OSwiXSIsMjIxLCJWS19PRU1fNiIsIl0iLCJPRU1fNiJdLFs4OCwwLDU1LCJCYWNrc2xhc2giLDg4LCJcXCIsMjIwLCJWS19PRU1fNSIsIlxcIiwiT0VNXzUiXSxbMCwwLDU2LCJJbnRsSGFzaCIsMCxlLDAsZSxlLGVdLFs4MCwwLDU3LCJTZW1pY29sb24iLDgwLCI7IiwxODYsIlZLX09FTV8xIiwiOyIsIk9FTV8xIl0sWzkwLDAsNTgsIlF1b3RlIiw5MCwiJyIsMjIyLCJWS19PRU1fNyIsIiciLCJPRU1fNyJdLFs4NiwwLDU5LCJCYWNrcXVvdGUiLDg2LCJgIiwxOTIsIlZLX09FTV8zIiwiYCIsIk9FTV8zIl0sWzgyLDAsNjAsIkNvbW1hIiw4MiwiLCIsMTg4LCJWS19PRU1fQ09NTUEiLCIsIiwiT0VNX0NPTU1BIl0sWzg0LDAsNjEsIlBlcmlvZCIsODQsIi4iLDE5MCwiVktfT0VNX1BFUklPRCIsIi4iLCJPRU1fUEVSSU9EIl0sWzg1LDAsNjIsIlNsYXNoIiw4NSwiLyIsMTkxLCJWS19PRU1fMiIsIi8iLCJPRU1fMiJdLFs4LDEsNjMsIkNhcHNMb2NrIiw4LCJDYXBzTG9jayIsMjAsIlZLX0NBUElUQUwiLGUsZV0sWzU5LDEsNjQsIkYxIiw1OSwiRjEiLDExMiwiVktfRjEiLGUsZV0sWzYwLDEsNjUsIkYyIiw2MCwiRjIiLDExMywiVktfRjIiLGUsZV0sWzYxLDEsNjYsIkYzIiw2MSwiRjMiLDExNCwiVktfRjMiLGUsZV0sWzYyLDEsNjcsIkY0Iiw2MiwiRjQiLDExNSwiVktfRjQiLGUsZV0sWzYzLDEsNjgsIkY1Iiw2MywiRjUiLDExNiwiVktfRjUiLGUsZV0sWzY0LDEsNjksIkY2Iiw2NCwiRjYiLDExNywiVktfRjYiLGUsZV0sWzY1LDEsNzAsIkY3Iiw2NSwiRjciLDExOCwiVktfRjciLGUsZV0sWzY2LDEsNzEsIkY4Iiw2NiwiRjgiLDExOSwiVktfRjgiLGUsZV0sWzY3LDEsNzIsIkY5Iiw2NywiRjkiLDEyMCwiVktfRjkiLGUsZV0sWzY4LDEsNzMsIkYxMCIsNjgsIkYxMCIsMTIxLCJWS19GMTAiLGUsZV0sWzY5LDEsNzQsIkYxMSIsNjksIkYxMSIsMTIyLCJWS19GMTEiLGUsZV0sWzcwLDEsNzUsIkYxMiIsNzAsIkYxMiIsMTIzLCJWS19GMTIiLGUsZV0sWzAsMSw3NiwiUHJpbnRTY3JlZW4iLDAsZSwwLGUsZSxlXSxbNzksMSw3NywiU2Nyb2xsTG9jayIsNzksIlNjcm9sbExvY2siLDE0NSwiVktfU0NST0xMIixlLGVdLFs3LDEsNzgsIlBhdXNlIiw3LCJQYXVzZUJyZWFrIiwxOSwiVktfUEFVU0UiLGUsZV0sWzE5LDEsNzksIkluc2VydCIsMTksIkluc2VydCIsNDUsIlZLX0lOU0VSVCIsZSxlXSxbMTQsMSw4MCwiSG9tZSIsMTQsIkhvbWUiLDM2LCJWS19IT01FIixlLGVdLFsxMSwxLDgxLCJQYWdlVXAiLDExLCJQYWdlVXAiLDMzLCJWS19QUklPUiIsZSxlXSxbMjAsMSw4MiwiRGVsZXRlIiwyMCwiRGVsZXRlIiw0NiwiVktfREVMRVRFIixlLGVdLFsxMywxLDgzLCJFbmQiLDEzLCJFbmQiLDM1LCJWS19FTkQiLGUsZV0sWzEyLDEsODQsIlBhZ2VEb3duIiwxMiwiUGFnZURvd24iLDM0LCJWS19ORVhUIixlLGVdLFsxNywxLDg1LCJBcnJvd1JpZ2h0IiwxNywiUmlnaHRBcnJvdyIsMzksIlZLX1JJR0hUIiwiUmlnaHQiLGVdLFsxNSwxLDg2LCJBcnJvd0xlZnQiLDE1LCJMZWZ0QXJyb3ciLDM3LCJWS19MRUZUIiwiTGVmdCIsZV0sWzE4LDEsODcsIkFycm93RG93biIsMTgsIkRvd25BcnJvdyIsNDAsIlZLX0RPV04iLCJEb3duIixlXSxbMTYsMSw4OCwiQXJyb3dVcCIsMTYsIlVwQXJyb3ciLDM4LCJWS19VUCIsIlVwIixlXSxbNzgsMSw4OSwiTnVtTG9jayIsNzgsIk51bUxvY2siLDE0NCwiVktfTlVNTE9DSyIsZSxlXSxbMTA4LDEsOTAsIk51bXBhZERpdmlkZSIsMTA4LCJOdW1QYWRfRGl2aWRlIiwxMTEsIlZLX0RJVklERSIsZSxlXSxbMTAzLDEsOTEsIk51bXBhZE11bHRpcGx5IiwxMDMsIk51bVBhZF9NdWx0aXBseSIsMTA2LCJWS19NVUxUSVBMWSIsZSxlXSxbMTA2LDEsOTIsIk51bXBhZFN1YnRyYWN0IiwxMDYsIk51bVBhZF9TdWJ0cmFjdCIsMTA5LCJWS19TVUJUUkFDVCIsZSxlXSxbMTA0LDEsOTMsIk51bXBhZEFkZCIsMTA0LCJOdW1QYWRfQWRkIiwxMDcsIlZLX0FERCIsZSxlXSxbMywxLDk0LCJOdW1wYWRFbnRlciIsMyxlLDAsZSxlLGVdLFs5NCwxLDk1LCJOdW1wYWQxIiw5NCwiTnVtUGFkMSIsOTcsIlZLX05VTVBBRDEiLGUsZV0sWzk1LDEsOTYsIk51bXBhZDIiLDk1LCJOdW1QYWQyIiw5OCwiVktfTlVNUEFEMiIsZSxlXSxbOTYsMSw5NywiTnVtcGFkMyIsOTYsIk51bVBhZDMiLDk5LCJWS19OVU1QQUQzIixlLGVdLFs5NywxLDk4LCJOdW1wYWQ0Iiw5NywiTnVtUGFkNCIsMTAwLCJWS19OVU1QQUQ0IixlLGVdLFs5OCwxLDk5LCJOdW1wYWQ1Iiw5OCwiTnVtUGFkNSIsMTAxLCJWS19OVU1QQUQ1IixlLGVdLFs5OSwxLDEwMCwiTnVtcGFkNiIsOTksIk51bVBhZDYiLDEwMiwiVktfTlVNUEFENiIsZSxlXSxbMTAwLDEsMTAxLCJOdW1wYWQ3IiwxMDAsIk51bVBhZDciLDEwMywiVktfTlVNUEFENyIsZSxlXSxbMTAxLDEsMTAyLCJOdW1wYWQ4IiwxMDEsIk51bVBhZDgiLDEwNCwiVktfTlVNUEFEOCIsZSxlXSxbMTAyLDEsMTAzLCJOdW1wYWQ5IiwxMDIsIk51bVBhZDkiLDEwNSwiVktfTlVNUEFEOSIsZSxlXSxbOTMsMSwxMDQsIk51bXBhZDAiLDkzLCJOdW1QYWQwIiw5NiwiVktfTlVNUEFEMCIsZSxlXSxbMTA3LDEsMTA1LCJOdW1wYWREZWNpbWFsIiwxMDcsIk51bVBhZF9EZWNpbWFsIiwxMTAsIlZLX0RFQ0lNQUwiLGUsZV0sWzkyLDAsMTA2LCJJbnRsQmFja3NsYXNoIiw5MiwiT0VNXzEwMiIsMjI2LCJWS19PRU1fMTAyIixlLGVdLFs1OCwxLDEwNywiQ29udGV4dE1lbnUiLDU4LCJDb250ZXh0TWVudSIsOTMsZSxlLGVdLFswLDEsMTA4LCJQb3dlciIsMCxlLDAsZSxlLGVdLFswLDEsMTA5LCJOdW1wYWRFcXVhbCIsMCxlLDAsZSxlLGVdLFs3MSwxLDExMCwiRjEzIiw3MSwiRjEzIiwxMjQsIlZLX0YxMyIsZSxlXSxbNzIsMSwxMTEsIkYxNCIsNzIsIkYxNCIsMTI1LCJWS19GMTQiLGUsZV0sWzczLDEsMTEyLCJGMTUiLDczLCJGMTUiLDEyNiwiVktfRjE1IixlLGVdLFs3NCwxLDExMywiRjE2Iiw3NCwiRjE2IiwxMjcsIlZLX0YxNiIsZSxlXSxbNzUsMSwxMTQsIkYxNyIsNzUsIkYxNyIsMTI4LCJWS19GMTciLGUsZV0sWzc2LDEsMTE1LCJGMTgiLDc2LCJGMTgiLDEyOSwiVktfRjE4IixlLGVdLFs3NywxLDExNiwiRjE5Iiw3NywiRjE5IiwxMzAsIlZLX0YxOSIsZSxlXSxbMCwxLDExNywiRjIwIiwwLGUsMCwiVktfRjIwIixlLGVdLFswLDEsMTE4LCJGMjEiLDAsZSwwLCJWS19GMjEiLGUsZV0sWzAsMSwxMTksIkYyMiIsMCxlLDAsIlZLX0YyMiIsZSxlXSxbMCwxLDEyMCwiRjIzIiwwLGUsMCwiVktfRjIzIixlLGVdLFswLDEsMTIxLCJGMjQiLDAsZSwwLCJWS19GMjQiLGUsZV0sWzAsMSwxMjIsIk9wZW4iLDAsZSwwLGUsZSxlXSxbMCwxLDEyMywiSGVscCIsMCxlLDAsZSxlLGVdLFswLDEsMTI0LCJTZWxlY3QiLDAsZSwwLGUsZSxlXSxbMCwxLDEyNSwiQWdhaW4iLDAsZSwwLGUsZSxlXSxbMCwxLDEyNiwiVW5kbyIsMCxlLDAsZSxlLGVdLFswLDEsMTI3LCJDdXQiLDAsZSwwLGUsZSxlXSxbMCwxLDEyOCwiQ29weSIsMCxlLDAsZSxlLGVdLFswLDEsMTI5LCJQYXN0ZSIsMCxlLDAsZSxlLGVdLFswLDEsMTMwLCJGaW5kIiwwLGUsMCxlLGUsZV0sWzAsMSwxMzEsIkF1ZGlvVm9sdW1lTXV0ZSIsMTEyLCJBdWRpb1ZvbHVtZU11dGUiLDE3MywiVktfVk9MVU1FX01VVEUiLGUsZV0sWzAsMSwxMzIsIkF1ZGlvVm9sdW1lVXAiLDExMywiQXVkaW9Wb2x1bWVVcCIsMTc1LCJWS19WT0xVTUVfVVAiLGUsZV0sWzAsMSwxMzMsIkF1ZGlvVm9sdW1lRG93biIsMTE0LCJBdWRpb1ZvbHVtZURvd24iLDE3NCwiVktfVk9MVU1FX0RPV04iLGUsZV0sWzEwNSwxLDEzNCwiTnVtcGFkQ29tbWEiLDEwNSwiTnVtUGFkX1NlcGFyYXRvciIsMTA4LCJWS19TRVBBUkFUT1IiLGUsZV0sWzExMCwwLDEzNSwiSW50bFJvIiwxMTAsIkFCTlRfQzEiLDE5MywiVktfQUJOVF9DMSIsZSxlXSxbMCwxLDEzNiwiS2FuYU1vZGUiLDAsZSwwLGUsZSxlXSxbMCwwLDEzNywiSW50bFllbiIsMCxlLDAsZSxlLGVdLFswLDEsMTM4LCJDb252ZXJ0IiwwLGUsMCxlLGUsZV0sWzAsMSwxMzksIk5vbkNvbnZlcnQiLDAsZSwwLGUsZSxlXSxbMCwxLDE0MCwiTGFuZzEiLDAsZSwwLGUsZSxlXSxbMCwxLDE0MSwiTGFuZzIiLDAsZSwwLGUsZSxlXSxbMCwxLDE0MiwiTGFuZzMiLDAsZSwwLGUsZSxlXSxbMCwxLDE0MywiTGFuZzQiLDAsZSwwLGUsZSxlXSxbMCwxLDE0NCwiTGFuZzUiLDAsZSwwLGUsZSxlXSxbMCwxLDE0NSwiQWJvcnQiLDAsZSwwLGUsZSxlXSxbMCwxLDE0NiwiUHJvcHMiLDAsZSwwLGUsZSxlXSxbMCwxLDE0NywiTnVtcGFkUGFyZW5MZWZ0IiwwLGUsMCxlLGUsZV0sWzAsMSwxNDgsIk51bXBhZFBhcmVuUmlnaHQiLDAsZSwwLGUsZSxlXSxbMCwxLDE0OSwiTnVtcGFkQmFja3NwYWNlIiwwLGUsMCxlLGUsZV0sWzAsMSwxNTAsIk51bXBhZE1lbW9yeVN0b3JlIiwwLGUsMCxlLGUsZV0sWzAsMSwxNTEsIk51bXBhZE1lbW9yeVJlY2FsbCIsMCxlLDAsZSxlLGVdLFswLDEsMTUyLCJOdW1wYWRNZW1vcnlDbGVhciIsMCxlLDAsZSxlLGVdLFswLDEsMTUzLCJOdW1wYWRNZW1vcnlBZGQiLDAsZSwwLGUsZSxlXSxbMCwxLDE1NCwiTnVtcGFkTWVtb3J5U3VidHJhY3QiLDAsZSwwLGUsZSxlXSxbMCwxLDE1NSwiTnVtcGFkQ2xlYXIiLDEyNiwiQ2xlYXIiLDEyLCJWS19DTEVBUiIsZSxlXSxbMCwxLDE1NiwiTnVtcGFkQ2xlYXJFbnRyeSIsMCxlLDAsZSxlLGVdLFs1LDEsMCxlLDUsIkN0cmwiLDE3LCJWS19DT05UUk9MIixlLGVdLFs0LDEsMCxlLDQsIlNoaWZ0IiwxNiwiVktfU0hJRlQiLGUsZV0sWzYsMSwwLGUsNiwiQWx0IiwxOCwiVktfTUVOVSIsZSxlXSxbNTcsMSwwLGUsNTcsIk1ldGEiLDAsIlZLX0NPTU1BTkQiLGUsZV0sWzUsMSwxNTcsIkNvbnRyb2xMZWZ0Iiw1LGUsMCwiVktfTENPTlRST0wiLGUsZV0sWzQsMSwxNTgsIlNoaWZ0TGVmdCIsNCxlLDAsIlZLX0xTSElGVCIsZSxlXSxbNiwxLDE1OSwiQWx0TGVmdCIsNixlLDAsIlZLX0xNRU5VIixlLGVdLFs1NywxLDE2MCwiTWV0YUxlZnQiLDU3LGUsMCwiVktfTFdJTiIsZSxlXSxbNSwxLDE2MSwiQ29udHJvbFJpZ2h0Iiw1LGUsMCwiVktfUkNPTlRST0wiLGUsZV0sWzQsMSwxNjIsIlNoaWZ0UmlnaHQiLDQsZSwwLCJWS19SU0hJRlQiLGUsZV0sWzYsMSwxNjMsIkFsdFJpZ2h0Iiw2LGUsMCwiVktfUk1FTlUiLGUsZV0sWzU3LDEsMTY0LCJNZXRhUmlnaHQiLDU3LGUsMCwiVktfUldJTiIsZSxlXSxbMCwxLDE2NSwiQnJpZ2h0bmVzc1VwIiwwLGUsMCxlLGUsZV0sWzAsMSwxNjYsIkJyaWdodG5lc3NEb3duIiwwLGUsMCxlLGUsZV0sWzAsMSwxNjcsIk1lZGlhUGxheSIsMCxlLDAsZSxlLGVdLFswLDEsMTY4LCJNZWRpYVJlY29yZCIsMCxlLDAsZSxlLGVdLFswLDEsMTY5LCJNZWRpYUZhc3RGb3J3YXJkIiwwLGUsMCxlLGUsZV0sWzAsMSwxNzAsIk1lZGlhUmV3aW5kIiwwLGUsMCxlLGUsZV0sWzExNCwxLDE3MSwiTWVkaWFUcmFja05leHQiLDExOSwiTWVkaWFUcmFja05leHQiLDE3NiwiVktfTUVESUFfTkVYVF9UUkFDSyIsZSxlXSxbMTE1LDEsMTcyLCJNZWRpYVRyYWNrUHJldmlvdXMiLDEyMCwiTWVkaWFUcmFja1ByZXZpb3VzIiwxNzcsIlZLX01FRElBX1BSRVZfVFJBQ0siLGUsZV0sWzExNiwxLDE3MywiTWVkaWFTdG9wIiwxMjEsIk1lZGlhU3RvcCIsMTc4LCJWS19NRURJQV9TVE9QIixlLGVdLFswLDEsMTc0LCJFamVjdCIsMCxlLDAsZSxlLGVdLFsxMTcsMSwxNzUsIk1lZGlhUGxheVBhdXNlIiwxMjIsIk1lZGlhUGxheVBhdXNlIiwxNzksIlZLX01FRElBX1BMQVlfUEFVU0UiLGUsZV0sWzAsMSwxNzYsIk1lZGlhU2VsZWN0IiwxMjMsIkxhdW5jaE1lZGlhUGxheWVyIiwxODEsIlZLX01FRElBX0xBVU5DSF9NRURJQV9TRUxFQ1QiLGUsZV0sWzAsMSwxNzcsIkxhdW5jaE1haWwiLDEyNCwiTGF1bmNoTWFpbCIsMTgwLCJWS19NRURJQV9MQVVOQ0hfTUFJTCIsZSxlXSxbMCwxLDE3OCwiTGF1bmNoQXBwMiIsMTI1LCJMYXVuY2hBcHAyIiwxODMsIlZLX01FRElBX0xBVU5DSF9BUFAyIixlLGVdLFswLDEsMTc5LCJMYXVuY2hBcHAxIiwwLGUsMCwiVktfTUVESUFfTEFVTkNIX0FQUDEiLGUsZV0sWzAsMSwxODAsIlNlbGVjdFRhc2siLDAsZSwwLGUsZSxlXSxbMCwxLDE4MSwiTGF1bmNoU2NyZWVuU2F2ZXIiLDAsZSwwLGUsZSxlXSxbMCwxLDE4MiwiQnJvd3NlclNlYXJjaCIsMTE1LCJCcm93c2VyU2VhcmNoIiwxNzAsIlZLX0JST1dTRVJfU0VBUkNIIixlLGVdLFswLDEsMTgzLCJCcm93c2VySG9tZSIsMTE2LCJCcm93c2VySG9tZSIsMTcyLCJWS19CUk9XU0VSX0hPTUUiLGUsZV0sWzExMiwxLDE4NCwiQnJvd3NlckJhY2siLDExNywiQnJvd3NlckJhY2siLDE2NiwiVktfQlJPV1NFUl9CQUNLIixlLGVdLFsxMTMsMSwxODUsIkJyb3dzZXJGb3J3YXJkIiwxMTgsIkJyb3dzZXJGb3J3YXJkIiwxNjcsIlZLX0JST1dTRVJfRk9SV0FSRCIsZSxlXSxbMCwxLDE4NiwiQnJvd3NlclN0b3AiLDAsZSwwLCJWS19CUk9XU0VSX1NUT1AiLGUsZV0sWzAsMSwxODcsIkJyb3dzZXJSZWZyZXNoIiwwLGUsMCwiVktfQlJPV1NFUl9SRUZSRVNIIixlLGVdLFswLDEsMTg4LCJCcm93c2VyRmF2b3JpdGVzIiwwLGUsMCwiVktfQlJPV1NFUl9GQVZPUklURVMiLGUsZV0sWzAsMSwxODksIlpvb21Ub2dnbGUiLDAsZSwwLGUsZSxlXSxbMCwxLDE5MCwiTWFpbFJlcGx5IiwwLGUsMCxlLGUsZV0sWzAsMSwxOTEsIk1haWxGb3J3YXJkIiwwLGUsMCxlLGUsZV0sWzAsMSwxOTIsIk1haWxTZW5kIiwwLGUsMCxlLGUsZV0sWzEwOSwxLDAsZSwxMDksIktleUluQ29tcG9zaXRpb24iLDIyOSxlLGUsZV0sWzExMSwxLDAsZSwxMTEsIkFCTlRfQzIiLDE5NCwiVktfQUJOVF9DMiIsZSxlXSxbOTEsMSwwLGUsOTEsIk9FTV84IiwyMjMsIlZLX09FTV84IixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19LQU5BIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19IQU5HVUwiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0pVTkpBIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19GSU5BTCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfSEFOSkEiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0tBTkpJIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19DT05WRVJUIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19OT05DT05WRVJUIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19BQ0NFUFQiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX01PREVDSEFOR0UiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX1NFTEVDVCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfUFJJTlQiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0VYRUNVVEUiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX1NOQVBTSE9UIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19IRUxQIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19BUFBTIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19QUk9DRVNTS0VZIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19QQUNLRVQiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0RCRV9TQkNTQ0hBUiIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfREJFX0RCQ1NDSEFSIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19BVFROIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19DUlNFTCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfRVhTRUwiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0VSRU9GIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19QTEFZIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19aT09NIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19OT05BTUUiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX1BBMSIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfT0VNX0NMRUFSIixlLGVdXSxuPVtdLHI9W107Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3RbdCxpLGEsbyxzLGwsYyxoLGQsdV09ZTtpZihyW2FdfHwoclthXT0hMCxEdFtvXT1hLFd0W28udG9Mb3dlckNhc2UoKV09YSksIW5bc10pe2lmKG5bc109ITAsIWwpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgcmVwcmVzZW50YXRpb24gbWlzc2luZyBmb3Iga2V5IGNvZGUgJHtzfSBhcm91bmQgc2NhbiBjb2RlICR7b31gKTtOdC5kZWZpbmUocyxsKSxVdC5kZWZpbmUocyxkfHxsKSxIdC5kZWZpbmUocyx1fHxkfHxsKX1jJiYoenRbY109cyl9fSgpLGZ1bmN0aW9uKGUpe2UudG9TdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIE50LmtleUNvZGVUb1N0cihlKX0sZS5mcm9tU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiBOdC5zdHJUb0tleUNvZGUoZSl9LGUudG9Vc2VyU2V0dGluZ3NVUz1mdW5jdGlvbihlKXtyZXR1cm4gVXQua2V5Q29kZVRvU3RyKGUpfSxlLnRvVXNlclNldHRpbmdzR2VuZXJhbD1mdW5jdGlvbihlKXtyZXR1cm4gSHQua2V5Q29kZVRvU3RyKGUpfSxlLmZyb21Vc2VyU2V0dGluZ3M9ZnVuY3Rpb24oZSl7cmV0dXJuIFV0LnN0clRvS2V5Q29kZShlKXx8SHQuc3RyVG9LZXlDb2RlKGUpfSxlLnRvRWxlY3Ryb25BY2NlbGVyYXRvcj1mdW5jdGlvbihlKXtpZihlPj05MyYmZTw9MTA4KXJldHVybiBudWxsO3N3aXRjaChlKXtjYXNlIDE2OnJldHVybiJVcCI7Y2FzZSAxODpyZXR1cm4iRG93biI7Y2FzZSAxNTpyZXR1cm4iTGVmdCI7Y2FzZSAxNzpyZXR1cm4iUmlnaHQifXJldHVybiBOdC5rZXlDb2RlVG9TdHIoZSl9fShPdHx8KE90PXt9KSk7Y2xhc3MgcXQgZXh0ZW5kcyB0dHtjb25zdHJ1Y3RvcihlLHQsbixyKXtzdXBlcihlLHQsbixyKSx0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj1lLHRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW49dCx0aGlzLnBvc2l0aW9uTGluZU51bWJlcj1uLHRoaXMucG9zaXRpb25Db2x1bW49cn10b1N0cmluZygpe3JldHVybiJbIit0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcisiLCIrdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbisiIC0+ICIrdGhpcy5wb3NpdGlvbkxpbmVOdW1iZXIrIiwiK3RoaXMucG9zaXRpb25Db2x1bW4rIl0ifWVxdWFsc1NlbGVjdGlvbihlKXtyZXR1cm4gcXQuc2VsZWN0aW9uc0VxdWFsKHRoaXMsZSl9c3RhdGljIHNlbGVjdGlvbnNFcXVhbChlLHQpe3JldHVybiBlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj09PXQuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyJiZlLnNlbGVjdGlvblN0YXJ0Q29sdW1uPT09dC5zZWxlY3Rpb25TdGFydENvbHVtbiYmZS5wb3NpdGlvbkxpbmVOdW1iZXI9PT10LnBvc2l0aW9uTGluZU51bWJlciYmZS5wb3NpdGlvbkNvbHVtbj09PXQucG9zaXRpb25Db2x1bW59Z2V0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT09dGhpcy5zdGFydExpbmVOdW1iZXImJnRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW49PT10aGlzLnN0YXJ0Q29sdW1uPzA6MX1zZXRFbmRQb3NpdGlvbihlLHQpe3JldHVybiAwPT09dGhpcy5nZXREaXJlY3Rpb24oKT9uZXcgcXQodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbixlLHQpOm5ldyBxdChlLHQsdGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbil9Z2V0UG9zaXRpb24oKXtyZXR1cm4gbmV3IGV0KHRoaXMucG9zaXRpb25MaW5lTnVtYmVyLHRoaXMucG9zaXRpb25Db2x1bW4pfWdldFNlbGVjdGlvblN0YXJ0KCl7cmV0dXJuIG5ldyBldCh0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcix0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKX1zZXRTdGFydFBvc2l0aW9uKGUsdCl7cmV0dXJuIDA9PT10aGlzLmdldERpcmVjdGlvbigpP25ldyBxdChlLHQsdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKTpuZXcgcXQodGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uLGUsdCl9c3RhdGljIGZyb21Qb3NpdGlvbnMoZSx0PWUpe3JldHVybiBuZXcgcXQoZS5saW5lTnVtYmVyLGUuY29sdW1uLHQubGluZU51bWJlcix0LmNvbHVtbil9c3RhdGljIGZyb21SYW5nZShlLHQpe3JldHVybiAwPT09dD9uZXcgcXQoZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbixlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pOm5ldyBxdChlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4sZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbil9c3RhdGljIGxpZnRTZWxlY3Rpb24oZSl7cmV0dXJuIG5ldyBxdChlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcixlLnNlbGVjdGlvblN0YXJ0Q29sdW1uLGUucG9zaXRpb25MaW5lTnVtYmVyLGUucG9zaXRpb25Db2x1bW4pfXN0YXRpYyBzZWxlY3Rpb25zQXJyRXF1YWwoZSx0KXtpZihlJiYhdHx8IWUmJnQpcmV0dXJuITE7aWYoIWUmJiF0KXJldHVybiEwO2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKCF0aGlzLnNlbGVjdGlvbnNFcXVhbChlW25dLHRbbl0pKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBpc0lTZWxlY3Rpb24oZSl7cmV0dXJuIGUmJiJudW1iZXIiPT10eXBlb2YgZS5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5zZWxlY3Rpb25TdGFydENvbHVtbiYmIm51bWJlciI9PXR5cGVvZiBlLnBvc2l0aW9uTGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnBvc2l0aW9uQ29sdW1ufXN0YXRpYyBjcmVhdGVXaXRoRGlyZWN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIDA9PT1pP25ldyBxdChlLHQsbixyKTpuZXcgcXQobixyLGUsdCl9fWNsYXNzIEZ0e2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmlkPWUsdGhpcy5kZWZpbml0aW9uPXQsdGhpcy5kZXNjcmlwdGlvbj1uLEZ0Ll9hbGxDb2RpY29ucy5wdXNoKHRoaXMpfWdldCBjbGFzc05hbWVzKCl7cmV0dXJuImNvZGljb24gY29kaWNvbi0iK3RoaXMuaWR9Z2V0IGNsYXNzTmFtZXNBcnJheSgpe3JldHVyblsiY29kaWNvbiIsImNvZGljb24tIit0aGlzLmlkXX1nZXQgY3NzU2VsZWN0b3IoKXtyZXR1cm4iLmNvZGljb24uY29kaWNvbi0iK3RoaXMuaWR9c3RhdGljIGdldEFsbCgpe3JldHVybiBGdC5fYWxsQ29kaWNvbnN9fUZ0Ll9hbGxDb2RpY29ucz1bXSxGdC5hZGQ9bmV3IEZ0KCJhZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjAifSksRnQucGx1cz1uZXcgRnQoInBsdXMiLEZ0LmFkZC5kZWZpbml0aW9uKSxGdC5naXN0TmV3PW5ldyBGdCgiZ2lzdC1uZXciLEZ0LmFkZC5kZWZpbml0aW9uKSxGdC5yZXBvQ3JlYXRlPW5ldyBGdCgicmVwby1jcmVhdGUiLEZ0LmFkZC5kZWZpbml0aW9uKSxGdC5saWdodGJ1bGI9bmV3IEZ0KCJsaWdodGJ1bGIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjEifSksRnQubGlnaHRCdWxiPW5ldyBGdCgibGlnaHQtYnVsYiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MSJ9KSxGdC5yZXBvPW5ldyBGdCgicmVwbyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MiJ9KSxGdC5yZXBvRGVsZXRlPW5ldyBGdCgicmVwby1kZWxldGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjIifSksRnQuZ2lzdEZvcms9bmV3IEZ0KCJnaXN0LWZvcmsiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjMifSksRnQucmVwb0ZvcmtlZD1uZXcgRnQoInJlcG8tZm9ya2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYTYzIn0pLEZ0LmdpdFB1bGxSZXF1ZXN0PW5ldyBGdCgiZ2l0LXB1bGwtcmVxdWVzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NCJ9KSxGdC5naXRQdWxsUmVxdWVzdEFiYW5kb25lZD1uZXcgRnQoImdpdC1wdWxsLXJlcXVlc3QtYWJhbmRvbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY0In0pLEZ0LnJlY29yZEtleXM9bmV3IEZ0KCJyZWNvcmQta2V5cyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NSJ9KSxGdC5rZXlib2FyZD1uZXcgRnQoImtleWJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY1In0pLEZ0LnRhZz1uZXcgRnQoInRhZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NiJ9KSxGdC50YWdBZGQ9bmV3IEZ0KCJ0YWctYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY2In0pLEZ0LnRhZ1JlbW92ZT1uZXcgRnQoInRhZy1yZW1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjYifSksRnQucGVyc29uPW5ldyBGdCgicGVyc29uIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLEZ0LnBlcnNvbkZvbGxvdz1uZXcgRnQoInBlcnNvbi1mb2xsb3ciLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksRnQucGVyc29uT3V0bGluZT1uZXcgRnQoInBlcnNvbi1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLEZ0LnBlcnNvbkZpbGxlZD1uZXcgRnQoInBlcnNvbi1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksRnQuZ2l0QnJhbmNoPW5ldyBGdCgiZ2l0LWJyYW5jaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxGdC5naXRCcmFuY2hDcmVhdGU9bmV3IEZ0KCJnaXQtYnJhbmNoLWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxGdC5naXRCcmFuY2hEZWxldGU9bmV3IEZ0KCJnaXQtYnJhbmNoLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxGdC5zb3VyY2VDb250cm9sPW5ldyBGdCgic291cmNlLWNvbnRyb2wiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjgifSksRnQubWlycm9yPW5ldyBGdCgibWlycm9yIix7Zm9udENoYXJhY3RlcjoiXFxlYTY5In0pLEZ0Lm1pcnJvclB1YmxpYz1uZXcgRnQoIm1pcnJvci1wdWJsaWMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjkifSksRnQuc3Rhcj1uZXcgRnQoInN0YXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksRnQuc3RhckFkZD1uZXcgRnQoInN0YXItYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTZhIn0pLEZ0LnN0YXJEZWxldGU9bmV3IEZ0KCJzdGFyLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YSJ9KSxGdC5zdGFyRW1wdHk9bmV3IEZ0KCJzdGFyLWVtcHR5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZhIn0pLEZ0LmNvbW1lbnQ9bmV3IEZ0KCJjb21tZW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZiIn0pLEZ0LmNvbW1lbnRBZGQ9bmV3IEZ0KCJjb21tZW50LWFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YiJ9KSxGdC5hbGVydD1uZXcgRnQoImFsZXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZjIn0pLEZ0Lndhcm5pbmc9bmV3IEZ0KCJ3YXJuaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYTZjIn0pLEZ0LnNlYXJjaD1uZXcgRnQoInNlYXJjaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZCJ9KSxGdC5zZWFyY2hTYXZlPW5ldyBGdCgic2VhcmNoLXNhdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmQifSksRnQubG9nT3V0PW5ldyBGdCgibG9nLW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZSJ9KSxGdC5zaWduT3V0PW5ldyBGdCgic2lnbi1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmUifSksRnQubG9nSW49bmV3IEZ0KCJsb2ctaW4iLHtmb250Q2hhcmFjdGVyOiJcXGVhNmYifSksRnQuc2lnbkluPW5ldyBGdCgic2lnbi1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZiJ9KSxGdC5leWU9bmV3IEZ0KCJleWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksRnQuZXllVW53YXRjaD1uZXcgRnQoImV5ZS11bndhdGNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTcwIn0pLEZ0LmV5ZVdhdGNoPW5ldyBGdCgiZXllLXdhdGNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTcwIn0pLEZ0LmNpcmNsZUZpbGxlZD1uZXcgRnQoImNpcmNsZS1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksRnQucHJpbWl0aXZlRG90PW5ldyBGdCgicHJpbWl0aXZlLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxGdC5jbG9zZURpcnR5PW5ldyBGdCgiY2xvc2UtZGlydHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksRnQuZGVidWdCcmVha3BvaW50PW5ldyBGdCgiZGVidWctYnJlYWtwb2ludCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxGdC5kZWJ1Z0JyZWFrcG9pbnREaXNhYmxlZD1uZXcgRnQoImRlYnVnLWJyZWFrcG9pbnQtZGlzYWJsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksRnQuZGVidWdIaW50PW5ldyBGdCgiZGVidWctaGludCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxGdC5wcmltaXRpdmVTcXVhcmU9bmV3IEZ0KCJwcmltaXRpdmUtc3F1YXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYTcyIn0pLEZ0LmVkaXQ9bmV3IEZ0KCJlZGl0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTczIn0pLEZ0LnBlbmNpbD1uZXcgRnQoInBlbmNpbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MyJ9KSxGdC5pbmZvPW5ldyBGdCgiaW5mbyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NCJ9KSxGdC5pc3N1ZU9wZW5lZD1uZXcgRnQoImlzc3VlLW9wZW5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NCJ9KSxGdC5naXN0UHJpdmF0ZT1uZXcgRnQoImdpc3QtcHJpdmF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NSJ9KSxGdC5naXRGb3JrUHJpdmF0ZT1uZXcgRnQoImdpdC1mb3JrLXByaXZhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzUifSksRnQubG9jaz1uZXcgRnQoImxvY2siLHtmb250Q2hhcmFjdGVyOiJcXGVhNzUifSksRnQubWlycm9yUHJpdmF0ZT1uZXcgRnQoIm1pcnJvci1wcml2YXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLEZ0LmNsb3NlPW5ldyBGdCgiY2xvc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksRnQucmVtb3ZlQ2xvc2U9bmV3IEZ0KCJyZW1vdmUtY2xvc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksRnQueD1uZXcgRnQoIngiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksRnQucmVwb1N5bmM9bmV3IEZ0KCJyZXBvLXN5bmMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzcifSksRnQuc3luYz1uZXcgRnQoInN5bmMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzcifSksRnQuY2xvbmU9bmV3IEZ0KCJjbG9uZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OCJ9KSxGdC5kZXNrdG9wRG93bmxvYWQ9bmV3IEZ0KCJkZXNrdG9wLWRvd25sb2FkIix7Zm9udENoYXJhY3RlcjoiXFxlYTc4In0pLEZ0LmJlYWtlcj1uZXcgRnQoImJlYWtlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OSJ9KSxGdC5taWNyb3Njb3BlPW5ldyBGdCgibWljcm9zY29wZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OSJ9KSxGdC52bT1uZXcgRnQoInZtIix7Zm9udENoYXJhY3RlcjoiXFxlYTdhIn0pLEZ0LmRldmljZURlc2t0b3A9bmV3IEZ0KCJkZXZpY2UtZGVza3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YSJ9KSxGdC5maWxlPW5ldyBGdCgiZmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YiJ9KSxGdC5maWxlVGV4dD1uZXcgRnQoImZpbGUtdGV4dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YiJ9KSxGdC5tb3JlPW5ldyBGdCgibW9yZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YyJ9KSxGdC5lbGxpcHNpcz1uZXcgRnQoImVsbGlwc2lzIix7Zm9udENoYXJhY3RlcjoiXFxlYTdjIn0pLEZ0LmtlYmFiSG9yaXpvbnRhbD1uZXcgRnQoImtlYmFiLWhvcml6b250YWwiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2MifSksRnQubWFpbFJlcGx5PW5ldyBGdCgibWFpbC1yZXBseSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZCJ9KSxGdC5yZXBseT1uZXcgRnQoInJlcGx5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTdkIn0pLEZ0Lm9yZ2FuaXphdGlvbj1uZXcgRnQoIm9yZ2FuaXphdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxGdC5vcmdhbml6YXRpb25GaWxsZWQ9bmV3IEZ0KCJvcmdhbml6YXRpb24tZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTdlIn0pLEZ0Lm9yZ2FuaXphdGlvbk91dGxpbmU9bmV3IEZ0KCJvcmdhbml6YXRpb24tb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxGdC5uZXdGaWxlPW5ldyBGdCgibmV3LWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2YifSksRnQuZmlsZUFkZD1uZXcgRnQoImZpbGUtYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTdmIn0pLEZ0Lm5ld0ZvbGRlcj1uZXcgRnQoIm5ldy1mb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODAifSksRnQuZmlsZURpcmVjdG9yeUNyZWF0ZT1uZXcgRnQoImZpbGUtZGlyZWN0b3J5LWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MCJ9KSxGdC50cmFzaD1uZXcgRnQoInRyYXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTgxIn0pLEZ0LnRyYXNoY2FuPW5ldyBGdCgidHJhc2hjYW4iLHtmb250Q2hhcmFjdGVyOiJcXGVhODEifSksRnQuaGlzdG9yeT1uZXcgRnQoImhpc3RvcnkiLHtmb250Q2hhcmFjdGVyOiJcXGVhODIifSksRnQuY2xvY2s9bmV3IEZ0KCJjbG9jayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MiJ9KSxGdC5mb2xkZXI9bmV3IEZ0KCJmb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODMifSksRnQuZmlsZURpcmVjdG9yeT1uZXcgRnQoImZpbGUtZGlyZWN0b3J5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTgzIn0pLEZ0LnN5bWJvbEZvbGRlcj1uZXcgRnQoInN5bWJvbC1mb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODMifSksRnQubG9nb0dpdGh1Yj1uZXcgRnQoImxvZ28tZ2l0aHViIix7Zm9udENoYXJhY3RlcjoiXFxlYTg0In0pLEZ0Lm1hcmtHaXRodWI9bmV3IEZ0KCJtYXJrLWdpdGh1YiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NCJ9KSxGdC5naXRodWI9bmV3IEZ0KCJnaXRodWIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODQifSksRnQudGVybWluYWw9bmV3IEZ0KCJ0ZXJtaW5hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxGdC5jb25zb2xlPW5ldyBGdCgiY29uc29sZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxGdC5yZXBsPW5ldyBGdCgicmVwbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxGdC56YXA9bmV3IEZ0KCJ6YXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhODYifSksRnQuc3ltYm9sRXZlbnQ9bmV3IEZ0KCJzeW1ib2wtZXZlbnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhODYifSksRnQuZXJyb3I9bmV3IEZ0KCJlcnJvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NyJ9KSxGdC5zdG9wPW5ldyBGdCgic3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NyJ9KSxGdC52YXJpYWJsZT1uZXcgRnQoInZhcmlhYmxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTg4In0pLEZ0LnN5bWJvbFZhcmlhYmxlPW5ldyBGdCgic3ltYm9sLXZhcmlhYmxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTg4In0pLEZ0LmFycmF5PW5ldyBGdCgiYXJyYXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGEifSksRnQuc3ltYm9sQXJyYXk9bmV3IEZ0KCJzeW1ib2wtYXJyYXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGEifSksRnQuc3ltYm9sTW9kdWxlPW5ldyBGdCgic3ltYm9sLW1vZHVsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxGdC5zeW1ib2xQYWNrYWdlPW5ldyBGdCgic3ltYm9sLXBhY2thZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksRnQuc3ltYm9sTmFtZXNwYWNlPW5ldyBGdCgic3ltYm9sLW5hbWVzcGFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxGdC5zeW1ib2xPYmplY3Q9bmV3IEZ0KCJzeW1ib2wtb2JqZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYThiIn0pLEZ0LnN5bWJvbE1ldGhvZD1uZXcgRnQoInN5bWJvbC1tZXRob2QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksRnQuc3ltYm9sRnVuY3Rpb249bmV3IEZ0KCJzeW1ib2wtZnVuY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksRnQuc3ltYm9sQ29uc3RydWN0b3I9bmV3IEZ0KCJzeW1ib2wtY29uc3RydWN0b3IiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksRnQuc3ltYm9sQm9vbGVhbj1uZXcgRnQoInN5bWJvbC1ib29sZWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYThmIn0pLEZ0LnN5bWJvbE51bGw9bmV3IEZ0KCJzeW1ib2wtbnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4ZiJ9KSxGdC5zeW1ib2xOdW1lcmljPW5ldyBGdCgic3ltYm9sLW51bWVyaWMiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTAifSksRnQuc3ltYm9sTnVtYmVyPW5ldyBGdCgic3ltYm9sLW51bWJlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MCJ9KSxGdC5zeW1ib2xTdHJ1Y3R1cmU9bmV3IEZ0KCJzeW1ib2wtc3RydWN0dXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYTkxIn0pLEZ0LnN5bWJvbFN0cnVjdD1uZXcgRnQoInN5bWJvbC1zdHJ1Y3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTEifSksRnQuc3ltYm9sUGFyYW1ldGVyPW5ldyBGdCgic3ltYm9sLXBhcmFtZXRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MiJ9KSxGdC5zeW1ib2xUeXBlUGFyYW1ldGVyPW5ldyBGdCgic3ltYm9sLXR5cGUtcGFyYW1ldGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkyIn0pLEZ0LnN5bWJvbEtleT1uZXcgRnQoInN5bWJvbC1rZXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTMifSksRnQuc3ltYm9sVGV4dD1uZXcgRnQoInN5bWJvbC10ZXh0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTkzIn0pLEZ0LnN5bWJvbFJlZmVyZW5jZT1uZXcgRnQoInN5bWJvbC1yZWZlcmVuY2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTQifSksRnQuZ29Ub0ZpbGU9bmV3IEZ0KCJnby10by1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTk0In0pLEZ0LnN5bWJvbEVudW09bmV3IEZ0KCJzeW1ib2wtZW51bSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NSJ9KSxGdC5zeW1ib2xWYWx1ZT1uZXcgRnQoInN5bWJvbC12YWx1ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NSJ9KSxGdC5zeW1ib2xSdWxlcj1uZXcgRnQoInN5bWJvbC1ydWxlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NiJ9KSxGdC5zeW1ib2xVbml0PW5ldyBGdCgic3ltYm9sLXVuaXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTYifSksRnQuYWN0aXZhdGVCcmVha3BvaW50cz1uZXcgRnQoImFjdGl2YXRlLWJyZWFrcG9pbnRzIix7Zm9udENoYXJhY3RlcjoiXFxlYTk3In0pLEZ0LmFyY2hpdmU9bmV3IEZ0KCJhcmNoaXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYTk4In0pLEZ0LmFycm93Qm90aD1uZXcgRnQoImFycm93LWJvdGgiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTkifSksRnQuYXJyb3dEb3duPW5ldyBGdCgiYXJyb3ctZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YSJ9KSxGdC5hcnJvd0xlZnQ9bmV3IEZ0KCJhcnJvdy1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTliIn0pLEZ0LmFycm93UmlnaHQ9bmV3IEZ0KCJhcnJvdy1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YyJ9KSxGdC5hcnJvd1NtYWxsRG93bj1uZXcgRnQoImFycm93LXNtYWxsLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOWQifSksRnQuYXJyb3dTbWFsbExlZnQ9bmV3IEZ0KCJhcnJvdy1zbWFsbC1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTllIn0pLEZ0LmFycm93U21hbGxSaWdodD1uZXcgRnQoImFycm93LXNtYWxsLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTlmIn0pLEZ0LmFycm93U21hbGxVcD1uZXcgRnQoImFycm93LXNtYWxsLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWEwIn0pLEZ0LmFycm93VXA9bmV3IEZ0KCJhcnJvdy11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMSJ9KSxGdC5iZWxsPW5ldyBGdCgiYmVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMiJ9KSxGdC5ib2xkPW5ldyBGdCgiYm9sZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMyJ9KSxGdC5ib29rPW5ldyBGdCgiYm9vayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNCJ9KSxGdC5ib29rbWFyaz1uZXcgRnQoImJvb2ttYXJrIix7Zm9udENoYXJhY3RlcjoiXFxlYWE1In0pLEZ0LmRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsVW52ZXJpZmllZD1uZXcgRnQoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNiJ9KSxGdC5kZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbD1uZXcgRnQoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTcifSksRnQuZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWxEaXNhYmxlZD1uZXcgRnQoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwtZGlzYWJsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTcifSksRnQuZGVidWdCcmVha3BvaW50RGF0YVVudmVyaWZpZWQ9bmV3IEZ0KCJkZWJ1Zy1icmVha3BvaW50LWRhdGEtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOCJ9KSxGdC5kZWJ1Z0JyZWFrcG9pbnREYXRhPW5ldyBGdCgiZGVidWctYnJlYWtwb2ludC1kYXRhIix7Zm9udENoYXJhY3RlcjoiXFxlYWE5In0pLEZ0LmRlYnVnQnJlYWtwb2ludERhdGFEaXNhYmxlZD1uZXcgRnQoImRlYnVnLWJyZWFrcG9pbnQtZGF0YS1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOSJ9KSxGdC5kZWJ1Z0JyZWFrcG9pbnRMb2dVbnZlcmlmaWVkPW5ldyBGdCgiZGVidWctYnJlYWtwb2ludC1sb2ctdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYSJ9KSxGdC5kZWJ1Z0JyZWFrcG9pbnRMb2c9bmV3IEZ0KCJkZWJ1Zy1icmVha3BvaW50LWxvZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYiJ9KSxGdC5kZWJ1Z0JyZWFrcG9pbnRMb2dEaXNhYmxlZD1uZXcgRnQoImRlYnVnLWJyZWFrcG9pbnQtbG9nLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWFiIn0pLEZ0LmJyaWVmY2FzZT1uZXcgRnQoImJyaWVmY2FzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYyJ9KSxGdC5icm9hZGNhc3Q9bmV3IEZ0KCJicm9hZGNhc3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWQifSksRnQuYnJvd3Nlcj1uZXcgRnQoImJyb3dzZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWUifSksRnQuYnVnPW5ldyBGdCgiYnVnIix7Zm9udENoYXJhY3RlcjoiXFxlYWFmIn0pLEZ0LmNhbGVuZGFyPW5ldyBGdCgiY2FsZW5kYXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjAifSksRnQuY2FzZVNlbnNpdGl2ZT1uZXcgRnQoImNhc2Utc2Vuc2l0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYWIxIn0pLEZ0LmNoZWNrPW5ldyBGdCgiY2hlY2siLHtmb250Q2hhcmFjdGVyOiJcXGVhYjIifSksRnQuY2hlY2tsaXN0PW5ldyBGdCgiY2hlY2tsaXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWIzIn0pLEZ0LmNoZXZyb25Eb3duPW5ldyBGdCgiY2hldnJvbi1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYWI0In0pLEZ0LmRyb3BEb3duQnV0dG9uPW5ldyBGdCgiZHJvcC1kb3duLWJ1dHRvbiIsRnQuY2hldnJvbkRvd24uZGVmaW5pdGlvbiksRnQuY2hldnJvbkxlZnQ9bmV3IEZ0KCJjaGV2cm9uLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjUifSksRnQuY2hldnJvblJpZ2h0PW5ldyBGdCgiY2hldnJvbi1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiNiJ9KSxGdC5jaGV2cm9uVXA9bmV3IEZ0KCJjaGV2cm9uLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWI3In0pLEZ0LmNocm9tZUNsb3NlPW5ldyBGdCgiY2hyb21lLWNsb3NlIix7Zm9udENoYXJhY3RlcjoiXFxlYWI4In0pLEZ0LmNocm9tZU1heGltaXplPW5ldyBGdCgiY2hyb21lLW1heGltaXplIix7Zm9udENoYXJhY3RlcjoiXFxlYWI5In0pLEZ0LmNocm9tZU1pbmltaXplPW5ldyBGdCgiY2hyb21lLW1pbmltaXplIix7Zm9udENoYXJhY3RlcjoiXFxlYWJhIn0pLEZ0LmNocm9tZVJlc3RvcmU9bmV3IEZ0KCJjaHJvbWUtcmVzdG9yZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYiJ9KSxGdC5jaXJjbGVPdXRsaW5lPW5ldyBGdCgiY2lyY2xlLW91dGxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmMifSksRnQuZGVidWdCcmVha3BvaW50VW52ZXJpZmllZD1uZXcgRnQoImRlYnVnLWJyZWFrcG9pbnQtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYyJ9KSxGdC5jaXJjbGVTbGFzaD1uZXcgRnQoImNpcmNsZS1zbGFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiZCJ9KSxGdC5jaXJjdWl0Qm9hcmQ9bmV3IEZ0KCJjaXJjdWl0LWJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYWJlIn0pLEZ0LmNsZWFyQWxsPW5ldyBGdCgiY2xlYXItYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWJmIn0pLEZ0LmNsaXBweT1uZXcgRnQoImNsaXBweSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMCJ9KSxGdC5jbG9zZUFsbD1uZXcgRnQoImNsb3NlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMSJ9KSxGdC5jbG91ZERvd25sb2FkPW5ldyBGdCgiY2xvdWQtZG93bmxvYWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzIifSksRnQuY2xvdWRVcGxvYWQ9bmV3IEZ0KCJjbG91ZC11cGxvYWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzMifSksRnQuY29kZT1uZXcgRnQoImNvZGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzQifSksRnQuY29sbGFwc2VBbGw9bmV3IEZ0KCJjb2xsYXBzZS1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzUifSksRnQuY29sb3JNb2RlPW5ldyBGdCgiY29sb3ItbW9kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNiJ9KSxGdC5jb21tZW50RGlzY3Vzc2lvbj1uZXcgRnQoImNvbW1lbnQtZGlzY3Vzc2lvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNyJ9KSxGdC5jb21wYXJlQ2hhbmdlcz1uZXcgRnQoImNvbXBhcmUtY2hhbmdlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZCJ9KSxGdC5jcmVkaXRDYXJkPW5ldyBGdCgiY3JlZGl0LWNhcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzkifSksRnQuZGFzaD1uZXcgRnQoImRhc2giLHtmb250Q2hhcmFjdGVyOiJcXGVhY2MifSksRnQuZGFzaGJvYXJkPW5ldyBGdCgiZGFzaGJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYWNkIn0pLEZ0LmRhdGFiYXNlPW5ldyBGdCgiZGF0YWJhc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2UifSksRnQuZGVidWdDb250aW51ZT1uZXcgRnQoImRlYnVnLWNvbnRpbnVlIix7Zm9udENoYXJhY3RlcjoiXFxlYWNmIn0pLEZ0LmRlYnVnRGlzY29ubmVjdD1uZXcgRnQoImRlYnVnLWRpc2Nvbm5lY3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDAifSksRnQuZGVidWdQYXVzZT1uZXcgRnQoImRlYnVnLXBhdXNlIix7Zm9udENoYXJhY3RlcjoiXFxlYWQxIn0pLEZ0LmRlYnVnUmVzdGFydD1uZXcgRnQoImRlYnVnLXJlc3RhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDIifSksRnQuZGVidWdTdGFydD1uZXcgRnQoImRlYnVnLXN0YXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWQzIn0pLEZ0LmRlYnVnU3RlcEludG89bmV3IEZ0KCJkZWJ1Zy1zdGVwLWludG8iLHtmb250Q2hhcmFjdGVyOiJcXGVhZDQifSksRnQuZGVidWdTdGVwT3V0PW5ldyBGdCgiZGVidWctc3RlcC1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDUifSksRnQuZGVidWdTdGVwT3Zlcj1uZXcgRnQoImRlYnVnLXN0ZXAtb3ZlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNiJ9KSxGdC5kZWJ1Z1N0b3A9bmV3IEZ0KCJkZWJ1Zy1zdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ3In0pLEZ0LmRlYnVnPW5ldyBGdCgiZGVidWciLHtmb250Q2hhcmFjdGVyOiJcXGVhZDgifSksRnQuZGV2aWNlQ2FtZXJhVmlkZW89bmV3IEZ0KCJkZXZpY2UtY2FtZXJhLXZpZGVvIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ5In0pLEZ0LmRldmljZUNhbWVyYT1uZXcgRnQoImRldmljZS1jYW1lcmEiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGEifSksRnQuZGV2aWNlTW9iaWxlPW5ldyBGdCgiZGV2aWNlLW1vYmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkYiJ9KSxGdC5kaWZmQWRkZWQ9bmV3IEZ0KCJkaWZmLWFkZGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRjIn0pLEZ0LmRpZmZJZ25vcmVkPW5ldyBGdCgiZGlmZi1pZ25vcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRkIn0pLEZ0LmRpZmZNb2RpZmllZD1uZXcgRnQoImRpZmYtbW9kaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGUifSksRnQuZGlmZlJlbW92ZWQ9bmV3IEZ0KCJkaWZmLXJlbW92ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGYifSksRnQuZGlmZlJlbmFtZWQ9bmV3IEZ0KCJkaWZmLXJlbmFtZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTAifSksRnQuZGlmZj1uZXcgRnQoImRpZmYiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTEifSksRnQuZGlzY2FyZD1uZXcgRnQoImRpc2NhcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTIifSksRnQuZWRpdG9yTGF5b3V0PW5ldyBGdCgiZWRpdG9yLWxheW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMyJ9KSxGdC5lbXB0eVdpbmRvdz1uZXcgRnQoImVtcHR5LXdpbmRvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNCJ9KSxGdC5leGNsdWRlPW5ldyBGdCgiZXhjbHVkZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNSJ9KSxGdC5leHRlbnNpb25zPW5ldyBGdCgiZXh0ZW5zaW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNiJ9KSxGdC5leWVDbG9zZWQ9bmV3IEZ0KCJleWUtY2xvc2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYWU3In0pLEZ0LmZpbGVCaW5hcnk9bmV3IEZ0KCJmaWxlLWJpbmFyeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlOCJ9KSxGdC5maWxlQ29kZT1uZXcgRnQoImZpbGUtY29kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlOSJ9KSxGdC5maWxlTWVkaWE9bmV3IEZ0KCJmaWxlLW1lZGlhIix7Zm9udENoYXJhY3RlcjoiXFxlYWVhIn0pLEZ0LmZpbGVQZGY9bmV3IEZ0KCJmaWxlLXBkZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlYiJ9KSxGdC5maWxlU3VibW9kdWxlPW5ldyBGdCgiZmlsZS1zdWJtb2R1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWMifSksRnQuZmlsZVN5bWxpbmtEaXJlY3Rvcnk9bmV3IEZ0KCJmaWxlLXN5bWxpbmstZGlyZWN0b3J5Iix7Zm9udENoYXJhY3RlcjoiXFxlYWVkIn0pLEZ0LmZpbGVTeW1saW5rRmlsZT1uZXcgRnQoImZpbGUtc3ltbGluay1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYWVlIn0pLEZ0LmZpbGVaaXA9bmV3IEZ0KCJmaWxlLXppcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlZiJ9KSxGdC5maWxlcz1uZXcgRnQoImZpbGVzIix7Zm9udENoYXJhY3RlcjoiXFxlYWYwIn0pLEZ0LmZpbHRlcj1uZXcgRnQoImZpbHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmMSJ9KSxGdC5mbGFtZT1uZXcgRnQoImZsYW1lIix7Zm9udENoYXJhY3RlcjoiXFxlYWYyIn0pLEZ0LmZvbGREb3duPW5ldyBGdCgiZm9sZC1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYWYzIn0pLEZ0LmZvbGRVcD1uZXcgRnQoImZvbGQtdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjQifSksRnQuZm9sZD1uZXcgRnQoImZvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjUifSksRnQuZm9sZGVyQWN0aXZlPW5ldyBGdCgiZm9sZGVyLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmNiJ9KSxGdC5mb2xkZXJPcGVuZWQ9bmV3IEZ0KCJmb2xkZXItb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWY3In0pLEZ0LmdlYXI9bmV3IEZ0KCJnZWFyIix7Zm9udENoYXJhY3RlcjoiXFxlYWY4In0pLEZ0LmdpZnQ9bmV3IEZ0KCJnaWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWY5In0pLEZ0Lmdpc3RTZWNyZXQ9bmV3IEZ0KCJnaXN0LXNlY3JldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYSJ9KSxGdC5naXN0PW5ldyBGdCgiZ2lzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYiJ9KSxGdC5naXRDb21taXQ9bmV3IEZ0KCJnaXQtY29tbWl0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWZjIn0pLEZ0LmdpdENvbXBhcmU9bmV3IEZ0KCJnaXQtY29tcGFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZCJ9KSxGdC5naXRNZXJnZT1uZXcgRnQoImdpdC1tZXJnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZSJ9KSxGdC5naXRodWJBY3Rpb249bmV3IEZ0KCJnaXRodWItYWN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYWZmIn0pLEZ0LmdpdGh1YkFsdD1uZXcgRnQoImdpdGh1Yi1hbHQiLHtmb250Q2hhcmFjdGVyOiJcXGViMDAifSksRnQuZ2xvYmU9bmV3IEZ0KCJnbG9iZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwMSJ9KSxGdC5ncmFiYmVyPW5ldyBGdCgiZ3JhYmJlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwMiJ9KSxGdC5ncmFwaD1uZXcgRnQoImdyYXBoIix7Zm9udENoYXJhY3RlcjoiXFxlYjAzIn0pLEZ0LmdyaXBwZXI9bmV3IEZ0KCJncmlwcGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjA0In0pLEZ0LmhlYXJ0PW5ldyBGdCgiaGVhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViMDUifSksRnQuaG9tZT1uZXcgRnQoImhvbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDYifSksRnQuaG9yaXpvbnRhbFJ1bGU9bmV3IEZ0KCJob3Jpem9udGFsLXJ1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDcifSksRnQuaHVib3Q9bmV3IEZ0KCJodWJvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwOCJ9KSxGdC5pbmJveD1uZXcgRnQoImluYm94Iix7Zm9udENoYXJhY3RlcjoiXFxlYjA5In0pLEZ0Lmlzc3VlQ2xvc2VkPW5ldyBGdCgiaXNzdWUtY2xvc2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYmE0In0pLEZ0Lmlzc3VlUmVvcGVuZWQ9bmV3IEZ0KCJpc3N1ZS1yZW9wZW5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwYiJ9KSxGdC5pc3N1ZXM9bmV3IEZ0KCJpc3N1ZXMiLHtmb250Q2hhcmFjdGVyOiJcXGViMGMifSksRnQuaXRhbGljPW5ldyBGdCgiaXRhbGljIix7Zm9udENoYXJhY3RlcjoiXFxlYjBkIn0pLEZ0LmplcnNleT1uZXcgRnQoImplcnNleSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwZSJ9KSxGdC5qc29uPW5ldyBGdCgianNvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwZiJ9KSxGdC5rZWJhYlZlcnRpY2FsPW5ldyBGdCgia2ViYWItdmVydGljYWwiLHtmb250Q2hhcmFjdGVyOiJcXGViMTAifSksRnQua2V5PW5ldyBGdCgia2V5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjExIn0pLEZ0Lmxhdz1uZXcgRnQoImxhdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxMiJ9KSxGdC5saWdodGJ1bGJBdXRvZml4PW5ldyBGdCgibGlnaHRidWxiLWF1dG9maXgiLHtmb250Q2hhcmFjdGVyOiJcXGViMTMifSksRnQubGlua0V4dGVybmFsPW5ldyBGdCgibGluay1leHRlcm5hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNCJ9KSxGdC5saW5rPW5ldyBGdCgibGluayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNSJ9KSxGdC5saXN0T3JkZXJlZD1uZXcgRnQoImxpc3Qtb3JkZXJlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNiJ9KSxGdC5saXN0VW5vcmRlcmVkPW5ldyBGdCgibGlzdC11bm9yZGVyZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViMTcifSksRnQubGl2ZVNoYXJlPW5ldyBGdCgibGl2ZS1zaGFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxOCJ9KSxGdC5sb2FkaW5nPW5ldyBGdCgibG9hZGluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxOSJ9KSxGdC5sb2NhdGlvbj1uZXcgRnQoImxvY2F0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjFhIn0pLEZ0Lm1haWxSZWFkPW5ldyBGdCgibWFpbC1yZWFkIix7Zm9udENoYXJhY3RlcjoiXFxlYjFiIn0pLEZ0Lm1haWw9bmV3IEZ0KCJtYWlsIix7Zm9udENoYXJhY3RlcjoiXFxlYjFjIn0pLEZ0Lm1hcmtkb3duPW5ldyBGdCgibWFya2Rvd24iLHtmb250Q2hhcmFjdGVyOiJcXGViMWQifSksRnQubWVnYXBob25lPW5ldyBGdCgibWVnYXBob25lIix7Zm9udENoYXJhY3RlcjoiXFxlYjFlIn0pLEZ0Lm1lbnRpb249bmV3IEZ0KCJtZW50aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjFmIn0pLEZ0Lm1pbGVzdG9uZT1uZXcgRnQoIm1pbGVzdG9uZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMCJ9KSxGdC5tb3J0YXJCb2FyZD1uZXcgRnQoIm1vcnRhci1ib2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMSJ9KSxGdC5tb3ZlPW5ldyBGdCgibW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMiJ9KSxGdC5tdWx0aXBsZVdpbmRvd3M9bmV3IEZ0KCJtdWx0aXBsZS13aW5kb3dzIix7Zm9udENoYXJhY3RlcjoiXFxlYjIzIn0pLEZ0Lm11dGU9bmV3IEZ0KCJtdXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI0In0pLEZ0Lm5vTmV3bGluZT1uZXcgRnQoIm5vLW5ld2xpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjUifSksRnQubm90ZT1uZXcgRnQoIm5vdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjYifSksRnQub2N0b2ZhY2U9bmV3IEZ0KCJvY3RvZmFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyNyJ9KSxGdC5vcGVuUHJldmlldz1uZXcgRnQoIm9wZW4tcHJldmlldyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyOCJ9KSxGdC5wYWNrYWdlXz1uZXcgRnQoInBhY2thZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGViMjkifSksRnQucGFpbnRjYW49bmV3IEZ0KCJwYWludGNhbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyYSJ9KSxGdC5waW49bmV3IEZ0KCJwaW4iLHtmb250Q2hhcmFjdGVyOiJcXGViMmIifSksRnQucGxheT1uZXcgRnQoInBsYXkiLHtmb250Q2hhcmFjdGVyOiJcXGViMmMifSksRnQucnVuPW5ldyBGdCgicnVuIix7Zm9udENoYXJhY3RlcjoiXFxlYjJjIn0pLEZ0LnBsdWc9bmV3IEZ0KCJwbHVnIix7Zm9udENoYXJhY3RlcjoiXFxlYjJkIn0pLEZ0LnByZXNlcnZlQ2FzZT1uZXcgRnQoInByZXNlcnZlLWNhc2UiLHtmb250Q2hhcmFjdGVyOiJcXGViMmUifSksRnQucHJldmlldz1uZXcgRnQoInByZXZpZXciLHtmb250Q2hhcmFjdGVyOiJcXGViMmYifSksRnQucHJvamVjdD1uZXcgRnQoInByb2plY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViMzAifSksRnQucHVsc2U9bmV3IEZ0KCJwdWxzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzMSJ9KSxGdC5xdWVzdGlvbj1uZXcgRnQoInF1ZXN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjMyIn0pLEZ0LnF1b3RlPW5ldyBGdCgicXVvdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMzMifSksRnQucmFkaW9Ub3dlcj1uZXcgRnQoInJhZGlvLXRvd2VyIix7Zm9udENoYXJhY3RlcjoiXFxlYjM0In0pLEZ0LnJlYWN0aW9ucz1uZXcgRnQoInJlYWN0aW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNSJ9KSxGdC5yZWZlcmVuY2VzPW5ldyBGdCgicmVmZXJlbmNlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNiJ9KSxGdC5yZWZyZXNoPW5ldyBGdCgicmVmcmVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNyJ9KSxGdC5yZWdleD1uZXcgRnQoInJlZ2V4Iix7Zm9udENoYXJhY3RlcjoiXFxlYjM4In0pLEZ0LnJlbW90ZUV4cGxvcmVyPW5ldyBGdCgicmVtb3RlLWV4cGxvcmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjM5In0pLEZ0LnJlbW90ZT1uZXcgRnQoInJlbW90ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzYSJ9KSxGdC5yZW1vdmU9bmV3IEZ0KCJyZW1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2IifSksRnQucmVwbGFjZUFsbD1uZXcgRnQoInJlcGxhY2UtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjNjIn0pLEZ0LnJlcGxhY2U9bmV3IEZ0KCJyZXBsYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjNkIn0pLEZ0LnJlcG9DbG9uZT1uZXcgRnQoInJlcG8tY2xvbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2UifSksRnQucmVwb0ZvcmNlUHVzaD1uZXcgRnQoInJlcG8tZm9yY2UtcHVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzZiJ9KSxGdC5yZXBvUHVsbD1uZXcgRnQoInJlcG8tcHVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MCJ9KSxGdC5yZXBvUHVzaD1uZXcgRnQoInJlcG8tcHVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MSJ9KSxGdC5yZXBvcnQ9bmV3IEZ0KCJyZXBvcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDIifSksRnQucmVxdWVzdENoYW5nZXM9bmV3IEZ0KCJyZXF1ZXN0LWNoYW5nZXMiLHtmb250Q2hhcmFjdGVyOiJcXGViNDMifSksRnQucm9ja2V0PW5ldyBGdCgicm9ja2V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjQ0In0pLEZ0LnJvb3RGb2xkZXJPcGVuZWQ9bmV3IEZ0KCJyb290LWZvbGRlci1vcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDUifSksRnQucm9vdEZvbGRlcj1uZXcgRnQoInJvb3QtZm9sZGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjQ2In0pLEZ0LnJzcz1uZXcgRnQoInJzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0NyJ9KSxGdC5ydWJ5PW5ldyBGdCgicnVieSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0OCJ9KSxGdC5zYXZlQWxsPW5ldyBGdCgic2F2ZS1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViNDkifSksRnQuc2F2ZUFzPW5ldyBGdCgic2F2ZS1hcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YSJ9KSxGdC5zYXZlPW5ldyBGdCgic2F2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YiJ9KSxGdC5zY3JlZW5GdWxsPW5ldyBGdCgic2NyZWVuLWZ1bGwiLHtmb250Q2hhcmFjdGVyOiJcXGViNGMifSksRnQuc2NyZWVuTm9ybWFsPW5ldyBGdCgic2NyZWVuLW5vcm1hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0ZCJ9KSxGdC5zZWFyY2hTdG9wPW5ldyBGdCgic2VhcmNoLXN0b3AiLHtmb250Q2hhcmFjdGVyOiJcXGViNGUifSksRnQuc2VydmVyPW5ldyBGdCgic2VydmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjUwIn0pLEZ0LnNldHRpbmdzR2Vhcj1uZXcgRnQoInNldHRpbmdzLWdlYXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNTEifSksRnQuc2V0dGluZ3M9bmV3IEZ0KCJzZXR0aW5ncyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MiJ9KSxGdC5zaGllbGQ9bmV3IEZ0KCJzaGllbGQiLHtmb250Q2hhcmFjdGVyOiJcXGViNTMifSksRnQuc21pbGV5PW5ldyBGdCgic21pbGV5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjU0In0pLEZ0LnNvcnRQcmVjZWRlbmNlPW5ldyBGdCgic29ydC1wcmVjZWRlbmNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjU1In0pLEZ0LnNwbGl0SG9yaXpvbnRhbD1uZXcgRnQoInNwbGl0LWhvcml6b250YWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTYifSksRnQuc3BsaXRWZXJ0aWNhbD1uZXcgRnQoInNwbGl0LXZlcnRpY2FsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU3In0pLEZ0LnNxdWlycmVsPW5ldyBGdCgic3F1aXJyZWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTgifSksRnQuc3RhckZ1bGw9bmV3IEZ0KCJzdGFyLWZ1bGwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTkifSksRnQuc3RhckhhbGY9bmV3IEZ0KCJzdGFyLWhhbGYiLHtmb250Q2hhcmFjdGVyOiJcXGViNWEifSksRnQuc3ltYm9sQ2xhc3M9bmV3IEZ0KCJzeW1ib2wtY2xhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViNWIifSksRnQuc3ltYm9sQ29sb3I9bmV3IEZ0KCJzeW1ib2wtY29sb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViNWMifSksRnQuc3ltYm9sQ3VzdG9tQ29sb3I9bmV3IEZ0KCJzeW1ib2wtY3VzdG9tY29sb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViNWMifSksRnQuc3ltYm9sQ29uc3RhbnQ9bmV3IEZ0KCJzeW1ib2wtY29uc3RhbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNWQifSksRnQuc3ltYm9sRW51bU1lbWJlcj1uZXcgRnQoInN5bWJvbC1lbnVtLW1lbWJlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1ZSJ9KSxGdC5zeW1ib2xGaWVsZD1uZXcgRnQoInN5bWJvbC1maWVsZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1ZiJ9KSxGdC5zeW1ib2xGaWxlPW5ldyBGdCgic3ltYm9sLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGViNjAifSksRnQuc3ltYm9sSW50ZXJmYWNlPW5ldyBGdCgic3ltYm9sLWludGVyZmFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2MSJ9KSxGdC5zeW1ib2xLZXl3b3JkPW5ldyBGdCgic3ltYm9sLWtleXdvcmQiLHtmb250Q2hhcmFjdGVyOiJcXGViNjIifSksRnQuc3ltYm9sTWlzYz1uZXcgRnQoInN5bWJvbC1taXNjIix7Zm9udENoYXJhY3RlcjoiXFxlYjYzIn0pLEZ0LnN5bWJvbE9wZXJhdG9yPW5ldyBGdCgic3ltYm9sLW9wZXJhdG9yIix7Zm9udENoYXJhY3RlcjoiXFxlYjY0In0pLEZ0LnN5bWJvbFByb3BlcnR5PW5ldyBGdCgic3ltYm9sLXByb3BlcnR5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY1In0pLEZ0LndyZW5jaD1uZXcgRnQoIndyZW5jaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NSJ9KSxGdC53cmVuY2hTdWJhY3Rpb249bmV3IEZ0KCJ3cmVuY2gtc3ViYWN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjY1In0pLEZ0LnN5bWJvbFNuaXBwZXQ9bmV3IEZ0KCJzeW1ib2wtc25pcHBldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NiJ9KSxGdC50YXNrbGlzdD1uZXcgRnQoInRhc2tsaXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY3In0pLEZ0LnRlbGVzY29wZT1uZXcgRnQoInRlbGVzY29wZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2OCJ9KSxGdC50ZXh0U2l6ZT1uZXcgRnQoInRleHQtc2l6ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2OSJ9KSxGdC50aHJlZUJhcnM9bmV3IEZ0KCJ0aHJlZS1iYXJzIix7Zm9udENoYXJhY3RlcjoiXFxlYjZhIn0pLEZ0LnRodW1ic2Rvd249bmV3IEZ0KCJ0aHVtYnNkb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYjZiIn0pLEZ0LnRodW1ic3VwPW5ldyBGdCgidGh1bWJzdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViNmMifSksRnQudG9vbHM9bmV3IEZ0KCJ0b29scyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2ZCJ9KSxGdC50cmlhbmdsZURvd249bmV3IEZ0KCJ0cmlhbmdsZS1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYjZlIn0pLEZ0LnRyaWFuZ2xlTGVmdD1uZXcgRnQoInRyaWFuZ2xlLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNmYifSksRnQudHJpYW5nbGVSaWdodD1uZXcgRnQoInRyaWFuZ2xlLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjcwIn0pLEZ0LnRyaWFuZ2xlVXA9bmV3IEZ0KCJ0cmlhbmdsZS11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MSJ9KSxGdC50d2l0dGVyPW5ldyBGdCgidHdpdHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MiJ9KSxGdC51bmZvbGQ9bmV3IEZ0KCJ1bmZvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzMifSksRnQudW5sb2NrPW5ldyBGdCgidW5sb2NrIix7Zm9udENoYXJhY3RlcjoiXFxlYjc0In0pLEZ0LnVubXV0ZT1uZXcgRnQoInVubXV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NSJ9KSxGdC51bnZlcmlmaWVkPW5ldyBGdCgidW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NiJ9KSxGdC52ZXJpZmllZD1uZXcgRnQoInZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjc3In0pLEZ0LnZlcnNpb25zPW5ldyBGdCgidmVyc2lvbnMiLHtmb250Q2hhcmFjdGVyOiJcXGViNzgifSksRnQudm1BY3RpdmU9bmV3IEZ0KCJ2bS1hY3RpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViNzkifSksRnQudm1PdXRsaW5lPW5ldyBGdCgidm0tb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3YSJ9KSxGdC52bVJ1bm5pbmc9bmV3IEZ0KCJ2bS1ydW5uaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjdiIn0pLEZ0LndhdGNoPW5ldyBGdCgid2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGViN2MifSksRnQud2hpdGVzcGFjZT1uZXcgRnQoIndoaXRlc3BhY2UiLHtmb250Q2hhcmFjdGVyOiJcXGViN2QifSksRnQud2hvbGVXb3JkPW5ldyBGdCgid2hvbGUtd29yZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3ZSJ9KSxGdC53aW5kb3c9bmV3IEZ0KCJ3aW5kb3ciLHtmb250Q2hhcmFjdGVyOiJcXGViN2YifSksRnQud29yZFdyYXA9bmV3IEZ0KCJ3b3JkLXdyYXAiLHtmb250Q2hhcmFjdGVyOiJcXGViODAifSksRnQuem9vbUluPW5ldyBGdCgiem9vbS1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MSJ9KSxGdC56b29tT3V0PW5ldyBGdCgiem9vbS1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViODIifSksRnQubGlzdEZpbHRlcj1uZXcgRnQoImxpc3QtZmlsdGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjgzIn0pLEZ0Lmxpc3RGbGF0PW5ldyBGdCgibGlzdC1mbGF0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjg0In0pLEZ0Lmxpc3RTZWxlY3Rpb249bmV3IEZ0KCJsaXN0LXNlbGVjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NSJ9KSxGdC5zZWxlY3Rpb249bmV3IEZ0KCJzZWxlY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViODUifSksRnQubGlzdFRyZWU9bmV3IEZ0KCJsaXN0LXRyZWUiLHtmb250Q2hhcmFjdGVyOiJcXGViODYifSksRnQuZGVidWdCcmVha3BvaW50RnVuY3Rpb25VbnZlcmlmaWVkPW5ldyBGdCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjg3In0pLEZ0LmRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uPW5ldyBGdCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OCJ9KSxGdC5kZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvbkRpc2FibGVkPW5ldyBGdCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OCJ9KSxGdC5kZWJ1Z1N0YWNrZnJhbWVBY3RpdmU9bmV3IEZ0KCJkZWJ1Zy1zdGFja2ZyYW1lLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OSJ9KSxGdC5jaXJjbGVTbWFsbEZpbGxlZD1uZXcgRnQoImNpcmNsZS1zbWFsbC1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOGEifSksRnQuZGVidWdTdGFja2ZyYW1lRG90PW5ldyBGdCgiZGVidWctc3RhY2tmcmFtZS1kb3QiLEZ0LmNpcmNsZVNtYWxsRmlsbGVkLmRlZmluaXRpb24pLEZ0LmRlYnVnU3RhY2tmcmFtZT1uZXcgRnQoImRlYnVnLXN0YWNrZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOGIifSksRnQuZGVidWdTdGFja2ZyYW1lRm9jdXNlZD1uZXcgRnQoImRlYnVnLXN0YWNrZnJhbWUtZm9jdXNlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4YiJ9KSxGdC5kZWJ1Z0JyZWFrcG9pbnRVbnN1cHBvcnRlZD1uZXcgRnQoImRlYnVnLWJyZWFrcG9pbnQtdW5zdXBwb3J0ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOGMifSksRnQuc3ltYm9sU3RyaW5nPW5ldyBGdCgic3ltYm9sLXN0cmluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZCJ9KSxGdC5kZWJ1Z1JldmVyc2VDb250aW51ZT1uZXcgRnQoImRlYnVnLXJldmVyc2UtY29udGludWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOGUifSksRnQuZGVidWdTdGVwQmFjaz1uZXcgRnQoImRlYnVnLXN0ZXAtYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZiJ9KSxGdC5kZWJ1Z1Jlc3RhcnRGcmFtZT1uZXcgRnQoImRlYnVnLXJlc3RhcnQtZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOTAifSksRnQuY2FsbEluY29taW5nPW5ldyBGdCgiY2FsbC1pbmNvbWluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5MiJ9KSxGdC5jYWxsT3V0Z29pbmc9bmV3IEZ0KCJjYWxsLW91dGdvaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjkzIn0pLEZ0Lm1lbnU9bmV3IEZ0KCJtZW51Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk0In0pLEZ0LmV4cGFuZEFsbD1uZXcgRnQoImV4cGFuZC1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViOTUifSksRnQuZmVlZGJhY2s9bmV3IEZ0KCJmZWVkYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NiJ9KSxGdC5ncm91cEJ5UmVmVHlwZT1uZXcgRnQoImdyb3VwLWJ5LXJlZi10eXBlIix7Zm9udENoYXJhY3RlcjoiXFxlYjk3In0pLEZ0LnVuZ3JvdXBCeVJlZlR5cGU9bmV3IEZ0KCJ1bmdyb3VwLWJ5LXJlZi10eXBlIix7Zm9udENoYXJhY3RlcjoiXFxlYjk4In0pLEZ0LmFjY291bnQ9bmV3IEZ0KCJhY2NvdW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk5In0pLEZ0LmJlbGxEb3Q9bmV3IEZ0KCJiZWxsLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5YSJ9KSxGdC5kZWJ1Z0NvbnNvbGU9bmV3IEZ0KCJkZWJ1Zy1jb25zb2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYjliIn0pLEZ0LmxpYnJhcnk9bmV3IEZ0KCJsaWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjljIn0pLEZ0Lm91dHB1dD1uZXcgRnQoIm91dHB1dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5ZCJ9KSxGdC5ydW5BbGw9bmV3IEZ0KCJydW4tYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjllIn0pLEZ0LnN5bmNJZ25vcmVkPW5ldyBGdCgic3luYy1pZ25vcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjlmIn0pLEZ0LnBpbm5lZD1uZXcgRnQoInBpbm5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMCJ9KSxGdC5naXRodWJJbnZlcnRlZD1uZXcgRnQoImdpdGh1Yi1pbnZlcnRlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMSJ9KSxGdC5kZWJ1Z0FsdD1uZXcgRnQoImRlYnVnLWFsdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5MSJ9KSxGdC5zZXJ2ZXJQcm9jZXNzPW5ldyBGdCgic2VydmVyLXByb2Nlc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTIifSksRnQuc2VydmVyRW52aXJvbm1lbnQ9bmV3IEZ0KCJzZXJ2ZXItZW52aXJvbm1lbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTMifSksRnQucGFzcz1uZXcgRnQoInBhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTQifSksRnQuc3RvcENpcmNsZT1uZXcgRnQoInN0b3AtY2lyY2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYmE1In0pLEZ0LnBsYXlDaXJjbGU9bmV3IEZ0KCJwbGF5LWNpcmNsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNiJ9KSxGdC5yZWNvcmQ9bmV3IEZ0KCJyZWNvcmQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTcifSksRnQuZGVidWdBbHRTbWFsbD1uZXcgRnQoImRlYnVnLWFsdC1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhOCJ9KSxGdC52bUNvbm5lY3Q9bmV3IEZ0KCJ2bS1jb25uZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmE5In0pLEZ0LmNsb3VkPW5ldyBGdCgiY2xvdWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWEifSksRnQubWVyZ2U9bmV3IEZ0KCJtZXJnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhYiJ9KSxGdC5leHBvcnRJY29uPW5ldyBGdCgiZXhwb3J0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmFjIn0pLEZ0LmdyYXBoTGVmdD1uZXcgRnQoImdyYXBoLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWQifSksRnQubWFnbmV0PW5ldyBGdCgibWFnbmV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmFlIn0pLEZ0Lm5vdGVib29rPW5ldyBGdCgibm90ZWJvb2siLHtmb250Q2hhcmFjdGVyOiJcXGViYWYifSksRnQucmVkbz1uZXcgRnQoInJlZG8iLHtmb250Q2hhcmFjdGVyOiJcXGViYjAifSksRnQuY2hlY2tBbGw9bmV3IEZ0KCJjaGVjay1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViYjEifSksRnQucGlubmVkRGlydHk9bmV3IEZ0KCJwaW5uZWQtZGlydHkiLHtmb250Q2hhcmFjdGVyOiJcXGViYjIifSksRnQucGFzc0ZpbGxlZD1uZXcgRnQoInBhc3MtZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmIzIn0pLEZ0LmNpcmNsZUxhcmdlRmlsbGVkPW5ldyBGdCgiY2lyY2xlLWxhcmdlLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNCJ9KSxGdC5jaXJjbGVMYXJnZU91dGxpbmU9bmV3IEZ0KCJjaXJjbGUtbGFyZ2Utb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNSJ9KSxGdC5jb21iaW5lPW5ldyBGdCgiY29tYmluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNiJ9KSxGdC5nYXRoZXI9bmV3IEZ0KCJnYXRoZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYjYifSksRnQudGFibGU9bmV3IEZ0KCJ0YWJsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNyJ9KSxGdC52YXJpYWJsZUdyb3VwPW5ldyBGdCgidmFyaWFibGUtZ3JvdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViYjgifSksRnQudHlwZUhpZXJhcmNoeT1uZXcgRnQoInR5cGUtaGllcmFyY2h5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmI5In0pLEZ0LnR5cGVIaWVyYXJjaHlTdWI9bmV3IEZ0KCJ0eXBlLWhpZXJhcmNoeS1zdWIiLHtmb250Q2hhcmFjdGVyOiJcXGViYmEifSksRnQudHlwZUhpZXJhcmNoeVN1cGVyPW5ldyBGdCgidHlwZS1oaWVyYXJjaHktc3VwZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYmIifSksRnQuZ2l0UHVsbFJlcXVlc3RDcmVhdGU9bmV3IEZ0KCJnaXQtcHVsbC1yZXF1ZXN0LWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiYyJ9KSxGdC5ydW5BYm92ZT1uZXcgRnQoInJ1bi1hYm92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiZCJ9KSxGdC5ydW5CZWxvdz1uZXcgRnQoInJ1bi1iZWxvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiZSJ9KSxGdC5ub3RlYm9va1RlbXBsYXRlPW5ldyBGdCgibm90ZWJvb2stdGVtcGxhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYmYifSksRnQuZGVidWdSZXJ1bj1uZXcgRnQoImRlYnVnLXJlcnVuIix7Zm9udENoYXJhY3RlcjoiXFxlYmMwIn0pLEZ0LndvcmtzcGFjZVRydXN0ZWQ9bmV3IEZ0KCJ3b3Jrc3BhY2UtdHJ1c3RlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMSJ9KSxGdC53b3Jrc3BhY2VVbnRydXN0ZWQ9bmV3IEZ0KCJ3b3Jrc3BhY2UtdW50cnVzdGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMyIn0pLEZ0LndvcmtzcGFjZVVuc3BlY2lmaWVkPW5ldyBGdCgid29ya3NwYWNlLXVuc3BlY2lmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMzIn0pLEZ0LnRlcm1pbmFsQ21kPW5ldyBGdCgidGVybWluYWwtY21kIix7Zm9udENoYXJhY3RlcjoiXFxlYmM0In0pLEZ0LnRlcm1pbmFsRGViaWFuPW5ldyBGdCgidGVybWluYWwtZGViaWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYmM1In0pLEZ0LnRlcm1pbmFsTGludXg9bmV3IEZ0KCJ0ZXJtaW5hbC1saW51eCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjNiJ9KSxGdC50ZXJtaW5hbFBvd2Vyc2hlbGw9bmV3IEZ0KCJ0ZXJtaW5hbC1wb3dlcnNoZWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmM3In0pLEZ0LnRlcm1pbmFsVG11eD1uZXcgRnQoInRlcm1pbmFsLXRtdXgiLHtmb250Q2hhcmFjdGVyOiJcXGViYzgifSksRnQudGVybWluYWxVYnVudHU9bmV3IEZ0KCJ0ZXJtaW5hbC11YnVudHUiLHtmb250Q2hhcmFjdGVyOiJcXGViYzkifSksRnQudGVybWluYWxCYXNoPW5ldyBGdCgidGVybWluYWwtYmFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjYSJ9KSxGdC5hcnJvd1N3YXA9bmV3IEZ0KCJhcnJvdy1zd2FwIix7Zm9udENoYXJhY3RlcjoiXFxlYmNiIn0pLEZ0LmNvcHk9bmV3IEZ0KCJjb3B5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmNjIn0pLEZ0LnBlcnNvbkFkZD1uZXcgRnQoInBlcnNvbi1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGViY2QifSksRnQuZmlsdGVyRmlsbGVkPW5ldyBGdCgiZmlsdGVyLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZSJ9KSxGdC53YW5kPW5ldyBGdCgid2FuZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZiJ9KSxGdC5kZWJ1Z0xpbmVCeUxpbmU9bmV3IEZ0KCJkZWJ1Zy1saW5lLWJ5LWxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDAifSksRnQuaW5zcGVjdD1uZXcgRnQoImluc3BlY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDEifSksRnQubGF5ZXJzPW5ldyBGdCgibGF5ZXJzIix7Zm9udENoYXJhY3RlcjoiXFxlYmQyIn0pLEZ0LmxheWVyc0RvdD1uZXcgRnQoImxheWVycy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDMifSksRnQubGF5ZXJzQWN0aXZlPW5ldyBGdCgibGF5ZXJzLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNCJ9KSxGdC5jb21wYXNzPW5ldyBGdCgiY29tcGFzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNSJ9KSxGdC5jb21wYXNzRG90PW5ldyBGdCgiY29tcGFzcy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDYifSksRnQuY29tcGFzc0FjdGl2ZT1uZXcgRnQoImNvbXBhc3MtYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYmQ3In0pLEZ0LmF6dXJlPW5ldyBGdCgiYXp1cmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDgifSksRnQuaXNzdWVEcmFmdD1uZXcgRnQoImlzc3VlLWRyYWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmQ5In0pLEZ0LmdpdFB1bGxSZXF1ZXN0Q2xvc2VkPW5ldyBGdCgiZ2l0LXB1bGwtcmVxdWVzdC1jbG9zZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZGEifSksRnQuZ2l0UHVsbFJlcXVlc3REcmFmdD1uZXcgRnQoImdpdC1wdWxsLXJlcXVlc3QtZHJhZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZGIifSksRnQuZGVidWdBbGw9bmV3IEZ0KCJkZWJ1Zy1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZGMifSksRnQuZGVidWdDb3ZlcmFnZT1uZXcgRnQoImRlYnVnLWNvdmVyYWdlIix7Zm9udENoYXJhY3RlcjoiXFxlYmRkIn0pLEZ0LnJ1bkVycm9ycz1uZXcgRnQoInJ1bi1lcnJvcnMiLHtmb250Q2hhcmFjdGVyOiJcXGViZGUifSksRnQuZm9sZGVyTGlicmFyeT1uZXcgRnQoImZvbGRlci1saWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmRmIn0pLEZ0LmRlYnVnQ29udGludWVTbWFsbD1uZXcgRnQoImRlYnVnLWNvbnRpbnVlLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmUwIn0pLEZ0LmJlYWtlclN0b3A9bmV3IEZ0KCJiZWFrZXItc3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlMSJ9KSxGdC5ncmFwaExpbmU9bmV3IEZ0KCJncmFwaC1saW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmUyIn0pLEZ0LmdyYXBoU2NhdHRlcj1uZXcgRnQoImdyYXBoLXNjYXR0ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZTMifSksRnQucGllQ2hhcnQ9bmV3IEZ0KCJwaWUtY2hhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZTQifSksRnQuYnJhY2tldD1uZXcgRnQoImJyYWNrZXQiLEZ0Lmpzb24uZGVmaW5pdGlvbiksRnQuYnJhY2tldERvdD1uZXcgRnQoImJyYWNrZXQtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYmU1In0pLEZ0LmJyYWNrZXRFcnJvcj1uZXcgRnQoImJyYWNrZXQtZXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViZTYifSksRnQubG9ja1NtYWxsPW5ldyBGdCgibG9jay1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlNyJ9KSxGdC5henVyZURldm9wcz1uZXcgRnQoImF6dXJlLWRldm9wcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOCJ9KSxGdC52ZXJpZmllZEZpbGxlZD1uZXcgRnQoInZlcmlmaWVkLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOSJ9KSxGdC5uZXdMaW5lPW5ldyBGdCgibmV3bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlYSJ9KSxGdC5sYXlvdXQ9bmV3IEZ0KCJsYXlvdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWIifSksRnQubGF5b3V0QWN0aXZpdHliYXJMZWZ0PW5ldyBGdCgibGF5b3V0LWFjdGl2aXR5YmFyLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWMifSksRnQubGF5b3V0QWN0aXZpdHliYXJSaWdodD1uZXcgRnQoImxheW91dC1hY3Rpdml0eWJhci1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlZCJ9KSxGdC5sYXlvdXRQYW5lbExlZnQ9bmV3IEZ0KCJsYXlvdXQtcGFuZWwtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlZSJ9KSxGdC5sYXlvdXRQYW5lbENlbnRlcj1uZXcgRnQoImxheW91dC1wYW5lbC1jZW50ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZWYifSksRnQubGF5b3V0UGFuZWxKdXN0aWZ5PW5ldyBGdCgibGF5b3V0LXBhbmVsLWp1c3RpZnkiLHtmb250Q2hhcmFjdGVyOiJcXGViZjAifSksRnQubGF5b3V0UGFuZWxSaWdodD1uZXcgRnQoImxheW91dC1wYW5lbC1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMSJ9KSxGdC5sYXlvdXRQYW5lbD1uZXcgRnQoImxheW91dC1wYW5lbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMiJ9KSxGdC5sYXlvdXRTaWRlYmFyTGVmdD1uZXcgRnQoImxheW91dC1zaWRlYmFyLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjMifSksRnQubGF5b3V0U2lkZWJhclJpZ2h0PW5ldyBGdCgibGF5b3V0LXNpZGViYXItcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjQifSksRnQubGF5b3V0U3RhdHVzYmFyPW5ldyBGdCgibGF5b3V0LXN0YXR1c2JhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNSJ9KSxGdC5sYXlvdXRNZW51YmFyPW5ldyBGdCgibGF5b3V0LW1lbnViYXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZjYifSksRnQubGF5b3V0Q2VudGVyZWQ9bmV3IEZ0KCJsYXlvdXQtY2VudGVyZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjcifSksRnQubGF5b3V0U2lkZWJhclJpZ2h0T2ZmPW5ldyBGdCgibGF5b3V0LXNpZGViYXItcmlnaHQtb2ZmIix7Zm9udENoYXJhY3RlcjoiXFxlYzAwIn0pLEZ0LmxheW91dFBhbmVsT2ZmPW5ldyBGdCgibGF5b3V0LXBhbmVsLW9mZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwMSJ9KSxGdC5sYXlvdXRTaWRlYmFyTGVmdE9mZj1uZXcgRnQoImxheW91dC1zaWRlYmFyLWxlZnQtb2ZmIix7Zm9udENoYXJhY3RlcjoiXFxlYzAyIn0pLEZ0LnRhcmdldD1uZXcgRnQoInRhcmdldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmOCJ9KSxGdC5pbmRlbnQ9bmV3IEZ0KCJpbmRlbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjkifSksRnQucmVjb3JkU21hbGw9bmV3IEZ0KCJyZWNvcmQtc21hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZmEifSksRnQuZXJyb3JTbWFsbD1uZXcgRnQoImVycm9yLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmZiIn0pLEZ0LmFycm93Q2lyY2xlRG93bj1uZXcgRnQoImFycm93LWNpcmNsZS1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYmZjIn0pLEZ0LmFycm93Q2lyY2xlTGVmdD1uZXcgRnQoImFycm93LWNpcmNsZS1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmZkIn0pLEZ0LmFycm93Q2lyY2xlUmlnaHQ9bmV3IEZ0KCJhcnJvdy1jaXJjbGUtcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZmUifSksRnQuYXJyb3dDaXJjbGVVcD1uZXcgRnQoImFycm93LWNpcmNsZS11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmZiJ9KSxGdC5oZWFydEZpbGxlZD1uZXcgRnQoImhlYXJ0LWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwNCJ9KSxGdC5tYXA9bmV3IEZ0KCJtYXAiLHtmb250Q2hhcmFjdGVyOiJcXGVjMDUifSksRnQubWFwRmlsbGVkPW5ldyBGdCgibWFwLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwNiJ9KSxGdC5jaXJjbGVTbWFsbD1uZXcgRnQoImNpcmNsZS1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwNyJ9KSxGdC5iZWxsU2xhc2g9bmV3IEZ0KCJiZWxsLXNsYXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYzA4In0pLEZ0LmJlbGxTbGFzaERvdD1uZXcgRnQoImJlbGwtc2xhc2gtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYzA5In0pLEZ0LmNvbW1lbnRVbnJlc29sdmVkPW5ldyBGdCgiY29tbWVudC11bnJlc29sdmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYzBhIn0pLEZ0LmdpdFB1bGxSZXF1ZXN0R29Ub0NoYW5nZXM9bmV3IEZ0KCJnaXQtcHVsbC1yZXF1ZXN0LWdvLXRvLWNoYW5nZXMiLHtmb250Q2hhcmFjdGVyOiJcXGVjMGIifSksRnQuZ2l0UHVsbFJlcXVlc3ROZXdDaGFuZ2VzPW5ldyBGdCgiZ2l0LXB1bGwtcmVxdWVzdC1uZXctY2hhbmdlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwYyJ9KSxGdC5kaWFsb2dFcnJvcj1uZXcgRnQoImRpYWxvZy1lcnJvciIsRnQuZXJyb3IuZGVmaW5pdGlvbiksRnQuZGlhbG9nV2FybmluZz1uZXcgRnQoImRpYWxvZy13YXJuaW5nIixGdC53YXJuaW5nLmRlZmluaXRpb24pLEZ0LmRpYWxvZ0luZm89bmV3IEZ0KCJkaWFsb2ctaW5mbyIsRnQuaW5mby5kZWZpbml0aW9uKSxGdC5kaWFsb2dDbG9zZT1uZXcgRnQoImRpYWxvZy1jbG9zZSIsRnQuY2xvc2UuZGVmaW5pdGlvbiksRnQudHJlZUl0ZW1FeHBhbmRlZD1uZXcgRnQoInRyZWUtaXRlbS1leHBhbmRlZCIsRnQuY2hldnJvbkRvd24uZGVmaW5pdGlvbiksRnQudHJlZUZpbHRlck9uVHlwZU9uPW5ldyBGdCgidHJlZS1maWx0ZXItb24tdHlwZS1vbiIsRnQubGlzdEZpbHRlci5kZWZpbml0aW9uKSxGdC50cmVlRmlsdGVyT25UeXBlT2ZmPW5ldyBGdCgidHJlZS1maWx0ZXItb24tdHlwZS1vZmYiLEZ0Lmxpc3RTZWxlY3Rpb24uZGVmaW5pdGlvbiksRnQudHJlZUZpbHRlckNsZWFyPW5ldyBGdCgidHJlZS1maWx0ZXItY2xlYXIiLEZ0LmNsb3NlLmRlZmluaXRpb24pLEZ0LnRyZWVJdGVtTG9hZGluZz1uZXcgRnQoInRyZWUtaXRlbS1sb2FkaW5nIixGdC5sb2FkaW5nLmRlZmluaXRpb24pLEZ0Lm1lbnVTZWxlY3Rpb249bmV3IEZ0KCJtZW51LXNlbGVjdGlvbiIsRnQuY2hlY2suZGVmaW5pdGlvbiksRnQubWVudVN1Ym1lbnU9bmV3IEZ0KCJtZW51LXN1Ym1lbnUiLEZ0LmNoZXZyb25SaWdodC5kZWZpbml0aW9uKSxGdC5tZW51QmFyTW9yZT1uZXcgRnQoIm1lbnViYXItbW9yZSIsRnQubW9yZS5kZWZpbml0aW9uKSxGdC5zY3JvbGxiYXJCdXR0b25MZWZ0PW5ldyBGdCgic2Nyb2xsYmFyLWJ1dHRvbi1sZWZ0IixGdC50cmlhbmdsZUxlZnQuZGVmaW5pdGlvbiksRnQuc2Nyb2xsYmFyQnV0dG9uUmlnaHQ9bmV3IEZ0KCJzY3JvbGxiYXItYnV0dG9uLXJpZ2h0IixGdC50cmlhbmdsZVJpZ2h0LmRlZmluaXRpb24pLEZ0LnNjcm9sbGJhckJ1dHRvblVwPW5ldyBGdCgic2Nyb2xsYmFyLWJ1dHRvbi11cCIsRnQudHJpYW5nbGVVcC5kZWZpbml0aW9uKSxGdC5zY3JvbGxiYXJCdXR0b25Eb3duPW5ldyBGdCgic2Nyb2xsYmFyLWJ1dHRvbi1kb3duIixGdC50cmlhbmdsZURvd24uZGVmaW5pdGlvbiksRnQudG9vbEJhck1vcmU9bmV3IEZ0KCJ0b29sYmFyLW1vcmUiLEZ0Lm1vcmUuZGVmaW5pdGlvbiksRnQucXVpY2tJbnB1dEJhY2s9bmV3IEZ0KCJxdWljay1pbnB1dC1iYWNrIixGdC5hcnJvd0xlZnQuZGVmaW5pdGlvbiksZnVuY3Rpb24oZSl7ZS5pY29uTmFtZVNlZ21lbnQ9IltBLVphLXowLTldKyIsZS5pY29uTmFtZUV4cHJlc3Npb249IltBLVphLXowLTktXSsiLGUuaWNvbk1vZGlmaWVyRXhwcmVzc2lvbj0ifltBLVphLXpdKyIsZS5pY29uTmFtZUNoYXJhY3Rlcj0iW0EtWmEtejAtOX4tXSI7Y29uc3QgdD1uZXcgUmVnRXhwKGBeKCR7ZS5pY29uTmFtZUV4cHJlc3Npb259KSgke2UuaWNvbk1vZGlmaWVyRXhwcmVzc2lvbn0pPyRgKTtmdW5jdGlvbiBuKGUpe2lmKGUgaW5zdGFuY2VvZiBGdClyZXR1cm5bImNvZGljb24iLCJjb2RpY29uLSIrZS5pZF07Y29uc3Qgcj10LmV4ZWMoZS5pZCk7aWYoIXIpcmV0dXJuIG4oRnQuZXJyb3IpO2NvbnN0WyxpLGFdPXIsbz1bImNvZGljb24iLCJjb2RpY29uLSIraV07cmV0dXJuIGEmJm8ucHVzaCgiY29kaWNvbi1tb2RpZmllci0iK2Euc3Vic3RyKDEpKSxvfWUuYXNDbGFzc05hbWVBcnJheT1uLGUuYXNDbGFzc05hbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSkuam9pbigiICIpfSxlLmFzQ1NTU2VsZWN0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK24oZSkuam9pbigiLiIpfX0oUHR8fChQdD17fSkpO3ZhciBWdCxCdCxLdCxqdCxHdCwkdCxKdCxYdCxZdCxRdCxadCxlbix0bixubixybixhbixvbixzbixsbixjbixobixkbix1bixwbixtbixmbixnbixibix3bixfbix2bix5bixUbixrbixTbixDbix4bixMbixFbixBbixNbixSbixJbixObixVbixIbix6bixEbixXbj1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24oaSxhKXtmdW5jdGlvbiBvKGUpe3RyeXtsKHIubmV4dChlKSl9Y2F0Y2goZSl7YShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7bChyLnRocm93KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiBsKGUpe3ZhciB0O2UuZG9uZT9pKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihvLHMpfWwoKHI9ci5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX07Y2xhc3MgT24gZXh0ZW5kcyB1e2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcigpLHRoaXMuX3JlZ2lzdHJ5PWUsdGhpcy5fbGFuZ3VhZ2VJZD10LHRoaXMuX2ZhY3Rvcnk9bix0aGlzLl9pc0Rpc3Bvc2VkPSExLHRoaXMuX3Jlc29sdmVQcm9taXNlPW51bGwsdGhpcy5faXNSZXNvbHZlZD0hMX1nZXQgaXNSZXNvbHZlZCgpe3JldHVybiB0aGlzLl9pc1Jlc29sdmVkfWRpc3Bvc2UoKXt0aGlzLl9pc0Rpc3Bvc2VkPSEwLHN1cGVyLmRpc3Bvc2UoKX1yZXNvbHZlKCl7cmV0dXJuIFduKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVQcm9taXNlfHwodGhpcy5fcmVzb2x2ZVByb21pc2U9dGhpcy5fY3JlYXRlKCkpLHRoaXMuX3Jlc29sdmVQcm9taXNlfSkpfV9jcmVhdGUoKXtyZXR1cm4gV24odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBlPXlpZWxkIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mYWN0b3J5LmNyZWF0ZVRva2VuaXphdGlvblN1cHBvcnQoKSk7dGhpcy5faXNSZXNvbHZlZD0hMCxlJiYhdGhpcy5faXNEaXNwb3NlZCYmdGhpcy5fcmVnaXN0ZXIodGhpcy5fcmVnaXN0cnkucmVnaXN0ZXIodGhpcy5fbGFuZ3VhZ2VJZCxlKSl9KSl9fWNsYXNzIFBue2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLl90b2tlbkJyYW5kPXZvaWQgMCx0aGlzLm9mZnNldD1lLHRoaXMudHlwZT10LHRoaXMubGFuZ3VhZ2U9bn10b1N0cmluZygpe3JldHVybiIoIit0aGlzLm9mZnNldCsiLCAiK3RoaXMudHlwZSsiKSJ9fSFmdW5jdGlvbihlKXtjb25zdCB0PW5ldyBNYXA7dC5zZXQoMCxGdC5zeW1ib2xNZXRob2QpLHQuc2V0KDEsRnQuc3ltYm9sRnVuY3Rpb24pLHQuc2V0KDIsRnQuc3ltYm9sQ29uc3RydWN0b3IpLHQuc2V0KDMsRnQuc3ltYm9sRmllbGQpLHQuc2V0KDQsRnQuc3ltYm9sVmFyaWFibGUpLHQuc2V0KDUsRnQuc3ltYm9sQ2xhc3MpLHQuc2V0KDYsRnQuc3ltYm9sU3RydWN0KSx0LnNldCg3LEZ0LnN5bWJvbEludGVyZmFjZSksdC5zZXQoOCxGdC5zeW1ib2xNb2R1bGUpLHQuc2V0KDksRnQuc3ltYm9sUHJvcGVydHkpLHQuc2V0KDEwLEZ0LnN5bWJvbEV2ZW50KSx0LnNldCgxMSxGdC5zeW1ib2xPcGVyYXRvciksdC5zZXQoMTIsRnQuc3ltYm9sVW5pdCksdC5zZXQoMTMsRnQuc3ltYm9sVmFsdWUpLHQuc2V0KDE1LEZ0LnN5bWJvbEVudW0pLHQuc2V0KDE0LEZ0LnN5bWJvbENvbnN0YW50KSx0LnNldCgxNSxGdC5zeW1ib2xFbnVtKSx0LnNldCgxNixGdC5zeW1ib2xFbnVtTWVtYmVyKSx0LnNldCgxNyxGdC5zeW1ib2xLZXl3b3JkKSx0LnNldCgyNyxGdC5zeW1ib2xTbmlwcGV0KSx0LnNldCgxOCxGdC5zeW1ib2xUZXh0KSx0LnNldCgxOSxGdC5zeW1ib2xDb2xvciksdC5zZXQoMjAsRnQuc3ltYm9sRmlsZSksdC5zZXQoMjEsRnQuc3ltYm9sUmVmZXJlbmNlKSx0LnNldCgyMixGdC5zeW1ib2xDdXN0b21Db2xvciksdC5zZXQoMjMsRnQuc3ltYm9sRm9sZGVyKSx0LnNldCgyNCxGdC5zeW1ib2xUeXBlUGFyYW1ldGVyKSx0LnNldCgyNSxGdC5hY2NvdW50KSx0LnNldCgyNixGdC5pc3N1ZXMpLGUudG9JY29uPWZ1bmN0aW9uKGUpe2xldCBuPXQuZ2V0KGUpO3JldHVybiBufHwoY29uc29sZS5pbmZvKCJObyBjb2RpY29uIGZvdW5kIGZvciBDb21wbGV0aW9uSXRlbUtpbmQgIitlKSxuPUZ0LnN5bWJvbFByb3BlcnR5KSxufTtjb25zdCBuPW5ldyBNYXA7bi5zZXQoIm1ldGhvZCIsMCksbi5zZXQoImZ1bmN0aW9uIiwxKSxuLnNldCgiY29uc3RydWN0b3IiLDIpLG4uc2V0KCJmaWVsZCIsMyksbi5zZXQoInZhcmlhYmxlIiw0KSxuLnNldCgiY2xhc3MiLDUpLG4uc2V0KCJzdHJ1Y3QiLDYpLG4uc2V0KCJpbnRlcmZhY2UiLDcpLG4uc2V0KCJtb2R1bGUiLDgpLG4uc2V0KCJwcm9wZXJ0eSIsOSksbi5zZXQoImV2ZW50IiwxMCksbi5zZXQoIm9wZXJhdG9yIiwxMSksbi5zZXQoInVuaXQiLDEyKSxuLnNldCgidmFsdWUiLDEzKSxuLnNldCgiY29uc3RhbnQiLDE0KSxuLnNldCgiZW51bSIsMTUpLG4uc2V0KCJlbnVtLW1lbWJlciIsMTYpLG4uc2V0KCJlbnVtTWVtYmVyIiwxNiksbi5zZXQoImtleXdvcmQiLDE3KSxuLnNldCgic25pcHBldCIsMjcpLG4uc2V0KCJ0ZXh0IiwxOCksbi5zZXQoImNvbG9yIiwxOSksbi5zZXQoImZpbGUiLDIwKSxuLnNldCgicmVmZXJlbmNlIiwyMSksbi5zZXQoImN1c3RvbWNvbG9yIiwyMiksbi5zZXQoImZvbGRlciIsMjMpLG4uc2V0KCJ0eXBlLXBhcmFtZXRlciIsMjQpLG4uc2V0KCJ0eXBlUGFyYW1ldGVyIiwyNCksbi5zZXQoImFjY291bnQiLDI1KSxuLnNldCgiaXNzdWUiLDI2KSxlLmZyb21TdHJpbmc9ZnVuY3Rpb24oZSx0KXtsZXQgcj1uLmdldChlKTtyZXR1cm4gdm9pZCAwIT09cnx8dHx8KHI9OSkscn19KFZ0fHwoVnQ9e30pKSxmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5FeHBsaWNpdD0xXT0iRXhwbGljaXQifShCdHx8KEJ0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0yXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLkNvbnRlbnRDaGFuZ2U9M109IkNvbnRlbnRDaGFuZ2UifShLdHx8KEt0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRleHQ9MF09IlRleHQiLGVbZS5SZWFkPTFdPSJSZWFkIixlW2UuV3JpdGU9Ml09IldyaXRlIn0oanR8fChqdD17fSkpLGZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IE1hcDt0LnNldCgwLEZ0LnN5bWJvbEZpbGUpLHQuc2V0KDEsRnQuc3ltYm9sTW9kdWxlKSx0LnNldCgyLEZ0LnN5bWJvbE5hbWVzcGFjZSksdC5zZXQoMyxGdC5zeW1ib2xQYWNrYWdlKSx0LnNldCg0LEZ0LnN5bWJvbENsYXNzKSx0LnNldCg1LEZ0LnN5bWJvbE1ldGhvZCksdC5zZXQoNixGdC5zeW1ib2xQcm9wZXJ0eSksdC5zZXQoNyxGdC5zeW1ib2xGaWVsZCksdC5zZXQoOCxGdC5zeW1ib2xDb25zdHJ1Y3RvciksdC5zZXQoOSxGdC5zeW1ib2xFbnVtKSx0LnNldCgxMCxGdC5zeW1ib2xJbnRlcmZhY2UpLHQuc2V0KDExLEZ0LnN5bWJvbEZ1bmN0aW9uKSx0LnNldCgxMixGdC5zeW1ib2xWYXJpYWJsZSksdC5zZXQoMTMsRnQuc3ltYm9sQ29uc3RhbnQpLHQuc2V0KDE0LEZ0LnN5bWJvbFN0cmluZyksdC5zZXQoMTUsRnQuc3ltYm9sTnVtYmVyKSx0LnNldCgxNixGdC5zeW1ib2xCb29sZWFuKSx0LnNldCgxNyxGdC5zeW1ib2xBcnJheSksdC5zZXQoMTgsRnQuc3ltYm9sT2JqZWN0KSx0LnNldCgxOSxGdC5zeW1ib2xLZXkpLHQuc2V0KDIwLEZ0LnN5bWJvbE51bGwpLHQuc2V0KDIxLEZ0LnN5bWJvbEVudW1NZW1iZXIpLHQuc2V0KDIyLEZ0LnN5bWJvbFN0cnVjdCksdC5zZXQoMjMsRnQuc3ltYm9sRXZlbnQpLHQuc2V0KDI0LEZ0LnN5bWJvbE9wZXJhdG9yKSx0LnNldCgyNSxGdC5zeW1ib2xUeXBlUGFyYW1ldGVyKSxlLnRvSWNvbj1mdW5jdGlvbihlKXtsZXQgbj10LmdldChlKTtyZXR1cm4gbnx8KGNvbnNvbGUuaW5mbygiTm8gY29kaWNvbiBmb3VuZCBmb3IgU3ltYm9sS2luZCAiK2UpLG49RnQuc3ltYm9sUHJvcGVydHkpLG59fShHdHx8KEd0PXt9KSksZnVuY3Rpb24oZSl7ZS5pcz1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwib2JqZWN0IiE9dHlwZW9mIGUpJiYoInN0cmluZyI9PXR5cGVvZiBlLmlkJiYic3RyaW5nIj09dHlwZW9mIGUudGl0bGUpfX0oJHR8fCgkdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UeXBlPTFdPSJUeXBlIixlW2UuUGFyYW1ldGVyPTJdPSJQYXJhbWV0ZXIifShKdHx8KEp0PXt9KSksbmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXAsdGhpcy5fZmFjdG9yaWVzPW5ldyBNYXAsdGhpcy5fb25EaWRDaGFuZ2U9bmV3IEYsdGhpcy5vbkRpZENoYW5nZT10aGlzLl9vbkRpZENoYW5nZS5ldmVudCx0aGlzLl9jb2xvck1hcD1udWxsfWZpcmUoZSl7dGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh7Y2hhbmdlZExhbmd1YWdlczplLGNoYW5nZWRDb2xvck1hcDohMX0pfXJlZ2lzdGVyKGUsdCl7cmV0dXJuIHRoaXMuX21hcC5zZXQoZSx0KSx0aGlzLmZpcmUoW2VdKSxoKCgoKT0+e3RoaXMuX21hcC5nZXQoZSk9PT10JiYodGhpcy5fbWFwLmRlbGV0ZShlKSx0aGlzLmZpcmUoW2VdKSl9KSl9cmVnaXN0ZXJGYWN0b3J5KGUsdCl7dmFyIG47bnVsbD09PShuPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSkpfHx2b2lkIDA9PT1ufHxuLmRpc3Bvc2UoKTtjb25zdCByPW5ldyBPbih0aGlzLGUsdCk7cmV0dXJuIHRoaXMuX2ZhY3Rvcmllcy5zZXQoZSxyKSxoKCgoKT0+e2NvbnN0IHQ9dGhpcy5fZmFjdG9yaWVzLmdldChlKTt0JiZ0PT09ciYmKHRoaXMuX2ZhY3Rvcmllcy5kZWxldGUoZSksdC5kaXNwb3NlKCkpfSkpfWdldE9yQ3JlYXRlKGUpe3JldHVybiBXbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHQ9dGhpcy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBuPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSk7cmV0dXJuIW58fG4uaXNSZXNvbHZlZD9udWxsOih5aWVsZCBuLnJlc29sdmUoKSx0aGlzLmdldChlKSl9KSl9Z2V0KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUpfHxudWxsfWlzUmVzb2x2ZWQoZSl7aWYodGhpcy5nZXQoZSkpcmV0dXJuITA7Y29uc3QgdD10aGlzLl9mYWN0b3JpZXMuZ2V0KGUpO3JldHVybiEodCYmIXQuaXNSZXNvbHZlZCl9c2V0Q29sb3JNYXAoZSl7dGhpcy5fY29sb3JNYXA9ZSx0aGlzLl9vbkRpZENoYW5nZS5maXJlKHtjaGFuZ2VkTGFuZ3VhZ2VzOkFycmF5LmZyb20odGhpcy5fbWFwLmtleXMoKSksY2hhbmdlZENvbG9yTWFwOiEwfSl9Z2V0Q29sb3JNYXAoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXB9Z2V0RGVmYXVsdEJhY2tncm91bmQoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXAmJnRoaXMuX2NvbG9yTWFwLmxlbmd0aD4yP3RoaXMuX2NvbG9yTWFwWzJdOm51bGx9fSxmdW5jdGlvbihlKXtlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkRpc2FibGVkPTFdPSJEaXNhYmxlZCIsZVtlLkVuYWJsZWQ9Ml09IkVuYWJsZWQifShYdHx8KFh0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuQXV0bz0yXT0iQXV0byJ9KFl0fHwoWXQ9e30pKSxmdW5jdGlvbihlKXtlW2UuS2VlcFdoaXRlc3BhY2U9MV09IktlZXBXaGl0ZXNwYWNlIixlW2UuSW5zZXJ0QXNTbmlwcGV0PTRdPSJJbnNlcnRBc1NuaXBwZXQifShRdHx8KFF0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLk1ldGhvZD0wXT0iTWV0aG9kIixlW2UuRnVuY3Rpb249MV09IkZ1bmN0aW9uIixlW2UuQ29uc3RydWN0b3I9Ml09IkNvbnN0cnVjdG9yIixlW2UuRmllbGQ9M109IkZpZWxkIixlW2UuVmFyaWFibGU9NF09IlZhcmlhYmxlIixlW2UuQ2xhc3M9NV09IkNsYXNzIixlW2UuU3RydWN0PTZdPSJTdHJ1Y3QiLGVbZS5JbnRlcmZhY2U9N109IkludGVyZmFjZSIsZVtlLk1vZHVsZT04XT0iTW9kdWxlIixlW2UuUHJvcGVydHk9OV09IlByb3BlcnR5IixlW2UuRXZlbnQ9MTBdPSJFdmVudCIsZVtlLk9wZXJhdG9yPTExXT0iT3BlcmF0b3IiLGVbZS5Vbml0PTEyXT0iVW5pdCIsZVtlLlZhbHVlPTEzXT0iVmFsdWUiLGVbZS5Db25zdGFudD0xNF09IkNvbnN0YW50IixlW2UuRW51bT0xNV09IkVudW0iLGVbZS5FbnVtTWVtYmVyPTE2XT0iRW51bU1lbWJlciIsZVtlLktleXdvcmQ9MTddPSJLZXl3b3JkIixlW2UuVGV4dD0xOF09IlRleHQiLGVbZS5Db2xvcj0xOV09IkNvbG9yIixlW2UuRmlsZT0yMF09IkZpbGUiLGVbZS5SZWZlcmVuY2U9MjFdPSJSZWZlcmVuY2UiLGVbZS5DdXN0b21jb2xvcj0yMl09IkN1c3RvbWNvbG9yIixlW2UuRm9sZGVyPTIzXT0iRm9sZGVyIixlW2UuVHlwZVBhcmFtZXRlcj0yNF09IlR5cGVQYXJhbWV0ZXIiLGVbZS5Vc2VyPTI1XT0iVXNlciIsZVtlLklzc3VlPTI2XT0iSXNzdWUiLGVbZS5TbmlwcGV0PTI3XT0iU25pcHBldCJ9KFp0fHwoWnQ9e30pKSxmdW5jdGlvbihlKXtlW2UuRGVwcmVjYXRlZD0xXT0iRGVwcmVjYXRlZCJ9KGVufHwoZW49e30pKSxmdW5jdGlvbihlKXtlW2UuSW52b2tlPTBdPSJJbnZva2UiLGVbZS5UcmlnZ2VyQ2hhcmFjdGVyPTFdPSJUcmlnZ2VyQ2hhcmFjdGVyIixlW2UuVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucz0yXT0iVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucyJ9KHRufHwodG49e30pKSxmdW5jdGlvbihlKXtlW2UuRVhBQ1Q9MF09IkVYQUNUIixlW2UuQUJPVkU9MV09IkFCT1ZFIixlW2UuQkVMT1c9Ml09IkJFTE9XIn0obm58fChubj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob3RTZXQ9MF09Ik5vdFNldCIsZVtlLkNvbnRlbnRGbHVzaD0xXT0iQ29udGVudEZsdXNoIixlW2UuUmVjb3ZlckZyb21NYXJrZXJzPTJdPSJSZWNvdmVyRnJvbU1hcmtlcnMiLGVbZS5FeHBsaWNpdD0zXT0iRXhwbGljaXQiLGVbZS5QYXN0ZT00XT0iUGFzdGUiLGVbZS5VbmRvPTVdPSJVbmRvIixlW2UuUmVkbz02XT0iUmVkbyJ9KHJufHwocm49e30pKSxmdW5jdGlvbihlKXtlW2UuTEY9MV09IkxGIixlW2UuQ1JMRj0yXT0iQ1JMRiJ9KGFufHwoYW49e30pKSxmdW5jdGlvbihlKXtlW2UuVGV4dD0wXT0iVGV4dCIsZVtlLlJlYWQ9MV09IlJlYWQiLGVbZS5Xcml0ZT0yXT0iV3JpdGUifShvbnx8KG9uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5LZWVwPTFdPSJLZWVwIixlW2UuQnJhY2tldHM9Ml09IkJyYWNrZXRzIixlW2UuQWR2YW5jZWQ9M109IkFkdmFuY2VkIixlW2UuRnVsbD00XT0iRnVsbCJ9KHNufHwoc249e30pKSxmdW5jdGlvbihlKXtlW2UuYWNjZXB0U3VnZ2VzdGlvbk9uQ29tbWl0Q2hhcmFjdGVyPTBdPSJhY2NlcHRTdWdnZXN0aW9uT25Db21taXRDaGFyYWN0ZXIiLGVbZS5hY2NlcHRTdWdnZXN0aW9uT25FbnRlcj0xXT0iYWNjZXB0U3VnZ2VzdGlvbk9uRW50ZXIiLGVbZS5hY2Nlc3NpYmlsaXR5U3VwcG9ydD0yXT0iYWNjZXNzaWJpbGl0eVN1cHBvcnQiLGVbZS5hY2Nlc3NpYmlsaXR5UGFnZVNpemU9M109ImFjY2Vzc2liaWxpdHlQYWdlU2l6ZSIsZVtlLmFyaWFMYWJlbD00XT0iYXJpYUxhYmVsIixlW2UuYXV0b0Nsb3NpbmdCcmFja2V0cz01XT0iYXV0b0Nsb3NpbmdCcmFja2V0cyIsZVtlLmF1dG9DbG9zaW5nRGVsZXRlPTZdPSJhdXRvQ2xvc2luZ0RlbGV0ZSIsZVtlLmF1dG9DbG9zaW5nT3ZlcnR5cGU9N109ImF1dG9DbG9zaW5nT3ZlcnR5cGUiLGVbZS5hdXRvQ2xvc2luZ1F1b3Rlcz04XT0iYXV0b0Nsb3NpbmdRdW90ZXMiLGVbZS5hdXRvSW5kZW50PTldPSJhdXRvSW5kZW50IixlW2UuYXV0b21hdGljTGF5b3V0PTEwXT0iYXV0b21hdGljTGF5b3V0IixlW2UuYXV0b1N1cnJvdW5kPTExXT0iYXV0b1N1cnJvdW5kIixlW2UuYnJhY2tldFBhaXJDb2xvcml6YXRpb249MTJdPSJicmFja2V0UGFpckNvbG9yaXphdGlvbiIsZVtlLmd1aWRlcz0xM109Imd1aWRlcyIsZVtlLmNvZGVMZW5zPTE0XT0iY29kZUxlbnMiLGVbZS5jb2RlTGVuc0ZvbnRGYW1pbHk9MTVdPSJjb2RlTGVuc0ZvbnRGYW1pbHkiLGVbZS5jb2RlTGVuc0ZvbnRTaXplPTE2XT0iY29kZUxlbnNGb250U2l6ZSIsZVtlLmNvbG9yRGVjb3JhdG9ycz0xN109ImNvbG9yRGVjb3JhdG9ycyIsZVtlLmNvbHVtblNlbGVjdGlvbj0xOF09ImNvbHVtblNlbGVjdGlvbiIsZVtlLmNvbW1lbnRzPTE5XT0iY29tbWVudHMiLGVbZS5jb250ZXh0bWVudT0yMF09ImNvbnRleHRtZW51IixlW2UuY29weVdpdGhTeW50YXhIaWdobGlnaHRpbmc9MjFdPSJjb3B5V2l0aFN5bnRheEhpZ2hsaWdodGluZyIsZVtlLmN1cnNvckJsaW5raW5nPTIyXT0iY3Vyc29yQmxpbmtpbmciLGVbZS5jdXJzb3JTbW9vdGhDYXJldEFuaW1hdGlvbj0yM109ImN1cnNvclNtb290aENhcmV0QW5pbWF0aW9uIixlW2UuY3Vyc29yU3R5bGU9MjRdPSJjdXJzb3JTdHlsZSIsZVtlLmN1cnNvclN1cnJvdW5kaW5nTGluZXM9MjVdPSJjdXJzb3JTdXJyb3VuZGluZ0xpbmVzIixlW2UuY3Vyc29yU3Vycm91bmRpbmdMaW5lc1N0eWxlPTI2XT0iY3Vyc29yU3Vycm91bmRpbmdMaW5lc1N0eWxlIixlW2UuY3Vyc29yV2lkdGg9MjddPSJjdXJzb3JXaWR0aCIsZVtlLmRpc2FibGVMYXllckhpbnRpbmc9MjhdPSJkaXNhYmxlTGF5ZXJIaW50aW5nIixlW2UuZGlzYWJsZU1vbm9zcGFjZU9wdGltaXphdGlvbnM9MjldPSJkaXNhYmxlTW9ub3NwYWNlT3B0aW1pemF0aW9ucyIsZVtlLmRvbVJlYWRPbmx5PTMwXT0iZG9tUmVhZE9ubHkiLGVbZS5kcmFnQW5kRHJvcD0zMV09ImRyYWdBbmREcm9wIixlW2UuZHJvcEludG9FZGl0b3I9MzJdPSJkcm9wSW50b0VkaXRvciIsZVtlLmVtcHR5U2VsZWN0aW9uQ2xpcGJvYXJkPTMzXT0iZW1wdHlTZWxlY3Rpb25DbGlwYm9hcmQiLGVbZS5leHBlcmltZW50YWw9MzRdPSJleHBlcmltZW50YWwiLGVbZS5leHRyYUVkaXRvckNsYXNzTmFtZT0zNV09ImV4dHJhRWRpdG9yQ2xhc3NOYW1lIixlW2UuZmFzdFNjcm9sbFNlbnNpdGl2aXR5PTM2XT0iZmFzdFNjcm9sbFNlbnNpdGl2aXR5IixlW2UuZmluZD0zN109ImZpbmQiLGVbZS5maXhlZE92ZXJmbG93V2lkZ2V0cz0zOF09ImZpeGVkT3ZlcmZsb3dXaWRnZXRzIixlW2UuZm9sZGluZz0zOV09ImZvbGRpbmciLGVbZS5mb2xkaW5nU3RyYXRlZ3k9NDBdPSJmb2xkaW5nU3RyYXRlZ3kiLGVbZS5mb2xkaW5nSGlnaGxpZ2h0PTQxXT0iZm9sZGluZ0hpZ2hsaWdodCIsZVtlLmZvbGRpbmdJbXBvcnRzQnlEZWZhdWx0PTQyXT0iZm9sZGluZ0ltcG9ydHNCeURlZmF1bHQiLGVbZS5mb2xkaW5nTWF4aW11bVJlZ2lvbnM9NDNdPSJmb2xkaW5nTWF4aW11bVJlZ2lvbnMiLGVbZS51bmZvbGRPbkNsaWNrQWZ0ZXJFbmRPZkxpbmU9NDRdPSJ1bmZvbGRPbkNsaWNrQWZ0ZXJFbmRPZkxpbmUiLGVbZS5mb250RmFtaWx5PTQ1XT0iZm9udEZhbWlseSIsZVtlLmZvbnRJbmZvPTQ2XT0iZm9udEluZm8iLGVbZS5mb250TGlnYXR1cmVzPTQ3XT0iZm9udExpZ2F0dXJlcyIsZVtlLmZvbnRTaXplPTQ4XT0iZm9udFNpemUiLGVbZS5mb250V2VpZ2h0PTQ5XT0iZm9udFdlaWdodCIsZVtlLmZvcm1hdE9uUGFzdGU9NTBdPSJmb3JtYXRPblBhc3RlIixlW2UuZm9ybWF0T25UeXBlPTUxXT0iZm9ybWF0T25UeXBlIixlW2UuZ2x5cGhNYXJnaW49NTJdPSJnbHlwaE1hcmdpbiIsZVtlLmdvdG9Mb2NhdGlvbj01M109ImdvdG9Mb2NhdGlvbiIsZVtlLmhpZGVDdXJzb3JJbk92ZXJ2aWV3UnVsZXI9NTRdPSJoaWRlQ3Vyc29ySW5PdmVydmlld1J1bGVyIixlW2UuaG92ZXI9NTVdPSJob3ZlciIsZVtlLmluRGlmZkVkaXRvcj01Nl09ImluRGlmZkVkaXRvciIsZVtlLmlubGluZVN1Z2dlc3Q9NTddPSJpbmxpbmVTdWdnZXN0IixlW2UubGV0dGVyU3BhY2luZz01OF09ImxldHRlclNwYWNpbmciLGVbZS5saWdodGJ1bGI9NTldPSJsaWdodGJ1bGIiLGVbZS5saW5lRGVjb3JhdGlvbnNXaWR0aD02MF09ImxpbmVEZWNvcmF0aW9uc1dpZHRoIixlW2UubGluZUhlaWdodD02MV09ImxpbmVIZWlnaHQiLGVbZS5saW5lTnVtYmVycz02Ml09ImxpbmVOdW1iZXJzIixlW2UubGluZU51bWJlcnNNaW5DaGFycz02M109ImxpbmVOdW1iZXJzTWluQ2hhcnMiLGVbZS5saW5rZWRFZGl0aW5nPTY0XT0ibGlua2VkRWRpdGluZyIsZVtlLmxpbmtzPTY1XT0ibGlua3MiLGVbZS5tYXRjaEJyYWNrZXRzPTY2XT0ibWF0Y2hCcmFja2V0cyIsZVtlLm1pbmltYXA9NjddPSJtaW5pbWFwIixlW2UubW91c2VTdHlsZT02OF09Im1vdXNlU3R5bGUiLGVbZS5tb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHk9NjldPSJtb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHkiLGVbZS5tb3VzZVdoZWVsWm9vbT03MF09Im1vdXNlV2hlZWxab29tIixlW2UubXVsdGlDdXJzb3JNZXJnZU92ZXJsYXBwaW5nPTcxXT0ibXVsdGlDdXJzb3JNZXJnZU92ZXJsYXBwaW5nIixlW2UubXVsdGlDdXJzb3JNb2RpZmllcj03Ml09Im11bHRpQ3Vyc29yTW9kaWZpZXIiLGVbZS5tdWx0aUN1cnNvclBhc3RlPTczXT0ibXVsdGlDdXJzb3JQYXN0ZSIsZVtlLm9jY3VycmVuY2VzSGlnaGxpZ2h0PTc0XT0ib2NjdXJyZW5jZXNIaWdobGlnaHQiLGVbZS5vdmVydmlld1J1bGVyQm9yZGVyPTc1XT0ib3ZlcnZpZXdSdWxlckJvcmRlciIsZVtlLm92ZXJ2aWV3UnVsZXJMYW5lcz03Nl09Im92ZXJ2aWV3UnVsZXJMYW5lcyIsZVtlLnBhZGRpbmc9NzddPSJwYWRkaW5nIixlW2UucGFyYW1ldGVySGludHM9NzhdPSJwYXJhbWV0ZXJIaW50cyIsZVtlLnBlZWtXaWRnZXREZWZhdWx0Rm9jdXM9NzldPSJwZWVrV2lkZ2V0RGVmYXVsdEZvY3VzIixlW2UuZGVmaW5pdGlvbkxpbmtPcGVuc0luUGVlaz04MF09ImRlZmluaXRpb25MaW5rT3BlbnNJblBlZWsiLGVbZS5xdWlja1N1Z2dlc3Rpb25zPTgxXT0icXVpY2tTdWdnZXN0aW9ucyIsZVtlLnF1aWNrU3VnZ2VzdGlvbnNEZWxheT04Ml09InF1aWNrU3VnZ2VzdGlvbnNEZWxheSIsZVtlLnJlYWRPbmx5PTgzXT0icmVhZE9ubHkiLGVbZS5yZW5hbWVPblR5cGU9ODRdPSJyZW5hbWVPblR5cGUiLGVbZS5yZW5kZXJDb250cm9sQ2hhcmFjdGVycz04NV09InJlbmRlckNvbnRyb2xDaGFyYWN0ZXJzIixlW2UucmVuZGVyRmluYWxOZXdsaW5lPTg2XT0icmVuZGVyRmluYWxOZXdsaW5lIixlW2UucmVuZGVyTGluZUhpZ2hsaWdodD04N109InJlbmRlckxpbmVIaWdobGlnaHQiLGVbZS5yZW5kZXJMaW5lSGlnaGxpZ2h0T25seVdoZW5Gb2N1cz04OF09InJlbmRlckxpbmVIaWdobGlnaHRPbmx5V2hlbkZvY3VzIixlW2UucmVuZGVyVmFsaWRhdGlvbkRlY29yYXRpb25zPTg5XT0icmVuZGVyVmFsaWRhdGlvbkRlY29yYXRpb25zIixlW2UucmVuZGVyV2hpdGVzcGFjZT05MF09InJlbmRlcldoaXRlc3BhY2UiLGVbZS5yZXZlYWxIb3Jpem9udGFsUmlnaHRQYWRkaW5nPTkxXT0icmV2ZWFsSG9yaXpvbnRhbFJpZ2h0UGFkZGluZyIsZVtlLnJvdW5kZWRTZWxlY3Rpb249OTJdPSJyb3VuZGVkU2VsZWN0aW9uIixlW2UucnVsZXJzPTkzXT0icnVsZXJzIixlW2Uuc2Nyb2xsYmFyPTk0XT0ic2Nyb2xsYmFyIixlW2Uuc2Nyb2xsQmV5b25kTGFzdENvbHVtbj05NV09InNjcm9sbEJleW9uZExhc3RDb2x1bW4iLGVbZS5zY3JvbGxCZXlvbmRMYXN0TGluZT05Nl09InNjcm9sbEJleW9uZExhc3RMaW5lIixlW2Uuc2Nyb2xsUHJlZG9taW5hbnRBeGlzPTk3XT0ic2Nyb2xsUHJlZG9taW5hbnRBeGlzIixlW2Uuc2VsZWN0aW9uQ2xpcGJvYXJkPTk4XT0ic2VsZWN0aW9uQ2xpcGJvYXJkIixlW2Uuc2VsZWN0aW9uSGlnaGxpZ2h0PTk5XT0ic2VsZWN0aW9uSGlnaGxpZ2h0IixlW2Uuc2VsZWN0T25MaW5lTnVtYmVycz0xMDBdPSJzZWxlY3RPbkxpbmVOdW1iZXJzIixlW2Uuc2hvd0ZvbGRpbmdDb250cm9scz0xMDFdPSJzaG93Rm9sZGluZ0NvbnRyb2xzIixlW2Uuc2hvd1VudXNlZD0xMDJdPSJzaG93VW51c2VkIixlW2Uuc25pcHBldFN1Z2dlc3Rpb25zPTEwM109InNuaXBwZXRTdWdnZXN0aW9ucyIsZVtlLnNtYXJ0U2VsZWN0PTEwNF09InNtYXJ0U2VsZWN0IixlW2Uuc21vb3RoU2Nyb2xsaW5nPTEwNV09InNtb290aFNjcm9sbGluZyIsZVtlLnN0aWNreVRhYlN0b3BzPTEwNl09InN0aWNreVRhYlN0b3BzIixlW2Uuc3RvcFJlbmRlcmluZ0xpbmVBZnRlcj0xMDddPSJzdG9wUmVuZGVyaW5nTGluZUFmdGVyIixlW2Uuc3VnZ2VzdD0xMDhdPSJzdWdnZXN0IixlW2Uuc3VnZ2VzdEZvbnRTaXplPTEwOV09InN1Z2dlc3RGb250U2l6ZSIsZVtlLnN1Z2dlc3RMaW5lSGVpZ2h0PTExMF09InN1Z2dlc3RMaW5lSGVpZ2h0IixlW2Uuc3VnZ2VzdE9uVHJpZ2dlckNoYXJhY3RlcnM9MTExXT0ic3VnZ2VzdE9uVHJpZ2dlckNoYXJhY3RlcnMiLGVbZS5zdWdnZXN0U2VsZWN0aW9uPTExMl09InN1Z2dlc3RTZWxlY3Rpb24iLGVbZS50YWJDb21wbGV0aW9uPTExM109InRhYkNvbXBsZXRpb24iLGVbZS50YWJJbmRleD0xMTRdPSJ0YWJJbmRleCIsZVtlLnVuaWNvZGVIaWdobGlnaHRpbmc9MTE1XT0idW5pY29kZUhpZ2hsaWdodGluZyIsZVtlLnVudXN1YWxMaW5lVGVybWluYXRvcnM9MTE2XT0idW51c3VhbExpbmVUZXJtaW5hdG9ycyIsZVtlLnVzZVNoYWRvd0RPTT0xMTddPSJ1c2VTaGFkb3dET00iLGVbZS51c2VUYWJTdG9wcz0xMThdPSJ1c2VUYWJTdG9wcyIsZVtlLndvcmRTZXBhcmF0b3JzPTExOV09IndvcmRTZXBhcmF0b3JzIixlW2Uud29yZFdyYXA9MTIwXT0id29yZFdyYXAiLGVbZS53b3JkV3JhcEJyZWFrQWZ0ZXJDaGFyYWN0ZXJzPTEyMV09IndvcmRXcmFwQnJlYWtBZnRlckNoYXJhY3RlcnMiLGVbZS53b3JkV3JhcEJyZWFrQmVmb3JlQ2hhcmFjdGVycz0xMjJdPSJ3b3JkV3JhcEJyZWFrQmVmb3JlQ2hhcmFjdGVycyIsZVtlLndvcmRXcmFwQ29sdW1uPTEyM109IndvcmRXcmFwQ29sdW1uIixlW2Uud29yZFdyYXBPdmVycmlkZTE9MTI0XT0id29yZFdyYXBPdmVycmlkZTEiLGVbZS53b3JkV3JhcE92ZXJyaWRlMj0xMjVdPSJ3b3JkV3JhcE92ZXJyaWRlMiIsZVtlLndyYXBwaW5nSW5kZW50PTEyNl09IndyYXBwaW5nSW5kZW50IixlW2Uud3JhcHBpbmdTdHJhdGVneT0xMjddPSJ3cmFwcGluZ1N0cmF0ZWd5IixlW2Uuc2hvd0RlcHJlY2F0ZWQ9MTI4XT0ic2hvd0RlcHJlY2F0ZWQiLGVbZS5pbmxheUhpbnRzPTEyOV09ImlubGF5SGludHMiLGVbZS5lZGl0b3JDbGFzc05hbWU9MTMwXT0iZWRpdG9yQ2xhc3NOYW1lIixlW2UucGl4ZWxSYXRpbz0xMzFdPSJwaXhlbFJhdGlvIixlW2UudGFiRm9jdXNNb2RlPTEzMl09InRhYkZvY3VzTW9kZSIsZVtlLmxheW91dEluZm89MTMzXT0ibGF5b3V0SW5mbyIsZVtlLndyYXBwaW5nSW5mbz0xMzRdPSJ3cmFwcGluZ0luZm8ifShsbnx8KGxuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRleHREZWZpbmVkPTBdPSJUZXh0RGVmaW5lZCIsZVtlLkxGPTFdPSJMRiIsZVtlLkNSTEY9Ml09IkNSTEYifShjbnx8KGNuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxGPTBdPSJMRiIsZVtlLkNSTEY9MV09IkNSTEYifShobnx8KGhuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5JbmRlbnQ9MV09IkluZGVudCIsZVtlLkluZGVudE91dGRlbnQ9Ml09IkluZGVudE91dGRlbnQiLGVbZS5PdXRkZW50PTNdPSJPdXRkZW50In0oZG58fChkbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Cb3RoPTBdPSJCb3RoIixlW2UuUmlnaHQ9MV09IlJpZ2h0IixlW2UuTGVmdD0yXT0iTGVmdCIsZVtlLk5vbmU9M109Ik5vbmUifSh1bnx8KHVuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlR5cGU9MV09IlR5cGUiLGVbZS5QYXJhbWV0ZXI9Ml09IlBhcmFtZXRlciJ9KHBufHwocG49e30pKSxmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5FeHBsaWNpdD0xXT0iRXhwbGljaXQifShtbnx8KG1uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkRlcGVuZHNPbktiTGF5b3V0PS0xXT0iRGVwZW5kc09uS2JMYXlvdXQiLGVbZS5Vbmtub3duPTBdPSJVbmtub3duIixlW2UuQmFja3NwYWNlPTFdPSJCYWNrc3BhY2UiLGVbZS5UYWI9Ml09IlRhYiIsZVtlLkVudGVyPTNdPSJFbnRlciIsZVtlLlNoaWZ0PTRdPSJTaGlmdCIsZVtlLkN0cmw9NV09IkN0cmwiLGVbZS5BbHQ9Nl09IkFsdCIsZVtlLlBhdXNlQnJlYWs9N109IlBhdXNlQnJlYWsiLGVbZS5DYXBzTG9jaz04XT0iQ2Fwc0xvY2siLGVbZS5Fc2NhcGU9OV09IkVzY2FwZSIsZVtlLlNwYWNlPTEwXT0iU3BhY2UiLGVbZS5QYWdlVXA9MTFdPSJQYWdlVXAiLGVbZS5QYWdlRG93bj0xMl09IlBhZ2VEb3duIixlW2UuRW5kPTEzXT0iRW5kIixlW2UuSG9tZT0xNF09IkhvbWUiLGVbZS5MZWZ0QXJyb3c9MTVdPSJMZWZ0QXJyb3ciLGVbZS5VcEFycm93PTE2XT0iVXBBcnJvdyIsZVtlLlJpZ2h0QXJyb3c9MTddPSJSaWdodEFycm93IixlW2UuRG93bkFycm93PTE4XT0iRG93bkFycm93IixlW2UuSW5zZXJ0PTE5XT0iSW5zZXJ0IixlW2UuRGVsZXRlPTIwXT0iRGVsZXRlIixlW2UuRGlnaXQwPTIxXT0iRGlnaXQwIixlW2UuRGlnaXQxPTIyXT0iRGlnaXQxIixlW2UuRGlnaXQyPTIzXT0iRGlnaXQyIixlW2UuRGlnaXQzPTI0XT0iRGlnaXQzIixlW2UuRGlnaXQ0PTI1XT0iRGlnaXQ0IixlW2UuRGlnaXQ1PTI2XT0iRGlnaXQ1IixlW2UuRGlnaXQ2PTI3XT0iRGlnaXQ2IixlW2UuRGlnaXQ3PTI4XT0iRGlnaXQ3IixlW2UuRGlnaXQ4PTI5XT0iRGlnaXQ4IixlW2UuRGlnaXQ5PTMwXT0iRGlnaXQ5IixlW2UuS2V5QT0zMV09IktleUEiLGVbZS5LZXlCPTMyXT0iS2V5QiIsZVtlLktleUM9MzNdPSJLZXlDIixlW2UuS2V5RD0zNF09IktleUQiLGVbZS5LZXlFPTM1XT0iS2V5RSIsZVtlLktleUY9MzZdPSJLZXlGIixlW2UuS2V5Rz0zN109IktleUciLGVbZS5LZXlIPTM4XT0iS2V5SCIsZVtlLktleUk9MzldPSJLZXlJIixlW2UuS2V5Sj00MF09IktleUoiLGVbZS5LZXlLPTQxXT0iS2V5SyIsZVtlLktleUw9NDJdPSJLZXlMIixlW2UuS2V5TT00M109IktleU0iLGVbZS5LZXlOPTQ0XT0iS2V5TiIsZVtlLktleU89NDVdPSJLZXlPIixlW2UuS2V5UD00Nl09IktleVAiLGVbZS5LZXlRPTQ3XT0iS2V5USIsZVtlLktleVI9NDhdPSJLZXlSIixlW2UuS2V5Uz00OV09IktleVMiLGVbZS5LZXlUPTUwXT0iS2V5VCIsZVtlLktleVU9NTFdPSJLZXlVIixlW2UuS2V5Vj01Ml09IktleVYiLGVbZS5LZXlXPTUzXT0iS2V5VyIsZVtlLktleVg9NTRdPSJLZXlYIixlW2UuS2V5WT01NV09IktleVkiLGVbZS5LZXlaPTU2XT0iS2V5WiIsZVtlLk1ldGE9NTddPSJNZXRhIixlW2UuQ29udGV4dE1lbnU9NThdPSJDb250ZXh0TWVudSIsZVtlLkYxPTU5XT0iRjEiLGVbZS5GMj02MF09IkYyIixlW2UuRjM9NjFdPSJGMyIsZVtlLkY0PTYyXT0iRjQiLGVbZS5GNT02M109IkY1IixlW2UuRjY9NjRdPSJGNiIsZVtlLkY3PTY1XT0iRjciLGVbZS5GOD02Nl09IkY4IixlW2UuRjk9NjddPSJGOSIsZVtlLkYxMD02OF09IkYxMCIsZVtlLkYxMT02OV09IkYxMSIsZVtlLkYxMj03MF09IkYxMiIsZVtlLkYxMz03MV09IkYxMyIsZVtlLkYxND03Ml09IkYxNCIsZVtlLkYxNT03M109IkYxNSIsZVtlLkYxNj03NF09IkYxNiIsZVtlLkYxNz03NV09IkYxNyIsZVtlLkYxOD03Nl09IkYxOCIsZVtlLkYxOT03N109IkYxOSIsZVtlLk51bUxvY2s9NzhdPSJOdW1Mb2NrIixlW2UuU2Nyb2xsTG9jaz03OV09IlNjcm9sbExvY2siLGVbZS5TZW1pY29sb249ODBdPSJTZW1pY29sb24iLGVbZS5FcXVhbD04MV09IkVxdWFsIixlW2UuQ29tbWE9ODJdPSJDb21tYSIsZVtlLk1pbnVzPTgzXT0iTWludXMiLGVbZS5QZXJpb2Q9ODRdPSJQZXJpb2QiLGVbZS5TbGFzaD04NV09IlNsYXNoIixlW2UuQmFja3F1b3RlPTg2XT0iQmFja3F1b3RlIixlW2UuQnJhY2tldExlZnQ9ODddPSJCcmFja2V0TGVmdCIsZVtlLkJhY2tzbGFzaD04OF09IkJhY2tzbGFzaCIsZVtlLkJyYWNrZXRSaWdodD04OV09IkJyYWNrZXRSaWdodCIsZVtlLlF1b3RlPTkwXT0iUXVvdGUiLGVbZS5PRU1fOD05MV09Ik9FTV84IixlW2UuSW50bEJhY2tzbGFzaD05Ml09IkludGxCYWNrc2xhc2giLGVbZS5OdW1wYWQwPTkzXT0iTnVtcGFkMCIsZVtlLk51bXBhZDE9OTRdPSJOdW1wYWQxIixlW2UuTnVtcGFkMj05NV09Ik51bXBhZDIiLGVbZS5OdW1wYWQzPTk2XT0iTnVtcGFkMyIsZVtlLk51bXBhZDQ9OTddPSJOdW1wYWQ0IixlW2UuTnVtcGFkNT05OF09Ik51bXBhZDUiLGVbZS5OdW1wYWQ2PTk5XT0iTnVtcGFkNiIsZVtlLk51bXBhZDc9MTAwXT0iTnVtcGFkNyIsZVtlLk51bXBhZDg9MTAxXT0iTnVtcGFkOCIsZVtlLk51bXBhZDk9MTAyXT0iTnVtcGFkOSIsZVtlLk51bXBhZE11bHRpcGx5PTEwM109Ik51bXBhZE11bHRpcGx5IixlW2UuTnVtcGFkQWRkPTEwNF09Ik51bXBhZEFkZCIsZVtlLk5VTVBBRF9TRVBBUkFUT1I9MTA1XT0iTlVNUEFEX1NFUEFSQVRPUiIsZVtlLk51bXBhZFN1YnRyYWN0PTEwNl09Ik51bXBhZFN1YnRyYWN0IixlW2UuTnVtcGFkRGVjaW1hbD0xMDddPSJOdW1wYWREZWNpbWFsIixlW2UuTnVtcGFkRGl2aWRlPTEwOF09Ik51bXBhZERpdmlkZSIsZVtlLktFWV9JTl9DT01QT1NJVElPTj0xMDldPSJLRVlfSU5fQ09NUE9TSVRJT04iLGVbZS5BQk5UX0MxPTExMF09IkFCTlRfQzEiLGVbZS5BQk5UX0MyPTExMV09IkFCTlRfQzIiLGVbZS5BdWRpb1ZvbHVtZU11dGU9MTEyXT0iQXVkaW9Wb2x1bWVNdXRlIixlW2UuQXVkaW9Wb2x1bWVVcD0xMTNdPSJBdWRpb1ZvbHVtZVVwIixlW2UuQXVkaW9Wb2x1bWVEb3duPTExNF09IkF1ZGlvVm9sdW1lRG93biIsZVtlLkJyb3dzZXJTZWFyY2g9MTE1XT0iQnJvd3NlclNlYXJjaCIsZVtlLkJyb3dzZXJIb21lPTExNl09IkJyb3dzZXJIb21lIixlW2UuQnJvd3NlckJhY2s9MTE3XT0iQnJvd3NlckJhY2siLGVbZS5Ccm93c2VyRm9yd2FyZD0xMThdPSJCcm93c2VyRm9yd2FyZCIsZVtlLk1lZGlhVHJhY2tOZXh0PTExOV09Ik1lZGlhVHJhY2tOZXh0IixlW2UuTWVkaWFUcmFja1ByZXZpb3VzPTEyMF09Ik1lZGlhVHJhY2tQcmV2aW91cyIsZVtlLk1lZGlhU3RvcD0xMjFdPSJNZWRpYVN0b3AiLGVbZS5NZWRpYVBsYXlQYXVzZT0xMjJdPSJNZWRpYVBsYXlQYXVzZSIsZVtlLkxhdW5jaE1lZGlhUGxheWVyPTEyM109IkxhdW5jaE1lZGlhUGxheWVyIixlW2UuTGF1bmNoTWFpbD0xMjRdPSJMYXVuY2hNYWlsIixlW2UuTGF1bmNoQXBwMj0xMjVdPSJMYXVuY2hBcHAyIixlW2UuQ2xlYXI9MTI2XT0iQ2xlYXIiLGVbZS5NQVhfVkFMVUU9MTI3XT0iTUFYX1ZBTFVFIn0oZm58fChmbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5IaW50PTFdPSJIaW50IixlW2UuSW5mbz0yXT0iSW5mbyIsZVtlLldhcm5pbmc9NF09Ildhcm5pbmciLGVbZS5FcnJvcj04XT0iRXJyb3IifShnbnx8KGduPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlVubmVjZXNzYXJ5PTFdPSJVbm5lY2Vzc2FyeSIsZVtlLkRlcHJlY2F0ZWQ9Ml09IkRlcHJlY2F0ZWQifShibnx8KGJuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLklubGluZT0xXT0iSW5saW5lIixlW2UuR3V0dGVyPTJdPSJHdXR0ZXIifSh3bnx8KHduPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlVOS05PV049MF09IlVOS05PV04iLGVbZS5URVhUQVJFQT0xXT0iVEVYVEFSRUEiLGVbZS5HVVRURVJfR0xZUEhfTUFSR0lOPTJdPSJHVVRURVJfR0xZUEhfTUFSR0lOIixlW2UuR1VUVEVSX0xJTkVfTlVNQkVSUz0zXT0iR1VUVEVSX0xJTkVfTlVNQkVSUyIsZVtlLkdVVFRFUl9MSU5FX0RFQ09SQVRJT05TPTRdPSJHVVRURVJfTElORV9ERUNPUkFUSU9OUyIsZVtlLkdVVFRFUl9WSUVXX1pPTkU9NV09IkdVVFRFUl9WSUVXX1pPTkUiLGVbZS5DT05URU5UX1RFWFQ9Nl09IkNPTlRFTlRfVEVYVCIsZVtlLkNPTlRFTlRfRU1QVFk9N109IkNPTlRFTlRfRU1QVFkiLGVbZS5DT05URU5UX1ZJRVdfWk9ORT04XT0iQ09OVEVOVF9WSUVXX1pPTkUiLGVbZS5DT05URU5UX1dJREdFVD05XT0iQ09OVEVOVF9XSURHRVQiLGVbZS5PVkVSVklFV19SVUxFUj0xMF09Ik9WRVJWSUVXX1JVTEVSIixlW2UuU0NST0xMQkFSPTExXT0iU0NST0xMQkFSIixlW2UuT1ZFUkxBWV9XSURHRVQ9MTJdPSJPVkVSTEFZX1dJREdFVCIsZVtlLk9VVFNJREVfRURJVE9SPTEzXT0iT1VUU0lERV9FRElUT1IifShfbnx8KF9uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRPUF9SSUdIVF9DT1JORVI9MF09IlRPUF9SSUdIVF9DT1JORVIiLGVbZS5CT1RUT01fUklHSFRfQ09STkVSPTFdPSJCT1RUT01fUklHSFRfQ09STkVSIixlW2UuVE9QX0NFTlRFUj0yXT0iVE9QX0NFTlRFUiJ9KHZufHwodm49e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0xXT0iTGVmdCIsZVtlLkNlbnRlcj0yXT0iQ2VudGVyIixlW2UuUmlnaHQ9NF09IlJpZ2h0IixlW2UuRnVsbD03XT0iRnVsbCJ9KHlufHwoeW49e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0wXT0iTGVmdCIsZVtlLlJpZ2h0PTFdPSJSaWdodCIsZVtlLk5vbmU9Ml09Ik5vbmUiLGVbZS5MZWZ0T2ZJbmplY3RlZFRleHQ9M109IkxlZnRPZkluamVjdGVkVGV4dCIsZVtlLlJpZ2h0T2ZJbmplY3RlZFRleHQ9NF09IlJpZ2h0T2ZJbmplY3RlZFRleHQifShUbnx8KFRuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk9mZj0wXT0iT2ZmIixlW2UuT249MV09Ik9uIixlW2UuUmVsYXRpdmU9Ml09IlJlbGF0aXZlIixlW2UuSW50ZXJ2YWw9M109IkludGVydmFsIixlW2UuQ3VzdG9tPTRdPSJDdXN0b20ifShrbnx8KGtuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5UZXh0PTFdPSJUZXh0IixlW2UuQmxvY2tzPTJdPSJCbG9ja3MifShTbnx8KFNuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlNtb290aD0wXT0iU21vb3RoIixlW2UuSW1tZWRpYXRlPTFdPSJJbW1lZGlhdGUifShDbnx8KENuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkF1dG89MV09IkF1dG8iLGVbZS5IaWRkZW49Ml09IkhpZGRlbiIsZVtlLlZpc2libGU9M109IlZpc2libGUifSh4bnx8KHhuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxUUj0wXT0iTFRSIixlW2UuUlRMPTFdPSJSVEwifShMbnx8KExuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0yXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLkNvbnRlbnRDaGFuZ2U9M109IkNvbnRlbnRDaGFuZ2UifShFbnx8KEVuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkZpbGU9MF09IkZpbGUiLGVbZS5Nb2R1bGU9MV09Ik1vZHVsZSIsZVtlLk5hbWVzcGFjZT0yXT0iTmFtZXNwYWNlIixlW2UuUGFja2FnZT0zXT0iUGFja2FnZSIsZVtlLkNsYXNzPTRdPSJDbGFzcyIsZVtlLk1ldGhvZD01XT0iTWV0aG9kIixlW2UuUHJvcGVydHk9Nl09IlByb3BlcnR5IixlW2UuRmllbGQ9N109IkZpZWxkIixlW2UuQ29uc3RydWN0b3I9OF09IkNvbnN0cnVjdG9yIixlW2UuRW51bT05XT0iRW51bSIsZVtlLkludGVyZmFjZT0xMF09IkludGVyZmFjZSIsZVtlLkZ1bmN0aW9uPTExXT0iRnVuY3Rpb24iLGVbZS5WYXJpYWJsZT0xMl09IlZhcmlhYmxlIixlW2UuQ29uc3RhbnQ9MTNdPSJDb25zdGFudCIsZVtlLlN0cmluZz0xNF09IlN0cmluZyIsZVtlLk51bWJlcj0xNV09Ik51bWJlciIsZVtlLkJvb2xlYW49MTZdPSJCb29sZWFuIixlW2UuQXJyYXk9MTddPSJBcnJheSIsZVtlLk9iamVjdD0xOF09Ik9iamVjdCIsZVtlLktleT0xOV09IktleSIsZVtlLk51bGw9MjBdPSJOdWxsIixlW2UuRW51bU1lbWJlcj0yMV09IkVudW1NZW1iZXIiLGVbZS5TdHJ1Y3Q9MjJdPSJTdHJ1Y3QiLGVbZS5FdmVudD0yM109IkV2ZW50IixlW2UuT3BlcmF0b3I9MjRdPSJPcGVyYXRvciIsZVtlLlR5cGVQYXJhbWV0ZXI9MjVdPSJUeXBlUGFyYW1ldGVyIn0oQW58fChBbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5EZXByZWNhdGVkPTFdPSJEZXByZWNhdGVkIn0oTW58fChNbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5IaWRkZW49MF09IkhpZGRlbiIsZVtlLkJsaW5rPTFdPSJCbGluayIsZVtlLlNtb290aD0yXT0iU21vb3RoIixlW2UuUGhhc2U9M109IlBoYXNlIixlW2UuRXhwYW5kPTRdPSJFeHBhbmQiLGVbZS5Tb2xpZD01XT0iU29saWQifShSbnx8KFJuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxpbmU9MV09IkxpbmUiLGVbZS5CbG9jaz0yXT0iQmxvY2siLGVbZS5VbmRlcmxpbmU9M109IlVuZGVybGluZSIsZVtlLkxpbmVUaGluPTRdPSJMaW5lVGhpbiIsZVtlLkJsb2NrT3V0bGluZT01XT0iQmxvY2tPdXRsaW5lIixlW2UuVW5kZXJsaW5lVGhpbj02XT0iVW5kZXJsaW5lVGhpbiJ9KElufHwoSW49e30pKSxmdW5jdGlvbihlKXtlW2UuQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0wXT0iQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcyIsZVtlLk5ldmVyR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0xXT0iTmV2ZXJHcm93c1doZW5UeXBpbmdBdEVkZ2VzIixlW2UuR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZT0yXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZSIsZVtlLkdyb3dzT25seVdoZW5UeXBpbmdBZnRlcj0zXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0FmdGVyIn0oTm58fChObj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuU2FtZT0xXT0iU2FtZSIsZVtlLkluZGVudD0yXT0iSW5kZW50IixlW2UuRGVlcEluZGVudD0zXT0iRGVlcEluZGVudCJ9KFVufHwoVW49e30pKTtjbGFzcyBxbntzdGF0aWMgY2hvcmQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4oZXwoNjU1MzUmdCk8PDE2Pj4+MCk+Pj4wfShlLHQpfX1mdW5jdGlvbiBGbihlLHQsbixyLGkpe3JldHVybiBmdW5jdGlvbihlLHQsbixyLGkpe2lmKDA9PT1yKXJldHVybiEwO2NvbnN0IGE9dC5jaGFyQ29kZUF0KHItMSk7aWYoMCE9PWUuZ2V0KGEpKXJldHVybiEwO2lmKDEzPT09YXx8MTA9PT1hKXJldHVybiEwO2lmKGk+MCl7Y29uc3Qgbj10LmNoYXJDb2RlQXQocik7aWYoMCE9PWUuZ2V0KG4pKXJldHVybiEwfXJldHVybiExfShlLHQsMCxyLGkpJiZmdW5jdGlvbihlLHQsbixyLGkpe2lmKHIraT09PW4pcmV0dXJuITA7Y29uc3QgYT10LmNoYXJDb2RlQXQocitpKTtpZigwIT09ZS5nZXQoYSkpcmV0dXJuITA7aWYoMTM9PT1hfHwxMD09PWEpcmV0dXJuITA7aWYoaT4wKXtjb25zdCBuPXQuY2hhckNvZGVBdChyK2ktMSk7aWYoMCE9PWUuZ2V0KG4pKXJldHVybiEwfXJldHVybiExfShlLHQsbixyLGkpfXFuLkN0cmxDbWQ9MjA0OCxxbi5TaGlmdD0xMDI0LHFuLkFsdD01MTIscW4uV2luQ3RybD0yNTYsZnVuY3Rpb24oZSl7ZVtlLkxlZnQ9MV09IkxlZnQiLGVbZS5DZW50ZXI9Ml09IkNlbnRlciIsZVtlLlJpZ2h0PTRdPSJSaWdodCIsZVtlLkZ1bGw9N109IkZ1bGwifShIbnx8KEhuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLklubGluZT0xXT0iSW5saW5lIixlW2UuR3V0dGVyPTJdPSJHdXR0ZXIifSh6bnx8KHpuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkJvdGg9MF09IkJvdGgiLGVbZS5SaWdodD0xXT0iUmlnaHQiLGVbZS5MZWZ0PTJdPSJMZWZ0IixlW2UuTm9uZT0zXT0iTm9uZSJ9KERufHwoRG49e30pKTtjbGFzcyBWbntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3dvcmRTZXBhcmF0b3JzPWUsdGhpcy5fc2VhcmNoUmVnZXg9dCx0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfXJlc2V0KGUpe3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleD1lLHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9LTEsdGhpcy5fcHJldk1hdGNoTGVuZ3RoPTB9bmV4dChlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBuO2Rve2lmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgrdGhpcy5fcHJldk1hdGNoTGVuZ3RoPT09dClyZXR1cm4gbnVsbDtpZihuPXRoaXMuX3NlYXJjaFJlZ2V4LmV4ZWMoZSksIW4pcmV0dXJuIG51bGw7Y29uc3Qgcj1uLmluZGV4LGk9blswXS5sZW5ndGg7aWYocj09PXRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgmJmk9PT10aGlzLl9wcmV2TWF0Y2hMZW5ndGgpe2lmKDA9PT1pKXtZKGUsdCx0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgpPjY1NTM1P3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleCs9Mjp0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTE7Y29udGludWV9cmV0dXJuIG51bGx9aWYodGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD1yLHRoaXMuX3ByZXZNYXRjaExlbmd0aD1pLCF0aGlzLl93b3JkU2VwYXJhdG9yc3x8Rm4odGhpcy5fd29yZFNlcGFyYXRvcnMsZSx0LHIsaSkpcmV0dXJuIG59d2hpbGUobik7cmV0dXJuIG51bGx9fWNsYXNzIEJue3N0YXRpYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodHMoZSx0LG4pe2NvbnN0IHI9bj9uLnN0YXJ0TGluZU51bWJlcjoxLGk9bj9uLmVuZExpbmVOdW1iZXI6ZS5nZXRMaW5lQ291bnQoKSxhPW5ldyBLbih0KSxvPWEuZ2V0Q2FuZGlkYXRlQ29kZVBvaW50cygpO2xldCBzO3ZhciBsLGM7cz0iYWxsTm9uQmFzaWNBc2NpaSI9PT1vP25ldyBSZWdFeHAoIlteXFx0XFxuXFxyXFx4MjAtXFx4N0VdIiwiZyIpOm5ldyBSZWdFeHAoIiIrKGw9QXJyYXkuZnJvbShvKSxgWyR7Yz1sLm1hcCgoZT0+U3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpKS5qb2luKCIiKSxjLnJlcGxhY2UoL1tcXFx7XH1cKlwrXD9cfFxeXCRcLlxbXF1cKFwpXS9nLCJcXCQmIil9XWApLCJnIik7Y29uc3QgaD1uZXcgVm4obnVsbCxzKSxkPVtdO2xldCB1LHA9ITEsbT0wLGY9MCxnPTA7ZTpmb3IobGV0IHQ9cixuPWk7dDw9bjt0Kyspe2NvbnN0IG49ZS5nZXRMaW5lQ29udGVudCh0KSxyPW4ubGVuZ3RoO2gucmVzZXQoMCk7ZG97aWYodT1oLm5leHQobiksdSl7bGV0IGU9dS5pbmRleCxpPXUuaW5kZXgrdVswXS5sZW5ndGg7aWYoZT4wKXtYKG4uY2hhckNvZGVBdChlLTEpKSYmZS0tfWlmKGkrMTxyKXtYKG4uY2hhckNvZGVBdChpLTEpKSYmaSsrfWNvbnN0IG89bi5zdWJzdHJpbmcoZSxpKSxzPV90KGUrMSxidCxuLDApLGw9YS5zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKG8scz9zLndvcmQ6bnVsbCk7aWYoMCE9PWwpezM9PT1sP20rKzoyPT09bD9mKys6MT09PWw/ZysrOkcoKTtjb25zdCBuPTFlMztpZihkLmxlbmd0aD49bil7cD0hMDticmVhayBlfWQucHVzaChuZXcgdHQodCxlKzEsdCxpKzEpKX19fXdoaWxlKHUpfXJldHVybntyYW5nZXM6ZCxoYXNNb3JlOnAsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6bSxpbnZpc2libGVDaGFyYWN0ZXJDb3VudDpmLG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDpnfX1zdGF0aWMgY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRSZWFzb24oZSx0KXtjb25zdCBuPW5ldyBLbih0KTtzd2l0Y2gobi5zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKGUsbnVsbCkpe2Nhc2UgMDpyZXR1cm4gbnVsbDtjYXNlIDI6cmV0dXJue2tpbmQ6MX07Y2FzZSAzOntjb25zdCByPWUuY29kZVBvaW50QXQoMCksaT1uLmFtYmlndW91c0NoYXJhY3RlcnMuZ2V0UHJpbWFyeUNvbmZ1c2FibGUociksYT1aLmdldExvY2FsZXMoKS5maWx0ZXIoKGU9PiFaLmdldEluc3RhbmNlKG5ldyBTZXQoWy4uLnQuYWxsb3dlZExvY2FsZXMsZV0pKS5pc0FtYmlndW91cyhyKSkpO3JldHVybntraW5kOjAsY29uZnVzYWJsZVdpdGg6U3RyaW5nLmZyb21Db2RlUG9pbnQoaSksbm90QW1iaWd1b3VzSW5Mb2NhbGVzOmF9fWNhc2UgMTpyZXR1cm57a2luZDoyfX19fWNsYXNzIEtue2NvbnN0cnVjdG9yKGUpe3RoaXMub3B0aW9ucz1lLHRoaXMuYWxsb3dlZENvZGVQb2ludHM9bmV3IFNldChlLmFsbG93ZWRDb2RlUG9pbnRzKSx0aGlzLmFtYmlndW91c0NoYXJhY3RlcnM9Wi5nZXRJbnN0YW5jZShuZXcgU2V0KGUuYWxsb3dlZExvY2FsZXMpKX1nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCl7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuImFsbE5vbkJhc2ljQXNjaWkiO2NvbnN0IGU9bmV3IFNldDtpZih0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycylmb3IoY29uc3QgdCBvZiBlZS5jb2RlUG9pbnRzKWpuKFN0cmluZy5mcm9tQ29kZVBvaW50KHQpKXx8ZS5hZGQodCk7aWYodGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMpZm9yKGNvbnN0IHQgb2YgdGhpcy5hbWJpZ3VvdXNDaGFyYWN0ZXJzLmdldENvbmZ1c2FibGVDb2RlUG9pbnRzKCkpZS5hZGQodCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5hbGxvd2VkQ29kZVBvaW50cyllLmRlbGV0ZSh0KTtyZXR1cm4gZX1zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKGUsdCl7Y29uc3Qgbj1lLmNvZGVQb2ludEF0KDApO2lmKHRoaXMuYWxsb3dlZENvZGVQb2ludHMuaGFzKG4pKXJldHVybiAwO2lmKHRoaXMub3B0aW9ucy5ub25CYXNpY0FTQ0lJKXJldHVybiAxO2xldCByPSExLGk9ITE7aWYodClmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PWUuY29kZVBvaW50QXQoMCksbj0oYT1lLFEudGVzdChhKSk7cj1yfHxuLG58fHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyh0KXx8ZWUuaXNJbnZpc2libGVDaGFyYWN0ZXIodCl8fChpPSEwKX12YXIgYTtyZXR1cm4hciYmaT8wOnRoaXMub3B0aW9ucy5pbnZpc2libGVDaGFyYWN0ZXJzJiYham4oZSkmJmVlLmlzSW52aXNpYmxlQ2hhcmFjdGVyKG4pPzI6dGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMmJnRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyhuKT8zOjB9fWZ1bmN0aW9uIGpuKGUpe3JldHVybiIgIj09PWV8fCJcbiI9PT1lfHwiXHQiPT09ZX12YXIgR249ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGksYSl7ZnVuY3Rpb24gbyhlKXt0cnl7bChyLm5leHQoZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIHMoZSl7dHJ5e2woci50aHJvdyhlKSl9Y2F0Y2goZSl7YShlKX19ZnVuY3Rpb24gbChlKXt2YXIgdDtlLmRvbmU/aShlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4obyxzKX1sKChyPXIuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9O2NsYXNzICRuIGV4dGVuZHMgZ3R7Z2V0IHVyaSgpe3JldHVybiB0aGlzLl91cml9Z2V0IGVvbCgpe3JldHVybiB0aGlzLl9lb2x9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy5nZXRUZXh0KCl9Z2V0TGluZXNDb250ZW50KCl7cmV0dXJuIHRoaXMuX2xpbmVzLnNsaWNlKDApfWdldExpbmVDb3VudCgpe3JldHVybiB0aGlzLl9saW5lcy5sZW5ndGh9Z2V0TGluZUNvbnRlbnQoZSl7cmV0dXJuIHRoaXMuX2xpbmVzW2UtMV19Z2V0V29yZEF0UG9zaXRpb24oZSx0KXtjb25zdCBuPV90KGUuY29sdW1uLGZ1bmN0aW9uKGUpe2xldCB0PWJ0O2lmKGUmJmUgaW5zdGFuY2VvZiBSZWdFeHApaWYoZS5nbG9iYWwpdD1lO2Vsc2V7bGV0IG49ImciO2UuaWdub3JlQ2FzZSYmKG4rPSJpIiksZS5tdWx0aWxpbmUmJihuKz0ibSIpLGUudW5pY29kZSYmKG4rPSJ1IiksdD1uZXcgUmVnRXhwKGUuc291cmNlLG4pfXJldHVybiB0Lmxhc3RJbmRleD0wLHR9KHQpLHRoaXMuX2xpbmVzW2UubGluZU51bWJlci0xXSwwKTtyZXR1cm4gbj9uZXcgdHQoZS5saW5lTnVtYmVyLG4uc3RhcnRDb2x1bW4sZS5saW5lTnVtYmVyLG4uZW5kQ29sdW1uKTpudWxsfXdvcmRzKGUpe2NvbnN0IHQ9dGhpcy5fbGluZXMsbj10aGlzLl93b3JkZW5pemUuYmluZCh0aGlzKTtsZXQgcj0wLGk9IiIsYT0wLG89W107cmV0dXJueypbU3ltYm9sLml0ZXJhdG9yXSgpe2Zvcig7OylpZihhPG8ubGVuZ3RoKXtjb25zdCBlPWkuc3Vic3RyaW5nKG9bYV0uc3RhcnQsb1thXS5lbmQpO2ErPTEseWllbGQgZX1lbHNle2lmKCEocjx0Lmxlbmd0aCkpYnJlYWs7aT10W3JdLG89bihpLGUpLGE9MCxyKz0xfX19fWdldExpbmVXb3JkcyhlLHQpe2NvbnN0IG49dGhpcy5fbGluZXNbZS0xXSxyPXRoaXMuX3dvcmRlbml6ZShuLHQpLGk9W107Zm9yKGNvbnN0IGUgb2YgcilpLnB1c2goe3dvcmQ6bi5zdWJzdHJpbmcoZS5zdGFydCxlLmVuZCksc3RhcnRDb2x1bW46ZS5zdGFydCsxLGVuZENvbHVtbjplLmVuZCsxfSk7cmV0dXJuIGl9X3dvcmRlbml6ZShlLHQpe2NvbnN0IG49W107bGV0IHI7Zm9yKHQubGFzdEluZGV4PTA7KHI9dC5leGVjKGUpKSYmMCE9PXJbMF0ubGVuZ3RoOyluLnB1c2goe3N0YXJ0OnIuaW5kZXgsZW5kOnIuaW5kZXgrclswXS5sZW5ndGh9KTtyZXR1cm4gbn1nZXRWYWx1ZUluUmFuZ2UoZSl7aWYoKGU9dGhpcy5fdmFsaWRhdGVSYW5nZShlKSkuc3RhcnRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyKXJldHVybiB0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5zdGFydENvbHVtbi0xLGUuZW5kQ29sdW1uLTEpO2NvbnN0IHQ9dGhpcy5fZW9sLG49ZS5zdGFydExpbmVOdW1iZXItMSxyPWUuZW5kTGluZU51bWJlci0xLGk9W107aS5wdXNoKHRoaXMuX2xpbmVzW25dLnN1YnN0cmluZyhlLnN0YXJ0Q29sdW1uLTEpKTtmb3IobGV0IGU9bisxO2U8cjtlKyspaS5wdXNoKHRoaXMuX2xpbmVzW2VdKTtyZXR1cm4gaS5wdXNoKHRoaXMuX2xpbmVzW3JdLnN1YnN0cmluZygwLGUuZW5kQ29sdW1uLTEpKSxpLmpvaW4odCl9b2Zmc2V0QXQoZSl7cmV0dXJuIGU9dGhpcy5fdmFsaWRhdGVQb3NpdGlvbihlKSx0aGlzLl9lbnN1cmVMaW5lU3RhcnRzKCksdGhpcy5fbGluZVN0YXJ0cy5nZXRQcmVmaXhTdW0oZS5saW5lTnVtYmVyLTIpKyhlLmNvbHVtbi0xKX1wb3NpdGlvbkF0KGUpe2U9TWF0aC5mbG9vcihlKSxlPU1hdGgubWF4KDAsZSksdGhpcy5fZW5zdXJlTGluZVN0YXJ0cygpO2NvbnN0IHQ9dGhpcy5fbGluZVN0YXJ0cy5nZXRJbmRleE9mKGUpLG49dGhpcy5fbGluZXNbdC5pbmRleF0ubGVuZ3RoO3JldHVybntsaW5lTnVtYmVyOjErdC5pbmRleCxjb2x1bW46MStNYXRoLm1pbih0LnJlbWFpbmRlcixuKX19X3ZhbGlkYXRlUmFuZ2UoZSl7Y29uc3QgdD10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjplLnN0YXJ0Q29sdW1ufSksbj10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuZW5kTGluZU51bWJlcixjb2x1bW46ZS5lbmRDb2x1bW59KTtyZXR1cm4gdC5saW5lTnVtYmVyIT09ZS5zdGFydExpbmVOdW1iZXJ8fHQuY29sdW1uIT09ZS5zdGFydENvbHVtbnx8bi5saW5lTnVtYmVyIT09ZS5lbmRMaW5lTnVtYmVyfHxuLmNvbHVtbiE9PWUuZW5kQ29sdW1uP3tzdGFydExpbmVOdW1iZXI6dC5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuY29sdW1uLGVuZExpbmVOdW1iZXI6bi5saW5lTnVtYmVyLGVuZENvbHVtbjpuLmNvbHVtbn06ZX1fdmFsaWRhdGVQb3NpdGlvbihlKXtpZighZXQuaXNJUG9zaXRpb24oZSkpdGhyb3cgbmV3IEVycm9yKCJiYWQgcG9zaXRpb24iKTtsZXR7bGluZU51bWJlcjp0LGNvbHVtbjpufT1lLHI9ITE7aWYodDwxKXQ9MSxuPTEscj0hMDtlbHNlIGlmKHQ+dGhpcy5fbGluZXMubGVuZ3RoKXQ9dGhpcy5fbGluZXMubGVuZ3RoLG49dGhpcy5fbGluZXNbdC0xXS5sZW5ndGgrMSxyPSEwO2Vsc2V7Y29uc3QgZT10aGlzLl9saW5lc1t0LTFdLmxlbmd0aCsxO248MT8obj0xLHI9ITApOm4+ZSYmKG49ZSxyPSEwKX1yZXR1cm4gcj97bGluZU51bWJlcjp0LGNvbHVtbjpufTplfX1jbGFzcyBKbntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2hvc3Q9ZSx0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeT10LHRoaXMuX2ZvcmVpZ25Nb2R1bGU9bnVsbH1kaXNwb3NlKCl7dGhpcy5fbW9kZWxzPU9iamVjdC5jcmVhdGUobnVsbCl9X2dldE1vZGVsKGUpe3JldHVybiB0aGlzLl9tb2RlbHNbZV19X2dldE1vZGVscygpe2NvbnN0IGU9W107cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX21vZGVscykuZm9yRWFjaCgodD0+ZS5wdXNoKHRoaXMuX21vZGVsc1t0XSkpKSxlfWFjY2VwdE5ld01vZGVsKGUpe3RoaXMuX21vZGVsc1tlLnVybF09bmV3ICRuKFZlLnBhcnNlKGUudXJsKSxlLmxpbmVzLGUuRU9MLGUudmVyc2lvbklkKX1hY2NlcHRNb2RlbENoYW5nZWQoZSx0KXtpZighdGhpcy5fbW9kZWxzW2VdKXJldHVybjt0aGlzLl9tb2RlbHNbZV0ub25FdmVudHModCl9YWNjZXB0UmVtb3ZlZE1vZGVsKGUpe3RoaXMuX21vZGVsc1tlXSYmZGVsZXRlIHRoaXMuX21vZGVsc1tlXX1jb21wdXRlVW5pY29kZUhpZ2hsaWdodHMoZSx0LG4pe3JldHVybiBHbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHI9dGhpcy5fZ2V0TW9kZWwoZSk7cmV0dXJuIHI/Qm4uY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHIsdCxuKTp7cmFuZ2VzOltdLGhhc01vcmU6ITEsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6MCxpbnZpc2libGVDaGFyYWN0ZXJDb3VudDowLG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDowfX0pKX1jb21wdXRlRGlmZihlLHQsbixyKXtyZXR1cm4gR24odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBpPXRoaXMuX2dldE1vZGVsKGUpLGE9dGhpcy5fZ2V0TW9kZWwodCk7cmV0dXJuIGkmJmE/Sm4uY29tcHV0ZURpZmYoaSxhLG4scik6bnVsbH0pKX1zdGF0aWMgY29tcHV0ZURpZmYoZSx0LG4scil7Y29uc3QgaT1lLmdldExpbmVzQ29udGVudCgpLGE9dC5nZXRMaW5lc0NvbnRlbnQoKSxvPW5ldyBzdChpLGEse3Nob3VsZENvbXB1dGVDaGFyQ2hhbmdlczohMCxzaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzOiEwLHNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlOm4sc2hvdWxkTWFrZVByZXR0eURpZmY6ITAsbWF4Q29tcHV0YXRpb25UaW1lOnJ9KS5jb21wdXRlRGlmZigpLHM9IShvLmNoYW5nZXMubGVuZ3RoPjApJiZ0aGlzLl9tb2RlbHNBcmVJZGVudGljYWwoZSx0KTtyZXR1cm57cXVpdEVhcmx5Om8ucXVpdEVhcmx5LGlkZW50aWNhbDpzLGNoYW5nZXM6by5jaGFuZ2VzfX1zdGF0aWMgX21vZGVsc0FyZUlkZW50aWNhbChlLHQpe2NvbnN0IG49ZS5nZXRMaW5lQ291bnQoKTtpZihuIT09dC5nZXRMaW5lQ291bnQoKSlyZXR1cm4hMTtmb3IobGV0IHI9MTtyPD1uO3IrKyl7aWYoZS5nZXRMaW5lQ29udGVudChyKSE9PXQuZ2V0TGluZUNvbnRlbnQocikpcmV0dXJuITF9cmV0dXJuITB9Y29tcHV0ZU1vcmVNaW5pbWFsRWRpdHMoZSx0KXtyZXR1cm4gR24odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBuPXRoaXMuX2dldE1vZGVsKGUpO2lmKCFuKXJldHVybiB0O2NvbnN0IHI9W107bGV0IGk7dD10LnNsaWNlKDApLnNvcnQoKChlLHQpPT57aWYoZS5yYW5nZSYmdC5yYW5nZSlyZXR1cm4gdHQuY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKGUucmFuZ2UsdC5yYW5nZSk7cmV0dXJuKGUucmFuZ2U/MDoxKS0odC5yYW5nZT8wOjEpfSkpO2ZvcihsZXR7cmFuZ2U6ZSx0ZXh0OmEsZW9sOm99b2YgdCl7aWYoIm51bWJlciI9PXR5cGVvZiBvJiYoaT1vKSx0dC5pc0VtcHR5KGUpJiYhYSljb250aW51ZTtjb25zdCB0PW4uZ2V0VmFsdWVJblJhbmdlKGUpO2lmKGE9YS5yZXBsYWNlKC9cclxufFxufFxyL2csbi5lb2wpLHQ9PT1hKWNvbnRpbnVlO2lmKE1hdGgubWF4KGEubGVuZ3RoLHQubGVuZ3RoKT5Kbi5fZGlmZkxpbWl0KXtyLnB1c2goe3JhbmdlOmUsdGV4dDphfSk7Y29udGludWV9Y29uc3Qgcz1tZSh0LGEsITEpLGw9bi5vZmZzZXRBdCh0dC5saWZ0KGUpLmdldFN0YXJ0UG9zaXRpb24oKSk7Zm9yKGNvbnN0IGUgb2Ygcyl7Y29uc3QgdD1uLnBvc2l0aW9uQXQobCtlLm9yaWdpbmFsU3RhcnQpLGk9bi5wb3NpdGlvbkF0KGwrZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGgpLG89e3RleHQ6YS5zdWJzdHIoZS5tb2RpZmllZFN0YXJ0LGUubW9kaWZpZWRMZW5ndGgpLHJhbmdlOntzdGFydExpbmVOdW1iZXI6dC5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuY29sdW1uLGVuZExpbmVOdW1iZXI6aS5saW5lTnVtYmVyLGVuZENvbHVtbjppLmNvbHVtbn19O24uZ2V0VmFsdWVJblJhbmdlKG8ucmFuZ2UpIT09by50ZXh0JiZyLnB1c2gobyl9fXJldHVybiJudW1iZXIiPT10eXBlb2YgaSYmci5wdXNoKHtlb2w6aSx0ZXh0OiIiLHJhbmdlOntzdGFydExpbmVOdW1iZXI6MCxzdGFydENvbHVtbjowLGVuZExpbmVOdW1iZXI6MCxlbmRDb2x1bW46MH19KSxyfSkpfWNvbXB1dGVMaW5rcyhlKXtyZXR1cm4gR24odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCB0PXRoaXMuX2dldE1vZGVsKGUpO3JldHVybiB0P2Z1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRMaW5lQ291bnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldExpbmVDb250ZW50P3h0LmNvbXB1dGVMaW5rcyhlKTpbXX0odCk6bnVsbH0pKX10ZXh0dWFsU3VnZ2VzdChlLHQsbixyKXtyZXR1cm4gR24odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBpPW5ldyB6KCEwKSxhPW5ldyBSZWdFeHAobixyKSxvPW5ldyBTZXQ7ZTpmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPXRoaXMuX2dldE1vZGVsKG4pO2lmKGUpZm9yKGNvbnN0IG4gb2YgZS53b3JkcyhhKSlpZihuIT09dCYmaXNOYU4oTnVtYmVyKG4pKSYmKG8uYWRkKG4pLG8uc2l6ZT5Kbi5fc3VnZ2VzdGlvbnNMaW1pdCkpYnJlYWsgZX1yZXR1cm57d29yZHM6QXJyYXkuZnJvbShvKSxkdXJhdGlvbjppLmVsYXBzZWQoKX19KSl9Y29tcHV0ZVdvcmRSYW5nZXMoZSx0LG4scil7cmV0dXJuIEduKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgaT10aGlzLl9nZXRNb2RlbChlKTtpZighaSlyZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKTtjb25zdCBhPW5ldyBSZWdFeHAobixyKSxvPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPXQuc3RhcnRMaW5lTnVtYmVyO2U8dC5lbmRMaW5lTnVtYmVyO2UrKyl7Y29uc3QgdD1pLmdldExpbmVXb3JkcyhlLGEpO2Zvcihjb25zdCBuIG9mIHQpe2lmKCFpc05hTihOdW1iZXIobi53b3JkKSkpY29udGludWU7bGV0IHQ9b1tuLndvcmRdO3R8fCh0PVtdLG9bbi53b3JkXT10KSx0LnB1c2goe3N0YXJ0TGluZU51bWJlcjplLHN0YXJ0Q29sdW1uOm4uc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjplLGVuZENvbHVtbjpuLmVuZENvbHVtbn0pfX1yZXR1cm4gb30pKX1uYXZpZ2F0ZVZhbHVlU2V0KGUsdCxuLHIsaSl7cmV0dXJuIEduKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgYT10aGlzLl9nZXRNb2RlbChlKTtpZighYSlyZXR1cm4gbnVsbDtjb25zdCBvPW5ldyBSZWdFeHAocixpKTt0LnN0YXJ0Q29sdW1uPT09dC5lbmRDb2x1bW4mJih0PXtzdGFydExpbmVOdW1iZXI6dC5zdGFydExpbmVOdW1iZXIsc3RhcnRDb2x1bW46dC5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOnQuZW5kTGluZU51bWJlcixlbmRDb2x1bW46dC5lbmRDb2x1bW4rMX0pO2NvbnN0IHM9YS5nZXRWYWx1ZUluUmFuZ2UodCksbD1hLmdldFdvcmRBdFBvc2l0aW9uKHtsaW5lTnVtYmVyOnQuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjp0LnN0YXJ0Q29sdW1ufSxvKTtpZighbClyZXR1cm4gbnVsbDtjb25zdCBjPWEuZ2V0VmFsdWVJblJhbmdlKGwpO3JldHVybiBMdC5JTlNUQU5DRS5uYXZpZ2F0ZVZhbHVlU2V0KHQscyxsLGMsbil9KSl9bG9hZEZvcmVpZ25Nb2R1bGUoZSx0LG4pe2NvbnN0IHI9ZnVuY3Rpb24oZSx0KXtjb25zdCBuPWU9PmZ1bmN0aW9uKCl7Y29uc3Qgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIHQoZSxuKX0scj17fTtmb3IoY29uc3QgdCBvZiBlKXJbdF09bih0KTtyZXR1cm4gcn0obiwoKGUsdCk9PnRoaXMuX2hvc3QuZmhyKGUsdCkpKSxpPXtob3N0OnIsZ2V0TWlycm9yTW9kZWxzOigpPT50aGlzLl9nZXRNb2RlbHMoKX07cmV0dXJuIHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5Pyh0aGlzLl9mb3JlaWduTW9kdWxlPXRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5KGksdCksUHJvbWlzZS5yZXNvbHZlKGoodGhpcy5fZm9yZWlnbk1vZHVsZSkpKTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdXNhZ2UiKSl9Zm1yKGUsdCl7aWYoIXRoaXMuX2ZvcmVpZ25Nb2R1bGV8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9mb3JlaWduTW9kdWxlW2VdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK2UpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mb3JlaWduTW9kdWxlW2VdLmFwcGx5KHRoaXMuX2ZvcmVpZ25Nb2R1bGUsdCkpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19fUpuLl9kaWZmTGltaXQ9MWU1LEpuLl9zdWdnZXN0aW9uc0xpbWl0PTFlNCwiZnVuY3Rpb24iPT10eXBlb2YgaW1wb3J0U2NyaXB0cyYmKEwubW9uYWNvPXtlZGl0b3I6dm9pZCAwLGxhbmd1YWdlczp2b2lkIDAsQ2FuY2VsbGF0aW9uVG9rZW5Tb3VyY2U6UnQsRW1pdHRlcjpGLEtleUNvZGU6Zm4sS2V5TW9kOnFuLFBvc2l0aW9uOmV0LFJhbmdlOnR0LFNlbGVjdGlvbjpxdCxTZWxlY3Rpb25EaXJlY3Rpb246TG4sTWFya2VyU2V2ZXJpdHk6Z24sTWFya2VyVGFnOmJuLFVyaTpWZSxUb2tlbjpQbn0pO2xldCBYbj0hMTtmdW5jdGlvbiBZbihlKXtpZihYbilyZXR1cm47WG49ITA7Y29uc3QgdD1uZXcgY2UoKGU9PntzZWxmLnBvc3RNZXNzYWdlKGUpfSksKHQ9Pm5ldyBKbih0LGUpKSk7c2VsZi5vbm1lc3NhZ2U9ZT0+e3Qub25tZXNzYWdlKGUuZGF0YSl9fWZ1bmN0aW9uIFFuKGUsdCwuLi5uKXsKLyohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVmVyc2lvbjogMC4zNC4wKGYxYWQ5NTFmMjZhZmIzYmE2NDMyN2I3MGMzMDU2Y2FiYzM4NTE0OTIpCiAgICAgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvbW9uYWNvLWVkaXRvci9ibG9iL21haW4vTElDRU5TRS50eHQKICAgICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpyZXR1cm4gZnVuY3Rpb24oZSx0KXtsZXQgbjtyZXR1cm4gbj0wPT09dC5sZW5ndGg/ZTplLnJlcGxhY2UoL1x7KFxkKylcfS9nLCgoZSxuKT0+e2xldCByPW5bMF07cmV0dXJuIHZvaWQgMCE9PXRbcl0/dFtyXTplfSkpLG59KHQsbil9ZnVuY3Rpb24gWm4oZSl7cmV0dXJuIFFufXZhciBlcix0cixucixycixpcixhcixvcixzcixscixjcixocixkcix1cixwcixtcixmcixncixicix3cixfcix2cix5cixUcixrcixTcixDcix4cixMcixFcixBcixNcixScixJcixOcixVcixIcix6cixEcixXcixPcixQcixxcixGcixWcixCcixLcixqcixHciwkcjtzZWxmLm9ubWVzc2FnZT1lPT57WG58fFluKG51bGwpfSwodHI9ZXJ8fChlcj17fSkpLk1JTl9WQUxVRT0tMjE0NzQ4MzY0OCx0ci5NQVhfVkFMVUU9MjE0NzQ4MzY0NywocnI9bnJ8fChucj17fSkpLk1JTl9WQUxVRT0wLHJyLk1BWF9WQUxVRT0yMTQ3NDgzNjQ3LChhcj1pcnx8KGlyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT1OdW1iZXIuTUFYX1ZBTFVFJiYoZT1uci5NQVhfVkFMVUUpLHQ9PT1OdW1iZXIuTUFYX1ZBTFVFJiYodD1uci5NQVhfVkFMVUUpLHtsaW5lOmUsY2hhcmFjdGVyOnR9fSxhci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiAkaS5vYmplY3RMaXRlcmFsKHQpJiYkaS51aW50ZWdlcih0LmxpbmUpJiYkaS51aW50ZWdlcih0LmNoYXJhY3Rlcil9LChzcj1vcnx8KG9yPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCRpLnVpbnRlZ2VyKGUpJiYkaS51aW50ZWdlcih0KSYmJGkudWludGVnZXIobikmJiRpLnVpbnRlZ2VyKHIpKXJldHVybntzdGFydDppci5jcmVhdGUoZSx0KSxlbmQ6aXIuY3JlYXRlKG4scil9O2lmKGlyLmlzKGUpJiZpci5pcyh0KSlyZXR1cm57c3RhcnQ6ZSxlbmQ6dH07dGhyb3cgbmV3IEVycm9yKCJSYW5nZSNjcmVhdGUgY2FsbGVkIHdpdGggaW52YWxpZCBhcmd1bWVudHNbIitlKyIsICIrdCsiLCAiK24rIiwgIityKyJdIil9LHNyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuICRpLm9iamVjdExpdGVyYWwodCkmJmlyLmlzKHQuc3RhcnQpJiZpci5pcyh0LmVuZCl9LChjcj1scnx8KGxyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3VyaTplLHJhbmdlOnR9fSxjci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiAkaS5kZWZpbmVkKHQpJiZvci5pcyh0LnJhbmdlKSYmKCRpLnN0cmluZyh0LnVyaSl8fCRpLnVuZGVmaW5lZCh0LnVyaSkpfSwoZHI9aHJ8fChocj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm57dGFyZ2V0VXJpOmUsdGFyZ2V0UmFuZ2U6dCx0YXJnZXRTZWxlY3Rpb25SYW5nZTpuLG9yaWdpblNlbGVjdGlvblJhbmdlOnJ9fSxkci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiAkaS5kZWZpbmVkKHQpJiZvci5pcyh0LnRhcmdldFJhbmdlKSYmJGkuc3RyaW5nKHQudGFyZ2V0VXJpKSYmKG9yLmlzKHQudGFyZ2V0U2VsZWN0aW9uUmFuZ2UpfHwkaS51bmRlZmluZWQodC50YXJnZXRTZWxlY3Rpb25SYW5nZSkpJiYob3IuaXModC5vcmlnaW5TZWxlY3Rpb25SYW5nZSl8fCRpLnVuZGVmaW5lZCh0Lm9yaWdpblNlbGVjdGlvblJhbmdlKSl9LChwcj11cnx8KHVyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybntyZWQ6ZSxncmVlbjp0LGJsdWU6bixhbHBoYTpyfX0scHIuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gJGkubnVtYmVyUmFuZ2UodC5yZWQsMCwxKSYmJGkubnVtYmVyUmFuZ2UodC5ncmVlbiwwLDEpJiYkaS5udW1iZXJSYW5nZSh0LmJsdWUsMCwxKSYmJGkubnVtYmVyUmFuZ2UodC5hbHBoYSwwLDEpfSwoZnI9bXJ8fChtcj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLGNvbG9yOnR9fSxmci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBvci5pcyh0LnJhbmdlKSYmdXIuaXModC5jb2xvcil9LChicj1ncnx8KGdyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57bGFiZWw6ZSx0ZXh0RWRpdDp0LGFkZGl0aW9uYWxUZXh0RWRpdHM6bn19LGJyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuICRpLnN0cmluZyh0LmxhYmVsKSYmKCRpLnVuZGVmaW5lZCh0LnRleHRFZGl0KXx8TnIuaXModCkpJiYoJGkudW5kZWZpbmVkKHQuYWRkaXRpb25hbFRleHRFZGl0cyl8fCRpLnR5cGVkQXJyYXkodC5hZGRpdGlvbmFsVGV4dEVkaXRzLE5yLmlzKSl9LChfcj13cnx8KHdyPXt9KSkuQ29tbWVudD0iY29tbWVudCIsX3IuSW1wb3J0cz0iaW1wb3J0cyIsX3IuUmVnaW9uPSJyZWdpb24iLCh5cj12cnx8KHZyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGE9e3N0YXJ0TGluZTplLGVuZExpbmU6dH07cmV0dXJuICRpLmRlZmluZWQobikmJihhLnN0YXJ0Q2hhcmFjdGVyPW4pLCRpLmRlZmluZWQocikmJihhLmVuZENoYXJhY3Rlcj1yKSwkaS5kZWZpbmVkKGkpJiYoYS5raW5kPWkpLGF9LHlyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuICRpLnVpbnRlZ2VyKHQuc3RhcnRMaW5lKSYmJGkudWludGVnZXIodC5zdGFydExpbmUpJiYoJGkudW5kZWZpbmVkKHQuc3RhcnRDaGFyYWN0ZXIpfHwkaS51aW50ZWdlcih0LnN0YXJ0Q2hhcmFjdGVyKSkmJigkaS51bmRlZmluZWQodC5lbmRDaGFyYWN0ZXIpfHwkaS51aW50ZWdlcih0LmVuZENoYXJhY3RlcikpJiYoJGkudW5kZWZpbmVkKHQua2luZCl8fCRpLnN0cmluZyh0LmtpbmQpKX0sKGtyPVRyfHwoVHI9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57bG9jYXRpb246ZSxtZXNzYWdlOnR9fSxrci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiAkaS5kZWZpbmVkKHQpJiZsci5pcyh0LmxvY2F0aW9uKSYmJGkuc3RyaW5nKHQubWVzc2FnZSl9LChDcj1Tcnx8KFNyPXt9KSkuRXJyb3I9MSxDci5XYXJuaW5nPTIsQ3IuSW5mb3JtYXRpb249MyxDci5IaW50PTQsKExyPXhyfHwoeHI9e30pKS5Vbm5lY2Vzc2FyeT0xLExyLkRlcHJlY2F0ZWQ9MiwoRXJ8fChFcj17fSkpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIG51bGwhPXQmJiRpLnN0cmluZyh0LmhyZWYpfSwoTXI9QXJ8fChBcj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyLGksYSl7dmFyIG89e3JhbmdlOmUsbWVzc2FnZTp0fTtyZXR1cm4gJGkuZGVmaW5lZChuKSYmKG8uc2V2ZXJpdHk9biksJGkuZGVmaW5lZChyKSYmKG8uY29kZT1yKSwkaS5kZWZpbmVkKGkpJiYoby5zb3VyY2U9aSksJGkuZGVmaW5lZChhKSYmKG8ucmVsYXRlZEluZm9ybWF0aW9uPWEpLG99LE1yLmlzPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZTtyZXR1cm4gJGkuZGVmaW5lZChuKSYmb3IuaXMobi5yYW5nZSkmJiRpLnN0cmluZyhuLm1lc3NhZ2UpJiYoJGkubnVtYmVyKG4uc2V2ZXJpdHkpfHwkaS51bmRlZmluZWQobi5zZXZlcml0eSkpJiYoJGkuaW50ZWdlcihuLmNvZGUpfHwkaS5zdHJpbmcobi5jb2RlKXx8JGkudW5kZWZpbmVkKG4uY29kZSkpJiYoJGkudW5kZWZpbmVkKG4uY29kZURlc2NyaXB0aW9uKXx8JGkuc3RyaW5nKG51bGw9PT0odD1uLmNvZGVEZXNjcmlwdGlvbil8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaHJlZikpJiYoJGkuc3RyaW5nKG4uc291cmNlKXx8JGkudW5kZWZpbmVkKG4uc291cmNlKSkmJigkaS51bmRlZmluZWQobi5yZWxhdGVkSW5mb3JtYXRpb24pfHwkaS50eXBlZEFycmF5KG4ucmVsYXRlZEluZm9ybWF0aW9uLFRyLmlzKSl9LChJcj1Scnx8KFJyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdLHI9MjtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKW5bci0yXT1hcmd1bWVudHNbcl07dmFyIGk9e3RpdGxlOmUsY29tbWFuZDp0fTtyZXR1cm4gJGkuZGVmaW5lZChuKSYmbi5sZW5ndGg+MCYmKGkuYXJndW1lbnRzPW4pLGl9LElyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuICRpLmRlZmluZWQodCkmJiRpLnN0cmluZyh0LnRpdGxlKSYmJGkuc3RyaW5nKHQuY29tbWFuZCl9LChVcj1Ocnx8KE5yPXt9KSkucmVwbGFjZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLG5ld1RleHQ6dH19LFVyLmluc2VydD1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTp7c3RhcnQ6ZSxlbmQ6ZX0sbmV3VGV4dDp0fX0sVXIuZGVsPWZ1bmN0aW9uKGUpe3JldHVybntyYW5nZTplLG5ld1RleHQ6IiJ9fSxVci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiAkaS5vYmplY3RMaXRlcmFsKHQpJiYkaS5zdHJpbmcodC5uZXdUZXh0KSYmb3IuaXModC5yYW5nZSl9LCh6cj1Icnx8KEhyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17bGFiZWw6ZX07cmV0dXJuIHZvaWQgMCE9PXQmJihyLm5lZWRzQ29uZmlybWF0aW9uPXQpLHZvaWQgMCE9PW4mJihyLmRlc2NyaXB0aW9uPW4pLHJ9LHpyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHZvaWQgMCE9PXQmJiRpLm9iamVjdExpdGVyYWwodCkmJiRpLnN0cmluZyh0LmxhYmVsKSYmKCRpLmJvb2xlYW4odC5uZWVkc0NvbmZpcm1hdGlvbil8fHZvaWQgMD09PXQubmVlZHNDb25maXJtYXRpb24pJiYoJGkuc3RyaW5nKHQuZGVzY3JpcHRpb24pfHx2b2lkIDA9PT10LmRlc2NyaXB0aW9uKX0sKERyfHwoRHI9e30pKS5pcz1mdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9LChPcj1Xcnx8KFdyPXt9KSkucmVwbGFjZT1mdW5jdGlvbihlLHQsbil7cmV0dXJue3JhbmdlOmUsbmV3VGV4dDp0LGFubm90YXRpb25JZDpufX0sT3IuaW5zZXJ0PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57cmFuZ2U6e3N0YXJ0OmUsZW5kOmV9LG5ld1RleHQ6dCxhbm5vdGF0aW9uSWQ6bn19LE9yLmRlbD1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLG5ld1RleHQ6IiIsYW5ub3RhdGlvbklkOnR9fSxPci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBOci5pcyh0KSYmKEhyLmlzKHQuYW5ub3RhdGlvbklkKXx8RHIuaXModC5hbm5vdGF0aW9uSWQpKX0sKHFyPVByfHwoUHI9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dGV4dERvY3VtZW50OmUsZWRpdHM6dH19LHFyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuICRpLmRlZmluZWQodCkmJlpyLmlzKHQudGV4dERvY3VtZW50KSYmQXJyYXkuaXNBcnJheSh0LmVkaXRzKX0sKFZyPUZyfHwoRnI9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXtraW5kOiJjcmVhdGUiLHVyaTplfTtyZXR1cm4gdm9pZCAwPT09dHx8dm9pZCAwPT09dC5vdmVyd3JpdGUmJnZvaWQgMD09PXQuaWdub3JlSWZFeGlzdHN8fChyLm9wdGlvbnM9dCksdm9pZCAwIT09biYmKHIuYW5ub3RhdGlvbklkPW4pLHJ9LFZyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJiJjcmVhdGUiPT09dC5raW5kJiYkaS5zdHJpbmcodC51cmkpJiYodm9pZCAwPT09dC5vcHRpb25zfHwodm9pZCAwPT09dC5vcHRpb25zLm92ZXJ3cml0ZXx8JGkuYm9vbGVhbih0Lm9wdGlvbnMub3ZlcndyaXRlKSkmJih2b2lkIDA9PT10Lm9wdGlvbnMuaWdub3JlSWZFeGlzdHN8fCRpLmJvb2xlYW4odC5vcHRpb25zLmlnbm9yZUlmRXhpc3RzKSkpJiYodm9pZCAwPT09dC5hbm5vdGF0aW9uSWR8fERyLmlzKHQuYW5ub3RhdGlvbklkKSl9LChLcj1Ccnx8KEJyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXtraW5kOiJyZW5hbWUiLG9sZFVyaTplLG5ld1VyaTp0fTtyZXR1cm4gdm9pZCAwPT09bnx8dm9pZCAwPT09bi5vdmVyd3JpdGUmJnZvaWQgMD09PW4uaWdub3JlSWZFeGlzdHN8fChpLm9wdGlvbnM9biksdm9pZCAwIT09ciYmKGkuYW5ub3RhdGlvbklkPXIpLGl9LEtyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJiJyZW5hbWUiPT09dC5raW5kJiYkaS5zdHJpbmcodC5vbGRVcmkpJiYkaS5zdHJpbmcodC5uZXdVcmkpJiYodm9pZCAwPT09dC5vcHRpb25zfHwodm9pZCAwPT09dC5vcHRpb25zLm92ZXJ3cml0ZXx8JGkuYm9vbGVhbih0Lm9wdGlvbnMub3ZlcndyaXRlKSkmJih2b2lkIDA9PT10Lm9wdGlvbnMuaWdub3JlSWZFeGlzdHN8fCRpLmJvb2xlYW4odC5vcHRpb25zLmlnbm9yZUlmRXhpc3RzKSkpJiYodm9pZCAwPT09dC5hbm5vdGF0aW9uSWR8fERyLmlzKHQuYW5ub3RhdGlvbklkKSl9LChHcj1qcnx8KGpyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17a2luZDoiZGVsZXRlIix1cmk6ZX07cmV0dXJuIHZvaWQgMD09PXR8fHZvaWQgMD09PXQucmVjdXJzaXZlJiZ2b2lkIDA9PT10Lmlnbm9yZUlmTm90RXhpc3RzfHwoci5vcHRpb25zPXQpLHZvaWQgMCE9PW4mJihyLmFubm90YXRpb25JZD1uKSxyfSxHci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB0JiYiZGVsZXRlIj09PXQua2luZCYmJGkuc3RyaW5nKHQudXJpKSYmKHZvaWQgMD09PXQub3B0aW9uc3x8KHZvaWQgMD09PXQub3B0aW9ucy5yZWN1cnNpdmV8fCRpLmJvb2xlYW4odC5vcHRpb25zLnJlY3Vyc2l2ZSkpJiYodm9pZCAwPT09dC5vcHRpb25zLmlnbm9yZUlmTm90RXhpc3RzfHwkaS5ib29sZWFuKHQub3B0aW9ucy5pZ25vcmVJZk5vdEV4aXN0cykpKSYmKHZvaWQgMD09PXQuYW5ub3RhdGlvbklkfHxEci5pcyh0LmFubm90YXRpb25JZCkpfSwoJHJ8fCgkcj17fSkpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJih2b2lkIDAhPT10LmNoYW5nZXN8fHZvaWQgMCE9PXQuZG9jdW1lbnRDaGFuZ2VzKSYmKHZvaWQgMD09PXQuZG9jdW1lbnRDaGFuZ2VzfHx0LmRvY3VtZW50Q2hhbmdlcy5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuICRpLnN0cmluZyhlLmtpbmQpP0ZyLmlzKGUpfHxCci5pcyhlKXx8anIuaXMoZSk6UHIuaXMoZSl9KSkpfTt2YXIgSnIsWHIsWXIsUXIsWnIsZWksdGksbmkscmksaWksYWksb2ksc2ksbGksY2ksaGksZGksdWkscGksbWksZmksZ2ksYmksd2ksX2ksdmkseWksVGksa2ksU2ksQ2kseGksTGksRWksQWksTWksUmksSWksTmksVWksSGksemksRGksV2ksT2ksUGkscWksRmksVmksQmksS2ksamk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5lZGl0cz1lLHRoaXMuY2hhbmdlQW5ub3RhdGlvbnM9dH1yZXR1cm4gZS5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKHZvaWQgMD09PW4/cj1Oci5pbnNlcnQoZSx0KTpEci5pcyhuKT8oaT1uLHI9V3IuaW5zZXJ0KGUsdCxuKSk6KHRoaXMuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnModGhpcy5jaGFuZ2VBbm5vdGF0aW9ucyksaT10aGlzLmNoYW5nZUFubm90YXRpb25zLm1hbmFnZShuKSxyPVdyLmluc2VydChlLHQsaSkpLHRoaXMuZWRpdHMucHVzaChyKSx2b2lkIDAhPT1pKXJldHVybiBpfSxlLnByb3RvdHlwZS5yZXBsYWNlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKHZvaWQgMD09PW4/cj1Oci5yZXBsYWNlKGUsdCk6RHIuaXMobik/KGk9bixyPVdyLnJlcGxhY2UoZSx0LG4pKToodGhpcy5hc3NlcnRDaGFuZ2VBbm5vdGF0aW9ucyh0aGlzLmNoYW5nZUFubm90YXRpb25zKSxpPXRoaXMuY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKG4pLHI9V3IucmVwbGFjZShlLHQsaSkpLHRoaXMuZWRpdHMucHVzaChyKSx2b2lkIDAhPT1pKXJldHVybiBpfSxlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSx0KXt2YXIgbixyO2lmKHZvaWQgMD09PXQ/bj1Oci5kZWwoZSk6RHIuaXModCk/KHI9dCxuPVdyLmRlbChlLHQpKToodGhpcy5hc3NlcnRDaGFuZ2VBbm5vdGF0aW9ucyh0aGlzLmNoYW5nZUFubm90YXRpb25zKSxyPXRoaXMuY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKHQpLG49V3IuZGVsKGUscikpLHRoaXMuZWRpdHMucHVzaChuKSx2b2lkIDAhPT1yKXJldHVybiByfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5lZGl0cy5wdXNoKGUpfSxlLnByb3RvdHlwZS5hbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGl0c30sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmVkaXRzLnNwbGljZSgwLHRoaXMuZWRpdHMubGVuZ3RoKX0sZS5wcm90b3R5cGUuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnM9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgRXJyb3IoIlRleHQgZWRpdCBjaGFuZ2UgaXMgbm90IGNvbmZpZ3VyZWQgdG8gbWFuYWdlIGNoYW5nZSBhbm5vdGF0aW9ucy4iKX0sZX0oKSxHaT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5fYW5ub3RhdGlvbnM9dm9pZCAwPT09ZT9PYmplY3QuY3JlYXRlKG51bGwpOmUsdGhpcy5fY291bnRlcj0wLHRoaXMuX3NpemU9MH1yZXR1cm4gZS5wcm90b3R5cGUuYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25zfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInNpemUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2l6ZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5tYW5hZ2U9ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZihEci5pcyhlKT9uPWU6KG49dGhpcy5uZXh0SWQoKSx0PWUpLHZvaWQgMCE9PXRoaXMuX2Fubm90YXRpb25zW25dKXRocm93IG5ldyBFcnJvcigiSWQgIituKyIgaXMgYWxyZWFkeSBpbiB1c2UuIik7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoIk5vIGFubm90YXRpb24gcHJvdmlkZWQgZm9yIGlkICIrbik7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25zW25dPXQsdGhpcy5fc2l6ZSsrLG59LGUucHJvdG90eXBlLm5leHRJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb3VudGVyKyssdGhpcy5fY291bnRlci50b1N0cmluZygpfSxlfSgpOyFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQ9dGhpczt0aGlzLl90ZXh0RWRpdENoYW5nZXM9T2JqZWN0LmNyZWF0ZShudWxsKSx2b2lkIDAhPT1lPyh0aGlzLl93b3Jrc3BhY2VFZGl0PWUsZS5kb2N1bWVudENoYW5nZXM/KHRoaXMuX2NoYW5nZUFubm90YXRpb25zPW5ldyBHaShlLmNoYW5nZUFubm90YXRpb25zKSxlLmNoYW5nZUFubm90YXRpb25zPXRoaXMuX2NoYW5nZUFubm90YXRpb25zLmFsbCgpLGUuZG9jdW1lbnRDaGFuZ2VzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKFByLmlzKGUpKXt2YXIgbj1uZXcgamkoZS5lZGl0cyx0Ll9jaGFuZ2VBbm5vdGF0aW9ucyk7dC5fdGV4dEVkaXRDaGFuZ2VzW2UudGV4dERvY3VtZW50LnVyaV09bn19KSkpOmUuY2hhbmdlcyYmT2JqZWN0LmtleXMoZS5jaGFuZ2VzKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcj1uZXcgamkoZS5jaGFuZ2VzW25dKTt0Ll90ZXh0RWRpdENoYW5nZXNbbl09cn0pKSk6dGhpcy5fd29ya3NwYWNlRWRpdD17fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImVkaXQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwIT09dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMmJigwPT09dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMuc2l6ZT90aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZUFubm90YXRpb25zPXZvaWQgMDp0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZUFubm90YXRpb25zPXRoaXMuX2NoYW5nZUFubm90YXRpb25zLmFsbCgpKSx0aGlzLl93b3Jrc3BhY2VFZGl0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldFRleHRFZGl0Q2hhbmdlPWZ1bmN0aW9uKGUpe2lmKFpyLmlzKGUpKXtpZih0aGlzLmluaXREb2N1bWVudENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcyl0aHJvdyBuZXcgRXJyb3IoIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBkb2N1bWVudCBjaGFuZ2VzLiIpO3ZhciB0PXt1cmk6ZS51cmksdmVyc2lvbjplLnZlcnNpb259O2lmKCEocj10aGlzLl90ZXh0RWRpdENoYW5nZXNbdC51cmldKSl7dmFyIG49e3RleHREb2N1bWVudDp0LGVkaXRzOmk9W119O3RoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2gobikscj1uZXcgamkoaSx0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucyksdGhpcy5fdGV4dEVkaXRDaGFuZ2VzW3QudXJpXT1yfXJldHVybiByfWlmKHRoaXMuaW5pdENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3Igbm9ybWFsIHRleHQgZWRpdCBjaGFuZ2VzLiIpO3ZhciByO2lmKCEocj10aGlzLl90ZXh0RWRpdENoYW5nZXNbZV0pKXt2YXIgaT1bXTt0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXNbZV09aSxyPW5ldyBqaShpKSx0aGlzLl90ZXh0RWRpdENoYW5nZXNbZV09cn1yZXR1cm4gcn0sZS5wcm90b3R5cGUuaW5pdERvY3VtZW50Q2hhbmdlcz1mdW5jdGlvbigpe3ZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzJiZ2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMmJih0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucz1uZXcgR2ksdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXM9W10sdGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VBbm5vdGF0aW9ucz10aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5hbGwoKSl9LGUucHJvdG90eXBlLmluaXRDaGFuZ2VzPWZ1bmN0aW9uKCl7dm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMmJnZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcyYmKHRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcz1PYmplY3QuY3JlYXRlKG51bGwpKX0sZS5wcm90b3R5cGUuY3JlYXRlRmlsZT1mdW5jdGlvbihlLHQsbil7aWYodGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2hhbmdlcy4iKTt2YXIgcixpLGE7aWYoSHIuaXModCl8fERyLmlzKHQpP3I9dDpuPXQsdm9pZCAwPT09cj9pPUZyLmNyZWF0ZShlLG4pOihhPURyLmlzKHIpP3I6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKHIpLGk9RnIuY3JlYXRlKGUsbixhKSksdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMucHVzaChpKSx2b2lkIDAhPT1hKXJldHVybiBhfSxlLnByb3RvdHlwZS5yZW5hbWVGaWxlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIGksYSxvO2lmKEhyLmlzKG4pfHxEci5pcyhuKT9pPW46cj1uLHZvaWQgMD09PWk/YT1Cci5jcmVhdGUoZSx0LHIpOihvPURyLmlzKGkpP2k6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKGkpLGE9QnIuY3JlYXRlKGUsdCxyLG8pKSx0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKGEpLHZvaWQgMCE9PW8pcmV0dXJuIG99LGUucHJvdG90eXBlLmRlbGV0ZUZpbGU9ZnVuY3Rpb24oZSx0LG4pe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIHIsaSxhO2lmKEhyLmlzKHQpfHxEci5pcyh0KT9yPXQ6bj10LHZvaWQgMD09PXI/aT1qci5jcmVhdGUoZSxuKTooYT1Eci5pcyhyKT9yOnRoaXMuX2NoYW5nZUFubm90YXRpb25zLm1hbmFnZShyKSxpPWpyLmNyZWF0ZShlLG4sYSkpLHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2goaSksdm9pZCAwIT09YSlyZXR1cm4gYX19KCksKFhyPUpyfHwoSnI9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSl7cmV0dXJue3VyaTplfX0sWHIuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gJGkuZGVmaW5lZCh0KSYmJGkuc3RyaW5nKHQudXJpKX0sKFFyPVlyfHwoWXI9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dXJpOmUsdmVyc2lvbjp0fX0sUXIuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gJGkuZGVmaW5lZCh0KSYmJGkuc3RyaW5nKHQudXJpKSYmJGkuaW50ZWdlcih0LnZlcnNpb24pfSwoZWk9WnJ8fChacj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybnt1cmk6ZSx2ZXJzaW9uOnR9fSxlaS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiAkaS5kZWZpbmVkKHQpJiYkaS5zdHJpbmcodC51cmkpJiYobnVsbD09PXQudmVyc2lvbnx8JGkuaW50ZWdlcih0LnZlcnNpb24pKX0sKG5pPXRpfHwodGk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJue3VyaTplLGxhbmd1YWdlSWQ6dCx2ZXJzaW9uOm4sdGV4dDpyfX0sbmkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gJGkuZGVmaW5lZCh0KSYmJGkuc3RyaW5nKHQudXJpKSYmJGkuc3RyaW5nKHQubGFuZ3VhZ2VJZCkmJiRpLmludGVnZXIodC52ZXJzaW9uKSYmJGkuc3RyaW5nKHQudGV4dCl9LChpaT1yaXx8KHJpPXt9KSkuUGxhaW5UZXh0PSJwbGFpbnRleHQiLGlpLk1hcmtkb3duPSJtYXJrZG93biIsZnVuY3Rpb24oZSl7ZS5pcz1mdW5jdGlvbih0KXt2YXIgbj10O3JldHVybiBuPT09ZS5QbGFpblRleHR8fG49PT1lLk1hcmtkb3dufX0ocml8fChyaT17fSkpLChhaXx8KGFpPXt9KSkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gJGkub2JqZWN0TGl0ZXJhbChlKSYmcmkuaXModC5raW5kKSYmJGkuc3RyaW5nKHQudmFsdWUpfSwoc2k9b2l8fChvaT17fSkpLlRleHQ9MSxzaS5NZXRob2Q9MixzaS5GdW5jdGlvbj0zLHNpLkNvbnN0cnVjdG9yPTQsc2kuRmllbGQ9NSxzaS5WYXJpYWJsZT02LHNpLkNsYXNzPTcsc2kuSW50ZXJmYWNlPTgsc2kuTW9kdWxlPTksc2kuUHJvcGVydHk9MTAsc2kuVW5pdD0xMSxzaS5WYWx1ZT0xMixzaS5FbnVtPTEzLHNpLktleXdvcmQ9MTQsc2kuU25pcHBldD0xNSxzaS5Db2xvcj0xNixzaS5GaWxlPTE3LHNpLlJlZmVyZW5jZT0xOCxzaS5Gb2xkZXI9MTksc2kuRW51bU1lbWJlcj0yMCxzaS5Db25zdGFudD0yMSxzaS5TdHJ1Y3Q9MjIsc2kuRXZlbnQ9MjMsc2kuT3BlcmF0b3I9MjQsc2kuVHlwZVBhcmFtZXRlcj0yNSwoY2k9bGl8fChsaT17fSkpLlBsYWluVGV4dD0xLGNpLlNuaXBwZXQ9MiwoaGl8fChoaT17fSkpLkRlcHJlY2F0ZWQ9MSwodWk9ZGl8fChkaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7cmV0dXJue25ld1RleHQ6ZSxpbnNlcnQ6dCxyZXBsYWNlOm59fSx1aS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB0JiYkaS5zdHJpbmcodC5uZXdUZXh0KSYmb3IuaXModC5pbnNlcnQpJiZvci5pcyh0LnJlcGxhY2UpfSwobWk9cGl8fChwaT17fSkpLmFzSXM9MSxtaS5hZGp1c3RJbmRlbnRhdGlvbj0yLChmaXx8KGZpPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybntsYWJlbDplfX0sKGdpfHwoZ2k9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57aXRlbXM6ZXx8W10saXNJbmNvbXBsZXRlOiEhdH19LCh3aT1iaXx8KGJpPXt9KSkuZnJvbVBsYWluVGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bXFxgKl97fVtcXSgpIytcLS4hXS9nLCJcXCQmIil9LHdpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuICRpLnN0cmluZyh0KXx8JGkub2JqZWN0TGl0ZXJhbCh0KSYmJGkuc3RyaW5nKHQubGFuZ3VhZ2UpJiYkaS5zdHJpbmcodC52YWx1ZSl9LChfaXx8KF9pPXt9KSkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4hIXQmJiRpLm9iamVjdExpdGVyYWwodCkmJihhaS5pcyh0LmNvbnRlbnRzKXx8YmkuaXModC5jb250ZW50cyl8fCRpLnR5cGVkQXJyYXkodC5jb250ZW50cyxiaS5pcykpJiYodm9pZCAwPT09ZS5yYW5nZXx8b3IuaXMoZS5yYW5nZSkpfSwodml8fCh2aT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybiB0P3tsYWJlbDplLGRvY3VtZW50YXRpb246dH06e2xhYmVsOmV9fSwoeWl8fCh5aT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bXSxyPTI7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyluW3ItMl09YXJndW1lbnRzW3JdO3ZhciBpPXtsYWJlbDplfTtyZXR1cm4gJGkuZGVmaW5lZCh0KSYmKGkuZG9jdW1lbnRhdGlvbj10KSwkaS5kZWZpbmVkKG4pP2kucGFyYW1ldGVycz1uOmkucGFyYW1ldGVycz1bXSxpfSwoa2k9VGl8fChUaT17fSkpLlRleHQ9MSxraS5SZWFkPTIsa2kuV3JpdGU9MywoU2l8fChTaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXtyYW5nZTplfTtyZXR1cm4gJGkubnVtYmVyKHQpJiYobi5raW5kPXQpLG59LCh4aT1DaXx8KENpPXt9KSkuRmlsZT0xLHhpLk1vZHVsZT0yLHhpLk5hbWVzcGFjZT0zLHhpLlBhY2thZ2U9NCx4aS5DbGFzcz01LHhpLk1ldGhvZD02LHhpLlByb3BlcnR5PTcseGkuRmllbGQ9OCx4aS5Db25zdHJ1Y3Rvcj05LHhpLkVudW09MTAseGkuSW50ZXJmYWNlPTExLHhpLkZ1bmN0aW9uPTEyLHhpLlZhcmlhYmxlPTEzLHhpLkNvbnN0YW50PTE0LHhpLlN0cmluZz0xNSx4aS5OdW1iZXI9MTYseGkuQm9vbGVhbj0xNyx4aS5BcnJheT0xOCx4aS5PYmplY3Q9MTkseGkuS2V5PTIwLHhpLk51bGw9MjEseGkuRW51bU1lbWJlcj0yMix4aS5TdHJ1Y3Q9MjMseGkuRXZlbnQ9MjQseGkuT3BlcmF0b3I9MjUseGkuVHlwZVBhcmFtZXRlcj0yNiwoTGl8fChMaT17fSkpLkRlcHJlY2F0ZWQ9MSwoRWl8fChFaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhPXtuYW1lOmUsa2luZDp0LGxvY2F0aW9uOnt1cmk6cixyYW5nZTpufX07cmV0dXJuIGkmJihhLmNvbnRhaW5lck5hbWU9aSksYX0sKE1pPUFpfHwoQWk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scixpLGEpe3ZhciBvPXtuYW1lOmUsZGV0YWlsOnQsa2luZDpuLHJhbmdlOnIsc2VsZWN0aW9uUmFuZ2U6aX07cmV0dXJuIHZvaWQgMCE9PWEmJihvLmNoaWxkcmVuPWEpLG99LE1pLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJiRpLnN0cmluZyh0Lm5hbWUpJiYkaS5udW1iZXIodC5raW5kKSYmb3IuaXModC5yYW5nZSkmJm9yLmlzKHQuc2VsZWN0aW9uUmFuZ2UpJiYodm9pZCAwPT09dC5kZXRhaWx8fCRpLnN0cmluZyh0LmRldGFpbCkpJiYodm9pZCAwPT09dC5kZXByZWNhdGVkfHwkaS5ib29sZWFuKHQuZGVwcmVjYXRlZCkpJiYodm9pZCAwPT09dC5jaGlsZHJlbnx8QXJyYXkuaXNBcnJheSh0LmNoaWxkcmVuKSkmJih2b2lkIDA9PT10LnRhZ3N8fEFycmF5LmlzQXJyYXkodC50YWdzKSl9LChJaT1SaXx8KFJpPXt9KSkuRW1wdHk9IiIsSWkuUXVpY2tGaXg9InF1aWNrZml4IixJaS5SZWZhY3Rvcj0icmVmYWN0b3IiLElpLlJlZmFjdG9yRXh0cmFjdD0icmVmYWN0b3IuZXh0cmFjdCIsSWkuUmVmYWN0b3JJbmxpbmU9InJlZmFjdG9yLmlubGluZSIsSWkuUmVmYWN0b3JSZXdyaXRlPSJyZWZhY3Rvci5yZXdyaXRlIixJaS5Tb3VyY2U9InNvdXJjZSIsSWkuU291cmNlT3JnYW5pemVJbXBvcnRzPSJzb3VyY2Uub3JnYW5pemVJbXBvcnRzIixJaS5Tb3VyY2VGaXhBbGw9InNvdXJjZS5maXhBbGwiLChVaT1OaXx8KE5pPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49e2RpYWdub3N0aWNzOmV9O3JldHVybiBudWxsIT10JiYobi5vbmx5PXQpLG59LFVpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuICRpLmRlZmluZWQodCkmJiRpLnR5cGVkQXJyYXkodC5kaWFnbm9zdGljcyxBci5pcykmJih2b2lkIDA9PT10Lm9ubHl8fCRpLnR5cGVkQXJyYXkodC5vbmx5LCRpLnN0cmluZykpfSwoemk9SGl8fChIaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9e3RpdGxlOmV9LGk9ITA7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0PyhpPSExLHIua2luZD10KTpSci5pcyh0KT9yLmNvbW1hbmQ9dDpyLmVkaXQ9dCxpJiZ2b2lkIDAhPT1uJiYoci5raW5kPW4pLHJ9LHppLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJiRpLnN0cmluZyh0LnRpdGxlKSYmKHZvaWQgMD09PXQuZGlhZ25vc3RpY3N8fCRpLnR5cGVkQXJyYXkodC5kaWFnbm9zdGljcyxBci5pcykpJiYodm9pZCAwPT09dC5raW5kfHwkaS5zdHJpbmcodC5raW5kKSkmJih2b2lkIDAhPT10LmVkaXR8fHZvaWQgMCE9PXQuY29tbWFuZCkmJih2b2lkIDA9PT10LmNvbW1hbmR8fFJyLmlzKHQuY29tbWFuZCkpJiYodm9pZCAwPT09dC5pc1ByZWZlcnJlZHx8JGkuYm9vbGVhbih0LmlzUHJlZmVycmVkKSkmJih2b2lkIDA9PT10LmVkaXR8fCRyLmlzKHQuZWRpdCkpfSwoV2k9RGl8fChEaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXtyYW5nZTplfTtyZXR1cm4gJGkuZGVmaW5lZCh0KSYmKG4uZGF0YT10KSxufSxXaS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiAkaS5kZWZpbmVkKHQpJiZvci5pcyh0LnJhbmdlKSYmKCRpLnVuZGVmaW5lZCh0LmNvbW1hbmQpfHxSci5pcyh0LmNvbW1hbmQpKX0sKFBpPU9pfHwoT2k9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dGFiU2l6ZTplLGluc2VydFNwYWNlczp0fX0sUGkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gJGkuZGVmaW5lZCh0KSYmJGkudWludGVnZXIodC50YWJTaXplKSYmJGkuYm9vbGVhbih0Lmluc2VydFNwYWNlcyl9LChGaT1xaXx8KHFpPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57cmFuZ2U6ZSx0YXJnZXQ6dCxkYXRhOm59fSxGaS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiAkaS5kZWZpbmVkKHQpJiZvci5pcyh0LnJhbmdlKSYmKCRpLnVuZGVmaW5lZCh0LnRhcmdldCl8fCRpLnN0cmluZyh0LnRhcmdldCkpfSwoQmk9Vml8fChWaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLHBhcmVudDp0fX0sQmkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gdm9pZCAwIT09dCYmb3IuaXModC5yYW5nZSkmJih2b2lkIDA9PT10LnBhcmVudHx8QmkuaXModC5wYXJlbnQpKX0sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4pe2lmKGUubGVuZ3RoPD0xKXJldHVybiBlO3ZhciByPWUubGVuZ3RoLzJ8MCxpPWUuc2xpY2UoMCxyKSxhPWUuc2xpY2Uocik7dChpLG4pLHQoYSxuKTtmb3IodmFyIG89MCxzPTAsbD0wO288aS5sZW5ndGgmJnM8YS5sZW5ndGg7KXt2YXIgYz1uKGlbb10sYVtzXSk7ZVtsKytdPWM8PTA/aVtvKytdOmFbcysrXX1mb3IoO288aS5sZW5ndGg7KWVbbCsrXT1pW28rK107Zm9yKDtzPGEubGVuZ3RoOyllW2wrK109YVtzKytdO3JldHVybiBlfWUuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcgWWkoZSx0LG4scil9LGUuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4hISgkaS5kZWZpbmVkKHQpJiYkaS5zdHJpbmcodC51cmkpJiYoJGkudW5kZWZpbmVkKHQubGFuZ3VhZ2VJZCl8fCRpLnN0cmluZyh0Lmxhbmd1YWdlSWQpKSYmJGkudWludGVnZXIodC5saW5lQ291bnQpJiYkaS5mdW5jKHQuZ2V0VGV4dCkmJiRpLmZ1bmModC5wb3NpdGlvbkF0KSYmJGkuZnVuYyh0Lm9mZnNldEF0KSl9LGUuYXBwbHlFZGl0cz1mdW5jdGlvbihlLG4pe2Zvcih2YXIgcj1lLmdldFRleHQoKSxpPXQobiwoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnJhbmdlLnN0YXJ0LmxpbmUtdC5yYW5nZS5zdGFydC5saW5lO3JldHVybiAwPT09bj9lLnJhbmdlLnN0YXJ0LmNoYXJhY3Rlci10LnJhbmdlLnN0YXJ0LmNoYXJhY3RlcjpufSkpLGE9ci5sZW5ndGgsbz1pLmxlbmd0aC0xO28+PTA7by0tKXt2YXIgcz1pW29dLGw9ZS5vZmZzZXRBdChzLnJhbmdlLnN0YXJ0KSxjPWUub2Zmc2V0QXQocy5yYW5nZS5lbmQpO2lmKCEoYzw9YSkpdGhyb3cgbmV3IEVycm9yKCJPdmVybGFwcGluZyBlZGl0Iik7cj1yLnN1YnN0cmluZygwLGwpK3MubmV3VGV4dCtyLnN1YnN0cmluZyhjLHIubGVuZ3RoKSxhPWx9cmV0dXJuIHJ9fShLaXx8KEtpPXt9KSk7dmFyICRpLEppLFhpLFlpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixyKXt0aGlzLl91cmk9ZSx0aGlzLl9sYW5ndWFnZUlkPXQsdGhpcy5fdmVyc2lvbj1uLHRoaXMuX2NvbnRlbnQ9cix0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidXJpIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VyaX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxhbmd1YWdlSWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGFuZ3VhZ2VJZH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInZlcnNpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5nZXRUZXh0PWZ1bmN0aW9uKGUpe2lmKGUpe3ZhciB0PXRoaXMub2Zmc2V0QXQoZS5zdGFydCksbj10aGlzLm9mZnNldEF0KGUuZW5kKTtyZXR1cm4gdGhpcy5fY29udGVudC5zdWJzdHJpbmcodCxuKX1yZXR1cm4gdGhpcy5fY29udGVudH0sZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7dGhpcy5fY29udGVudD1lLnRleHQsdGhpcy5fdmVyc2lvbj10LHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMH0sZS5wcm90b3R5cGUuZ2V0TGluZU9mZnNldHM9ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT10aGlzLl9saW5lT2Zmc2V0cyl7Zm9yKHZhciBlPVtdLHQ9dGhpcy5fY29udGVudCxuPSEwLHI9MDtyPHQubGVuZ3RoO3IrKyl7biYmKGUucHVzaChyKSxuPSExKTt2YXIgaT10LmNoYXJBdChyKTtuPSJcciI9PT1pfHwiXG4iPT09aSwiXHIiPT09aSYmcisxPHQubGVuZ3RoJiYiXG4iPT09dC5jaGFyQXQocisxKSYmcisrfW4mJnQubGVuZ3RoPjAmJmUucHVzaCh0Lmxlbmd0aCksdGhpcy5fbGluZU9mZnNldHM9ZX1yZXR1cm4gdGhpcy5fbGluZU9mZnNldHN9LGUucHJvdG90eXBlLnBvc2l0aW9uQXQ9ZnVuY3Rpb24oZSl7ZT1NYXRoLm1heChNYXRoLm1pbihlLHRoaXMuX2NvbnRlbnQubGVuZ3RoKSwwKTt2YXIgdD10aGlzLmdldExpbmVPZmZzZXRzKCksbj0wLHI9dC5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIGlyLmNyZWF0ZSgwLGUpO2Zvcig7bjxyOyl7dmFyIGk9TWF0aC5mbG9vcigobityKS8yKTt0W2ldPmU/cj1pOm49aSsxfXZhciBhPW4tMTtyZXR1cm4gaXIuY3JlYXRlKGEsZS10W2FdKX0sZS5wcm90b3R5cGUub2Zmc2V0QXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpO2lmKGUubGluZT49dC5sZW5ndGgpcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO2lmKGUubGluZTwwKXJldHVybiAwO3ZhciBuPXRbZS5saW5lXSxyPWUubGluZSsxPHQubGVuZ3RoP3RbZS5saW5lKzFdOnRoaXMuX2NvbnRlbnQubGVuZ3RoO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihuK2UuY2hhcmFjdGVyLHIpLG4pfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxpbmVDb3VudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldExpbmVPZmZzZXRzKCkubGVuZ3RofSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGV9KCk7Smk9JGl8fCgkaT17fSksWGk9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxKaS5kZWZpbmVkPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lfSxKaS51bmRlZmluZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWV9LEppLmJvb2xlYW49ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lfHwhMT09PWV9LEppLnN0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PVhpLmNhbGwoZSl9LEppLm51bWJlcj1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PVhpLmNhbGwoZSl9LEppLm51bWJlclJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PVhpLmNhbGwoZSkmJnQ8PWUmJmU8PW59LEppLmludGVnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1YaS5jYWxsKGUpJiYtMjE0NzQ4MzY0ODw9ZSYmZTw9MjE0NzQ4MzY0N30sSmkudWludGVnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1YaS5jYWxsKGUpJiYwPD1lJiZlPD0yMTQ3NDgzNjQ3fSxKaS5mdW5jPWZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1YaS5jYWxsKGUpfSxKaS5vYmplY3RMaXRlcmFsPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfSxKaS50eXBlZEFycmF5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkodCl9O3ZhciBRaSxaaSxlYSx0YSxuYSxyYSxpYSxhYSxvYSxzYT1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLl91cmk9ZSx0aGlzLl9sYW5ndWFnZUlkPXQsdGhpcy5fdmVyc2lvbj1uLHRoaXMuX2NvbnRlbnQ9cix0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9Z2V0IHVyaSgpe3JldHVybiB0aGlzLl91cml9Z2V0IGxhbmd1YWdlSWQoKXtyZXR1cm4gdGhpcy5fbGFuZ3VhZ2VJZH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9ufWdldFRleHQoZSl7aWYoZSl7Y29uc3QgdD10aGlzLm9mZnNldEF0KGUuc3RhcnQpLG49dGhpcy5vZmZzZXRBdChlLmVuZCk7cmV0dXJuIHRoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKHQsbil9cmV0dXJuIHRoaXMuX2NvbnRlbnR9dXBkYXRlKGUsdCl7Zm9yKGxldCB0IG9mIGUpaWYoc2EuaXNJbmNyZW1lbnRhbCh0KSl7Y29uc3QgZT1oYSh0LnJhbmdlKSxuPXRoaXMub2Zmc2V0QXQoZS5zdGFydCkscj10aGlzLm9mZnNldEF0KGUuZW5kKTt0aGlzLl9jb250ZW50PXRoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKDAsbikrdC50ZXh0K3RoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKHIsdGhpcy5fY29udGVudC5sZW5ndGgpO2NvbnN0IGk9TWF0aC5tYXgoZS5zdGFydC5saW5lLDApLGE9TWF0aC5tYXgoZS5lbmQubGluZSwwKTtsZXQgbz10aGlzLl9saW5lT2Zmc2V0cztjb25zdCBzPWNhKHQudGV4dCwhMSxuKTtpZihhLWk9PT1zLmxlbmd0aClmb3IobGV0IGU9MCx0PXMubGVuZ3RoO2U8dDtlKyspb1tlK2krMV09c1tlXTtlbHNlIHMubGVuZ3RoPDFlND9vLnNwbGljZShpKzEsYS1pLC4uLnMpOnRoaXMuX2xpbmVPZmZzZXRzPW89by5zbGljZSgwLGkrMSkuY29uY2F0KHMsby5zbGljZShhKzEpKTtjb25zdCBsPXQudGV4dC5sZW5ndGgtKHItbik7aWYoMCE9PWwpZm9yKGxldCBlPWkrMStzLmxlbmd0aCx0PW8ubGVuZ3RoO2U8dDtlKyspb1tlXT1vW2VdK2x9ZWxzZXtpZighc2EuaXNGdWxsKHQpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBjaGFuZ2UgZXZlbnQgcmVjZWl2ZWQiKTt0aGlzLl9jb250ZW50PXQudGV4dCx0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9dGhpcy5fdmVyc2lvbj10fWdldExpbmVPZmZzZXRzKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuX2xpbmVPZmZzZXRzJiYodGhpcy5fbGluZU9mZnNldHM9Y2EodGhpcy5fY29udGVudCwhMCkpLHRoaXMuX2xpbmVPZmZzZXRzfXBvc2l0aW9uQXQoZSl7ZT1NYXRoLm1heChNYXRoLm1pbihlLHRoaXMuX2NvbnRlbnQubGVuZ3RoKSwwKTtsZXQgdD10aGlzLmdldExpbmVPZmZzZXRzKCksbj0wLHI9dC5sZW5ndGg7aWYoMD09PXIpcmV0dXJue2xpbmU6MCxjaGFyYWN0ZXI6ZX07Zm9yKDtuPHI7KXtsZXQgaT1NYXRoLmZsb29yKChuK3IpLzIpO3RbaV0+ZT9yPWk6bj1pKzF9bGV0IGk9bi0xO3JldHVybntsaW5lOmksY2hhcmFjdGVyOmUtdFtpXX19b2Zmc2V0QXQoZSl7bGV0IHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpO2lmKGUubGluZT49dC5sZW5ndGgpcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO2lmKGUubGluZTwwKXJldHVybiAwO2xldCBuPXRbZS5saW5lXSxyPWUubGluZSsxPHQubGVuZ3RoP3RbZS5saW5lKzFdOnRoaXMuX2NvbnRlbnQubGVuZ3RoO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihuK2UuY2hhcmFjdGVyLHIpLG4pfWdldCBsaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5nZXRMaW5lT2Zmc2V0cygpLmxlbmd0aH1zdGF0aWMgaXNJbmNyZW1lbnRhbChlKXtsZXQgdD1lO3JldHVybiBudWxsIT10JiYic3RyaW5nIj09dHlwZW9mIHQudGV4dCYmdm9pZCAwIT09dC5yYW5nZSYmKHZvaWQgMD09PXQucmFuZ2VMZW5ndGh8fCJudW1iZXIiPT10eXBlb2YgdC5yYW5nZUxlbmd0aCl9c3RhdGljIGlzRnVsbChlKXtsZXQgdD1lO3JldHVybiBudWxsIT10JiYic3RyaW5nIj09dHlwZW9mIHQudGV4dCYmdm9pZCAwPT09dC5yYW5nZSYmdm9pZCAwPT09dC5yYW5nZUxlbmd0aH19O2Z1bmN0aW9uIGxhKGUsdCl7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGU7Y29uc3Qgbj1lLmxlbmd0aC8yfDAscj1lLnNsaWNlKDAsbiksaT1lLnNsaWNlKG4pO2xhKHIsdCksbGEoaSx0KTtsZXQgYT0wLG89MCxzPTA7Zm9yKDthPHIubGVuZ3RoJiZvPGkubGVuZ3RoOyl7bGV0IG49dChyW2FdLGlbb10pO2VbcysrXT1uPD0wP3JbYSsrXTppW28rK119Zm9yKDthPHIubGVuZ3RoOyllW3MrK109clthKytdO2Zvcig7bzxpLmxlbmd0aDspZVtzKytdPWlbbysrXTtyZXR1cm4gZX1mdW5jdGlvbiBjYShlLHQsbj0wKXtjb25zdCByPXQ/W25dOltdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtsZXQgaT1lLmNoYXJDb2RlQXQodCk7MTMhPT1pJiYxMCE9PWl8fCgxMz09PWkmJnQrMTxlLmxlbmd0aCYmMTA9PT1lLmNoYXJDb2RlQXQodCsxKSYmdCsrLHIucHVzaChuK3QrMSkpfXJldHVybiByfWZ1bmN0aW9uIGhhKGUpe2NvbnN0IHQ9ZS5zdGFydCxuPWUuZW5kO3JldHVybiB0LmxpbmU+bi5saW5lfHx0LmxpbmU9PT1uLmxpbmUmJnQuY2hhcmFjdGVyPm4uY2hhcmFjdGVyP3tzdGFydDpuLGVuZDp0fTplfWZ1bmN0aW9uIGRhKGUpe2NvbnN0IHQ9aGEoZS5yYW5nZSk7cmV0dXJuIHQhPT1lLnJhbmdlP3tuZXdUZXh0OmUubmV3VGV4dCxyYW5nZTp0fTplfShaaT1RaXx8KFFpPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcgc2EoZSx0LG4scil9LFppLnVwZGF0ZT1mdW5jdGlvbihlLHQsbil7aWYoZSBpbnN0YW5jZW9mIHNhKXJldHVybiBlLnVwZGF0ZSh0LG4pLGU7dGhyb3cgbmV3IEVycm9yKCJUZXh0RG9jdW1lbnQudXBkYXRlOiBkb2N1bWVudCBtdXN0IGJlIGNyZWF0ZWQgYnkgVGV4dERvY3VtZW50LmNyZWF0ZSIpfSxaaS5hcHBseUVkaXRzPWZ1bmN0aW9uKGUsdCl7bGV0IG49ZS5nZXRUZXh0KCkscj1sYSh0Lm1hcChkYSksKChlLHQpPT57bGV0IG49ZS5yYW5nZS5zdGFydC5saW5lLXQucmFuZ2Uuc3RhcnQubGluZTtyZXR1cm4gMD09PW4/ZS5yYW5nZS5zdGFydC5jaGFyYWN0ZXItdC5yYW5nZS5zdGFydC5jaGFyYWN0ZXI6bn0pKSxpPTA7Y29uc3QgYT1bXTtmb3IoY29uc3QgdCBvZiByKXtsZXQgcj1lLm9mZnNldEF0KHQucmFuZ2Uuc3RhcnQpO2lmKHI8aSl0aHJvdyBuZXcgRXJyb3IoIk92ZXJsYXBwaW5nIGVkaXQiKTtyPmkmJmEucHVzaChuLnN1YnN0cmluZyhpLHIpKSx0Lm5ld1RleHQubGVuZ3RoJiZhLnB1c2godC5uZXdUZXh0KSxpPWUub2Zmc2V0QXQodC5yYW5nZS5lbmQpfXJldHVybiBhLnB1c2gobi5zdWJzdHIoaSkpLGEuam9pbigiIil9LCh0YT1lYXx8KGVhPXt9KSlbdGEuU3RhcnRDb21tZW50VGFnPTBdPSJTdGFydENvbW1lbnRUYWciLHRhW3RhLkNvbW1lbnQ9MV09IkNvbW1lbnQiLHRhW3RhLkVuZENvbW1lbnRUYWc9Ml09IkVuZENvbW1lbnRUYWciLHRhW3RhLlN0YXJ0VGFnT3Blbj0zXT0iU3RhcnRUYWdPcGVuIix0YVt0YS5TdGFydFRhZ0Nsb3NlPTRdPSJTdGFydFRhZ0Nsb3NlIix0YVt0YS5TdGFydFRhZ1NlbGZDbG9zZT01XT0iU3RhcnRUYWdTZWxmQ2xvc2UiLHRhW3RhLlN0YXJ0VGFnPTZdPSJTdGFydFRhZyIsdGFbdGEuRW5kVGFnT3Blbj03XT0iRW5kVGFnT3BlbiIsdGFbdGEuRW5kVGFnQ2xvc2U9OF09IkVuZFRhZ0Nsb3NlIix0YVt0YS5FbmRUYWc9OV09IkVuZFRhZyIsdGFbdGEuRGVsaW1pdGVyQXNzaWduPTEwXT0iRGVsaW1pdGVyQXNzaWduIix0YVt0YS5BdHRyaWJ1dGVOYW1lPTExXT0iQXR0cmlidXRlTmFtZSIsdGFbdGEuQXR0cmlidXRlVmFsdWU9MTJdPSJBdHRyaWJ1dGVWYWx1ZSIsdGFbdGEuU3RhcnREb2N0eXBlVGFnPTEzXT0iU3RhcnREb2N0eXBlVGFnIix0YVt0YS5Eb2N0eXBlPTE0XT0iRG9jdHlwZSIsdGFbdGEuRW5kRG9jdHlwZVRhZz0xNV09IkVuZERvY3R5cGVUYWciLHRhW3RhLkNvbnRlbnQ9MTZdPSJDb250ZW50Iix0YVt0YS5XaGl0ZXNwYWNlPTE3XT0iV2hpdGVzcGFjZSIsdGFbdGEuVW5rbm93bj0xOF09IlVua25vd24iLHRhW3RhLlNjcmlwdD0xOV09IlNjcmlwdCIsdGFbdGEuU3R5bGVzPTIwXT0iU3R5bGVzIix0YVt0YS5FT1M9MjFdPSJFT1MiLChyYT1uYXx8KG5hPXt9KSlbcmEuV2l0aGluQ29udGVudD0wXT0iV2l0aGluQ29udGVudCIscmFbcmEuQWZ0ZXJPcGVuaW5nU3RhcnRUYWc9MV09IkFmdGVyT3BlbmluZ1N0YXJ0VGFnIixyYVtyYS5BZnRlck9wZW5pbmdFbmRUYWc9Ml09IkFmdGVyT3BlbmluZ0VuZFRhZyIscmFbcmEuV2l0aGluRG9jdHlwZT0zXT0iV2l0aGluRG9jdHlwZSIscmFbcmEuV2l0aGluVGFnPTRdPSJXaXRoaW5UYWciLHJhW3JhLldpdGhpbkVuZFRhZz01XT0iV2l0aGluRW5kVGFnIixyYVtyYS5XaXRoaW5Db21tZW50PTZdPSJXaXRoaW5Db21tZW50IixyYVtyYS5XaXRoaW5TY3JpcHRDb250ZW50PTddPSJXaXRoaW5TY3JpcHRDb250ZW50IixyYVtyYS5XaXRoaW5TdHlsZUNvbnRlbnQ9OF09IldpdGhpblN0eWxlQ29udGVudCIscmFbcmEuQWZ0ZXJBdHRyaWJ1dGVOYW1lPTldPSJBZnRlckF0dHJpYnV0ZU5hbWUiLHJhW3JhLkJlZm9yZUF0dHJpYnV0ZVZhbHVlPTEwXT0iQmVmb3JlQXR0cmlidXRlVmFsdWUiLChpYXx8KGlhPXt9KSkuTEFURVNUPXt0ZXh0RG9jdW1lbnQ6e2NvbXBsZXRpb246e2NvbXBsZXRpb25JdGVtOntkb2N1bWVudGF0aW9uRm9ybWF0OltyaS5NYXJrZG93bixyaS5QbGFpblRleHRdfX0saG92ZXI6e2NvbnRlbnRGb3JtYXQ6W3JpLk1hcmtkb3duLHJpLlBsYWluVGV4dF19fX0sKG9hPWFhfHwoYWE9e30pKVtvYS5Vbmtub3duPTBdPSJVbmtub3duIixvYVtvYS5GaWxlPTFdPSJGaWxlIixvYVtvYS5EaXJlY3Rvcnk9Ml09IkRpcmVjdG9yeSIsb2Fbb2EuU3ltYm9saWNMaW5rPTY0XT0iU3ltYm9saWNMaW5rIjt2YXIgdWE9Wm4oKSxwYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLnNvdXJjZT1lLHRoaXMubGVuPWUubGVuZ3RoLHRoaXMucG9zaXRpb249dH1yZXR1cm4gZS5wcm90b3R5cGUuZW9zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuPD10aGlzLnBvc2l0aW9ufSxlLnByb3RvdHlwZS5nZXRTb3VyY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zb3VyY2V9LGUucHJvdG90eXBlLnBvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9ufSxlLnByb3RvdHlwZS5nb0JhY2tUbz1mdW5jdGlvbihlKXt0aGlzLnBvc2l0aW9uPWV9LGUucHJvdG90eXBlLmdvQmFjaz1mdW5jdGlvbihlKXt0aGlzLnBvc2l0aW9uLT1lfSxlLnByb3RvdHlwZS5hZHZhbmNlPWZ1bmN0aW9uKGUpe3RoaXMucG9zaXRpb24rPWV9LGUucHJvdG90eXBlLmdvVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLnBvc2l0aW9uPXRoaXMuc291cmNlLmxlbmd0aH0sZS5wcm90b3R5cGUubmV4dENoYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKyspfHwwfSxlLnByb3RvdHlwZS5wZWVrQ2hhcj1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9MCksdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uK2UpfHwwfSxlLnByb3RvdHlwZS5hZHZhbmNlSWZDaGFyPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKSYmKHRoaXMucG9zaXRpb24rKywhMCl9LGUucHJvdG90eXBlLmFkdmFuY2VJZkNoYXJzPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKHRoaXMucG9zaXRpb24rZS5sZW5ndGg+dGhpcy5zb3VyY2UubGVuZ3RoKXJldHVybiExO2Zvcih0PTA7dDxlLmxlbmd0aDt0KyspaWYodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uK3QpIT09ZVt0XSlyZXR1cm4hMTtyZXR1cm4gdGhpcy5hZHZhbmNlKHQpLCEwfSxlLnByb3RvdHlwZS5hZHZhbmNlSWZSZWdFeHA9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zb3VyY2Uuc3Vic3RyKHRoaXMucG9zaXRpb24pLm1hdGNoKGUpO3JldHVybiB0Pyh0aGlzLnBvc2l0aW9uPXRoaXMucG9zaXRpb24rdC5pbmRleCt0WzBdLmxlbmd0aCx0WzBdKToiIn0sZS5wcm90b3R5cGUuYWR2YW5jZVVudGlsUmVnRXhwPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc291cmNlLnN1YnN0cih0aGlzLnBvc2l0aW9uKS5tYXRjaChlKTtyZXR1cm4gdD8odGhpcy5wb3NpdGlvbj10aGlzLnBvc2l0aW9uK3QuaW5kZXgsdFswXSk6KHRoaXMuZ29Ub0VuZCgpLCIiKX0sZS5wcm90b3R5cGUuYWR2YW5jZVVudGlsQ2hhcj1mdW5jdGlvbihlKXtmb3IoO3RoaXMucG9zaXRpb248dGhpcy5zb3VyY2UubGVuZ3RoOyl7aWYodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKT09PWUpcmV0dXJuITA7dGhpcy5hZHZhbmNlKDEpfXJldHVybiExfSxlLnByb3RvdHlwZS5hZHZhbmNlVW50aWxDaGFycz1mdW5jdGlvbihlKXtmb3IoO3RoaXMucG9zaXRpb24rZS5sZW5ndGg8PXRoaXMuc291cmNlLmxlbmd0aDspe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGgmJnRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbit0KT09PWVbdF07dCsrKTtpZih0PT09ZS5sZW5ndGgpcmV0dXJuITA7dGhpcy5hZHZhbmNlKDEpfXJldHVybiB0aGlzLmdvVG9FbmQoKSwhMX0sZS5wcm90b3R5cGUuc2tpcFdoaXRlc3BhY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hZHZhbmNlV2hpbGVDaGFyKChmdW5jdGlvbihlKXtyZXR1cm4gZT09PUNhfHxlPT09eGF8fGU9PT1UYXx8ZT09PVNhfHxlPT09a2F9KSk+MH0sZS5wcm90b3R5cGUuYWR2YW5jZVdoaWxlQ2hhcj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5wb3NpdGlvbjt0aGlzLnBvc2l0aW9uPHRoaXMubGVuJiZlKHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbikpOyl0aGlzLnBvc2l0aW9uKys7cmV0dXJuIHRoaXMucG9zaXRpb24tdH0sZX0oKSxtYT0iISIuY2hhckNvZGVBdCgwKSxmYT0iLSIuY2hhckNvZGVBdCgwKSxnYT0iPCIuY2hhckNvZGVBdCgwKSxiYT0iPiIuY2hhckNvZGVBdCgwKSx3YT0iLyIuY2hhckNvZGVBdCgwKSxfYT0iPSIuY2hhckNvZGVBdCgwKSx2YT0nIicuY2hhckNvZGVBdCgwKSx5YT0iJyIuY2hhckNvZGVBdCgwKSxUYT0iXG4iLmNoYXJDb2RlQXQoMCksa2E9IlxyIi5jaGFyQ29kZUF0KDApLFNhPSJcZiIuY2hhckNvZGVBdCgwKSxDYT0iICIuY2hhckNvZGVBdCgwKSx4YT0iXHQiLmNoYXJDb2RlQXQoMCksTGE9eyJ0ZXh0L3gtaGFuZGxlYmFycy10ZW1wbGF0ZSI6ITAsInRleHQvaHRtbCI6ITB9O2Z1bmN0aW9uIEVhKGUsdCxuLHIpe3ZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PW4mJihuPW5hLldpdGhpbkNvbnRlbnQpLHZvaWQgMD09PXImJihyPSExKTt2YXIgaSxhLG8scyxsLGM9bmV3IHBhKGUsdCksaD1uLGQ9MCx1PWVhLlVua25vd247ZnVuY3Rpb24gcCgpe3JldHVybiBjLmFkdmFuY2VJZlJlZ0V4cCgvXltfOlx3XVtfOlx3LS5cZF0qLykudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBtKGUsdCxuKXtyZXR1cm4gdT10LGQ9ZSxpPW4sdH1mdW5jdGlvbiBmKCl7dmFyIGUsdD1jLnBvcygpO2lmKGMuZW9zKCkpcmV0dXJuIG0odCxlYS5FT1MpO3N3aXRjaChoKXtjYXNlIG5hLldpdGhpbkNvbW1lbnQ6cmV0dXJuIGMuYWR2YW5jZUlmQ2hhcnMoW2ZhLGZhLGJhXSk/KGg9bmEuV2l0aGluQ29udGVudCxtKHQsZWEuRW5kQ29tbWVudFRhZykpOihjLmFkdmFuY2VVbnRpbENoYXJzKFtmYSxmYSxiYV0pLG0odCxlYS5Db21tZW50KSk7Y2FzZSBuYS5XaXRoaW5Eb2N0eXBlOnJldHVybiBjLmFkdmFuY2VJZkNoYXIoYmEpPyhoPW5hLldpdGhpbkNvbnRlbnQsbSh0LGVhLkVuZERvY3R5cGVUYWcpKTooYy5hZHZhbmNlVW50aWxDaGFyKGJhKSxtKHQsZWEuRG9jdHlwZSkpO2Nhc2UgbmEuV2l0aGluQ29udGVudDppZihjLmFkdmFuY2VJZkNoYXIoZ2EpKXtpZighYy5lb3MoKSYmYy5wZWVrQ2hhcigpPT09bWEpe2lmKGMuYWR2YW5jZUlmQ2hhcnMoW21hLGZhLGZhXSkpcmV0dXJuIGg9bmEuV2l0aGluQ29tbWVudCxtKHQsZWEuU3RhcnRDb21tZW50VGFnKTtpZihjLmFkdmFuY2VJZlJlZ0V4cCgvXiFkb2N0eXBlL2kpKXJldHVybiBoPW5hLldpdGhpbkRvY3R5cGUsbSh0LGVhLlN0YXJ0RG9jdHlwZVRhZyl9cmV0dXJuIGMuYWR2YW5jZUlmQ2hhcih3YSk/KGg9bmEuQWZ0ZXJPcGVuaW5nRW5kVGFnLG0odCxlYS5FbmRUYWdPcGVuKSk6KGg9bmEuQWZ0ZXJPcGVuaW5nU3RhcnRUYWcsbSh0LGVhLlN0YXJ0VGFnT3BlbikpfXJldHVybiBjLmFkdmFuY2VVbnRpbENoYXIoZ2EpLG0odCxlYS5Db250ZW50KTtjYXNlIG5hLkFmdGVyT3BlbmluZ0VuZFRhZzpyZXR1cm4gcCgpLmxlbmd0aD4wPyhoPW5hLldpdGhpbkVuZFRhZyxtKHQsZWEuRW5kVGFnKSk6Yy5za2lwV2hpdGVzcGFjZSgpP20odCxlYS5XaGl0ZXNwYWNlLHVhKCJlcnJvci51bmV4cGVjdGVkV2hpdGVzcGFjZSIsIlRhZyBuYW1lIG11c3QgZGlyZWN0bHkgZm9sbG93IHRoZSBvcGVuIGJyYWNrZXQuIikpOihoPW5hLldpdGhpbkVuZFRhZyxjLmFkdmFuY2VVbnRpbENoYXIoYmEpLHQ8Yy5wb3MoKT9tKHQsZWEuVW5rbm93bix1YSgiZXJyb3IuZW5kVGFnTmFtZUV4cGVjdGVkIiwiRW5kIHRhZyBuYW1lIGV4cGVjdGVkLiIpKTpmKCkpO2Nhc2UgbmEuV2l0aGluRW5kVGFnOmlmKGMuc2tpcFdoaXRlc3BhY2UoKSlyZXR1cm4gbSh0LGVhLldoaXRlc3BhY2UpO2lmKGMuYWR2YW5jZUlmQ2hhcihiYSkpcmV0dXJuIGg9bmEuV2l0aGluQ29udGVudCxtKHQsZWEuRW5kVGFnQ2xvc2UpO2lmKHImJmMucGVla0NoYXIoKT09PWdhKXJldHVybiBoPW5hLldpdGhpbkNvbnRlbnQsbSh0LGVhLkVuZFRhZ0Nsb3NlLHVhKCJlcnJvci5jbG9zaW5nQnJhY2tldE1pc3NpbmciLCJDbG9zaW5nIGJyYWNrZXQgbWlzc2luZy4iKSk7ZT11YSgiZXJyb3IuY2xvc2luZ0JyYWNrZXRFeHBlY3RlZCIsIkNsb3NpbmcgYnJhY2tldCBleHBlY3RlZC4iKTticmVhaztjYXNlIG5hLkFmdGVyT3BlbmluZ1N0YXJ0VGFnOnJldHVybiBvPXAoKSxsPXZvaWQgMCxzPXZvaWQgMCxvLmxlbmd0aD4wPyhhPSExLGg9bmEuV2l0aGluVGFnLG0odCxlYS5TdGFydFRhZykpOmMuc2tpcFdoaXRlc3BhY2UoKT9tKHQsZWEuV2hpdGVzcGFjZSx1YSgiZXJyb3IudW5leHBlY3RlZFdoaXRlc3BhY2UiLCJUYWcgbmFtZSBtdXN0IGRpcmVjdGx5IGZvbGxvdyB0aGUgb3BlbiBicmFja2V0LiIpKTooaD1uYS5XaXRoaW5UYWcsYy5hZHZhbmNlVW50aWxDaGFyKGJhKSx0PGMucG9zKCk/bSh0LGVhLlVua25vd24sdWEoImVycm9yLnN0YXJ0VGFnTmFtZUV4cGVjdGVkIiwiU3RhcnQgdGFnIG5hbWUgZXhwZWN0ZWQuIikpOmYoKSk7Y2FzZSBuYS5XaXRoaW5UYWc6cmV0dXJuIGMuc2tpcFdoaXRlc3BhY2UoKT8oYT0hMCxtKHQsZWEuV2hpdGVzcGFjZSkpOmEmJihzPWMuYWR2YW5jZUlmUmVnRXhwKC9eW15ccyInPjwvPVx4MDAtXHgwRlx4N0ZceDgwLVx4OUZdKi8pLnRvTG93ZXJDYXNlKCkpLmxlbmd0aD4wPyhoPW5hLkFmdGVyQXR0cmlidXRlTmFtZSxhPSExLG0odCxlYS5BdHRyaWJ1dGVOYW1lKSk6Yy5hZHZhbmNlSWZDaGFycyhbd2EsYmFdKT8oaD1uYS5XaXRoaW5Db250ZW50LG0odCxlYS5TdGFydFRhZ1NlbGZDbG9zZSkpOmMuYWR2YW5jZUlmQ2hhcihiYSk/KGg9InNjcmlwdCI9PT1vP2wmJkxhW2xdP25hLldpdGhpbkNvbnRlbnQ6bmEuV2l0aGluU2NyaXB0Q29udGVudDoic3R5bGUiPT09bz9uYS5XaXRoaW5TdHlsZUNvbnRlbnQ6bmEuV2l0aGluQ29udGVudCxtKHQsZWEuU3RhcnRUYWdDbG9zZSkpOnImJmMucGVla0NoYXIoKT09PWdhPyhoPW5hLldpdGhpbkNvbnRlbnQsbSh0LGVhLlN0YXJ0VGFnQ2xvc2UsdWEoImVycm9yLmNsb3NpbmdCcmFja2V0TWlzc2luZyIsIkNsb3NpbmcgYnJhY2tldCBtaXNzaW5nLiIpKSk6KGMuYWR2YW5jZSgxKSxtKHQsZWEuVW5rbm93bix1YSgiZXJyb3IudW5leHBlY3RlZENoYXJhY3RlckluVGFnIiwiVW5leHBlY3RlZCBjaGFyYWN0ZXIgaW4gdGFnLiIpKSk7Y2FzZSBuYS5BZnRlckF0dHJpYnV0ZU5hbWU6cmV0dXJuIGMuc2tpcFdoaXRlc3BhY2UoKT8oYT0hMCxtKHQsZWEuV2hpdGVzcGFjZSkpOmMuYWR2YW5jZUlmQ2hhcihfYSk/KGg9bmEuQmVmb3JlQXR0cmlidXRlVmFsdWUsbSh0LGVhLkRlbGltaXRlckFzc2lnbikpOihoPW5hLldpdGhpblRhZyxmKCkpO2Nhc2UgbmEuQmVmb3JlQXR0cmlidXRlVmFsdWU6aWYoYy5za2lwV2hpdGVzcGFjZSgpKXJldHVybiBtKHQsZWEuV2hpdGVzcGFjZSk7dmFyIG49Yy5hZHZhbmNlSWZSZWdFeHAoL15bXlxzIidgPTw+XSsvKTtpZihuLmxlbmd0aD4wKXJldHVybiBjLnBlZWtDaGFyKCk9PT1iYSYmYy5wZWVrQ2hhcigtMSk9PT13YSYmKGMuZ29CYWNrKDEpLG49bi5zdWJzdHIoMCxuLmxlbmd0aC0xKSksInR5cGUiPT09cyYmKGw9biksaD1uYS5XaXRoaW5UYWcsYT0hMSxtKHQsZWEuQXR0cmlidXRlVmFsdWUpO3ZhciBpPWMucGVla0NoYXIoKTtyZXR1cm4gaT09PXlhfHxpPT09dmE/KGMuYWR2YW5jZSgxKSxjLmFkdmFuY2VVbnRpbENoYXIoaSkmJmMuYWR2YW5jZSgxKSwidHlwZSI9PT1zJiYobD1jLmdldFNvdXJjZSgpLnN1YnN0cmluZyh0KzEsYy5wb3MoKS0xKSksaD1uYS5XaXRoaW5UYWcsYT0hMSxtKHQsZWEuQXR0cmlidXRlVmFsdWUpKTooaD1uYS5XaXRoaW5UYWcsYT0hMSxmKCkpO2Nhc2UgbmEuV2l0aGluU2NyaXB0Q29udGVudDpmb3IodmFyIGQ9MTshYy5lb3MoKTspe3ZhciB1PWMuYWR2YW5jZUlmUmVnRXhwKC88IS0tfC0tPnw8XC8/c2NyaXB0XHMqXC8/Pj8vaSk7aWYoMD09PXUubGVuZ3RoKXJldHVybiBjLmdvVG9FbmQoKSxtKHQsZWEuU2NyaXB0KTtpZigiXHgzYyEtLSI9PT11KTE9PT1kJiYoZD0yKTtlbHNlIGlmKCItLVx4M2UiPT09dSlkPTE7ZWxzZSBpZigiLyIhPT11WzFdKTI9PT1kJiYoZD0zKTtlbHNle2lmKDMhPT1kKXtjLmdvQmFjayh1Lmxlbmd0aCk7YnJlYWt9ZD0yfX1yZXR1cm4gaD1uYS5XaXRoaW5Db250ZW50LHQ8Yy5wb3MoKT9tKHQsZWEuU2NyaXB0KTpmKCk7Y2FzZSBuYS5XaXRoaW5TdHlsZUNvbnRlbnQ6cmV0dXJuIGMuYWR2YW5jZVVudGlsUmVnRXhwKC88XC9zdHlsZS9pKSxoPW5hLldpdGhpbkNvbnRlbnQsdDxjLnBvcygpP20odCxlYS5TdHlsZXMpOmYoKX1yZXR1cm4gYy5hZHZhbmNlKDEpLGg9bmEuV2l0aGluQ29udGVudCxtKHQsZWEuVW5rbm93bixlKX1yZXR1cm57c2NhbjpmdW5jdGlvbigpe3ZhciBlPWMucG9zKCksdD1oLG49ZigpO3JldHVybiBuPT09ZWEuRU9TfHxlIT09Yy5wb3MoKXx8ciYmKG49PT1lYS5TdGFydFRhZ0Nsb3NlfHxuPT09ZWEuRW5kVGFnQ2xvc2UpP246KGNvbnNvbGUubG9nKCJTY2FubmVyLnNjYW4gaGFzIG5vdCBhZHZhbmNlZCBhdCBvZmZzZXQgIitlKyIsIHN0YXRlIGJlZm9yZTogIit0KyIgYWZ0ZXI6ICIraCksYy5hZHZhbmNlKDEpLG0oZSxlYS5Vbmtub3duKSl9LGdldFRva2VuVHlwZTpmdW5jdGlvbigpe3JldHVybiB1fSxnZXRUb2tlbk9mZnNldDpmdW5jdGlvbigpe3JldHVybiBkfSxnZXRUb2tlbkxlbmd0aDpmdW5jdGlvbigpe3JldHVybiBjLnBvcygpLWR9LGdldFRva2VuRW5kOmZ1bmN0aW9uKCl7cmV0dXJuIGMucG9zKCl9LGdldFRva2VuVGV4dDpmdW5jdGlvbigpe3JldHVybiBjLmdldFNvdXJjZSgpLnN1YnN0cmluZyhkLGMucG9zKCkpfSxnZXRTY2FubmVyU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sZ2V0VG9rZW5FcnJvcjpmdW5jdGlvbigpe3JldHVybiBpfX19ZnVuY3Rpb24gQWEoZSx0KXt2YXIgbj0wLHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIDA7Zm9yKDtuPHI7KXt2YXIgaT1NYXRoLmZsb29yKChuK3IpLzIpO3QoZVtpXSk/cj1pOm49aSsxfXJldHVybiBufXZhciBNYT1bImFyZWEiLCJiYXNlIiwiYnIiLCJjb2wiLCJlbWJlZCIsImhyIiwiaW1nIiwiaW5wdXQiLCJrZXlnZW4iLCJsaW5rIiwibWVudWl0ZW0iLCJtZXRhIiwicGFyYW0iLCJzb3VyY2UiLCJ0cmFjayIsIndiciJdO2Z1bmN0aW9uIFJhKGUpe3JldHVybiEhZSYmZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj0wLGk9ZS5sZW5ndGgtMTtyPD1pOyl7dmFyIGE9KHIraSkvMnwwLG89bihlW2FdLHQpO2lmKG88MClyPWErMTtlbHNle2lmKCEobz4wKSlyZXR1cm4gYTtpPWEtMX19cmV0dXJuLShyKzEpfShNYSxlLnRvTG93ZXJDYXNlKCksKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubG9jYWxlQ29tcGFyZSh0KX0pKT49MH12YXIgSWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLHIpe3RoaXMuc3RhcnQ9ZSx0aGlzLmVuZD10LHRoaXMuY2hpbGRyZW49bix0aGlzLnBhcmVudD1yLHRoaXMuY2xvc2VkPSExfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImF0dHJpYnV0ZU5hbWVzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cmlidXRlcz9PYmplY3Qua2V5cyh0aGlzLmF0dHJpYnV0ZXMpOltdfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmlzU2FtZVRhZz1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09dGhpcy50YWc/dm9pZCAwPT09ZTp2b2lkIDAhPT1lJiZ0aGlzLnRhZy5sZW5ndGg9PT1lLmxlbmd0aCYmdGhpcy50YWcudG9Mb3dlckNhc2UoKT09PWV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZmlyc3RDaGlsZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkcmVuWzBdfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibGFzdENoaWxkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGgtMV06dm9pZCAwfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmZpbmROb2RlQmVmb3JlPWZ1bmN0aW9uKGUpe3ZhciB0PUFhKHRoaXMuY2hpbGRyZW4sKGZ1bmN0aW9uKHQpe3JldHVybiBlPD10LnN0YXJ0fSkpLTE7aWYodD49MCl7dmFyIG49dGhpcy5jaGlsZHJlblt0XTtpZihlPm4uc3RhcnQpe2lmKGU8bi5lbmQpcmV0dXJuIG4uZmluZE5vZGVCZWZvcmUoZSk7dmFyIHI9bi5sYXN0Q2hpbGQ7cmV0dXJuIHImJnIuZW5kPT09bi5lbmQ/bi5maW5kTm9kZUJlZm9yZShlKTpufX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuZmluZE5vZGVBdD1mdW5jdGlvbihlKXt2YXIgdD1BYSh0aGlzLmNoaWxkcmVuLChmdW5jdGlvbih0KXtyZXR1cm4gZTw9dC5zdGFydH0pKS0xO2lmKHQ+PTApe3ZhciBuPXRoaXMuY2hpbGRyZW5bdF07aWYoZT5uLnN0YXJ0JiZlPD1uLmVuZClyZXR1cm4gbi5maW5kTm9kZUF0KGUpfXJldHVybiB0aGlzfSxlfSgpO2Z1bmN0aW9uIE5hKGUpe2Zvcih2YXIgdD1FYShlLHZvaWQgMCx2b2lkIDAsITApLG49bmV3IElhKDAsZS5sZW5ndGgsW10sdm9pZCAwKSxyPW4saT0tMSxhPXZvaWQgMCxvPW51bGwscz10LnNjYW4oKTtzIT09ZWEuRU9TOyl7c3dpdGNoKHMpe2Nhc2UgZWEuU3RhcnRUYWdPcGVuOnZhciBsPW5ldyBJYSh0LmdldFRva2VuT2Zmc2V0KCksZS5sZW5ndGgsW10scik7ci5jaGlsZHJlbi5wdXNoKGwpLHI9bDticmVhaztjYXNlIGVhLlN0YXJ0VGFnOnIudGFnPXQuZ2V0VG9rZW5UZXh0KCk7YnJlYWs7Y2FzZSBlYS5TdGFydFRhZ0Nsb3NlOnIucGFyZW50JiYoci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHQuZ2V0VG9rZW5MZW5ndGgoKT8oci5zdGFydFRhZ0VuZD10LmdldFRva2VuRW5kKCksci50YWcmJlJhKHIudGFnKSYmKHIuY2xvc2VkPSEwLHI9ci5wYXJlbnQpKTpyPXIucGFyZW50KTticmVhaztjYXNlIGVhLlN0YXJ0VGFnU2VsZkNsb3NlOnIucGFyZW50JiYoci5jbG9zZWQ9ITAsci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHIuc3RhcnRUYWdFbmQ9dC5nZXRUb2tlbkVuZCgpLHI9ci5wYXJlbnQpO2JyZWFrO2Nhc2UgZWEuRW5kVGFnT3BlbjppPXQuZ2V0VG9rZW5PZmZzZXQoKSxhPXZvaWQgMDticmVhaztjYXNlIGVhLkVuZFRhZzphPXQuZ2V0VG9rZW5UZXh0KCkudG9Mb3dlckNhc2UoKTticmVhaztjYXNlIGVhLkVuZFRhZ0Nsb3NlOmZvcih2YXIgYz1yOyFjLmlzU2FtZVRhZyhhKSYmYy5wYXJlbnQ7KWM9Yy5wYXJlbnQ7aWYoYy5wYXJlbnQpe2Zvcig7ciE9PWM7KXIuZW5kPWksci5jbG9zZWQ9ITEscj1yLnBhcmVudDtyLmNsb3NlZD0hMCxyLmVuZFRhZ1N0YXJ0PWksci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHI9ci5wYXJlbnR9YnJlYWs7Y2FzZSBlYS5BdHRyaWJ1dGVOYW1lOm89dC5nZXRUb2tlblRleHQoKSwoaD1yLmF0dHJpYnV0ZXMpfHwoci5hdHRyaWJ1dGVzPWg9e30pLGhbb109bnVsbDticmVhaztjYXNlIGVhLkF0dHJpYnV0ZVZhbHVlOnZhciBoLGQ9dC5nZXRUb2tlblRleHQoKTsoaD1yLmF0dHJpYnV0ZXMpJiZvJiYoaFtvXT1kLG89bnVsbCl9cz10LnNjYW4oKX1mb3IoO3IucGFyZW50OylyLmVuZD1lLmxlbmd0aCxyLmNsb3NlZD0hMSxyPXIucGFyZW50O3JldHVybntyb290czpuLmNoaWxkcmVuLGZpbmROb2RlQmVmb3JlOm4uZmluZE5vZGVCZWZvcmUuYmluZChuKSxmaW5kTm9kZUF0Om4uZmluZE5vZGVBdC5iaW5kKG4pfX12YXIgVWE9eyJBYWN1dGU7Ijoiw4EiLEFhY3V0ZToiw4EiLCJhYWN1dGU7Ijoiw6EiLGFhY3V0ZToiw6EiLCJBYnJldmU7IjoixIIiLCJhYnJldmU7IjoixIMiLCJhYzsiOiLiiL4iLCJhY2Q7Ijoi4oi/IiwiYWNFOyI6IuKIvsyzIiwiQWNpcmM7Ijoiw4IiLEFjaXJjOiLDgiIsImFjaXJjOyI6IsOiIixhY2lyYzoiw6IiLCJhY3V0ZTsiOiLCtCIsYWN1dGU6IsK0IiwiQWN5OyI6ItCQIiwiYWN5OyI6ItCwIiwiQUVsaWc7Ijoiw4YiLEFFbGlnOiLDhiIsImFlbGlnOyI6IsOmIixhZWxpZzoiw6YiLCJhZjsiOiLigaEiLCJBZnI7Ijoi8J2UhCIsImFmcjsiOiLwnZSeIiwiQWdyYXZlOyI6IsOAIixBZ3JhdmU6IsOAIiwiYWdyYXZlOyI6IsOgIixhZ3JhdmU6IsOgIiwiYWxlZnN5bTsiOiLihLUiLCJhbGVwaDsiOiLihLUiLCJBbHBoYTsiOiLOkSIsImFscGhhOyI6Is6xIiwiQW1hY3I7IjoixIAiLCJhbWFjcjsiOiLEgSIsImFtYWxnOyI6IuKovyIsIkFNUDsiOiImIixBTVA6IiYiLCJhbXA7IjoiJiIsYW1wOiImIiwiQW5kOyI6IuKpkyIsImFuZDsiOiLiiKciLCJhbmRhbmQ7Ijoi4qmVIiwiYW5kZDsiOiLiqZwiLCJhbmRzbG9wZTsiOiLiqZgiLCJhbmR2OyI6IuKpmiIsImFuZzsiOiLiiKAiLCJhbmdlOyI6IuKmpCIsImFuZ2xlOyI6IuKIoCIsImFuZ21zZDsiOiLiiKEiLCJhbmdtc2RhYTsiOiLipqgiLCJhbmdtc2RhYjsiOiLipqkiLCJhbmdtc2RhYzsiOiLipqoiLCJhbmdtc2RhZDsiOiLipqsiLCJhbmdtc2RhZTsiOiLipqwiLCJhbmdtc2RhZjsiOiLipq0iLCJhbmdtc2RhZzsiOiLipq4iLCJhbmdtc2RhaDsiOiLipq8iLCJhbmdydDsiOiLiiJ8iLCJhbmdydHZiOyI6IuKKviIsImFuZ3J0dmJkOyI6IuKmnSIsImFuZ3NwaDsiOiLiiKIiLCJhbmdzdDsiOiLDhSIsImFuZ3phcnI7Ijoi4o28IiwiQW9nb247IjoixIQiLCJhb2dvbjsiOiLEhSIsIkFvcGY7Ijoi8J2UuCIsImFvcGY7Ijoi8J2VkiIsImFwOyI6IuKJiCIsImFwYWNpcjsiOiLiqa8iLCJhcEU7Ijoi4qmwIiwiYXBlOyI6IuKJiiIsImFwaWQ7Ijoi4omLIiwiYXBvczsiOiInIiwiQXBwbHlGdW5jdGlvbjsiOiLigaEiLCJhcHByb3g7Ijoi4omIIiwiYXBwcm94ZXE7Ijoi4omKIiwiQXJpbmc7Ijoiw4UiLEFyaW5nOiLDhSIsImFyaW5nOyI6IsOlIixhcmluZzoiw6UiLCJBc2NyOyI6IvCdkpwiLCJhc2NyOyI6IvCdkrYiLCJBc3NpZ247Ijoi4omUIiwiYXN0OyI6IioiLCJhc3ltcDsiOiLiiYgiLCJhc3ltcGVxOyI6IuKJjSIsIkF0aWxkZTsiOiLDgyIsQXRpbGRlOiLDgyIsImF0aWxkZTsiOiLDoyIsYXRpbGRlOiLDoyIsIkF1bWw7Ijoiw4QiLEF1bWw6IsOEIiwiYXVtbDsiOiLDpCIsYXVtbDoiw6QiLCJhd2NvbmludDsiOiLiiLMiLCJhd2ludDsiOiLiqJEiLCJiYWNrY29uZzsiOiLiiYwiLCJiYWNrZXBzaWxvbjsiOiLPtiIsImJhY2twcmltZTsiOiLigLUiLCJiYWNrc2ltOyI6IuKIvSIsImJhY2tzaW1lcTsiOiLii40iLCJCYWNrc2xhc2g7Ijoi4oiWIiwiQmFydjsiOiLiq6ciLCJiYXJ2ZWU7Ijoi4oq9IiwiQmFyd2VkOyI6IuKMhiIsImJhcndlZDsiOiLijIUiLCJiYXJ3ZWRnZTsiOiLijIUiLCJiYnJrOyI6IuKOtSIsImJicmt0YnJrOyI6IuKOtiIsImJjb25nOyI6IuKJjCIsIkJjeTsiOiLQkSIsImJjeTsiOiLQsSIsImJkcXVvOyI6IuKAniIsImJlY2F1czsiOiLiiLUiLCJCZWNhdXNlOyI6IuKItSIsImJlY2F1c2U7Ijoi4oi1IiwiYmVtcHR5djsiOiLiprAiLCJiZXBzaTsiOiLPtiIsImJlcm5vdTsiOiLihKwiLCJCZXJub3VsbGlzOyI6IuKErCIsIkJldGE7IjoizpIiLCJiZXRhOyI6Is6yIiwiYmV0aDsiOiLihLYiLCJiZXR3ZWVuOyI6IuKJrCIsIkJmcjsiOiLwnZSFIiwiYmZyOyI6IvCdlJ8iLCJiaWdjYXA7Ijoi4ouCIiwiYmlnY2lyYzsiOiLil68iLCJiaWdjdXA7Ijoi4ouDIiwiYmlnb2RvdDsiOiLiqIAiLCJiaWdvcGx1czsiOiLiqIEiLCJiaWdvdGltZXM7Ijoi4qiCIiwiYmlnc3FjdXA7Ijoi4qiGIiwiYmlnc3RhcjsiOiLimIUiLCJiaWd0cmlhbmdsZWRvd247Ijoi4pa9IiwiYmlndHJpYW5nbGV1cDsiOiLilrMiLCJiaWd1cGx1czsiOiLiqIQiLCJiaWd2ZWU7Ijoi4ouBIiwiYmlnd2VkZ2U7Ijoi4ouAIiwiYmthcm93OyI6IuKkjSIsImJsYWNrbG96ZW5nZTsiOiLip6siLCJibGFja3NxdWFyZTsiOiLilqoiLCJibGFja3RyaWFuZ2xlOyI6IuKWtCIsImJsYWNrdHJpYW5nbGVkb3duOyI6IuKWviIsImJsYWNrdHJpYW5nbGVsZWZ0OyI6IuKXgiIsImJsYWNrdHJpYW5nbGVyaWdodDsiOiLilrgiLCJibGFuazsiOiLikKMiLCJibGsxMjsiOiLilpIiLCJibGsxNDsiOiLilpEiLCJibGszNDsiOiLilpMiLCJibG9jazsiOiLilogiLCJibmU7IjoiPeKDpSIsImJuZXF1aXY7Ijoi4omh4oOlIiwiYk5vdDsiOiLiq60iLCJibm90OyI6IuKMkCIsIkJvcGY7Ijoi8J2UuSIsImJvcGY7Ijoi8J2VkyIsImJvdDsiOiLiiqUiLCJib3R0b207Ijoi4oqlIiwiYm93dGllOyI6IuKLiCIsImJveGJveDsiOiLip4kiLCJib3hETDsiOiLilZciLCJib3hEbDsiOiLilZYiLCJib3hkTDsiOiLilZUiLCJib3hkbDsiOiLilJAiLCJib3hEUjsiOiLilZQiLCJib3hEcjsiOiLilZMiLCJib3hkUjsiOiLilZIiLCJib3hkcjsiOiLilIwiLCJib3hIOyI6IuKVkCIsImJveGg7Ijoi4pSAIiwiYm94SEQ7Ijoi4pWmIiwiYm94SGQ7Ijoi4pWkIiwiYm94aEQ7Ijoi4pWlIiwiYm94aGQ7Ijoi4pSsIiwiYm94SFU7Ijoi4pWpIiwiYm94SHU7Ijoi4pWnIiwiYm94aFU7Ijoi4pWoIiwiYm94aHU7Ijoi4pS0IiwiYm94bWludXM7Ijoi4oqfIiwiYm94cGx1czsiOiLiip4iLCJib3h0aW1lczsiOiLiiqAiLCJib3hVTDsiOiLilZ0iLCJib3hVbDsiOiLilZwiLCJib3h1TDsiOiLilZsiLCJib3h1bDsiOiLilJgiLCJib3hVUjsiOiLilZoiLCJib3hVcjsiOiLilZkiLCJib3h1UjsiOiLilZgiLCJib3h1cjsiOiLilJQiLCJib3hWOyI6IuKVkSIsImJveHY7Ijoi4pSCIiwiYm94Vkg7Ijoi4pWsIiwiYm94Vmg7Ijoi4pWrIiwiYm94dkg7Ijoi4pWqIiwiYm94dmg7Ijoi4pS8IiwiYm94Vkw7Ijoi4pWjIiwiYm94Vmw7Ijoi4pWiIiwiYm94dkw7Ijoi4pWhIiwiYm94dmw7Ijoi4pSkIiwiYm94VlI7Ijoi4pWgIiwiYm94VnI7Ijoi4pWfIiwiYm94dlI7Ijoi4pWeIiwiYm94dnI7Ijoi4pScIiwiYnByaW1lOyI6IuKAtSIsIkJyZXZlOyI6IsuYIiwiYnJldmU7Ijoiy5giLCJicnZiYXI7IjoiwqYiLGJydmJhcjoiwqYiLCJCc2NyOyI6IuKErCIsImJzY3I7Ijoi8J2StyIsImJzZW1pOyI6IuKBjyIsImJzaW07Ijoi4oi9IiwiYnNpbWU7Ijoi4ouNIiwiYnNvbDsiOiJcXCIsImJzb2xiOyI6IuKnhSIsImJzb2xoc3ViOyI6IuKfiCIsImJ1bGw7Ijoi4oCiIiwiYnVsbGV0OyI6IuKAoiIsImJ1bXA7Ijoi4omOIiwiYnVtcEU7Ijoi4qquIiwiYnVtcGU7Ijoi4omPIiwiQnVtcGVxOyI6IuKJjiIsImJ1bXBlcTsiOiLiiY8iLCJDYWN1dGU7IjoixIYiLCJjYWN1dGU7IjoixIciLCJDYXA7Ijoi4ouSIiwiY2FwOyI6IuKIqSIsImNhcGFuZDsiOiLiqYQiLCJjYXBicmN1cDsiOiLiqYkiLCJjYXBjYXA7Ijoi4qmLIiwiY2FwY3VwOyI6IuKphyIsImNhcGRvdDsiOiLiqYAiLCJDYXBpdGFsRGlmZmVyZW50aWFsRDsiOiLihYUiLCJjYXBzOyI6IuKIqe+4gCIsImNhcmV0OyI6IuKBgSIsImNhcm9uOyI6IsuHIiwiQ2F5bGV5czsiOiLihK0iLCJjY2FwczsiOiLiqY0iLCJDY2Fyb247IjoixIwiLCJjY2Fyb247IjoixI0iLCJDY2VkaWw7Ijoiw4ciLENjZWRpbDoiw4ciLCJjY2VkaWw7Ijoiw6ciLGNjZWRpbDoiw6ciLCJDY2lyYzsiOiLEiCIsImNjaXJjOyI6IsSJIiwiQ2NvbmludDsiOiLiiLAiLCJjY3VwczsiOiLiqYwiLCJjY3Vwc3NtOyI6IuKpkCIsIkNkb3Q7IjoixIoiLCJjZG90OyI6IsSLIiwiY2VkaWw7IjoiwrgiLGNlZGlsOiLCuCIsIkNlZGlsbGE7IjoiwrgiLCJjZW1wdHl2OyI6IuKmsiIsImNlbnQ7IjoiwqIiLGNlbnQ6IsKiIiwiQ2VudGVyRG90OyI6IsK3IiwiY2VudGVyZG90OyI6IsK3IiwiQ2ZyOyI6IuKErSIsImNmcjsiOiLwnZSgIiwiQ0hjeTsiOiLQpyIsImNoY3k7Ijoi0YciLCJjaGVjazsiOiLinJMiLCJjaGVja21hcms7Ijoi4pyTIiwiQ2hpOyI6Is6nIiwiY2hpOyI6Is+HIiwiY2lyOyI6IuKXiyIsImNpcmM7Ijoiy4YiLCJjaXJjZXE7Ijoi4omXIiwiY2lyY2xlYXJyb3dsZWZ0OyI6IuKGuiIsImNpcmNsZWFycm93cmlnaHQ7Ijoi4oa7IiwiY2lyY2xlZGFzdDsiOiLiipsiLCJjaXJjbGVkY2lyYzsiOiLiipoiLCJjaXJjbGVkZGFzaDsiOiLiip0iLCJDaXJjbGVEb3Q7Ijoi4oqZIiwiY2lyY2xlZFI7Ijoiwq4iLCJjaXJjbGVkUzsiOiLik4giLCJDaXJjbGVNaW51czsiOiLiipYiLCJDaXJjbGVQbHVzOyI6IuKKlSIsIkNpcmNsZVRpbWVzOyI6IuKKlyIsImNpckU7Ijoi4qeDIiwiY2lyZTsiOiLiiZciLCJjaXJmbmludDsiOiLiqJAiLCJjaXJtaWQ7Ijoi4quvIiwiY2lyc2NpcjsiOiLip4IiLCJDbG9ja3dpc2VDb250b3VySW50ZWdyYWw7Ijoi4oiyIiwiQ2xvc2VDdXJseURvdWJsZVF1b3RlOyI6IuKAnSIsIkNsb3NlQ3VybHlRdW90ZTsiOiLigJkiLCJjbHViczsiOiLimaMiLCJjbHVic3VpdDsiOiLimaMiLCJDb2xvbjsiOiLiiLciLCJjb2xvbjsiOiI6IiwiQ29sb25lOyI6IuKptCIsImNvbG9uZTsiOiLiiZQiLCJjb2xvbmVxOyI6IuKJlCIsImNvbW1hOyI6IiwiLCJjb21tYXQ7IjoiQCIsImNvbXA7Ijoi4oiBIiwiY29tcGZuOyI6IuKImCIsImNvbXBsZW1lbnQ7Ijoi4oiBIiwiY29tcGxleGVzOyI6IuKEgiIsImNvbmc7Ijoi4omFIiwiY29uZ2RvdDsiOiLiqa0iLCJDb25ncnVlbnQ7Ijoi4omhIiwiQ29uaW50OyI6IuKIryIsImNvbmludDsiOiLiiK4iLCJDb250b3VySW50ZWdyYWw7Ijoi4oiuIiwiQ29wZjsiOiLihIIiLCJjb3BmOyI6IvCdlZQiLCJjb3Byb2Q7Ijoi4oiQIiwiQ29wcm9kdWN0OyI6IuKIkCIsIkNPUFk7IjoiwqkiLENPUFk6IsKpIiwiY29weTsiOiLCqSIsY29weToiwqkiLCJjb3B5c3I7Ijoi4oSXIiwiQ291bnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbDsiOiLiiLMiLCJjcmFycjsiOiLihrUiLCJDcm9zczsiOiLiqK8iLCJjcm9zczsiOiLinJciLCJDc2NyOyI6IvCdkp4iLCJjc2NyOyI6IvCdkrgiLCJjc3ViOyI6IuKrjyIsImNzdWJlOyI6IuKrkSIsImNzdXA7Ijoi4quQIiwiY3N1cGU7Ijoi4quSIiwiY3Rkb3Q7Ijoi4ouvIiwiY3VkYXJybDsiOiLipLgiLCJjdWRhcnJyOyI6IuKktSIsImN1ZXByOyI6IuKLniIsImN1ZXNjOyI6IuKLnyIsImN1bGFycjsiOiLihrYiLCJjdWxhcnJwOyI6IuKkvSIsIkN1cDsiOiLii5MiLCJjdXA7Ijoi4oiqIiwiY3VwYnJjYXA7Ijoi4qmIIiwiQ3VwQ2FwOyI6IuKJjSIsImN1cGNhcDsiOiLiqYYiLCJjdXBjdXA7Ijoi4qmKIiwiY3VwZG90OyI6IuKKjSIsImN1cG9yOyI6IuKphSIsImN1cHM7Ijoi4oiq77iAIiwiY3VyYXJyOyI6IuKGtyIsImN1cmFycm07Ijoi4qS8IiwiY3VybHllcXByZWM7Ijoi4oueIiwiY3VybHllcXN1Y2M7Ijoi4oufIiwiY3VybHl2ZWU7Ijoi4ouOIiwiY3VybHl3ZWRnZTsiOiLii48iLCJjdXJyZW47IjoiwqQiLGN1cnJlbjoiwqQiLCJjdXJ2ZWFycm93bGVmdDsiOiLihrYiLCJjdXJ2ZWFycm93cmlnaHQ7Ijoi4oa3IiwiY3V2ZWU7Ijoi4ouOIiwiY3V3ZWQ7Ijoi4ouPIiwiY3djb25pbnQ7Ijoi4oiyIiwiY3dpbnQ7Ijoi4oixIiwiY3lsY3R5OyI6IuKMrSIsIkRhZ2dlcjsiOiLigKEiLCJkYWdnZXI7Ijoi4oCgIiwiZGFsZXRoOyI6IuKEuCIsIkRhcnI7Ijoi4oahIiwiZEFycjsiOiLih5MiLCJkYXJyOyI6IuKGkyIsImRhc2g7Ijoi4oCQIiwiRGFzaHY7Ijoi4qukIiwiZGFzaHY7Ijoi4oqjIiwiZGJrYXJvdzsiOiLipI8iLCJkYmxhYzsiOiLLnSIsIkRjYXJvbjsiOiLEjiIsImRjYXJvbjsiOiLEjyIsIkRjeTsiOiLQlCIsImRjeTsiOiLQtCIsIkREOyI6IuKFhSIsImRkOyI6IuKFhiIsImRkYWdnZXI7Ijoi4oChIiwiZGRhcnI7Ijoi4oeKIiwiRERvdHJhaGQ7Ijoi4qSRIiwiZGRvdHNlcTsiOiLiqbciLCJkZWc7IjoiwrAiLGRlZzoiwrAiLCJEZWw7Ijoi4oiHIiwiRGVsdGE7IjoizpQiLCJkZWx0YTsiOiLOtCIsImRlbXB0eXY7Ijoi4qaxIiwiZGZpc2h0OyI6IuKlvyIsIkRmcjsiOiLwnZSHIiwiZGZyOyI6IvCdlKEiLCJkSGFyOyI6IuKlpSIsImRoYXJsOyI6IuKHgyIsImRoYXJyOyI6IuKHgiIsIkRpYWNyaXRpY2FsQWN1dGU7IjoiwrQiLCJEaWFjcml0aWNhbERvdDsiOiLLmSIsIkRpYWNyaXRpY2FsRG91YmxlQWN1dGU7Ijoiy50iLCJEaWFjcml0aWNhbEdyYXZlOyI6ImAiLCJEaWFjcml0aWNhbFRpbGRlOyI6IsucIiwiZGlhbTsiOiLii4QiLCJEaWFtb25kOyI6IuKLhCIsImRpYW1vbmQ7Ijoi4ouEIiwiZGlhbW9uZHN1aXQ7Ijoi4pmmIiwiZGlhbXM7Ijoi4pmmIiwiZGllOyI6IsKoIiwiRGlmZmVyZW50aWFsRDsiOiLihYYiLCJkaWdhbW1hOyI6Is+dIiwiZGlzaW47Ijoi4ouyIiwiZGl2OyI6IsO3IiwiZGl2aWRlOyI6IsO3IixkaXZpZGU6IsO3IiwiZGl2aWRlb250aW1lczsiOiLii4ciLCJkaXZvbng7Ijoi4ouHIiwiREpjeTsiOiLQgiIsImRqY3k7Ijoi0ZIiLCJkbGNvcm47Ijoi4oyeIiwiZGxjcm9wOyI6IuKMjSIsImRvbGxhcjsiOiIkIiwiRG9wZjsiOiLwnZS7IiwiZG9wZjsiOiLwnZWVIiwiRG90OyI6IsKoIiwiZG90OyI6IsuZIiwiRG90RG90OyI6IuKDnCIsImRvdGVxOyI6IuKJkCIsImRvdGVxZG90OyI6IuKJkSIsIkRvdEVxdWFsOyI6IuKJkCIsImRvdG1pbnVzOyI6IuKIuCIsImRvdHBsdXM7Ijoi4oiUIiwiZG90c3F1YXJlOyI6IuKKoSIsImRvdWJsZWJhcndlZGdlOyI6IuKMhiIsIkRvdWJsZUNvbnRvdXJJbnRlZ3JhbDsiOiLiiK8iLCJEb3VibGVEb3Q7IjoiwqgiLCJEb3VibGVEb3duQXJyb3c7Ijoi4oeTIiwiRG91YmxlTGVmdEFycm93OyI6IuKHkCIsIkRvdWJsZUxlZnRSaWdodEFycm93OyI6IuKHlCIsIkRvdWJsZUxlZnRUZWU7Ijoi4qukIiwiRG91YmxlTG9uZ0xlZnRBcnJvdzsiOiLin7giLCJEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3c7Ijoi4p+6IiwiRG91YmxlTG9uZ1JpZ2h0QXJyb3c7Ijoi4p+5IiwiRG91YmxlUmlnaHRBcnJvdzsiOiLih5IiLCJEb3VibGVSaWdodFRlZTsiOiLiiqgiLCJEb3VibGVVcEFycm93OyI6IuKHkSIsIkRvdWJsZVVwRG93bkFycm93OyI6IuKHlSIsIkRvdWJsZVZlcnRpY2FsQmFyOyI6IuKIpSIsIkRvd25BcnJvdzsiOiLihpMiLCJEb3duYXJyb3c7Ijoi4oeTIiwiZG93bmFycm93OyI6IuKGkyIsIkRvd25BcnJvd0JhcjsiOiLipJMiLCJEb3duQXJyb3dVcEFycm93OyI6IuKHtSIsIkRvd25CcmV2ZTsiOiLMkSIsImRvd25kb3duYXJyb3dzOyI6IuKHiiIsImRvd25oYXJwb29ubGVmdDsiOiLih4MiLCJkb3duaGFycG9vbnJpZ2h0OyI6IuKHgiIsIkRvd25MZWZ0UmlnaHRWZWN0b3I7Ijoi4qWQIiwiRG93bkxlZnRUZWVWZWN0b3I7Ijoi4qWeIiwiRG93bkxlZnRWZWN0b3I7Ijoi4oa9IiwiRG93bkxlZnRWZWN0b3JCYXI7Ijoi4qWWIiwiRG93blJpZ2h0VGVlVmVjdG9yOyI6IuKlnyIsIkRvd25SaWdodFZlY3RvcjsiOiLih4EiLCJEb3duUmlnaHRWZWN0b3JCYXI7Ijoi4qWXIiwiRG93blRlZTsiOiLiiqQiLCJEb3duVGVlQXJyb3c7Ijoi4oanIiwiZHJia2Fyb3c7Ijoi4qSQIiwiZHJjb3JuOyI6IuKMnyIsImRyY3JvcDsiOiLijIwiLCJEc2NyOyI6IvCdkp8iLCJkc2NyOyI6IvCdkrkiLCJEU2N5OyI6ItCFIiwiZHNjeTsiOiLRlSIsImRzb2w7Ijoi4qe2IiwiRHN0cm9rOyI6IsSQIiwiZHN0cm9rOyI6IsSRIiwiZHRkb3Q7Ijoi4ouxIiwiZHRyaTsiOiLilr8iLCJkdHJpZjsiOiLilr4iLCJkdWFycjsiOiLih7UiLCJkdWhhcjsiOiLipa8iLCJkd2FuZ2xlOyI6IuKmpiIsIkRaY3k7Ijoi0I8iLCJkemN5OyI6ItGfIiwiZHppZ3JhcnI7Ijoi4p+/IiwiRWFjdXRlOyI6IsOJIixFYWN1dGU6IsOJIiwiZWFjdXRlOyI6IsOpIixlYWN1dGU6IsOpIiwiZWFzdGVyOyI6IuKpriIsIkVjYXJvbjsiOiLEmiIsImVjYXJvbjsiOiLEmyIsImVjaXI7Ijoi4omWIiwiRWNpcmM7Ijoiw4oiLEVjaXJjOiLDiiIsImVjaXJjOyI6IsOqIixlY2lyYzoiw6oiLCJlY29sb247Ijoi4omVIiwiRWN5OyI6ItCtIiwiZWN5OyI6ItGNIiwiZUREb3Q7Ijoi4qm3IiwiRWRvdDsiOiLEliIsImVEb3Q7Ijoi4omRIiwiZWRvdDsiOiLElyIsImVlOyI6IuKFhyIsImVmRG90OyI6IuKJkiIsIkVmcjsiOiLwnZSIIiwiZWZyOyI6IvCdlKIiLCJlZzsiOiLiqpoiLCJFZ3JhdmU7Ijoiw4giLEVncmF2ZToiw4giLCJlZ3JhdmU7Ijoiw6giLGVncmF2ZToiw6giLCJlZ3M7Ijoi4qqWIiwiZWdzZG90OyI6IuKqmCIsImVsOyI6IuKqmSIsIkVsZW1lbnQ7Ijoi4oiIIiwiZWxpbnRlcnM7Ijoi4o+nIiwiZWxsOyI6IuKEkyIsImVsczsiOiLiqpUiLCJlbHNkb3Q7Ijoi4qqXIiwiRW1hY3I7IjoixJIiLCJlbWFjcjsiOiLEkyIsImVtcHR5OyI6IuKIhSIsImVtcHR5c2V0OyI6IuKIhSIsIkVtcHR5U21hbGxTcXVhcmU7Ijoi4pe7IiwiZW1wdHl2OyI6IuKIhSIsIkVtcHR5VmVyeVNtYWxsU3F1YXJlOyI6IuKWqyIsImVtc3A7Ijoi4oCDIiwiZW1zcDEzOyI6IuKAhCIsImVtc3AxNDsiOiLigIUiLCJFTkc7IjoixYoiLCJlbmc7IjoixYsiLCJlbnNwOyI6IuKAgiIsIkVvZ29uOyI6IsSYIiwiZW9nb247IjoixJkiLCJFb3BmOyI6IvCdlLwiLCJlb3BmOyI6IvCdlZYiLCJlcGFyOyI6IuKLlSIsImVwYXJzbDsiOiLip6MiLCJlcGx1czsiOiLiqbEiLCJlcHNpOyI6Is61IiwiRXBzaWxvbjsiOiLOlSIsImVwc2lsb247IjoizrUiLCJlcHNpdjsiOiLPtSIsImVxY2lyYzsiOiLiiZYiLCJlcWNvbG9uOyI6IuKJlSIsImVxc2ltOyI6IuKJgiIsImVxc2xhbnRndHI7Ijoi4qqWIiwiZXFzbGFudGxlc3M7Ijoi4qqVIiwiRXF1YWw7Ijoi4qm1IiwiZXF1YWxzOyI6Ij0iLCJFcXVhbFRpbGRlOyI6IuKJgiIsImVxdWVzdDsiOiLiiZ8iLCJFcXVpbGlicml1bTsiOiLih4wiLCJlcXVpdjsiOiLiiaEiLCJlcXVpdkREOyI6IuKpuCIsImVxdnBhcnNsOyI6IuKnpSIsImVyYXJyOyI6IuKlsSIsImVyRG90OyI6IuKJkyIsIkVzY3I7Ijoi4oSwIiwiZXNjcjsiOiLihK8iLCJlc2RvdDsiOiLiiZAiLCJFc2ltOyI6IuKpsyIsImVzaW07Ijoi4omCIiwiRXRhOyI6Is6XIiwiZXRhOyI6Is63IiwiRVRIOyI6IsOQIixFVEg6IsOQIiwiZXRoOyI6IsOwIixldGg6IsOwIiwiRXVtbDsiOiLDiyIsRXVtbDoiw4siLCJldW1sOyI6IsOrIixldW1sOiLDqyIsImV1cm87Ijoi4oKsIiwiZXhjbDsiOiIhIiwiZXhpc3Q7Ijoi4oiDIiwiRXhpc3RzOyI6IuKIgyIsImV4cGVjdGF0aW9uOyI6IuKEsCIsIkV4cG9uZW50aWFsRTsiOiLihYciLCJleHBvbmVudGlhbGU7Ijoi4oWHIiwiZmFsbGluZ2RvdHNlcTsiOiLiiZIiLCJGY3k7Ijoi0KQiLCJmY3k7Ijoi0YQiLCJmZW1hbGU7Ijoi4pmAIiwiZmZpbGlnOyI6Iu+sgyIsImZmbGlnOyI6Iu+sgCIsImZmbGxpZzsiOiLvrIQiLCJGZnI7Ijoi8J2UiSIsImZmcjsiOiLwnZSjIiwiZmlsaWc7Ijoi76yBIiwiRmlsbGVkU21hbGxTcXVhcmU7Ijoi4pe8IiwiRmlsbGVkVmVyeVNtYWxsU3F1YXJlOyI6IuKWqiIsImZqbGlnOyI6ImZqIiwiZmxhdDsiOiLima0iLCJmbGxpZzsiOiLvrIIiLCJmbHRuczsiOiLilrEiLCJmbm9mOyI6IsaSIiwiRm9wZjsiOiLwnZS9IiwiZm9wZjsiOiLwnZWXIiwiRm9yQWxsOyI6IuKIgCIsImZvcmFsbDsiOiLiiIAiLCJmb3JrOyI6IuKLlCIsImZvcmt2OyI6IuKrmSIsIkZvdXJpZXJ0cmY7Ijoi4oSxIiwiZnBhcnRpbnQ7Ijoi4qiNIiwiZnJhYzEyOyI6IsK9IixmcmFjMTI6IsK9IiwiZnJhYzEzOyI6IuKFkyIsImZyYWMxNDsiOiLCvCIsZnJhYzE0OiLCvCIsImZyYWMxNTsiOiLihZUiLCJmcmFjMTY7Ijoi4oWZIiwiZnJhYzE4OyI6IuKFmyIsImZyYWMyMzsiOiLihZQiLCJmcmFjMjU7Ijoi4oWWIiwiZnJhYzM0OyI6IsK+IixmcmFjMzQ6IsK+IiwiZnJhYzM1OyI6IuKFlyIsImZyYWMzODsiOiLihZwiLCJmcmFjNDU7Ijoi4oWYIiwiZnJhYzU2OyI6IuKFmiIsImZyYWM1ODsiOiLihZ0iLCJmcmFjNzg7Ijoi4oWeIiwiZnJhc2w7Ijoi4oGEIiwiZnJvd247Ijoi4oyiIiwiRnNjcjsiOiLihLEiLCJmc2NyOyI6IvCdkrsiLCJnYWN1dGU7Ijoix7UiLCJHYW1tYTsiOiLOkyIsImdhbW1hOyI6Is6zIiwiR2FtbWFkOyI6Is+cIiwiZ2FtbWFkOyI6Is+dIiwiZ2FwOyI6IuKqhiIsIkdicmV2ZTsiOiLEniIsImdicmV2ZTsiOiLEnyIsIkdjZWRpbDsiOiLEoiIsIkdjaXJjOyI6IsScIiwiZ2NpcmM7IjoixJ0iLCJHY3k7Ijoi0JMiLCJnY3k7Ijoi0LMiLCJHZG90OyI6IsSgIiwiZ2RvdDsiOiLEoSIsImdFOyI6IuKJpyIsImdlOyI6IuKJpSIsImdFbDsiOiLiqowiLCJnZWw7Ijoi4oubIiwiZ2VxOyI6IuKJpSIsImdlcXE7Ijoi4omnIiwiZ2Vxc2xhbnQ7Ijoi4qm+IiwiZ2VzOyI6IuKpviIsImdlc2NjOyI6IuKqqSIsImdlc2RvdDsiOiLiqoAiLCJnZXNkb3RvOyI6IuKqgiIsImdlc2RvdG9sOyI6IuKqhCIsImdlc2w7Ijoi4oub77iAIiwiZ2VzbGVzOyI6IuKqlCIsIkdmcjsiOiLwnZSKIiwiZ2ZyOyI6IvCdlKQiLCJHZzsiOiLii5kiLCJnZzsiOiLiiasiLCJnZ2c7Ijoi4ouZIiwiZ2ltZWw7Ijoi4oS3IiwiR0pjeTsiOiLQgyIsImdqY3k7Ijoi0ZMiLCJnbDsiOiLiibciLCJnbGE7Ijoi4qqlIiwiZ2xFOyI6IuKqkiIsImdsajsiOiLiqqQiLCJnbmFwOyI6IuKqiiIsImduYXBwcm94OyI6IuKqiiIsImduRTsiOiLiiakiLCJnbmU7Ijoi4qqIIiwiZ25lcTsiOiLiqogiLCJnbmVxcTsiOiLiiakiLCJnbnNpbTsiOiLii6ciLCJHb3BmOyI6IvCdlL4iLCJnb3BmOyI6IvCdlZgiLCJncmF2ZTsiOiJgIiwiR3JlYXRlckVxdWFsOyI6IuKJpSIsIkdyZWF0ZXJFcXVhbExlc3M7Ijoi4oubIiwiR3JlYXRlckZ1bGxFcXVhbDsiOiLiiaciLCJHcmVhdGVyR3JlYXRlcjsiOiLiqqIiLCJHcmVhdGVyTGVzczsiOiLiibciLCJHcmVhdGVyU2xhbnRFcXVhbDsiOiLiqb4iLCJHcmVhdGVyVGlsZGU7Ijoi4omzIiwiR3NjcjsiOiLwnZKiIiwiZ3NjcjsiOiLihIoiLCJnc2ltOyI6IuKJsyIsImdzaW1lOyI6IuKqjiIsImdzaW1sOyI6IuKqkCIsIkdUOyI6Ij4iLEdUOiI+IiwiR3Q7Ijoi4omrIiwiZ3Q7IjoiPiIsZ3Q6Ij4iLCJndGNjOyI6IuKqpyIsImd0Y2lyOyI6IuKpuiIsImd0ZG90OyI6IuKLlyIsImd0bFBhcjsiOiLippUiLCJndHF1ZXN0OyI6IuKpvCIsImd0cmFwcHJveDsiOiLiqoYiLCJndHJhcnI7Ijoi4qW4IiwiZ3RyZG90OyI6IuKLlyIsImd0cmVxbGVzczsiOiLii5siLCJndHJlcXFsZXNzOyI6IuKqjCIsImd0cmxlc3M7Ijoi4om3IiwiZ3Ryc2ltOyI6IuKJsyIsImd2ZXJ0bmVxcTsiOiLiianvuIAiLCJndm5FOyI6IuKJqe+4gCIsIkhhY2VrOyI6IsuHIiwiaGFpcnNwOyI6IuKAiiIsImhhbGY7Ijoiwr0iLCJoYW1pbHQ7Ijoi4oSLIiwiSEFSRGN5OyI6ItCqIiwiaGFyZGN5OyI6ItGKIiwiaEFycjsiOiLih5QiLCJoYXJyOyI6IuKGlCIsImhhcnJjaXI7Ijoi4qWIIiwiaGFycnc7Ijoi4oatIiwiSGF0OyI6Il4iLCJoYmFyOyI6IuKEjyIsIkhjaXJjOyI6IsSkIiwiaGNpcmM7IjoixKUiLCJoZWFydHM7Ijoi4pmlIiwiaGVhcnRzdWl0OyI6IuKZpSIsImhlbGxpcDsiOiLigKYiLCJoZXJjb247Ijoi4oq5IiwiSGZyOyI6IuKEjCIsImhmcjsiOiLwnZSlIiwiSGlsYmVydFNwYWNlOyI6IuKEiyIsImhrc2Vhcm93OyI6IuKkpSIsImhrc3dhcm93OyI6IuKkpiIsImhvYXJyOyI6IuKHvyIsImhvbXRodDsiOiLiiLsiLCJob29rbGVmdGFycm93OyI6IuKGqSIsImhvb2tyaWdodGFycm93OyI6IuKGqiIsIkhvcGY7Ijoi4oSNIiwiaG9wZjsiOiLwnZWZIiwiaG9yYmFyOyI6IuKAlSIsIkhvcml6b250YWxMaW5lOyI6IuKUgCIsIkhzY3I7Ijoi4oSLIiwiaHNjcjsiOiLwnZK9IiwiaHNsYXNoOyI6IuKEjyIsIkhzdHJvazsiOiLEpiIsImhzdHJvazsiOiLEpyIsIkh1bXBEb3duSHVtcDsiOiLiiY4iLCJIdW1wRXF1YWw7Ijoi4omPIiwiaHlidWxsOyI6IuKBgyIsImh5cGhlbjsiOiLigJAiLCJJYWN1dGU7Ijoiw40iLElhY3V0ZToiw40iLCJpYWN1dGU7Ijoiw60iLGlhY3V0ZToiw60iLCJpYzsiOiLigaMiLCJJY2lyYzsiOiLDjiIsSWNpcmM6IsOOIiwiaWNpcmM7Ijoiw64iLGljaXJjOiLDriIsIkljeTsiOiLQmCIsImljeTsiOiLQuCIsIklkb3Q7IjoixLAiLCJJRWN5OyI6ItCVIiwiaWVjeTsiOiLQtSIsImlleGNsOyI6IsKhIixpZXhjbDoiwqEiLCJpZmY7Ijoi4oeUIiwiSWZyOyI6IuKEkSIsImlmcjsiOiLwnZSmIiwiSWdyYXZlOyI6IsOMIixJZ3JhdmU6IsOMIiwiaWdyYXZlOyI6IsOsIixpZ3JhdmU6IsOsIiwiaWk7Ijoi4oWIIiwiaWlpaW50OyI6IuKojCIsImlpaW50OyI6IuKIrSIsImlpbmZpbjsiOiLip5wiLCJpaW90YTsiOiLihKkiLCJJSmxpZzsiOiLEsiIsImlqbGlnOyI6IsSzIiwiSW07Ijoi4oSRIiwiSW1hY3I7IjoixKoiLCJpbWFjcjsiOiLEqyIsImltYWdlOyI6IuKEkSIsIkltYWdpbmFyeUk7Ijoi4oWIIiwiaW1hZ2xpbmU7Ijoi4oSQIiwiaW1hZ3BhcnQ7Ijoi4oSRIiwiaW1hdGg7IjoixLEiLCJpbW9mOyI6IuKKtyIsImltcGVkOyI6Isa1IiwiSW1wbGllczsiOiLih5IiLCJpbjsiOiLiiIgiLCJpbmNhcmU7Ijoi4oSFIiwiaW5maW47Ijoi4oieIiwiaW5maW50aWU7Ijoi4qedIiwiaW5vZG90OyI6IsSxIiwiSW50OyI6IuKIrCIsImludDsiOiLiiKsiLCJpbnRjYWw7Ijoi4oq6IiwiaW50ZWdlcnM7Ijoi4oSkIiwiSW50ZWdyYWw7Ijoi4oirIiwiaW50ZXJjYWw7Ijoi4oq6IiwiSW50ZXJzZWN0aW9uOyI6IuKLgiIsImludGxhcmhrOyI6IuKolyIsImludHByb2Q7Ijoi4qi8IiwiSW52aXNpYmxlQ29tbWE7Ijoi4oGjIiwiSW52aXNpYmxlVGltZXM7Ijoi4oGiIiwiSU9jeTsiOiLQgSIsImlvY3k7Ijoi0ZEiLCJJb2dvbjsiOiLEriIsImlvZ29uOyI6IsSvIiwiSW9wZjsiOiLwnZWAIiwiaW9wZjsiOiLwnZWaIiwiSW90YTsiOiLOmSIsImlvdGE7IjoizrkiLCJpcHJvZDsiOiLiqLwiLCJpcXVlc3Q7Ijoiwr8iLGlxdWVzdDoiwr8iLCJJc2NyOyI6IuKEkCIsImlzY3I7Ijoi8J2SviIsImlzaW47Ijoi4oiIIiwiaXNpbmRvdDsiOiLii7UiLCJpc2luRTsiOiLii7kiLCJpc2luczsiOiLii7QiLCJpc2luc3Y7Ijoi4ouzIiwiaXNpbnY7Ijoi4oiIIiwiaXQ7Ijoi4oGiIiwiSXRpbGRlOyI6IsSoIiwiaXRpbGRlOyI6IsSpIiwiSXVrY3k7Ijoi0IYiLCJpdWtjeTsiOiLRliIsIkl1bWw7Ijoiw48iLEl1bWw6IsOPIiwiaXVtbDsiOiLDryIsaXVtbDoiw68iLCJKY2lyYzsiOiLEtCIsImpjaXJjOyI6IsS1IiwiSmN5OyI6ItCZIiwiamN5OyI6ItC5IiwiSmZyOyI6IvCdlI0iLCJqZnI7Ijoi8J2UpyIsImptYXRoOyI6Isi3IiwiSm9wZjsiOiLwnZWBIiwiam9wZjsiOiLwnZWbIiwiSnNjcjsiOiLwnZKlIiwianNjcjsiOiLwnZK/IiwiSnNlcmN5OyI6ItCIIiwianNlcmN5OyI6ItGYIiwiSnVrY3k7Ijoi0IQiLCJqdWtjeTsiOiLRlCIsIkthcHBhOyI6Is6aIiwia2FwcGE7IjoizroiLCJrYXBwYXY7Ijoiz7AiLCJLY2VkaWw7IjoixLYiLCJrY2VkaWw7IjoixLciLCJLY3k7Ijoi0JoiLCJrY3k7Ijoi0LoiLCJLZnI7Ijoi8J2UjiIsImtmcjsiOiLwnZSoIiwia2dyZWVuOyI6IsS4IiwiS0hjeTsiOiLQpSIsImtoY3k7Ijoi0YUiLCJLSmN5OyI6ItCMIiwia2pjeTsiOiLRnCIsIktvcGY7Ijoi8J2VgiIsImtvcGY7Ijoi8J2VnCIsIktzY3I7Ijoi8J2SpiIsImtzY3I7Ijoi8J2TgCIsImxBYXJyOyI6IuKHmiIsIkxhY3V0ZTsiOiLEuSIsImxhY3V0ZTsiOiLEuiIsImxhZW1wdHl2OyI6IuKmtCIsImxhZ3JhbjsiOiLihJIiLCJMYW1iZGE7IjoizpsiLCJsYW1iZGE7IjoizrsiLCJMYW5nOyI6IuKfqiIsImxhbmc7Ijoi4p+oIiwibGFuZ2Q7Ijoi4qaRIiwibGFuZ2xlOyI6IuKfqCIsImxhcDsiOiLiqoUiLCJMYXBsYWNldHJmOyI6IuKEkiIsImxhcXVvOyI6IsKrIixsYXF1bzoiwqsiLCJMYXJyOyI6IuKGniIsImxBcnI7Ijoi4oeQIiwibGFycjsiOiLihpAiLCJsYXJyYjsiOiLih6QiLCJsYXJyYmZzOyI6IuKknyIsImxhcnJmczsiOiLipJ0iLCJsYXJyaGs7Ijoi4oapIiwibGFycmxwOyI6IuKGqyIsImxhcnJwbDsiOiLipLkiLCJsYXJyc2ltOyI6IuKlsyIsImxhcnJ0bDsiOiLihqIiLCJsYXQ7Ijoi4qqrIiwibEF0YWlsOyI6IuKkmyIsImxhdGFpbDsiOiLipJkiLCJsYXRlOyI6IuKqrSIsImxhdGVzOyI6IuKqre+4gCIsImxCYXJyOyI6IuKkjiIsImxiYXJyOyI6IuKkjCIsImxiYnJrOyI6IuKdsiIsImxicmFjZTsiOiJ7IiwibGJyYWNrOyI6IlsiLCJsYnJrZTsiOiLiposiLCJsYnJrc2xkOyI6IuKmjyIsImxicmtzbHU7Ijoi4qaNIiwiTGNhcm9uOyI6IsS9IiwibGNhcm9uOyI6IsS+IiwiTGNlZGlsOyI6IsS7IiwibGNlZGlsOyI6IsS8IiwibGNlaWw7Ijoi4oyIIiwibGN1YjsiOiJ7IiwiTGN5OyI6ItCbIiwibGN5OyI6ItC7IiwibGRjYTsiOiLipLYiLCJsZHF1bzsiOiLigJwiLCJsZHF1b3I7Ijoi4oCeIiwibGRyZGhhcjsiOiLipaciLCJsZHJ1c2hhcjsiOiLipYsiLCJsZHNoOyI6IuKGsiIsImxFOyI6IuKJpiIsImxlOyI6IuKJpCIsIkxlZnRBbmdsZUJyYWNrZXQ7Ijoi4p+oIiwiTGVmdEFycm93OyI6IuKGkCIsIkxlZnRhcnJvdzsiOiLih5AiLCJsZWZ0YXJyb3c7Ijoi4oaQIiwiTGVmdEFycm93QmFyOyI6IuKHpCIsIkxlZnRBcnJvd1JpZ2h0QXJyb3c7Ijoi4oeGIiwibGVmdGFycm93dGFpbDsiOiLihqIiLCJMZWZ0Q2VpbGluZzsiOiLijIgiLCJMZWZ0RG91YmxlQnJhY2tldDsiOiLin6YiLCJMZWZ0RG93blRlZVZlY3RvcjsiOiLipaEiLCJMZWZ0RG93blZlY3RvcjsiOiLih4MiLCJMZWZ0RG93blZlY3RvckJhcjsiOiLipZkiLCJMZWZ0Rmxvb3I7Ijoi4oyKIiwibGVmdGhhcnBvb25kb3duOyI6IuKGvSIsImxlZnRoYXJwb29udXA7Ijoi4oa8IiwibGVmdGxlZnRhcnJvd3M7Ijoi4oeHIiwiTGVmdFJpZ2h0QXJyb3c7Ijoi4oaUIiwiTGVmdHJpZ2h0YXJyb3c7Ijoi4oeUIiwibGVmdHJpZ2h0YXJyb3c7Ijoi4oaUIiwibGVmdHJpZ2h0YXJyb3dzOyI6IuKHhiIsImxlZnRyaWdodGhhcnBvb25zOyI6IuKHiyIsImxlZnRyaWdodHNxdWlnYXJyb3c7Ijoi4oatIiwiTGVmdFJpZ2h0VmVjdG9yOyI6IuKljiIsIkxlZnRUZWU7Ijoi4oqjIiwiTGVmdFRlZUFycm93OyI6IuKGpCIsIkxlZnRUZWVWZWN0b3I7Ijoi4qWaIiwibGVmdHRocmVldGltZXM7Ijoi4ouLIiwiTGVmdFRyaWFuZ2xlOyI6IuKKsiIsIkxlZnRUcmlhbmdsZUJhcjsiOiLip48iLCJMZWZ0VHJpYW5nbGVFcXVhbDsiOiLiirQiLCJMZWZ0VXBEb3duVmVjdG9yOyI6IuKlkSIsIkxlZnRVcFRlZVZlY3RvcjsiOiLipaAiLCJMZWZ0VXBWZWN0b3I7Ijoi4oa/IiwiTGVmdFVwVmVjdG9yQmFyOyI6IuKlmCIsIkxlZnRWZWN0b3I7Ijoi4oa8IiwiTGVmdFZlY3RvckJhcjsiOiLipZIiLCJsRWc7Ijoi4qqLIiwibGVnOyI6IuKLmiIsImxlcTsiOiLiiaQiLCJsZXFxOyI6IuKJpiIsImxlcXNsYW50OyI6IuKpvSIsImxlczsiOiLiqb0iLCJsZXNjYzsiOiLiqqgiLCJsZXNkb3Q7Ijoi4qm/IiwibGVzZG90bzsiOiLiqoEiLCJsZXNkb3RvcjsiOiLiqoMiLCJsZXNnOyI6IuKLmu+4gCIsImxlc2dlczsiOiLiqpMiLCJsZXNzYXBwcm94OyI6IuKqhSIsImxlc3Nkb3Q7Ijoi4ouWIiwibGVzc2VxZ3RyOyI6IuKLmiIsImxlc3NlcXFndHI7Ijoi4qqLIiwiTGVzc0VxdWFsR3JlYXRlcjsiOiLii5oiLCJMZXNzRnVsbEVxdWFsOyI6IuKJpiIsIkxlc3NHcmVhdGVyOyI6IuKJtiIsImxlc3NndHI7Ijoi4om2IiwiTGVzc0xlc3M7Ijoi4qqhIiwibGVzc3NpbTsiOiLiibIiLCJMZXNzU2xhbnRFcXVhbDsiOiLiqb0iLCJMZXNzVGlsZGU7Ijoi4omyIiwibGZpc2h0OyI6IuKlvCIsImxmbG9vcjsiOiLijIoiLCJMZnI7Ijoi8J2UjyIsImxmcjsiOiLwnZSpIiwibGc7Ijoi4om2IiwibGdFOyI6IuKqkSIsImxIYXI7Ijoi4qWiIiwibGhhcmQ7Ijoi4oa9IiwibGhhcnU7Ijoi4oa8IiwibGhhcnVsOyI6IuKlqiIsImxoYmxrOyI6IuKWhCIsIkxKY3k7Ijoi0IkiLCJsamN5OyI6ItGZIiwiTGw7Ijoi4ouYIiwibGw7Ijoi4omqIiwibGxhcnI7Ijoi4oeHIiwibGxjb3JuZXI7Ijoi4oyeIiwiTGxlZnRhcnJvdzsiOiLih5oiLCJsbGhhcmQ7Ijoi4qWrIiwibGx0cmk7Ijoi4pe6IiwiTG1pZG90OyI6IsS/IiwibG1pZG90OyI6IsWAIiwibG1vdXN0OyI6IuKOsCIsImxtb3VzdGFjaGU7Ijoi4o6wIiwibG5hcDsiOiLiqokiLCJsbmFwcHJveDsiOiLiqokiLCJsbkU7Ijoi4omoIiwibG5lOyI6IuKqhyIsImxuZXE7Ijoi4qqHIiwibG5lcXE7Ijoi4omoIiwibG5zaW07Ijoi4oumIiwibG9hbmc7Ijoi4p+sIiwibG9hcnI7Ijoi4oe9IiwibG9icms7Ijoi4p+mIiwiTG9uZ0xlZnRBcnJvdzsiOiLin7UiLCJMb25nbGVmdGFycm93OyI6IuKfuCIsImxvbmdsZWZ0YXJyb3c7Ijoi4p+1IiwiTG9uZ0xlZnRSaWdodEFycm93OyI6IuKftyIsIkxvbmdsZWZ0cmlnaHRhcnJvdzsiOiLin7oiLCJsb25nbGVmdHJpZ2h0YXJyb3c7Ijoi4p+3IiwibG9uZ21hcHN0bzsiOiLin7wiLCJMb25nUmlnaHRBcnJvdzsiOiLin7YiLCJMb25ncmlnaHRhcnJvdzsiOiLin7kiLCJsb25ncmlnaHRhcnJvdzsiOiLin7YiLCJsb29wYXJyb3dsZWZ0OyI6IuKGqyIsImxvb3BhcnJvd3JpZ2h0OyI6IuKGrCIsImxvcGFyOyI6IuKmhSIsIkxvcGY7Ijoi8J2VgyIsImxvcGY7Ijoi8J2VnSIsImxvcGx1czsiOiLiqK0iLCJsb3RpbWVzOyI6IuKotCIsImxvd2FzdDsiOiLiiJciLCJsb3diYXI7IjoiXyIsIkxvd2VyTGVmdEFycm93OyI6IuKGmSIsIkxvd2VyUmlnaHRBcnJvdzsiOiLihpgiLCJsb3o7Ijoi4peKIiwibG96ZW5nZTsiOiLil4oiLCJsb3pmOyI6IuKnqyIsImxwYXI7IjoiKCIsImxwYXJsdDsiOiLippMiLCJscmFycjsiOiLih4YiLCJscmNvcm5lcjsiOiLijJ8iLCJscmhhcjsiOiLih4siLCJscmhhcmQ7Ijoi4qWtIiwibHJtOyI6IuKAjiIsImxydHJpOyI6IuKKvyIsImxzYXF1bzsiOiLigLkiLCJMc2NyOyI6IuKEkiIsImxzY3I7Ijoi8J2TgSIsIkxzaDsiOiLihrAiLCJsc2g7Ijoi4oawIiwibHNpbTsiOiLiibIiLCJsc2ltZTsiOiLiqo0iLCJsc2ltZzsiOiLiqo8iLCJsc3FiOyI6IlsiLCJsc3F1bzsiOiLigJgiLCJsc3F1b3I7Ijoi4oCaIiwiTHN0cm9rOyI6IsWBIiwibHN0cm9rOyI6IsWCIiwiTFQ7IjoiPCIsTFQ6IjwiLCJMdDsiOiLiiaoiLCJsdDsiOiI8IixsdDoiPCIsImx0Y2M7Ijoi4qqmIiwibHRjaXI7Ijoi4qm5IiwibHRkb3Q7Ijoi4ouWIiwibHRocmVlOyI6IuKLiyIsImx0aW1lczsiOiLii4kiLCJsdGxhcnI7Ijoi4qW2IiwibHRxdWVzdDsiOiLiqbsiLCJsdHJpOyI6IuKXgyIsImx0cmllOyI6IuKKtCIsImx0cmlmOyI6IuKXgiIsImx0clBhcjsiOiLippYiLCJsdXJkc2hhcjsiOiLipYoiLCJsdXJ1aGFyOyI6IuKlpiIsImx2ZXJ0bmVxcTsiOiLiiajvuIAiLCJsdm5FOyI6IuKJqO+4gCIsIm1hY3I7Ijoiwq8iLG1hY3I6IsKvIiwibWFsZTsiOiLimYIiLCJtYWx0OyI6IuKcoCIsIm1hbHRlc2U7Ijoi4pygIiwiTWFwOyI6IuKkhSIsIm1hcDsiOiLihqYiLCJtYXBzdG87Ijoi4oamIiwibWFwc3RvZG93bjsiOiLihqciLCJtYXBzdG9sZWZ0OyI6IuKGpCIsIm1hcHN0b3VwOyI6IuKGpSIsIm1hcmtlcjsiOiLilq4iLCJtY29tbWE7Ijoi4qipIiwiTWN5OyI6ItCcIiwibWN5OyI6ItC8IiwibWRhc2g7Ijoi4oCUIiwibUREb3Q7Ijoi4oi6IiwibWVhc3VyZWRhbmdsZTsiOiLiiKEiLCJNZWRpdW1TcGFjZTsiOiLigZ8iLCJNZWxsaW50cmY7Ijoi4oSzIiwiTWZyOyI6IvCdlJAiLCJtZnI7Ijoi8J2UqiIsIm1obzsiOiLihKciLCJtaWNybzsiOiLCtSIsbWljcm86IsK1IiwibWlkOyI6IuKIoyIsIm1pZGFzdDsiOiIqIiwibWlkY2lyOyI6IuKrsCIsIm1pZGRvdDsiOiLCtyIsbWlkZG90OiLCtyIsIm1pbnVzOyI6IuKIkiIsIm1pbnVzYjsiOiLiip8iLCJtaW51c2Q7Ijoi4oi4IiwibWludXNkdTsiOiLiqKoiLCJNaW51c1BsdXM7Ijoi4oiTIiwibWxjcDsiOiLiq5siLCJtbGRyOyI6IuKApiIsIm1ucGx1czsiOiLiiJMiLCJtb2RlbHM7Ijoi4oqnIiwiTW9wZjsiOiLwnZWEIiwibW9wZjsiOiLwnZWeIiwibXA7Ijoi4oiTIiwiTXNjcjsiOiLihLMiLCJtc2NyOyI6IvCdk4IiLCJtc3Rwb3M7Ijoi4oi+IiwiTXU7IjoizpwiLCJtdTsiOiLOvCIsIm11bHRpbWFwOyI6IuKKuCIsIm11bWFwOyI6IuKKuCIsIm5hYmxhOyI6IuKIhyIsIk5hY3V0ZTsiOiLFgyIsIm5hY3V0ZTsiOiLFhCIsIm5hbmc7Ijoi4oig4oOSIiwibmFwOyI6IuKJiSIsIm5hcEU7Ijoi4qmwzLgiLCJuYXBpZDsiOiLiiYvMuCIsIm5hcG9zOyI6IsWJIiwibmFwcHJveDsiOiLiiYkiLCJuYXR1cjsiOiLima4iLCJuYXR1cmFsOyI6IuKZriIsIm5hdHVyYWxzOyI6IuKElSIsIm5ic3A7IjoiwqAiLG5ic3A6IsKgIiwibmJ1bXA7Ijoi4omOzLgiLCJuYnVtcGU7Ijoi4omPzLgiLCJuY2FwOyI6IuKpgyIsIk5jYXJvbjsiOiLFhyIsIm5jYXJvbjsiOiLFiCIsIk5jZWRpbDsiOiLFhSIsIm5jZWRpbDsiOiLFhiIsIm5jb25nOyI6IuKJhyIsIm5jb25nZG90OyI6IuKprcy4IiwibmN1cDsiOiLiqYIiLCJOY3k7Ijoi0J0iLCJuY3k7Ijoi0L0iLCJuZGFzaDsiOiLigJMiLCJuZTsiOiLiiaAiLCJuZWFyaGs7Ijoi4qSkIiwibmVBcnI7Ijoi4oeXIiwibmVhcnI7Ijoi4oaXIiwibmVhcnJvdzsiOiLihpciLCJuZWRvdDsiOiLiiZDMuCIsIk5lZ2F0aXZlTWVkaXVtU3BhY2U7Ijoi4oCLIiwiTmVnYXRpdmVUaGlja1NwYWNlOyI6IuKAiyIsIk5lZ2F0aXZlVGhpblNwYWNlOyI6IuKAiyIsIk5lZ2F0aXZlVmVyeVRoaW5TcGFjZTsiOiLigIsiLCJuZXF1aXY7Ijoi4omiIiwibmVzZWFyOyI6IuKkqCIsIm5lc2ltOyI6IuKJgsy4IiwiTmVzdGVkR3JlYXRlckdyZWF0ZXI7Ijoi4omrIiwiTmVzdGVkTGVzc0xlc3M7Ijoi4omqIiwiTmV3TGluZTsiOiJcbiIsIm5leGlzdDsiOiLiiIQiLCJuZXhpc3RzOyI6IuKIhCIsIk5mcjsiOiLwnZSRIiwibmZyOyI6IvCdlKsiLCJuZ0U7Ijoi4omnzLgiLCJuZ2U7Ijoi4omxIiwibmdlcTsiOiLiibEiLCJuZ2VxcTsiOiLiiafMuCIsIm5nZXFzbGFudDsiOiLiqb7MuCIsIm5nZXM7Ijoi4qm+zLgiLCJuR2c7Ijoi4ouZzLgiLCJuZ3NpbTsiOiLiibUiLCJuR3Q7Ijoi4omr4oOSIiwibmd0OyI6IuKJryIsIm5ndHI7Ijoi4omvIiwibkd0djsiOiLiiavMuCIsIm5oQXJyOyI6IuKHjiIsIm5oYXJyOyI6IuKGriIsIm5ocGFyOyI6IuKrsiIsIm5pOyI6IuKIiyIsIm5pczsiOiLii7wiLCJuaXNkOyI6IuKLuiIsIm5pdjsiOiLiiIsiLCJOSmN5OyI6ItCKIiwibmpjeTsiOiLRmiIsIm5sQXJyOyI6IuKHjSIsIm5sYXJyOyI6IuKGmiIsIm5sZHI7Ijoi4oClIiwibmxFOyI6IuKJpsy4IiwibmxlOyI6IuKJsCIsIm5MZWZ0YXJyb3c7Ijoi4oeNIiwibmxlZnRhcnJvdzsiOiLihpoiLCJuTGVmdHJpZ2h0YXJyb3c7Ijoi4oeOIiwibmxlZnRyaWdodGFycm93OyI6IuKGriIsIm5sZXE7Ijoi4omwIiwibmxlcXE7Ijoi4ommzLgiLCJubGVxc2xhbnQ7Ijoi4qm9zLgiLCJubGVzOyI6IuKpvcy4Iiwibmxlc3M7Ijoi4omuIiwibkxsOyI6IuKLmMy4IiwibmxzaW07Ijoi4om0Iiwibkx0OyI6IuKJquKDkiIsIm5sdDsiOiLiia4iLCJubHRyaTsiOiLii6oiLCJubHRyaWU7Ijoi4ousIiwibkx0djsiOiLiiarMuCIsIm5taWQ7Ijoi4oikIiwiTm9CcmVhazsiOiLigaAiLCJOb25CcmVha2luZ1NwYWNlOyI6IsKgIiwiTm9wZjsiOiLihJUiLCJub3BmOyI6IvCdlZ8iLCJOb3Q7Ijoi4qusIiwibm90OyI6IsKsIixub3Q6IsKsIiwiTm90Q29uZ3J1ZW50OyI6IuKJoiIsIk5vdEN1cENhcDsiOiLiia0iLCJOb3REb3VibGVWZXJ0aWNhbEJhcjsiOiLiiKYiLCJOb3RFbGVtZW50OyI6IuKIiSIsIk5vdEVxdWFsOyI6IuKJoCIsIk5vdEVxdWFsVGlsZGU7Ijoi4omCzLgiLCJOb3RFeGlzdHM7Ijoi4oiEIiwiTm90R3JlYXRlcjsiOiLiia8iLCJOb3RHcmVhdGVyRXF1YWw7Ijoi4omxIiwiTm90R3JlYXRlckZ1bGxFcXVhbDsiOiLiiafMuCIsIk5vdEdyZWF0ZXJHcmVhdGVyOyI6IuKJq8y4IiwiTm90R3JlYXRlckxlc3M7Ijoi4om5IiwiTm90R3JlYXRlclNsYW50RXF1YWw7Ijoi4qm+zLgiLCJOb3RHcmVhdGVyVGlsZGU7Ijoi4om1IiwiTm90SHVtcERvd25IdW1wOyI6IuKJjsy4IiwiTm90SHVtcEVxdWFsOyI6IuKJj8y4Iiwibm90aW47Ijoi4oiJIiwibm90aW5kb3Q7Ijoi4ou1zLgiLCJub3RpbkU7Ijoi4ou5zLgiLCJub3RpbnZhOyI6IuKIiSIsIm5vdGludmI7Ijoi4ou3Iiwibm90aW52YzsiOiLii7YiLCJOb3RMZWZ0VHJpYW5nbGU7Ijoi4ouqIiwiTm90TGVmdFRyaWFuZ2xlQmFyOyI6IuKnj8y4IiwiTm90TGVmdFRyaWFuZ2xlRXF1YWw7Ijoi4ousIiwiTm90TGVzczsiOiLiia4iLCJOb3RMZXNzRXF1YWw7Ijoi4omwIiwiTm90TGVzc0dyZWF0ZXI7Ijoi4om4IiwiTm90TGVzc0xlc3M7Ijoi4omqzLgiLCJOb3RMZXNzU2xhbnRFcXVhbDsiOiLiqb3MuCIsIk5vdExlc3NUaWxkZTsiOiLiibQiLCJOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlcjsiOiLiqqLMuCIsIk5vdE5lc3RlZExlc3NMZXNzOyI6IuKqocy4Iiwibm90bmk7Ijoi4oiMIiwibm90bml2YTsiOiLiiIwiLCJub3RuaXZiOyI6IuKLviIsIm5vdG5pdmM7Ijoi4ou9IiwiTm90UHJlY2VkZXM7Ijoi4oqAIiwiTm90UHJlY2VkZXNFcXVhbDsiOiLiqq/MuCIsIk5vdFByZWNlZGVzU2xhbnRFcXVhbDsiOiLii6AiLCJOb3RSZXZlcnNlRWxlbWVudDsiOiLiiIwiLCJOb3RSaWdodFRyaWFuZ2xlOyI6IuKLqyIsIk5vdFJpZ2h0VHJpYW5nbGVCYXI7Ijoi4qeQzLgiLCJOb3RSaWdodFRyaWFuZ2xlRXF1YWw7Ijoi4outIiwiTm90U3F1YXJlU3Vic2V0OyI6IuKKj8y4IiwiTm90U3F1YXJlU3Vic2V0RXF1YWw7Ijoi4ouiIiwiTm90U3F1YXJlU3VwZXJzZXQ7Ijoi4oqQzLgiLCJOb3RTcXVhcmVTdXBlcnNldEVxdWFsOyI6IuKLoyIsIk5vdFN1YnNldDsiOiLiioLig5IiLCJOb3RTdWJzZXRFcXVhbDsiOiLiiogiLCJOb3RTdWNjZWVkczsiOiLiioEiLCJOb3RTdWNjZWVkc0VxdWFsOyI6IuKqsMy4IiwiTm90U3VjY2VlZHNTbGFudEVxdWFsOyI6IuKLoSIsIk5vdFN1Y2NlZWRzVGlsZGU7Ijoi4om/zLgiLCJOb3RTdXBlcnNldDsiOiLiioPig5IiLCJOb3RTdXBlcnNldEVxdWFsOyI6IuKKiSIsIk5vdFRpbGRlOyI6IuKJgSIsIk5vdFRpbGRlRXF1YWw7Ijoi4omEIiwiTm90VGlsZGVGdWxsRXF1YWw7Ijoi4omHIiwiTm90VGlsZGVUaWxkZTsiOiLiiYkiLCJOb3RWZXJ0aWNhbEJhcjsiOiLiiKQiLCJucGFyOyI6IuKIpiIsIm5wYXJhbGxlbDsiOiLiiKYiLCJucGFyc2w7Ijoi4qu94oOlIiwibnBhcnQ7Ijoi4oiCzLgiLCJucG9saW50OyI6IuKolCIsIm5wcjsiOiLiioAiLCJucHJjdWU7Ijoi4ougIiwibnByZTsiOiLiqq/MuCIsIm5wcmVjOyI6IuKKgCIsIm5wcmVjZXE7Ijoi4qqvzLgiLCJuckFycjsiOiLih48iLCJucmFycjsiOiLihpsiLCJucmFycmM7Ijoi4qSzzLgiLCJucmFycnc7Ijoi4oadzLgiLCJuUmlnaHRhcnJvdzsiOiLih48iLCJucmlnaHRhcnJvdzsiOiLihpsiLCJucnRyaTsiOiLii6siLCJucnRyaWU7Ijoi4outIiwibnNjOyI6IuKKgSIsIm5zY2N1ZTsiOiLii6EiLCJuc2NlOyI6IuKqsMy4IiwiTnNjcjsiOiLwnZKpIiwibnNjcjsiOiLwnZODIiwibnNob3J0bWlkOyI6IuKIpCIsIm5zaG9ydHBhcmFsbGVsOyI6IuKIpiIsIm5zaW07Ijoi4omBIiwibnNpbWU7Ijoi4omEIiwibnNpbWVxOyI6IuKJhCIsIm5zbWlkOyI6IuKIpCIsIm5zcGFyOyI6IuKIpiIsIm5zcXN1YmU7Ijoi4ouiIiwibnNxc3VwZTsiOiLii6MiLCJuc3ViOyI6IuKKhCIsIm5zdWJFOyI6IuKrhcy4IiwibnN1YmU7Ijoi4oqIIiwibnN1YnNldDsiOiLiioLig5IiLCJuc3Vic2V0ZXE7Ijoi4oqIIiwibnN1YnNldGVxcTsiOiLiq4XMuCIsIm5zdWNjOyI6IuKKgSIsIm5zdWNjZXE7Ijoi4qqwzLgiLCJuc3VwOyI6IuKKhSIsIm5zdXBFOyI6IuKrhsy4IiwibnN1cGU7Ijoi4oqJIiwibnN1cHNldDsiOiLiioPig5IiLCJuc3Vwc2V0ZXE7Ijoi4oqJIiwibnN1cHNldGVxcTsiOiLiq4bMuCIsIm50Z2w7Ijoi4om5IiwiTnRpbGRlOyI6IsORIixOdGlsZGU6IsORIiwibnRpbGRlOyI6IsOxIixudGlsZGU6IsOxIiwibnRsZzsiOiLiibgiLCJudHJpYW5nbGVsZWZ0OyI6IuKLqiIsIm50cmlhbmdsZWxlZnRlcTsiOiLii6wiLCJudHJpYW5nbGVyaWdodDsiOiLii6siLCJudHJpYW5nbGVyaWdodGVxOyI6IuKLrSIsIk51OyI6Is6dIiwibnU7Ijoizr0iLCJudW07IjoiIyIsIm51bWVybzsiOiLihJYiLCJudW1zcDsiOiLigIciLCJudmFwOyI6IuKJjeKDkiIsIm5WRGFzaDsiOiLiiq8iLCJuVmRhc2g7Ijoi4oquIiwibnZEYXNoOyI6IuKKrSIsIm52ZGFzaDsiOiLiiqwiLCJudmdlOyI6IuKJpeKDkiIsIm52Z3Q7IjoiPuKDkiIsIm52SGFycjsiOiLipIQiLCJudmluZmluOyI6IuKnniIsIm52bEFycjsiOiLipIIiLCJudmxlOyI6IuKJpOKDkiIsIm52bHQ7IjoiPOKDkiIsIm52bHRyaWU7Ijoi4oq04oOSIiwibnZyQXJyOyI6IuKkgyIsIm52cnRyaWU7Ijoi4oq14oOSIiwibnZzaW07Ijoi4oi84oOSIiwibndhcmhrOyI6IuKkoyIsIm53QXJyOyI6IuKHliIsIm53YXJyOyI6IuKGliIsIm53YXJyb3c7Ijoi4oaWIiwibnduZWFyOyI6IuKkpyIsIk9hY3V0ZTsiOiLDkyIsT2FjdXRlOiLDkyIsIm9hY3V0ZTsiOiLDsyIsb2FjdXRlOiLDsyIsIm9hc3Q7Ijoi4oqbIiwib2NpcjsiOiLiipoiLCJPY2lyYzsiOiLDlCIsT2NpcmM6IsOUIiwib2NpcmM7Ijoiw7QiLG9jaXJjOiLDtCIsIk9jeTsiOiLQniIsIm9jeTsiOiLQviIsIm9kYXNoOyI6IuKKnSIsIk9kYmxhYzsiOiLFkCIsIm9kYmxhYzsiOiLFkSIsIm9kaXY7Ijoi4qi4Iiwib2RvdDsiOiLiipkiLCJvZHNvbGQ7Ijoi4qa8IiwiT0VsaWc7IjoixZIiLCJvZWxpZzsiOiLFkyIsIm9mY2lyOyI6IuKmvyIsIk9mcjsiOiLwnZSSIiwib2ZyOyI6IvCdlKwiLCJvZ29uOyI6IsubIiwiT2dyYXZlOyI6IsOSIixPZ3JhdmU6IsOSIiwib2dyYXZlOyI6IsOyIixvZ3JhdmU6IsOyIiwib2d0OyI6IuKngSIsIm9oYmFyOyI6IuKmtSIsIm9obTsiOiLOqSIsIm9pbnQ7Ijoi4oiuIiwib2xhcnI7Ijoi4oa6Iiwib2xjaXI7Ijoi4qa+Iiwib2xjcm9zczsiOiLiprsiLCJvbGluZTsiOiLigL4iLCJvbHQ7Ijoi4qeAIiwiT21hY3I7IjoixYwiLCJvbWFjcjsiOiLFjSIsIk9tZWdhOyI6Is6pIiwib21lZ2E7Ijoiz4kiLCJPbWljcm9uOyI6Is6fIiwib21pY3JvbjsiOiLOvyIsIm9taWQ7Ijoi4qa2Iiwib21pbnVzOyI6IuKKliIsIk9vcGY7Ijoi8J2VhiIsIm9vcGY7Ijoi8J2VoCIsIm9wYXI7Ijoi4qa3IiwiT3BlbkN1cmx5RG91YmxlUXVvdGU7Ijoi4oCcIiwiT3BlbkN1cmx5UXVvdGU7Ijoi4oCYIiwib3BlcnA7Ijoi4qa5Iiwib3BsdXM7Ijoi4oqVIiwiT3I7Ijoi4qmUIiwib3I7Ijoi4oioIiwib3JhcnI7Ijoi4oa7Iiwib3JkOyI6IuKpnSIsIm9yZGVyOyI6IuKEtCIsIm9yZGVyb2Y7Ijoi4oS0Iiwib3JkZjsiOiLCqiIsb3JkZjoiwqoiLCJvcmRtOyI6IsK6IixvcmRtOiLCuiIsIm9yaWdvZjsiOiLiirYiLCJvcm9yOyI6IuKpliIsIm9yc2xvcGU7Ijoi4qmXIiwib3J2OyI6IuKpmyIsIm9TOyI6IuKTiCIsIk9zY3I7Ijoi8J2SqiIsIm9zY3I7Ijoi4oS0IiwiT3NsYXNoOyI6IsOYIixPc2xhc2g6IsOYIiwib3NsYXNoOyI6IsO4Iixvc2xhc2g6IsO4Iiwib3NvbDsiOiLiipgiLCJPdGlsZGU7Ijoiw5UiLE90aWxkZToiw5UiLCJvdGlsZGU7Ijoiw7UiLG90aWxkZToiw7UiLCJPdGltZXM7Ijoi4qi3Iiwib3RpbWVzOyI6IuKKlyIsIm90aW1lc2FzOyI6IuKotiIsIk91bWw7Ijoiw5YiLE91bWw6IsOWIiwib3VtbDsiOiLDtiIsb3VtbDoiw7YiLCJvdmJhcjsiOiLijL0iLCJPdmVyQmFyOyI6IuKAviIsIk92ZXJCcmFjZTsiOiLij54iLCJPdmVyQnJhY2tldDsiOiLijrQiLCJPdmVyUGFyZW50aGVzaXM7Ijoi4o+cIiwicGFyOyI6IuKIpSIsInBhcmE7IjoiwrYiLHBhcmE6IsK2IiwicGFyYWxsZWw7Ijoi4oilIiwicGFyc2ltOyI6IuKrsyIsInBhcnNsOyI6IuKrvSIsInBhcnQ7Ijoi4oiCIiwiUGFydGlhbEQ7Ijoi4oiCIiwiUGN5OyI6ItCfIiwicGN5OyI6ItC/IiwicGVyY250OyI6IiUiLCJwZXJpb2Q7IjoiLiIsInBlcm1pbDsiOiLigLAiLCJwZXJwOyI6IuKKpSIsInBlcnRlbms7Ijoi4oCxIiwiUGZyOyI6IvCdlJMiLCJwZnI7Ijoi8J2UrSIsIlBoaTsiOiLOpiIsInBoaTsiOiLPhiIsInBoaXY7Ijoiz5UiLCJwaG1tYXQ7Ijoi4oSzIiwicGhvbmU7Ijoi4piOIiwiUGk7IjoizqAiLCJwaTsiOiLPgCIsInBpdGNoZm9yazsiOiLii5QiLCJwaXY7Ijoiz5YiLCJwbGFuY2s7Ijoi4oSPIiwicGxhbmNraDsiOiLihI4iLCJwbGFua3Y7Ijoi4oSPIiwicGx1czsiOiIrIiwicGx1c2FjaXI7Ijoi4qijIiwicGx1c2I7Ijoi4oqeIiwicGx1c2NpcjsiOiLiqKIiLCJwbHVzZG87Ijoi4oiUIiwicGx1c2R1OyI6IuKopSIsInBsdXNlOyI6IuKpsiIsIlBsdXNNaW51czsiOiLCsSIsInBsdXNtbjsiOiLCsSIscGx1c21uOiLCsSIsInBsdXNzaW07Ijoi4qimIiwicGx1c3R3bzsiOiLiqKciLCJwbTsiOiLCsSIsIlBvaW5jYXJlcGxhbmU7Ijoi4oSMIiwicG9pbnRpbnQ7Ijoi4qiVIiwiUG9wZjsiOiLihJkiLCJwb3BmOyI6IvCdlaEiLCJwb3VuZDsiOiLCoyIscG91bmQ6IsKjIiwiUHI7Ijoi4qq7IiwicHI7Ijoi4om6IiwicHJhcDsiOiLiqrciLCJwcmN1ZTsiOiLiibwiLCJwckU7Ijoi4qqzIiwicHJlOyI6IuKqryIsInByZWM7Ijoi4om6IiwicHJlY2FwcHJveDsiOiLiqrciLCJwcmVjY3VybHllcTsiOiLiibwiLCJQcmVjZWRlczsiOiLiiboiLCJQcmVjZWRlc0VxdWFsOyI6IuKqryIsIlByZWNlZGVzU2xhbnRFcXVhbDsiOiLiibwiLCJQcmVjZWRlc1RpbGRlOyI6IuKJviIsInByZWNlcTsiOiLiqq8iLCJwcmVjbmFwcHJveDsiOiLiqrkiLCJwcmVjbmVxcTsiOiLiqrUiLCJwcmVjbnNpbTsiOiLii6giLCJwcmVjc2ltOyI6IuKJviIsIlByaW1lOyI6IuKAsyIsInByaW1lOyI6IuKAsiIsInByaW1lczsiOiLihJkiLCJwcm5hcDsiOiLiqrkiLCJwcm5FOyI6IuKqtSIsInBybnNpbTsiOiLii6giLCJwcm9kOyI6IuKIjyIsIlByb2R1Y3Q7Ijoi4oiPIiwicHJvZmFsYXI7Ijoi4oyuIiwicHJvZmxpbmU7Ijoi4oySIiwicHJvZnN1cmY7Ijoi4oyTIiwicHJvcDsiOiLiiJ0iLCJQcm9wb3J0aW9uOyI6IuKItyIsIlByb3BvcnRpb25hbDsiOiLiiJ0iLCJwcm9wdG87Ijoi4oidIiwicHJzaW07Ijoi4om+IiwicHJ1cmVsOyI6IuKKsCIsIlBzY3I7Ijoi8J2SqyIsInBzY3I7Ijoi8J2ThSIsIlBzaTsiOiLOqCIsInBzaTsiOiLPiCIsInB1bmNzcDsiOiLigIgiLCJRZnI7Ijoi8J2UlCIsInFmcjsiOiLwnZSuIiwicWludDsiOiLiqIwiLCJRb3BmOyI6IuKEmiIsInFvcGY7Ijoi8J2VoiIsInFwcmltZTsiOiLigZciLCJRc2NyOyI6IvCdkqwiLCJxc2NyOyI6IvCdk4YiLCJxdWF0ZXJuaW9uczsiOiLihI0iLCJxdWF0aW50OyI6IuKoliIsInF1ZXN0OyI6Ij8iLCJxdWVzdGVxOyI6IuKJnyIsIlFVT1Q7IjonIicsUVVPVDonIicsInF1b3Q7IjonIicscXVvdDonIicsInJBYXJyOyI6IuKHmyIsInJhY2U7Ijoi4oi9zLEiLCJSYWN1dGU7IjoixZQiLCJyYWN1dGU7IjoixZUiLCJyYWRpYzsiOiLiiJoiLCJyYWVtcHR5djsiOiLiprMiLCJSYW5nOyI6IuKfqyIsInJhbmc7Ijoi4p+pIiwicmFuZ2Q7Ijoi4qaSIiwicmFuZ2U7Ijoi4qalIiwicmFuZ2xlOyI6IuKfqSIsInJhcXVvOyI6IsK7IixyYXF1bzoiwrsiLCJSYXJyOyI6IuKGoCIsInJBcnI7Ijoi4oeSIiwicmFycjsiOiLihpIiLCJyYXJyYXA7Ijoi4qW1IiwicmFycmI7Ijoi4oelIiwicmFycmJmczsiOiLipKAiLCJyYXJyYzsiOiLipLMiLCJyYXJyZnM7Ijoi4qSeIiwicmFycmhrOyI6IuKGqiIsInJhcnJscDsiOiLihqwiLCJyYXJycGw7Ijoi4qWFIiwicmFycnNpbTsiOiLipbQiLCJSYXJydGw7Ijoi4qSWIiwicmFycnRsOyI6IuKGoyIsInJhcnJ3OyI6IuKGnSIsInJBdGFpbDsiOiLipJwiLCJyYXRhaWw7Ijoi4qSaIiwicmF0aW87Ijoi4oi2IiwicmF0aW9uYWxzOyI6IuKEmiIsIlJCYXJyOyI6IuKkkCIsInJCYXJyOyI6IuKkjyIsInJiYXJyOyI6IuKkjSIsInJiYnJrOyI6IuKdsyIsInJicmFjZTsiOiJ9IiwicmJyYWNrOyI6Il0iLCJyYnJrZTsiOiLipowiLCJyYnJrc2xkOyI6IuKmjiIsInJicmtzbHU7Ijoi4qaQIiwiUmNhcm9uOyI6IsWYIiwicmNhcm9uOyI6IsWZIiwiUmNlZGlsOyI6IsWWIiwicmNlZGlsOyI6IsWXIiwicmNlaWw7Ijoi4oyJIiwicmN1YjsiOiJ9IiwiUmN5OyI6ItCgIiwicmN5OyI6ItGAIiwicmRjYTsiOiLipLciLCJyZGxkaGFyOyI6IuKlqSIsInJkcXVvOyI6IuKAnSIsInJkcXVvcjsiOiLigJ0iLCJyZHNoOyI6IuKGsyIsIlJlOyI6IuKEnCIsInJlYWw7Ijoi4oScIiwicmVhbGluZTsiOiLihJsiLCJyZWFscGFydDsiOiLihJwiLCJyZWFsczsiOiLihJ0iLCJyZWN0OyI6IuKWrSIsIlJFRzsiOiLCriIsUkVHOiLCriIsInJlZzsiOiLCriIscmVnOiLCriIsIlJldmVyc2VFbGVtZW50OyI6IuKIiyIsIlJldmVyc2VFcXVpbGlicml1bTsiOiLih4siLCJSZXZlcnNlVXBFcXVpbGlicml1bTsiOiLipa8iLCJyZmlzaHQ7Ijoi4qW9IiwicmZsb29yOyI6IuKMiyIsIlJmcjsiOiLihJwiLCJyZnI7Ijoi8J2UryIsInJIYXI7Ijoi4qWkIiwicmhhcmQ7Ijoi4oeBIiwicmhhcnU7Ijoi4oeAIiwicmhhcnVsOyI6IuKlrCIsIlJobzsiOiLOoSIsInJobzsiOiLPgSIsInJob3Y7Ijoiz7EiLCJSaWdodEFuZ2xlQnJhY2tldDsiOiLin6kiLCJSaWdodEFycm93OyI6IuKGkiIsIlJpZ2h0YXJyb3c7Ijoi4oeSIiwicmlnaHRhcnJvdzsiOiLihpIiLCJSaWdodEFycm93QmFyOyI6IuKHpSIsIlJpZ2h0QXJyb3dMZWZ0QXJyb3c7Ijoi4oeEIiwicmlnaHRhcnJvd3RhaWw7Ijoi4oajIiwiUmlnaHRDZWlsaW5nOyI6IuKMiSIsIlJpZ2h0RG91YmxlQnJhY2tldDsiOiLin6ciLCJSaWdodERvd25UZWVWZWN0b3I7Ijoi4qWdIiwiUmlnaHREb3duVmVjdG9yOyI6IuKHgiIsIlJpZ2h0RG93blZlY3RvckJhcjsiOiLipZUiLCJSaWdodEZsb29yOyI6IuKMiyIsInJpZ2h0aGFycG9vbmRvd247Ijoi4oeBIiwicmlnaHRoYXJwb29udXA7Ijoi4oeAIiwicmlnaHRsZWZ0YXJyb3dzOyI6IuKHhCIsInJpZ2h0bGVmdGhhcnBvb25zOyI6IuKHjCIsInJpZ2h0cmlnaHRhcnJvd3M7Ijoi4oeJIiwicmlnaHRzcXVpZ2Fycm93OyI6IuKGnSIsIlJpZ2h0VGVlOyI6IuKKoiIsIlJpZ2h0VGVlQXJyb3c7Ijoi4oamIiwiUmlnaHRUZWVWZWN0b3I7Ijoi4qWbIiwicmlnaHR0aHJlZXRpbWVzOyI6IuKLjCIsIlJpZ2h0VHJpYW5nbGU7Ijoi4oqzIiwiUmlnaHRUcmlhbmdsZUJhcjsiOiLip5AiLCJSaWdodFRyaWFuZ2xlRXF1YWw7Ijoi4oq1IiwiUmlnaHRVcERvd25WZWN0b3I7Ijoi4qWPIiwiUmlnaHRVcFRlZVZlY3RvcjsiOiLipZwiLCJSaWdodFVwVmVjdG9yOyI6IuKGviIsIlJpZ2h0VXBWZWN0b3JCYXI7Ijoi4qWUIiwiUmlnaHRWZWN0b3I7Ijoi4oeAIiwiUmlnaHRWZWN0b3JCYXI7Ijoi4qWTIiwicmluZzsiOiLLmiIsInJpc2luZ2RvdHNlcTsiOiLiiZMiLCJybGFycjsiOiLih4QiLCJybGhhcjsiOiLih4wiLCJybG07Ijoi4oCPIiwicm1vdXN0OyI6IuKOsSIsInJtb3VzdGFjaGU7Ijoi4o6xIiwicm5taWQ7Ijoi4quuIiwicm9hbmc7Ijoi4p+tIiwicm9hcnI7Ijoi4oe+Iiwicm9icms7Ijoi4p+nIiwicm9wYXI7Ijoi4qaGIiwiUm9wZjsiOiLihJ0iLCJyb3BmOyI6IvCdlaMiLCJyb3BsdXM7Ijoi4qiuIiwicm90aW1lczsiOiLiqLUiLCJSb3VuZEltcGxpZXM7Ijoi4qWwIiwicnBhcjsiOiIpIiwicnBhcmd0OyI6IuKmlCIsInJwcG9saW50OyI6IuKokiIsInJyYXJyOyI6IuKHiSIsIlJyaWdodGFycm93OyI6IuKHmyIsInJzYXF1bzsiOiLigLoiLCJSc2NyOyI6IuKEmyIsInJzY3I7Ijoi8J2ThyIsIlJzaDsiOiLihrEiLCJyc2g7Ijoi4oaxIiwicnNxYjsiOiJdIiwicnNxdW87Ijoi4oCZIiwicnNxdW9yOyI6IuKAmSIsInJ0aHJlZTsiOiLii4wiLCJydGltZXM7Ijoi4ouKIiwicnRyaTsiOiLilrkiLCJydHJpZTsiOiLiirUiLCJydHJpZjsiOiLilrgiLCJydHJpbHRyaTsiOiLip44iLCJSdWxlRGVsYXllZDsiOiLip7QiLCJydWx1aGFyOyI6IuKlqCIsInJ4OyI6IuKEniIsIlNhY3V0ZTsiOiLFmiIsInNhY3V0ZTsiOiLFmyIsInNicXVvOyI6IuKAmiIsIlNjOyI6IuKqvCIsInNjOyI6IuKJuyIsInNjYXA7Ijoi4qq4IiwiU2Nhcm9uOyI6IsWgIiwic2Nhcm9uOyI6IsWhIiwic2NjdWU7Ijoi4om9Iiwic2NFOyI6IuKqtCIsInNjZTsiOiLiqrAiLCJTY2VkaWw7IjoixZ4iLCJzY2VkaWw7IjoixZ8iLCJTY2lyYzsiOiLFnCIsInNjaXJjOyI6IsWdIiwic2NuYXA7Ijoi4qq6Iiwic2NuRTsiOiLiqrYiLCJzY25zaW07Ijoi4oupIiwic2Nwb2xpbnQ7Ijoi4qiTIiwic2NzaW07Ijoi4om/IiwiU2N5OyI6ItChIiwic2N5OyI6ItGBIiwic2RvdDsiOiLii4UiLCJzZG90YjsiOiLiiqEiLCJzZG90ZTsiOiLiqaYiLCJzZWFyaGs7Ijoi4qSlIiwic2VBcnI7Ijoi4oeYIiwic2VhcnI7Ijoi4oaYIiwic2VhcnJvdzsiOiLihpgiLCJzZWN0OyI6IsKnIixzZWN0OiLCpyIsInNlbWk7IjoiOyIsInNlc3dhcjsiOiLipKkiLCJzZXRtaW51czsiOiLiiJYiLCJzZXRtbjsiOiLiiJYiLCJzZXh0OyI6IuKctiIsIlNmcjsiOiLwnZSWIiwic2ZyOyI6IvCdlLAiLCJzZnJvd247Ijoi4oyiIiwic2hhcnA7Ijoi4pmvIiwiU0hDSGN5OyI6ItCpIiwic2hjaGN5OyI6ItGJIiwiU0hjeTsiOiLQqCIsInNoY3k7Ijoi0YgiLCJTaG9ydERvd25BcnJvdzsiOiLihpMiLCJTaG9ydExlZnRBcnJvdzsiOiLihpAiLCJzaG9ydG1pZDsiOiLiiKMiLCJzaG9ydHBhcmFsbGVsOyI6IuKIpSIsIlNob3J0UmlnaHRBcnJvdzsiOiLihpIiLCJTaG9ydFVwQXJyb3c7Ijoi4oaRIiwic2h5OyI6IsKtIixzaHk6IsKtIiwiU2lnbWE7IjoizqMiLCJzaWdtYTsiOiLPgyIsInNpZ21hZjsiOiLPgiIsInNpZ21hdjsiOiLPgiIsInNpbTsiOiLiiLwiLCJzaW1kb3Q7Ijoi4qmqIiwic2ltZTsiOiLiiYMiLCJzaW1lcTsiOiLiiYMiLCJzaW1nOyI6IuKqniIsInNpbWdFOyI6IuKqoCIsInNpbWw7Ijoi4qqdIiwic2ltbEU7Ijoi4qqfIiwic2ltbmU7Ijoi4omGIiwic2ltcGx1czsiOiLiqKQiLCJzaW1yYXJyOyI6IuKlsiIsInNsYXJyOyI6IuKGkCIsIlNtYWxsQ2lyY2xlOyI6IuKImCIsInNtYWxsc2V0bWludXM7Ijoi4oiWIiwic21hc2hwOyI6IuKosyIsInNtZXBhcnNsOyI6IuKnpCIsInNtaWQ7Ijoi4oijIiwic21pbGU7Ijoi4oyjIiwic210OyI6IuKqqiIsInNtdGU7Ijoi4qqsIiwic210ZXM7Ijoi4qqs77iAIiwiU09GVGN5OyI6ItCsIiwic29mdGN5OyI6ItGMIiwic29sOyI6Ii8iLCJzb2xiOyI6IuKnhCIsInNvbGJhcjsiOiLijL8iLCJTb3BmOyI6IvCdlYoiLCJzb3BmOyI6IvCdlaQiLCJzcGFkZXM7Ijoi4pmgIiwic3BhZGVzdWl0OyI6IuKZoCIsInNwYXI7Ijoi4oilIiwic3FjYXA7Ijoi4oqTIiwic3FjYXBzOyI6IuKKk++4gCIsInNxY3VwOyI6IuKKlCIsInNxY3VwczsiOiLiipTvuIAiLCJTcXJ0OyI6IuKImiIsInNxc3ViOyI6IuKKjyIsInNxc3ViZTsiOiLiipEiLCJzcXN1YnNldDsiOiLiio8iLCJzcXN1YnNldGVxOyI6IuKKkSIsInNxc3VwOyI6IuKKkCIsInNxc3VwZTsiOiLiipIiLCJzcXN1cHNldDsiOiLiipAiLCJzcXN1cHNldGVxOyI6IuKKkiIsInNxdTsiOiLilqEiLCJTcXVhcmU7Ijoi4pahIiwic3F1YXJlOyI6IuKWoSIsIlNxdWFyZUludGVyc2VjdGlvbjsiOiLiipMiLCJTcXVhcmVTdWJzZXQ7Ijoi4oqPIiwiU3F1YXJlU3Vic2V0RXF1YWw7Ijoi4oqRIiwiU3F1YXJlU3VwZXJzZXQ7Ijoi4oqQIiwiU3F1YXJlU3VwZXJzZXRFcXVhbDsiOiLiipIiLCJTcXVhcmVVbmlvbjsiOiLiipQiLCJzcXVhcmY7Ijoi4paqIiwic3F1ZjsiOiLilqoiLCJzcmFycjsiOiLihpIiLCJTc2NyOyI6IvCdkq4iLCJzc2NyOyI6IvCdk4giLCJzc2V0bW47Ijoi4oiWIiwic3NtaWxlOyI6IuKMoyIsInNzdGFyZjsiOiLii4YiLCJTdGFyOyI6IuKLhiIsInN0YXI7Ijoi4piGIiwic3RhcmY7Ijoi4piFIiwic3RyYWlnaHRlcHNpbG9uOyI6Is+1Iiwic3RyYWlnaHRwaGk7Ijoiz5UiLCJzdHJuczsiOiLCryIsIlN1YjsiOiLii5AiLCJzdWI7Ijoi4oqCIiwic3ViZG90OyI6IuKqvSIsInN1YkU7Ijoi4quFIiwic3ViZTsiOiLiioYiLCJzdWJlZG90OyI6IuKrgyIsInN1Ym11bHQ7Ijoi4quBIiwic3VibkU7Ijoi4quLIiwic3VibmU7Ijoi4oqKIiwic3VicGx1czsiOiLiqr8iLCJzdWJyYXJyOyI6IuKluSIsIlN1YnNldDsiOiLii5AiLCJzdWJzZXQ7Ijoi4oqCIiwic3Vic2V0ZXE7Ijoi4oqGIiwic3Vic2V0ZXFxOyI6IuKrhSIsIlN1YnNldEVxdWFsOyI6IuKKhiIsInN1YnNldG5lcTsiOiLiiooiLCJzdWJzZXRuZXFxOyI6IuKriyIsInN1YnNpbTsiOiLiq4ciLCJzdWJzdWI7Ijoi4quVIiwic3Vic3VwOyI6IuKrkyIsInN1Y2M7Ijoi4om7Iiwic3VjY2FwcHJveDsiOiLiqrgiLCJzdWNjY3VybHllcTsiOiLiib0iLCJTdWNjZWVkczsiOiLiibsiLCJTdWNjZWVkc0VxdWFsOyI6IuKqsCIsIlN1Y2NlZWRzU2xhbnRFcXVhbDsiOiLiib0iLCJTdWNjZWVkc1RpbGRlOyI6IuKJvyIsInN1Y2NlcTsiOiLiqrAiLCJzdWNjbmFwcHJveDsiOiLiqroiLCJzdWNjbmVxcTsiOiLiqrYiLCJzdWNjbnNpbTsiOiLii6kiLCJzdWNjc2ltOyI6IuKJvyIsIlN1Y2hUaGF0OyI6IuKIiyIsIlN1bTsiOiLiiJEiLCJzdW07Ijoi4oiRIiwic3VuZzsiOiLimaoiLCJTdXA7Ijoi4ouRIiwic3VwOyI6IuKKgyIsInN1cDE7IjoiwrkiLHN1cDE6IsK5Iiwic3VwMjsiOiLCsiIsc3VwMjoiwrIiLCJzdXAzOyI6IsKzIixzdXAzOiLCsyIsInN1cGRvdDsiOiLiqr4iLCJzdXBkc3ViOyI6IuKrmCIsInN1cEU7Ijoi4quGIiwic3VwZTsiOiLiiociLCJzdXBlZG90OyI6IuKrhCIsIlN1cGVyc2V0OyI6IuKKgyIsIlN1cGVyc2V0RXF1YWw7Ijoi4oqHIiwic3VwaHNvbDsiOiLin4kiLCJzdXBoc3ViOyI6IuKrlyIsInN1cGxhcnI7Ijoi4qW7Iiwic3VwbXVsdDsiOiLiq4IiLCJzdXBuRTsiOiLiq4wiLCJzdXBuZTsiOiLiiosiLCJzdXBwbHVzOyI6IuKrgCIsIlN1cHNldDsiOiLii5EiLCJzdXBzZXQ7Ijoi4oqDIiwic3Vwc2V0ZXE7Ijoi4oqHIiwic3Vwc2V0ZXFxOyI6IuKrhiIsInN1cHNldG5lcTsiOiLiiosiLCJzdXBzZXRuZXFxOyI6IuKrjCIsInN1cHNpbTsiOiLiq4giLCJzdXBzdWI7Ijoi4quUIiwic3Vwc3VwOyI6IuKrliIsInN3YXJoazsiOiLipKYiLCJzd0FycjsiOiLih5kiLCJzd2FycjsiOiLihpkiLCJzd2Fycm93OyI6IuKGmSIsInN3bndhcjsiOiLipKoiLCJzemxpZzsiOiLDnyIsc3psaWc6IsOfIiwiVGFiOyI6Ilx0IiwidGFyZ2V0OyI6IuKMliIsIlRhdTsiOiLOpCIsInRhdTsiOiLPhCIsInRicms7Ijoi4o60IiwiVGNhcm9uOyI6IsWkIiwidGNhcm9uOyI6IsWlIiwiVGNlZGlsOyI6IsWiIiwidGNlZGlsOyI6IsWjIiwiVGN5OyI6ItCiIiwidGN5OyI6ItGCIiwidGRvdDsiOiLig5siLCJ0ZWxyZWM7Ijoi4oyVIiwiVGZyOyI6IvCdlJciLCJ0ZnI7Ijoi8J2UsSIsInRoZXJlNDsiOiLiiLQiLCJUaGVyZWZvcmU7Ijoi4oi0IiwidGhlcmVmb3JlOyI6IuKItCIsIlRoZXRhOyI6Is6YIiwidGhldGE7IjoizrgiLCJ0aGV0YXN5bTsiOiLPkSIsInRoZXRhdjsiOiLPkSIsInRoaWNrYXBwcm94OyI6IuKJiCIsInRoaWNrc2ltOyI6IuKIvCIsIlRoaWNrU3BhY2U7Ijoi4oGf4oCKIiwidGhpbnNwOyI6IuKAiSIsIlRoaW5TcGFjZTsiOiLigIkiLCJ0aGthcDsiOiLiiYgiLCJ0aGtzaW07Ijoi4oi8IiwiVEhPUk47Ijoiw54iLFRIT1JOOiLDniIsInRob3JuOyI6IsO+Iix0aG9ybjoiw74iLCJUaWxkZTsiOiLiiLwiLCJ0aWxkZTsiOiLLnCIsIlRpbGRlRXF1YWw7Ijoi4omDIiwiVGlsZGVGdWxsRXF1YWw7Ijoi4omFIiwiVGlsZGVUaWxkZTsiOiLiiYgiLCJ0aW1lczsiOiLDlyIsdGltZXM6IsOXIiwidGltZXNiOyI6IuKKoCIsInRpbWVzYmFyOyI6IuKosSIsInRpbWVzZDsiOiLiqLAiLCJ0aW50OyI6IuKIrSIsInRvZWE7Ijoi4qSoIiwidG9wOyI6IuKKpCIsInRvcGJvdDsiOiLijLYiLCJ0b3BjaXI7Ijoi4quxIiwiVG9wZjsiOiLwnZWLIiwidG9wZjsiOiLwnZWlIiwidG9wZm9yazsiOiLiq5oiLCJ0b3NhOyI6IuKkqSIsInRwcmltZTsiOiLigLQiLCJUUkFERTsiOiLihKIiLCJ0cmFkZTsiOiLihKIiLCJ0cmlhbmdsZTsiOiLilrUiLCJ0cmlhbmdsZWRvd247Ijoi4pa/IiwidHJpYW5nbGVsZWZ0OyI6IuKXgyIsInRyaWFuZ2xlbGVmdGVxOyI6IuKKtCIsInRyaWFuZ2xlcTsiOiLiiZwiLCJ0cmlhbmdsZXJpZ2h0OyI6IuKWuSIsInRyaWFuZ2xlcmlnaHRlcTsiOiLiirUiLCJ0cmlkb3Q7Ijoi4pesIiwidHJpZTsiOiLiiZwiLCJ0cmltaW51czsiOiLiqLoiLCJUcmlwbGVEb3Q7Ijoi4oObIiwidHJpcGx1czsiOiLiqLkiLCJ0cmlzYjsiOiLip40iLCJ0cml0aW1lOyI6IuKouyIsInRycGV6aXVtOyI6IuKPoiIsIlRzY3I7Ijoi8J2SryIsInRzY3I7Ijoi8J2TiSIsIlRTY3k7Ijoi0KYiLCJ0c2N5OyI6ItGGIiwiVFNIY3k7Ijoi0IsiLCJ0c2hjeTsiOiLRmyIsIlRzdHJvazsiOiLFpiIsInRzdHJvazsiOiLFpyIsInR3aXh0OyI6IuKJrCIsInR3b2hlYWRsZWZ0YXJyb3c7Ijoi4oaeIiwidHdvaGVhZHJpZ2h0YXJyb3c7Ijoi4oagIiwiVWFjdXRlOyI6IsOaIixVYWN1dGU6IsOaIiwidWFjdXRlOyI6IsO6Iix1YWN1dGU6IsO6IiwiVWFycjsiOiLihp8iLCJ1QXJyOyI6IuKHkSIsInVhcnI7Ijoi4oaRIiwiVWFycm9jaXI7Ijoi4qWJIiwiVWJyY3k7Ijoi0I4iLCJ1YnJjeTsiOiLRniIsIlVicmV2ZTsiOiLFrCIsInVicmV2ZTsiOiLFrSIsIlVjaXJjOyI6IsObIixVY2lyYzoiw5siLCJ1Y2lyYzsiOiLDuyIsdWNpcmM6IsO7IiwiVWN5OyI6ItCjIiwidWN5OyI6ItGDIiwidWRhcnI7Ijoi4oeFIiwiVWRibGFjOyI6IsWwIiwidWRibGFjOyI6IsWxIiwidWRoYXI7Ijoi4qWuIiwidWZpc2h0OyI6IuKlviIsIlVmcjsiOiLwnZSYIiwidWZyOyI6IvCdlLIiLCJVZ3JhdmU7Ijoiw5kiLFVncmF2ZToiw5kiLCJ1Z3JhdmU7Ijoiw7kiLHVncmF2ZToiw7kiLCJ1SGFyOyI6IuKloyIsInVoYXJsOyI6IuKGvyIsInVoYXJyOyI6IuKGviIsInVoYmxrOyI6IuKWgCIsInVsY29ybjsiOiLijJwiLCJ1bGNvcm5lcjsiOiLijJwiLCJ1bGNyb3A7Ijoi4oyPIiwidWx0cmk7Ijoi4pe4IiwiVW1hY3I7IjoixaoiLCJ1bWFjcjsiOiLFqyIsInVtbDsiOiLCqCIsdW1sOiLCqCIsIlVuZGVyQmFyOyI6Il8iLCJVbmRlckJyYWNlOyI6IuKPnyIsIlVuZGVyQnJhY2tldDsiOiLijrUiLCJVbmRlclBhcmVudGhlc2lzOyI6IuKPnSIsIlVuaW9uOyI6IuKLgyIsIlVuaW9uUGx1czsiOiLiio4iLCJVb2dvbjsiOiLFsiIsInVvZ29uOyI6IsWzIiwiVW9wZjsiOiLwnZWMIiwidW9wZjsiOiLwnZWmIiwiVXBBcnJvdzsiOiLihpEiLCJVcGFycm93OyI6IuKHkSIsInVwYXJyb3c7Ijoi4oaRIiwiVXBBcnJvd0JhcjsiOiLipJIiLCJVcEFycm93RG93bkFycm93OyI6IuKHhSIsIlVwRG93bkFycm93OyI6IuKGlSIsIlVwZG93bmFycm93OyI6IuKHlSIsInVwZG93bmFycm93OyI6IuKGlSIsIlVwRXF1aWxpYnJpdW07Ijoi4qWuIiwidXBoYXJwb29ubGVmdDsiOiLihr8iLCJ1cGhhcnBvb25yaWdodDsiOiLihr4iLCJ1cGx1czsiOiLiio4iLCJVcHBlckxlZnRBcnJvdzsiOiLihpYiLCJVcHBlclJpZ2h0QXJyb3c7Ijoi4oaXIiwiVXBzaTsiOiLPkiIsInVwc2k7Ijoiz4UiLCJ1cHNpaDsiOiLPkiIsIlVwc2lsb247IjoizqUiLCJ1cHNpbG9uOyI6Is+FIiwiVXBUZWU7Ijoi4oqlIiwiVXBUZWVBcnJvdzsiOiLihqUiLCJ1cHVwYXJyb3dzOyI6IuKHiCIsInVyY29ybjsiOiLijJ0iLCJ1cmNvcm5lcjsiOiLijJ0iLCJ1cmNyb3A7Ijoi4oyOIiwiVXJpbmc7Ijoixa4iLCJ1cmluZzsiOiLFryIsInVydHJpOyI6IuKXuSIsIlVzY3I7Ijoi8J2SsCIsInVzY3I7Ijoi8J2TiiIsInV0ZG90OyI6IuKLsCIsIlV0aWxkZTsiOiLFqCIsInV0aWxkZTsiOiLFqSIsInV0cmk7Ijoi4pa1IiwidXRyaWY7Ijoi4pa0IiwidXVhcnI7Ijoi4oeIIiwiVXVtbDsiOiLDnCIsVXVtbDoiw5wiLCJ1dW1sOyI6IsO8Iix1dW1sOiLDvCIsInV3YW5nbGU7Ijoi4qanIiwidmFuZ3J0OyI6IuKmnCIsInZhcmVwc2lsb247Ijoiz7UiLCJ2YXJrYXBwYTsiOiLPsCIsInZhcm5vdGhpbmc7Ijoi4oiFIiwidmFycGhpOyI6Is+VIiwidmFycGk7Ijoiz5YiLCJ2YXJwcm9wdG87Ijoi4oidIiwidkFycjsiOiLih5UiLCJ2YXJyOyI6IuKGlSIsInZhcnJobzsiOiLPsSIsInZhcnNpZ21hOyI6Is+CIiwidmFyc3Vic2V0bmVxOyI6IuKKiu+4gCIsInZhcnN1YnNldG5lcXE7Ijoi4quL77iAIiwidmFyc3Vwc2V0bmVxOyI6IuKKi++4gCIsInZhcnN1cHNldG5lcXE7Ijoi4quM77iAIiwidmFydGhldGE7Ijoiz5EiLCJ2YXJ0cmlhbmdsZWxlZnQ7Ijoi4oqyIiwidmFydHJpYW5nbGVyaWdodDsiOiLiirMiLCJWYmFyOyI6IuKrqyIsInZCYXI7Ijoi4quoIiwidkJhcnY7Ijoi4qupIiwiVmN5OyI6ItCSIiwidmN5OyI6ItCyIiwiVkRhc2g7Ijoi4oqrIiwiVmRhc2g7Ijoi4oqpIiwidkRhc2g7Ijoi4oqoIiwidmRhc2g7Ijoi4oqiIiwiVmRhc2hsOyI6IuKrpiIsIlZlZTsiOiLii4EiLCJ2ZWU7Ijoi4oioIiwidmVlYmFyOyI6IuKKuyIsInZlZWVxOyI6IuKJmiIsInZlbGxpcDsiOiLii64iLCJWZXJiYXI7Ijoi4oCWIiwidmVyYmFyOyI6InwiLCJWZXJ0OyI6IuKAliIsInZlcnQ7IjoifCIsIlZlcnRpY2FsQmFyOyI6IuKIoyIsIlZlcnRpY2FsTGluZTsiOiJ8IiwiVmVydGljYWxTZXBhcmF0b3I7Ijoi4p2YIiwiVmVydGljYWxUaWxkZTsiOiLiiYAiLCJWZXJ5VGhpblNwYWNlOyI6IuKAiiIsIlZmcjsiOiLwnZSZIiwidmZyOyI6IvCdlLMiLCJ2bHRyaTsiOiLiirIiLCJ2bnN1YjsiOiLiioLig5IiLCJ2bnN1cDsiOiLiioPig5IiLCJWb3BmOyI6IvCdlY0iLCJ2b3BmOyI6IvCdlaciLCJ2cHJvcDsiOiLiiJ0iLCJ2cnRyaTsiOiLiirMiLCJWc2NyOyI6IvCdkrEiLCJ2c2NyOyI6IvCdk4siLCJ2c3VibkU7Ijoi4quL77iAIiwidnN1Ym5lOyI6IuKKiu+4gCIsInZzdXBuRTsiOiLiq4zvuIAiLCJ2c3VwbmU7Ijoi4oqL77iAIiwiVnZkYXNoOyI6IuKKqiIsInZ6aWd6YWc7Ijoi4qaaIiwiV2NpcmM7IjoixbQiLCJ3Y2lyYzsiOiLFtSIsIndlZGJhcjsiOiLiqZ8iLCJXZWRnZTsiOiLii4AiLCJ3ZWRnZTsiOiLiiKciLCJ3ZWRnZXE7Ijoi4omZIiwid2VpZXJwOyI6IuKEmCIsIldmcjsiOiLwnZSaIiwid2ZyOyI6IvCdlLQiLCJXb3BmOyI6IvCdlY4iLCJ3b3BmOyI6IvCdlagiLCJ3cDsiOiLihJgiLCJ3cjsiOiLiiYAiLCJ3cmVhdGg7Ijoi4omAIiwiV3NjcjsiOiLwnZKyIiwid3NjcjsiOiLwnZOMIiwieGNhcDsiOiLii4IiLCJ4Y2lyYzsiOiLil68iLCJ4Y3VwOyI6IuKLgyIsInhkdHJpOyI6IuKWvSIsIlhmcjsiOiLwnZSbIiwieGZyOyI6IvCdlLUiLCJ4aEFycjsiOiLin7oiLCJ4aGFycjsiOiLin7ciLCJYaTsiOiLOniIsInhpOyI6Is6+IiwieGxBcnI7Ijoi4p+4IiwieGxhcnI7Ijoi4p+1IiwieG1hcDsiOiLin7wiLCJ4bmlzOyI6IuKLuyIsInhvZG90OyI6IuKogCIsIlhvcGY7Ijoi8J2VjyIsInhvcGY7Ijoi8J2VqSIsInhvcGx1czsiOiLiqIEiLCJ4b3RpbWU7Ijoi4qiCIiwieHJBcnI7Ijoi4p+5IiwieHJhcnI7Ijoi4p+2IiwiWHNjcjsiOiLwnZKzIiwieHNjcjsiOiLwnZONIiwieHNxY3VwOyI6IuKohiIsInh1cGx1czsiOiLiqIQiLCJ4dXRyaTsiOiLilrMiLCJ4dmVlOyI6IuKLgSIsInh3ZWRnZTsiOiLii4AiLCJZYWN1dGU7Ijoiw50iLFlhY3V0ZToiw50iLCJ5YWN1dGU7Ijoiw70iLHlhY3V0ZToiw70iLCJZQWN5OyI6ItCvIiwieWFjeTsiOiLRjyIsIlljaXJjOyI6IsW2IiwieWNpcmM7IjoixbciLCJZY3k7Ijoi0KsiLCJ5Y3k7Ijoi0YsiLCJ5ZW47IjoiwqUiLHllbjoiwqUiLCJZZnI7Ijoi8J2UnCIsInlmcjsiOiLwnZS2IiwiWUljeTsiOiLQhyIsInlpY3k7Ijoi0ZciLCJZb3BmOyI6IvCdlZAiLCJ5b3BmOyI6IvCdlaoiLCJZc2NyOyI6IvCdkrQiLCJ5c2NyOyI6IvCdk44iLCJZVWN5OyI6ItCuIiwieXVjeTsiOiLRjiIsIll1bWw7IjoixbgiLCJ5dW1sOyI6IsO/Iix5dW1sOiLDvyIsIlphY3V0ZTsiOiLFuSIsInphY3V0ZTsiOiLFuiIsIlpjYXJvbjsiOiLFvSIsInpjYXJvbjsiOiLFviIsIlpjeTsiOiLQlyIsInpjeTsiOiLQtyIsIlpkb3Q7IjoixbsiLCJ6ZG90OyI6IsW8IiwiemVldHJmOyI6IuKEqCIsIlplcm9XaWR0aFNwYWNlOyI6IuKAiyIsIlpldGE7IjoizpYiLCJ6ZXRhOyI6Is62IiwiWmZyOyI6IuKEqCIsInpmcjsiOiLwnZS3IiwiWkhjeTsiOiLQliIsInpoY3k7Ijoi0LYiLCJ6aWdyYXJyOyI6IuKHnSIsIlpvcGY7Ijoi4oSkIiwiem9wZjsiOiLwnZWrIiwiWnNjcjsiOiLwnZK1IiwienNjcjsiOiLwnZOPIiwiendqOyI6IuKAjSIsInp3bmo7Ijoi4oCMIn07ZnVuY3Rpb24gSGEoZSx0KXtpZihlLmxlbmd0aDx0Lmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZihlW25dIT09dFtuXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiB6YShlLHQpe2Zvcih2YXIgbj0iIjt0PjA7KTE9PSgxJnQpJiYobis9ZSksZSs9ZSx0Pj4+PTE7cmV0dXJuIG59dmFyIERhPSJhIi5jaGFyQ29kZUF0KDApLFdhPSJ6Ii5jaGFyQ29kZUF0KDApLE9hPSJBIi5jaGFyQ29kZUF0KDApLFBhPSJaIi5jaGFyQ29kZUF0KDApLHFhPSIwIi5jaGFyQ29kZUF0KDApLEZhPSI5Ii5jaGFyQ29kZUF0KDApO2Z1bmN0aW9uIFZhKGUsdCl7dmFyIG49ZS5jaGFyQ29kZUF0KHQpO3JldHVybiBEYTw9biYmbjw9V2F8fE9hPD1uJiZuPD1QYXx8cWE8PW4mJm48PUZhfWZ1bmN0aW9uIEJhKGUpe3JldHVybiB2b2lkIDAhPT1lfXZhciBLYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt2YXIgbj10aGlzO3RoaXMuaWQ9ZSx0aGlzLl90YWdzPVtdLHRoaXMuX3RhZ01hcD17fSx0aGlzLl92YWx1ZVNldE1hcD17fSx0aGlzLl90YWdzPXQudGFnc3x8W10sdGhpcy5fZ2xvYmFsQXR0cmlidXRlcz10Lmdsb2JhbEF0dHJpYnV0ZXN8fFtdLHRoaXMuX3RhZ3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bi5fdGFnTWFwW2UubmFtZS50b0xvd2VyQ2FzZSgpXT1lfSkpLHQudmFsdWVTZXRzJiZ0LnZhbHVlU2V0cy5mb3JFYWNoKChmdW5jdGlvbihlKXtuLl92YWx1ZVNldE1hcFtlLm5hbWVdPWUudmFsdWVzfSkpfXJldHVybiBlLnByb3RvdHlwZS5pc0FwcGxpY2FibGU9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuZ2V0SWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZH0sZS5wcm90b3R5cGUucHJvdmlkZVRhZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdGFnc30sZS5wcm90b3R5cGUucHJvdmlkZUF0dHJpYnV0ZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9W10sbj1mdW5jdGlvbihlKXt0LnB1c2goZSl9LHI9dGhpcy5fdGFnTWFwW2UudG9Mb3dlckNhc2UoKV07cmV0dXJuIHImJnIuYXR0cmlidXRlcy5mb3JFYWNoKG4pLHRoaXMuX2dsb2JhbEF0dHJpYnV0ZXMuZm9yRWFjaChuKSx0fSxlLnByb3RvdHlwZS5wcm92aWRlVmFsdWVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPVtdO3Q9dC50b0xvd2VyQ2FzZSgpO3ZhciBpPWZ1bmN0aW9uKGUpe2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5uYW1lLnRvTG93ZXJDYXNlKCk9PT10JiYoZS52YWx1ZXMmJmUudmFsdWVzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3IucHVzaChlKX0pKSxlLnZhbHVlU2V0JiZuLl92YWx1ZVNldE1hcFtlLnZhbHVlU2V0XSYmbi5fdmFsdWVTZXRNYXBbZS52YWx1ZVNldF0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7ci5wdXNoKGUpfSkpKX0pKX0sYT10aGlzLl90YWdNYXBbZS50b0xvd2VyQ2FzZSgpXTtyZXR1cm4gYSYmaShhLmF0dHJpYnV0ZXMpLGkodGhpcy5fZ2xvYmFsQXR0cmlidXRlcykscn0sZX0oKTtmdW5jdGlvbiBqYShlLHQsbil7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciByPXtraW5kOm4/Im1hcmtkb3duIjoicGxhaW50ZXh0Iix2YWx1ZToiIn07aWYoZS5kZXNjcmlwdGlvbiYmITEhPT10LmRvY3VtZW50YXRpb24pe3ZhciBpPWZ1bmN0aW9uKGUpe2lmKGUpcmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP3traW5kOiJtYXJrZG93biIsdmFsdWU6ZX06e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTplLnZhbHVlfX0oZS5kZXNjcmlwdGlvbik7aSYmKHIudmFsdWUrPWkudmFsdWUpfWlmKGUucmVmZXJlbmNlcyYmZS5yZWZlcmVuY2VzLmxlbmd0aD4wJiYhMSE9PXQucmVmZXJlbmNlcyYmKHIudmFsdWUubGVuZ3RoJiYoci52YWx1ZSs9IlxuXG4iKSxyLnZhbHVlKz1uP2UucmVmZXJlbmNlcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiJbIi5jb25jYXQoZS5uYW1lLCJdKCIpLmNvbmNhdChlLnVybCwiKSIpfSkpLmpvaW4oIiB8ICIpOmUucmVmZXJlbmNlcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiIiLmNvbmNhdChlLm5hbWUsIjogIikuY29uY2F0KGUudXJsKX0pKS5qb2luKCJcbiIpKSwiIiE9PXIudmFsdWUpcmV0dXJuIHJ9dmFyIEdhPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLGEpe2Z1bmN0aW9uIG8oZSl7dHJ5e2woci5uZXh0KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXtsKHIudGhyb3coZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIGwoZSl7dmFyIHQ7ZS5kb25lP2koZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8scyl9bCgocj1yLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfSwkYT1mdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxhLG89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmaVswXSl0aHJvdyBpWzFdO3JldHVybiBpWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGE9e25leHQ6cygwKSx0aHJvdzpzKDEpLHJldHVybjpzKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoYVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxhO2Z1bmN0aW9uIHMoYSl7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBmdW5jdGlvbihhKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO287KXRyeXtpZihuPTEsciYmKGk9MiZhWzBdP3IucmV0dXJuOmFbMF0/ci50aHJvd3x8KChpPXIucmV0dXJuKSYmaS5jYWxsKHIpLDApOnIubmV4dCkmJiEoaT1pLmNhbGwocixhWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gocj0wLGkmJihhPVsyJmFbMF0saS52YWx1ZV0pLGFbMF0pe2Nhc2UgMDpjYXNlIDE6aT1hO2JyZWFrO2Nhc2UgNDpyZXR1cm4gby5sYWJlbCsrLHt2YWx1ZTphWzFdLGRvbmU6ITF9O2Nhc2UgNTpvLmxhYmVsKysscj1hWzFdLGE9WzBdO2NvbnRpbnVlO2Nhc2UgNzphPW8ub3BzLnBvcCgpLG8udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoaT1vLnRyeXMsKGk9aS5sZW5ndGg+MCYmaVtpLmxlbmd0aC0xXSl8fDYhPT1hWzBdJiYyIT09YVswXSkpe289MDtjb250aW51ZX1pZigzPT09YVswXSYmKCFpfHxhWzFdPmlbMF0mJmFbMV08aVszXSkpe28ubGFiZWw9YVsxXTticmVha31pZig2PT09YVswXSYmby5sYWJlbDxpWzFdKXtvLmxhYmVsPWlbMV0saT1hO2JyZWFrfWlmKGkmJm8ubGFiZWw8aVsyXSl7by5sYWJlbD1pWzJdLG8ub3BzLnB1c2goYSk7YnJlYWt9aVsyXSYmby5vcHMucG9wKCksby50cnlzLnBvcCgpO2NvbnRpbnVlfWE9dC5jYWxsKGUsbyl9Y2F0Y2goZSl7YT1bNixlXSxyPTB9ZmluYWxseXtuPWk9MH1pZig1JmFbMF0pdGhyb3cgYVsxXTtyZXR1cm57dmFsdWU6YVswXT9hWzFdOnZvaWQgMCxkb25lOiEwfX0oW2Esc10pfX19LEphPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLnJlYWREaXJlY3Rvcnk9ZSx0aGlzLmF0cmlidXRlQ29tcGxldGlvbnM9W119cmV0dXJuIGUucHJvdG90eXBlLm9uSHRtbEF0dHJpYnV0ZVZhbHVlPWZ1bmN0aW9uKGUpeyhmdW5jdGlvbihlLHQpe2lmKCJzcmMiPT09dHx8ImhyZWYiPT09dClyZXR1cm4hMDt2YXIgbj1aYVtlXTtpZihuKXJldHVybiJzdHJpbmciPT10eXBlb2Ygbj9uPT09dDotMSE9PW4uaW5kZXhPZih0KTtyZXR1cm4hMX0pKGUudGFnLGUuYXR0cmlidXRlKSYmdGhpcy5hdHJpYnV0ZUNvbXBsZXRpb25zLnB1c2goZSl9LGUucHJvdG90eXBlLmNvbXB1dGVDb21wbGV0aW9ucz1mdW5jdGlvbihlLHQpe3JldHVybiBHYSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIG4scixpLGEsbyxzLGwsYyxoLGQ7cmV0dXJuICRhKHRoaXMsKGZ1bmN0aW9uKHUpe3N3aXRjaCh1LmxhYmVsKXtjYXNlIDA6bj17aXRlbXM6W10saXNJbmNvbXBsZXRlOiExfSxyPTAsaT10aGlzLmF0cmlidXRlQ29tcGxldGlvbnMsdS5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gcjxpLmxlbmd0aD8oYT1pW3JdLGZ1bmN0aW9uKGUpe2lmKEhhKGUsImh0dHAiKXx8SGEoZSwiaHR0cHMiKXx8SGEoZSwiLy8iKSlyZXR1cm4hMTtyZXR1cm4hMH0obz1mdW5jdGlvbihlKXtyZXR1cm4gSGEoZSwiJyIpfHxIYShlLCciJyk/ZS5zbGljZSgxLC0xKTplfShlLmdldFRleHQoYS5yYW5nZSkpKT8iLiIhPT1vJiYiLi4iIT09bz9bMywyXToobi5pc0luY29tcGxldGU9ITAsWzMsNF0pOlszLDRdKTpbMyw1XTtjYXNlIDI6cmV0dXJuIHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9ZS5sYXN0SW5kZXhPZigiLyIpO2lmKC0xPT09aSlyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1RYShlLnN0YXJ0LHQpLGk9UWEoZS5lbmQsbik7cmV0dXJuIG9yLmNyZWF0ZShyLGkpfShuLDEsLTEpO2Vsc2V7dmFyIGE9dC5zbGljZShpKzEpLG89UWEobi5lbmQsLTEtYS5sZW5ndGgpLHM9YS5pbmRleE9mKCIgIiksbD12b2lkIDA7bD0tMSE9PXM/UWEobyxzKTpRYShuLmVuZCwtMSkscj1vci5jcmVhdGUobyxsKX1yZXR1cm4gcn0oYS52YWx1ZSxvLGEucmFuZ2UpLFs0LHRoaXMucHJvdmlkZVBhdGhTdWdnZXN0aW9ucyhhLnZhbHVlLHMsZSx0KV07Y2FzZSAzOmZvcihsPXUuc2VudCgpLGM9MCxoPWw7YzxoLmxlbmd0aDtjKyspZD1oW2NdLG4uaXRlbXMucHVzaChkKTt1LmxhYmVsPTQ7Y2FzZSA0OnJldHVybiByKyssWzMsMV07Y2FzZSA1OnJldHVyblsyLG5dfX0pKX0pKX0sZS5wcm90b3R5cGUucHJvdmlkZVBhdGhTdWdnZXN0aW9ucz1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gR2EodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBpLGEsbyxzLGwsYyxoLGQsdTtyZXR1cm4gJGEodGhpcywoZnVuY3Rpb24ocCl7c3dpdGNoKHAubGFiZWwpe2Nhc2UgMDppZihpPWUuc3Vic3RyaW5nKDAsZS5sYXN0SW5kZXhPZigiLyIpKzEpLCEoYT1yLnJlc29sdmVSZWZlcmVuY2UoaXx8Ii4iLG4udXJpKSkpcmV0dXJuWzMsNF07cC5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gcC50cnlzLnB1c2goWzEsMywsNF0pLG89W10sWzQsdGhpcy5yZWFkRGlyZWN0b3J5KGEpXTtjYXNlIDI6Zm9yKHM9cC5zZW50KCksbD0wLGM9cztsPGMubGVuZ3RoO2wrKyloPWNbbF0sZD1oWzBdLHU9aFsxXSxkLmNoYXJDb2RlQXQoMCkhPT1YYSYmby5wdXNoKFlhKGQsdT09PWFhLkRpcmVjdG9yeSx0KSk7cmV0dXJuWzIsb107Y2FzZSAzOnJldHVybiBwLnNlbnQoKSxbMyw0XTtjYXNlIDQ6cmV0dXJuWzIsW11dfX0pKX0pKX0sZX0oKSxYYT0iLiIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBZYShlLHQsbil7cmV0dXJuIHQ/e2xhYmVsOmUrPSIvIixraW5kOm9pLkZvbGRlcix0ZXh0RWRpdDpOci5yZXBsYWNlKG4sZSksY29tbWFuZDp7dGl0bGU6IlN1Z2dlc3QiLGNvbW1hbmQ6ImVkaXRvci5hY3Rpb24udHJpZ2dlclN1Z2dlc3QifX06e2xhYmVsOmUsa2luZDpvaS5GaWxlLHRleHRFZGl0Ok5yLnJlcGxhY2UobixlKX19ZnVuY3Rpb24gUWEoZSx0KXtyZXR1cm4gaXIuY3JlYXRlKGUubGluZSxlLmNoYXJhY3Rlcit0KX12YXIgWmE9e2E6ImhyZWYiLGFyZWE6ImhyZWYiLGJvZHk6ImJhY2tncm91bmQiLGRlbDoiY2l0ZSIsZm9ybToiYWN0aW9uIixmcmFtZTpbInNyYyIsImxvbmdkZXNjIl0saW1nOlsic3JjIiwibG9uZ2Rlc2MiXSxpbnM6ImNpdGUiLGxpbms6ImhyZWYiLG9iamVjdDoiZGF0YSIscToiY2l0ZSIsc2NyaXB0OiJzcmMiLGF1ZGlvOiJzcmMiLGJ1dHRvbjoiZm9ybWFjdGlvbiIsY29tbWFuZDoiaWNvbiIsZW1iZWQ6InNyYyIsaHRtbDoibWFuaWZlc3QiLGlucHV0Olsic3JjIiwiZm9ybWFjdGlvbiJdLHNvdXJjZToic3JjIix0cmFjazoic3JjIix2aWRlbzpbInNyYyIsInBvc3RlciJdfSxlbz1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24oaSxhKXtmdW5jdGlvbiBvKGUpe3RyeXtsKHIubmV4dChlKSl9Y2F0Y2goZSl7YShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7bChyLnRocm93KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiBsKGUpe3ZhciB0O2UuZG9uZT9pKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihvLHMpfWwoKHI9ci5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX0sdG89ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksYSxvPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmlbMF0pdGhyb3cgaVsxXTtyZXR1cm4gaVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBhPXtuZXh0OnMoMCksdGhyb3c6cygxKSxyZXR1cm46cygyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGFbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksYTtmdW5jdGlvbiBzKGEpe3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gZnVuY3Rpb24oYSl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtvOyl0cnl7aWYobj0xLHImJihpPTImYVswXT9yLnJldHVybjphWzBdP3IudGhyb3d8fCgoaT1yLnJldHVybikmJmkuY2FsbChyKSwwKTpyLm5leHQpJiYhKGk9aS5jYWxsKHIsYVsxXSkpLmRvbmUpcmV0dXJuIGk7c3dpdGNoKHI9MCxpJiYoYT1bMiZhWzBdLGkudmFsdWVdKSxhWzBdKXtjYXNlIDA6Y2FzZSAxOmk9YTticmVhaztjYXNlIDQ6cmV0dXJuIG8ubGFiZWwrKyx7dmFsdWU6YVsxXSxkb25lOiExfTtjYXNlIDU6by5sYWJlbCsrLHI9YVsxXSxhPVswXTtjb250aW51ZTtjYXNlIDc6YT1vLm9wcy5wb3AoKSxvLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKGk9by50cnlzLChpPWkubGVuZ3RoPjAmJmlbaS5sZW5ndGgtMV0pfHw2IT09YVswXSYmMiE9PWFbMF0pKXtvPTA7Y29udGludWV9aWYoMz09PWFbMF0mJighaXx8YVsxXT5pWzBdJiZhWzFdPGlbM10pKXtvLmxhYmVsPWFbMV07YnJlYWt9aWYoNj09PWFbMF0mJm8ubGFiZWw8aVsxXSl7by5sYWJlbD1pWzFdLGk9YTticmVha31pZihpJiZvLmxhYmVsPGlbMl0pe28ubGFiZWw9aVsyXSxvLm9wcy5wdXNoKGEpO2JyZWFrfWlbMl0mJm8ub3BzLnBvcCgpLG8udHJ5cy5wb3AoKTtjb250aW51ZX1hPXQuY2FsbChlLG8pfWNhdGNoKGUpe2E9WzYsZV0scj0wfWZpbmFsbHl7bj1pPTB9aWYoNSZhWzBdKXRocm93IGFbMV07cmV0dXJue3ZhbHVlOmFbMF0/YVsxXTp2b2lkIDAsZG9uZTohMH19KFthLHNdKX19fSxubz1abigpLHJvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMubHNPcHRpb25zPWUsdGhpcy5kYXRhTWFuYWdlcj10LHRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cz1bXX1yZXR1cm4gZS5wcm90b3R5cGUuc2V0Q29tcGxldGlvblBhcnRpY2lwYW50cz1mdW5jdGlvbihlKXt0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9ZXx8W119LGUucHJvdG90eXBlLmRvQ29tcGxldGUyPWZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIGVvKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgYSxvLHMsbDtyZXR1cm4gdG8odGhpcywoZnVuY3Rpb24oYyl7c3dpdGNoKGMubGFiZWwpe2Nhc2UgMDppZighdGhpcy5sc09wdGlvbnMuZmlsZVN5c3RlbVByb3ZpZGVyfHwhdGhpcy5sc09wdGlvbnMuZmlsZVN5c3RlbVByb3ZpZGVyLnJlYWREaXJlY3RvcnkpcmV0dXJuWzIsdGhpcy5kb0NvbXBsZXRlKGUsdCxuLGkpXTthPW5ldyBKYSh0aGlzLmxzT3B0aW9ucy5maWxlU3lzdGVtUHJvdmlkZXIucmVhZERpcmVjdG9yeSksbz10aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHMsdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzPVthXS5jb25jYXQobykscz10aGlzLmRvQ29tcGxldGUoZSx0LG4saSksYy5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gYy50cnlzLnB1c2goWzEsLDMsNF0pLFs0LGEuY29tcHV0ZUNvbXBsZXRpb25zKGUscildO2Nhc2UgMjpyZXR1cm4gbD1jLnNlbnQoKSxbMix7aXNJbmNvbXBsZXRlOnMuaXNJbmNvbXBsZXRlfHxsLmlzSW5jb21wbGV0ZSxpdGVtczpsLml0ZW1zLmNvbmNhdChzLml0ZW1zKX1dO2Nhc2UgMzpyZXR1cm4gdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzPW8sWzddO2Nhc2UgNDpyZXR1cm5bMl19fSkpfSkpfSxlLnByb3RvdHlwZS5kb0NvbXBsZXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXRoaXMuX2RvQ29tcGxldGUoZSx0LG4scik7cmV0dXJuIHRoaXMuY29udmVydENvbXBsZXRpb25MaXN0KGkpfSxlLnByb3RvdHlwZS5fZG9Db21wbGV0ZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT17aXNJbmNvbXBsZXRlOiExLGl0ZW1zOltdfSxhPXRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cyxvPXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YVByb3ZpZGVycygpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNBcHBsaWNhYmxlKGUubGFuZ3VhZ2VJZCkmJighcnx8ITEhPT1yW3QuZ2V0SWQoKV0pfSkpLHM9dGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCksbD1lLmdldFRleHQoKSxjPWUub2Zmc2V0QXQodCksaD1uLmZpbmROb2RlQmVmb3JlKGMpO2lmKCFoKXJldHVybiBpO3ZhciBkLHU9RWEobCxoLnN0YXJ0KSxwPSIiO2Z1bmN0aW9uIG0odCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49YyksdD5jJiYodD1jKSx7c3RhcnQ6ZS5wb3NpdGlvbkF0KHQpLGVuZDplLnBvc2l0aW9uQXQobil9fWZ1bmN0aW9uIGYoZSx0KXt2YXIgbj1tKGUsdCk7cmV0dXJuIG8uZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5wcm92aWRlVGFncygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2kuaXRlbXMucHVzaCh7bGFiZWw6ZS5uYW1lLGtpbmQ6b2kuUHJvcGVydHksZG9jdW1lbnRhdGlvbjpqYShlLHZvaWQgMCxzKSx0ZXh0RWRpdDpOci5yZXBsYWNlKG4sZS5uYW1lKSxpbnNlcnRUZXh0Rm9ybWF0OmxpLlBsYWluVGV4dH0pfSkpfSkpLGl9ZnVuY3Rpb24gZyhlKXtmb3IodmFyIHQ9ZTt0PjA7KXt2YXIgbj1sLmNoYXJBdCh0LTEpO2lmKCJcblxyIi5pbmRleE9mKG4pPj0wKXJldHVybiBsLnN1YnN0cmluZyh0LGUpO2lmKCFpbyhuKSlyZXR1cm4gbnVsbDt0LS19cmV0dXJuIGwuc3Vic3RyaW5nKDAsZSl9ZnVuY3Rpb24gYihlLHQsbil7dm9pZCAwPT09biYmKG49Yyk7dmFyIHI9bShlLG4pLGE9YW8obCxuLG5hLldpdGhpbkVuZFRhZyxlYS5FbmRUYWdDbG9zZSk/IiI6Ij4iLGQ9aDtmb3IodCYmKGQ9ZC5wYXJlbnQpO2Q7KXt2YXIgdT1kLnRhZztpZih1JiYoIWQuY2xvc2VkfHxkLmVuZFRhZ1N0YXJ0JiZkLmVuZFRhZ1N0YXJ0PmMpKXt2YXIgcD17bGFiZWw6Ii8iK3Usa2luZDpvaS5Qcm9wZXJ0eSxmaWx0ZXJUZXh0OiIvIit1LHRleHRFZGl0Ok5yLnJlcGxhY2UociwiLyIrdSthKSxpbnNlcnRUZXh0Rm9ybWF0OmxpLlBsYWluVGV4dH0sZj1nKGQuc3RhcnQpLGI9ZyhlLTEpO2lmKG51bGwhPT1mJiZudWxsIT09YiYmZiE9PWIpe3ZhciB3PWYrIjwvIit1K2E7cC50ZXh0RWRpdD1Oci5yZXBsYWNlKG0oZS0xLWIubGVuZ3RoKSx3KSxwLmZpbHRlclRleHQ9YisiPC8iK3V9cmV0dXJuIGkuaXRlbXMucHVzaChwKSxpfWQ9ZC5wYXJlbnR9cmV0dXJuIHR8fG8uZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5wcm92aWRlVGFncygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2kuaXRlbXMucHVzaCh7bGFiZWw6Ii8iK2UubmFtZSxraW5kOm9pLlByb3BlcnR5LGRvY3VtZW50YXRpb246amEoZSx2b2lkIDAscyksZmlsdGVyVGV4dDoiLyIrZS5uYW1lK2EsdGV4dEVkaXQ6TnIucmVwbGFjZShyLCIvIitlLm5hbWUrYSksaW5zZXJ0VGV4dEZvcm1hdDpsaS5QbGFpblRleHR9KX0pKX0pKSxpfWZ1bmN0aW9uIHcodCxuKXtpZihyJiZyLmhpZGVBdXRvQ29tcGxldGVQcm9wb3NhbHMpcmV0dXJuIGk7aWYoIVJhKG4pKXt2YXIgYT1lLnBvc2l0aW9uQXQodCk7aS5pdGVtcy5wdXNoKHtsYWJlbDoiPC8iK24rIj4iLGtpbmQ6b2kuUHJvcGVydHksZmlsdGVyVGV4dDoiPC8iK24rIj4iLHRleHRFZGl0Ok5yLmluc2VydChhLCIkMDwvIituKyI+IiksaW5zZXJ0VGV4dEZvcm1hdDpsaS5TbmlwcGV0fSl9cmV0dXJuIGl9ZnVuY3Rpb24gXyhlLHQpe3JldHVybiBmKGUsdCksYihlLCEwLHQpLGl9ZnVuY3Rpb24gdihlLHQpe3ZhciBhO3ZvaWQgMD09PXQmJih0PWMpO2Zvcih2YXIgZD1jO2Q8dCYmIjwiIT09bFtkXTspZCsrO3ZhciB1PWwuc3Vic3RyaW5nKGUsdCksZj1tKGUsZCksZz0iIjtpZighYW8obCx0LG5hLkFmdGVyQXR0cmlidXRlTmFtZSxlYS5EZWxpbWl0ZXJBc3NpZ24pKXt2YXIgYj1udWxsIT09KGE9bnVsbD09cj92b2lkIDA6ci5hdHRyaWJ1dGVEZWZhdWx0VmFsdWUpJiZ2b2lkIDAhPT1hP2E6ImRvdWJsZXF1b3RlcyI7Zz0iZW1wdHkiPT09Yj8iPSQxIjoic2luZ2xlcXVvdGVzIj09PWI/Ij0nJDEnIjonPSIkMSInfXZhciB3LF89KHc9T2JqZWN0LmNyZWF0ZShudWxsKSxoLmF0dHJpYnV0ZU5hbWVzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3dbZV09ITB9KSksdyk7cmV0dXJuIF9bdV09ITEsby5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnByb3ZpZGVBdHRyaWJ1dGVzKHApLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKCFfW2UubmFtZV0pe19bZS5uYW1lXT0hMDt2YXIgdCxuPWUubmFtZTsidiIhPT1lLnZhbHVlU2V0JiZnLmxlbmd0aCYmKG4rPWcsKGUudmFsdWVTZXR8fCJzdHlsZSI9PT1lLm5hbWUpJiYodD17dGl0bGU6IlN1Z2dlc3QiLGNvbW1hbmQ6ImVkaXRvci5hY3Rpb24udHJpZ2dlclN1Z2dlc3QifSkpLGkuaXRlbXMucHVzaCh7bGFiZWw6ZS5uYW1lLGtpbmQ6ImhhbmRsZXIiPT09ZS52YWx1ZVNldD9vaS5GdW5jdGlvbjpvaS5WYWx1ZSxkb2N1bWVudGF0aW9uOmphKGUsdm9pZCAwLHMpLHRleHRFZGl0Ok5yLnJlcGxhY2UoZixuKSxpbnNlcnRUZXh0Rm9ybWF0OmxpLlNuaXBwZXQsY29tbWFuZDp0fSl9fSkpfSkpLGZ1bmN0aW9uKGUsdCl7dmFyIHI9ImRhdGEtIixhPXt9O2Z1bmN0aW9uIG8oZSl7ZS5hdHRyaWJ1dGVOYW1lcy5mb3JFYWNoKChmdW5jdGlvbihlKXshSGEoZSxyKXx8YVtlXXx8dFtlXXx8KGFbZV09ZSsnPSIkMSInKX0pKSxlLmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBvKGUpfSkpfWFbcl09IiIuY29uY2F0KHIsJyQxPSIkMiInKSxuJiZuLnJvb3RzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBvKGUpfSkpO09iamVjdC5rZXlzKGEpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBpLml0ZW1zLnB1c2goe2xhYmVsOnQsa2luZDpvaS5WYWx1ZSx0ZXh0RWRpdDpOci5yZXBsYWNlKGUsYVt0XSksaW5zZXJ0VGV4dEZvcm1hdDpsaS5TbmlwcGV0fSl9KSl9KGYsXyksaX1mdW5jdGlvbiB5KG4scil7dmFyIGgsdSxmLGc7aWYodm9pZCAwPT09ciYmKHI9YyksYz5uJiZjPD1yJiYoZz1sW25dLC9eWyInXSokLy50ZXN0KGcpKSl7dmFyIGI9bisxLHc9cjtyPm4mJmxbci0xXT09PWxbbl0mJnctLTt2YXIgXz1mdW5jdGlvbihlLHQsbil7Zm9yKDt0Pm4mJiFpbyhlW3QtMV0pOyl0LS07cmV0dXJuIHR9KGwsYyxiKSx2PWZ1bmN0aW9uKGUsdCxuKXtmb3IoO3Q8biYmIWlvKGVbdF0pOyl0Kys7cmV0dXJuIHR9KGwsYyx3KTtoPW0oXyx2KSxmPWM+PWImJmM8PXc/bC5zdWJzdHJpbmcoYixjKToiIix1PSExfWVsc2UgaD1tKG4sciksZj1sLnN1YnN0cmluZyhuLGMpLHU9ITA7aWYoYS5sZW5ndGg+MClmb3IodmFyIHk9cC50b0xvd2VyQ2FzZSgpLFQ9ZC50b0xvd2VyQ2FzZSgpLGs9bShuLHIpLEM9MCx4PWE7Qzx4Lmxlbmd0aDtDKyspe3ZhciBMPXhbQ107TC5vbkh0bWxBdHRyaWJ1dGVWYWx1ZSYmTC5vbkh0bWxBdHRyaWJ1dGVWYWx1ZSh7ZG9jdW1lbnQ6ZSxwb3NpdGlvbjp0LHRhZzp5LGF0dHJpYnV0ZTpULHZhbHVlOmYscmFuZ2U6a30pfXJldHVybiBvLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UucHJvdmlkZVZhbHVlcyhwLGQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PXU/JyInK2UubmFtZSsnIic6ZS5uYW1lO2kuaXRlbXMucHVzaCh7bGFiZWw6ZS5uYW1lLGZpbHRlclRleHQ6dCxraW5kOm9pLlVuaXQsZG9jdW1lbnRhdGlvbjpqYShlLHZvaWQgMCxzKSx0ZXh0RWRpdDpOci5yZXBsYWNlKGgsdCksaW5zZXJ0VGV4dEZvcm1hdDpsaS5QbGFpblRleHR9KX0pKX0pKSxTKCksaX1mdW5jdGlvbiBUKGUpe3JldHVybiBjPT09dS5nZXRUb2tlbkVuZCgpJiYoeD11LnNjYW4oKSk9PT1lJiZ1LmdldFRva2VuT2Zmc2V0KCk9PT1jP3UuZ2V0VG9rZW5FbmQoKTpjfWZ1bmN0aW9uIGsoKXtmb3IodmFyIG49MCxyPWE7bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl07aS5vbkh0bWxDb250ZW50JiZpLm9uSHRtbENvbnRlbnQoe2RvY3VtZW50OmUscG9zaXRpb246dH0pfXJldHVybiBTKCl9ZnVuY3Rpb24gUygpe2Zvcih2YXIgZSxuLHIsYT1jLTEsbz10LmNoYXJhY3RlcjthPj0wJiZWYShsLGEpOylhLS0sby0tO2lmKGE+PTAmJiImIj09PWxbYV0pe3ZhciBzPW9yLmNyZWF0ZShpci5jcmVhdGUodC5saW5lLG8tMSksdCk7Zm9yKHZhciBoIGluIFVhKWlmKG49IjsiLHI9dm9pZCAwLChyPShlPWgpLmxlbmd0aC1uLmxlbmd0aCk+MD9lLmxhc3RJbmRleE9mKG4pPT09cjowPT09ciYmZT09PW4pe3ZhciBkPSImIitoO2kuaXRlbXMucHVzaCh7bGFiZWw6ZCxraW5kOm9pLktleXdvcmQsZG9jdW1lbnRhdGlvbjpubygiZW50aXR5LnByb3Bvc2UiLCJDaGFyYWN0ZXIgZW50aXR5IHJlcHJlc2VudGluZyAnIi5jb25jYXQoVWFbaF0sIiciKSksdGV4dEVkaXQ6TnIucmVwbGFjZShzLGQpLGluc2VydFRleHRGb3JtYXQ6bGkuUGxhaW5UZXh0fSl9fXJldHVybiBpfWZvcih2YXIgQyx4PXUuc2NhbigpO3ghPT1lYS5FT1MmJnUuZ2V0VG9rZW5PZmZzZXQoKTw9Yzspe3N3aXRjaCh4KXtjYXNlIGVhLlN0YXJ0VGFnT3BlbjppZih1LmdldFRva2VuRW5kKCk9PT1jKXt2YXIgTD1UKGVhLlN0YXJ0VGFnKTtyZXR1cm4gMD09PXQubGluZSYmKEM9dm9pZCAwLEM9bShjLEwpLGkuaXRlbXMucHVzaCh7bGFiZWw6IiFET0NUWVBFIixraW5kOm9pLlByb3BlcnR5LGRvY3VtZW50YXRpb246IkEgcHJlYW1ibGUgZm9yIGFuIEhUTUwgZG9jdW1lbnQuIix0ZXh0RWRpdDpOci5yZXBsYWNlKEMsIiFET0NUWVBFIGh0bWw+IiksaW5zZXJ0VGV4dEZvcm1hdDpsaS5QbGFpblRleHR9KSksXyhjLEwpfWJyZWFrO2Nhc2UgZWEuU3RhcnRUYWc6aWYodS5nZXRUb2tlbk9mZnNldCgpPD1jJiZjPD11LmdldFRva2VuRW5kKCkpcmV0dXJuIGYodS5nZXRUb2tlbk9mZnNldCgpLHUuZ2V0VG9rZW5FbmQoKSk7cD11LmdldFRva2VuVGV4dCgpO2JyZWFrO2Nhc2UgZWEuQXR0cmlidXRlTmFtZTppZih1LmdldFRva2VuT2Zmc2V0KCk8PWMmJmM8PXUuZ2V0VG9rZW5FbmQoKSlyZXR1cm4gdih1LmdldFRva2VuT2Zmc2V0KCksdS5nZXRUb2tlbkVuZCgpKTtkPXUuZ2V0VG9rZW5UZXh0KCk7YnJlYWs7Y2FzZSBlYS5EZWxpbWl0ZXJBc3NpZ246aWYodS5nZXRUb2tlbkVuZCgpPT09Yyl7TD1UKGVhLkF0dHJpYnV0ZVZhbHVlKTtyZXR1cm4geShjLEwpfWJyZWFrO2Nhc2UgZWEuQXR0cmlidXRlVmFsdWU6aWYodS5nZXRUb2tlbk9mZnNldCgpPD1jJiZjPD11LmdldFRva2VuRW5kKCkpcmV0dXJuIHkodS5nZXRUb2tlbk9mZnNldCgpLHUuZ2V0VG9rZW5FbmQoKSk7YnJlYWs7Y2FzZSBlYS5XaGl0ZXNwYWNlOmlmKGM8PXUuZ2V0VG9rZW5FbmQoKSlzd2l0Y2godS5nZXRTY2FubmVyU3RhdGUoKSl7Y2FzZSBuYS5BZnRlck9wZW5pbmdTdGFydFRhZzpyZXR1cm4gXyh1LmdldFRva2VuT2Zmc2V0KCksVChlYS5TdGFydFRhZykpO2Nhc2UgbmEuV2l0aGluVGFnOmNhc2UgbmEuQWZ0ZXJBdHRyaWJ1dGVOYW1lOnJldHVybiB2KHUuZ2V0VG9rZW5FbmQoKSk7Y2FzZSBuYS5CZWZvcmVBdHRyaWJ1dGVWYWx1ZTpyZXR1cm4geSh1LmdldFRva2VuRW5kKCkpO2Nhc2UgbmEuQWZ0ZXJPcGVuaW5nRW5kVGFnOnJldHVybiBiKHUuZ2V0VG9rZW5PZmZzZXQoKS0xLCExKTtjYXNlIG5hLldpdGhpbkNvbnRlbnQ6cmV0dXJuIGsoKX1icmVhaztjYXNlIGVhLkVuZFRhZ09wZW46aWYoYzw9dS5nZXRUb2tlbkVuZCgpKXJldHVybiBiKHUuZ2V0VG9rZW5PZmZzZXQoKSsxLCExLFQoZWEuRW5kVGFnKSk7YnJlYWs7Y2FzZSBlYS5FbmRUYWc6aWYoYzw9dS5nZXRUb2tlbkVuZCgpKWZvcih2YXIgRT11LmdldFRva2VuT2Zmc2V0KCktMTtFPj0wOyl7dmFyIEE9bC5jaGFyQXQoRSk7aWYoIi8iPT09QSlyZXR1cm4gYihFLCExLHUuZ2V0VG9rZW5FbmQoKSk7aWYoIWlvKEEpKWJyZWFrO0UtLX1icmVhaztjYXNlIGVhLlN0YXJ0VGFnQ2xvc2U6aWYoYzw9dS5nZXRUb2tlbkVuZCgpJiZwKXJldHVybiB3KHUuZ2V0VG9rZW5FbmQoKSxwKTticmVhaztjYXNlIGVhLkNvbnRlbnQ6aWYoYzw9dS5nZXRUb2tlbkVuZCgpKXJldHVybiBrKCk7YnJlYWs7ZGVmYXVsdDppZihjPD11LmdldFRva2VuRW5kKCkpcmV0dXJuIGl9eD11LnNjYW4oKX1yZXR1cm4gaX0sZS5wcm90b3R5cGUuZG9RdW90ZUNvbXBsZXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLGE9ZS5vZmZzZXRBdCh0KTtpZihhPD0wKXJldHVybiBudWxsO3ZhciBvPW51bGwhPT0oaT1udWxsPT1yP3ZvaWQgMDpyLmF0dHJpYnV0ZURlZmF1bHRWYWx1ZSkmJnZvaWQgMCE9PWk/aToiZG91YmxlcXVvdGVzIjtpZigiZW1wdHkiPT09bylyZXR1cm4gbnVsbDtpZigiPSIhPT1lLmdldFRleHQoKS5jaGFyQXQoYS0xKSlyZXR1cm4gbnVsbDt2YXIgcz0iZG91YmxlcXVvdGVzIj09PW8/JyIkMSInOiInJDEnIixsPW4uZmluZE5vZGVCZWZvcmUoYSk7aWYobCYmbC5hdHRyaWJ1dGVzJiZsLnN0YXJ0PGEmJighbC5lbmRUYWdTdGFydHx8bC5lbmRUYWdTdGFydD5hKSlmb3IodmFyIGM9RWEoZS5nZXRUZXh0KCksbC5zdGFydCksaD1jLnNjYW4oKTtoIT09ZWEuRU9TJiZjLmdldFRva2VuRW5kKCk8PWE7KXtpZihoPT09ZWEuQXR0cmlidXRlTmFtZSYmYy5nZXRUb2tlbkVuZCgpPT09YS0xKXJldHVybihoPWMuc2NhbigpKSE9PWVhLkRlbGltaXRlckFzc2lnbnx8KGg9Yy5zY2FuKCkpPT09ZWEuVW5rbm93bnx8aD09PWVhLkF0dHJpYnV0ZVZhbHVlP251bGw6cztoPWMuc2NhbigpfXJldHVybiBudWxsfSxlLnByb3RvdHlwZS5kb1RhZ0NvbXBsZXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLm9mZnNldEF0KHQpO2lmKHI8PTApcmV0dXJuIG51bGw7dmFyIGk9ZS5nZXRUZXh0KCkuY2hhckF0KHItMSk7aWYoIj4iPT09aSl7aWYoKG89bi5maW5kTm9kZUJlZm9yZShyKSkmJm8udGFnJiYhUmEoby50YWcpJiZvLnN0YXJ0PHImJighby5lbmRUYWdTdGFydHx8by5lbmRUYWdTdGFydD5yKSlmb3IodmFyIGE9KHM9RWEoZS5nZXRUZXh0KCksby5zdGFydCkpLnNjYW4oKTthIT09ZWEuRU9TJiZzLmdldFRva2VuRW5kKCk8PXI7KXtpZihhPT09ZWEuU3RhcnRUYWdDbG9zZSYmcy5nZXRUb2tlbkVuZCgpPT09cilyZXR1cm4iJDA8LyIuY29uY2F0KG8udGFnLCI+Iik7YT1zLnNjYW4oKX19ZWxzZSBpZigiLyI9PT1pKXtmb3IodmFyIG89bi5maW5kTm9kZUJlZm9yZShyKTtvJiZvLmNsb3NlZCYmIShvLmVuZFRhZ1N0YXJ0JiZvLmVuZFRhZ1N0YXJ0PnIpOylvPW8ucGFyZW50O2lmKG8mJm8udGFnKXt2YXIgcztmb3IoYT0ocz1FYShlLmdldFRleHQoKSxvLnN0YXJ0KSkuc2NhbigpO2EhPT1lYS5FT1MmJnMuZ2V0VG9rZW5FbmQoKTw9cjspe2lmKGE9PT1lYS5FbmRUYWdPcGVuJiZzLmdldFRva2VuRW5kKCk9PT1yKXJldHVybiIiLmNvbmNhdChvLnRhZywiPiIpO2E9cy5zY2FuKCl9fX1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuY29udmVydENvbXBsZXRpb25MaXN0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKXx8ZS5pdGVtcy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmRvY3VtZW50YXRpb24mJiJzdHJpbmciIT10eXBlb2YgZS5kb2N1bWVudGF0aW9uJiYoZS5kb2N1bWVudGF0aW9uPXtraW5kOiJwbGFpbnRleHQiLHZhbHVlOmUuZG9jdW1lbnRhdGlvbi52YWx1ZX0pfSkpLGV9LGUucHJvdG90eXBlLmRvZXNTdXBwb3J0TWFya2Rvd249ZnVuY3Rpb24oKXt2YXIgZSx0LG47aWYoIUJhKHRoaXMuc3VwcG9ydHNNYXJrZG93bikpe2lmKCFCYSh0aGlzLmxzT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMpKXJldHVybiB0aGlzLnN1cHBvcnRzTWFya2Rvd249ITAsdGhpcy5zdXBwb3J0c01hcmtkb3duO3ZhciByPW51bGw9PT0obj1udWxsPT09KHQ9bnVsbD09PShlPXRoaXMubHNPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcy50ZXh0RG9jdW1lbnQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNvbXBsZXRpb24pfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmNvbXBsZXRpb25JdGVtKXx8dm9pZCAwPT09bj92b2lkIDA6bi5kb2N1bWVudGF0aW9uRm9ybWF0O3RoaXMuc3VwcG9ydHNNYXJrZG93bj1BcnJheS5pc0FycmF5KHIpJiYtMSE9PXIuaW5kZXhPZihyaS5NYXJrZG93bil9cmV0dXJuIHRoaXMuc3VwcG9ydHNNYXJrZG93bn0sZX0oKTtmdW5jdGlvbiBpbyhlKXtyZXR1cm4vXlxzKiQvLnRlc3QoZSl9ZnVuY3Rpb24gYW8oZSx0LG4scil7Zm9yKHZhciBpPUVhKGUsdCxuKSxhPWkuc2NhbigpO2E9PT1lYS5XaGl0ZXNwYWNlOylhPWkuc2NhbigpO3JldHVybiBhPT09cn12YXIgb28sc28sbG8sY289Wm4oKSxobz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLmxzT3B0aW9ucz1lLHRoaXMuZGF0YU1hbmFnZXI9dH1yZXR1cm4gZS5wcm90b3R5cGUuZG9Ib3Zlcj1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT10aGlzLmNvbnZlcnRDb250ZW50cy5iaW5kKHRoaXMpLGE9dGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCksbz1lLm9mZnNldEF0KHQpLHM9bi5maW5kTm9kZUF0KG8pLGw9ZS5nZXRUZXh0KCk7aWYoIXN8fCFzLnRhZylyZXR1cm4gbnVsbDt2YXIgYz10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGFQcm92aWRlcnMoKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlzQXBwbGljYWJsZShlLmxhbmd1YWdlSWQpfSkpO2Z1bmN0aW9uIGgoZSx0LG4pe2Zvcih2YXIgbz1mdW5jdGlvbihuKXt2YXIgbz1udWxsO2lmKG4ucHJvdmlkZVRhZ3MoKS5mb3JFYWNoKChmdW5jdGlvbihuKXtpZihuLm5hbWUudG9Mb3dlckNhc2UoKT09PWUudG9Mb3dlckNhc2UoKSl7dmFyIGk9amEobixyLGEpO2l8fChpPXtraW5kOmE/Im1hcmtkb3duIjoicGxhaW50ZXh0Iix2YWx1ZToiIn0pLG89e2NvbnRlbnRzOmkscmFuZ2U6dH19fSkpLG8pcmV0dXJuIG8uY29udGVudHM9aShvLmNvbnRlbnRzKSx7dmFsdWU6b319LHM9MCxsPWM7czxsLmxlbmd0aDtzKyspe3ZhciBoPW8obFtzXSk7aWYoIm9iamVjdCI9PXR5cGVvZiBoKXJldHVybiBoLnZhbHVlfXJldHVybiBudWxsfWZ1bmN0aW9uIGQodCxuKXtmb3IodmFyIHI9RWEoZS5nZXRUZXh0KCksbiksaT1yLnNjYW4oKTtpIT09ZWEuRU9TJiYoci5nZXRUb2tlbkVuZCgpPG98fHIuZ2V0VG9rZW5FbmQoKT09PW8mJmkhPT10KTspaT1yLnNjYW4oKTtyZXR1cm4gaT09PXQmJm88PXIuZ2V0VG9rZW5FbmQoKT97c3RhcnQ6ZS5wb3NpdGlvbkF0KHIuZ2V0VG9rZW5PZmZzZXQoKSksZW5kOmUucG9zaXRpb25BdChyLmdldFRva2VuRW5kKCkpfTpudWxsfWlmKHMuZW5kVGFnU3RhcnQmJm8+PXMuZW5kVGFnU3RhcnQpe3ZhciB1PWQoZWEuRW5kVGFnLHMuZW5kVGFnU3RhcnQpO3JldHVybiB1P2gocy50YWcsdSk6bnVsbH12YXIgcD1kKGVhLlN0YXJ0VGFnLHMuc3RhcnQpO2lmKHApcmV0dXJuIGgocy50YWcscCk7dmFyIG09ZChlYS5BdHRyaWJ1dGVOYW1lLHMuc3RhcnQpO2lmKG0pcmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIG89ZnVuY3Rpb24obyl7dmFyIHM9bnVsbDtpZihvLnByb3ZpZGVBdHRyaWJ1dGVzKGUpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKHQ9PT1lLm5hbWUmJmUuZGVzY3JpcHRpb24pe3ZhciBpPWphKGUscixhKTtzPWk/e2NvbnRlbnRzOmkscmFuZ2U6bn06bnVsbH19KSkscylyZXR1cm4gcy5jb250ZW50cz1pKHMuY29udGVudHMpLHt2YWx1ZTpzfX0scz0wLGw9YztzPGwubGVuZ3RoO3MrKyl7dmFyIGg9byhsW3NdKTtpZigib2JqZWN0Ij09dHlwZW9mIGgpcmV0dXJuIGgudmFsdWV9cmV0dXJuIG51bGx9KGI9cy50YWcsZS5nZXRUZXh0KG0pLG0pO3ZhciBmPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPW8tMSxuPXQuY2hhcmFjdGVyO2U+PTAmJlZhKGwsZSk7KWUtLSxuLS07Zm9yKHZhciByPWUrMSxpPW47VmEobCxyKTspcisrLGkrKztpZihlPj0wJiYiJiI9PT1sW2VdKXtyZXR1cm4iOyI9PT1sW3JdP29yLmNyZWF0ZShpci5jcmVhdGUodC5saW5lLG4pLGlyLmNyZWF0ZSh0LmxpbmUsaSsxKSk6b3IuY3JlYXRlKGlyLmNyZWF0ZSh0LmxpbmUsbiksaXIuY3JlYXRlKHQubGluZSxpKSl9cmV0dXJuIG51bGx9KCk7aWYoZilyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9by0xLG49IiYiO3Q+PTAmJlZhKGUsdCk7KXQtLTtmb3IodCs9MTtWYShlLHQpOyluKz1lW3RdLHQrPTE7cmV0dXJuIG4rIjsifShlKTtmb3IodmFyIHIgaW4gVWEpe3ZhciBhPW51bGw7aWYobj09PSImIityKXt2YXIgcz1VYVtyXS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLGw9IlUrIjtpZihzLmxlbmd0aDw0KWZvcih2YXIgYz00LXMubGVuZ3RoLGg9MDtoPGM7KWwrPSIwIixoKz0xO2wrPXM7dmFyIGQ9Y28oImVudGl0eS5wcm9wb3NlIiwiQ2hhcmFjdGVyIGVudGl0eSByZXByZXNlbnRpbmcgJyIuY29uY2F0KFVhW3JdLCInLCB1bmljb2RlIGVxdWl2YWxlbnQgJyIpLmNvbmNhdChsLCInIikpO2E9ZD97Y29udGVudHM6ZCxyYW5nZTp0fTpudWxsfWlmKGEpcmV0dXJuIGEuY29udGVudHM9aShhLmNvbnRlbnRzKSxhfXJldHVybiBudWxsfShsLGYpO3ZhciBnPWQoZWEuQXR0cmlidXRlVmFsdWUscy5zdGFydCk7aWYoZyl7dmFyIGI9cy50YWcsdz1mdW5jdGlvbihlKXtpZihlLmxlbmd0aDw9MSlyZXR1cm4gZS5yZXBsYWNlKC9bJyJdLywiIik7IiciIT09ZVswXSYmJyInIT09ZVswXXx8KGU9ZS5zbGljZSgxKSk7IiciIT09ZVtlLmxlbmd0aC0xXSYmJyInIT09ZVtlLmxlbmd0aC0xXXx8KGU9ZS5zbGljZSgwLC0xKSk7cmV0dXJuIGV9KGUuZ2V0VGV4dChnKSksXz1mdW5jdGlvbih0LG4pe2Zvcih2YXIgcj1FYShlLmdldFRleHQoKSx0KSxpPXIuc2NhbigpLGE9dm9pZCAwO2khPT1lYS5FT1MmJnIuZ2V0VG9rZW5FbmQoKTw9bjspKGk9ci5zY2FuKCkpPT09ZWEuQXR0cmlidXRlTmFtZSYmKGE9ci5nZXRUb2tlblRleHQoKSk7cmV0dXJuIGF9KHMuc3RhcnQsZS5vZmZzZXRBdChnLnN0YXJ0KSk7aWYoXylyZXR1cm4gZnVuY3Rpb24oZSx0LG4sbyl7Zm9yKHZhciBzPWZ1bmN0aW9uKHMpe3ZhciBsPW51bGw7aWYocy5wcm92aWRlVmFsdWVzKGUsdCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYobj09PWUubmFtZSYmZS5kZXNjcmlwdGlvbil7dmFyIHQ9amEoZSxyLGEpO2w9dD97Y29udGVudHM6dCxyYW5nZTpvfTpudWxsfX0pKSxsKXJldHVybiBsLmNvbnRlbnRzPWkobC5jb250ZW50cykse3ZhbHVlOmx9fSxsPTAsaD1jO2w8aC5sZW5ndGg7bCsrKXt2YXIgZD1zKGhbbF0pO2lmKCJvYmplY3QiPT10eXBlb2YgZClyZXR1cm4gZC52YWx1ZX1yZXR1cm4gbnVsbH0oYixfLHcsZyl9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmNvbnZlcnRDb250ZW50cz1mdW5jdGlvbihlKXtpZighdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCkpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZTtpZigia2luZCJpbiBlKXJldHVybntraW5kOiJwbGFpbnRleHQiLHZhbHVlOmUudmFsdWV9O2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiBlLnZhbHVlO2UubWFwKChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ZTplLnZhbHVlfSkpfXJldHVybiBlfSxlLnByb3RvdHlwZS5kb2VzU3VwcG9ydE1hcmtkb3duPWZ1bmN0aW9uKCl7dmFyIGUsdCxuO2lmKCFCYSh0aGlzLnN1cHBvcnRzTWFya2Rvd24pKXtpZighQmEodGhpcy5sc09wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzKSlyZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3duPSEwLHRoaXMuc3VwcG9ydHNNYXJrZG93bjt2YXIgcj1udWxsPT09KG49bnVsbD09PSh0PW51bGw9PT0oZT10aGlzLmxzT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnRleHREb2N1bWVudCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaG92ZXIpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmNvbnRlbnRGb3JtYXQ7dGhpcy5zdXBwb3J0c01hcmtkb3duPUFycmF5LmlzQXJyYXkocikmJi0xIT09ci5pbmRleE9mKHJpLk1hcmtkb3duKX1yZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3dufSxlfSgpO2Z1bmN0aW9uIHVvKGUsdCl7cmV0dXJuIGV9b289WywsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLl9fcGFyZW50PWUsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX19pbmRlbnRfY291bnQ9LTEsdGhpcy5fX2FsaWdubWVudF9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGV4PTAsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PTAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PS0xLHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD0wLHRoaXMuX19pdGVtcz1bXX1mdW5jdGlvbiBuKGUsdCl7dGhpcy5fX2NhY2hlPVsiIl0sdGhpcy5fX2luZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy5fX2luZGVudF9zdHJpbmc9ZS5pbmRlbnRfY2hhcixlLmluZGVudF93aXRoX3RhYnN8fCh0aGlzLl9faW5kZW50X3N0cmluZz1uZXcgQXJyYXkoZS5pbmRlbnRfc2l6ZSsxKS5qb2luKGUuaW5kZW50X2NoYXIpKSx0PXR8fCIiLGUuaW5kZW50X2xldmVsPjAmJih0PW5ldyBBcnJheShlLmluZGVudF9sZXZlbCsxKS5qb2luKHRoaXMuX19pbmRlbnRfc3RyaW5nKSksdGhpcy5fX2Jhc2Vfc3RyaW5nPXQsdGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aD10Lmxlbmd0aH1mdW5jdGlvbiByKGUscil7dGhpcy5fX2luZGVudF9jYWNoZT1uZXcgbihlLHIpLHRoaXMucmF3PSExLHRoaXMuX2VuZF93aXRoX25ld2xpbmU9ZS5lbmRfd2l0aF9uZXdsaW5lLHRoaXMuaW5kZW50X3NpemU9ZS5pbmRlbnRfc2l6ZSx0aGlzLndyYXBfbGluZV9sZW5ndGg9ZS53cmFwX2xpbmVfbGVuZ3RoLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPWUuaW5kZW50X2VtcHR5X2xpbmVzLHRoaXMuX19saW5lcz1bXSx0aGlzLnByZXZpb3VzX2xpbmU9bnVsbCx0aGlzLmN1cnJlbnRfbGluZT1udWxsLHRoaXMubmV4dF9saW5lPW5ldyB0KHRoaXMpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMSx0aGlzLl9fYWRkX291dHB1dGxpbmUoKX10LnByb3RvdHlwZS5jbG9uZV9lbXB0eT1mdW5jdGlvbigpe3ZhciBlPW5ldyB0KHRoaXMuX19wYXJlbnQpO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlfSx0LnByb3RvdHlwZS5pdGVtPWZ1bmN0aW9uKGUpe3JldHVybiBlPDA/dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgrZV06dGhpcy5fX2l0ZW1zW2VdfSx0LnByb3RvdHlwZS5oYXNfbWF0Y2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19pdGVtcy5sZW5ndGgtMTt0Pj0wO3QtLSlpZih0aGlzLl9faXRlbXNbdF0ubWF0Y2goZSkpcmV0dXJuITA7cmV0dXJuITF9LHQucHJvdG90eXBlLnNldF9pbmRlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmlzX2VtcHR5KCkmJih0aGlzLl9faW5kZW50X2NvdW50PWV8fDAsdGhpcy5fX2FsaWdubWVudF9jb3VudD10fHwwLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3NpemUodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSl9LHQucHJvdG90eXBlLl9zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX19wYXJlbnQud3JhcF9saW5lX2xlbmd0aCYmKHRoaXMuX193cmFwX3BvaW50X2luZGV4PXRoaXMuX19pdGVtcy5sZW5ndGgsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PXRoaXMuX19jaGFyYWN0ZXJfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PXRoaXMuX19wYXJlbnQubmV4dF9saW5lLl9faW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2FsaWdubWVudF9jb3VudCl9LHQucHJvdG90eXBlLl9zaG91bGRfd3JhcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fd3JhcF9wb2ludF9pbmRleCYmdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJnRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2NoYXJhY3Rlcl9jb3VudH0sdC5wcm90b3R5cGUuX2FsbG93X3dyYXA9ZnVuY3Rpb24oKXtpZih0aGlzLl9zaG91bGRfd3JhcCgpKXt0aGlzLl9fcGFyZW50LmFkZF9uZXdfbGluZSgpO3ZhciBlPXRoaXMuX19wYXJlbnQuY3VycmVudF9saW5lO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudCksZS5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSh0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksdGhpcy5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSgwLHRoaXMuX193cmFwX3BvaW50X2luZGV4KSxlLl9fY2hhcmFjdGVyX2NvdW50Kz10aGlzLl9fY2hhcmFjdGVyX2NvdW50LXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCwiICI9PT1lLl9faXRlbXNbMF0mJihlLl9faXRlbXMuc3BsaWNlKDAsMSksZS5fX2NoYXJhY3Rlcl9jb3VudC09MSksITB9cmV0dXJuITF9LHQucHJvdG90eXBlLmlzX2VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9faXRlbXMubGVuZ3RofSx0LnByb3RvdHlwZS5sYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKT9udWxsOnRoaXMuX19pdGVtc1t0aGlzLl9faXRlbXMubGVuZ3RoLTFdfSx0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUpe3RoaXMuX19pdGVtcy5wdXNoKGUpO3ZhciB0PWUubGFzdEluZGV4T2YoIlxuIik7LTEhPT10P3RoaXMuX19jaGFyYWN0ZXJfY291bnQ9ZS5sZW5ndGgtdDp0aGlzLl9fY2hhcmFjdGVyX2NvdW50Kz1lLmxlbmd0aH0sdC5wcm90b3R5cGUucG9wPWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHwoZT10aGlzLl9faXRlbXMucG9wKCksdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09ZS5sZW5ndGgpLGV9LHQucHJvdG90eXBlLl9yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5fX2luZGVudF9jb3VudD4wJiYodGhpcy5fX2luZGVudF9jb3VudC09MSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT10aGlzLl9fcGFyZW50LmluZGVudF9zaXplKX0sdC5wcm90b3R5cGUuX3JlbW92ZV93cmFwX2luZGVudD1mdW5jdGlvbigpe3RoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD4wJiYodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LT0xKX0sdC5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe2Zvcig7IiAiPT09dGhpcy5sYXN0KCk7KXRoaXMuX19pdGVtcy5wb3AoKSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT0xfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmlzX2VtcHR5KCk/dGhpcy5fX3BhcmVudC5pbmRlbnRfZW1wdHlfbGluZXMmJihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCkpOihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlKz10aGlzLl9faXRlbXMuam9pbigiIikpLGV9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc2l6ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg7cmV0dXJuIHQ9dHx8MCxlPDAmJihuPTApLG4rPWUqdGhpcy5fX2luZGVudF9zaXplLG4rPXR9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2Jhc2Vfc3RyaW5nO3JldHVybiB0PXR8fDAsZTwwJiYoZT0wLG49IiIpLHQrPWUqdGhpcy5fX2luZGVudF9zaXplLHRoaXMuX19lbnN1cmVfY2FjaGUodCksbis9dGhpcy5fX2NhY2hlW3RdfSxuLnByb3RvdHlwZS5fX2Vuc3VyZV9jYWNoZT1mdW5jdGlvbihlKXtmb3IoO2U+PXRoaXMuX19jYWNoZS5sZW5ndGg7KXRoaXMuX19hZGRfY29sdW1uKCl9LG4ucHJvdG90eXBlLl9fYWRkX2NvbHVtbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX19jYWNoZS5sZW5ndGgsdD0wLG49IiI7dGhpcy5fX2luZGVudF9zaXplJiZlPj10aGlzLl9faW5kZW50X3NpemUmJihlLT0odD1NYXRoLmZsb29yKGUvdGhpcy5fX2luZGVudF9zaXplKSkqdGhpcy5fX2luZGVudF9zaXplLG49bmV3IEFycmF5KHQrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLGUmJihuKz1uZXcgQXJyYXkoZSsxKS5qb2luKCIgIikpLHRoaXMuX19jYWNoZS5wdXNoKG4pfSxyLnByb3RvdHlwZS5fX2FkZF9vdXRwdXRsaW5lPWZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuY3VycmVudF9saW5lLHRoaXMuY3VycmVudF9saW5lPXRoaXMubmV4dF9saW5lLmNsb25lX2VtcHR5KCksdGhpcy5fX2xpbmVzLnB1c2godGhpcy5jdXJyZW50X2xpbmUpfSxyLnByb3RvdHlwZS5nZXRfbGluZV9udW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2xpbmVzLmxlbmd0aH0sci5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3N0cmluZyhlLHQpfSxyLnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3NpemUoZSx0KX0sci5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5wcmV2aW91c19saW5lJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSxyLnByb3RvdHlwZS5hZGRfbmV3X2xpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuISh0aGlzLmlzX2VtcHR5KCl8fCFlJiZ0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpfHwodGhpcy5yYXd8fHRoaXMuX19hZGRfb3V0cHV0bGluZSgpLDApKX0sci5wcm90b3R5cGUuZ2V0X2NvZGU9ZnVuY3Rpb24oZSl7dGhpcy50cmltKCEwKTt2YXIgdD10aGlzLmN1cnJlbnRfbGluZS5wb3AoKTt0JiYoIlxuIj09PXRbdC5sZW5ndGgtMV0mJih0PXQucmVwbGFjZSgvXG4rJC9nLCIiKSksdGhpcy5jdXJyZW50X2xpbmUucHVzaCh0KSksdGhpcy5fZW5kX3dpdGhfbmV3bGluZSYmdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCk7dmFyIG49dGhpcy5fX2xpbmVzLmpvaW4oIlxuIik7cmV0dXJuIlxuIiE9PWUmJihuPW4ucmVwbGFjZSgvW1xuXS9nLGUpKSxufSxyLnByb3RvdHlwZS5zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuY3VycmVudF9saW5lLl9zZXRfd3JhcF9wb2ludCgpfSxyLnByb3RvdHlwZS5zZXRfaW5kZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9ZXx8MCx0PXR8fDAsdGhpcy5uZXh0X2xpbmUuc2V0X2luZGVudChlLHQpLHRoaXMuX19saW5lcy5sZW5ndGg+MT8odGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudChlLHQpLCEwKToodGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudCgpLCExKX0sci5wcm90b3R5cGUuYWRkX3Jhd190b2tlbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubmV3bGluZXM7dCsrKXRoaXMuX19hZGRfb3V0cHV0bGluZSgpO3RoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoLTEpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZS53aGl0ZXNwYWNlX2JlZm9yZSksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlLnRleHQpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMX0sci5wcm90b3R5cGUuYWRkX3Rva2VuPWZ1bmN0aW9uKGUpe3RoaXMuX19hZGRfc3BhY2VfYmVmb3JlX3Rva2VuKCksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlKSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9dGhpcy5jdXJyZW50X2xpbmUuX2FsbG93X3dyYXAoKX0sci5wcm90b3R5cGUuX19hZGRfc3BhY2VfYmVmb3JlX3Rva2VuPWZ1bmN0aW9uKCl7dGhpcy5zcGFjZV9iZWZvcmVfdG9rZW4mJiF0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpJiYodGhpcy5ub25fYnJlYWtpbmdfc3BhY2V8fHRoaXMuc2V0X3dyYXBfcG9pbnQoKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKCIgIikpfSxyLnByb3RvdHlwZS5yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLl9fbGluZXMubGVuZ3RoO2U8dDspdGhpcy5fX2xpbmVzW2VdLl9yZW1vdmVfaW5kZW50KCksZSsrO3RoaXMuY3VycmVudF9saW5lLl9yZW1vdmVfd3JhcF9pbmRlbnQoKX0sci5wcm90b3R5cGUudHJpbT1mdW5jdGlvbihlKXtmb3IoZT12b2lkIDAhPT1lJiZlLHRoaXMuY3VycmVudF9saW5lLnRyaW0oKTtlJiZ0aGlzLl9fbGluZXMubGVuZ3RoPjEmJnRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCk7KXRoaXMuX19saW5lcy5wb3AoKSx0aGlzLmN1cnJlbnRfbGluZT10aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0xXSx0aGlzLmN1cnJlbnRfbGluZS50cmltKCk7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuX19saW5lcy5sZW5ndGg+MT90aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0yXTpudWxsfSxyLnByb3RvdHlwZS5qdXN0X2FkZGVkX25ld2xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKX0sci5wcm90b3R5cGUuanVzdF9hZGRlZF9ibGFua2xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHx0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpJiZ0aGlzLnByZXZpb3VzX2xpbmUuaXNfZW1wdHkoKX0sci5wcm90b3R5cGUuZW5zdXJlX2VtcHR5X2xpbmVfYWJvdmU9ZnVuY3Rpb24oZSxuKXtmb3IodmFyIHI9dGhpcy5fX2xpbmVzLmxlbmd0aC0yO3I+PTA7KXt2YXIgaT10aGlzLl9fbGluZXNbcl07aWYoaS5pc19lbXB0eSgpKWJyZWFrO2lmKDAhPT1pLml0ZW0oMCkuaW5kZXhPZihlKSYmaS5pdGVtKC0xKSE9PW4pe3RoaXMuX19saW5lcy5zcGxpY2UocisxLDAsbmV3IHQodGhpcykpLHRoaXMucHJldmlvdXNfbGluZT10aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0yXTticmVha31yLS19fSxlLmV4cG9ydHMuT3V0cHV0PXJ9LCwsLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXt0aGlzLnJhd19vcHRpb25zPW4oZSx0KSx0aGlzLmRpc2FibGVkPXRoaXMuX2dldF9ib29sZWFuKCJkaXNhYmxlZCIpLHRoaXMuZW9sPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJlb2wiLCJhdXRvIiksdGhpcy5lbmRfd2l0aF9uZXdsaW5lPXRoaXMuX2dldF9ib29sZWFuKCJlbmRfd2l0aF9uZXdsaW5lIiksdGhpcy5pbmRlbnRfc2l6ZT10aGlzLl9nZXRfbnVtYmVyKCJpbmRlbnRfc2l6ZSIsNCksdGhpcy5pbmRlbnRfY2hhcj10aGlzLl9nZXRfY2hhcmFjdGVycygiaW5kZW50X2NoYXIiLCIgIiksdGhpcy5pbmRlbnRfbGV2ZWw9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X2xldmVsIiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfYm9vbGVhbigicHJlc2VydmVfbmV3bGluZXMiLCEwKSx0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfbnVtYmVyKCJtYXhfcHJlc2VydmVfbmV3bGluZXMiLDMyNzg2KSx0aGlzLnByZXNlcnZlX25ld2xpbmVzfHwodGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9MCksdGhpcy5pbmRlbnRfd2l0aF90YWJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfd2l0aF90YWJzIiwiXHQiPT09dGhpcy5pbmRlbnRfY2hhciksdGhpcy5pbmRlbnRfd2l0aF90YWJzJiYodGhpcy5pbmRlbnRfY2hhcj0iXHQiLDE9PT10aGlzLmluZGVudF9zaXplJiYodGhpcy5pbmRlbnRfc2l6ZT00KSksdGhpcy53cmFwX2xpbmVfbGVuZ3RoPXRoaXMuX2dldF9udW1iZXIoIndyYXBfbGluZV9sZW5ndGgiLHRoaXMuX2dldF9udW1iZXIoIm1heF9jaGFyIikpLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfZW1wdHlfbGluZXMiKSx0aGlzLnRlbXBsYXRpbmc9dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KCJ0ZW1wbGF0aW5nIixbImF1dG8iLCJub25lIiwiZGphbmdvIiwiZXJiIiwiaGFuZGxlYmFycyIsInBocCIsInNtYXJ0eSJdLFsiYXV0byJdKX1mdW5jdGlvbiBuKGUsdCl7dmFyIG4saT17fTtmb3IobiBpbiBlPXIoZSkpbiE9PXQmJihpW25dPWVbbl0pO2lmKHQmJmVbdF0pZm9yKG4gaW4gZVt0XSlpW25dPWVbdF1bbl07cmV0dXJuIGl9ZnVuY3Rpb24gcihlKXt2YXIgdCxuPXt9O2Zvcih0IGluIGUpblt0LnJlcGxhY2UoLy0vZywiXyIpXT1lW3RdO3JldHVybiBufXQucHJvdG90eXBlLl9nZXRfYXJyYXk9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdLHI9dHx8W107cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuP251bGwhPT1uJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5jb25jYXQmJihyPW4uY29uY2F0KCkpOiJzdHJpbmciPT10eXBlb2YgbiYmKHI9bi5zcGxpdCgvW15hLXpBLVowLTlfXC9cLV0rLykpLHJ9LHQucHJvdG90eXBlLl9nZXRfYm9vbGVhbj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucmF3X29wdGlvbnNbZV07cmV0dXJuIHZvaWQgMD09PW4/ISF0OiEhbn0sdC5wcm90b3R5cGUuX2dldF9jaGFyYWN0ZXJzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXSxyPXR8fCIiO3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmKHI9bi5yZXBsYWNlKC9cXHIvLCJcciIpLnJlcGxhY2UoL1xcbi8sIlxuIikucmVwbGFjZSgvXFx0LywiXHQiKSkscn0sdC5wcm90b3R5cGUuX2dldF9udW1iZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdO3Q9cGFyc2VJbnQodCwxMCksaXNOYU4odCkmJih0PTApO3ZhciByPXBhcnNlSW50KG4sMTApO3JldHVybiBpc05hTihyKSYmKHI9dCkscn0sdC5wcm90b3R5cGUuX2dldF9zZWxlY3Rpb249ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX2dldF9zZWxlY3Rpb25fbGlzdChlLHQsbik7aWYoMSE9PXIubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBPcHRpb24gVmFsdWU6IFRoZSBvcHRpb24gJyIrZSsiJyBjYW4gb25seSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iK3QrIlxuWW91IHBhc3NlZCBpbjogJyIrdGhpcy5yYXdfb3B0aW9uc1tlXSsiJyIpO3JldHVybiByWzBdfSx0LnByb3RvdHlwZS5fZ2V0X3NlbGVjdGlvbl9saXN0PWZ1bmN0aW9uKGUsdCxuKXtpZighdHx8MD09PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiU2VsZWN0aW9uIGxpc3QgY2Fubm90IGJlIGVtcHR5LiIpO2lmKG49bnx8W3RbMF1dLCF0aGlzLl9pc192YWxpZF9zZWxlY3Rpb24obix0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRGVmYXVsdCBWYWx1ZSEiKTt2YXIgcj10aGlzLl9nZXRfYXJyYXkoZSxuKTtpZighdGhpcy5faXNfdmFsaWRfc2VsZWN0aW9uKHIsdCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIE9wdGlvbiBWYWx1ZTogVGhlIG9wdGlvbiAnIitlKyInIGNhbiBjb250YWluIG9ubHkgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iK3QrIlxuWW91IHBhc3NlZCBpbjogJyIrdGhpcy5yYXdfb3B0aW9uc1tlXSsiJyIpO3JldHVybiByfSx0LnByb3RvdHlwZS5faXNfdmFsaWRfc2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubGVuZ3RoJiZ0Lmxlbmd0aCYmIWUuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT10LmluZGV4T2YoZSl9KSl9LGUuZXhwb3J0cy5PcHRpb25zPXQsZS5leHBvcnRzLm5vcm1hbGl6ZU9wdHM9cixlLmV4cG9ydHMubWVyZ2VPcHRzPW59LCxmdW5jdGlvbihlKXt2YXIgdD1SZWdFeHAucHJvdG90eXBlLmhhc093blByb3BlcnR5KCJzdGlja3kiKTtmdW5jdGlvbiBuKGUpe3RoaXMuX19pbnB1dD1lfHwiIix0aGlzLl9faW5wdXRfbGVuZ3RoPXRoaXMuX19pbnB1dC5sZW5ndGgsdGhpcy5fX3Bvc2l0aW9uPTB9bi5wcm90b3R5cGUucmVzdGFydD1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj0wfSxuLnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7dGhpcy5fX3Bvc2l0aW9uPjAmJih0aGlzLl9fcG9zaXRpb24tPTEpfSxuLnByb3RvdHlwZS5oYXNOZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19wb3NpdGlvbjx0aGlzLl9faW5wdXRfbGVuZ3RofSxuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5oYXNOZXh0KCkmJihlPXRoaXMuX19pbnB1dC5jaGFyQXQodGhpcy5fX3Bvc2l0aW9uKSx0aGlzLl9fcG9zaXRpb24rPTEpLGV9LG4ucHJvdG90eXBlLnBlZWs9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZT1lfHwwLChlKz10aGlzLl9fcG9zaXRpb24pPj0wJiZlPHRoaXMuX19pbnB1dF9sZW5ndGgmJih0PXRoaXMuX19pbnB1dC5jaGFyQXQoZSkpLHR9LG4ucHJvdG90eXBlLl9fbWF0Y2g9ZnVuY3Rpb24oZSxuKXtlLmxhc3RJbmRleD1uO3ZhciByPWUuZXhlYyh0aGlzLl9faW5wdXQpO3JldHVybiFyfHx0JiZlLnN0aWNreXx8ci5pbmRleCE9PW4mJihyPW51bGwpLHJ9LG4ucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10fHwwLCh0Kz10aGlzLl9fcG9zaXRpb24pPj0wJiZ0PHRoaXMuX19pbnB1dF9sZW5ndGgmJiEhdGhpcy5fX21hdGNoKGUsdCl9LG4ucHJvdG90eXBlLnRlc3RDaGFyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5wZWVrKHQpO3JldHVybiBlLmxhc3RJbmRleD0wLG51bGwhPT1uJiZlLnRlc3Qobil9LG4ucHJvdG90eXBlLm1hdGNoPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19tYXRjaChlLHRoaXMuX19wb3NpdGlvbik7cmV0dXJuIHQ/dGhpcy5fX3Bvc2l0aW9uKz10WzBdLmxlbmd0aDp0PW51bGwsdH0sbi5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaT0iIjtyZXR1cm4gZSYmKHI9dGhpcy5tYXRjaChlKSkmJihpKz1yWzBdKSwhdHx8IXImJmV8fChpKz10aGlzLnJlYWRVbnRpbCh0LG4pKSxpfSxuLnByb3RvdHlwZS5yZWFkVW50aWw9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPXRoaXMuX19wb3NpdGlvbjtlLmxhc3RJbmRleD10aGlzLl9fcG9zaXRpb247dmFyIGk9ZS5leGVjKHRoaXMuX19pbnB1dCk7cmV0dXJuIGk/KHI9aS5pbmRleCx0JiYocis9aVswXS5sZW5ndGgpKTpyPXRoaXMuX19pbnB1dF9sZW5ndGgsbj10aGlzLl9faW5wdXQuc3Vic3RyaW5nKHRoaXMuX19wb3NpdGlvbixyKSx0aGlzLl9fcG9zaXRpb249cixufSxuLnByb3RvdHlwZS5yZWFkVW50aWxBZnRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZWFkVW50aWwoZSwhMCl9LG4ucHJvdG90eXBlLmdldF9yZWdleHA9ZnVuY3Rpb24oZSxuKXt2YXIgcj1udWxsLGk9ImciO3JldHVybiBuJiZ0JiYoaT0ieSIpLCJzdHJpbmciPT10eXBlb2YgZSYmIiIhPT1lP3I9bmV3IFJlZ0V4cChlLGkpOmUmJihyPW5ldyBSZWdFeHAoZS5zb3VyY2UsaSkpLHJ9LG4ucHJvdG90eXBlLmdldF9saXRlcmFsX3JlZ2V4cD1mdW5jdGlvbihlKXtyZXR1cm4gUmVnRXhwKGUucmVwbGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31dL2csIlxcJCYiKSl9LG4ucHJvdG90eXBlLnBlZWtVbnRpbEFmdGVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19wb3NpdGlvbixuPXRoaXMucmVhZFVudGlsQWZ0ZXIoZSk7cmV0dXJuIHRoaXMuX19wb3NpdGlvbj10LG59LG4ucHJvdG90eXBlLmxvb2tCYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19wb3NpdGlvbi0xO3JldHVybiB0Pj1lLmxlbmd0aCYmdGhpcy5fX2lucHV0LnN1YnN0cmluZyh0LWUubGVuZ3RoLHQpLnRvTG93ZXJDYXNlKCk9PT1lfSxlLmV4cG9ydHMuSW5wdXRTY2FubmVyPW59LCwsLCxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTplLnNvdXJjZSx0PSJzdHJpbmciPT10eXBlb2YgdD90OnQuc291cmNlLHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm49bmV3IFJlZ0V4cChlKy8gYmVhdXRpZnkoIFx3K1s6XVx3KykrIC8uc291cmNlK3QsImciKSx0aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm49LyAoXHcrKVs6XShcdyspL2csdGhpcy5fX2RpcmVjdGl2ZXNfZW5kX2lnbm9yZV9wYXR0ZXJuPW5ldyBSZWdFeHAoZSsvXHNiZWF1dGlmeVxzaWdub3JlOmVuZFxzLy5zb3VyY2UrdCwiZyIpfXQucHJvdG90eXBlLmdldF9kaXJlY3RpdmVzPWZ1bmN0aW9uKGUpe2lmKCFlLm1hdGNoKHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm4pKXJldHVybiBudWxsO3ZhciB0PXt9O3RoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5sYXN0SW5kZXg9MDtmb3IodmFyIG49dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoZSk7bjspdFtuWzFdXT1uWzJdLG49dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoZSk7cmV0dXJuIHR9LHQucHJvdG90eXBlLnJlYWRJZ25vcmVkPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlYWRVbnRpbEFmdGVyKHRoaXMuX19kaXJlY3RpdmVzX2VuZF9pZ25vcmVfcGF0dGVybil9LGUuZXhwb3J0cy5EaXJlY3RpdmVzPXR9LCxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxNikuQmVhdXRpZmllcixpPW4oMTcpLk9wdGlvbnM7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyByKGUsdCkuYmVhdXRpZnkoKX0sZS5leHBvcnRzLmRlZmF1bHRPcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTcpLk9wdGlvbnMsaT1uKDIpLk91dHB1dCxhPW4oOCkuSW5wdXRTY2FubmVyLG89bmV3KDAsbigxMykuRGlyZWN0aXZlcykoL1wvXCovLC9cKlwvLykscz0vXHJcbnxbXHJcbl0vLGw9L1xyXG58W1xyXG5dL2csYz0vXHMvLGg9Lyg/OlxzfFxuKSsvZyxkPS9cL1wqKD86W1xzXFNdKj8pKCg/OlwqXC8pfCQpL2csdT0vXC9cLyg/OlteXG5cclx1MjAyOFx1MjAyOV0qKS9nO2Z1bmN0aW9uIHAoZSx0KXt0aGlzLl9zb3VyY2VfdGV4dD1lfHwiIix0aGlzLl9vcHRpb25zPW5ldyByKHQpLHRoaXMuX2NoPW51bGwsdGhpcy5faW5wdXQ9bnVsbCx0aGlzLk5FU1RFRF9BVF9SVUxFPXsiQHBhZ2UiOiEwLCJAZm9udC1mYWNlIjohMCwiQGtleWZyYW1lcyI6ITAsIkBtZWRpYSI6ITAsIkBzdXBwb3J0cyI6ITAsIkBkb2N1bWVudCI6ITB9LHRoaXMuQ09ORElUSU9OQUxfR1JPVVBfUlVMRT17IkBtZWRpYSI6ITAsIkBzdXBwb3J0cyI6ITAsIkBkb2N1bWVudCI6ITB9fXAucHJvdG90eXBlLmVhdFN0cmluZz1mdW5jdGlvbihlKXt2YXIgdD0iIjtmb3IodGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpO3RoaXMuX2NoOyl7aWYodCs9dGhpcy5fY2gsIlxcIj09PXRoaXMuX2NoKXQrPXRoaXMuX2lucHV0Lm5leHQoKTtlbHNlIGlmKC0xIT09ZS5pbmRleE9mKHRoaXMuX2NoKXx8IlxuIj09PXRoaXMuX2NoKWJyZWFrO3RoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKX1yZXR1cm4gdH0scC5wcm90b3R5cGUuZWF0V2hpdGVzcGFjZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9Yy50ZXN0KHRoaXMuX2lucHV0LnBlZWsoKSksbj0wO2MudGVzdCh0aGlzLl9pbnB1dC5wZWVrKCkpOyl0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCksZSYmIlxuIj09PXRoaXMuX2NoJiYoMD09PW58fG48dGhpcy5fb3B0aW9ucy5tYXhfcHJlc2VydmVfbmV3bGluZXMpJiYobisrLHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoITApKTtyZXR1cm4gdH0scC5wcm90b3R5cGUuZm91bmROZXN0ZWRQc2V1ZG9DbGFzcz1mdW5jdGlvbigpe2Zvcih2YXIgZT0wLHQ9MSxuPXRoaXMuX2lucHV0LnBlZWsodCk7bjspe2lmKCJ7Ij09PW4pcmV0dXJuITA7aWYoIigiPT09billKz0xO2Vsc2UgaWYoIikiPT09bil7aWYoMD09PWUpcmV0dXJuITE7ZS09MX1lbHNlIGlmKCI7Ij09PW58fCJ9Ij09PW4pcmV0dXJuITE7dCsrLG49dGhpcy5faW5wdXQucGVlayh0KX1yZXR1cm4hMX0scC5wcm90b3R5cGUucHJpbnRfc3RyaW5nPWZ1bmN0aW9uKGUpe3RoaXMuX291dHB1dC5zZXRfaW5kZW50KHRoaXMuX2luZGVudExldmVsKSx0aGlzLl9vdXRwdXQubm9uX2JyZWFraW5nX3NwYWNlPSEwLHRoaXMuX291dHB1dC5hZGRfdG9rZW4oZSl9LHAucHJvdG90eXBlLnByZXNlcnZlU2luZ2xlU3BhY2U9ZnVuY3Rpb24oZSl7ZSYmKHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApfSxwLnByb3RvdHlwZS5pbmRlbnQ9ZnVuY3Rpb24oKXt0aGlzLl9pbmRlbnRMZXZlbCsrfSxwLnByb3RvdHlwZS5vdXRkZW50PWZ1bmN0aW9uKCl7dGhpcy5faW5kZW50TGV2ZWw+MCYmdGhpcy5faW5kZW50TGV2ZWwtLX0scC5wcm90b3R5cGUuYmVhdXRpZnk9ZnVuY3Rpb24oKXtpZih0aGlzLl9vcHRpb25zLmRpc2FibGVkKXJldHVybiB0aGlzLl9zb3VyY2VfdGV4dDt2YXIgZT10aGlzLl9zb3VyY2VfdGV4dCx0PXRoaXMuX29wdGlvbnMuZW9sOyJhdXRvIj09PXQmJih0PSJcbiIsZSYmcy50ZXN0KGV8fCIiKSYmKHQ9ZS5tYXRjaChzKVswXSkpO3ZhciBuPShlPWUucmVwbGFjZShsLCJcbiIpKS5tYXRjaCgvXltcdCBdKi8pWzBdO3RoaXMuX291dHB1dD1uZXcgaSh0aGlzLl9vcHRpb25zLG4pLHRoaXMuX2lucHV0PW5ldyBhKGUpLHRoaXMuX2luZGVudExldmVsPTAsdGhpcy5fbmVzdGVkTGV2ZWw9MCx0aGlzLl9jaD1udWxsO2Zvcih2YXIgcixwLG09MCxmPSExLGc9ITEsYj0hMSx3PSExLF89ITEsdj10aGlzLl9jaDtyPSIiIT09dGhpcy5faW5wdXQucmVhZChoKSxwPXYsdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLCJcXCI9PT10aGlzLl9jaCYmdGhpcy5faW5wdXQuaGFzTmV4dCgpJiYodGhpcy5fY2grPXRoaXMuX2lucHV0Lm5leHQoKSksdj10aGlzLl9jaCx0aGlzLl9jaDspaWYoIi8iPT09dGhpcy5fY2gmJiIqIj09PXRoaXMuX2lucHV0LnBlZWsoKSl7dGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpLHRoaXMuX2lucHV0LmJhY2soKTt2YXIgeT10aGlzLl9pbnB1dC5yZWFkKGQpLFQ9by5nZXRfZGlyZWN0aXZlcyh5KTtUJiYic3RhcnQiPT09VC5pZ25vcmUmJih5Kz1vLnJlYWRJZ25vcmVkKHRoaXMuX2lucHV0KSksdGhpcy5wcmludF9zdHJpbmcoeSksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCl9ZWxzZSBpZigiLyI9PT10aGlzLl9jaCYmIi8iPT09dGhpcy5faW5wdXQucGVlaygpKXRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsdGhpcy5faW5wdXQuYmFjaygpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2lucHV0LnJlYWQodSkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCk7ZWxzZSBpZigiQCI9PT10aGlzLl9jaClpZih0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksInsiPT09dGhpcy5faW5wdXQucGVlaygpKXRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoK3RoaXMuZWF0U3RyaW5nKCJ9IikpO2Vsc2V7dGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpO3ZhciBrPXRoaXMuX2lucHV0LnBlZWtVbnRpbEFmdGVyKC9bOiAsO3t9KClbXF1cLz0nIl0vZyk7ay5tYXRjaCgvWyA6XSQvKSYmKGs9dGhpcy5lYXRTdHJpbmcoIjogIikucmVwbGFjZSgvXHMkLywiIiksdGhpcy5wcmludF9zdHJpbmcoayksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCksImV4dGVuZCI9PT0oaz1rLnJlcGxhY2UoL1xzJC8sIiIpKT93PSEwOiJpbXBvcnQiPT09ayYmKF89ITApLGsgaW4gdGhpcy5ORVNURURfQVRfUlVMRT8odGhpcy5fbmVzdGVkTGV2ZWwrPTEsayBpbiB0aGlzLkNPTkRJVElPTkFMX0dST1VQX1JVTEUmJihiPSEwKSk6Znx8MCE9PW18fC0xPT09ay5pbmRleE9mKCI6Iil8fChnPSEwLHRoaXMuaW5kZW50KCkpfWVsc2UiIyI9PT10aGlzLl9jaCYmInsiPT09dGhpcy5faW5wdXQucGVlaygpPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIn0iKSkpOiJ7Ij09PXRoaXMuX2NoPyhnJiYoZz0hMSx0aGlzLm91dGRlbnQoKSksYj8oYj0hMSxmPXRoaXMuX2luZGVudExldmVsPj10aGlzLl9uZXN0ZWRMZXZlbCk6Zj10aGlzLl9pbmRlbnRMZXZlbD49dGhpcy5fbmVzdGVkTGV2ZWwtMSx0aGlzLl9vcHRpb25zLm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyYmZiYmdGhpcy5fb3V0cHV0LnByZXZpb3VzX2xpbmUmJiJ7IiE9PXRoaXMuX291dHB1dC5wcmV2aW91c19saW5lLml0ZW0oLTEpJiZ0aGlzLl9vdXRwdXQuZW5zdXJlX2VtcHR5X2xpbmVfYWJvdmUoIi8iLCIsIiksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCwiZXhwYW5kIj09PXRoaXMuX29wdGlvbnMuYnJhY2Vfc3R5bGU/KHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5pbmRlbnQoKSx0aGlzLl9vdXRwdXQuc2V0X2luZGVudCh0aGlzLl9pbmRlbnRMZXZlbCkpOih0aGlzLmluZGVudCgpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCkpOiJ9Ij09PXRoaXMuX2NoPyh0aGlzLm91dGRlbnQoKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksInsiPT09cCYmdGhpcy5fb3V0cHV0LnRyaW0oITApLF89ITEsdz0hMSxnJiYodGhpcy5vdXRkZW50KCksZz0hMSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLGY9ITEsdGhpcy5fbmVzdGVkTGV2ZWwmJnRoaXMuX25lc3RlZExldmVsLS0sdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksdGhpcy5fb3B0aW9ucy5uZXdsaW5lX2JldHdlZW5fcnVsZXMmJiF0aGlzLl9vdXRwdXQuanVzdF9hZGRlZF9ibGFua2xpbmUoKSYmIn0iIT09dGhpcy5faW5wdXQucGVlaygpJiZ0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCEwKSk6IjoiPT09dGhpcy5fY2g/IWYmJiFifHx0aGlzLl9pbnB1dC5sb29rQmFjaygiJiIpfHx0aGlzLmZvdW5kTmVzdGVkUHNldWRvQ2xhc3MoKXx8dGhpcy5faW5wdXQubG9va0JhY2soIigiKXx8d3x8MCE9PW0/KHRoaXMuX2lucHV0Lmxvb2tCYWNrKCIgIikmJih0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKSwiOiI9PT10aGlzLl9pbnB1dC5wZWVrKCk/KHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSx0aGlzLnByaW50X3N0cmluZygiOjoiKSk6dGhpcy5wcmludF9zdHJpbmcoIjoiKSk6KHRoaXMucHJpbnRfc3RyaW5nKCI6IiksZ3x8KGc9ITAsdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuaW5kZW50KCkpKTonIic9PT10aGlzLl9jaHx8IiciPT09dGhpcy5fY2g/KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShyKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCt0aGlzLmVhdFN0cmluZyh0aGlzLl9jaCkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCkpOiI7Ij09PXRoaXMuX2NoPzA9PT1tPyhnJiYodGhpcy5vdXRkZW50KCksZz0hMSksdz0hMSxfPSExLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLCIvIiE9PXRoaXMuX2lucHV0LnBlZWsoKSYmdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpKToodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6IigiPT09dGhpcy5fY2g/dGhpcy5faW5wdXQubG9va0JhY2soInVybCIpPyh0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCksbSsrLHRoaXMuaW5kZW50KCksdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLCIpIj09PXRoaXMuX2NofHwnIic9PT10aGlzLl9jaHx8IiciPT09dGhpcy5fY2g/dGhpcy5faW5wdXQuYmFjaygpOnRoaXMuX2NoJiYodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIikiKSksbSYmKG0tLSx0aGlzLm91dGRlbnQoKSkpKToodGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKHIpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSxtKyssdGhpcy5pbmRlbnQoKSk6IikiPT09dGhpcy5fY2g/KG0mJihtLS0sdGhpcy5vdXRkZW50KCkpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6IiwiPT09dGhpcy5fY2g/KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLCF0aGlzLl9vcHRpb25zLnNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lfHxnfHwwIT09bXx8X3x8dz90aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwOnRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSk6Ij4iIT09dGhpcy5fY2gmJiIrIiE9PXRoaXMuX2NoJiYifiIhPT10aGlzLl9jaHx8Z3x8MCE9PW0/Il0iPT09dGhpcy5fY2g/dGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpOiJbIj09PXRoaXMuX2NoPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpKToiPSI9PT10aGlzLl9jaD8odGhpcy5lYXRXaGl0ZXNwYWNlKCksdGhpcy5wcmludF9zdHJpbmcoIj0iKSxjLnRlc3QodGhpcy5fY2gpJiYodGhpcy5fY2g9IiIpKToiISIhPT10aGlzLl9jaHx8dGhpcy5faW5wdXQubG9va0JhY2soIlxcIik/KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShyKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpOih0aGlzLnByaW50X3N0cmluZygiICIpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6dGhpcy5fb3B0aW9ucy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj8odGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSx0aGlzLl9jaCYmYy50ZXN0KHRoaXMuX2NoKSYmKHRoaXMuX2NoPSIiKSk7cmV0dXJuIHRoaXMuX291dHB1dC5nZXRfY29kZSh0KX0sZS5leHBvcnRzLkJlYXV0aWZpZXI9cH0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNikuT3B0aW9ucztmdW5jdGlvbiBpKGUpe3IuY2FsbCh0aGlzLGUsImNzcyIpLHRoaXMuc2VsZWN0b3Jfc2VwYXJhdG9yX25ld2xpbmU9dGhpcy5fZ2V0X2Jvb2xlYW4oInNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lIiwhMCksdGhpcy5uZXdsaW5lX2JldHdlZW5fcnVsZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oIm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyIsITApO3ZhciB0PXRoaXMuX2dldF9ib29sZWFuKCJzcGFjZV9hcm91bmRfc2VsZWN0b3Jfc2VwYXJhdG9yIik7dGhpcy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj10aGlzLl9nZXRfYm9vbGVhbigic3BhY2VfYXJvdW5kX2NvbWJpbmF0b3IiKXx8dDt2YXIgbj10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoImJyYWNlX3N0eWxlIixbImNvbGxhcHNlIiwiZXhwYW5kIiwiZW5kLWV4cGFuZCIsIm5vbmUiLCJwcmVzZXJ2ZS1pbmxpbmUiXSk7dGhpcy5icmFjZV9zdHlsZT0iY29sbGFwc2UiO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKSJleHBhbmQiIT09bltpXT90aGlzLmJyYWNlX3N0eWxlPSJjb2xsYXBzZSI6dGhpcy5icmFjZV9zdHlsZT1uW2ldfWkucHJvdG90eXBlPW5ldyByLGUuZXhwb3J0cy5PcHRpb25zPWl9XSxzbz17fSxsbz1mdW5jdGlvbiBlKHQpe3ZhciBuPXNvW3RdO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG4uZXhwb3J0czt2YXIgcj1zb1t0XT17ZXhwb3J0czp7fX07cmV0dXJuIG9vW3RdKHIsci5leHBvcnRzLGUpLHIuZXhwb3J0c30oMTUpO3ZhciBwbyxtbyxmbz1sbztmdW5jdGlvbiBnbyhlLHQsbil7dmFyIHI9ZS5nZXRUZXh0KCksaT0hMCxhPTAsbz1uLnRhYlNpemV8fDQ7aWYodCl7Zm9yKHZhciBzPWUub2Zmc2V0QXQodC5zdGFydCksbD1zO2w+MCYmeW8ocixsLTEpOylsLS07MD09PWx8fHZvKHIsbC0xKT9zPWw6bDxzJiYocz1sKzEpO2Zvcih2YXIgYz1lLm9mZnNldEF0KHQuZW5kKSxoPWM7aDxyLmxlbmd0aCYmeW8ocixoKTspaCsrOyhoPT09ci5sZW5ndGh8fHZvKHIsaCkpJiYoYz1oKSx0PW9yLmNyZWF0ZShlLnBvc2l0aW9uQXQocyksZS5wb3NpdGlvbkF0KGMpKTt2YXIgZD1yLnN1YnN0cmluZygwLHMpO2lmKG5ldyBSZWdFeHAoLy4qWzxdW14+XSokLykudGVzdChkKSlyZXR1cm5be3JhbmdlOnQsbmV3VGV4dDpyPXIuc3Vic3RyaW5nKHMsYyl9XTtpZihpPWM9PT1yLmxlbmd0aCxyPXIuc3Vic3RyaW5nKHMsYyksMCE9PXMpe3ZhciB1PWUub2Zmc2V0QXQoaXIuY3JlYXRlKHQuc3RhcnQubGluZSwwKSk7YT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dCxpPTAsYT1uLnRhYlNpemV8fDQ7Zm9yKDtyPGUubGVuZ3RoOyl7dmFyIG89ZS5jaGFyQXQocik7aWYoIiAiPT09bylpKys7ZWxzZXtpZigiXHQiIT09bylicmVhaztpKz1hfXIrK31yZXR1cm4gTWF0aC5mbG9vcihpL2EpfShlLmdldFRleHQoKSx1LG4pfX1lbHNlIHQ9b3IuY3JlYXRlKGlyLmNyZWF0ZSgwLDApLGUucG9zaXRpb25BdChyLmxlbmd0aCkpO3ZhciBwPXtpbmRlbnRfc2l6ZTpvLGluZGVudF9jaGFyOm4uaW5zZXJ0U3BhY2VzPyIgIjoiXHQiLGluZGVudF9lbXB0eV9saW5lczpibyhuLCJpbmRlbnRFbXB0eUxpbmVzIiwhMSksd3JhcF9saW5lX2xlbmd0aDpibyhuLCJ3cmFwTGluZUxlbmd0aCIsMTIwKSx1bmZvcm1hdHRlZDp3byhuLCJ1bmZvcm1hdHRlZCIsdm9pZCAwKSxjb250ZW50X3VuZm9ybWF0dGVkOndvKG4sImNvbnRlbnRVbmZvcm1hdHRlZCIsdm9pZCAwKSxpbmRlbnRfaW5uZXJfaHRtbDpibyhuLCJpbmRlbnRJbm5lckh0bWwiLCExKSxwcmVzZXJ2ZV9uZXdsaW5lczpibyhuLCJwcmVzZXJ2ZU5ld0xpbmVzIiwhMCksbWF4X3ByZXNlcnZlX25ld2xpbmVzOmJvKG4sIm1heFByZXNlcnZlTmV3TGluZXMiLDMyNzg2KSxpbmRlbnRfaGFuZGxlYmFyczpibyhuLCJpbmRlbnRIYW5kbGViYXJzIiwhMSksZW5kX3dpdGhfbmV3bGluZTppJiZibyhuLCJlbmRXaXRoTmV3bGluZSIsITEpLGV4dHJhX2xpbmVyczp3byhuLCJleHRyYUxpbmVycyIsdm9pZCAwKSx3cmFwX2F0dHJpYnV0ZXM6Ym8obiwid3JhcEF0dHJpYnV0ZXMiLCJhdXRvIiksd3JhcF9hdHRyaWJ1dGVzX2luZGVudF9zaXplOmJvKG4sIndyYXBBdHRyaWJ1dGVzSW5kZW50U2l6ZSIsdm9pZCAwKSxlb2w6IlxuIixpbmRlbnRfc2NyaXB0czpibyhuLCJpbmRlbnRTY3JpcHRzIiwibm9ybWFsIiksdGVtcGxhdGluZzpfbyhuLCJhbGwiKSx1bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlcjpibyhuLCJ1bmZvcm1hdHRlZENvbnRlbnREZWxpbWl0ZXIiLCIiKX0sbT1mdW5jdGlvbihlLHQpe3JldHVybiBwbyhlLHQsdW8sZm8pfShyLnJlcGxhY2UoL15ccysvLCIiKSxwKTtpZihhPjApe3ZhciBmPW4uaW5zZXJ0U3BhY2VzP3phKCIgIixvKmEpOnphKCJcdCIsYSk7bT1tLnNwbGl0KCJcbiIpLmpvaW4oIlxuIitmKSwwPT09dC5zdGFydC5jaGFyYWN0ZXImJihtPWYrbSl9cmV0dXJuW3tyYW5nZTp0LG5ld1RleHQ6bX1dfWZ1bmN0aW9uIGJvKGUsdCxuKXtpZihlJiZlLmhhc093blByb3BlcnR5KHQpKXt2YXIgcj1lW3RdO2lmKG51bGwhPT1yKXJldHVybiByfXJldHVybiBufWZ1bmN0aW9uIHdvKGUsdCxuKXt2YXIgcj1ibyhlLHQsbnVsbCk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiByP3IubGVuZ3RoPjA/ci5zcGxpdCgiLCIpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbSgpLnRvTG93ZXJDYXNlKCl9KSk6W106bn1mdW5jdGlvbiBfbyhlLHQpe3JldHVybiEwPT09Ym8oZSwidGVtcGxhdGluZyIsdCk/WyJhdXRvIl06WyJub25lIl19ZnVuY3Rpb24gdm8oZSx0KXtyZXR1cm4tMSE9PSJcclxuIi5pbmRleE9mKGUuY2hhckF0KHQpKX1mdW5jdGlvbiB5byhlLHQpe3JldHVybi0xIT09IiBcdCIuaW5kZXhPZihlLmNoYXJBdCh0KSl9IWZ1bmN0aW9uKCl7dmFyIGU9WywsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLl9fcGFyZW50PWUsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX19pbmRlbnRfY291bnQ9LTEsdGhpcy5fX2FsaWdubWVudF9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGV4PTAsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PTAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PS0xLHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD0wLHRoaXMuX19pdGVtcz1bXX1mdW5jdGlvbiBuKGUsdCl7dGhpcy5fX2NhY2hlPVsiIl0sdGhpcy5fX2luZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy5fX2luZGVudF9zdHJpbmc9ZS5pbmRlbnRfY2hhcixlLmluZGVudF93aXRoX3RhYnN8fCh0aGlzLl9faW5kZW50X3N0cmluZz1uZXcgQXJyYXkoZS5pbmRlbnRfc2l6ZSsxKS5qb2luKGUuaW5kZW50X2NoYXIpKSx0PXR8fCIiLGUuaW5kZW50X2xldmVsPjAmJih0PW5ldyBBcnJheShlLmluZGVudF9sZXZlbCsxKS5qb2luKHRoaXMuX19pbmRlbnRfc3RyaW5nKSksdGhpcy5fX2Jhc2Vfc3RyaW5nPXQsdGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aD10Lmxlbmd0aH1mdW5jdGlvbiByKGUscil7dGhpcy5fX2luZGVudF9jYWNoZT1uZXcgbihlLHIpLHRoaXMucmF3PSExLHRoaXMuX2VuZF93aXRoX25ld2xpbmU9ZS5lbmRfd2l0aF9uZXdsaW5lLHRoaXMuaW5kZW50X3NpemU9ZS5pbmRlbnRfc2l6ZSx0aGlzLndyYXBfbGluZV9sZW5ndGg9ZS53cmFwX2xpbmVfbGVuZ3RoLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPWUuaW5kZW50X2VtcHR5X2xpbmVzLHRoaXMuX19saW5lcz1bXSx0aGlzLnByZXZpb3VzX2xpbmU9bnVsbCx0aGlzLmN1cnJlbnRfbGluZT1udWxsLHRoaXMubmV4dF9saW5lPW5ldyB0KHRoaXMpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMSx0aGlzLl9fYWRkX291dHB1dGxpbmUoKX10LnByb3RvdHlwZS5jbG9uZV9lbXB0eT1mdW5jdGlvbigpe3ZhciBlPW5ldyB0KHRoaXMuX19wYXJlbnQpO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlfSx0LnByb3RvdHlwZS5pdGVtPWZ1bmN0aW9uKGUpe3JldHVybiBlPDA/dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgrZV06dGhpcy5fX2l0ZW1zW2VdfSx0LnByb3RvdHlwZS5oYXNfbWF0Y2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19pdGVtcy5sZW5ndGgtMTt0Pj0wO3QtLSlpZih0aGlzLl9faXRlbXNbdF0ubWF0Y2goZSkpcmV0dXJuITA7cmV0dXJuITF9LHQucHJvdG90eXBlLnNldF9pbmRlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmlzX2VtcHR5KCkmJih0aGlzLl9faW5kZW50X2NvdW50PWV8fDAsdGhpcy5fX2FsaWdubWVudF9jb3VudD10fHwwLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3NpemUodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSl9LHQucHJvdG90eXBlLl9zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX19wYXJlbnQud3JhcF9saW5lX2xlbmd0aCYmKHRoaXMuX193cmFwX3BvaW50X2luZGV4PXRoaXMuX19pdGVtcy5sZW5ndGgsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PXRoaXMuX19jaGFyYWN0ZXJfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PXRoaXMuX19wYXJlbnQubmV4dF9saW5lLl9faW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2FsaWdubWVudF9jb3VudCl9LHQucHJvdG90eXBlLl9zaG91bGRfd3JhcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fd3JhcF9wb2ludF9pbmRleCYmdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJnRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2NoYXJhY3Rlcl9jb3VudH0sdC5wcm90b3R5cGUuX2FsbG93X3dyYXA9ZnVuY3Rpb24oKXtpZih0aGlzLl9zaG91bGRfd3JhcCgpKXt0aGlzLl9fcGFyZW50LmFkZF9uZXdfbGluZSgpO3ZhciBlPXRoaXMuX19wYXJlbnQuY3VycmVudF9saW5lO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudCksZS5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSh0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksdGhpcy5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSgwLHRoaXMuX193cmFwX3BvaW50X2luZGV4KSxlLl9fY2hhcmFjdGVyX2NvdW50Kz10aGlzLl9fY2hhcmFjdGVyX2NvdW50LXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCwiICI9PT1lLl9faXRlbXNbMF0mJihlLl9faXRlbXMuc3BsaWNlKDAsMSksZS5fX2NoYXJhY3Rlcl9jb3VudC09MSksITB9cmV0dXJuITF9LHQucHJvdG90eXBlLmlzX2VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9faXRlbXMubGVuZ3RofSx0LnByb3RvdHlwZS5sYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKT9udWxsOnRoaXMuX19pdGVtc1t0aGlzLl9faXRlbXMubGVuZ3RoLTFdfSx0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUpe3RoaXMuX19pdGVtcy5wdXNoKGUpO3ZhciB0PWUubGFzdEluZGV4T2YoIlxuIik7LTEhPT10P3RoaXMuX19jaGFyYWN0ZXJfY291bnQ9ZS5sZW5ndGgtdDp0aGlzLl9fY2hhcmFjdGVyX2NvdW50Kz1lLmxlbmd0aH0sdC5wcm90b3R5cGUucG9wPWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHwoZT10aGlzLl9faXRlbXMucG9wKCksdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09ZS5sZW5ndGgpLGV9LHQucHJvdG90eXBlLl9yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5fX2luZGVudF9jb3VudD4wJiYodGhpcy5fX2luZGVudF9jb3VudC09MSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT10aGlzLl9fcGFyZW50LmluZGVudF9zaXplKX0sdC5wcm90b3R5cGUuX3JlbW92ZV93cmFwX2luZGVudD1mdW5jdGlvbigpe3RoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD4wJiYodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LT0xKX0sdC5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe2Zvcig7IiAiPT09dGhpcy5sYXN0KCk7KXRoaXMuX19pdGVtcy5wb3AoKSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT0xfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmlzX2VtcHR5KCk/dGhpcy5fX3BhcmVudC5pbmRlbnRfZW1wdHlfbGluZXMmJihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCkpOihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlKz10aGlzLl9faXRlbXMuam9pbigiIikpLGV9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc2l6ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg7cmV0dXJuIHQ9dHx8MCxlPDAmJihuPTApLG4rPWUqdGhpcy5fX2luZGVudF9zaXplLG4rPXR9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2Jhc2Vfc3RyaW5nO3JldHVybiB0PXR8fDAsZTwwJiYoZT0wLG49IiIpLHQrPWUqdGhpcy5fX2luZGVudF9zaXplLHRoaXMuX19lbnN1cmVfY2FjaGUodCksbis9dGhpcy5fX2NhY2hlW3RdfSxuLnByb3RvdHlwZS5fX2Vuc3VyZV9jYWNoZT1mdW5jdGlvbihlKXtmb3IoO2U+PXRoaXMuX19jYWNoZS5sZW5ndGg7KXRoaXMuX19hZGRfY29sdW1uKCl9LG4ucHJvdG90eXBlLl9fYWRkX2NvbHVtbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX19jYWNoZS5sZW5ndGgsdD0wLG49IiI7dGhpcy5fX2luZGVudF9zaXplJiZlPj10aGlzLl9faW5kZW50X3NpemUmJihlLT0odD1NYXRoLmZsb29yKGUvdGhpcy5fX2luZGVudF9zaXplKSkqdGhpcy5fX2luZGVudF9zaXplLG49bmV3IEFycmF5KHQrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLGUmJihuKz1uZXcgQXJyYXkoZSsxKS5qb2luKCIgIikpLHRoaXMuX19jYWNoZS5wdXNoKG4pfSxyLnByb3RvdHlwZS5fX2FkZF9vdXRwdXRsaW5lPWZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuY3VycmVudF9saW5lLHRoaXMuY3VycmVudF9saW5lPXRoaXMubmV4dF9saW5lLmNsb25lX2VtcHR5KCksdGhpcy5fX2xpbmVzLnB1c2godGhpcy5jdXJyZW50X2xpbmUpfSxyLnByb3RvdHlwZS5nZXRfbGluZV9udW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2xpbmVzLmxlbmd0aH0sci5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3N0cmluZyhlLHQpfSxyLnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3NpemUoZSx0KX0sci5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5wcmV2aW91c19saW5lJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSxyLnByb3RvdHlwZS5hZGRfbmV3X2xpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuISh0aGlzLmlzX2VtcHR5KCl8fCFlJiZ0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpKSYmKHRoaXMucmF3fHx0aGlzLl9fYWRkX291dHB1dGxpbmUoKSwhMCl9LHIucHJvdG90eXBlLmdldF9jb2RlPWZ1bmN0aW9uKGUpe3RoaXMudHJpbSghMCk7dmFyIHQ9dGhpcy5jdXJyZW50X2xpbmUucG9wKCk7dCYmKCJcbiI9PT10W3QubGVuZ3RoLTFdJiYodD10LnJlcGxhY2UoL1xuKyQvZywiIikpLHRoaXMuY3VycmVudF9saW5lLnB1c2godCkpLHRoaXMuX2VuZF93aXRoX25ld2xpbmUmJnRoaXMuX19hZGRfb3V0cHV0bGluZSgpO3ZhciBuPXRoaXMuX19saW5lcy5qb2luKCJcbiIpO3JldHVybiJcbiIhPT1lJiYobj1uLnJlcGxhY2UoL1tcbl0vZyxlKSksbn0sci5wcm90b3R5cGUuc2V0X3dyYXBfcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRfbGluZS5fc2V0X3dyYXBfcG9pbnQoKX0sci5wcm90b3R5cGUuc2V0X2luZGVudD1mdW5jdGlvbihlLHQpe3JldHVybiBlPWV8fDAsdD10fHwwLHRoaXMubmV4dF9saW5lLnNldF9pbmRlbnQoZSx0KSx0aGlzLl9fbGluZXMubGVuZ3RoPjE/KHRoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoZSx0KSwhMCk6KHRoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoKSwhMSl9LHIucHJvdG90eXBlLmFkZF9yYXdfdG9rZW49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLm5ld2xpbmVzO3QrKyl0aGlzLl9fYWRkX291dHB1dGxpbmUoKTt0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KC0xKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGUud2hpdGVzcGFjZV9iZWZvcmUpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZS50ZXh0KSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ITF9LHIucHJvdG90eXBlLmFkZF90b2tlbj1mdW5jdGlvbihlKXt0aGlzLl9fYWRkX3NwYWNlX2JlZm9yZV90b2tlbigpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZSksdGhpcy5zcGFjZV9iZWZvcmVfdG9rZW49ITEsdGhpcy5ub25fYnJlYWtpbmdfc3BhY2U9ITEsdGhpcy5wcmV2aW91c190b2tlbl93cmFwcGVkPXRoaXMuY3VycmVudF9saW5lLl9hbGxvd193cmFwKCl9LHIucHJvdG90eXBlLl9fYWRkX3NwYWNlX2JlZm9yZV90b2tlbj1mdW5jdGlvbigpe3RoaXMuc3BhY2VfYmVmb3JlX3Rva2VuJiYhdGhpcy5qdXN0X2FkZGVkX25ld2xpbmUoKSYmKHRoaXMubm9uX2JyZWFraW5nX3NwYWNlfHx0aGlzLnNldF93cmFwX3BvaW50KCksdGhpcy5jdXJyZW50X2xpbmUucHVzaCgiICIpKX0sci5wcm90b3R5cGUucmVtb3ZlX2luZGVudD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5fX2xpbmVzLmxlbmd0aDtlPHQ7KXRoaXMuX19saW5lc1tlXS5fcmVtb3ZlX2luZGVudCgpLGUrKzt0aGlzLmN1cnJlbnRfbGluZS5fcmVtb3ZlX3dyYXBfaW5kZW50KCl9LHIucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oZSl7Zm9yKGU9dm9pZCAwIT09ZSYmZSx0aGlzLmN1cnJlbnRfbGluZS50cmltKCk7ZSYmdGhpcy5fX2xpbmVzLmxlbmd0aD4xJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpOyl0aGlzLl9fbGluZXMucG9wKCksdGhpcy5jdXJyZW50X2xpbmU9dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMV0sdGhpcy5jdXJyZW50X2xpbmUudHJpbSgpO3RoaXMucHJldmlvdXNfbGluZT10aGlzLl9fbGluZXMubGVuZ3RoPjE/dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMl06bnVsbH0sci5wcm90b3R5cGUuanVzdF9hZGRlZF9uZXdsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCl9LHIucHJvdG90eXBlLmp1c3RfYWRkZWRfYmxhbmtsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKXx8dGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKSYmdGhpcy5wcmV2aW91c19saW5lLmlzX2VtcHR5KCl9LHIucHJvdG90eXBlLmVuc3VyZV9lbXB0eV9saW5lX2Fib3ZlPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciByPXRoaXMuX19saW5lcy5sZW5ndGgtMjtyPj0wOyl7dmFyIGk9dGhpcy5fX2xpbmVzW3JdO2lmKGkuaXNfZW1wdHkoKSlicmVhaztpZigwIT09aS5pdGVtKDApLmluZGV4T2YoZSkmJmkuaXRlbSgtMSkhPT1uKXt0aGlzLl9fbGluZXMuc3BsaWNlKHIrMSwwLG5ldyB0KHRoaXMpKSx0aGlzLnByZXZpb3VzX2xpbmU9dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMl07YnJlYWt9ci0tfX0sZS5leHBvcnRzLk91dHB1dD1yfSxmdW5jdGlvbihlKXtlLmV4cG9ydHMuVG9rZW49ZnVuY3Rpb24oZSx0LG4scil7dGhpcy50eXBlPWUsdGhpcy50ZXh0PXQsdGhpcy5jb21tZW50c19iZWZvcmU9bnVsbCx0aGlzLm5ld2xpbmVzPW58fDAsdGhpcy53aGl0ZXNwYWNlX2JlZm9yZT1yfHwiIix0aGlzLnBhcmVudD1udWxsLHRoaXMubmV4dD1udWxsLHRoaXMucHJldmlvdXM9bnVsbCx0aGlzLm9wZW5lZD1udWxsLHRoaXMuY2xvc2VkPW51bGwsdGhpcy5kaXJlY3RpdmVzPW51bGx9fSwsLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXt0aGlzLnJhd19vcHRpb25zPW4oZSx0KSx0aGlzLmRpc2FibGVkPXRoaXMuX2dldF9ib29sZWFuKCJkaXNhYmxlZCIpLHRoaXMuZW9sPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJlb2wiLCJhdXRvIiksdGhpcy5lbmRfd2l0aF9uZXdsaW5lPXRoaXMuX2dldF9ib29sZWFuKCJlbmRfd2l0aF9uZXdsaW5lIiksdGhpcy5pbmRlbnRfc2l6ZT10aGlzLl9nZXRfbnVtYmVyKCJpbmRlbnRfc2l6ZSIsNCksdGhpcy5pbmRlbnRfY2hhcj10aGlzLl9nZXRfY2hhcmFjdGVycygiaW5kZW50X2NoYXIiLCIgIiksdGhpcy5pbmRlbnRfbGV2ZWw9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X2xldmVsIiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfYm9vbGVhbigicHJlc2VydmVfbmV3bGluZXMiLCEwKSx0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfbnVtYmVyKCJtYXhfcHJlc2VydmVfbmV3bGluZXMiLDMyNzg2KSx0aGlzLnByZXNlcnZlX25ld2xpbmVzfHwodGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9MCksdGhpcy5pbmRlbnRfd2l0aF90YWJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfd2l0aF90YWJzIiwiXHQiPT09dGhpcy5pbmRlbnRfY2hhciksdGhpcy5pbmRlbnRfd2l0aF90YWJzJiYodGhpcy5pbmRlbnRfY2hhcj0iXHQiLDE9PT10aGlzLmluZGVudF9zaXplJiYodGhpcy5pbmRlbnRfc2l6ZT00KSksdGhpcy53cmFwX2xpbmVfbGVuZ3RoPXRoaXMuX2dldF9udW1iZXIoIndyYXBfbGluZV9sZW5ndGgiLHRoaXMuX2dldF9udW1iZXIoIm1heF9jaGFyIikpLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfZW1wdHlfbGluZXMiKSx0aGlzLnRlbXBsYXRpbmc9dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KCJ0ZW1wbGF0aW5nIixbImF1dG8iLCJub25lIiwiZGphbmdvIiwiZXJiIiwiaGFuZGxlYmFycyIsInBocCIsInNtYXJ0eSJdLFsiYXV0byJdKX1mdW5jdGlvbiBuKGUsdCl7dmFyIG4saT17fTtmb3IobiBpbiBlPXIoZSkpbiE9PXQmJihpW25dPWVbbl0pO2lmKHQmJmVbdF0pZm9yKG4gaW4gZVt0XSlpW25dPWVbdF1bbl07cmV0dXJuIGl9ZnVuY3Rpb24gcihlKXt2YXIgdCxuPXt9O2Zvcih0IGluIGUpe25bdC5yZXBsYWNlKC8tL2csIl8iKV09ZVt0XX1yZXR1cm4gbn10LnByb3RvdHlwZS5fZ2V0X2FycmF5PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXSxyPXR8fFtdO3JldHVybiJvYmplY3QiPT10eXBlb2Ygbj9udWxsIT09biYmImZ1bmN0aW9uIj09dHlwZW9mIG4uY29uY2F0JiYocj1uLmNvbmNhdCgpKToic3RyaW5nIj09dHlwZW9mIG4mJihyPW4uc3BsaXQoL1teYS16QS1aMC05X1wvXC1dKy8pKSxyfSx0LnByb3RvdHlwZS5fZ2V0X2Jvb2xlYW49ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdO3JldHVybiB2b2lkIDA9PT1uPyEhdDohIW59LHQucHJvdG90eXBlLl9nZXRfY2hhcmFjdGVycz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucmF3X29wdGlvbnNbZV0scj10fHwiIjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4mJihyPW4ucmVwbGFjZSgvXFxyLywiXHIiKS5yZXBsYWNlKC9cXG4vLCJcbiIpLnJlcGxhY2UoL1xcdC8sIlx0IikpLHJ9LHQucHJvdG90eXBlLl9nZXRfbnVtYmVyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXTt0PXBhcnNlSW50KHQsMTApLGlzTmFOKHQpJiYodD0wKTt2YXIgcj1wYXJzZUludChuLDEwKTtyZXR1cm4gaXNOYU4ocikmJihyPXQpLHJ9LHQucHJvdG90eXBlLl9nZXRfc2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoZSx0LG4pO2lmKDEhPT1yLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgT3B0aW9uIFZhbHVlOiBUaGUgb3B0aW9uICciK2UrIicgY2FuIG9ubHkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuIit0KyJcbllvdSBwYXNzZWQgaW46ICciK3RoaXMucmF3X29wdGlvbnNbZV0rIiciKTtyZXR1cm4gclswXX0sdC5wcm90b3R5cGUuX2dldF9zZWxlY3Rpb25fbGlzdD1mdW5jdGlvbihlLHQsbil7aWYoIXR8fDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlNlbGVjdGlvbiBsaXN0IGNhbm5vdCBiZSBlbXB0eS4iKTtpZihuPW58fFt0WzBdXSwhdGhpcy5faXNfdmFsaWRfc2VsZWN0aW9uKG4sdCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIERlZmF1bHQgVmFsdWUhIik7dmFyIHI9dGhpcy5fZ2V0X2FycmF5KGUsbik7aWYoIXRoaXMuX2lzX3ZhbGlkX3NlbGVjdGlvbihyLHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBPcHRpb24gVmFsdWU6IFRoZSBvcHRpb24gJyIrZSsiJyBjYW4gY29udGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuIit0KyJcbllvdSBwYXNzZWQgaW46ICciK3RoaXMucmF3X29wdGlvbnNbZV0rIiciKTtyZXR1cm4gcn0sdC5wcm90b3R5cGUuX2lzX3ZhbGlkX3NlbGVjdGlvbj1mdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aCYmdC5sZW5ndGgmJiFlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybi0xPT09dC5pbmRleE9mKGUpfSkpfSxlLmV4cG9ydHMuT3B0aW9ucz10LGUuZXhwb3J0cy5ub3JtYWxpemVPcHRzPXIsZS5leHBvcnRzLm1lcmdlT3B0cz1ufSwsZnVuY3Rpb24oZSl7dmFyIHQ9UmVnRXhwLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgic3RpY2t5Iik7ZnVuY3Rpb24gbihlKXt0aGlzLl9faW5wdXQ9ZXx8IiIsdGhpcy5fX2lucHV0X2xlbmd0aD10aGlzLl9faW5wdXQubGVuZ3RoLHRoaXMuX19wb3NpdGlvbj0wfW4ucHJvdG90eXBlLnJlc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcG9zaXRpb249MH0sbi5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj4wJiYodGhpcy5fX3Bvc2l0aW9uLT0xKX0sbi5wcm90b3R5cGUuaGFzTmV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fcG9zaXRpb248dGhpcy5fX2lucHV0X2xlbmd0aH0sbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIHRoaXMuaGFzTmV4dCgpJiYoZT10aGlzLl9faW5wdXQuY2hhckF0KHRoaXMuX19wb3NpdGlvbiksdGhpcy5fX3Bvc2l0aW9uKz0xKSxlfSxuLnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7cmV0dXJuIGU9ZXx8MCwoZSs9dGhpcy5fX3Bvc2l0aW9uKT49MCYmZTx0aGlzLl9faW5wdXRfbGVuZ3RoJiYodD10aGlzLl9faW5wdXQuY2hhckF0KGUpKSx0fSxuLnByb3RvdHlwZS5fX21hdGNoPWZ1bmN0aW9uKGUsbil7ZS5sYXN0SW5kZXg9bjt2YXIgcj1lLmV4ZWModGhpcy5fX2lucHV0KTtyZXR1cm4hcnx8dCYmZS5zdGlja3l8fHIuaW5kZXghPT1uJiYocj1udWxsKSxyfSxuLnByb3RvdHlwZS50ZXN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9dHx8MCwodCs9dGhpcy5fX3Bvc2l0aW9uKT49MCYmdDx0aGlzLl9faW5wdXRfbGVuZ3RoJiYhIXRoaXMuX19tYXRjaChlLHQpfSxuLnByb3RvdHlwZS50ZXN0Q2hhcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucGVlayh0KTtyZXR1cm4gZS5sYXN0SW5kZXg9MCxudWxsIT09biYmZS50ZXN0KG4pfSxuLnByb3RvdHlwZS5tYXRjaD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fbWF0Y2goZSx0aGlzLl9fcG9zaXRpb24pO3JldHVybiB0P3RoaXMuX19wb3NpdGlvbis9dFswXS5sZW5ndGg6dD1udWxsLHR9LG4ucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9IiI7cmV0dXJuIGUmJihyPXRoaXMubWF0Y2goZSkpJiYoaSs9clswXSksIXR8fCFyJiZlfHwoaSs9dGhpcy5yZWFkVW50aWwodCxuKSksaX0sbi5wcm90b3R5cGUucmVhZFVudGlsPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj10aGlzLl9fcG9zaXRpb247ZS5sYXN0SW5kZXg9dGhpcy5fX3Bvc2l0aW9uO3ZhciBpPWUuZXhlYyh0aGlzLl9faW5wdXQpO3JldHVybiBpPyhyPWkuaW5kZXgsdCYmKHIrPWlbMF0ubGVuZ3RoKSk6cj10aGlzLl9faW5wdXRfbGVuZ3RoLG49dGhpcy5fX2lucHV0LnN1YnN0cmluZyh0aGlzLl9fcG9zaXRpb24sciksdGhpcy5fX3Bvc2l0aW9uPXIsbn0sbi5wcm90b3R5cGUucmVhZFVudGlsQWZ0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmVhZFVudGlsKGUsITApfSxuLnByb3RvdHlwZS5nZXRfcmVnZXhwPWZ1bmN0aW9uKGUsbil7dmFyIHI9bnVsbCxpPSJnIjtyZXR1cm4gbiYmdCYmKGk9InkiKSwic3RyaW5nIj09dHlwZW9mIGUmJiIiIT09ZT9yPW5ldyBSZWdFeHAoZSxpKTplJiYocj1uZXcgUmVnRXhwKGUuc291cmNlLGkpKSxyfSxuLnByb3RvdHlwZS5nZXRfbGl0ZXJhbF9yZWdleHA9ZnVuY3Rpb24oZSl7cmV0dXJuIFJlZ0V4cChlLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIikpfSxuLnByb3RvdHlwZS5wZWVrVW50aWxBZnRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fcG9zaXRpb24sbj10aGlzLnJlYWRVbnRpbEFmdGVyKGUpO3JldHVybiB0aGlzLl9fcG9zaXRpb249dCxufSxuLnByb3RvdHlwZS5sb29rQmFjaz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fcG9zaXRpb24tMTtyZXR1cm4gdD49ZS5sZW5ndGgmJnRoaXMuX19pbnB1dC5zdWJzdHJpbmcodC1lLmxlbmd0aCx0KS50b0xvd2VyQ2FzZSgpPT09ZX0sZS5leHBvcnRzLklucHV0U2Nhbm5lcj1ufSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big4KS5JbnB1dFNjYW5uZXIsaT1uKDMpLlRva2VuLGE9bigxMCkuVG9rZW5TdHJlYW0sbz1uKDExKS5XaGl0ZXNwYWNlUGF0dGVybixzPXtTVEFSVDoiVEtfU1RBUlQiLFJBVzoiVEtfUkFXIixFT0Y6IlRLX0VPRiJ9LGw9ZnVuY3Rpb24oZSx0KXt0aGlzLl9pbnB1dD1uZXcgcihlKSx0aGlzLl9vcHRpb25zPXR8fHt9LHRoaXMuX190b2tlbnM9bnVsbCx0aGlzLl9wYXR0ZXJucz17fSx0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlPW5ldyBvKHRoaXMuX2lucHV0KX07bC5wcm90b3R5cGUudG9rZW5pemU9ZnVuY3Rpb24oKXt2YXIgZTt0aGlzLl9pbnB1dC5yZXN0YXJ0KCksdGhpcy5fX3Rva2Vucz1uZXcgYSx0aGlzLl9yZXNldCgpO2Zvcih2YXIgdD1uZXcgaShzLlNUQVJULCIiKSxuPW51bGwscj1bXSxvPW5ldyBhO3QudHlwZSE9PXMuRU9GOyl7Zm9yKGU9dGhpcy5fZ2V0X25leHRfdG9rZW4odCxuKTt0aGlzLl9pc19jb21tZW50KGUpOylvLmFkZChlKSxlPXRoaXMuX2dldF9uZXh0X3Rva2VuKHQsbik7by5pc0VtcHR5KCl8fChlLmNvbW1lbnRzX2JlZm9yZT1vLG89bmV3IGEpLGUucGFyZW50PW4sdGhpcy5faXNfb3BlbmluZyhlKT8oci5wdXNoKG4pLG49ZSk6biYmdGhpcy5faXNfY2xvc2luZyhlLG4pJiYoZS5vcGVuZWQ9bixuLmNsb3NlZD1lLG49ci5wb3AoKSxlLnBhcmVudD1uKSxlLnByZXZpb3VzPXQsdC5uZXh0PWUsdGhpcy5fX3Rva2Vucy5hZGQoZSksdD1lfXJldHVybiB0aGlzLl9fdG9rZW5zfSxsLnByb3RvdHlwZS5faXNfZmlyc3RfdG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3Rva2Vucy5pc0VtcHR5KCl9LGwucHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe30sbC5wcm90b3R5cGUuX2dldF9uZXh0X3Rva2VuPWZ1bmN0aW9uKGUsdCl7dGhpcy5fcmVhZFdoaXRlc3BhY2UoKTt2YXIgbj10aGlzLl9pbnB1dC5yZWFkKC8uKy9nKTtyZXR1cm4gbj90aGlzLl9jcmVhdGVfdG9rZW4ocy5SQVcsbik6dGhpcy5fY3JlYXRlX3Rva2VuKHMuRU9GLCIiKX0sbC5wcm90b3R5cGUuX2lzX2NvbW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuITF9LGwucHJvdG90eXBlLl9pc19vcGVuaW5nPWZ1bmN0aW9uKGUpe3JldHVybiExfSxsLnByb3RvdHlwZS5faXNfY2xvc2luZz1mdW5jdGlvbihlLHQpe3JldHVybiExfSxsLnByb3RvdHlwZS5fY3JlYXRlX3Rva2VuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBpKGUsdCx0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlLm5ld2xpbmVfY291bnQsdGhpcy5fcGF0dGVybnMud2hpdGVzcGFjZS53aGl0ZXNwYWNlX2JlZm9yZV90b2tlbil9LGwucHJvdG90eXBlLl9yZWFkV2hpdGVzcGFjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlLnJlYWQoKX0sZS5leHBvcnRzLlRva2VuaXplcj1sLGUuZXhwb3J0cy5UT0tFTj1zfSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3RoaXMuX190b2tlbnM9W10sdGhpcy5fX3Rva2Vuc19sZW5ndGg9dGhpcy5fX3Rva2Vucy5sZW5ndGgsdGhpcy5fX3Bvc2l0aW9uPTAsdGhpcy5fX3BhcmVudF90b2tlbj1lfXQucHJvdG90eXBlLnJlc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcG9zaXRpb249MH0sdC5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fX3Rva2Vuc19sZW5ndGh9LHQucHJvdG90eXBlLmhhc05leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3Bvc2l0aW9uPHRoaXMuX190b2tlbnNfbGVuZ3RofSx0LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5oYXNOZXh0KCkmJihlPXRoaXMuX190b2tlbnNbdGhpcy5fX3Bvc2l0aW9uXSx0aGlzLl9fcG9zaXRpb24rPTEpLGV9LHQucHJvdG90eXBlLnBlZWs9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZT1lfHwwLChlKz10aGlzLl9fcG9zaXRpb24pPj0wJiZlPHRoaXMuX190b2tlbnNfbGVuZ3RoJiYodD10aGlzLl9fdG9rZW5zW2VdKSx0fSx0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5fX3BhcmVudF90b2tlbiYmKGUucGFyZW50PXRoaXMuX19wYXJlbnRfdG9rZW4pLHRoaXMuX190b2tlbnMucHVzaChlKSx0aGlzLl9fdG9rZW5zX2xlbmd0aCs9MX0sZS5leHBvcnRzLlRva2VuU3RyZWFtPXR9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDEyKS5QYXR0ZXJuO2Z1bmN0aW9uIGkoZSx0KXtyLmNhbGwodGhpcyxlLHQpLHQ/dGhpcy5fbGluZV9yZWdleHA9dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCh0Ll9saW5lX3JlZ2V4cCk6dGhpcy5fX3NldF93aGl0ZXNwYWNlX3BhdHRlcm5zKCIiLCIiKSx0aGlzLm5ld2xpbmVfY291bnQ9MCx0aGlzLndoaXRlc3BhY2VfYmVmb3JlX3Rva2VuPSIifWkucHJvdG90eXBlPW5ldyByLGkucHJvdG90eXBlLl9fc2V0X3doaXRlc3BhY2VfcGF0dGVybnM9ZnVuY3Rpb24oZSx0KXtlKz0iXFx0ICIsdCs9IlxcblxcciIsdGhpcy5fbWF0Y2hfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKCJbIitlK3QrIl0rIiwhMCksdGhpcy5fbmV3bGluZV9yZWdleHA9dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCgiXFxyXFxufFsiK3QrIl0iKX0saS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbigpe3RoaXMubmV3bGluZV9jb3VudD0wLHRoaXMud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW49IiI7dmFyIGU9dGhpcy5faW5wdXQucmVhZCh0aGlzLl9tYXRjaF9wYXR0ZXJuKTtpZigiICI9PT1lKXRoaXMud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW49IiAiO2Vsc2UgaWYoZSl7dmFyIHQ9dGhpcy5fX3NwbGl0KHRoaXMuX25ld2xpbmVfcmVnZXhwLGUpO3RoaXMubmV3bGluZV9jb3VudD10Lmxlbmd0aC0xLHRoaXMud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW49dFt0aGlzLm5ld2xpbmVfY291bnRdfXJldHVybiBlfSxpLnByb3RvdHlwZS5tYXRjaGluZz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX2NyZWF0ZSgpO3JldHVybiBuLl9fc2V0X3doaXRlc3BhY2VfcGF0dGVybnMoZSx0KSxuLl91cGRhdGUoKSxufSxpLnByb3RvdHlwZS5fY3JlYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpKHRoaXMuX2lucHV0LHRoaXMpfSxpLnByb3RvdHlwZS5fX3NwbGl0PWZ1bmN0aW9uKGUsdCl7ZS5sYXN0SW5kZXg9MDtmb3IodmFyIG49MCxyPVtdLGk9ZS5leGVjKHQpO2k7KXIucHVzaCh0LnN1YnN0cmluZyhuLGkuaW5kZXgpKSxuPWkuaW5kZXgraVswXS5sZW5ndGgsaT1lLmV4ZWModCk7cmV0dXJuIG48dC5sZW5ndGg/ci5wdXNoKHQuc3Vic3RyaW5nKG4sdC5sZW5ndGgpKTpyLnB1c2goIiIpLHJ9LGUuZXhwb3J0cy5XaGl0ZXNwYWNlUGF0dGVybj1pfSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7dGhpcy5faW5wdXQ9ZSx0aGlzLl9zdGFydGluZ19wYXR0ZXJuPW51bGwsdGhpcy5fbWF0Y2hfcGF0dGVybj1udWxsLHRoaXMuX3VudGlsX3BhdHRlcm49bnVsbCx0aGlzLl91bnRpbF9hZnRlcj0hMSx0JiYodGhpcy5fc3RhcnRpbmdfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKHQuX3N0YXJ0aW5nX3BhdHRlcm4sITApLHRoaXMuX21hdGNoX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCh0Ll9tYXRjaF9wYXR0ZXJuLCEwKSx0aGlzLl91bnRpbF9wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAodC5fdW50aWxfcGF0dGVybiksdGhpcy5fdW50aWxfYWZ0ZXI9dC5fdW50aWxfYWZ0ZXIpfXQucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9pbnB1dC5yZWFkKHRoaXMuX3N0YXJ0aW5nX3BhdHRlcm4pO3JldHVybiB0aGlzLl9zdGFydGluZ19wYXR0ZXJuJiYhZXx8KGUrPXRoaXMuX2lucHV0LnJlYWQodGhpcy5fbWF0Y2hfcGF0dGVybix0aGlzLl91bnRpbF9wYXR0ZXJuLHRoaXMuX3VudGlsX2FmdGVyKSksZX0sdC5wcm90b3R5cGUucmVhZF9tYXRjaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbnB1dC5tYXRjaCh0aGlzLl9tYXRjaF9wYXR0ZXJuKX0sdC5wcm90b3R5cGUudW50aWxfYWZ0ZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX3VudGlsX2FmdGVyPSEwLHQuX3VudGlsX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cChlKSx0Ll91cGRhdGUoKSx0fSx0LnByb3RvdHlwZS51bnRpbD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fdW50aWxfYWZ0ZXI9ITEsdC5fdW50aWxfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKGUpLHQuX3VwZGF0ZSgpLHR9LHQucHJvdG90eXBlLnN0YXJ0aW5nX3dpdGg9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX3N0YXJ0aW5nX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cChlLCEwKSx0Ll91cGRhdGUoKSx0fSx0LnByb3RvdHlwZS5tYXRjaGluZz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fbWF0Y2hfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKGUsITApLHQuX3VwZGF0ZSgpLHR9LHQucHJvdG90eXBlLl9jcmVhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHQodGhpcy5faW5wdXQsdGhpcyl9LHQucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt9LGUuZXhwb3J0cy5QYXR0ZXJuPXR9LGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXtlPSJzdHJpbmciPT10eXBlb2YgZT9lOmUuc291cmNlLHQ9InN0cmluZyI9PXR5cGVvZiB0P3Q6dC5zb3VyY2UsdGhpcy5fX2RpcmVjdGl2ZXNfYmxvY2tfcGF0dGVybj1uZXcgUmVnRXhwKGUrLyBiZWF1dGlmeSggXHcrWzpdXHcrKSsgLy5zb3VyY2UrdCwiZyIpLHRoaXMuX19kaXJlY3RpdmVfcGF0dGVybj0vIChcdyspWzpdKFx3KykvZyx0aGlzLl9fZGlyZWN0aXZlc19lbmRfaWdub3JlX3BhdHRlcm49bmV3IFJlZ0V4cChlKy9cc2JlYXV0aWZ5XHNpZ25vcmU6ZW5kXHMvLnNvdXJjZSt0LCJnIil9dC5wcm90b3R5cGUuZ2V0X2RpcmVjdGl2ZXM9ZnVuY3Rpb24oZSl7aWYoIWUubWF0Y2godGhpcy5fX2RpcmVjdGl2ZXNfYmxvY2tfcGF0dGVybikpcmV0dXJuIG51bGw7dmFyIHQ9e307dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmxhc3RJbmRleD0wO2Zvcih2YXIgbj10aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4uZXhlYyhlKTtuOyl0W25bMV1dPW5bMl0sbj10aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4uZXhlYyhlKTtyZXR1cm4gdH0sdC5wcm90b3R5cGUucmVhZElnbm9yZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVhZFVudGlsQWZ0ZXIodGhpcy5fX2RpcmVjdGl2ZXNfZW5kX2lnbm9yZV9wYXR0ZXJuKX0sZS5leHBvcnRzLkRpcmVjdGl2ZXM9dH0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTIpLlBhdHRlcm4saT17ZGphbmdvOiExLGVyYjohMSxoYW5kbGViYXJzOiExLHBocDohMSxzbWFydHk6ITF9O2Z1bmN0aW9uIGEoZSx0KXtyLmNhbGwodGhpcyxlLHQpLHRoaXMuX190ZW1wbGF0ZV9wYXR0ZXJuPW51bGwsdGhpcy5fZGlzYWJsZWQ9T2JqZWN0LmFzc2lnbih7fSxpKSx0aGlzLl9leGNsdWRlZD1PYmplY3QuYXNzaWduKHt9LGkpLHQmJih0aGlzLl9fdGVtcGxhdGVfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKHQuX190ZW1wbGF0ZV9wYXR0ZXJuKSx0aGlzLl9leGNsdWRlZD1PYmplY3QuYXNzaWduKHRoaXMuX2V4Y2x1ZGVkLHQuX2V4Y2x1ZGVkKSx0aGlzLl9kaXNhYmxlZD1PYmplY3QuYXNzaWduKHRoaXMuX2Rpc2FibGVkLHQuX2Rpc2FibGVkKSk7dmFyIG49bmV3IHIoZSk7dGhpcy5fX3BhdHRlcm5zPXtoYW5kbGViYXJzX2NvbW1lbnQ6bi5zdGFydGluZ193aXRoKC97eyEtLS8pLnVudGlsX2FmdGVyKC8tLX19LyksaGFuZGxlYmFyc191bmVzY2FwZWQ6bi5zdGFydGluZ193aXRoKC97e3svKS51bnRpbF9hZnRlcigvfX19LyksaGFuZGxlYmFyczpuLnN0YXJ0aW5nX3dpdGgoL3t7LykudW50aWxfYWZ0ZXIoL319LykscGhwOm4uc3RhcnRpbmdfd2l0aCgvPFw/KD86Wz0gXXxwaHApLykudW50aWxfYWZ0ZXIoL1w/Pi8pLGVyYjpuLnN0YXJ0aW5nX3dpdGgoLzwlW14lXS8pLnVudGlsX2FmdGVyKC9bXiVdJT4vKSxkamFuZ286bi5zdGFydGluZ193aXRoKC97JS8pLnVudGlsX2FmdGVyKC8lfS8pLGRqYW5nb192YWx1ZTpuLnN0YXJ0aW5nX3dpdGgoL3t7LykudW50aWxfYWZ0ZXIoL319LyksZGphbmdvX2NvbW1lbnQ6bi5zdGFydGluZ193aXRoKC97Iy8pLnVudGlsX2FmdGVyKC8jfS8pLHNtYXJ0eTpuLnN0YXJ0aW5nX3dpdGgoL3soPz1bXn17XHNcbl0pLykudW50aWxfYWZ0ZXIoL1teXHNcbl19Lyksc21hcnR5X2NvbW1lbnQ6bi5zdGFydGluZ193aXRoKC97XCovKS51bnRpbF9hZnRlcigvXCp9Lyksc21hcnR5X2xpdGVyYWw6bi5zdGFydGluZ193aXRoKC97bGl0ZXJhbH0vKS51bnRpbF9hZnRlcigve1wvbGl0ZXJhbH0vKX19YS5wcm90b3R5cGU9bmV3IHIsYS5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgYSh0aGlzLl9pbnB1dCx0aGlzKX0sYS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX19zZXRfdGVtcGxhdGVkX3BhdHRlcm4oKX0sYS5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fZGlzYWJsZWRbZV09ITAsdC5fdXBkYXRlKCksdH0sYS5wcm90b3R5cGUucmVhZF9vcHRpb25zPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2NyZWF0ZSgpO2Zvcih2YXIgbiBpbiBpKXQuX2Rpc2FibGVkW25dPS0xPT09ZS50ZW1wbGF0aW5nLmluZGV4T2Yobik7cmV0dXJuIHQuX3VwZGF0ZSgpLHR9LGEucHJvdG90eXBlLmV4Y2x1ZGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX2V4Y2x1ZGVkW2VdPSEwLHQuX3VwZGF0ZSgpLHR9LGEucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oKXt2YXIgZT0iIjtlPXRoaXMuX21hdGNoX3BhdHRlcm4/dGhpcy5faW5wdXQucmVhZCh0aGlzLl9zdGFydGluZ19wYXR0ZXJuKTp0aGlzLl9pbnB1dC5yZWFkKHRoaXMuX3N0YXJ0aW5nX3BhdHRlcm4sdGhpcy5fX3RlbXBsYXRlX3BhdHRlcm4pO2Zvcih2YXIgdD10aGlzLl9yZWFkX3RlbXBsYXRlKCk7dDspdGhpcy5fbWF0Y2hfcGF0dGVybj90Kz10aGlzLl9pbnB1dC5yZWFkKHRoaXMuX21hdGNoX3BhdHRlcm4pOnQrPXRoaXMuX2lucHV0LnJlYWRVbnRpbCh0aGlzLl9fdGVtcGxhdGVfcGF0dGVybiksZSs9dCx0PXRoaXMuX3JlYWRfdGVtcGxhdGUoKTtyZXR1cm4gdGhpcy5fdW50aWxfYWZ0ZXImJihlKz10aGlzLl9pbnB1dC5yZWFkVW50aWxBZnRlcih0aGlzLl91bnRpbF9wYXR0ZXJuKSksZX0sYS5wcm90b3R5cGUuX19zZXRfdGVtcGxhdGVkX3BhdHRlcm49ZnVuY3Rpb24oKXt2YXIgZT1bXTt0aGlzLl9kaXNhYmxlZC5waHB8fGUucHVzaCh0aGlzLl9fcGF0dGVybnMucGhwLl9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksdGhpcy5fZGlzYWJsZWQuaGFuZGxlYmFyc3x8ZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzLl9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksdGhpcy5fZGlzYWJsZWQuZXJifHxlLnB1c2godGhpcy5fX3BhdHRlcm5zLmVyYi5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpLHRoaXMuX2Rpc2FibGVkLmRqYW5nb3x8KGUucHVzaCh0aGlzLl9fcGF0dGVybnMuZGphbmdvLl9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5kamFuZ29fdmFsdWUuX3N0YXJ0aW5nX3BhdHRlcm4uc291cmNlKSxlLnB1c2godGhpcy5fX3BhdHRlcm5zLmRqYW5nb19jb21tZW50Ll9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSkpLHRoaXMuX2Rpc2FibGVkLnNtYXJ0eXx8ZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5zbWFydHkuX3N0YXJ0aW5nX3BhdHRlcm4uc291cmNlKSx0aGlzLl91bnRpbF9wYXR0ZXJuJiZlLnB1c2godGhpcy5fdW50aWxfcGF0dGVybi5zb3VyY2UpLHRoaXMuX190ZW1wbGF0ZV9wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAoIig/OiIrZS5qb2luKCJ8IikrIikiKX0sYS5wcm90b3R5cGUuX3JlYWRfdGVtcGxhdGU9ZnVuY3Rpb24oKXt2YXIgZT0iIix0PXRoaXMuX2lucHV0LnBlZWsoKTtpZigiPCI9PT10KXt2YXIgbj10aGlzLl9pbnB1dC5wZWVrKDEpO3RoaXMuX2Rpc2FibGVkLnBocHx8dGhpcy5fZXhjbHVkZWQucGhwfHwiPyIhPT1ufHwoZT1lfHx0aGlzLl9fcGF0dGVybnMucGhwLnJlYWQoKSksdGhpcy5fZGlzYWJsZWQuZXJifHx0aGlzLl9leGNsdWRlZC5lcmJ8fCIlIiE9PW58fChlPWV8fHRoaXMuX19wYXR0ZXJucy5lcmIucmVhZCgpKX1lbHNlInsiPT09dCYmKHRoaXMuX2Rpc2FibGVkLmhhbmRsZWJhcnN8fHRoaXMuX2V4Y2x1ZGVkLmhhbmRsZWJhcnN8fChlPShlPShlPWV8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzX2NvbW1lbnQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLmhhbmRsZWJhcnNfdW5lc2NhcGVkLnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzLnJlYWQoKSksdGhpcy5fZGlzYWJsZWQuZGphbmdvfHwodGhpcy5fZXhjbHVkZWQuZGphbmdvfHx0aGlzLl9leGNsdWRlZC5oYW5kbGViYXJzfHwoZT1lfHx0aGlzLl9fcGF0dGVybnMuZGphbmdvX3ZhbHVlLnJlYWQoKSksdGhpcy5fZXhjbHVkZWQuZGphbmdvfHwoZT0oZT1lfHx0aGlzLl9fcGF0dGVybnMuZGphbmdvX2NvbW1lbnQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLmRqYW5nby5yZWFkKCkpKSx0aGlzLl9kaXNhYmxlZC5zbWFydHl8fHRoaXMuX2Rpc2FibGVkLmRqYW5nbyYmdGhpcy5fZGlzYWJsZWQuaGFuZGxlYmFycyYmKGU9KGU9KGU9ZXx8dGhpcy5fX3BhdHRlcm5zLnNtYXJ0eV9jb21tZW50LnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5zbWFydHlfbGl0ZXJhbC5yZWFkKCkpfHx0aGlzLl9fcGF0dGVybnMuc21hcnR5LnJlYWQoKSkpO3JldHVybiBlfSxlLmV4cG9ydHMuVGVtcGxhdGFibGVQYXR0ZXJuPWF9LCwsLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDE5KS5CZWF1dGlmaWVyLGk9bigyMCkuT3B0aW9ucztlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJuIG5ldyByKGUsdCxuLGkpLmJlYXV0aWZ5KCl9LGUuZXhwb3J0cy5kZWZhdWx0T3B0aW9ucz1mdW5jdGlvbigpe3JldHVybiBuZXcgaX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDIwKS5PcHRpb25zLGk9bigyKS5PdXRwdXQsYT1uKDIxKS5Ub2tlbml6ZXIsbz1uKDIxKS5UT0tFTixzPS9cclxufFtcclxuXS8sbD0vXHJcbnxbXHJcbl0vZyxjPWZ1bmN0aW9uKGUsdCl7dGhpcy5pbmRlbnRfbGV2ZWw9MCx0aGlzLmFsaWdubWVudF9zaXplPTAsdGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9ZS5tYXhfcHJlc2VydmVfbmV3bGluZXMsdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcz1lLnByZXNlcnZlX25ld2xpbmVzLHRoaXMuX291dHB1dD1uZXcgaShlLHQpfTtjLnByb3RvdHlwZS5jdXJyZW50X2xpbmVfaGFzX21hdGNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9vdXRwdXQuY3VycmVudF9saW5lLmhhc19tYXRjaChlKX0sYy5wcm90b3R5cGUuc2V0X3NwYWNlX2JlZm9yZV90b2tlbj1mdW5jdGlvbihlLHQpe3RoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ZSx0aGlzLl9vdXRwdXQubm9uX2JyZWFraW5nX3NwYWNlPXR9LGMucHJvdG90eXBlLnNldF93cmFwX3BvaW50PWZ1bmN0aW9uKCl7dGhpcy5fb3V0cHV0LnNldF9pbmRlbnQodGhpcy5pbmRlbnRfbGV2ZWwsdGhpcy5hbGlnbm1lbnRfc2l6ZSksdGhpcy5fb3V0cHV0LnNldF93cmFwX3BvaW50KCl9LGMucHJvdG90eXBlLmFkZF9yYXdfdG9rZW49ZnVuY3Rpb24oZSl7dGhpcy5fb3V0cHV0LmFkZF9yYXdfdG9rZW4oZSl9LGMucHJvdG90eXBlLnByaW50X3ByZXNlcnZlZF9uZXdsaW5lcz1mdW5jdGlvbihlKXt2YXIgdD0wO2UudHlwZSE9PW8uVEVYVCYmZS5wcmV2aW91cy50eXBlIT09by5URVhUJiYodD1lLm5ld2xpbmVzPzE6MCksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcyYmKHQ9ZS5uZXdsaW5lczx0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcysxP2UubmV3bGluZXM6dGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXMrMSk7Zm9yKHZhciBuPTA7bjx0O24rKyl0aGlzLnByaW50X25ld2xpbmUobj4wKTtyZXR1cm4gMCE9PXR9LGMucHJvdG90eXBlLnRyYXZlcnNlX3doaXRlc3BhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuISghZS53aGl0ZXNwYWNlX2JlZm9yZSYmIWUubmV3bGluZXMpJiYodGhpcy5wcmludF9wcmVzZXJ2ZWRfbmV3bGluZXMoZSl8fCh0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKSwhMCl9LGMucHJvdG90eXBlLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3V0cHV0LnByZXZpb3VzX3Rva2VuX3dyYXBwZWR9LGMucHJvdG90eXBlLnByaW50X25ld2xpbmU9ZnVuY3Rpb24oZSl7dGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZShlKX0sYy5wcm90b3R5cGUucHJpbnRfdG9rZW49ZnVuY3Rpb24oZSl7ZS50ZXh0JiYodGhpcy5fb3V0cHV0LnNldF9pbmRlbnQodGhpcy5pbmRlbnRfbGV2ZWwsdGhpcy5hbGlnbm1lbnRfc2l6ZSksdGhpcy5fb3V0cHV0LmFkZF90b2tlbihlLnRleHQpKX0sYy5wcm90b3R5cGUuaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5pbmRlbnRfbGV2ZWwrK30sYy5wcm90b3R5cGUuZ2V0X2Z1bGxfaW5kZW50PWZ1bmN0aW9uKGUpe3JldHVybihlPXRoaXMuaW5kZW50X2xldmVsKyhlfHwwKSk8MT8iIjp0aGlzLl9vdXRwdXQuZ2V0X2luZGVudF9zdHJpbmcoZSl9O3ZhciBoPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIHQuY2xvc2VkPygic2NyaXB0Ij09PWU/bj0idGV4dC9qYXZhc2NyaXB0Ijoic3R5bGUiPT09ZSYmKG49InRleHQvY3NzIiksbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9bnVsbCxuPWUubmV4dDtuLnR5cGUhPT1vLkVPRiYmZS5jbG9zZWQhPT1uOyl7aWYobi50eXBlPT09by5BVFRSSUJVVEUmJiJ0eXBlIj09PW4udGV4dCl7bi5uZXh0JiZuLm5leHQudHlwZT09PW8uRVFVQUxTJiZuLm5leHQubmV4dCYmbi5uZXh0Lm5leHQudHlwZT09PW8uVkFMVUUmJih0PW4ubmV4dC5uZXh0LnRleHQpO2JyZWFrfW49bi5uZXh0fXJldHVybiB0fSh0KXx8bixuLnNlYXJjaCgidGV4dC9jc3MiKT4tMT9yPSJjc3MiOm4uc2VhcmNoKC9tb2R1bGV8KCh0ZXh0fGFwcGxpY2F0aW9ufGRvam8pXC8oeC0pPyhqYXZhc2NyaXB0fGVjbWFzY3JpcHR8anNjcmlwdHxsaXZlc2NyaXB0fChsZFwrKT9qc29ufG1ldGhvZHxhc3BlY3QpKS8pPi0xP3I9ImphdmFzY3JpcHQiOm4uc2VhcmNoKC8odGV4dHxhcHBsaWNhdGlvbnxkb2pvKVwvKHgtKT8oaHRtbCkvKT4tMT9yPSJodG1sIjpuLnNlYXJjaCgvdGVzdFwvbnVsbC8pPi0xJiYocj0ibnVsbCIpLHIpOm51bGx9O2Z1bmN0aW9uIGQoZSx0KXtyZXR1cm4tMSE9PXQuaW5kZXhPZihlKX1mdW5jdGlvbiB1KGUsdCxuKXt0aGlzLnBhcmVudD1lfHxudWxsLHRoaXMudGFnPXQ/dC50YWdfbmFtZToiIix0aGlzLmluZGVudF9sZXZlbD1ufHwwLHRoaXMucGFyc2VyX3Rva2VuPXR8fG51bGx9ZnVuY3Rpb24gcChlKXt0aGlzLl9wcmludGVyPWUsdGhpcy5fY3VycmVudF9mcmFtZT1udWxsfWZ1bmN0aW9uIG0oZSx0LG4saSl7dGhpcy5fc291cmNlX3RleHQ9ZXx8IiIsdD10fHx7fSx0aGlzLl9qc19iZWF1dGlmeT1uLHRoaXMuX2Nzc19iZWF1dGlmeT1pLHRoaXMuX3RhZ19zdGFjaz1udWxsO3ZhciBhPW5ldyByKHQsImh0bWwiKTt0aGlzLl9vcHRpb25zPWEsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlPSJmb3JjZSI9PT10aGlzLl9vcHRpb25zLndyYXBfYXR0cmlidXRlcy5zdWJzdHIoMCwiZm9yY2UiLmxlbmd0aCksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2V4cGFuZF9tdWx0aWxpbmU9ImZvcmNlLWV4cGFuZC1tdWx0aWxpbmUiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2FsaWduZWQ9ImZvcmNlLWFsaWduZWQiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2FsaWduZWRfbXVsdGlwbGU9ImFsaWduZWQtbXVsdGlwbGUiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlPSJwcmVzZXJ2ZSI9PT10aGlzLl9vcHRpb25zLndyYXBfYXR0cmlidXRlcy5zdWJzdHIoMCwicHJlc2VydmUiLmxlbmd0aCksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlX2FsaWduZWQ9InByZXNlcnZlLWFsaWduZWQiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXN9cC5wcm90b3R5cGUuZ2V0X3BhcnNlcl90b2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJyZW50X2ZyYW1lP3RoaXMuX2N1cnJlbnRfZnJhbWUucGFyc2VyX3Rva2VuOm51bGx9LHAucHJvdG90eXBlLnJlY29yZF90YWc9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHUodGhpcy5fY3VycmVudF9mcmFtZSxlLHRoaXMuX3ByaW50ZXIuaW5kZW50X2xldmVsKTt0aGlzLl9jdXJyZW50X2ZyYW1lPXR9LHAucHJvdG90eXBlLl90cnlfcG9wX2ZyYW1lPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7cmV0dXJuIGUmJih0PWUucGFyc2VyX3Rva2VuLHRoaXMuX3ByaW50ZXIuaW5kZW50X2xldmVsPWUuaW5kZW50X2xldmVsLHRoaXMuX2N1cnJlbnRfZnJhbWU9ZS5wYXJlbnQpLHR9LHAucHJvdG90eXBlLl9nZXRfZnJhbWU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy5fY3VycmVudF9mcmFtZTtuJiYtMT09PWUuaW5kZXhPZihuLnRhZyk7KXtpZih0JiYtMSE9PXQuaW5kZXhPZihuLnRhZykpe249bnVsbDticmVha31uPW4ucGFyZW50fXJldHVybiBufSxwLnByb3RvdHlwZS50cnlfcG9wPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fZ2V0X2ZyYW1lKFtlXSx0KTtyZXR1cm4gdGhpcy5fdHJ5X3BvcF9mcmFtZShuKX0scC5wcm90b3R5cGUuaW5kZW50X3RvX3RhZz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9nZXRfZnJhbWUoZSk7dCYmKHRoaXMuX3ByaW50ZXIuaW5kZW50X2xldmVsPXQuaW5kZW50X2xldmVsKX0sbS5wcm90b3R5cGUuYmVhdXRpZnk9ZnVuY3Rpb24oKXtpZih0aGlzLl9vcHRpb25zLmRpc2FibGVkKXJldHVybiB0aGlzLl9zb3VyY2VfdGV4dDt2YXIgZT10aGlzLl9zb3VyY2VfdGV4dCx0PXRoaXMuX29wdGlvbnMuZW9sOyJhdXRvIj09PXRoaXMuX29wdGlvbnMuZW9sJiYodD0iXG4iLGUmJnMudGVzdChlKSYmKHQ9ZS5tYXRjaChzKVswXSkpO3ZhciBuPShlPWUucmVwbGFjZShsLCJcbiIpKS5tYXRjaCgvXltcdCBdKi8pWzBdLHI9e3RleHQ6IiIsdHlwZToiIn0saT1uZXcgZixoPW5ldyBjKHRoaXMuX29wdGlvbnMsbiksZD1uZXcgYShlLHRoaXMuX29wdGlvbnMpLnRva2VuaXplKCk7dGhpcy5fdGFnX3N0YWNrPW5ldyBwKGgpO2Zvcih2YXIgdT1udWxsLG09ZC5uZXh0KCk7bS50eXBlIT09by5FT0Y7KW0udHlwZT09PW8uVEFHX09QRU58fG0udHlwZT09PW8uQ09NTUVOVD9pPXU9dGhpcy5faGFuZGxlX3RhZ19vcGVuKGgsbSxpLHIpOm0udHlwZT09PW8uQVRUUklCVVRFfHxtLnR5cGU9PT1vLkVRVUFMU3x8bS50eXBlPT09by5WQUxVRXx8bS50eXBlPT09by5URVhUJiYhaS50YWdfY29tcGxldGU/dT10aGlzLl9oYW5kbGVfaW5zaWRlX3RhZyhoLG0saSxkKTptLnR5cGU9PT1vLlRBR19DTE9TRT91PXRoaXMuX2hhbmRsZV90YWdfY2xvc2UoaCxtLGkpOm0udHlwZT09PW8uVEVYVD91PXRoaXMuX2hhbmRsZV90ZXh0KGgsbSxpKTpoLmFkZF9yYXdfdG9rZW4obSkscj11LG09ZC5uZXh0KCk7cmV0dXJuIGguX291dHB1dC5nZXRfY29kZSh0KX0sbS5wcm90b3R5cGUuX2hhbmRsZV90YWdfY2xvc2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXt0ZXh0OnQudGV4dCx0eXBlOnQudHlwZX07cmV0dXJuIGUuYWxpZ25tZW50X3NpemU9MCxuLnRhZ19jb21wbGV0ZT0hMCxlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW4odC5uZXdsaW5lc3x8IiIhPT10LndoaXRlc3BhY2VfYmVmb3JlLCEwKSxuLmlzX3VuZm9ybWF0dGVkP2UuYWRkX3Jhd190b2tlbih0KTooIjwiPT09bi50YWdfc3RhcnRfY2hhciYmKGUuc2V0X3NwYWNlX2JlZm9yZV90b2tlbigiLyI9PT10LnRleHRbMF0sITApLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZV9leHBhbmRfbXVsdGlsaW5lJiZuLmhhc193cmFwcGVkX2F0dHJzJiZlLnByaW50X25ld2xpbmUoITEpKSxlLnByaW50X3Rva2VuKHQpKSwhbi5pbmRlbnRfY29udGVudHx8bi5pc191bmZvcm1hdHRlZHx8bi5pc19jb250ZW50X3VuZm9ybWF0dGVkfHwoZS5pbmRlbnQoKSxuLmluZGVudF9jb250ZW50PSExKSxuLmlzX2lubGluZV9lbGVtZW50fHxuLmlzX3VuZm9ybWF0dGVkfHxuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fGUuc2V0X3dyYXBfcG9pbnQoKSxyfSxtLnByb3RvdHlwZS5faGFuZGxlX2luc2lkZV90YWc9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9bi5oYXNfd3JhcHBlZF9hdHRycyxhPXt0ZXh0OnQudGV4dCx0eXBlOnQudHlwZX07aWYoZS5zZXRfc3BhY2VfYmVmb3JlX3Rva2VuKHQubmV3bGluZXN8fCIiIT09dC53aGl0ZXNwYWNlX2JlZm9yZSwhMCksbi5pc191bmZvcm1hdHRlZCllLmFkZF9yYXdfdG9rZW4odCk7ZWxzZSBpZigieyI9PT1uLnRhZ19zdGFydF9jaGFyJiZ0LnR5cGU9PT1vLlRFWFQpZS5wcmludF9wcmVzZXJ2ZWRfbmV3bGluZXModCk/KHQubmV3bGluZXM9MCxlLmFkZF9yYXdfdG9rZW4odCkpOmUucHJpbnRfdG9rZW4odCk7ZWxzZXtpZih0LnR5cGU9PT1vLkFUVFJJQlVURT8oZS5zZXRfc3BhY2VfYmVmb3JlX3Rva2VuKCEwKSxuLmF0dHJfY291bnQrPTEpOih0LnR5cGU9PT1vLkVRVUFMU3x8dC50eXBlPT09by5WQUxVRSYmdC5wcmV2aW91cy50eXBlPT09by5FUVVBTFMpJiZlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW4oITEpLHQudHlwZT09PW8uQVRUUklCVVRFJiYiPCI9PT1uLnRhZ19zdGFydF9jaGFyJiYoKHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19wcmVzZXJ2ZXx8dGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlX2FsaWduZWQpJiYoZS50cmF2ZXJzZV93aGl0ZXNwYWNlKHQpLGk9aXx8MCE9PXQubmV3bGluZXMpLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZSkpe3ZhciBzPW4uYXR0cl9jb3VudD4xO2lmKHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZV9leHBhbmRfbXVsdGlsaW5lJiYxPT09bi5hdHRyX2NvdW50KXt2YXIgbCxjPSEwLGg9MDtkb3tpZigobD1yLnBlZWsoaCkpLnR5cGU9PT1vLkFUVFJJQlVURSl7Yz0hMTticmVha31oKz0xfXdoaWxlKGg8NCYmbC50eXBlIT09by5FT0YmJmwudHlwZSE9PW8uVEFHX0NMT1NFKTtzPSFjfXMmJihlLnByaW50X25ld2xpbmUoITEpLGk9ITApfWUucHJpbnRfdG9rZW4odCksaT1pfHxlLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQoKSxuLmhhc193cmFwcGVkX2F0dHJzPWl9cmV0dXJuIGF9LG0ucHJvdG90eXBlLl9oYW5kbGVfdGV4dD1mdW5jdGlvbihlLHQsbil7dmFyIHI9e3RleHQ6dC50ZXh0LHR5cGU6IlRLX0NPTlRFTlQifTtyZXR1cm4gbi5jdXN0b21fYmVhdXRpZmllcl9uYW1lP3RoaXMuX3ByaW50X2N1c3RvbV9iZWF0aWZpZXJfdGV4dChlLHQsbik6bi5pc191bmZvcm1hdHRlZHx8bi5pc19jb250ZW50X3VuZm9ybWF0dGVkP2UuYWRkX3Jhd190b2tlbih0KTooZS50cmF2ZXJzZV93aGl0ZXNwYWNlKHQpLGUucHJpbnRfdG9rZW4odCkpLHJ9LG0ucHJvdG90eXBlLl9wcmludF9jdXN0b21fYmVhdGlmaWVyX3RleHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7aWYoIiIhPT10LnRleHQpe3ZhciBpLGE9dC50ZXh0LG89MSxzPSIiLGw9IiI7ImphdmFzY3JpcHQiPT09bi5jdXN0b21fYmVhdXRpZmllcl9uYW1lJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fanNfYmVhdXRpZnk/aT10aGlzLl9qc19iZWF1dGlmeToiY3NzIj09PW4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZSYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX2Nzc19iZWF1dGlmeT9pPXRoaXMuX2Nzc19iZWF1dGlmeToiaHRtbCI9PT1uLmN1c3RvbV9iZWF1dGlmaWVyX25hbWUmJihpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBtKGUsdCxyLl9qc19iZWF1dGlmeSxyLl9jc3NfYmVhdXRpZnkpLmJlYXV0aWZ5KCl9KSwia2VlcCI9PT10aGlzLl9vcHRpb25zLmluZGVudF9zY3JpcHRzP289MDoic2VwYXJhdGUiPT09dGhpcy5fb3B0aW9ucy5pbmRlbnRfc2NyaXB0cyYmKG89LWUuaW5kZW50X2xldmVsKTt2YXIgYz1lLmdldF9mdWxsX2luZGVudChvKTtpZihhPWEucmVwbGFjZSgvXG5bIFx0XSokLywiIiksImh0bWwiIT09bi5jdXN0b21fYmVhdXRpZmllcl9uYW1lJiYiPCI9PT1hWzBdJiZhLm1hdGNoKC9eKDwhLS18PCFcW0NEQVRBXFspLykpe3ZhciBoPS9eKDwhLS1bXlxuXSp8PCFcW0NEQVRBXFspKFxuPykoWyBcdFxuXSopKFtcc1xTXSopKC0tPnxdXT4pJC8uZXhlYyhhKTtpZighaClyZXR1cm4gdm9pZCBlLmFkZF9yYXdfdG9rZW4odCk7cz1jK2hbMV0rIlxuIixhPWhbNF0saFs1XSYmKGw9YytoWzVdKSxhPWEucmVwbGFjZSgvXG5bIFx0XSokLywiIiksKGhbMl18fC0xIT09aFszXS5pbmRleE9mKCJcbiIpKSYmKGg9aFszXS5tYXRjaCgvWyBcdF0rJC8pKSYmKHQud2hpdGVzcGFjZV9iZWZvcmU9aFswXSl9aWYoYSlpZihpKXt2YXIgZD1mdW5jdGlvbigpe3RoaXMuZW9sPSJcbiJ9O2QucHJvdG90eXBlPXRoaXMuX29wdGlvbnMucmF3X29wdGlvbnMsYT1pKGMrYSxuZXcgZCl9ZWxzZXt2YXIgdT10LndoaXRlc3BhY2VfYmVmb3JlO3UmJihhPWEucmVwbGFjZShuZXcgUmVnRXhwKCJcbigiK3UrIik/IiwiZyIpLCJcbiIpKSxhPWMrYS5yZXBsYWNlKC9cbi9nLCJcbiIrYyl9cyYmKGE9YT9zK2ErIlxuIitsOnMrbCksZS5wcmludF9uZXdsaW5lKCExKSxhJiYodC50ZXh0PWEsdC53aGl0ZXNwYWNlX2JlZm9yZT0iIix0Lm5ld2xpbmVzPTAsZS5hZGRfcmF3X3Rva2VuKHQpLGUucHJpbnRfbmV3bGluZSghMCkpfX0sbS5wcm90b3R5cGUuX2hhbmRsZV90YWdfb3Blbj1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT10aGlzLl9nZXRfdGFnX29wZW5fdG9rZW4odCk7cmV0dXJuIW4uaXNfdW5mb3JtYXR0ZWQmJiFuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fG4uaXNfZW1wdHlfZWxlbWVudHx8dC50eXBlIT09by5UQUdfT1BFTnx8MCE9PXQudGV4dC5pbmRleE9mKCI8LyIpPyhlLnRyYXZlcnNlX3doaXRlc3BhY2UodCksdGhpcy5fc2V0X3RhZ19wb3NpdGlvbihlLHQsaSxuLHIpLGkuaXNfaW5saW5lX2VsZW1lbnR8fGUuc2V0X3dyYXBfcG9pbnQoKSxlLnByaW50X3Rva2VuKHQpKTooZS5hZGRfcmF3X3Rva2VuKHQpLGkuc3RhcnRfdGFnX3Rva2VuPXRoaXMuX3RhZ19zdGFjay50cnlfcG9wKGkudGFnX25hbWUpKSwodGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2FsaWduZWR8fHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19hbGlnbmVkX211bHRpcGxlfHx0aGlzLl9pc193cmFwX2F0dHJpYnV0ZXNfcHJlc2VydmVfYWxpZ25lZCkmJihpLmFsaWdubWVudF9zaXplPXQudGV4dC5sZW5ndGgrMSksaS50YWdfY29tcGxldGV8fGkuaXNfdW5mb3JtYXR0ZWR8fChlLmFsaWdubWVudF9zaXplPWkuYWxpZ25tZW50X3NpemUpLGl9O3ZhciBmPWZ1bmN0aW9uKGUsdCl7dmFyIG47KHRoaXMucGFyZW50PWV8fG51bGwsdGhpcy50ZXh0PSIiLHRoaXMudHlwZT0iVEtfVEFHX09QRU4iLHRoaXMudGFnX25hbWU9IiIsdGhpcy5pc19pbmxpbmVfZWxlbWVudD0hMSx0aGlzLmlzX3VuZm9ybWF0dGVkPSExLHRoaXMuaXNfY29udGVudF91bmZvcm1hdHRlZD0hMSx0aGlzLmlzX2VtcHR5X2VsZW1lbnQ9ITEsdGhpcy5pc19zdGFydF90YWc9ITEsdGhpcy5pc19lbmRfdGFnPSExLHRoaXMuaW5kZW50X2NvbnRlbnQ9ITEsdGhpcy5tdWx0aWxpbmVfY29udGVudD0hMSx0aGlzLmN1c3RvbV9iZWF1dGlmaWVyX25hbWU9bnVsbCx0aGlzLnN0YXJ0X3RhZ190b2tlbj1udWxsLHRoaXMuYXR0cl9jb3VudD0wLHRoaXMuaGFzX3dyYXBwZWRfYXR0cnM9ITEsdGhpcy5hbGlnbm1lbnRfc2l6ZT0wLHRoaXMudGFnX2NvbXBsZXRlPSExLHRoaXMudGFnX3N0YXJ0X2NoYXI9IiIsdGhpcy50YWdfY2hlY2s9IiIsdCk/KHRoaXMudGFnX3N0YXJ0X2NoYXI9dC50ZXh0WzBdLHRoaXMudGV4dD10LnRleHQsIjwiPT09dGhpcy50YWdfc3RhcnRfY2hhcj8obj10LnRleHQubWF0Y2goL148KFteXHM+XSopLyksdGhpcy50YWdfY2hlY2s9bj9uWzFdOiIiKToobj10LnRleHQubWF0Y2goL157eyg/OltcXl18I1wqPyk/KFteXHN9XSspLyksdGhpcy50YWdfY2hlY2s9bj9uWzFdOiIiLCJ7eyM+Ij09PXQudGV4dCYmIj4iPT09dGhpcy50YWdfY2hlY2smJm51bGwhPT10Lm5leHQmJih0aGlzLnRhZ19jaGVjaz10Lm5leHQudGV4dCkpLHRoaXMudGFnX2NoZWNrPXRoaXMudGFnX2NoZWNrLnRvTG93ZXJDYXNlKCksdC50eXBlPT09by5DT01NRU5UJiYodGhpcy50YWdfY29tcGxldGU9ITApLHRoaXMuaXNfc3RhcnRfdGFnPSIvIiE9PXRoaXMudGFnX2NoZWNrLmNoYXJBdCgwKSx0aGlzLnRhZ19uYW1lPXRoaXMuaXNfc3RhcnRfdGFnP3RoaXMudGFnX2NoZWNrOnRoaXMudGFnX2NoZWNrLnN1YnN0cigxKSx0aGlzLmlzX2VuZF90YWc9IXRoaXMuaXNfc3RhcnRfdGFnfHx0LmNsb3NlZCYmIi8+Ij09PXQuY2xvc2VkLnRleHQsdGhpcy5pc19lbmRfdGFnPXRoaXMuaXNfZW5kX3RhZ3x8InsiPT09dGhpcy50YWdfc3RhcnRfY2hhciYmKHRoaXMudGV4dC5sZW5ndGg8M3x8L1teI1xeXS8udGVzdCh0aGlzLnRleHQuY2hhckF0KDIpKSkpOnRoaXMudGFnX2NvbXBsZXRlPSEwfTttLnByb3RvdHlwZS5fZ2V0X3RhZ19vcGVuX3Rva2VuPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBmKHRoaXMuX3RhZ19zdGFjay5nZXRfcGFyc2VyX3Rva2VuKCksZSk7cmV0dXJuIHQuYWxpZ25tZW50X3NpemU9dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXNfaW5kZW50X3NpemUsdC5pc19lbmRfdGFnPXQuaXNfZW5kX3RhZ3x8ZCh0LnRhZ19jaGVjayx0aGlzLl9vcHRpb25zLnZvaWRfZWxlbWVudHMpLHQuaXNfZW1wdHlfZWxlbWVudD10LnRhZ19jb21wbGV0ZXx8dC5pc19zdGFydF90YWcmJnQuaXNfZW5kX3RhZyx0LmlzX3VuZm9ybWF0dGVkPSF0LnRhZ19jb21wbGV0ZSYmZCh0LnRhZ19jaGVjayx0aGlzLl9vcHRpb25zLnVuZm9ybWF0dGVkKSx0LmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWQ9IXQuaXNfZW1wdHlfZWxlbWVudCYmZCh0LnRhZ19jaGVjayx0aGlzLl9vcHRpb25zLmNvbnRlbnRfdW5mb3JtYXR0ZWQpLHQuaXNfaW5saW5lX2VsZW1lbnQ9ZCh0LnRhZ19uYW1lLHRoaXMuX29wdGlvbnMuaW5saW5lKXx8InsiPT09dC50YWdfc3RhcnRfY2hhcix0fSxtLnByb3RvdHlwZS5fc2V0X3RhZ19wb3NpdGlvbj1mdW5jdGlvbihlLHQsbixyLGkpe2lmKG4uaXNfZW1wdHlfZWxlbWVudHx8KG4uaXNfZW5kX3RhZz9uLnN0YXJ0X3RhZ190b2tlbj10aGlzLl90YWdfc3RhY2sudHJ5X3BvcChuLnRhZ19uYW1lKToodGhpcy5fZG9fb3B0aW9uYWxfZW5kX2VsZW1lbnQobikmJihuLmlzX2lubGluZV9lbGVtZW50fHxlLnByaW50X25ld2xpbmUoITEpKSx0aGlzLl90YWdfc3RhY2sucmVjb3JkX3RhZyhuKSwic2NyaXB0IiE9PW4udGFnX25hbWUmJiJzdHlsZSIhPT1uLnRhZ19uYW1lfHxuLmlzX3VuZm9ybWF0dGVkfHxuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fChuLmN1c3RvbV9iZWF1dGlmaWVyX25hbWU9aChuLnRhZ19jaGVjayx0KSkpKSxkKG4udGFnX2NoZWNrLHRoaXMuX29wdGlvbnMuZXh0cmFfbGluZXJzKSYmKGUucHJpbnRfbmV3bGluZSghMSksZS5fb3V0cHV0Lmp1c3RfYWRkZWRfYmxhbmtsaW5lKCl8fGUucHJpbnRfbmV3bGluZSghMCkpLG4uaXNfZW1wdHlfZWxlbWVudCl7aWYoInsiPT09bi50YWdfc3RhcnRfY2hhciYmImVsc2UiPT09bi50YWdfY2hlY2spdGhpcy5fdGFnX3N0YWNrLmluZGVudF90b190YWcoWyJpZiIsInVubGVzcyIsImVhY2giXSksbi5pbmRlbnRfY29udGVudD0hMCxlLmN1cnJlbnRfbGluZV9oYXNfbWF0Y2goL3t7I2lmLyl8fGUucHJpbnRfbmV3bGluZSghMSk7IiEtLSI9PT1uLnRhZ19uYW1lJiZpLnR5cGU9PT1vLlRBR19DTE9TRSYmci5pc19lbmRfdGFnJiYtMT09PW4udGV4dC5pbmRleE9mKCJcbiIpfHwobi5pc19pbmxpbmVfZWxlbWVudHx8bi5pc191bmZvcm1hdHRlZHx8ZS5wcmludF9uZXdsaW5lKCExKSx0aGlzLl9jYWxjbHVhdGVfcGFyZW50X211bHRpbGluZShlLG4pKX1lbHNlIGlmKG4uaXNfZW5kX3RhZyl7dmFyIGE9ITE7YT0oYT1uLnN0YXJ0X3RhZ190b2tlbiYmbi5zdGFydF90YWdfdG9rZW4ubXVsdGlsaW5lX2NvbnRlbnQpfHwhbi5pc19pbmxpbmVfZWxlbWVudCYmIShyLmlzX2lubGluZV9lbGVtZW50fHxyLmlzX3VuZm9ybWF0dGVkKSYmIShpLnR5cGU9PT1vLlRBR19DTE9TRSYmbi5zdGFydF90YWdfdG9rZW49PT1yKSYmIlRLX0NPTlRFTlQiIT09aS50eXBlLChuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fG4uaXNfdW5mb3JtYXR0ZWQpJiYoYT0hMSksYSYmZS5wcmludF9uZXdsaW5lKCExKX1lbHNlIG4uaW5kZW50X2NvbnRlbnQ9IW4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZSwiPCI9PT1uLnRhZ19zdGFydF9jaGFyJiYoImh0bWwiPT09bi50YWdfbmFtZT9uLmluZGVudF9jb250ZW50PXRoaXMuX29wdGlvbnMuaW5kZW50X2lubmVyX2h0bWw6ImhlYWQiPT09bi50YWdfbmFtZT9uLmluZGVudF9jb250ZW50PXRoaXMuX29wdGlvbnMuaW5kZW50X2hlYWRfaW5uZXJfaHRtbDoiYm9keSI9PT1uLnRhZ19uYW1lJiYobi5pbmRlbnRfY29udGVudD10aGlzLl9vcHRpb25zLmluZGVudF9ib2R5X2lubmVyX2h0bWwpKSxuLmlzX2lubGluZV9lbGVtZW50fHxuLmlzX3VuZm9ybWF0dGVkfHwiVEtfQ09OVEVOVCI9PT1pLnR5cGUmJiFuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fGUucHJpbnRfbmV3bGluZSghMSksdGhpcy5fY2FsY2x1YXRlX3BhcmVudF9tdWx0aWxpbmUoZSxuKX0sbS5wcm90b3R5cGUuX2NhbGNsdWF0ZV9wYXJlbnRfbXVsdGlsaW5lPWZ1bmN0aW9uKGUsdCl7IXQucGFyZW50fHwhZS5fb3V0cHV0Lmp1c3RfYWRkZWRfbmV3bGluZSgpfHwodC5pc19pbmxpbmVfZWxlbWVudHx8dC5pc191bmZvcm1hdHRlZCkmJnQucGFyZW50LmlzX2lubGluZV9lbGVtZW50fHwodC5wYXJlbnQubXVsdGlsaW5lX2NvbnRlbnQ9ITApfTt2YXIgZz1bImFkZHJlc3MiLCJhcnRpY2xlIiwiYXNpZGUiLCJibG9ja3F1b3RlIiwiZGV0YWlscyIsImRpdiIsImRsIiwiZmllbGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9vdGVyIiwiZm9ybSIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWRlciIsImhyIiwibWFpbiIsIm5hdiIsIm9sIiwicCIsInByZSIsInNlY3Rpb24iLCJ0YWJsZSIsInVsIl0sYj1bImEiLCJhdWRpbyIsImRlbCIsImlucyIsIm1hcCIsIm5vc2NyaXB0IiwidmlkZW8iXTttLnByb3RvdHlwZS5fZG9fb3B0aW9uYWxfZW5kX2VsZW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtpZighZS5pc19lbXB0eV9lbGVtZW50JiZlLmlzX3N0YXJ0X3RhZyYmZS5wYXJlbnQpe2lmKCJib2R5Ij09PWUudGFnX25hbWUpdD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiaGVhZCIpO2Vsc2UgaWYoImxpIj09PWUudGFnX25hbWUpdD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgibGkiLFsib2wiLCJ1bCJdKTtlbHNlIGlmKCJkZCI9PT1lLnRhZ19uYW1lfHwiZHQiPT09ZS50YWdfbmFtZSl0PSh0PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJkdCIsWyJkbCJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJkZCIsWyJkbCJdKTtlbHNlIGlmKCJwIj09PWUucGFyZW50LnRhZ19uYW1lJiYtMSE9PWcuaW5kZXhPZihlLnRhZ19uYW1lKSl7dmFyIG49ZS5wYXJlbnQucGFyZW50O24mJi0xIT09Yi5pbmRleE9mKG4udGFnX25hbWUpfHwodD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgicCIpKX1lbHNlInJwIj09PWUudGFnX25hbWV8fCJydCI9PT1lLnRhZ19uYW1lP3Q9KHQ9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInJ0IixbInJ1YnkiLCJydGMiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgicnAiLFsicnVieSIsInJ0YyJdKToib3B0Z3JvdXAiPT09ZS50YWdfbmFtZT90PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJvcHRncm91cCIsWyJzZWxlY3QiXSk6Im9wdGlvbiI9PT1lLnRhZ19uYW1lP3Q9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoIm9wdGlvbiIsWyJzZWxlY3QiLCJkYXRhbGlzdCIsIm9wdGdyb3VwIl0pOiJjb2xncm91cCI9PT1lLnRhZ19uYW1lP3Q9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNhcHRpb24iLFsidGFibGUiXSk6InRoZWFkIj09PWUudGFnX25hbWU/dD0odD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiY2FwdGlvbiIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjb2xncm91cCIsWyJ0YWJsZSJdKToidGJvZHkiPT09ZS50YWdfbmFtZXx8InRmb290Ij09PWUudGFnX25hbWU/dD0odD0odD0odD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiY2FwdGlvbiIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjb2xncm91cCIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJ0aGVhZCIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJ0Ym9keSIsWyJ0YWJsZSJdKToidHIiPT09ZS50YWdfbmFtZT90PSh0PSh0PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjYXB0aW9uIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNvbGdyb3VwIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInRyIixbInRhYmxlIiwidGhlYWQiLCJ0Ym9keSIsInRmb290Il0pOiJ0aCIhPT1lLnRhZ19uYW1lJiYidGQiIT09ZS50YWdfbmFtZXx8KHQ9KHQ9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInRkIixbInRhYmxlIiwidGhlYWQiLCJ0Ym9keSIsInRmb290IiwidHIiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgidGgiLFsidGFibGUiLCJ0aGVhZCIsInRib2R5IiwidGZvb3QiLCJ0ciJdKSk7cmV0dXJuIGUucGFyZW50PXRoaXMuX3RhZ19zdGFjay5nZXRfcGFyc2VyX3Rva2VuKCksdH19LGUuZXhwb3J0cy5CZWF1dGlmaWVyPW19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDYpLk9wdGlvbnM7ZnVuY3Rpb24gaShlKXtyLmNhbGwodGhpcyxlLCJodG1sIiksMT09PXRoaXMudGVtcGxhdGluZy5sZW5ndGgmJiJhdXRvIj09PXRoaXMudGVtcGxhdGluZ1swXSYmKHRoaXMudGVtcGxhdGluZz1bImRqYW5nbyIsImVyYiIsImhhbmRsZWJhcnMiLCJwaHAiXSksdGhpcy5pbmRlbnRfaW5uZXJfaHRtbD10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X2lubmVyX2h0bWwiKSx0aGlzLmluZGVudF9ib2R5X2lubmVyX2h0bWw9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9ib2R5X2lubmVyX2h0bWwiLCEwKSx0aGlzLmluZGVudF9oZWFkX2lubmVyX2h0bWw9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9oZWFkX2lubmVyX2h0bWwiLCEwKSx0aGlzLmluZGVudF9oYW5kbGViYXJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfaGFuZGxlYmFycyIsITApLHRoaXMud3JhcF9hdHRyaWJ1dGVzPXRoaXMuX2dldF9zZWxlY3Rpb24oIndyYXBfYXR0cmlidXRlcyIsWyJhdXRvIiwiZm9yY2UiLCJmb3JjZS1hbGlnbmVkIiwiZm9yY2UtZXhwYW5kLW11bHRpbGluZSIsImFsaWduZWQtbXVsdGlwbGUiLCJwcmVzZXJ2ZSIsInByZXNlcnZlLWFsaWduZWQiXSksdGhpcy53cmFwX2F0dHJpYnV0ZXNfaW5kZW50X3NpemU9dGhpcy5fZ2V0X251bWJlcigid3JhcF9hdHRyaWJ1dGVzX2luZGVudF9zaXplIix0aGlzLmluZGVudF9zaXplKSx0aGlzLmV4dHJhX2xpbmVycz10aGlzLl9nZXRfYXJyYXkoImV4dHJhX2xpbmVycyIsWyJoZWFkIiwiYm9keSIsIi9odG1sIl0pLHRoaXMuaW5saW5lPXRoaXMuX2dldF9hcnJheSgiaW5saW5lIixbImEiLCJhYmJyIiwiYXJlYSIsImF1ZGlvIiwiYiIsImJkaSIsImJkbyIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2l0ZSIsImNvZGUiLCJkYXRhIiwiZGF0YWxpc3QiLCJkZWwiLCJkZm4iLCJlbSIsImVtYmVkIiwiaSIsImlmcmFtZSIsImltZyIsImlucHV0IiwiaW5zIiwia2JkIiwia2V5Z2VuIiwibGFiZWwiLCJtYXAiLCJtYXJrIiwibWF0aCIsIm1ldGVyIiwibm9zY3JpcHQiLCJvYmplY3QiLCJvdXRwdXQiLCJwcm9ncmVzcyIsInEiLCJydWJ5IiwicyIsInNhbXAiLCJzZWxlY3QiLCJzbWFsbCIsInNwYW4iLCJzdHJvbmciLCJzdWIiLCJzdXAiLCJzdmciLCJ0ZW1wbGF0ZSIsInRleHRhcmVhIiwidGltZSIsInUiLCJ2YXIiLCJ2aWRlbyIsIndiciIsInRleHQiLCJhY3JvbnltIiwiYmlnIiwic3RyaWtlIiwidHQiXSksdGhpcy52b2lkX2VsZW1lbnRzPXRoaXMuX2dldF9hcnJheSgidm9pZF9lbGVtZW50cyIsWyJhcmVhIiwiYmFzZSIsImJyIiwiY29sIiwiZW1iZWQiLCJociIsImltZyIsImlucHV0Iiwia2V5Z2VuIiwibGluayIsIm1lbnVpdGVtIiwibWV0YSIsInBhcmFtIiwic291cmNlIiwidHJhY2siLCJ3YnIiLCIhZG9jdHlwZSIsIj94bWwiLCJiYXNlZm9udCIsImlzaW5kZXgiXSksdGhpcy51bmZvcm1hdHRlZD10aGlzLl9nZXRfYXJyYXkoInVuZm9ybWF0dGVkIixbXSksdGhpcy5jb250ZW50X3VuZm9ybWF0dGVkPXRoaXMuX2dldF9hcnJheSgiY29udGVudF91bmZvcm1hdHRlZCIsWyJwcmUiLCJ0ZXh0YXJlYSJdKSx0aGlzLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJ1bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlciIpLHRoaXMuaW5kZW50X3NjcmlwdHM9dGhpcy5fZ2V0X3NlbGVjdGlvbigiaW5kZW50X3NjcmlwdHMiLFsibm9ybWFsIiwia2VlcCIsInNlcGFyYXRlIl0pfWkucHJvdG90eXBlPW5ldyByLGUuZXhwb3J0cy5PcHRpb25zPWl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDkpLlRva2VuaXplcixpPW4oOSkuVE9LRU4sYT1uKDEzKS5EaXJlY3RpdmVzLG89bigxNCkuVGVtcGxhdGFibGVQYXR0ZXJuLHM9bigxMikuUGF0dGVybixsPXtUQUdfT1BFTjoiVEtfVEFHX09QRU4iLFRBR19DTE9TRToiVEtfVEFHX0NMT1NFIixBVFRSSUJVVEU6IlRLX0FUVFJJQlVURSIsRVFVQUxTOiJUS19FUVVBTFMiLFZBTFVFOiJUS19WQUxVRSIsQ09NTUVOVDoiVEtfQ09NTUVOVCIsVEVYVDoiVEtfVEVYVCIsVU5LTk9XTjoiVEtfVU5LTk9XTiIsU1RBUlQ6aS5TVEFSVCxSQVc6aS5SQVcsRU9GOmkuRU9GfSxjPW5ldyBhKC88XCEtLS8sLy0tPi8pLGg9ZnVuY3Rpb24oZSx0KXtyLmNhbGwodGhpcyxlLHQpLHRoaXMuX2N1cnJlbnRfdGFnX25hbWU9IiI7dmFyIG49bmV3IG8odGhpcy5faW5wdXQpLnJlYWRfb3B0aW9ucyh0aGlzLl9vcHRpb25zKSxpPW5ldyBzKHRoaXMuX2lucHV0KTtpZih0aGlzLl9fcGF0dGVybnM9e3dvcmQ6bi51bnRpbCgvW1xuXHJcdCA8XS8pLHNpbmdsZV9xdW90ZTpuLnVudGlsX2FmdGVyKC8nLyksZG91YmxlX3F1b3RlOm4udW50aWxfYWZ0ZXIoLyIvKSxhdHRyaWJ1dGU6bi51bnRpbCgvW1xuXHJcdCA9Pl18XC8+LyksZWxlbWVudF9uYW1lOm4udW50aWwoL1tcblxyXHQgPlwvXS8pLGhhbmRsZWJhcnNfY29tbWVudDppLnN0YXJ0aW5nX3dpdGgoL3t7IS0tLykudW50aWxfYWZ0ZXIoLy0tfX0vKSxoYW5kbGViYXJzOmkuc3RhcnRpbmdfd2l0aCgve3svKS51bnRpbF9hZnRlcigvfX0vKSxoYW5kbGViYXJzX29wZW46aS51bnRpbCgvW1xuXHJcdCB9XS8pLGhhbmRsZWJhcnNfcmF3X2Nsb3NlOmkudW50aWwoL319LyksY29tbWVudDppLnN0YXJ0aW5nX3dpdGgoLzwhLS0vKS51bnRpbF9hZnRlcigvLS0+LyksY2RhdGE6aS5zdGFydGluZ193aXRoKC88IVxbQ0RBVEFcWy8pLnVudGlsX2FmdGVyKC9dXT4vKSxjb25kaXRpb25hbF9jb21tZW50Omkuc3RhcnRpbmdfd2l0aCgvPCFcWy8pLnVudGlsX2FmdGVyKC9dPi8pLHByb2Nlc3Npbmc6aS5zdGFydGluZ193aXRoKC88XD8vKS51bnRpbF9hZnRlcigvXD8+Lyl9LHRoaXMuX29wdGlvbnMuaW5kZW50X2hhbmRsZWJhcnMmJih0aGlzLl9fcGF0dGVybnMud29yZD10aGlzLl9fcGF0dGVybnMud29yZC5leGNsdWRlKCJoYW5kbGViYXJzIikpLHRoaXMuX3VuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyPW51bGwsdGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlcil7dmFyIGE9dGhpcy5faW5wdXQuZ2V0X2xpdGVyYWxfcmVnZXhwKHRoaXMuX29wdGlvbnMudW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXIpO3RoaXMuX19wYXR0ZXJucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlcj1pLm1hdGNoaW5nKGEpLnVudGlsX2FmdGVyKGEpfX07KGgucHJvdG90eXBlPW5ldyByKS5faXNfY29tbWVudD1mdW5jdGlvbihlKXtyZXR1cm4hMX0saC5wcm90b3R5cGUuX2lzX29wZW5pbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PWwuVEFHX09QRU59LGgucHJvdG90eXBlLl9pc19jbG9zaW5nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudHlwZT09PWwuVEFHX0NMT1NFJiZ0JiYoKCI+Ij09PWUudGV4dHx8Ii8+Ij09PWUudGV4dCkmJiI8Ij09PXQudGV4dFswXXx8In19Ij09PWUudGV4dCYmInsiPT09dC50ZXh0WzBdJiYieyI9PT10LnRleHRbMV0pfSxoLnByb3RvdHlwZS5fcmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9jdXJyZW50X3RhZ19uYW1lPSIifSxoLnByb3RvdHlwZS5fZ2V0X25leHRfdG9rZW49ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsO3RoaXMuX3JlYWRXaGl0ZXNwYWNlKCk7dmFyIHI9dGhpcy5faW5wdXQucGVlaygpO3JldHVybiBudWxsPT09cj90aGlzLl9jcmVhdGVfdG9rZW4obC5FT0YsIiIpOm49KG49KG49KG49KG49KG49KG49KG49KG49bnx8dGhpcy5fcmVhZF9vcGVuX2hhbmRsZWJhcnMocix0KSl8fHRoaXMuX3JlYWRfYXR0cmlidXRlKHIsZSx0KSl8fHRoaXMuX3JlYWRfY2xvc2Uocix0KSl8fHRoaXMuX3JlYWRfcmF3X2NvbnRlbnQocixlLHQpKXx8dGhpcy5fcmVhZF9jb250ZW50X3dvcmQocikpfHx0aGlzLl9yZWFkX2NvbW1lbnRfb3JfY2RhdGEocikpfHx0aGlzLl9yZWFkX3Byb2Nlc3NpbmcocikpfHx0aGlzLl9yZWFkX29wZW4ocix0KSl8fHRoaXMuX2NyZWF0ZV90b2tlbihsLlVOS05PV04sdGhpcy5faW5wdXQubmV4dCgpKX0saC5wcm90b3R5cGUuX3JlYWRfY29tbWVudF9vcl9jZGF0YT1mdW5jdGlvbihlKXt2YXIgdD1udWxsLG49bnVsbCxyPW51bGw7IjwiPT09ZSYmKCIhIj09PXRoaXMuX2lucHV0LnBlZWsoMSkmJigobj10aGlzLl9fcGF0dGVybnMuY29tbWVudC5yZWFkKCkpPyhyPWMuZ2V0X2RpcmVjdGl2ZXMobikpJiYic3RhcnQiPT09ci5pZ25vcmUmJihuKz1jLnJlYWRJZ25vcmVkKHRoaXMuX2lucHV0KSk6bj10aGlzLl9fcGF0dGVybnMuY2RhdGEucmVhZCgpKSxuJiYoKHQ9dGhpcy5fY3JlYXRlX3Rva2VuKGwuQ09NTUVOVCxuKSkuZGlyZWN0aXZlcz1yKSk7cmV0dXJuIHR9LGgucHJvdG90eXBlLl9yZWFkX3Byb2Nlc3Npbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbCxuPW51bGw7aWYoIjwiPT09ZSl7dmFyIHI9dGhpcy5faW5wdXQucGVlaygxKTsiISIhPT1yJiYiPyIhPT1yfHwobj0obj10aGlzLl9fcGF0dGVybnMuY29uZGl0aW9uYWxfY29tbWVudC5yZWFkKCkpfHx0aGlzLl9fcGF0dGVybnMucHJvY2Vzc2luZy5yZWFkKCkpLG4mJigodD10aGlzLl9jcmVhdGVfdG9rZW4obC5DT01NRU5ULG4pKS5kaXJlY3RpdmVzPW51bGwpfXJldHVybiB0fSxoLnByb3RvdHlwZS5fcmVhZF9vcGVuPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIHR8fCI8Ij09PWUmJihuPXRoaXMuX2lucHV0Lm5leHQoKSwiLyI9PT10aGlzLl9pbnB1dC5wZWVrKCkmJihuKz10aGlzLl9pbnB1dC5uZXh0KCkpLG4rPXRoaXMuX19wYXR0ZXJucy5lbGVtZW50X25hbWUucmVhZCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX09QRU4sbikpLHJ9LGgucHJvdG90eXBlLl9yZWFkX29wZW5faGFuZGxlYmFycz1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGwscj1udWxsO3JldHVybiB0fHx0aGlzLl9vcHRpb25zLmluZGVudF9oYW5kbGViYXJzJiYieyI9PT1lJiYieyI9PT10aGlzLl9pbnB1dC5wZWVrKDEpJiYoIiEiPT09dGhpcy5faW5wdXQucGVlaygyKT8obj0obj10aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFyc19jb21tZW50LnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzLnJlYWQoKSxyPXRoaXMuX2NyZWF0ZV90b2tlbihsLkNPTU1FTlQsbikpOihuPXRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzX29wZW4ucmVhZCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX09QRU4sbikpKSxyfSxoLnByb3RvdHlwZS5fcmVhZF9jbG9zZT1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGwscj1udWxsO3JldHVybiB0JiYoIjwiPT09dC50ZXh0WzBdJiYoIj4iPT09ZXx8Ii8iPT09ZSYmIj4iPT09dGhpcy5faW5wdXQucGVlaygxKSk/KG49dGhpcy5faW5wdXQubmV4dCgpLCIvIj09PWUmJihuKz10aGlzLl9pbnB1dC5uZXh0KCkpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX0NMT1NFLG4pKToieyI9PT10LnRleHRbMF0mJiJ9Ij09PWUmJiJ9Ij09PXRoaXMuX2lucHV0LnBlZWsoMSkmJih0aGlzLl9pbnB1dC5uZXh0KCksdGhpcy5faW5wdXQubmV4dCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX0NMT1NFLCJ9fSIpKSkscn0saC5wcm90b3R5cGUuX3JlYWRfYXR0cmlidXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1udWxsLGk9IiI7aWYobiYmIjwiPT09bi50ZXh0WzBdKWlmKCI9Ij09PWUpcj10aGlzLl9jcmVhdGVfdG9rZW4obC5FUVVBTFMsdGhpcy5faW5wdXQubmV4dCgpKTtlbHNlIGlmKCciJz09PWV8fCInIj09PWUpe3ZhciBhPXRoaXMuX2lucHV0Lm5leHQoKTthKz0nIic9PT1lP3RoaXMuX19wYXR0ZXJucy5kb3VibGVfcXVvdGUucmVhZCgpOnRoaXMuX19wYXR0ZXJucy5zaW5nbGVfcXVvdGUucmVhZCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVkFMVUUsYSl9ZWxzZShpPXRoaXMuX19wYXR0ZXJucy5hdHRyaWJ1dGUucmVhZCgpKSYmKHI9dC50eXBlPT09bC5FUVVBTFM/dGhpcy5fY3JlYXRlX3Rva2VuKGwuVkFMVUUsaSk6dGhpcy5fY3JlYXRlX3Rva2VuKGwuQVRUUklCVVRFLGkpKTtyZXR1cm4gcn0saC5wcm90b3R5cGUuX2lzX2NvbnRlbnRfdW5mb3JtYXR0ZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT10aGlzLl9vcHRpb25zLnZvaWRfZWxlbWVudHMuaW5kZXhPZihlKSYmKC0xIT09dGhpcy5fb3B0aW9ucy5jb250ZW50X3VuZm9ybWF0dGVkLmluZGV4T2YoZSl8fC0xIT09dGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZC5pbmRleE9mKGUpKX0saC5wcm90b3R5cGUuX3JlYWRfcmF3X2NvbnRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSIiO2lmKG4mJiJ7Ij09PW4udGV4dFswXSlyPXRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzX3Jhd19jbG9zZS5yZWFkKCk7ZWxzZSBpZih0LnR5cGU9PT1sLlRBR19DTE9TRSYmIjwiPT09dC5vcGVuZWQudGV4dFswXSYmIi8iIT09dC50ZXh0WzBdKXt2YXIgaT10Lm9wZW5lZC50ZXh0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpO2lmKCJzY3JpcHQiPT09aXx8InN0eWxlIj09PWkpe3ZhciBhPXRoaXMuX3JlYWRfY29tbWVudF9vcl9jZGF0YShlKTtpZihhKXJldHVybiBhLnR5cGU9bC5URVhULGE7cj10aGlzLl9pbnB1dC5yZWFkVW50aWwobmV3IFJlZ0V4cCgiPC8iK2krIltcXG5cXHJcXHQgXSo/PiIsImlnIikpfWVsc2UgdGhpcy5faXNfY29udGVudF91bmZvcm1hdHRlZChpKSYmKHI9dGhpcy5faW5wdXQucmVhZFVudGlsKG5ldyBSZWdFeHAoIjwvIitpKyJbXFxuXFxyXFx0IF0qPz4iLCJpZyIpKSl9cmV0dXJuIHI/dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEVYVCxyKTpudWxsfSxoLnByb3RvdHlwZS5fcmVhZF9jb250ZW50X3dvcmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7aWYodGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlciYmZT09PXRoaXMuX29wdGlvbnMudW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXJbMF0mJih0PXRoaXMuX19wYXR0ZXJucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlci5yZWFkKCkpLHR8fCh0PXRoaXMuX19wYXR0ZXJucy53b3JkLnJlYWQoKSksdClyZXR1cm4gdGhpcy5fY3JlYXRlX3Rva2VuKGwuVEVYVCx0KX0sZS5leHBvcnRzLlRva2VuaXplcj1oLGUuZXhwb3J0cy5UT0tFTj1sfV0sdD17fTt2YXIgbj1mdW5jdGlvbiBuKHIpe3ZhciBpPXRbcl07aWYodm9pZCAwIT09aSlyZXR1cm4gaS5leHBvcnRzO3ZhciBhPXRbcl09e2V4cG9ydHM6e319O3JldHVybiBlW3JdKGEsYS5leHBvcnRzLG4pLGEuZXhwb3J0c30oMTgpO3BvPW59KCksbW89KCgpPT57dmFyIGU9ezQ3MDplPT57ZnVuY3Rpb24gdChlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCAiK0pTT04uc3RyaW5naWZ5KGUpKX1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciBuLHI9IiIsaT0wLGE9LTEsbz0wLHM9MDtzPD1lLmxlbmd0aDsrK3Mpe2lmKHM8ZS5sZW5ndGgpbj1lLmNoYXJDb2RlQXQocyk7ZWxzZXtpZig0Nz09PW4pYnJlYWs7bj00N31pZig0Nz09PW4pe2lmKGE9PT1zLTF8fDE9PT1vKTtlbHNlIGlmKGEhPT1zLTEmJjI9PT1vKXtpZihyLmxlbmd0aDwyfHwyIT09aXx8NDYhPT1yLmNoYXJDb2RlQXQoci5sZW5ndGgtMSl8fDQ2IT09ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTIpKWlmKHIubGVuZ3RoPjIpe3ZhciBsPXIubGFzdEluZGV4T2YoIi8iKTtpZihsIT09ci5sZW5ndGgtMSl7LTE9PT1sPyhyPSIiLGk9MCk6aT0ocj1yLnNsaWNlKDAsbCkpLmxlbmd0aC0xLXIubGFzdEluZGV4T2YoIi8iKSxhPXMsbz0wO2NvbnRpbnVlfX1lbHNlIGlmKDI9PT1yLmxlbmd0aHx8MT09PXIubGVuZ3RoKXtyPSIiLGk9MCxhPXMsbz0wO2NvbnRpbnVlfXQmJihyLmxlbmd0aD4wP3IrPSIvLi4iOnI9Ii4uIixpPTIpfWVsc2Ugci5sZW5ndGg+MD9yKz0iLyIrZS5zbGljZShhKzEscyk6cj1lLnNsaWNlKGErMSxzKSxpPXMtYS0xO2E9cyxvPTB9ZWxzZSA0Nj09PW4mJi0xIT09bz8rK286bz0tMX1yZXR1cm4gcn12YXIgcj17cmVzb2x2ZTpmdW5jdGlvbigpe2Zvcih2YXIgZSxyPSIiLGk9ITEsYT1hcmd1bWVudHMubGVuZ3RoLTE7YT49LTEmJiFpO2EtLSl7dmFyIG87YT49MD9vPWFyZ3VtZW50c1thXToodm9pZCAwPT09ZSYmKGU9cHJvY2Vzcy5jd2QoKSksbz1lKSx0KG8pLDAhPT1vLmxlbmd0aCYmKHI9bysiLyIrcixpPTQ3PT09by5jaGFyQ29kZUF0KDApKX1yZXR1cm4gcj1uKHIsIWkpLGk/ci5sZW5ndGg+MD8iLyIrcjoiLyI6ci5sZW5ndGg+MD9yOiIuIn0sbm9ybWFsaXplOmZ1bmN0aW9uKGUpe2lmKHQoZSksMD09PWUubGVuZ3RoKXJldHVybiIuIjt2YXIgcj00Nz09PWUuY2hhckNvZGVBdCgwKSxpPTQ3PT09ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpO3JldHVybiAwIT09KGU9bihlLCFyKSkubGVuZ3RofHxyfHwoZT0iLiIpLGUubGVuZ3RoPjAmJmkmJihlKz0iLyIpLHI/Ii8iK2U6ZX0saXNBYnNvbHV0ZTpmdW5jdGlvbihlKXtyZXR1cm4gdChlKSxlLmxlbmd0aD4wJiY0Nz09PWUuY2hhckNvZGVBdCgwKX0sam9pbjpmdW5jdGlvbigpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiIuIjtmb3IodmFyIGUsbj0wO248YXJndW1lbnRzLmxlbmd0aDsrK24pe3ZhciBpPWFyZ3VtZW50c1tuXTt0KGkpLGkubGVuZ3RoPjAmJih2b2lkIDA9PT1lP2U9aTplKz0iLyIraSl9cmV0dXJuIHZvaWQgMD09PWU/Ii4iOnIubm9ybWFsaXplKGUpfSxyZWxhdGl2ZTpmdW5jdGlvbihlLG4pe2lmKHQoZSksdChuKSxlPT09bilyZXR1cm4iIjtpZigoZT1yLnJlc29sdmUoZSkpPT09KG49ci5yZXNvbHZlKG4pKSlyZXR1cm4iIjtmb3IodmFyIGk9MTtpPGUubGVuZ3RoJiY0Nz09PWUuY2hhckNvZGVBdChpKTsrK2kpO2Zvcih2YXIgYT1lLmxlbmd0aCxvPWEtaSxzPTE7czxuLmxlbmd0aCYmNDc9PT1uLmNoYXJDb2RlQXQocyk7KytzKTtmb3IodmFyIGw9bi5sZW5ndGgtcyxjPW88bD9vOmwsaD0tMSxkPTA7ZDw9YzsrK2Qpe2lmKGQ9PT1jKXtpZihsPmMpe2lmKDQ3PT09bi5jaGFyQ29kZUF0KHMrZCkpcmV0dXJuIG4uc2xpY2UocytkKzEpO2lmKDA9PT1kKXJldHVybiBuLnNsaWNlKHMrZCl9ZWxzZSBvPmMmJig0Nz09PWUuY2hhckNvZGVBdChpK2QpP2g9ZDowPT09ZCYmKGg9MCkpO2JyZWFrfXZhciB1PWUuY2hhckNvZGVBdChpK2QpO2lmKHUhPT1uLmNoYXJDb2RlQXQocytkKSlicmVhazs0Nz09PXUmJihoPWQpfXZhciBwPSIiO2ZvcihkPWkraCsxO2Q8PWE7KytkKWQhPT1hJiY0NyE9PWUuY2hhckNvZGVBdChkKXx8KDA9PT1wLmxlbmd0aD9wKz0iLi4iOnArPSIvLi4iKTtyZXR1cm4gcC5sZW5ndGg+MD9wK24uc2xpY2UocytoKToocys9aCw0Nz09PW4uY2hhckNvZGVBdChzKSYmKytzLG4uc2xpY2UocykpfSxfbWFrZUxvbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGRpcm5hbWU6ZnVuY3Rpb24oZSl7aWYodChlKSwwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2Zvcih2YXIgbj1lLmNoYXJDb2RlQXQoMCkscj00Nz09PW4saT0tMSxhPSEwLG89ZS5sZW5ndGgtMTtvPj0xOy0tbylpZig0Nz09PShuPWUuY2hhckNvZGVBdChvKSkpe2lmKCFhKXtpPW87YnJlYWt9fWVsc2UgYT0hMTtyZXR1cm4tMT09PWk/cj8iLyI6Ii4iOnImJjE9PT1pPyIvLyI6ZS5zbGljZSgwLGkpfSxiYXNlbmFtZTpmdW5jdGlvbihlLG4pe2lmKHZvaWQgMCE9PW4mJiJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCciZXh0IiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7dChlKTt2YXIgcixpPTAsYT0tMSxvPSEwO2lmKHZvaWQgMCE9PW4mJm4ubGVuZ3RoPjAmJm4ubGVuZ3RoPD1lLmxlbmd0aCl7aWYobi5sZW5ndGg9PT1lLmxlbmd0aCYmbj09PWUpcmV0dXJuIiI7dmFyIHM9bi5sZW5ndGgtMSxsPS0xO2ZvcihyPWUubGVuZ3RoLTE7cj49MDstLXIpe3ZhciBjPWUuY2hhckNvZGVBdChyKTtpZig0Nz09PWMpe2lmKCFvKXtpPXIrMTticmVha319ZWxzZS0xPT09bCYmKG89ITEsbD1yKzEpLHM+PTAmJihjPT09bi5jaGFyQ29kZUF0KHMpPy0xPT0tLXMmJihhPXIpOihzPS0xLGE9bCkpfXJldHVybiBpPT09YT9hPWw6LTE9PT1hJiYoYT1lLmxlbmd0aCksZS5zbGljZShpLGEpfWZvcihyPWUubGVuZ3RoLTE7cj49MDstLXIpaWYoNDc9PT1lLmNoYXJDb2RlQXQocikpe2lmKCFvKXtpPXIrMTticmVha319ZWxzZS0xPT09YSYmKG89ITEsYT1yKzEpO3JldHVybi0xPT09YT8iIjplLnNsaWNlKGksYSl9LGV4dG5hbWU6ZnVuY3Rpb24oZSl7dChlKTtmb3IodmFyIG49LTEscj0wLGk9LTEsYT0hMCxvPTAscz1lLmxlbmd0aC0xO3M+PTA7LS1zKXt2YXIgbD1lLmNoYXJDb2RlQXQocyk7aWYoNDchPT1sKS0xPT09aSYmKGE9ITEsaT1zKzEpLDQ2PT09bD8tMT09PW4/bj1zOjEhPT1vJiYobz0xKTotMSE9PW4mJihvPS0xKTtlbHNlIGlmKCFhKXtyPXMrMTticmVha319cmV0dXJuLTE9PT1ufHwtMT09PWl8fDA9PT1vfHwxPT09byYmbj09PWktMSYmbj09PXIrMT8iIjplLnNsaWNlKG4saSl9LGZvcm1hdDpmdW5jdGlvbihlKXtpZihudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAicGF0aE9iamVjdCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBlKTtyZXR1cm4gbj0odD1lKS5kaXJ8fHQucm9vdCxyPXQuYmFzZXx8KHQubmFtZXx8IiIpKyh0LmV4dHx8IiIpLG4/bj09PXQucm9vdD9uK3I6bisiLyIrcjpyO3ZhciB0LG4scn0scGFyc2U6ZnVuY3Rpb24oZSl7dChlKTt2YXIgbj17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PWUubGVuZ3RoKXJldHVybiBuO3ZhciByLGk9ZS5jaGFyQ29kZUF0KDApLGE9NDc9PT1pO2E/KG4ucm9vdD0iLyIscj0xKTpyPTA7Zm9yKHZhciBvPS0xLHM9MCxsPS0xLGM9ITAsaD1lLmxlbmd0aC0xLGQ9MDtoPj1yOy0taClpZig0NyE9PShpPWUuY2hhckNvZGVBdChoKSkpLTE9PT1sJiYoYz0hMSxsPWgrMSksNDY9PT1pPy0xPT09bz9vPWg6MSE9PWQmJihkPTEpOi0xIT09byYmKGQ9LTEpO2Vsc2UgaWYoIWMpe3M9aCsxO2JyZWFrfXJldHVybi0xPT09b3x8LTE9PT1sfHwwPT09ZHx8MT09PWQmJm89PT1sLTEmJm89PT1zKzE/LTEhPT1sJiYobi5iYXNlPW4ubmFtZT0wPT09cyYmYT9lLnNsaWNlKDEsbCk6ZS5zbGljZShzLGwpKTooMD09PXMmJmE/KG4ubmFtZT1lLnNsaWNlKDEsbyksbi5iYXNlPWUuc2xpY2UoMSxsKSk6KG4ubmFtZT1lLnNsaWNlKHMsbyksbi5iYXNlPWUuc2xpY2UocyxsKSksbi5leHQ9ZS5zbGljZShvLGwpKSxzPjA/bi5kaXI9ZS5zbGljZSgwLHMtMSk6YSYmKG4uZGlyPSIvIiksbn0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH07ci5wb3NpeD1yLGUuZXhwb3J0cz1yfSw0NDc6KGUsdCxuKT0+e3ZhciByO2lmKG4ucih0KSxuLmQodCx7VVJJOigpPT5mLFV0aWxzOigpPT54fSksIm9iamVjdCI9PXR5cGVvZiBwcm9jZXNzKXI9IndpbjMyIj09PXByb2Nlc3MucGxhdGZvcm07ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvcil7dmFyIGk9bmF2aWdhdG9yLnVzZXJBZ2VudDtyPWkuaW5kZXhPZigiV2luZG93cyIpPj0wfXZhciBhLG8scz0oYT1mdW5jdGlvbihlLHQpe3JldHVybihhPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0pKGUsdCl9LGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcodCkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9ZX1hKGUsdCksZS5wcm90b3R5cGU9bnVsbD09PXQ/T2JqZWN0LmNyZWF0ZSh0KToobi5wcm90b3R5cGU9dC5wcm90b3R5cGUsbmV3IG4pfSksbD0vXlx3W1x3XGQrLi1dKiQvLGM9L15cLy8saD0vXlwvXC8vO2Z1bmN0aW9uIGQoZSx0KXtpZighZS5zY2hlbWUmJnQpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIicuY29uY2F0KGUuYXV0aG9yaXR5LCciLCBwYXRoOiAiJykuY29uY2F0KGUucGF0aCwnIiwgcXVlcnk6ICInKS5jb25jYXQoZS5xdWVyeSwnIiwgZnJhZ21lbnQ6ICInKS5jb25jYXQoZS5mcmFnbWVudCwnIn0nKSk7aWYoZS5zY2hlbWUmJiFsLnRlc3QoZS5zY2hlbWUpKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogU2NoZW1lIGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4iKTtpZihlLnBhdGgpaWYoZS5hdXRob3JpdHkpe2lmKCFjLnRlc3QoZS5wYXRoKSl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IElmIGEgVVJJIGNvbnRhaW5zIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY29tcG9uZW50IG11c3QgZWl0aGVyIGJlIGVtcHR5IG9yIGJlZ2luIHdpdGggYSBzbGFzaCAoIi8iKSBjaGFyYWN0ZXInKX1lbHNlIGlmKGgudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfXZhciB1PSIiLHA9Ii8iLG09L14oKFteOi8/I10rPyk6KT8oXC9cLyhbXi8/I10qKSk/KFtePyNdKikoXD8oW14jXSopKT8oIyguKikpPy8sZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4scixpLGEpe3ZhciBvLHM7dm9pZCAwPT09YSYmKGE9ITEpLCJvYmplY3QiPT10eXBlb2YgZT8odGhpcy5zY2hlbWU9ZS5zY2hlbWV8fHUsdGhpcy5hdXRob3JpdHk9ZS5hdXRob3JpdHl8fHUsdGhpcy5wYXRoPWUucGF0aHx8dSx0aGlzLnF1ZXJ5PWUucXVlcnl8fHUsdGhpcy5mcmFnbWVudD1lLmZyYWdtZW50fHx1KToodGhpcy5zY2hlbWU9KHM9YSwobz1lKXx8cz9vOiJmaWxlIiksdGhpcy5hdXRob3JpdHk9dHx8dSx0aGlzLnBhdGg9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJodHRwcyI6Y2FzZSJodHRwIjpjYXNlImZpbGUiOnQ/dFswXSE9PXAmJih0PXArdCk6dD1wfXJldHVybiB0fSh0aGlzLnNjaGVtZSxufHx1KSx0aGlzLnF1ZXJ5PXJ8fHUsdGhpcy5mcmFnbWVudD1pfHx1LGQodGhpcyxhKSl9cmV0dXJuIGUuaXNVcmk9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBlfHwhIXQmJiJzdHJpbmciPT10eXBlb2YgdC5hdXRob3JpdHkmJiJzdHJpbmciPT10eXBlb2YgdC5mcmFnbWVudCYmInN0cmluZyI9PXR5cGVvZiB0LnBhdGgmJiJzdHJpbmciPT10eXBlb2YgdC5xdWVyeSYmInN0cmluZyI9PXR5cGVvZiB0LnNjaGVtZSYmInN0cmluZyI9PXR5cGVvZiB0LmZzUGF0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHQud2l0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHQudG9TdHJpbmd9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZnNQYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHkodGhpcywhMSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUud2l0aD1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4gdGhpczt2YXIgdD1lLnNjaGVtZSxuPWUuYXV0aG9yaXR5LHI9ZS5wYXRoLGk9ZS5xdWVyeSxhPWUuZnJhZ21lbnQ7cmV0dXJuIHZvaWQgMD09PXQ/dD10aGlzLnNjaGVtZTpudWxsPT09dCYmKHQ9dSksdm9pZCAwPT09bj9uPXRoaXMuYXV0aG9yaXR5Om51bGw9PT1uJiYobj11KSx2b2lkIDA9PT1yP3I9dGhpcy5wYXRoOm51bGw9PT1yJiYocj11KSx2b2lkIDA9PT1pP2k9dGhpcy5xdWVyeTpudWxsPT09aSYmKGk9dSksdm9pZCAwPT09YT9hPXRoaXMuZnJhZ21lbnQ6bnVsbD09PWEmJihhPXUpLHQ9PT10aGlzLnNjaGVtZSYmbj09PXRoaXMuYXV0aG9yaXR5JiZyPT09dGhpcy5wYXRoJiZpPT09dGhpcy5xdWVyeSYmYT09PXRoaXMuZnJhZ21lbnQ/dGhpczpuZXcgYih0LG4scixpLGEpfSxlLnBhcnNlPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBuPW0uZXhlYyhlKTtyZXR1cm4gbj9uZXcgYihuWzJdfHx1LEMobls0XXx8dSksQyhuWzVdfHx1KSxDKG5bN118fHUpLEMobls5XXx8dSksdCk6bmV3IGIodSx1LHUsdSx1KX0sZS5maWxlPWZ1bmN0aW9uKGUpe3ZhciB0PXU7aWYociYmKGU9ZS5yZXBsYWNlKC9cXC9nLHApKSxlWzBdPT09cCYmZVsxXT09PXApe3ZhciBuPWUuaW5kZXhPZihwLDIpOy0xPT09bj8odD1lLnN1YnN0cmluZygyKSxlPXApOih0PWUuc3Vic3RyaW5nKDIsbiksZT1lLnN1YnN0cmluZyhuKXx8cCl9cmV0dXJuIG5ldyBiKCJmaWxlIix0LGUsdSx1KX0sZS5mcm9tPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBiKGUuc2NoZW1lLGUuYXV0aG9yaXR5LGUucGF0aCxlLnF1ZXJ5LGUuZnJhZ21lbnQpO3JldHVybiBkKHQsITApLHR9LGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksVCh0aGlzLGUpfSxlLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZS5yZXZpdmU9ZnVuY3Rpb24odCl7aWYodCl7aWYodCBpbnN0YW5jZW9mIGUpcmV0dXJuIHQ7dmFyIG49bmV3IGIodCk7cmV0dXJuIG4uX2Zvcm1hdHRlZD10LmV4dGVybmFsLG4uX2ZzUGF0aD10Ll9zZXA9PT1nP3QuZnNQYXRoOm51bGwsbn1yZXR1cm4gdH0sZX0oKSxnPXI/MTp2b2lkIDAsYj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIHQ9bnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiB0Ll9mb3JtYXR0ZWQ9bnVsbCx0Ll9mc1BhdGg9bnVsbCx0fXJldHVybiBzKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJmc1BhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZnNQYXRofHwodGhpcy5fZnNQYXRoPXkodGhpcywhMSkpLHRoaXMuX2ZzUGF0aH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLGU/VCh0aGlzLCEwKToodGhpcy5fZm9ybWF0dGVkfHwodGhpcy5fZm9ybWF0dGVkPVQodGhpcywhMSkpLHRoaXMuX2Zvcm1hdHRlZCl9LHQucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBlPXskbWlkOjF9O3JldHVybiB0aGlzLl9mc1BhdGgmJihlLmZzUGF0aD10aGlzLl9mc1BhdGgsZS5fc2VwPWcpLHRoaXMuX2Zvcm1hdHRlZCYmKGUuZXh0ZXJuYWw9dGhpcy5fZm9ybWF0dGVkKSx0aGlzLnBhdGgmJihlLnBhdGg9dGhpcy5wYXRoKSx0aGlzLnNjaGVtZSYmKGUuc2NoZW1lPXRoaXMuc2NoZW1lKSx0aGlzLmF1dGhvcml0eSYmKGUuYXV0aG9yaXR5PXRoaXMuYXV0aG9yaXR5KSx0aGlzLnF1ZXJ5JiYoZS5xdWVyeT10aGlzLnF1ZXJ5KSx0aGlzLmZyYWdtZW50JiYoZS5mcmFnbWVudD10aGlzLmZyYWdtZW50KSxlfSx0fShmKSx3PSgobz17fSlbNThdPSIlM0EiLG9bNDddPSIlMkYiLG9bNjNdPSIlM0YiLG9bMzVdPSIlMjMiLG9bOTFdPSIlNUIiLG9bOTNdPSIlNUQiLG9bNjRdPSIlNDAiLG9bMzNdPSIlMjEiLG9bMzZdPSIlMjQiLG9bMzhdPSIlMjYiLG9bMzldPSIlMjciLG9bNDBdPSIlMjgiLG9bNDFdPSIlMjkiLG9bNDJdPSIlMkEiLG9bNDNdPSIlMkIiLG9bNDRdPSIlMkMiLG9bNTldPSIlM0IiLG9bNjFdPSIlM0QiLG9bMzJdPSIlMjAiLG8pO2Z1bmN0aW9uIF8oZSx0KXtmb3IodmFyIG49dm9pZCAwLHI9LTEsaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgYT1lLmNoYXJDb2RlQXQoaSk7aWYoYT49OTcmJmE8PTEyMnx8YT49NjUmJmE8PTkwfHxhPj00OCYmYTw9NTd8fDQ1PT09YXx8NDY9PT1hfHw5NT09PWF8fDEyNj09PWF8fHQmJjQ3PT09YSktMSE9PXImJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocixpKSkscj0tMSksdm9pZCAwIT09biYmKG4rPWUuY2hhckF0KGkpKTtlbHNle3ZvaWQgMD09PW4mJihuPWUuc3Vic3RyKDAsaSkpO3ZhciBvPXdbYV07dm9pZCAwIT09bz8oLTEhPT1yJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIsaSkpLHI9LTEpLG4rPW8pOi0xPT09ciYmKHI9aSl9fXJldHVybi0xIT09ciYmKG4rPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhyKSkpLHZvaWQgMCE9PW4/bjplfWZ1bmN0aW9uIHYoZSl7Zm9yKHZhciB0PXZvaWQgMCxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWUuY2hhckNvZGVBdChuKTszNT09PXJ8fDYzPT09cj8odm9pZCAwPT09dCYmKHQ9ZS5zdWJzdHIoMCxuKSksdCs9d1tyXSk6dm9pZCAwIT09dCYmKHQrPWVbbl0pfXJldHVybiB2b2lkIDAhPT10P3Q6ZX1mdW5jdGlvbiB5KGUsdCl7dmFyIG47cmV0dXJuIG49ZS5hdXRob3JpdHkmJmUucGF0aC5sZW5ndGg+MSYmImZpbGUiPT09ZS5zY2hlbWU/Ii8vIi5jb25jYXQoZS5hdXRob3JpdHkpLmNvbmNhdChlLnBhdGgpOjQ3PT09ZS5wYXRoLmNoYXJDb2RlQXQoMCkmJihlLnBhdGguY2hhckNvZGVBdCgxKT49NjUmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD05MHx8ZS5wYXRoLmNoYXJDb2RlQXQoMSk+PTk3JiZlLnBhdGguY2hhckNvZGVBdCgxKTw9MTIyKSYmNTg9PT1lLnBhdGguY2hhckNvZGVBdCgyKT90P2UucGF0aC5zdWJzdHIoMSk6ZS5wYXRoWzFdLnRvTG93ZXJDYXNlKCkrZS5wYXRoLnN1YnN0cigyKTplLnBhdGgsciYmKG49bi5yZXBsYWNlKC9cLy9nLCJcXCIpKSxufWZ1bmN0aW9uIFQoZSx0KXt2YXIgbj10P3Y6XyxyPSIiLGk9ZS5zY2hlbWUsYT1lLmF1dGhvcml0eSxvPWUucGF0aCxzPWUucXVlcnksbD1lLmZyYWdtZW50O2lmKGkmJihyKz1pLHIrPSI6IiksKGF8fCJmaWxlIj09PWkpJiYocis9cCxyKz1wKSxhKXt2YXIgYz1hLmluZGV4T2YoIkAiKTtpZigtMSE9PWMpe3ZhciBoPWEuc3Vic3RyKDAsYyk7YT1hLnN1YnN0cihjKzEpLC0xPT09KGM9aC5pbmRleE9mKCI6IikpP3IrPW4oaCwhMSk6KHIrPW4oaC5zdWJzdHIoMCxjKSwhMSkscis9IjoiLHIrPW4oaC5zdWJzdHIoYysxKSwhMSkpLHIrPSJAIn0tMT09PShjPShhPWEudG9Mb3dlckNhc2UoKSkuaW5kZXhPZigiOiIpKT9yKz1uKGEsITEpOihyKz1uKGEuc3Vic3RyKDAsYyksITEpLHIrPWEuc3Vic3RyKGMpKX1pZihvKXtpZihvLmxlbmd0aD49MyYmNDc9PT1vLmNoYXJDb2RlQXQoMCkmJjU4PT09by5jaGFyQ29kZUF0KDIpKShkPW8uY2hhckNvZGVBdCgxKSk+PTY1JiZkPD05MCYmKG89Ii8iLmNvbmNhdChTdHJpbmcuZnJvbUNoYXJDb2RlKGQrMzIpLCI6IikuY29uY2F0KG8uc3Vic3RyKDMpKSk7ZWxzZSBpZihvLmxlbmd0aD49MiYmNTg9PT1vLmNoYXJDb2RlQXQoMSkpe3ZhciBkOyhkPW8uY2hhckNvZGVBdCgwKSk+PTY1JiZkPD05MCYmKG89IiIuY29uY2F0KFN0cmluZy5mcm9tQ2hhckNvZGUoZCszMiksIjoiKS5jb25jYXQoby5zdWJzdHIoMikpKX1yKz1uKG8sITApfXJldHVybiBzJiYocis9Ij8iLHIrPW4ocywhMSkpLGwmJihyKz0iIyIscis9dD9sOl8obCwhMSkpLHJ9ZnVuY3Rpb24gayhlKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlKX1jYXRjaCh0KXtyZXR1cm4gZS5sZW5ndGg+Mz9lLnN1YnN0cigwLDMpK2soZS5zdWJzdHIoMykpOmV9fXZhciBTPS8oJVswLTlBLVphLXpdWzAtOUEtWmEtel0pKy9nO2Z1bmN0aW9uIEMoZSl7cmV0dXJuIGUubWF0Y2goUyk/ZS5yZXBsYWNlKFMsKGZ1bmN0aW9uKGUpe3JldHVybiBrKGUpfSkpOmV9dmFyIHgsTCxFPW4oNDcwKSxBPWZ1bmN0aW9uKGUsdCxuKXtpZihufHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIHIsaT0wLGE9dC5sZW5ndGg7aTxhO2krKykhciYmaSBpbiB0fHwocnx8KHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwLGkpKSxyW2ldPXRbaV0pO3JldHVybiBlLmNvbmNhdChyfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSl9LE09RS5wb3NpeHx8RTsoTD14fHwoeD17fSkpLmpvaW5QYXRoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3JldHVybiBlLndpdGgoe3BhdGg6TS5qb2luLmFwcGx5KE0sQShbZS5wYXRoXSx0LCExKSl9KX0sTC5yZXNvbHZlUGF0aD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTt2YXIgcj1lLnBhdGh8fCIvIjtyZXR1cm4gZS53aXRoKHtwYXRoOk0ucmVzb2x2ZS5hcHBseShNLEEoW3JdLHQsITEpKX0pfSxMLmRpcm5hbWU9ZnVuY3Rpb24oZSl7dmFyIHQ9TS5kaXJuYW1lKGUucGF0aCk7cmV0dXJuIDE9PT10Lmxlbmd0aCYmNDY9PT10LmNoYXJDb2RlQXQoMCk/ZTplLndpdGgoe3BhdGg6dH0pfSxMLmJhc2VuYW1lPWZ1bmN0aW9uKGUpe3JldHVybiBNLmJhc2VuYW1lKGUucGF0aCl9LEwuZXh0bmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gTS5leHRuYW1lKGUucGF0aCl9fX0sdD17fTtmdW5jdGlvbiBuKHIpe2lmKHRbcl0pcmV0dXJuIHRbcl0uZXhwb3J0czt2YXIgaT10W3JdPXtleHBvcnRzOnt9fTtyZXR1cm4gZVtyXShpLGkuZXhwb3J0cyxuKSxpLmV4cG9ydHN9cmV0dXJuIG4uZD0oZSx0KT0+e2Zvcih2YXIgciBpbiB0KW4ubyh0LHIpJiYhbi5vKGUscikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0sbi5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSxuLnI9ZT0+eyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LG4oNDQ3KX0pKCk7dmFye1VSSTpUbyxVdGlsczprb309bW87ZnVuY3Rpb24gU28oZSl7dmFyIHQ9ZVswXTtyZXR1cm4gdCE9PWVbZS5sZW5ndGgtMV18fCInIiE9PXQmJiciJyE9PXR8fChlPWUuc3Vic3RyKDEsZS5sZW5ndGgtMikpLGV9ZnVuY3Rpb24gQ28oZSx0LG4scixpLGEpe3ZhciBvPVNvKG4pO2lmKHM9byxsPWUubGFuZ3VhZ2VJZCxzLmxlbmd0aCYmKCJoYW5kbGViYXJzIiE9PWx8fCEve3t8fX0vLnRlc3QocykpJiYvXGIod1tcd1xkKy4tXSo6XC9cLyk/W15ccygpPD5dKyg/OlwoW1x3XGRdK1wpfChbXls6cHVuY3Q6XVxzXXxcLz8pKS8udGVzdChzKSl7dmFyIHMsbDtvLmxlbmd0aDxuLmxlbmd0aCYmKHIrKyxpLS0pO3ZhciBjPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCEvXlxzKmphdmFzY3JpcHRcOi9pLnRlc3QodCkmJiEvW1xuXHJdLy50ZXN0KHQpKXJldHVybiB0PXQucmVwbGFjZSgvXlxzKi9nLCIiKSwvXmh0dHBzPzpcL1wvL2kudGVzdCh0KXx8L15maWxlOlwvXC8vaS50ZXN0KHQpP3Q6L15cIy9pLnRlc3QodCk/ZSt0Oi9eXC9cLy9pLnRlc3QodCk/KEhhKGUsImh0dHBzOi8vIik/Imh0dHBzIjoiaHR0cCIpKyI6Iit0LnJlcGxhY2UoL15ccyovZywiIik6bj9uLnJlc29sdmVSZWZlcmVuY2UodCxyfHxlKTp0fShlLnVyaSxvLHQsYSk7aWYoYyYmZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBUby5wYXJzZShlKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KGMpKXJldHVybntyYW5nZTpvci5jcmVhdGUoZS5wb3NpdGlvbkF0KHIpLGUucG9zaXRpb25BdChpKSksdGFyZ2V0OmN9fX1mdW5jdGlvbiB4byhlLHQpe2Zvcih2YXIgbj1bXSxyPUVhKGUuZ2V0VGV4dCgpLDApLGk9ci5zY2FuKCksYT12b2lkIDAsbz0hMSxzPXZvaWQgMCxsPXt9O2khPT1lYS5FT1M7KXtzd2l0Y2goaSl7Y2FzZSBlYS5TdGFydFRhZzppZighcylvPSJiYXNlIj09PXIuZ2V0VG9rZW5UZXh0KCkudG9Mb3dlckNhc2UoKTticmVhaztjYXNlIGVhLkF0dHJpYnV0ZU5hbWU6YT1yLmdldFRva2VuVGV4dCgpLnRvTG93ZXJDYXNlKCk7YnJlYWs7Y2FzZSBlYS5BdHRyaWJ1dGVWYWx1ZTppZigic3JjIj09PWF8fCJocmVmIj09PWEpe3ZhciBjPXIuZ2V0VG9rZW5UZXh0KCk7aWYoIW8pKHU9Q28oZSx0LGMsci5nZXRUb2tlbk9mZnNldCgpLHIuZ2V0VG9rZW5FbmQoKSxzKSkmJm4ucHVzaCh1KTtvJiZ2b2lkIDA9PT1zJiYocz1TbyhjKSkmJnQmJihzPXQucmVzb2x2ZVJlZmVyZW5jZShzLGUudXJpKSksbz0hMSxhPXZvaWQgMH1lbHNlIGlmKCJpZCI9PT1hKXtsW1NvKHIuZ2V0VG9rZW5UZXh0KCkpXT1yLmdldFRva2VuT2Zmc2V0KCl9fWk9ci5zY2FuKCl9Zm9yKHZhciBoPTAsZD1uO2g8ZC5sZW5ndGg7aCsrKXt2YXIgdT1kW2hdLHA9ZS51cmkrIiMiO2lmKHUudGFyZ2V0JiZIYSh1LnRhcmdldCxwKSl7dmFyIG09bFt1LnRhcmdldC5zdWJzdHIocC5sZW5ndGgpXTtpZih2b2lkIDAhPT1tKXt2YXIgZj1lLnBvc2l0aW9uQXQobSk7dS50YXJnZXQ9IiIuY29uY2F0KHApLmNvbmNhdChmLmxpbmUrMSwiLCIpLmNvbmNhdChmLmNoYXJhY3RlcisxKX19fXJldHVybiBufWZ1bmN0aW9uIExvKGUsdCxuKXt2YXIgcj1lLm9mZnNldEF0KHQpLGk9bi5maW5kTm9kZUF0KHIpO2lmKCFpLnRhZylyZXR1cm5bXTt2YXIgYT1bXSxvPU1vKGVhLlN0YXJ0VGFnLGUsaS5zdGFydCkscz0ibnVtYmVyIj09dHlwZW9mIGkuZW5kVGFnU3RhcnQmJk1vKGVhLkVuZFRhZyxlLGkuZW5kVGFnU3RhcnQpO3JldHVybihvJiZBbyhvLHQpfHxzJiZBbyhzLHQpKSYmKG8mJmEucHVzaCh7a2luZDpUaS5SZWFkLHJhbmdlOm99KSxzJiZhLnB1c2goe2tpbmQ6VGkuUmVhZCxyYW5nZTpzfSkpLGF9ZnVuY3Rpb24gRW8oZSx0KXtyZXR1cm4gZS5saW5lPHQubGluZXx8ZS5saW5lPT09dC5saW5lJiZlLmNoYXJhY3Rlcjw9dC5jaGFyYWN0ZXJ9ZnVuY3Rpb24gQW8oZSx0KXtyZXR1cm4gRW8oZS5zdGFydCx0KSYmRW8odCxlLmVuZCl9ZnVuY3Rpb24gTW8oZSx0LG4pe2Zvcih2YXIgcj1FYSh0LmdldFRleHQoKSxuKSxpPXIuc2NhbigpO2khPT1lYS5FT1MmJmkhPT1lOylpPXIuc2NhbigpO3JldHVybiBpIT09ZWEuRU9TP3tzdGFydDp0LnBvc2l0aW9uQXQoci5nZXRUb2tlbk9mZnNldCgpKSxlbmQ6dC5wb3NpdGlvbkF0KHIuZ2V0VG9rZW5FbmQoKSl9Om51bGx9ZnVuY3Rpb24gUm8oZSx0KXt2YXIgbj1bXTtyZXR1cm4gdC5yb290cy5mb3JFYWNoKChmdW5jdGlvbih0KXtJbyhlLHQsIiIsbil9KSksbn1mdW5jdGlvbiBJbyhlLHQsbixyKXt2YXIgaT1mdW5jdGlvbihlKXt2YXIgdD1lLnRhZztpZihlLmF0dHJpYnV0ZXMpe3ZhciBuPWUuYXR0cmlidXRlcy5pZCxyPWUuYXR0cmlidXRlcy5jbGFzcztuJiYodCs9IiMiLmNvbmNhdChuLnJlcGxhY2UoL1tcIlwnXS9nLCIiKSkpLHImJih0Kz1yLnJlcGxhY2UoL1tcIlwnXS9nLCIiKS5zcGxpdCgvXHMrLykubWFwKChmdW5jdGlvbihlKXtyZXR1cm4iLiIuY29uY2F0KGUpfSkpLmpvaW4oIiIpKX1yZXR1cm4gdHx8Ij8ifSh0KSxhPWxyLmNyZWF0ZShlLnVyaSxvci5jcmVhdGUoZS5wb3NpdGlvbkF0KHQuc3RhcnQpLGUucG9zaXRpb25BdCh0LmVuZCkpKSxvPXtuYW1lOmksbG9jYXRpb246YSxjb250YWluZXJOYW1lOm4sa2luZDpDaS5GaWVsZH07ci5wdXNoKG8pLHQuY2hpbGRyZW4uZm9yRWFjaCgoZnVuY3Rpb24odCl7SW8oZSx0LGkscil9KSl9ZnVuY3Rpb24gTm8oZSx0LG4scil7dmFyIGksYT1lLm9mZnNldEF0KHQpLG89ci5maW5kTm9kZUF0KGEpO2lmKCFvLnRhZylyZXR1cm4gbnVsbDtpZighZnVuY3Rpb24oZSx0LG4pe2lmKGUuZW5kVGFnU3RhcnQmJmUuZW5kVGFnU3RhcnQrIjwvIi5sZW5ndGg8PXQmJnQ8PWUuZW5kVGFnU3RhcnQrIjwvIi5sZW5ndGgrbi5sZW5ndGgpcmV0dXJuITA7cmV0dXJuIGUuc3RhcnQrIjwiLmxlbmd0aDw9dCYmdDw9ZS5zdGFydCsiPCIubGVuZ3RoK24ubGVuZ3RofShvLGEsby50YWcpKXJldHVybiBudWxsO3ZhciBzPVtdLGw9e3N0YXJ0OmUucG9zaXRpb25BdChvLnN0YXJ0KyI8Ii5sZW5ndGgpLGVuZDplLnBvc2l0aW9uQXQoby5zdGFydCsiPCIubGVuZ3RoK28udGFnLmxlbmd0aCl9O2lmKHMucHVzaCh7cmFuZ2U6bCxuZXdUZXh0Om59KSxvLmVuZFRhZ1N0YXJ0KXt2YXIgYz17c3RhcnQ6ZS5wb3NpdGlvbkF0KG8uZW5kVGFnU3RhcnQrIjwvIi5sZW5ndGgpLGVuZDplLnBvc2l0aW9uQXQoby5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCtvLnRhZy5sZW5ndGgpfTtzLnB1c2goe3JhbmdlOmMsbmV3VGV4dDpufSl9cmV0dXJue2NoYW5nZXM6KChpPXt9KVtlLnVyaS50b1N0cmluZygpXT1zLGkpfX1mdW5jdGlvbiBVbyhlLHQsbil7dmFyIHI9ZS5vZmZzZXRBdCh0KSxpPW4uZmluZE5vZGVBdChyKTtpZighaS50YWcpcmV0dXJuIG51bGw7aWYoIWkuZW5kVGFnU3RhcnQpcmV0dXJuIG51bGw7aWYoaS5zdGFydCsiPCIubGVuZ3RoPD1yJiZyPD1pLnN0YXJ0KyI8Ii5sZW5ndGgraS50YWcubGVuZ3RoKXt2YXIgYT1yLSI8Ii5sZW5ndGgtaS5zdGFydCtpLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoO3JldHVybiBlLnBvc2l0aW9uQXQoYSl9aWYoaS5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aDw9ciYmcjw9aS5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCtpLnRhZy5sZW5ndGgpe2E9ci0iPC8iLmxlbmd0aC1pLmVuZFRhZ1N0YXJ0K2kuc3RhcnQrIjwiLmxlbmd0aDtyZXR1cm4gZS5wb3NpdGlvbkF0KGEpfXJldHVybiBudWxsfWZ1bmN0aW9uIEhvKGUsdCxuKXt2YXIgcj1lLm9mZnNldEF0KHQpLGk9bi5maW5kTm9kZUF0KHIpLGE9aS50YWc/aS50YWcubGVuZ3RoOjA7cmV0dXJuIGkuZW5kVGFnU3RhcnQmJihpLnN0YXJ0KyI8Ii5sZW5ndGg8PXImJnI8PWkuc3RhcnQrIjwiLmxlbmd0aCthfHxpLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoPD1yJiZyPD1pLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoK2EpP1tvci5jcmVhdGUoZS5wb3NpdGlvbkF0KGkuc3RhcnQrIjwiLmxlbmd0aCksZS5wb3NpdGlvbkF0KGkuc3RhcnQrIjwiLmxlbmd0aCthKSksb3IuY3JlYXRlKGUucG9zaXRpb25BdChpLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoKSxlLnBvc2l0aW9uQXQoaS5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCthKSldOm51bGx9ZnVuY3Rpb24gem8oZSx0KXt2YXIgbj1FYShlLmdldFRleHQoKSkscj1uLnNjYW4oKSxpPVtdLGE9W10sbz1udWxsLHM9LTE7ZnVuY3Rpb24gbChlKXtpLnB1c2goZSkscz1lLnN0YXJ0TGluZX1mb3IoO3IhPT1lYS5FT1M7KXtzd2l0Y2gocil7Y2FzZSBlYS5TdGFydFRhZzp2YXIgYz1uLmdldFRva2VuVGV4dCgpLGg9ZS5wb3NpdGlvbkF0KG4uZ2V0VG9rZW5PZmZzZXQoKSkubGluZTthLnB1c2goe3N0YXJ0TGluZTpoLHRhZ05hbWU6Y30pLG89YzticmVhaztjYXNlIGVhLkVuZFRhZzpvPW4uZ2V0VG9rZW5UZXh0KCk7YnJlYWs7Y2FzZSBlYS5TdGFydFRhZ0Nsb3NlOmlmKCFvfHwhUmEobykpYnJlYWs7Y2FzZSBlYS5FbmRUYWdDbG9zZTpjYXNlIGVhLlN0YXJ0VGFnU2VsZkNsb3NlOmZvcih2YXIgZD1hLmxlbmd0aC0xO2Q+PTAmJmFbZF0udGFnTmFtZSE9PW87KWQtLTtpZihkPj0wKXt2YXIgdT1hW2RdO2EubGVuZ3RoPWQsKG09ZS5wb3NpdGlvbkF0KG4uZ2V0VG9rZW5PZmZzZXQoKSkubGluZS0xKT4oaD11LnN0YXJ0TGluZSkmJnMhPT1oJiZsKHtzdGFydExpbmU6aCxlbmRMaW5lOm19KX1icmVhaztjYXNlIGVhLkNvbW1lbnQ6aD1lLnBvc2l0aW9uQXQobi5nZXRUb2tlbk9mZnNldCgpKS5saW5lO3ZhciBwPW4uZ2V0VG9rZW5UZXh0KCkubWF0Y2goL15ccyojKHJlZ2lvblxiKXwoZW5kcmVnaW9uXGIpLyk7aWYocClpZihwWzFdKWEucHVzaCh7c3RhcnRMaW5lOmgsdGFnTmFtZToiIn0pO2Vsc2V7Zm9yKGQ9YS5sZW5ndGgtMTtkPj0wJiZhW2RdLnRhZ05hbWUubGVuZ3RoOylkLS07aWYoZD49MCl7dmFyIG07dT1hW2RdO2EubGVuZ3RoPWQsKG09aCk+KGg9dS5zdGFydExpbmUpJiZzIT09aCYmbCh7c3RhcnRMaW5lOmgsZW5kTGluZTptLGtpbmQ6d3IuUmVnaW9ufSl9fWVsc2UgaDwobT1lLnBvc2l0aW9uQXQobi5nZXRUb2tlbk9mZnNldCgpK24uZ2V0VG9rZW5MZW5ndGgoKSkubGluZSkmJmwoe3N0YXJ0TGluZTpoLGVuZExpbmU6bSxraW5kOndyLkNvbW1lbnR9KX1yPW4uc2NhbigpfXZhciBmPXQmJnQucmFuZ2VMaW1pdHx8TnVtYmVyLk1BWF9WQUxVRTtyZXR1cm4gaS5sZW5ndGg+Zj9mdW5jdGlvbihlLHQpe2U9ZS5zb3J0KChmdW5jdGlvbihlLHQpe3ZhciBuPWUuc3RhcnRMaW5lLXQuc3RhcnRMaW5lO3JldHVybiAwPT09biYmKG49ZS5lbmRMaW5lLXQuZW5kTGluZSksbn0pKTtmb3IodmFyIG49dm9pZCAwLHI9W10saT1bXSxhPVtdLG89ZnVuY3Rpb24oZSx0KXtpW2VdPXQsdDwzMCYmKGFbdF09KGFbdF18fDApKzEpfSxzPTA7czxlLmxlbmd0aDtzKyspe3ZhciBsPWVbc107aWYobil7aWYobC5zdGFydExpbmU+bi5zdGFydExpbmUpaWYobC5lbmRMaW5lPD1uLmVuZExpbmUpci5wdXNoKG4pLG49bCxvKHMsci5sZW5ndGgpO2Vsc2UgaWYobC5zdGFydExpbmU+bi5lbmRMaW5lKXtkb3tuPXIucG9wKCl9d2hpbGUobiYmbC5zdGFydExpbmU+bi5lbmRMaW5lKTtuJiZyLnB1c2gobiksbj1sLG8ocyxyLmxlbmd0aCl9fWVsc2Ugbj1sLG8ocywwKX12YXIgYz0wLGg9MDtmb3Iocz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgZD1hW3NdO2lmKGQpe2lmKGQrYz50KXtoPXM7YnJlYWt9Yys9ZH19dmFyIHU9W107Zm9yKHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIHA9aVtzXTsibnVtYmVyIj09dHlwZW9mIHAmJihwPGh8fHA9PT1oJiZjKys8dCkmJnUucHVzaChlW3NdKX1yZXR1cm4gdX0oaSxmKTppfWZ1bmN0aW9uIERvKGUsdCl7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtmb3IodmFyIG49ZnVuY3Rpb24oZSx0KXt2YXIgbj1OYShlLmdldFRleHQoKSkscj1lLm9mZnNldEF0KHQpLGk9bi5maW5kTm9kZUF0KHIpLGE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxuPWZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0VGFnRW5kJiZlLmVuZFRhZ1N0YXJ0JiZlLnN0YXJ0VGFnRW5kPGUuZW5kVGFnU3RhcnQ/W1tlLnN0YXJ0VGFnRW5kLGUuZW5kVGFnU3RhcnRdLFtlLnN0YXJ0LGUuZW5kXV06W1tlLnN0YXJ0LGUuZW5kXV19LHI9W107Zm9yKDt0LnBhcmVudDspbih0PXQucGFyZW50KS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gci5wdXNoKGUpfSkpO3JldHVybiByfShpKTtpZihpLnN0YXJ0VGFnRW5kJiYhaS5lbmRUYWdTdGFydCl7aWYoaS5zdGFydFRhZ0VuZCE9PWkuZW5kKXJldHVybltbaS5zdGFydCxpLmVuZF1dO3ZhciBvPW9yLmNyZWF0ZShlLnBvc2l0aW9uQXQoaS5zdGFydFRhZ0VuZC0yKSxlLnBvc2l0aW9uQXQoaS5zdGFydFRhZ0VuZCkpO3JldHVybiIvPiI9PT1lLmdldFRleHQobyk/YS51bnNoaWZ0KFtpLnN0YXJ0KzEsaS5zdGFydFRhZ0VuZC0yXSk6YS51bnNoaWZ0KFtpLnN0YXJ0KzEsaS5zdGFydFRhZ0VuZC0xXSksYT1XbyhlLGkscikuY29uY2F0KGEpfWlmKCFpLnN0YXJ0VGFnRW5kfHwhaS5lbmRUYWdTdGFydClyZXR1cm4gYTtyZXR1cm4gYS51bnNoaWZ0KFtpLnN0YXJ0LGkuZW5kXSksaS5zdGFydDxyJiZyPGkuc3RhcnRUYWdFbmQ/KGEudW5zaGlmdChbaS5zdGFydCsxLGkuc3RhcnRUYWdFbmQtMV0pLGE9V28oZSxpLHIpLmNvbmNhdChhKSk6aS5zdGFydFRhZ0VuZDw9ciYmcjw9aS5lbmRUYWdTdGFydD8oYS51bnNoaWZ0KFtpLnN0YXJ0VGFnRW5kLGkuZW5kVGFnU3RhcnRdKSxhKToocj49aS5lbmRUYWdTdGFydCsyJiZhLnVuc2hpZnQoW2kuZW5kVGFnU3RhcnQrMixpLmVuZC0xXSksYSl9KGUsdCkscj12b2lkIDAsaT12b2lkIDAsYT1uLmxlbmd0aC0xO2E+PTA7YS0tKXt2YXIgbz1uW2FdO3ImJm9bMF09PT1yWzBdJiZvWzFdPT09clsxXXx8KGk9VmkuY3JlYXRlKG9yLmNyZWF0ZShlLnBvc2l0aW9uQXQoblthXVswXSksZS5wb3NpdGlvbkF0KG5bYV1bMV0pKSxpKSkscj1vfXJldHVybiBpfHwoaT1WaS5jcmVhdGUob3IuY3JlYXRlKHQsdCkpKSxpfSkpfWZ1bmN0aW9uIFdvKGUsdCxuKXtmb3IodmFyIHI9b3IuY3JlYXRlKGUucG9zaXRpb25BdCh0LnN0YXJ0KSxlLnBvc2l0aW9uQXQodC5lbmQpKSxpPWUuZ2V0VGV4dChyKSxhPW4tdC5zdGFydCxvPUVhKGkpLHM9by5zY2FuKCksbD10LnN0YXJ0LGM9W10saD0hMSxkPS0xO3MhPT1lYS5FT1M7KXtzd2l0Y2gocyl7Y2FzZSBlYS5BdHRyaWJ1dGVOYW1lOmlmKGE8by5nZXRUb2tlbk9mZnNldCgpKXtoPSExO2JyZWFrfWE8PW8uZ2V0VG9rZW5FbmQoKSYmYy51bnNoaWZ0KFtvLmdldFRva2VuT2Zmc2V0KCksby5nZXRUb2tlbkVuZCgpXSksaD0hMCxkPW8uZ2V0VG9rZW5PZmZzZXQoKTticmVhaztjYXNlIGVhLkF0dHJpYnV0ZVZhbHVlOmlmKCFoKWJyZWFrO3ZhciB1PW8uZ2V0VG9rZW5UZXh0KCk7aWYoYTxvLmdldFRva2VuT2Zmc2V0KCkpe2MucHVzaChbZCxvLmdldFRva2VuRW5kKCldKTticmVha31hPj1vLmdldFRva2VuT2Zmc2V0KCkmJmE8PW8uZ2V0VG9rZW5FbmQoKSYmKGMudW5zaGlmdChbby5nZXRUb2tlbk9mZnNldCgpLG8uZ2V0VG9rZW5FbmQoKV0pLCgnIic9PT11WzBdJiYnIic9PT11W3UubGVuZ3RoLTFdfHwiJyI9PT11WzBdJiYiJyI9PT11W3UubGVuZ3RoLTFdKSYmYT49by5nZXRUb2tlbk9mZnNldCgpKzEmJmE8PW8uZ2V0VG9rZW5FbmQoKS0xJiZjLnVuc2hpZnQoW28uZ2V0VG9rZW5PZmZzZXQoKSsxLG8uZ2V0VG9rZW5FbmQoKS0xXSksYy5wdXNoKFtkLG8uZ2V0VG9rZW5FbmQoKV0pKX1zPW8uc2NhbigpfXJldHVybiBjLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuW2VbMF0rbCxlWzFdK2xdfSkpfXZhciBPbz17dmVyc2lvbjoxLjEsdGFnczpbe25hbWU6Imh0bWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBodG1sIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgcm9vdCBvZiBhbiBIVE1MIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJtYW5pZmVzdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiU3BlY2lmaWVzIHRoZSBVUkkgb2YgYSByZXNvdXJjZSBtYW5pZmVzdCBpbmRpY2F0aW5nIHJlc291cmNlcyB0aGF0IHNob3VsZCBiZSBjYWNoZWQgbG9jYWxseS4gU2VlIFtVc2luZyB0aGUgYXBwbGljYXRpb24gY2FjaGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvVXNpbmdfdGhlX2FwcGxpY2F0aW9uX2NhY2hlKSBmb3IgZGV0YWlscy4ifX0se25hbWU6InZlcnNpb24iLGRlc2NyaXB0aW9uOidTcGVjaWZpZXMgdGhlIHZlcnNpb24gb2YgdGhlIEhUTUwgW0RvY3VtZW50IFR5cGUgRGVmaW5pdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9EVEQgIkRvY3VtZW50IFR5cGUgRGVmaW5pdGlvbjogSW4gSFRNTCwgdGhlIGRvY3R5cGUgaXMgdGhlIHJlcXVpcmVkICI8IURPQ1RZUEUgaHRtbD4iIHByZWFtYmxlIGZvdW5kIGF0IHRoZSB0b3Agb2YgYWxsIGRvY3VtZW50cy4gSXRzIHNvbGUgcHVycG9zZSBpcyB0byBwcmV2ZW50IGEgYnJvd3NlciBmcm9tIHN3aXRjaGluZyBpbnRvIHNvLWNhbGxlZCDigJxxdWlya3MgbW9kZeKAnSB3aGVuIHJlbmRlcmluZyBhIGRvY3VtZW50OyB0aGF0IGlzLCB0aGUgIjwhRE9DVFlQRSBodG1sPiIgZG9jdHlwZSBlbnN1cmVzIHRoYXQgdGhlIGJyb3dzZXIgbWFrZXMgYSBiZXN0LWVmZm9ydCBhdHRlbXB0IGF0IGZvbGxvd2luZyB0aGUgcmVsZXZhbnQgc3BlY2lmaWNhdGlvbnMsIHJhdGhlciB0aGFuIHVzaW5nIGEgZGlmZmVyZW50IHJlbmRlcmluZyBtb2RlIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggc29tZSBzcGVjaWZpY2F0aW9ucy4iKSB0aGF0IGdvdmVybnMgdGhlIGN1cnJlbnQgZG9jdW1lbnQuIFRoaXMgYXR0cmlidXRlIGlzIG5vdCBuZWVkZWQsIGJlY2F1c2UgaXQgaXMgcmVkdW5kYW50IHdpdGggdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gaW4gdGhlIGRvY3VtZW50IHR5cGUgZGVjbGFyYXRpb24uJ30se25hbWU6InhtbG5zIixkZXNjcmlwdGlvbjonU3BlY2lmaWVzIHRoZSBYTUwgTmFtZXNwYWNlIG9mIHRoZSBkb2N1bWVudC4gRGVmYXVsdCB2YWx1ZSBpcyBgImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiYC4gVGhpcyBpcyByZXF1aXJlZCBpbiBkb2N1bWVudHMgcGFyc2VkIHdpdGggWE1MIHBhcnNlcnMsIGFuZCBvcHRpb25hbCBpbiB0ZXh0L2h0bWwgZG9jdW1lbnRzLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaHRtbCJ9XX0se25hbWU6ImhlYWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoZWFkIGVsZW1lbnQgcmVwcmVzZW50cyBhIGNvbGxlY3Rpb24gb2YgbWV0YWRhdGEgZm9yIHRoZSBEb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToicHJvZmlsZSIsZGVzY3JpcHRpb246IlRoZSBVUklzIG9mIG9uZSBvciBtb3JlIG1ldGFkYXRhIHByb2ZpbGVzLCBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9oZWFkIn1dfSx7bmFtZToidGl0bGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0aXRsZSBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGRvY3VtZW50J3MgdGl0bGUgb3IgbmFtZS4gQXV0aG9ycyBzaG91bGQgdXNlIHRpdGxlcyB0aGF0IGlkZW50aWZ5IHRoZWlyIGRvY3VtZW50cyBldmVuIHdoZW4gdGhleSBhcmUgdXNlZCBvdXQgb2YgY29udGV4dCwgZm9yIGV4YW1wbGUgaW4gYSB1c2VyJ3MgaGlzdG9yeSBvciBib29rbWFya3MsIG9yIGluIHNlYXJjaCByZXN1bHRzLiBUaGUgZG9jdW1lbnQncyB0aXRsZSBpcyBvZnRlbiBkaWZmZXJlbnQgZnJvbSBpdHMgZmlyc3QgaGVhZGluZywgc2luY2UgdGhlIGZpcnN0IGhlYWRpbmcgZG9lcyBub3QgaGF2ZSB0byBzdGFuZCBhbG9uZSB3aGVuIHRha2VuIG91dCBvZiBjb250ZXh0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RpdGxlIn1dfSx7bmFtZToiYmFzZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJhc2UgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBzcGVjaWZ5IHRoZSBkb2N1bWVudCBiYXNlIFVSTCBmb3IgdGhlIHB1cnBvc2VzIG9mIHJlc29sdmluZyByZWxhdGl2ZSBVUkxzLCBhbmQgdGhlIG5hbWUgb2YgdGhlIGRlZmF1bHQgYnJvd3NpbmcgY29udGV4dCBmb3IgdGhlIHB1cnBvc2VzIG9mIGZvbGxvd2luZyBoeXBlcmxpbmtzLiBUaGUgZWxlbWVudCBkb2VzIG5vdCByZXByZXNlbnQgYW55IGNvbnRlbnQgYmV5b25kIHRoaXMgaW5mb3JtYXRpb24uIn0sYXR0cmlidXRlczpbe25hbWU6ImhyZWYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiYXNlIFVSTCB0byBiZSB1c2VkIHRocm91Z2hvdXQgdGhlIGRvY3VtZW50IGZvciByZWxhdGl2ZSBVUkwgYWRkcmVzc2VzLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIHRoaXMgZWxlbWVudCBtdXN0IGNvbWUgYmVmb3JlIGFueSBvdGhlciBlbGVtZW50cyB3aXRoIGF0dHJpYnV0ZXMgd2hvc2UgdmFsdWVzIGFyZSBVUkxzLiBBYnNvbHV0ZSBhbmQgcmVsYXRpdmUgVVJMcyBhcmUgYWxsb3dlZC4ifX0se25hbWU6InRhcmdldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBuYW1lIG9yIGtleXdvcmQgaW5kaWNhdGluZyB0aGUgZGVmYXVsdCBsb2NhdGlvbiB0byBkaXNwbGF5IHRoZSByZXN1bHQgd2hlbiBoeXBlcmxpbmtzIG9yIGZvcm1zIGNhdXNlIG5hdmlnYXRpb24sIGZvciBlbGVtZW50cyB0aGF0IGRvIG5vdCBoYXZlIGFuIGV4cGxpY2l0IHRhcmdldCByZWZlcmVuY2UuIEl0IGlzIGEgbmFtZSBvZiwgb3Iga2V5d29yZCBmb3IsIGEgX2Jyb3dzaW5nIGNvbnRleHRfIChmb3IgZXhhbXBsZTogdGFiLCB3aW5kb3csIG9yIGlubGluZSBmcmFtZSkuIFRoZSBmb2xsb3dpbmcga2V5d29yZHMgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOlxuXG4qICAgYF9zZWxmYDogTG9hZCB0aGUgcmVzdWx0IGludG8gdGhlIHNhbWUgYnJvd3NpbmcgY29udGV4dCBhcyB0aGUgY3VycmVudCBvbmUuIFRoaXMgdmFsdWUgaXMgdGhlIGRlZmF1bHQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLlxuKiAgIGBfYmxhbmtgOiBMb2FkIHRoZSByZXN1bHQgaW50byBhIG5ldyB1bm5hbWVkIGJyb3dzaW5nIGNvbnRleHQuXG4qICAgYF9wYXJlbnRgOiBMb2FkIHRoZSByZXN1bHQgaW50byB0aGUgcGFyZW50IGJyb3dzaW5nIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgb25lLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgb3B0aW9uIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG4qICAgYF90b3BgOiBMb2FkIHRoZSByZXN1bHQgaW50byB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgKHRoYXQgaXMsIHRoZSBicm93c2luZyBjb250ZXh0IHRoYXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgb25lLCBhbmQgaGFzIG5vIHBhcmVudCkuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLCB0aGlzIGVsZW1lbnQgbXVzdCBjb21lIGJlZm9yZSBhbnkgb3RoZXIgZWxlbWVudHMgd2l0aCBhdHRyaWJ1dGVzIHdob3NlIHZhbHVlcyBhcmUgVVJMcy4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iYXNlIn1dfSx7bmFtZToibGluayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxpbmsgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBsaW5rIHRoZWlyIGRvY3VtZW50IHRvIG90aGVyIHJlc291cmNlcy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiaHJlZiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBbVVJMXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1VSTCAiVVJMOiBVbmlmb3JtIFJlc291cmNlIExvY2F0b3IgKFVSTCkgaXMgYSB0ZXh0IHN0cmluZyBzcGVjaWZ5aW5nIHdoZXJlIGEgcmVzb3VyY2UgY2FuIGJlIGZvdW5kIG9uIHRoZSBJbnRlcm5ldC4iKSBvZiB0aGUgbGlua2VkIHJlc291cmNlLiBBIFVSTCBjYW4gYmUgYWJzb2x1dGUgb3IgcmVsYXRpdmUuJ319LHtuYW1lOiJjcm9zc29yaWdpbiIsdmFsdWVTZXQ6InhvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIFtDT1JTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0NPUlMgIkNPUlM6IENPUlMgKENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nKSBpcyBhIHN5c3RlbSwgY29uc2lzdGluZyBvZiB0cmFuc21pdHRpbmcgSFRUUCBoZWFkZXJzLCB0aGF0IGRldGVybWluZXMgd2hldGhlciBicm93c2VycyBibG9jayBmcm9udGVuZCBKYXZhU2NyaXB0IGNvZGUgZnJvbSBhY2Nlc3NpbmcgcmVzcG9uc2VzIGZvciBjcm9zcy1vcmlnaW4gcmVxdWVzdHMuIikgbXVzdCBiZSB1c2VkIHdoZW4gZmV0Y2hpbmcgdGhlIHJlc291cmNlLiBbQ09SUy1lbmFibGVkIGltYWdlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9DT1JTX0VuYWJsZWRfSW1hZ2UpIGNhbiBiZSByZXVzZWQgaW4gdGhlIFtgPGNhbnZhcz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FudmFzICJVc2UgdGhlIEhUTUwgPGNhbnZhcz4gZWxlbWVudCB3aXRoIGVpdGhlciB0aGUgY2FudmFzIHNjcmlwdGluZyBBUEkgb3IgdGhlIFdlYkdMIEFQSSB0byBkcmF3IGdyYXBoaWNzIGFuZCBhbmltYXRpb25zLiIpIGVsZW1lbnQgd2l0aG91dCBiZWluZyBfdGFpbnRlZF8uIFRoZSBhbGxvd2VkIHZhbHVlcyBhcmU6XG5cbmBhbm9ueW1vdXNgXG5cbkEgY3Jvc3Mtb3JpZ2luIHJlcXVlc3QgKGkuZS4gd2l0aCBhbiBbYE9yaWdpbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9PcmlnaW4gIlRoZSBPcmlnaW4gcmVxdWVzdCBoZWFkZXIgaW5kaWNhdGVzIHdoZXJlIGEgZmV0Y2ggb3JpZ2luYXRlcyBmcm9tLiBJdCBkb2VzblwndCBpbmNsdWRlIGFueSBwYXRoIGluZm9ybWF0aW9uLCBidXQgb25seSB0aGUgc2VydmVyIG5hbWUuIEl0IGlzIHNlbnQgd2l0aCBDT1JTIHJlcXVlc3RzLCBhcyB3ZWxsIGFzIHdpdGggUE9TVCByZXF1ZXN0cy4gSXQgaXMgc2ltaWxhciB0byB0aGUgUmVmZXJlciBoZWFkZXIsIGJ1dCwgdW5saWtlIHRoaXMgaGVhZGVyLCBpdCBkb2VzblwndCBkaXNjbG9zZSB0aGUgd2hvbGUgcGF0aC4iKSBIVFRQIGhlYWRlcikgaXMgcGVyZm9ybWVkLCBidXQgbm8gY3JlZGVudGlhbCBpcyBzZW50IChpLmUuIG5vIGNvb2tpZSwgWC41MDkgY2VydGlmaWNhdGUsIG9yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24pLiBJZiB0aGUgc2VydmVyIGRvZXMgbm90IGdpdmUgY3JlZGVudGlhbHMgdG8gdGhlIG9yaWdpbiBzaXRlIChieSBub3Qgc2V0dGluZyB0aGUgW2BBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luICJUaGUgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIHJlc3BvbnNlIGhlYWRlciBpbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVzcG9uc2UgY2FuIGJlIHNoYXJlZCB3aXRoIHJlcXVlc3RpbmcgY29kZSBmcm9tIHRoZSBnaXZlbiBvcmlnaW4uIikgSFRUUCBoZWFkZXIpIHRoZSBpbWFnZSB3aWxsIGJlIHRhaW50ZWQgYW5kIGl0cyB1c2FnZSByZXN0cmljdGVkLlxuXG5gdXNlLWNyZWRlbnRpYWxzYFxuXG5BIGNyb3NzLW9yaWdpbiByZXF1ZXN0IChpLmUuIHdpdGggYW4gYE9yaWdpbmAgSFRUUCBoZWFkZXIpIGlzIHBlcmZvcm1lZCBhbG9uZyB3aXRoIGEgY3JlZGVudGlhbCBzZW50IChpLmUuIGEgY29va2llLCBjZXJ0aWZpY2F0ZSwgYW5kL29yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24gaXMgcGVyZm9ybWVkKS4gSWYgdGhlIHNlcnZlciBkb2VzIG5vdCBnaXZlIGNyZWRlbnRpYWxzIHRvIHRoZSBvcmlnaW4gc2l0ZSAodGhyb3VnaCBbYEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0FjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzICJUaGUgQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMgcmVzcG9uc2UgaGVhZGVyIHRlbGxzIGJyb3dzZXJzIHdoZXRoZXIgdG8gZXhwb3NlIHRoZSByZXNwb25zZSB0byBmcm9udGVuZCBKYXZhU2NyaXB0IGNvZGUgd2hlbiB0aGUgcmVxdWVzdFwncyBjcmVkZW50aWFscyBtb2RlIChSZXF1ZXN0LmNyZWRlbnRpYWxzKSBpcyAiaW5jbHVkZSIuIikgSFRUUCBoZWFkZXIpLCB0aGUgcmVzb3VyY2Ugd2lsbCBiZSBfdGFpbnRlZF8gYW5kIGl0cyB1c2FnZSByZXN0cmljdGVkLlxuXG5JZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50LCB0aGUgcmVzb3VyY2UgaXMgZmV0Y2hlZCB3aXRob3V0IGEgW0NPUlNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQ09SUyAiQ09SUzogQ09SUyAoQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcpIGlzIGEgc3lzdGVtLCBjb25zaXN0aW5nIG9mIHRyYW5zbWl0dGluZyBIVFRQIGhlYWRlcnMsIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGJyb3dzZXJzIGJsb2NrIGZyb250ZW5kIEphdmFTY3JpcHQgY29kZSBmcm9tIGFjY2Vzc2luZyByZXNwb25zZXMgZm9yIGNyb3NzLW9yaWdpbiByZXF1ZXN0cy4iKSByZXF1ZXN0IChpLmUuIHdpdGhvdXQgc2VuZGluZyB0aGUgYE9yaWdpbmAgSFRUUCBoZWFkZXIpLCBwcmV2ZW50aW5nIGl0cyBub24tdGFpbnRlZCB1c2FnZS4gSWYgaW52YWxpZCwgaXQgaXMgaGFuZGxlZCBhcyBpZiB0aGUgZW51bWVyYXRlZCBrZXl3b3JkICoqYW5vbnltb3VzKiogd2FzIHVzZWQuIFNlZSBbQ09SUyBzZXR0aW5ncyBhdHRyaWJ1dGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0NPUlNfc2V0dGluZ3NfYXR0cmlidXRlcykgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uJ319LHtuYW1lOiJyZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIG5hbWVzIGEgcmVsYXRpb25zaGlwIG9mIHRoZSBsaW5rZWQgZG9jdW1lbnQgdG8gdGhlIGN1cnJlbnQgZG9jdW1lbnQuIFRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBbbGluayB0eXBlcyB2YWx1ZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvTGlua190eXBlcykuIn19LHtuYW1lOiJtZWRpYSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBtZWRpYSB0aGF0IHRoZSBsaW5rZWQgcmVzb3VyY2UgYXBwbGllcyB0by4gSXRzIHZhbHVlIG11c3QgYmUgYSBtZWRpYSB0eXBlIC8gW21lZGlhIHF1ZXJ5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvTWVkaWFfcXVlcmllcykuIFRoaXMgYXR0cmlidXRlIGlzIG1haW5seSB1c2VmdWwgd2hlbiBsaW5raW5nIHRvIGV4dGVybmFsIHN0eWxlc2hlZXRzIOKAlCBpdCBhbGxvd3MgdGhlIHVzZXIgYWdlbnQgdG8gcGljayB0aGUgYmVzdCBhZGFwdGVkIG9uZSBmb3IgdGhlIGRldmljZSBpdCBydW5zIG9uLlxuXG4qKk5vdGVzOioqXG5cbiogICBJbiBIVE1MIDQsIHRoaXMgY2FuIG9ubHkgYmUgYSBzaW1wbGUgd2hpdGUtc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgbWVkaWEgZGVzY3JpcHRpb24gbGl0ZXJhbHMsIGkuZS4sIFttZWRpYSB0eXBlcyBhbmQgZ3JvdXBzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQG1lZGlhKSwgd2hlcmUgZGVmaW5lZCBhbmQgYWxsb3dlZCBhcyB2YWx1ZXMgZm9yIHRoaXMgYXR0cmlidXRlLCBzdWNoIGFzIGBwcmludGAsIGBzY3JlZW5gLCBgYXVyYWxgLCBgYnJhaWxsZWAuIEhUTUw1IGV4dGVuZGVkIHRoaXMgdG8gYW55IGtpbmQgb2YgW21lZGlhIHF1ZXJpZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9NZWRpYV9xdWVyaWVzKSwgd2hpY2ggYXJlIGEgc3VwZXJzZXQgb2YgdGhlIGFsbG93ZWQgdmFsdWVzIG9mIEhUTUwgNC5cbiogICBCcm93c2VycyBub3Qgc3VwcG9ydGluZyBbQ1NTMyBNZWRpYSBRdWVyaWVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvTWVkaWFfcXVlcmllcykgd29uJ3QgbmVjZXNzYXJpbHkgcmVjb2duaXplIHRoZSBhZGVxdWF0ZSBsaW5rOyBkbyBub3QgZm9yZ2V0IHRvIHNldCBmYWxsYmFjayBsaW5rcywgdGhlIHJlc3RyaWN0ZWQgc2V0IG9mIG1lZGlhIHF1ZXJpZXMgZGVmaW5lZCBpbiBIVE1MIDQuIn19LHtuYW1lOiJocmVmbGFuZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSBsYW5ndWFnZSBvZiB0aGUgbGlua2VkIHJlc291cmNlLiBJdCBpcyBwdXJlbHkgYWR2aXNvcnkuIEFsbG93ZWQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IFtCQ1A0N10oaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL2JjcC9iY3A0Ny50eHQpLiBVc2UgdGhpcyBhdHRyaWJ1dGUgb25seSBpZiB0aGUgW2BocmVmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2EjYXR0ci1ocmVmKSBhdHRyaWJ1dGUgaXMgcHJlc2VudC4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8gZGVmaW5lIHRoZSB0eXBlIG9mIHRoZSBjb250ZW50IGxpbmtlZCB0by4gVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGEgTUlNRSB0eXBlIHN1Y2ggYXMgKip0ZXh0L2h0bWwqKiwgKip0ZXh0L2NzcyoqLCBhbmQgc28gb24uIFRoZSBjb21tb24gdXNlIG9mIHRoaXMgYXR0cmlidXRlIGlzIHRvIGRlZmluZSB0aGUgdHlwZSBvZiBzdHlsZXNoZWV0IGJlaW5nIHJlZmVyZW5jZWQgKHN1Y2ggYXMgKip0ZXh0L2NzcyoqKSwgYnV0IGdpdmVuIHRoYXQgQ1NTIGlzIHRoZSBvbmx5IHN0eWxlc2hlZXQgbGFuZ3VhZ2UgdXNlZCBvbiB0aGUgd2ViLCBub3Qgb25seSBpcyBpdCBwb3NzaWJsZSB0byBvbWl0IHRoZSBgdHlwZWAgYXR0cmlidXRlLCBidXQgaXMgYWN0dWFsbHkgbm93IHJlY29tbWVuZGVkIHByYWN0aWNlLiBJdCBpcyBhbHNvIHVzZWQgb24gYHJlbD0icHJlbG9hZCJgIGxpbmsgdHlwZXMsIHRvIG1ha2Ugc3VyZSB0aGUgYnJvd3NlciBvbmx5IGRvd25sb2FkcyBmaWxlIHR5cGVzIHRoYXQgaXQgc3VwcG9ydHMuJ319LHtuYW1lOiJzaXplcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgc2l6ZXMgb2YgdGhlIGljb25zIGZvciB2aXN1YWwgbWVkaWEgY29udGFpbmVkIGluIHRoZSByZXNvdXJjZS4gSXQgbXVzdCBiZSBwcmVzZW50IG9ubHkgaWYgdGhlIFtgcmVsYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xpbmsjYXR0ci1yZWwpIGNvbnRhaW5zIGEgdmFsdWUgb2YgYGljb25gIG9yIGEgbm9uLXN0YW5kYXJkIHR5cGUgc3VjaCBhcyBBcHBsZSdzIGBhcHBsZS10b3VjaC1pY29uYC4gSXQgbWF5IGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgYW55YCwgbWVhbmluZyB0aGF0IHRoZSBpY29uIGNhbiBiZSBzY2FsZWQgdG8gYW55IHNpemUgYXMgaXQgaXMgaW4gYSB2ZWN0b3IgZm9ybWF0LCBsaWtlIGBpbWFnZS9zdmcreG1sYC5cbiogICBhIHdoaXRlLXNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIHNpemVzLCBlYWNoIGluIHRoZSBmb3JtYXQgYF88d2lkdGggaW4gcGl4ZWxzPl94XzxoZWlnaHQgaW4gcGl4ZWxzPl9gIG9yIGBfPHdpZHRoIGluIHBpeGVscz5fWF88aGVpZ2h0IGluIHBpeGVscz5fYC4gRWFjaCBvZiB0aGVzZSBzaXplcyBtdXN0IGJlIGNvbnRhaW5lZCBpbiB0aGUgcmVzb3VyY2UuXG5cbioqTm90ZToqKiBNb3N0IGljb24gZm9ybWF0cyBhcmUgb25seSBhYmxlIHRvIHN0b3JlIG9uZSBzaW5nbGUgaWNvbjsgdGhlcmVmb3JlIG1vc3Qgb2YgdGhlIHRpbWUgdGhlIFtgc2l6ZXNgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzI2F0dHItc2l6ZXMpIGNvbnRhaW5zIG9ubHkgb25lIGVudHJ5LiBNUydzIElDTyBmb3JtYXQgZG9lcywgYXMgd2VsbCBhcyBBcHBsZSdzIElDTlMuIElDTyBpcyBtb3JlIHViaXF1aXRvdXM7IHlvdSBzaG91bGQgZGVmaW5pdGVseSB1c2UgaXQuIn19LHtuYW1lOiJhcyIsZGVzY3JpcHRpb246J1RoaXMgYXR0cmlidXRlIGlzIG9ubHkgdXNlZCB3aGVuIGByZWw9InByZWxvYWQiYCBvciBgcmVsPSJwcmVmZXRjaCJgIGhhcyBiZWVuIHNldCBvbiB0aGUgYDxsaW5rPmAgZWxlbWVudC4gSXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGNvbnRlbnQgYmVpbmcgbG9hZGVkIGJ5IHRoZSBgPGxpbms+YCwgd2hpY2ggaXMgbmVjZXNzYXJ5IGZvciBjb250ZW50IHByaW9yaXRpemF0aW9uLCByZXF1ZXN0IG1hdGNoaW5nLCBhcHBsaWNhdGlvbiBvZiBjb3JyZWN0IFtjb250ZW50IHNlY3VyaXR5IHBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9DU1ApLCBhbmQgc2V0dGluZyBvZiBjb3JyZWN0IFtgQWNjZXB0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0FjY2VwdCAiVGhlIEFjY2VwdCByZXF1ZXN0IEhUVFAgaGVhZGVyIGFkdmVydGlzZXMgd2hpY2ggY29udGVudCB0eXBlcywgZXhwcmVzc2VkIGFzIE1JTUUgdHlwZXMsIHRoZSBjbGllbnQgaXMgYWJsZSB0byB1bmRlcnN0YW5kLiBVc2luZyBjb250ZW50IG5lZ290aWF0aW9uLCB0aGUgc2VydmVyIHRoZW4gc2VsZWN0cyBvbmUgb2YgdGhlIHByb3Bvc2FscywgdXNlcyBpdCBhbmQgaW5mb3JtcyB0aGUgY2xpZW50IG9mIGl0cyBjaG9pY2Ugd2l0aCB0aGUgQ29udGVudC1UeXBlIHJlc3BvbnNlIGhlYWRlci4gQnJvd3NlcnMgc2V0IGFkZXF1YXRlIHZhbHVlcyBmb3IgdGhpcyBoZWFkZXIgZGVwZW5kaW5nIG9uwqB0aGUgY29udGV4dCB3aGVyZSB0aGUgcmVxdWVzdCBpcyBkb25lOiB3aGVuIGZldGNoaW5nIGEgQ1NTIHN0eWxlc2hlZXQgYSBkaWZmZXJlbnQgdmFsdWUgaXMgc2V0IGZvciB0aGUgcmVxdWVzdCB0aGFuIHdoZW4gZmV0Y2hpbmcgYW4gaW1hZ2UswqB2aWRlbyBvciBhIHNjcmlwdC4iKSByZXF1ZXN0IGhlYWRlci4nfSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgcmVsYXRpdmUgaW1wb3J0YW5jZSBvZiB0aGUgcmVzb3VyY2UuIFByaW9yaXR5IGhpbnRzIGFyZSBkZWxlZ2F0ZWQgdXNpbmcgdGhlIHZhbHVlczoifSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246JyoqYGF1dG9gKio6IEluZGljYXRlc8KgKipub8KgcHJlZmVyZW5jZSoqLiBUaGUgYnJvd3NlciBtYXkgdXNlIGl0cyBvd24gaGV1cmlzdGljcyB0byBkZWNpZGUgdGhlIHByaW9yaXR5IG9mIHRoZSByZXNvdXJjZS5cblxuKipgaGlnaGAqKjogSW5kaWNhdGVzIHRvIHRoZcKgYnJvd3NlcsKgdGhhdCB0aGUgcmVzb3VyY2UgaXMgb2bCoCoqaGlnaCoqIHByaW9yaXR5LlxuXG4qKmBsb3dgKio6wqBJbmRpY2F0ZXMgdG8gdGhlwqBicm93c2VywqB0aGF0IHRoZSByZXNvdXJjZSBpcyBvZsKgKipsb3cqKiBwcmlvcml0eS5cblxuKipOb3RlOioqIFRoZSBgaW1wb3J0YW5jZWAgYXR0cmlidXRlIG1heSBvbmx5IGJlIHVzZWQgZm9yIHRoZSBgPGxpbms+YCBlbGVtZW50IGlmIGByZWw9InByZWxvYWQiYCBvciBgcmVsPSJwcmVmZXRjaCJgIGlzIHByZXNlbnQuJ30se25hbWU6ImludGVncml0eSIsZGVzY3JpcHRpb246IkNvbnRhaW5zIGlubGluZSBtZXRhZGF0YSDigJQgYSBiYXNlNjQtZW5jb2RlZCBjcnlwdG9ncmFwaGljIGhhc2ggb2YgdGhlIHJlc291cmNlIChmaWxlKSB5b3XigJlyZSB0ZWxsaW5nIHRoZSBicm93c2VyIHRvIGZldGNoLiBUaGUgYnJvd3NlciBjYW4gdXNlIHRoaXMgdG8gdmVyaWZ5IHRoYXQgdGhlIGZldGNoZWQgcmVzb3VyY2UgaGFzIGJlZW4gZGVsaXZlcmVkIGZyZWUgb2YgdW5leHBlY3RlZCBtYW5pcHVsYXRpb24uIFNlZSBbU3VicmVzb3VyY2UgSW50ZWdyaXR5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TdWJyZXNvdXJjZV9JbnRlZ3JpdHkpLiJ9LHtuYW1lOiJyZWZlcnJlcnBvbGljeSIsZGVzY3JpcHRpb246J0Egc3RyaW5nIGluZGljYXRpbmcgd2hpY2ggcmVmZXJyZXIgdG8gdXNlIHdoZW4gZmV0Y2hpbmcgdGhlIHJlc291cmNlOlxuXG4qICAgYG5vLXJlZmVycmVyYCBtZWFucyB0aGF0IHRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudC5cbiogICBgbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVgIG1lYW5zIHRoYXQgbm8gW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgYmUgc2VudCB3aGVuIG5hdmlnYXRpbmcgdG8gYW4gb3JpZ2luIHdpdGhvdXQgVExTIChIVFRQUykuIFRoaXMgaXMgYSB1c2VyIGFnZW504oCZcyBkZWZhdWx0IGJlaGF2aW9yLCBpZiBubyBwb2xpY3kgaXMgb3RoZXJ3aXNlIHNwZWNpZmllZC5cbiogICBgb3JpZ2luYCBtZWFucyB0aGF0IHRoZSByZWZlcnJlciB3aWxsIGJlIHRoZSBvcmlnaW4gb2YgdGhlIHBhZ2UsIHdoaWNoIGlzIHJvdWdobHkgdGhlIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydC5cbiogICBgb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYCBtZWFucyB0aGF0IG5hdmlnYXRpbmcgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydCwgd2hpbGUgbmF2aWdhdGluZyBvbiB0aGUgc2FtZSBvcmlnaW4gd2lsbCBpbmNsdWRlIHRoZSByZWZlcnJlclwncyBwYXRoLlxuKiAgIGB1bnNhZmUtdXJsYCBtZWFucyB0aGF0IHRoZSByZWZlcnJlciB3aWxsIGluY2x1ZGUgdGhlIG9yaWdpbiBhbmQgdGhlIHBhdGggKGJ1dCBub3QgdGhlIGZyYWdtZW50LCBwYXNzd29yZCwgb3IgdXNlcm5hbWUpLiBUaGlzIGNhc2UgaXMgdW5zYWZlIGJlY2F1c2UgaXQgY2FuIGxlYWsgb3JpZ2lucyBhbmQgcGF0aHMgZnJvbSBUTFMtcHJvdGVjdGVkIHJlc291cmNlcyB0byBpbnNlY3VyZSBvcmlnaW5zLid9LHtuYW1lOiJ0aXRsZSIsZGVzY3JpcHRpb246J1RoZSBgdGl0bGVgIGF0dHJpYnV0ZSBoYXMgc3BlY2lhbCBzZW1hbnRpY3Mgb24gdGhlIGA8bGluaz5gIGVsZW1lbnQuIFdoZW4gdXNlZCBvbiBhIGA8bGluayByZWw9InN0eWxlc2hlZXQiPmAgaXQgZGVmaW5lcyBhIFtwcmVmZXJyZWQgb3IgYW4gYWx0ZXJuYXRlIHN0eWxlc2hlZXRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9BbHRlcm5hdGl2ZV9zdHlsZV9zaGVldHMpLiBJbmNvcnJlY3RseSB1c2luZyBpdCBtYXkgW2NhdXNlIHRoZSBzdHlsZXNoZWV0IHRvIGJlIGlnbm9yZWRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ29ycmVjdGx5X1VzaW5nX1RpdGxlc19XaXRoX0V4dGVybmFsX1N0eWxlc2hlZXRzKS4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xpbmsifV19LHtuYW1lOiJtZXRhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWV0YSBlbGVtZW50IHJlcHJlc2VudHMgdmFyaW91cyBraW5kcyBvZiBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSBleHByZXNzZWQgdXNpbmcgdGhlIHRpdGxlLCBiYXNlLCBsaW5rLCBzdHlsZSwgYW5kIHNjcmlwdCBlbGVtZW50cy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgbmFtZSBvZiBhIHBpZWNlIG9mIGRvY3VtZW50LWxldmVsIG1ldGFkYXRhLiBJdCBzaG91bGQgbm90IGJlIHNldCBpZiBvbmUgb2YgdGhlIGF0dHJpYnV0ZXMgW2BpdGVtcHJvcGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMjYXR0ci1pdGVtcHJvcCksIFtgaHR0cC1lcXVpdmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItaHR0cC1lcXVpdikgb3IgW2BjaGFyc2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jaGFyc2V0KSBpcyBhbHNvIHNldC5cblxuVGhpcyBtZXRhZGF0YSBuYW1lIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmFsdWUgY29udGFpbmVkIGJ5IHRoZSBbYGNvbnRlbnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNvbnRlbnQpIGF0dHJpYnV0ZS4gVGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhlIG5hbWUgYXR0cmlidXRlIGFyZTpcblxuKiAgIGBhcHBsaWNhdGlvbi1uYW1lYCB3aGljaCBkZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvbiBydW5uaW5nIGluIHRoZSB3ZWIgcGFnZS5cbiAgICBcbiAgICAqKk5vdGU6KipcbiAgICBcbiAgICAqICAgQnJvd3NlcnMgbWF5IHVzZSB0aGlzIHRvIGlkZW50aWZ5IHRoZSBhcHBsaWNhdGlvbi4gSXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIFtgPHRpdGxlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aXRsZSAiVGhlIEhUTUwgVGl0bGUgZWxlbWVudCAoPHRpdGxlPikgZGVmaW5lcyB0aGUgZG9jdW1lbnRcJ3MgdGl0bGUgdGhhdCBpcyBzaG93biBpbiBhIGJyb3dzZXJcJ3MgdGl0bGUgYmFyIG9yIGEgcGFnZVwncyB0YWIuIikgZWxlbWVudCwgd2hpY2ggdXN1YWxseSBjb250YWluIHRoZSBhcHBsaWNhdGlvbiBuYW1lLCBidXQgbWF5IGFsc28gY29udGFpbiBpbmZvcm1hdGlvbiBsaWtlIHRoZSBkb2N1bWVudCBuYW1lIG9yIGEgc3RhdHVzLlxuICAgICogICBTaW1wbGUgd2ViIHBhZ2VzIHNob3VsZG5cJ3QgZGVmaW5lIGFuIGFwcGxpY2F0aW9uLW5hbWUuXG4gICAgXG4qICAgYGF1dGhvcmAgd2hpY2ggZGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgZG9jdW1lbnRcJ3MgYXV0aG9yLlxuKiAgIGBkZXNjcmlwdGlvbmAgd2hpY2ggY29udGFpbnMgYSBzaG9ydCBhbmQgYWNjdXJhdGUgc3VtbWFyeSBvZiB0aGUgY29udGVudCBvZiB0aGUgcGFnZS4gU2V2ZXJhbCBicm93c2VycywgbGlrZSBGaXJlZm94IGFuZCBPcGVyYSwgdXNlIHRoaXMgYXMgdGhlIGRlZmF1bHQgZGVzY3JpcHRpb24gb2YgYm9va21hcmtlZCBwYWdlcy5cbiogICBgZ2VuZXJhdG9yYCB3aGljaCBjb250YWlucyB0aGUgaWRlbnRpZmllciBvZiB0aGUgc29mdHdhcmUgdGhhdCBnZW5lcmF0ZWQgdGhlIHBhZ2UuXG4qICAgYGtleXdvcmRzYCB3aGljaCBjb250YWlucyB3b3JkcyByZWxldmFudCB0byB0aGUgcGFnZVwncyBjb250ZW50IHNlcGFyYXRlZCBieSBjb21tYXMuXG4qICAgYHJlZmVycmVyYCB3aGljaCBjb250cm9scyB0aGUgW2BSZWZlcmVyYCBIVFRQIGhlYWRlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIpIGF0dGFjaGVkIHRvIHJlcXVlc3RzIHNlbnQgZnJvbSB0aGUgZG9jdW1lbnQ6XG4gICAgXG4gICAgVmFsdWVzIGZvciB0aGUgYGNvbnRlbnRgIGF0dHJpYnV0ZSBvZiBgPG1ldGEgbmFtZT0icmVmZXJyZXIiPmBcbiAgICBcbiAgICBgbm8tcmVmZXJyZXJgXG4gICAgXG4gICAgRG8gbm90IHNlbmQgYSBIVFRQIGBSZWZlcnJlcmAgaGVhZGVyLlxuICAgIFxuICAgIGBvcmlnaW5gXG4gICAgXG4gICAgU2VuZCB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9PcmlnaW4pIG9mIHRoZSBkb2N1bWVudC5cbiAgICBcbiAgICBgbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVgXG4gICAgXG4gICAgU2VuZCB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9PcmlnaW4pIGFzIGEgcmVmZXJyZXIgdG8gVVJMcyBhcyBzZWN1cmUgYXMgdGhlIGN1cnJlbnQgcGFnZSwgKGh0dHBz4oaSaHR0cHMpLCBidXQgZG9lcyBub3Qgc2VuZCBhIHJlZmVycmVyIHRvIGxlc3Mgc2VjdXJlIFVSTHMgKGh0dHBz4oaSaHR0cCkuIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLlxuICAgIFxuICAgIGBvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gXG4gICAgXG4gICAgU2VuZCB0aGUgZnVsbCBVUkwgKHN0cmlwcGVkIG9mIHBhcmFtZXRlcnMpIGZvciBzYW1lLW9yaWdpbiByZXF1ZXN0cywgYnV0IG9ubHkgc2VuZCB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9PcmlnaW4pIGZvciBvdGhlciBjYXNlcy5cbiAgICBcbiAgICBgc2FtZS1vcmlnaW5gXG4gICAgXG4gICAgQSByZWZlcnJlciB3aWxsIGJlIHNlbnQgZm9yIFtzYW1lLXNpdGUgb3JpZ2luc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU2FtZS1vcmlnaW5fcG9saWN5KSwgYnV0IGNyb3NzLW9yaWdpbiByZXF1ZXN0cyB3aWxsIGNvbnRhaW4gbm8gcmVmZXJyZXIgaW5mb3JtYXRpb24uXG4gICAgXG4gICAgYHN0cmljdC1vcmlnaW5gXG4gICAgXG4gICAgT25seSBzZW5kIHRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGFzIHRoZSByZWZlcnJlciB0byBhLXByaW9yaSBhcy1tdWNoLXNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFMtPkhUVFBTKSwgYnV0IGRvblwndCBzZW5kIGl0IHRvIGEgbGVzcyBzZWN1cmUgZGVzdGluYXRpb24gKEhUVFBTLT5IVFRQKS5cbiAgICBcbiAgICBgc3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmBcbiAgICBcbiAgICBTZW5kIGEgZnVsbCBVUkwgd2hlbiBwZXJmb3JtaW5nIGEgc2FtZS1vcmlnaW4gcmVxdWVzdCwgb25seSBzZW5kIHRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IHRvIGEtcHJpb3JpIGFzLW11Y2gtc2VjdXJlIGRlc3RpbmF0aW9uIChIVFRQUy0+SFRUUFMpLCBhbmQgc2VuZCBubyBoZWFkZXIgdG8gYSBsZXNzIHNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFMtPkhUVFApLlxuICAgIFxuICAgIGB1bnNhZmUtVVJMYFxuICAgIFxuICAgIFNlbmQgdGhlIGZ1bGwgVVJMIChzdHJpcHBlZCBvZiBwYXJhbWV0ZXJzKSBmb3Igc2FtZS1vcmlnaW4gb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLlxuICAgIFxuICAgICoqTm90ZXM6KipcbiAgICBcbiAgICAqICAgU29tZSBicm93c2VycyBzdXBwb3J0IHRoZSBkZXByZWNhdGVkIHZhbHVlcyBvZiBgYWx3YXlzYCwgYGRlZmF1bHRgLCBhbmQgYG5ldmVyYCBmb3IgcmVmZXJyZXIuXG4gICAgKiAgIER5bmFtaWNhbGx5IGluc2VydGluZyBgPG1ldGEgbmFtZT0icmVmZXJyZXIiPmAgKHdpdGggW2Bkb2N1bWVudC53cml0ZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudC93cml0ZSkgb3IgW2BhcHBlbmRDaGlsZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Ob2RlL2FwcGVuZENoaWxkKSkgbWFrZXMgdGhlIHJlZmVycmVyIGJlaGF2aW91ciB1bnByZWRpY3RhYmxlLlxuICAgICogICBXaGVuIHNldmVyYWwgY29uZmxpY3RpbmcgcG9saWNpZXMgYXJlIGRlZmluZWQsIHRoZSBuby1yZWZlcnJlciBwb2xpY3kgaXMgYXBwbGllZC5cbiAgICBcblxuVGhpcyBhdHRyaWJ1dGUgbWF5IGFsc28gaGF2ZSBhIHZhbHVlIHRha2VuIGZyb20gdGhlIGV4dGVuZGVkIGxpc3QgZGVmaW5lZCBvbiBbV0hBVFdHIFdpa2kgTWV0YUV4dGVuc2lvbnMgcGFnZV0oaHR0cHM6Ly93aWtpLndoYXR3Zy5vcmcvd2lraS9NZXRhRXh0ZW5zaW9ucykuIEFsdGhvdWdoIG5vbmUgaGF2ZSBiZWVuIGZvcm1hbGx5IGFjY2VwdGVkIHlldCwgYSBmZXcgY29tbW9ubHkgdXNlZCBuYW1lcyBhcmU6XG5cbiogICBgY3JlYXRvcmAgd2hpY2ggZGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgY3JlYXRvciBvZiB0aGUgZG9jdW1lbnQsIHN1Y2ggYXMgYW4gb3JnYW5pemF0aW9uIG9yIGluc3RpdHV0aW9uLiBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSwgc2V2ZXJhbCBbYDxtZXRhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhICJUaGUgSFRNTCA8bWV0YT4gZWxlbWVudCByZXByZXNlbnRzIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IG90aGVyIEhUTUwgbWV0YS1yZWxhdGVkIGVsZW1lbnRzLCBsaWtlIDxiYXNlPiwgPGxpbms+LCA8c2NyaXB0PiwgPHN0eWxlPiBvciA8dGl0bGU+LiIpIGVsZW1lbnRzIHNob3VsZCBiZSB1c2VkLlxuKiAgIGBnb29nbGVib3RgLCBhIHN5bm9ueW0gb2YgYHJvYm90c2AsIGlzIG9ubHkgZm9sbG93ZWQgYnkgR29vZ2xlYm90ICh0aGUgaW5kZXhpbmcgY3Jhd2xlciBmb3IgR29vZ2xlKS5cbiogICBgcHVibGlzaGVyYCB3aGljaCBkZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBkb2N1bWVudFwncyBwdWJsaXNoZXIuXG4qICAgYHJvYm90c2Agd2hpY2ggZGVmaW5lcyB0aGUgYmVoYXZpb3VyIHRoYXQgY29vcGVyYXRpdmUgY3Jhd2xlcnMsIG9yICJyb2JvdHMiLCBzaG91bGQgdXNlIHdpdGggdGhlIHBhZ2UuIEl0IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHZhbHVlcyBiZWxvdzpcbiAgICBcbiAgICBWYWx1ZXMgZm9yIHRoZSBjb250ZW50IG9mIGA8bWV0YSBuYW1lPSJyb2JvdHMiPmBcbiAgICBcbiAgICBWYWx1ZVxuICAgIFxuICAgIERlc2NyaXB0aW9uXG4gICAgXG4gICAgVXNlZCBieVxuICAgIFxuICAgIGBpbmRleGBcbiAgICBcbiAgICBBbGxvd3MgdGhlIHJvYm90IHRvIGluZGV4IHRoZSBwYWdlIChkZWZhdWx0KS5cbiAgICBcbiAgICBBbGxcbiAgICBcbiAgICBgbm9pbmRleGBcbiAgICBcbiAgICBSZXF1ZXN0cyB0aGUgcm9ib3QgdG8gbm90IGluZGV4IHRoZSBwYWdlLlxuICAgIFxuICAgIEFsbFxuICAgIFxuICAgIGBmb2xsb3dgXG4gICAgXG4gICAgQWxsb3dzIHRoZSByb2JvdCB0byBmb2xsb3cgdGhlIGxpbmtzIG9uIHRoZSBwYWdlIChkZWZhdWx0KS5cbiAgICBcbiAgICBBbGxcbiAgICBcbiAgICBgbm9mb2xsb3dgXG4gICAgXG4gICAgUmVxdWVzdHMgdGhlIHJvYm90IHRvIG5vdCBmb2xsb3cgdGhlIGxpbmtzIG9uIHRoZSBwYWdlLlxuICAgIFxuICAgIEFsbFxuICAgIFxuICAgIGBub25lYFxuICAgIFxuICAgIEVxdWl2YWxlbnQgdG8gYG5vaW5kZXgsIG5vZm9sbG93YFxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL3dlYm1hc3RlcnMvYW5zd2VyLzc5ODEyKVxuICAgIFxuICAgIGBub29kcGBcbiAgICBcbiAgICBQcmV2ZW50cyB1c2luZyB0aGUgW09wZW4gRGlyZWN0b3J5IFByb2plY3RdKGh0dHBzOi8vd3d3LmRtb3oub3JnLykgZGVzY3JpcHRpb24sIGlmIGFueSwgYXMgdGhlIHBhZ2UgZGVzY3JpcHRpb24gaW4gc2VhcmNoIGVuZ2luZSByZXN1bHRzLlxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL3dlYm1hc3RlcnMvYW5zd2VyLzM1NjI0I25vZG1veiksIFtZYWhvb10oaHR0cHM6Ly9oZWxwLnlhaG9vLmNvbS9rYi9zZWFyY2gtZm9yLWRlc2t0b3AvbWV0YS10YWdzLXJvYm90c3R4dC15YWhvby1zZWFyY2gtc2xuMjIxMy5odG1sI2NvbnQ1KSwgW0JpbmddKGh0dHBzOi8vd3d3LmJpbmcuY29tL3dlYm1hc3Rlci9oZWxwL3doaWNoLXJvYm90cy1tZXRhdGFncy1kb2VzLWJpbmctc3VwcG9ydC01MTk4ZDI0MClcbiAgICBcbiAgICBgbm9hcmNoaXZlYFxuICAgIFxuICAgIFJlcXVlc3RzIHRoZSBzZWFyY2ggZW5naW5lIG5vdCB0byBjYWNoZSB0aGUgcGFnZSBjb250ZW50LlxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYm1hc3RlcnMvY29udHJvbC1jcmF3bC1pbmRleC9kb2NzL3JvYm90c19tZXRhX3RhZyN2YWxpZC1pbmRleGluZy0tc2VydmluZy1kaXJlY3RpdmVzKSwgW1lhaG9vXShodHRwczovL2hlbHAueWFob28uY29tL2tiL3NlYXJjaC1mb3ItZGVza3RvcC9TTE4yMjEzLmh0bWwpLCBbQmluZ10oaHR0cHM6Ly93d3cuYmluZy5jb20vd2VibWFzdGVyL2hlbHAvd2hpY2gtcm9ib3RzLW1ldGF0YWdzLWRvZXMtYmluZy1zdXBwb3J0LTUxOThkMjQwKVxuICAgIFxuICAgIGBub3NuaXBwZXRgXG4gICAgXG4gICAgUHJldmVudHMgZGlzcGxheWluZyBhbnkgZGVzY3JpcHRpb24gb2YgdGhlIHBhZ2UgaW4gc2VhcmNoIGVuZ2luZSByZXN1bHRzLlxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYm1hc3RlcnMvY29udHJvbC1jcmF3bC1pbmRleC9kb2NzL3JvYm90c19tZXRhX3RhZyN2YWxpZC1pbmRleGluZy0tc2VydmluZy1kaXJlY3RpdmVzKSwgW0JpbmddKGh0dHBzOi8vd3d3LmJpbmcuY29tL3dlYm1hc3Rlci9oZWxwL3doaWNoLXJvYm90cy1tZXRhdGFncy1kb2VzLWJpbmctc3VwcG9ydC01MTk4ZDI0MClcbiAgICBcbiAgICBgbm9pbWFnZWluZGV4YFxuICAgIFxuICAgIFJlcXVlc3RzIHRoaXMgcGFnZSBub3QgdG8gYXBwZWFyIGFzIHRoZSByZWZlcnJpbmcgcGFnZSBvZiBhbiBpbmRleGVkIGltYWdlLlxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYm1hc3RlcnMvY29udHJvbC1jcmF3bC1pbmRleC9kb2NzL3JvYm90c19tZXRhX3RhZyN2YWxpZC1pbmRleGluZy0tc2VydmluZy1kaXJlY3RpdmVzKVxuICAgIFxuICAgIGBub2NhY2hlYFxuICAgIFxuICAgIFN5bm9ueW0gb2YgYG5vYXJjaGl2ZWAuXG4gICAgXG4gICAgW0JpbmddKGh0dHBzOi8vd3d3LmJpbmcuY29tL3dlYm1hc3Rlci9oZWxwL3doaWNoLXJvYm90cy1tZXRhdGFncy1kb2VzLWJpbmctc3VwcG9ydC01MTk4ZDI0MClcbiAgICBcbiAgICAqKk5vdGVzOioqXG4gICAgXG4gICAgKiAgIE9ubHkgY29vcGVyYXRpdmUgcm9ib3RzIGZvbGxvdyB0aGVzZSBydWxlcy4gRG8gbm90IGV4cGVjdCB0byBwcmV2ZW50IGUtbWFpbCBoYXJ2ZXN0ZXJzIHdpdGggdGhlbS5cbiAgICAqICAgVGhlIHJvYm90IHN0aWxsIG5lZWRzIHRvIGFjY2VzcyB0aGUgcGFnZSBpbiBvcmRlciB0byByZWFkIHRoZXNlIHJ1bGVzLiBUbyBwcmV2ZW50IGJhbmR3aWR0aCBjb25zdW1wdGlvbiwgdXNlIGEgX1tyb2JvdHMudHh0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3JvYm90cy50eHQgInJvYm90cy50eHQ6IFJvYm90cy50eHQgaXMgYSBmaWxlIHdoaWNoIGlzIHVzdWFsbHkgcGxhY2VkIGluIHRoZSByb290IG9mIGFueSB3ZWJzaXRlLiBJdCBkZWNpZGVzIHdoZXRoZXLCoGNyYXdsZXJzIGFyZSBwZXJtaXR0ZWQgb3IgZm9yYmlkZGVuIGFjY2VzcyB0byB0aGUgd2ViIHNpdGUuIilfIGZpbGUuXG4gICAgKiAgIElmIHlvdSB3YW50IHRvIHJlbW92ZSBhIHBhZ2UsIGBub2luZGV4YCB3aWxsIHdvcmssIGJ1dCBvbmx5IGFmdGVyIHRoZSByb2JvdCB2aXNpdHMgdGhlIHBhZ2UgYWdhaW4uIEVuc3VyZSB0aGF0IHRoZSBgcm9ib3RzLnR4dGAgZmlsZSBpcyBub3QgcHJldmVudGluZyByZXZpc2l0cy5cbiAgICAqICAgU29tZSB2YWx1ZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSwgbGlrZSBgaW5kZXhgIGFuZCBgbm9pbmRleGAsIG9yIGBmb2xsb3dgIGFuZCBgbm9mb2xsb3dgLiBJbiB0aGVzZSBjYXNlcyB0aGUgcm9ib3RcJ3MgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZCBhbmQgbWF5IHZhcnkgYmV0d2VlbiB0aGVtLlxuICAgICogICBTb21lIGNyYXdsZXIgcm9ib3RzLCBsaWtlIEdvb2dsZSwgWWFob28gYW5kIEJpbmcsIHN1cHBvcnQgdGhlIHNhbWUgdmFsdWVzIGZvciB0aGUgSFRUUCBoZWFkZXIgYFgtUm9ib3RzLVRhZ2A7IHRoaXMgYWxsb3dzIG5vbi1IVE1MIGRvY3VtZW50cyBsaWtlIGltYWdlcyB0byB1c2UgdGhlc2UgcnVsZXMuXG4gICAgXG4qICAgYHNsdXJwYCwgaXMgYSBzeW5vbnltIG9mIGByb2JvdHNgLCBidXQgb25seSBmb3IgU2x1cnAgLSB0aGUgY3Jhd2xlciBmb3IgWWFob28gU2VhcmNoLlxuKiAgIGB2aWV3cG9ydGAsIHdoaWNoIGdpdmVzIGhpbnRzIGFib3V0IHRoZSBzaXplIG9mIHRoZSBpbml0aWFsIHNpemUgb2YgdGhlIFt2aWV3cG9ydF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS92aWV3cG9ydCAidmlld3BvcnQ6IEEgdmlld3BvcnQgcmVwcmVzZW50cyBhIHBvbHlnb25hbCAobm9ybWFsbHkgcmVjdGFuZ3VsYXIpIGFyZWEgaW4gY29tcHV0ZXIgZ3JhcGhpY3MgdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgdmlld2VkLiBJbiB3ZWIgYnJvd3NlciB0ZXJtcywgaXQgcmVmZXJzIHRvIHRoZSBwYXJ0IG9mIHRoZSBkb2N1bWVudCB5b3VcJ3JlIHZpZXdpbmcgd2hpY2ggaXMgY3VycmVudGx5IHZpc2libGUgaW4gaXRzIHdpbmRvdyAob3IgdGhlIHNjcmVlbiwgaWYgdGhlIGRvY3VtZW50IGlzIGJlaW5nIHZpZXdlZCBpbiBmdWxsIHNjcmVlbiBtb2RlKS4gQ29udGVudCBvdXRzaWRlIHRoZSB2aWV3cG9ydCBpcyBub3QgdmlzaWJsZSBvbnNjcmVlbiB1bnRpbCBzY3JvbGxlZCBpbnRvIHZpZXcuIikuIFVzZWQgYnkgbW9iaWxlIGRldmljZXMgb25seS5cbiAgICBcbiAgICBWYWx1ZXMgZm9yIHRoZSBjb250ZW50IG9mIGA8bWV0YSBuYW1lPSJ2aWV3cG9ydCI+YFxuICAgIFxuICAgIFZhbHVlXG4gICAgXG4gICAgUG9zc2libGUgc3VidmFsdWVzXG4gICAgXG4gICAgRGVzY3JpcHRpb25cbiAgICBcbiAgICBgd2lkdGhgXG4gICAgXG4gICAgQSBwb3NpdGl2ZSBpbnRlZ2VyIG51bWJlciwgb3IgdGhlIHRleHQgYGRldmljZS13aWR0aGBcbiAgICBcbiAgICBEZWZpbmVzIHRoZSBwaXhlbCB3aWR0aCBvZiB0aGUgdmlld3BvcnQgdGhhdCB5b3Ugd2FudCB0aGUgd2ViIHNpdGUgdG8gYmUgcmVuZGVyZWQgYXQuXG4gICAgXG4gICAgYGhlaWdodGBcbiAgICBcbiAgICBBIHBvc2l0aXZlIGludGVnZXIsIG9yIHRoZSB0ZXh0IGBkZXZpY2UtaGVpZ2h0YFxuICAgIFxuICAgIERlZmluZXMgdGhlIGhlaWdodCBvZiB0aGUgdmlld3BvcnQuIE5vdCB1c2VkIGJ5IGFueSBicm93c2VyLlxuICAgIFxuICAgIGBpbml0aWFsLXNjYWxlYFxuICAgIFxuICAgIEEgcG9zaXRpdmUgbnVtYmVyIGJldHdlZW4gYDAuMGAgYW5kIGAxMC4wYFxuICAgIFxuICAgIERlZmluZXMgdGhlIHJhdGlvIGJldHdlZW4gdGhlIGRldmljZSB3aWR0aCAoYGRldmljZS13aWR0aGAgaW4gcG9ydHJhaXQgbW9kZSBvciBgZGV2aWNlLWhlaWdodGAgaW4gbGFuZHNjYXBlIG1vZGUpIGFuZCB0aGUgdmlld3BvcnQgc2l6ZS5cbiAgICBcbiAgICBgbWF4aW11bS1zY2FsZWBcbiAgICBcbiAgICBBIHBvc2l0aXZlIG51bWJlciBiZXR3ZWVuIGAwLjBgIGFuZCBgMTAuMGBcbiAgICBcbiAgICBEZWZpbmVzIHRoZSBtYXhpbXVtIGFtb3VudCB0byB6b29tIGluLiBJdCBtdXN0IGJlIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIGBtaW5pbXVtLXNjYWxlYCBvciB0aGUgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZC4gQnJvd3NlciBzZXR0aW5ncyBjYW4gaWdub3JlIHRoaXMgcnVsZSBhbmQgaU9TMTArIGlnbm9yZXMgaXQgYnkgZGVmYXVsdC5cbiAgICBcbiAgICBgbWluaW11bS1zY2FsZWBcbiAgICBcbiAgICBBIHBvc2l0aXZlIG51bWJlciBiZXR3ZWVuIGAwLjBgIGFuZCBgMTAuMGBcbiAgICBcbiAgICBEZWZpbmVzIHRoZSBtaW5pbXVtIHpvb20gbGV2ZWwuIEl0IG11c3QgYmUgc21hbGxlciBvciBlcXVhbCB0byB0aGUgYG1heGltdW0tc2NhbGVgIG9yIHRoZSBiZWhhdmlvdXIgaXMgdW5kZWZpbmVkLiBCcm93c2VyIHNldHRpbmdzIGNhbiBpZ25vcmUgdGhpcyBydWxlIGFuZCBpT1MxMCsgaWdub3JlcyBpdCBieSBkZWZhdWx0LlxuICAgIFxuICAgIGB1c2VyLXNjYWxhYmxlYFxuICAgIFxuICAgIGB5ZXNgIG9yIGBub2BcbiAgICBcbiAgICBJZiBzZXQgdG8gYG5vYCwgdGhlIHVzZXIgaXMgbm90IGFibGUgdG8gem9vbSBpbiB0aGUgd2VicGFnZS4gVGhlIGRlZmF1bHQgaXMgYHllc2AuIEJyb3dzZXIgc2V0dGluZ3MgY2FuIGlnbm9yZSB0aGlzIHJ1bGUsIGFuZCBpT1MxMCsgaWdub3JlcyBpdCBieSBkZWZhdWx0LlxuICAgIFxuICAgIFNwZWNpZmljYXRpb25cbiAgICBcbiAgICBTdGF0dXNcbiAgICBcbiAgICBDb21tZW50XG4gICAgXG4gICAgW0NTUyBEZXZpY2UgQWRhcHRhdGlvbiAgXG4gICAgVGhlIGRlZmluaXRpb24gb2YgXCc8bWV0YSBuYW1lPSJ2aWV3cG9ydCI+XCcgaW4gdGhhdCBzcGVjaWZpY2F0aW9uLl0oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1kZXZpY2UtYWRhcHQvI3ZpZXdwb3J0LW1ldGEpXG4gICAgXG4gICAgV29ya2luZyBEcmFmdFxuICAgIFxuICAgIE5vbi1ub3JtYXRpdmVseSBkZXNjcmliZXMgdGhlIFZpZXdwb3J0IE1FVEEgZWxlbWVudFxuICAgIFxuICAgIFNlZSBhbHNvOiBbYEB2aWV3cG9ydGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Admlld3BvcnQgIlRoZSBAdmlld3BvcnQgQ1NTIGF0LXJ1bGUgbGV0cyB5b3UgY29uZmlndXJlIHRoZSB2aWV3cG9ydCB0aHJvdWdoIHdoaWNoIHRoZSBkb2N1bWVudCBpcyB2aWV3ZWQuIEl0XCdzIHByaW1hcmlseSB1c2VkIGZvciBtb2JpbGUgZGV2aWNlcywgYnV0IGlzIGFsc28gdXNlZCBieSBkZXNrdG9wIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBmZWF0dXJlcyBsaWtlICJzbmFwIHRvIGVkZ2UiIChzdWNoIGFzIE1pY3Jvc29mdCBFZGdlKS4iKVxuICAgIFxuICAgICoqTm90ZXM6KipcbiAgICBcbiAgICAqICAgVGhvdWdoIHVuc3RhbmRhcmRpemVkLCB0aGlzIGRlY2xhcmF0aW9uIGlzIHJlc3BlY3RlZCBieSBtb3N0IG1vYmlsZSBicm93c2VycyBkdWUgdG8gZGUtZmFjdG8gZG9taW5hbmNlLlxuICAgICogICBUaGUgZGVmYXVsdCB2YWx1ZXMgbWF5IHZhcnkgYmV0d2VlbiBkZXZpY2VzIGFuZCBicm93c2Vycy5cbiAgICAqICAgVG8gbGVhcm4gYWJvdXQgdGhpcyBkZWNsYXJhdGlvbiBpbiBGaXJlZm94IGZvciBNb2JpbGUsIHNlZSBbdGhpcyBhcnRpY2xlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vYmlsZS9WaWV3cG9ydF9tZXRhX3RhZyAiTW9iaWxlL1ZpZXdwb3J0IG1ldGEgdGFnIikuJ319LHtuYW1lOiJodHRwLWVxdWl2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidEZWZpbmVzIGEgcHJhZ21hIGRpcmVjdGl2ZS4gVGhlIGF0dHJpYnV0ZSBpcyBuYW1lZCBgKipodHRwLWVxdWl2KiooYWxlbnQpYCBiZWNhdXNlIGFsbCB0aGUgYWxsb3dlZCB2YWx1ZXMgYXJlIG5hbWVzIG9mIHBhcnRpY3VsYXIgSFRUUCBoZWFkZXJzOlxuXG4qICAgYCJjb250ZW50LWxhbmd1YWdlImAgIFxuICAgIERlZmluZXMgdGhlIGRlZmF1bHQgbGFuZ3VhZ2Ugb2YgdGhlIHBhZ2UuIEl0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBbbGFuZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9sYW5nKSBhdHRyaWJ1dGUgb24gYW55IGVsZW1lbnQuXG4gICAgXG4gICAgKipXYXJuaW5nOioqIERvIG5vdCB1c2UgdGhpcyB2YWx1ZSwgYXMgaXQgaXMgb2Jzb2xldGUuIFByZWZlciB0aGUgYGxhbmdgIGF0dHJpYnV0ZSBvbiB0aGUgW2A8aHRtbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaHRtbCAiVGhlIEhUTUwgPGh0bWw+IGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgcm9vdCAodG9wLWxldmVsIGVsZW1lbnQpIG9mIGFuIEhUTUwgZG9jdW1lbnQsIHNvIGl0IGlzIGFsc28gcmVmZXJyZWQgdG8gYXMgdGhlIHJvb3QgZWxlbWVudC4gQWxsIG90aGVyIGVsZW1lbnRzIG11c3QgYmUgZGVzY2VuZGFudHMgb2YgdGhpcyBlbGVtZW50LiIpIGVsZW1lbnQuXG4gICAgXG4qICAgYCJjb250ZW50LXNlY3VyaXR5LXBvbGljeSJgICBcbiAgICBBbGxvd3MgcGFnZSBhdXRob3JzIHRvIGRlZmluZSBhIFtjb250ZW50IHBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvQ1NQL0NTUF9wb2xpY3lfZGlyZWN0aXZlcykgZm9yIHRoZSBjdXJyZW50IHBhZ2UuIENvbnRlbnQgcG9saWNpZXMgbW9zdGx5IHNwZWNpZnkgYWxsb3dlZCBzZXJ2ZXIgb3JpZ2lucyBhbmQgc2NyaXB0IGVuZHBvaW50cyB3aGljaCBoZWxwIGd1YXJkIGFnYWluc3QgY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcgYXR0YWNrcy5cbiogICBgImNvbnRlbnQtdHlwZSJgICBcbiAgICBEZWZpbmVzIHRoZSBbTUlNRSB0eXBlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L01JTUVfdHlwZSkgb2YgdGhlIGRvY3VtZW50LCBmb2xsb3dlZCBieSBpdHMgY2hhcmFjdGVyIGVuY29kaW5nLiBJdCBmb2xsb3dzIHRoZSBzYW1lIHN5bnRheCBhcyB0aGUgSFRUUCBgY29udGVudC10eXBlYCBlbnRpdHktaGVhZGVyIGZpZWxkLCBidXQgYXMgaXQgaXMgaW5zaWRlIGEgSFRNTCBwYWdlLCBtb3N0IHZhbHVlcyBvdGhlciB0aGFuIGB0ZXh0L2h0bWxgIGFyZSBpbXBvc3NpYmxlLiBUaGVyZWZvcmUgdGhlIHZhbGlkIHN5bnRheCBmb3IgaXRzIGBjb250ZW50YCBpcyB0aGUgc3RyaW5nIFwnYHRleHQvaHRtbGBcJyBmb2xsb3dlZCBieSBhIGNoYXJhY3RlciBzZXQgd2l0aCB0aGUgZm9sbG93aW5nIHN5bnRheDogXCdgOyBjaGFyc2V0PV9JQU5BY2hhcnNldF9gXCcsIHdoZXJlIGBJQU5BY2hhcnNldGAgaXMgdGhlIF9wcmVmZXJyZWQgTUlNRSBuYW1lXyBmb3IgYSBjaGFyYWN0ZXIgc2V0IGFzIFtkZWZpbmVkIGJ5IHRoZSBJQU5BLl0oaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcmFjdGVyLXNldHMpXG4gICAgXG4gICAgKipXYXJuaW5nOioqIERvIG5vdCB1c2UgdGhpcyB2YWx1ZSwgYXMgaXQgaXMgb2Jzb2xldGUuIFVzZSB0aGUgW2BjaGFyc2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jaGFyc2V0KSBhdHRyaWJ1dGUgb24gdGhlIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgZWxlbWVudC5cbiAgICBcbiAgICAqKk5vdGU6KiogQXMgW2A8bWV0YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSAiVGhlIEhUTUwgPG1ldGE+IGVsZW1lbnQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBvdGhlciBIVE1MIG1ldGEtcmVsYXRlZCBlbGVtZW50cywgbGlrZSA8YmFzZT4sIDxsaW5rPiwgPHNjcmlwdD4sIDxzdHlsZT4gb3IgPHRpdGxlPi4iKSBjYW5cJ3QgY2hhbmdlIGRvY3VtZW50c1wnIHR5cGVzIGluIFhIVE1MIG9yIEhUTUw1XCdzIFhIVE1MIHNlcmlhbGl6YXRpb24sIG5ldmVyIHNldCB0aGUgTUlNRSB0eXBlIHRvIGFuIFhIVE1MIE1JTUUgdHlwZSB3aXRoIGA8bWV0YT5gLlxuICAgIFxuKiAgIGAicmVmcmVzaCJgICBcbiAgICBUaGlzIGluc3RydWN0aW9uIHNwZWNpZmllczpcbiAgICAqICAgVGhlIG51bWJlciBvZiBzZWNvbmRzIHVudGlsIHRoZSBwYWdlIHNob3VsZCBiZSByZWxvYWRlZCAtIG9ubHkgaWYgdGhlIFtgY29udGVudGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItY29udGVudCkgYXR0cmlidXRlIGNvbnRhaW5zIGEgcG9zaXRpdmUgaW50ZWdlci5cbiAgICAqICAgVGhlIG51bWJlciBvZiBzZWNvbmRzIHVudGlsIHRoZSBwYWdlIHNob3VsZCByZWRpcmVjdCB0byBhbm90aGVyIC0gb25seSBpZiB0aGUgW2Bjb250ZW50YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jb250ZW50KSBhdHRyaWJ1dGUgY29udGFpbnMgYSBwb3NpdGl2ZSBpbnRlZ2VyIGZvbGxvd2VkIGJ5IHRoZSBzdHJpbmcgXCdgO3VybD1gXCcsIGFuZCBhIHZhbGlkIFVSTC5cbiogICBgInNldC1jb29raWUiYCAgXG4gICAgRGVmaW5lcyBhIFtjb29raWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvY29va2llKSBmb3IgdGhlIHBhZ2UuIEl0cyBjb250ZW50IG11c3QgZm9sbG93IHRoZSBzeW50YXggZGVmaW5lZCBpbiB0aGUgW0lFVEYgSFRUUCBDb29raWUgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHR0cHN0YXRlLWNvb2tpZS0xNCkuXG4gICAgXG4gICAgKipXYXJuaW5nOioqIERvIG5vdCB1c2UgdGhpcyBpbnN0cnVjdGlvbiwgYXMgaXQgaXMgb2Jzb2xldGUuIFVzZSB0aGUgSFRUUCBoZWFkZXIgW2BTZXQtQ29va2llYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1NldC1Db29raWUpIGluc3RlYWQuJ319LHtuYW1lOiJjb250ZW50IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyB0aGUgdmFsdWUgZm9yIHRoZSBbYGh0dHAtZXF1aXZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWh0dHAtZXF1aXYpIG9yIFtgbmFtZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItbmFtZSkgYXR0cmlidXRlLCBkZXBlbmRpbmcgb24gd2hpY2ggaXMgdXNlZC4ifX0se25hbWU6ImNoYXJzZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGRlY2xhcmVzIHRoZSBwYWdlXCdzIGNoYXJhY3RlciBlbmNvZGluZy4gSXQgbXVzdCBjb250YWluIGEgW3N0YW5kYXJkIElBTkEgTUlNRSBuYW1lIGZvciBjaGFyYWN0ZXIgZW5jb2RpbmdzXShodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyYWN0ZXItc2V0cykuIEFsdGhvdWdoIHRoZSBzdGFuZGFyZCBkb2VzblwndCByZXF1ZXN0IGEgc3BlY2lmaWMgZW5jb2RpbmcsIGl0IHN1Z2dlc3RzOlxuXG4qICAgQXV0aG9ycyBhcmUgZW5jb3VyYWdlZCB0byB1c2UgW2BVVEYtOGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvVVRGLTgpLlxuKiAgIEF1dGhvcnMgc2hvdWxkIG5vdCB1c2UgQVNDSUktaW5jb21wYXRpYmxlIGVuY29kaW5ncyB0byBhdm9pZCBzZWN1cml0eSByaXNrOiBicm93c2VycyBub3Qgc3VwcG9ydGluZyB0aGVtIG1heSBpbnRlcnByZXQgaGFybWZ1bCBjb250ZW50IGFzIEhUTUwuIFRoaXMgaGFwcGVucyB3aXRoIHRoZSBgSklTX0M2MjI2LTE5ODNgLCBgSklTX1gwMjEyLTE5OTBgLCBgSFotR0ItMjMxMmAsIGBKT0hBQmAsIHRoZSBJU08tMjAyMiBmYW1pbHkgYW5kIHRoZSBFQkNESUMgZmFtaWx5LlxuXG4qKk5vdGU6KiogQVNDSUktaW5jb21wYXRpYmxlIGVuY29kaW5ncyBhcmUgdGhvc2UgdGhhdCBkb25cJ3QgbWFwIHRoZSA4LWJpdCBjb2RlIHBvaW50cyBgMHgyMGAgdG8gYDB4N0VgIHRvIHRoZSBgMHgwMDIwYCB0byBgMHgwMDdFYCBVbmljb2RlIGNvZGUgcG9pbnRzKVxuXG4qICAgQXV0aG9ycyAqKm11c3Qgbm90KiogdXNlIGBDRVNVLThgLCBgVVRGLTdgLCBgQk9DVS0xYCBhbmQvb3IgYFNDU1VgIGFzIFtjcm9zcy1zaXRlIHNjcmlwdGluZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9Dcm9zcy1zaXRlX3NjcmlwdGluZykgYXR0YWNrcyB3aXRoIHRoZXNlIGVuY29kaW5ncyBoYXZlIGJlZW4gZGVtb25zdHJhdGVkLlxuKiAgIEF1dGhvcnMgc2hvdWxkIG5vdCB1c2UgYFVURi0zMmAgYmVjYXVzZSBub3QgYWxsIEhUTUw1IGVuY29kaW5nIGFsZ29yaXRobXMgY2FuIGRpc3Rpbmd1aXNoIGl0IGZyb20gYFVURi0xNmAuXG5cbioqTm90ZXM6KipcblxuKiAgIFRoZSBkZWNsYXJlZCBjaGFyYWN0ZXIgZW5jb2RpbmcgbXVzdCBtYXRjaCB0aGUgb25lIHRoZSBwYWdlIHdhcyBzYXZlZCB3aXRoIHRvIGF2b2lkIGdhcmJsZWQgY2hhcmFjdGVycyBhbmQgc2VjdXJpdHkgaG9sZXMuXG4qICAgVGhlIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgZWxlbWVudCBkZWNsYXJpbmcgdGhlIGVuY29kaW5nIG11c3QgYmUgaW5zaWRlIHRoZSBbYDxoZWFkPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9oZWFkICJUaGUgSFRNTCA8aGVhZD4gZWxlbWVudCBwcm92aWRlcyBnZW5lcmFsIGluZm9ybWF0aW9uIChtZXRhZGF0YSkgYWJvdXQgdGhlIGRvY3VtZW50LCBpbmNsdWRpbmcgaXRzIHRpdGxlIGFuZCBsaW5rcyB0byBpdHPCoHNjcmlwdHMgYW5kIHN0eWxlIHNoZWV0cy4iKSBlbGVtZW50IGFuZCAqKndpdGhpbiB0aGUgZmlyc3QgMTAyNCBieXRlcyoqIG9mIHRoZSBIVE1MIGFzIHNvbWUgYnJvd3NlcnMgb25seSBsb29rIGF0IHRob3NlIGJ5dGVzIGJlZm9yZSBjaG9vc2luZyBhbiBlbmNvZGluZy5cbiogICBUaGlzIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgZWxlbWVudCBpcyBvbmx5IG9uZSBwYXJ0IG9mIHRoZSBbYWxnb3JpdGhtIHRvIGRldGVybWluZSBhIHBhZ2VcJ3MgY2hhcmFjdGVyIHNldF0oaHR0cHM6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNlbmNvZGluZy1zbmlmZmluZy1hbGdvcml0aG0gIkFsZ29yaXRobSBjaGFyc2V0IHBhZ2UiKS4gVGhlIFtgQ29udGVudC1UeXBlYCBoZWFkZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9Db250ZW50LVR5cGUpIGFuZCBhbnkgW0J5dGUtT3JkZXIgTWFya3NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQnl0ZS1PcmRlcl9NYXJrICJUaGUgZGVmaW5pdGlvbiBvZiB0aGF0IHRlcm0gKEJ5dGUtT3JkZXIgTWFya3MpIGhhcyBub3QgYmVlbiB3cml0dGVuIHlldDsgcGxlYXNlIGNvbnNpZGVyIGNvbnRyaWJ1dGluZyBpdCEiKSBvdmVycmlkZSB0aGlzIGVsZW1lbnQuXG4qICAgSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gZGVmaW5lIHRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcuIElmIGEgcGFnZVwncyBlbmNvZGluZyBpcyB1bmRlZmluZWQsIGNyb3NzLXNjcmlwdGluZyB0ZWNobmlxdWVzIGFyZSBwb3NzaWJsZSwgc3VjaCBhcyB0aGUgW2BVVEYtN2AgZmFsbGJhY2sgY3Jvc3Mtc2NyaXB0aW5nIHRlY2huaXF1ZV0oaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9kb2N0eXBlLW1pcnJvci93aWtpL0FydGljbGVVdGY3KS5cbiogICBUaGUgW2A8bWV0YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSAiVGhlIEhUTUwgPG1ldGE+IGVsZW1lbnQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBvdGhlciBIVE1MIG1ldGEtcmVsYXRlZCBlbGVtZW50cywgbGlrZSA8YmFzZT4sIDxsaW5rPiwgPHNjcmlwdD4sIDxzdHlsZT4gb3IgPHRpdGxlPi4iKSBlbGVtZW50IHdpdGggYSBgY2hhcnNldGAgYXR0cmlidXRlIGlzIGEgc3lub255bSBmb3IgdGhlIHByZS1IVE1MNSBgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9X0lBTkFjaGFyc2V0XyI+YCwgd2hlcmUgX2BJQU5BY2hhcnNldGBfIGNvbnRhaW5zIHRoZSB2YWx1ZSBvZiB0aGUgZXF1aXZhbGVudCBbYGNoYXJzZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNoYXJzZXQpIGF0dHJpYnV0ZS4gVGhpcyBzeW50YXggaXMgc3RpbGwgYWxsb3dlZCwgYWx0aG91Z2ggbm8gbG9uZ2VyIHJlY29tbWVuZGVkLid9fSx7bmFtZToic2NoZW1lIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgc2NoZW1lIGluIHdoaWNoIG1ldGFkYXRhIGlzIGRlc2NyaWJlZC4gQSBzY2hlbWUgaXMgYSBjb250ZXh0IGxlYWRpbmcgdG8gdGhlIGNvcnJlY3QgaW50ZXJwcmV0YXRpb25zIG9mIHRoZSBbYGNvbnRlbnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNvbnRlbnQpIHZhbHVlLCBsaWtlIGEgZm9ybWF0LlxuXG4qKldhcm5pbmc6KiogRG8gbm90IHVzZSB0aGlzIHZhbHVlLCBhcyBpdCBpcyBvYnNvbGV0ZS4gVGhlcmUgaXMgbm8gcmVwbGFjZW1lbnQgYXMgdGhlcmUgd2FzIG5vIHJlYWwgdXNhZ2UgZm9yIGl0LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSJ9XX0se25hbWU6InN0eWxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc3R5bGUgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBlbWJlZCBzdHlsZSBpbmZvcm1hdGlvbiBpbiB0aGVpciBkb2N1bWVudHMuIFRoZSBzdHlsZSBlbGVtZW50IGlzIG9uZSBvZiBzZXZlcmFsIGlucHV0cyB0byB0aGUgc3R5bGluZyBwcm9jZXNzaW5nIG1vZGVsLiBUaGUgZWxlbWVudCBkb2VzIG5vdCByZXByZXNlbnQgY29udGVudCBmb3IgdGhlIHVzZXIuIn0sYXR0cmlidXRlczpbe25hbWU6Im1lZGlhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHdoaWNoIG1lZGlhIHRoZSBzdHlsZSBzaG91bGQgYmUgYXBwbGllZCB0by4gSXRzIHZhbHVlIGlzIGEgW21lZGlhIHF1ZXJ5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9HdWlkZS9DU1MvTWVkaWFfcXVlcmllcyksIHdoaWNoIGRlZmF1bHRzIHRvIGBhbGxgIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbWlzc2luZy4ifX0se25hbWU6Im5vbmNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGNyeXB0b2dyYXBoaWMgbm9uY2UgKG51bWJlciB1c2VkIG9uY2UpIHVzZWQgdG8gd2hpdGVsaXN0IGlubGluZSBzdHlsZXMgaW4gYSBbc3R5bGUtc3JjIENvbnRlbnQtU2VjdXJpdHktUG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQ29udGVudC1TZWN1cml0eS1Qb2xpY3kvc3R5bGUtc3JjKS4gVGhlIHNlcnZlciBtdXN0IGdlbmVyYXRlIGEgdW5pcXVlIG5vbmNlIHZhbHVlIGVhY2ggdGltZSBpdCB0cmFuc21pdHMgYSBwb2xpY3kuIEl0IGlzIGNyaXRpY2FsIHRvIHByb3ZpZGUgYSBub25jZSB0aGF0IGNhbm5vdCBiZSBndWVzc2VkIGFzIGJ5cGFzc2luZyBhIHJlc291cmNl4oCZcyBwb2xpY3kgaXMgb3RoZXJ3aXNlIHRyaXZpYWwuIn19LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBzdHlsaW5nIGxhbmd1YWdlIGFzIGEgTUlNRSB0eXBlIChjaGFyc2V0IHNob3VsZCBub3QgYmUgc3BlY2lmaWVkKS4gVGhpcyBhdHRyaWJ1dGUgaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIGB0ZXh0L2Nzc2AgaWYgaXQgaXMgbm90IHNwZWNpZmllZCDigJQgdGhlcmUgaXMgdmVyeSBsaXR0bGUgcmVhc29uIHRvIGluY2x1ZGUgdGhpcyBpbiBtb2Rlcm4gd2ViIGRvY3VtZW50cy4ifX0se25hbWU6InNjb3BlZCIsdmFsdWVTZXQ6InYifSx7bmFtZToidGl0bGUiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgW2FsdGVybmF0aXZlIHN0eWxlIHNoZWV0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQWx0ZXJuYXRpdmVfc3R5bGVfc2hlZXRzKSBzZXRzLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3R5bGUifV19LHtuYW1lOiJib2R5IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYm9keSBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGNvbnRlbnQgb2YgdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJvbmFmdGVycHJpbnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgYWZ0ZXIgdGhlIHVzZXIgaGFzIHByaW50ZWQgdGhlIGRvY3VtZW50LiJ9fSx7bmFtZToib25iZWZvcmVwcmludCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB1c2VyIHJlcXVlc3RzIHByaW50aW5nIG9mIHRoZSBkb2N1bWVudC4ifX0se25hbWU6Im9uYmVmb3JldW5sb2FkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGlzIGFib3V0IHRvIGJlIHVubG9hZGVkLiJ9fSx7bmFtZToib25oYXNoY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGZyYWdtZW50IGlkZW50aWZpZXIgcGFydCAoc3RhcnRpbmcgd2l0aCB0aGUgaGFzaCAoYCcjJ2ApIGNoYXJhY3Rlcikgb2YgdGhlIGRvY3VtZW50J3MgY3VycmVudCBhZGRyZXNzIGhhcyBjaGFuZ2VkLiJ9fSx7bmFtZToib25sYW5ndWFnZWNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBwcmVmZXJyZWQgbGFuZ3VhZ2VzIGNoYW5nZWQuIn19LHtuYW1lOiJvbm1lc3NhZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgaGFzIHJlY2VpdmVkIGEgbWVzc2FnZS4ifX0se25hbWU6Im9ub2ZmbGluZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIG5ldHdvcmsgY29tbXVuaWNhdGlvbiBoYXMgZmFpbGVkLiJ9fSx7bmFtZToib25vbmxpbmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBuZXR3b3JrIGNvbW11bmljYXRpb24gaGFzIGJlZW4gcmVzdG9yZWQuIn19LHtuYW1lOiJvbnBhZ2VoaWRlIn0se25hbWU6Im9ucGFnZXNob3cifSx7bmFtZToib25wb3BzdGF0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB1c2VyIGhhcyBuYXZpZ2F0ZWQgc2Vzc2lvbiBoaXN0b3J5LiJ9fSx7bmFtZToib25zdG9yYWdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHN0b3JhZ2UgYXJlYSBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9udW5sb2FkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGlzIGdvaW5nIGF3YXkuIn19LHtuYW1lOiJhbGluayIsZGVzY3JpcHRpb246J0NvbG9yIG9mIHRleHQgZm9yIGh5cGVybGlua3Mgd2hlbiBzZWxlY3RlZC4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sb3IgIlRoZSBjb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgZm9yZWdyb3VuZCBjb2xvciB2YWx1ZSBvZiBhbiBlbGVtZW50XCdzIHRleHQgYW5kIHRleHQgZGVjb3JhdGlvbnMsIGFuZCBzZXRzIHRoZSBjdXJyZW50Y29sb3IgdmFsdWUuIikgcHJvcGVydHkgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgW2A6YWN0aXZlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTLzphY3RpdmUgIlRoZSA6YWN0aXZlIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBhbiBlbGVtZW50IChzdWNoIGFzIGEgYnV0dG9uKSB0aGF0IGlzIGJlaW5nIGFjdGl2YXRlZCBieSB0aGUgdXNlci4iKSBwc2V1ZG8tY2xhc3MgaW5zdGVhZC5fJ30se25hbWU6ImJhY2tncm91bmQiLGRlc2NyaXB0aW9uOidVUkkgb2YgYSBpbWFnZSB0byB1c2UgYXMgYSBiYWNrZ3JvdW5kLiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BiYWNrZ3JvdW5kYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQgIlRoZSBiYWNrZ3JvdW5kIHNob3J0aGFuZCBDU1MgcHJvcGVydHkgc2V0cyBhbGwgYmFja2dyb3VuZCBzdHlsZSBwcm9wZXJ0aWVzIGF0IG9uY2UsIHN1Y2ggYXMgY29sb3IsIGltYWdlLCBvcmlnaW4gYW5kIHNpemUsIG9yIHJlcGVhdCBtZXRob2QuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6ImJnY29sb3IiLGRlc2NyaXB0aW9uOidCYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgZG9jdW1lbnQuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYGJhY2tncm91bmQtY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1jb2xvciAiVGhlIGJhY2tncm91bmQtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgYW4gZWxlbWVudC4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToiYm90dG9tbWFyZ2luIixkZXNjcmlwdGlvbjonVGhlIG1hcmdpbiBvZiB0aGUgYm90dG9tIG9mIHRoZSBib2R5LiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BtYXJnaW4tYm90dG9tYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbi1ib3R0b20gIlRoZSBtYXJnaW4tYm90dG9tIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiB0aGUgYm90dG9tIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6ImxlZnRtYXJnaW4iLGRlc2NyaXB0aW9uOidUaGUgbWFyZ2luIG9mIHRoZSBsZWZ0IG9mIHRoZSBib2R5LiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BtYXJnaW4tbGVmdGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tbGVmdCAiVGhlIG1hcmdpbi1sZWZ0IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiB0aGUgbGVmdCBzaWRlIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6ImxpbmsiLGRlc2NyaXB0aW9uOidDb2xvciBvZiB0ZXh0IGZvciB1bnZpc2l0ZWQgaHlwZXJ0ZXh0IGxpbmtzLiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2Bjb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jb2xvciAiVGhlIGNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHZhbHVlIG9mIGFuIGVsZW1lbnRcJ3MgdGV4dCBhbmQgdGV4dCBkZWNvcmF0aW9ucywgYW5kIHNldHMgdGhlIGN1cnJlbnRjb2xvciB2YWx1ZS4iKSBwcm9wZXJ0eSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBbYDpsaW5rYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTLzpsaW5rICJUaGUgOmxpbmsgQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBoYXMgbm90IHlldCBiZWVuIHZpc2l0ZWQuIEl0IG1hdGNoZXMgZXZlcnkgdW52aXNpdGVkIDxhPiwgPGFyZWE+LCBvciA8bGluaz4gZWxlbWVudCB0aGF0IGhhcyBhbiBocmVmIGF0dHJpYnV0ZS4iKSBwc2V1ZG8tY2xhc3MgaW5zdGVhZC5fJ30se25hbWU6Im9uYmx1ciIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgbG9zZXMgZm9jdXMuIn0se25hbWU6Im9uZXJyb3IiLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGZhaWxzIHRvIGxvYWQgcHJvcGVybHkuIn0se25hbWU6Im9uZm9jdXMiLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IHJlY2VpdmVzIGZvY3VzLiJ9LHtuYW1lOiJvbmxvYWQiLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGhhcyBmaW5pc2hlZCBsb2FkaW5nLiJ9LHtuYW1lOiJvbnJlZG8iLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHVzZXIgaGFzIG1vdmVkIGZvcndhcmQgaW4gdW5kbyB0cmFuc2FjdGlvbiBoaXN0b3J5LiJ9LHtuYW1lOiJvbnJlc2l6ZSIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgaGFzIGJlZW4gcmVzaXplZC4ifSx7bmFtZToib251bmRvIixkZXNjcmlwdGlvbjoiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB1c2VyIGhhcyBtb3ZlZCBiYWNrd2FyZCBpbiB1bmRvIHRyYW5zYWN0aW9uIGhpc3RvcnkuIn0se25hbWU6InJpZ2h0bWFyZ2luIixkZXNjcmlwdGlvbjonVGhlIG1hcmdpbiBvZiB0aGUgcmlnaHQgb2YgdGhlIGJvZHkuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYG1hcmdpbi1yaWdodGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tcmlnaHQgIlRoZSBtYXJnaW4tcmlnaHQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSByaWdodCBzaWRlIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6InRleHQiLGRlc2NyaXB0aW9uOidGb3JlZ3JvdW5kIGNvbG9yIG9mIHRleHQuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYGNvbG9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NvbG9yICJUaGUgY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGZvcmVncm91bmQgY29sb3IgdmFsdWUgb2YgYW4gZWxlbWVudFwncyB0ZXh0IGFuZCB0ZXh0IGRlY29yYXRpb25zLCBhbmQgc2V0cyB0aGUgY3VycmVudGNvbG9yIHZhbHVlLiIpIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGluc3RlYWQuXyd9LHtuYW1lOiJ0b3BtYXJnaW4iLGRlc2NyaXB0aW9uOidUaGUgbWFyZ2luIG9mIHRoZSB0b3Agb2YgdGhlIGJvZHkuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYG1hcmdpbi10b3BgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luLXRvcCAiVGhlIG1hcmdpbi10b3AgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSB0b3Agb2YgYW4gZWxlbWVudC4gQSBwb3NpdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgZmFydGhlciBmcm9tIGl0cyBuZWlnaGJvcnMsIHdoaWxlIGEgbmVnYXRpdmUgdmFsdWUgcGxhY2VzIGl0IGNsb3Nlci4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToidmxpbmsiLGRlc2NyaXB0aW9uOidDb2xvciBvZiB0ZXh0IGZvciB2aXNpdGVkIGh5cGVydGV4dCBsaW5rcy4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sb3IgIlRoZSBjb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgZm9yZWdyb3VuZCBjb2xvciB2YWx1ZSBvZiBhbiBlbGVtZW50XCdzIHRleHQgYW5kIHRleHQgZGVjb3JhdGlvbnMsIGFuZCBzZXRzIHRoZSBjdXJyZW50Y29sb3IgdmFsdWUuIikgcHJvcGVydHkgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgW2A6dmlzaXRlZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy86dmlzaXRlZCAiVGhlIDp2aXNpdGVkIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBsaW5rcyB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHZpc2l0ZWQuIEZvciBwcml2YWN5IHJlYXNvbnMsIHRoZSBzdHlsZXMgdGhhdCBjYW4gYmUgbW9kaWZpZWQgdXNpbmcgdGhpcyBzZWxlY3RvciBhcmUgdmVyeSBsaW1pdGVkLiIpIHBzZXVkby1jbGFzcyBpbnN0ZWFkLl8nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2JvZHkifV19LHtuYW1lOiJhcnRpY2xlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYXJ0aWNsZSBlbGVtZW50IHJlcHJlc2VudHMgYSBjb21wbGV0ZSwgb3Igc2VsZi1jb250YWluZWQsIGNvbXBvc2l0aW9uIGluIGEgZG9jdW1lbnQsIHBhZ2UsIGFwcGxpY2F0aW9uLCBvciBzaXRlIGFuZCB0aGF0IGlzLCBpbiBwcmluY2lwbGUsIGluZGVwZW5kZW50bHkgZGlzdHJpYnV0YWJsZSBvciByZXVzYWJsZSwgZS5nLiBpbiBzeW5kaWNhdGlvbi4gVGhpcyBjb3VsZCBiZSBhIGZvcnVtIHBvc3QsIGEgbWFnYXppbmUgb3IgbmV3c3BhcGVyIGFydGljbGUsIGEgYmxvZyBlbnRyeSwgYSB1c2VyLXN1Ym1pdHRlZCBjb21tZW50LCBhbiBpbnRlcmFjdGl2ZSB3aWRnZXQgb3IgZ2FkZ2V0LCBvciBhbnkgb3RoZXIgaW5kZXBlbmRlbnQgaXRlbSBvZiBjb250ZW50LiBFYWNoIGFydGljbGUgc2hvdWxkIGJlIGlkZW50aWZpZWQsIHR5cGljYWxseSBieSBpbmNsdWRpbmcgYSBoZWFkaW5nIChoMeKAk2g2IGVsZW1lbnQpIGFzIGEgY2hpbGQgb2YgdGhlIGFydGljbGUgZWxlbWVudC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hcnRpY2xlIn1dfSx7bmFtZToic2VjdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNlY3Rpb24gZWxlbWVudCByZXByZXNlbnRzIGEgZ2VuZXJpYyBzZWN0aW9uIG9mIGEgZG9jdW1lbnQgb3IgYXBwbGljYXRpb24uIEEgc2VjdGlvbiwgaW4gdGhpcyBjb250ZXh0LCBpcyBhIHRoZW1hdGljIGdyb3VwaW5nIG9mIGNvbnRlbnQuIEVhY2ggc2VjdGlvbiBzaG91bGQgYmUgaWRlbnRpZmllZCwgdHlwaWNhbGx5IGJ5IGluY2x1ZGluZyBhIGhlYWRpbmcgKCBoMS0gaDYgZWxlbWVudCkgYXMgYSBjaGlsZCBvZiB0aGUgc2VjdGlvbiBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NlY3Rpb24ifV19LHtuYW1lOiJuYXYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYXYgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBvZiBhIHBhZ2UgdGhhdCBsaW5rcyB0byBvdGhlciBwYWdlcyBvciB0byBwYXJ0cyB3aXRoaW4gdGhlIHBhZ2U6IGEgc2VjdGlvbiB3aXRoIG5hdmlnYXRpb24gbGlua3MuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbmF2In1dfSx7bmFtZToiYXNpZGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBhc2lkZSBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIG9mIGEgcGFnZSB0aGF0IGNvbnNpc3RzIG9mIGNvbnRlbnQgdGhhdCBpcyB0YW5nZW50aWFsbHkgcmVsYXRlZCB0byB0aGUgY29udGVudCBhcm91bmQgdGhlIGFzaWRlIGVsZW1lbnQsIGFuZCB3aGljaCBjb3VsZCBiZSBjb25zaWRlcmVkIHNlcGFyYXRlIGZyb20gdGhhdCBjb250ZW50LiBTdWNoIHNlY3Rpb25zIGFyZSBvZnRlbiByZXByZXNlbnRlZCBhcyBzaWRlYmFycyBpbiBwcmludGVkIHR5cG9ncmFwaHkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXNpZGUifV19LHtuYW1lOiJoMSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGgxIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gaGVhZGluZy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9IZWFkaW5nX0VsZW1lbnRzIn1dfSx7bmFtZToiaDIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoMiBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIGhlYWRpbmcuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvSGVhZGluZ19FbGVtZW50cyJ9XX0se25hbWU6ImgzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaDMgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBoZWFkaW5nLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0hlYWRpbmdfRWxlbWVudHMifV19LHtuYW1lOiJoNCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGg0IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gaGVhZGluZy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9IZWFkaW5nX0VsZW1lbnRzIn1dfSx7bmFtZToiaDUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoNSBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIGhlYWRpbmcuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvSGVhZGluZ19FbGVtZW50cyJ9XX0se25hbWU6Img2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaDYgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBoZWFkaW5nLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0hlYWRpbmdfRWxlbWVudHMifV19LHtuYW1lOiJoZWFkZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoZWFkZXIgZWxlbWVudCByZXByZXNlbnRzIGludHJvZHVjdG9yeSBjb250ZW50IGZvciBpdHMgbmVhcmVzdCBhbmNlc3RvciBzZWN0aW9uaW5nIGNvbnRlbnQgb3Igc2VjdGlvbmluZyByb290IGVsZW1lbnQuIEEgaGVhZGVyIHR5cGljYWxseSBjb250YWlucyBhIGdyb3VwIG9mIGludHJvZHVjdG9yeSBvciBuYXZpZ2F0aW9uYWwgYWlkcy4gV2hlbiB0aGUgbmVhcmVzdCBhbmNlc3RvciBzZWN0aW9uaW5nIGNvbnRlbnQgb3Igc2VjdGlvbmluZyByb290IGVsZW1lbnQgaXMgdGhlIGJvZHkgZWxlbWVudCwgdGhlbiBpdCBhcHBsaWVzIHRvIHRoZSB3aG9sZSBwYWdlLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2hlYWRlciJ9XX0se25hbWU6ImZvb3RlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGZvb3RlciBlbGVtZW50IHJlcHJlc2VudHMgYSBmb290ZXIgZm9yIGl0cyBuZWFyZXN0IGFuY2VzdG9yIHNlY3Rpb25pbmcgY29udGVudCBvciBzZWN0aW9uaW5nIHJvb3QgZWxlbWVudC4gQSBmb290ZXIgdHlwaWNhbGx5IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGl0cyBzZWN0aW9uIHN1Y2ggYXMgd2hvIHdyb3RlIGl0LCBsaW5rcyB0byByZWxhdGVkIGRvY3VtZW50cywgY29weXJpZ2h0IGRhdGEsIGFuZCB0aGUgbGlrZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb290ZXIifV19LHtuYW1lOiJhZGRyZXNzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYWRkcmVzcyBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGNvbnRhY3QgaW5mb3JtYXRpb24gZm9yIGl0cyBuZWFyZXN0IGFydGljbGUgb3IgYm9keSBlbGVtZW50IGFuY2VzdG9yLiBJZiB0aGF0IGlzIHRoZSBib2R5IGVsZW1lbnQsIHRoZW4gdGhlIGNvbnRhY3QgaW5mb3JtYXRpb24gYXBwbGllcyB0byB0aGUgZG9jdW1lbnQgYXMgYSB3aG9sZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hZGRyZXNzIn1dfSx7bmFtZToicCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHAgZWxlbWVudCByZXByZXNlbnRzIGEgcGFyYWdyYXBoLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3AifV19LHtuYW1lOiJociIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhyIGVsZW1lbnQgcmVwcmVzZW50cyBhIHBhcmFncmFwaC1sZXZlbCB0aGVtYXRpYyBicmVhaywgZS5nLiBhIHNjZW5lIGNoYW5nZSBpbiBhIHN0b3J5LCBvciBhIHRyYW5zaXRpb24gdG8gYW5vdGhlciB0b3BpYyB3aXRoaW4gYSBzZWN0aW9uIG9mIGEgcmVmZXJlbmNlIGJvb2suIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjoiU2V0cyB0aGUgYWxpZ25tZW50IG9mIHRoZSBydWxlIG9uIHRoZSBwYWdlLiBJZiBubyB2YWx1ZSBpcyBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGBsZWZ0YC4ifSx7bmFtZToiY29sb3IiLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiB0aGUgcnVsZSB0aHJvdWdoIGNvbG9yIG5hbWUgb3IgaGV4YWRlY2ltYWwgdmFsdWUuIn0se25hbWU6Im5vc2hhZGUiLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBydWxlIHRvIGhhdmUgbm8gc2hhZGluZy4ifSx7bmFtZToic2l6ZSIsZGVzY3JpcHRpb246IlNldHMgdGhlIGhlaWdodCwgaW4gcGl4ZWxzLCBvZiB0aGUgcnVsZS4ifSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBsZW5ndGggb2YgdGhlIHJ1bGUgb24gdGhlIHBhZ2UgdGhyb3VnaCBhIHBpeGVsIG9yIHBlcmNlbnRhZ2UgdmFsdWUuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ociJ9XX0se25hbWU6InByZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHByZSBlbGVtZW50IHJlcHJlc2VudHMgYSBibG9jayBvZiBwcmVmb3JtYXR0ZWQgdGV4dCwgaW4gd2hpY2ggc3RydWN0dXJlIGlzIHJlcHJlc2VudGVkIGJ5IHR5cG9ncmFwaGljIGNvbnZlbnRpb25zIHJhdGhlciB0aGFuIGJ5IGVsZW1lbnRzLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjb2xzIixkZXNjcmlwdGlvbjonQ29udGFpbnMgdGhlIF9wcmVmZXJyZWRfIGNvdW50IG9mIGNoYXJhY3RlcnMgdGhhdCBhIGxpbmUgc2hvdWxkIGhhdmUuIEl0IHdhcyBhIG5vbi1zdGFuZGFyZCBzeW5vbnltIG9mIFtgd2lkdGhgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcHJlI2F0dHItd2lkdGgpLiBUbyBhY2hpZXZlIHN1Y2ggYW4gZWZmZWN0LCB1c2UgQ1NTIFtgd2lkdGhgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1Mvd2lkdGggIlRoZSB3aWR0aCBDU1MgcHJvcGVydHkgc2V0cyBhbiBlbGVtZW50XCdzIHdpZHRoLiBCeSBkZWZhdWx0IGl0IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBjb250ZW50IGFyZWEsIGJ1dCBpZiBib3gtc2l6aW5nIGlzIHNldCB0byBib3JkZXItYm94LCBpdCBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyIGFyZWEuIikgaW5zdGVhZC4nfSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOidDb250YWlucyB0aGUgX3ByZWZlcnJlZF8gY291bnQgb2YgY2hhcmFjdGVycyB0aGF0IGEgbGluZSBzaG91bGQgaGF2ZS4gVGhvdWdoIHRlY2huaWNhbGx5IHN0aWxsIGltcGxlbWVudGVkLCB0aGlzIGF0dHJpYnV0ZSBoYXMgbm8gdmlzdWFsIGVmZmVjdDsgdG8gYWNoaWV2ZSBzdWNoIGFuIGVmZmVjdCwgdXNlIENTUyBbYHdpZHRoYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3dpZHRoICJUaGUgd2lkdGggQ1NTIHByb3BlcnR5IHNldHMgYW4gZWxlbWVudFwncyB3aWR0aC4gQnkgZGVmYXVsdCBpdCBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgY29udGVudCBhcmVhLCBidXQgaWYgYm94LXNpemluZyBpcyBzZXQgdG8gYm9yZGVyLWJveCwgaXQgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGJvcmRlciBhcmVhLiIpIGluc3RlYWQuJ30se25hbWU6IndyYXAiLGRlc2NyaXB0aW9uOidJcyBhIF9oaW50XyBpbmRpY2F0aW5nIGhvdyB0aGUgb3ZlcmZsb3cgbXVzdCBoYXBwZW4uIEluIG1vZGVybiBicm93c2VyIHRoaXMgaGludCBpcyBpZ25vcmVkIGFuZCBubyB2aXN1YWwgZWZmZWN0IHJlc3VsdHMgaW4gaXRzIHByZXNlbnQ7IHRvIGFjaGlldmUgc3VjaCBhbiBlZmZlY3QsIHVzZSBDU1MgW2B3aGl0ZS1zcGFjZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy93aGl0ZS1zcGFjZSAiVGhlIHdoaXRlLXNwYWNlIENTUyBwcm9wZXJ0eSBzZXRzIGhvdyB3aGl0ZSBzcGFjZSBpbnNpZGUgYW4gZWxlbWVudCBpcyBoYW5kbGVkLiIpIGluc3RlYWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9wcmUifV19LHtuYW1lOiJibG9ja3F1b3RlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYmxvY2txdW90ZSBlbGVtZW50IHJlcHJlc2VudHMgY29udGVudCB0aGF0IGlzIHF1b3RlZCBmcm9tIGFub3RoZXIgc291cmNlLCBvcHRpb25hbGx5IHdpdGggYSBjaXRhdGlvbiB3aGljaCBtdXN0IGJlIHdpdGhpbiBhIGZvb3RlciBvciBjaXRlIGVsZW1lbnQsIGFuZCBvcHRpb25hbGx5IHdpdGggaW4tbGluZSBjaGFuZ2VzIHN1Y2ggYXMgYW5ub3RhdGlvbnMgYW5kIGFiYnJldmlhdGlvbnMuIn0sYXR0cmlidXRlczpbe25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgVVJMIHRoYXQgZGVzaWduYXRlcyBhIHNvdXJjZSBkb2N1bWVudCBvciBtZXNzYWdlIGZvciB0aGUgaW5mb3JtYXRpb24gcXVvdGVkLiBUaGlzIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCB0byBwb2ludCB0byBpbmZvcm1hdGlvbiBleHBsYWluaW5nIHRoZSBjb250ZXh0IG9yIHRoZSByZWZlcmVuY2UgZm9yIHRoZSBxdW90ZS4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ibG9ja3F1b3RlIn1dfSx7bmFtZToib2wiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBvbCBlbGVtZW50IHJlcHJlc2VudHMgYSBsaXN0IG9mIGl0ZW1zLCB3aGVyZSB0aGUgaXRlbXMgaGF2ZSBiZWVuIGludGVudGlvbmFsbHkgb3JkZXJlZCwgc3VjaCB0aGF0IGNoYW5naW5nIHRoZSBvcmRlciB3b3VsZCBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJyZXZlcnNlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoYXQgdGhlIGl0ZW1zIG9mIHRoZSBsaXN0IGFyZSBzcGVjaWZpZWQgaW4gcmV2ZXJzZWQgb3JkZXIuIn19LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBpbnRlZ2VyIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIHN0YXJ0IHZhbHVlIGZvciBudW1iZXJpbmcgdGhlIGluZGl2aWR1YWwgbGlzdCBpdGVtcy4gQWx0aG91Z2ggdGhlIG9yZGVyaW5nIHR5cGUgb2YgbGlzdCBlbGVtZW50cyBtaWdodCBiZSBSb21hbiBudW1lcmFscywgc3VjaCBhcyBYWFhJLCBvciBsZXR0ZXJzLCB0aGUgdmFsdWUgb2Ygc3RhcnQgaXMgYWx3YXlzIHJlcHJlc2VudGVkIGFzIGEgbnVtYmVyLiBUbyBzdGFydCBudW1iZXJpbmcgZWxlbWVudHMgZnJvbSB0aGUgbGV0dGVyICJDIiwgdXNlIGA8b2wgc3RhcnQ9IjMiPmAuXG5cbioqTm90ZSoqOiBUaGlzIGF0dHJpYnV0ZSB3YXMgZGVwcmVjYXRlZCBpbiBIVE1MNCwgYnV0IHJlaW50cm9kdWNlZCBpbiBIVE1MNS4nfX0se25hbWU6InR5cGUiLHZhbHVlU2V0OiJsdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBudW1iZXJpbmcgdHlwZTpcblxuKiAgIGAnYSdgIGluZGljYXRlcyBsb3dlcmNhc2UgbGV0dGVycyxcbiogICBgJ0EnYCBpbmRpY2F0ZXMgdXBwZXJjYXNlIGxldHRlcnMsXG4qICAgYCdpJ2AgaW5kaWNhdGVzIGxvd2VyY2FzZSBSb21hbiBudW1lcmFscyxcbiogICBgJ0knYCBpbmRpY2F0ZXMgdXBwZXJjYXNlIFJvbWFuIG51bWVyYWxzLFxuKiAgIGFuZCBgJzEnYCBpbmRpY2F0ZXMgbnVtYmVycyAoZGVmYXVsdCkuXG5cblRoZSB0eXBlIHNldCBpcyB1c2VkIGZvciB0aGUgZW50aXJlIGxpc3QgdW5sZXNzIGEgZGlmZmVyZW50IFtgdHlwZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9saSNhdHRyLXR5cGUpIGF0dHJpYnV0ZSBpcyB1c2VkIHdpdGhpbiBhbiBlbmNsb3NlZCBbYDxsaT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGkgXCJUaGUgSFRNTCA8bGk+IGVsZW1lbnQgaXMgdXNlZCB0byByZXByZXNlbnQgYW4gaXRlbSBpbiBhIGxpc3QuIEl0IG11c3QgYmUgY29udGFpbmVkIGluIGEgcGFyZW50IGVsZW1lbnQ6IGFuIG9yZGVyZWQgbGlzdCAoPG9sPiksIGFuIHVub3JkZXJlZCBsaXN0ICg8dWw+KSwgb3IgYSBtZW51ICg8bWVudT4pLiBJbiBtZW51cyBhbmQgdW5vcmRlcmVkIGxpc3RzLCBsaXN0IGl0ZW1zIGFyZSB1c3VhbGx5IGRpc3BsYXllZCB1c2luZyBidWxsZXQgcG9pbnRzLiBJbiBvcmRlcmVkIGxpc3RzLCB0aGV5IGFyZSB1c3VhbGx5IGRpc3BsYXllZCB3aXRoIGFuIGFzY2VuZGluZyBjb3VudGVyIG9uIHRoZSBsZWZ0LCBzdWNoIGFzIGEgbnVtYmVyIG9yIGxldHRlci5cIikgZWxlbWVudC5cblxuKipOb3RlOioqIFRoaXMgYXR0cmlidXRlIHdhcyBkZXByZWNhdGVkIGluIEhUTUw0LCBidXQgcmVpbnRyb2R1Y2VkIGluIEhUTUw1LlxuXG5Vbmxlc3MgdGhlIHZhbHVlIG9mIHRoZSBsaXN0IG51bWJlciBtYXR0ZXJzIChlLmcuIGluIGxlZ2FsIG9yIHRlY2huaWNhbCBkb2N1bWVudHMgd2hlcmUgaXRlbXMgYXJlIHRvIGJlIHJlZmVyZW5jZWQgYnkgdGhlaXIgbnVtYmVyL2xldHRlciksIHRoZSBDU1MgW2BsaXN0LXN0eWxlLXR5cGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbGlzdC1zdHlsZS10eXBlIFwiVGhlIGxpc3Qtc3R5bGUtdHlwZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFya2VyIChzdWNoIGFzIGEgZGlzYywgY2hhcmFjdGVyLCBvciBjdXN0b20gY291bnRlciBzdHlsZSkgb2YgYSBsaXN0IGl0ZW0gZWxlbWVudC5cIikgcHJvcGVydHkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4ifX0se25hbWU6ImNvbXBhY3QiLGRlc2NyaXB0aW9uOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGhpbnRzIHRoYXQgdGhlIGxpc3Qgc2hvdWxkIGJlIHJlbmRlcmVkIGluIGEgY29tcGFjdCBzdHlsZS4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoaXMgYXR0cmlidXRlIGRlcGVuZHMgb24gdGhlIHVzZXIgYWdlbnQgYW5kIGl0IGRvZXNuXCd0IHdvcmsgaW4gYWxsIGJyb3dzZXJzLlxuXG4qKldhcm5pbmc6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYXMgaXQgaGFzIGJlZW4gZGVwcmVjYXRlZDogdGhlIFtgPG9sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vbCAiVGhlIEhUTUwgPG9sPiBlbGVtZW50IHJlcHJlc2VudHMgYW4gb3JkZXJlZCBsaXN0IG9mIGl0ZW1zLCB0eXBpY2FsbHkgcmVuZGVyZWQgYXMgYSBudW1iZXJlZCBsaXN0LiIpIGVsZW1lbnQgc2hvdWxkIGJlIHN0eWxlZCB1c2luZyBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykuIFRvIGdpdmUgYW4gZWZmZWN0IHNpbWlsYXIgdG8gdGhlIGBjb21wYWN0YCBhdHRyaWJ1dGUsIHRoZSBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykgcHJvcGVydHkgW2BsaW5lLWhlaWdodGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9saW5lLWhlaWdodCAiVGhlIGxpbmUtaGVpZ2h0IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBhbW91bnQgb2Ygc3BhY2UgdXNlZCBmb3IgbGluZXMsIHN1Y2ggYXMgaW4gdGV4dC4gT24gYmxvY2stbGV2ZWwgZWxlbWVudHMsIGl0IHNwZWNpZmllcyB0aGUgbWluaW11bSBoZWlnaHQgb2YgbGluZSBib3hlcyB3aXRoaW4gdGhlIGVsZW1lbnQuIE9uIG5vbi1yZXBsYWNlZCBpbmxpbmUgZWxlbWVudHMsIGl0IHNwZWNpZmllcyB0aGUgaGVpZ2h0IHRoYXQgaXMgdXNlZCB0byBjYWxjdWxhdGUgbGluZSBib3ggaGVpZ2h0LiIpIGNhbiBiZSB1c2VkIHdpdGggYSB2YWx1ZSBvZiBgODAlYC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29sIn1dfSx7bmFtZToidWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1bCBlbGVtZW50IHJlcHJlc2VudHMgYSBsaXN0IG9mIGl0ZW1zLCB3aGVyZSB0aGUgb3JkZXIgb2YgdGhlIGl0ZW1zIGlzIG5vdCBpbXBvcnRhbnQg4oCUIHRoYXQgaXMsIHdoZXJlIGNoYW5naW5nIHRoZSBvcmRlciB3b3VsZCBub3QgbWF0ZXJpYWxseSBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjb21wYWN0IixkZXNjcmlwdGlvbjonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBoaW50cyB0aGF0IHRoZSBsaXN0IHNob3VsZCBiZSByZW5kZXJlZCBpbiBhIGNvbXBhY3Qgc3R5bGUuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIGF0dHJpYnV0ZSBkZXBlbmRzIG9uIHRoZSB1c2VyIGFnZW50IGFuZCBpdCBkb2VzblwndCB3b3JrIGluIGFsbCBicm93c2Vycy5cblxuKipVc2FnZSBub3RlOsKgKipEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlLCBhcyBpdCBoYXMgYmVlbiBkZXByZWNhdGVkOiB0aGUgW2A8dWw+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3VsICJUaGUgSFRNTCA8dWw+IGVsZW1lbnQgcmVwcmVzZW50cyBhbiB1bm9yZGVyZWQgbGlzdCBvZiBpdGVtcywgdHlwaWNhbGx5IHJlbmRlcmVkIGFzIGEgYnVsbGV0ZWQgbGlzdC4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpLiBUbyBnaXZlIGEgc2ltaWxhciBlZmZlY3QgYXMgdGhlIGBjb21wYWN0YCBhdHRyaWJ1dGUsIHRoZSBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykgcHJvcGVydHkgW2xpbmUtaGVpZ2h0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9saW5lLWhlaWdodCkgY2FuIGJlIHVzZWQgd2l0aCBhIHZhbHVlIG9mIGA4MCVgLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdWwifV19LHtuYW1lOiJsaSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxpIGVsZW1lbnQgcmVwcmVzZW50cyBhIGxpc3QgaXRlbS4gSWYgaXRzIHBhcmVudCBlbGVtZW50IGlzIGFuIG9sLCB1bCwgb3IgbWVudSBlbGVtZW50LCB0aGVuIHRoZSBlbGVtZW50IGlzIGFuIGl0ZW0gb2YgdGhlIHBhcmVudCBlbGVtZW50J3MgbGlzdCwgYXMgZGVmaW5lZCBmb3IgdGhvc2UgZWxlbWVudHMuIE90aGVyd2lzZSwgdGhlIGxpc3QgaXRlbSBoYXMgbm8gZGVmaW5lZCBsaXN0LXJlbGF0ZWQgcmVsYXRpb25zaGlwIHRvIGFueSBvdGhlciBsaSBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJ2YWx1ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBpbnRlZ2VyIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgb3JkaW5hbCB2YWx1ZSBvZiB0aGUgbGlzdCBpdGVtIGFzIGRlZmluZWQgYnkgdGhlIFtgPG9sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vbCAiVGhlIEhUTUwgPG9sPiBlbGVtZW50IHJlcHJlc2VudHMgYW4gb3JkZXJlZCBsaXN0IG9mIGl0ZW1zLCB0eXBpY2FsbHkgcmVuZGVyZWQgYXMgYSBudW1iZXJlZCBsaXN0LiIpIGVsZW1lbnQuIFRoZSBvbmx5IGFsbG93ZWQgdmFsdWUgZm9yIHRoaXMgYXR0cmlidXRlIGlzIGEgbnVtYmVyLCBldmVuIGlmIHRoZSBsaXN0IGlzIGRpc3BsYXllZCB3aXRoIFJvbWFuIG51bWVyYWxzIG9yIGxldHRlcnMuIExpc3QgaXRlbXMgdGhhdCBmb2xsb3cgdGhpcyBvbmUgY29udGludWUgbnVtYmVyaW5nIGZyb20gdGhlIHZhbHVlIHNldC4gVGhlICoqdmFsdWUqKiBhdHRyaWJ1dGUgaGFzIG5vIG1lYW5pbmcgZm9yIHVub3JkZXJlZCBsaXN0cyAoW2A8dWw+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3VsICJUaGUgSFRNTCA8dWw+IGVsZW1lbnQgcmVwcmVzZW50cyBhbiB1bm9yZGVyZWQgbGlzdCBvZiBpdGVtcywgdHlwaWNhbGx5IHJlbmRlcmVkIGFzIGEgYnVsbGV0ZWQgbGlzdC4iKSkgb3IgZm9yIG1lbnVzIChbYDxtZW51PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZW51ICJUaGUgSFRNTCA8bWVudT4gZWxlbWVudCByZXByZXNlbnRzIGEgZ3JvdXAgb2YgY29tbWFuZHMgdGhhdCBhIHVzZXIgY2FuIHBlcmZvcm0gb3IgYWN0aXZhdGUuIFRoaXMgaW5jbHVkZXMgYm90aCBsaXN0IG1lbnVzLCB3aGljaCBtaWdodCBhcHBlYXIgYWNyb3NzIHRoZSB0b3Agb2YgYSBzY3JlZW4sIGFzIHdlbGwgYXMgY29udGV4dCBtZW51cywgc3VjaCBhcyB0aG9zZSB0aGF0IG1pZ2h0IGFwcGVhciB1bmRlcm5lYXRoIGEgYnV0dG9uIGFmdGVyIGl0IGhhcyBiZWVuIGNsaWNrZWQuIikpLlxuXG4qKk5vdGUqKjogVGhpcyBhdHRyaWJ1dGUgd2FzIGRlcHJlY2F0ZWQgaW4gSFRNTDQsIGJ1dCByZWludHJvZHVjZWQgaW4gSFRNTDUuXG5cbioqTm90ZToqKiBQcmlvciB0byBHZWNrb8KgOS4wLCBuZWdhdGl2ZSB2YWx1ZXMgd2VyZSBpbmNvcnJlY3RseSBjb252ZXJ0ZWQgdG8gMC4gU3RhcnRpbmcgaW4gR2Vja2/CoDkuMCBhbGwgaW50ZWdlciB2YWx1ZXMgYXJlIGNvcnJlY3RseSBwYXJzZWQuJ319LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjonVGhpcyBjaGFyYWN0ZXIgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgbnVtYmVyaW5nIHR5cGU6XG5cbiogICBgYWA6IGxvd2VyY2FzZSBsZXR0ZXJzXG4qICAgYEFgOiB1cHBlcmNhc2UgbGV0dGVyc1xuKiAgIGBpYDogbG93ZXJjYXNlIFJvbWFuIG51bWVyYWxzXG4qICAgYElgOiB1cHBlcmNhc2UgUm9tYW4gbnVtZXJhbHNcbiogICBgMWA6IG51bWJlcnNcblxuVGhpcyB0eXBlIG92ZXJyaWRlcyB0aGUgb25lIHVzZWQgYnkgaXRzIHBhcmVudCBbYDxvbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb2wgIlRoZSBIVE1MIDxvbD4gZWxlbWVudCByZXByZXNlbnRzIGFuIG9yZGVyZWQgbGlzdCBvZiBpdGVtcywgdHlwaWNhbGx5IHJlbmRlcmVkIGFzIGEgbnVtYmVyZWQgbGlzdC4iKSBlbGVtZW50LCBpZiBhbnkuXG5cbioqVXNhZ2Ugbm90ZToqKiBUaGlzIGF0dHJpYnV0ZSBoYXMgYmVlbiBkZXByZWNhdGVkOiB1c2UgdGhlIENTUyBbYGxpc3Qtc3R5bGUtdHlwZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9saXN0LXN0eWxlLXR5cGUgIlRoZSBsaXN0LXN0eWxlLXR5cGUgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmtlciAoc3VjaCBhcyBhIGRpc2MsIGNoYXJhY3Rlciwgb3IgY3VzdG9tIGNvdW50ZXIgc3R5bGUpIG9mIGEgbGlzdCBpdGVtIGVsZW1lbnQuIikgcHJvcGVydHkgaW5zdGVhZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xpIn1dfSx7bmFtZToiZGwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkbCBlbGVtZW50IHJlcHJlc2VudHMgYW4gYXNzb2NpYXRpb24gbGlzdCBjb25zaXN0aW5nIG9mIHplcm8gb3IgbW9yZSBuYW1lLXZhbHVlIGdyb3VwcyAoYSBkZXNjcmlwdGlvbiBsaXN0KS4gQSBuYW1lLXZhbHVlIGdyb3VwIGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlIG5hbWVzIChkdCBlbGVtZW50cykgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgdmFsdWVzIChkZCBlbGVtZW50cyksIGlnbm9yaW5nIGFueSBub2RlcyBvdGhlciB0aGFuIGR0IGFuZCBkZCBlbGVtZW50cy4gV2l0aGluIGEgc2luZ2xlIGRsIGVsZW1lbnQsIHRoZXJlIHNob3VsZCBub3QgYmUgbW9yZSB0aGFuIG9uZSBkdCBlbGVtZW50IGZvciBlYWNoIG5hbWUuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGwifV19LHtuYW1lOiJkdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGR0IGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgdGVybSwgb3IgbmFtZSwgcGFydCBvZiBhIHRlcm0tZGVzY3JpcHRpb24gZ3JvdXAgaW4gYSBkZXNjcmlwdGlvbiBsaXN0IChkbCBlbGVtZW50KS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kdCJ9XX0se25hbWU6ImRkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGQgZWxlbWVudCByZXByZXNlbnRzIHRoZSBkZXNjcmlwdGlvbiwgZGVmaW5pdGlvbiwgb3IgdmFsdWUsIHBhcnQgb2YgYSB0ZXJtLWRlc2NyaXB0aW9uIGdyb3VwIGluIGEgZGVzY3JpcHRpb24gbGlzdCAoZGwgZWxlbWVudCkuIn0sYXR0cmlidXRlczpbe25hbWU6Im5vd3JhcCIsZGVzY3JpcHRpb246IklmIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gYHllc2AsIHRoZSBkZWZpbml0aW9uIHRleHQgd2lsbCBub3Qgd3JhcC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYG5vYC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RkIn1dfSx7bmFtZToiZmlndXJlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZmlndXJlIGVsZW1lbnQgcmVwcmVzZW50cyBzb21lIGZsb3cgY29udGVudCwgb3B0aW9uYWxseSB3aXRoIGEgY2FwdGlvbiwgdGhhdCBpcyBzZWxmLWNvbnRhaW5lZCAobGlrZSBhIGNvbXBsZXRlIHNlbnRlbmNlKSBhbmQgaXMgdHlwaWNhbGx5IHJlZmVyZW5jZWQgYXMgYSBzaW5nbGUgdW5pdCBmcm9tIHRoZSBtYWluIGZsb3cgb2YgdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ZpZ3VyZSJ9XX0se25hbWU6ImZpZ2NhcHRpb24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBmaWdjYXB0aW9uIGVsZW1lbnQgcmVwcmVzZW50cyBhIGNhcHRpb24gb3IgbGVnZW5kIGZvciB0aGUgcmVzdCBvZiB0aGUgY29udGVudHMgb2YgdGhlIGZpZ2NhcHRpb24gZWxlbWVudCdzIHBhcmVudCBmaWd1cmUgZWxlbWVudCwgaWYgYW55LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ZpZ2NhcHRpb24ifV19LHtuYW1lOiJtYWluIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWFpbiBlbGVtZW50IHJlcHJlc2VudHMgdGhlIG1haW4gY29udGVudCBvZiB0aGUgYm9keSBvZiBhIGRvY3VtZW50IG9yIGFwcGxpY2F0aW9uLiBUaGUgbWFpbiBjb250ZW50IGFyZWEgY29uc2lzdHMgb2YgY29udGVudCB0aGF0IGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gb3IgZXhwYW5kcyB1cG9uIHRoZSBjZW50cmFsIHRvcGljIG9mIGEgZG9jdW1lbnQgb3IgY2VudHJhbCBmdW5jdGlvbmFsaXR5IG9mIGFuIGFwcGxpY2F0aW9uLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21haW4ifV19LHtuYW1lOiJkaXYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkaXYgZWxlbWVudCBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGF0IGFsbC4gSXQgcmVwcmVzZW50cyBpdHMgY2hpbGRyZW4uIEl0IGNhbiBiZSB1c2VkIHdpdGggdGhlIGNsYXNzLCBsYW5nLCBhbmQgdGl0bGUgYXR0cmlidXRlcyB0byBtYXJrIHVwIHNlbWFudGljcyBjb21tb24gdG8gYSBncm91cCBvZiBjb25zZWN1dGl2ZSBlbGVtZW50cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kaXYifV19LHtuYW1lOiJhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGUgYSBlbGVtZW50IGhhcyBhbiBocmVmIGF0dHJpYnV0ZSwgdGhlbiBpdCByZXByZXNlbnRzIGEgaHlwZXJsaW5rIChhIGh5cGVydGV4dCBhbmNob3IpIGxhYmVsZWQgYnkgaXRzIGNvbnRlbnRzLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJocmVmIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJDb250YWlucyBhIFVSTCBvciBhIFVSTCBmcmFnbWVudCB0aGF0IHRoZSBoeXBlcmxpbmsgcG9pbnRzIHRvLiJ9fSx7bmFtZToidGFyZ2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidTcGVjaWZpZXMgd2hlcmUgdG8gZGlzcGxheSB0aGUgbGlua2VkIFVSTC4gSXQgaXMgYSBuYW1lIG9mLCBvciBrZXl3b3JkIGZvciwgYSBfYnJvd3NpbmcgY29udGV4dF86IGEgdGFiLCB3aW5kb3csIG9yIGA8aWZyYW1lPmAuIFRoZSBmb2xsb3dpbmcga2V5d29yZHMgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOlxuXG4qICAgYF9zZWxmYDogTG9hZCB0aGUgVVJMIGludG8gdGhlIHNhbWUgYnJvd3NpbmcgY29udGV4dCBhcyB0aGUgY3VycmVudCBvbmUuIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuXG4qICAgYF9ibGFua2A6IExvYWQgdGhlIFVSTCBpbnRvIGEgbmV3IGJyb3dzaW5nIGNvbnRleHQuIFRoaXMgaXMgdXN1YWxseSBhIHRhYiwgYnV0IHVzZXJzIGNhbiBjb25maWd1cmUgYnJvd3NlcnMgdG8gdXNlIG5ldyB3aW5kb3dzIGluc3RlYWQuXG4qICAgYF9wYXJlbnRgOiBMb2FkIHRoZSBVUkwgaW50byB0aGUgcGFyZW50IGJyb3dzaW5nIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgb25lLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cbiogICBgX3RvcGA6IExvYWQgdGhlIFVSTCBpbnRvIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCAodGhhdCBpcywgdGhlICJoaWdoZXN0IiBicm93c2luZyBjb250ZXh0IHRoYXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgb25lLCBhbmQgaGFzIG5vIHBhcmVudCkuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuXG4qKk5vdGU6KiogV2hlbiB1c2luZyBgdGFyZ2V0YCwgY29uc2lkZXIgYWRkaW5nIGByZWw9Im5vcmVmZXJyZXIiYCB0byBhdm9pZCBleHBsb2l0YXRpb24gb2YgdGhlIGB3aW5kb3cub3BlbmVyYCBBUEkuXG5cbioqTm90ZToqKiBMaW5raW5nIHRvIGFub3RoZXIgcGFnZSB1c2luZyBgdGFyZ2V0PSJfYmxhbmsiYCB3aWxsIHJ1biB0aGUgbmV3IHBhZ2Ugb24gdGhlIHNhbWUgcHJvY2VzcyBhcyB5b3VyIHBhZ2UuIElmIHRoZSBuZXcgcGFnZSBpcyBleGVjdXRpbmcgZXhwZW5zaXZlIEpTLCB5b3VyIHBhZ2VcJ3MgcGVyZm9ybWFuY2UgbWF5IHN1ZmZlci4gVG8gYXZvaWQgdGhpcyB1c2UgYHJlbD0ibm9vcGVuZXIiYC4nfX0se25hbWU6ImRvd25sb2FkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpbnN0cnVjdHMgYnJvd3NlcnMgdG8gZG93bmxvYWQgYSBVUkwgaW5zdGVhZCBvZiBuYXZpZ2F0aW5nIHRvIGl0LCBzbyB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIHNhdmUgaXQgYXMgYSBsb2NhbCBmaWxlLiBJZiB0aGUgYXR0cmlidXRlIGhhcyBhIHZhbHVlLCBpdCBpcyB1c2VkIGFzIHRoZSBwcmUtZmlsbGVkIGZpbGUgbmFtZSBpbiB0aGUgU2F2ZSBwcm9tcHQgKHRoZSB1c2VyIGNhbiBzdGlsbCBjaGFuZ2UgdGhlIGZpbGUgbmFtZSBpZiB0aGV5IHdhbnQpLiBUaGVyZSBhcmUgbm8gcmVzdHJpY3Rpb25zIG9uIGFsbG93ZWQgdmFsdWVzLCB0aG91Z2ggYC9gIGFuZCBgXFxgIGFyZSBjb252ZXJ0ZWQgdG8gdW5kZXJzY29yZXMuIE1vc3QgZmlsZSBzeXN0ZW1zIGxpbWl0IHNvbWUgcHVuY3R1YXRpb24gaW4gZmlsZSBuYW1lcywgYW5kIGJyb3dzZXJzIHdpbGwgYWRqdXN0IHRoZSBzdWdnZXN0ZWQgbmFtZSBhY2NvcmRpbmdseS5cblxuKipOb3RlczoqKlxuXG4qICAgVGhpcyBhdHRyaWJ1dGUgb25seSB3b3JrcyBmb3IgW3NhbWUtb3JpZ2luIFVSTHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1NhbWUtb3JpZ2luX3BvbGljeSkuXG4qICAgQWx0aG91Z2ggSFRUUChzKSBVUkxzIG5lZWQgdG8gYmUgaW4gdGhlIHNhbWUtb3JpZ2luLCBbYGJsb2I6YCBVUkxzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVVJMLmNyZWF0ZU9iamVjdFVSTCkgYW5kIFtgZGF0YTpgIFVSTHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQmFzaWNzX29mX0hUVFAvRGF0YV9VUklzKSBhcmUgYWxsb3dlZCBzbyB0aGF0IGNvbnRlbnQgZ2VuZXJhdGVkIGJ5IEphdmFTY3JpcHQsIHN1Y2ggYXMgcGljdHVyZXMgY3JlYXRlZCBpbiBhbiBpbWFnZS1lZGl0b3IgV2ViIGFwcCwgY2FuIGJlIGRvd25sb2FkZWQuXG4qICAgSWYgdGhlIEhUVFAgaGVhZGVyIFtgQ29udGVudC1EaXNwb3NpdGlvbjpgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQ29udGVudC1EaXNwb3NpdGlvbikgZ2l2ZXMgYSBkaWZmZXJlbnQgZmlsZW5hbWUgdGhhbiB0aGlzIGF0dHJpYnV0ZSwgdGhlIEhUVFAgaGVhZGVyIHRha2VzIHByaW9yaXR5IG92ZXIgdGhpcyBhdHRyaWJ1dGUuXG4qICAgSWYgYENvbnRlbnQtRGlzcG9zaXRpb246YCBpcyBzZXQgdG8gYGlubGluZWAsIEZpcmVmb3ggcHJpb3JpdGl6ZXMgYENvbnRlbnQtRGlzcG9zaXRpb25gLCBsaWtlIHRoZSBmaWxlbmFtZSBjYXNlLCB3aGlsZSBDaHJvbWUgcHJpb3JpdGl6ZXMgdGhlIGBkb3dubG9hZGAgYXR0cmlidXRlLiJ9fSx7bmFtZToicGluZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQ29udGFpbnMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBVUkxzIHRvIHdoaWNoLCB3aGVuIHRoZSBoeXBlcmxpbmsgaXMgZm9sbG93ZWQsIFtgUE9TVGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvTWV0aG9kcy9QT1NUICJUaGUgSFRUUCBQT1NUIG1ldGhvZCBzZW5kcyBkYXRhIHRvIHRoZSBzZXJ2ZXIuIFRoZSB0eXBlIG9mIHRoZSBib2R5IG9mIHRoZSByZXF1ZXN0IGlzIGluZGljYXRlZCBieSB0aGUgQ29udGVudC1UeXBlIGhlYWRlci4iKSByZXF1ZXN0cyB3aXRoIHRoZSBib2R5IGBQSU5HYCB3aWxsIGJlIHNlbnQgYnkgdGhlIGJyb3dzZXIgKGluIHRoZSBiYWNrZ3JvdW5kKS4gVHlwaWNhbGx5IHVzZWQgZm9yIHRyYWNraW5nLid9fSx7bmFtZToicmVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJTcGVjaWZpZXMgdGhlIHJlbGF0aW9uc2hpcCBvZiB0aGUgdGFyZ2V0IG9iamVjdCB0byB0aGUgbGluayBvYmplY3QuIFRoZSB2YWx1ZSBpcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIFtsaW5rIHR5cGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0xpbmtfdHlwZXMpLiJ9fSx7bmFtZToiaHJlZmxhbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgaHVtYW4gbGFuZ3VhZ2Ugb2YgdGhlIGxpbmtlZCByZXNvdXJjZS4gSXQgaXMgcHVyZWx5IGFkdmlzb3J5LCB3aXRoIG5vIGJ1aWx0LWluIGZ1bmN0aW9uYWxpdHkuIEFsbG93ZWQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IFtCQ1A0N10oaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL2JjcC9iY3A0Ny50eHQgIlRhZ3MgZm9yIElkZW50aWZ5aW5nIExhbmd1YWdlcyIpLid9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonU3BlY2lmaWVzIHRoZSBtZWRpYSB0eXBlIGluIHRoZSBmb3JtIG9mIGEgW01JTUUgdHlwZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9NSU1FX3R5cGUgIk1JTUUgdHlwZTogQcKgTUlNRSB0eXBlwqAobm93IHByb3Blcmx5IGNhbGxlZCAibWVkaWEgdHlwZSIsIGJ1dMKgYWxzbyBzb21ldGltZXMgImNvbnRlbnQgdHlwZSIpIGlzIGEgc3RyaW5nIHNlbnQgYWxvbmfCoHdpdGggYSBmaWxlIGluZGljYXRpbmcgdGhlIHR5cGUgb2YgdGhlIGZpbGUgKGRlc2NyaWJpbmcgdGhlIGNvbnRlbnQgZm9ybWF0LCBmb3IgZXhhbXBsZSwgYSBzb3VuZCBmaWxlIG1pZ2h0IGJlIGxhYmVsZWTCoGF1ZGlvL29nZywgb3IgYW4gaW1hZ2UgZmlsZcKgaW1hZ2UvcG5nKS4iKSBmb3IgdGhlIGxpbmtlZCBVUkwuIEl0IGlzIHB1cmVseSBhZHZpc29yeSwgd2l0aCBubyBidWlsdC1pbiBmdW5jdGlvbmFsaXR5Lid9fSx7bmFtZToicmVmZXJyZXJwb2xpY3kiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgd2hpY2ggW3JlZmVycmVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlcikgdG8gc2VuZCB3aGVuIGZldGNoaW5nIHRoZSBVUkw6XG5cbiogICBgJ25vLXJlZmVycmVyJ2AgbWVhbnMgdGhlIGBSZWZlcmVyOmAgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQuXG4qICAgYCduby1yZWZlcnJlci13aGVuLWRvd25ncmFkZSdgIG1lYW5zIG5vIGBSZWZlcmVyOmAgaGVhZGVyIHdpbGwgYmUgc2VudCB3aGVuIG5hdmlnYXRpbmcgdG8gYW4gb3JpZ2luIHdpdGhvdXQgSFRUUFMuIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuXG4qICAgYCdvcmlnaW4nYCBtZWFucyB0aGUgcmVmZXJyZXIgd2lsbCBiZSB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9PcmlnaW4pIG9mIHRoZSBwYWdlLCBub3QgaW5jbHVkaW5nIGluZm9ybWF0aW9uIGFmdGVyIHRoZSBkb21haW4uXG4qICAgYCdvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4nYCBtZWFuaW5nIHRoYXQgbmF2aWdhdGlvbnMgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QgYW5kIHRoZSBwb3J0LCB3aGlsZSBuYXZpZ2F0aW9ucyBvbiB0aGUgc2FtZSBvcmlnaW4gd2lsbCBpbmNsdWRlIHRoZSByZWZlcnJlcidzIHBhdGguXG4qICAgYCdzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luJ2BcbiogICBgJ3Vuc2FmZS11cmwnYCBtZWFucyB0aGUgcmVmZXJyZXIgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW4gYW5kIHBhdGgsIGJ1dCBub3QgdGhlIGZyYWdtZW50LCBwYXNzd29yZCwgb3IgdXNlcm5hbWUuIFRoaXMgaXMgdW5zYWZlIGJlY2F1c2UgaXQgY2FuIGxlYWsgZGF0YSBmcm9tIHNlY3VyZSBVUkxzIHRvIGluc2VjdXJlIG9uZXMuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hIn1dfSx7bmFtZToiZW0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBlbSBlbGVtZW50IHJlcHJlc2VudHMgc3RyZXNzIGVtcGhhc2lzIG9mIGl0cyBjb250ZW50cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9lbSJ9XX0se25hbWU6InN0cm9uZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHN0cm9uZyBlbGVtZW50IHJlcHJlc2VudHMgc3Ryb25nIGltcG9ydGFuY2UsIHNlcmlvdXNuZXNzLCBvciB1cmdlbmN5IGZvciBpdHMgY29udGVudHMuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3Ryb25nIn1dfSx7bmFtZToic21hbGwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzbWFsbCBlbGVtZW50IHJlcHJlc2VudHMgc2lkZSBjb21tZW50cyBzdWNoIGFzIHNtYWxsIHByaW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NtYWxsIn1dfSx7bmFtZToicyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHMgZWxlbWVudCByZXByZXNlbnRzIGNvbnRlbnRzIHRoYXQgYXJlIG5vIGxvbmdlciBhY2N1cmF0ZSBvciBubyBsb25nZXIgcmVsZXZhbnQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcyJ9XX0se25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjaXRlIGVsZW1lbnQgcmVwcmVzZW50cyBhIHJlZmVyZW5jZSB0byBhIGNyZWF0aXZlIHdvcmsuIEl0IG11c3QgaW5jbHVkZSB0aGUgdGl0bGUgb2YgdGhlIHdvcmsgb3IgdGhlIG5hbWUgb2YgdGhlIGF1dGhvcihwZXJzb24sIHBlb3BsZSBvciBvcmdhbml6YXRpb24pIG9yIGFuIFVSTCByZWZlcmVuY2UsIG9yIGEgcmVmZXJlbmNlIGluIGFiYnJldmlhdGVkIGZvcm0gYXMgcGVyIHRoZSBjb252ZW50aW9ucyB1c2VkIGZvciB0aGUgYWRkaXRpb24gb2YgY2l0YXRpb24gbWV0YWRhdGEuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2l0ZSJ9XX0se25hbWU6InEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBxIGVsZW1lbnQgcmVwcmVzZW50cyBzb21lIHBocmFzaW5nIGNvbnRlbnQgcXVvdGVkIGZyb20gYW5vdGhlciBzb3VyY2UuIn0sYXR0cmlidXRlczpbe25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBpcyBhIFVSTCB0aGF0IGRlc2lnbmF0ZXMgYSBzb3VyY2UgZG9jdW1lbnQgb3IgbWVzc2FnZSBmb3IgdGhlIGluZm9ybWF0aW9uIHF1b3RlZC4gVGhpcyBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgdG8gcG9pbnQgdG8gaW5mb3JtYXRpb24gZXhwbGFpbmluZyB0aGUgY29udGV4dCBvciB0aGUgcmVmZXJlbmNlIGZvciB0aGUgcXVvdGUuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcSJ9XX0se25hbWU6ImRmbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRmbiBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGRlZmluaW5nIGluc3RhbmNlIG9mIGEgdGVybS4gVGhlIHBhcmFncmFwaCwgZGVzY3JpcHRpb24gbGlzdCBncm91cCwgb3Igc2VjdGlvbiB0aGF0IGlzIHRoZSBuZWFyZXN0IGFuY2VzdG9yIG9mIHRoZSBkZm4gZWxlbWVudCBtdXN0IGFsc28gY29udGFpbiB0aGUgZGVmaW5pdGlvbihzKSBmb3IgdGhlIHRlcm0gZ2l2ZW4gYnkgdGhlIGRmbiBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RmbiJ9XX0se25hbWU6ImFiYnIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBhYmJyIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBhYmJyZXZpYXRpb24gb3IgYWNyb255bSwgb3B0aW9uYWxseSB3aXRoIGl0cyBleHBhbnNpb24uIFRoZSB0aXRsZSBhdHRyaWJ1dGUgbWF5IGJlIHVzZWQgdG8gcHJvdmlkZSBhbiBleHBhbnNpb24gb2YgdGhlIGFiYnJldmlhdGlvbi4gVGhlIGF0dHJpYnV0ZSwgaWYgc3BlY2lmaWVkLCBtdXN0IGNvbnRhaW4gYW4gZXhwYW5zaW9uIG9mIHRoZSBhYmJyZXZpYXRpb24sIGFuZCBub3RoaW5nIGVsc2UuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYWJiciJ9XX0se25hbWU6InJ1YnkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBydWJ5IGVsZW1lbnQgYWxsb3dzIG9uZSBvciBtb3JlIHNwYW5zIG9mIHBocmFzaW5nIGNvbnRlbnQgdG8gYmUgbWFya2VkIHdpdGggcnVieSBhbm5vdGF0aW9ucy4gUnVieSBhbm5vdGF0aW9ucyBhcmUgc2hvcnQgcnVucyBvZiB0ZXh0IHByZXNlbnRlZCBhbG9uZ3NpZGUgYmFzZSB0ZXh0LCBwcmltYXJpbHkgdXNlZCBpbiBFYXN0IEFzaWFuIHR5cG9ncmFwaHkgYXMgYSBndWlkZSBmb3IgcHJvbnVuY2lhdGlvbiBvciB0byBpbmNsdWRlIG90aGVyIGFubm90YXRpb25zLiBJbiBKYXBhbmVzZSwgdGhpcyBmb3JtIG9mIHR5cG9ncmFwaHkgaXMgYWxzbyBrbm93biBhcyBmdXJpZ2FuYS4gUnVieSB0ZXh0IGNhbiBhcHBlYXIgb24gZWl0aGVyIHNpZGUsIGFuZCBzb21ldGltZXMgYm90aCBzaWRlcywgb2YgdGhlIGJhc2UgdGV4dCwgYW5kIGl0IGlzIHBvc3NpYmxlIHRvIGNvbnRyb2wgaXRzIHBvc2l0aW9uIHVzaW5nIENTUy4gQSBtb3JlIGNvbXBsZXRlIGludHJvZHVjdGlvbiB0byBydWJ5IGNhbiBiZSBmb3VuZCBpbiB0aGUgVXNlIENhc2VzICYgRXhwbG9yYXRvcnkgQXBwcm9hY2hlcyBmb3IgUnVieSBNYXJrdXAgZG9jdW1lbnQgYXMgd2VsbCBhcyBpbiBDU1MgUnVieSBNb2R1bGUgTGV2ZWwgMS4gW1JVQlktVUNdIFtDU1NSVUJZXSJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3J1YnkifV19LHtuYW1lOiJyYiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHJiIGVsZW1lbnQgbWFya3MgdGhlIGJhc2UgdGV4dCBjb21wb25lbnQgb2YgYSBydWJ5IGFubm90YXRpb24uIFdoZW4gaXQgaXMgdGhlIGNoaWxkIG9mIGEgcnVieSBlbGVtZW50LCBpdCBkb2Vzbid0IHJlcHJlc2VudCBhbnl0aGluZyBpdHNlbGYsIGJ1dCBpdHMgcGFyZW50IHJ1YnkgZWxlbWVudCB1c2VzIGl0IGFzIHBhcnQgb2YgZGV0ZXJtaW5pbmcgd2hhdCBpdCByZXByZXNlbnRzLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3JiIn1dfSx7bmFtZToicnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBydCBlbGVtZW50IG1hcmtzIHRoZSBydWJ5IHRleHQgY29tcG9uZW50IG9mIGEgcnVieSBhbm5vdGF0aW9uLiBXaGVuIGl0IGlzIHRoZSBjaGlsZCBvZiBhIHJ1YnkgZWxlbWVudCBvciBvZiBhbiBydGMgZWxlbWVudCB0aGF0IGlzIGl0c2VsZiB0aGUgY2hpbGQgb2YgYSBydWJ5IGVsZW1lbnQsIGl0IGRvZXNuJ3QgcmVwcmVzZW50IGFueXRoaW5nIGl0c2VsZiwgYnV0IGl0cyBhbmNlc3RvciBydWJ5IGVsZW1lbnQgdXNlcyBpdCBhcyBwYXJ0IG9mIGRldGVybWluaW5nIHdoYXQgaXQgcmVwcmVzZW50cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ydCJ9XX0se25hbWU6InJwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcnAgZWxlbWVudCBpcyB1c2VkIHRvIHByb3ZpZGUgZmFsbGJhY2sgdGV4dCB0byBiZSBzaG93biBieSB1c2VyIGFnZW50cyB0aGF0IGRvbid0IHN1cHBvcnQgcnVieSBhbm5vdGF0aW9ucy4gT25lIHdpZGVzcHJlYWQgY29udmVudGlvbiBpcyB0byBwcm92aWRlIHBhcmVudGhlc2VzIGFyb3VuZCB0aGUgcnVieSB0ZXh0IGNvbXBvbmVudCBvZiBhIHJ1YnkgYW5ub3RhdGlvbi4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ycCJ9XX0se25hbWU6InRpbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0aW1lIGVsZW1lbnQgcmVwcmVzZW50cyBpdHMgY29udGVudHMsIGFsb25nIHdpdGggYSBtYWNoaW5lLXJlYWRhYmxlIGZvcm0gb2YgdGhvc2UgY29udGVudHMgaW4gdGhlIGRhdGV0aW1lIGF0dHJpYnV0ZS4gVGhlIGtpbmQgb2YgY29udGVudCBpcyBsaW1pdGVkIHRvIHZhcmlvdXMga2luZHMgb2YgZGF0ZXMsIHRpbWVzLCB0aW1lLXpvbmUgb2Zmc2V0cywgYW5kIGR1cmF0aW9ucywgYXMgZGVzY3JpYmVkIGJlbG93LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkYXRldGltZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSB0aW1lIGFuZC9vciBkYXRlIG9mIHRoZSBlbGVtZW50IGFuZCBtdXN0IGJlIGluIG9uZSBvZiB0aGUgZm9ybWF0cyBkZXNjcmliZWQgYmVsb3cuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGltZSJ9XX0se25hbWU6ImNvZGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjb2RlIGVsZW1lbnQgcmVwcmVzZW50cyBhIGZyYWdtZW50IG9mIGNvbXB1dGVyIGNvZGUuIFRoaXMgY291bGQgYmUgYW4gWE1MIGVsZW1lbnQgbmFtZSwgYSBmaWxlIG5hbWUsIGEgY29tcHV0ZXIgcHJvZ3JhbSwgb3IgYW55IG90aGVyIHN0cmluZyB0aGF0IGEgY29tcHV0ZXIgd291bGQgcmVjb2duaXplLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvZGUifV19LHtuYW1lOiJ2YXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB2YXIgZWxlbWVudCByZXByZXNlbnRzIGEgdmFyaWFibGUuIFRoaXMgY291bGQgYmUgYW4gYWN0dWFsIHZhcmlhYmxlIGluIGEgbWF0aGVtYXRpY2FsIGV4cHJlc3Npb24gb3IgcHJvZ3JhbW1pbmcgY29udGV4dCwgYW4gaWRlbnRpZmllciByZXByZXNlbnRpbmcgYSBjb25zdGFudCwgYSBzeW1ib2wgaWRlbnRpZnlpbmcgYSBwaHlzaWNhbCBxdWFudGl0eSwgYSBmdW5jdGlvbiBwYXJhbWV0ZXIsIG9yIGp1c3QgYmUgYSB0ZXJtIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBpbiBwcm9zZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC92YXIifV19LHtuYW1lOiJzYW1wIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc2FtcCBlbGVtZW50IHJlcHJlc2VudHMgc2FtcGxlIG9yIHF1b3RlZCBvdXRwdXQgZnJvbSBhbm90aGVyIHByb2dyYW0gb3IgY29tcHV0aW5nIHN5c3RlbS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zYW1wIn1dfSx7bmFtZToia2JkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUga2JkIGVsZW1lbnQgcmVwcmVzZW50cyB1c2VyIGlucHV0ICh0eXBpY2FsbHkga2V5Ym9hcmQgaW5wdXQsIGFsdGhvdWdoIGl0IG1heSBhbHNvIGJlIHVzZWQgdG8gcmVwcmVzZW50IG90aGVyIGlucHV0LCBzdWNoIGFzIHZvaWNlIGNvbW1hbmRzKS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9rYmQifV19LHtuYW1lOiJzdWIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzdWIgZWxlbWVudCByZXByZXNlbnRzIGEgc3Vic2NyaXB0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3N1YiJ9XX0se25hbWU6InN1cCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHN1cCBlbGVtZW50IHJlcHJlc2VudHMgYSBzdXBlcnNjcmlwdC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zdXAifV19LHtuYW1lOiJpIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaSBlbGVtZW50IHJlcHJlc2VudHMgYSBzcGFuIG9mIHRleHQgaW4gYW4gYWx0ZXJuYXRlIHZvaWNlIG9yIG1vb2QsIG9yIG90aGVyd2lzZSBvZmZzZXQgZnJvbSB0aGUgbm9ybWFsIHByb3NlIGluIGEgbWFubmVyIGluZGljYXRpbmcgYSBkaWZmZXJlbnQgcXVhbGl0eSBvZiB0ZXh0LCBzdWNoIGFzIGEgdGF4b25vbWljIGRlc2lnbmF0aW9uLCBhIHRlY2huaWNhbCB0ZXJtLCBhbiBpZGlvbWF0aWMgcGhyYXNlIGZyb20gYW5vdGhlciBsYW5ndWFnZSwgdHJhbnNsaXRlcmF0aW9uLCBhIHRob3VnaHQsIG9yIGEgc2hpcCBuYW1lIGluIFdlc3Rlcm4gdGV4dHMuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaSJ9XX0se25hbWU6ImIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNwYW4gb2YgdGV4dCB0byB3aGljaCBhdHRlbnRpb24gaXMgYmVpbmcgZHJhd24gZm9yIHV0aWxpdGFyaWFuIHB1cnBvc2VzIHdpdGhvdXQgY29udmV5aW5nIGFueSBleHRyYSBpbXBvcnRhbmNlIGFuZCB3aXRoIG5vIGltcGxpY2F0aW9uIG9mIGFuIGFsdGVybmF0ZSB2b2ljZSBvciBtb29kLCBzdWNoIGFzIGtleSB3b3JkcyBpbiBhIGRvY3VtZW50IGFic3RyYWN0LCBwcm9kdWN0IG5hbWVzIGluIGEgcmV2aWV3LCBhY3Rpb25hYmxlIHdvcmRzIGluIGludGVyYWN0aXZlIHRleHQtZHJpdmVuIHNvZnR3YXJlLCBvciBhbiBhcnRpY2xlIGxlZGUuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYiJ9XX0se25hbWU6InUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNwYW4gb2YgdGV4dCB3aXRoIGFuIHVuYXJ0aWN1bGF0ZWQsIHRob3VnaCBleHBsaWNpdGx5IHJlbmRlcmVkLCBub24tdGV4dHVhbCBhbm5vdGF0aW9uLCBzdWNoIGFzIGxhYmVsaW5nIHRoZSB0ZXh0IGFzIGJlaW5nIGEgcHJvcGVyIG5hbWUgaW4gQ2hpbmVzZSB0ZXh0IChhIENoaW5lc2UgcHJvcGVyIG5hbWUgbWFyayksIG9yIGxhYmVsaW5nIHRoZSB0ZXh0IGFzIGJlaW5nIG1pc3NwZWx0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3UifV19LHtuYW1lOiJtYXJrIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWFyayBlbGVtZW50IHJlcHJlc2VudHMgYSBydW4gb2YgdGV4dCBpbiBvbmUgZG9jdW1lbnQgbWFya2VkIG9yIGhpZ2hsaWdodGVkIGZvciByZWZlcmVuY2UgcHVycG9zZXMsIGR1ZSB0byBpdHMgcmVsZXZhbmNlIGluIGFub3RoZXIgY29udGV4dC4gV2hlbiB1c2VkIGluIGEgcXVvdGF0aW9uIG9yIG90aGVyIGJsb2NrIG9mIHRleHQgcmVmZXJyZWQgdG8gZnJvbSB0aGUgcHJvc2UsIGl0IGluZGljYXRlcyBhIGhpZ2hsaWdodCB0aGF0IHdhcyBub3Qgb3JpZ2luYWxseSBwcmVzZW50IGJ1dCB3aGljaCBoYXMgYmVlbiBhZGRlZCB0byBicmluZyB0aGUgcmVhZGVyJ3MgYXR0ZW50aW9uIHRvIGEgcGFydCBvZiB0aGUgdGV4dCB0aGF0IG1pZ2h0IG5vdCBoYXZlIGJlZW4gY29uc2lkZXJlZCBpbXBvcnRhbnQgYnkgdGhlIG9yaWdpbmFsIGF1dGhvciB3aGVuIHRoZSBibG9jayB3YXMgb3JpZ2luYWxseSB3cml0dGVuLCBidXQgd2hpY2ggaXMgbm93IHVuZGVyIHByZXZpb3VzbHkgdW5leHBlY3RlZCBzY3J1dGlueS4gV2hlbiB1c2VkIGluIHRoZSBtYWluIHByb3NlIG9mIGEgZG9jdW1lbnQsIGl0IGluZGljYXRlcyBhIHBhcnQgb2YgdGhlIGRvY3VtZW50IHRoYXQgaGFzIGJlZW4gaGlnaGxpZ2h0ZWQgZHVlIHRvIGl0cyBsaWtlbHkgcmVsZXZhbmNlIHRvIHRoZSB1c2VyJ3MgY3VycmVudCBhY3Rpdml0eS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tYXJrIn1dfSx7bmFtZToiYmRpIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYmRpIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNwYW4gb2YgdGV4dCB0aGF0IGlzIHRvIGJlIGlzb2xhdGVkIGZyb20gaXRzIHN1cnJvdW5kaW5ncyBmb3IgdGhlIHB1cnBvc2VzIG9mIGJpZGlyZWN0aW9uYWwgdGV4dCBmb3JtYXR0aW5nLiBbQklESV0ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iZGkifV19LHtuYW1lOiJiZG8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiZG8gZWxlbWVudCByZXByZXNlbnRzIGV4cGxpY2l0IHRleHQgZGlyZWN0aW9uYWxpdHkgZm9ybWF0dGluZyBjb250cm9sIGZvciBpdHMgY2hpbGRyZW4uIEl0IGFsbG93cyBhdXRob3JzIHRvIG92ZXJyaWRlIHRoZSBVbmljb2RlIGJpZGlyZWN0aW9uYWwgYWxnb3JpdGhtIGJ5IGV4cGxpY2l0bHkgc3BlY2lmeWluZyBhIGRpcmVjdGlvbiBvdmVycmlkZS4gW0JJREldIn0sYXR0cmlidXRlczpbe25hbWU6ImRpciIsZGVzY3JpcHRpb246IlRoZSBkaXJlY3Rpb24gaW4gd2hpY2ggdGV4dCBzaG91bGQgYmUgcmVuZGVyZWQgaW4gdGhpcyBlbGVtZW50J3MgY29udGVudHMuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbHRyYDogSW5kaWNhdGVzIHRoYXQgdGhlIHRleHQgc2hvdWxkIGdvIGluIGEgbGVmdC10by1yaWdodCBkaXJlY3Rpb24uXG4qICAgYHJ0bGA6IEluZGljYXRlcyB0aGF0IHRoZSB0ZXh0IHNob3VsZCBnbyBpbiBhIHJpZ2h0LXRvLWxlZnQgZGlyZWN0aW9uLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYmRvIn1dfSx7bmFtZToic3BhbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNwYW4gZWxlbWVudCBkb2Vzbid0IG1lYW4gYW55dGhpbmcgb24gaXRzIG93biwgYnV0IGNhbiBiZSB1c2VmdWwgd2hlbiB1c2VkIHRvZ2V0aGVyIHdpdGggdGhlIGdsb2JhbCBhdHRyaWJ1dGVzLCBlLmcuIGNsYXNzLCBsYW5nLCBvciBkaXIuIEl0IHJlcHJlc2VudHMgaXRzIGNoaWxkcmVuLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NwYW4ifV19LHtuYW1lOiJiciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJyIGVsZW1lbnQgcmVwcmVzZW50cyBhIGxpbmUgYnJlYWsuIn0sYXR0cmlidXRlczpbe25hbWU6ImNsZWFyIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHdoZXJlIHRvIGJlZ2luIHRoZSBuZXh0IGxpbmUgYWZ0ZXIgdGhlIGJyZWFrLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnIifV19LHtuYW1lOiJ3YnIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB3YnIgZWxlbWVudCByZXByZXNlbnRzIGEgbGluZSBicmVhayBvcHBvcnR1bml0eS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC93YnIifV19LHtuYW1lOiJpbnMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbnMgZWxlbWVudCByZXByZXNlbnRzIGFuIGFkZGl0aW9uIHRvIHRoZSBkb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY2l0ZSIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGRlZmluZXMgdGhlIFVSSSBvZiBhIHJlc291cmNlIHRoYXQgZXhwbGFpbnMgdGhlIGNoYW5nZSwgc3VjaCBhcyBhIGxpbmsgdG8gbWVldGluZyBtaW51dGVzIG9yIGEgdGlja2V0IGluIGEgdHJvdWJsZXNob290aW5nIHN5c3RlbS4ifSx7bmFtZToiZGF0ZXRpbWUiLGRlc2NyaXB0aW9uOidUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIHRpbWUgYW5kIGRhdGUgb2YgdGhlIGNoYW5nZSBhbmQgbXVzdCBiZSBhIHZhbGlkIGRhdGUgd2l0aCBhbiBvcHRpb25hbCB0aW1lIHN0cmluZy4gSWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBwYXJzZWQgYXMgYSBkYXRlIHdpdGggYW4gb3B0aW9uYWwgdGltZSBzdHJpbmcsIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYW4gYXNzb2NpYXRlZCB0aW1lIHN0YW1wLiBGb3IgdGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nIHdpdGhvdXQgYSB0aW1lLCBzZWUgW0Zvcm1hdCBvZiBhIHZhbGlkIGRhdGUgc3RyaW5nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyNGb3JtYXRfb2ZfYV92YWxpZF9kYXRlX3N0cmluZyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpIGluIFtEYXRlIGFuZCB0aW1lIGZvcm1hdHMgdXNlZCBpbiBIVE1MXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpLiBUaGUgZm9ybWF0IG9mIHRoZSBzdHJpbmcgaWYgaXQgaW5jbHVkZXMgYm90aCBkYXRlIGFuZCB0aW1lIGlzIGNvdmVyZWQgaW4gW0Zvcm1hdCBvZiBhIHZhbGlkIGxvY2FsIGRhdGUgYW5kIHRpbWUgc3RyaW5nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyNGb3JtYXRfb2ZfYV92YWxpZF9sb2NhbF9kYXRlX2FuZF90aW1lX3N0cmluZyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpIGluIFtEYXRlIGFuZCB0aW1lIGZvcm1hdHMgdXNlZCBpbiBIVE1MXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5zIn1dfSx7bmFtZToiZGVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGVsIGVsZW1lbnQgcmVwcmVzZW50cyBhIHJlbW92YWwgZnJvbSB0aGUgZG9jdW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgVVJJIGZvciBhIHJlc291cmNlIHRoYXQgZXhwbGFpbnMgdGhlIGNoYW5nZSAoZm9yIGV4YW1wbGUsIG1lZXRpbmcgbWludXRlcykuIn19LHtuYW1lOiJkYXRldGltZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSB0aW1lIGFuZCBkYXRlIG9mIHRoZSBjaGFuZ2UgYW5kIG11c3QgYmUgYSB2YWxpZCBkYXRlIHN0cmluZyB3aXRoIGFuIG9wdGlvbmFsIHRpbWUuIElmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgcGFyc2VkIGFzIGEgZGF0ZSB3aXRoIGFuIG9wdGlvbmFsIHRpbWUgc3RyaW5nLCB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgdGltZSBzdGFtcC4gRm9yIHRoZSBmb3JtYXQgb2YgdGhlIHN0cmluZyB3aXRob3V0IGEgdGltZSwgc2VlIFtGb3JtYXQgb2YgYSB2YWxpZCBkYXRlIHN0cmluZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMjRm9ybWF0X29mX2FfdmFsaWRfZGF0ZV9zdHJpbmcgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKSBpbiBbRGF0ZSBhbmQgdGltZSBmb3JtYXRzIHVzZWQgaW4gSFRNTF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKS4gVGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nIGlmIGl0IGluY2x1ZGVzIGJvdGggZGF0ZSBhbmQgdGltZSBpcyBjb3ZlcmVkIGluIFtGb3JtYXQgb2YgYSB2YWxpZCBsb2NhbCBkYXRlIGFuZCB0aW1lIHN0cmluZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMjRm9ybWF0X29mX2FfdmFsaWRfbG9jYWxfZGF0ZV9hbmRfdGltZV9zdHJpbmcgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKSBpbiBbRGF0ZSBhbmQgdGltZSBmb3JtYXRzIHVzZWQgaW4gSFRNTF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKS4nfX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kZWwifV19LHtuYW1lOiJwaWN0dXJlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcGljdHVyZSBlbGVtZW50IGlzIGEgY29udGFpbmVyIHdoaWNoIHByb3ZpZGVzIG11bHRpcGxlIHNvdXJjZXMgdG8gaXRzIGNvbnRhaW5lZCBpbWcgZWxlbWVudCB0byBhbGxvdyBhdXRob3JzIHRvIGRlY2xhcmF0aXZlbHkgY29udHJvbCBvciBnaXZlIGhpbnRzIHRvIHRoZSB1c2VyIGFnZW50IGFib3V0IHdoaWNoIGltYWdlIHJlc291cmNlIHRvIHVzZSwgYmFzZWQgb24gdGhlIHNjcmVlbiBwaXhlbCBkZW5zaXR5LCB2aWV3cG9ydCBzaXplLCBpbWFnZSBmb3JtYXQsIGFuZCBvdGhlciBmYWN0b3JzLiBJdCByZXByZXNlbnRzIGl0cyBjaGlsZHJlbi4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9waWN0dXJlIn1dfSx7bmFtZToiaW1nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBpbWcgZWxlbWVudCByZXByZXNlbnRzIGFuIGltYWdlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGRlZmluZXMgYW4gYWx0ZXJuYXRpdmUgdGV4dCBkZXNjcmlwdGlvbiBvZiB0aGUgaW1hZ2UuXG5cbioqTm90ZToqKiBCcm93c2VycyBkbyBub3QgYWx3YXlzIGRpc3BsYXkgdGhlIGltYWdlIHJlZmVyZW5jZWQgYnkgdGhlIGVsZW1lbnQuIFRoaXMgaXMgdGhlIGNhc2UgZm9yIG5vbi1ncmFwaGljYWwgYnJvd3NlcnMgKGluY2x1ZGluZyB0aG9zZSB1c2VkIGJ5IHBlb3BsZSB3aXRoIHZpc3VhbCBpbXBhaXJtZW50cyksIGlmIHRoZSB1c2VyIGNob29zZXMgbm90IHRvIGRpc3BsYXkgaW1hZ2VzLCBvciBpZiB0aGUgYnJvd3NlciBjYW5ub3QgZGlzcGxheSB0aGUgaW1hZ2UgYmVjYXVzZSBpdCBpcyBpbnZhbGlkIG9yIGFuIFt1bnN1cHBvcnRlZCB0eXBlXSgjU3VwcG9ydGVkX2ltYWdlX2Zvcm1hdHMpLiBJbiB0aGVzZSBjYXNlcywgdGhlIGJyb3dzZXIgbWF5IHJlcGxhY2UgdGhlIGltYWdlIHdpdGggdGhlIHRleHQgZGVmaW5lZCBpbiB0aGlzIGVsZW1lbnRcJ3MgYGFsdGAgYXR0cmlidXRlLiBZb3Ugc2hvdWxkLCBmb3IgdGhlc2UgcmVhc29ucyBhbmQgb3RoZXJzLCBwcm92aWRlIGEgdXNlZnVsIHZhbHVlIGZvciBgYWx0YCB3aGVuZXZlciBwb3NzaWJsZS5cblxuKipOb3RlOioqIE9taXR0aW5nIHRoaXMgYXR0cmlidXRlIGFsdG9nZXRoZXIgaW5kaWNhdGVzIHRoYXQgdGhlIGltYWdlIGlzIGEga2V5IHBhcnQgb2YgdGhlIGNvbnRlbnQsIGFuZCBubyB0ZXh0dWFsIGVxdWl2YWxlbnQgaXMgYXZhaWxhYmxlLiBTZXR0aW5nIHRoaXMgYXR0cmlidXRlIHRvIGFuIGVtcHR5IHN0cmluZyAoYGFsdD0iImApIGluZGljYXRlcyB0aGF0IHRoaXMgaW1hZ2UgaXMgX25vdF8gYSBrZXkgcGFydCBvZiB0aGUgY29udGVudCAoZGVjb3JhdGl2ZSksIGFuZCB0aGF0IG5vbi12aXN1YWwgYnJvd3NlcnMgbWF5IG9taXQgaXQgZnJvbSByZW5kZXJpbmcuJ319LHtuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbWFnZSBVUkwuIFRoaXMgYXR0cmlidXRlIGlzIG1hbmRhdG9yeSBmb3IgdGhlIGA8aW1nPmAgZWxlbWVudC4gT24gYnJvd3NlcnMgc3VwcG9ydGluZyBgc3Jjc2V0YCwgYHNyY2AgaXMgdHJlYXRlZCBsaWtlIGEgY2FuZGlkYXRlIGltYWdlIHdpdGggYSBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3IgYDF4YCB1bmxlc3MgYW4gaW1hZ2Ugd2l0aCB0aGlzIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvciBpcyBhbHJlYWR5IGRlZmluZWQgaW4gYHNyY3NldCxgIG9yIHVubGVzcyBgc3Jjc2V0YCBjb250YWlucyAnYHdgJyBkZXNjcmlwdG9ycy4ifX0se25hbWU6InNyY3NldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBsaXN0IG9mIG9uZSBvciBtb3JlIHN0cmluZ3Mgc2VwYXJhdGVkIGJ5IGNvbW1hcyBpbmRpY2F0aW5nIGEgc2V0IG9mIHBvc3NpYmxlIGltYWdlIHNvdXJjZXMgZm9yIHRoZSB1c2VyIGFnZW50IHRvIHVzZS4gRWFjaCBzdHJpbmcgaXMgY29tcG9zZWQgb2Y6XG5cbjEuICBhIFVSTCB0byBhbiBpbWFnZSxcbjIuICBvcHRpb25hbGx5LCB3aGl0ZXNwYWNlIGZvbGxvd2VkIGJ5IG9uZSBvZjpcbiAgICAqICAgQSB3aWR0aCBkZXNjcmlwdG9yLCBvciBhIHBvc2l0aXZlIGludGVnZXIgZGlyZWN0bHkgZm9sbG93ZWQgYnkgJ2B3YCcuIFRoZSB3aWR0aCBkZXNjcmlwdG9yIGlzIGRpdmlkZWQgYnkgdGhlIHNvdXJjZSBzaXplIGdpdmVuIGluIHRoZSBgc2l6ZXNgIGF0dHJpYnV0ZSB0byBjYWxjdWxhdGUgdGhlIGVmZmVjdGl2ZSBwaXhlbCBkZW5zaXR5LlxuICAgICogICBBIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvciwgd2hpY2ggaXMgYSBwb3NpdGl2ZSBmbG9hdGluZyBwb2ludCBudW1iZXIgZGlyZWN0bHkgZm9sbG93ZWQgYnkgJ2B4YCcuXG5cbklmIG5vIGRlc2NyaXB0b3IgaXMgc3BlY2lmaWVkLCB0aGUgc291cmNlIGlzIGFzc2lnbmVkIHRoZSBkZWZhdWx0IGRlc2NyaXB0b3I6IGAxeGAuXG5cbkl0IGlzIGluY29ycmVjdCB0byBtaXggd2lkdGggZGVzY3JpcHRvcnMgYW5kIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvcnMgaW4gdGhlIHNhbWUgYHNyY3NldGAgYXR0cmlidXRlLiBEdXBsaWNhdGUgZGVzY3JpcHRvcnMgKGZvciBpbnN0YW5jZSwgdHdvIHNvdXJjZXMgaW4gdGhlIHNhbWUgYHNyY3NldGAgd2hpY2ggYXJlIGJvdGggZGVzY3JpYmVkIHdpdGggJ2AyeGAnKSBhcmUgYWxzbyBpbnZhbGlkLlxuXG5UaGUgdXNlciBhZ2VudCBzZWxlY3RzIGFueSBvbmUgb2YgdGhlIGF2YWlsYWJsZSBzb3VyY2VzIGF0IGl0cyBkaXNjcmV0aW9uLiBUaGlzIHByb3ZpZGVzIHRoZW0gd2l0aCBzaWduaWZpY2FudCBsZWV3YXkgdG8gdGFpbG9yIHRoZWlyIHNlbGVjdGlvbiBiYXNlZCBvbiB0aGluZ3MgbGlrZSB1c2VyIHByZWZlcmVuY2VzIG9yIGJhbmR3aWR0aCBjb25kaXRpb25zLiBTZWUgb3VyIFtSZXNwb25zaXZlIGltYWdlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9MZWFybi9IVE1ML011bHRpbWVkaWFfYW5kX2VtYmVkZGluZy9SZXNwb25zaXZlX2ltYWdlcykgdHV0b3JpYWwgZm9yIGFuIGV4YW1wbGUuIn19LHtuYW1lOiJjcm9zc29yaWdpbiIsdmFsdWVTZXQ6InhvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRlcyBpZiB0aGUgZmV0Y2hpbmcgb2YgdGhlIHJlbGF0ZWQgaW1hZ2UgbXVzdCBiZSBkb25lIHVzaW5nIENPUlMgb3Igbm90LiBbQ09SUy1lbmFibGVkIGltYWdlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DT1JTX0VuYWJsZWRfSW1hZ2UpIGNhbiBiZSByZXVzZWQgaW4gdGhlIFtgPGNhbnZhcz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FudmFzICJVc2UgdGhlIEhUTUwgPGNhbnZhcz4gZWxlbWVudCB3aXRoIGVpdGhlciB0aGUgY2FudmFzIHNjcmlwdGluZyBBUEkgb3IgdGhlIFdlYkdMIEFQSSB0byBkcmF3IGdyYXBoaWNzIGFuZCBhbmltYXRpb25zLiIpIGVsZW1lbnQgd2l0aG91dCBiZWluZyAiW3RhaW50ZWRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQ09SU19lbmFibGVkX2ltYWdlI1doYXRfaXNfYV90YWludGVkX2NhbnZhcykuIiBUaGUgYWxsb3dlZCB2YWx1ZXMgYXJlOid9fSx7bmFtZToidXNlbWFwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgcGFydGlhbCBVUkwgKHN0YXJ0aW5nIHdpdGggXCcjXCcpIG9mIGFuIFtpbWFnZSBtYXBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvSFRNTC9FbGVtZW50L21hcCkgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbGVtZW50LlxuXG4qKk5vdGU6KiogWW91IGNhbm5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgaWYgdGhlIGA8aW1nPmAgZWxlbWVudCBpcyBhIGRlc2NlbmRhbnQgb2YgYW4gW2A8YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSAiVGhlIEhUTUwgPGE+IGVsZW1lbnQgKG9yIGFuY2hvciBlbGVtZW50KSBjcmVhdGVzIGEgaHlwZXJsaW5rIHRvIG90aGVyIHdlYiBwYWdlcywgZmlsZXMsIGxvY2F0aW9ucyB3aXRoaW4gdGhlIHNhbWUgcGFnZSwgZW1haWwgYWRkcmVzc2VzLCBvciBhbnkgb3RoZXIgVVJMLiIpIG9yIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBlbGVtZW50Lid9fSx7bmFtZToiaXNtYXAiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBpbWFnZSBpcyBwYXJ0IG9mIGEgc2VydmVyLXNpZGUgbWFwLiBJZiBzbywgdGhlIHByZWNpc2UgY29vcmRpbmF0ZXMgb2YgYSBjbGljayBhcmUgc2VudCB0byB0aGUgc2VydmVyLlxuXG4qKk5vdGU6KiogVGhpcyBhdHRyaWJ1dGUgaXMgYWxsb3dlZCBvbmx5IGlmIHRoZSBgPGltZz5gIGVsZW1lbnQgaXMgYSBkZXNjZW5kYW50IG9mIGFuIFtgPGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2EgIlRoZSBIVE1MIDxhPiBlbGVtZW50IChvciBhbmNob3IgZWxlbWVudCkgY3JlYXRlcyBhIGh5cGVybGluayB0byBvdGhlciB3ZWIgcGFnZXMsIGZpbGVzLCBsb2NhdGlvbnMgd2l0aGluIHRoZSBzYW1lIHBhZ2UsIGVtYWlsIGFkZHJlc3Nlcywgb3IgYW55IG90aGVyIFVSTC4iKSBlbGVtZW50IHdpdGggYSB2YWxpZCBbYGhyZWZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSNhdHRyLWhyZWYpIGF0dHJpYnV0ZS4nfX0se25hbWU6IndpZHRoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaW50cmluc2ljIHdpZHRoIG9mIHRoZSBpbWFnZSBpbiBwaXhlbHMuIn19LHtuYW1lOiJoZWlnaHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbnRyaW5zaWMgaGVpZ2h0IG9mIHRoZSBpbWFnZSBpbiBwaXhlbHMuIn19LHtuYW1lOiJkZWNvZGluZyIsZGVzY3JpcHRpb246IlByb3ZpZGVzIGFuIGltYWdlIGRlY29kaW5nIGhpbnQgdG8gdGhlIGJyb3dzZXIuIFRoZSBhbGxvd2VkIHZhbHVlcyBhcmU6In0se25hbWU6ImRlY29kaW5nIixkZXNjcmlwdGlvbjoiYHN5bmNgXG5cbkRlY29kZSB0aGUgaW1hZ2Ugc3luY2hyb25vdXNseSBmb3IgYXRvbWljIHByZXNlbnRhdGlvbiB3aXRoIG90aGVyIGNvbnRlbnQuXG5cbmBhc3luY2BcblxuRGVjb2RlIHRoZSBpbWFnZSBhc3luY2hyb25vdXNseSB0byByZWR1Y2UgZGVsYXkgaW4gcHJlc2VudGluZyBvdGhlciBjb250ZW50LlxuXG5gYXV0b2BcblxuRGVmYXVsdCBtb2RlLCB3aGljaCBpbmRpY2F0ZXMgbm8gcHJlZmVyZW5jZSBmb3IgdGhlIGRlY29kaW5nIG1vZGUuIFRoZSBicm93c2VyIGRlY2lkZXMgd2hhdCBpcyBiZXN0IGZvciB0aGUgdXNlci4ifSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgcmVsYXRpdmUgaW1wb3J0YW5jZSBvZiB0aGUgcmVzb3VyY2UuIFByaW9yaXR5IGhpbnRzIGFyZSBkZWxlZ2F0ZWQgdXNpbmcgdGhlIHZhbHVlczoifSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246ImBhdXRvYDogSW5kaWNhdGVzwqAqKm5vwqBwcmVmZXJlbmNlKiouIFRoZSBicm93c2VyIG1heSB1c2UgaXRzIG93biBoZXVyaXN0aWNzIHRvIGRlY2lkZSB0aGUgcHJpb3JpdHkgb2YgdGhlIGltYWdlLlxuXG5gaGlnaGA6IEluZGljYXRlcyB0byB0aGXCoGJyb3dzZXLCoHRoYXQgdGhlIGltYWdlIGlzIG9mwqAqKmhpZ2gqKiBwcmlvcml0eS5cblxuYGxvd2A6wqBJbmRpY2F0ZXMgdG8gdGhlwqBicm93c2VywqB0aGF0IHRoZSBpbWFnZSBpcyBvZsKgKipsb3cqKiBwcmlvcml0eS4ifSx7bmFtZToiaW50cmluc2ljc2l6ZSIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIHRlbGxzIHRoZSBicm93c2VyIHRvIGlnbm9yZSB0aGUgYWN0dWFsIGludHJpbnNpYyBzaXplIG9mIHRoZSBpbWFnZSBhbmQgcHJldGVuZCBpdOKAmXMgdGhlIHNpemUgc3BlY2lmaWVkIGluIHRoZSBhdHRyaWJ1dGUuIFNwZWNpZmljYWxseSwgdGhlIGltYWdlIHdvdWxkIHJhc3RlciBhdCB0aGVzZSBkaW1lbnNpb25zIGFuZCBgbmF0dXJhbFdpZHRoYC9gbmF0dXJhbEhlaWdodGAgb24gaW1hZ2VzIHdvdWxkIHJldHVybiB0aGUgdmFsdWVzIHNwZWNpZmllZCBpbiB0aGlzIGF0dHJpYnV0ZS4gW0V4cGxhaW5lcl0oaHR0cHM6Ly9naXRodWIuY29tL29qYW52YWZhaS9pbnRyaW5zaWNzaXplLWF0dHJpYnV0ZSksIFtleGFtcGxlc10oaHR0cHM6Ly9nb29nbGVjaHJvbWUuZ2l0aHViLmlvL3NhbXBsZXMvaW50cmluc2ljLXNpemUvaW5kZXguaHRtbCkifSx7bmFtZToicmVmZXJyZXJwb2xpY3kiLGRlc2NyaXB0aW9uOiJBIHN0cmluZyBpbmRpY2F0aW5nIHdoaWNoIHJlZmVycmVyIHRvIHVzZSB3aGVuIGZldGNoaW5nIHRoZSByZXNvdXJjZTpcblxuKiAgIGBuby1yZWZlcnJlcjpgIFRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciBcIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuXCIpIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50LlxuKiAgIGBuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZTpgIE5vIGBSZWZlcmVyYCBoZWFkZXIgd2lsbCBiZSBzZW50IHdoZW4gbmF2aWdhdGluZyB0byBhbiBvcmlnaW4gd2l0aG91dCBUTFMgKEhUVFBTKS4gVGhpcyBpcyBhIHVzZXIgYWdlbnTigJlzIGRlZmF1bHQgYmVoYXZpb3IgaWYgbm8gcG9saWN5IGlzIG90aGVyd2lzZSBzcGVjaWZpZWQuXG4qICAgYG9yaWdpbjpgIFRoZSBgUmVmZXJlcmAgaGVhZGVyIHdpbGwgaW5jbHVkZSB0aGUgcGFnZSBvZiBvcmlnaW4ncyBzY2hlbWUsIHRoZSBob3N0LCBhbmQgdGhlIHBvcnQuXG4qICAgYG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbjpgIE5hdmlnYXRpbmcgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGxpbWl0IHRoZSBpbmNsdWRlZCByZWZlcnJhbCBkYXRhIHRvIHRoZSBzY2hlbWUsIHRoZSBob3N0IGFuZCB0aGUgcG9ydCwgd2hpbGUgbmF2aWdhdGluZyBmcm9tIHRoZSBzYW1lIG9yaWdpbiB3aWxsIGluY2x1ZGUgdGhlIHJlZmVycmVyJ3MgZnVsbCBwYXRoLlxuKiAgIGB1bnNhZmUtdXJsOmAgVGhlIGBSZWZlcmVyYCBoZWFkZXIgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW4gYW5kIHRoZSBwYXRoLCBidXQgbm90IHRoZSBmcmFnbWVudCwgcGFzc3dvcmQsIG9yIHVzZXJuYW1lLiBUaGlzIGNhc2UgaXMgdW5zYWZlIGJlY2F1c2UgaXQgY2FuIGxlYWsgb3JpZ2lucyBhbmQgcGF0aHMgZnJvbSBUTFMtcHJvdGVjdGVkIHJlc291cmNlcyB0byBpbnNlY3VyZSBvcmlnaW5zLiJ9LHtuYW1lOiJzaXplcyIsZGVzY3JpcHRpb246IkEgbGlzdCBvZiBvbmUgb3IgbW9yZSBzdHJpbmdzIHNlcGFyYXRlZCBieSBjb21tYXMgaW5kaWNhdGluZyBhIHNldCBvZiBzb3VyY2Ugc2l6ZXMuIEVhY2ggc291cmNlIHNpemUgY29uc2lzdHMgb2Y6XG5cbjEuICBhIG1lZGlhIGNvbmRpdGlvbi4gVGhpcyBtdXN0IGJlIG9taXR0ZWQgZm9yIHRoZSBsYXN0IGl0ZW0uXG4yLiAgYSBzb3VyY2Ugc2l6ZSB2YWx1ZS5cblxuU291cmNlIHNpemUgdmFsdWVzIHNwZWNpZnkgdGhlIGludGVuZGVkIGRpc3BsYXkgc2l6ZSBvZiB0aGUgaW1hZ2UuIFVzZXIgYWdlbnRzIHVzZSB0aGUgY3VycmVudCBzb3VyY2Ugc2l6ZSB0byBzZWxlY3Qgb25lIG9mIHRoZSBzb3VyY2VzIHN1cHBsaWVkIGJ5IHRoZSBgc3Jjc2V0YCBhdHRyaWJ1dGUsIHdoZW4gdGhvc2Ugc291cmNlcyBhcmUgZGVzY3JpYmVkIHVzaW5nIHdpZHRoICgnYHdgJykgZGVzY3JpcHRvcnMuIFRoZSBzZWxlY3RlZCBzb3VyY2Ugc2l6ZSBhZmZlY3RzIHRoZSBpbnRyaW5zaWMgc2l6ZSBvZiB0aGUgaW1hZ2UgKHRoZSBpbWFnZeKAmXMgZGlzcGxheSBzaXplIGlmIG5vIENTUyBzdHlsaW5nIGlzIGFwcGxpZWQpLiBJZiB0aGUgYHNyY3NldGAgYXR0cmlidXRlIGlzIGFic2VudCwgb3IgY29udGFpbnMgbm8gdmFsdWVzIHdpdGggYSB3aWR0aCAoYHdgKSBkZXNjcmlwdG9yLCB0aGVuIHRoZSBgc2l6ZXNgIGF0dHJpYnV0ZSBoYXMgbm8gZWZmZWN0LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW1nIn1dfSx7bmFtZToiaWZyYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaWZyYW1lIGVsZW1lbnQgcmVwcmVzZW50cyBhIG5lc3RlZCBicm93c2luZyBjb250ZXh0LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBVUkwgb2YgdGhlIHBhZ2UgdG8gZW1iZWQuIFVzZSBhIHZhbHVlIG9mIGBhYm91dDpibGFua2AgdG8gZW1iZWQgYW4gZW1wdHkgcGFnZSB0aGF0IGNvbmZvcm1zIHRvIHRoZSBbc2FtZS1vcmlnaW4gcG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TYW1lLW9yaWdpbl9wb2xpY3kjSW5oZXJpdGVkX29yaWdpbnMpLiBBbHNvIG5vdGUgdGhhdCBwcm9ncmFtYXRpY2FsbHkgcmVtb3ZpbmcgYW4gYDxpZnJhbWU+YFwncyBzcmMgYXR0cmlidXRlIChlLmcuIHZpYSBbYEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKClgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9yZW1vdmVBdHRyaWJ1dGUgIlRoZSBFbGVtZW50IG1ldGhvZCByZW1vdmVBdHRyaWJ1dGUoKSByZW1vdmVzIHRoZSBhdHRyaWJ1dGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgZnJvbSB0aGUgZWxlbWVudC4iKSkgY2F1c2VzIGBhYm91dDpibGFua2AgdG8gYmUgbG9hZGVkIGluIHRoZSBmcmFtZSBpbiBGaXJlZm94IChmcm9tIHZlcnNpb24gNjUpLCBDaHJvbWl1bS1iYXNlZCBicm93c2VycywgYW5kIFNhZmFyaS9pT1MuJ319LHtuYW1lOiJzcmNkb2MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklubGluZSBIVE1MIHRvIGVtYmVkLCBvdmVycmlkaW5nIHRoZSBgc3JjYCBhdHRyaWJ1dGUuIElmIGEgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBgc3JjZG9jYCBhdHRyaWJ1dGUsIGl0IHdpbGwgZmFsbCBiYWNrIHRvIHRoZSBVUkwgaW4gdGhlIGBzcmNgIGF0dHJpYnV0ZS4ifX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0EgdGFyZ2V0YWJsZSBuYW1lIGZvciB0aGUgZW1iZWRkZWQgYnJvd3NpbmcgY29udGV4dC4gVGhpcyBjYW4gYmUgdXNlZCBpbiB0aGUgYHRhcmdldGAgYXR0cmlidXRlIG9mIHRoZSBbYDxhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hICJUaGUgSFRNTCA8YT4gZWxlbWVudCAob3IgYW5jaG9yIGVsZW1lbnQpIGNyZWF0ZXMgYSBoeXBlcmxpbmsgdG8gb3RoZXIgd2ViIHBhZ2VzLCBmaWxlcywgbG9jYXRpb25zIHdpdGhpbiB0aGUgc2FtZSBwYWdlLCBlbWFpbCBhZGRyZXNzZXMsIG9yIGFueSBvdGhlciBVUkwuIiksIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpLCBvciBbYDxiYXNlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iYXNlICJUaGUgSFRNTCA8YmFzZT4gZWxlbWVudCBzcGVjaWZpZXMgdGhlIGJhc2UgVVJMIHRvIHVzZSBmb3IgYWxsIHJlbGF0aXZlIFVSTHMgY29udGFpbmVkIHdpdGhpbiBhIGRvY3VtZW50LiBUaGVyZSBjYW4gYmUgb25seSBvbmUgPGJhc2U+IGVsZW1lbnQgaW4gYSBkb2N1bWVudC4iKSBlbGVtZW50czsgdGhlIGBmb3JtdGFyZ2V0YCBhdHRyaWJ1dGUgb2YgdGhlIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIG9yIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBlbGVtZW50czsgb3IgdGhlIGB3aW5kb3dOYW1lYCBwYXJhbWV0ZXIgaW4gdGhlIFtgd2luZG93Lm9wZW4oKWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XaW5kb3cvb3BlbiAiVGhlwqBXaW5kb3cgaW50ZXJmYWNlXCdzIG9wZW4oKSBtZXRob2QgbG9hZHMgdGhlIHNwZWNpZmllZCByZXNvdXJjZSBpbnRvIHRoZSBicm93c2luZyBjb250ZXh0ICh3aW5kb3csIDxpZnJhbWU+IG9yIHRhYikgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuIElmIHRoZSBuYW1lIGRvZXNuXCd0IGV4aXN0LCB0aGVuIGEgbmV3IHdpbmRvdyBpcyBvcGVuZWQgYW5kIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2UgaXMgbG9hZGVkIGludG8gaXRzIGJyb3dzaW5nIGNvbnRleHQuIikgbWV0aG9kLid9fSx7bmFtZToic2FuZGJveCIsdmFsdWVTZXQ6InNiIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBcHBsaWVzIGV4dHJhIHJlc3RyaWN0aW9ucyB0byB0aGUgY29udGVudCBpbiB0aGUgZnJhbWUuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIGNhbiBlaXRoZXIgYmUgZW1wdHkgdG8gYXBwbHkgYWxsIHJlc3RyaWN0aW9ucywgb3Igc3BhY2Utc2VwYXJhdGVkIHRva2VucyB0byBsaWZ0IHBhcnRpY3VsYXIgcmVzdHJpY3Rpb25zOlxuXG4qICAgYGFsbG93LWZvcm1zYDogQWxsb3dzIHRoZSByZXNvdXJjZSB0byBzdWJtaXQgZm9ybXMuIElmIHRoaXMga2V5d29yZCBpcyBub3QgdXNlZCwgZm9ybSBzdWJtaXNzaW9uIGlzIGJsb2NrZWQuXG4qICAgYGFsbG93LW1vZGFsc2A6IExldHMgdGhlIHJlc291cmNlIFtvcGVuIG1vZGFsIHdpbmRvd3NdKGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI3NhbmRib3hlZC1tb2RhbHMtZmxhZykuXG4qICAgYGFsbG93LW9yaWVudGF0aW9uLWxvY2tgOiBMZXRzIHRoZSByZXNvdXJjZSBbbG9jayB0aGUgc2NyZWVuIG9yaWVudGF0aW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU2NyZWVuL2xvY2tPcmllbnRhdGlvbikuXG4qICAgYGFsbG93LXBvaW50ZXItbG9ja2A6IExldHMgdGhlIHJlc291cmNlIHVzZSB0aGUgW1BvaW50ZXIgTG9jayBBUEldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViQVBJL1BvaW50ZXJfTG9jaykuXG4qICAgYGFsbG93LXBvcHVwc2A6IEFsbG93cyBwb3B1cHMgKHN1Y2ggYXMgYHdpbmRvdy5vcGVuKClgLCBgdGFyZ2V0PSJfYmxhbmsiYCwgb3IgYHNob3dNb2RhbERpYWxvZygpYCkuIElmIHRoaXMga2V5d29yZCBpcyBub3QgdXNlZCwgdGhlIHBvcHVwIHdpbGwgc2lsZW50bHkgZmFpbCB0byBvcGVuLlxuKiAgIGBhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3hgOiBMZXRzIHRoZSBzYW5kYm94ZWQgZG9jdW1lbnQgb3BlbiBuZXcgd2luZG93cyB3aXRob3V0IHRob3NlIHdpbmRvd3MgaW5oZXJpdGluZyB0aGUgc2FuZGJveGluZy4gRm9yIGV4YW1wbGUsIHRoaXMgY2FuIHNhZmVseSBzYW5kYm94IGFuIGFkdmVydGlzZW1lbnQgd2l0aG91dCBmb3JjaW5nIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyB1cG9uIHRoZSBwYWdlIHRoZSBhZCBsaW5rcyB0by5cbiogICBgYWxsb3ctcHJlc2VudGF0aW9uYDogTGV0cyB0aGUgcmVzb3VyY2Ugc3RhcnQgYSBbcHJlc2VudGF0aW9uIHNlc3Npb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9QcmVzZW50YXRpb25SZXF1ZXN0KS5cbiogICBgYWxsb3ctc2FtZS1vcmlnaW5gOiBJZiB0aGlzIHRva2VuIGlzIG5vdCB1c2VkLCB0aGUgcmVzb3VyY2UgaXMgdHJlYXRlZCBhcyBiZWluZyBmcm9tIGEgc3BlY2lhbCBvcmlnaW4gdGhhdCBhbHdheXMgZmFpbHMgdGhlIFtzYW1lLW9yaWdpbiBwb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3Nhcnkvc2FtZS1vcmlnaW5fcG9saWN5ICJzYW1lLW9yaWdpbiBwb2xpY3k6IFRoZSBzYW1lLW9yaWdpbiBwb2xpY3kgaXMgYSBjcml0aWNhbCBzZWN1cml0eSBtZWNoYW5pc20gdGhhdCByZXN0cmljdHMgaG93IGEgZG9jdW1lbnQgb3Igc2NyaXB0IGxvYWRlZCBmcm9tIG9uZSBvcmlnaW4gY2FuIGludGVyYWN0IHdpdGggYSByZXNvdXJjZSBmcm9tIGFub3RoZXIgb3JpZ2luLiIpLlxuKiAgIGBhbGxvdy1zY3JpcHRzYDogTGV0cyB0aGUgcmVzb3VyY2UgcnVuIHNjcmlwdHMgKGJ1dCBub3QgY3JlYXRlIHBvcHVwIHdpbmRvd3MpLlxuKiAgIGBhbGxvdy1zdG9yYWdlLWFjY2Vzcy1ieS11c2VyLWFjdGl2YXRpb25gIDogTGV0cyB0aGUgcmVzb3VyY2UgcmVxdWVzdCBhY2Nlc3MgdG8gdGhlIHBhcmVudFwncyBzdG9yYWdlIGNhcGFiaWxpdGllcyB3aXRoIHRoZSBbU3RvcmFnZSBBY2Nlc3MgQVBJXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU3RvcmFnZV9BY2Nlc3NfQVBJKS5cbiogICBgYWxsb3ctdG9wLW5hdmlnYXRpb25gOiBMZXRzIHRoZSByZXNvdXJjZSBuYXZpZ2F0ZSB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgKHRoZSBvbmUgbmFtZWQgYF90b3BgKS5cbiogICBgYWxsb3ctdG9wLW5hdmlnYXRpb24tYnktdXNlci1hY3RpdmF0aW9uYDogTGV0cyB0aGUgcmVzb3VyY2UgbmF2aWdhdGUgdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0LCBidXQgb25seSBpZiBpbml0aWF0ZWQgYnkgYSB1c2VyIGdlc3R1cmUuXG5cbioqTm90ZXMgYWJvdXQgc2FuZGJveGluZzoqKlxuXG4qICAgV2hlbiB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgaGFzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgZW1iZWRkaW5nIHBhZ2UsIGl0IGlzICoqc3Ryb25nbHkgZGlzY291cmFnZWQqKiB0byB1c2UgYm90aCBgYWxsb3ctc2NyaXB0c2AgYW5kIGBhbGxvdy1zYW1lLW9yaWdpbmAsIGFzIHRoYXQgbGV0cyB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgcmVtb3ZlIHRoZSBgc2FuZGJveGAgYXR0cmlidXRlIOKAlCBtYWtpbmcgaXQgbm8gbW9yZSBzZWN1cmUgdGhhbiBub3QgdXNpbmcgdGhlIGBzYW5kYm94YCBhdHRyaWJ1dGUgYXQgYWxsLlxuKiAgIFNhbmRib3hpbmcgaXMgdXNlbGVzcyBpZiB0aGUgYXR0YWNrZXIgY2FuIGRpc3BsYXkgY29udGVudCBvdXRzaWRlIGEgc2FuZGJveGVkIGBpZnJhbWVgIOKAlCBzdWNoIGFzIGlmIHRoZSB2aWV3ZXIgb3BlbnMgdGhlIGZyYW1lIGluIGEgbmV3IHRhYi4gU3VjaCBjb250ZW50IHNob3VsZCBiZSBhbHNvIHNlcnZlZCBmcm9tIGEgX3NlcGFyYXRlIG9yaWdpbl8gdG8gbGltaXQgcG90ZW50aWFsIGRhbWFnZS5cbiogICBUaGUgYHNhbmRib3hgIGF0dHJpYnV0ZSBpcyB1bnN1cHBvcnRlZCBpbiBJbnRlcm5ldCBFeHBsb3JlciA5IGFuZCBlYXJsaWVyLid9fSx7bmFtZToic2VhbWxlc3MiLHZhbHVlU2V0OiJ2In0se25hbWU6ImFsbG93ZnVsbHNjcmVlbiIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1NldCB0byBgdHJ1ZWAgaWYgdGhlIGA8aWZyYW1lPmAgY2FuIGFjdGl2YXRlIGZ1bGxzY3JlZW4gbW9kZSBieSBjYWxsaW5nIHRoZSBbYHJlcXVlc3RGdWxsc2NyZWVuKClgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9yZXF1ZXN0RnVsbHNjcmVlbiAiVGhlIEVsZW1lbnQucmVxdWVzdEZ1bGxzY3JlZW4oKSBtZXRob2QgaXNzdWVzIGFuIGFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIG1ha2UgdGhlIGVsZW1lbnQgYmUgZGlzcGxheWVkIGluIGZ1bGwtc2NyZWVuIG1vZGUuIikgbWV0aG9kLid9fSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB3aWR0aCBvZiB0aGUgZnJhbWUgaW4gQ1NTIHBpeGVscy4gRGVmYXVsdCBpcyBgMzAwYC4ifX0se25hbWU6ImhlaWdodCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhlaWdodCBvZiB0aGUgZnJhbWUgaW4gQ1NTIHBpeGVscy4gRGVmYXVsdCBpcyBgMTUwYC4ifX0se25hbWU6ImFsbG93IixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgW2ZlYXR1cmUgcG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0ZlYXR1cmVfUG9saWN5KSBmb3IgdGhlIGA8aWZyYW1lPmAuIn0se25hbWU6ImFsbG93cGF5bWVudHJlcXVlc3QiLGRlc2NyaXB0aW9uOiJTZXQgdG8gYHRydWVgIGlmIGEgY3Jvc3Mtb3JpZ2luIGA8aWZyYW1lPmAgc2hvdWxkIGJlIGFsbG93ZWQgdG8gaW52b2tlIHRoZSBbUGF5bWVudCBSZXF1ZXN0IEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1BheW1lbnRfUmVxdWVzdF9BUEkpLiJ9LHtuYW1lOiJhbGxvd3BheW1lbnRyZXF1ZXN0IixkZXNjcmlwdGlvbjonVGhpcyBhdHRyaWJ1dGUgaXMgY29uc2lkZXJlZCBhIGxlZ2FjeSBhdHRyaWJ1dGUgYW5kIHJlZGVmaW5lZCBhcyBgYWxsb3c9InBheW1lbnQiYC4nfSx7bmFtZToiY3NwIixkZXNjcmlwdGlvbjonQSBbQ29udGVudCBTZWN1cml0eSBQb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQ1NQKSBlbmZvcmNlZCBmb3IgdGhlIGVtYmVkZGVkIHJlc291cmNlLiBTZWUgW2BIVE1MSUZyYW1lRWxlbWVudC5jc3BgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTElGcmFtZUVsZW1lbnQvY3NwICJUaGUgY3NwIHByb3BlcnR5IG9mIHRoZSBIVE1MSUZyYW1lRWxlbWVudCBpbnRlcmZhY2Ugc3BlY2lmaWVzIHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSB0aGF0IGFuIGVtYmVkZGVkIGRvY3VtZW50IG11c3QgYWdyZWUgdG8gZW5mb3JjZSB1cG9uIGl0c2VsZi4iKSBmb3IgZGV0YWlscy4nfSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246IlRoZSBkb3dubG9hZCBwcmlvcml0eSBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIGA8aWZyYW1lPmAncyBgc3JjYCBhdHRyaWJ1dGUuIEFsbG93ZWQgdmFsdWVzOlxuXG5gYXV0b2AgKGRlZmF1bHQpXG5cbk5vIHByZWZlcmVuY2UuIFRoZSBicm93c2VyIHVzZXMgaXRzIG93biBoZXVyaXN0aWNzIHRvIGRlY2lkZSB0aGUgcHJpb3JpdHkgb2YgdGhlIHJlc291cmNlLlxuXG5gaGlnaGBcblxuVGhlIHJlc291cmNlIHNob3VsZCBiZSBkb3dubG9hZGVkIGJlZm9yZSBvdGhlciBsb3dlci1wcmlvcml0eSBwYWdlIHJlc291cmNlcy5cblxuYGxvd2BcblxuVGhlIHJlc291cmNlIHNob3VsZCBiZSBkb3dubG9hZGVkIGFmdGVyIG90aGVyIGhpZ2hlci1wcmlvcml0eSBwYWdlIHJlc291cmNlcy4ifSx7bmFtZToicmVmZXJyZXJwb2xpY3kiLGRlc2NyaXB0aW9uOidJbmRpY2F0ZXMgd2hpY2ggW3JlZmVycmVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnQvcmVmZXJyZXIpIHRvIHNlbmQgd2hlbiBmZXRjaGluZyB0aGUgZnJhbWVcJ3MgcmVzb3VyY2U6XG5cbiogICBgbm8tcmVmZXJyZXJgOiBUaGUgW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQuXG4qICAgYG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlYCAoZGVmYXVsdCk6IFRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudCB0byBbb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L29yaWdpbiAib3JpZ2luOiBXZWIgY29udGVudFwncyBvcmlnaW4gaXMgZGVmaW5lZCBieSB0aGUgc2NoZW1lIChwcm90b2NvbCksIGhvc3QgKGRvbWFpbiksIGFuZCBwb3J0IG9mIHRoZSBVUkwgdXNlZCB0byBhY2Nlc3MgaXQuIFR3byBvYmplY3RzIGhhdmUgdGhlIHNhbWUgb3JpZ2luIG9ubHkgd2hlbiB0aGUgc2NoZW1lLCBob3N0LCBhbmQgcG9ydCBhbGwgbWF0Y2guIilzIHdpdGhvdXQgW1RMU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9UTFMgIlRMUzogVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpLCBwcmV2aW91c2x5IGtub3duIGFzIFNlY3VyZSBTb2NrZXRzIExheWVyIChTU0wpLCBpcyBhIHByb3RvY29sIHVzZWQgYnkgYXBwbGljYXRpb25zIHRvIGNvbW11bmljYXRlIHNlY3VyZWx5IGFjcm9zcyBhIG5ldHdvcmssIHByZXZlbnRpbmcgdGFtcGVyaW5nIHdpdGggYW5kIGVhdmVzZHJvcHBpbmcgb24gZW1haWwsIHdlYiBicm93c2luZywgbWVzc2FnaW5nLCBhbmQgb3RoZXIgcHJvdG9jb2xzLiIpIChbSFRUUFNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvSFRUUFMgIkhUVFBTOiBIVFRQUyAoSFRUUCBTZWN1cmUpIGlzIGFuIGVuY3J5cHRlZCB2ZXJzaW9uIG9mIHRoZSBIVFRQIHByb3RvY29sLiBJdCB1c3VhbGx5IHVzZXMgU1NMIG9yIFRMUyB0byBlbmNyeXB0IGFsbCBjb21tdW5pY2F0aW9uIGJldHdlZW4gYSBjbGllbnQgYW5kIGEgc2VydmVyLiBUaGlzIHNlY3VyZSBjb25uZWN0aW9uIGFsbG93cyBjbGllbnRzIHRvIHNhZmVseSBleGNoYW5nZSBzZW5zaXRpdmUgZGF0YSB3aXRoIGEgc2VydmVyLCBmb3IgZXhhbXBsZSBmb3IgYmFua2luZyBhY3Rpdml0aWVzIG9yIG9ubGluZSBzaG9wcGluZy4iKSkuXG4qICAgYG9yaWdpbmA6IFRoZSBzZW50IHJlZmVycmVyIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgb3JpZ2luIG9mIHRoZSByZWZlcnJpbmcgcGFnZTogaXRzIFtzY2hlbWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQXJjaGl2ZS9Nb3ppbGxhL1VSSVNjaGVtZSksIFtob3N0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L2hvc3QgImhvc3Q6IEEgaG9zdCBpcyBhIGRldmljZSBjb25uZWN0ZWQgdG8gdGhlIEludGVybmV0IChvciBhIGxvY2FsIG5ldHdvcmspLiBTb21lIGhvc3RzIGNhbGxlZCBzZXJ2ZXJzIG9mZmVyIGFkZGl0aW9uYWwgc2VydmljZXMgbGlrZSBzZXJ2aW5nIHdlYnBhZ2VzIG9yIHN0b3JpbmcgZmlsZXMgYW5kIGVtYWlscy4iKSwgYW5kIFtwb3J0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3BvcnQgInBvcnQ6IEZvciBhIGNvbXB1dGVyIGNvbm5lY3RlZCB0byBhIG5ldHdvcmsgd2l0aCBhbiBJUCBhZGRyZXNzLCBhIHBvcnQgaXMgYSBjb21tdW5pY2F0aW9uIGVuZHBvaW50LiBQb3J0cyBhcmUgZGVzaWduYXRlZCBieSBudW1iZXJzLCBhbmQgYmVsb3cgMTAyNCBlYWNoIHBvcnQgaXMgYXNzb2NpYXRlZCBieSBkZWZhdWx0IHdpdGggYSBzcGVjaWZpYyBwcm90b2NvbC4iKS5cbiogICBgb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYDogVGhlIHJlZmVycmVyIHNlbnQgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydC4gTmF2aWdhdGlvbnMgb24gdGhlIHNhbWUgb3JpZ2luIHdpbGwgc3RpbGwgaW5jbHVkZSB0aGUgcGF0aC5cbiogICBgc2FtZS1vcmlnaW5gOiBBIHJlZmVycmVyIHdpbGwgYmUgc2VudCBmb3IgW3NhbWUgb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1NhbWUtb3JpZ2luX3BvbGljeSAic2FtZSBvcmlnaW46IFRoZSBzYW1lLW9yaWdpbiBwb2xpY3kgaXMgYSBjcml0aWNhbCBzZWN1cml0eSBtZWNoYW5pc20gdGhhdCByZXN0cmljdHMgaG93IGEgZG9jdW1lbnQgb3Igc2NyaXB0IGxvYWRlZCBmcm9tIG9uZSBvcmlnaW4gY2FuIGludGVyYWN0IHdpdGggYSByZXNvdXJjZSBmcm9tIGFub3RoZXIgb3JpZ2luLiIpLCBidXQgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIHdpbGwgY29udGFpbiBubyByZWZlcnJlciBpbmZvcm1hdGlvbi5cbiogICBgc3RyaWN0LW9yaWdpbmA6IE9ubHkgc2VuZCB0aGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBhcyB0aGUgcmVmZXJyZXIgd2hlbiB0aGUgcHJvdG9jb2wgc2VjdXJpdHkgbGV2ZWwgc3RheXMgdGhlIHNhbWUgKEhUVFBT4oaSSFRUUFMpLCBidXQgZG9uXCd0IHNlbmQgaXQgdG8gYSBsZXNzIHNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFPihpJIVFRQKS5cbiogICBgc3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmA6IFNlbmQgYSBmdWxsIFVSTCB3aGVuIHBlcmZvcm1pbmcgYSBzYW1lLW9yaWdpbiByZXF1ZXN0LCBvbmx5IHNlbmQgdGhlIG9yaWdpbiB3aGVuIHRoZSBwcm90b2NvbCBzZWN1cml0eSBsZXZlbCBzdGF5cyB0aGUgc2FtZSAoSFRUUFPihpJIVFRQUyksIGFuZCBzZW5kIG5vIGhlYWRlciB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChIVFRQU+KGkkhUVFApLlxuKiAgIGB1bnNhZmUtdXJsYDogVGhlIHJlZmVycmVyIHdpbGwgaW5jbHVkZSB0aGUgb3JpZ2luIF9hbmRfIHRoZSBwYXRoIChidXQgbm90IHRoZSBbZnJhZ21lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL2hhc2gpLCBbcGFzc3dvcmRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL3Bhc3N3b3JkKSwgb3IgW3VzZXJuYW1lXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy91c2VybmFtZSkpLiAqKlRoaXMgdmFsdWUgaXMgdW5zYWZlKiosIGJlY2F1c2UgaXQgbGVha3Mgb3JpZ2lucyBhbmQgcGF0aHMgZnJvbSBUTFMtcHJvdGVjdGVkIHJlc291cmNlcyB0byBpbnNlY3VyZSBvcmlnaW5zLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaWZyYW1lIn1dfSx7bmFtZToiZW1iZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBlbWJlZCBlbGVtZW50IHByb3ZpZGVzIGFuIGludGVncmF0aW9uIHBvaW50IGZvciBhbiBleHRlcm5hbCAodHlwaWNhbGx5IG5vbi1IVE1MKSBhcHBsaWNhdGlvbiBvciBpbnRlcmFjdGl2ZSBjb250ZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBVUkzCoG9mIHRoZSByZXNvdXJjZSBiZWluZyBlbWJlZGRlZC4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBNSU1FwqB0eXBlIHRvIHVzZSB0byBzZWxlY3QgdGhlIHBsdWctaW4gdG8gaW5zdGFudGlhdGUuIn19LHtuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRpc3BsYXllZCB3aWR0aCBvZiB0aGUgcmVzb3VyY2UsIGluIFtDU1MgcGl4ZWxzXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy8jcHgpLiBUaGlzIG11c3QgYmUgYW4gYWJzb2x1dGUgdmFsdWU7IHBlcmNlbnRhZ2VzIGFyZSBfbm90XyBhbGxvd2VkLiJ9fSx7bmFtZToiaGVpZ2h0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGlzcGxheWVkIGhlaWdodCBvZiB0aGUgcmVzb3VyY2UsIGluIFtDU1MgcGl4ZWxzXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy8jcHgpLiBUaGlzIG11c3QgYmUgYW4gYWJzb2x1dGUgdmFsdWU7IHBlcmNlbnRhZ2VzIGFyZSBfbm90XyBhbGxvd2VkLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2VtYmVkIn1dfSx7bmFtZToib2JqZWN0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgb2JqZWN0IGVsZW1lbnQgY2FuIHJlcHJlc2VudCBhbiBleHRlcm5hbCByZXNvdXJjZSwgd2hpY2gsIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0aGUgcmVzb3VyY2UsIHdpbGwgZWl0aGVyIGJlIHRyZWF0ZWQgYXMgYW4gaW1hZ2UsIGFzIGEgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQsIG9yIGFzIGFuIGV4dGVybmFsIHJlc291cmNlIHRvIGJlIHByb2Nlc3NlZCBieSBhIHBsdWdpbi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZGF0YSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGFkZHJlc3Mgb2YgdGhlIHJlc291cmNlIGFzIGEgdmFsaWQgVVJMLiBBdCBsZWFzdCBvbmUgb2YgKipkYXRhKiogYW5kICoqdHlwZSoqIG11c3QgYmUgZGVmaW5lZC4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBbY29udGVudCB0eXBlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0NvbnRlbnRfdHlwZSkgb2YgdGhlIHJlc291cmNlIHNwZWNpZmllZCBieSAqKmRhdGEqKi4gQXQgbGVhc3Qgb25lIG9mICoqZGF0YSoqIGFuZCAqKnR5cGUqKiBtdXN0IGJlIGRlZmluZWQuIn19LHtuYW1lOiJ0eXBlbXVzdG1hdGNoIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgaWYgdGhlICoqdHlwZSoqIGF0dHJpYnV0ZSBhbmQgdGhlIGFjdHVhbCBbY29udGVudCB0eXBlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0NvbnRlbnRfdHlwZSkgb2YgdGhlIHJlc291cmNlIG11c3QgbWF0Y2ggdG8gYmUgdXNlZC4ifX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYW1lIG9mIHZhbGlkIGJyb3dzaW5nIGNvbnRleHQgKEhUTUw1KSwgb3IgdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2wgKEhUTUwgNCkuIn19LHtuYW1lOiJ1c2VtYXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgaGFzaC1uYW1lIHJlZmVyZW5jZSB0byBhIFtgPG1hcD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWFwIFwiVGhlIEhUTUwgPG1hcD4gZWxlbWVudCBpcyB1c2VkIHdpdGggPGFyZWE+IGVsZW1lbnRzIHRvIGRlZmluZSBhbiBpbWFnZSBtYXAgKGEgY2xpY2thYmxlIGxpbmsgYXJlYSkuXCIpIGVsZW1lbnQ7IHRoYXQgaXMgYSAnIycgZm9sbG93ZWQgYnkgdGhlIHZhbHVlIG9mIGEgW2BuYW1lYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21hcCNhdHRyLW5hbWUpIG9mIGEgbWFwIGVsZW1lbnQuIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgZm9ybSBlbGVtZW50LCBpZiBhbnksIHRoYXQgdGhlIG9iamVjdCBlbGVtZW50IGlzIGFzc29jaWF0ZWQgd2l0aCAoaXRzIF9mb3JtIG93bmVyXykuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIG11c3QgYmUgYW4gSUQgb2YgYSBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50Lid9fSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB3aWR0aCBvZiB0aGUgZGlzcGxheSByZXNvdXJjZSwgaW4gW0NTUyBwaXhlbHNdKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLyNweCkuIC0tIChBYnNvbHV0ZSB2YWx1ZXMgb25seS4gW05PIHBlcmNlbnRhZ2VzXShodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9lbWJlZGRlZC1jb250ZW50Lmh0bWwjZGltZW5zaW9uLWF0dHJpYnV0ZXMpKSJ9fSx7bmFtZToiaGVpZ2h0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaGVpZ2h0IG9mIHRoZSBkaXNwbGF5ZWQgcmVzb3VyY2UsIGluIFtDU1MgcGl4ZWxzXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy8jcHgpLiAtLSAoQWJzb2x1dGUgdmFsdWVzIG9ubHkuIFtOTyBwZXJjZW50YWdlc10oaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZW1iZWRkZWQtY29udGVudC5odG1sI2RpbWVuc2lvbi1hdHRyaWJ1dGVzKSkifX0se25hbWU6ImFyY2hpdmUiLGRlc2NyaXB0aW9uOiJBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIFVSSXMgZm9yIGFyY2hpdmVzIG9mIHJlc291cmNlcyBmb3IgdGhlIG9iamVjdC4ifSx7bmFtZToiYm9yZGVyIixkZXNjcmlwdGlvbjoiVGhlIHdpZHRoIG9mIGEgYm9yZGVyIGFyb3VuZCB0aGUgY29udHJvbCwgaW4gcGl4ZWxzLiJ9LHtuYW1lOiJjbGFzc2lkIixkZXNjcmlwdGlvbjoiVGhlIFVSSSBvZiB0aGUgb2JqZWN0J3MgaW1wbGVtZW50YXRpb24uIEl0IGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGgsIG9yIGluIHBsYWNlIG9mLCB0aGUgKipkYXRhKiogYXR0cmlidXRlLiJ9LHtuYW1lOiJjb2RlYmFzZSIsZGVzY3JpcHRpb246IlRoZSBiYXNlIHBhdGggdXNlZCB0byByZXNvbHZlIHJlbGF0aXZlIFVSSXMgc3BlY2lmaWVkIGJ5ICoqY2xhc3NpZCoqLCAqKmRhdGEqKiwgb3IgKiphcmNoaXZlKiouIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGlzIHRoZSBiYXNlIFVSSSBvZiB0aGUgY3VycmVudCBkb2N1bWVudC4ifSx7bmFtZToiY29kZXR5cGUiLGRlc2NyaXB0aW9uOiJUaGUgY29udGVudCB0eXBlIG9mIHRoZSBkYXRhIHNwZWNpZmllZCBieSAqKmNsYXNzaWQqKi4ifSx7bmFtZToiZGVjbGFyZSIsZGVzY3JpcHRpb246IlRoZSBwcmVzZW5jZSBvZiB0aGlzIEJvb2xlYW4gYXR0cmlidXRlIG1ha2VzIHRoaXMgZWxlbWVudCBhIGRlY2xhcmF0aW9uIG9ubHkuIFRoZSBvYmplY3QgbXVzdCBiZSBpbnN0YW50aWF0ZWQgYnkgYSBzdWJzZXF1ZW50IGA8b2JqZWN0PmAgZWxlbWVudC4gSW4gSFRNTDUsIHJlcGVhdCB0aGUgPG9iamVjdD4gZWxlbWVudCBjb21wbGV0ZWx5IGVhY2ggdGhhdCB0aGF0IHRoZSByZXNvdXJjZSBpcyByZXVzZWQuIn0se25hbWU6InN0YW5kYnkiLGRlc2NyaXB0aW9uOiJBIG1lc3NhZ2UgdGhhdCB0aGUgYnJvd3NlciBjYW4gc2hvdyB3aGlsZSBsb2FkaW5nIHRoZSBvYmplY3QncyBpbXBsZW1lbnRhdGlvbiBhbmQgZGF0YS4ifSx7bmFtZToidGFiaW5kZXgiLGRlc2NyaXB0aW9uOiJUaGUgcG9zaXRpb24gb2YgdGhlIGVsZW1lbnQgaW4gdGhlIHRhYmJpbmcgbmF2aWdhdGlvbiBvcmRlciBmb3IgdGhlIGN1cnJlbnQgZG9jdW1lbnQuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vYmplY3QifV19LHtuYW1lOiJwYXJhbSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBhcmFtIGVsZW1lbnQgZGVmaW5lcyBwYXJhbWV0ZXJzIGZvciBwbHVnaW5zIGludm9rZWQgYnkgb2JqZWN0IGVsZW1lbnRzLiBJdCBkb2VzIG5vdCByZXByZXNlbnQgYW55dGhpbmcgb24gaXRzIG93bi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiTmFtZSBvZiB0aGUgcGFyYW1ldGVyLiJ9fSx7bmFtZToidmFsdWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlNwZWNpZmllcyB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOidPbmx5IHVzZWQgaWYgdGhlIGB2YWx1ZXR5cGVgIGlzIHNldCB0byAicmVmIi4gU3BlY2lmaWVzIHRoZSBNSU1FIHR5cGUgb2YgdmFsdWVzIGZvdW5kIGF0IHRoZSBVUkkgc3BlY2lmaWVkIGJ5IHZhbHVlLid9LHtuYW1lOiJ2YWx1ZXR5cGUiLGRlc2NyaXB0aW9uOidTcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGB2YWx1ZWAgYXR0cmlidXRlLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgZGF0YTogRGVmYXVsdCB2YWx1ZS4gVGhlIHZhbHVlIGlzIHBhc3NlZCB0byB0aGUgb2JqZWN0XCdzIGltcGxlbWVudGF0aW9uIGFzIGEgc3RyaW5nLlxuKiAgIHJlZjogVGhlIHZhbHVlIGlzIGEgVVJJIHRvIGEgcmVzb3VyY2Ugd2hlcmUgcnVuLXRpbWUgdmFsdWVzIGFyZSBzdG9yZWQuXG4qICAgb2JqZWN0OiBBbiBJRCBvZiBhbm90aGVyIFtgPG9iamVjdD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb2JqZWN0ICJUaGUgSFRNTCA8b2JqZWN0PiBlbGVtZW50IHJlcHJlc2VudHMgYW4gZXh0ZXJuYWwgcmVzb3VyY2UsIHdoaWNoIGNhbiBiZSB0cmVhdGVkIGFzIGFuIGltYWdlLCBhIG5lc3RlZCBicm93c2luZyBjb250ZXh0LCBvciBhIHJlc291cmNlIHRvIGJlIGhhbmRsZWQgYnkgYSBwbHVnaW4uIikgaW4gdGhlIHNhbWUgZG9jdW1lbnQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9wYXJhbSJ9XX0se25hbWU6InZpZGVvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHZpZGVvIGVsZW1lbnQgaXMgdXNlZCBmb3IgcGxheWluZyB2aWRlb3Mgb3IgbW92aWVzLCBhbmQgYXVkaW8gZmlsZXMgd2l0aCBjYXB0aW9ucy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3JjIn0se25hbWU6ImNyb3Nzb3JpZ2luIix2YWx1ZVNldDoieG8ifSx7bmFtZToicG9zdGVyIn0se25hbWU6InByZWxvYWQiLHZhbHVlU2V0OiJwbCJ9LHtuYW1lOiJhdXRvcGxheSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGU7IGlmIHNwZWNpZmllZCwgdGhlIHZpZGVvIGF1dG9tYXRpY2FsbHkgYmVnaW5zIHRvIHBsYXkgYmFjayBhcyBzb29uIGFzIGl0IGNhbiBkbyBzbyB3aXRob3V0IHN0b3BwaW5nIHRvIGZpbmlzaCBsb2FkaW5nIHRoZSBkYXRhLiJ9fSx7bmFtZToibWVkaWFncm91cCJ9LHtuYW1lOiJsb29wIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJtdXRlZCIsdmFsdWVTZXQ6InYifSx7bmFtZToiY29udHJvbHMiLHZhbHVlU2V0OiJ2In0se25hbWU6IndpZHRoIn0se25hbWU6ImhlaWdodCJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdmlkZW8ifV19LHtuYW1lOiJhdWRpbyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gYXVkaW8gZWxlbWVudCByZXByZXNlbnRzIGEgc291bmQgb3IgYXVkaW8gc3RyZWFtLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBVUkwgb2YgdGhlIGF1ZGlvIHRvIGVtYmVkLiBUaGlzIGlzIHN1YmplY3QgdG8gW0hUVFAgYWNjZXNzIGNvbnRyb2xzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0hUVFBfYWNjZXNzX2NvbnRyb2wpLiBUaGlzIGlzIG9wdGlvbmFsOyB5b3UgbWF5IGluc3RlYWQgdXNlIHRoZSBbYDxzb3VyY2U+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NvdXJjZSAiVGhlIEhUTUwgPHNvdXJjZT4gZWxlbWVudCBzcGVjaWZpZXMgbXVsdGlwbGUgbWVkaWEgcmVzb3VyY2VzIGZvciB0aGUgPHBpY3R1cmU+LCB0aGUgPGF1ZGlvPiBlbGVtZW50LCBvciB0aGUgPHZpZGVvPiBlbGVtZW50LiIpIGVsZW1lbnQgd2l0aGluIHRoZSBhdWRpbyBibG9jayB0byBzcGVjaWZ5IHRoZSBhdWRpbyB0byBlbWJlZC4nfX0se25hbWU6ImNyb3Nzb3JpZ2luIix2YWx1ZVNldDoieG8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGVzIHdoZXRoZXIgdG8gdXNlIENPUlMgdG8gZmV0Y2ggdGhlIHJlbGF0ZWQgaW1hZ2UuIFtDT1JTLWVuYWJsZWQgcmVzb3VyY2VzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NPUlNfRW5hYmxlZF9JbWFnZSkgY2FuIGJlIHJldXNlZCBpbiB0aGUgW2A8Y2FudmFzPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYW52YXMgIlVzZSB0aGUgSFRNTCA8Y2FudmFzPiBlbGVtZW50IHdpdGggZWl0aGVyIHRoZSBjYW52YXMgc2NyaXB0aW5nIEFQSSBvciB0aGUgV2ViR0wgQVBJIHRvIGRyYXcgZ3JhcGhpY3MgYW5kIGFuaW1hdGlvbnMuIikgZWxlbWVudCB3aXRob3V0IGJlaW5nIF90YWludGVkXy4gVGhlIGFsbG93ZWQgdmFsdWVzIGFyZTpcblxuYW5vbnltb3VzXG5cblNlbmRzIGEgY3Jvc3Mtb3JpZ2luIHJlcXVlc3Qgd2l0aG91dCBhIGNyZWRlbnRpYWwuIEluIG90aGVyIHdvcmRzLCBpdCBzZW5kcyB0aGUgYE9yaWdpbjpgIEhUVFAgaGVhZGVyIHdpdGhvdXQgYSBjb29raWUsIFguNTA5IGNlcnRpZmljYXRlLCBvciBwZXJmb3JtaW5nIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24uIElmIHRoZSBzZXJ2ZXIgZG9lcyBub3QgZ2l2ZSBjcmVkZW50aWFscyB0byB0aGUgb3JpZ2luIHNpdGUgKGJ5IG5vdCBzZXR0aW5nIHRoZSBgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOmAgSFRUUCBoZWFkZXIpLCB0aGUgaW1hZ2Ugd2lsbCBiZSBfdGFpbnRlZF8sIGFuZCBpdHMgdXNhZ2UgcmVzdHJpY3RlZC5cblxudXNlLWNyZWRlbnRpYWxzXG5cblNlbmRzIGEgY3Jvc3Mtb3JpZ2luIHJlcXVlc3Qgd2l0aCBhIGNyZWRlbnRpYWwuIEluIG90aGVyIHdvcmRzLCBpdCBzZW5kcyB0aGUgYE9yaWdpbjpgIEhUVFAgaGVhZGVyIHdpdGggYSBjb29raWUsIGEgY2VydGlmaWNhdGUsIG9yIHBlcmZvcm1pbmcgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbi4gSWYgdGhlIHNlcnZlciBkb2VzIG5vdCBnaXZlIGNyZWRlbnRpYWxzIHRvIHRoZSBvcmlnaW4gc2l0ZSAodGhyb3VnaCBgQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHM6YCBIVFRQIGhlYWRlciksIHRoZSBpbWFnZSB3aWxsIGJlIF90YWludGVkXyBhbmQgaXRzIHVzYWdlIHJlc3RyaWN0ZWQuXG5cbldoZW4gbm90IHByZXNlbnQsIHRoZSByZXNvdXJjZSBpcyBmZXRjaGVkIHdpdGhvdXQgYSBDT1JTIHJlcXVlc3QgKGkuZS4gd2l0aG91dCBzZW5kaW5nIHRoZSBgT3JpZ2luOmAgSFRUUCBoZWFkZXIpLCBwcmV2ZW50aW5nIGl0cyBub24tdGFpbnRlZCB1c2VkIGluIFtgPGNhbnZhcz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FudmFzICJVc2UgdGhlIEhUTUwgPGNhbnZhcz4gZWxlbWVudCB3aXRoIGVpdGhlciB0aGUgY2FudmFzIHNjcmlwdGluZyBBUEkgb3IgdGhlIFdlYkdMIEFQSSB0byBkcmF3IGdyYXBoaWNzIGFuZCBhbmltYXRpb25zLiIpIGVsZW1lbnRzLiBJZiBpbnZhbGlkLCBpdCBpcyBoYW5kbGVkIGFzIGlmIHRoZSBlbnVtZXJhdGVkIGtleXdvcmQgKiphbm9ueW1vdXMqKiB3YXMgdXNlZC4gU2VlIFtDT1JTIHNldHRpbmdzIGF0dHJpYnV0ZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvSFRNTC9DT1JTX3NldHRpbmdzX2F0dHJpYnV0ZXMpIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLid9fSx7bmFtZToicHJlbG9hZCIsdmFsdWVTZXQ6InBsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgYSBoaW50IHRvIHRoZSBicm93c2VyIGFib3V0IHdoYXQgdGhlIGF1dGhvciB0aGlua3Mgd2lsbCBsZWFkIHRvIHRoZSBiZXN0IHVzZXIgZXhwZXJpZW5jZS4gSXQgbWF5IGhhdmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYG5vbmVgOiBJbmRpY2F0ZXMgdGhhdCB0aGUgYXVkaW8gc2hvdWxkIG5vdCBiZSBwcmVsb2FkZWQuXG4qICAgYG1ldGFkYXRhYDogSW5kaWNhdGVzIHRoYXQgb25seSBhdWRpbyBtZXRhZGF0YSAoZS5nLiBsZW5ndGgpIGlzIGZldGNoZWQuXG4qICAgYGF1dG9gOiBJbmRpY2F0ZXMgdGhhdCB0aGUgd2hvbGUgYXVkaW8gZmlsZSBjYW4gYmUgZG93bmxvYWRlZCwgZXZlbiBpZiB0aGUgdXNlciBpcyBub3QgZXhwZWN0ZWQgdG8gdXNlIGl0LlxuKiAgIF9lbXB0eSBzdHJpbmdfOiBBIHN5bm9ueW0gb2YgdGhlIGBhdXRvYCB2YWx1ZS5cblxuSWYgbm90IHNldCwgYHByZWxvYWRgJ3MgZGVmYXVsdCB2YWx1ZSBpcyBicm93c2VyLWRlZmluZWQgKGkuZS4gZWFjaCBicm93c2VyIG1heSBoYXZlIGl0cyBvd24gZGVmYXVsdCB2YWx1ZSkuIFRoZSBzcGVjIGFkdmlzZXMgaXQgdG8gYmUgc2V0IHRvIGBtZXRhZGF0YWAuXG5cbioqVXNhZ2Ugbm90ZXM6KipcblxuKiAgIFRoZSBgYXV0b3BsYXlgIGF0dHJpYnV0ZSBoYXMgcHJlY2VkZW5jZSBvdmVywqBgcHJlbG9hZGAuIElmIGBhdXRvcGxheWAgaXMgc3BlY2lmaWVkLCB0aGUgYnJvd3NlciB3b3VsZCBvYnZpb3VzbHkgbmVlZCB0byBzdGFydCBkb3dubG9hZGluZyB0aGUgYXVkaW8gZm9yIHBsYXliYWNrLlxuKiAgIFRoZSBicm93c2VyIGlzIG5vdCBmb3JjZWQgYnkgdGhlIHNwZWNpZmljYXRpb24gdG8gZm9sbG93IHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZTsgaXQgaXMgYSBtZXJlIGhpbnQuIn19LHtuYW1lOiJhdXRvcGxheSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGU6wqBpZiBzcGVjaWZpZWQsIHRoZSBhdWRpbyB3aWxsIGF1dG9tYXRpY2FsbHkgYmVnaW4gcGxheWJhY2sgYXMgc29vbiBhcyBpdCBjYW4gZG8gc28sIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIGVudGlyZSBhdWRpbyBmaWxlIHRvIGZpbmlzaCBkb3dubG9hZGluZy5cblxuKipOb3RlKio6IFNpdGVzIHRoYXQgYXV0b21hdGljYWxseSBwbGF5IGF1ZGlvIChvciB2aWRlb3Mgd2l0aCBhbiBhdWRpbyB0cmFjaykgY2FuIGJlIGFuIHVucGxlYXNhbnQgZXhwZXJpZW5jZSBmb3IgdXNlcnMsIHNvIHNob3VsZCBiZSBhdm9pZGVkIHdoZW4gcG9zc2libGUuIElmIHlvdSBtdXN0IG9mZmVyIGF1dG9wbGF5IGZ1bmN0aW9uYWxpdHksIHlvdSBzaG91bGQgbWFrZSBpdCBvcHQtaW4gKHJlcXVpcmluZyBhIHVzZXIgdG8gc3BlY2lmaWNhbGx5IGVuYWJsZSBpdCkuIEhvd2V2ZXIsIHRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIGNyZWF0aW5nIG1lZGlhIGVsZW1lbnRzIHdob3NlIHNvdXJjZSB3aWxsIGJlIHNldCBhdCBhIGxhdGVyIHRpbWUsIHVuZGVyIHVzZXIgY29udHJvbC4ifX0se25hbWU6Im1lZGlhZ3JvdXAifSx7bmFtZToibG9vcCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGU6wqBpZiBzcGVjaWZpZWQsIHRoZSBhdWRpbyBwbGF5ZXIgd2lsbMKgYXV0b21hdGljYWxseSBzZWVrIGJhY2sgdG8gdGhlIHN0YXJ0wqB1cG9uIHJlYWNoaW5nIHRoZSBlbmQgb2YgdGhlIGF1ZGlvLiJ9fSx7bmFtZToibXV0ZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGF1ZGlvIHdpbGwgYmUgaW5pdGlhbGx5IHNpbGVuY2VkLiBJdHMgZGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLiJ9fSx7bmFtZToiY29udHJvbHMiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGlzIGF0dHJpYnV0ZSBpcyBwcmVzZW50LCB0aGUgYnJvd3NlciB3aWxsIG9mZmVyIGNvbnRyb2xzIHRvIGFsbG93IHRoZSB1c2VyIHRvIGNvbnRyb2wgYXVkaW8gcGxheWJhY2ssIGluY2x1ZGluZyB2b2x1bWUsIHNlZWtpbmcsIGFuZCBwYXVzZS9yZXN1bWUgcGxheWJhY2suIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXVkaW8ifV19LHtuYW1lOiJzb3VyY2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzb3VyY2UgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBzcGVjaWZ5IG11bHRpcGxlIGFsdGVybmF0aXZlIG1lZGlhIHJlc291cmNlcyBmb3IgbWVkaWEgZWxlbWVudHMuIEl0IGRvZXMgbm90IHJlcHJlc2VudCBhbnl0aGluZyBvbiBpdHMgb3duLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1JlcXVpcmVkIGZvciBbYDxhdWRpbz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXVkaW8gIlRoZSBIVE1MIDxhdWRpbz4gZWxlbWVudCBpcyB1c2VkIHRvIGVtYmVkIHNvdW5kIGNvbnRlbnQgaW4gZG9jdW1lbnRzLiBJdCBtYXkgY29udGFpbiBvbmUgb3IgbW9yZSBhdWRpbyBzb3VyY2VzLCByZXByZXNlbnRlZCB1c2luZyB0aGUgc3JjIGF0dHJpYnV0ZSBvciB0aGUgPHNvdXJjZT4gZWxlbWVudDrCoHRoZSBicm93c2VyIHdpbGwgY2hvb3NlIHRoZSBtb3N0IHN1aXRhYmxlIG9uZS4gSXQgY2FuIGFsc28gYmUgdGhlIGRlc3RpbmF0aW9uIGZvciBzdHJlYW1lZCBtZWRpYSwgdXNpbmcgYSBNZWRpYVN0cmVhbS4iKSBhbmQgW2A8dmlkZW8+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3ZpZGVvICJUaGUgSFRNTCBWaWRlbyBlbGVtZW50ICg8dmlkZW8+KSBlbWJlZHMgYSBtZWRpYSBwbGF5ZXIgd2hpY2ggc3VwcG9ydHMgdmlkZW8gcGxheWJhY2sgaW50byB0aGUgZG9jdW1lbnQuIiksIGFkZHJlc3Mgb2YgdGhlIG1lZGlhIHJlc291cmNlLiBUaGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgaWdub3JlZCB3aGVuIHRoZSBgPHNvdXJjZT5gIGVsZW1lbnQgaXMgcGxhY2VkIGluc2lkZSBhIFtgPHBpY3R1cmU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3BpY3R1cmUgIlRoZSBIVE1MIDxwaWN0dXJlPiBlbGVtZW50IGNvbnRhaW5zIHplcm8gb3IgbW9yZSA8c291cmNlPiBlbGVtZW50cyBhbmQgb25lIDxpbWc+IGVsZW1lbnQgdG8gcHJvdmlkZSB2ZXJzaW9ucyBvZiBhbiBpbWFnZSBmb3IgZGlmZmVyZW50IGRpc3BsYXkvZGV2aWNlIHNjZW5hcmlvcy4iKSBlbGVtZW50Lid9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIE1JTUUtdHlwZSBvZiB0aGUgcmVzb3VyY2UsIG9wdGlvbmFsbHkgd2l0aCBhIGBjb2RlY3NgIHBhcmFtZXRlci4gU2VlIFtSRkMgNDI4MV0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQyODEpIGZvciBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gc3BlY2lmeSBjb2RlY3MuIn19LHtuYW1lOiJzaXplcyIsZGVzY3JpcHRpb246J0lzIGEgbGlzdCBvZiBzb3VyY2Ugc2l6ZXMgdGhhdCBkZXNjcmliZXMgdGhlIGZpbmFsIHJlbmRlcmVkIHdpZHRoIG9mIHRoZSBpbWFnZSByZXByZXNlbnRlZCBieSB0aGUgc291cmNlLiBFYWNoIHNvdXJjZSBzaXplIGNvbnNpc3RzIG9mIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgbWVkaWEgY29uZGl0aW9uLWxlbmd0aCBwYWlycy4gVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIGJ5IHRoZSBicm93c2VyIHRvIGRldGVybWluZSwgYmVmb3JlIGxheWluZyB0aGUgcGFnZSBvdXQsIHdoaWNoIGltYWdlIGRlZmluZWQgaW4gW2BzcmNzZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc291cmNlI2F0dHItc3Jjc2V0KSB0byB1c2UuICBcblRoZSBgc2l6ZXNgIGF0dHJpYnV0ZSBoYXMgYW4gZWZmZWN0IG9ubHkgd2hlbiB0aGUgW2A8c291cmNlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zb3VyY2UgIlRoZSBIVE1MIDxzb3VyY2U+IGVsZW1lbnQgc3BlY2lmaWVzIG11bHRpcGxlIG1lZGlhIHJlc291cmNlcyBmb3IgdGhlIDxwaWN0dXJlPiwgdGhlIDxhdWRpbz4gZWxlbWVudCwgb3IgdGhlIDx2aWRlbz4gZWxlbWVudC4iKSBlbGVtZW50IGlzIHRoZSBkaXJlY3QgY2hpbGQgb2YgYSBbYDxwaWN0dXJlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9waWN0dXJlICJUaGUgSFRNTCA8cGljdHVyZT4gZWxlbWVudCBjb250YWlucyB6ZXJvIG9yIG1vcmUgPHNvdXJjZT4gZWxlbWVudHMgYW5kIG9uZSA8aW1nPiBlbGVtZW50IHRvIHByb3ZpZGUgdmVyc2lvbnMgb2YgYW4gaW1hZ2UgZm9yIGRpZmZlcmVudCBkaXNwbGF5L2RldmljZSBzY2VuYXJpb3MuIikgZWxlbWVudC4nfSx7bmFtZToic3Jjc2V0IixkZXNjcmlwdGlvbjoiQSBsaXN0IG9mIG9uZSBvciBtb3JlIHN0cmluZ3Mgc2VwYXJhdGVkIGJ5IGNvbW1hcyBpbmRpY2F0aW5nIGEgc2V0IG9mIHBvc3NpYmxlIGltYWdlcyByZXByZXNlbnRlZCBieSB0aGUgc291cmNlIGZvciB0aGUgYnJvd3NlciB0byB1c2UuIEVhY2ggc3RyaW5nIGlzIGNvbXBvc2VkIG9mOlxuXG4xLiAgb25lIFVSTCB0byBhbiBpbWFnZSxcbjIuICBhIHdpZHRoIGRlc2NyaXB0b3IsIHRoYXQgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyIGRpcmVjdGx5IGZvbGxvd2VkIGJ5IGAndydgLiBUaGUgZGVmYXVsdCB2YWx1ZSwgaWYgbWlzc2luZywgaXMgdGhlIGluZmluaXR5LlxuMy4gIGEgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9yLCB0aGF0IGlzIGEgcG9zaXRpdmUgZmxvYXRpbmcgbnVtYmVyIGRpcmVjdGx5IGZvbGxvd2VkIGJ5IGAneCdgLiBUaGUgZGVmYXVsdCB2YWx1ZSwgaWYgbWlzc2luZywgaXMgYDF4YC5cblxuRWFjaCBzdHJpbmcgaW4gdGhlIGxpc3QgbXVzdCBoYXZlIGF0IGxlYXN0IGEgd2lkdGggZGVzY3JpcHRvciBvciBhIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvciB0byBiZSB2YWxpZC4gQW1vbmcgdGhlIGxpc3QsIHRoZXJlIG11c3QgYmUgb25seSBvbmUgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHNhbWUgdHVwbGUgb2Ygd2lkdGggZGVzY3JpcHRvciBhbmQgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9yLiAgXG5UaGUgYnJvd3NlciBjaG9vc2VzIHRoZSBtb3N0IGFkZXF1YXRlIGltYWdlIHRvIGRpc3BsYXkgYXQgYSBnaXZlbiBwb2ludCBvZiB0aW1lLiAgXG5UaGUgYHNyY3NldGAgYXR0cmlidXRlIGhhcyBhbiBlZmZlY3Qgb25seSB3aGVuIHRoZSBbYDxzb3VyY2U+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NvdXJjZSBcIlRoZSBIVE1MIDxzb3VyY2U+IGVsZW1lbnQgc3BlY2lmaWVzIG11bHRpcGxlIG1lZGlhIHJlc291cmNlcyBmb3IgdGhlIDxwaWN0dXJlPiwgdGhlIDxhdWRpbz4gZWxlbWVudCwgb3IgdGhlIDx2aWRlbz4gZWxlbWVudC5cIikgZWxlbWVudCBpcyB0aGUgZGlyZWN0IGNoaWxkIG9mIGEgW2A8cGljdHVyZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcGljdHVyZSBcIlRoZSBIVE1MIDxwaWN0dXJlPiBlbGVtZW50IGNvbnRhaW5zIHplcm8gb3IgbW9yZSA8c291cmNlPiBlbGVtZW50cyBhbmQgb25lIDxpbWc+IGVsZW1lbnQgdG8gcHJvdmlkZSB2ZXJzaW9ucyBvZiBhbiBpbWFnZSBmb3IgZGlmZmVyZW50IGRpc3BsYXkvZGV2aWNlIHNjZW5hcmlvcy5cIikgZWxlbWVudC4ifSx7bmFtZToibWVkaWEiLGRlc2NyaXB0aW9uOidbTWVkaWEgcXVlcnldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL01lZGlhX3F1ZXJpZXMpIG9mIHRoZSByZXNvdXJjZVwncyBpbnRlbmRlZCBtZWRpYTsgdGhpcyBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGEgW2A8cGljdHVyZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcGljdHVyZSAiVGhlIEhUTUwgPHBpY3R1cmU+IGVsZW1lbnQgY29udGFpbnMgemVybyBvciBtb3JlIDxzb3VyY2U+IGVsZW1lbnRzIGFuZCBvbmUgPGltZz4gZWxlbWVudCB0byBwcm92aWRlIHZlcnNpb25zIG9mIGFuIGltYWdlIGZvciBkaWZmZXJlbnQgZGlzcGxheS9kZXZpY2Ugc2NlbmFyaW9zLiIpIGVsZW1lbnQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zb3VyY2UifV19LHtuYW1lOiJ0cmFjayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRyYWNrIGVsZW1lbnQgYWxsb3dzIGF1dGhvcnMgdG8gc3BlY2lmeSBleHBsaWNpdCBleHRlcm5hbCB0aW1lZCB0ZXh0IHRyYWNrcyBmb3IgbWVkaWEgZWxlbWVudHMuIEl0IGRvZXMgbm90IHJlcHJlc2VudCBhbnl0aGluZyBvbiBpdHMgb3duLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkZWZhdWx0Iix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIHRyYWNrIHNob3VsZCBiZSBlbmFibGVkIHVubGVzcyB0aGUgdXNlcidzIHByZWZlcmVuY2VzIGluZGljYXRlIHRoYXQgYW5vdGhlciB0cmFjayBpcyBtb3JlIGFwcHJvcHJpYXRlLiBUaGlzIG1heSBvbmx5IGJlIHVzZWQgb24gb25lIGB0cmFja2AgZWxlbWVudCBwZXIgbWVkaWEgZWxlbWVudC4ifX0se25hbWU6ImtpbmQiLHZhbHVlU2V0OiJ0ayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSG93IHRoZSB0ZXh0IHRyYWNrIGlzIG1lYW50IHRvIGJlIHVzZWQuIElmIG9taXR0ZWQgdGhlIGRlZmF1bHQga2luZCBpcyBgc3VidGl0bGVzYC4gSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgcHJlc2VudCwgaXQgd2lsbCB1c2UgdGhlIGBzdWJ0aXRsZXNgLiBJZiB0aGUgYXR0cmlidXRlIGNvbnRhaW5zIGFuIGludmFsaWQgdmFsdWUsIGl0IHdpbGwgdXNlIGBtZXRhZGF0YWAuIChWZXJzaW9ucyBvZiBDaHJvbWUgZWFybGllciB0aGFuIDUyIHRyZWF0ZWQgYW4gaW52YWxpZCB2YWx1ZSBhcyBgc3VidGl0bGVzYC4pwqBUaGUgZm9sbG93aW5nIGtleXdvcmRzIGFyZSBhbGxvd2VkOlxuXG4qICAgYHN1YnRpdGxlc2BcbiAgICAqICAgU3VidGl0bGVzIHByb3ZpZGUgdHJhbnNsYXRpb24gb2YgY29udGVudCB0aGF0IGNhbm5vdCBiZSB1bmRlcnN0b29kIGJ5IHRoZSB2aWV3ZXIuIEZvciBleGFtcGxlIGRpYWxvZ3VlIG9yIHRleHQgdGhhdCBpcyBub3QgRW5nbGlzaCBpbiBhbiBFbmdsaXNoIGxhbmd1YWdlIGZpbG0uXG4gICAgKiAgIFN1YnRpdGxlcyBtYXkgY29udGFpbiBhZGRpdGlvbmFsIGNvbnRlbnQsIHVzdWFsbHkgZXh0cmEgYmFja2dyb3VuZCBpbmZvcm1hdGlvbi4gRm9yIGV4YW1wbGUgdGhlIHRleHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgU3RhciBXYXJzIGZpbG1zLCBvciB0aGUgZGF0ZSwgdGltZSwgYW5kIGxvY2F0aW9uIG9mIGEgc2NlbmUuXG4qICAgYGNhcHRpb25zYFxuICAgICogICBDbG9zZWQgY2FwdGlvbnMgcHJvdmlkZSBhIHRyYW5zY3JpcHRpb24gYW5kIHBvc3NpYmx5IGEgdHJhbnNsYXRpb24gb2YgYXVkaW8uXG4gICAgKiAgIEl0IG1heSBpbmNsdWRlIGltcG9ydGFudCBub24tdmVyYmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgbXVzaWMgY3VlcyBvciBzb3VuZCBlZmZlY3RzLiBJdCBtYXkgaW5kaWNhdGUgdGhlIGN1ZSdzIHNvdXJjZSAoZS5nLiBtdXNpYywgdGV4dCwgY2hhcmFjdGVyKS5cbiAgICAqICAgU3VpdGFibGUgZm9yIHVzZXJzIHdobyBhcmUgZGVhZiBvciB3aGVuIHRoZSBzb3VuZCBpcyBtdXRlZC5cbiogICBgZGVzY3JpcHRpb25zYFxuICAgICogICBUZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoZSB2aWRlbyBjb250ZW50LlxuICAgICogICBTdWl0YWJsZSBmb3IgdXNlcnMgd2hvIGFyZSBibGluZCBvciB3aGVyZSB0aGUgdmlkZW8gY2Fubm90IGJlIHNlZW4uXG4qICAgYGNoYXB0ZXJzYFxuICAgICogICBDaGFwdGVyIHRpdGxlcyBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aGVuIHRoZSB1c2VyIGlzIG5hdmlnYXRpbmcgdGhlIG1lZGlhIHJlc291cmNlLlxuKiAgIGBtZXRhZGF0YWBcbiAgICAqICAgVHJhY2tzIHVzZWQgYnkgc2NyaXB0cy4gTm90IHZpc2libGUgdG8gdGhlIHVzZXIuIn19LHtuYW1lOiJsYWJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSB1c2VyLXJlYWRhYmxlIHRpdGxlIG9mIHRoZSB0ZXh0IHRyYWNrIHdoaWNoIGlzIHVzZWQgYnkgdGhlIGJyb3dzZXIgd2hlbiBsaXN0aW5nIGF2YWlsYWJsZSB0ZXh0IHRyYWNrcy4ifX0se25hbWU6InNyYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQWRkcmVzcyBvZiB0aGUgdHJhY2sgKGAudnR0YCBmaWxlKS4gTXVzdCBiZSBhIHZhbGlkIFVSTC4gVGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBzcGVjaWZpZWQgYW5kIGl0cyBVUkwgdmFsdWUgbXVzdCBoYXZlIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgZG9jdW1lbnQg4oCUIHVubGVzcyB0aGUgW2A8YXVkaW8+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2F1ZGlvICJUaGUgSFRNTCA8YXVkaW8+IGVsZW1lbnQgaXMgdXNlZCB0byBlbWJlZCBzb3VuZCBjb250ZW50IGluIGRvY3VtZW50cy4gSXQgbWF5IGNvbnRhaW4gb25lIG9yIG1vcmUgYXVkaW8gc291cmNlcywgcmVwcmVzZW50ZWQgdXNpbmcgdGhlIHNyYyBhdHRyaWJ1dGUgb3IgdGhlIDxzb3VyY2U+IGVsZW1lbnQ6wqB0aGUgYnJvd3NlciB3aWxsIGNob29zZSB0aGUgbW9zdCBzdWl0YWJsZSBvbmUuIEl0IGNhbiBhbHNvIGJlIHRoZSBkZXN0aW5hdGlvbiBmb3Igc3RyZWFtZWQgbWVkaWEsIHVzaW5nIGEgTWVkaWFTdHJlYW0uIikgb3IgW2A8dmlkZW8+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3ZpZGVvICJUaGUgSFRNTCBWaWRlbyBlbGVtZW50ICg8dmlkZW8+KSBlbWJlZHMgYSBtZWRpYSBwbGF5ZXIgd2hpY2ggc3VwcG9ydHMgdmlkZW8gcGxheWJhY2sgaW50byB0aGUgZG9jdW1lbnQuIikgcGFyZW50IGVsZW1lbnQgb2YgdGhlIGB0cmFja2AgZWxlbWVudCBoYXMgYSBbYGNyb3Nzb3JpZ2luYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9DT1JTX3NldHRpbmdzX2F0dHJpYnV0ZXMpIGF0dHJpYnV0ZS4nfX0se25hbWU6InNyY2xhbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6Ikxhbmd1YWdlIG9mIHRoZSB0cmFjayB0ZXh0IGRhdGEuIEl0IG11c3QgYmUgYSB2YWxpZCBbQkNQIDQ3XShodHRwczovL3IxMmEuZ2l0aHViLmlvL2FwcC1zdWJ0YWdzLykgbGFuZ3VhZ2UgdGFnLiBJZiB0aGUgYGtpbmRgIGF0dHJpYnV0ZSBpcyBzZXQgdG/CoGBzdWJ0aXRsZXMsYCB0aGVuIGBzcmNsYW5nYCBtdXN0IGJlIGRlZmluZWQuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdHJhY2sifV19LHtuYW1lOiJtYXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtYXAgZWxlbWVudCwgaW4gY29uanVuY3Rpb24gd2l0aCBhbiBpbWcgZWxlbWVudCBhbmQgYW55IGFyZWEgZWxlbWVudCBkZXNjZW5kYW50cywgZGVmaW5lcyBhbiBpbWFnZSBtYXAuIFRoZSBlbGVtZW50IHJlcHJlc2VudHMgaXRzIGNoaWxkcmVuLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBhdHRyaWJ1dGUgZ2l2ZXMgdGhlIG1hcCBhIG5hbWUgc28gdGhhdCBpdCBjYW4gYmUgcmVmZXJlbmNlZC4gVGhlIGF0dHJpYnV0ZSBtdXN0IGJlIHByZXNlbnQgYW5kIG11c3QgaGF2ZSBhIG5vbi1lbXB0eSB2YWx1ZSB3aXRoIG5vIHNwYWNlIGNoYXJhY3RlcnMuIFRoZSB2YWx1ZSBvZiB0aGUgbmFtZSBhdHRyaWJ1dGUgbXVzdCBub3QgYmUgYSBjb21wYXRpYmlsaXR5LWNhc2VsZXNzIG1hdGNoIGZvciB0aGUgdmFsdWUgb2YgdGhlIG5hbWUgYXR0cmlidXRlIG9mIGFub3RoZXIgbWFwIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIElmIHRoZSBpZCBhdHRyaWJ1dGUgaXMgYWxzbyBzcGVjaWZpZWQsIGJvdGggYXR0cmlidXRlcyBtdXN0IGhhdmUgdGhlIHNhbWUgdmFsdWUuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWFwIn1dfSx7bmFtZToiYXJlYSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGFyZWEgZWxlbWVudCByZXByZXNlbnRzIGVpdGhlciBhIGh5cGVybGluayB3aXRoIHNvbWUgdGV4dCBhbmQgYSBjb3JyZXNwb25kaW5nIGFyZWEgb24gYW4gaW1hZ2UgbWFwLCBvciBhIGRlYWQgYXJlYSBvbiBhbiBpbWFnZSBtYXAuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsdCJ9LHtuYW1lOiJjb29yZHMifSx7bmFtZToic2hhcGUiLHZhbHVlU2V0OiJzaCJ9LHtuYW1lOiJocmVmIn0se25hbWU6InRhcmdldCJ9LHtuYW1lOiJkb3dubG9hZCJ9LHtuYW1lOiJwaW5nIn0se25hbWU6InJlbCJ9LHtuYW1lOiJocmVmbGFuZyJ9LHtuYW1lOiJ0eXBlIn0se25hbWU6ImFjY2Vzc2tleSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGtleWJvYXJkIG5hdmlnYXRpb24gYWNjZWxlcmF0b3IgZm9yIHRoZSBlbGVtZW50LiBQcmVzc2luZyBBTFQgb3IgYSBzaW1pbGFyIGtleSBpbiBhc3NvY2lhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIHNlbGVjdHMgdGhlIGZvcm0gY29udHJvbCBjb3JyZWxhdGVkIHdpdGggdGhhdCBrZXkgc2VxdWVuY2UuIFBhZ2UgZGVzaWduZXJzIGFyZSBmb3Jld2FybmVkIHRvIGF2b2lkIGtleSBzZXF1ZW5jZXMgYWxyZWFkeSBib3VuZCB0byBicm93c2Vycy4gVGhpcyBhdHRyaWJ1dGUgaXMgZ2xvYmFsIHNpbmNlIEhUTUw1LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXJlYSJ9XX0se25hbWU6InRhYmxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGFibGUgZWxlbWVudCByZXByZXNlbnRzIGRhdGEgd2l0aCBtb3JlIHRoYW4gb25lIGRpbWVuc2lvbiwgaW4gdGhlIGZvcm0gb2YgYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYm9yZGVyIn0se25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgaG93IHRoZSB0YWJsZSBtdXN0IGJlIGFsaWduZWQgaW5zaWRlIHRoZSBjb250YWluaW5nIGRvY3VtZW50LiBJdCBtYXkgaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGxlZnQ6IHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZG9jdW1lbnQ7XG4qICAgY2VudGVyOiB0aGUgdGFibGUgaXMgZGlzcGxheWVkIGluIHRoZSBjZW50ZXIgb2YgdGhlIGRvY3VtZW50O1xuKiAgIHJpZ2h0OiB0aGUgdGFibGUgaXMgZGlzcGxheWVkIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkb2N1bWVudC5cblxuKipVc2FnZSBOb3RlKipcblxuKiAgICoqRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSoqLCBhcyBpdCBoYXMgYmVlbiBkZXByZWNhdGVkLiBUaGUgW2A8dGFibGU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RhYmxlICJUaGUgSFRNTCA8dGFibGU+IGVsZW1lbnQgcmVwcmVzZW50cyB0YWJ1bGFyIGRhdGEg4oCUIHRoYXQgaXMsIGluZm9ybWF0aW9uIHByZXNlbnRlZCBpbiBhIHR3by1kaW1lbnNpb25hbCB0YWJsZSBjb21wcmlzZWQgb2Ygcm93cyBhbmQgY29sdW1ucyBvZiBjZWxscyBjb250YWluaW5nIGRhdGEuIikgZWxlbWVudCBzaG91bGQgYmUgc3R5bGVkIHVzaW5nIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKS4gU2V0IFtgbWFyZ2luLWxlZnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luLWxlZnQgIlRoZSBtYXJnaW4tbGVmdCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gdGhlIGxlZnQgc2lkZSBvZiBhbiBlbGVtZW50LiBBIHBvc2l0aXZlIHZhbHVlIHBsYWNlcyBpdCBmYXJ0aGVyIGZyb20gaXRzIG5laWdoYm9ycywgd2hpbGUgYSBuZWdhdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgY2xvc2VyLiIpIGFuZCBbYG1hcmdpbi1yaWdodGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tcmlnaHQgIlRoZSBtYXJnaW4tcmlnaHQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSByaWdodCBzaWRlIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgdG8gYGF1dG9gIG9yIFtgbWFyZ2luYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbiAiVGhlIG1hcmdpbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gYWxsIGZvdXIgc2lkZXMgb2YgYW4gZWxlbWVudC4gSXQgaXMgYSBzaG9ydGhhbmQgZm9yIG1hcmdpbi10b3AsIG1hcmdpbi1yaWdodCwgbWFyZ2luLWJvdHRvbSwgYW5kIG1hcmdpbi1sZWZ0LiIpIHRvIGAwIGF1dG9gIHRvIGFjaGlldmUgYW4gZWZmZWN0IHRoYXQgaXMgc2ltaWxhciB0byB0aGUgYWxpZ24gYXR0cmlidXRlLlxuKiAgIFByaW9yIHRvIEZpcmVmb3ggNCwgRmlyZWZveCBhbHNvIHN1cHBvcnRlZCB0aGUgYG1pZGRsZWAsIGBhYnNtaWRkbGVgLCBhbmQgYGFic2NlbnRlcmAgdmFsdWVzIGFzIHN5bm9ueW1zIG9mIGBjZW50ZXJgLCBpbiBxdWlya3MgbW9kZSBvbmx5Lid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGFibGUifV19LHtuYW1lOiJjYXB0aW9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY2FwdGlvbiBlbGVtZW50IHJlcHJlc2VudHMgdGhlIHRpdGxlIG9mIHRoZSB0YWJsZSB0aGF0IGlzIGl0cyBwYXJlbnQsIGlmIGl0IGhhcyBhIHBhcmVudCBhbmQgdGhhdCBpcyBhIHRhYmxlIGVsZW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgaG93IHRoZSBjYXB0aW9uIG11c3QgYmUgYWxpZ25lZCB3aXRoIHJlc3BlY3QgdG8gdGhlIHRhYmxlLiBJdCBtYXkgaGF2ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbmBsZWZ0YFxuXG5UaGUgY2FwdGlvbiBpcyBkaXNwbGF5ZWQgdG8gdGhlIGxlZnQgb2YgdGhlIHRhYmxlLlxuXG5gdG9wYFxuXG5UaGUgY2FwdGlvbiBpcyBkaXNwbGF5ZWQgYWJvdmUgdGhlIHRhYmxlLlxuXG5gcmlnaHRgXG5cblRoZSBjYXB0aW9uIGlzIGRpc3BsYXllZCB0byB0aGUgcmlnaHQgb2YgdGhlIHRhYmxlLlxuXG5gYm90dG9tYFxuXG5UaGUgY2FwdGlvbiBpcyBkaXNwbGF5ZWQgYmVsb3cgdGhlIHRhYmxlLlxuXG4qKlVzYWdlIG5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYXMgaXQgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVGhlIFtgPGNhcHRpb24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhcHRpb24gIlRoZSBIVE1MIFRhYmxlIENhcHRpb24gZWxlbWVudCAoPGNhcHRpb24+KSBzcGVjaWZpZXMgdGhlIGNhcHRpb24gKG9yIHRpdGxlKSBvZiBhIHRhYmxlLCBhbmQgaWYgdXNlZCBpcyBhbHdheXMgdGhlIGZpcnN0IGNoaWxkIG9mIGEgPHRhYmxlPi4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgdGhlIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKSBwcm9wZXJ0aWVzIFtgY2FwdGlvbi1zaWRlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NhcHRpb24tc2lkZSAiVGhlIGNhcHRpb24tc2lkZSBDU1MgcHJvcGVydHkgcHV0cyB0aGUgY29udGVudCBvZiBhIHRhYmxlXCdzIDxjYXB0aW9uPiBvbiB0aGUgc3BlY2lmaWVkIHNpZGUuIFRoZSB2YWx1ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSB3cml0aW5nLW1vZGUgb2YgdGhlIHRhYmxlLiIpIGFuZCBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYXB0aW9uIn1dfSx7bmFtZToiY29sZ3JvdXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjb2xncm91cCBlbGVtZW50IHJlcHJlc2VudHMgYSBncm91cCBvZiBvbmUgb3IgbW9yZSBjb2x1bW5zIGluIHRoZSB0YWJsZSB0aGF0IGlzIGl0cyBwYXJlbnQsIGlmIGl0IGhhcyBhIHBhcmVudCBhbmQgdGhhdCBpcyBhIHRhYmxlIGVsZW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6InNwYW4ifSx7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgZWFjaCBjb2x1bW4gY2VsbCBjb250ZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGxcbiogICBgY2VudGVyYCwgY2VudGVyaW5nIHRoZSBjb250ZW50IGluIHRoZSBjZWxsXG4qICAgYHJpZ2h0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsXG4qICAgYGp1c3RpZnlgLCBpbnNlcnRpbmcgc3BhY2VzIGludG8gdGhlIHRleHR1YWwgY29udGVudCBzbyB0aGF0IHRoZSBjb250ZW50IGlzIGp1c3RpZmllZCBpbiB0aGUgY2VsbFxuKiAgIGBjaGFyYCwgYWxpZ25pbmcgdGhlIHRleHR1YWwgY29udGVudCBvbiBhIHNwZWNpYWwgY2hhcmFjdGVyIHdpdGggYSBtaW5pbWFsIG9mZnNldCwgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItY2hhcm9mZikgYXR0cmlidXRlcyBVbmltcGxlbWVudGVkIChzZWUgW2J1Z8KgMjIxMl0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMiAiY2hhcmFjdGVyIGFsaWdubWVudCBub3QgaW1wbGVtZW50ZWQgKGFsaWduPWNoYXIsIGNoYXJvZmY9LCB0ZXh0LWFsaWduOjxzdHJpbmc+KSIpKS5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGBsZWZ0YCB2YWx1ZSBpcyBhc3N1bWVkLiBUaGUgZGVzY2VuZGFudCBbYDxjb2w+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCAiVGhlIEhUTUwgPGNvbD4gZWxlbWVudCBkZWZpbmVzIGEgY29sdW1uIHdpdGhpbiBhIHRhYmxlIGFuZCBpcyB1c2VkIGZvciBkZWZpbmluZyBjb21tb24gc2VtYW50aWNzIG9uIGFsbCBjb21tb24gY2VsbHMuIEl0IGlzIGdlbmVyYWxseSBmb3VuZCB3aXRoaW4gYSA8Y29sZ3JvdXA+IGVsZW1lbnQuIikgZWxlbWVudHMgbWF5IG92ZXJyaWRlIHRoaXMgdmFsdWUgdXNpbmcgdGhlaXIgb3duIFtgYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItYWxpZ24pIGF0dHJpYnV0ZS5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgKG5vdCBzdXBwb3J0ZWQpIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzOlxuICAgICogICBEbyBub3QgdHJ5IHRvIHNldCB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IG9uIGEgc2VsZWN0b3IgZ2l2aW5nIGEgW2A8Y29sZ3JvdXA+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbGdyb3VwICJUaGUgSFRNTCA8Y29sZ3JvdXA+IGVsZW1lbnQgZGVmaW5lcyBhIGdyb3VwIG9mIGNvbHVtbnMgd2l0aGluIGEgdGFibGUuIikgZWxlbWVudC4gQmVjYXVzZSBbYDx0ZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQgIlRoZSBIVE1MIDx0ZD4gZWxlbWVudCBkZWZpbmVzIGEgY2VsbCBvZiBhIHRhYmxlIHRoYXQgY29udGFpbnMgZGF0YS4gSXQgcGFydGljaXBhdGVzIGluIHRoZSB0YWJsZSBtb2RlbC4iKSBlbGVtZW50cyBhcmUgbm90IGRlc2NlbmRhbnQgb2YgdGhlIFtgPGNvbGdyb3VwPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCAiVGhlIEhUTUwgPGNvbGdyb3VwPiBlbGVtZW50IGRlZmluZXMgYSBncm91cCBvZiBjb2x1bW5zIHdpdGhpbiBhIHRhYmxlLiIpIGVsZW1lbnQsIHRoZXkgd29uXCd0IGluaGVyaXQgaXQuXG4gICAgKiAgIElmIHRoZSB0YWJsZSBkb2VzblwndCB1c2UgYSBbYGNvbHNwYW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jb2xzcGFuKSBhdHRyaWJ1dGUsIHVzZSBvbmUgYHRkOm50aC1jaGlsZChhbitiKWAgQ1NTIHNlbGVjdG9yIHBlciBjb2x1bW4sIHdoZXJlIGEgaXMgdGhlIHRvdGFsIG51bWJlciBvZiB0aGUgY29sdW1ucyBpbiB0aGUgdGFibGUgYW5kIGIgaXMgdGhlIG9yZGluYWwgcG9zaXRpb24gb2YgdGhpcyBjb2x1bW4gaW4gdGhlIHRhYmxlLiBPbmx5IGFmdGVyIHRoaXMgc2VsZWN0b3IgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBjYW4gYmUgdXNlZC5cbiAgICAqICAgSWYgdGhlIHRhYmxlIGRvZXMgdXNlIGEgW2Bjb2xzcGFuYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY29sc3BhbikgYXR0cmlidXRlLCB0aGUgZWZmZWN0IGNhbiBiZSBhY2hpZXZlZCBieSBjb21iaW5pbmcgYWRlcXVhdGUgQ1NTIGF0dHJpYnV0ZSBzZWxlY3RvcnMgbGlrZSBgW2NvbHNwYW49bl1gLCB0aG91Z2ggdGhpcyBpcyBub3QgdHJpdmlhbC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBpbiBDU1MzLCB5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCNhdHRyLWNoYXIpIGFzIHRoZSB2YWx1ZSBvZiB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IFVuaW1wbGVtZW50ZWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCJ9XX0se25hbWU6ImNvbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgYSBjb2wgZWxlbWVudCBoYXMgYSBwYXJlbnQgYW5kIHRoYXQgaXMgYSBjb2xncm91cCBlbGVtZW50IHRoYXQgaXRzZWxmIGhhcyBhIHBhcmVudCB0aGF0IGlzIGEgdGFibGUgZWxlbWVudCwgdGhlbiB0aGUgY29sIGVsZW1lbnQgcmVwcmVzZW50cyBvbmUgb3IgbW9yZSBjb2x1bW5zIGluIHRoZSBjb2x1bW4gZ3JvdXAgcmVwcmVzZW50ZWQgYnkgdGhhdCBjb2xncm91cC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3BhbiJ9LHtuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyBob3Jpem9udGFsIGFsaWdubWVudCBvZiBlYWNoIGNvbHVtbiBjZWxsIGNvbnRlbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbFxuKiAgIGBjZW50ZXJgLCBjZW50ZXJpbmcgdGhlIGNvbnRlbnQgaW4gdGhlIGNlbGxcbiogICBgcmlnaHRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGxcbiogICBganVzdGlmeWAsIGluc2VydGluZyBzcGFjZXMgaW50byB0aGUgdGV4dHVhbCBjb250ZW50IHNvIHRoYXQgdGhlIGNvbnRlbnQgaXMganVzdGlmaWVkIGluIHRoZSBjZWxsXG4qICAgYGNoYXJgLCBhbGlnbmluZyB0aGUgdGV4dHVhbCBjb250ZW50IG9uIGEgc3BlY2lhbCBjaGFyYWN0ZXIgd2l0aCBhIG1pbmltYWwgb2Zmc2V0LCBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzIFVuaW1wbGVtZW50ZWQgKHNlZSBbYnVnwqAyMjEyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyICJjaGFyYWN0ZXIgYWxpZ25tZW50IG5vdCBpbXBsZW1lbnRlZCAoYWxpZ249Y2hhciwgY2hhcm9mZj0sIHRleHQtYWxpZ246PHN0cmluZz4pIikpLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCBpdHMgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIFtgYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sZ3JvdXAjYXR0ci1hbGlnbikgb2YgdGhlIFtgPGNvbGdyb3VwPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCAiVGhlIEhUTUwgPGNvbGdyb3VwPiBlbGVtZW50IGRlZmluZXMgYSBncm91cCBvZiBjb2x1bW5zIHdpdGhpbiBhIHRhYmxlLiIpIGVsZW1lbnQgdGhpcyBgPGNvbD5gIGVsZW1lbnQgYmVsb25ncyB0b28uIElmIHRoZXJlIGFyZSBub25lLCB0aGUgYGxlZnRgIHZhbHVlIGlzIGFzc3VtZWQuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIChub3Qgc3VwcG9ydGVkKSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlczpcbiAgICAqICAgRG8gbm90IHRyeSB0byBzZXQgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBvbiBhIHNlbGVjdG9yIGdpdmluZyBhIFtgPGNvbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sICJUaGUgSFRNTCA8Y29sPiBlbGVtZW50IGRlZmluZXMgYSBjb2x1bW4gd2l0aGluIGEgdGFibGUgYW5kIGlzIHVzZWQgZm9yIGRlZmluaW5nIGNvbW1vbiBzZW1hbnRpY3Mgb24gYWxsIGNvbW1vbiBjZWxscy4gSXQgaXMgZ2VuZXJhbGx5IGZvdW5kIHdpdGhpbiBhIDxjb2xncm91cD4gZWxlbWVudC4iKSBlbGVtZW50LiBCZWNhdXNlIFtgPHRkPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCAiVGhlIEhUTUwgPHRkPiBlbGVtZW50IGRlZmluZXMgYSBjZWxsIG9mIGEgdGFibGUgdGhhdCBjb250YWlucyBkYXRhLiBJdCBwYXJ0aWNpcGF0ZXMgaW4gdGhlIHRhYmxlIG1vZGVsLiIpIGVsZW1lbnRzIGFyZSBub3QgZGVzY2VuZGFudCBvZiB0aGUgW2A8Y29sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wgIlRoZSBIVE1MIDxjb2w+IGVsZW1lbnQgZGVmaW5lcyBhIGNvbHVtbiB3aXRoaW4gYSB0YWJsZSBhbmQgaXMgdXNlZCBmb3IgZGVmaW5pbmcgY29tbW9uIHNlbWFudGljcyBvbiBhbGwgY29tbW9uIGNlbGxzLiBJdCBpcyBnZW5lcmFsbHkgZm91bmQgd2l0aGluIGEgPGNvbGdyb3VwPiBlbGVtZW50LiIpIGVsZW1lbnQsIHRoZXkgd29uXCd0IGluaGVyaXQgaXQuXG4gICAgKiAgIElmIHRoZSB0YWJsZSBkb2VzblwndCB1c2UgYSBbYGNvbHNwYW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jb2xzcGFuKSBhdHRyaWJ1dGUsIHVzZSB0aGUgYHRkOm50aC1jaGlsZChhbitiKWAgQ1NTIHNlbGVjdG9yLiBTZXQgYGFgIHRvIHplcm8gYW5kIGBiYCB0byB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbiBpbiB0aGUgdGFibGUsIGUuZy4gYHRkOm50aC1jaGlsZCgyKSB7IHRleHQtYWxpZ246IHJpZ2h0OyB9YCB0byByaWdodC1hbGlnbiB0aGUgc2Vjb25kIGNvbHVtbi5cbiAgICAqICAgSWYgdGhlIHRhYmxlIGRvZXMgdXNlIGEgW2Bjb2xzcGFuYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY29sc3BhbikgYXR0cmlidXRlLCB0aGUgZWZmZWN0IGNhbiBiZSBhY2hpZXZlZCBieSBjb21iaW5pbmcgYWRlcXVhdGUgQ1NTIGF0dHJpYnV0ZSBzZWxlY3RvcnMgbGlrZSBgW2NvbHNwYW49bl1gLCB0aG91Z2ggdGhpcyBpcyBub3QgdHJpdmlhbC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBpbiBDU1MzLCB5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wjYXR0ci1jaGFyKSBhcyB0aGUgdmFsdWUgb2YgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBVbmltcGxlbWVudGVkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sIn1dfSx7bmFtZToidGJvZHkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0Ym9keSBlbGVtZW50IHJlcHJlc2VudHMgYSBibG9jayBvZiByb3dzIHRoYXQgY29uc2lzdCBvZiBhIGJvZHkgb2YgZGF0YSBmb3IgdGhlIHBhcmVudCB0YWJsZSBlbGVtZW50LCBpZiB0aGUgdGJvZHkgZWxlbWVudCBoYXMgYSBwYXJlbnQgYW5kIGl0IGlzIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IGhvcml6b250YWwgYWxpZ25tZW50IG9mIGVhY2ggY2VsbCBjb250ZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGxcbiogICBgY2VudGVyYCwgY2VudGVyaW5nIHRoZSBjb250ZW50IGluIHRoZSBjZWxsXG4qICAgYHJpZ2h0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsXG4qICAgYGp1c3RpZnlgLCBpbnNlcnRpbmcgc3BhY2VzIGludG8gdGhlIHRleHR1YWwgY29udGVudCBzbyB0aGF0IHRoZSBjb250ZW50IGlzIGp1c3RpZmllZCBpbiB0aGUgY2VsbFxuKiAgIGBjaGFyYCwgYWxpZ25pbmcgdGhlIHRleHR1YWwgY29udGVudCBvbiBhIHNwZWNpYWwgY2hhcmFjdGVyIHdpdGggYSBtaW5pbWFsIG9mZnNldCwgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rib2R5I2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Ym9keSNhdHRyLWNoYXJvZmYpIGF0dHJpYnV0ZXMuXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQsIHRoZSBgbGVmdGAgdmFsdWUgaXMgYXNzdW1lZC5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgKG5vdCBzdXBwb3J0ZWQpIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzLCB1c2UgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgb24gaXQuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgaW4gQ1NTMywgeW91IGNhbiB1c2UgdGhlIHZhbHVlIG9mIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkjYXR0ci1jaGFyKSBhcyB0aGUgdmFsdWUgb2YgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBVbmltcGxlbWVudGVkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkifV19LHtuYW1lOiJ0aGVhZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRoZWFkIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgYmxvY2sgb2Ygcm93cyB0aGF0IGNvbnNpc3Qgb2YgdGhlIGNvbHVtbiBsYWJlbHMgKGhlYWRlcnMpIGZvciB0aGUgcGFyZW50IHRhYmxlIGVsZW1lbnQsIGlmIHRoZSB0aGVhZCBlbGVtZW50IGhhcyBhIHBhcmVudCBhbmQgaXQgaXMgYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgZWFjaCBjZWxsIGNvbnRlbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbFxuKiAgIGBjZW50ZXJgLCBjZW50ZXJpbmcgdGhlIGNvbnRlbnQgaW4gdGhlIGNlbGxcbiogICBgcmlnaHRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGxcbiogICBganVzdGlmeWAsIGluc2VydGluZyBzcGFjZXMgaW50byB0aGUgdGV4dHVhbCBjb250ZW50IHNvIHRoYXQgdGhlIGNvbnRlbnQgaXMganVzdGlmaWVkIGluIHRoZSBjZWxsXG4qICAgYGNoYXJgLCBhbGlnbmluZyB0aGUgdGV4dHVhbCBjb250ZW50IG9uIGEgc3BlY2lhbCBjaGFyYWN0ZXIgd2l0aCBhIG1pbmltYWwgb2Zmc2V0LCBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGhlYWQjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoZWFkI2F0dHItY2hhcm9mZikgYXR0cmlidXRlcyBVbmltcGxlbWVudGVkIChzZWUgW2J1Z8KgMjIxMl0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMiAiY2hhcmFjdGVyIGFsaWdubWVudCBub3QgaW1wbGVtZW50ZWQgKGFsaWduPWNoYXIsIGNoYXJvZmY9LCB0ZXh0LWFsaWduOjxzdHJpbmc+KSIpKS5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGBsZWZ0YCB2YWx1ZSBpcyBhc3N1bWVkLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSAobm90IHN1cHBvcnRlZCkgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXMsIHVzZSB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBvbiBpdC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBpbiBDU1MzLCB5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aGVhZCNhdHRyLWNoYXIpIGFzIHRoZSB2YWx1ZSBvZiB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IFVuaW1wbGVtZW50ZWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aGVhZCJ9XX0se25hbWU6InRmb290IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGZvb3QgZWxlbWVudCByZXByZXNlbnRzIHRoZSBibG9jayBvZiByb3dzIHRoYXQgY29uc2lzdCBvZiB0aGUgY29sdW1uIHN1bW1hcmllcyAoZm9vdGVycykgZm9yIHRoZSBwYXJlbnQgdGFibGUgZWxlbWVudCwgaWYgdGhlIHRmb290IGVsZW1lbnQgaGFzIGEgcGFyZW50IGFuZCBpdCBpcyBhIHRhYmxlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyBob3Jpem9udGFsIGFsaWdubWVudCBvZiBlYWNoIGNlbGwgY29udGVudCB3aWxsIGJlIGhhbmRsZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbGVmdGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsXG4qICAgYGNlbnRlcmAsIGNlbnRlcmluZyB0aGUgY29udGVudCBpbiB0aGUgY2VsbFxuKiAgIGByaWdodGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbFxuKiAgIGBqdXN0aWZ5YCwgaW5zZXJ0aW5nIHNwYWNlcyBpbnRvIHRoZSB0ZXh0dWFsIGNvbnRlbnQgc28gdGhhdCB0aGUgY29udGVudCBpcyBqdXN0aWZpZWQgaW4gdGhlIGNlbGxcbiogICBgY2hhcmAsIGFsaWduaW5nIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb24gYSBzcGVjaWFsIGNoYXJhY3RlciB3aXRoIGEgbWluaW1hbCBvZmZzZXQsIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Ym9keSNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzIFVuaW1wbGVtZW50ZWQgKHNlZSBbYnVnwqAyMjEyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyICJjaGFyYWN0ZXIgYWxpZ25tZW50IG5vdCBpbXBsZW1lbnRlZCAoYWxpZ249Y2hhciwgY2hhcm9mZj0sIHRleHQtYWxpZ246PHN0cmluZz4pIikpLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCB0aGUgYGxlZnRgIHZhbHVlIGlzIGFzc3VtZWQuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIChub3Qgc3VwcG9ydGVkKSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlcywgdXNlIHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IG9uIGl0LlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGluIENTUzMsIHlvdSBjYW4gdXNlIHRoZSB2YWx1ZSBvZiB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rmb290I2F0dHItY2hhcikgYXMgdGhlIHZhbHVlIG9mIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgVW5pbXBsZW1lbnRlZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rmb290In1dfSx7bmFtZToidHIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0ciBlbGVtZW50IHJlcHJlc2VudHMgYSByb3cgb2YgY2VsbHMgaW4gYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidBIFtgRE9NU3RyaW5nYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RPTVN0cmluZyAiRE9NU3RyaW5nIGlzIGEgVVRGLTE2IFN0cmluZy4gQXMgSmF2YVNjcmlwdCBhbHJlYWR5IHVzZXMgc3VjaCBzdHJpbmdzLCBET01TdHJpbmcgaXMgbWFwcGVkIGRpcmVjdGx5IHRvIGEgU3RyaW5nLiIpIHdoaWNoIHNwZWNpZmllcyBob3cgdGhlIGNlbGxcJ3MgY29udGV4dCBzaG91bGQgYmUgYWxpZ25lZCBob3Jpem9udGFsbHkgd2l0aGluIHRoZSBjZWxscyBpbiB0aGUgcm93OyB0aGlzIGlzIHNob3J0aGFuZCBmb3IgdXNpbmcgYGFsaWduYCBvbiBldmVyeSBjZWxsIGluIHRoZSByb3cgaW5kaXZpZHVhbGx5LiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG5gbGVmdGBcblxuQWxpZ24gdGhlIGNvbnRlbnQgb2YgZWFjaCBjZWxsIGF0IGl0cyBsZWZ0IGVkZ2UuXG5cbmBjZW50ZXJgXG5cbkNlbnRlciB0aGUgY29udGVudHMgb2YgZWFjaCBjZWxsIGJldHdlZW4gdGhlaXIgbGVmdCBhbmQgcmlnaHQgZWRnZXMuXG5cbmByaWdodGBcblxuQWxpZ24gdGhlIGNvbnRlbnQgb2YgZWFjaCBjZWxsIGF0IGl0cyByaWdodCBlZGdlLlxuXG5ganVzdGlmeWBcblxuV2lkZW4gd2hpdGVzcGFjZXMgd2l0aGluIHRoZSB0ZXh0IG9mIGVhY2ggY2VsbCBzbyB0aGF0IHRoZSB0ZXh0IGZpbGxzIHRoZSBmdWxsIHdpZHRoIG9mIGVhY2ggY2VsbCAoZnVsbCBqdXN0aWZpY2F0aW9uKS5cblxuYGNoYXJgXG5cbkFsaWduIGVhY2ggY2VsbCBpbiB0aGUgcm93IG9uIGEgc3BlY2lmaWMgY2hhcmFjdGVyIChzdWNoIHRoYXQgZWFjaCByb3cgaW4gdGhlIGNvbHVtbiB0aGF0IGlzIGNvbmZpZ3VyZWQgdGhpcyB3YXkgd2lsbCBob3Jpem9udGFsbHkgYWxpZ24gaXRzIGNlbGxzIG9uIHRoYXQgY2hhcmFjdGVyKS4gVGhpcyB1c2VzIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdHIjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RyI2F0dHItY2hhcm9mZikgdG8gZXN0YWJsaXNoIHRoZSBhbGlnbm1lbnQgY2hhcmFjdGVyICh0eXBpY2FsbHkgIi4iIG9yICIsIiB3aGVuIGFsaWduaW5nIG51bWVyaWNhbCBkYXRhKSBhbmQgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIGZvbGxvdyB0aGUgYWxpZ25tZW50IGNoYXJhY3Rlci4gVGhpcyBhbGlnbm1lbnQgdHlwZSB3YXMgbmV2ZXIgd2lkZWx5IHN1cHBvcnRlZC5cblxuSWYgbm8gdmFsdWUgaXMgZXhwcmVzc2x5IHNldCBmb3IgYGFsaWduYCwgdGhlIHBhcmVudCBub2RlXCdzIHZhbHVlIGlzIGluaGVyaXRlZC5cblxuSW5zdGVhZCBvZiB1c2luZyB0aGUgb2Jzb2xldGUgYGFsaWduYCBhdHRyaWJ1dGUsIHlvdSBzaG91bGQgaW5zdGVhZCB1c2UgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgdG8gZXN0YWJsaXNoIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAsIG9yIGBqdXN0aWZ5YCBhbGlnbm1lbnQgZm9yIHRoZSByb3dcJ3MgY2VsbHMuIFRvIGFwcGx5IGNoYXJhY3Rlci1iYXNlZCBhbGlnbm1lbnQsIHNldCB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSB0byB0aGUgYWxpZ25tZW50IGNoYXJhY3RlciAoc3VjaCBhcyBgIi4iYCBvciBgIiwiYCkuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ciJ9XX0se25hbWU6InRkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGQgZWxlbWVudCByZXByZXNlbnRzIGEgZGF0YSBjZWxsIGluIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImNvbHNwYW4ifSx7bmFtZToicm93c3BhbiJ9LHtuYW1lOiJoZWFkZXJzIn0se25hbWU6ImFiYnIiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBhIHNob3J0IGFiYnJldmlhdGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBjZWxsJ3MgY29udGVudC4gU29tZSB1c2VyLWFnZW50cywgc3VjaCBhcyBzcGVlY2ggcmVhZGVycywgbWF5IHByZXNlbnQgdGhpcyBkZXNjcmlwdGlvbiBiZWZvcmUgdGhlIGNvbnRlbnQgaXRzZWxmLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHB1dCB0aGUgYWJicmV2aWF0ZWQgZGVzY3JpcHRpb24gaW5zaWRlIHRoZSBjZWxsIGFuZCBwbGFjZSB0aGUgbG9uZyBjb250ZW50IGluIHRoZSAqKnRpdGxlKiogYXR0cmlidXRlLiJ9LHtuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyB0aGUgY2VsbCBjb250ZW50XCdzIGhvcml6b250YWwgYWxpZ25tZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YDogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbC5cbiogICBgY2VudGVyYDogVGhlIGNvbnRlbnQgaXMgY2VudGVyZWQgaW4gdGhlIGNlbGwuXG4qICAgYHJpZ2h0YDogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGwuXG4qICAgYGp1c3RpZnlgICh3aXRoIHRleHQgb25seSk6IFRoZSBjb250ZW50IGlzIHN0cmV0Y2hlZCBvdXQgaW5zaWRlIHRoZSBjZWxsIHNvIHRoYXQgaXQgY292ZXJzIGl0cyBlbnRpcmUgd2lkdGguXG4qICAgYGNoYXJgICh3aXRoIHRleHQgb25seSk6IFRoZSBjb250ZW50IGlzIGFsaWduZWQgdG8gYSBjaGFyYWN0ZXIgaW5zaWRlIHRoZSBgPHRoPmAgZWxlbWVudCB3aXRoIG1pbmltYWwgb2Zmc2V0LiBUaGlzIGNoYXJhY3RlciBpcyBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY2hhcm9mZikgYXR0cmlidXRlcyBVbmltcGxlbWVudGVkIChzZWUgW2J1Z8KgMjIxMl0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMiAiY2hhcmFjdGVyIGFsaWdubWVudCBub3QgaW1wbGVtZW50ZWQgKGFsaWduPWNoYXIsIGNoYXJvZmY9LCB0ZXh0LWFsaWduOjxzdHJpbmc+KSIpKS5cblxuVGhlIGRlZmF1bHQgdmFsdWUgd2hlbiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkIGlzIGBsZWZ0YC5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXMsIGFwcGx5IHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IHRvIHRoZSBlbGVtZW50LlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGdpdmUgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSB0aGUgc2FtZSB2YWx1ZSB5b3Ugd291bGQgdXNlIGZvciB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY2hhcikuIFVuaW1wbGVtZW50ZWQgaW4gQ1NTMy4nfSx7bmFtZToiYXhpcyIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGEgbGlzdCBvZiBzcGFjZS1zZXBhcmF0ZWQgc3RyaW5ncy4gRWFjaCBzdHJpbmcgaXMgdGhlIGBpZGAgb2YgYSBncm91cCBvZiBjZWxscyB0aGF0IHRoaXMgaGVhZGVyIGFwcGxpZXMgdG8uXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuIn0se25hbWU6ImJnY29sb3IiLGRlc2NyaXB0aW9uOidUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGVhY2ggY2VsbCBpbiBhIGNvbHVtbi4gSXQgY29uc2lzdHMgb2YgYSA2LWRpZ2l0IGhleGFkZWNpbWFsIGNvZGUgYXMgZGVmaW5lZCBpbiBbc1JHQl0oaHR0cHM6Ly93d3cudzMub3JnL0dyYXBoaWNzL0NvbG9yL3NSR0IpIGFuZCBpcyBwcmVmaXhlZCBieSBcJyNcJy4gVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHVzZWQgd2l0aCBvbmUgb2Ygc2l4dGVlbiBwcmVkZWZpbmVkIGNvbG9yIHN0cmluZ3M6XG5cbsKgXG5cbmBibGFja2AgPSAiIzAwMDAwMCJcblxuwqBcblxuYGdyZWVuYCA9ICIjMDA4MDAwIlxuXG7CoFxuXG5gc2lsdmVyYCA9ICIjQzBDMEMwIlxuXG7CoFxuXG5gbGltZWAgPSAiIzAwRkYwMCJcblxuwqBcblxuYGdyYXlgID0gIiM4MDgwODAiXG5cbsKgXG5cbmBvbGl2ZWAgPSAiIzgwODAwMCJcblxuwqBcblxuYHdoaXRlYCA9ICIjRkZGRkZGIlxuXG7CoFxuXG5geWVsbG93YCA9ICIjRkZGRjAwIlxuXG7CoFxuXG5gbWFyb29uYCA9ICIjODAwMDAwIlxuXG7CoFxuXG5gbmF2eWAgPSAiIzAwMDA4MCJcblxuwqBcblxuYHJlZGAgPSAiI0ZGMDAwMCJcblxuwqBcblxuYGJsdWVgID0gIiMwMDAwRkYiXG5cbsKgXG5cbmBwdXJwbGVgID0gIiM4MDAwODAiXG5cbsKgXG5cbmB0ZWFsYCA9ICIjMDA4MDgwIlxuXG7CoFxuXG5gZnVjaHNpYWAgPSAiI0ZGMDBGRiJcblxuwqBcblxuYGFxdWFgID0gIiMwMEZGRkYiXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlLCBhcyBpdCBpcyBub24tc3RhbmRhcmQgYW5kIG9ubHkgaW1wbGVtZW50ZWQgaW4gc29tZSB2ZXJzaW9ucyBvZiBNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXI6IFRoZSBbYDx0ZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQgIlRoZSBIVE1MIDx0ZD4gZWxlbWVudCBkZWZpbmVzIGEgY2VsbCBvZiBhIHRhYmxlIHRoYXQgY29udGFpbnMgZGF0YS4gSXQgcGFydGljaXBhdGVzIGluIHRoZSB0YWJsZSBtb2RlbC4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpLiBUbyBjcmVhdGUgYSBzaW1pbGFyIGVmZmVjdCB1c2UgdGhlIFtgYmFja2dyb3VuZC1jb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWNvbG9yICJUaGUgYmFja2dyb3VuZC1jb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBlbGVtZW50LiIpIHByb3BlcnR5IGluIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKSBpbnN0ZWFkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQifV19LHtuYW1lOiJ0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRoIGVsZW1lbnQgcmVwcmVzZW50cyBhIGhlYWRlciBjZWxsIGluIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImNvbHNwYW4ifSx7bmFtZToicm93c3BhbiJ9LHtuYW1lOiJoZWFkZXJzIn0se25hbWU6InNjb3BlIix2YWx1ZVNldDoicyJ9LHtuYW1lOiJzb3J0ZWQifSx7bmFtZToiYWJiciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYSBzaG9ydCBhYmJyZXZpYXRlZCBkZXNjcmlwdGlvbiBvZiB0aGUgY2VsbCdzIGNvbnRlbnQuIFNvbWUgdXNlci1hZ2VudHMsIHN1Y2ggYXMgc3BlZWNoIHJlYWRlcnMsIG1heSBwcmVzZW50IHRoaXMgZGVzY3JpcHRpb24gYmVmb3JlIHRoZSBjb250ZW50IGl0c2VsZi4ifX0se25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IHRoZSBjZWxsIGNvbnRlbnRcJ3MgaG9yaXpvbnRhbCBhbGlnbm1lbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgOiBUaGUgY29udGVudCBpcyBhbGlnbmVkIHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsLlxuKiAgIGBjZW50ZXJgOiBUaGUgY29udGVudCBpcyBjZW50ZXJlZCBpbiB0aGUgY2VsbC5cbiogICBgcmlnaHRgOiBUaGUgY29udGVudCBpcyBhbGlnbmVkIHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbC5cbiogICBganVzdGlmeWAgKHdpdGggdGV4dCBvbmx5KTogVGhlIGNvbnRlbnQgaXMgc3RyZXRjaGVkIG91dCBpbnNpZGUgdGhlIGNlbGwgc28gdGhhdCBpdCBjb3ZlcnMgaXRzIGVudGlyZSB3aWR0aC5cbiogICBgY2hhcmAgKHdpdGggdGV4dCBvbmx5KTogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byBhIGNoYXJhY3RlciBpbnNpZGUgdGhlIGA8dGg+YCBlbGVtZW50IHdpdGggbWluaW1hbCBvZmZzZXQuIFRoaXMgY2hhcmFjdGVyIGlzIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aCNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGgjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzLlxuXG5UaGUgZGVmYXVsdCB2YWx1ZSB3aGVuIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQgaXMgYGxlZnRgLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlcywgYXBwbHkgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgdG8gdGhlIGVsZW1lbnQuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgZ2l2ZSB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IHRoZSBzYW1lIHZhbHVlIHlvdSB3b3VsZCB1c2UgZm9yIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGgjYXR0ci1jaGFyKS4gVW5pbXBsZW1lbnRlZCBpbiBDU1MzLid9LHtuYW1lOiJheGlzIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYSBsaXN0IG9mIHNwYWNlLXNlcGFyYXRlZCBzdHJpbmdzLiBFYWNoIHN0cmluZyBpcyB0aGUgYGlkYCBvZiBhIGdyb3VwIG9mIGNlbGxzIHRoYXQgdGhpcyBoZWFkZXIgYXBwbGllcyB0by5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZDogdXNlIHRoZSBbYHNjb3BlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoI2F0dHItc2NvcGUpIGF0dHJpYnV0ZSBpbnN0ZWFkLiJ9LHtuYW1lOiJiZ2NvbG9yIixkZXNjcmlwdGlvbjonVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBlYWNoIGNlbGwgaW4gYSBjb2x1bW4uIEl0IGNvbnNpc3RzIG9mIGEgNi1kaWdpdCBoZXhhZGVjaW1hbCBjb2RlIGFzIGRlZmluZWQgaW4gW3NSR0JdKGh0dHBzOi8vd3d3LnczLm9yZy9HcmFwaGljcy9Db2xvci9zUkdCKSBhbmQgaXMgcHJlZml4ZWQgYnkgXCcjXCcuIFRoaXMgYXR0cmlidXRlIG1heSBiZSB1c2VkIHdpdGggb25lIG9mIHNpeHRlZW4gcHJlZGVmaW5lZCBjb2xvciBzdHJpbmdzOlxuXG7CoFxuXG5gYmxhY2tgID0gIiMwMDAwMDAiXG5cbsKgXG5cbmBncmVlbmAgPSAiIzAwODAwMCJcblxuwqBcblxuYHNpbHZlcmAgPSAiI0MwQzBDMCJcblxuwqBcblxuYGxpbWVgID0gIiMwMEZGMDAiXG5cbsKgXG5cbmBncmF5YCA9ICIjODA4MDgwIlxuXG7CoFxuXG5gb2xpdmVgID0gIiM4MDgwMDAiXG5cbsKgXG5cbmB3aGl0ZWAgPSAiI0ZGRkZGRiJcblxuwqBcblxuYHllbGxvd2AgPSAiI0ZGRkYwMCJcblxuwqBcblxuYG1hcm9vbmAgPSAiIzgwMDAwMCJcblxuwqBcblxuYG5hdnlgID0gIiMwMDAwODAiXG5cbsKgXG5cbmByZWRgID0gIiNGRjAwMDAiXG5cbsKgXG5cbmBibHVlYCA9ICIjMDAwMEZGIlxuXG7CoFxuXG5gcHVycGxlYCA9ICIjODAwMDgwIlxuXG7CoFxuXG5gdGVhbGAgPSAiIzAwODA4MCJcblxuwqBcblxuYGZ1Y2hzaWFgID0gIiNGRjAwRkYiXG5cbsKgXG5cbmBhcXVhYCA9ICIjMDBGRkZGIlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYXMgaXQgaXMgbm9uLXN0YW5kYXJkIGFuZCBvbmx5IGltcGxlbWVudGVkIGluIHNvbWUgdmVyc2lvbnMgb2YgTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyOiBUaGUgW2A8dGg+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoICJUaGUgSFRNTCA8dGg+IGVsZW1lbnQgZGVmaW5lcyBhIGNlbGwgYXMgaGVhZGVyIG9mIGEgZ3JvdXAgb2YgdGFibGUgY2VsbHMuIFRoZSBleGFjdCBuYXR1cmUgb2YgdGhpcyBncm91cCBpcyBkZWZpbmVkIGJ5IHRoZSBzY29wZSBhbmQgaGVhZGVycyBhdHRyaWJ1dGVzLiIpIGVsZW1lbnQgc2hvdWxkIGJlIHN0eWxlZCB1c2luZyBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MpLiBUbyBjcmVhdGUgYSBzaW1pbGFyIGVmZmVjdCB1c2UgdGhlIFtgYmFja2dyb3VuZC1jb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWNvbG9yICJUaGUgYmFja2dyb3VuZC1jb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBlbGVtZW50LiIpIHByb3BlcnR5IGluIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUykgaW5zdGVhZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoIn1dfSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGZvcm0gZWxlbWVudCByZXByZXNlbnRzIGEgY29sbGVjdGlvbiBvZiBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMsIHNvbWUgb2Ygd2hpY2ggY2FuIHJlcHJlc2VudCBlZGl0YWJsZSB2YWx1ZXMgdGhhdCBjYW4gYmUgc3VibWl0dGVkIHRvIGEgc2VydmVyIGZvciBwcm9jZXNzaW5nLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhY2NlcHQtY2hhcnNldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBzcGFjZS0gb3IgY29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgY2hhcmFjdGVyIGVuY29kaW5ncyB0aGF0IHRoZSBzZXJ2ZXIgYWNjZXB0cy4gVGhlIGJyb3dzZXIgdXNlcyB0aGVtIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZSBsaXN0ZWQuIFRoZSBkZWZhdWx0IHZhbHVlLCB0aGUgcmVzZXJ2ZWQgc3RyaW5nIGAiVU5LTk9XTiJgLCBpbmRpY2F0ZXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMgdGhhdCBvZiB0aGUgZG9jdW1lbnQgY29udGFpbmluZyB0aGUgZm9ybSBlbGVtZW50LiAgXG5JbiBwcmV2aW91cyB2ZXJzaW9ucyBvZiBIVE1MLCB0aGUgZGlmZmVyZW50IGNoYXJhY3RlciBlbmNvZGluZ3MgY291bGQgYmUgZGVsaW1pdGVkIGJ5IHNwYWNlcyBvciBjb21tYXMuIEluIEhUTUw1LCBvbmx5IHNwYWNlcyBhcmUgYWxsb3dlZCBhcyBkZWxpbWl0ZXJzLid9fSx7bmFtZToiYWN0aW9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgVVJJIG9mIGEgcHJvZ3JhbSB0aGF0IHByb2Nlc3NlcyB0aGUgZm9ybSBpbmZvcm1hdGlvbi4gVGhpcyB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIFtgZm9ybWFjdGlvbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24jYXR0ci1mb3JtYWN0aW9uKSBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgb3IgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudC4nfX0se25hbWU6ImF1dG9jb21wbGV0ZSIsdmFsdWVTZXQ6Im8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIGlucHV0IGVsZW1lbnRzIGNhbiBieSBkZWZhdWx0IGhhdmUgdGhlaXIgdmFsdWVzIGF1dG9tYXRpY2FsbHkgY29tcGxldGVkIGJ5IHRoZSBicm93c2VyLiBUaGlzIHNldHRpbmcgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYW4gYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIG9uIGFuIGVsZW1lbnQgYmVsb25naW5nIHRvIHRoZSBmb3JtLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYG9mZmA6IFRoZSB1c2VyIG11c3QgZXhwbGljaXRseSBlbnRlciBhIHZhbHVlIGludG8gZWFjaCBmaWVsZCBmb3IgZXZlcnkgdXNlLCBvciB0aGUgZG9jdW1lbnQgcHJvdmlkZXMgaXRzIG93biBhdXRvLWNvbXBsZXRpb24gbWV0aG9kOyB0aGUgYnJvd3NlciBkb2VzIG5vdCBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlIGVudHJpZXMuXG4qICAgYG9uYDogVGhlIGJyb3dzZXIgY2FuIGF1dG9tYXRpY2FsbHkgY29tcGxldGUgdmFsdWVzIGJhc2VkIG9uIHZhbHVlcyB0aGF0IHRoZSB1c2VyIGhhcyBwcmV2aW91c2x5IGVudGVyZWQgaW4gdGhlIGZvcm0uXG5cbkZvciBtb3N0IG1vZGVybiBicm93c2VycyAoaW5jbHVkaW5nIEZpcmVmb3ggMzgrLCBHb29nbGUgQ2hyb21lIDM0KywgSUUgMTErKSBzZXR0aW5nIHRoZSBhdXRvY29tcGxldGUgYXR0cmlidXRlIHdpbGwgbm90IHByZXZlbnQgYSBicm93c2VyJ3MgcGFzc3dvcmQgbWFuYWdlciBmcm9tIGFza2luZyB0aGUgdXNlciBpZiB0aGV5IHdhbnQgdG8gc3RvcmUgbG9naW4gZmllbGRzICh1c2VybmFtZSBhbmQgcGFzc3dvcmQpLCBpZiB0aGUgdXNlciBwZXJtaXRzIHRoZSBzdG9yYWdlIHRoZSBicm93c2VyIHdpbGwgYXV0b2ZpbGwgdGhlIGxvZ2luIHRoZSBuZXh0IHRpbWUgdGhlIHVzZXIgdmlzaXRzIHRoZSBwYWdlLiBTZWUgW1RoZSBhdXRvY29tcGxldGUgYXR0cmlidXRlIGFuZCBsb2dpbiBmaWVsZHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1NlY3VyaW5nX3lvdXJfc2l0ZS9UdXJuaW5nX29mZl9mb3JtX2F1dG9jb21wbGV0aW9uI1RoZV9hdXRvY29tcGxldGVfYXR0cmlidXRlX2FuZF9sb2dpbl9maWVsZHMpLiJ9fSx7bmFtZToiZW5jdHlwZSIsdmFsdWVTZXQ6ImV0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidXaGVuIHRoZSB2YWx1ZSBvZiB0aGUgYG1ldGhvZGAgYXR0cmlidXRlIGlzIGBwb3N0YCwgZW5jdHlwZSBpcyB0aGUgW01JTUUgdHlwZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWltZV90eXBlKSBvZiBjb250ZW50IHRoYXQgaXMgdXNlZCB0byBzdWJtaXQgdGhlIGZvcm0gdG8gdGhlIHNlcnZlci4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgOiBUaGUgZGVmYXVsdCB2YWx1ZSBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQuXG4qICAgYG11bHRpcGFydC9mb3JtLWRhdGFgOiBUaGUgdmFsdWUgdXNlZCBmb3IgYW4gW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudCB3aXRoIHRoZSBgdHlwZWAgYXR0cmlidXRlIHNldCB0byAiZmlsZSIuXG4qICAgYHRleHQvcGxhaW5gOiAoSFRNTDUpXG5cblRoaXMgdmFsdWUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBbYGZvcm1lbmN0eXBlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiNhdHRyLWZvcm1lbmN0eXBlKSBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgb3IgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudC4nfX0se25hbWU6Im1ldGhvZCIsdmFsdWVTZXQ6Im0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBbSFRUUF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUCkgbWV0aG9kIHRoYXQgdGhlIGJyb3dzZXIgdXNlcyB0byBzdWJtaXQgdGhlIGZvcm0uIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgcG9zdGA6IENvcnJlc3BvbmRzIHRvIHRoZSBIVFRQIFtQT1NUIG1ldGhvZF0oaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjOS5odG1sI3NlYzkuNSkgOyBmb3JtIGRhdGEgYXJlIGluY2x1ZGVkIGluIHRoZSBib2R5IG9mIHRoZSBmb3JtIGFuZCBzZW50IHRvIHRoZSBzZXJ2ZXIuXG4qICAgYGdldGA6IENvcnJlc3BvbmRzIHRvIHRoZSBIVFRQIFtHRVQgbWV0aG9kXShodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS4zKTsgZm9ybSBkYXRhIGFyZSBhcHBlbmRlZCB0byB0aGUgYGFjdGlvbmAgYXR0cmlidXRlIFVSSSB3aXRoIGEgXCc/XCcgYXMgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdGluZyBVUkkgaXMgc2VudCB0byB0aGUgc2VydmVyLiBVc2UgdGhpcyBtZXRob2Qgd2hlbiB0aGUgZm9ybSBoYXMgbm8gc2lkZS1lZmZlY3RzIGFuZCBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuXG4qICAgYGRpYWxvZ2A6IFVzZSB3aGVuIHRoZSBmb3JtIGlzIGluc2lkZSBhwqBbYDxkaWFsb2c+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RpYWxvZyAiVGhlIEhUTUwgPGRpYWxvZz4gZWxlbWVudCByZXByZXNlbnRzIGEgZGlhbG9nIGJveCBvciBvdGhlciBpbnRlcmFjdGl2ZSBjb21wb25lbnQsIHN1Y2ggYXMgYW4gaW5zcGVjdG9yIG9yIHdpbmRvdy4iKSBlbGVtZW50IHRvIGNsb3NlIHRoZSBkaWFsb2cgd2hlbiBzdWJtaXR0ZWQuXG5cblRoaXMgdmFsdWUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBbYGZvcm1tZXRob2RgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItZm9ybW1ldGhvZCkgYXR0cmlidXRlIG9uIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIG9yIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQuJ319LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBvZiB0aGUgZm9ybS4gSW4gSFRNTCA0LCBpdHMgdXNlIGlzIGRlcHJlY2F0ZWQgKGBpZGAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCkuIEl0IG11c3QgYmUgdW5pcXVlIGFtb25nIHRoZSBmb3JtcyBpbiBhIGRvY3VtZW50IGFuZCBub3QganVzdCBhbiBlbXB0eSBzdHJpbmcgaW4gSFRNTCA1LiJ9fSx7bmFtZToibm92YWxpZGF0ZSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIGZvcm0gaXMgbm90IHRvIGJlIHZhbGlkYXRlZCB3aGVuIHN1Ym1pdHRlZC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCAoYW5kIHRoZXJlZm9yZSB0aGUgZm9ybSBpcyB2YWxpZGF0ZWQpLCB0aGlzIGRlZmF1bHQgc2V0dGluZyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIFtgZm9ybW5vdmFsaWRhdGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItZm9ybW5vdmFsaWRhdGUpIGF0dHJpYnV0ZSBvbiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBvciBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50IGJlbG9uZ2luZyB0byB0aGUgZm9ybS4nfX0se25hbWU6InRhcmdldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBuYW1lIG9yIGtleXdvcmQgaW5kaWNhdGluZyB3aGVyZSB0byBkaXNwbGF5IHRoZSByZXNwb25zZSB0aGF0IGlzIHJlY2VpdmVkIGFmdGVyIHN1Ym1pdHRpbmcgdGhlIGZvcm0uIEluIEhUTUwgNCwgdGhpcyBpcyB0aGUgbmFtZS9rZXl3b3JkIGZvciBhIGZyYW1lLiBJbiBIVE1MNSwgaXQgaXMgYSBuYW1lL2tleXdvcmQgZm9yIGEgX2Jyb3dzaW5nIGNvbnRleHRfIChmb3IgZXhhbXBsZSwgdGFiLCB3aW5kb3csIG9yIGlubGluZSBmcmFtZSkuIFRoZSBmb2xsb3dpbmcga2V5d29yZHMgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOlxuXG4qICAgYF9zZWxmYDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgc2FtZSBIVE1MIDQgZnJhbWUgKG9yIEhUTUw1IGJyb3dzaW5nIGNvbnRleHQpIGFzIHRoZSBjdXJyZW50IG9uZS4gVGhpcyB2YWx1ZSBpcyB0aGUgZGVmYXVsdCBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQuXG4qICAgYF9ibGFua2A6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gYSBuZXcgdW5uYW1lZCBIVE1MIDQgd2luZG93IG9yIEhUTUw1IGJyb3dzaW5nIGNvbnRleHQuXG4qICAgYF9wYXJlbnRgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIHRoZSBIVE1MIDQgZnJhbWVzZXQgcGFyZW50IG9mIHRoZSBjdXJyZW50IGZyYW1lLCBvciBIVE1MNSBwYXJlbnQgYnJvd3NpbmcgY29udGV4dCBvZiB0aGUgY3VycmVudCBvbmUuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cbiogICBgX3RvcGA6IEhUTUwgNDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgZnVsbCBvcmlnaW5hbCB3aW5kb3csIGFuZCBjYW5jZWwgYWxsIG90aGVyIGZyYW1lcy4gSFRNTDU6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0IChpLmUuLCB0aGUgYnJvd3NpbmcgY29udGV4dCB0aGF0IGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBjdXJyZW50IG9uZSwgYW5kIGhhcyBubyBwYXJlbnQpLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgb3B0aW9uIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG4qICAgX2lmcmFtZW5hbWVfOiBUaGUgcmVzcG9uc2UgaXMgZGlzcGxheWVkIGluIGEgbmFtZWQgW2A8aWZyYW1lPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pZnJhbWUgIlRoZSBIVE1MIElubGluZSBGcmFtZSBlbGVtZW50ICg8aWZyYW1lPikgcmVwcmVzZW50cyBhIG5lc3RlZCBicm93c2luZyBjb250ZXh0LCBlbWJlZGRpbmcgYW5vdGhlciBIVE1MIHBhZ2UgaW50byB0aGUgY3VycmVudCBvbmUuIikuXG5cbkhUTUw1OiBUaGlzIHZhbHVlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgW2Bmb3JtdGFyZ2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiNhdHRyLWZvcm10YXJnZXQpIGF0dHJpYnV0ZSBvbiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBvciBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50Lid9fSx7bmFtZToiYWNjZXB0IixkZXNjcmlwdGlvbjonQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb250ZW50IHR5cGVzIHRoYXQgdGhlIHNlcnZlciBhY2NlcHRzLlxuXG4qKlVzYWdlIG5vdGU6KiogVGhpcyBhdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZCBpbiBIVE1MNSBhbmQgc2hvdWxkIG5vIGxvbmdlciBiZSB1c2VkLiBJbnN0ZWFkLCB1c2UgdGhlIFtgYWNjZXB0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0I2F0dHItYWNjZXB0KSBhdHRyaWJ1dGUgb2YgdGhlIHNwZWNpZmljIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQuJ30se25hbWU6ImF1dG9jYXBpdGFsaXplIixkZXNjcmlwdGlvbjoiVGhpcyBpcyBhIG5vbnN0YW5kYXJkIGF0dHJpYnV0ZSB1c2VkIGJ5IGlPUyBTYWZhcmkgTW9iaWxlIHdoaWNoIGNvbnRyb2xzIHdoZXRoZXIgYW5kIGhvdyB0aGUgdGV4dCB2YWx1ZSBmb3IgdGV4dHVhbCBmb3JtIGNvbnRyb2wgZGVzY2VuZGFudHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZWQgYXMgaXQgaXMgZW50ZXJlZC9lZGl0ZWQgYnkgdGhlIHVzZXIuIElmIHRoZSBgYXV0b2NhcGl0YWxpemVgIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQgb24gYW4gaW5kaXZpZHVhbCBmb3JtIGNvbnRyb2wgZGVzY2VuZGFudCwgaXQgdHJ1bXBzIHRoZSBmb3JtLXdpZGUgYGF1dG9jYXBpdGFsaXplYCBzZXR0aW5nLiBUaGUgbm9uLWRlcHJlY2F0ZWQgdmFsdWVzIGFyZSBhdmFpbGFibGUgaW4gaU9TIDUgYW5kIGxhdGVyLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgc2VudGVuY2VzYC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBub25lYDogQ29tcGxldGVseSBkaXNhYmxlcyBhdXRvbWF0aWMgY2FwaXRhbGl6YXRpb25cbiogICBgc2VudGVuY2VzYDogQXV0b21hdGljYWxseSBjYXBpdGFsaXplIHRoZSBmaXJzdCBsZXR0ZXIgb2Ygc2VudGVuY2VzLlxuKiAgIGB3b3Jkc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIHdvcmRzLlxuKiAgIGBjaGFyYWN0ZXJzYDogQXV0b21hdGljYWxseSBjYXBpdGFsaXplIGFsbCBjaGFyYWN0ZXJzLlxuKiAgIGBvbmA6IERlcHJlY2F0ZWQgc2luY2UgaU9TIDUuXG4qICAgYG9mZmA6IERlcHJlY2F0ZWQgc2luY2UgaU9TIDUuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtIn1dfSx7bmFtZToibGFiZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsYWJlbCBlbGVtZW50IHJlcHJlc2VudHMgYSBjYXB0aW9uIGluIGEgdXNlciBpbnRlcmZhY2UuIFRoZSBjYXB0aW9uIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBmb3JtIGNvbnRyb2wsIGtub3duIGFzIHRoZSBsYWJlbCBlbGVtZW50J3MgbGFiZWxlZCBjb250cm9sLCBlaXRoZXIgdXNpbmcgdGhlIGZvciBhdHRyaWJ1dGUsIG9yIGJ5IHB1dHRpbmcgdGhlIGZvcm0gY29udHJvbCBpbnNpZGUgdGhlIGxhYmVsIGVsZW1lbnQgaXRzZWxmLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCB3aXRoIHdoaWNoIHRoZSBsYWJlbCBpcyBhc3NvY2lhdGVkIChpdHMgX2Zvcm0gb3duZXJfKS4gSWYgc3BlY2lmaWVkLCB0aGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBpcyB0aGUgYGlkYCBvZiBhIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIFRoaXMgbGV0cyB5b3UgcGxhY2UgbGFiZWwgZWxlbWVudHMgYW55d2hlcmUgd2l0aGluIGEgZG9jdW1lbnQsIG5vdCBqdXN0IGFzIGRlc2NlbmRhbnRzIG9mIHRoZWlyIGZvcm0gZWxlbWVudHMuJ319LHtuYW1lOiJmb3IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBbYGlkYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLWlkKSBvZiBhIFtsYWJlbGFibGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0d1aWRlL0hUTUwvQ29udGVudF9jYXRlZ29yaWVzI0Zvcm1fbGFiZWxhYmxlKSBmb3JtLXJlbGF0ZWQgZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudCBhcyB0aGUgYDxsYWJlbD5gIGVsZW1lbnQuIFRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBkb2N1bWVudCB3aXRoIGFuIGBpZGAgbWF0Y2hpbmcgdGhlIHZhbHVlIG9mIHRoZSBgZm9yYCBhdHRyaWJ1dGUgaXMgdGhlIF9sYWJlbGVkIGNvbnRyb2xfIGZvciB0aGlzIGxhYmVsIGVsZW1lbnQsIGlmIGl0IGlzIGEgbGFiZWxhYmxlIGVsZW1lbnQuIElmIGl0IGlzwqBub3QgbGFiZWxhYmxlIHRoZW4gdGhlIGBmb3JgIGF0dHJpYnV0ZSBoYXMgbm8gZWZmZWN0LiBJZiB0aGVyZSBhcmUgb3RoZXIgZWxlbWVudHMgd2hpY2ggYWxzbyBtYXRjaCB0aGUgYGlkYCB2YWx1ZSwgbGF0ZXIgaW4gdGhlIGRvY3VtZW50LCB0aGV5IGFyZSBub3QgY29uc2lkZXJlZC5cblxuKipOb3RlKio6IEEgYDxsYWJlbD5gIGVsZW1lbnQgY2FuIGhhdmUgYm90aCBhIGBmb3JgIGF0dHJpYnV0ZSBhbmQgYSBjb250YWluZWQgY29udHJvbCBlbGVtZW50LCBhcyBsb25nIGFzIHRoZSBgZm9yYCBhdHRyaWJ1dGUgcG9pbnRzIHRvIHRoZSBjb250YWluZWQgY29udHJvbCBlbGVtZW50LiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xhYmVsIn1dfSx7bmFtZToiaW5wdXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbnB1dCBlbGVtZW50IHJlcHJlc2VudHMgYSB0eXBlZCBkYXRhIGZpZWxkLCB1c3VhbGx5IHdpdGggYSBmb3JtIGNvbnRyb2wgdG8gYWxsb3cgdGhlIHVzZXIgdG8gZWRpdCB0aGUgZGF0YS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWNjZXB0In0se25hbWU6ImFsdCJ9LHtuYW1lOiJhdXRvY29tcGxldGUiLHZhbHVlU2V0OiJpbnB1dGF1dG9jb21wbGV0ZSJ9LHtuYW1lOiJhdXRvZm9jdXMiLHZhbHVlU2V0OiJ2In0se25hbWU6ImNoZWNrZWQiLHZhbHVlU2V0OiJ2In0se25hbWU6ImRpcm5hbWUifSx7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2In0se25hbWU6ImZvcm0ifSx7bmFtZToiZm9ybWFjdGlvbiJ9LHtuYW1lOiJmb3JtZW5jdHlwZSIsdmFsdWVTZXQ6ImV0In0se25hbWU6ImZvcm1tZXRob2QiLHZhbHVlU2V0OiJmbSJ9LHtuYW1lOiJmb3Jtbm92YWxpZGF0ZSIsdmFsdWVTZXQ6InYifSx7bmFtZToiZm9ybXRhcmdldCJ9LHtuYW1lOiJoZWlnaHQifSx7bmFtZToiaW5wdXRtb2RlIix2YWx1ZVNldDoiaW0ifSx7bmFtZToibGlzdCJ9LHtuYW1lOiJtYXgifSx7bmFtZToibWF4bGVuZ3RoIn0se25hbWU6Im1pbiJ9LHtuYW1lOiJtaW5sZW5ndGgifSx7bmFtZToibXVsdGlwbGUiLHZhbHVlU2V0OiJ2In0se25hbWU6Im5hbWUifSx7bmFtZToicGF0dGVybiJ9LHtuYW1lOiJwbGFjZWhvbGRlciJ9LHtuYW1lOiJyZWFkb25seSIsdmFsdWVTZXQ6InYifSx7bmFtZToicmVxdWlyZWQiLHZhbHVlU2V0OiJ2In0se25hbWU6InNpemUifSx7bmFtZToic3JjIn0se25hbWU6InN0ZXAifSx7bmFtZToidHlwZSIsdmFsdWVTZXQ6InQifSx7bmFtZToidmFsdWUifSx7bmFtZToid2lkdGgifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0In1dfSx7bmFtZToiYnV0dG9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYnV0dG9uIGVsZW1lbnQgcmVwcmVzZW50cyBhIGJ1dHRvbiBsYWJlbGVkIGJ5IGl0cyBjb250ZW50cy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYXV0b2ZvY3VzIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBsZXRzIHlvdSBzcGVjaWZ5IHRoYXQgdGhlIGJ1dHRvbiBzaG91bGQgaGF2ZSBpbnB1dCBmb2N1cyB3aGVuIHRoZSBwYWdlIGxvYWRzLCB1bmxlc3MgdGhlIHVzZXIgb3ZlcnJpZGVzIGl0LCBmb3IgZXhhbXBsZSBieSB0eXBpbmcgaW4gYSBkaWZmZXJlbnQgY29udHJvbC4gT25seSBvbmUgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQgaW4gYSBkb2N1bWVudCBjYW4gaGF2ZSB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZWQuIn19LHtuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgY2Fubm90IGludGVyYWN0IHdpdGggdGhlIGJ1dHRvbi4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGJ1dHRvbiBpbmhlcml0cyBpdHMgc2V0dGluZyBmcm9tIHRoZSBjb250YWluaW5nIGVsZW1lbnQsIGZvciBleGFtcGxlIFtgPGZpZWxkc2V0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9maWVsZHNldCAiVGhlIEhUTUwgPGZpZWxkc2V0PiBlbGVtZW50IGlzIHVzZWQgdG8gZ3JvdXAgc2V2ZXJhbCBjb250cm9scyBhcyB3ZWxsIGFzIGxhYmVscyAoPGxhYmVsPikgd2l0aGluIGEgd2ViIGZvcm0uIik7IGlmIHRoZXJlIGlzIG5vIGNvbnRhaW5pbmcgZWxlbWVudCB3aXRoIHRoZSAqKmRpc2FibGVkKiogYXR0cmlidXRlIHNldCwgdGhlbiB0aGUgYnV0dG9uIGlzIGVuYWJsZWQuXG5cbkZpcmVmb3ggd2lsbCwgdW5saWtlIG90aGVyIGJyb3dzZXJzLCBieSBkZWZhdWx0LCBbcGVyc2lzdCB0aGUgZHluYW1pYyBkaXNhYmxlZCBzdGF0ZV0oaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTk4NTgzOS9idWctd2l0aC1maXJlZm94LWRpc2FibGVkLWF0dHJpYnV0ZS1vZi1pbnB1dC1ub3QtcmVzZXR0aW5nLXdoZW4tcmVmcmVzaGluZykgb2YgYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgYWNyb3NzIHBhZ2UgbG9hZHMuIFVzZSB0aGUgW2BhdXRvY29tcGxldGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItYXV0b2NvbXBsZXRlKSBhdHRyaWJ1dGUgdG8gY29udHJvbCB0aGlzIGZlYXR1cmUuJ319LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgZm9ybSBlbGVtZW50IHRoYXQgdGhlIGJ1dHRvbiBpcyBhc3NvY2lhdGVkIHdpdGggKGl0cyBfZm9ybSBvd25lcl8pLiBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBtdXN0IGJlIHRoZSAqKmlkKiogYXR0cmlidXRlIG9mIGEgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGA8YnV0dG9uPmAgZWxlbWVudCB3aWxsIGJlIGFzc29jaWF0ZWQgdG8gYW4gYW5jZXN0b3IgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCwgaWYgb25lIGV4aXN0cy4gVGhpcyBhdHRyaWJ1dGUgZW5hYmxlcyB5b3UgdG8gYXNzb2NpYXRlIGA8YnV0dG9uPmAgZWxlbWVudHMgdG8gW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudHMgYW55d2hlcmUgd2l0aGluIGEgZG9jdW1lbnQsIG5vdCBqdXN0IGFzIGRlc2NlbmRhbnRzIG9mIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnRzLid9fSx7bmFtZToiZm9ybWFjdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIFVSSSBvZiBhIHByb2dyYW0gdGhhdCBwcm9jZXNzZXMgdGhlIGluZm9ybWF0aW9uIHN1Ym1pdHRlZCBieSB0aGUgYnV0dG9uLiBJZiBzcGVjaWZpZWQsIGl0IG92ZXJyaWRlcyB0aGUgW2BhY3Rpb25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLWFjdGlvbikgYXR0cmlidXRlIG9mIHRoZSBidXR0b24ncyBmb3JtIG93bmVyLiJ9fSx7bmFtZToiZm9ybWVuY3R5cGUiLHZhbHVlU2V0OiJldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSWYgdGhlIGJ1dHRvbiBpcyBhIHN1Ym1pdCBidXR0b24sIHRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgdHlwZSBvZiBjb250ZW50IHRoYXQgaXMgdXNlZCB0byBzdWJtaXQgdGhlIGZvcm0gdG8gdGhlIHNlcnZlci4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgOiBUaGUgZGVmYXVsdCB2YWx1ZSBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQuXG4qICAgYG11bHRpcGFydC9mb3JtLWRhdGFgOiBVc2UgdGhpcyB2YWx1ZSBpZiB5b3UgYXJlIHVzaW5nIGFuIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQgd2l0aCB0aGUgW2B0eXBlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0I2F0dHItdHlwZSkgYXR0cmlidXRlIHNldCB0byBgZmlsZWAuXG4qICAgYHRleHQvcGxhaW5gXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgaXQgb3ZlcnJpZGVzIHRoZSBbYGVuY3R5cGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLWVuY3R5cGUpIGF0dHJpYnV0ZSBvZiB0aGUgYnV0dG9uXCdzIGZvcm0gb3duZXIuJ319LHtuYW1lOiJmb3JtbWV0aG9kIix2YWx1ZVNldDoiZm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBidXR0b24gaXMgYSBzdWJtaXQgYnV0dG9uLCB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIEhUVFAgbWV0aG9kIHRoYXQgdGhlIGJyb3dzZXIgdXNlcyB0byBzdWJtaXQgdGhlIGZvcm0uIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgcG9zdGA6IFRoZSBkYXRhIGZyb20gdGhlIGZvcm0gYXJlIGluY2x1ZGVkIGluIHRoZSBib2R5IG9mIHRoZSBmb3JtIGFuZCBzZW50IHRvIHRoZSBzZXJ2ZXIuXG4qICAgYGdldGA6IFRoZSBkYXRhIGZyb20gdGhlIGZvcm0gYXJlIGFwcGVuZGVkIHRvIHRoZSAqKmZvcm0qKiBhdHRyaWJ1dGUgVVJJLCB3aXRoIGEgJz8nIGFzIGEgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdGluZyBVUkkgaXMgc2VudCB0byB0aGUgc2VydmVyLiBVc2UgdGhpcyBtZXRob2Qgd2hlbiB0aGUgZm9ybSBoYXMgbm8gc2lkZS1lZmZlY3RzIGFuZCBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuXG5cbklmIHNwZWNpZmllZCwgdGhpcyBhdHRyaWJ1dGUgb3ZlcnJpZGVzIHRoZSBbYG1ldGhvZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtI2F0dHItbWV0aG9kKSBhdHRyaWJ1dGUgb2YgdGhlIGJ1dHRvbidzIGZvcm0gb3duZXIuIn19LHtuYW1lOiJmb3Jtbm92YWxpZGF0ZSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBidXR0b24gaXMgYSBzdWJtaXQgYnV0dG9uLCB0aGlzIEJvb2xlYW4gYXR0cmlidXRlIHNwZWNpZmllcyB0aGF0IHRoZSBmb3JtIGlzIG5vdCB0byBiZSB2YWxpZGF0ZWQgd2hlbiBpdCBpcyBzdWJtaXR0ZWQuIElmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgaXQgb3ZlcnJpZGVzIHRoZSBbYG5vdmFsaWRhdGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLW5vdmFsaWRhdGUpIGF0dHJpYnV0ZSBvZiB0aGUgYnV0dG9uJ3MgZm9ybSBvd25lci4ifX0se25hbWU6ImZvcm10YXJnZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBidXR0b24gaXMgYSBzdWJtaXQgYnV0dG9uLCB0aGlzIGF0dHJpYnV0ZSBpcyBhIG5hbWUgb3Iga2V5d29yZCBpbmRpY2F0aW5nIHdoZXJlIHRvIGRpc3BsYXkgdGhlIHJlc3BvbnNlIHRoYXQgaXMgcmVjZWl2ZWQgYWZ0ZXIgc3VibWl0dGluZyB0aGUgZm9ybS4gVGhpcyBpcyBhIG5hbWUgb2YsIG9yIGtleXdvcmQgZm9yLCBhIF9icm93c2luZyBjb250ZXh0XyAoZm9yIGV4YW1wbGUsIHRhYiwgd2luZG93LCBvciBpbmxpbmUgZnJhbWUpLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIGl0IG92ZXJyaWRlcyB0aGUgW2B0YXJnZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLXRhcmdldCkgYXR0cmlidXRlIG9mIHRoZSBidXR0b24ncyBmb3JtIG93bmVyLiBUaGUgZm9sbG93aW5nIGtleXdvcmRzIGhhdmUgc3BlY2lhbCBtZWFuaW5nczpcblxuKiAgIGBfc2VsZmA6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIHNhbWUgYnJvd3NpbmcgY29udGV4dCBhcyB0aGUgY3VycmVudCBvbmUuIFRoaXMgdmFsdWUgaXMgdGhlIGRlZmF1bHQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLlxuKiAgIGBfYmxhbmtgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIGEgbmV3IHVubmFtZWQgYnJvd3NpbmcgY29udGV4dC5cbiogICBgX3BhcmVudGA6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIHBhcmVudCBicm93c2luZyBjb250ZXh0IG9mIHRoZSBjdXJyZW50IG9uZS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIG9wdGlvbiBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuKiAgIGBfdG9wYDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgKHRoYXQgaXMsIHRoZSBicm93c2luZyBjb250ZXh0IHRoYXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgb25lLCBhbmQgaGFzIG5vIHBhcmVudCkuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC4ifX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYW1lIG9mIHRoZSBidXR0b24sIHdoaWNoIGlzIHN1Ym1pdHRlZCB3aXRoIHRoZSBmb3JtIGRhdGEuIn19LHtuYW1lOiJ0eXBlIix2YWx1ZVNldDoiYnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0eXBlIG9mIHRoZSBidXR0b24uIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgc3VibWl0YDogVGhlIGJ1dHRvbiBzdWJtaXRzIHRoZSBmb3JtIGRhdGEgdG8gdGhlIHNlcnZlci4gVGhpcyBpcyB0aGUgZGVmYXVsdCBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIG9yIGlmIHRoZSBhdHRyaWJ1dGUgaXMgZHluYW1pY2FsbHkgY2hhbmdlZCB0byBhbiBlbXB0eSBvciBpbnZhbGlkIHZhbHVlLlxuKiAgIGByZXNldGA6IFRoZSBidXR0b24gcmVzZXRzIGFsbCB0aGUgY29udHJvbHMgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMuXG4qICAgYGJ1dHRvbmA6IFRoZSBidXR0b24gaGFzIG5vIGRlZmF1bHQgYmVoYXZpb3IuIEl0IGNhbiBoYXZlIGNsaWVudC1zaWRlIHNjcmlwdHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbGVtZW50J3MgZXZlbnRzLCB3aGljaCBhcmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGV2ZW50cyBvY2N1ci4ifX0se25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgYnV0dG9uLiBJdCBkZWZpbmVzIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGJ1dHRvbiB3aGljaCBpcyBzdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybSBkYXRhLiBUaGlzIHZhbHVlIGlzIHBhc3NlZCB0byB0aGUgc2VydmVyIGluIHBhcmFtcyB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZC4ifX0se25hbWU6ImF1dG9jb21wbGV0ZSIsZGVzY3JpcHRpb246J1RoZSB1c2Ugb2YgdGhpcyBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgaXMgbm9uc3RhbmRhcmQgYW5kIEZpcmVmb3gtc3BlY2lmaWMuIEJ5IGRlZmF1bHQsIHVubGlrZSBvdGhlciBicm93c2VycywgW0ZpcmVmb3ggcGVyc2lzdHMgdGhlIGR5bmFtaWMgZGlzYWJsZWQgc3RhdGVdKGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU5ODU4MzkvYnVnLXdpdGgtZmlyZWZveC1kaXNhYmxlZC1hdHRyaWJ1dGUtb2YtaW5wdXQtbm90LXJlc2V0dGluZy13aGVuLXJlZnJlc2hpbmcpIG9mIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIGFjcm9zcyBwYWdlIGxvYWRzLiBTZXR0aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSB0byBgb2ZmYCAoaS5lLiBgYXV0b2NvbXBsZXRlPSJvZmYiYCkgZGlzYWJsZXMgdGhpcyBmZWF0dXJlLiBTZWUgW2J1Z8KgNjU0MDcyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02NTQwNzIgImlmIGRpc2FibGVkIHN0YXRlIGlzIGNoYW5nZWQgd2l0aCBqYXZhc2NyaXB0LCB0aGUgbm9ybWFsIHN0YXRlIGRvZXNuXCd0IHJldHVybiBhZnRlciByZWZyZXNoaW5nIHRoZSBwYWdlIikuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24ifV19LHtuYW1lOiJzZWxlY3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzZWxlY3QgZWxlbWVudCByZXByZXNlbnRzIGEgY29udHJvbCBmb3Igc2VsZWN0aW5nIGFtb25nc3QgYSBzZXQgb2Ygb3B0aW9ucy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYXV0b2NvbXBsZXRlIix2YWx1ZVNldDoiaW5wdXRhdXRvY29tcGxldGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0EgW2BET01TdHJpbmdgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRE9NU3RyaW5nICJET01TdHJpbmcgaXMgYSBVVEYtMTYgU3RyaW5nLiBBcyBKYXZhU2NyaXB0IGFscmVhZHkgdXNlcyBzdWNoIHN0cmluZ3MsIERPTVN0cmluZyBpcyBtYXBwZWQgZGlyZWN0bHkgdG8gYSBTdHJpbmcuIikgcHJvdmlkaW5nIGEgaGludCBmb3IgYSBbdXNlciBhZ2VudFwnc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS91c2VyX2FnZW50ICJ1c2VyIGFnZW50XCdzOiBBIHVzZXIgYWdlbnQgaXMgYSBjb21wdXRlciBwcm9ncmFtIHJlcHJlc2VudGluZyBhIHBlcnNvbiwgZm9yIGV4YW1wbGUsIGEgYnJvd3NlciBpbiBhIFdlYiBjb250ZXh0LiIpIGF1dG9jb21wbGV0ZSBmZWF0dXJlLiBTZWUgW1RoZSBIVE1MIGF1dG9jb21wbGV0ZSBhdHRyaWJ1dGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQXR0cmlidXRlcy9hdXRvY29tcGxldGUpIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgdmFsdWVzIGFuZCBkZXRhaWxzIG9uIGhvdyB0byB1c2UgYXV0b2NvbXBsZXRlLid9fSx7bmFtZToiYXV0b2ZvY3VzIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBsZXRzIHlvdSBzcGVjaWZ5IHRoYXQgYSBmb3JtIGNvbnRyb2wgc2hvdWxkIGhhdmUgaW5wdXQgZm9jdXMgd2hlbiB0aGUgcGFnZSBsb2Fkcy4gT25seSBvbmUgZm9ybSBlbGVtZW50IGluIGEgZG9jdW1lbnQgY2FuIGhhdmUgdGhlIGBhdXRvZm9jdXNgIGF0dHJpYnV0ZS4ifX0se25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBjYW5ub3QgaW50ZXJhY3Qgd2l0aCB0aGUgY29udHJvbC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGNvbnRyb2wgaW5oZXJpdHMgaXRzIHNldHRpbmcgZnJvbSB0aGUgY29udGFpbmluZyBlbGVtZW50LCBmb3IgZXhhbXBsZSBgZmllbGRzZXRgOyBpZiB0aGVyZSBpcyBubyBjb250YWluaW5nIGVsZW1lbnQgd2l0aCB0aGUgYGRpc2FibGVkYCBhdHRyaWJ1dGUgc2V0LCB0aGVuIHRoZSBjb250cm9sIGlzIGVuYWJsZWQuIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBsZXRzIHlvdSBzcGVjaWZ5IHRoZSBmb3JtIGVsZW1lbnQgdG/CoHdoaWNowqB0aGUgc2VsZWN0IGVsZW1lbnQgaXMgYXNzb2NpYXRlZMKgKHRoYXQgaXMsIGl0cyAiZm9ybSBvd25lciIpLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIGl0cyB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBgaWRgIG9mIGEgZm9ybSBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50LiBUaGlzIGVuYWJsZXMgeW91IHRvIHBsYWNlIHNlbGVjdCBlbGVtZW50cyBhbnl3aGVyZSB3aXRoaW4gYSBkb2N1bWVudCwgbm90IGp1c3QgYXMgZGVzY2VuZGFudHMgb2YgdGhlaXIgZm9ybSBlbGVtZW50cy4nfX0se25hbWU6Im11bHRpcGxlIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCBtdWx0aXBsZSBvcHRpb25zIGNhbiBiZSBzZWxlY3RlZCBpbiB0aGUgbGlzdC4gSWYgaXQgaXMgbm90IHNwZWNpZmllZCwgdGhlbiBvbmx5IG9uZSBvcHRpb24gY2FuIGJlIHNlbGVjdGVkIGF0IGEgdGltZS4gV2hlbiBgbXVsdGlwbGVgIGlzIHNwZWNpZmllZCwgbW9zdCBicm93c2VycyB3aWxsIHNob3cgYSBzY3JvbGxpbmcgbGlzdCBib3ggaW5zdGVhZCBvZiBhIHNpbmdsZSBsaW5lIGRyb3Bkb3duLiJ9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBjb250cm9sLiJ9fSx7bmFtZToicmVxdWlyZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRpbmcgdGhhdCBhbiBvcHRpb24gd2l0aCBhIG5vbi1lbXB0eSBzdHJpbmcgdmFsdWUgbXVzdCBiZSBzZWxlY3RlZC4ifX0se25hbWU6InNpemUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBjb250cm9sIGlzIHByZXNlbnRlZCBhcyBhIHNjcm9sbGluZyBsaXN0IGJveCAoZS5nLiB3aGVuIGBtdWx0aXBsZWAgaXMgc3BlY2lmaWVkKSwgdGhpcyBhdHRyaWJ1dGUgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIGxpc3QgdGhhdCBzaG91bGQgYmUgdmlzaWJsZSBhdCBvbmUgdGltZS4gQnJvd3NlcnMgYXJlIG5vdCByZXF1aXJlZCB0byBwcmVzZW50IGEgc2VsZWN0IGVsZW1lbnQgYXMgYSBzY3JvbGxlZCBsaXN0IGJveC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMC5cblxuKipOb3RlOioqIEFjY29yZGluZyB0byB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiwgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHNpemUgc2hvdWxkIGJlIDE7IGhvd2V2ZXIsIGluIHByYWN0aWNlLCB0aGlzIGhhcyBiZWVuIGZvdW5kIHRvIGJyZWFrIHNvbWUgd2ViIHNpdGVzLCBhbmQgbm8gb3RoZXIgYnJvd3NlciBjdXJyZW50bHkgZG9lcyB0aGF0LCBzbyBNb3ppbGxhIGhhcyBvcHRlZCB0byBjb250aW51ZSB0byByZXR1cm4gMCBmb3IgdGhlIHRpbWUgYmVpbmcgd2l0aCBGaXJlZm94LiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NlbGVjdCJ9XX0se25hbWU6ImRhdGFsaXN0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGF0YWxpc3QgZWxlbWVudCByZXByZXNlbnRzIGEgc2V0IG9mIG9wdGlvbiBlbGVtZW50cyB0aGF0IHJlcHJlc2VudCBwcmVkZWZpbmVkIG9wdGlvbnMgZm9yIG90aGVyIGNvbnRyb2xzLiBJbiB0aGUgcmVuZGVyaW5nLCB0aGUgZGF0YWxpc3QgZWxlbWVudCByZXByZXNlbnRzIG5vdGhpbmcgYW5kIGl0LCBhbG9uZyB3aXRoIGl0cyBjaGlsZHJlbiwgc2hvdWxkIGJlIGhpZGRlbi4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kYXRhbGlzdCJ9XX0se25hbWU6Im9wdGdyb3VwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgb3B0Z3JvdXAgZWxlbWVudCByZXByZXNlbnRzIGEgZ3JvdXAgb2Ygb3B0aW9uIGVsZW1lbnRzIHdpdGggYSBjb21tb24gbGFiZWwuIn0sYXR0cmlidXRlczpbe25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpcyBzZXQsIG5vbmUgb2YgdGhlIGl0ZW1zIGluIHRoaXMgb3B0aW9uIGdyb3VwIGlzIHNlbGVjdGFibGUuIE9mdGVuIGJyb3dzZXJzIGdyZXkgb3V0IHN1Y2ggY29udHJvbCBhbmQgaXQgd29uJ3QgcmVjZWl2ZSBhbnkgYnJvd3NpbmcgZXZlbnRzLCBsaWtlIG1vdXNlIGNsaWNrcyBvciBmb2N1cy1yZWxhdGVkIG9uZXMuIn19LHtuYW1lOiJsYWJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5hbWUgb2YgdGhlIGdyb3VwIG9mIG9wdGlvbnMsIHdoaWNoIHRoZSBicm93c2VyIGNhbiB1c2Ugd2hlbiBsYWJlbGluZyB0aGUgb3B0aW9ucyBpbiB0aGUgdXNlciBpbnRlcmZhY2UuIFRoaXMgYXR0cmlidXRlIGlzIG1hbmRhdG9yeSBpZiB0aGlzIGVsZW1lbnQgaXMgdXNlZC4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vcHRncm91cCJ9XX0se25hbWU6Im9wdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG9wdGlvbiBlbGVtZW50IHJlcHJlc2VudHMgYW4gb3B0aW9uIGluIGEgc2VsZWN0IGVsZW1lbnQgb3IgYXMgcGFydCBvZiBhIGxpc3Qgb2Ygc3VnZ2VzdGlvbnMgaW4gYSBkYXRhbGlzdCBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0lmIHRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaXMgc2V0LCB0aGlzIG9wdGlvbiBpcyBub3QgY2hlY2thYmxlLiBPZnRlbiBicm93c2VycyBncmV5IG91dCBzdWNoIGNvbnRyb2wgYW5kIGl0IHdvblwndCByZWNlaXZlIGFueSBicm93c2luZyBldmVudCwgbGlrZSBtb3VzZSBjbGlja3Mgb3IgZm9jdXMtcmVsYXRlZCBvbmVzLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCB0aGUgZWxlbWVudCBjYW4gc3RpbGwgYmUgZGlzYWJsZWQgaWYgb25lIG9mIGl0cyBhbmNlc3RvcnMgaXMgYSBkaXNhYmxlZCBbYDxvcHRncm91cD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb3B0Z3JvdXAgIlRoZSBIVE1MIDxvcHRncm91cD4gZWxlbWVudCBjcmVhdGVzIGEgZ3JvdXBpbmcgb2Ygb3B0aW9ucyB3aXRoaW4gYSA8c2VsZWN0PiBlbGVtZW50LiIpIGVsZW1lbnQuJ319LHtuYW1lOiJsYWJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaXMgdGV4dCBmb3IgdGhlIGxhYmVsIGluZGljYXRpbmcgdGhlIG1lYW5pbmcgb2YgdGhlIG9wdGlvbi4gSWYgdGhlIGBsYWJlbGAgYXR0cmlidXRlIGlzbid0IGRlZmluZWQsIGl0cyB2YWx1ZSBpcyB0aGF0IG9mIHRoZSBlbGVtZW50IHRleHQgY29udGVudC4ifX0se25hbWU6InNlbGVjdGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSWYgcHJlc2VudCwgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgb3B0aW9uIGlzIGluaXRpYWxseSBzZWxlY3RlZC4gSWYgdGhlIGA8b3B0aW9uPmAgZWxlbWVudCBpcyB0aGUgZGVzY2VuZGFudCBvZiBhIFtgPHNlbGVjdD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2VsZWN0ICJUaGUgSFRNTCA8c2VsZWN0PiBlbGVtZW50IHJlcHJlc2VudHMgYSBjb250cm9sIHRoYXQgcHJvdmlkZXMgYSBtZW51IG9mIG9wdGlvbnMiKSBlbGVtZW50IHdob3NlIFtgbXVsdGlwbGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2VsZWN0I2F0dHItbXVsdGlwbGUpIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCBvbmx5IG9uZSBzaW5nbGUgYDxvcHRpb24+YCBvZiB0aGlzIFtgPHNlbGVjdD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2VsZWN0ICJUaGUgSFRNTCA8c2VsZWN0PiBlbGVtZW50IHJlcHJlc2VudHMgYSBjb250cm9sIHRoYXQgcHJvdmlkZXMgYSBtZW51IG9mIG9wdGlvbnMiKSBlbGVtZW50IG1heSBoYXZlIHRoZSBgc2VsZWN0ZWRgIGF0dHJpYnV0ZS4nfX0se25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY29udGVudCBvZiB0aGlzIGF0dHJpYnV0ZSByZXByZXNlbnRzIHRoZSB2YWx1ZSB0byBiZSBzdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybSwgc2hvdWxkIHRoaXMgb3B0aW9uIGJlIHNlbGVjdGVkLsKgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgb21pdHRlZCwgdGhlIHZhbHVlIGlzIHRha2VuIGZyb20gdGhlIHRleHQgY29udGVudCBvZiB0aGUgb3B0aW9uIGVsZW1lbnQuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb3B0aW9uIn1dfSx7bmFtZToidGV4dGFyZWEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0ZXh0YXJlYSBlbGVtZW50IHJlcHJlc2VudHMgYSBtdWx0aWxpbmUgcGxhaW4gdGV4dCBlZGl0IGNvbnRyb2wgZm9yIHRoZSBlbGVtZW50J3MgcmF3IHZhbHVlLiBUaGUgY29udGVudHMgb2YgdGhlIGNvbnRyb2wgcmVwcmVzZW50IHRoZSBjb250cm9sJ3MgZGVmYXVsdCB2YWx1ZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYXV0b2NvbXBsZXRlIix2YWx1ZVNldDoiaW5wdXRhdXRvY29tcGxldGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbCBjYW4gYmUgYXV0b21hdGljYWxseSBjb21wbGV0ZWQgYnkgdGhlIGJyb3dzZXIuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgb2ZmYDogVGhlIHVzZXIgbXVzdCBleHBsaWNpdGx5IGVudGVyIGEgdmFsdWUgaW50byB0aGlzIGZpZWxkIGZvciBldmVyeSB1c2UsIG9yIHRoZSBkb2N1bWVudCBwcm92aWRlcyBpdHMgb3duIGF1dG8tY29tcGxldGlvbiBtZXRob2Q7IHRoZSBicm93c2VyIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgY29tcGxldGUgdGhlIGVudHJ5LlxuKiAgIGBvbmA6IFRoZSBicm93c2VyIGNhbiBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlIHRoZSB2YWx1ZSBiYXNlZCBvbiB2YWx1ZXMgdGhhdCB0aGUgdXNlciBoYXMgZW50ZXJlZCBkdXJpbmcgcHJldmlvdXMgdXNlcy5cblxuSWYgdGhlIGBhdXRvY29tcGxldGVgIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkIG9uIGEgYDx0ZXh0YXJlYT5gIGVsZW1lbnQsIHRoZW4gdGhlIGJyb3dzZXIgdXNlcyB0aGUgYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIHZhbHVlIG9mIHRoZSBgPHRleHRhcmVhPmAgZWxlbWVudFwncyBmb3JtIG93bmVyLiBUaGUgZm9ybSBvd25lciBpcyBlaXRoZXIgdGhlIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgdGhhdCB0aGlzIGA8dGV4dGFyZWE+YCBlbGVtZW50IGlzIGEgZGVzY2VuZGFudCBvZiBvciB0aGUgZm9ybSBlbGVtZW50IHdob3NlIGBpZGAgaXMgc3BlY2lmaWVkIGJ5IHRoZSBgZm9ybWAgYXR0cmlidXRlIG9mIHRoZSBpbnB1dCBlbGVtZW50LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBbYGF1dG9jb21wbGV0ZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtI2F0dHItYXV0b2NvbXBsZXRlKSBhdHRyaWJ1dGUgaW4gW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikuJ319LHtuYW1lOiJhdXRvZm9jdXMiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGxldHMgeW91IHNwZWNpZnkgdGhhdCBhIGZvcm0gY29udHJvbCBzaG91bGQgaGF2ZSBpbnB1dCBmb2N1cyB3aGVuIHRoZSBwYWdlIGxvYWRzLiBPbmx5IG9uZSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudCBpbiBhIGRvY3VtZW50IGNhbiBoYXZlIHRoaXMgYXR0cmlidXRlIHNwZWNpZmllZC4ifX0se25hbWU6ImNvbHMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB2aXNpYmxlIHdpZHRoIG9mIHRoZSB0ZXh0IGNvbnRyb2wsIGluIGF2ZXJhZ2UgY2hhcmFjdGVyIHdpZHRocy4gSWYgaXQgaXMgc3BlY2lmaWVkLCBpdCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci4gSWYgaXQgaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYDIwYC4ifX0se25hbWU6ImRpcm5hbWUifSx7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBpbnRlcmFjdCB3aXRoIHRoZSBjb250cm9sLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgY29udHJvbCBpbmhlcml0cyBpdHMgc2V0dGluZyBmcm9tIHRoZSBjb250YWluaW5nIGVsZW1lbnQsIGZvciBleGFtcGxlIFtgPGZpZWxkc2V0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9maWVsZHNldCAiVGhlIEhUTUwgPGZpZWxkc2V0PiBlbGVtZW50IGlzIHVzZWQgdG8gZ3JvdXAgc2V2ZXJhbCBjb250cm9scyBhcyB3ZWxsIGFzIGxhYmVscyAoPGxhYmVsPikgd2l0aGluIGEgd2ViIGZvcm0uIik7IGlmIHRoZXJlIGlzIG5vIGNvbnRhaW5pbmcgZWxlbWVudCB3aGVuIHRoZSBgZGlzYWJsZWRgIGF0dHJpYnV0ZSBpcyBzZXQsIHRoZSBjb250cm9sIGlzIGVuYWJsZWQuJ319LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgZm9ybSBlbGVtZW50IHRoYXQgdGhlIGA8dGV4dGFyZWE+YCBlbGVtZW50IGlzIGFzc29jaWF0ZWQgd2l0aCAoaXRzICJmb3JtIG93bmVyIikuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIG11c3QgYmUgdGhlIGBpZGAgb2YgYSBmb3JtIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBgPHRleHRhcmVhPmAgZWxlbWVudCBtdXN0IGJlIGEgZGVzY2VuZGFudCBvZiBhIGZvcm0gZWxlbWVudC4gVGhpcyBhdHRyaWJ1dGUgZW5hYmxlcyB5b3UgdG8gcGxhY2UgYDx0ZXh0YXJlYT5gIGVsZW1lbnRzIGFueXdoZXJlIHdpdGhpbiBhIGRvY3VtZW50LCBub3QganVzdCBhcyBkZXNjZW5kYW50cyBvZiBmb3JtIGVsZW1lbnRzLid9fSx7bmFtZToiaW5wdXRtb2RlIix2YWx1ZVNldDoiaW0ifSx7bmFtZToibWF4bGVuZ3RoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyAodW5pY29kZSBjb2RlIHBvaW50cykgdGhhdCB0aGUgdXNlciBjYW4gZW50ZXIuIElmIHRoaXMgdmFsdWUgaXNuJ3Qgc3BlY2lmaWVkLCB0aGUgdXNlciBjYW4gZW50ZXIgYW4gdW5saW1pdGVkIG51bWJlciBvZiBjaGFyYWN0ZXJzLiJ9fSx7bmFtZToibWlubGVuZ3RoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyAodW5pY29kZSBjb2RlIHBvaW50cykgcmVxdWlyZWQgdGhhdCB0aGUgdXNlciBzaG91bGQgZW50ZXIuIn19LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBvZiB0aGUgY29udHJvbC4ifX0se25hbWU6InBsYWNlaG9sZGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBIGhpbnQgdG8gdGhlIHVzZXIgb2Ygd2hhdCBjYW4gYmUgZW50ZXJlZCBpbiB0aGUgY29udHJvbC4gQ2FycmlhZ2UgcmV0dXJucyBvciBsaW5lLWZlZWRzIHdpdGhpbiB0aGUgcGxhY2Vob2xkZXIgdGV4dCBtdXN0IGJlIHRyZWF0ZWQgYXMgbGluZSBicmVha3Mgd2hlbiByZW5kZXJpbmcgdGhlIGhpbnQuXG5cbioqTm90ZToqKiBQbGFjZWhvbGRlcnMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBzaG93IGFuIGV4YW1wbGUgb2YgdGhlIHR5cGUgb2YgZGF0YSB0aGF0IHNob3VsZCBiZSBlbnRlcmVkIGludG8gYSBmb3JtOyB0aGV5IGFyZSBfbm90XyBhIHN1YnN0aXR1dGUgZm9yIGEgcHJvcGVyIFtgPGxhYmVsPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9sYWJlbCAiVGhlIEhUTUwgPGxhYmVsPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjYXB0aW9uIGZvciBhbiBpdGVtIGluIGEgdXNlciBpbnRlcmZhY2UuIikgZWxlbWVudCB0aWVkIHRvIHRoZSBpbnB1dC4gU2VlIFtMYWJlbHMgYW5kIHBsYWNlaG9sZGVyc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0I0xhYmVsc19hbmRfcGxhY2Vob2xkZXJzICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgaW4gWzxpbnB1dD46IFRoZSBJbnB1dCAoRm9ybSBJbnB1dCkgZWxlbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZm9yIGEgZnVsbCBleHBsYW5hdGlvbi4nfX0se25hbWU6InJlYWRvbmx5Iix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBjYW5ub3QgbW9kaWZ5IHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbC4gVW5saWtlIHRoZSBgZGlzYWJsZWRgIGF0dHJpYnV0ZSwgdGhlIGByZWFkb25seWAgYXR0cmlidXRlIGRvZXMgbm90IHByZXZlbnQgdGhlIHVzZXIgZnJvbSBjbGlja2luZyBvciBzZWxlY3RpbmcgaW4gdGhlIGNvbnRyb2wuIFRoZSB2YWx1ZSBvZiBhIHJlYWQtb25seSBjb250cm9sIGlzIHN0aWxsIHN1Ym1pdHRlZCB3aXRoIHRoZSBmb3JtLiJ9fSx7bmFtZToicmVxdWlyZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhhdCB0aGUgdXNlciBtdXN0IGZpbGwgaW4gYSB2YWx1ZSBiZWZvcmUgc3VibWl0dGluZyBhIGZvcm0uIn19LHtuYW1lOiJyb3dzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbnVtYmVyIG9mIHZpc2libGUgdGV4dCBsaW5lcyBmb3IgdGhlIGNvbnRyb2wuIn19LHtuYW1lOiJ3cmFwIix2YWx1ZVNldDoidyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIGhvdyB0aGUgY29udHJvbCB3cmFwcyB0ZXh0LiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGhhcmRgOiBUaGUgYnJvd3NlciBhdXRvbWF0aWNhbGx5IGluc2VydHMgbGluZSBicmVha3MgKENSK0xGKSBzbyB0aGF0IGVhY2ggbGluZSBoYXMgbm8gbW9yZSB0aGFuIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbDsgdGhlIGBjb2xzYCBhdHRyaWJ1dGUgbXVzdCBhbHNvIGJlIHNwZWNpZmllZCBmb3IgdGhpcyB0byB0YWtlIGVmZmVjdC5cbiogICBgc29mdGA6IFRoZSBicm93c2VyIGVuc3VyZXMgdGhhdCBhbGwgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlIGNvbnNpc3Qgb2YgYSBDUitMRiBwYWlyLCBidXQgZG9lcyBub3QgaW5zZXJ0IGFueSBhZGRpdGlvbmFsIGxpbmUgYnJlYWtzLlxuKiAgIGBvZmZgIDogTGlrZSBgc29mdGAgYnV0IGNoYW5nZXMgYXBwZWFyYW5jZSB0byBgd2hpdGUtc3BhY2U6IHByZWAgc28gbGluZSBzZWdtZW50cyBleGNlZWRpbmcgYGNvbHNgIGFyZSBub3Qgd3JhcHBlZCBhbmQgdGhlIGA8dGV4dGFyZWE+YCBiZWNvbWVzIGhvcml6b250YWxseSBzY3JvbGxhYmxlLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCBgc29mdGAgaXMgaXRzIGRlZmF1bHQgdmFsdWUuIn19LHtuYW1lOiJhdXRvY2FwaXRhbGl6ZSIsZGVzY3JpcHRpb246IlRoaXMgaXMgYSBub24tc3RhbmRhcmQgYXR0cmlidXRlIHN1cHBvcnRlZCBieSBXZWJLaXQgb24gaU9TICh0aGVyZWZvcmUgbmVhcmx5IGFsbCBicm93c2VycyBydW5uaW5nIG9uIGlPUywgaW5jbHVkaW5nIFNhZmFyaSwgRmlyZWZveCwgYW5kIENocm9tZSksIHdoaWNoIGNvbnRyb2xzIHdoZXRoZXIgYW5kIGhvdyB0aGUgdGV4dCB2YWx1ZSBzaG91bGQgYmUgYXV0b21hdGljYWxseSBjYXBpdGFsaXplZCBhcyBpdCBpcyBlbnRlcmVkL2VkaXRlZCBieSB0aGUgdXNlci4gVGhlIG5vbi1kZXByZWNhdGVkIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGluIGlPUyA1IGFuZCBsYXRlci4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBub25lYDogQ29tcGxldGVseSBkaXNhYmxlcyBhdXRvbWF0aWMgY2FwaXRhbGl6YXRpb24uXG4qICAgYHNlbnRlbmNlc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIHNlbnRlbmNlcy5cbiogICBgd29yZHNgOiBBdXRvbWF0aWNhbGx5IGNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiB3b3Jkcy5cbiogICBgY2hhcmFjdGVyc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSBhbGwgY2hhcmFjdGVycy5cbiogICBgb25gOiBEZXByZWNhdGVkIHNpbmNlIGlPUyA1LlxuKiAgIGBvZmZgOiBEZXByZWNhdGVkIHNpbmNlIGlPUyA1LiJ9LHtuYW1lOiJzcGVsbGNoZWNrIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGA8dGV4dGFyZWE+YCBpcyBzdWJqZWN0IHRvIHNwZWxsIGNoZWNraW5nIGJ5IHRoZSB1bmRlcmx5aW5nIGJyb3dzZXIvT1MuIHRoZSB2YWx1ZSBjYW4gYmU6XG5cbiogICBgdHJ1ZWA6IEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IG5lZWRzIHRvIGhhdmUgaXRzIHNwZWxsaW5nIGFuZCBncmFtbWFyIGNoZWNrZWQuXG4qICAgYGRlZmF1bHRgIDogSW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgaXMgdG8gYWN0IGFjY29yZGluZyB0byBhIGRlZmF1bHQgYmVoYXZpb3IsIHBvc3NpYmx5IGJhc2VkIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzIG93biBgc3BlbGxjaGVja2AgdmFsdWUuXG4qICAgYGZhbHNlYCA6IEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBub3QgYmUgc3BlbGwgY2hlY2tlZC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RleHRhcmVhIn1dfSx7bmFtZToib3V0cHV0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgb3V0cHV0IGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgcmVzdWx0IG9mIGEgY2FsY3VsYXRpb24gcGVyZm9ybWVkIGJ5IHRoZSBhcHBsaWNhdGlvbiwgb3IgdGhlIHJlc3VsdCBvZiBhIHVzZXIgYWN0aW9uLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJmb3IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2Ygb3RoZXIgZWxlbWVudHPigJkgW2BpZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaWQpcywgaW5kaWNhdGluZyB0aGF0IHRob3NlIGVsZW1lbnRzIGNvbnRyaWJ1dGVkIGlucHV0IHZhbHVlcyB0byAob3Igb3RoZXJ3aXNlIGFmZmVjdGVkKSB0aGUgY2FsY3VsYXRpb24uIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgW2Zvcm0gZWxlbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0pIHRoYXQgdGhpcyBlbGVtZW50IGlzIGFzc29jaWF0ZWQgd2l0aCAoaXRzICJmb3JtIG93bmVyIikuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIG11c3QgYmUgYW4gYGlkYCBvZiBhIGZvcm0gZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIG91dHB1dCBlbGVtZW50IG11c3QgYmUgYSBkZXNjZW5kYW50IG9mIGEgZm9ybSBlbGVtZW50LiBUaGlzIGF0dHJpYnV0ZSBlbmFibGVzIHlvdSB0byBwbGFjZSBvdXRwdXQgZWxlbWVudHMgYW55d2hlcmUgd2l0aGluIGEgZG9jdW1lbnQsIG5vdCBqdXN0IGFzIGRlc2NlbmRhbnRzIG9mIHRoZWlyIGZvcm0gZWxlbWVudHMuJ319LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgbmFtZSBvZiB0aGUgZWxlbWVudCwgZXhwb3NlZCBpbiB0aGUgW2BIVE1MRm9ybUVsZW1lbnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEZvcm1FbGVtZW50ICJUaGUgSFRNTEZvcm1FbGVtZW50IGludGVyZmFjZSByZXByZXNlbnRzIGEgPGZvcm0+IGVsZW1lbnQgaW4gdGhlIERPTTsgaXQgYWxsb3dzIGFjY2VzcyB0byBhbmQgaW4gc29tZSBjYXNlcyBtb2RpZmljYXRpb24gb2YgYXNwZWN0cyBvZiB0aGUgZm9ybSwgYXMgd2VsbCBhcyBhY2Nlc3MgdG8gaXRzIGNvbXBvbmVudCBlbGVtZW50cy4iKSBBUEkuJ319XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb3V0cHV0In1dfSx7bmFtZToicHJvZ3Jlc3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwcm9ncmVzcyBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGNvbXBsZXRpb24gcHJvZ3Jlc3Mgb2YgYSB0YXNrLiBUaGUgcHJvZ3Jlc3MgaXMgZWl0aGVyIGluZGV0ZXJtaW5hdGUsIGluZGljYXRpbmcgdGhhdCBwcm9ncmVzcyBpcyBiZWluZyBtYWRlIGJ1dCB0aGF0IGl0IGlzIG5vdCBjbGVhciBob3cgbXVjaCBtb3JlIHdvcmsgcmVtYWlucyB0byBiZSBkb25lIGJlZm9yZSB0aGUgdGFzayBpcyBjb21wbGV0ZSAoZS5nLiBiZWNhdXNlIHRoZSB0YXNrIGlzIHdhaXRpbmcgZm9yIGEgcmVtb3RlIGhvc3QgdG8gcmVzcG9uZCksIG9yIHRoZSBwcm9ncmVzcyBpcyBhIG51bWJlciBpbiB0aGUgcmFuZ2UgemVybyB0byBhIG1heGltdW0sIGdpdmluZyB0aGUgZnJhY3Rpb24gb2Ygd29yayB0aGF0IGhhcyBzbyBmYXIgYmVlbiBjb21wbGV0ZWQuIn0sYXR0cmlidXRlczpbe25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IG11Y2ggb2YgdGhlIHRhc2sgdGhhdCBoYXMgYmVlbiBjb21wbGV0ZWQuIEl0IG11c3QgYmUgYSB2YWxpZCBmbG9hdGluZyBwb2ludCBudW1iZXIgYmV0d2VlbiAwIGFuZCBgbWF4YCwgb3IgYmV0d2VlbiAwIGFuZCAxIGlmIGBtYXhgIGlzIG9taXR0ZWQuIElmIHRoZXJlIGlzIG5vIGB2YWx1ZWAgYXR0cmlidXRlLCB0aGUgcHJvZ3Jlc3MgYmFyIGlzIGluZGV0ZXJtaW5hdGU7IHRoaXMgaW5kaWNhdGVzIHRoYXQgYW4gYWN0aXZpdHkgaXMgb25nb2luZyB3aXRoIG5vIGluZGljYXRpb24gb2YgaG93IGxvbmcgaXQgaXMgZXhwZWN0ZWQgdG8gdGFrZS4ifX0se25hbWU6Im1heCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgZGVzY3JpYmVzIGhvdyBtdWNoIHdvcmsgdGhlIHRhc2sgaW5kaWNhdGVkIGJ5IHRoZSBgcHJvZ3Jlc3NgIGVsZW1lbnQgcmVxdWlyZXMuIFRoZSBgbWF4YCBhdHRyaWJ1dGUsIGlmIHByZXNlbnQsIG11c3QgaGF2ZSBhIHZhbHVlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBiZSBhIHZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlci4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMS4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9wcm9ncmVzcyJ9XX0se25hbWU6Im1ldGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWV0ZXIgZWxlbWVudCByZXByZXNlbnRzIGEgc2NhbGFyIG1lYXN1cmVtZW50IHdpdGhpbiBhIGtub3duIHJhbmdlLCBvciBhIGZyYWN0aW9uYWwgdmFsdWU7IGZvciBleGFtcGxlIGRpc2sgdXNhZ2UsIHRoZSByZWxldmFuY2Ugb2YgYSBxdWVyeSByZXN1bHQsIG9yIHRoZSBmcmFjdGlvbiBvZiBhIHZvdGluZyBwb3B1bGF0aW9uIHRvIGhhdmUgc2VsZWN0ZWQgYSBwYXJ0aWN1bGFyIGNhbmRpZGF0ZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToidmFsdWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjdXJyZW50IG51bWVyaWMgdmFsdWUuIFRoaXMgbXVzdCBiZSBiZXR3ZWVuIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyAoYG1pbmAgYXR0cmlidXRlIGFuZCBgbWF4YCBhdHRyaWJ1dGUpIGlmIHRoZXkgYXJlIHNwZWNpZmllZC4gSWYgdW5zcGVjaWZpZWQgb3IgbWFsZm9ybWVkLCB0aGUgdmFsdWUgaXMgMC4gSWYgc3BlY2lmaWVkLCBidXQgbm90IHdpdGhpbiB0aGUgcmFuZ2UgZ2l2ZW4gYnkgdGhlIGBtaW5gIGF0dHJpYnV0ZSBhbmQgYG1heGAgYXR0cmlidXRlLCB0aGUgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIG5lYXJlc3QgZW5kIG9mIHRoZSByYW5nZS5cblxuKipVc2FnZSBub3RlOioqIFVubGVzcyB0aGUgYHZhbHVlYCBhdHRyaWJ1dGUgaXMgYmV0d2VlbiBgMGAgYW5kIGAxYCAoaW5jbHVzaXZlKSwgdGhlIGBtaW5gIGFuZCBgbWF4YCBhdHRyaWJ1dGVzIHNob3VsZCBkZWZpbmUgdGhlIHJhbmdlIHNvIHRoYXQgdGhlIGB2YWx1ZWAgYXR0cmlidXRlJ3MgdmFsdWUgaXMgd2l0aGluIGl0LiJ9fSx7bmFtZToibWluIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbG93ZXIgbnVtZXJpYyBib3VuZCBvZiB0aGUgbWVhc3VyZWQgcmFuZ2UuIFRoaXMgbXVzdCBiZSBsZXNzIHRoYW4gdGhlIG1heGltdW0gdmFsdWUgKGBtYXhgIGF0dHJpYnV0ZSksIGlmIHNwZWNpZmllZC4gSWYgdW5zcGVjaWZpZWQsIHRoZSBtaW5pbXVtIHZhbHVlIGlzIDAuIn19LHtuYW1lOiJtYXgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1cHBlciBudW1lcmljIGJvdW5kIG9mIHRoZSBtZWFzdXJlZCByYW5nZS4gVGhpcyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbWluaW11bSB2YWx1ZSAoYG1pbmAgYXR0cmlidXRlKSwgaWYgc3BlY2lmaWVkLiBJZiB1bnNwZWNpZmllZCwgdGhlIG1heGltdW0gdmFsdWUgaXMgMS4ifX0se25hbWU6ImxvdyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVwcGVyIG51bWVyaWMgYm91bmQgb2YgdGhlIGxvdyBlbmQgb2YgdGhlIG1lYXN1cmVkIHJhbmdlLiBUaGlzIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBtaW5pbXVtIHZhbHVlIChgbWluYCBhdHRyaWJ1dGUpLCBhbmQgaXQgYWxzbyBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgaGlnaCB2YWx1ZSBhbmQgbWF4aW11bSB2YWx1ZSAoYGhpZ2hgIGF0dHJpYnV0ZSBhbmQgYG1heGAgYXR0cmlidXRlLCByZXNwZWN0aXZlbHkpLCBpZiBhbnkgYXJlIHNwZWNpZmllZC4gSWYgdW5zcGVjaWZpZWQsIG9yIGlmIGxlc3MgdGhhbiB0aGUgbWluaW11bSB2YWx1ZSwgdGhlIGBsb3dgIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBtaW5pbXVtIHZhbHVlLiJ9fSx7bmFtZToiaGlnaCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxvd2VyIG51bWVyaWMgYm91bmQgb2YgdGhlIGhpZ2ggZW5kIG9mIHRoZSBtZWFzdXJlZCByYW5nZS4gVGhpcyBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgbWF4aW11bSB2YWx1ZSAoYG1heGAgYXR0cmlidXRlKSwgYW5kIGl0IGFsc28gbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIGxvdyB2YWx1ZSBhbmQgbWluaW11bSB2YWx1ZSAoYGxvd2AgYXR0cmlidXRlIGFuZCAqKm1pbioqIGF0dHJpYnV0ZSwgcmVzcGVjdGl2ZWx5KSwgaWYgYW55IGFyZSBzcGVjaWZpZWQuIElmIHVuc3BlY2lmaWVkLCBvciBpZiBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gdmFsdWUsIHRoZSBgaGlnaGAgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIG1heGltdW0gdmFsdWUuIn19LHtuYW1lOiJvcHRpbXVtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIG9wdGltYWwgbnVtZXJpYyB2YWx1ZS4gSXQgbXVzdCBiZSB3aXRoaW4gdGhlIHJhbmdlIChhcyBkZWZpbmVkIGJ5IHRoZSBgbWluYCBhdHRyaWJ1dGUgYW5kIGBtYXhgIGF0dHJpYnV0ZSkuIFdoZW4gdXNlZCB3aXRoIHRoZSBgbG93YCBhdHRyaWJ1dGUgYW5kIGBoaWdoYCBhdHRyaWJ1dGUsIGl0IGdpdmVzIGFuIGluZGljYXRpb24gd2hlcmUgYWxvbmcgdGhlIHJhbmdlIGlzIGNvbnNpZGVyZWQgcHJlZmVyYWJsZS4gRm9yIGV4YW1wbGUsIGlmIGl0IGlzIGJldHdlZW4gdGhlIGBtaW5gIGF0dHJpYnV0ZSBhbmQgdGhlIGBsb3dgIGF0dHJpYnV0ZSwgdGhlbiB0aGUgbG93ZXIgcmFuZ2UgaXMgY29uc2lkZXJlZCBwcmVmZXJyZWQuIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgYXNzb2NpYXRlcyB0aGUgZWxlbWVudCB3aXRoIGEgYGZvcm1gIGVsZW1lbnQgdGhhdCBoYXMgb3duZXJzaGlwIG9mIHRoZSBgbWV0ZXJgIGVsZW1lbnQuIEZvciBleGFtcGxlLCBhIGBtZXRlcmAgbWlnaHQgYmUgZGlzcGxheWluZyBhIHJhbmdlIGNvcnJlc3BvbmRpbmcgdG8gYW4gYGlucHV0YCBlbGVtZW50IG9mIGB0eXBlYCBfbnVtYmVyXy4gVGhpcyBhdHRyaWJ1dGUgaXMgb25seSB1c2VkIGlmIHRoZSBgbWV0ZXJgIGVsZW1lbnQgaXMgYmVpbmcgdXNlZCBhcyBhIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50OyBldmVuIHRoZW4sIGl0IG1heSBiZSBvbWl0dGVkIGlmIHRoZSBlbGVtZW50IGFwcGVhcnMgYXMgYSBkZXNjZW5kYW50IG9mIGEgYGZvcm1gIGVsZW1lbnQuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRlciJ9XX0se25hbWU6ImZpZWxkc2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZmllbGRzZXQgZWxlbWVudCByZXByZXNlbnRzIGEgc2V0IG9mIGZvcm0gY29udHJvbHMgb3B0aW9uYWxseSBncm91cGVkIHVuZGVyIGEgY29tbW9uIG5hbWUuIn0sYXR0cmlidXRlczpbe25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpcyBzZXQsIGFsbCBmb3JtIGNvbnRyb2xzIHRoYXQgYXJlIGRlc2NlbmRhbnRzIG9mIHRoZSBgPGZpZWxkc2V0PmAsIGFyZSBkaXNhYmxlZCwgbWVhbmluZyB0aGV5IGFyZSBub3QgZWRpdGFibGUgYW5kIHdvbid0IGJlIHN1Ym1pdHRlZCBhbG9uZyB3aXRoIHRoZSBgPGZvcm0+YC4gVGhleSB3b24ndCByZWNlaXZlIGFueSBicm93c2luZyBldmVudHMsIGxpa2UgbW91c2UgY2xpY2tzIG9yIGZvY3VzLXJlbGF0ZWQgZXZlbnRzLiBCeSBkZWZhdWx0IGJyb3dzZXJzIGRpc3BsYXkgc3VjaCBjb250cm9scyBncmF5ZWQgb3V0LiBOb3RlIHRoYXQgZm9ybSBlbGVtZW50cyBpbnNpZGUgdGhlIFtgPGxlZ2VuZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGVnZW5kIFwiVGhlIEhUTUwgPGxlZ2VuZD4gZWxlbWVudCByZXByZXNlbnRzIGEgY2FwdGlvbiBmb3IgdGhlIGNvbnRlbnQgb2YgaXRzIHBhcmVudCA8ZmllbGRzZXQ+LlwiKSBlbGVtZW50IHdvbid0IGJlIGRpc2FibGVkLiJ9fSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgdGFrZXMgdGhlIHZhbHVlIG9mIHRoZSBgaWRgIGF0dHJpYnV0ZSBvZiBhIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgeW91IHdhbnQgdGhlIGA8ZmllbGRzZXQ+YCB0byBiZSBwYXJ0IG9mLCBldmVuIGlmIGl0IGlzIG5vdCBpbnNpZGUgdGhlIGZvcm0uJ319LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdyb3VwLlxuXG4qKk5vdGUqKjogVGhlIGNhcHRpb24gZm9yIHRoZSBmaWVsZHNldCBpcyBnaXZlbiBieSB0aGUgZmlyc3QgW2A8bGVnZW5kPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9sZWdlbmQgIlRoZSBIVE1MIDxsZWdlbmQ+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNhcHRpb24gZm9yIHRoZSBjb250ZW50IG9mIGl0cyBwYXJlbnQgPGZpZWxkc2V0Pi4iKSBlbGVtZW50IG5lc3RlZCBpbnNpZGUgaXQuJ319XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZmllbGRzZXQifV19LHtuYW1lOiJsZWdlbmQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsZWdlbmQgZWxlbWVudCByZXByZXNlbnRzIGEgY2FwdGlvbiBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBsZWdlbmQgZWxlbWVudCdzIHBhcmVudCBmaWVsZHNldCBlbGVtZW50LCBpZiBhbnkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGVnZW5kIn1dfSx7bmFtZToiZGV0YWlscyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRldGFpbHMgZWxlbWVudCByZXByZXNlbnRzIGEgZGlzY2xvc3VyZSB3aWRnZXQgZnJvbSB3aGljaCB0aGUgdXNlciBjYW4gb2J0YWluIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb3IgY29udHJvbHMuIn0sYXR0cmlidXRlczpbe25hbWU6Im9wZW4iLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgZGV0YWlscyDigJQgdGhhdCBpcywgdGhlIGNvbnRlbnRzIG9mIHRoZSBgPGRldGFpbHM+YCBlbGVtZW50IOKAlCBhcmUgY3VycmVudGx5IHZpc2libGUuIFRoZSBkZWZhdWx0LCBgZmFsc2VgLCBtZWFucyB0aGUgZGV0YWlscyBhcmUgbm90IHZpc2libGUuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGV0YWlscyJ9XX0se25hbWU6InN1bW1hcnkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzdW1tYXJ5IGVsZW1lbnQgcmVwcmVzZW50cyBhIHN1bW1hcnksIGNhcHRpb24sIG9yIGxlZ2VuZCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdW1tYXJ5IGVsZW1lbnQncyBwYXJlbnQgZGV0YWlscyBlbGVtZW50LCBpZiBhbnkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3VtbWFyeSJ9XX0se25hbWU6ImRpYWxvZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRpYWxvZyBlbGVtZW50IHJlcHJlc2VudHMgYSBwYXJ0IG9mIGFuIGFwcGxpY2F0aW9uIHRoYXQgYSB1c2VyIGludGVyYWN0cyB3aXRoIHRvIHBlcmZvcm0gYSB0YXNrLCBmb3IgZXhhbXBsZSBhIGRpYWxvZyBib3gsIGluc3BlY3Rvciwgb3Igd2luZG93LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJvcGVuIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGRpYWxvZyBpcyBhY3RpdmUgYW5kIGF2YWlsYWJsZSBmb3IgaW50ZXJhY3Rpb24uIFdoZW4gdGhlIGBvcGVuYCBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGRpYWxvZyBzaG91bGRuJ3QgYmUgc2hvd24gdG8gdGhlIHVzZXIuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kaWFsb2cifV19LHtuYW1lOiJzY3JpcHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzY3JpcHQgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBpbmNsdWRlIGR5bmFtaWMgc2NyaXB0IGFuZCBkYXRhIGJsb2NrcyBpbiB0aGVpciBkb2N1bWVudHMuIFRoZSBlbGVtZW50IGRvZXMgbm90IHJlcHJlc2VudCBjb250ZW50IGZvciB0aGUgdXNlci4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3JjIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIFVSSSBvZiBhbiBleHRlcm5hbCBzY3JpcHQ7IHRoaXMgY2FuIGJlIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gZW1iZWRkaW5nIGEgc2NyaXB0IGRpcmVjdGx5IHdpdGhpbiBhIGRvY3VtZW50LlxuXG5JZiBhIGBzY3JpcHRgIGVsZW1lbnQgaGFzIGEgYHNyY2AgYXR0cmlidXRlIHNwZWNpZmllZCwgaXQgc2hvdWxkIG5vdCBoYXZlIGEgc2NyaXB0IGVtYmVkZGVkIGluc2lkZSBpdHMgdGFncy4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgdHlwZSBvZiBzY3JpcHQgcmVwcmVzZW50ZWQuIFRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSB3aWxsIGJlIGluIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNhdGVnb3JpZXM6XG5cbiogICAqKk9taXR0ZWQgb3IgYSBKYXZhU2NyaXB0IE1JTUUgdHlwZToqKiBGb3IgSFRNTDUtY29tcGxpYW50IGJyb3dzZXJzIHRoaXMgaW5kaWNhdGVzIHRoZSBzY3JpcHQgaXMgSmF2YVNjcmlwdC4gSFRNTDUgc3BlY2lmaWNhdGlvbiB1cmdlcyBhdXRob3JzIHRvIG9taXQgdGhlIGF0dHJpYnV0ZSByYXRoZXIgdGhhbiBwcm92aWRlIGEgcmVkdW5kYW50IE1JTUUgdHlwZS4gSW4gZWFybGllciBicm93c2VycywgdGhpcyBpZGVudGlmaWVkIHRoZSBzY3JpcHRpbmcgbGFuZ3VhZ2Ugb2YgdGhlIGVtYmVkZGVkIG9yIGltcG9ydGVkICh2aWEgdGhlIGBzcmNgIGF0dHJpYnV0ZSkgY29kZS4gSmF2YVNjcmlwdCBNSU1FIHR5cGVzIGFyZSBbbGlzdGVkIGluIHRoZSBzcGVjaWZpY2F0aW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0Jhc2ljc19vZl9IVFRQL01JTUVfdHlwZXMjSmF2YVNjcmlwdF90eXBlcykuXG4qICAgKipgbW9kdWxlYDoqKiBGb3IgSFRNTDUtY29tcGxpYW50IGJyb3dzZXJzIHRoZSBjb2RlIGlzIHRyZWF0ZWQgYXMgYSBKYXZhU2NyaXB0IG1vZHVsZS4gVGhlIHByb2Nlc3Npbmcgb2YgdGhlIHNjcmlwdCBjb250ZW50cyBpcyBub3QgYWZmZWN0ZWQgYnkgdGhlIGBjaGFyc2V0YCBhbmQgYGRlZmVyYCBhdHRyaWJ1dGVzLiBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgYG1vZHVsZWAsIHNlZSBbRVM2IGluIERlcHRoOiBNb2R1bGVzXShodHRwczovL2hhY2tzLm1vemlsbGEub3JnLzIwMTUvMDgvZXM2LWluLWRlcHRoLW1vZHVsZXMvKS4gQ29kZSBtYXkgYmVoYXZlIGRpZmZlcmVudGx5IHdoZW4gdGhlIGBtb2R1bGVgIGtleXdvcmQgaXMgdXNlZC5cbiogICAqKkFueSBvdGhlciB2YWx1ZToqKiBUaGUgZW1iZWRkZWQgY29udGVudCBpcyB0cmVhdGVkIGFzIGEgZGF0YSBibG9jayB3aGljaCB3b25cJ3QgYmUgcHJvY2Vzc2VkIGJ5IHRoZSBicm93c2VyLiBEZXZlbG9wZXJzIG11c3QgdXNlIGEgdmFsaWQgTUlNRSB0eXBlIHRoYXQgaXMgbm90IGEgSmF2YVNjcmlwdCBNSU1FIHR5cGUgdG8gZGVub3RlIGRhdGEgYmxvY2tzLiBUaGUgYHNyY2AgYXR0cmlidXRlIHdpbGwgYmUgaWdub3JlZC5cblxuKipOb3RlOioqIGluIEZpcmVmb3ggeW91IGNvdWxkIHNwZWNpZnkgdGhlIHZlcnNpb24gb2YgSmF2YVNjcmlwdCBjb250YWluZWQgaW4gYSBgPHNjcmlwdD5gIGVsZW1lbnQgYnkgaW5jbHVkaW5nIGEgbm9uLXN0YW5kYXJkIGB2ZXJzaW9uYCBwYXJhbWV0ZXIgaW5zaWRlIHRoZSBgdHlwZWAgYXR0cmlidXRlIOKAlCBmb3IgZXhhbXBsZSBgdHlwZT0idGV4dC9qYXZhc2NyaXB0O3ZlcnNpb249MS44ImAuIFRoaXMgaGFzIGJlZW4gcmVtb3ZlZCBpbiBGaXJlZm94IDU5IChzZWUgW2J1Z8KgMTQyODc0NV0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODc0NSAiRklYRUQ6IFJlbW92ZSBzdXBwb3J0IGZvciB2ZXJzaW9uIHBhcmFtZXRlciBmcm9tIHNjcmlwdCBsb2FkZXIiKSkuJ319LHtuYW1lOiJjaGFyc2V0In0se25hbWU6ImFzeW5jIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBpcyBhIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRpbmcgdGhhdCB0aGUgYnJvd3NlciBzaG91bGQsIGlmIHBvc3NpYmxlLCBsb2FkIHRoZSBzY3JpcHQgYXN5bmNocm9ub3VzbHkuXG5cblRoaXMgYXR0cmlidXRlIG11c3Qgbm90IGJlIHVzZWQgaWYgdGhlIGBzcmNgIGF0dHJpYnV0ZSBpcyBhYnNlbnQgKGkuZS4gZm9yIGlubGluZSBzY3JpcHRzKS4gSWYgaXQgaXMgaW5jbHVkZWQgaW4gdGhpcyBjYXNlIGl0IHdpbGwgaGF2ZSBubyBlZmZlY3QuXG5cbkJyb3dzZXJzIHVzdWFsbHkgYXNzdW1lIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIGFuZCBsb2FkIHNjcmlwdHMgc3luY2hyb25vdXNseSwgKGkuZS4gYGFzeW5jPSJmYWxzZSJgKSBkdXJpbmcgSFRNTCBwYXJzaW5nLlxuXG5EeW5hbWljYWxseSBpbnNlcnRlZCBzY3JpcHRzICh1c2luZyBbYGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoKWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudC9jcmVhdGVFbGVtZW50ICJJbiBhbiBIVE1MIGRvY3VtZW50LCB0aGUgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgpIG1ldGhvZCBjcmVhdGVzIHRoZSBIVE1MIGVsZW1lbnQgc3BlY2lmaWVkIGJ5IHRhZ05hbWUsIG9yIGFuIEhUTUxVbmtub3duRWxlbWVudCBpZiB0YWdOYW1lIGlzblwndCByZWNvZ25pemVkLiIpKSBsb2FkIGFzeW5jaHJvbm91c2x5IGJ5IGRlZmF1bHQsIHNvIHRvIHR1cm4gb24gc3luY2hyb25vdXMgbG9hZGluZyAoaS5lLiBzY3JpcHRzIGxvYWQgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBpbnNlcnRlZCkgc2V0IGBhc3luYz0iZmFsc2UiYC5cblxuU2VlIFtCcm93c2VyIGNvbXBhdGliaWxpdHldKCNCcm93c2VyX2NvbXBhdGliaWxpdHkpIGZvciBub3RlcyBvbiBicm93c2VyIHN1cHBvcnQuIFNlZSBhbHNvIFtBc3luYyBzY3JpcHRzIGZvciBhc20uanNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2FtZXMvVGVjaG5pcXVlcy9Bc3luY19zY3JpcHRzKS4nfX0se25hbWU6ImRlZmVyIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpcyBzZXQgdG8gaW5kaWNhdGUgdG8gYSBicm93c2VyIHRoYXQgdGhlIHNjcmlwdCBpcyBtZWFudCB0byBiZSBleGVjdXRlZCBhZnRlciB0aGUgZG9jdW1lbnQgaGFzIGJlZW4gcGFyc2VkLCBidXQgYmVmb3JlIGZpcmluZyBbYERPTUNvbnRlbnRMb2FkZWRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9FdmVudHMvRE9NQ29udGVudExvYWRlZCAiL2VuLVVTL2RvY3MvV2ViL0V2ZW50cy9ET01Db250ZW50TG9hZGVkIikuXG5cblNjcmlwdHMgd2l0aCB0aGUgYGRlZmVyYCBhdHRyaWJ1dGUgd2lsbCBwcmV2ZW50IHRoZSBgRE9NQ29udGVudExvYWRlZGAgZXZlbnQgZnJvbSBmaXJpbmcgdW50aWwgdGhlIHNjcmlwdCBoYXMgbG9hZGVkIGFuZCBmaW5pc2hlZCBldmFsdWF0aW5nLlxuXG5UaGlzIGF0dHJpYnV0ZSBtdXN0IG5vdCBiZSB1c2VkIGlmIHRoZSBgc3JjYCBhdHRyaWJ1dGUgaXMgYWJzZW50IChpLmUuIGZvciBpbmxpbmUgc2NyaXB0cyksIGluIHRoaXMgY2FzZSBpdCB3b3VsZCBoYXZlIG5vIGVmZmVjdC5cblxuVG8gYWNoaWV2ZSBhIHNpbWlsYXIgZWZmZWN0IGZvciBkeW5hbWljYWxseSBpbnNlcnRlZCBzY3JpcHRzIHVzZSBgYXN5bmM9ImZhbHNlImAgaW5zdGVhZC4gU2NyaXB0cyB3aXRoIHRoZSBgZGVmZXJgIGF0dHJpYnV0ZSB3aWxsIGV4ZWN1dGUgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXBwZWFyIGluIHRoZSBkb2N1bWVudC4nfX0se25hbWU6ImNyb3Nzb3JpZ2luIix2YWx1ZVNldDoieG8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J05vcm1hbCBgc2NyaXB0YCBlbGVtZW50cyBwYXNzIG1pbmltYWwgaW5mb3JtYXRpb24gdG8gdGhlIFtgd2luZG93Lm9uZXJyb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvR2xvYmFsRXZlbnRIYW5kbGVycy9vbmVycm9yICJUaGUgb25lcnJvciBwcm9wZXJ0eSBvZiB0aGUgR2xvYmFsRXZlbnRIYW5kbGVycyBtaXhpbiBpcyBhbiBFdmVudEhhbmRsZXIgdGhhdCBwcm9jZXNzZXMgZXJyb3IgZXZlbnRzLiIpIGZvciBzY3JpcHRzIHdoaWNoIGRvIG5vdCBwYXNzIHRoZSBzdGFuZGFyZCBbQ09SU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9DT1JTICJDT1JTOiBDT1JTIChDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZykgaXMgYSBzeXN0ZW0sIGNvbnNpc3Rpbmcgb2YgdHJhbnNtaXR0aW5nIEhUVFAgaGVhZGVycywgdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgYnJvd3NlcnMgYmxvY2sgZnJvbnRlbmQgSmF2YVNjcmlwdCBjb2RlIGZyb20gYWNjZXNzaW5nIHJlc3BvbnNlcyBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLiIpIGNoZWNrcy4gVG8gYWxsb3cgZXJyb3IgbG9nZ2luZyBmb3Igc2l0ZXMgd2hpY2ggdXNlIGEgc2VwYXJhdGUgZG9tYWluIGZvciBzdGF0aWMgbWVkaWEsIHVzZSB0aGlzIGF0dHJpYnV0ZS4gU2VlIFtDT1JTIHNldHRpbmdzIGF0dHJpYnV0ZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQ09SU19zZXR0aW5nc19hdHRyaWJ1dGVzKSBmb3IgYSBtb3JlIGRlc2NyaXB0aXZlIGV4cGxhbmF0aW9uIG9mIGl0cyB2YWxpZCBhcmd1bWVudHMuJ319LHtuYW1lOiJub25jZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBjcnlwdG9ncmFwaGljIG5vbmNlIChudW1iZXIgdXNlZCBvbmNlKSB0byB3aGl0ZWxpc3QgaW5saW5lIHNjcmlwdHMgaW4gYSBbc2NyaXB0LXNyYyBDb250ZW50LVNlY3VyaXR5LVBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0NvbnRlbnQtU2VjdXJpdHktUG9saWN5L3NjcmlwdC1zcmMpLiBUaGUgc2VydmVyIG11c3QgZ2VuZXJhdGUgYSB1bmlxdWUgbm9uY2UgdmFsdWUgZWFjaCB0aW1lIGl0IHRyYW5zbWl0cyBhIHBvbGljeS4gSXQgaXMgY3JpdGljYWwgdG8gcHJvdmlkZSBhIG5vbmNlIHRoYXQgY2Fubm90IGJlIGd1ZXNzZWQgYXMgYnlwYXNzaW5nIGEgcmVzb3VyY2UncyBwb2xpY3kgaXMgb3RoZXJ3aXNlIHRyaXZpYWwuIn19LHtuYW1lOiJpbnRlZ3JpdHkiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBpbmxpbmUgbWV0YWRhdGEgdGhhdCBhIHVzZXIgYWdlbnQgY2FuIHVzZSB0byB2ZXJpZnkgdGhhdCBhIGZldGNoZWQgcmVzb3VyY2UgaGFzIGJlZW4gZGVsaXZlcmVkIGZyZWUgb2YgdW5leHBlY3RlZCBtYW5pcHVsYXRpb24uIFNlZSBbU3VicmVzb3VyY2UgSW50ZWdyaXR5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TdWJyZXNvdXJjZV9JbnRlZ3JpdHkpLiJ9LHtuYW1lOiJub21vZHVsZSIsZGVzY3JpcHRpb246IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaXMgc2V0IHRvIGluZGljYXRlIHRoYXQgdGhlIHNjcmlwdCBzaG91bGQgbm90IGJlIGV4ZWN1dGVkIGluIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBbRVMyMDE1IG1vZHVsZXNdKGh0dHBzOi8vaGFja3MubW96aWxsYS5vcmcvMjAxNS8wOC9lczYtaW4tZGVwdGgtbW9kdWxlcy8pIOKAlCBpbiBlZmZlY3QsIHRoaXMgY2FuIGJlIHVzZWQgdG8gc2VydmUgZmFsbGJhY2sgc2NyaXB0cyB0byBvbGRlciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IG1vZHVsYXIgSmF2YVNjcmlwdCBjb2RlLiJ9LHtuYW1lOiJyZWZlcnJlcnBvbGljeSIsZGVzY3JpcHRpb246J0luZGljYXRlcyB3aGljaCBbcmVmZXJyZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudC9yZWZlcnJlcikgdG8gc2VuZCB3aGVuIGZldGNoaW5nIHRoZSBzY3JpcHQsIG9yIHJlc291cmNlcyBmZXRjaGVkIGJ5IHRoZSBzY3JpcHQ6XG5cbiogICBgbm8tcmVmZXJyZXJgOiBUaGUgW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQuXG4qICAgYG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlYCAoZGVmYXVsdCk6IFRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudCB0byBbb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L29yaWdpbiAib3JpZ2luOiBXZWIgY29udGVudFwncyBvcmlnaW4gaXMgZGVmaW5lZCBieSB0aGUgc2NoZW1lIChwcm90b2NvbCksIGhvc3QgKGRvbWFpbiksIGFuZCBwb3J0IG9mIHRoZSBVUkwgdXNlZCB0byBhY2Nlc3MgaXQuIFR3byBvYmplY3RzIGhhdmUgdGhlIHNhbWUgb3JpZ2luIG9ubHkgd2hlbiB0aGUgc2NoZW1lLCBob3N0LCBhbmQgcG9ydCBhbGwgbWF0Y2guIilzIHdpdGhvdXQgW1RMU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9UTFMgIlRMUzogVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpLCBwcmV2aW91c2x5IGtub3duIGFzIFNlY3VyZSBTb2NrZXRzIExheWVyIChTU0wpLCBpcyBhIHByb3RvY29sIHVzZWQgYnkgYXBwbGljYXRpb25zIHRvIGNvbW11bmljYXRlIHNlY3VyZWx5IGFjcm9zcyBhIG5ldHdvcmssIHByZXZlbnRpbmcgdGFtcGVyaW5nIHdpdGggYW5kIGVhdmVzZHJvcHBpbmcgb24gZW1haWwsIHdlYiBicm93c2luZywgbWVzc2FnaW5nLCBhbmQgb3RoZXIgcHJvdG9jb2xzLiIpIChbSFRUUFNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvSFRUUFMgIkhUVFBTOiBIVFRQUyAoSFRUUCBTZWN1cmUpIGlzIGFuIGVuY3J5cHRlZCB2ZXJzaW9uIG9mIHRoZSBIVFRQIHByb3RvY29sLiBJdCB1c3VhbGx5IHVzZXMgU1NMIG9yIFRMUyB0byBlbmNyeXB0IGFsbCBjb21tdW5pY2F0aW9uIGJldHdlZW4gYSBjbGllbnQgYW5kIGEgc2VydmVyLiBUaGlzIHNlY3VyZSBjb25uZWN0aW9uIGFsbG93cyBjbGllbnRzIHRvIHNhZmVseSBleGNoYW5nZSBzZW5zaXRpdmUgZGF0YSB3aXRoIGEgc2VydmVyLCBmb3IgZXhhbXBsZSBmb3IgYmFua2luZyBhY3Rpdml0aWVzIG9yIG9ubGluZSBzaG9wcGluZy4iKSkuXG4qICAgYG9yaWdpbmA6IFRoZSBzZW50IHJlZmVycmVyIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgb3JpZ2luIG9mIHRoZSByZWZlcnJpbmcgcGFnZTogaXRzIFtzY2hlbWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQXJjaGl2ZS9Nb3ppbGxhL1VSSVNjaGVtZSksIFtob3N0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L2hvc3QgImhvc3Q6IEEgaG9zdCBpcyBhIGRldmljZSBjb25uZWN0ZWQgdG8gdGhlIEludGVybmV0IChvciBhIGxvY2FsIG5ldHdvcmspLiBTb21lIGhvc3RzIGNhbGxlZCBzZXJ2ZXJzIG9mZmVyIGFkZGl0aW9uYWwgc2VydmljZXMgbGlrZSBzZXJ2aW5nIHdlYnBhZ2VzIG9yIHN0b3JpbmcgZmlsZXMgYW5kIGVtYWlscy4iKSwgYW5kIFtwb3J0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3BvcnQgInBvcnQ6IEZvciBhIGNvbXB1dGVyIGNvbm5lY3RlZCB0byBhIG5ldHdvcmsgd2l0aCBhbiBJUCBhZGRyZXNzLCBhIHBvcnQgaXMgYSBjb21tdW5pY2F0aW9uIGVuZHBvaW50LiBQb3J0cyBhcmUgZGVzaWduYXRlZCBieSBudW1iZXJzLCBhbmQgYmVsb3cgMTAyNCBlYWNoIHBvcnQgaXMgYXNzb2NpYXRlZCBieSBkZWZhdWx0IHdpdGggYSBzcGVjaWZpYyBwcm90b2NvbC4iKS5cbiogICBgb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYDogVGhlIHJlZmVycmVyIHNlbnQgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydC4gTmF2aWdhdGlvbnMgb24gdGhlIHNhbWUgb3JpZ2luIHdpbGwgc3RpbGwgaW5jbHVkZSB0aGUgcGF0aC5cbiogICBgc2FtZS1vcmlnaW5gOiBBIHJlZmVycmVyIHdpbGwgYmUgc2VudCBmb3IgW3NhbWUgb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1NhbWUtb3JpZ2luX3BvbGljeSAic2FtZSBvcmlnaW46IFRoZSBzYW1lLW9yaWdpbiBwb2xpY3kgaXMgYSBjcml0aWNhbCBzZWN1cml0eSBtZWNoYW5pc20gdGhhdCByZXN0cmljdHMgaG93IGEgZG9jdW1lbnQgb3Igc2NyaXB0IGxvYWRlZCBmcm9tIG9uZSBvcmlnaW4gY2FuIGludGVyYWN0IHdpdGggYSByZXNvdXJjZSBmcm9tIGFub3RoZXIgb3JpZ2luLiIpLCBidXQgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIHdpbGwgY29udGFpbiBubyByZWZlcnJlciBpbmZvcm1hdGlvbi5cbiogICBgc3RyaWN0LW9yaWdpbmA6IE9ubHkgc2VuZCB0aGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBhcyB0aGUgcmVmZXJyZXIgd2hlbiB0aGUgcHJvdG9jb2wgc2VjdXJpdHkgbGV2ZWwgc3RheXMgdGhlIHNhbWUgKGUuZy4gSFRUUFPihpJIVFRQUyksIGJ1dCBkb25cJ3Qgc2VuZCBpdCB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChlLmcuIEhUVFBT4oaSSFRUUCkuXG4qICAgYHN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gOiBTZW5kIGEgZnVsbCBVUkwgd2hlbiBwZXJmb3JtaW5nIGEgc2FtZS1vcmlnaW4gcmVxdWVzdCwgYnV0IG9ubHkgc2VuZCB0aGUgb3JpZ2luIHdoZW4gdGhlIHByb3RvY29sIHNlY3VyaXR5IGxldmVsIHN0YXlzIHRoZSBzYW1lIChlLmcuSFRUUFPihpJIVFRQUyksIGFuZCBzZW5kIG5vIGhlYWRlciB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChlLmcuIEhUVFBT4oaSSFRUUCkuXG4qICAgYHVuc2FmZS11cmxgOiBUaGUgcmVmZXJyZXIgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW4gX2FuZF8gdGhlIHBhdGggKGJ1dCBub3QgdGhlIFtmcmFnbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMvaGFzaCksIFtwYXNzd29yZF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMvcGFzc3dvcmQpLCBvciBbdXNlcm5hbWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL3VzZXJuYW1lKSkuICoqVGhpcyB2YWx1ZSBpcyB1bnNhZmUqKiwgYmVjYXVzZSBpdCBsZWFrcyBvcmlnaW5zIGFuZCBwYXRocyBmcm9tIFRMUy1wcm90ZWN0ZWQgcmVzb3VyY2VzIHRvIGluc2VjdXJlIG9yaWdpbnMuXG5cbioqTm90ZSoqOiBBbiBlbXB0eSBzdHJpbmcgdmFsdWUgKGAiImApIGlzIGJvdGggdGhlIGRlZmF1bHQgdmFsdWUsIGFuZCBhIGZhbGxiYWNrIHZhbHVlIGlmIGByZWZlcnJlcnBvbGljeWAgaXMgbm90IHN1cHBvcnRlZC4gSWYgYHJlZmVycmVycG9saWN5YCBpcyBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgb24gdGhlIGA8c2NyaXB0PmAgZWxlbWVudCwgaXQgd2lsbCBhZG9wdCBhIGhpZ2hlci1sZXZlbCByZWZlcnJlciBwb2xpY3ksIGkuZS4gb25lIHNldCBvbiB0aGUgd2hvbGUgZG9jdW1lbnQgb3IgZG9tYWluLiBJZiBhIGhpZ2hlci1sZXZlbCBwb2xpY3kgaXMgbm90IGF2YWlsYWJsZSzCoHRoZSBlbXB0eSBzdHJpbmcgaXMgdHJlYXRlZCBhcyBiZWluZyBlcXVpdmFsZW50IHRvIGBuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZWAuJ30se25hbWU6InRleHQiLGRlc2NyaXB0aW9uOiJMaWtlIHRoZSBgdGV4dENvbnRlbnRgIGF0dHJpYnV0ZSwgdGhpcyBhdHRyaWJ1dGUgc2V0cyB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBlbGVtZW50LiBVbmxpa2UgdGhlIGB0ZXh0Q29udGVudGAgYXR0cmlidXRlLCBob3dldmVyLCB0aGlzIGF0dHJpYnV0ZSBpcyBldmFsdWF0ZWQgYXMgZXhlY3V0YWJsZSBjb2RlIGFmdGVyIHRoZSBub2RlIGlzIGluc2VydGVkIGludG8gdGhlIERPTS4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NjcmlwdCJ9XX0se25hbWU6Im5vc2NyaXB0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbm9zY3JpcHQgZWxlbWVudCByZXByZXNlbnRzIG5vdGhpbmcgaWYgc2NyaXB0aW5nIGlzIGVuYWJsZWQsIGFuZCByZXByZXNlbnRzIGl0cyBjaGlsZHJlbiBpZiBzY3JpcHRpbmcgaXMgZGlzYWJsZWQuIEl0IGlzIHVzZWQgdG8gcHJlc2VudCBkaWZmZXJlbnQgbWFya3VwIHRvIHVzZXIgYWdlbnRzIHRoYXQgc3VwcG9ydCBzY3JpcHRpbmcgYW5kIHRob3NlIHRoYXQgZG9uJ3Qgc3VwcG9ydCBzY3JpcHRpbmcsIGJ5IGFmZmVjdGluZyBob3cgdGhlIGRvY3VtZW50IGlzIHBhcnNlZC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ub3NjcmlwdCJ9XX0se25hbWU6InRlbXBsYXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGVtcGxhdGUgZWxlbWVudCBpcyB1c2VkIHRvIGRlY2xhcmUgZnJhZ21lbnRzIG9mIEhUTUwgdGhhdCBjYW4gYmUgY2xvbmVkIGFuZCBpbnNlcnRlZCBpbiB0aGUgZG9jdW1lbnQgYnkgc2NyaXB0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RlbXBsYXRlIn1dfSx7bmFtZToiY2FudmFzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY2FudmFzIGVsZW1lbnQgcHJvdmlkZXMgc2NyaXB0cyB3aXRoIGEgcmVzb2x1dGlvbi1kZXBlbmRlbnQgYml0bWFwIGNhbnZhcywgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHJlbmRlcmluZyBncmFwaHMsIGdhbWUgZ3JhcGhpY3MsIGFydCwgb3Igb3RoZXIgdmlzdWFsIGltYWdlcyBvbiB0aGUgZmx5LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHdpZHRoIG9mIHRoZSBjb29yZGluYXRlIHNwYWNlIGluIENTUyBwaXhlbHMuIERlZmF1bHRzIHRvIDMwMC4ifX0se25hbWU6ImhlaWdodCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhlaWdodCBvZiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBpbiBDU1MgcGl4ZWxzLiBEZWZhdWx0cyB0byAxNTAuIn19LHtuYW1lOiJtb3otb3BhcXVlIixkZXNjcmlwdGlvbjoiTGV0cyB0aGUgY2FudmFzIGtub3cgd2hldGhlciBvciBub3QgdHJhbnNsdWNlbmN5IHdpbGwgYmUgYSBmYWN0b3IuIElmIHRoZSBjYW52YXMga25vd3MgdGhlcmUncyBubyB0cmFuc2x1Y2VuY3ksIHBhaW50aW5nIHBlcmZvcm1hbmNlIGNhbiBiZSBvcHRpbWl6ZWQuIFRoaXMgaXMgb25seSBzdXBwb3J0ZWQgYnkgTW96aWxsYS1iYXNlZCBicm93c2VyczsgdXNlIHRoZSBzdGFuZGFyZGl6ZWQgW2BjYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7IGFscGhhOiBmYWxzZSB9KWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MQ2FudmFzRWxlbWVudC9nZXRDb250ZXh0IFwiVGhlIEhUTUxDYW52YXNFbGVtZW50LmdldENvbnRleHQoKSBtZXRob2QgcmV0dXJucyBhIGRyYXdpbmcgY29udGV4dCBvbiB0aGUgY2FudmFzLCBvciBudWxsIGlmIHRoZSBjb250ZXh0IGlkZW50aWZpZXIgaXMgbm90IHN1cHBvcnRlZC5cIikgaW5zdGVhZC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhbnZhcyJ9XX1dLGdsb2JhbEF0dHJpYnV0ZXM6W3tuYW1lOiJhY2Nlc3NrZXkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlByb3ZpZGVzIGEgaGludCBmb3IgZ2VuZXJhdGluZyBhIGtleWJvYXJkIHNob3J0Y3V0IGZvciB0aGUgY3VycmVudCBlbGVtZW50LiBUaGlzIGF0dHJpYnV0ZSBjb25zaXN0cyBvZiBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGNoYXJhY3RlcnMuIFRoZSBicm93c2VyIHNob3VsZCB1c2UgdGhlIGZpcnN0IG9uZSB0aGF0IGV4aXN0cyBvbiB0aGUgY29tcHV0ZXIga2V5Ym9hcmQgbGF5b3V0LiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvYWNjZXNza2V5In1dfSx7bmFtZToiYXV0b2NhcGl0YWxpemUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvbnRyb2xzIHdoZXRoZXIgYW5kIGhvdyB0ZXh0IGlucHV0IGlzIGF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZWQgYXMgaXQgaXMgZW50ZXJlZC9lZGl0ZWQgYnkgdGhlIHVzZXIuIEl0IGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYG9mZmAgb3IgYG5vbmVgLCBubyBhdXRvY2FwaXRhbGl6YXRpb24gaXMgYXBwbGllZCAoYWxsIGxldHRlcnMgZGVmYXVsdCB0byBsb3dlcmNhc2UpXG4qICAgYG9uYCBvciBgc2VudGVuY2VzYCwgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIHNlbnRlbmNlIGRlZmF1bHRzIHRvIGEgY2FwaXRhbCBsZXR0ZXI7IGFsbCBvdGhlciBsZXR0ZXJzIGRlZmF1bHQgdG8gbG93ZXJjYXNlXG4qICAgYHdvcmRzYCwgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIHdvcmQgZGVmYXVsdHMgdG8gYSBjYXBpdGFsIGxldHRlcjsgYWxsIG90aGVyIGxldHRlcnMgZGVmYXVsdCB0byBsb3dlcmNhc2VcbiogICBgY2hhcmFjdGVyc2AsIGFsbCBsZXR0ZXJzIHNob3VsZCBkZWZhdWx0IHRvIHVwcGVyY2FzZSJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvYXV0b2NhcGl0YWxpemUifV19LHtuYW1lOiJjbGFzcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgY2xhc3NlcyBvZiB0aGUgZWxlbWVudC4gQ2xhc3NlcyBhbGxvd3MgQ1NTIGFuZCBKYXZhU2NyaXB0IHRvIHNlbGVjdCBhbmQgYWNjZXNzIHNwZWNpZmljIGVsZW1lbnRzIHZpYSB0aGUgW2NsYXNzIHNlbGVjdG9yc10oL2VuLVVTL2RvY3MvV2ViL0NTUy9DbGFzc19zZWxlY3RvcnMpIG9yIGZ1bmN0aW9ucyBsaWtlIHRoZSBtZXRob2QgW2BEb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKClgXSgvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50L2dldEVsZW1lbnRzQnlDbGFzc05hbWUgInJldHVybnMgYW4gYXJyYXktbGlrZSBvYmplY3Qgb2YgYWxsIGNoaWxkIGVsZW1lbnRzIHdoaWNoIGhhdmUgYWxsIG9mIHRoZSBnaXZlbiBjbGFzcyBuYW1lcy4iKS4nfSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2NsYXNzIn1dfSx7bmFtZToiY29udGVudGVkaXRhYmxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIGlmIHRoZSBlbGVtZW50IHNob3VsZCBiZSBlZGl0YWJsZSBieSB0aGUgdXNlci4gSWYgc28sIHRoZSBicm93c2VyIG1vZGlmaWVzIGl0cyB3aWRnZXQgdG8gYWxsb3cgZWRpdGluZy4gVGhlIGF0dHJpYnV0ZSBtdXN0IHRha2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYHRydWVgIG9yIHRoZSBfZW1wdHkgc3RyaW5nXywgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgbXVzdCBiZSBlZGl0YWJsZTtcbiogICBgZmFsc2VgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBtdXN0IG5vdCBiZSBlZGl0YWJsZS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2NvbnRlbnRlZGl0YWJsZSJ9XX0se25hbWU6ImNvbnRleHRtZW51IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgYFsqKmlkKipdKCNhdHRyLWlkKWAgb2YgYSBbYDxtZW51PmBdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWVudSAiVGhlIEhUTUwgPG1lbnU+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGdyb3VwIG9mIGNvbW1hbmRzIHRoYXQgYSB1c2VyIGNhbiBwZXJmb3JtIG9yIGFjdGl2YXRlLiBUaGlzIGluY2x1ZGVzIGJvdGggbGlzdCBtZW51cywgd2hpY2ggbWlnaHQgYXBwZWFyIGFjcm9zcyB0aGUgdG9wIG9mIGEgc2NyZWVuLCBhcyB3ZWxsIGFzIGNvbnRleHQgbWVudXMsIHN1Y2ggYXMgdGhvc2UgdGhhdCBtaWdodCBhcHBlYXIgdW5kZXJuZWF0aCBhIGJ1dHRvbiBhZnRlciBpdCBoYXMgYmVlbiBjbGlja2VkLiIpIHRvIHVzZSBhcyB0aGUgY29udGV4dHVhbCBtZW51IGZvciB0aGlzIGVsZW1lbnQuJ30scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9jb250ZXh0bWVudSJ9XX0se25hbWU6ImRpciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGluZyB0aGUgZGlyZWN0aW9uYWxpdHkgb2YgdGhlIGVsZW1lbnQncyB0ZXh0LiBJdCBjYW4gaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGBsdHJgLCB3aGljaCBtZWFucyBfbGVmdCB0byByaWdodF8gYW5kIGlzIHRvIGJlIHVzZWQgZm9yIGxhbmd1YWdlcyB0aGF0IGFyZSB3cml0dGVuIGZyb20gdGhlIGxlZnQgdG8gdGhlIHJpZ2h0IChsaWtlIEVuZ2xpc2gpO1xuKiAgIGBydGxgLCB3aGljaCBtZWFucyBfcmlnaHQgdG8gbGVmdF8gYW5kIGlzIHRvIGJlIHVzZWQgZm9yIGxhbmd1YWdlcyB0aGF0IGFyZSB3cml0dGVuIGZyb20gdGhlIHJpZ2h0IHRvIHRoZSBsZWZ0IChsaWtlIEFyYWJpYyk7XG4qICAgYGF1dG9gLCB3aGljaCBsZXRzIHRoZSB1c2VyIGFnZW50IGRlY2lkZS4gSXQgdXNlcyBhIGJhc2ljIGFsZ29yaXRobSBhcyBpdCBwYXJzZXMgdGhlIGNoYXJhY3RlcnMgaW5zaWRlIHRoZSBlbGVtZW50IHVudGlsIGl0IGZpbmRzIGEgY2hhcmFjdGVyIHdpdGggYSBzdHJvbmcgZGlyZWN0aW9uYWxpdHksIHRoZW4gaXQgYXBwbGllcyB0aGF0IGRpcmVjdGlvbmFsaXR5IHRvIHRoZSB3aG9sZSBlbGVtZW50LiJ9LHZhbHVlU2V0OiJkIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2RpciJ9XX0se25hbWU6ImRyYWdnYWJsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBlbGVtZW50IGNhbiBiZSBkcmFnZ2VkLCB1c2luZyB0aGUgW0RyYWcgYW5kIERyb3AgQVBJXSgvZW4tdXMvZG9jcy9EcmFnRHJvcC9EcmFnX2FuZF9Ecm9wKS4gSXQgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgdHJ1ZWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IG1heSBiZSBkcmFnZ2VkXG4qICAgYGZhbHNlYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgbWF5IG5vdCBiZSBkcmFnZ2VkLiJ9LHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2RyYWdnYWJsZSJ9XX0se25hbWU6ImRyb3B6b25lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIHdoYXQgdHlwZXMgb2YgY29udGVudCBjYW4gYmUgZHJvcHBlZCBvbiBhbiBlbGVtZW50LCB1c2luZyB0aGUgW0RyYWcgYW5kIERyb3AgQVBJXSgvZW4tVVMvZG9jcy9EcmFnRHJvcC9EcmFnX2FuZF9Ecm9wKS4gSXQgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgY29weWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IGRyb3BwaW5nIHdpbGwgY3JlYXRlIGEgY29weSBvZiB0aGUgZWxlbWVudCB0aGF0IHdhcyBkcmFnZ2VkXG4qICAgYG1vdmVgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCB0aGF0IHdhcyBkcmFnZ2VkIHdpbGwgYmUgbW92ZWQgdG8gdGhpcyBuZXcgbG9jYXRpb24uXG4qICAgYGxpbmtgLCB3aWxsIGNyZWF0ZSBhIGxpbmsgdG8gdGhlIGRyYWdnZWQgZGF0YS4ifX0se25hbWU6ImV4cG9ydHBhcnRzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJVc2VkIHRvIHRyYW5zaXRpdmVseSBleHBvcnQgc2hhZG93IHBhcnRzIGZyb20gYSBuZXN0ZWQgc2hhZG93IHRyZWUgaW50byBhIGNvbnRhaW5pbmcgbGlnaHQgdHJlZS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2V4cG9ydHBhcnRzIn1dfSx7bmFtZToiaGlkZGVuIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IGlzIG5vdCB5ZXQsIG9yIGlzIG5vIGxvbmdlciwgX3JlbGV2YW50Xy4gRm9yIGV4YW1wbGUsIGl0IGNhbiBiZSB1c2VkIHRvIGhpZGUgZWxlbWVudHMgb2YgdGhlIHBhZ2UgdGhhdCBjYW4ndCBiZSB1c2VkIHVudGlsIHRoZSBsb2dpbiBwcm9jZXNzIGhhcyBiZWVuIGNvbXBsZXRlZC4gVGhlIGJyb3dzZXIgd29uJ3QgcmVuZGVyIHN1Y2ggZWxlbWVudHMuIFRoaXMgYXR0cmlidXRlIG11c3Qgbm90IGJlIHVzZWQgdG8gaGlkZSBjb250ZW50IHRoYXQgY291bGQgbGVnaXRpbWF0ZWx5IGJlIHNob3duLiJ9LHZhbHVlU2V0OiJ2IixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2hpZGRlbiJ9XX0se25hbWU6ImlkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGEgdW5pcXVlIGlkZW50aWZpZXIgKElEKSB3aGljaCBtdXN0IGJlIHVuaXF1ZSBpbiB0aGUgd2hvbGUgZG9jdW1lbnQuIEl0cyBwdXJwb3NlIGlzIHRvIGlkZW50aWZ5IHRoZSBlbGVtZW50IHdoZW4gbGlua2luZyAodXNpbmcgYSBmcmFnbWVudCBpZGVudGlmaWVyKSwgc2NyaXB0aW5nLCBvciBzdHlsaW5nICh3aXRoIENTUykuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pZCJ9XX0se25hbWU6ImlucHV0bW9kZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonUHJvdmlkZXMgYSBoaW50IHRvIGJyb3dzZXJzIGFzIHRvIHRoZSB0eXBlIG9mIHZpcnR1YWwga2V5Ym9hcmQgY29uZmlndXJhdGlvbiB0byB1c2Ugd2hlbiBlZGl0aW5nIHRoaXMgZWxlbWVudCBvciBpdHMgY29udGVudHMuIFVzZWQgcHJpbWFyaWx5IG9uIFtgPGlucHV0PmBdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50cywgYnV0IGlzIHVzYWJsZSBvbiBhbnkgZWxlbWVudCB3aGlsZSBpbiBgW2NvbnRlbnRlZGl0YWJsZV0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMjYXR0ci1jb250ZW50ZWRpdGFibGUpYCBtb2RlLid9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaW5wdXRtb2RlIn1dfSx7bmFtZToiaXMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGF0IGEgc3RhbmRhcmQgSFRNTCBlbGVtZW50IHNob3VsZCBiZWhhdmUgbGlrZSBhIHJlZ2lzdGVyZWQgY3VzdG9tIGJ1aWx0LWluIGVsZW1lbnQgKHNlZSBbVXNpbmcgY3VzdG9tIGVsZW1lbnRzXSgvZW4tVVMvZG9jcy9XZWIvV2ViX0NvbXBvbmVudHMvVXNpbmdfY3VzdG9tX2VsZW1lbnRzKSBmb3IgbW9yZSBkZXRhaWxzKS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2lzIn1dfSx7bmFtZToiaXRlbWlkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdW5pcXVlLCBnbG9iYWwgaWRlbnRpZmllciBvZiBhbiBpdGVtLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaXRlbWlkIn1dfSx7bmFtZToiaXRlbXByb3AiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlVzZWQgdG8gYWRkIHByb3BlcnRpZXMgdG8gYW4gaXRlbS4gRXZlcnkgSFRNTCBlbGVtZW50IG1heSBoYXZlIGFuIGBpdGVtcHJvcGAgYXR0cmlidXRlIHNwZWNpZmllZCwgd2hlcmUgYW4gYGl0ZW1wcm9wYCBjb25zaXN0cyBvZiBhIG5hbWUgYW5kIHZhbHVlIHBhaXIuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pdGVtcHJvcCJ9XX0se25hbWU6Iml0ZW1yZWYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlByb3BlcnRpZXMgdGhhdCBhcmUgbm90IGRlc2NlbmRhbnRzIG9mIGFuIGVsZW1lbnQgd2l0aCB0aGUgYGl0ZW1zY29wZWAgYXR0cmlidXRlIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGl0ZW0gdXNpbmcgYW4gYGl0ZW1yZWZgLiBJdCBwcm92aWRlcyBhIGxpc3Qgb2YgZWxlbWVudCBpZHMgKG5vdCBgaXRlbWlkYHMpIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGVsc2V3aGVyZSBpbiB0aGUgZG9jdW1lbnQuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pdGVtcmVmIn1dfSx7bmFtZToiaXRlbXNjb3BlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJgaXRlbXNjb3BlYCAodXN1YWxseSkgd29ya3MgYWxvbmcgd2l0aCBgW2l0ZW10eXBlXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLWl0ZW10eXBlKWAgdG8gc3BlY2lmeSB0aGF0IHRoZSBIVE1MIGNvbnRhaW5lZCBpbiBhIGJsb2NrIGlzIGFib3V0IGEgcGFydGljdWxhciBpdGVtLiBgaXRlbXNjb3BlYCBjcmVhdGVzIHRoZSBJdGVtIGFuZCBkZWZpbmVzIHRoZSBzY29wZSBvZiB0aGUgYGl0ZW10eXBlYCBhc3NvY2lhdGVkIHdpdGggaXQuIGBpdGVtdHlwZWAgaXMgYSB2YWxpZCBVUkwgb2YgYSB2b2NhYnVsYXJ5IChzdWNoIGFzIFtzY2hlbWEub3JnXShodHRwczovL3NjaGVtYS5vcmcvKSkgdGhhdCBkZXNjcmliZXMgdGhlIGl0ZW0gYW5kIGl0cyBwcm9wZXJ0aWVzIGNvbnRleHQuIn0sdmFsdWVTZXQ6InYiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaXRlbXNjb3BlIn1dfSx7bmFtZToiaXRlbXR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlNwZWNpZmllcyB0aGUgVVJMIG9mIHRoZSB2b2NhYnVsYXJ5IHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRlZmluZSBgaXRlbXByb3BgcyAoaXRlbSBwcm9wZXJ0aWVzKSBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUuIGBbaXRlbXNjb3BlXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLWl0ZW1zY29wZSlgIGlzIHVzZWQgdG8gc2V0IHRoZSBzY29wZSBvZiB3aGVyZSBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhlIHZvY2FidWxhcnkgc2V0IGJ5IGBpdGVtdHlwZWAgd2lsbCBiZSBhY3RpdmUuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pdGVtdHlwZSJ9XX0se25hbWU6ImxhbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkhlbHBzIGRlZmluZSB0aGUgbGFuZ3VhZ2Ugb2YgYW4gZWxlbWVudDogdGhlIGxhbmd1YWdlIHRoYXQgbm9uLWVkaXRhYmxlIGVsZW1lbnRzIGFyZSBpbiwgb3IgdGhlIGxhbmd1YWdlIHRoYXQgZWRpdGFibGUgZWxlbWVudHMgc2hvdWxkIGJlIHdyaXR0ZW4gaW4gYnkgdGhlIHVzZXIuIFRoZSBhdHRyaWJ1dGUgY29udGFpbnMgb25lIOKAnGxhbmd1YWdlIHRhZ+KAnSAobWFkZSBvZiBoeXBoZW4tc2VwYXJhdGVkIOKAnGxhbmd1YWdlIHN1YnRhZ3PigJ0pIGluIHRoZSBmb3JtYXQgZGVmaW5lZCBpbiBbX1RhZ3MgZm9yIElkZW50aWZ5aW5nIExhbmd1YWdlcyAoQkNQNDcpX10oaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL2JjcC9iY3A0Ny50eHQpLiBbKip4bWw6bGFuZyoqXSgjYXR0ci14bWw6bGFuZykgaGFzIHByaW9yaXR5IG92ZXIgaXQuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9sYW5nIn1dfSx7bmFtZToicGFydCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgcGFydCBuYW1lcyBvZiB0aGUgZWxlbWVudC4gUGFydCBuYW1lcyBhbGxvd3MgQ1NTIHRvIHNlbGVjdCBhbmQgc3R5bGUgc3BlY2lmaWMgZWxlbWVudHMgaW4gYSBzaGFkb3cgdHJlZSB2aWEgdGhlIFtgOjpwYXJ0YF0oL2VuLVVTL2RvY3MvV2ViL0NTUy86OnBhcnQgIlRoZSA6OnBhcnQgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgYW55IGVsZW1lbnQgd2l0aGluIGEgc2hhZG93IHRyZWUgdGhhdCBoYXMgYSBtYXRjaGluZyBwYXJ0IGF0dHJpYnV0ZS4iKSBwc2V1ZG8tZWxlbWVudC4nfSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3BhcnQifV19LHtuYW1lOiJyb2xlIix2YWx1ZVNldDoicm9sZXMifSx7bmFtZToic2xvdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQXNzaWducyBhIHNsb3QgaW4gYSBbc2hhZG93IERPTV0oL2VuLVVTL2RvY3MvV2ViL1dlYl9Db21wb25lbnRzL1NoYWRvd19ET00pIHNoYWRvdyB0cmVlIHRvIGFuIGVsZW1lbnQ6IEFuIGVsZW1lbnQgd2l0aCBhIGBzbG90YCBhdHRyaWJ1dGUgaXMgYXNzaWduZWQgdG8gdGhlIHNsb3QgY3JlYXRlZCBieSB0aGUgW2A8c2xvdD5gXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Nsb3QgXCJUaGUgSFRNTCA8c2xvdD4gZWxlbWVudOKAlHBhcnQgb2YgdGhlIFdlYiBDb21wb25lbnRzIHRlY2hub2xvZ3kgc3VpdGXigJRpcyBhIHBsYWNlaG9sZGVyIGluc2lkZSBhIHdlYiBjb21wb25lbnQgdGhhdCB5b3UgY2FuIGZpbGwgd2l0aCB5b3VyIG93biBtYXJrdXAsIHdoaWNoIGxldHMgeW91IGNyZWF0ZSBzZXBhcmF0ZSBET00gdHJlZXMgYW5kIHByZXNlbnQgdGhlbSB0b2dldGhlci5cIikgZWxlbWVudCB3aG9zZSBgW25hbWVdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2xvdCNhdHRyLW5hbWUpYCBhdHRyaWJ1dGUncyB2YWx1ZSBtYXRjaGVzIHRoYXQgYHNsb3RgIGF0dHJpYnV0ZSdzIHZhbHVlLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvc2xvdCJ9XX0se25hbWU6InNwZWxsY2hlY2siLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVudW1lcmF0ZWQgYXR0cmlidXRlIGRlZmluZXMgd2hldGhlciB0aGUgZWxlbWVudCBtYXkgYmUgY2hlY2tlZCBmb3Igc3BlbGxpbmcgZXJyb3JzLiBJdCBtYXkgaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGB0cnVlYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIGJlLCBpZiBwb3NzaWJsZSwgY2hlY2tlZCBmb3Igc3BlbGxpbmcgZXJyb3JzO1xuKiAgIGBmYWxzZWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBub3QgYmUgY2hlY2tlZCBmb3Igc3BlbGxpbmcgZXJyb3JzLiJ9LHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3NwZWxsY2hlY2sifV19LHtuYW1lOiJzdHlsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQ29udGFpbnMgW0NTU10oL2VuLVVTL2RvY3MvV2ViL0NTUykgc3R5bGluZyBkZWNsYXJhdGlvbnMgdG8gYmUgYXBwbGllZCB0byB0aGUgZWxlbWVudC4gTm90ZSB0aGF0IGl0IGlzIHJlY29tbWVuZGVkIGZvciBzdHlsZXMgdG8gYmUgZGVmaW5lZCBpbiBhIHNlcGFyYXRlIGZpbGUgb3IgZmlsZXMuIFRoaXMgYXR0cmlidXRlIGFuZCB0aGUgW2A8c3R5bGU+YF0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zdHlsZSAiVGhlIEhUTUwgPHN0eWxlPiBlbGVtZW50IGNvbnRhaW5zIHN0eWxlIGluZm9ybWF0aW9uIGZvciBhIGRvY3VtZW50LCBvciBwYXJ0IG9mIGEgZG9jdW1lbnQuIikgZWxlbWVudCBoYXZlIG1haW5seSB0aGUgcHVycG9zZSBvZiBhbGxvd2luZyBmb3IgcXVpY2sgc3R5bGluZywgZm9yIGV4YW1wbGUgZm9yIHRlc3RpbmcgcHVycG9zZXMuJ30scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9zdHlsZSJ9XX0se25hbWU6InRhYmluZGV4IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBpbnRlZ2VyIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIGlmIHRoZSBlbGVtZW50IGNhbiB0YWtlIGlucHV0IGZvY3VzIChpcyBfZm9jdXNhYmxlXyksIGlmIGl0IHNob3VsZCBwYXJ0aWNpcGF0ZSB0byBzZXF1ZW50aWFsIGtleWJvYXJkIG5hdmlnYXRpb24sIGFuZCBpZiBzbywgYXQgd2hhdCBwb3NpdGlvbi4gSXQgY2FuIHRha2Ugc2V2ZXJhbCB2YWx1ZXM6XG5cbiogICBhIF9uZWdhdGl2ZSB2YWx1ZV8gbWVhbnMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZm9jdXNhYmxlLCBidXQgc2hvdWxkIG5vdCBiZSByZWFjaGFibGUgdmlhIHNlcXVlbnRpYWwga2V5Ym9hcmQgbmF2aWdhdGlvbjtcbiogICBgMGAgbWVhbnMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZm9jdXNhYmxlIGFuZCByZWFjaGFibGUgdmlhIHNlcXVlbnRpYWwga2V5Ym9hcmQgbmF2aWdhdGlvbiwgYnV0IGl0cyByZWxhdGl2ZSBvcmRlciBpcyBkZWZpbmVkIGJ5IHRoZSBwbGF0Zm9ybSBjb252ZW50aW9uO1xuKiAgIGEgX3Bvc2l0aXZlIHZhbHVlXyBtZWFucyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBiZSBmb2N1c2FibGUgYW5kIHJlYWNoYWJsZSB2aWEgc2VxdWVudGlhbCBrZXlib2FyZCBuYXZpZ2F0aW9uOyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIGVsZW1lbnRzIGFyZSBmb2N1c2VkIGlzIHRoZSBpbmNyZWFzaW5nIHZhbHVlIG9mIHRoZSBbKip0YWJpbmRleCoqXSgjYXR0ci10YWJpbmRleCkuIElmIHNldmVyYWwgZWxlbWVudHMgc2hhcmUgdGhlIHNhbWUgdGFiaW5kZXgsIHRoZWlyIHJlbGF0aXZlIG9yZGVyIGZvbGxvd3MgdGhlaXIgcmVsYXRpdmUgcG9zaXRpb25zIGluIHRoZSBkb2N1bWVudC4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RhYmluZGV4In1dfSx7bmFtZToidGl0bGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvbnRhaW5zIGEgdGV4dCByZXByZXNlbnRpbmcgYWR2aXNvcnkgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgZWxlbWVudCBpdCBiZWxvbmdzIHRvLiBTdWNoIGluZm9ybWF0aW9uIGNhbiB0eXBpY2FsbHksIGJ1dCBub3QgbmVjZXNzYXJpbHksIGJlIHByZXNlbnRlZCB0byB0aGUgdXNlciBhcyBhIHRvb2x0aXAuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90aXRsZSJ9XX0se25hbWU6InRyYW5zbGF0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgdGhhdCBpcyB1c2VkIHRvIHNwZWNpZnkgd2hldGhlciBhbiBlbGVtZW50J3MgYXR0cmlidXRlIHZhbHVlcyBhbmQgdGhlIHZhbHVlcyBvZiBpdHMgW2BUZXh0YF0oL2VuLVVTL2RvY3MvV2ViL0FQSS9UZXh0IFwiVGhlIFRleHQgaW50ZXJmYWNlIHJlcHJlc2VudHMgdGhlIHRleHR1YWwgY29udGVudCBvZiBFbGVtZW50IG9yIEF0dHIuIElmIGFuIGVsZW1lbnQgaGFzIG5vIG1hcmt1cCB3aXRoaW4gaXRzIGNvbnRlbnQsIGl0IGhhcyBhIHNpbmdsZSBjaGlsZCBpbXBsZW1lbnRpbmcgVGV4dCB0aGF0IGNvbnRhaW5zIHRoZSBlbGVtZW50J3MgdGV4dC4gSG93ZXZlciwgaWYgdGhlIGVsZW1lbnQgY29udGFpbnMgbWFya3VwLCBpdCBpcyBwYXJzZWQgaW50byBpbmZvcm1hdGlvbiBpdGVtcyBhbmQgVGV4dCBub2RlcyB0aGF0IGZvcm0gaXRzIGNoaWxkcmVuLlwiKSBub2RlIGNoaWxkcmVuIGFyZSB0byBiZSB0cmFuc2xhdGVkIHdoZW4gdGhlIHBhZ2UgaXMgbG9jYWxpemVkLCBvciB3aGV0aGVyIHRvIGxlYXZlIHRoZW0gdW5jaGFuZ2VkLiBJdCBjYW4gaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGVtcHR5IHN0cmluZyBhbmQgYHllc2AsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHdpbGwgYmUgdHJhbnNsYXRlZC5cbiogICBgbm9gLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCB3aWxsIG5vdCBiZSB0cmFuc2xhdGVkLiJ9LHZhbHVlU2V0OiJ5IixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RyYW5zbGF0ZSJ9XX0se25hbWU6Im9uYWJvcnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsb2FkaW5nIG9mIGEgcmVzb3VyY2UgaGFzIGJlZW4gYWJvcnRlZC4ifX0se25hbWU6Im9uYmx1ciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZWxlbWVudCBoYXMgbG9zdCBmb2N1cyAoZG9lcyBub3QgYnViYmxlKS4ifX0se25hbWU6Im9uY2FucGxheSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVzZXIgYWdlbnQgY2FuIHBsYXkgdGhlIG1lZGlhLCBidXQgZXN0aW1hdGVzIHRoYXQgbm90IGVub3VnaCBkYXRhIGhhcyBiZWVuIGxvYWRlZCB0byBwbGF5IHRoZSBtZWRpYSB1cCB0byBpdHMgZW5kIHdpdGhvdXQgaGF2aW5nIHRvIHN0b3AgZm9yIGZ1cnRoZXIgYnVmZmVyaW5nIG9mIGNvbnRlbnQuIn19LHtuYW1lOiJvbmNhbnBsYXl0aHJvdWdoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdXNlciBhZ2VudCBjYW4gcGxheSB0aGUgbWVkaWEgdXAgdG8gaXRzIGVuZCB3aXRob3V0IGhhdmluZyB0byBzdG9wIGZvciBmdXJ0aGVyIGJ1ZmZlcmluZyBvZiBjb250ZW50LiJ9fSx7bmFtZToib25jaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgZm9yIDxpbnB1dD4sIDxzZWxlY3Q+LCBhbmQgPHRleHRhcmVhPiBlbGVtZW50cyB3aGVuIGEgY2hhbmdlIHRvIHRoZSBlbGVtZW50J3MgdmFsdWUgaXMgY29tbWl0dGVkIGJ5IHRoZSB1c2VyLiJ9fSx7bmFtZToib25jbGljayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgYnV0dG9uIGhhcyBiZWVuIHByZXNzZWQgYW5kIHJlbGVhc2VkIG9uIGFuIGVsZW1lbnQuIn19LHtuYW1lOiJvbmNvbnRleHRtZW51IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcmlnaHQgYnV0dG9uIG9mIHRoZSBtb3VzZSBpcyBjbGlja2VkIChiZWZvcmUgdGhlIGNvbnRleHQgbWVudSBpcyBkaXNwbGF5ZWQpLiJ9fSx7bmFtZToib25kYmxjbGljayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgYnV0dG9uIGlzIGNsaWNrZWQgdHdpY2Ugb24gYW4gZWxlbWVudC4ifX0se25hbWU6Im9uZHJhZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbiBpcyBiZWluZyBkcmFnZ2VkIChldmVyeSAzNTBtcykuIn19LHtuYW1lOiJvbmRyYWdlbmQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgZHJhZyBvcGVyYXRpb24gaXMgYmVpbmcgZW5kZWQgKGJ5IHJlbGVhc2luZyBhIG1vdXNlIGJ1dHRvbiBvciBoaXR0aW5nIHRoZSBlc2NhcGUga2V5KS4ifX0se25hbWU6Im9uZHJhZ2VudGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGRyYWdnZWQgZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbiBlbnRlcnMgYSB2YWxpZCBkcm9wIHRhcmdldC4ifX0se25hbWU6Im9uZHJhZ2xlYXZlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGRyYWdnZWQgZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbiBsZWF2ZXMgYSB2YWxpZCBkcm9wIHRhcmdldC4ifX0se25hbWU6Im9uZHJhZ292ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVsZW1lbnQgb3IgdGV4dCBzZWxlY3Rpb24gaXMgYmVpbmcgZHJhZ2dlZCBvdmVyIGEgdmFsaWQgZHJvcCB0YXJnZXQgKGV2ZXJ5IDM1MG1zKS4ifX0se25hbWU6Im9uZHJhZ3N0YXJ0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdXNlciBzdGFydHMgZHJhZ2dpbmcgYW4gZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbi4ifX0se25hbWU6Im9uZHJvcCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZWxlbWVudCBpcyBkcm9wcGVkIG9uIGEgdmFsaWQgZHJvcCB0YXJnZXQuIn19LHtuYW1lOiJvbmR1cmF0aW9uY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZHVyYXRpb24gYXR0cmlidXRlIGhhcyBiZWVuIHVwZGF0ZWQuIn19LHtuYW1lOiJvbmVtcHRpZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtZWRpYSBoYXMgYmVjb21lIGVtcHR5OyBmb3IgZXhhbXBsZSwgdGhpcyBldmVudCBpcyBzZW50IGlmIHRoZSBtZWRpYSBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZCAob3IgcGFydGlhbGx5IGxvYWRlZCksIGFuZCB0aGUgbG9hZCgpIG1ldGhvZCBpcyBjYWxsZWQgdG8gcmVsb2FkIGl0LiJ9fSx7bmFtZToib25lbmRlZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUGxheWJhY2sgaGFzIHN0b3BwZWQgYmVjYXVzZSB0aGUgZW5kIG9mIHRoZSBtZWRpYSB3YXMgcmVhY2hlZC4ifX0se25hbWU6Im9uZXJyb3IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcmVzb3VyY2UgZmFpbGVkIHRvIGxvYWQuIn19LHtuYW1lOiJvbmZvY3VzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbGVtZW50IGhhcyByZWNlaXZlZCBmb2N1cyAoZG9lcyBub3QgYnViYmxlKS4ifX0se25hbWU6Im9uZm9ybWNoYW5nZSJ9LHtuYW1lOiJvbmZvcm1pbnB1dCJ9LHtuYW1lOiJvbmlucHV0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdmFsdWUgb2YgYW4gZWxlbWVudCBjaGFuZ2VzIG9yIHRoZSBjb250ZW50IG9mIGFuIGVsZW1lbnQgd2l0aCB0aGUgYXR0cmlidXRlIGNvbnRlbnRlZGl0YWJsZSBpcyBtb2RpZmllZC4ifX0se25hbWU6Im9uaW52YWxpZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBzdWJtaXR0YWJsZSBlbGVtZW50IGhhcyBiZWVuIGNoZWNrZWQgYW5kIGRvZXNuJ3Qgc2F0aXNmeSBpdHMgY29uc3RyYWludHMuIn19LHtuYW1lOiJvbmtleWRvd24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEga2V5IGlzIHByZXNzZWQgZG93bi4ifX0se25hbWU6Im9ua2V5cHJlc3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEga2V5IGlzIHByZXNzZWQgZG93biBhbmQgdGhhdCBrZXkgbm9ybWFsbHkgcHJvZHVjZXMgYSBjaGFyYWN0ZXIgdmFsdWUgKHVzZSBpbnB1dCBpbnN0ZWFkKS4ifX0se25hbWU6Im9ua2V5dXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEga2V5IGlzIHJlbGVhc2VkLiJ9fSx7bmFtZToib25sb2FkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHJlc291cmNlIGFuZCBpdHMgZGVwZW5kZW50IHJlc291cmNlcyBoYXZlIGZpbmlzaGVkIGxvYWRpbmcuIn19LHtuYW1lOiJvbmxvYWRlZGRhdGEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBmaXJzdCBmcmFtZSBvZiB0aGUgbWVkaWEgaGFzIGZpbmlzaGVkIGxvYWRpbmcuIn19LHtuYW1lOiJvbmxvYWRlZG1ldGFkYXRhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWV0YWRhdGEgaGFzIGJlZW4gbG9hZGVkLiJ9fSx7bmFtZToib25sb2Fkc3RhcnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlByb2dyZXNzIGhhcyBiZWd1bi4ifX0se25hbWU6Im9ubW91c2Vkb3duIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBidXR0b24gKHVzdWFsbHkgYSBtb3VzZSkgaXMgcHJlc3NlZCBvbiBhbiBlbGVtZW50LiJ9fSx7bmFtZToib25tb3VzZW1vdmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG92ZXIgYW4gZWxlbWVudC4ifX0se25hbWU6Im9ubW91c2VvdXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG9mZiB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUgbGlzdGVuZXIgYXR0YWNoZWQgb3Igb2ZmIG9uZSBvZiBpdHMgY2hpbGRyZW4uIn19LHtuYW1lOiJvbm1vdXNlb3ZlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb250byB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUgbGlzdGVuZXIgYXR0YWNoZWQgb3Igb250byBvbmUgb2YgaXRzIGNoaWxkcmVuLiJ9fSx7bmFtZToib25tb3VzZXVwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBidXR0b24gaXMgcmVsZWFzZWQgb3ZlciBhbiBlbGVtZW50LiJ9fSx7bmFtZToib25tb3VzZXdoZWVsIn0se25hbWU6Im9ubW91c2VlbnRlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb250byB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUgbGlzdGVuZXIgYXR0YWNoZWQuIn19LHtuYW1lOiJvbm1vdXNlbGVhdmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG9mZiB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUgbGlzdGVuZXIgYXR0YWNoZWQuIn19LHtuYW1lOiJvbnBhdXNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQbGF5YmFjayBoYXMgYmVlbiBwYXVzZWQuIn19LHtuYW1lOiJvbnBsYXkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlBsYXliYWNrIGhhcyBiZWd1bi4ifX0se25hbWU6Im9ucGxheWluZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUGxheWJhY2sgaXMgcmVhZHkgdG8gc3RhcnQgYWZ0ZXIgaGF2aW5nIGJlZW4gcGF1c2VkIG9yIGRlbGF5ZWQgZHVlIHRvIGxhY2sgb2YgZGF0YS4ifX0se25hbWU6Im9ucHJvZ3Jlc3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluIHByb2dyZXNzLiJ9fSx7bmFtZToib25yYXRlY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcGxheWJhY2sgcmF0ZSBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9ucmVzZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgZm9ybSBpcyByZXNldC4ifX0se25hbWU6Im9ucmVzaXplIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZG9jdW1lbnQgdmlldyBoYXMgYmVlbiByZXNpemVkLiJ9fSx7bmFtZToib25yZWFkeXN0YXRlY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgb2YgYSBkb2N1bWVudCBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9uc2Nyb2xsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZG9jdW1lbnQgdmlldyBvciBhbiBlbGVtZW50IGhhcyBiZWVuIHNjcm9sbGVkLiJ9fSx7bmFtZToib25zZWVrZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgc2VlayBvcGVyYXRpb24gY29tcGxldGVkLiJ9fSx7bmFtZToib25zZWVraW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHNlZWsgb3BlcmF0aW9uIGJlZ2FuLiJ9fSx7bmFtZToib25zZWxlY3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlNvbWUgdGV4dCBpcyBiZWluZyBzZWxlY3RlZC4ifX0se25hbWU6Im9uc2hvdyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBjb250ZXh0bWVudSBldmVudCB3YXMgZmlyZWQgb24vYnViYmxlZCB0byBhbiBlbGVtZW50IHRoYXQgaGFzIGEgY29udGV4dG1lbnUgYXR0cmlidXRlIn19LHtuYW1lOiJvbnN0YWxsZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1c2VyIGFnZW50IGlzIHRyeWluZyB0byBmZXRjaCBtZWRpYSBkYXRhLCBidXQgZGF0YSBpcyB1bmV4cGVjdGVkbHkgbm90IGZvcnRoY29taW5nLiJ9fSx7bmFtZToib25zdWJtaXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgZm9ybSBpcyBzdWJtaXR0ZWQuIn19LHtuYW1lOiJvbnN1c3BlbmQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6Ik1lZGlhIGRhdGEgbG9hZGluZyBoYXMgYmVlbiBzdXNwZW5kZWQuIn19LHtuYW1lOiJvbnRpbWV1cGRhdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0aW1lIGluZGljYXRlZCBieSB0aGUgY3VycmVudFRpbWUgYXR0cmlidXRlIGhhcyBiZWVuIHVwZGF0ZWQuIn19LHtuYW1lOiJvbnZvbHVtZWNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHZvbHVtZSBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9ud2FpdGluZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUGxheWJhY2sgaGFzIHN0b3BwZWQgYmVjYXVzZSBvZiBhIHRlbXBvcmFyeSBsYWNrIG9mIGRhdGEuIn19LHtuYW1lOiJvbnBvaW50ZXJjYW5jZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGVyIGlzIHVubGlrZWx5IHRvIHByb2R1Y2UgYW55IG1vcmUgZXZlbnRzLiJ9fSx7bmFtZToib25wb2ludGVyZG93biIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50ZXIgZW50ZXJzIHRoZSBhY3RpdmUgYnV0dG9ucyBzdGF0ZS4ifX0se25hbWU6Im9ucG9pbnRlcmVudGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgaW5zaWRlIHRoZSBoaXQtdGVzdGluZyBib3VuZGFyeS4ifX0se25hbWU6Im9ucG9pbnRlcmxlYXZlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb3V0IG9mIHRoZSBoaXQtdGVzdGluZyBib3VuZGFyeS4ifX0se25hbWU6Im9ucG9pbnRlcmxvY2tjaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGVyIHdhcyBsb2NrZWQgb3IgcmVsZWFzZWQuIn19LHtuYW1lOiJvbnBvaW50ZXJsb2NrZXJyb3IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6Ikl0IHdhcyBpbXBvc3NpYmxlIHRvIGxvY2sgdGhlIHBvaW50ZXIgZm9yIHRlY2huaWNhbCByZWFzb25zIG9yIGJlY2F1c2UgdGhlIHBlcm1pc3Npb24gd2FzIGRlbmllZC4ifX0se25hbWU6Im9ucG9pbnRlcm1vdmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGVyIGNoYW5nZWQgY29vcmRpbmF0ZXMuIn19LHtuYW1lOiJvbnBvaW50ZXJvdXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGluZyBkZXZpY2UgbW92ZWQgb3V0IG9mIGhpdC10ZXN0aW5nIGJvdW5kYXJ5IG9yIGxlYXZlcyBkZXRlY3RhYmxlIGhvdmVyIHJhbmdlLiJ9fSx7bmFtZToib25wb2ludGVyb3ZlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBpbnRvIHRoZSBoaXQtdGVzdGluZyBib3VuZGFyeS4ifX0se25hbWU6Im9ucG9pbnRlcnVwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcG9pbnRlciBsZWF2ZXMgdGhlIGFjdGl2ZSBidXR0b25zIHN0YXRlLiJ9fSx7bmFtZToiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYWN0aXZlZGVzY2VuZGFudCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBjdXJyZW50bHkgYWN0aXZlIGVsZW1lbnQgd2hlbiBET00gZm9jdXMgaXMgb24gYSBbYGNvbXBvc2l0ZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2NvbXBvc2l0ZSkgd2lkZ2V0LCBbYHRleHRib3hgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0ZXh0Ym94KSwgW2Bncm91cGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyb3VwKSwgb3IgW2BhcHBsaWNhdGlvbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FwcGxpY2F0aW9uKS4ifX0se25hbWU6ImFyaWEtYXRvbWljIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWF0b21pYyJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciBbYXNzaXN0aXZlIHRlY2hub2xvZ2llc10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWFzc2lzdGl2ZS10ZWNobm9sb2d5KSB3aWxsIHByZXNlbnQgYWxsLCBvciBvbmx5IHBhcnRzIG9mLCB0aGUgY2hhbmdlZCByZWdpb24gYmFzZWQgb24gdGhlIGNoYW5nZSBub3RpZmljYXRpb25zIGRlZmluZWQgYnkgdGhlIFtgYXJpYS1yZWxldmFudGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcmVsZXZhbnQpIGF0dHJpYnV0ZS4ifX0se25hbWU6ImFyaWEtYXV0b2NvbXBsZXRlIix2YWx1ZVNldDoiYXV0b2NvbXBsZXRlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYXV0b2NvbXBsZXRlIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIGlucHV0dGluZyB0ZXh0IGNvdWxkIHRyaWdnZXIgZGlzcGxheSBvZiBvbmUgb3IgbW9yZSBwcmVkaWN0aW9ucyBvZiB0aGUgdXNlcidzIGludGVuZGVkIHZhbHVlIGZvciBhbiBpbnB1dCBhbmQgc3BlY2lmaWVzIGhvdyBwcmVkaWN0aW9ucyB3b3VsZCBiZSBwcmVzZW50ZWQgaWYgdGhleSBhcmUgbWFkZS4ifX0se25hbWU6ImFyaWEtYnVzeSIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1idXN5In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyBhbiBlbGVtZW50IGlzIGJlaW5nIG1vZGlmaWVkIGFuZCB0aGF0IGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMgX01BWV8gd2FudCB0byB3YWl0IHVudGlsIHRoZSBtb2RpZmljYXRpb25zIGFyZSBjb21wbGV0ZSBiZWZvcmUgZXhwb3NpbmcgdGhlbSB0byB0aGUgdXNlci4ifX0se25hbWU6ImFyaWEtY2hlY2tlZCIsdmFsdWVTZXQ6InRyaXN0YXRlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY2hlY2tlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidJbmRpY2F0ZXMgdGhlIGN1cnJlbnQgImNoZWNrZWQiIFtzdGF0ZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXN0YXRlKSBvZiBjaGVja2JveGVzLCByYWRpbyBidXR0b25zLCBhbmQgb3RoZXIgW3dpZGdldHNdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi13aWRnZXQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtcHJlc3NlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcHJlc3NlZCkgYW5kIFtgYXJpYS1zZWxlY3RlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtc2VsZWN0ZWQpLid9fSx7bmFtZToiYXJpYS1jb2xjb3VudCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbGNvdW50In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGluIGEgW2B0YWJsZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RhYmxlKSwgW2BncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JpZCksIG9yIFtgdHJlZWdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0cmVlZ3JpZCkuIFNlZSByZWxhdGVkIFtgYXJpYS1jb2xpbmRleGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29saW5kZXgpLiJ9fSx7bmFtZToiYXJpYS1jb2xpbmRleCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbGluZGV4In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgYW4gW2VsZW1lbnQnc10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGNvbHVtbiBpbmRleCBvciBwb3NpdGlvbiB3aXRoIHJlc3BlY3QgdG8gdGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIHdpdGhpbiBhIFtgdGFibGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0YWJsZSksIFtgZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyaWQpLCBvciBbYHRyZWVncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdHJlZWdyaWQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtY29sY291bnRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbGNvdW50KSBhbmQgW2BhcmlhLWNvbHNwYW5gXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbHNwYW4pLiJ9fSx7bmFtZToiYXJpYS1jb2xzcGFuIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29sc3BhbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBudW1iZXIgb2YgY29sdW1ucyBzcGFubmVkIGJ5IGEgY2VsbCBvciBncmlkY2VsbCB3aXRoaW4gYSBbYHRhYmxlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGFibGUpLCBbYGdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncmlkKSwgb3IgW2B0cmVlZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RyZWVncmlkKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWNvbGluZGV4YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb2xpbmRleCkgYW5kIFtgYXJpYS1yb3dzcGFuYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dzcGFuKS4ifX0se25hbWU6ImFyaWEtY29udHJvbHMiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb250cm9scyJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIChvciBlbGVtZW50cykgd2hvc2UgY29udGVudHMgb3IgcHJlc2VuY2UgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIGN1cnJlbnQgZWxlbWVudC4gU2VlIHJlbGF0ZWQgW2BhcmlhLW93bnNgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW93bnMpLiJ9fSx7bmFtZToiYXJpYS1jdXJyZW50Iix2YWx1ZVNldDoiY3VycmVudCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWN1cnJlbnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIHRoYXQgcmVwcmVzZW50cyB0aGUgY3VycmVudCBpdGVtIHdpdGhpbiBhIGNvbnRhaW5lciBvciBzZXQgb2YgcmVsYXRlZCBlbGVtZW50cy4ifX0se25hbWU6ImFyaWEtZGVzY3JpYmVkYnkiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kZXNjcmliZWRieSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIChvciBlbGVtZW50cykgdGhhdCBkZXNjcmliZXMgdGhlIFtvYmplY3RdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vYmplY3QpLiBTZWUgcmVsYXRlZCBbYGFyaWEtbGFiZWxsZWRieWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWxsZWRieSkuIn19LHtuYW1lOiJhcmlhLWRpc2FibGVkIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRpc2FibGVkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGF0IHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGlzIFtwZXJjZWl2YWJsZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXBlcmNlaXZhYmxlKSBidXQgZGlzYWJsZWQsIHNvIGl0IGlzIG5vdCBlZGl0YWJsZSBvciBvdGhlcndpc2UgW29wZXJhYmxlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tb3BlcmFibGUpLiBTZWUgcmVsYXRlZCBbYGFyaWEtaGlkZGVuYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1oaWRkZW4pIGFuZCBbYGFyaWEtcmVhZG9ubHlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJlYWRvbmx5KS4ifX0se25hbWU6ImFyaWEtZHJvcGVmZmVjdCIsdmFsdWVTZXQ6ImRyb3BlZmZlY3QiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kcm9wZWZmZWN0In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlxcW0RlcHJlY2F0ZWQgaW4gQVJJQSAxLjFcXF0gSW5kaWNhdGVzIHdoYXQgZnVuY3Rpb25zIGNhbiBiZSBwZXJmb3JtZWQgd2hlbiBhIGRyYWdnZWQgb2JqZWN0IGlzIHJlbGVhc2VkIG9uIHRoZSBkcm9wIHRhcmdldC4ifX0se25hbWU6ImFyaWEtZXJyb3JtZXNzYWdlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZXJyb3JtZXNzYWdlIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgdGhhdCBwcm92aWRlcyBhbiBlcnJvciBtZXNzYWdlIGZvciB0aGUgW29iamVjdF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLW9iamVjdCkuIFNlZSByZWxhdGVkIFtgYXJpYS1pbnZhbGlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1pbnZhbGlkKSBhbmQgW2BhcmlhLWRlc2NyaWJlZGJ5YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kZXNjcmliZWRieSkuIn19LHtuYW1lOiJhcmlhLWV4cGFuZGVkIix2YWx1ZVNldDoidSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWV4cGFuZGVkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIHRoZSBlbGVtZW50LCBvciBhbm90aGVyIGdyb3VwaW5nIGVsZW1lbnQgaXQgY29udHJvbHMsIGlzIGN1cnJlbnRseSBleHBhbmRlZCBvciBjb2xsYXBzZWQuIn19LHtuYW1lOiJhcmlhLWZsb3d0byIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWZsb3d0byJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBuZXh0IFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSBpbiBhbiBhbHRlcm5hdGUgcmVhZGluZyBvcmRlciBvZiBjb250ZW50IHdoaWNoLCBhdCB0aGUgdXNlcidzIGRpc2NyZXRpb24sIGFsbG93cyBhc3Npc3RpdmUgdGVjaG5vbG9neSB0byBvdmVycmlkZSB0aGUgZ2VuZXJhbCBkZWZhdWx0IG9mIHJlYWRpbmcgaW4gZG9jdW1lbnQgc291cmNlIG9yZGVyLiJ9fSx7bmFtZToiYXJpYS1ncmFiYmVkIix2YWx1ZVNldDoidSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWdyYWJiZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonXFxbRGVwcmVjYXRlZCBpbiBBUklBIDEuMVxcXSBJbmRpY2F0ZXMgYW4gZWxlbWVudFwncyAiZ3JhYmJlZCIgW3N0YXRlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tc3RhdGUpIGluIGEgZHJhZy1hbmQtZHJvcCBvcGVyYXRpb24uJ319LHtuYW1lOiJhcmlhLWhhc3BvcHVwIix2YWx1ZVNldDoiaGFzcG9wdXAiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1oYXNwb3B1cCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIGF2YWlsYWJpbGl0eSBhbmQgdHlwZSBvZiBpbnRlcmFjdGl2ZSBwb3B1cCBlbGVtZW50LCBzdWNoIGFzIG1lbnUgb3IgZGlhbG9nLCB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KS4ifX0se25hbWU6ImFyaWEtaGlkZGVuIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWhpZGRlbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBpcyBleHBvc2VkIHRvIGFuIGFjY2Vzc2liaWxpdHkgQVBJLiBTZWUgcmVsYXRlZCBbYGFyaWEtZGlzYWJsZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRpc2FibGVkKS4ifX0se25hbWU6ImFyaWEtaW52YWxpZCIsdmFsdWVTZXQ6ImludmFsaWQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1pbnZhbGlkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgZW50ZXJlZCB2YWx1ZSBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBTZWUgcmVsYXRlZCBbYGFyaWEtZXJyb3JtZXNzYWdlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1lcnJvcm1lc3NhZ2UpLiJ9fSx7bmFtZToiYXJpYS1sYWJlbCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWxhYmVsIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgYSBzdHJpbmcgdmFsdWUgdGhhdCBsYWJlbHMgdGhlIGN1cnJlbnQgZWxlbWVudC4gU2VlIHJlbGF0ZWQgW2BhcmlhLWxhYmVsbGVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWxhYmVsbGVkYnkpLiJ9fSx7bmFtZToiYXJpYS1sYWJlbGxlZGJ5IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWxsZWRieSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIChvciBlbGVtZW50cykgdGhhdCBsYWJlbHMgdGhlIGN1cnJlbnQgZWxlbWVudC4gU2VlIHJlbGF0ZWQgW2BhcmlhLWRlc2NyaWJlZGJ5YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kZXNjcmliZWRieSkuIn19LHtuYW1lOiJhcmlhLWxldmVsIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGV2ZWwifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgaGllcmFyY2hpY2FsIGxldmVsIG9mIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgd2l0aGluIGEgc3RydWN0dXJlLiJ9fSx7bmFtZToiYXJpYS1saXZlIix2YWx1ZVNldDoibGl2ZSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWxpdmUifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoYXQgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSB3aWxsIGJlIHVwZGF0ZWQsIGFuZCBkZXNjcmliZXMgdGhlIHR5cGVzIG9mIHVwZGF0ZXMgdGhlIFt1c2VyIGFnZW50c10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXVzZXItYWdlbnQpLCBbYXNzaXN0aXZlIHRlY2hub2xvZ2llc10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWFzc2lzdGl2ZS10ZWNobm9sb2d5KSwgYW5kIHVzZXIgY2FuIGV4cGVjdCBmcm9tIHRoZSBbbGl2ZSByZWdpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1saXZlLXJlZ2lvbikuIn19LHtuYW1lOiJhcmlhLW1vZGFsIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW1vZGFsIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgaXMgbW9kYWwgd2hlbiBkaXNwbGF5ZWQuIn19LHtuYW1lOiJhcmlhLW11bHRpbGluZSIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1tdWx0aWxpbmUifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgYSB0ZXh0IGJveCBhY2NlcHRzIG11bHRpcGxlIGxpbmVzIG9mIGlucHV0IG9yIG9ubHkgYSBzaW5nbGUgbGluZS4ifX0se25hbWU6ImFyaWEtbXVsdGlzZWxlY3RhYmxlIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW11bHRpc2VsZWN0YWJsZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBtYXkgc2VsZWN0IG1vcmUgdGhhbiBvbmUgaXRlbSBmcm9tIHRoZSBjdXJyZW50IHNlbGVjdGFibGUgZGVzY2VuZGFudHMuIn19LHtuYW1lOiJhcmlhLW9yaWVudGF0aW9uIix2YWx1ZVNldDoib3JpZW50YXRpb24iLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1vcmllbnRhdGlvbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciB0aGUgZWxlbWVudCdzIG9yaWVudGF0aW9uIGlzIGhvcml6b250YWwsIHZlcnRpY2FsLCBvciB1bmtub3duL2FtYmlndW91cy4ifX0se25hbWU6ImFyaWEtb3ducyIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW93bnMifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWRlbnRpZmllcyBhbiBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIChvciBlbGVtZW50cykgaW4gb3JkZXIgdG8gZGVmaW5lIGEgdmlzdWFsLCBmdW5jdGlvbmFsLCBvciBjb250ZXh0dWFsIHBhcmVudC9jaGlsZCBbcmVsYXRpb25zaGlwXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tcmVsYXRpb25zaGlwKSBiZXR3ZWVuIERPTSBlbGVtZW50cyB3aGVyZSB0aGUgRE9NIGhpZXJhcmNoeSBjYW5ub3QgYmUgdXNlZCB0byByZXByZXNlbnQgdGhlIHJlbGF0aW9uc2hpcC4gU2VlIHJlbGF0ZWQgW2BhcmlhLWNvbnRyb2xzYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb250cm9scykuIn19LHtuYW1lOiJhcmlhLXBsYWNlaG9sZGVyIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcGxhY2Vob2xkZXIifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhIHNob3J0IGhpbnQgKGEgd29yZCBvciBzaG9ydCBwaHJhc2UpIGludGVuZGVkIHRvIGFpZCB0aGUgdXNlciB3aXRoIGRhdGEgZW50cnkgd2hlbiB0aGUgY29udHJvbCBoYXMgbm8gdmFsdWUuIEEgaGludCBjb3VsZCBiZSBhIHNhbXBsZSB2YWx1ZSBvciBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBleHBlY3RlZCBmb3JtYXQuIn19LHtuYW1lOiJhcmlhLXBvc2luc2V0IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcG9zaW5zZXQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhbiBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpJ3MgbnVtYmVyIG9yIHBvc2l0aW9uIGluIHRoZSBjdXJyZW50IHNldCBvZiBsaXN0aXRlbXMgb3IgdHJlZWl0ZW1zLiBOb3QgcmVxdWlyZWQgaWYgYWxsIGVsZW1lbnRzIGluIHRoZSBzZXQgYXJlIHByZXNlbnQgaW4gdGhlIERPTS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXNldHNpemVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNldHNpemUpLiJ9fSx7bmFtZToiYXJpYS1wcmVzc2VkIix2YWx1ZVNldDoidHJpc3RhdGUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wcmVzc2VkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0luZGljYXRlcyB0aGUgY3VycmVudCAicHJlc3NlZCIgW3N0YXRlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tc3RhdGUpIG9mIHRvZ2dsZSBidXR0b25zLiBTZWUgcmVsYXRlZCBbYGFyaWEtY2hlY2tlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY2hlY2tlZCkgYW5kIFtgYXJpYS1zZWxlY3RlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtc2VsZWN0ZWQpLid9fSx7bmFtZToiYXJpYS1yZWFkb25seSIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yZWFkb25seSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBpcyBub3QgZWRpdGFibGUsIGJ1dCBpcyBvdGhlcndpc2UgW29wZXJhYmxlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tb3BlcmFibGUpLiBTZWUgcmVsYXRlZCBbYGFyaWEtZGlzYWJsZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRpc2FibGVkKS4ifX0se25hbWU6ImFyaWEtcmVsZXZhbnQiLHZhbHVlU2V0OiJyZWxldmFudCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJlbGV2YW50In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGF0IG5vdGlmaWNhdGlvbnMgdGhlIHVzZXIgYWdlbnQgd2lsbCB0cmlnZ2VyIHdoZW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZSB3aXRoaW4gYSBsaXZlIHJlZ2lvbiBpcyBtb2RpZmllZC4gU2VlIHJlbGF0ZWQgW2BhcmlhLWF0b21pY2BdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYXRvbWljKS4ifX0se25hbWU6ImFyaWEtcmVxdWlyZWQiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcmVxdWlyZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoYXQgdXNlciBpbnB1dCBpcyByZXF1aXJlZCBvbiB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBiZWZvcmUgYSBmb3JtIG1heSBiZSBzdWJtaXR0ZWQuIn19LHtuYW1lOiJhcmlhLXJvbGVkZXNjcmlwdGlvbiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvbGVkZXNjcmlwdGlvbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGEgaHVtYW4tcmVhZGFibGUsIGF1dGhvci1sb2NhbGl6ZWQgZGVzY3JpcHRpb24gZm9yIHRoZSBbcm9sZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXJvbGUpIG9mIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkuIn19LHtuYW1lOiJhcmlhLXJvd2NvdW50IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93Y291bnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MgaW4gYSBbYHRhYmxlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGFibGUpLCBbYGdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncmlkKSwgb3IgW2B0cmVlZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RyZWVncmlkKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXJvd2luZGV4YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dpbmRleCkuIn19LHtuYW1lOiJhcmlhLXJvd2luZGV4IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93aW5kZXgifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhbiBbZWxlbWVudCdzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgcm93IGluZGV4IG9yIHBvc2l0aW9uIHdpdGggcmVzcGVjdCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3Mgd2l0aGluIGEgW2B0YWJsZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RhYmxlKSwgW2BncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JpZCksIG9yIFtgdHJlZWdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0cmVlZ3JpZCkuIFNlZSByZWxhdGVkIFtgYXJpYS1yb3djb3VudGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93Y291bnQpIGFuZCBbYGFyaWEtcm93c3BhbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93c3BhbikuIn19LHtuYW1lOiJhcmlhLXJvd3NwYW4iLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dzcGFuIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIHNwYW5uZWQgYnkgYSBjZWxsIG9yIGdyaWRjZWxsIHdpdGhpbiBhIFtgdGFibGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0YWJsZSksIFtgZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyaWQpLCBvciBbYHRyZWVncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdHJlZWdyaWQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtcm93aW5kZXhgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvd2luZGV4KSBhbmQgW2BhcmlhLWNvbHNwYW5gXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbHNwYW4pLiJ9fSx7bmFtZToiYXJpYS1zZWxlY3RlZCIsdmFsdWVTZXQ6InUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZWxlY3RlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidJbmRpY2F0ZXMgdGhlIGN1cnJlbnQgInNlbGVjdGVkIiBbc3RhdGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1zdGF0ZSkgb2YgdmFyaW91cyBbd2lkZ2V0c10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIFNlZSByZWxhdGVkIFtgYXJpYS1jaGVja2VkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jaGVja2VkKSBhbmQgW2BhcmlhLXByZXNzZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXByZXNzZWQpLid9fSx7bmFtZToiYXJpYS1zZXRzaXplIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtc2V0c2l6ZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGN1cnJlbnQgc2V0IG9mIGxpc3RpdGVtcyBvciB0cmVlaXRlbXMuIE5vdCByZXF1aXJlZCBpZiBhbGwgZWxlbWVudHMgaW4gdGhlIHNldCBhcmUgcHJlc2VudCBpbiB0aGUgRE9NLiBTZWUgcmVsYXRlZCBbYGFyaWEtcG9zaW5zZXRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXBvc2luc2V0KS4ifX0se25hbWU6ImFyaWEtc29ydCIsdmFsdWVTZXQ6InNvcnQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zb3J0In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyBpZiBpdGVtcyBpbiBhIHRhYmxlIG9yIGdyaWQgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlci4ifX0se25hbWU6ImFyaWEtdmFsdWVtYXgiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS12YWx1ZW1heCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBtYXhpbXVtIGFsbG93ZWQgdmFsdWUgZm9yIGEgcmFuZ2UgW3dpZGdldF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIn19LHtuYW1lOiJhcmlhLXZhbHVlbWluIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWVtaW4ifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgbWluaW11bSBhbGxvd2VkIHZhbHVlIGZvciBhIHJhbmdlIFt3aWRnZXRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi13aWRnZXQpLiJ9fSx7bmFtZToiYXJpYS12YWx1ZW5vdyIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXZhbHVlbm93In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIGN1cnJlbnQgdmFsdWUgZm9yIGEgcmFuZ2UgW3dpZGdldF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIFNlZSByZWxhdGVkIFtgYXJpYS12YWx1ZXRleHRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXZhbHVldGV4dCkuIn19LHtuYW1lOiJhcmlhLXZhbHVldGV4dCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXZhbHVldGV4dCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBodW1hbiByZWFkYWJsZSB0ZXh0IGFsdGVybmF0aXZlIG9mIFtgYXJpYS12YWx1ZW5vd2BdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWVub3cpIGZvciBhIHJhbmdlIFt3aWRnZXRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi13aWRnZXQpLiJ9fSx7bmFtZToiYXJpYS1kZXRhaWxzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIHRoYXQgcHJvdmlkZXMgYSBkZXRhaWxlZCwgZXh0ZW5kZWQgZGVzY3JpcHRpb24gZm9yIHRoZSBbb2JqZWN0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tb2JqZWN0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWRlc2NyaWJlZGJ5YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kZXNjcmliZWRieSkuIn19LHtuYW1lOiJhcmlhLWtleXNob3J0Y3V0cyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIGtleWJvYXJkIHNob3J0Y3V0cyB0aGF0IGFuIGF1dGhvciBoYXMgaW1wbGVtZW50ZWQgdG8gYWN0aXZhdGUgb3IgZ2l2ZSBmb2N1cyB0byBhbiBlbGVtZW50LiJ9fV0sdmFsdWVTZXRzOlt7bmFtZToiYiIsdmFsdWVzOlt7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9XX0se25hbWU6InUiLHZhbHVlczpbe25hbWU6InRydWUifSx7bmFtZToiZmFsc2UifSx7bmFtZToidW5kZWZpbmVkIn1dfSx7bmFtZToibyIsdmFsdWVzOlt7bmFtZToib24ifSx7bmFtZToib2ZmIn1dfSx7bmFtZToieSIsdmFsdWVzOlt7bmFtZToieWVzIn0se25hbWU6Im5vIn1dfSx7bmFtZToidyIsdmFsdWVzOlt7bmFtZToic29mdCJ9LHtuYW1lOiJoYXJkIn1dfSx7bmFtZToiZCIsdmFsdWVzOlt7bmFtZToibHRyIn0se25hbWU6InJ0bCJ9LHtuYW1lOiJhdXRvIn1dfSx7bmFtZToibSIsdmFsdWVzOlt7bmFtZToiZ2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJDb3JyZXNwb25kcyB0byB0aGUgSFRUUCBbR0VUIG1ldGhvZF0oaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjOS5odG1sI3NlYzkuMyk7IGZvcm0gZGF0YSBhcmUgYXBwZW5kZWQgdG8gdGhlIGBhY3Rpb25gIGF0dHJpYnV0ZSBVUkkgd2l0aCBhICc/JyBhcyBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0aW5nIFVSSSBpcyBzZW50IHRvIHRoZSBzZXJ2ZXIuIFVzZSB0aGlzIG1ldGhvZCB3aGVuIHRoZSBmb3JtIGhhcyBubyBzaWRlLWVmZmVjdHMgYW5kIGNvbnRhaW5zIG9ubHkgQVNDSUkgY2hhcmFjdGVycy4ifX0se25hbWU6InBvc3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvcnJlc3BvbmRzIHRvIHRoZSBIVFRQIFtQT1NUIG1ldGhvZF0oaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjOS5odG1sI3NlYzkuNSk7IGZvcm0gZGF0YSBhcmUgaW5jbHVkZWQgaW4gdGhlIGJvZHkgb2YgdGhlIGZvcm0gYW5kIHNlbnQgdG8gdGhlIHNlcnZlci4ifX0se25hbWU6ImRpYWxvZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVXNlIHdoZW4gdGhlIGZvcm0gaXMgaW5zaWRlIGEgW2A8ZGlhbG9nPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kaWFsb2cpIGVsZW1lbnQgdG8gY2xvc2UgdGhlIGRpYWxvZyB3aGVuIHN1Ym1pdHRlZC4ifX1dfSx7bmFtZToiZm0iLHZhbHVlczpbe25hbWU6ImdldCJ9LHtuYW1lOiJwb3N0In1dfSx7bmFtZToicyIsdmFsdWVzOlt7bmFtZToicm93In0se25hbWU6ImNvbCJ9LHtuYW1lOiJyb3dncm91cCJ9LHtuYW1lOiJjb2xncm91cCJ9XX0se25hbWU6InQiLHZhbHVlczpbe25hbWU6ImhpZGRlbiJ9LHtuYW1lOiJ0ZXh0In0se25hbWU6InNlYXJjaCJ9LHtuYW1lOiJ0ZWwifSx7bmFtZToidXJsIn0se25hbWU6ImVtYWlsIn0se25hbWU6InBhc3N3b3JkIn0se25hbWU6ImRhdGV0aW1lIn0se25hbWU6ImRhdGUifSx7bmFtZToibW9udGgifSx7bmFtZToid2VlayJ9LHtuYW1lOiJ0aW1lIn0se25hbWU6ImRhdGV0aW1lLWxvY2FsIn0se25hbWU6Im51bWJlciJ9LHtuYW1lOiJyYW5nZSJ9LHtuYW1lOiJjb2xvciJ9LHtuYW1lOiJjaGVja2JveCJ9LHtuYW1lOiJyYWRpbyJ9LHtuYW1lOiJmaWxlIn0se25hbWU6InN1Ym1pdCJ9LHtuYW1lOiJpbWFnZSJ9LHtuYW1lOiJyZXNldCJ9LHtuYW1lOiJidXR0b24ifV19LHtuYW1lOiJpbSIsdmFsdWVzOlt7bmFtZToidmVyYmF0aW0ifSx7bmFtZToibGF0aW4ifSx7bmFtZToibGF0aW4tbmFtZSJ9LHtuYW1lOiJsYXRpbi1wcm9zZSJ9LHtuYW1lOiJmdWxsLXdpZHRoLWxhdGluIn0se25hbWU6ImthbmEifSx7bmFtZToia2FuYS1uYW1lIn0se25hbWU6ImthdGFrYW5hIn0se25hbWU6Im51bWVyaWMifSx7bmFtZToidGVsIn0se25hbWU6ImVtYWlsIn0se25hbWU6InVybCJ9XX0se25hbWU6ImJ0Iix2YWx1ZXM6W3tuYW1lOiJidXR0b24ifSx7bmFtZToic3VibWl0In0se25hbWU6InJlc2V0In0se25hbWU6Im1lbnUifV19LHtuYW1lOiJsdCIsdmFsdWVzOlt7bmFtZToiMSJ9LHtuYW1lOiJhIn0se25hbWU6IkEifSx7bmFtZToiaSJ9LHtuYW1lOiJJIn1dfSx7bmFtZToibXQiLHZhbHVlczpbe25hbWU6ImNvbnRleHQifSx7bmFtZToidG9vbGJhciJ9XX0se25hbWU6Im1pdCIsdmFsdWVzOlt7bmFtZToiY29tbWFuZCJ9LHtuYW1lOiJjaGVja2JveCJ9LHtuYW1lOiJyYWRpbyJ9XX0se25hbWU6ImV0Iix2YWx1ZXM6W3tuYW1lOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSx7bmFtZToibXVsdGlwYXJ0L2Zvcm0tZGF0YSJ9LHtuYW1lOiJ0ZXh0L3BsYWluIn1dfSx7bmFtZToidGsiLHZhbHVlczpbe25hbWU6InN1YnRpdGxlcyJ9LHtuYW1lOiJjYXB0aW9ucyJ9LHtuYW1lOiJkZXNjcmlwdGlvbnMifSx7bmFtZToiY2hhcHRlcnMifSx7bmFtZToibWV0YWRhdGEifV19LHtuYW1lOiJwbCIsdmFsdWVzOlt7bmFtZToibm9uZSJ9LHtuYW1lOiJtZXRhZGF0YSJ9LHtuYW1lOiJhdXRvIn1dfSx7bmFtZToic2giLHZhbHVlczpbe25hbWU6ImNpcmNsZSJ9LHtuYW1lOiJkZWZhdWx0In0se25hbWU6InBvbHkifSx7bmFtZToicmVjdCJ9XX0se25hbWU6InhvIix2YWx1ZXM6W3tuYW1lOiJhbm9ueW1vdXMifSx7bmFtZToidXNlLWNyZWRlbnRpYWxzIn1dfSx7bmFtZToic2IiLHZhbHVlczpbe25hbWU6ImFsbG93LWZvcm1zIn0se25hbWU6ImFsbG93LW1vZGFscyJ9LHtuYW1lOiJhbGxvdy1wb2ludGVyLWxvY2sifSx7bmFtZToiYWxsb3ctcG9wdXBzIn0se25hbWU6ImFsbG93LXBvcHVwcy10by1lc2NhcGUtc2FuZGJveCJ9LHtuYW1lOiJhbGxvdy1zYW1lLW9yaWdpbiJ9LHtuYW1lOiJhbGxvdy1zY3JpcHRzIn0se25hbWU6ImFsbG93LXRvcC1uYXZpZ2F0aW9uIn1dfSx7bmFtZToidHJpc3RhdGUiLHZhbHVlczpbe25hbWU6InRydWUifSx7bmFtZToiZmFsc2UifSx7bmFtZToibWl4ZWQifSx7bmFtZToidW5kZWZpbmVkIn1dfSx7bmFtZToiaW5wdXRhdXRvY29tcGxldGUiLHZhbHVlczpbe25hbWU6ImFkZGl0aW9uYWwtbmFtZSJ9LHtuYW1lOiJhZGRyZXNzLWxldmVsMSJ9LHtuYW1lOiJhZGRyZXNzLWxldmVsMiJ9LHtuYW1lOiJhZGRyZXNzLWxldmVsMyJ9LHtuYW1lOiJhZGRyZXNzLWxldmVsNCJ9LHtuYW1lOiJhZGRyZXNzLWxpbmUxIn0se25hbWU6ImFkZHJlc3MtbGluZTIifSx7bmFtZToiYWRkcmVzcy1saW5lMyJ9LHtuYW1lOiJiZGF5In0se25hbWU6ImJkYXkteWVhciJ9LHtuYW1lOiJiZGF5LWRheSJ9LHtuYW1lOiJiZGF5LW1vbnRoIn0se25hbWU6ImJpbGxpbmcifSx7bmFtZToiY2MtYWRkaXRpb25hbC1uYW1lIn0se25hbWU6ImNjLWNzYyJ9LHtuYW1lOiJjYy1leHAifSx7bmFtZToiY2MtZXhwLW1vbnRoIn0se25hbWU6ImNjLWV4cC15ZWFyIn0se25hbWU6ImNjLWZhbWlseS1uYW1lIn0se25hbWU6ImNjLWdpdmVuLW5hbWUifSx7bmFtZToiY2MtbmFtZSJ9LHtuYW1lOiJjYy1udW1iZXIifSx7bmFtZToiY2MtdHlwZSJ9LHtuYW1lOiJjb3VudHJ5In0se25hbWU6ImNvdW50cnktbmFtZSJ9LHtuYW1lOiJjdXJyZW50LXBhc3N3b3JkIn0se25hbWU6ImVtYWlsIn0se25hbWU6ImZhbWlseS1uYW1lIn0se25hbWU6ImZheCJ9LHtuYW1lOiJnaXZlbi1uYW1lIn0se25hbWU6ImhvbWUifSx7bmFtZToiaG9ub3JpZmljLXByZWZpeCJ9LHtuYW1lOiJob25vcmlmaWMtc3VmZml4In0se25hbWU6ImltcHAifSx7bmFtZToibGFuZ3VhZ2UifSx7bmFtZToibW9iaWxlIn0se25hbWU6Im5hbWUifSx7bmFtZToibmV3LXBhc3N3b3JkIn0se25hbWU6Im5pY2tuYW1lIn0se25hbWU6Im9yZ2FuaXphdGlvbiJ9LHtuYW1lOiJvcmdhbml6YXRpb24tdGl0bGUifSx7bmFtZToicGFnZXIifSx7bmFtZToicGhvdG8ifSx7bmFtZToicG9zdGFsLWNvZGUifSx7bmFtZToic2V4In0se25hbWU6InNoaXBwaW5nIn0se25hbWU6InN0cmVldC1hZGRyZXNzIn0se25hbWU6InRlbC1hcmVhLWNvZGUifSx7bmFtZToidGVsIn0se25hbWU6InRlbC1jb3VudHJ5LWNvZGUifSx7bmFtZToidGVsLWV4dGVuc2lvbiJ9LHtuYW1lOiJ0ZWwtbG9jYWwifSx7bmFtZToidGVsLWxvY2FsLXByZWZpeCJ9LHtuYW1lOiJ0ZWwtbG9jYWwtc3VmZml4In0se25hbWU6InRlbC1uYXRpb25hbCJ9LHtuYW1lOiJ0cmFuc2FjdGlvbi1hbW91bnQifSx7bmFtZToidHJhbnNhY3Rpb24tY3VycmVuY3kifSx7bmFtZToidXJsIn0se25hbWU6InVzZXJuYW1lIn0se25hbWU6IndvcmsifV19LHtuYW1lOiJhdXRvY29tcGxldGUiLHZhbHVlczpbe25hbWU6ImlubGluZSJ9LHtuYW1lOiJsaXN0In0se25hbWU6ImJvdGgifSx7bmFtZToibm9uZSJ9XX0se25hbWU6ImN1cnJlbnQiLHZhbHVlczpbe25hbWU6InBhZ2UifSx7bmFtZToic3RlcCJ9LHtuYW1lOiJsb2NhdGlvbiJ9LHtuYW1lOiJkYXRlIn0se25hbWU6InRpbWUifSx7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9XX0se25hbWU6ImRyb3BlZmZlY3QiLHZhbHVlczpbe25hbWU6ImNvcHkifSx7bmFtZToibW92ZSJ9LHtuYW1lOiJsaW5rIn0se25hbWU6ImV4ZWN1dGUifSx7bmFtZToicG9wdXAifSx7bmFtZToibm9uZSJ9XX0se25hbWU6ImludmFsaWQiLHZhbHVlczpbe25hbWU6ImdyYW1tYXIifSx7bmFtZToiZmFsc2UifSx7bmFtZToic3BlbGxpbmcifSx7bmFtZToidHJ1ZSJ9XX0se25hbWU6ImxpdmUiLHZhbHVlczpbe25hbWU6Im9mZiJ9LHtuYW1lOiJwb2xpdGUifSx7bmFtZToiYXNzZXJ0aXZlIn1dfSx7bmFtZToib3JpZW50YXRpb24iLHZhbHVlczpbe25hbWU6InZlcnRpY2FsIn0se25hbWU6Imhvcml6b250YWwifSx7bmFtZToidW5kZWZpbmVkIn1dfSx7bmFtZToicmVsZXZhbnQiLHZhbHVlczpbe25hbWU6ImFkZGl0aW9ucyJ9LHtuYW1lOiJyZW1vdmFscyJ9LHtuYW1lOiJ0ZXh0In0se25hbWU6ImFsbCJ9LHtuYW1lOiJhZGRpdGlvbnMgdGV4dCJ9XX0se25hbWU6InNvcnQiLHZhbHVlczpbe25hbWU6ImFzY2VuZGluZyJ9LHtuYW1lOiJkZXNjZW5kaW5nIn0se25hbWU6Im5vbmUifSx7bmFtZToib3RoZXIifV19LHtuYW1lOiJyb2xlcyIsdmFsdWVzOlt7bmFtZToiYWxlcnQifSx7bmFtZToiYWxlcnRkaWFsb2cifSx7bmFtZToiYnV0dG9uIn0se25hbWU6ImNoZWNrYm94In0se25hbWU6ImRpYWxvZyJ9LHtuYW1lOiJncmlkY2VsbCJ9LHtuYW1lOiJsaW5rIn0se25hbWU6ImxvZyJ9LHtuYW1lOiJtYXJxdWVlIn0se25hbWU6Im1lbnVpdGVtIn0se25hbWU6Im1lbnVpdGVtY2hlY2tib3gifSx7bmFtZToibWVudWl0ZW1yYWRpbyJ9LHtuYW1lOiJvcHRpb24ifSx7bmFtZToicHJvZ3Jlc3NiYXIifSx7bmFtZToicmFkaW8ifSx7bmFtZToic2Nyb2xsYmFyIn0se25hbWU6InNlYXJjaGJveCJ9LHtuYW1lOiJzbGlkZXIifSx7bmFtZToic3BpbmJ1dHRvbiJ9LHtuYW1lOiJzdGF0dXMifSx7bmFtZToic3dpdGNoIn0se25hbWU6InRhYiJ9LHtuYW1lOiJ0YWJwYW5lbCJ9LHtuYW1lOiJ0ZXh0Ym94In0se25hbWU6InRpbWVyIn0se25hbWU6InRvb2x0aXAifSx7bmFtZToidHJlZWl0ZW0ifSx7bmFtZToiY29tYm9ib3gifSx7bmFtZToiZ3JpZCJ9LHtuYW1lOiJsaXN0Ym94In0se25hbWU6Im1lbnUifSx7bmFtZToibWVudWJhciJ9LHtuYW1lOiJyYWRpb2dyb3VwIn0se25hbWU6InRhYmxpc3QifSx7bmFtZToidHJlZSJ9LHtuYW1lOiJ0cmVlZ3JpZCJ9LHtuYW1lOiJhcHBsaWNhdGlvbiJ9LHtuYW1lOiJhcnRpY2xlIn0se25hbWU6ImNlbGwifSx7bmFtZToiY29sdW1uaGVhZGVyIn0se25hbWU6ImRlZmluaXRpb24ifSx7bmFtZToiZGlyZWN0b3J5In0se25hbWU6ImRvY3VtZW50In0se25hbWU6ImZlZWQifSx7bmFtZToiZmlndXJlIn0se25hbWU6Imdyb3VwIn0se25hbWU6ImhlYWRpbmcifSx7bmFtZToiaW1nIn0se25hbWU6Imxpc3QifSx7bmFtZToibGlzdGl0ZW0ifSx7bmFtZToibWF0aCJ9LHtuYW1lOiJub25lIn0se25hbWU6Im5vdGUifSx7bmFtZToicHJlc2VudGF0aW9uIn0se25hbWU6InJlZ2lvbiJ9LHtuYW1lOiJyb3cifSx7bmFtZToicm93Z3JvdXAifSx7bmFtZToicm93aGVhZGVyIn0se25hbWU6InNlcGFyYXRvciJ9LHtuYW1lOiJ0YWJsZSJ9LHtuYW1lOiJ0ZXJtIn0se25hbWU6InRleHQifSx7bmFtZToidG9vbGJhciJ9LHtuYW1lOiJiYW5uZXIifSx7bmFtZToiY29tcGxlbWVudGFyeSJ9LHtuYW1lOiJjb250ZW50aW5mbyJ9LHtuYW1lOiJmb3JtIn0se25hbWU6Im1haW4ifSx7bmFtZToibmF2aWdhdGlvbiJ9LHtuYW1lOiJyZWdpb24ifSx7bmFtZToic2VhcmNoIn0se25hbWU6ImRvYy1hYnN0cmFjdCJ9LHtuYW1lOiJkb2MtYWNrbm93bGVkZ21lbnRzIn0se25hbWU6ImRvYy1hZnRlcndvcmQifSx7bmFtZToiZG9jLWFwcGVuZGl4In0se25hbWU6ImRvYy1iYWNrbGluayJ9LHtuYW1lOiJkb2MtYmlibGlvZW50cnkifSx7bmFtZToiZG9jLWJpYmxpb2dyYXBoeSJ9LHtuYW1lOiJkb2MtYmlibGlvcmVmIn0se25hbWU6ImRvYy1jaGFwdGVyIn0se25hbWU6ImRvYy1jb2xvcGhvbiJ9LHtuYW1lOiJkb2MtY29uY2x1c2lvbiJ9LHtuYW1lOiJkb2MtY292ZXIifSx7bmFtZToiZG9jLWNyZWRpdCJ9LHtuYW1lOiJkb2MtY3JlZGl0cyJ9LHtuYW1lOiJkb2MtZGVkaWNhdGlvbiJ9LHtuYW1lOiJkb2MtZW5kbm90ZSJ9LHtuYW1lOiJkb2MtZW5kbm90ZXMifSx7bmFtZToiZG9jLWVwaWdyYXBoIn0se25hbWU6ImRvYy1lcGlsb2d1ZSJ9LHtuYW1lOiJkb2MtZXJyYXRhIn0se25hbWU6ImRvYy1leGFtcGxlIn0se25hbWU6ImRvYy1mb290bm90ZSJ9LHtuYW1lOiJkb2MtZm9yZXdvcmQifSx7bmFtZToiZG9jLWdsb3NzYXJ5In0se25hbWU6ImRvYy1nbG9zc3JlZiJ9LHtuYW1lOiJkb2MtaW5kZXgifSx7bmFtZToiZG9jLWludHJvZHVjdGlvbiJ9LHtuYW1lOiJkb2Mtbm90ZXJlZiJ9LHtuYW1lOiJkb2Mtbm90aWNlIn0se25hbWU6ImRvYy1wYWdlYnJlYWsifSx7bmFtZToiZG9jLXBhZ2VsaXN0In0se25hbWU6ImRvYy1wYXJ0In0se25hbWU6ImRvYy1wcmVmYWNlIn0se25hbWU6ImRvYy1wcm9sb2d1ZSJ9LHtuYW1lOiJkb2MtcHVsbHF1b3RlIn0se25hbWU6ImRvYy1xbmEifSx7bmFtZToiZG9jLXN1YnRpdGxlIn0se25hbWU6ImRvYy10aXAifSx7bmFtZToiZG9jLXRvYyJ9XX0se25hbWU6Im1ldGFuYW1lcyIsdmFsdWVzOlt7bmFtZToiYXBwbGljYXRpb24tbmFtZSJ9LHtuYW1lOiJhdXRob3IifSx7bmFtZToiZGVzY3JpcHRpb24ifSx7bmFtZToiZm9ybWF0LWRldGVjdGlvbiJ9LHtuYW1lOiJnZW5lcmF0b3IifSx7bmFtZToia2V5d29yZHMifSx7bmFtZToicHVibGlzaGVyIn0se25hbWU6InJlZmVycmVyIn0se25hbWU6InJvYm90cyJ9LHtuYW1lOiJ0aGVtZS1jb2xvciJ9LHtuYW1lOiJ2aWV3cG9ydCJ9XX0se25hbWU6Imhhc3BvcHVwIix2YWx1ZXM6W3tuYW1lOiJmYWxzZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiKGRlZmF1bHQpIEluZGljYXRlcyB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgcG9wdXAuIn19LHtuYW1lOiJ0cnVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIHBvcHVwIGlzIGEgbWVudS4ifX0se25hbWU6Im1lbnUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSBtZW51LiJ9fSx7bmFtZToibGlzdGJveCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBwb3B1cCBpcyBhIGxpc3Rib3guIn19LHtuYW1lOiJ0cmVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIHBvcHVwIGlzIGEgdHJlZS4ifX0se25hbWU6ImdyaWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSBncmlkLiJ9fSx7bmFtZToiZGlhbG9nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIHBvcHVwIGlzIGEgZGlhbG9nLiJ9fV19XX0sUG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuZGF0YVByb3ZpZGVycz1bXSx0aGlzLnNldERhdGFQcm92aWRlcnMoITEhPT1lLnVzZURlZmF1bHREYXRhUHJvdmlkZXIsZS5jdXN0b21EYXRhUHJvdmlkZXJzfHxbXSl9cmV0dXJuIGUucHJvdG90eXBlLnNldERhdGFQcm92aWRlcnM9ZnVuY3Rpb24oZSx0KXt2YXIgbjt0aGlzLmRhdGFQcm92aWRlcnM9W10sZSYmdGhpcy5kYXRhUHJvdmlkZXJzLnB1c2gobmV3IEthKCJodG1sNSIsT28pKSwobj10aGlzLmRhdGFQcm92aWRlcnMpLnB1c2guYXBwbHkobix0KX0sZS5wcm90b3R5cGUuZ2V0RGF0YVByb3ZpZGVycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGFQcm92aWRlcnN9LGV9KCkscW89e307ZnVuY3Rpb24gRm8oZSx0KXtyZXR1cm4gbmV3IEthKGUsdCl9c2VsZi5vbm1lc3NhZ2U9KCk9PntZbigoKGUsdCk9Pm5ldyBjbGFzc3tfY3R4O19sYW5ndWFnZVNlcnZpY2U7X2xhbmd1YWdlU2V0dGluZ3M7X2xhbmd1YWdlSWQ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl9jdHg9ZSx0aGlzLl9sYW5ndWFnZVNldHRpbmdzPXQubGFuZ3VhZ2VTZXR0aW5ncyx0aGlzLl9sYW5ndWFnZUlkPXQubGFuZ3VhZ2VJZDtjb25zdCBuPXRoaXMuX2xhbmd1YWdlU2V0dGluZ3MuZGF0YSxyPW4/LnVzZURlZmF1bHREYXRhUHJvdmlkZXIsaT1bXTtpZihuPy5kYXRhUHJvdmlkZXJzKWZvcihjb25zdCBlIGluIG4uZGF0YVByb3ZpZGVycylpLnB1c2goRm8oZSxuLmRhdGFQcm92aWRlcnNbZV0pKTt0aGlzLl9sYW5ndWFnZVNlcnZpY2U9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9cW8pO3ZhciB0PW5ldyBQbyhlKSxuPW5ldyBobyhlLHQpLHI9bmV3IHJvKGUsdCk7cmV0dXJue3NldERhdGFQcm92aWRlcnM6dC5zZXREYXRhUHJvdmlkZXJzLmJpbmQodCksY3JlYXRlU2Nhbm5lcjpFYSxwYXJzZUhUTUxEb2N1bWVudDpmdW5jdGlvbihlKXtyZXR1cm4gTmEoZS5nZXRUZXh0KCkpfSxkb0NvbXBsZXRlOnIuZG9Db21wbGV0ZS5iaW5kKHIpLGRvQ29tcGxldGUyOnIuZG9Db21wbGV0ZTIuYmluZChyKSxzZXRDb21wbGV0aW9uUGFydGljaXBhbnRzOnIuc2V0Q29tcGxldGlvblBhcnRpY2lwYW50cy5iaW5kKHIpLGRvSG92ZXI6bi5kb0hvdmVyLmJpbmQobiksZm9ybWF0OmdvLGZpbmREb2N1bWVudEhpZ2hsaWdodHM6TG8sZmluZERvY3VtZW50TGlua3M6eG8sZmluZERvY3VtZW50U3ltYm9sczpSbyxnZXRGb2xkaW5nUmFuZ2VzOnpvLGdldFNlbGVjdGlvblJhbmdlczpEbyxkb1F1b3RlQ29tcGxldGU6ci5kb1F1b3RlQ29tcGxldGUuYmluZChyKSxkb1RhZ0NvbXBsZXRlOnIuZG9UYWdDb21wbGV0ZS5iaW5kKHIpLGRvUmVuYW1lOk5vLGZpbmRNYXRjaGluZ1RhZ1Bvc2l0aW9uOlVvLGZpbmRPblR5cGVSZW5hbWVSYW5nZXM6SG8sZmluZExpbmtlZEVkaXRpbmdSYW5nZXM6SG99fSh7dXNlRGVmYXVsdERhdGFQcm92aWRlcjpyLGN1c3RvbURhdGFQcm92aWRlcnM6aX0pfWFzeW5jIGRvQ29tcGxldGUoZSx0KXtsZXQgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuIG51bGw7bGV0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KG4pO3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvQ29tcGxldGUobix0LHIsdGhpcy5fbGFuZ3VhZ2VTZXR0aW5ncyYmdGhpcy5fbGFuZ3VhZ2VTZXR0aW5ncy5zdWdnZXN0KSl9YXN5bmMgZm9ybWF0KGUsdCxuKXtsZXQgcj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXIpcmV0dXJuW107bGV0IGk9ey4uLnRoaXMuX2xhbmd1YWdlU2V0dGluZ3MuZm9ybWF0LC4uLm59LGE9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZvcm1hdChyLHQsaSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShhKX1hc3luYyBkb0hvdmVyKGUsdCl7bGV0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybiBudWxsO2xldCByPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZUhUTUxEb2N1bWVudChuKSxpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5kb0hvdmVyKG4sdCxyKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpfWFzeW5jIGZpbmREb2N1bWVudEhpZ2hsaWdodHMoZSx0KXtsZXQgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuW107bGV0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmREb2N1bWVudEhpZ2hsaWdodHMobix0LHIpO3JldHVybiBQcm9taXNlLnJlc29sdmUoaSl9YXN5bmMgZmluZERvY3VtZW50TGlua3MoZSl7bGV0IHQ9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCF0KXJldHVybltdO2xldCBuPXRoaXMuX2xhbmd1YWdlU2VydmljZS5maW5kRG9jdW1lbnRMaW5rcyh0LG51bGwpO3JldHVybiBQcm9taXNlLnJlc29sdmUobil9YXN5bmMgZmluZERvY3VtZW50U3ltYm9scyhlKXtsZXQgdD10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXQpcmV0dXJuW107bGV0IG49dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KHQpLHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmREb2N1bWVudFN5bWJvbHModCxuKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIpfWFzeW5jIGdldEZvbGRpbmdSYW5nZXMoZSx0KXtsZXQgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuW107bGV0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmdldEZvbGRpbmdSYW5nZXMobix0KTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIpfWFzeW5jIGdldFNlbGVjdGlvblJhbmdlcyhlLHQpe2xldCBuPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighbilyZXR1cm5bXTtsZXQgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZ2V0U2VsZWN0aW9uUmFuZ2VzKG4sdCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyKX1hc3luYyBkb1JlbmFtZShlLHQsbil7bGV0IHI9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFyKXJldHVybiBudWxsO2xldCBpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZUhUTUxEb2N1bWVudChyKSxhPXRoaXMuX2xhbmd1YWdlU2VydmljZS5kb1JlbmFtZShyLHQsbixpKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGEpfV9nZXRUZXh0RG9jdW1lbnQoZSl7bGV0IHQ9dGhpcy5fY3R4LmdldE1pcnJvck1vZGVscygpO2ZvcihsZXQgbiBvZiB0KWlmKG4udXJpLnRvU3RyaW5nKCk9PT1lKXJldHVybiBRaS5jcmVhdGUoZSx0aGlzLl9sYW5ndWFnZUlkLG4udmVyc2lvbixuLmdldFZhbHVlKCkpO3JldHVybiBudWxsfX0oZSx0KSkpfX0oKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aHRtbC53b3JrZXIuanMubWFwCgo=', null, false);
3
+ var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgZT1uZXcgY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmxpc3RlbmVycz1bXSx0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXI9ZnVuY3Rpb24oZSl7c2V0VGltZW91dCgoKCk9PntpZihlLnN0YWNrKXtpZihhLmlzRXJyb3JOb1RlbGVtZXRyeShlKSl0aHJvdyBuZXcgYShlLm1lc3NhZ2UrIlxuXG4iK2Uuc3RhY2spO3Rocm93IG5ldyBFcnJvcihlLm1lc3NhZ2UrIlxuXG4iK2Uuc3RhY2spfXRocm93IGV9KSwwKX19ZW1pdChlKXt0aGlzLmxpc3RlbmVycy5mb3JFYWNoKCh0PT57dChlKX0pKX1vblVuZXhwZWN0ZWRFcnJvcihlKXt0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoZSksdGhpcy5lbWl0KGUpfW9uVW5leHBlY3RlZEV4dGVybmFsRXJyb3IoZSl7dGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpfX07ZnVuY3Rpb24gdCh0KXsoZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIHIpcmV0dXJuITA7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvciYmZS5uYW1lPT09aSYmZS5tZXNzYWdlPT09aX0pKHQpfHxlLm9uVW5leHBlY3RlZEVycm9yKHQpfWZ1bmN0aW9uIG4oZSl7aWYoZSBpbnN0YW5jZW9mIEVycm9yKXtjb25zdHtuYW1lOnQsbWVzc2FnZTpufT1lO3JldHVybnskaXNFcnJvcjohMCxuYW1lOnQsbWVzc2FnZTpuLHN0YWNrOmUuc3RhY2t0cmFjZXx8ZS5zdGFjayxub1RlbGVtZXRyeTphLmlzRXJyb3JOb1RlbGVtZXRyeShlKX19cmV0dXJuIGV9Y29uc3QgaT0iQ2FuY2VsZWQiO2NsYXNzIHIgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKGkpLHRoaXMubmFtZT10aGlzLm1lc3NhZ2V9fWNsYXNzIGEgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLm5hbWU9IkNvZGVFeHBlY3RlZEVycm9yIn1zdGF0aWMgZnJvbUVycm9yKGUpe2lmKGUgaW5zdGFuY2VvZiBhKXJldHVybiBlO2NvbnN0IHQ9bmV3IGE7cmV0dXJuIHQubWVzc2FnZT1lLm1lc3NhZ2UsdC5zdGFjaz1lLnN0YWNrLHR9c3RhdGljIGlzRXJyb3JOb1RlbGVtZXRyeShlKXtyZXR1cm4iQ29kZUV4cGVjdGVkRXJyb3IiPT09ZS5uYW1lfX1jbGFzcyBvIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoZXx8IkFuIHVuZXhwZWN0ZWQgYnVnIG9jY3VycmVkLiIpLE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLG8ucHJvdG90eXBlKX19ZnVuY3Rpb24gcyhlKXtjb25zdCB0PXRoaXM7bGV0IG4saT0hMTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gaXx8KGk9ITAsbj1lLmFwcGx5KHQsYXJndW1lbnRzKSksbn19dmFyIGw7ZnVuY3Rpb24gYyhlKXtpZihsLmlzKGUpKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGUpaWYobil0cnl7bi5kaXNwb3NlKCl9Y2F0Y2goZSl7dC5wdXNoKGUpfWlmKDE9PT10Lmxlbmd0aCl0aHJvdyB0WzBdO2lmKHQubGVuZ3RoPjEpdGhyb3cgbmV3IEFnZ3JlZ2F0ZUVycm9yKHQsIkVuY291bnRlcmVkIGVycm9ycyB3aGlsZSBkaXNwb3Npbmcgb2Ygc3RvcmUiKTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9bXTplfWlmKGUpcmV0dXJuIGUuZGlzcG9zZSgpLGV9ZnVuY3Rpb24gaChlKXtyZXR1cm57ZGlzcG9zZTpzKCgoKT0+e2UoKX0pKX19IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbU3ltYm9sLml0ZXJhdG9yXX1lLmlzPXQ7Y29uc3Qgbj1PYmplY3QuZnJlZXplKFtdKTtmdW5jdGlvbippKGUpe3lpZWxkIGV9ZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBufSxlLnNpbmdsZT1pLGUud3JhcD1mdW5jdGlvbihlKXtyZXR1cm4gdChlKT9lOmkoZSl9LGUuZnJvbT1mdW5jdGlvbihlKXtyZXR1cm4gZXx8bn0sZS5pc0VtcHR5PWZ1bmN0aW9uKGUpe3JldHVybiFlfHwhMD09PWVbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQoKS5kb25lfSxlLmZpcnN0PWZ1bmN0aW9uKGUpe3JldHVybiBlW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KCkudmFsdWV9LGUuc29tZT1mdW5jdGlvbihlLHQpe2Zvcihjb25zdCBuIG9mIGUpaWYodChuKSlyZXR1cm4hMDtyZXR1cm4hMX0sZS5maW5kPWZ1bmN0aW9uKGUsdCl7Zm9yKGNvbnN0IG4gb2YgZSlpZih0KG4pKXJldHVybiBufSxlLmZpbHRlcj1mdW5jdGlvbiooZSx0KXtmb3IoY29uc3QgbiBvZiBlKXQobikmJih5aWVsZCBuKX0sZS5tYXA9ZnVuY3Rpb24qKGUsdCl7bGV0IG49MDtmb3IoY29uc3QgaSBvZiBlKXlpZWxkIHQoaSxuKyspfSxlLmNvbmNhdD1mdW5jdGlvbiooLi4uZSl7Zm9yKGNvbnN0IHQgb2YgZSlmb3IoY29uc3QgZSBvZiB0KXlpZWxkIGV9LGUucmVkdWNlPWZ1bmN0aW9uKGUsdCxuKXtsZXQgaT1uO2Zvcihjb25zdCBuIG9mIGUpaT10KGksbik7cmV0dXJuIGl9LGUuc2xpY2U9ZnVuY3Rpb24qKGUsdCxuPWUubGVuZ3RoKXtmb3IodDwwJiYodCs9ZS5sZW5ndGgpLG48MD9uKz1lLmxlbmd0aDpuPmUubGVuZ3RoJiYobj1lLmxlbmd0aCk7dDxuO3QrKyl5aWVsZCBlW3RdfSxlLmNvbnN1bWU9ZnVuY3Rpb24odCxuPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSl7Y29uc3QgaT1bXTtpZigwPT09bilyZXR1cm5baSx0XTtjb25zdCByPXRbU3ltYm9sLml0ZXJhdG9yXSgpO2ZvcihsZXQgdD0wO3Q8bjt0Kyspe2NvbnN0IHQ9ci5uZXh0KCk7aWYodC5kb25lKXJldHVybltpLGUuZW1wdHkoKV07aS5wdXNoKHQudmFsdWUpfXJldHVybltpLHtbU3ltYm9sLml0ZXJhdG9yXTooKT0+cn1dfX0obHx8KGw9e30pKTtjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5fdG9EaXNwb3NlPW5ldyBTZXQsdGhpcy5faXNEaXNwb3NlZD0hMX1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZHx8KHRoaXMuX2lzRGlzcG9zZWQ9ITAsdGhpcy5jbGVhcigpKX1nZXQgaXNEaXNwb3NlZCgpe3JldHVybiB0aGlzLl9pc0Rpc3Bvc2VkfWNsZWFyKCl7aWYoMCE9PXRoaXMuX3RvRGlzcG9zZS5zaXplKXRyeXtjKHRoaXMuX3RvRGlzcG9zZSl9ZmluYWxseXt0aGlzLl90b0Rpc3Bvc2UuY2xlYXIoKX19YWRkKGUpe2lmKCFlKXJldHVybiBlO2lmKGU9PT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGEgZGlzcG9zYWJsZSBvbiBpdHNlbGYhIik7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWQ/ZC5ESVNBQkxFX0RJU1BPU0VEX1dBUk5JTkd8fGNvbnNvbGUud2FybihuZXcgRXJyb3IoIlRyeWluZyB0byBhZGQgYSBkaXNwb3NhYmxlIHRvIGEgRGlzcG9zYWJsZVN0b3JlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkaXNwb3NlZCBvZi4gVGhlIGFkZGVkIG9iamVjdCB3aWxsIGJlIGxlYWtlZCEiKS5zdGFjayk6dGhpcy5fdG9EaXNwb3NlLmFkZChlKSxlfX1kLkRJU0FCTEVfRElTUE9TRURfV0FSTklORz0hMTtjbGFzcyB1e2NvbnN0cnVjdG9yKCl7dGhpcy5fc3RvcmU9bmV3IGQsdGhpcy5fc3RvcmV9ZGlzcG9zZSgpe3RoaXMuX3N0b3JlLmRpc3Bvc2UoKX1fcmVnaXN0ZXIoZSl7aWYoZT09PXRoaXMpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVnaXN0ZXIgYSBkaXNwb3NhYmxlIG9uIGl0c2VsZiEiKTtyZXR1cm4gdGhpcy5fc3RvcmUuYWRkKGUpfX11Lk5vbmU9T2JqZWN0LmZyZWV6ZSh7ZGlzcG9zZSgpe319KTtjbGFzcyBte2NvbnN0cnVjdG9yKCl7dGhpcy5kaXNwb3NlPSgpPT57fSx0aGlzLnVuc2V0PSgpPT57fSx0aGlzLmlzc2V0PSgpPT4hMX1zZXQoZSl7bGV0IHQ9ZTtyZXR1cm4gdGhpcy51bnNldD0oKT0+dD12b2lkIDAsdGhpcy5pc3NldD0oKT0+dm9pZCAwIT09dCx0aGlzLmRpc3Bvc2U9KCk9Pnt0JiYodCgpLHQ9dm9pZCAwKX0sdGhpc319bGV0IHA9Y2xhc3MgZXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmVsZW1lbnQ9dCx0aGlzLm5leHQ9ZS5VbmRlZmluZWQsdGhpcy5wcmV2PWUuVW5kZWZpbmVkfX07cC5VbmRlZmluZWQ9bmV3IHAodm9pZCAwKTtjbGFzcyBme2NvbnN0cnVjdG9yKCl7dGhpcy5fZmlyc3Q9cC5VbmRlZmluZWQsdGhpcy5fbGFzdD1wLlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1pc0VtcHR5KCl7cmV0dXJuIHRoaXMuX2ZpcnN0PT09cC5VbmRlZmluZWR9Y2xlYXIoKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1wLlVuZGVmaW5lZDspe2NvbnN0IHQ9ZS5uZXh0O2UucHJldj1wLlVuZGVmaW5lZCxlLm5leHQ9cC5VbmRlZmluZWQsZT10fXRoaXMuX2ZpcnN0PXAuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9cC5VbmRlZmluZWQsdGhpcy5fc2l6ZT0wfXVuc2hpZnQoZSl7cmV0dXJuIHRoaXMuX2luc2VydChlLCExKX1wdXNoKGUpe3JldHVybiB0aGlzLl9pbnNlcnQoZSwhMCl9X2luc2VydChlLHQpe2NvbnN0IG49bmV3IHAoZSk7aWYodGhpcy5fZmlyc3Q9PT1wLlVuZGVmaW5lZCl0aGlzLl9maXJzdD1uLHRoaXMuX2xhc3Q9bjtlbHNlIGlmKHQpe2NvbnN0IGU9dGhpcy5fbGFzdDt0aGlzLl9sYXN0PW4sbi5wcmV2PWUsZS5uZXh0PW59ZWxzZXtjb25zdCBlPXRoaXMuX2ZpcnN0O3RoaXMuX2ZpcnN0PW4sbi5uZXh0PWUsZS5wcmV2PW59dGhpcy5fc2l6ZSs9MTtsZXQgaT0hMTtyZXR1cm4oKT0+e2l8fChpPSEwLHRoaXMuX3JlbW92ZShuKSl9fXNoaWZ0KCl7aWYodGhpcy5fZmlyc3QhPT1wLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9maXJzdC5lbGVtZW50O3JldHVybiB0aGlzLl9yZW1vdmUodGhpcy5fZmlyc3QpLGV9fXBvcCgpe2lmKHRoaXMuX2xhc3QhPT1wLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9sYXN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9sYXN0KSxlfX1fcmVtb3ZlKGUpe2lmKGUucHJldiE9PXAuVW5kZWZpbmVkJiZlLm5leHQhPT1wLlVuZGVmaW5lZCl7Y29uc3QgdD1lLnByZXY7dC5uZXh0PWUubmV4dCxlLm5leHQucHJldj10fWVsc2UgZS5wcmV2PT09cC5VbmRlZmluZWQmJmUubmV4dD09PXAuVW5kZWZpbmVkPyh0aGlzLl9maXJzdD1wLlVuZGVmaW5lZCx0aGlzLl9sYXN0PXAuVW5kZWZpbmVkKTplLm5leHQ9PT1wLlVuZGVmaW5lZD8odGhpcy5fbGFzdD10aGlzLl9sYXN0LnByZXYsdGhpcy5fbGFzdC5uZXh0PXAuVW5kZWZpbmVkKTplLnByZXY9PT1wLlVuZGVmaW5lZCYmKHRoaXMuX2ZpcnN0PXRoaXMuX2ZpcnN0Lm5leHQsdGhpcy5fZmlyc3QucHJldj1wLlVuZGVmaW5lZCk7dGhpcy5fc2l6ZS09MX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1wLlVuZGVmaW5lZDspeWllbGQgZS5lbGVtZW50LGU9ZS5uZXh0fX1sZXQgZz0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5sb2NhdGlvbiYmZG9jdW1lbnQubG9jYXRpb24uaGFzaC5pbmRleE9mKCJwc2V1ZG89dHJ1ZSIpPj0wO3ZhciBiO2NvbnN0IF89ImVuIjtsZXQgdix3LHksVD0hMSxrPSExLFM9ITEseD0hMSxMPV8sQz1fO2NvbnN0IEU9Im9iamVjdCI9PXR5cGVvZiBzZWxmP3NlbGY6Im9iamVjdCI9PXR5cGVvZiBnbG9iYWw/Z2xvYmFsOnt9O2xldCBBO3ZvaWQgMCE9PUUudnNjb2RlJiZ2b2lkIDAhPT1FLnZzY29kZS5wcm9jZXNzP0E9RS52c2NvZGUucHJvY2VzczoidW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJihBPXByb2Nlc3MpO2NvbnN0IE09InN0cmluZyI9PXR5cGVvZihudWxsPT09KGI9bnVsbD09QT92b2lkIDA6QS52ZXJzaW9ucyl8fHZvaWQgMD09PWI/dm9pZCAwOmIuZWxlY3Ryb24pJiYicmVuZGVyZXIiPT09KG51bGw9PUE/dm9pZCAwOkEudHlwZSk7aWYoIm9iamVjdCIhPXR5cGVvZiBuYXZpZ2F0b3J8fE0paWYoIm9iamVjdCI9PXR5cGVvZiBBKXtUPSJ3aW4zMiI9PT1BLnBsYXRmb3JtLGs9ImRhcndpbiI9PT1BLnBsYXRmb3JtLFM9ImxpbnV4Ij09PUEucGxhdGZvcm0sUyYmQS5lbnYuU05BUCYmQS5lbnYuU05BUF9SRVZJU0lPTixBLmVudi5DSXx8QS5lbnYuQlVJTERfQVJUSUZBQ1RTVEFHSU5HRElSRUNUT1JZLHY9XyxMPV87Y29uc3QgZT1BLmVudi5WU0NPREVfTkxTX0NPTkZJRztpZihlKXRyeXtjb25zdCB0PUpTT04ucGFyc2UoZSksbj10LmF2YWlsYWJsZUxhbmd1YWdlc1siKiJdO3Y9dC5sb2NhbGUsQz10Lm9zTG9jYWxlLEw9bnx8Xyx3PXQuX3RyYW5zbGF0aW9uc0NvbmZpZ0ZpbGV9Y2F0Y2goZSl7fX1lbHNlIGNvbnNvbGUuZXJyb3IoIlVuYWJsZSB0byByZXNvbHZlIHBsYXRmb3JtLiIpO2Vsc2UgeT1uYXZpZ2F0b3IudXNlckFnZW50LFQ9eS5pbmRleE9mKCJXaW5kb3dzIik+PTAsaz15LmluZGV4T2YoIk1hY2ludG9zaCIpPj0wLCh5LmluZGV4T2YoIk1hY2ludG9zaCIpPj0wfHx5LmluZGV4T2YoImlQYWQiKT49MHx8eS5pbmRleE9mKCJpUGhvbmUiKT49MCkmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzLFM9eS5pbmRleE9mKCJMaW51eCIpPj0wLG51bGw9PXl8fHkuaW5kZXhPZigiTW9iaSIpLHg9ITAsZnVuY3Rpb24oZSx0LC4uLm4peyFmdW5jdGlvbihlLHQpe2xldCBuO249MD09PXQubGVuZ3RoP2U6ZS5yZXBsYWNlKC9ceyhcZCspXH0vZywoKGUsbik9Pntjb25zdCBpPW5bMF0scj10W2ldO2xldCBhPWU7cmV0dXJuInN0cmluZyI9PXR5cGVvZiByP2E9cjoibnVtYmVyIiE9dHlwZW9mIHImJiJib29sZWFuIiE9dHlwZW9mIHImJm51bGwhPXJ8fChhPVN0cmluZyhyKSksYX0pKSxnJiYobj0i77y7IituLnJlcGxhY2UoL1thb3VlaV0vZywiJCYkJiIpKyLvvL0iKX0odCxuKX0oMCwiXyIpLHY9XyxMPXYsQz1uYXZpZ2F0b3IubGFuZ3VhZ2U7Y29uc3QgUj1ULE49azt4JiZFLmltcG9ydFNjcmlwdHM7Y29uc3QgST15LFU9ImZ1bmN0aW9uIj09dHlwZW9mIEUucG9zdE1lc3NhZ2UmJiFFLmltcG9ydFNjcmlwdHM7KCgpPT57aWYoVSl7Y29uc3QgZT1bXTtFLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCh0PT57aWYodC5kYXRhJiZ0LmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspZm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPWVbbl07aWYoaS5pZD09PXQuZGF0YS52c2NvZGVTY2hlZHVsZUFzeW5jV29yaylyZXR1cm4gZS5zcGxpY2UobiwxKSx2b2lkIGkuY2FsbGJhY2soKX19KSk7bGV0IHQ9MDtyZXR1cm4gbj0+e2NvbnN0IGk9Kyt0O2UucHVzaCh7aWQ6aSxjYWxsYmFjazpufSksRS5wb3N0TWVzc2FnZSh7dnNjb2RlU2NoZWR1bGVBc3luY1dvcms6aX0sIioiKX19fSkoKTtjb25zdCBIPSEhKEkmJkkuaW5kZXhPZigiQ2hyb21lIik+PTApO0kmJkkuaW5kZXhPZigiRmlyZWZveCIpLCFIJiZJJiZJLmluZGV4T2YoIlNhZmFyaSIpLEkmJkkuaW5kZXhPZigiRWRnLyIpLEkmJkkuaW5kZXhPZigiQW5kcm9pZCIpO2NvbnN0IHo9RS5wZXJmb3JtYW5jZSYmImZ1bmN0aW9uIj09dHlwZW9mIEUucGVyZm9ybWFuY2Uubm93O2NsYXNzIER7c3RhdGljIGNyZWF0ZShlPSEwKXtyZXR1cm4gbmV3IEQoZSl9Y29uc3RydWN0b3IoZSl7dGhpcy5faGlnaFJlc29sdXRpb249eiYmZSx0aGlzLl9zdGFydFRpbWU9dGhpcy5fbm93KCksdGhpcy5fc3RvcFRpbWU9LTF9c3RvcCgpe3RoaXMuX3N0b3BUaW1lPXRoaXMuX25vdygpfWVsYXBzZWQoKXtyZXR1cm4tMSE9PXRoaXMuX3N0b3BUaW1lP3RoaXMuX3N0b3BUaW1lLXRoaXMuX3N0YXJ0VGltZTp0aGlzLl9ub3coKS10aGlzLl9zdGFydFRpbWV9X25vdygpe3JldHVybiB0aGlzLl9oaWdoUmVzb2x1dGlvbj9FLnBlcmZvcm1hbmNlLm5vdygpOkRhdGUubm93KCl9fXZhciBXOyFmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3JldHVybih0LG49bnVsbCxpKT0+e2xldCByLGE9ITE7cmV0dXJuIHI9ZSgoZT0+e2lmKCFhKXJldHVybiByP3IuZGlzcG9zZSgpOmE9ITAsdC5jYWxsKG4sZSl9KSxudWxsLGkpLGEmJnIuZGlzcG9zZSgpLHJ9fWZ1bmN0aW9uIG4oZSx0LG4pe3JldHVybiBvKCgobixpPW51bGwscik9PmUoKGU9Pm4uY2FsbChpLHQoZSkpKSxudWxsLHIpKSxuKX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gbygoKG4saT1udWxsLHIpPT5lKChlPT57dChlKSxuLmNhbGwoaSxlKX0pLG51bGwscikpLG4pfWZ1bmN0aW9uIHIoZSx0LG4pe3JldHVybiBvKCgobixpPW51bGwscik9PmUoKGU9PnQoZSkmJm4uY2FsbChpLGUpKSxudWxsLHIpKSxuKX1mdW5jdGlvbiBhKGUsdCxpLHIpe2xldCBhPWk7cmV0dXJuIG4oZSwoZT0+KGE9dChhLGUpLGEpKSxyKX1mdW5jdGlvbiBvKGUsdCl7bGV0IG47Y29uc3QgaT1uZXcgQih7b25XaWxsQWRkRmlyc3RMaXN0ZW5lcigpe249ZShpLmZpcmUsaSl9LG9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyKCl7bnVsbD09bnx8bi5kaXNwb3NlKCl9fSk7cmV0dXJuIG51bGw9PXR8fHQuYWRkKGkpLGkuZXZlbnR9ZnVuY3Rpb24gcyhlLHQsbj0xMDAsaT0hMSxyPSExLGEsbyl7bGV0IHMsbCxjLGgsZD0wO2NvbnN0IHU9bmV3IEIoe2xlYWtXYXJuaW5nVGhyZXNob2xkOmEsb25XaWxsQWRkRmlyc3RMaXN0ZW5lcigpe3M9ZSgoZT0+e2QrKyxsPXQobCxlKSxpJiYhYyYmKHUuZmlyZShsKSxsPXZvaWQgMCksaD0oKT0+e2NvbnN0IGU9bDtsPXZvaWQgMCxjPXZvaWQgMCwoIWl8fGQ+MSkmJnUuZmlyZShlKSxkPTB9LCJudW1iZXIiPT10eXBlb2Ygbj8oY2xlYXJUaW1lb3V0KGMpLGM9c2V0VGltZW91dChoLG4pKTp2b2lkIDA9PT1jJiYoYz0wLHF1ZXVlTWljcm90YXNrKGgpKX0pKX0sb25XaWxsUmVtb3ZlTGlzdGVuZXIoKXtyJiZkPjAmJihudWxsPT1ofHxoKCkpfSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcigpe2g9dm9pZCAwLHMuZGlzcG9zZSgpfX0pO3JldHVybiBudWxsPT1vfHxvLmFkZCh1KSx1LmV2ZW50fWZ1bmN0aW9uIGwoZSx0PSgoZSx0KT0+ZT09PXQpLG4pe2xldCBpLGE9ITA7cmV0dXJuIHIoZSwoZT0+e2NvbnN0IG49YXx8IXQoZSxpKTtyZXR1cm4gYT0hMSxpPWUsbn0pLG4pfWUuTm9uZT0oKT0+dS5Ob25lLGUuZGVmZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcyhlLCgoKT0+e30pLDAsdm9pZCAwLCEwLHZvaWQgMCx0KX0sZS5vbmNlPXQsZS5tYXA9bixlLmZvckVhY2g9aSxlLmZpbHRlcj1yLGUuc2lnbmFsPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLmFueT1mdW5jdGlvbiguLi5lKXtyZXR1cm4odCxuPW51bGwsaSk9PmZ1bmN0aW9uKC4uLmUpe3JldHVybiBoKCgoKT0+YyhlKSkpfSguLi5lLm1hcCgoZT0+ZSgoZT0+dC5jYWxsKG4sZSkpLG51bGwsaSkpKSl9LGUucmVkdWNlPWEsZS5kZWJvdW5jZT1zLGUuYWNjdW11bGF0ZT1mdW5jdGlvbih0LG49MCxpKXtyZXR1cm4gZS5kZWJvdW5jZSh0LCgoZSx0KT0+ZT8oZS5wdXNoKHQpLGUpOlt0XSksbix2b2lkIDAsITAsdm9pZCAwLGkpfSxlLmxhdGNoPWwsZS5zcGxpdD1mdW5jdGlvbih0LG4saSl7cmV0dXJuW2UuZmlsdGVyKHQsbixpKSxlLmZpbHRlcih0LChlPT4hbihlKSksaSldfSxlLmJ1ZmZlcj1mdW5jdGlvbihlLHQ9ITEsbj1bXSl7bGV0IGk9bi5zbGljZSgpLHI9ZSgoZT0+e2k/aS5wdXNoKGUpOm8uZmlyZShlKX0pKTtjb25zdCBhPSgpPT57bnVsbD09aXx8aS5mb3JFYWNoKChlPT5vLmZpcmUoZSkpKSxpPW51bGx9LG89bmV3IEIoe29uV2lsbEFkZEZpcnN0TGlzdGVuZXIoKXtyfHwocj1lKChlPT5vLmZpcmUoZSkpKSl9LG9uRGlkQWRkRmlyc3RMaXN0ZW5lcigpe2kmJih0P3NldFRpbWVvdXQoYSk6YSgpKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXIoKXtyJiZyLmRpc3Bvc2UoKSxyPW51bGx9fSk7cmV0dXJuIG8uZXZlbnR9O2NsYXNzIG17Y29uc3RydWN0b3IoZSl7dGhpcy5ldmVudD1lLHRoaXMuZGlzcG9zYWJsZXM9bmV3IGR9bWFwKGUpe3JldHVybiBuZXcgbShuKHRoaXMuZXZlbnQsZSx0aGlzLmRpc3Bvc2FibGVzKSl9Zm9yRWFjaChlKXtyZXR1cm4gbmV3IG0oaSh0aGlzLmV2ZW50LGUsdGhpcy5kaXNwb3NhYmxlcykpfWZpbHRlcihlKXtyZXR1cm4gbmV3IG0ocih0aGlzLmV2ZW50LGUsdGhpcy5kaXNwb3NhYmxlcykpfXJlZHVjZShlLHQpe3JldHVybiBuZXcgbShhKHRoaXMuZXZlbnQsZSx0LHRoaXMuZGlzcG9zYWJsZXMpKX1sYXRjaCgpe3JldHVybiBuZXcgbShsKHRoaXMuZXZlbnQsdm9pZCAwLHRoaXMuZGlzcG9zYWJsZXMpKX1kZWJvdW5jZShlLHQ9MTAwLG49ITEsaT0hMSxyKXtyZXR1cm4gbmV3IG0ocyh0aGlzLmV2ZW50LGUsdCxuLGkscix0aGlzLmRpc3Bvc2FibGVzKSl9b24oZSx0LG4pe3JldHVybiB0aGlzLmV2ZW50KGUsdCxuKX1vbmNlKGUsbixpKXtyZXR1cm4gdCh0aGlzLmV2ZW50KShlLG4saSl9ZGlzcG9zZSgpe3RoaXMuZGlzcG9zYWJsZXMuZGlzcG9zZSgpfX1lLmNoYWluPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbShlKX0sZS5mcm9tTm9kZUV2ZW50RW1pdHRlcj1mdW5jdGlvbihlLHQsbj0oZT0+ZSkpe2NvbnN0IGk9KC4uLmUpPT5yLmZpcmUobiguLi5lKSkscj1uZXcgQih7b25XaWxsQWRkRmlyc3RMaXN0ZW5lcjooKT0+ZS5vbih0LGkpLG9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyOigpPT5lLnJlbW92ZUxpc3RlbmVyKHQsaSl9KTtyZXR1cm4gci5ldmVudH0sZS5mcm9tRE9NRXZlbnRFbWl0dGVyPWZ1bmN0aW9uKGUsdCxuPShlPT5lKSl7Y29uc3QgaT0oLi4uZSk9PnIuZmlyZShuKC4uLmUpKSxyPW5ldyBCKHtvbldpbGxBZGRGaXJzdExpc3RlbmVyOigpPT5lLmFkZEV2ZW50TGlzdGVuZXIodCxpKSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcjooKT0+ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsaSl9KTtyZXR1cm4gci5ldmVudH0sZS50b1Byb21pc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChuPT50KGUpKG4pKSl9LGUucnVuQW5kU3Vic2NyaWJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQodm9pZCAwKSxlKChlPT50KGUpKSl9LGUucnVuQW5kU3Vic2NyaWJlV2l0aFN0b3JlPWZ1bmN0aW9uKGUsdCl7bGV0IG49bnVsbDtmdW5jdGlvbiBpKGUpe251bGw9PW58fG4uZGlzcG9zZSgpLG49bmV3IGQsdChlLG4pfWkodm9pZCAwKTtjb25zdCByPWUoKGU9PmkoZSkpKTtyZXR1cm4gaCgoKCk9PntyLmRpc3Bvc2UoKSxudWxsPT1ufHxuLmRpc3Bvc2UoKX0pKX07Y2xhc3MgcHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX29ic2VydmFibGU9ZSx0aGlzLl9jb3VudGVyPTAsdGhpcy5faGFzQ2hhbmdlZD0hMTtjb25zdCBuPXtvbldpbGxBZGRGaXJzdExpc3RlbmVyOigpPT57ZS5hZGRPYnNlcnZlcih0aGlzKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXI6KCk9PntlLnJlbW92ZU9ic2VydmVyKHRoaXMpfX07dGhpcy5lbWl0dGVyPW5ldyBCKG4pLHQmJnQuYWRkKHRoaXMuZW1pdHRlcil9YmVnaW5VcGRhdGUoZSl7dGhpcy5fY291bnRlcisrfWhhbmRsZVBvc3NpYmxlQ2hhbmdlKGUpe31oYW5kbGVDaGFuZ2UoZSx0KXt0aGlzLl9oYXNDaGFuZ2VkPSEwfWVuZFVwZGF0ZShlKXt0aGlzLl9jb3VudGVyLS0sMD09PXRoaXMuX2NvdW50ZXImJih0aGlzLl9vYnNlcnZhYmxlLnJlcG9ydENoYW5nZXMoKSx0aGlzLl9oYXNDaGFuZ2VkJiYodGhpcy5faGFzQ2hhbmdlZD0hMSx0aGlzLmVtaXR0ZXIuZmlyZSh0aGlzLl9vYnNlcnZhYmxlLmdldCgpKSkpfX1lLmZyb21PYnNlcnZhYmxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBwKGUsdCkuZW1pdHRlci5ldmVudH0sZS5mcm9tT2JzZXJ2YWJsZUxpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiB0PT57bGV0IG49MCxpPSExO2NvbnN0IHI9e2JlZ2luVXBkYXRlKCl7bisrfSxlbmRVcGRhdGUoKXtuLS0sMD09PW4mJihlLnJlcG9ydENoYW5nZXMoKSxpJiYoaT0hMSx0KCkpKX0saGFuZGxlUG9zc2libGVDaGFuZ2UoKXt9LGhhbmRsZUNoYW5nZSgpe2k9ITB9fTtyZXR1cm4gZS5hZGRPYnNlcnZlcihyKSx7ZGlzcG9zZSgpe2UucmVtb3ZlT2JzZXJ2ZXIocil9fX19fShXfHwoVz17fSkpO2NsYXNzIE97Y29uc3RydWN0b3IoZSl7dGhpcy5saXN0ZW5lckNvdW50PTAsdGhpcy5pbnZvY2F0aW9uQ291bnQ9MCx0aGlzLmVsYXBzZWRPdmVyYWxsPTAsdGhpcy5kdXJhdGlvbnM9W10sdGhpcy5uYW1lPWAke2V9XyR7Ty5faWRQb29sKyt9YCxPLmFsbC5hZGQodGhpcyl9c3RhcnQoZSl7dGhpcy5fc3RvcFdhdGNoPW5ldyBEKCEwKSx0aGlzLmxpc3RlbmVyQ291bnQ9ZX1zdG9wKCl7aWYodGhpcy5fc3RvcFdhdGNoKXtjb25zdCBlPXRoaXMuX3N0b3BXYXRjaC5lbGFwc2VkKCk7dGhpcy5kdXJhdGlvbnMucHVzaChlKSx0aGlzLmVsYXBzZWRPdmVyYWxsKz1lLHRoaXMuaW52b2NhdGlvbkNvdW50Kz0xLHRoaXMuX3N0b3BXYXRjaD12b2lkIDB9fX1PLmFsbD1uZXcgU2V0LE8uX2lkUG9vbD0wO2NsYXNzIFB7Y29uc3RydWN0b3IoZSx0PU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTgpLnNsaWNlKDIsNSkpe3RoaXMudGhyZXNob2xkPWUsdGhpcy5uYW1lPXQsdGhpcy5fd2FybkNvdW50ZG93bj0wfWRpc3Bvc2UoKXt2YXIgZTtudWxsPT09KGU9dGhpcy5fc3RhY2tzKXx8dm9pZCAwPT09ZXx8ZS5jbGVhcigpfWNoZWNrKGUsdCl7Y29uc3Qgbj10aGlzLnRocmVzaG9sZDtpZihuPD0wfHx0PG4pcmV0dXJuO3RoaXMuX3N0YWNrc3x8KHRoaXMuX3N0YWNrcz1uZXcgTWFwKTtjb25zdCBpPXRoaXMuX3N0YWNrcy5nZXQoZS52YWx1ZSl8fDA7aWYodGhpcy5fc3RhY2tzLnNldChlLnZhbHVlLGkrMSksdGhpcy5fd2FybkNvdW50ZG93bi09MSx0aGlzLl93YXJuQ291bnRkb3duPD0wKXtsZXQgZTt0aGlzLl93YXJuQ291bnRkb3duPS41Km47bGV0IGk9MDtmb3IoY29uc3RbdCxuXW9mIHRoaXMuX3N0YWNrcykoIWV8fGk8bikmJihlPXQsaT1uKTtjb25zb2xlLndhcm4oYFske3RoaXMubmFtZX1dIHBvdGVudGlhbCBsaXN0ZW5lciBMRUFLIGRldGVjdGVkLCBoYXZpbmcgJHt0fSBsaXN0ZW5lcnMgYWxyZWFkeS4gTU9TVCBmcmVxdWVudCBsaXN0ZW5lciAoJHtpfSk6YCksY29uc29sZS53YXJuKGUpfXJldHVybigpPT57Y29uc3QgdD10aGlzLl9zdGFja3MuZ2V0KGUudmFsdWUpfHwwO3RoaXMuX3N0YWNrcy5zZXQoZS52YWx1ZSx0LTEpfX19Y2xhc3MgcXtzdGF0aWMgY3JlYXRlKCl7dmFyIGU7cmV0dXJuIG5ldyBxKG51bGwhPT0oZT0obmV3IEVycm9yKS5zdGFjaykmJnZvaWQgMCE9PWU/ZToiIil9Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZT1lfXByaW50KCl7Y29uc29sZS53YXJuKHRoaXMudmFsdWUuc3BsaXQoIlxuIikuc2xpY2UoMikuam9pbigiXG4iKSl9fWNsYXNzIEZ7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuY2FsbGJhY2s9ZSx0aGlzLmNhbGxiYWNrVGhpcz10LHRoaXMuc3RhY2s9bix0aGlzLnN1YnNjcmlwdGlvbj1uZXcgbX1pbnZva2UoZSl7dGhpcy5jYWxsYmFjay5jYWxsKHRoaXMuY2FsbGJhY2tUaGlzLGUpfX1jbGFzcyBCe2NvbnN0cnVjdG9yKGUpe3ZhciB0LG4saSxyLGE7dGhpcy5fZGlzcG9zZWQ9ITEsdGhpcy5fb3B0aW9ucz1lLHRoaXMuX2xlYWthZ2VNb249KG51bGw9PT0odD10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09dD92b2lkIDA6dC5sZWFrV2FybmluZ1RocmVzaG9sZCk/bmV3IFAobnVsbCE9PShpPW51bGw9PT0obj10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09bj92b2lkIDA6bi5sZWFrV2FybmluZ1RocmVzaG9sZCkmJnZvaWQgMCE9PWk/aTotMSk6dm9pZCAwLHRoaXMuX3BlcmZNb249KG51bGw9PT0ocj10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09cj92b2lkIDA6ci5fcHJvZk5hbWUpP25ldyBPKHRoaXMuX29wdGlvbnMuX3Byb2ZOYW1lKTp2b2lkIDAsdGhpcy5fZGVsaXZlcnlRdWV1ZT1udWxsPT09KGE9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PWE/dm9pZCAwOmEuZGVsaXZlcnlRdWV1ZX1kaXNwb3NlKCl7dmFyIGUsdCxuLGk7dGhpcy5fZGlzcG9zZWR8fCh0aGlzLl9kaXNwb3NlZD0hMCx0aGlzLl9saXN0ZW5lcnMmJnRoaXMuX2xpc3RlbmVycy5jbGVhcigpLG51bGw9PT0oZT10aGlzLl9kZWxpdmVyeVF1ZXVlKXx8dm9pZCAwPT09ZXx8ZS5jbGVhcih0aGlzKSxudWxsPT09KG49bnVsbD09PSh0PXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lm9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyKXx8dm9pZCAwPT09bnx8bi5jYWxsKHQpLG51bGw9PT0oaT10aGlzLl9sZWFrYWdlTW9uKXx8dm9pZCAwPT09aXx8aS5kaXNwb3NlKCkpfWdldCBldmVudCgpe3JldHVybiB0aGlzLl9ldmVudHx8KHRoaXMuX2V2ZW50PShlLHQsbik9Pnt2YXIgaSxyLGE7aWYodGhpcy5fbGlzdGVuZXJzfHwodGhpcy5fbGlzdGVuZXJzPW5ldyBmKSx0aGlzLl9sZWFrYWdlTW9uJiZ0aGlzLl9saXN0ZW5lcnMuc2l6ZT4zKnRoaXMuX2xlYWthZ2VNb24udGhyZXNob2xkKXJldHVybiBjb25zb2xlLndhcm4oYFske3RoaXMuX2xlYWthZ2VNb24ubmFtZX1dIFJFRlVTRVMgdG8gYWNjZXB0IG5ldyBsaXN0ZW5lcnMgYmVjYXVzZSBpdCBleGNlZWRlZCBpdHMgdGhyZXNob2xkIGJ5IGZhcmApLHUuTm9uZTtjb25zdCBvPXRoaXMuX2xpc3RlbmVycy5pc0VtcHR5KCk7bGV0IHMsbDtvJiYobnVsbD09PShpPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLm9uV2lsbEFkZEZpcnN0TGlzdGVuZXIpJiZ0aGlzLl9vcHRpb25zLm9uV2lsbEFkZEZpcnN0TGlzdGVuZXIodGhpcyksdGhpcy5fbGVha2FnZU1vbiYmdGhpcy5fbGlzdGVuZXJzLnNpemU+PU1hdGguY2VpbCguMip0aGlzLl9sZWFrYWdlTW9uLnRocmVzaG9sZCkmJihsPXEuY3JlYXRlKCkscz10aGlzLl9sZWFrYWdlTW9uLmNoZWNrKGwsdGhpcy5fbGlzdGVuZXJzLnNpemUrMSkpO2NvbnN0IGM9bmV3IEYoZSx0LGwpLGg9dGhpcy5fbGlzdGVuZXJzLnB1c2goYyk7byYmKG51bGw9PT0ocj10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09cj92b2lkIDA6ci5vbkRpZEFkZEZpcnN0TGlzdGVuZXIpJiZ0aGlzLl9vcHRpb25zLm9uRGlkQWRkRmlyc3RMaXN0ZW5lcih0aGlzKSwobnVsbD09PShhPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLm9uRGlkQWRkTGlzdGVuZXIpJiZ0aGlzLl9vcHRpb25zLm9uRGlkQWRkTGlzdGVuZXIodGhpcyxlLHQpO2NvbnN0IG09Yy5zdWJzY3JpcHRpb24uc2V0KCgoKT0+e3ZhciBlLHQ7aWYobnVsbD09c3x8cygpLCF0aGlzLl9kaXNwb3NlZCYmKG51bGw9PT0odD1udWxsPT09KGU9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PWU/dm9pZCAwOmUub25XaWxsUmVtb3ZlTGlzdGVuZXIpfHx2b2lkIDA9PT10fHx0LmNhbGwoZSx0aGlzKSxoKCksdGhpcy5fb3B0aW9ucyYmdGhpcy5fb3B0aW9ucy5vbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcikpe3RoaXMuX2xpc3RlbmVycyYmIXRoaXMuX2xpc3RlbmVycy5pc0VtcHR5KCl8fHRoaXMuX29wdGlvbnMub25EaWRSZW1vdmVMYXN0TGlzdGVuZXIodGhpcyl9fSkpO3JldHVybiBuIGluc3RhbmNlb2YgZD9uLmFkZChtKTpBcnJheS5pc0FycmF5KG4pJiZuLnB1c2gobSksbX0pLHRoaXMuX2V2ZW50fWZpcmUoZSl7dmFyIHQsbixpO2lmKHRoaXMuX2xpc3RlbmVycyl7dGhpcy5fZGVsaXZlcnlRdWV1ZXx8KHRoaXMuX2RlbGl2ZXJ5UXVldWU9bmV3IEsobnVsbD09PSh0PXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lm9uTGlzdGVuZXJFcnJvcikpO2Zvcihjb25zdCB0IG9mIHRoaXMuX2xpc3RlbmVycyl0aGlzLl9kZWxpdmVyeVF1ZXVlLnB1c2godGhpcyx0LGUpO251bGw9PT0obj10aGlzLl9wZXJmTW9uKXx8dm9pZCAwPT09bnx8bi5zdGFydCh0aGlzLl9kZWxpdmVyeVF1ZXVlLnNpemUpLHRoaXMuX2RlbGl2ZXJ5UXVldWUuZGVsaXZlcigpLG51bGw9PT0oaT10aGlzLl9wZXJmTW9uKXx8dm9pZCAwPT09aXx8aS5zdG9wKCl9fWhhc0xpc3RlbmVycygpe3JldHVybiEhdGhpcy5fbGlzdGVuZXJzJiYhdGhpcy5fbGlzdGVuZXJzLmlzRW1wdHkoKX19Y2xhc3MgVntjb25zdHJ1Y3RvcihlPXQpe3RoaXMuX29uTGlzdGVuZXJFcnJvcj1lLHRoaXMuX3F1ZXVlPW5ldyBmfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3F1ZXVlLnNpemV9cHVzaChlLHQsbil7dGhpcy5fcXVldWUucHVzaChuZXcgaihlLHQsbikpfWNsZWFyKGUpe2NvbnN0IHQ9bmV3IGY7Zm9yKGNvbnN0IG4gb2YgdGhpcy5fcXVldWUpbi5lbWl0dGVyIT09ZSYmdC5wdXNoKG4pO3RoaXMuX3F1ZXVlPXR9ZGVsaXZlcigpe2Zvcig7dGhpcy5fcXVldWUuc2l6ZT4wOyl7Y29uc3QgZT10aGlzLl9xdWV1ZS5zaGlmdCgpO3RyeXtlLmxpc3RlbmVyLmludm9rZShlLmV2ZW50KX1jYXRjaChlKXt0aGlzLl9vbkxpc3RlbmVyRXJyb3IoZSl9fX19Y2xhc3MgSyBleHRlbmRzIFZ7Y2xlYXIoZSl7dGhpcy5fcXVldWUuY2xlYXIoKX19Y2xhc3Mgantjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5lbWl0dGVyPWUsdGhpcy5saXN0ZW5lcj10LHRoaXMuZXZlbnQ9bn19ZnVuY3Rpb24gRyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGZ1bmN0aW9uKGUpe2xldCB0PVtdLG49T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2Zvcig7T2JqZWN0LnByb3RvdHlwZSE9PW47KXQ9dC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobikpLG49T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pO3JldHVybiB0fShlKSkiZnVuY3Rpb24iPT10eXBlb2YgZVtuXSYmdC5wdXNoKG4pO3JldHVybiB0fWNsYXNzICR7Y29uc3RydWN0b3IoZSl7dGhpcy5leGVjdXRvcj1lLHRoaXMuX2RpZFJ1bj0hMX1nZXQgdmFsdWUoKXtpZighdGhpcy5fZGlkUnVuKXRyeXt0aGlzLl92YWx1ZT10aGlzLmV4ZWN1dG9yKCl9Y2F0Y2goZSl7dGhpcy5fZXJyb3I9ZX1maW5hbGx5e3RoaXMuX2RpZFJ1bj0hMH1pZih0aGlzLl9lcnJvcil0aHJvdyB0aGlzLl9lcnJvcjtyZXR1cm4gdGhpcy5fdmFsdWV9Z2V0IHJhd1ZhbHVlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfX12YXIgSjtmdW5jdGlvbiBYKGUpe3JldHVybiBlPj02NSYmZTw9OTB9ZnVuY3Rpb24gWShlKXtyZXR1cm4gNTUyOTY8PWUmJmU8PTU2MzE5fWZ1bmN0aW9uIFEoZSx0LG4pe2NvbnN0IGk9ZS5jaGFyQ29kZUF0KG4pO2lmKFkoaSkmJm4rMTx0KXtjb25zdCB0PWUuY2hhckNvZGVBdChuKzEpO2lmKGZ1bmN0aW9uKGUpe3JldHVybiA1NjMyMDw9ZSYmZTw9NTczNDN9KHQpKXJldHVybiB0LTU2MzIwKyhpLTU1Mjk2PDwxMCkrNjU1MzZ9cmV0dXJuIGl9Y29uc3QgWj0vXltcdFxuXHJceDIwLVx4N0VdKiQvO2NsYXNzIGVle3N0YXRpYyBnZXRJbnN0YW5jZShlKXtyZXR1cm4gZWUuY2FjaGUuZ2V0KEFycmF5LmZyb20oZSkpfXN0YXRpYyBnZXRMb2NhbGVzKCl7cmV0dXJuIGVlLl9sb2NhbGVzLnZhbHVlfWNvbnN0cnVjdG9yKGUpe3RoaXMuY29uZnVzYWJsZURpY3Rpb25hcnk9ZX1pc0FtYmlndW91cyhlKXtyZXR1cm4gdGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5oYXMoZSl9Z2V0UHJpbWFyeUNvbmZ1c2FibGUoZSl7cmV0dXJuIHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkuZ2V0KGUpfWdldENvbmZ1c2FibGVDb2RlUG9pbnRzKCl7cmV0dXJuIG5ldyBTZXQodGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5rZXlzKCkpfX1KPWVlLGVlLmFtYmlndW91c0NoYXJhY3RlckRhdGE9bmV3ICQoKCgpPT5KU09OLnBhcnNlKCd7Il9jb21tb24iOls4MjMyLDMyLDgyMzMsMzIsNTc2MCwzMiw4MTkyLDMyLDgxOTMsMzIsODE5NCwzMiw4MTk1LDMyLDgxOTYsMzIsODE5NywzMiw4MTk4LDMyLDgyMDAsMzIsODIwMSwzMiw4MjAyLDMyLDgyODcsMzIsODE5OSwzMiw4MjM5LDMyLDIwNDIsOTUsNjUxMDEsOTUsNjUxMDIsOTUsNjUxMDMsOTUsODIwOCw0NSw4MjA5LDQ1LDgyMTAsNDUsNjUxMTIsNDUsMTc0OCw0NSw4MjU5LDQ1LDcyNyw0NSw4NzIyLDQ1LDEwMTM0LDQ1LDExNDUwLDQ1LDE1NDksNDQsMTY0Myw0NCw4MjE4LDQ0LDE4NCw0NCw0MjIzMyw0NCw4OTQsNTksMjMwNyw1OCwyNjkxLDU4LDE0MTcsNTgsMTc5NSw1OCwxNzk2LDU4LDU4NjgsNTgsNjUwNzIsNTgsNjE0Nyw1OCw2MTUzLDU4LDgyODIsNTgsMTQ3NSw1OCw3NjAsNTgsNDI4ODksNTgsODc1OCw1OCw3MjAsNTgsNDIyMzcsNTgsNDUxLDMzLDExNjAxLDMzLDY2MCw2Myw1NzcsNjMsMjQyOSw2Myw1MDM4LDYzLDQyNzMxLDYzLDExOTE0OSw0Niw4MjI4LDQ2LDE3OTMsNDYsMTc5NCw0Niw0MjUxMCw0Niw2ODE3Niw0NiwxNjMyLDQ2LDE3NzYsNDYsNDIyMzIsNDYsMTM3Myw5Niw2NTI4Nyw5Niw4MjE5LDk2LDgyNDIsOTYsMTM3MCw5NiwxNTIzLDk2LDgxNzUsOTYsNjUzNDQsOTYsOTAwLDk2LDgxODksOTYsODEyNSw5Niw4MTI3LDk2LDgxOTAsOTYsNjk3LDk2LDg4NCw5Niw3MTIsOTYsNzE0LDk2LDcxNSw5Niw3NTYsOTYsNjk5LDk2LDcwMSw5Niw3MDAsOTYsNzAyLDk2LDQyODkyLDk2LDE0OTcsOTYsMjAzNiw5NiwyMDM3LDk2LDUxOTQsOTYsNTgzNiw5Niw5NDAzMyw5Niw5NDAzNCw5Niw2NTMzOSw5MSwxMDA4OCw0MCwxMDA5OCw0MCwxMjMwOCw0MCw2NDgzMCw0MCw2NTM0MSw5MywxMDA4OSw0MSwxMDA5OSw0MSwxMjMwOSw0MSw2NDgzMSw0MSwxMDEwMCwxMjMsMTE5MDYwLDEyMywxMDEwMSwxMjUsNjUzNDIsOTQsODI3MCw0MiwxNjQ1LDQyLDg3MjcsNDIsNjYzMzUsNDIsNTk0MSw0Nyw4MjU3LDQ3LDg3MjUsNDcsODI2MCw0Nyw5NTg1LDQ3LDEwMTg3LDQ3LDEwNzQ0LDQ3LDExOTM1NCw0NywxMjc1NSw0NywxMjMzOSw0NywxMTQ2Miw0NywyMDAzMSw0NywxMjAzNSw0Nyw2NTM0MCw5Miw2NTEyOCw5Miw4NzI2LDkyLDEwMTg5LDkyLDEwNzQxLDkyLDEwNzQ1LDkyLDExOTMxMSw5MiwxMTkzNTUsOTIsMTI3NTYsOTIsMjAwMjIsOTIsMTIwMzQsOTIsNDI4NzIsMzgsNzA4LDk0LDcxMCw5NCw1ODY5LDQzLDEwMTMzLDQzLDY2MjAzLDQzLDgyNDksNjAsMTAwOTQsNjAsNzA2LDYwLDExOTM1MCw2MCw1MTc2LDYwLDU4MTAsNjAsNTEyMCw2MSwxMTg0MCw2MSwxMjQ0OCw2MSw0MjIzOSw2MSw4MjUwLDYyLDEwMDk1LDYyLDcwNyw2MiwxMTkzNTEsNjIsNTE3MSw2Miw5NDAxNSw2Miw4Mjc1LDEyNiw3MzIsMTI2LDgxMjgsMTI2LDg3NjQsMTI2LDY1MzcyLDEyNCw2NTI5Myw0NSwxMjA3ODQsNTAsMTIwNzk0LDUwLDEyMDgwNCw1MCwxMjA4MTQsNTAsMTIwODI0LDUwLDEzMDAzNCw1MCw0Mjg0Miw1MCw0MjMsNTAsMTAwMCw1MCw0MjU2NCw1MCw1MzExLDUwLDQyNzM1LDUwLDExOTMwMiw1MSwxMjA3ODUsNTEsMTIwNzk1LDUxLDEyMDgwNSw1MSwxMjA4MTUsNTEsMTIwODI1LDUxLDEzMDAzNSw1MSw0MjkyMyw1MSw1NDAsNTEsNDM5LDUxLDQyODU4LDUxLDExNDY4LDUxLDEyNDgsNTEsOTQwMTEsNTEsNzE4ODIsNTEsMTIwNzg2LDUyLDEyMDc5Niw1MiwxMjA4MDYsNTIsMTIwODE2LDUyLDEyMDgyNiw1MiwxMzAwMzYsNTIsNTA3MCw1Miw3MTg1NSw1MiwxMjA3ODcsNTMsMTIwNzk3LDUzLDEyMDgwNyw1MywxMjA4MTcsNTMsMTIwODI3LDUzLDEzMDAzNyw1Myw0NDQsNTMsNzE4NjcsNTMsMTIwNzg4LDU0LDEyMDc5OCw1NCwxMjA4MDgsNTQsMTIwODE4LDU0LDEyMDgyOCw1NCwxMzAwMzgsNTQsMTE0NzQsNTQsNTEwMiw1NCw3MTg5Myw1NCwxMTkzMTQsNTUsMTIwNzg5LDU1LDEyMDc5OSw1NSwxMjA4MDksNTUsMTIwODE5LDU1LDEyMDgyOSw1NSwxMzAwMzksNTUsNjY3NzAsNTUsNzE4NzgsNTUsMjgxOSw1NiwyNTM4LDU2LDI2NjYsNTYsMTI1MTMxLDU2LDEyMDc5MCw1NiwxMjA4MDAsNTYsMTIwODEwLDU2LDEyMDgyMCw1NiwxMjA4MzAsNTYsMTMwMDQwLDU2LDU0Nyw1Niw1NDYsNTYsNjYzMzAsNTYsMjY2Myw1NywyOTIwLDU3LDI1NDEsNTcsMzQzNyw1NywxMjA3OTEsNTcsMTIwODAxLDU3LDEyMDgxMSw1NywxMjA4MjEsNTcsMTIwODMxLDU3LDEzMDA0MSw1Nyw0Mjg2Miw1NywxMTQ2Niw1Nyw3MTg4NCw1Nyw3MTg1Miw1Nyw3MTg5NCw1Nyw5MDgyLDk3LDY1MzQ1LDk3LDExOTgzNCw5NywxMTk4ODYsOTcsMTE5OTM4LDk3LDExOTk5MCw5NywxMjAwNDIsOTcsMTIwMDk0LDk3LDEyMDE0Niw5NywxMjAxOTgsOTcsMTIwMjUwLDk3LDEyMDMwMiw5NywxMjAzNTQsOTcsMTIwNDA2LDk3LDEyMDQ1OCw5Nyw1OTMsOTcsOTQ1LDk3LDEyMDUxNCw5NywxMjA1NzIsOTcsMTIwNjMwLDk3LDEyMDY4OCw5NywxMjA3NDYsOTcsNjUzMTMsNjUsMTE5ODA4LDY1LDExOTg2MCw2NSwxMTk5MTIsNjUsMTE5OTY0LDY1LDEyMDAxNiw2NSwxMjAwNjgsNjUsMTIwMTIwLDY1LDEyMDE3Miw2NSwxMjAyMjQsNjUsMTIwMjc2LDY1LDEyMDMyOCw2NSwxMjAzODAsNjUsMTIwNDMyLDY1LDkxMyw2NSwxMjA0ODgsNjUsMTIwNTQ2LDY1LDEyMDYwNCw2NSwxMjA2NjIsNjUsMTIwNzIwLDY1LDUwMzQsNjUsNTU3Myw2NSw0MjIyMiw2NSw5NDAxNiw2NSw2NjIwOCw2NSwxMTk4MzUsOTgsMTE5ODg3LDk4LDExOTkzOSw5OCwxMTk5OTEsOTgsMTIwMDQzLDk4LDEyMDA5NSw5OCwxMjAxNDcsOTgsMTIwMTk5LDk4LDEyMDI1MSw5OCwxMjAzMDMsOTgsMTIwMzU1LDk4LDEyMDQwNyw5OCwxMjA0NTksOTgsMzg4LDk4LDUwNzEsOTgsNTIzNCw5OCw1NTUxLDk4LDY1MzE0LDY2LDg0OTIsNjYsMTE5ODA5LDY2LDExOTg2MSw2NiwxMTk5MTMsNjYsMTIwMDE3LDY2LDEyMDA2OSw2NiwxMjAxMjEsNjYsMTIwMTczLDY2LDEyMDIyNSw2NiwxMjAyNzcsNjYsMTIwMzI5LDY2LDEyMDM4MSw2NiwxMjA0MzMsNjYsNDI5MzIsNjYsOTE0LDY2LDEyMDQ4OSw2NiwxMjA1NDcsNjYsMTIwNjA1LDY2LDEyMDY2Myw2NiwxMjA3MjEsNjYsNTEwOCw2Niw1NjIzLDY2LDQyMTkyLDY2LDY2MTc4LDY2LDY2MjA5LDY2LDY2MzA1LDY2LDY1MzQ3LDk5LDg1NzMsOTksMTE5ODM2LDk5LDExOTg4OCw5OSwxMTk5NDAsOTksMTE5OTkyLDk5LDEyMDA0NCw5OSwxMjAwOTYsOTksMTIwMTQ4LDk5LDEyMDIwMCw5OSwxMjAyNTIsOTksMTIwMzA0LDk5LDEyMDM1Niw5OSwxMjA0MDgsOTksMTIwNDYwLDk5LDc0MjgsOTksMTAxMCw5OSwxMTQyOSw5OSw0Mzk1MSw5OSw2NjYyMSw5OSwxMjg4NDQsNjcsNzE5MjIsNjcsNzE5MTMsNjcsNjUzMTUsNjcsODU1Nyw2Nyw4NDUwLDY3LDg0OTMsNjcsMTE5ODEwLDY3LDExOTg2Miw2NywxMTk5MTQsNjcsMTE5OTY2LDY3LDEyMDAxOCw2NywxMjAxNzQsNjcsMTIwMjI2LDY3LDEyMDI3OCw2NywxMjAzMzAsNjcsMTIwMzgyLDY3LDEyMDQzNCw2NywxMDE3LDY3LDExNDI4LDY3LDUwODcsNjcsNDIyMDIsNjcsNjYyMTAsNjcsNjYzMDYsNjcsNjY1ODEsNjcsNjY4NDQsNjcsODU3NCwxMDAsODUxOCwxMDAsMTE5ODM3LDEwMCwxMTk4ODksMTAwLDExOTk0MSwxMDAsMTE5OTkzLDEwMCwxMjAwNDUsMTAwLDEyMDA5NywxMDAsMTIwMTQ5LDEwMCwxMjAyMDEsMTAwLDEyMDI1MywxMDAsMTIwMzA1LDEwMCwxMjAzNTcsMTAwLDEyMDQwOSwxMDAsMTIwNDYxLDEwMCwxMjgxLDEwMCw1MDk1LDEwMCw1MjMxLDEwMCw0MjE5NCwxMDAsODU1OCw2OCw4NTE3LDY4LDExOTgxMSw2OCwxMTk4NjMsNjgsMTE5OTE1LDY4LDExOTk2Nyw2OCwxMjAwMTksNjgsMTIwMDcxLDY4LDEyMDEyMyw2OCwxMjAxNzUsNjgsMTIwMjI3LDY4LDEyMDI3OSw2OCwxMjAzMzEsNjgsMTIwMzgzLDY4LDEyMDQzNSw2OCw1MDI0LDY4LDU1OTgsNjgsNTYxMCw2OCw0MjE5NSw2OCw4NDk0LDEwMSw2NTM0OSwxMDEsODQ5NSwxMDEsODUxOSwxMDEsMTE5ODM4LDEwMSwxMTk4OTAsMTAxLDExOTk0MiwxMDEsMTIwMDQ2LDEwMSwxMjAwOTgsMTAxLDEyMDE1MCwxMDEsMTIwMjAyLDEwMSwxMjAyNTQsMTAxLDEyMDMwNiwxMDEsMTIwMzU4LDEwMSwxMjA0MTAsMTAxLDEyMDQ2MiwxMDEsNDM4MjYsMTAxLDEyMTMsMTAxLDg5NTksNjksNjUzMTcsNjksODQ5Niw2OSwxMTk4MTIsNjksMTE5ODY0LDY5LDExOTkxNiw2OSwxMjAwMjAsNjksMTIwMDcyLDY5LDEyMDEyNCw2OSwxMjAxNzYsNjksMTIwMjI4LDY5LDEyMDI4MCw2OSwxMjAzMzIsNjksMTIwMzg0LDY5LDEyMDQzNiw2OSw5MTcsNjksMTIwNDkyLDY5LDEyMDU1MCw2OSwxMjA2MDgsNjksMTIwNjY2LDY5LDEyMDcyNCw2OSwxMTU3Nyw2OSw1MDM2LDY5LDQyMjI0LDY5LDcxODQ2LDY5LDcxODU0LDY5LDY2MTgyLDY5LDExOTgzOSwxMDIsMTE5ODkxLDEwMiwxMTk5NDMsMTAyLDExOTk5NSwxMDIsMTIwMDQ3LDEwMiwxMjAwOTksMTAyLDEyMDE1MSwxMDIsMTIwMjAzLDEwMiwxMjAyNTUsMTAyLDEyMDMwNywxMDIsMTIwMzU5LDEwMiwxMjA0MTEsMTAyLDEyMDQ2MywxMDIsNDM4MjksMTAyLDQyOTA1LDEwMiwzODMsMTAyLDc4MzcsMTAyLDE0MTIsMTAyLDExOTMxNSw3MCw4NDk3LDcwLDExOTgxMyw3MCwxMTk4NjUsNzAsMTE5OTE3LDcwLDEyMDAyMSw3MCwxMjAwNzMsNzAsMTIwMTI1LDcwLDEyMDE3Nyw3MCwxMjAyMjksNzAsMTIwMjgxLDcwLDEyMDMzMyw3MCwxMjAzODUsNzAsMTIwNDM3LDcwLDQyOTA0LDcwLDk4OCw3MCwxMjA3NzgsNzAsNTU1Niw3MCw0MjIwNSw3MCw3MTg3NCw3MCw3MTg0Miw3MCw2NjE4Myw3MCw2NjIxMyw3MCw2Njg1Myw3MCw2NTM1MSwxMDMsODQ1OCwxMDMsMTE5ODQwLDEwMywxMTk4OTIsMTAzLDExOTk0NCwxMDMsMTIwMDQ4LDEwMywxMjAxMDAsMTAzLDEyMDE1MiwxMDMsMTIwMjA0LDEwMywxMjAyNTYsMTAzLDEyMDMwOCwxMDMsMTIwMzYwLDEwMywxMjA0MTIsMTAzLDEyMDQ2NCwxMDMsNjA5LDEwMyw3NTU1LDEwMywzOTcsMTAzLDE0MDksMTAzLDExOTgxNCw3MSwxMTk4NjYsNzEsMTE5OTE4LDcxLDExOTk3MCw3MSwxMjAwMjIsNzEsMTIwMDc0LDcxLDEyMDEyNiw3MSwxMjAxNzgsNzEsMTIwMjMwLDcxLDEyMDI4Miw3MSwxMjAzMzQsNzEsMTIwMzg2LDcxLDEyMDQzOCw3MSwxMjkyLDcxLDUwNTYsNzEsNTEwNyw3MSw0MjE5OCw3MSw2NTM1MiwxMDQsODQ2MiwxMDQsMTE5ODQxLDEwNCwxMTk5NDUsMTA0LDExOTk5NywxMDQsMTIwMDQ5LDEwNCwxMjAxMDEsMTA0LDEyMDE1MywxMDQsMTIwMjA1LDEwNCwxMjAyNTcsMTA0LDEyMDMwOSwxMDQsMTIwMzYxLDEwNCwxMjA0MTMsMTA0LDEyMDQ2NSwxMDQsMTIxMSwxMDQsMTM5MiwxMDQsNTA1OCwxMDQsNjUzMjAsNzIsODQ1OSw3Miw4NDYwLDcyLDg0NjEsNzIsMTE5ODE1LDcyLDExOTg2Nyw3MiwxMTk5MTksNzIsMTIwMDIzLDcyLDEyMDE3OSw3MiwxMjAyMzEsNzIsMTIwMjgzLDcyLDEyMDMzNSw3MiwxMjAzODcsNzIsMTIwNDM5LDcyLDkxOSw3MiwxMjA0OTQsNzIsMTIwNTUyLDcyLDEyMDYxMCw3MiwxMjA2NjgsNzIsMTIwNzI2LDcyLDExNDA2LDcyLDUwNTEsNzIsNTUwMCw3Miw0MjIxNSw3Miw2NjI1NSw3Miw3MzEsMTA1LDkwNzUsMTA1LDY1MzUzLDEwNSw4NTYwLDEwNSw4NTA1LDEwNSw4NTIwLDEwNSwxMTk4NDIsMTA1LDExOTg5NCwxMDUsMTE5OTQ2LDEwNSwxMTk5OTgsMTA1LDEyMDA1MCwxMDUsMTIwMTAyLDEwNSwxMjAxNTQsMTA1LDEyMDIwNiwxMDUsMTIwMjU4LDEwNSwxMjAzMTAsMTA1LDEyMDM2MiwxMDUsMTIwNDE0LDEwNSwxMjA0NjYsMTA1LDEyMDQ4NCwxMDUsNjE4LDEwNSw2MTcsMTA1LDk1MywxMDUsODEyNiwxMDUsODkwLDEwNSwxMjA1MjIsMTA1LDEyMDU4MCwxMDUsMTIwNjM4LDEwNSwxMjA2OTYsMTA1LDEyMDc1NCwxMDUsMTExMCwxMDUsNDI1NjcsMTA1LDEyMzEsMTA1LDQzODkzLDEwNSw1MDI5LDEwNSw3MTg3NSwxMDUsNjUzNTQsMTA2LDg1MjEsMTA2LDExOTg0MywxMDYsMTE5ODk1LDEwNiwxMTk5NDcsMTA2LDExOTk5OSwxMDYsMTIwMDUxLDEwNiwxMjAxMDMsMTA2LDEyMDE1NSwxMDYsMTIwMjA3LDEwNiwxMjAyNTksMTA2LDEyMDMxMSwxMDYsMTIwMzYzLDEwNiwxMjA0MTUsMTA2LDEyMDQ2NywxMDYsMTAxMSwxMDYsMTExMiwxMDYsNjUzMjIsNzQsMTE5ODE3LDc0LDExOTg2OSw3NCwxMTk5MjEsNzQsMTE5OTczLDc0LDEyMDAyNSw3NCwxMjAwNzcsNzQsMTIwMTI5LDc0LDEyMDE4MSw3NCwxMjAyMzMsNzQsMTIwMjg1LDc0LDEyMDMzNyw3NCwxMjAzODksNzQsMTIwNDQxLDc0LDQyOTMwLDc0LDg5NSw3NCwxMDMyLDc0LDUwMzUsNzQsNTI2MSw3NCw0MjIwMSw3NCwxMTk4NDQsMTA3LDExOTg5NiwxMDcsMTE5OTQ4LDEwNywxMjAwMDAsMTA3LDEyMDA1MiwxMDcsMTIwMTA0LDEwNywxMjAxNTYsMTA3LDEyMDIwOCwxMDcsMTIwMjYwLDEwNywxMjAzMTIsMTA3LDEyMDM2NCwxMDcsMTIwNDE2LDEwNywxMjA0NjgsMTA3LDg0OTAsNzUsNjUzMjMsNzUsMTE5ODE4LDc1LDExOTg3MCw3NSwxMTk5MjIsNzUsMTE5OTc0LDc1LDEyMDAyNiw3NSwxMjAwNzgsNzUsMTIwMTMwLDc1LDEyMDE4Miw3NSwxMjAyMzQsNzUsMTIwMjg2LDc1LDEyMDMzOCw3NSwxMjAzOTAsNzUsMTIwNDQyLDc1LDkyMiw3NSwxMjA0OTcsNzUsMTIwNTU1LDc1LDEyMDYxMyw3NSwxMjA2NzEsNzUsMTIwNzI5LDc1LDExNDEyLDc1LDUwOTQsNzUsNTg0NSw3NSw0MjE5OSw3NSw2Njg0MCw3NSwxNDcyLDEwOCw4NzM5LDczLDkyMTMsNzMsNjU1MTIsNzMsMTYzMywxMDgsMTc3Nyw3Myw2NjMzNiwxMDgsMTI1MTI3LDEwOCwxMjA3ODMsNzMsMTIwNzkzLDczLDEyMDgwMyw3MywxMjA4MTMsNzMsMTIwODIzLDczLDEzMDAzMyw3Myw2NTMyMSw3Myw4NTQ0LDczLDg0NjQsNzMsODQ2NSw3MywxMTk4MTYsNzMsMTE5ODY4LDczLDExOTkyMCw3MywxMjAwMjQsNzMsMTIwMTI4LDczLDEyMDE4MCw3MywxMjAyMzIsNzMsMTIwMjg0LDczLDEyMDMzNiw3MywxMjAzODgsNzMsMTIwNDQwLDczLDY1MzU2LDEwOCw4NTcyLDczLDg0NjcsMTA4LDExOTg0NSwxMDgsMTE5ODk3LDEwOCwxMTk5NDksMTA4LDEyMDAwMSwxMDgsMTIwMDUzLDEwOCwxMjAxMDUsNzMsMTIwMTU3LDczLDEyMDIwOSw3MywxMjAyNjEsNzMsMTIwMzEzLDczLDEyMDM2NSw3MywxMjA0MTcsNzMsMTIwNDY5LDczLDQ0OCw3MywxMjA0OTYsNzMsMTIwNTU0LDczLDEyMDYxMiw3MywxMjA2NzAsNzMsMTIwNzI4LDczLDExNDEwLDczLDEwMzAsNzMsMTIxNiw3MywxNDkzLDEwOCwxNTAzLDEwOCwxNTc1LDEwOCwxMjY0NjQsMTA4LDEyNjU5MiwxMDgsNjUxNjYsMTA4LDY1MTY1LDEwOCwxOTk0LDEwOCwxMTU5OSw3Myw1ODI1LDczLDQyMjI2LDczLDkzOTkyLDczLDY2MTg2LDEyNCw2NjMxMywxMjQsMTE5MzM4LDc2LDg1NTYsNzYsODQ2Niw3NiwxMTk4MTksNzYsMTE5ODcxLDc2LDExOTkyMyw3NiwxMjAwMjcsNzYsMTIwMDc5LDc2LDEyMDEzMSw3NiwxMjAxODMsNzYsMTIwMjM1LDc2LDEyMDI4Nyw3NiwxMjAzMzksNzYsMTIwMzkxLDc2LDEyMDQ0Myw3NiwxMTQ3Miw3Niw1MDg2LDc2LDUyOTAsNzYsNDIyMDksNzYsOTM5NzQsNzYsNzE4NDMsNzYsNzE4NTgsNzYsNjY1ODcsNzYsNjY4NTQsNzYsNjUzMjUsNzcsODU1OSw3Nyw4NDk5LDc3LDExOTgyMCw3NywxMTk4NzIsNzcsMTE5OTI0LDc3LDEyMDAyOCw3NywxMjAwODAsNzcsMTIwMTMyLDc3LDEyMDE4NCw3NywxMjAyMzYsNzcsMTIwMjg4LDc3LDEyMDM0MCw3NywxMjAzOTIsNzcsMTIwNDQ0LDc3LDkyNCw3NywxMjA0OTksNzcsMTIwNTU3LDc3LDEyMDYxNSw3NywxMjA2NzMsNzcsMTIwNzMxLDc3LDEwMTgsNzcsMTE0MTYsNzcsNTA0Nyw3Nyw1NjE2LDc3LDU4NDYsNzcsNDIyMDcsNzcsNjYyMjQsNzcsNjYzMjEsNzcsMTE5ODQ3LDExMCwxMTk4OTksMTEwLDExOTk1MSwxMTAsMTIwMDAzLDExMCwxMjAwNTUsMTEwLDEyMDEwNywxMTAsMTIwMTU5LDExMCwxMjAyMTEsMTEwLDEyMDI2MywxMTAsMTIwMzE1LDExMCwxMjAzNjcsMTEwLDEyMDQxOSwxMTAsMTIwNDcxLDExMCwxNDAwLDExMCwxNDA0LDExMCw2NTMyNiw3OCw4NDY5LDc4LDExOTgyMSw3OCwxMTk4NzMsNzgsMTE5OTI1LDc4LDExOTk3Nyw3OCwxMjAwMjksNzgsMTIwMDgxLDc4LDEyMDE4NSw3OCwxMjAyMzcsNzgsMTIwMjg5LDc4LDEyMDM0MSw3OCwxMjAzOTMsNzgsMTIwNDQ1LDc4LDkyNSw3OCwxMjA1MDAsNzgsMTIwNTU4LDc4LDEyMDYxNiw3OCwxMjA2NzQsNzgsMTIwNzMyLDc4LDExNDE4LDc4LDQyMjA4LDc4LDY2ODM1LDc4LDMwNzQsMTExLDMyMDIsMTExLDMzMzAsMTExLDM0NTgsMTExLDI0MDYsMTExLDI2NjIsMTExLDI3OTAsMTExLDMwNDYsMTExLDMxNzQsMTExLDMzMDIsMTExLDM0MzAsMTExLDM2NjQsMTExLDM3OTIsMTExLDQxNjAsMTExLDE2MzcsMTExLDE3ODEsMTExLDY1MzU5LDExMSw4NTAwLDExMSwxMTk4NDgsMTExLDExOTkwMCwxMTEsMTE5OTUyLDExMSwxMjAwNTYsMTExLDEyMDEwOCwxMTEsMTIwMTYwLDExMSwxMjAyMTIsMTExLDEyMDI2NCwxMTEsMTIwMzE2LDExMSwxMjAzNjgsMTExLDEyMDQyMCwxMTEsMTIwNDcyLDExMSw3NDM5LDExMSw3NDQxLDExMSw0MzgzNywxMTEsOTU5LDExMSwxMjA1MjgsMTExLDEyMDU4NiwxMTEsMTIwNjQ0LDExMSwxMjA3MDIsMTExLDEyMDc2MCwxMTEsOTYzLDExMSwxMjA1MzIsMTExLDEyMDU5MCwxMTEsMTIwNjQ4LDExMSwxMjA3MDYsMTExLDEyMDc2NCwxMTEsMTE0MjMsMTExLDQzNTEsMTExLDE0MTMsMTExLDE1MDUsMTExLDE2MDcsMTExLDEyNjUwMCwxMTEsMTI2NTY0LDExMSwxMjY1OTYsMTExLDY1MjU5LDExMSw2NTI2MCwxMTEsNjUyNTgsMTExLDY1MjU3LDExMSwxNzI2LDExMSw2NDQyOCwxMTEsNjQ0MjksMTExLDY0NDI3LDExMSw2NDQyNiwxMTEsMTcyOSwxMTEsNjQ0MjQsMTExLDY0NDI1LDExMSw2NDQyMywxMTEsNjQ0MjIsMTExLDE3NDksMTExLDMzNjAsMTExLDQxMjUsMTExLDY2Nzk0LDExMSw3MTg4MCwxMTEsNzE4OTUsMTExLDY2NjA0LDExMSwxOTg0LDc5LDI1MzQsNzksMjkxOCw3OSwxMjI5NSw3OSw3MDg2NCw3OSw3MTkwNCw3OSwxMjA3ODIsNzksMTIwNzkyLDc5LDEyMDgwMiw3OSwxMjA4MTIsNzksMTIwODIyLDc5LDEzMDAzMiw3OSw2NTMyNyw3OSwxMTk4MjIsNzksMTE5ODc0LDc5LDExOTkyNiw3OSwxMTk5NzgsNzksMTIwMDMwLDc5LDEyMDA4Miw3OSwxMjAxMzQsNzksMTIwMTg2LDc5LDEyMDIzOCw3OSwxMjAyOTAsNzksMTIwMzQyLDc5LDEyMDM5NCw3OSwxMjA0NDYsNzksOTI3LDc5LDEyMDUwMiw3OSwxMjA1NjAsNzksMTIwNjE4LDc5LDEyMDY3Niw3OSwxMjA3MzQsNzksMTE0MjIsNzksMTM2NSw3OSwxMTYwNCw3OSw0ODE2LDc5LDI4NDgsNzksNjY3NTQsNzksNDIyMjcsNzksNzE4NjEsNzksNjYxOTQsNzksNjYyMTksNzksNjY1NjQsNzksNjY4MzgsNzksOTA3NiwxMTIsNjUzNjAsMTEyLDExOTg0OSwxMTIsMTE5OTAxLDExMiwxMTk5NTMsMTEyLDEyMDAwNSwxMTIsMTIwMDU3LDExMiwxMjAxMDksMTEyLDEyMDE2MSwxMTIsMTIwMjEzLDExMiwxMjAyNjUsMTEyLDEyMDMxNywxMTIsMTIwMzY5LDExMiwxMjA0MjEsMTEyLDEyMDQ3MywxMTIsOTYxLDExMiwxMjA1MzAsMTEyLDEyMDU0NCwxMTIsMTIwNTg4LDExMiwxMjA2MDIsMTEyLDEyMDY0NiwxMTIsMTIwNjYwLDExMiwxMjA3MDQsMTEyLDEyMDcxOCwxMTIsMTIwNzYyLDExMiwxMjA3NzYsMTEyLDExNDI3LDExMiw2NTMyOCw4MCw4NDczLDgwLDExOTgyMyw4MCwxMTk4NzUsODAsMTE5OTI3LDgwLDExOTk3OSw4MCwxMjAwMzEsODAsMTIwMDgzLDgwLDEyMDE4Nyw4MCwxMjAyMzksODAsMTIwMjkxLDgwLDEyMDM0Myw4MCwxMjAzOTUsODAsMTIwNDQ3LDgwLDkyOSw4MCwxMjA1MDQsODAsMTIwNTYyLDgwLDEyMDYyMCw4MCwxMjA2NzgsODAsMTIwNzM2LDgwLDExNDI2LDgwLDUwOTAsODAsNTIyOSw4MCw0MjE5Myw4MCw2NjE5Nyw4MCwxMTk4NTAsMTEzLDExOTkwMiwxMTMsMTE5OTU0LDExMywxMjAwMDYsMTEzLDEyMDA1OCwxMTMsMTIwMTEwLDExMywxMjAxNjIsMTEzLDEyMDIxNCwxMTMsMTIwMjY2LDExMywxMjAzMTgsMTEzLDEyMDM3MCwxMTMsMTIwNDIyLDExMywxMjA0NzQsMTEzLDEzMDcsMTEzLDEzNzksMTEzLDEzODIsMTEzLDg0NzQsODEsMTE5ODI0LDgxLDExOTg3Niw4MSwxMTk5MjgsODEsMTE5OTgwLDgxLDEyMDAzMiw4MSwxMjAwODQsODEsMTIwMTg4LDgxLDEyMDI0MCw4MSwxMjAyOTIsODEsMTIwMzQ0LDgxLDEyMDM5Niw4MSwxMjA0NDgsODEsMTE2MDUsODEsMTE5ODUxLDExNCwxMTk5MDMsMTE0LDExOTk1NSwxMTQsMTIwMDA3LDExNCwxMjAwNTksMTE0LDEyMDExMSwxMTQsMTIwMTYzLDExNCwxMjAyMTUsMTE0LDEyMDI2NywxMTQsMTIwMzE5LDExNCwxMjAzNzEsMTE0LDEyMDQyMywxMTQsMTIwNDc1LDExNCw0Mzg0NywxMTQsNDM4NDgsMTE0LDc0NjIsMTE0LDExMzk3LDExNCw0MzkwNSwxMTQsMTE5MzE4LDgyLDg0NzUsODIsODQ3Niw4Miw4NDc3LDgyLDExOTgyNSw4MiwxMTk4NzcsODIsMTE5OTI5LDgyLDEyMDAzMyw4MiwxMjAxODksODIsMTIwMjQxLDgyLDEyMDI5Myw4MiwxMjAzNDUsODIsMTIwMzk3LDgyLDEyMDQ0OSw4Miw0MjIsODIsNTAyNSw4Miw1MDc0LDgyLDY2NzQwLDgyLDU1MTEsODIsNDIyMTEsODIsOTQwMDUsODIsNjUzNjMsMTE1LDExOTg1MiwxMTUsMTE5OTA0LDExNSwxMTk5NTYsMTE1LDEyMDAwOCwxMTUsMTIwMDYwLDExNSwxMjAxMTIsMTE1LDEyMDE2NCwxMTUsMTIwMjE2LDExNSwxMjAyNjgsMTE1LDEyMDMyMCwxMTUsMTIwMzcyLDExNSwxMjA0MjQsMTE1LDEyMDQ3NiwxMTUsNDI4MDEsMTE1LDQ0NSwxMTUsMTEwOSwxMTUsNDM5NDYsMTE1LDcxODczLDExNSw2NjYzMiwxMTUsNjUzMzEsODMsMTE5ODI2LDgzLDExOTg3OCw4MywxMTk5MzAsODMsMTE5OTgyLDgzLDEyMDAzNCw4MywxMjAwODYsODMsMTIwMTM4LDgzLDEyMDE5MCw4MywxMjAyNDIsODMsMTIwMjk0LDgzLDEyMDM0Niw4MywxMjAzOTgsODMsMTIwNDUwLDgzLDEwMjksODMsMTM1OSw4Myw1MDc3LDgzLDUwODIsODMsNDIyMTAsODMsOTQwMTAsODMsNjYxOTgsODMsNjY1OTIsODMsMTE5ODUzLDExNiwxMTk5MDUsMTE2LDExOTk1NywxMTYsMTIwMDA5LDExNiwxMjAwNjEsMTE2LDEyMDExMywxMTYsMTIwMTY1LDExNiwxMjAyMTcsMTE2LDEyMDI2OSwxMTYsMTIwMzIxLDExNiwxMjAzNzMsMTE2LDEyMDQyNSwxMTYsMTIwNDc3LDExNiw4ODY4LDg0LDEwMjAxLDg0LDEyODg3Miw4NCw2NTMzMiw4NCwxMTk4MjcsODQsMTE5ODc5LDg0LDExOTkzMSw4NCwxMTk5ODMsODQsMTIwMDM1LDg0LDEyMDA4Nyw4NCwxMjAxMzksODQsMTIwMTkxLDg0LDEyMDI0Myw4NCwxMjAyOTUsODQsMTIwMzQ3LDg0LDEyMDM5OSw4NCwxMjA0NTEsODQsOTMyLDg0LDEyMDUwNyw4NCwxMjA1NjUsODQsMTIwNjIzLDg0LDEyMDY4MSw4NCwxMjA3MzksODQsMTE0MzAsODQsNTAyNiw4NCw0MjE5Niw4NCw5Mzk2Miw4NCw3MTg2OCw4NCw2NjE5OSw4NCw2NjIyNSw4NCw2NjMyNSw4NCwxMTk4NTQsMTE3LDExOTkwNiwxMTcsMTE5OTU4LDExNywxMjAwMTAsMTE3LDEyMDA2MiwxMTcsMTIwMTE0LDExNywxMjAxNjYsMTE3LDEyMDIxOCwxMTcsMTIwMjcwLDExNywxMjAzMjIsMTE3LDEyMDM3NCwxMTcsMTIwNDI2LDExNywxMjA0NzgsMTE3LDQyOTExLDExNyw3NDUyLDExNyw0Mzg1NCwxMTcsNDM4NTgsMTE3LDY1MSwxMTcsOTY1LDExNywxMjA1MzQsMTE3LDEyMDU5MiwxMTcsMTIwNjUwLDExNywxMjA3MDgsMTE3LDEyMDc2NiwxMTcsMTQwNSwxMTcsNjY4MDYsMTE3LDcxODk2LDExNyw4NzQ2LDg1LDg4OTksODUsMTE5ODI4LDg1LDExOTg4MCw4NSwxMTk5MzIsODUsMTE5OTg0LDg1LDEyMDAzNiw4NSwxMjAwODgsODUsMTIwMTQwLDg1LDEyMDE5Miw4NSwxMjAyNDQsODUsMTIwMjk2LDg1LDEyMDM0OCw4NSwxMjA0MDAsODUsMTIwNDUyLDg1LDEzNTcsODUsNDYwOCw4NSw2Njc2Niw4NSw1MTk2LDg1LDQyMjI4LDg1LDk0MDE4LDg1LDcxODY0LDg1LDg3NDQsMTE4LDg4OTcsMTE4LDY1MzY2LDExOCw4NTY0LDExOCwxMTk4NTUsMTE4LDExOTkwNywxMTgsMTE5OTU5LDExOCwxMjAwMTEsMTE4LDEyMDA2MywxMTgsMTIwMTE1LDExOCwxMjAxNjcsMTE4LDEyMDIxOSwxMTgsMTIwMjcxLDExOCwxMjAzMjMsMTE4LDEyMDM3NSwxMTgsMTIwNDI3LDExOCwxMjA0NzksMTE4LDc0NTYsMTE4LDk1NywxMTgsMTIwNTI2LDExOCwxMjA1ODQsMTE4LDEyMDY0MiwxMTgsMTIwNzAwLDExOCwxMjA3NTgsMTE4LDExNDEsMTE4LDE0OTYsMTE4LDcxNDMwLDExOCw0Mzk0NSwxMTgsNzE4NzIsMTE4LDExOTMwOSw4NiwxNjM5LDg2LDE3ODMsODYsODU0OCw4NiwxMTk4MjksODYsMTE5ODgxLDg2LDExOTkzMyw4NiwxMTk5ODUsODYsMTIwMDM3LDg2LDEyMDA4OSw4NiwxMjAxNDEsODYsMTIwMTkzLDg2LDEyMDI0NSw4NiwxMjAyOTcsODYsMTIwMzQ5LDg2LDEyMDQwMSw4NiwxMjA0NTMsODYsMTE0MCw4NiwxMTU3Niw4Niw1MDgxLDg2LDUxNjcsODYsNDI3MTksODYsNDIyMTQsODYsOTM5NjAsODYsNzE4NDAsODYsNjY4NDUsODYsNjIzLDExOSwxMTk4NTYsMTE5LDExOTkwOCwxMTksMTE5OTYwLDExOSwxMjAwMTIsMTE5LDEyMDA2NCwxMTksMTIwMTE2LDExOSwxMjAxNjgsMTE5LDEyMDIyMCwxMTksMTIwMjcyLDExOSwxMjAzMjQsMTE5LDEyMDM3NiwxMTksMTIwNDI4LDExOSwxMjA0ODAsMTE5LDc0NTcsMTE5LDExMjEsMTE5LDEzMDksMTE5LDEzNzcsMTE5LDcxNDM0LDExOSw3MTQzOCwxMTksNzE0MzksMTE5LDQzOTA3LDExOSw3MTkxOSw4Nyw3MTkxMCw4NywxMTk4MzAsODcsMTE5ODgyLDg3LDExOTkzNCw4NywxMTk5ODYsODcsMTIwMDM4LDg3LDEyMDA5MCw4NywxMjAxNDIsODcsMTIwMTk0LDg3LDEyMDI0Niw4NywxMjAyOTgsODcsMTIwMzUwLDg3LDEyMDQwMiw4NywxMjA0NTQsODcsMTMwOCw4Nyw1MDQzLDg3LDUwNzYsODcsNDIyMTgsODcsNTc0MiwxMjAsMTA1MzksMTIwLDEwNTQwLDEyMCwxMDc5OSwxMjAsNjUzNjgsMTIwLDg1NjksMTIwLDExOTg1NywxMjAsMTE5OTA5LDEyMCwxMTk5NjEsMTIwLDEyMDAxMywxMjAsMTIwMDY1LDEyMCwxMjAxMTcsMTIwLDEyMDE2OSwxMjAsMTIwMjIxLDEyMCwxMjAyNzMsMTIwLDEyMDMyNSwxMjAsMTIwMzc3LDEyMCwxMjA0MjksMTIwLDEyMDQ4MSwxMjAsNTQ0MSwxMjAsNTUwMSwxMjAsNTc0MSw4OCw5NTg3LDg4LDY2MzM4LDg4LDcxOTE2LDg4LDY1MzM2LDg4LDg1NTMsODgsMTE5ODMxLDg4LDExOTg4Myw4OCwxMTk5MzUsODgsMTE5OTg3LDg4LDEyMDAzOSw4OCwxMjAwOTEsODgsMTIwMTQzLDg4LDEyMDE5NSw4OCwxMjAyNDcsODgsMTIwMjk5LDg4LDEyMDM1MSw4OCwxMjA0MDMsODgsMTIwNDU1LDg4LDQyOTMxLDg4LDkzNSw4OCwxMjA1MTAsODgsMTIwNTY4LDg4LDEyMDYyNiw4OCwxMjA2ODQsODgsMTIwNzQyLDg4LDExNDM2LDg4LDExNjEzLDg4LDU4MTUsODgsNDIyMTksODgsNjYxOTIsODgsNjYyMjgsODgsNjYzMjcsODgsNjY4NTUsODgsNjExLDEyMSw3NTY0LDEyMSw2NTM2OSwxMjEsMTE5ODU4LDEyMSwxMTk5MTAsMTIxLDExOTk2MiwxMjEsMTIwMDE0LDEyMSwxMjAwNjYsMTIxLDEyMDExOCwxMjEsMTIwMTcwLDEyMSwxMjAyMjIsMTIxLDEyMDI3NCwxMjEsMTIwMzI2LDEyMSwxMjAzNzgsMTIxLDEyMDQzMCwxMjEsMTIwNDgyLDEyMSw2NTUsMTIxLDc5MzUsMTIxLDQzODY2LDEyMSw5NDcsMTIxLDg1MDksMTIxLDEyMDUxNiwxMjEsMTIwNTc0LDEyMSwxMjA2MzIsMTIxLDEyMDY5MCwxMjEsMTIwNzQ4LDEyMSwxMTk5LDEyMSw0MzI3LDEyMSw3MTkwMCwxMjEsNjUzMzcsODksMTE5ODMyLDg5LDExOTg4NCw4OSwxMTk5MzYsODksMTE5OTg4LDg5LDEyMDA0MCw4OSwxMjAwOTIsODksMTIwMTQ0LDg5LDEyMDE5Niw4OSwxMjAyNDgsODksMTIwMzAwLDg5LDEyMDM1Miw4OSwxMjA0MDQsODksMTIwNDU2LDg5LDkzMyw4OSw5NzgsODksMTIwNTA4LDg5LDEyMDU2Niw4OSwxMjA2MjQsODksMTIwNjgyLDg5LDEyMDc0MCw4OSwxMTQzMiw4OSwxMTk4LDg5LDUwMzMsODksNTA1Myw4OSw0MjIyMCw4OSw5NDAxOSw4OSw3MTg0NCw4OSw2NjIyNiw4OSwxMTk4NTksMTIyLDExOTkxMSwxMjIsMTE5OTYzLDEyMiwxMjAwMTUsMTIyLDEyMDA2NywxMjIsMTIwMTE5LDEyMiwxMjAxNzEsMTIyLDEyMDIyMywxMjIsMTIwMjc1LDEyMiwxMjAzMjcsMTIyLDEyMDM3OSwxMjIsMTIwNDMxLDEyMiwxMjA0ODMsMTIyLDc0NTgsMTIyLDQzOTIzLDEyMiw3MTg3NiwxMjIsNjYyOTMsOTAsNzE5MDksOTAsNjUzMzgsOTAsODQ4NCw5MCw4NDg4LDkwLDExOTgzMyw5MCwxMTk4ODUsOTAsMTE5OTM3LDkwLDExOTk4OSw5MCwxMjAwNDEsOTAsMTIwMTk3LDkwLDEyMDI0OSw5MCwxMjAzMDEsOTAsMTIwMzUzLDkwLDEyMDQwNSw5MCwxMjA0NTcsOTAsOTE4LDkwLDEyMDQ5Myw5MCwxMjA1NTEsOTAsMTIwNjA5LDkwLDEyMDY2Nyw5MCwxMjA3MjUsOTAsNTA1OSw5MCw0MjIwNCw5MCw3MTg0OSw5MCw2NTI4MiwzNCw2NTI4NCwzNiw2NTI4NSwzNyw2NTI4NiwzOCw2NTI5MCw0Miw2NTI5MSw0Myw2NTI5NCw0Niw2NTI5NSw0Nyw2NTI5Niw0OCw2NTI5Nyw0OSw2NTI5OCw1MCw2NTI5OSw1MSw2NTMwMCw1Miw2NTMwMSw1Myw2NTMwMiw1NCw2NTMwMyw1NSw2NTMwNCw1Niw2NTMwNSw1Nyw2NTMwOCw2MCw2NTMwOSw2MSw2NTMxMCw2Miw2NTMxMiw2NCw2NTMxNiw2OCw2NTMxOCw3MCw2NTMxOSw3MSw2NTMyNCw3Niw2NTMyOSw4MSw2NTMzMCw4Miw2NTMzMyw4NSw2NTMzNCw4Niw2NTMzNSw4Nyw2NTM0Myw5NSw2NTM0Niw5OCw2NTM0OCwxMDAsNjUzNTAsMTAyLDY1MzU1LDEwNyw2NTM1NywxMDksNjUzNTgsMTEwLDY1MzYxLDExMyw2NTM2MiwxMTQsNjUzNjQsMTE2LDY1MzY1LDExNyw2NTM2NywxMTksNjUzNzAsMTIyLDY1MzcxLDEyMyw2NTM3MywxMjUsMTE5ODQ2LDEwOV0sIl9kZWZhdWx0IjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImNzIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJkZSI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZXMiOls4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSwxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZnIiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjQ1LDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiaXQiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImphIjpbODIxMSw0NSw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyOTIsNDQsNjUzMDcsNTldLCJrbyI6WzgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicGwiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicHQtQlIiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicXBzLXBsb2MiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicnUiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDMwNSwxMDUsOTIxLDczLDEwMDksMTEyLDIxNSwxMjAsNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJ0ciI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJ6aC1oYW5zIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1Mjg4LDQwLDY1Mjg5LDQxXSwiemgtaGFudCI6WzgyMTEsNDUsNjUzNzQsMTI2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTMwNyw1OV19JykpKSxlZS5jYWNoZT1uZXcgY2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5mbj1lLHRoaXMubGFzdENhY2hlPXZvaWQgMCx0aGlzLmxhc3RBcmdLZXk9dm9pZCAwfWdldChlKXtjb25zdCB0PUpTT04uc3RyaW5naWZ5KGUpO3JldHVybiB0aGlzLmxhc3RBcmdLZXkhPT10JiYodGhpcy5sYXN0QXJnS2V5PXQsdGhpcy5sYXN0Q2FjaGU9dGhpcy5mbihlKSksdGhpcy5sYXN0Q2FjaGV9fSgoZT0+e2Z1bmN0aW9uIHQoZSl7Y29uc3QgdD1uZXcgTWFwO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bis9Mil0LnNldChlW25dLGVbbisxXSk7cmV0dXJuIHR9ZnVuY3Rpb24gbihlLHQpe2lmKCFlKXJldHVybiB0O2NvbnN0IG49bmV3IE1hcDtmb3IoY29uc3RbaSxyXW9mIGUpdC5oYXMoaSkmJm4uc2V0KGkscik7cmV0dXJuIG59Y29uc3QgaT1KLmFtYmlndW91c0NoYXJhY3RlckRhdGEudmFsdWU7bGV0IHIsYT1lLmZpbHRlcigoZT0+IWUuc3RhcnRzV2l0aCgiXyIpJiZlIGluIGkpKTswPT09YS5sZW5ndGgmJihhPVsiX2RlZmF1bHQiXSk7Zm9yKGNvbnN0IGUgb2YgYSl7cj1uKHIsdChpW2VdKSl9Y29uc3Qgbz1mdW5jdGlvbihlLHQpe2NvbnN0IG49bmV3IE1hcChlKTtmb3IoY29uc3RbZSxpXW9mIHQpbi5zZXQoZSxpKTtyZXR1cm4gbn0odChpLl9jb21tb24pLHIpO3JldHVybiBuZXcgZWUobyl9KSksZWUuX2xvY2FsZXM9bmV3ICQoKCgpPT5PYmplY3Qua2V5cyhlZS5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhLnZhbHVlKS5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSkpKSk7Y2xhc3MgdGV7c3RhdGljIGdldFJhd0RhdGEoKXtyZXR1cm4gSlNPTi5wYXJzZSgiWzksMTAsMTEsMTIsMTMsMzIsMTI3LDE2MCwxNzMsODQ3LDE1NjQsNDQ0Nyw0NDQ4LDYwNjgsNjA2OSw2MTU1LDYxNTYsNjE1Nyw2MTU4LDczNTUsNzM1Niw4MTkyLDgxOTMsODE5NCw4MTk1LDgxOTYsODE5Nyw4MTk4LDgxOTksODIwMCw4MjAxLDgyMDIsODIwMyw4MjA0LDgyMDUsODIwNiw4MjA3LDgyMzQsODIzNSw4MjM2LDgyMzcsODIzOCw4MjM5LDgyODcsODI4OCw4Mjg5LDgyOTAsODI5MSw4MjkyLDgyOTMsODI5NCw4Mjk1LDgyOTYsODI5Nyw4Mjk4LDgyOTksODMwMCw4MzAxLDgzMDIsODMwMywxMDI0MCwxMjI4OCwxMjY0NCw2NTAyNCw2NTAyNSw2NTAyNiw2NTAyNyw2NTAyOCw2NTAyOSw2NTAzMCw2NTAzMSw2NTAzMiw2NTAzMyw2NTAzNCw2NTAzNSw2NTAzNiw2NTAzNyw2NTAzOCw2NTAzOSw2NTI3OSw2NTQ0MCw2NTUyMCw2NTUyMSw2NTUyMiw2NTUyMyw2NTUyNCw2NTUyNSw2NTUyNiw2NTUyNyw2NTUyOCw2NTUzMiw3ODg0NCwxMTkxNTUsMTE5MTU2LDExOTE1NywxMTkxNTgsMTE5MTU5LDExOTE2MCwxMTkxNjEsMTE5MTYyLDkxNzUwNCw5MTc1MDUsOTE3NTA2LDkxNzUwNyw5MTc1MDgsOTE3NTA5LDkxNzUxMCw5MTc1MTEsOTE3NTEyLDkxNzUxMyw5MTc1MTQsOTE3NTE1LDkxNzUxNiw5MTc1MTcsOTE3NTE4LDkxNzUxOSw5MTc1MjAsOTE3NTIxLDkxNzUyMiw5MTc1MjMsOTE3NTI0LDkxNzUyNSw5MTc1MjYsOTE3NTI3LDkxNzUyOCw5MTc1MjksOTE3NTMwLDkxNzUzMSw5MTc1MzIsOTE3NTMzLDkxNzUzNCw5MTc1MzUsOTE3NTM2LDkxNzUzNyw5MTc1MzgsOTE3NTM5LDkxNzU0MCw5MTc1NDEsOTE3NTQyLDkxNzU0Myw5MTc1NDQsOTE3NTQ1LDkxNzU0Niw5MTc1NDcsOTE3NTQ4LDkxNzU0OSw5MTc1NTAsOTE3NTUxLDkxNzU1Miw5MTc1NTMsOTE3NTU0LDkxNzU1NSw5MTc1NTYsOTE3NTU3LDkxNzU1OCw5MTc1NTksOTE3NTYwLDkxNzU2MSw5MTc1NjIsOTE3NTYzLDkxNzU2NCw5MTc1NjUsOTE3NTY2LDkxNzU2Nyw5MTc1NjgsOTE3NTY5LDkxNzU3MCw5MTc1NzEsOTE3NTcyLDkxNzU3Myw5MTc1NzQsOTE3NTc1LDkxNzU3Niw5MTc1NzcsOTE3NTc4LDkxNzU3OSw5MTc1ODAsOTE3NTgxLDkxNzU4Miw5MTc1ODMsOTE3NTg0LDkxNzU4NSw5MTc1ODYsOTE3NTg3LDkxNzU4OCw5MTc1ODksOTE3NTkwLDkxNzU5MSw5MTc1OTIsOTE3NTkzLDkxNzU5NCw5MTc1OTUsOTE3NTk2LDkxNzU5Nyw5MTc1OTgsOTE3NTk5LDkxNzYwMCw5MTc2MDEsOTE3NjAyLDkxNzYwMyw5MTc2MDQsOTE3NjA1LDkxNzYwNiw5MTc2MDcsOTE3NjA4LDkxNzYwOSw5MTc2MTAsOTE3NjExLDkxNzYxMiw5MTc2MTMsOTE3NjE0LDkxNzYxNSw5MTc2MTYsOTE3NjE3LDkxNzYxOCw5MTc2MTksOTE3NjIwLDkxNzYyMSw5MTc2MjIsOTE3NjIzLDkxNzYyNCw5MTc2MjUsOTE3NjI2LDkxNzYyNyw5MTc2MjgsOTE3NjI5LDkxNzYzMCw5MTc2MzEsOTE3NzYwLDkxNzc2MSw5MTc3NjIsOTE3NzYzLDkxNzc2NCw5MTc3NjUsOTE3NzY2LDkxNzc2Nyw5MTc3NjgsOTE3NzY5LDkxNzc3MCw5MTc3NzEsOTE3NzcyLDkxNzc3Myw5MTc3NzQsOTE3Nzc1LDkxNzc3Niw5MTc3NzcsOTE3Nzc4LDkxNzc3OSw5MTc3ODAsOTE3NzgxLDkxNzc4Miw5MTc3ODMsOTE3Nzg0LDkxNzc4NSw5MTc3ODYsOTE3Nzg3LDkxNzc4OCw5MTc3ODksOTE3NzkwLDkxNzc5MSw5MTc3OTIsOTE3NzkzLDkxNzc5NCw5MTc3OTUsOTE3Nzk2LDkxNzc5Nyw5MTc3OTgsOTE3Nzk5LDkxNzgwMCw5MTc4MDEsOTE3ODAyLDkxNzgwMyw5MTc4MDQsOTE3ODA1LDkxNzgwNiw5MTc4MDcsOTE3ODA4LDkxNzgwOSw5MTc4MTAsOTE3ODExLDkxNzgxMiw5MTc4MTMsOTE3ODE0LDkxNzgxNSw5MTc4MTYsOTE3ODE3LDkxNzgxOCw5MTc4MTksOTE3ODIwLDkxNzgyMSw5MTc4MjIsOTE3ODIzLDkxNzgyNCw5MTc4MjUsOTE3ODI2LDkxNzgyNyw5MTc4MjgsOTE3ODI5LDkxNzgzMCw5MTc4MzEsOTE3ODMyLDkxNzgzMyw5MTc4MzQsOTE3ODM1LDkxNzgzNiw5MTc4MzcsOTE3ODM4LDkxNzgzOSw5MTc4NDAsOTE3ODQxLDkxNzg0Miw5MTc4NDMsOTE3ODQ0LDkxNzg0NSw5MTc4NDYsOTE3ODQ3LDkxNzg0OCw5MTc4NDksOTE3ODUwLDkxNzg1MSw5MTc4NTIsOTE3ODUzLDkxNzg1NCw5MTc4NTUsOTE3ODU2LDkxNzg1Nyw5MTc4NTgsOTE3ODU5LDkxNzg2MCw5MTc4NjEsOTE3ODYyLDkxNzg2Myw5MTc4NjQsOTE3ODY1LDkxNzg2Niw5MTc4NjcsOTE3ODY4LDkxNzg2OSw5MTc4NzAsOTE3ODcxLDkxNzg3Miw5MTc4NzMsOTE3ODc0LDkxNzg3NSw5MTc4NzYsOTE3ODc3LDkxNzg3OCw5MTc4NzksOTE3ODgwLDkxNzg4MSw5MTc4ODIsOTE3ODgzLDkxNzg4NCw5MTc4ODUsOTE3ODg2LDkxNzg4Nyw5MTc4ODgsOTE3ODg5LDkxNzg5MCw5MTc4OTEsOTE3ODkyLDkxNzg5Myw5MTc4OTQsOTE3ODk1LDkxNzg5Niw5MTc4OTcsOTE3ODk4LDkxNzg5OSw5MTc5MDAsOTE3OTAxLDkxNzkwMiw5MTc5MDMsOTE3OTA0LDkxNzkwNSw5MTc5MDYsOTE3OTA3LDkxNzkwOCw5MTc5MDksOTE3OTEwLDkxNzkxMSw5MTc5MTIsOTE3OTEzLDkxNzkxNCw5MTc5MTUsOTE3OTE2LDkxNzkxNyw5MTc5MTgsOTE3OTE5LDkxNzkyMCw5MTc5MjEsOTE3OTIyLDkxNzkyMyw5MTc5MjQsOTE3OTI1LDkxNzkyNiw5MTc5MjcsOTE3OTI4LDkxNzkyOSw5MTc5MzAsOTE3OTMxLDkxNzkzMiw5MTc5MzMsOTE3OTM0LDkxNzkzNSw5MTc5MzYsOTE3OTM3LDkxNzkzOCw5MTc5MzksOTE3OTQwLDkxNzk0MSw5MTc5NDIsOTE3OTQzLDkxNzk0NCw5MTc5NDUsOTE3OTQ2LDkxNzk0Nyw5MTc5NDgsOTE3OTQ5LDkxNzk1MCw5MTc5NTEsOTE3OTUyLDkxNzk1Myw5MTc5NTQsOTE3OTU1LDkxNzk1Niw5MTc5NTcsOTE3OTU4LDkxNzk1OSw5MTc5NjAsOTE3OTYxLDkxNzk2Miw5MTc5NjMsOTE3OTY0LDkxNzk2NSw5MTc5NjYsOTE3OTY3LDkxNzk2OCw5MTc5NjksOTE3OTcwLDkxNzk3MSw5MTc5NzIsOTE3OTczLDkxNzk3NCw5MTc5NzUsOTE3OTc2LDkxNzk3Nyw5MTc5NzgsOTE3OTc5LDkxNzk4MCw5MTc5ODEsOTE3OTgyLDkxNzk4Myw5MTc5ODQsOTE3OTg1LDkxNzk4Niw5MTc5ODcsOTE3OTg4LDkxNzk4OSw5MTc5OTAsOTE3OTkxLDkxNzk5Miw5MTc5OTMsOTE3OTk0LDkxNzk5NSw5MTc5OTYsOTE3OTk3LDkxNzk5OCw5MTc5OTldIil9c3RhdGljIGdldERhdGEoKXtyZXR1cm4gdGhpcy5fZGF0YXx8KHRoaXMuX2RhdGE9bmV3IFNldCh0ZS5nZXRSYXdEYXRhKCkpKSx0aGlzLl9kYXRhfXN0YXRpYyBpc0ludmlzaWJsZUNoYXJhY3RlcihlKXtyZXR1cm4gdGUuZ2V0RGF0YSgpLmhhcyhlKX1zdGF0aWMgZ2V0IGNvZGVQb2ludHMoKXtyZXR1cm4gdGUuZ2V0RGF0YSgpfX10ZS5fZGF0YT12b2lkIDA7Y2xhc3MgbmV7Y29uc3RydWN0b3IoZSx0LG4saSl7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5tZXRob2Q9bix0aGlzLmFyZ3M9aSx0aGlzLnR5cGU9MH19Y2xhc3MgaWV7Y29uc3RydWN0b3IoZSx0LG4saSl7dGhpcy52c1dvcmtlcj1lLHRoaXMuc2VxPXQsdGhpcy5yZXM9bix0aGlzLmVycj1pLHRoaXMudHlwZT0xfX1jbGFzcyByZXtjb25zdHJ1Y3RvcihlLHQsbixpKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50TmFtZT1uLHRoaXMuYXJnPWksdGhpcy50eXBlPTJ9fWNsYXNzIGFle2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50PW4sdGhpcy50eXBlPTN9fWNsYXNzIG9le2NvbnN0cnVjdG9yKGUsdCl7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy50eXBlPTR9fWNsYXNzIHNle2NvbnN0cnVjdG9yKGUpe3RoaXMuX3dvcmtlcklkPS0xLHRoaXMuX2hhbmRsZXI9ZSx0aGlzLl9sYXN0U2VudFJlcT0wLHRoaXMuX3BlbmRpbmdSZXBsaWVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzPW5ldyBNYXAsdGhpcy5fcGVuZGluZ0V2ZW50cz1uZXcgTWFwfXNldFdvcmtlcklkKGUpe3RoaXMuX3dvcmtlcklkPWV9c2VuZE1lc3NhZ2UoZSx0KXtjb25zdCBuPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKTtyZXR1cm4gbmV3IFByb21pc2UoKChpLHIpPT57dGhpcy5fcGVuZGluZ1JlcGxpZXNbbl09e3Jlc29sdmU6aSxyZWplY3Q6cn0sdGhpcy5fc2VuZChuZXcgbmUodGhpcy5fd29ya2VySWQsbixlLHQpKX0pKX1saXN0ZW4oZSx0KXtsZXQgbj1udWxsO2NvbnN0IGk9bmV3IEIoe29uV2lsbEFkZEZpcnN0TGlzdGVuZXI6KCk9PntuPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKSx0aGlzLl9wZW5kaW5nRW1pdHRlcnMuc2V0KG4saSksdGhpcy5fc2VuZChuZXcgcmUodGhpcy5fd29ya2VySWQsbixlLHQpKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXI6KCk9Pnt0aGlzLl9wZW5kaW5nRW1pdHRlcnMuZGVsZXRlKG4pLHRoaXMuX3NlbmQobmV3IG9lKHRoaXMuX3dvcmtlcklkLG4pKSxuPW51bGx9fSk7cmV0dXJuIGkuZXZlbnR9aGFuZGxlTWVzc2FnZShlKXtlJiZlLnZzV29ya2VyJiYoLTEhPT10aGlzLl93b3JrZXJJZCYmZS52c1dvcmtlciE9PXRoaXMuX3dvcmtlcklkfHx0aGlzLl9oYW5kbGVNZXNzYWdlKGUpKX1faGFuZGxlTWVzc2FnZShlKXtzd2l0Y2goZS50eXBlKXtjYXNlIDE6cmV0dXJuIHRoaXMuX2hhbmRsZVJlcGx5TWVzc2FnZShlKTtjYXNlIDA6cmV0dXJuIHRoaXMuX2hhbmRsZVJlcXVlc3RNZXNzYWdlKGUpO2Nhc2UgMjpyZXR1cm4gdGhpcy5faGFuZGxlU3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpO2Nhc2UgMzpyZXR1cm4gdGhpcy5faGFuZGxlRXZlbnRNZXNzYWdlKGUpO2Nhc2UgNDpyZXR1cm4gdGhpcy5faGFuZGxlVW5zdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSl9fV9oYW5kbGVSZXBseU1lc3NhZ2UoZSl7aWYoIXRoaXMuX3BlbmRpbmdSZXBsaWVzW2Uuc2VxXSlyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oIkdvdCByZXBseSB0byB1bmtub3duIHNlcSIpO2NvbnN0IHQ9dGhpcy5fcGVuZGluZ1JlcGxpZXNbZS5zZXFdO2lmKGRlbGV0ZSB0aGlzLl9wZW5kaW5nUmVwbGllc1tlLnNlcV0sZS5lcnIpe2xldCBuPWUuZXJyO3JldHVybiBlLmVyci4kaXNFcnJvciYmKG49bmV3IEVycm9yLG4ubmFtZT1lLmVyci5uYW1lLG4ubWVzc2FnZT1lLmVyci5tZXNzYWdlLG4uc3RhY2s9ZS5lcnIuc3RhY2spLHZvaWQgdC5yZWplY3Qobil9dC5yZXNvbHZlKGUucmVzKX1faGFuZGxlUmVxdWVzdE1lc3NhZ2UoZSl7Y29uc3QgdD1lLnJlcTt0aGlzLl9oYW5kbGVyLmhhbmRsZU1lc3NhZ2UoZS5tZXRob2QsZS5hcmdzKS50aGVuKChlPT57dGhpcy5fc2VuZChuZXcgaWUodGhpcy5fd29ya2VySWQsdCxlLHZvaWQgMCkpfSksKGU9PntlLmRldGFpbCBpbnN0YW5jZW9mIEVycm9yJiYoZS5kZXRhaWw9bihlLmRldGFpbCkpLHRoaXMuX3NlbmQobmV3IGllKHRoaXMuX3dvcmtlcklkLHQsdm9pZCAwLG4oZSkpKX0pKX1faGFuZGxlU3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpe2NvbnN0IHQ9ZS5yZXEsbj10aGlzLl9oYW5kbGVyLmhhbmRsZUV2ZW50KGUuZXZlbnROYW1lLGUuYXJnKSgoZT0+e3RoaXMuX3NlbmQobmV3IGFlKHRoaXMuX3dvcmtlcklkLHQsZSkpfSkpO3RoaXMuX3BlbmRpbmdFdmVudHMuc2V0KHQsbil9X2hhbmRsZUV2ZW50TWVzc2FnZShlKXt0aGlzLl9wZW5kaW5nRW1pdHRlcnMuaGFzKGUucmVxKT90aGlzLl9wZW5kaW5nRW1pdHRlcnMuZ2V0KGUucmVxKS5maXJlKGUuZXZlbnQpOmNvbnNvbGUud2FybigiR290IGV2ZW50IGZvciB1bmtub3duIHJlcSIpfV9oYW5kbGVVbnN1YnNjcmliZUV2ZW50TWVzc2FnZShlKXt0aGlzLl9wZW5kaW5nRXZlbnRzLmhhcyhlLnJlcSk/KHRoaXMuX3BlbmRpbmdFdmVudHMuZ2V0KGUucmVxKS5kaXNwb3NlKCksdGhpcy5fcGVuZGluZ0V2ZW50cy5kZWxldGUoZS5yZXEpKTpjb25zb2xlLndhcm4oIkdvdCB1bnN1YnNjcmliZSBmb3IgdW5rbm93biByZXEiKX1fc2VuZChlKXtjb25zdCB0PVtdO2lmKDA9PT1lLnR5cGUpZm9yKGxldCBuPTA7bjxlLmFyZ3MubGVuZ3RoO24rKyllLmFyZ3Nbbl1pbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZ0LnB1c2goZS5hcmdzW25dKTtlbHNlIDE9PT1lLnR5cGUmJmUucmVzIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJnQucHVzaChlLnJlcyk7dGhpcy5faGFuZGxlci5zZW5kTWVzc2FnZShlLHQpfX1mdW5jdGlvbiBsZShlKXtyZXR1cm4ibyI9PT1lWzBdJiYibiI9PT1lWzFdJiZYKGUuY2hhckNvZGVBdCgyKSl9ZnVuY3Rpb24gY2UoZSl7cmV0dXJuL15vbkR5bmFtaWMvLnRlc3QoZSkmJlgoZS5jaGFyQ29kZUF0KDkpKX1jbGFzcyBoZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT10LHRoaXMuX3JlcXVlc3RIYW5kbGVyPW51bGwsdGhpcy5fcHJvdG9jb2w9bmV3IHNlKHtzZW5kTWVzc2FnZToodCxuKT0+e2UodCxuKX0saGFuZGxlTWVzc2FnZTooZSx0KT0+dGhpcy5faGFuZGxlTWVzc2FnZShlLHQpLGhhbmRsZUV2ZW50OihlLHQpPT50aGlzLl9oYW5kbGVFdmVudChlLHQpfSl9b25tZXNzYWdlKGUpe3RoaXMuX3Byb3RvY29sLmhhbmRsZU1lc3NhZ2UoZSl9X2hhbmRsZU1lc3NhZ2UoZSx0KXtpZigiJGluaXRpYWxpemUiPT09ZSlyZXR1cm4gdGhpcy5pbml0aWFsaXplKHRbMF0sdFsxXSx0WzJdLHRbM10pO2lmKCF0aGlzLl9yZXF1ZXN0SGFuZGxlcnx8ImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK2UpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9yZXF1ZXN0SGFuZGxlcltlXS5hcHBseSh0aGlzLl9yZXF1ZXN0SGFuZGxlcix0KSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfX1faGFuZGxlRXZlbnQoZSx0KXtpZighdGhpcy5fcmVxdWVzdEhhbmRsZXIpdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIik7aWYoY2UoZSkpe2NvbnN0IG49dGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0uY2FsbCh0aGlzLl9yZXF1ZXN0SGFuZGxlcix0KTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZHluYW1pYyBldmVudCAke2V9IG9uIHJlcXVlc3QgaGFuZGxlci5gKTtyZXR1cm4gbn1pZihsZShlKSl7Y29uc3QgdD10aGlzLl9yZXF1ZXN0SGFuZGxlcltlXTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZXZlbnQgJHtlfSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIHR9dGhyb3cgbmV3IEVycm9yKGBNYWxmb3JtZWQgZXZlbnQgbmFtZSAke2V9YCl9aW5pdGlhbGl6ZShlLHQsbixpKXt0aGlzLl9wcm90b2NvbC5zZXRXb3JrZXJJZChlKTtjb25zdCByPWZ1bmN0aW9uKGUsdCxuKXtjb25zdCBpPWU9PmZ1bmN0aW9uKCl7Y29uc3Qgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIHQoZSxuKX0scj1lPT5mdW5jdGlvbih0KXtyZXR1cm4gbihlLHQpfSxhPXt9O2Zvcihjb25zdCB0IG9mIGUpY2UodCk/YVt0XT1yKHQpOmxlKHQpP2FbdF09bih0LHZvaWQgMCk6YVt0XT1pKHQpO3JldHVybiBhfShpLCgoZSx0KT0+dGhpcy5fcHJvdG9jb2wuc2VuZE1lc3NhZ2UoZSx0KSksKChlLHQpPT50aGlzLl9wcm90b2NvbC5saXN0ZW4oZSx0KSkpO3JldHVybiB0aGlzLl9yZXF1ZXN0SGFuZGxlckZhY3Rvcnk/KHRoaXMuX3JlcXVlc3RIYW5kbGVyPXRoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeShyKSxQcm9taXNlLnJlc29sdmUoRyh0aGlzLl9yZXF1ZXN0SGFuZGxlcikpKToodCYmKHZvaWQgMCE9PXQuYmFzZVVybCYmZGVsZXRlIHQuYmFzZVVybCx2b2lkIDAhPT10LnBhdGhzJiZ2b2lkIDAhPT10LnBhdGhzLnZzJiZkZWxldGUgdC5wYXRocy52cyx2b2lkIDAhPT10eXBlb2YgdC50cnVzdGVkVHlwZXNQb2xpY3kmJmRlbGV0ZSB0LnRydXN0ZWRUeXBlc1BvbGljeSx0LmNhdGNoRXJyb3I9ITAsZ2xvYmFsVGhpcy5yZXF1aXJlLmNvbmZpZyh0KSksbmV3IFByb21pc2UoKChlLHQpPT57KDAsZ2xvYmFsVGhpcy5yZXF1aXJlKShbbl0sKG49Pnt0aGlzLl9yZXF1ZXN0SGFuZGxlcj1uLmNyZWF0ZShyKSx0aGlzLl9yZXF1ZXN0SGFuZGxlcj9lKEcodGhpcy5fcmVxdWVzdEhhbmRsZXIpKTp0KG5ldyBFcnJvcigiTm8gUmVxdWVzdEhhbmRsZXIhIikpfSksdCl9KSkpfX1jbGFzcyBkZXtjb25zdHJ1Y3RvcihlLHQsbixpKXt0aGlzLm9yaWdpbmFsU3RhcnQ9ZSx0aGlzLm9yaWdpbmFsTGVuZ3RoPXQsdGhpcy5tb2RpZmllZFN0YXJ0PW4sdGhpcy5tb2RpZmllZExlbmd0aD1pfWdldE9yaWdpbmFsRW5kKCl7cmV0dXJuIHRoaXMub3JpZ2luYWxTdGFydCt0aGlzLm9yaWdpbmFsTGVuZ3RofWdldE1vZGlmaWVkRW5kKCl7cmV0dXJuIHRoaXMubW9kaWZpZWRTdGFydCt0aGlzLm1vZGlmaWVkTGVuZ3RofX1mdW5jdGlvbiB1ZShlLHQpe3JldHVybih0PDw1KS10K2V8MH1mdW5jdGlvbiBtZShlLHQpe3Q9dWUoMTQ5NDE3LHQpO2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7bjxpO24rKyl0PXVlKGUuY2hhckNvZGVBdChuKSx0KTtyZXR1cm4gdH1jbGFzcyBwZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnNvdXJjZT1lfWdldEVsZW1lbnRzKCl7Y29uc3QgZT10aGlzLnNvdXJjZSx0PW5ldyBJbnQzMkFycmF5KGUubGVuZ3RoKTtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKyspdFtuXT1lLmNoYXJDb2RlQXQobik7cmV0dXJuIHR9fWZ1bmN0aW9uIGZlKGUsdCxuKXtyZXR1cm4gbmV3IHZlKG5ldyBwZShlKSxuZXcgcGUodCkpLkNvbXB1dGVEaWZmKG4pLmNoYW5nZXN9Y2xhc3MgZ2V7c3RhdGljIEFzc2VydChlLHQpe2lmKCFlKXRocm93IG5ldyBFcnJvcih0KX19Y2xhc3MgYmV7c3RhdGljIENvcHkoZSx0LG4saSxyKXtmb3IobGV0IGE9MDthPHI7YSsrKW5baSthXT1lW3QrYV19c3RhdGljIENvcHkyKGUsdCxuLGkscil7Zm9yKGxldCBhPTA7YTxyO2ErKyluW2krYV09ZVt0K2FdfX1jbGFzcyBfZXtjb25zdHJ1Y3Rvcigpe3RoaXMubV9jaGFuZ2VzPVtdLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTB9TWFya05leHRDaGFuZ2UoKXsodGhpcy5tX29yaWdpbmFsQ291bnQ+MHx8dGhpcy5tX21vZGlmaWVkQ291bnQ+MCkmJnRoaXMubV9jaGFuZ2VzLnB1c2gobmV3IGRlKHRoaXMubV9vcmlnaW5hbFN0YXJ0LHRoaXMubV9vcmlnaW5hbENvdW50LHRoaXMubV9tb2RpZmllZFN0YXJ0LHRoaXMubV9tb2RpZmllZENvdW50KSksdGhpcy5tX29yaWdpbmFsQ291bnQ9MCx0aGlzLm1fbW9kaWZpZWRDb3VudD0wLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNH1BZGRPcmlnaW5hbEVsZW1lbnQoZSx0KXt0aGlzLm1fb3JpZ2luYWxTdGFydD1NYXRoLm1pbih0aGlzLm1fb3JpZ2luYWxTdGFydCxlKSx0aGlzLm1fbW9kaWZpZWRTdGFydD1NYXRoLm1pbih0aGlzLm1fbW9kaWZpZWRTdGFydCx0KSx0aGlzLm1fb3JpZ2luYWxDb3VudCsrfUFkZE1vZGlmaWVkRWxlbWVudChlLHQpe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LGUpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LHQpLHRoaXMubV9tb2RpZmllZENvdW50Kyt9Z2V0Q2hhbmdlcygpe3JldHVybih0aGlzLm1fb3JpZ2luYWxDb3VudD4wfHx0aGlzLm1fbW9kaWZpZWRDb3VudD4wKSYmdGhpcy5NYXJrTmV4dENoYW5nZSgpLHRoaXMubV9jaGFuZ2VzfWdldFJldmVyc2VDaGFuZ2VzKCl7cmV0dXJuKHRoaXMubV9vcmlnaW5hbENvdW50PjB8fHRoaXMubV9tb2RpZmllZENvdW50PjApJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXMucmV2ZXJzZSgpLHRoaXMubV9jaGFuZ2VzfX1jbGFzcyB2ZXtjb25zdHJ1Y3RvcihlLHQsbj1udWxsKXt0aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZT1uLHRoaXMuX29yaWdpbmFsU2VxdWVuY2U9ZSx0aGlzLl9tb2RpZmllZFNlcXVlbmNlPXQ7Y29uc3RbaSxyLGFdPXZlLl9nZXRFbGVtZW50cyhlKSxbbyxzLGxdPXZlLl9nZXRFbGVtZW50cyh0KTt0aGlzLl9oYXNTdHJpbmdzPWEmJmwsdGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50cz1pLHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2g9cix0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzPW8sdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaD1zLHRoaXMubV9mb3J3YXJkSGlzdG9yeT1bXSx0aGlzLm1fcmV2ZXJzZUhpc3Rvcnk9W119c3RhdGljIF9pc1N0cmluZ0FycmF5KGUpe3JldHVybiBlLmxlbmd0aD4wJiYic3RyaW5nIj09dHlwZW9mIGVbMF19c3RhdGljIF9nZXRFbGVtZW50cyhlKXtjb25zdCB0PWUuZ2V0RWxlbWVudHMoKTtpZih2ZS5faXNTdHJpbmdBcnJheSh0KSl7Y29uc3QgZT1uZXcgSW50MzJBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKWVbbl09bWUodFtuXSwwKTtyZXR1cm5bdCxlLCEwXX1yZXR1cm4gdCBpbnN0YW5jZW9mIEludDMyQXJyYXk/W1tdLHQsITFdOltbXSxuZXcgSW50MzJBcnJheSh0KSwhMV19RWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1t0XSl9RWxlbWVudHNBcmVTdHJpY3RFcXVhbChlLHQpe2lmKCF0aGlzLkVsZW1lbnRzQXJlRXF1YWwoZSx0KSlyZXR1cm4hMTtyZXR1cm4gdmUuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fb3JpZ2luYWxTZXF1ZW5jZSxlKT09PXZlLl9nZXRTdHJpY3RFbGVtZW50KHRoaXMuX21vZGlmaWVkU2VxdWVuY2UsdCl9c3RhdGljIF9nZXRTdHJpY3RFbGVtZW50KGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0U3RyaWN0RWxlbWVudD9lLmdldFN0cmljdEVsZW1lbnQodCk6bnVsbH1PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwoZSx0KXtyZXR1cm4gdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaFtlXT09PXRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbdF0mJighdGhpcy5faGFzU3RyaW5nc3x8dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1tlXT09PXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbdF0pfU1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1t0XSl9Q29tcHV0ZURpZmYoZSl7cmV0dXJuIHRoaXMuX0NvbXB1dGVEaWZmKDAsdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMSwwLHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTEsZSl9X0NvbXB1dGVEaWZmKGUsdCxuLGkscil7Y29uc3QgYT1bITFdO2xldCBvPXRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUoZSx0LG4saSxhKTtyZXR1cm4gciYmKG89dGhpcy5QcmV0dGlmeUNoYW5nZXMobykpLHtxdWl0RWFybHk6YVswXSxjaGFuZ2VzOm99fUNvbXB1dGVEaWZmUmVjdXJzaXZlKGUsdCxuLGkscil7Zm9yKHJbMF09ITE7ZTw9dCYmbjw9aSYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKGUsbik7KWUrKyxuKys7Zm9yKDt0Pj1lJiZpPj1uJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwodCxpKTspdC0tLGktLTtpZihlPnR8fG4+aSl7bGV0IHI7cmV0dXJuIG48PWk/KGdlLkFzc2VydChlPT09dCsxLCJvcmlnaW5hbFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gb3JpZ2luYWxFbmQiKSxyPVtuZXcgZGUoZSwwLG4saS1uKzEpXSk6ZTw9dD8oZ2UuQXNzZXJ0KG49PT1pKzEsIm1vZGlmaWVkU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBtb2RpZmllZEVuZCIpLHI9W25ldyBkZShlLHQtZSsxLG4sMCldKTooZ2UuQXNzZXJ0KGU9PT10KzEsIm9yaWdpbmFsU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBvcmlnaW5hbEVuZCIpLGdlLkFzc2VydChuPT09aSsxLCJtb2RpZmllZFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gbW9kaWZpZWRFbmQiKSxyPVtdKSxyfWNvbnN0IGE9WzBdLG89WzBdLHM9dGhpcy5Db21wdXRlUmVjdXJzaW9uUG9pbnQoZSx0LG4saSxhLG8sciksbD1hWzBdLGM9b1swXTtpZihudWxsIT09cylyZXR1cm4gcztpZighclswXSl7Y29uc3QgYT10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKGUsbCxuLGMscik7bGV0IG89W107cmV0dXJuIG89clswXT9bbmV3IGRlKGwrMSx0LShsKzEpKzEsYysxLGktKGMrMSkrMSldOnRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUobCsxLHQsYysxLGksciksdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXMoYSxvKX1yZXR1cm5bbmV3IGRlKGUsdC1lKzEsbixpLW4rMSldfVdBTEtUUkFDRShlLHQsbixpLHIsYSxvLHMsbCxjLGgsZCx1LG0scCxmLGcsYil7bGV0IF89bnVsbCx2PW51bGwsdz1uZXcgX2UseT10LFQ9bixrPXVbMF0tZlswXS1pLFM9LTEwNzM3NDE4MjQseD10aGlzLm1fZm9yd2FyZEhpc3RvcnkubGVuZ3RoLTE7ZG97Y29uc3QgdD1rK2U7dD09PXl8fHQ8VCYmbFt0LTFdPGxbdCsxXT8obT0oaD1sW3QrMV0pLWstaSxoPFMmJncuTWFya05leHRDaGFuZ2UoKSxTPWgsdy5BZGRNb2RpZmllZEVsZW1lbnQoaCsxLG0pLGs9dCsxLWUpOihtPShoPWxbdC0xXSsxKS1rLWksaDxTJiZ3Lk1hcmtOZXh0Q2hhbmdlKCksUz1oLTEsdy5BZGRPcmlnaW5hbEVsZW1lbnQoaCxtKzEpLGs9dC0xLWUpLHg+PTAmJihlPShsPXRoaXMubV9mb3J3YXJkSGlzdG9yeVt4XSlbMF0seT0xLFQ9bC5sZW5ndGgtMSl9d2hpbGUoLS14Pj0tMSk7aWYoXz13LmdldFJldmVyc2VDaGFuZ2VzKCksYlswXSl7bGV0IGU9dVswXSsxLHQ9ZlswXSsxO2lmKG51bGwhPT1fJiZfLmxlbmd0aD4wKXtjb25zdCBuPV9bXy5sZW5ndGgtMV07ZT1NYXRoLm1heChlLG4uZ2V0T3JpZ2luYWxFbmQoKSksdD1NYXRoLm1heCh0LG4uZ2V0TW9kaWZpZWRFbmQoKSl9dj1bbmV3IGRlKGUsZC1lKzEsdCxwLXQrMSldfWVsc2V7dz1uZXcgX2UseT1hLFQ9byxrPXVbMF0tZlswXS1zLFM9MTA3Mzc0MTgyNCx4PWc/dGhpcy5tX3JldmVyc2VIaXN0b3J5Lmxlbmd0aC0xOnRoaXMubV9yZXZlcnNlSGlzdG9yeS5sZW5ndGgtMjtkb3tjb25zdCBlPWsrcjtlPT09eXx8ZTxUJiZjW2UtMV0+PWNbZSsxXT8obT0oaD1jW2UrMV0tMSktay1zLGg+UyYmdy5NYXJrTmV4dENoYW5nZSgpLFM9aCsxLHcuQWRkT3JpZ2luYWxFbGVtZW50KGgrMSxtKzEpLGs9ZSsxLXIpOihtPShoPWNbZS0xXSktay1zLGg+UyYmdy5NYXJrTmV4dENoYW5nZSgpLFM9aCx3LkFkZE1vZGlmaWVkRWxlbWVudChoKzEsbSsxKSxrPWUtMS1yKSx4Pj0wJiYocj0oYz10aGlzLm1fcmV2ZXJzZUhpc3RvcnlbeF0pWzBdLHk9MSxUPWMubGVuZ3RoLTEpfXdoaWxlKC0teD49LTEpO3Y9dy5nZXRDaGFuZ2VzKCl9cmV0dXJuIHRoaXMuQ29uY2F0ZW5hdGVDaGFuZ2VzKF8sdil9Q29tcHV0ZVJlY3Vyc2lvblBvaW50KGUsdCxuLGkscixhLG8pe2xldCBzPTAsbD0wLGM9MCxoPTAsZD0wLHU9MDtlLS0sbi0tLHJbMF09MCxhWzBdPTAsdGhpcy5tX2ZvcndhcmRIaXN0b3J5PVtdLHRoaXMubV9yZXZlcnNlSGlzdG9yeT1bXTtjb25zdCBtPXQtZSsoaS1uKSxwPW0rMSxmPW5ldyBJbnQzMkFycmF5KHApLGc9bmV3IEludDMyQXJyYXkocCksYj1pLW4sXz10LWUsdj1lLW4sdz10LWkseT0oXy1iKSUyPT0wO2ZbYl09ZSxnW19dPXQsb1swXT0hMTtmb3IobGV0IFQ9MTtUPD1tLzIrMTtUKyspe2xldCBtPTAsaz0wO2M9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChiLVQsVCxiLHApLGg9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChiK1QsVCxiLHApO2ZvcihsZXQgZT1jO2U8PWg7ZSs9Mil7cz1lPT09Y3x8ZTxoJiZmW2UtMV08ZltlKzFdP2ZbZSsxXTpmW2UtMV0rMSxsPXMtKGUtYiktdjtjb25zdCBuPXM7Zm9yKDtzPHQmJmw8aSYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKHMrMSxsKzEpOylzKyssbCsrO2lmKGZbZV09cyxzK2w+bStrJiYobT1zLGs9bCksIXkmJk1hdGguYWJzKGUtXyk8PVQtMSYmcz49Z1tlXSlyZXR1cm4gclswXT1zLGFbMF09bCxuPD1nW2VdJiZUPD0xNDQ4P3RoaXMuV0FMS1RSQUNFKGIsYyxoLHYsXyxkLHUsdyxmLGcscyx0LHIsbCxpLGEseSxvKTpudWxsfWNvbnN0IFM9KG0tZSsoay1uKS1UKS8yO2lmKG51bGwhPT10aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZSYmIXRoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlKG0sUykpcmV0dXJuIG9bMF09ITAsclswXT1tLGFbMF09ayxTPjAmJlQ8PTE0NDg/dGhpcy5XQUxLVFJBQ0UoYixjLGgsdixfLGQsdSx3LGYsZyxzLHQscixsLGksYSx5LG8pOihlKyssbisrLFtuZXcgZGUoZSx0LWUrMSxuLGktbisxKV0pO2Q9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChfLVQsVCxfLHApLHU9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChfK1QsVCxfLHApO2ZvcihsZXQgbT1kO208PXU7bSs9Mil7cz1tPT09ZHx8bTx1JiZnW20tMV0+PWdbbSsxXT9nW20rMV0tMTpnW20tMV0sbD1zLShtLV8pLXc7Y29uc3QgcD1zO2Zvcig7cz5lJiZsPm4mJnRoaXMuRWxlbWVudHNBcmVFcXVhbChzLGwpOylzLS0sbC0tO2lmKGdbbV09cyx5JiZNYXRoLmFicyhtLWIpPD1UJiZzPD1mW21dKXJldHVybiByWzBdPXMsYVswXT1sLHA+PWZbbV0mJlQ8PTE0NDg/dGhpcy5XQUxLVFJBQ0UoYixjLGgsdixfLGQsdSx3LGYsZyxzLHQscixsLGksYSx5LG8pOm51bGx9aWYoVDw9MTQ0Nyl7bGV0IGU9bmV3IEludDMyQXJyYXkoaC1jKzIpO2VbMF09Yi1jKzEsYmUuQ29weTIoZixjLGUsMSxoLWMrMSksdGhpcy5tX2ZvcndhcmRIaXN0b3J5LnB1c2goZSksZT1uZXcgSW50MzJBcnJheSh1LWQrMiksZVswXT1fLWQrMSxiZS5Db3B5MihnLGQsZSwxLHUtZCsxKSx0aGlzLm1fcmV2ZXJzZUhpc3RvcnkucHVzaChlKX19cmV0dXJuIHRoaXMuV0FMS1RSQUNFKGIsYyxoLHYsXyxkLHUsdyxmLGcscyx0LHIsbCxpLGEseSxvKX1QcmV0dGlmeUNoYW5nZXMoZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XSxpPXQ8ZS5sZW5ndGgtMT9lW3QrMV0ub3JpZ2luYWxTdGFydDp0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aCxyPXQ8ZS5sZW5ndGgtMT9lW3QrMV0ubW9kaWZpZWRTdGFydDp0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aCxhPW4ub3JpZ2luYWxMZW5ndGg+MCxvPW4ubW9kaWZpZWRMZW5ndGg+MDtmb3IoO24ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoPGkmJm4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RoPHImJighYXx8dGhpcy5PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwobi5vcmlnaW5hbFN0YXJ0LG4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoKSkmJighb3x8dGhpcy5Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwobi5tb2RpZmllZFN0YXJ0LG4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RoKSk7KXtjb25zdCBlPXRoaXMuRWxlbWVudHNBcmVTdHJpY3RFcXVhbChuLm9yaWdpbmFsU3RhcnQsbi5tb2RpZmllZFN0YXJ0KTtpZih0aGlzLkVsZW1lbnRzQXJlU3RyaWN0RXF1YWwobi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgsbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgpJiYhZSlicmVhaztuLm9yaWdpbmFsU3RhcnQrKyxuLm1vZGlmaWVkU3RhcnQrK31jb25zdCBzPVtudWxsXTt0PGUubGVuZ3RoLTEmJnRoaXMuQ2hhbmdlc092ZXJsYXAoZVt0XSxlW3QrMV0scykmJihlW3RdPXNbMF0sZS5zcGxpY2UodCsxLDEpLHQtLSl9Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDt0LS0pe2NvbnN0IG49ZVt0XTtsZXQgaT0wLHI9MDtpZih0PjApe2NvbnN0IG49ZVt0LTFdO2k9bi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgscj1uLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aH1jb25zdCBhPW4ub3JpZ2luYWxMZW5ndGg+MCxvPW4ubW9kaWZpZWRMZW5ndGg+MDtsZXQgcz0wLGw9dGhpcy5fYm91bmRhcnlTY29yZShuLm9yaWdpbmFsU3RhcnQsbi5vcmlnaW5hbExlbmd0aCxuLm1vZGlmaWVkU3RhcnQsbi5tb2RpZmllZExlbmd0aCk7Zm9yKGxldCBlPTE7O2UrKyl7Y29uc3QgdD1uLm9yaWdpbmFsU3RhcnQtZSxjPW4ubW9kaWZpZWRTdGFydC1lO2lmKHQ8aXx8YzxyKWJyZWFrO2lmKGEmJiF0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbCh0LHQrbi5vcmlnaW5hbExlbmd0aCkpYnJlYWs7aWYobyYmIXRoaXMuTW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKGMsYytuLm1vZGlmaWVkTGVuZ3RoKSlicmVhaztjb25zdCBoPSh0PT09aSYmYz09PXI/NTowKSt0aGlzLl9ib3VuZGFyeVNjb3JlKHQsbi5vcmlnaW5hbExlbmd0aCxjLG4ubW9kaWZpZWRMZW5ndGgpO2g+bCYmKGw9aCxzPWUpfW4ub3JpZ2luYWxTdGFydC09cyxuLm1vZGlmaWVkU3RhcnQtPXM7Y29uc3QgYz1bbnVsbF07dD4wJiZ0aGlzLkNoYW5nZXNPdmVybGFwKGVbdC0xXSxlW3RdLGMpJiYoZVt0LTFdPWNbMF0sZS5zcGxpY2UodCwxKSx0KyspfWlmKHRoaXMuX2hhc1N0cmluZ3MpZm9yKGxldCB0PTEsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWVbdC0xXSxpPWVbdF0scj1pLm9yaWdpbmFsU3RhcnQtbi5vcmlnaW5hbFN0YXJ0LW4ub3JpZ2luYWxMZW5ndGgsYT1uLm9yaWdpbmFsU3RhcnQsbz1pLm9yaWdpbmFsU3RhcnQraS5vcmlnaW5hbExlbmd0aCxzPW8tYSxsPW4ubW9kaWZpZWRTdGFydCxjPWkubW9kaWZpZWRTdGFydCtpLm1vZGlmaWVkTGVuZ3RoLGg9Yy1sO2lmKHI8NSYmczwyMCYmaDwyMCl7Y29uc3QgZT10aGlzLl9maW5kQmV0dGVyQ29udGlndW91c1NlcXVlbmNlKGEscyxsLGgscik7aWYoZSl7Y29uc3RbdCxhXT1lO3Q9PT1uLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aCYmYT09PW4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RofHwobi5vcmlnaW5hbExlbmd0aD10LW4ub3JpZ2luYWxTdGFydCxuLm1vZGlmaWVkTGVuZ3RoPWEtbi5tb2RpZmllZFN0YXJ0LGkub3JpZ2luYWxTdGFydD10K3IsaS5tb2RpZmllZFN0YXJ0PWErcixpLm9yaWdpbmFsTGVuZ3RoPW8taS5vcmlnaW5hbFN0YXJ0LGkubW9kaWZpZWRMZW5ndGg9Yy1pLm1vZGlmaWVkU3RhcnQpfX19cmV0dXJuIGV9X2ZpbmRCZXR0ZXJDb250aWd1b3VzU2VxdWVuY2UoZSx0LG4saSxyKXtpZih0PHJ8fGk8cilyZXR1cm4gbnVsbDtjb25zdCBhPWUrdC1yKzEsbz1uK2ktcisxO2xldCBzPTAsbD0wLGM9MDtmb3IobGV0IHQ9ZTt0PGE7dCsrKWZvcihsZXQgZT1uO2U8bztlKyspe2NvbnN0IG49dGhpcy5fY29udGlndW91c1NlcXVlbmNlU2NvcmUodCxlLHIpO24+MCYmbj5zJiYocz1uLGw9dCxjPWUpfXJldHVybiBzPjA/W2wsY106bnVsbH1fY29udGlndW91c1NlcXVlbmNlU2NvcmUoZSx0LG4pe2xldCBpPTA7Zm9yKGxldCByPTA7cjxuO3IrKyl7aWYoIXRoaXMuRWxlbWVudHNBcmVFcXVhbChlK3IsdCtyKSlyZXR1cm4gMDtpKz10aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2Urcl0ubGVuZ3RofXJldHVybiBpfV9PcmlnaW5hbElzQm91bmRhcnkoZSl7cmV0dXJuIGU8PTB8fGU+PXRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLTF8fHRoaXMuX2hhc1N0cmluZ3MmJi9eXHMqJC8udGVzdCh0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2VdKX1fT3JpZ2luYWxSZWdpb25Jc0JvdW5kYXJ5KGUsdCl7aWYodGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUpfHx0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkoZS0xKSlyZXR1cm4hMDtpZih0PjApe2NvbnN0IG49ZSt0O2lmKHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShuLTEpfHx0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkobikpcmV0dXJuITB9cmV0dXJuITF9X01vZGlmaWVkSXNCb3VuZGFyeShlKXtyZXR1cm4gZTw9MHx8ZT49dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaC5sZW5ndGgtMXx8dGhpcy5faGFzU3RyaW5ncyYmL15ccyokLy50ZXN0KHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbZV0pfV9Nb2RpZmllZFJlZ2lvbklzQm91bmRhcnkoZSx0KXtpZih0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoZSl8fHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShlLTEpKXJldHVybiEwO2lmKHQ+MCl7Y29uc3Qgbj1lK3Q7aWYodGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KG4tMSl8fHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShuKSlyZXR1cm4hMH1yZXR1cm4hMX1fYm91bmRhcnlTY29yZShlLHQsbixpKXtyZXR1cm4odGhpcy5fT3JpZ2luYWxSZWdpb25Jc0JvdW5kYXJ5KGUsdCk/MTowKSsodGhpcy5fTW9kaWZpZWRSZWdpb25Jc0JvdW5kYXJ5KG4saSk/MTowKX1Db25jYXRlbmF0ZUNoYW5nZXMoZSx0KXtjb25zdCBuPVtdO2lmKDA9PT1lLmxlbmd0aHx8MD09PXQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aD4wP3Q6ZTtpZih0aGlzLkNoYW5nZXNPdmVybGFwKGVbZS5sZW5ndGgtMV0sdFswXSxuKSl7Y29uc3QgaT1uZXcgQXJyYXkoZS5sZW5ndGgrdC5sZW5ndGgtMSk7cmV0dXJuIGJlLkNvcHkoZSwwLGksMCxlLmxlbmd0aC0xKSxpW2UubGVuZ3RoLTFdPW5bMF0sYmUuQ29weSh0LDEsaSxlLmxlbmd0aCx0Lmxlbmd0aC0xKSxpfXtjb25zdCBuPW5ldyBBcnJheShlLmxlbmd0aCt0Lmxlbmd0aCk7cmV0dXJuIGJlLkNvcHkoZSwwLG4sMCxlLmxlbmd0aCksYmUuQ29weSh0LDAsbixlLmxlbmd0aCx0Lmxlbmd0aCksbn19Q2hhbmdlc092ZXJsYXAoZSx0LG4pe2lmKGdlLkFzc2VydChlLm9yaWdpbmFsU3RhcnQ8PXQub3JpZ2luYWxTdGFydCwiTGVmdCBjaGFuZ2UgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byByaWdodCBjaGFuZ2UiKSxnZS5Bc3NlcnQoZS5tb2RpZmllZFN0YXJ0PD10Lm1vZGlmaWVkU3RhcnQsIkxlZnQgY2hhbmdlIGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmlnaHQgY2hhbmdlIiksZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGg+PXQub3JpZ2luYWxTdGFydHx8ZS5tb2RpZmllZFN0YXJ0K2UubW9kaWZpZWRMZW5ndGg+PXQubW9kaWZpZWRTdGFydCl7Y29uc3QgaT1lLm9yaWdpbmFsU3RhcnQ7bGV0IHI9ZS5vcmlnaW5hbExlbmd0aDtjb25zdCBhPWUubW9kaWZpZWRTdGFydDtsZXQgbz1lLm1vZGlmaWVkTGVuZ3RoO3JldHVybiBlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aD49dC5vcmlnaW5hbFN0YXJ0JiYocj10Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC1lLm9yaWdpbmFsU3RhcnQpLGUubW9kaWZpZWRTdGFydCtlLm1vZGlmaWVkTGVuZ3RoPj10Lm1vZGlmaWVkU3RhcnQmJihvPXQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoLWUubW9kaWZpZWRTdGFydCksblswXT1uZXcgZGUoaSxyLGEsbyksITB9cmV0dXJuIG5bMF09bnVsbCwhMX1DbGlwRGlhZ29uYWxCb3VuZChlLHQsbixpKXtpZihlPj0wJiZlPGkpcmV0dXJuIGU7Y29uc3Qgcj10JTI9PTA7aWYoZTwwKXtyZXR1cm4gcj09PShuJTI9PTApPzA6MX1yZXR1cm4gcj09PSgoaS1uLTEpJTI9PTApP2ktMTppLTJ9fWxldCB3ZTtpZih2b2lkIDAhPT1FLnZzY29kZSYmdm9pZCAwIT09RS52c2NvZGUucHJvY2Vzcyl7Y29uc3QgZT1FLnZzY29kZS5wcm9jZXNzO3dlPXtnZXQgcGxhdGZvcm0oKXtyZXR1cm4gZS5wbGF0Zm9ybX0sZ2V0IGFyY2goKXtyZXR1cm4gZS5hcmNofSxnZXQgZW52KCl7cmV0dXJuIGUuZW52fSxjd2Q6KCk9PmUuY3dkKCl9fWVsc2Ugd2U9InVuZGVmaW5lZCIhPXR5cGVvZiBwcm9jZXNzP3tnZXQgcGxhdGZvcm0oKXtyZXR1cm4gcHJvY2Vzcy5wbGF0Zm9ybX0sZ2V0IGFyY2goKXtyZXR1cm4gcHJvY2Vzcy5hcmNofSxnZXQgZW52KCl7cmV0dXJuIHByb2Nlc3MuZW52fSxjd2Q6KCk9PnByb2Nlc3MuZW52LlZTQ09ERV9DV0R8fHByb2Nlc3MuY3dkKCl9OntnZXQgcGxhdGZvcm0oKXtyZXR1cm4gUj8id2luMzIiOk4/ImRhcndpbiI6ImxpbnV4In0sZ2V0IGFyY2goKXt9LGdldCBlbnYoKXtyZXR1cm57fX0sY3dkOigpPT4iLyJ9O2NvbnN0IHllPXdlLmN3ZCxUZT13ZS5lbnYsa2U9d2UucGxhdGZvcm0sU2U9NDYseGU9NDcsTGU9OTIsQ2U9NTg7Y2xhc3MgRWUgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHQsbil7bGV0IGk7InN0cmluZyI9PXR5cGVvZiB0JiYwPT09dC5pbmRleE9mKCJub3QgIik/KGk9Im11c3Qgbm90IGJlIix0PXQucmVwbGFjZSgvXm5vdCAvLCIiKSk6aT0ibXVzdCBiZSI7Y29uc3Qgcj0tMSE9PWUuaW5kZXhPZigiLiIpPyJwcm9wZXJ0eSI6ImFyZ3VtZW50IjtsZXQgYT1gVGhlICIke2V9IiAke3J9ICR7aX0gb2YgdHlwZSAke3R9YDthKz0iLiBSZWNlaXZlZCB0eXBlICIrdHlwZW9mIG4sc3VwZXIoYSksdGhpcy5jb2RlPSJFUlJfSU5WQUxJRF9BUkdfVFlQRSJ9fWZ1bmN0aW9uIEFlKGUsdCl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFZSh0LCJzdHJpbmciLGUpfWNvbnN0IE1lPSJ3aW4zMiI9PT1rZTtmdW5jdGlvbiBSZShlKXtyZXR1cm4gZT09PXhlfHxlPT09TGV9ZnVuY3Rpb24gTmUoZSl7cmV0dXJuIGU9PT14ZX1mdW5jdGlvbiBJZShlKXtyZXR1cm4gZT49NjUmJmU8PTkwfHxlPj05NyYmZTw9MTIyfWZ1bmN0aW9uIFVlKGUsdCxuLGkpe2xldCByPSIiLGE9MCxvPS0xLHM9MCxsPTA7Zm9yKGxldCBjPTA7Yzw9ZS5sZW5ndGg7KytjKXtpZihjPGUubGVuZ3RoKWw9ZS5jaGFyQ29kZUF0KGMpO2Vsc2V7aWYoaShsKSlicmVhaztsPXhlfWlmKGkobCkpe2lmKG89PT1jLTF8fDE9PT1zKTtlbHNlIGlmKDI9PT1zKXtpZihyLmxlbmd0aDwyfHwyIT09YXx8ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTEpIT09U2V8fHIuY2hhckNvZGVBdChyLmxlbmd0aC0yKSE9PVNlKXtpZihyLmxlbmd0aD4yKXtjb25zdCBlPXIubGFzdEluZGV4T2Yobik7LTE9PT1lPyhyPSIiLGE9MCk6KHI9ci5zbGljZSgwLGUpLGE9ci5sZW5ndGgtMS1yLmxhc3RJbmRleE9mKG4pKSxvPWMscz0wO2NvbnRpbnVlfWlmKDAhPT1yLmxlbmd0aCl7cj0iIixhPTAsbz1jLHM9MDtjb250aW51ZX19dCYmKHIrPXIubGVuZ3RoPjA/YCR7bn0uLmA6Ii4uIixhPTIpfWVsc2Ugci5sZW5ndGg+MD9yKz1gJHtufSR7ZS5zbGljZShvKzEsYyl9YDpyPWUuc2xpY2UobysxLGMpLGE9Yy1vLTE7bz1jLHM9MH1lbHNlIGw9PT1TZSYmLTEhPT1zPysrczpzPS0xfXJldHVybiByfWZ1bmN0aW9uIEhlKGUsdCl7IWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgZSl0aHJvdyBuZXcgRWUodCwiT2JqZWN0IixlKX0odCwicGF0aE9iamVjdCIpO2NvbnN0IG49dC5kaXJ8fHQucm9vdCxpPXQuYmFzZXx8YCR7dC5uYW1lfHwiIn0ke3QuZXh0fHwiIn1gO3JldHVybiBuP249PT10LnJvb3Q/YCR7bn0ke2l9YDpgJHtufSR7ZX0ke2l9YDppfWNvbnN0IHplPXtyZXNvbHZlKC4uLmUpe2xldCB0PSIiLG49IiIsaT0hMTtmb3IobGV0IHI9ZS5sZW5ndGgtMTtyPj0tMTtyLS0pe2xldCBhO2lmKHI+PTApe2lmKGE9ZVtyXSxBZShhLCJwYXRoIiksMD09PWEubGVuZ3RoKWNvbnRpbnVlfWVsc2UgMD09PXQubGVuZ3RoP2E9eWUoKTooYT1UZVtgPSR7dH1gXXx8eWUoKSwodm9pZCAwPT09YXx8YS5zbGljZSgwLDIpLnRvTG93ZXJDYXNlKCkhPT10LnRvTG93ZXJDYXNlKCkmJmEuY2hhckNvZGVBdCgyKT09PUxlKSYmKGE9YCR7dH1cXGApKTtjb25zdCBvPWEubGVuZ3RoO2xldCBzPTAsbD0iIixjPSExO2NvbnN0IGg9YS5jaGFyQ29kZUF0KDApO2lmKDE9PT1vKVJlKGgpJiYocz0xLGM9ITApO2Vsc2UgaWYoUmUoaCkpaWYoYz0hMCxSZShhLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8byYmIVJlKGEuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPG8mJmUhPT10KXtjb25zdCBuPWEuc2xpY2UodCxlKTtmb3IodD1lO2U8byYmUmUoYS5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8byYmZSE9PXQpe2Zvcih0PWU7ZTxvJiYhUmUoYS5jaGFyQ29kZUF0KGUpKTspZSsrO2UhPT1vJiZlPT09dHx8KGw9YFxcXFwke259XFwke2Euc2xpY2UodCxlKX1gLHM9ZSl9fX1lbHNlIHM9MTtlbHNlIEllKGgpJiZhLmNoYXJDb2RlQXQoMSk9PT1DZSYmKGw9YS5zbGljZSgwLDIpLHM9MixvPjImJlJlKGEuY2hhckNvZGVBdCgyKSkmJihjPSEwLHM9MykpO2lmKGwubGVuZ3RoPjApaWYodC5sZW5ndGg+MCl7aWYobC50b0xvd2VyQ2FzZSgpIT09dC50b0xvd2VyQ2FzZSgpKWNvbnRpbnVlfWVsc2UgdD1sO2lmKGkpe2lmKHQubGVuZ3RoPjApYnJlYWt9ZWxzZSBpZihuPWAke2Euc2xpY2Uocyl9XFwke259YCxpPWMsYyYmdC5sZW5ndGg+MClicmVha31yZXR1cm4gbj1VZShuLCFpLCJcXCIsUmUpLGk/YCR7dH1cXCR7bn1gOmAke3R9JHtufWB8fCIuIn0sbm9ybWFsaXplKGUpe0FlKGUsInBhdGgiKTtjb25zdCB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiIuIjtsZXQgbixpPTAscj0hMTtjb25zdCBhPWUuY2hhckNvZGVBdCgwKTtpZigxPT09dClyZXR1cm4gTmUoYSk/IlxcIjplO2lmKFJlKGEpKWlmKHI9ITAsUmUoZS5jaGFyQ29kZUF0KDEpKSl7bGV0IHI9MixhPXI7Zm9yKDtyPHQmJiFSZShlLmNoYXJDb2RlQXQocikpOylyKys7aWYocjx0JiZyIT09YSl7Y29uc3Qgbz1lLnNsaWNlKGEscik7Zm9yKGE9cjtyPHQmJlJlKGUuY2hhckNvZGVBdChyKSk7KXIrKztpZihyPHQmJnIhPT1hKXtmb3IoYT1yO3I8dCYmIVJlKGUuY2hhckNvZGVBdChyKSk7KXIrKztpZihyPT09dClyZXR1cm5gXFxcXCR7b31cXCR7ZS5zbGljZShhKX1cXGA7ciE9PWEmJihuPWBcXFxcJHtvfVxcJHtlLnNsaWNlKGEscil9YCxpPXIpfX19ZWxzZSBpPTE7ZWxzZSBJZShhKSYmZS5jaGFyQ29kZUF0KDEpPT09Q2UmJihuPWUuc2xpY2UoMCwyKSxpPTIsdD4yJiZSZShlLmNoYXJDb2RlQXQoMikpJiYocj0hMCxpPTMpKTtsZXQgbz1pPHQ/VWUoZS5zbGljZShpKSwhciwiXFwiLFJlKToiIjtyZXR1cm4gMCE9PW8ubGVuZ3RofHxyfHwobz0iLiIpLG8ubGVuZ3RoPjAmJlJlKGUuY2hhckNvZGVBdCh0LTEpKSYmKG8rPSJcXCIpLHZvaWQgMD09PW4/cj9gXFwke299YDpvOnI/YCR7bn1cXCR7b31gOmAke259JHtvfWB9LGlzQWJzb2x1dGUoZSl7QWUoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuITE7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoMCk7cmV0dXJuIFJlKG4pfHx0PjImJkllKG4pJiZlLmNoYXJDb2RlQXQoMSk9PT1DZSYmUmUoZS5jaGFyQ29kZUF0KDIpKX0sam9pbiguLi5lKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2xldCB0LG47Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDsrK2kpe2NvbnN0IHI9ZVtpXTtBZShyLCJwYXRoIiksci5sZW5ndGg+MCYmKHZvaWQgMD09PXQ/dD1uPXI6dCs9YFxcJHtyfWApfWlmKHZvaWQgMD09PXQpcmV0dXJuIi4iO2xldCBpPSEwLHI9MDtpZigic3RyaW5nIj09dHlwZW9mIG4mJlJlKG4uY2hhckNvZGVBdCgwKSkpeysrcjtjb25zdCBlPW4ubGVuZ3RoO2U+MSYmUmUobi5jaGFyQ29kZUF0KDEpKSYmKCsrcixlPjImJihSZShuLmNoYXJDb2RlQXQoMikpPysrcjppPSExKSl9aWYoaSl7Zm9yKDtyPHQubGVuZ3RoJiZSZSh0LmNoYXJDb2RlQXQocikpOylyKys7cj49MiYmKHQ9YFxcJHt0LnNsaWNlKHIpfWApfXJldHVybiB6ZS5ub3JtYWxpemUodCl9LHJlbGF0aXZlKGUsdCl7aWYoQWUoZSwiZnJvbSIpLEFlKHQsInRvIiksZT09PXQpcmV0dXJuIiI7Y29uc3Qgbj16ZS5yZXNvbHZlKGUpLGk9emUucmVzb2x2ZSh0KTtpZihuPT09aSlyZXR1cm4iIjtpZigoZT1uLnRvTG93ZXJDYXNlKCkpPT09KHQ9aS50b0xvd2VyQ2FzZSgpKSlyZXR1cm4iIjtsZXQgcj0wO2Zvcig7cjxlLmxlbmd0aCYmZS5jaGFyQ29kZUF0KHIpPT09TGU7KXIrKztsZXQgYT1lLmxlbmd0aDtmb3IoO2EtMT5yJiZlLmNoYXJDb2RlQXQoYS0xKT09PUxlOylhLS07Y29uc3Qgbz1hLXI7bGV0IHM9MDtmb3IoO3M8dC5sZW5ndGgmJnQuY2hhckNvZGVBdChzKT09PUxlOylzKys7bGV0IGw9dC5sZW5ndGg7Zm9yKDtsLTE+cyYmdC5jaGFyQ29kZUF0KGwtMSk9PT1MZTspbC0tO2NvbnN0IGM9bC1zLGg9bzxjP286YztsZXQgZD0tMSx1PTA7Zm9yKDt1PGg7dSsrKXtjb25zdCBuPWUuY2hhckNvZGVBdChyK3UpO2lmKG4hPT10LmNoYXJDb2RlQXQocyt1KSlicmVhaztuPT09TGUmJihkPXUpfWlmKHUhPT1oKXtpZigtMT09PWQpcmV0dXJuIGl9ZWxzZXtpZihjPmgpe2lmKHQuY2hhckNvZGVBdChzK3UpPT09TGUpcmV0dXJuIGkuc2xpY2Uocyt1KzEpO2lmKDI9PT11KXJldHVybiBpLnNsaWNlKHMrdSl9bz5oJiYoZS5jaGFyQ29kZUF0KHIrdSk9PT1MZT9kPXU6Mj09PXUmJihkPTMpKSwtMT09PWQmJihkPTApfWxldCBtPSIiO2Zvcih1PXIrZCsxO3U8PWE7Kyt1KXUhPT1hJiZlLmNoYXJDb2RlQXQodSkhPT1MZXx8KG0rPTA9PT1tLmxlbmd0aD8iLi4iOiJcXC4uIik7cmV0dXJuIHMrPWQsbS5sZW5ndGg+MD9gJHttfSR7aS5zbGljZShzLGwpfWA6KGkuY2hhckNvZGVBdChzKT09PUxlJiYrK3MsaS5zbGljZShzLGwpKX0sdG9OYW1lc3BhY2VkUGF0aChlKXtpZigic3RyaW5nIiE9dHlwZW9mIGV8fDA9PT1lLmxlbmd0aClyZXR1cm4gZTtjb25zdCB0PXplLnJlc29sdmUoZSk7aWYodC5sZW5ndGg8PTIpcmV0dXJuIGU7aWYodC5jaGFyQ29kZUF0KDApPT09TGUpe2lmKHQuY2hhckNvZGVBdCgxKT09PUxlKXtjb25zdCBlPXQuY2hhckNvZGVBdCgyKTtpZig2MyE9PWUmJmUhPT1TZSlyZXR1cm5gXFxcXD9cXFVOQ1xcJHt0LnNsaWNlKDIpfWB9fWVsc2UgaWYoSWUodC5jaGFyQ29kZUF0KDApKSYmdC5jaGFyQ29kZUF0KDEpPT09Q2UmJnQuY2hhckNvZGVBdCgyKT09PUxlKXJldHVybmBcXFxcP1xcJHt0fWA7cmV0dXJuIGV9LGRpcm5hbWUoZSl7QWUoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIi4iO2xldCBuPS0xLGk9MDtjb25zdCByPWUuY2hhckNvZGVBdCgwKTtpZigxPT09dClyZXR1cm4gUmUocik/ZToiLiI7aWYoUmUocikpe2lmKG49aT0xLFJlKGUuY2hhckNvZGVBdCgxKSkpe2xldCByPTIsYT1yO2Zvcig7cjx0JiYhUmUoZS5jaGFyQ29kZUF0KHIpKTspcisrO2lmKHI8dCYmciE9PWEpe2ZvcihhPXI7cjx0JiZSZShlLmNoYXJDb2RlQXQocikpOylyKys7aWYocjx0JiZyIT09YSl7Zm9yKGE9cjtyPHQmJiFSZShlLmNoYXJDb2RlQXQocikpOylyKys7aWYocj09PXQpcmV0dXJuIGU7ciE9PWEmJihuPWk9cisxKX19fX1lbHNlIEllKHIpJiZlLmNoYXJDb2RlQXQoMSk9PT1DZSYmKG49dD4yJiZSZShlLmNoYXJDb2RlQXQoMikpPzM6MixpPW4pO2xldCBhPS0xLG89ITA7Zm9yKGxldCBuPXQtMTtuPj1pOy0tbilpZihSZShlLmNoYXJDb2RlQXQobikpKXtpZighbyl7YT1uO2JyZWFrfX1lbHNlIG89ITE7aWYoLTE9PT1hKXtpZigtMT09PW4pcmV0dXJuIi4iO2E9bn1yZXR1cm4gZS5zbGljZSgwLGEpfSxiYXNlbmFtZShlLHQpe3ZvaWQgMCE9PXQmJkFlKHQsImV4dCIpLEFlKGUsInBhdGgiKTtsZXQgbixpPTAscj0tMSxhPSEwO2lmKGUubGVuZ3RoPj0yJiZJZShlLmNoYXJDb2RlQXQoMCkpJiZlLmNoYXJDb2RlQXQoMSk9PT1DZSYmKGk9Miksdm9pZCAwIT09dCYmdC5sZW5ndGg+MCYmdC5sZW5ndGg8PWUubGVuZ3RoKXtpZih0PT09ZSlyZXR1cm4iIjtsZXQgbz10Lmxlbmd0aC0xLHM9LTE7Zm9yKG49ZS5sZW5ndGgtMTtuPj1pOy0tbil7Y29uc3QgbD1lLmNoYXJDb2RlQXQobik7aWYoUmUobCkpe2lmKCFhKXtpPW4rMTticmVha319ZWxzZS0xPT09cyYmKGE9ITEscz1uKzEpLG8+PTAmJihsPT09dC5jaGFyQ29kZUF0KG8pPy0xPT0tLW8mJihyPW4pOihvPS0xLHI9cykpfXJldHVybiBpPT09cj9yPXM6LTE9PT1yJiYocj1lLmxlbmd0aCksZS5zbGljZShpLHIpfWZvcihuPWUubGVuZ3RoLTE7bj49aTstLW4paWYoUmUoZS5jaGFyQ29kZUF0KG4pKSl7aWYoIWEpe2k9bisxO2JyZWFrfX1lbHNlLTE9PT1yJiYoYT0hMSxyPW4rMSk7cmV0dXJuLTE9PT1yPyIiOmUuc2xpY2UoaSxyKX0sZXh0bmFtZShlKXtBZShlLCJwYXRoIik7bGV0IHQ9MCxuPS0xLGk9MCxyPS0xLGE9ITAsbz0wO2UubGVuZ3RoPj0yJiZlLmNoYXJDb2RlQXQoMSk9PT1DZSYmSWUoZS5jaGFyQ29kZUF0KDApKSYmKHQ9aT0yKTtmb3IobGV0IHM9ZS5sZW5ndGgtMTtzPj10Oy0tcyl7Y29uc3QgdD1lLmNoYXJDb2RlQXQocyk7aWYoUmUodCkpe2lmKCFhKXtpPXMrMTticmVha319ZWxzZS0xPT09ciYmKGE9ITEscj1zKzEpLHQ9PT1TZT8tMT09PW4/bj1zOjEhPT1vJiYobz0xKTotMSE9PW4mJihvPS0xKX1yZXR1cm4tMT09PW58fC0xPT09cnx8MD09PW98fDE9PT1vJiZuPT09ci0xJiZuPT09aSsxPyIiOmUuc2xpY2UobixyKX0sZm9ybWF0OkhlLmJpbmQobnVsbCwiXFwiKSxwYXJzZShlKXtBZShlLCJwYXRoIik7Y29uc3QgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PWUubGVuZ3RoKXJldHVybiB0O2NvbnN0IG49ZS5sZW5ndGg7bGV0IGk9MCxyPWUuY2hhckNvZGVBdCgwKTtpZigxPT09bilyZXR1cm4gUmUocik/KHQucm9vdD10LmRpcj1lLHQpOih0LmJhc2U9dC5uYW1lPWUsdCk7aWYoUmUocikpe2lmKGk9MSxSZShlLmNoYXJDb2RlQXQoMSkpKXtsZXQgdD0yLHI9dDtmb3IoO3Q8biYmIVJlKGUuY2hhckNvZGVBdCh0KSk7KXQrKztpZih0PG4mJnQhPT1yKXtmb3Iocj10O3Q8biYmUmUoZS5jaGFyQ29kZUF0KHQpKTspdCsrO2lmKHQ8biYmdCE9PXIpe2ZvcihyPXQ7dDxuJiYhUmUoZS5jaGFyQ29kZUF0KHQpKTspdCsrO3Q9PT1uP2k9dDp0IT09ciYmKGk9dCsxKX19fX1lbHNlIGlmKEllKHIpJiZlLmNoYXJDb2RlQXQoMSk9PT1DZSl7aWYobjw9MilyZXR1cm4gdC5yb290PXQuZGlyPWUsdDtpZihpPTIsUmUoZS5jaGFyQ29kZUF0KDIpKSl7aWYoMz09PW4pcmV0dXJuIHQucm9vdD10LmRpcj1lLHQ7aT0zfX1pPjAmJih0LnJvb3Q9ZS5zbGljZSgwLGkpKTtsZXQgYT0tMSxvPWkscz0tMSxsPSEwLGM9ZS5sZW5ndGgtMSxoPTA7Zm9yKDtjPj1pOy0tYylpZihyPWUuY2hhckNvZGVBdChjKSxSZShyKSl7aWYoIWwpe289YysxO2JyZWFrfX1lbHNlLTE9PT1zJiYobD0hMSxzPWMrMSkscj09PVNlPy0xPT09YT9hPWM6MSE9PWgmJihoPTEpOi0xIT09YSYmKGg9LTEpO3JldHVybi0xIT09cyYmKC0xPT09YXx8MD09PWh8fDE9PT1oJiZhPT09cy0xJiZhPT09bysxP3QuYmFzZT10Lm5hbWU9ZS5zbGljZShvLHMpOih0Lm5hbWU9ZS5zbGljZShvLGEpLHQuYmFzZT1lLnNsaWNlKG8scyksdC5leHQ9ZS5zbGljZShhLHMpKSksdC5kaXI9bz4wJiZvIT09aT9lLnNsaWNlKDAsby0xKTp0LnJvb3QsdH0sc2VwOiJcXCIsZGVsaW1pdGVyOiI7Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9LERlPSgoKT0+e2lmKE1lKXtjb25zdCBlPS9cXC9nO3JldHVybigpPT57Y29uc3QgdD15ZSgpLnJlcGxhY2UoZSwiLyIpO3JldHVybiB0LnNsaWNlKHQuaW5kZXhPZigiLyIpKX19cmV0dXJuKCk9PnllKCl9KSgpLFdlPXtyZXNvbHZlKC4uLmUpe2xldCB0PSIiLG49ITE7Zm9yKGxldCBpPWUubGVuZ3RoLTE7aT49LTEmJiFuO2ktLSl7Y29uc3Qgcj1pPj0wP2VbaV06RGUoKTtBZShyLCJwYXRoIiksMCE9PXIubGVuZ3RoJiYodD1gJHtyfS8ke3R9YCxuPXIuY2hhckNvZGVBdCgwKT09PXhlKX1yZXR1cm4gdD1VZSh0LCFuLCIvIixOZSksbj9gLyR7dH1gOnQubGVuZ3RoPjA/dDoiLiJ9LG5vcm1hbGl6ZShlKXtpZihBZShlLCJwYXRoIiksMD09PWUubGVuZ3RoKXJldHVybiIuIjtjb25zdCB0PWUuY2hhckNvZGVBdCgwKT09PXhlLG49ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpPT09eGU7cmV0dXJuIDA9PT0oZT1VZShlLCF0LCIvIixOZSkpLmxlbmd0aD90PyIvIjpuPyIuLyI6Ii4iOihuJiYoZSs9Ii8iKSx0P2AvJHtlfWA6ZSl9LGlzQWJzb2x1dGU6ZT0+KEFlKGUsInBhdGgiKSxlLmxlbmd0aD4wJiZlLmNoYXJDb2RlQXQoMCk9PT14ZSksam9pbiguLi5lKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2xldCB0O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7KytuKXtjb25zdCBpPWVbbl07QWUoaSwicGF0aCIpLGkubGVuZ3RoPjAmJih2b2lkIDA9PT10P3Q9aTp0Kz1gLyR7aX1gKX1yZXR1cm4gdm9pZCAwPT09dD8iLiI6V2Uubm9ybWFsaXplKHQpfSxyZWxhdGl2ZShlLHQpe2lmKEFlKGUsImZyb20iKSxBZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2lmKChlPVdlLnJlc29sdmUoZSkpPT09KHQ9V2UucmVzb2x2ZSh0KSkpcmV0dXJuIiI7Y29uc3Qgbj1lLmxlbmd0aCxpPW4tMSxyPXQubGVuZ3RoLTEsYT1pPHI/aTpyO2xldCBvPS0xLHM9MDtmb3IoO3M8YTtzKyspe2NvbnN0IG49ZS5jaGFyQ29kZUF0KDErcyk7aWYobiE9PXQuY2hhckNvZGVBdCgxK3MpKWJyZWFrO249PT14ZSYmKG89cyl9aWYocz09PWEpaWYocj5hKXtpZih0LmNoYXJDb2RlQXQoMStzKT09PXhlKXJldHVybiB0LnNsaWNlKDErcysxKTtpZigwPT09cylyZXR1cm4gdC5zbGljZSgxK3MpfWVsc2UgaT5hJiYoZS5jaGFyQ29kZUF0KDErcyk9PT14ZT9vPXM6MD09PXMmJihvPTApKTtsZXQgbD0iIjtmb3Iocz0xK28rMTtzPD1uOysrcylzIT09biYmZS5jaGFyQ29kZUF0KHMpIT09eGV8fChsKz0wPT09bC5sZW5ndGg/Ii4uIjoiLy4uIik7cmV0dXJuYCR7bH0ke3Quc2xpY2UoMStvKX1gfSx0b05hbWVzcGFjZWRQYXRoOmU9PmUsZGlybmFtZShlKXtpZihBZShlLCJwYXRoIiksMD09PWUubGVuZ3RoKXJldHVybiIuIjtjb25zdCB0PWUuY2hhckNvZGVBdCgwKT09PXhlO2xldCBuPS0xLGk9ITA7Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MTstLXQpaWYoZS5jaGFyQ29kZUF0KHQpPT09eGUpe2lmKCFpKXtuPXQ7YnJlYWt9fWVsc2UgaT0hMTtyZXR1cm4tMT09PW4/dD8iLyI6Ii4iOnQmJjE9PT1uPyIvLyI6ZS5zbGljZSgwLG4pfSxiYXNlbmFtZShlLHQpe3ZvaWQgMCE9PXQmJkFlKHQsImV4dCIpLEFlKGUsInBhdGgiKTtsZXQgbixpPTAscj0tMSxhPSEwO2lmKHZvaWQgMCE9PXQmJnQubGVuZ3RoPjAmJnQubGVuZ3RoPD1lLmxlbmd0aCl7aWYodD09PWUpcmV0dXJuIiI7bGV0IG89dC5sZW5ndGgtMSxzPS0xO2ZvcihuPWUubGVuZ3RoLTE7bj49MDstLW4pe2NvbnN0IGw9ZS5jaGFyQ29kZUF0KG4pO2lmKGw9PT14ZSl7aWYoIWEpe2k9bisxO2JyZWFrfX1lbHNlLTE9PT1zJiYoYT0hMSxzPW4rMSksbz49MCYmKGw9PT10LmNoYXJDb2RlQXQobyk/LTE9PS0tbyYmKHI9bik6KG89LTEscj1zKSl9cmV0dXJuIGk9PT1yP3I9czotMT09PXImJihyPWUubGVuZ3RoKSxlLnNsaWNlKGkscil9Zm9yKG49ZS5sZW5ndGgtMTtuPj0wOy0tbilpZihlLmNoYXJDb2RlQXQobik9PT14ZSl7aWYoIWEpe2k9bisxO2JyZWFrfX1lbHNlLTE9PT1yJiYoYT0hMSxyPW4rMSk7cmV0dXJuLTE9PT1yPyIiOmUuc2xpY2UoaSxyKX0sZXh0bmFtZShlKXtBZShlLCJwYXRoIik7bGV0IHQ9LTEsbj0wLGk9LTEscj0hMCxhPTA7Zm9yKGxldCBvPWUubGVuZ3RoLTE7bz49MDstLW8pe2NvbnN0IHM9ZS5jaGFyQ29kZUF0KG8pO2lmKHMhPT14ZSktMT09PWkmJihyPSExLGk9bysxKSxzPT09U2U/LTE9PT10P3Q9bzoxIT09YSYmKGE9MSk6LTEhPT10JiYoYT0tMSk7ZWxzZSBpZighcil7bj1vKzE7YnJlYWt9fXJldHVybi0xPT09dHx8LTE9PT1pfHwwPT09YXx8MT09PWEmJnQ9PT1pLTEmJnQ9PT1uKzE/IiI6ZS5zbGljZSh0LGkpfSxmb3JtYXQ6SGUuYmluZChudWxsLCIvIikscGFyc2UoZSl7QWUoZSwicGF0aCIpO2NvbnN0IHQ9e3Jvb3Q6IiIsZGlyOiIiLGJhc2U6IiIsZXh0OiIiLG5hbWU6IiJ9O2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gdDtjb25zdCBuPWUuY2hhckNvZGVBdCgwKT09PXhlO2xldCBpO24/KHQucm9vdD0iLyIsaT0xKTppPTA7bGV0IHI9LTEsYT0wLG89LTEscz0hMCxsPWUubGVuZ3RoLTEsYz0wO2Zvcig7bD49aTstLWwpe2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KGwpO2lmKHQhPT14ZSktMT09PW8mJihzPSExLG89bCsxKSx0PT09U2U/LTE9PT1yP3I9bDoxIT09YyYmKGM9MSk6LTEhPT1yJiYoYz0tMSk7ZWxzZSBpZighcyl7YT1sKzE7YnJlYWt9fWlmKC0xIT09byl7Y29uc3QgaT0wPT09YSYmbj8xOmE7LTE9PT1yfHwwPT09Y3x8MT09PWMmJnI9PT1vLTEmJnI9PT1hKzE/dC5iYXNlPXQubmFtZT1lLnNsaWNlKGksbyk6KHQubmFtZT1lLnNsaWNlKGksciksdC5iYXNlPWUuc2xpY2UoaSxvKSx0LmV4dD1lLnNsaWNlKHIsbykpfXJldHVybiBhPjA/dC5kaXI9ZS5zbGljZSgwLGEtMSk6biYmKHQuZGlyPSIvIiksdH0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH07V2Uud2luMzI9emUud2luMzI9emUsV2UucG9zaXg9emUucG9zaXg9V2UsTWU/emUubm9ybWFsaXplOldlLm5vcm1hbGl6ZSxNZT96ZS5yZXNvbHZlOldlLnJlc29sdmUsTWU/emUucmVsYXRpdmU6V2UucmVsYXRpdmUsTWU/emUuZGlybmFtZTpXZS5kaXJuYW1lLE1lP3plLmJhc2VuYW1lOldlLmJhc2VuYW1lLE1lP3plLmV4dG5hbWU6V2UuZXh0bmFtZSxNZT96ZS5zZXA6V2Uuc2VwO2NvbnN0IE9lPS9eXHdbXHdcZCsuLV0qJC8sUGU9L15cLy8scWU9L15cL1wvLztjb25zdCBGZT0iIixCZT0iLyIsVmU9L14oKFteOi8/I10rPyk6KT8oXC9cLyhbXi8/I10qKSk/KFtePyNdKikoXD8oW14jXSopKT8oIyguKikpPy87bGV0IEtlPWNsYXNzIGV7c3RhdGljIGlzVXJpKHQpe3JldHVybiB0IGluc3RhbmNlb2YgZXx8ISF0JiYoInN0cmluZyI9PXR5cGVvZiB0LmF1dGhvcml0eSYmInN0cmluZyI9PXR5cGVvZiB0LmZyYWdtZW50JiYic3RyaW5nIj09dHlwZW9mIHQucGF0aCYmInN0cmluZyI9PXR5cGVvZiB0LnF1ZXJ5JiYic3RyaW5nIj09dHlwZW9mIHQuc2NoZW1lJiYic3RyaW5nIj09dHlwZW9mIHQuZnNQYXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgdC53aXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgdC50b1N0cmluZyl9Y29uc3RydWN0b3IoZSx0LG4saSxyLGE9ITEpeyJvYmplY3QiPT10eXBlb2YgZT8odGhpcy5zY2hlbWU9ZS5zY2hlbWV8fEZlLHRoaXMuYXV0aG9yaXR5PWUuYXV0aG9yaXR5fHxGZSx0aGlzLnBhdGg9ZS5wYXRofHxGZSx0aGlzLnF1ZXJ5PWUucXVlcnl8fEZlLHRoaXMuZnJhZ21lbnQ9ZS5mcmFnbWVudHx8RmUpOih0aGlzLnNjaGVtZT1mdW5jdGlvbihlLHQpe3JldHVybiBlfHx0P2U6ImZpbGUifShlLGEpLHRoaXMuYXV0aG9yaXR5PXR8fEZlLHRoaXMucGF0aD1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlImh0dHBzIjpjYXNlImh0dHAiOmNhc2UiZmlsZSI6dD90WzBdIT09QmUmJih0PUJlK3QpOnQ9QmV9cmV0dXJuIHR9KHRoaXMuc2NoZW1lLG58fEZlKSx0aGlzLnF1ZXJ5PWl8fEZlLHRoaXMuZnJhZ21lbnQ9cnx8RmUsZnVuY3Rpb24oZSx0KXtpZighZS5zY2hlbWUmJnQpdGhyb3cgbmV3IEVycm9yKGBbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIiR7ZS5hdXRob3JpdHl9IiwgcGF0aDogIiR7ZS5wYXRofSIsIHF1ZXJ5OiAiJHtlLnF1ZXJ5fSIsIGZyYWdtZW50OiAiJHtlLmZyYWdtZW50fSJ9YCk7aWYoZS5zY2hlbWUmJiFPZS50ZXN0KGUuc2NoZW1lKSl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IFNjaGVtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIik7aWYoZS5wYXRoKWlmKGUuYXV0aG9yaXR5KXtpZighUGUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYocWUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfSh0aGlzLGEpKX1nZXQgZnNQYXRoKCl7cmV0dXJuIFllKHRoaXMsITEpfXdpdGgoZSl7aWYoIWUpcmV0dXJuIHRoaXM7bGV0e3NjaGVtZTp0LGF1dGhvcml0eTpuLHBhdGg6aSxxdWVyeTpyLGZyYWdtZW50OmF9PWU7cmV0dXJuIHZvaWQgMD09PXQ/dD10aGlzLnNjaGVtZTpudWxsPT09dCYmKHQ9RmUpLHZvaWQgMD09PW4/bj10aGlzLmF1dGhvcml0eTpudWxsPT09biYmKG49RmUpLHZvaWQgMD09PWk/aT10aGlzLnBhdGg6bnVsbD09PWkmJihpPUZlKSx2b2lkIDA9PT1yP3I9dGhpcy5xdWVyeTpudWxsPT09ciYmKHI9RmUpLHZvaWQgMD09PWE/YT10aGlzLmZyYWdtZW50Om51bGw9PT1hJiYoYT1GZSksdD09PXRoaXMuc2NoZW1lJiZuPT09dGhpcy5hdXRob3JpdHkmJmk9PT10aGlzLnBhdGgmJnI9PT10aGlzLnF1ZXJ5JiZhPT09dGhpcy5mcmFnbWVudD90aGlzOm5ldyBHZSh0LG4saSxyLGEpfXN0YXRpYyBwYXJzZShlLHQ9ITEpe2NvbnN0IG49VmUuZXhlYyhlKTtyZXR1cm4gbj9uZXcgR2UoblsyXXx8RmUsdHQobls0XXx8RmUpLHR0KG5bNV18fEZlKSx0dChuWzddfHxGZSksdHQobls5XXx8RmUpLHQpOm5ldyBHZShGZSxGZSxGZSxGZSxGZSl9c3RhdGljIGZpbGUoZSl7bGV0IHQ9RmU7aWYoUiYmKGU9ZS5yZXBsYWNlKC9cXC9nLEJlKSksZVswXT09PUJlJiZlWzFdPT09QmUpe2NvbnN0IG49ZS5pbmRleE9mKEJlLDIpOy0xPT09bj8odD1lLnN1YnN0cmluZygyKSxlPUJlKToodD1lLnN1YnN0cmluZygyLG4pLGU9ZS5zdWJzdHJpbmcobil8fEJlKX1yZXR1cm4gbmV3IEdlKCJmaWxlIix0LGUsRmUsRmUpfXN0YXRpYyBmcm9tKGUsdCl7cmV0dXJuIG5ldyBHZShlLnNjaGVtZSxlLmF1dGhvcml0eSxlLnBhdGgsZS5xdWVyeSxlLmZyYWdtZW50LHQpfXN0YXRpYyBqb2luUGF0aCh0LC4uLm4pe2lmKCF0LnBhdGgpdGhyb3cgbmV3IEVycm9yKCJbVXJpRXJyb3JdOiBjYW5ub3QgY2FsbCBqb2luUGF0aCBvbiBVUkkgd2l0aG91dCBwYXRoIik7bGV0IGk7cmV0dXJuIGk9UiYmImZpbGUiPT09dC5zY2hlbWU/ZS5maWxlKHplLmpvaW4oWWUodCwhMCksLi4ubikpLnBhdGg6V2Uuam9pbih0LnBhdGgsLi4ubiksdC53aXRoKHtwYXRoOml9KX10b1N0cmluZyhlPSExKXtyZXR1cm4gUWUodGhpcyxlKX10b0pTT04oKXtyZXR1cm4gdGhpc31zdGF0aWMgcmV2aXZlKHQpe3ZhciBuLGk7aWYodCl7aWYodCBpbnN0YW5jZW9mIGUpcmV0dXJuIHQ7e2NvbnN0IGU9bmV3IEdlKHQpO3JldHVybiBlLl9mb3JtYXR0ZWQ9bnVsbCE9PShuPXQuZXh0ZXJuYWwpJiZ2b2lkIDAhPT1uP246bnVsbCxlLl9mc1BhdGg9dC5fc2VwPT09amUmJm51bGwhPT0oaT10LmZzUGF0aCkmJnZvaWQgMCE9PWk/aTpudWxsLGV9fXJldHVybiB0fX07Y29uc3QgamU9Uj8xOnZvaWQgMDtjbGFzcyBHZSBleHRlbmRzIEtle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9mb3JtYXR0ZWQ9bnVsbCx0aGlzLl9mc1BhdGg9bnVsbH1nZXQgZnNQYXRoKCl7cmV0dXJuIHRoaXMuX2ZzUGF0aHx8KHRoaXMuX2ZzUGF0aD1ZZSh0aGlzLCExKSksdGhpcy5fZnNQYXRofXRvU3RyaW5nKGU9ITEpe3JldHVybiBlP1FlKHRoaXMsITApOih0aGlzLl9mb3JtYXR0ZWR8fCh0aGlzLl9mb3JtYXR0ZWQ9UWUodGhpcywhMSkpLHRoaXMuX2Zvcm1hdHRlZCl9dG9KU09OKCl7Y29uc3QgZT17JG1pZDoxfTtyZXR1cm4gdGhpcy5fZnNQYXRoJiYoZS5mc1BhdGg9dGhpcy5fZnNQYXRoLGUuX3NlcD1qZSksdGhpcy5fZm9ybWF0dGVkJiYoZS5leHRlcm5hbD10aGlzLl9mb3JtYXR0ZWQpLHRoaXMucGF0aCYmKGUucGF0aD10aGlzLnBhdGgpLHRoaXMuc2NoZW1lJiYoZS5zY2hlbWU9dGhpcy5zY2hlbWUpLHRoaXMuYXV0aG9yaXR5JiYoZS5hdXRob3JpdHk9dGhpcy5hdXRob3JpdHkpLHRoaXMucXVlcnkmJihlLnF1ZXJ5PXRoaXMucXVlcnkpLHRoaXMuZnJhZ21lbnQmJihlLmZyYWdtZW50PXRoaXMuZnJhZ21lbnQpLGV9fWNvbnN0ICRlPXs1ODoiJTNBIiw0NzoiJTJGIiw2MzoiJTNGIiwzNToiJTIzIiw5MToiJTVCIiw5MzoiJTVEIiw2NDoiJTQwIiwzMzoiJTIxIiwzNjoiJTI0IiwzODoiJTI2IiwzOToiJTI3Iiw0MDoiJTI4Iiw0MToiJTI5Iiw0MjoiJTJBIiw0MzoiJTJCIiw0NDoiJTJDIiw1OToiJTNCIiw2MToiJTNEIiwzMjoiJTIwIn07ZnVuY3Rpb24gSmUoZSx0LG4pe2xldCBpLHI9LTE7Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2NvbnN0IG89ZS5jaGFyQ29kZUF0KGEpO2lmKG8+PTk3JiZvPD0xMjJ8fG8+PTY1JiZvPD05MHx8bz49NDgmJm88PTU3fHw0NT09PW98fDQ2PT09b3x8OTU9PT1vfHwxMjY9PT1vfHx0JiY0Nz09PW98fG4mJjkxPT09b3x8biYmOTM9PT1vfHxuJiY1OD09PW8pLTEhPT1yJiYoaSs9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIsYSkpLHI9LTEpLHZvaWQgMCE9PWkmJihpKz1lLmNoYXJBdChhKSk7ZWxzZXt2b2lkIDA9PT1pJiYoaT1lLnN1YnN0cigwLGEpKTtjb25zdCB0PSRlW29dO3ZvaWQgMCE9PXQ/KC0xIT09ciYmKGkrPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhyLGEpKSxyPS0xKSxpKz10KTotMT09PXImJihyPWEpfX1yZXR1cm4tMSE9PXImJihpKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocikpKSx2b2lkIDAhPT1pP2k6ZX1mdW5jdGlvbiBYZShlKXtsZXQgdDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3QgaT1lLmNoYXJDb2RlQXQobik7MzU9PT1pfHw2Mz09PWk/KHZvaWQgMD09PXQmJih0PWUuc3Vic3RyKDAsbikpLHQrPSRlW2ldKTp2b2lkIDAhPT10JiYodCs9ZVtuXSl9cmV0dXJuIHZvaWQgMCE9PXQ/dDplfWZ1bmN0aW9uIFllKGUsdCl7bGV0IG47cmV0dXJuIG49ZS5hdXRob3JpdHkmJmUucGF0aC5sZW5ndGg+MSYmImZpbGUiPT09ZS5zY2hlbWU/YC8vJHtlLmF1dGhvcml0eX0ke2UucGF0aH1gOjQ3PT09ZS5wYXRoLmNoYXJDb2RlQXQoMCkmJihlLnBhdGguY2hhckNvZGVBdCgxKT49NjUmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD05MHx8ZS5wYXRoLmNoYXJDb2RlQXQoMSk+PTk3JiZlLnBhdGguY2hhckNvZGVBdCgxKTw9MTIyKSYmNTg9PT1lLnBhdGguY2hhckNvZGVBdCgyKT90P2UucGF0aC5zdWJzdHIoMSk6ZS5wYXRoWzFdLnRvTG93ZXJDYXNlKCkrZS5wYXRoLnN1YnN0cigyKTplLnBhdGgsUiYmKG49bi5yZXBsYWNlKC9cLy9nLCJcXCIpKSxufWZ1bmN0aW9uIFFlKGUsdCl7Y29uc3Qgbj10P1hlOkplO2xldCBpPSIiLHtzY2hlbWU6cixhdXRob3JpdHk6YSxwYXRoOm8scXVlcnk6cyxmcmFnbWVudDpsfT1lO2lmKHImJihpKz1yLGkrPSI6IiksKGF8fCJmaWxlIj09PXIpJiYoaSs9QmUsaSs9QmUpLGEpe2xldCBlPWEuaW5kZXhPZigiQCIpO2lmKC0xIT09ZSl7Y29uc3QgdD1hLnN1YnN0cigwLGUpO2E9YS5zdWJzdHIoZSsxKSxlPXQubGFzdEluZGV4T2YoIjoiKSwtMT09PWU/aSs9bih0LCExLCExKTooaSs9bih0LnN1YnN0cigwLGUpLCExLCExKSxpKz0iOiIsaSs9bih0LnN1YnN0cihlKzEpLCExLCEwKSksaSs9IkAifWE9YS50b0xvd2VyQ2FzZSgpLGU9YS5sYXN0SW5kZXhPZigiOiIpLC0xPT09ZT9pKz1uKGEsITEsITApOihpKz1uKGEuc3Vic3RyKDAsZSksITEsITApLGkrPWEuc3Vic3RyKGUpKX1pZihvKXtpZihvLmxlbmd0aD49MyYmNDc9PT1vLmNoYXJDb2RlQXQoMCkmJjU4PT09by5jaGFyQ29kZUF0KDIpKXtjb25zdCBlPW8uY2hhckNvZGVBdCgxKTtlPj02NSYmZTw9OTAmJihvPWAvJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUrMzIpfToke28uc3Vic3RyKDMpfWApfWVsc2UgaWYoby5sZW5ndGg+PTImJjU4PT09by5jaGFyQ29kZUF0KDEpKXtjb25zdCBlPW8uY2hhckNvZGVBdCgwKTtlPj02NSYmZTw9OTAmJihvPWAke1N0cmluZy5mcm9tQ2hhckNvZGUoZSszMil9OiR7by5zdWJzdHIoMil9YCl9aSs9bihvLCEwLCExKX1yZXR1cm4gcyYmKGkrPSI/IixpKz1uKHMsITEsITEpKSxsJiYoaSs9IiMiLGkrPXQ/bDpKZShsLCExLCExKSksaX1mdW5jdGlvbiBaZShlKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlKX1jYXRjaCh0KXtyZXR1cm4gZS5sZW5ndGg+Mz9lLnN1YnN0cigwLDMpK1plKGUuc3Vic3RyKDMpKTplfX1jb25zdCBldD0vKCVbMC05QS1aYS16XVswLTlBLVphLXpdKSsvZztmdW5jdGlvbiB0dChlKXtyZXR1cm4gZS5tYXRjaChldCk/ZS5yZXBsYWNlKGV0LChlPT5aZShlKSkpOmV9bGV0IG50PWNsYXNzIGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmxpbmVOdW1iZXI9ZSx0aGlzLmNvbHVtbj10fXdpdGgodD10aGlzLmxpbmVOdW1iZXIsbj10aGlzLmNvbHVtbil7cmV0dXJuIHQ9PT10aGlzLmxpbmVOdW1iZXImJm49PT10aGlzLmNvbHVtbj90aGlzOm5ldyBlKHQsbil9ZGVsdGEoZT0wLHQ9MCl7cmV0dXJuIHRoaXMud2l0aCh0aGlzLmxpbmVOdW1iZXIrZSx0aGlzLmNvbHVtbit0KX1lcXVhbHModCl7cmV0dXJuIGUuZXF1YWxzKHRoaXMsdCl9c3RhdGljIGVxdWFscyhlLHQpe3JldHVybiFlJiYhdHx8ISFlJiYhIXQmJmUubGluZU51bWJlcj09PXQubGluZU51bWJlciYmZS5jb2x1bW49PT10LmNvbHVtbn1pc0JlZm9yZSh0KXtyZXR1cm4gZS5pc0JlZm9yZSh0aGlzLHQpfXN0YXRpYyBpc0JlZm9yZShlLHQpe3JldHVybiBlLmxpbmVOdW1iZXI8dC5saW5lTnVtYmVyfHwhKHQubGluZU51bWJlcjxlLmxpbmVOdW1iZXIpJiZlLmNvbHVtbjx0LmNvbHVtbn1pc0JlZm9yZU9yRXF1YWwodCl7cmV0dXJuIGUuaXNCZWZvcmVPckVxdWFsKHRoaXMsdCl9c3RhdGljIGlzQmVmb3JlT3JFcXVhbChlLHQpe3JldHVybiBlLmxpbmVOdW1iZXI8dC5saW5lTnVtYmVyfHwhKHQubGluZU51bWJlcjxlLmxpbmVOdW1iZXIpJiZlLmNvbHVtbjw9dC5jb2x1bW59c3RhdGljIGNvbXBhcmUoZSx0KXtjb25zdCBuPTB8ZS5saW5lTnVtYmVyLGk9MHx0LmxpbmVOdW1iZXI7aWYobj09PWkpe3JldHVybigwfGUuY29sdW1uKS0oMHx0LmNvbHVtbil9cmV0dXJuIG4taX1jbG9uZSgpe3JldHVybiBuZXcgZSh0aGlzLmxpbmVOdW1iZXIsdGhpcy5jb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIigiK3RoaXMubGluZU51bWJlcisiLCIrdGhpcy5jb2x1bW4rIikifXN0YXRpYyBsaWZ0KHQpe3JldHVybiBuZXcgZSh0LmxpbmVOdW1iZXIsdC5jb2x1bW4pfXN0YXRpYyBpc0lQb3NpdGlvbihlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLmxpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5jb2x1bW59fSxpdD1jbGFzcyBle2NvbnN0cnVjdG9yKGUsdCxuLGkpe2U+bnx8ZT09PW4mJnQ+aT8odGhpcy5zdGFydExpbmVOdW1iZXI9bix0aGlzLnN0YXJ0Q29sdW1uPWksdGhpcy5lbmRMaW5lTnVtYmVyPWUsdGhpcy5lbmRDb2x1bW49dCk6KHRoaXMuc3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5zdGFydENvbHVtbj10LHRoaXMuZW5kTGluZU51bWJlcj1uLHRoaXMuZW5kQ29sdW1uPWkpfWlzRW1wdHkoKXtyZXR1cm4gZS5pc0VtcHR5KHRoaXMpfXN0YXRpYyBpc0VtcHR5KGUpe3JldHVybiBlLnN0YXJ0TGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmZS5zdGFydENvbHVtbj09PWUuZW5kQ29sdW1ufWNvbnRhaW5zUG9zaXRpb24odCl7cmV0dXJuIGUuY29udGFpbnNQb3NpdGlvbih0aGlzLHQpfXN0YXRpYyBjb250YWluc1Bvc2l0aW9uKGUsdCl7cmV0dXJuISh0LmxpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQubGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LmxpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5jb2x1bW48ZS5zdGFydENvbHVtbikmJiEodC5saW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmNvbHVtbj5lLmVuZENvbHVtbikpfXN0YXRpYyBzdHJpY3RDb250YWluc1Bvc2l0aW9uKGUsdCl7cmV0dXJuISh0LmxpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQubGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LmxpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5jb2x1bW48PWUuc3RhcnRDb2x1bW4pJiYhKHQubGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5jb2x1bW4+PWUuZW5kQ29sdW1uKSl9Y29udGFpbnNSYW5nZSh0KXtyZXR1cm4gZS5jb250YWluc1JhbmdlKHRoaXMsdCl9c3RhdGljIGNvbnRhaW5zUmFuZ2UoZSx0KXtyZXR1cm4hKHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPGUuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5lbmRDb2x1bW4+ZS5lbmRDb2x1bW4pKSl9c3RyaWN0Q29udGFpbnNSYW5nZSh0KXtyZXR1cm4gZS5zdHJpY3RDb250YWluc1JhbmdlKHRoaXMsdCl9c3RhdGljIHN0cmljdENvbnRhaW5zUmFuZ2UoZSx0KXtyZXR1cm4hKHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPD1lLnN0YXJ0Q29sdW1uKSYmISh0LmVuZExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPj1lLmVuZENvbHVtbikpKX1wbHVzUmFuZ2UodCl7cmV0dXJuIGUucGx1c1JhbmdlKHRoaXMsdCl9c3RhdGljIHBsdXNSYW5nZSh0LG4pe2xldCBpLHIsYSxvO3JldHVybiBuLnN0YXJ0TGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcj8oaT1uLnN0YXJ0TGluZU51bWJlcixyPW4uc3RhcnRDb2x1bW4pOm4uc3RhcnRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXI/KGk9bi5zdGFydExpbmVOdW1iZXIscj1NYXRoLm1pbihuLnN0YXJ0Q29sdW1uLHQuc3RhcnRDb2x1bW4pKTooaT10LnN0YXJ0TGluZU51bWJlcixyPXQuc3RhcnRDb2x1bW4pLG4uZW5kTGluZU51bWJlcj50LmVuZExpbmVOdW1iZXI/KGE9bi5lbmRMaW5lTnVtYmVyLG89bi5lbmRDb2x1bW4pOm4uZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlcj8oYT1uLmVuZExpbmVOdW1iZXIsbz1NYXRoLm1heChuLmVuZENvbHVtbix0LmVuZENvbHVtbikpOihhPXQuZW5kTGluZU51bWJlcixvPXQuZW5kQ29sdW1uKSxuZXcgZShpLHIsYSxvKX1pbnRlcnNlY3RSYW5nZXModCl7cmV0dXJuIGUuaW50ZXJzZWN0UmFuZ2VzKHRoaXMsdCl9c3RhdGljIGludGVyc2VjdFJhbmdlcyh0LG4pe2xldCBpPXQuc3RhcnRMaW5lTnVtYmVyLHI9dC5zdGFydENvbHVtbixhPXQuZW5kTGluZU51bWJlcixvPXQuZW5kQ29sdW1uO2NvbnN0IHM9bi5zdGFydExpbmVOdW1iZXIsbD1uLnN0YXJ0Q29sdW1uLGM9bi5lbmRMaW5lTnVtYmVyLGg9bi5lbmRDb2x1bW47cmV0dXJuIGk8cz8oaT1zLHI9bCk6aT09PXMmJihyPU1hdGgubWF4KHIsbCkpLGE+Yz8oYT1jLG89aCk6YT09PWMmJihvPU1hdGgubWluKG8saCkpLGk+YXx8aT09PWEmJnI+bz9udWxsOm5ldyBlKGkscixhLG8pfWVxdWFsc1JhbmdlKHQpe3JldHVybiBlLmVxdWFsc1JhbmdlKHRoaXMsdCl9c3RhdGljIGVxdWFsc1JhbmdlKGUsdCl7cmV0dXJuIWUmJiF0fHwhIWUmJiEhdCYmZS5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5zdGFydENvbHVtbj09PXQuc3RhcnRDb2x1bW4mJmUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlciYmZS5lbmRDb2x1bW49PT10LmVuZENvbHVtbn1nZXRFbmRQb3NpdGlvbigpe3JldHVybiBlLmdldEVuZFBvc2l0aW9uKHRoaXMpfXN0YXRpYyBnZXRFbmRQb3NpdGlvbihlKXtyZXR1cm4gbmV3IG50KGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbil9Z2V0U3RhcnRQb3NpdGlvbigpe3JldHVybiBlLmdldFN0YXJ0UG9zaXRpb24odGhpcyl9c3RhdGljIGdldFN0YXJ0UG9zaXRpb24oZSl7cmV0dXJuIG5ldyBudChlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKX10b1N0cmluZygpe3JldHVybiJbIit0aGlzLnN0YXJ0TGluZU51bWJlcisiLCIrdGhpcy5zdGFydENvbHVtbisiIC0+ICIrdGhpcy5lbmRMaW5lTnVtYmVyKyIsIit0aGlzLmVuZENvbHVtbisiXSJ9c2V0RW5kUG9zaXRpb24odCxuKXtyZXR1cm4gbmV3IGUodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbix0LG4pfXNldFN0YXJ0UG9zaXRpb24odCxuKXtyZXR1cm4gbmV3IGUodCxuLHRoaXMuZW5kTGluZU51bWJlcix0aGlzLmVuZENvbHVtbil9Y29sbGFwc2VUb1N0YXJ0KCl7cmV0dXJuIGUuY29sbGFwc2VUb1N0YXJ0KHRoaXMpfXN0YXRpYyBjb2xsYXBzZVRvU3RhcnQodCl7cmV0dXJuIG5ldyBlKHQuc3RhcnRMaW5lTnVtYmVyLHQuc3RhcnRDb2x1bW4sdC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbil9Y29sbGFwc2VUb0VuZCgpe3JldHVybiBlLmNvbGxhcHNlVG9FbmQodGhpcyl9c3RhdGljIGNvbGxhcHNlVG9FbmQodCl7cmV0dXJuIG5ldyBlKHQuZW5kTGluZU51bWJlcix0LmVuZENvbHVtbix0LmVuZExpbmVOdW1iZXIsdC5lbmRDb2x1bW4pfWRlbHRhKHQpe3JldHVybiBuZXcgZSh0aGlzLnN0YXJ0TGluZU51bWJlcit0LHRoaXMuc3RhcnRDb2x1bW4sdGhpcy5lbmRMaW5lTnVtYmVyK3QsdGhpcy5lbmRDb2x1bW4pfXN0YXRpYyBmcm9tUG9zaXRpb25zKHQsbj10KXtyZXR1cm4gbmV3IGUodC5saW5lTnVtYmVyLHQuY29sdW1uLG4ubGluZU51bWJlcixuLmNvbHVtbil9c3RhdGljIGxpZnQodCl7cmV0dXJuIHQ/bmV3IGUodC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbix0LmVuZExpbmVOdW1iZXIsdC5lbmRDb2x1bW4pOm51bGx9c3RhdGljIGlzSVJhbmdlKGUpe3JldHVybiBlJiYibnVtYmVyIj09dHlwZW9mIGUuc3RhcnRMaW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUuc3RhcnRDb2x1bW4mJiJudW1iZXIiPT10eXBlb2YgZS5lbmRMaW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUuZW5kQ29sdW1ufXN0YXRpYyBhcmVJbnRlcnNlY3RpbmdPclRvdWNoaW5nKGUsdCl7cmV0dXJuIShlLmVuZExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fGUuZW5kTGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZlLmVuZENvbHVtbjx0LnN0YXJ0Q29sdW1uKSYmISh0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbjxlLnN0YXJ0Q29sdW1uKX1zdGF0aWMgYXJlSW50ZXJzZWN0aW5nKGUsdCl7cmV0dXJuIShlLmVuZExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fGUuZW5kTGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZlLmVuZENvbHVtbjw9dC5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5lbmRDb2x1bW48PWUuc3RhcnRDb2x1bW4pfXN0YXRpYyBjb21wYXJlUmFuZ2VzVXNpbmdTdGFydHMoZSx0KXtpZihlJiZ0KXtjb25zdCBuPTB8ZS5zdGFydExpbmVOdW1iZXIsaT0wfHQuc3RhcnRMaW5lTnVtYmVyO2lmKG49PT1pKXtjb25zdCBuPTB8ZS5zdGFydENvbHVtbixpPTB8dC5zdGFydENvbHVtbjtpZihuPT09aSl7Y29uc3Qgbj0wfGUuZW5kTGluZU51bWJlcixpPTB8dC5lbmRMaW5lTnVtYmVyO2lmKG49PT1pKXtyZXR1cm4oMHxlLmVuZENvbHVtbiktKDB8dC5lbmRDb2x1bW4pfXJldHVybiBuLWl9cmV0dXJuIG4taX1yZXR1cm4gbi1pfXJldHVybihlPzE6MCktKHQ/MTowKX1zdGF0aWMgY29tcGFyZVJhbmdlc1VzaW5nRW5kcyhlLHQpe3JldHVybiBlLmVuZExpbmVOdW1iZXI9PT10LmVuZExpbmVOdW1iZXI/ZS5lbmRDb2x1bW49PT10LmVuZENvbHVtbj9lLnN0YXJ0TGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyP2Uuc3RhcnRDb2x1bW4tdC5zdGFydENvbHVtbjplLnN0YXJ0TGluZU51bWJlci10LnN0YXJ0TGluZU51bWJlcjplLmVuZENvbHVtbi10LmVuZENvbHVtbjplLmVuZExpbmVOdW1iZXItdC5lbmRMaW5lTnVtYmVyfXN0YXRpYyBzcGFuc011bHRpcGxlTGluZXMoZSl7cmV0dXJuIGUuZW5kTGluZU51bWJlcj5lLnN0YXJ0TGluZU51bWJlcn10b0pTT04oKXtyZXR1cm4gdGhpc319O3ZhciBydDtmdW5jdGlvbiBhdChlKXtyZXR1cm4gZTwwPzA6ZT4yNTU/MjU1OjB8ZX1mdW5jdGlvbiBvdChlKXtyZXR1cm4gZTwwPzA6ZT40Mjk0OTY3Mjk1PzQyOTQ5NjcyOTU6MHxlfSFmdW5jdGlvbihlKXtlLmlzTGVzc1RoYW49ZnVuY3Rpb24oZSl7cmV0dXJuIGU8MH0sZS5pc0dyZWF0ZXJUaGFuPWZ1bmN0aW9uKGUpe3JldHVybiBlPjB9LGUuaXNOZWl0aGVyTGVzc09yR3JlYXRlclRoYW49ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lfSxlLmdyZWF0ZXJUaGFuPTEsZS5sZXNzVGhhbj0tMSxlLm5laXRoZXJMZXNzT3JHcmVhdGVyVGhhbj0wfShydHx8KHJ0PXt9KSk7Y2xhc3Mgc3R7Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZXM9ZSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkoZS5sZW5ndGgpLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleD1uZXcgSW50MzJBcnJheSgxKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09LTF9aW5zZXJ0VmFsdWVzKGUsdCl7ZT1vdChlKTtjb25zdCBuPXRoaXMudmFsdWVzLGk9dGhpcy5wcmVmaXhTdW0scj10Lmxlbmd0aDtyZXR1cm4gMCE9PXImJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgrciksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheShlKSxlK3IpLHRoaXMudmFsdWVzLnNldCh0LGUpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodGhpcy52YWx1ZXMubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChpLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9c2V0VmFsdWUoZSx0KXtyZXR1cm4gZT1vdChlKSx0PW90KHQpLHRoaXMudmFsdWVzW2VdIT09dCYmKHRoaXMudmFsdWVzW2VdPXQsZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLCEwKX1yZW1vdmVWYWx1ZXMoZSx0KXtlPW90KGUpLHQ9b3QodCk7Y29uc3Qgbj10aGlzLnZhbHVlcyxpPXRoaXMucHJlZml4U3VtO2lmKGU+PW4ubGVuZ3RoKXJldHVybiExO2NvbnN0IHI9bi5sZW5ndGgtZTtyZXR1cm4gdD49ciYmKHQ9ciksMCE9PXQmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgtdCksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheShlK3QpLGUpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChpLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9Z2V0VG90YWxTdW0oKXtyZXR1cm4gMD09PXRoaXMudmFsdWVzLmxlbmd0aD8wOnRoaXMuX2dldFByZWZpeFN1bSh0aGlzLnZhbHVlcy5sZW5ndGgtMSl9Z2V0UHJlZml4U3VtKGUpe3JldHVybiBlPDA/MDooZT1vdChlKSx0aGlzLl9nZXRQcmVmaXhTdW0oZSkpfV9nZXRQcmVmaXhTdW0oZSl7aWYoZTw9dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKXJldHVybiB0aGlzLnByZWZpeFN1bVtlXTtsZXQgdD10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMTswPT09dCYmKHRoaXMucHJlZml4U3VtWzBdPXRoaXMudmFsdWVzWzBdLHQrKyksZT49dGhpcy52YWx1ZXMubGVuZ3RoJiYoZT10aGlzLnZhbHVlcy5sZW5ndGgtMSk7Zm9yKGxldCBuPXQ7bjw9ZTtuKyspdGhpcy5wcmVmaXhTdW1bbl09dGhpcy5wcmVmaXhTdW1bbi0xXSt0aGlzLnZhbHVlc1tuXTtyZXR1cm4gdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPU1hdGgubWF4KHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSxlKSx0aGlzLnByZWZpeFN1bVtlXX1nZXRJbmRleE9mKGUpe2U9TWF0aC5mbG9vcihlKSx0aGlzLmdldFRvdGFsU3VtKCk7bGV0IHQ9MCxuPXRoaXMudmFsdWVzLmxlbmd0aC0xLGk9MCxyPTAsYT0wO2Zvcig7dDw9bjspaWYoaT10KyhuLXQpLzJ8MCxyPXRoaXMucHJlZml4U3VtW2ldLGE9ci10aGlzLnZhbHVlc1tpXSxlPGEpbj1pLTE7ZWxzZXtpZighKGU+PXIpKWJyZWFrO3Q9aSsxfXJldHVybiBuZXcgbHQoaSxlLWEpfX1jbGFzcyBsdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaW5kZXg9ZSx0aGlzLnJlbWFpbmRlcj10LHRoaXMuX3ByZWZpeFN1bUluZGV4T2ZSZXN1bHRCcmFuZD12b2lkIDAsdGhpcy5pbmRleD1lLHRoaXMucmVtYWluZGVyPXR9fWNsYXNzIGN0e2NvbnN0cnVjdG9yKGUsdCxuLGkpe3RoaXMuX3VyaT1lLHRoaXMuX2xpbmVzPXQsdGhpcy5fZW9sPW4sdGhpcy5fdmVyc2lvbklkPWksdGhpcy5fbGluZVN0YXJ0cz1udWxsLHRoaXMuX2NhY2hlZFRleHRWYWx1ZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9saW5lcy5sZW5ndGg9MH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9uSWR9Z2V0VGV4dCgpe3JldHVybiBudWxsPT09dGhpcy5fY2FjaGVkVGV4dFZhbHVlJiYodGhpcy5fY2FjaGVkVGV4dFZhbHVlPXRoaXMuX2xpbmVzLmpvaW4odGhpcy5fZW9sKSksdGhpcy5fY2FjaGVkVGV4dFZhbHVlfW9uRXZlbnRzKGUpe2UuZW9sJiZlLmVvbCE9PXRoaXMuX2VvbCYmKHRoaXMuX2VvbD1lLmVvbCx0aGlzLl9saW5lU3RhcnRzPW51bGwpO2NvbnN0IHQ9ZS5jaGFuZ2VzO2Zvcihjb25zdCBlIG9mIHQpdGhpcy5fYWNjZXB0RGVsZXRlUmFuZ2UoZS5yYW5nZSksdGhpcy5fYWNjZXB0SW5zZXJ0VGV4dChuZXcgbnQoZS5yYW5nZS5zdGFydExpbmVOdW1iZXIsZS5yYW5nZS5zdGFydENvbHVtbiksZS50ZXh0KTt0aGlzLl92ZXJzaW9uSWQ9ZS52ZXJzaW9uSWQsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9X2Vuc3VyZUxpbmVTdGFydHMoKXtpZighdGhpcy5fbGluZVN0YXJ0cyl7Y29uc3QgZT10aGlzLl9lb2wubGVuZ3RoLHQ9dGhpcy5fbGluZXMubGVuZ3RoLG49bmV3IFVpbnQzMkFycmF5KHQpO2ZvcihsZXQgaT0wO2k8dDtpKyspbltpXT10aGlzLl9saW5lc1tpXS5sZW5ndGgrZTt0aGlzLl9saW5lU3RhcnRzPW5ldyBzdChuKX19X3NldExpbmVUZXh0KGUsdCl7dGhpcy5fbGluZXNbZV09dCx0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLnNldFZhbHVlKGUsdGhpcy5fbGluZXNbZV0ubGVuZ3RoK3RoaXMuX2VvbC5sZW5ndGgpfV9hY2NlcHREZWxldGVSYW5nZShlKXtpZihlLnN0YXJ0TGluZU51bWJlciE9PWUuZW5kTGluZU51bWJlcil0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5lbmRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSksdGhpcy5fbGluZXMuc3BsaWNlKGUuc3RhcnRMaW5lTnVtYmVyLGUuZW5kTGluZU51bWJlci1lLnN0YXJ0TGluZU51bWJlciksdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5yZW1vdmVWYWx1ZXMoZS5zdGFydExpbmVOdW1iZXIsZS5lbmRMaW5lTnVtYmVyLWUuc3RhcnRMaW5lTnVtYmVyKTtlbHNle2lmKGUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbilyZXR1cm47dGhpcy5fc2V0TGluZVRleHQoZS5zdGFydExpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCxlLnN0YXJ0Q29sdW1uLTEpK3RoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSl9fV9hY2NlcHRJbnNlcnRUZXh0KGUsdCl7aWYoMD09PXQubGVuZ3RoKXJldHVybjtjb25zdCBuPXQuc3BsaXQoL1xyXG58XHJ8XG4vKTtpZigxPT09bi5sZW5ndGgpcmV0dXJuIHZvaWQgdGhpcy5fc2V0TGluZVRleHQoZS5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuY29sdW1uLTEpK25bMF0rdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmNvbHVtbi0xKSk7bltuLmxlbmd0aC0xXSs9dGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmNvbHVtbi0xKSx0aGlzLl9zZXRMaW5lVGV4dChlLmxpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsZS5jb2x1bW4tMSkrblswXSk7Y29uc3QgaT1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgtMSk7Zm9yKGxldCB0PTE7dDxuLmxlbmd0aDt0KyspdGhpcy5fbGluZXMuc3BsaWNlKGUubGluZU51bWJlcit0LTEsMCxuW3RdKSxpW3QtMV09blt0XS5sZW5ndGgrdGhpcy5fZW9sLmxlbmd0aDt0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLmluc2VydFZhbHVlcyhlLmxpbmVOdW1iZXIsaSl9fWNvbnN0IGh0PWZ1bmN0aW9uKGU9IiIpe2xldCB0PSIoLT9cXGQqXFwuXFxkXFx3Kil8KFteIjtmb3IoY29uc3QgbiBvZiJgfiFAIyQlXiYqKCktPStbe119XFx8OzonXCIsLjw+Lz8iKWUuaW5kZXhPZihuKT49MHx8KHQrPSJcXCIrbik7cmV0dXJuIHQrPSJcXHNdKykiLG5ldyBSZWdFeHAodCwiZyIpfSgpO2NvbnN0IGR0PW5ldyBmO2Z1bmN0aW9uIHV0KGUsdCxuLGkscil7aWYocnx8KHI9bC5maXJzdChkdCkpLG4ubGVuZ3RoPnIubWF4TGVuKXtsZXQgYT1lLXIubWF4TGVuLzI7cmV0dXJuIGE8MD9hPTA6aSs9YSx1dChlLHQsbj1uLnN1YnN0cmluZyhhLGUrci5tYXhMZW4vMiksaSxyKX1jb25zdCBhPURhdGUubm93KCksbz1lLTEtaTtsZXQgcz0tMSxjPW51bGw7Zm9yKGxldCBlPTE7IShEYXRlLm5vdygpLWE+PXIudGltZUJ1ZGdldCk7ZSsrKXtjb25zdCBpPW8tci53aW5kb3dTaXplKmU7dC5sYXN0SW5kZXg9TWF0aC5tYXgoMCxpKTtjb25zdCBhPW10KHQsbixvLHMpO2lmKCFhJiZjKWJyZWFrO2lmKGM9YSxpPD0wKWJyZWFrO3M9aX1pZihjKXtjb25zdCBlPXt3b3JkOmNbMF0sc3RhcnRDb2x1bW46aSsxK2MuaW5kZXgsZW5kQ29sdW1uOmkrMStjLmluZGV4K2NbMF0ubGVuZ3RofTtyZXR1cm4gdC5sYXN0SW5kZXg9MCxlfXJldHVybiBudWxsfWZ1bmN0aW9uIG10KGUsdCxuLGkpe2xldCByO2Zvcig7cj1lLmV4ZWModCk7KXtjb25zdCB0PXIuaW5kZXh8fDA7aWYodDw9biYmZS5sYXN0SW5kZXg+PW4pcmV0dXJuIHI7aWYoaT4wJiZ0PmkpcmV0dXJuIG51bGx9cmV0dXJuIG51bGx9ZHQudW5zaGlmdCh7bWF4TGVuOjFlMyx3aW5kb3dTaXplOjE1LHRpbWVCdWRnZXQ6MTUwfSk7Y2xhc3MgcHR7Y29uc3RydWN0b3IoZSl7Y29uc3QgdD1hdChlKTt0aGlzLl9kZWZhdWx0VmFsdWU9dCx0aGlzLl9hc2NpaU1hcD1wdC5fY3JlYXRlQXNjaWlNYXAodCksdGhpcy5fbWFwPW5ldyBNYXB9c3RhdGljIF9jcmVhdGVBc2NpaU1hcChlKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDI1Nik7cmV0dXJuIHQuZmlsbChlKSx0fXNldChlLHQpe2NvbnN0IG49YXQodCk7ZT49MCYmZTwyNTY/dGhpcy5fYXNjaWlNYXBbZV09bjp0aGlzLl9tYXAuc2V0KGUsbil9Z2V0KGUpe3JldHVybiBlPj0wJiZlPDI1Nj90aGlzLl9hc2NpaU1hcFtlXTp0aGlzLl9tYXAuZ2V0KGUpfHx0aGlzLl9kZWZhdWx0VmFsdWV9Y2xlYXIoKXt0aGlzLl9hc2NpaU1hcC5maWxsKHRoaXMuX2RlZmF1bHRWYWx1ZSksdGhpcy5fbWFwLmNsZWFyKCl9fWNsYXNzIGZ0e2NvbnN0cnVjdG9yKGUsdCxuKXtjb25zdCBpPW5ldyBVaW50OEFycmF5KGUqdCk7Zm9yKGxldCByPTAsYT1lKnQ7cjxhO3IrKylpW3JdPW47dGhpcy5fZGF0YT1pLHRoaXMucm93cz1lLHRoaXMuY29scz10fWdldChlLHQpe3JldHVybiB0aGlzLl9kYXRhW2UqdGhpcy5jb2xzK3RdfXNldChlLHQsbil7dGhpcy5fZGF0YVtlKnRoaXMuY29scyt0XT1ufX1jbGFzcyBndHtjb25zdHJ1Y3RvcihlKXtsZXQgdD0wLG49MDtmb3IobGV0IGk9MCxyPWUubGVuZ3RoO2k8cjtpKyspe2NvbnN0W3IsYSxvXT1lW2ldO2E+dCYmKHQ9YSkscj5uJiYobj1yKSxvPm4mJihuPW8pfXQrKyxuKys7Y29uc3QgaT1uZXcgZnQobix0LDApO2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl7Y29uc3RbbixyLGFdPWVbdF07aS5zZXQobixyLGEpfXRoaXMuX3N0YXRlcz1pLHRoaXMuX21heENoYXJDb2RlPXR9bmV4dFN0YXRlKGUsdCl7cmV0dXJuIHQ8MHx8dD49dGhpcy5fbWF4Q2hhckNvZGU/MDp0aGlzLl9zdGF0ZXMuZ2V0KGUsdCl9fWxldCBidD1udWxsO2xldCBfdD1udWxsO2NsYXNzIHZ0e3N0YXRpYyBfY3JlYXRlTGluayhlLHQsbixpLHIpe2xldCBhPXItMTtkb3tjb25zdCBuPXQuY2hhckNvZGVBdChhKTtpZigyIT09ZS5nZXQobikpYnJlYWs7YS0tfXdoaWxlKGE+aSk7aWYoaT4wKXtjb25zdCBlPXQuY2hhckNvZGVBdChpLTEpLG49dC5jaGFyQ29kZUF0KGEpOyg0MD09PWUmJjQxPT09bnx8OTE9PT1lJiY5Mz09PW58fDEyMz09PWUmJjEyNT09PW4pJiZhLS19cmV0dXJue3JhbmdlOntzdGFydExpbmVOdW1iZXI6bixzdGFydENvbHVtbjppKzEsZW5kTGluZU51bWJlcjpuLGVuZENvbHVtbjphKzJ9LHVybDp0LnN1YnN0cmluZyhpLGErMSl9fXN0YXRpYyBjb21wdXRlTGlua3MoZSx0PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PT1idCYmKGJ0PW5ldyBndChbWzEsMTA0LDJdLFsxLDcyLDJdLFsxLDEwMiw2XSxbMSw3MCw2XSxbMiwxMTYsM10sWzIsODQsM10sWzMsMTE2LDRdLFszLDg0LDRdLFs0LDExMiw1XSxbNCw4MCw1XSxbNSwxMTUsOV0sWzUsODMsOV0sWzUsNTgsMTBdLFs2LDEwNSw3XSxbNiw3Myw3XSxbNywxMDgsOF0sWzcsNzYsOF0sWzgsMTAxLDldLFs4LDY5LDldLFs5LDU4LDEwXSxbMTAsNDcsMTFdLFsxMSw0NywxMl1dKSksYnR9KCkpe2NvbnN0IG49ZnVuY3Rpb24oKXtpZihudWxsPT09X3Qpe190PW5ldyBwdCgwKTtjb25zdCBlPSIgXHQ8PidcIuOAgeOAgu+9oe+9pO+8jO+8ju+8mu+8m+KAmOOAiOOAjOOAjuOAlO+8iO+8u++9m++9ou+9o++9ne+8ve+8ieOAleOAj+OAjeOAieKAme+9gO+9nuKApiI7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspX3Quc2V0KGUuY2hhckNvZGVBdCh0KSwxKTtjb25zdCB0PSIuLDs6Ijtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylfdC5zZXQodC5jaGFyQ29kZUF0KGUpLDIpfXJldHVybiBfdH0oKSxpPVtdO2ZvcihsZXQgcj0xLGE9ZS5nZXRMaW5lQ291bnQoKTtyPD1hO3IrKyl7Y29uc3QgYT1lLmdldExpbmVDb250ZW50KHIpLG89YS5sZW5ndGg7bGV0IHM9MCxsPTAsYz0wLGg9MSxkPSExLHU9ITEsbT0hMSxwPSExO2Zvcig7czxvOyl7bGV0IGU9ITE7Y29uc3Qgbz1hLmNoYXJDb2RlQXQocyk7aWYoMTM9PT1oKXtsZXQgdDtzd2l0Y2gobyl7Y2FzZSA0MDpkPSEwLHQ9MDticmVhaztjYXNlIDQxOnQ9ZD8wOjE7YnJlYWs7Y2FzZSA5MTptPSEwLHU9ITAsdD0wO2JyZWFrO2Nhc2UgOTM6bT0hMSx0PXU/MDoxO2JyZWFrO2Nhc2UgMTIzOnA9ITAsdD0wO2JyZWFrO2Nhc2UgMTI1OnQ9cD8wOjE7YnJlYWs7Y2FzZSAzOTpjYXNlIDM0OmNhc2UgOTY6dD1jPT09bz8xOjM5PT09Y3x8MzQ9PT1jfHw5Nj09PWM/MDoxO2JyZWFrO2Nhc2UgNDI6dD00Mj09PWM/MTowO2JyZWFrO2Nhc2UgMTI0OnQ9MTI0PT09Yz8xOjA7YnJlYWs7Y2FzZSAzMjp0PW0/MDoxO2JyZWFrO2RlZmF1bHQ6dD1uLmdldChvKX0xPT09dCYmKGkucHVzaCh2dC5fY3JlYXRlTGluayhuLGEscixsLHMpKSxlPSEwKX1lbHNlIGlmKDEyPT09aCl7bGV0IHQ7OTE9PT1vPyh1PSEwLHQ9MCk6dD1uLmdldChvKSwxPT09dD9lPSEwOmg9MTN9ZWxzZSBoPXQubmV4dFN0YXRlKGgsbyksMD09PWgmJihlPSEwKTtlJiYoaD0xLGQ9ITEsdT0hMSxwPSExLGw9cysxLGM9bykscysrfTEzPT09aCYmaS5wdXNoKHZ0Ll9jcmVhdGVMaW5rKG4sYSxyLGwsbykpfXJldHVybiBpfX1jbGFzcyB3dHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2RlZmF1bHRWYWx1ZVNldD1bWyJ0cnVlIiwiZmFsc2UiXSxbIlRydWUiLCJGYWxzZSJdLFsiUHJpdmF0ZSIsIlB1YmxpYyIsIkZyaWVuZCIsIlJlYWRPbmx5IiwiUGFydGlhbCIsIlByb3RlY3RlZCIsIldyaXRlT25seSJdLFsicHVibGljIiwicHJvdGVjdGVkIiwicHJpdmF0ZSJdXX1uYXZpZ2F0ZVZhbHVlU2V0KGUsdCxuLGkscil7aWYoZSYmdCl7Y29uc3Qgbj10aGlzLmRvTmF2aWdhdGVWYWx1ZVNldCh0LHIpO2lmKG4pcmV0dXJue3JhbmdlOmUsdmFsdWU6bn19aWYobiYmaSl7Y29uc3QgZT10aGlzLmRvTmF2aWdhdGVWYWx1ZVNldChpLHIpO2lmKGUpcmV0dXJue3JhbmdlOm4sdmFsdWU6ZX19cmV0dXJuIG51bGx9ZG9OYXZpZ2F0ZVZhbHVlU2V0KGUsdCl7Y29uc3Qgbj10aGlzLm51bWJlclJlcGxhY2UoZSx0KTtyZXR1cm4gbnVsbCE9PW4/bjp0aGlzLnRleHRSZXBsYWNlKGUsdCl9bnVtYmVyUmVwbGFjZShlLHQpe2NvbnN0IG49TWF0aC5wb3coMTAsZS5sZW5ndGgtKGUubGFzdEluZGV4T2YoIi4iKSsxKSk7bGV0IGk9TnVtYmVyKGUpO2NvbnN0IHI9cGFyc2VGbG9hdChlKTtyZXR1cm4gaXNOYU4oaSl8fGlzTmFOKHIpfHxpIT09cj9udWxsOjAhPT1pfHx0PyhpPU1hdGguZmxvb3IoaSpuKSxpKz10P246LW4sU3RyaW5nKGkvbikpOm51bGx9dGV4dFJlcGxhY2UoZSx0KXtyZXR1cm4gdGhpcy52YWx1ZVNldHNSZXBsYWNlKHRoaXMuX2RlZmF1bHRWYWx1ZVNldCxlLHQpfXZhbHVlU2V0c1JlcGxhY2UoZSx0LG4pe2xldCBpPW51bGw7Zm9yKGxldCByPTAsYT1lLmxlbmd0aDtudWxsPT09aSYmcjxhO3IrKylpPXRoaXMudmFsdWVTZXRSZXBsYWNlKGVbcl0sdCxuKTtyZXR1cm4gaX12YWx1ZVNldFJlcGxhY2UoZSx0LG4pe2xldCBpPWUuaW5kZXhPZih0KTtyZXR1cm4gaT49MD8oaSs9bj8xOi0xLGk8MD9pPWUubGVuZ3RoLTE6aSU9ZS5sZW5ndGgsZVtpXSk6bnVsbH19d3QuSU5TVEFOQ0U9bmV3IHd0O2NvbnN0IHl0PU9iamVjdC5mcmVlemUoKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1zZXRUaW1lb3V0KGUuYmluZCh0KSwwKTtyZXR1cm57ZGlzcG9zZSgpe2NsZWFyVGltZW91dChuKX19fSkpO3ZhciBUdDshZnVuY3Rpb24oZSl7ZS5pc0NhbmNlbGxhdGlvblRva2VuPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09ZS5Ob25lfHx0PT09ZS5DYW5jZWxsZWR8fCh0IGluc3RhbmNlb2Yga3R8fCEoIXR8fCJvYmplY3QiIT10eXBlb2YgdCkmJigiYm9vbGVhbiI9PXR5cGVvZiB0LmlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkJiYiZnVuY3Rpb24iPT10eXBlb2YgdC5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCkpfSxlLk5vbmU9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITEsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6Vy5Ob25lfSksZS5DYW5jZWxsZWQ9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITAsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6eXR9KX0oVHR8fChUdD17fSkpO2NsYXNzIGt0e2NvbnN0cnVjdG9yKCl7dGhpcy5faXNDYW5jZWxsZWQ9ITEsdGhpcy5fZW1pdHRlcj1udWxsfWNhbmNlbCgpe3RoaXMuX2lzQ2FuY2VsbGVkfHwodGhpcy5faXNDYW5jZWxsZWQ9ITAsdGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZmlyZSh2b2lkIDApLHRoaXMuZGlzcG9zZSgpKSl9Z2V0IGlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCl7cmV0dXJuIHRoaXMuX2lzQ2FuY2VsbGVkfWdldCBvbkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZD95dDoodGhpcy5fZW1pdHRlcnx8KHRoaXMuX2VtaXR0ZXI9bmV3IEIpLHRoaXMuX2VtaXR0ZXIuZXZlbnQpfWRpc3Bvc2UoKXt0aGlzLl9lbWl0dGVyJiYodGhpcy5fZW1pdHRlci5kaXNwb3NlKCksdGhpcy5fZW1pdHRlcj1udWxsKX19Y2xhc3MgU3R7Y29uc3RydWN0b3IoZSl7dGhpcy5fdG9rZW49dm9pZCAwLHRoaXMuX3BhcmVudExpc3RlbmVyPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj1lJiZlLm9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKHRoaXMuY2FuY2VsLHRoaXMpfWdldCB0b2tlbigpe3JldHVybiB0aGlzLl90b2tlbnx8KHRoaXMuX3Rva2VuPW5ldyBrdCksdGhpcy5fdG9rZW59Y2FuY2VsKCl7dGhpcy5fdG9rZW4/dGhpcy5fdG9rZW4gaW5zdGFuY2VvZiBrdCYmdGhpcy5fdG9rZW4uY2FuY2VsKCk6dGhpcy5fdG9rZW49VHQuQ2FuY2VsbGVkfWRpc3Bvc2UoZT0hMSl7dmFyIHQ7ZSYmdGhpcy5jYW5jZWwoKSxudWxsPT09KHQ9dGhpcy5fcGFyZW50TGlzdGVuZXIpfHx2b2lkIDA9PT10fHx0LmRpc3Bvc2UoKSx0aGlzLl90b2tlbj90aGlzLl90b2tlbiBpbnN0YW5jZW9mIGt0JiZ0aGlzLl90b2tlbi5kaXNwb3NlKCk6dGhpcy5fdG9rZW49VHQuTm9uZX19Y2xhc3MgeHR7Y29uc3RydWN0b3IoKXt0aGlzLl9rZXlDb2RlVG9TdHI9W10sdGhpcy5fc3RyVG9LZXlDb2RlPU9iamVjdC5jcmVhdGUobnVsbCl9ZGVmaW5lKGUsdCl7dGhpcy5fa2V5Q29kZVRvU3RyW2VdPXQsdGhpcy5fc3RyVG9LZXlDb2RlW3QudG9Mb3dlckNhc2UoKV09ZX1rZXlDb2RlVG9TdHIoZSl7cmV0dXJuIHRoaXMuX2tleUNvZGVUb1N0cltlXX1zdHJUb0tleUNvZGUoZSl7cmV0dXJuIHRoaXMuX3N0clRvS2V5Q29kZVtlLnRvTG93ZXJDYXNlKCldfHwwfX1jb25zdCBMdD1uZXcgeHQsQ3Q9bmV3IHh0LEV0PW5ldyB4dCxBdD1uZXcgQXJyYXkoMjMwKSxNdD1PYmplY3QuY3JlYXRlKG51bGwpLFJ0PU9iamVjdC5jcmVhdGUobnVsbCk7dmFyIE50OyFmdW5jdGlvbigpe2NvbnN0IGU9IiIsdD1bWzEsMCwiTm9uZSIsMCwidW5rbm93biIsMCwiVktfVU5LTk9XTiIsZSxlXSxbMSwxLCJIeXBlciIsMCxlLDAsZSxlLGVdLFsxLDIsIlN1cGVyIiwwLGUsMCxlLGUsZV0sWzEsMywiRm4iLDAsZSwwLGUsZSxlXSxbMSw0LCJGbkxvY2siLDAsZSwwLGUsZSxlXSxbMSw1LCJTdXNwZW5kIiwwLGUsMCxlLGUsZV0sWzEsNiwiUmVzdW1lIiwwLGUsMCxlLGUsZV0sWzEsNywiVHVyYm8iLDAsZSwwLGUsZSxlXSxbMSw4LCJTbGVlcCIsMCxlLDAsIlZLX1NMRUVQIixlLGVdLFsxLDksIldha2VVcCIsMCxlLDAsZSxlLGVdLFswLDEwLCJLZXlBIiwzMSwiQSIsNjUsIlZLX0EiLGUsZV0sWzAsMTEsIktleUIiLDMyLCJCIiw2NiwiVktfQiIsZSxlXSxbMCwxMiwiS2V5QyIsMzMsIkMiLDY3LCJWS19DIixlLGVdLFswLDEzLCJLZXlEIiwzNCwiRCIsNjgsIlZLX0QiLGUsZV0sWzAsMTQsIktleUUiLDM1LCJFIiw2OSwiVktfRSIsZSxlXSxbMCwxNSwiS2V5RiIsMzYsIkYiLDcwLCJWS19GIixlLGVdLFswLDE2LCJLZXlHIiwzNywiRyIsNzEsIlZLX0ciLGUsZV0sWzAsMTcsIktleUgiLDM4LCJIIiw3MiwiVktfSCIsZSxlXSxbMCwxOCwiS2V5SSIsMzksIkkiLDczLCJWS19JIixlLGVdLFswLDE5LCJLZXlKIiw0MCwiSiIsNzQsIlZLX0oiLGUsZV0sWzAsMjAsIktleUsiLDQxLCJLIiw3NSwiVktfSyIsZSxlXSxbMCwyMSwiS2V5TCIsNDIsIkwiLDc2LCJWS19MIixlLGVdLFswLDIyLCJLZXlNIiw0MywiTSIsNzcsIlZLX00iLGUsZV0sWzAsMjMsIktleU4iLDQ0LCJOIiw3OCwiVktfTiIsZSxlXSxbMCwyNCwiS2V5TyIsNDUsIk8iLDc5LCJWS19PIixlLGVdLFswLDI1LCJLZXlQIiw0NiwiUCIsODAsIlZLX1AiLGUsZV0sWzAsMjYsIktleVEiLDQ3LCJRIiw4MSwiVktfUSIsZSxlXSxbMCwyNywiS2V5UiIsNDgsIlIiLDgyLCJWS19SIixlLGVdLFswLDI4LCJLZXlTIiw0OSwiUyIsODMsIlZLX1MiLGUsZV0sWzAsMjksIktleVQiLDUwLCJUIiw4NCwiVktfVCIsZSxlXSxbMCwzMCwiS2V5VSIsNTEsIlUiLDg1LCJWS19VIixlLGVdLFswLDMxLCJLZXlWIiw1MiwiViIsODYsIlZLX1YiLGUsZV0sWzAsMzIsIktleVciLDUzLCJXIiw4NywiVktfVyIsZSxlXSxbMCwzMywiS2V5WCIsNTQsIlgiLDg4LCJWS19YIixlLGVdLFswLDM0LCJLZXlZIiw1NSwiWSIsODksIlZLX1kiLGUsZV0sWzAsMzUsIktleVoiLDU2LCJaIiw5MCwiVktfWiIsZSxlXSxbMCwzNiwiRGlnaXQxIiwyMiwiMSIsNDksIlZLXzEiLGUsZV0sWzAsMzcsIkRpZ2l0MiIsMjMsIjIiLDUwLCJWS18yIixlLGVdLFswLDM4LCJEaWdpdDMiLDI0LCIzIiw1MSwiVktfMyIsZSxlXSxbMCwzOSwiRGlnaXQ0IiwyNSwiNCIsNTIsIlZLXzQiLGUsZV0sWzAsNDAsIkRpZ2l0NSIsMjYsIjUiLDUzLCJWS181IixlLGVdLFswLDQxLCJEaWdpdDYiLDI3LCI2Iiw1NCwiVktfNiIsZSxlXSxbMCw0MiwiRGlnaXQ3IiwyOCwiNyIsNTUsIlZLXzciLGUsZV0sWzAsNDMsIkRpZ2l0OCIsMjksIjgiLDU2LCJWS184IixlLGVdLFswLDQ0LCJEaWdpdDkiLDMwLCI5Iiw1NywiVktfOSIsZSxlXSxbMCw0NSwiRGlnaXQwIiwyMSwiMCIsNDgsIlZLXzAiLGUsZV0sWzEsNDYsIkVudGVyIiwzLCJFbnRlciIsMTMsIlZLX1JFVFVSTiIsZSxlXSxbMSw0NywiRXNjYXBlIiw5LCJFc2NhcGUiLDI3LCJWS19FU0NBUEUiLGUsZV0sWzEsNDgsIkJhY2tzcGFjZSIsMSwiQmFja3NwYWNlIiw4LCJWS19CQUNLIixlLGVdLFsxLDQ5LCJUYWIiLDIsIlRhYiIsOSwiVktfVEFCIixlLGVdLFsxLDUwLCJTcGFjZSIsMTAsIlNwYWNlIiwzMiwiVktfU1BBQ0UiLGUsZV0sWzAsNTEsIk1pbnVzIiw4OCwiLSIsMTg5LCJWS19PRU1fTUlOVVMiLCItIiwiT0VNX01JTlVTIl0sWzAsNTIsIkVxdWFsIiw4NiwiPSIsMTg3LCJWS19PRU1fUExVUyIsIj0iLCJPRU1fUExVUyJdLFswLDUzLCJCcmFja2V0TGVmdCIsOTIsIlsiLDIxOSwiVktfT0VNXzQiLCJbIiwiT0VNXzQiXSxbMCw1NCwiQnJhY2tldFJpZ2h0Iiw5NCwiXSIsMjIxLCJWS19PRU1fNiIsIl0iLCJPRU1fNiJdLFswLDU1LCJCYWNrc2xhc2giLDkzLCJcXCIsMjIwLCJWS19PRU1fNSIsIlxcIiwiT0VNXzUiXSxbMCw1NiwiSW50bEhhc2giLDAsZSwwLGUsZSxlXSxbMCw1NywiU2VtaWNvbG9uIiw4NSwiOyIsMTg2LCJWS19PRU1fMSIsIjsiLCJPRU1fMSJdLFswLDU4LCJRdW90ZSIsOTUsIiciLDIyMiwiVktfT0VNXzciLCInIiwiT0VNXzciXSxbMCw1OSwiQmFja3F1b3RlIiw5MSwiYCIsMTkyLCJWS19PRU1fMyIsImAiLCJPRU1fMyJdLFswLDYwLCJDb21tYSIsODcsIiwiLDE4OCwiVktfT0VNX0NPTU1BIiwiLCIsIk9FTV9DT01NQSJdLFswLDYxLCJQZXJpb2QiLDg5LCIuIiwxOTAsIlZLX09FTV9QRVJJT0QiLCIuIiwiT0VNX1BFUklPRCJdLFswLDYyLCJTbGFzaCIsOTAsIi8iLDE5MSwiVktfT0VNXzIiLCIvIiwiT0VNXzIiXSxbMSw2MywiQ2Fwc0xvY2siLDgsIkNhcHNMb2NrIiwyMCwiVktfQ0FQSVRBTCIsZSxlXSxbMSw2NCwiRjEiLDU5LCJGMSIsMTEyLCJWS19GMSIsZSxlXSxbMSw2NSwiRjIiLDYwLCJGMiIsMTEzLCJWS19GMiIsZSxlXSxbMSw2NiwiRjMiLDYxLCJGMyIsMTE0LCJWS19GMyIsZSxlXSxbMSw2NywiRjQiLDYyLCJGNCIsMTE1LCJWS19GNCIsZSxlXSxbMSw2OCwiRjUiLDYzLCJGNSIsMTE2LCJWS19GNSIsZSxlXSxbMSw2OSwiRjYiLDY0LCJGNiIsMTE3LCJWS19GNiIsZSxlXSxbMSw3MCwiRjciLDY1LCJGNyIsMTE4LCJWS19GNyIsZSxlXSxbMSw3MSwiRjgiLDY2LCJGOCIsMTE5LCJWS19GOCIsZSxlXSxbMSw3MiwiRjkiLDY3LCJGOSIsMTIwLCJWS19GOSIsZSxlXSxbMSw3MywiRjEwIiw2OCwiRjEwIiwxMjEsIlZLX0YxMCIsZSxlXSxbMSw3NCwiRjExIiw2OSwiRjExIiwxMjIsIlZLX0YxMSIsZSxlXSxbMSw3NSwiRjEyIiw3MCwiRjEyIiwxMjMsIlZLX0YxMiIsZSxlXSxbMSw3NiwiUHJpbnRTY3JlZW4iLDAsZSwwLGUsZSxlXSxbMSw3NywiU2Nyb2xsTG9jayIsODQsIlNjcm9sbExvY2siLDE0NSwiVktfU0NST0xMIixlLGVdLFsxLDc4LCJQYXVzZSIsNywiUGF1c2VCcmVhayIsMTksIlZLX1BBVVNFIixlLGVdLFsxLDc5LCJJbnNlcnQiLDE5LCJJbnNlcnQiLDQ1LCJWS19JTlNFUlQiLGUsZV0sWzEsODAsIkhvbWUiLDE0LCJIb21lIiwzNiwiVktfSE9NRSIsZSxlXSxbMSw4MSwiUGFnZVVwIiwxMSwiUGFnZVVwIiwzMywiVktfUFJJT1IiLGUsZV0sWzEsODIsIkRlbGV0ZSIsMjAsIkRlbGV0ZSIsNDYsIlZLX0RFTEVURSIsZSxlXSxbMSw4MywiRW5kIiwxMywiRW5kIiwzNSwiVktfRU5EIixlLGVdLFsxLDg0LCJQYWdlRG93biIsMTIsIlBhZ2VEb3duIiwzNCwiVktfTkVYVCIsZSxlXSxbMSw4NSwiQXJyb3dSaWdodCIsMTcsIlJpZ2h0QXJyb3ciLDM5LCJWS19SSUdIVCIsIlJpZ2h0IixlXSxbMSw4NiwiQXJyb3dMZWZ0IiwxNSwiTGVmdEFycm93IiwzNywiVktfTEVGVCIsIkxlZnQiLGVdLFsxLDg3LCJBcnJvd0Rvd24iLDE4LCJEb3duQXJyb3ciLDQwLCJWS19ET1dOIiwiRG93biIsZV0sWzEsODgsIkFycm93VXAiLDE2LCJVcEFycm93IiwzOCwiVktfVVAiLCJVcCIsZV0sWzEsODksIk51bUxvY2siLDgzLCJOdW1Mb2NrIiwxNDQsIlZLX05VTUxPQ0siLGUsZV0sWzEsOTAsIk51bXBhZERpdmlkZSIsMTEzLCJOdW1QYWRfRGl2aWRlIiwxMTEsIlZLX0RJVklERSIsZSxlXSxbMSw5MSwiTnVtcGFkTXVsdGlwbHkiLDEwOCwiTnVtUGFkX011bHRpcGx5IiwxMDYsIlZLX01VTFRJUExZIixlLGVdLFsxLDkyLCJOdW1wYWRTdWJ0cmFjdCIsMTExLCJOdW1QYWRfU3VidHJhY3QiLDEwOSwiVktfU1VCVFJBQ1QiLGUsZV0sWzEsOTMsIk51bXBhZEFkZCIsMTA5LCJOdW1QYWRfQWRkIiwxMDcsIlZLX0FERCIsZSxlXSxbMSw5NCwiTnVtcGFkRW50ZXIiLDMsZSwwLGUsZSxlXSxbMSw5NSwiTnVtcGFkMSIsOTksIk51bVBhZDEiLDk3LCJWS19OVU1QQUQxIixlLGVdLFsxLDk2LCJOdW1wYWQyIiwxMDAsIk51bVBhZDIiLDk4LCJWS19OVU1QQUQyIixlLGVdLFsxLDk3LCJOdW1wYWQzIiwxMDEsIk51bVBhZDMiLDk5LCJWS19OVU1QQUQzIixlLGVdLFsxLDk4LCJOdW1wYWQ0IiwxMDIsIk51bVBhZDQiLDEwMCwiVktfTlVNUEFENCIsZSxlXSxbMSw5OSwiTnVtcGFkNSIsMTAzLCJOdW1QYWQ1IiwxMDEsIlZLX05VTVBBRDUiLGUsZV0sWzEsMTAwLCJOdW1wYWQ2IiwxMDQsIk51bVBhZDYiLDEwMiwiVktfTlVNUEFENiIsZSxlXSxbMSwxMDEsIk51bXBhZDciLDEwNSwiTnVtUGFkNyIsMTAzLCJWS19OVU1QQUQ3IixlLGVdLFsxLDEwMiwiTnVtcGFkOCIsMTA2LCJOdW1QYWQ4IiwxMDQsIlZLX05VTVBBRDgiLGUsZV0sWzEsMTAzLCJOdW1wYWQ5IiwxMDcsIk51bVBhZDkiLDEwNSwiVktfTlVNUEFEOSIsZSxlXSxbMSwxMDQsIk51bXBhZDAiLDk4LCJOdW1QYWQwIiw5NiwiVktfTlVNUEFEMCIsZSxlXSxbMSwxMDUsIk51bXBhZERlY2ltYWwiLDExMiwiTnVtUGFkX0RlY2ltYWwiLDExMCwiVktfREVDSU1BTCIsZSxlXSxbMCwxMDYsIkludGxCYWNrc2xhc2giLDk3LCJPRU1fMTAyIiwyMjYsIlZLX09FTV8xMDIiLGUsZV0sWzEsMTA3LCJDb250ZXh0TWVudSIsNTgsIkNvbnRleHRNZW51Iiw5MyxlLGUsZV0sWzEsMTA4LCJQb3dlciIsMCxlLDAsZSxlLGVdLFsxLDEwOSwiTnVtcGFkRXF1YWwiLDAsZSwwLGUsZSxlXSxbMSwxMTAsIkYxMyIsNzEsIkYxMyIsMTI0LCJWS19GMTMiLGUsZV0sWzEsMTExLCJGMTQiLDcyLCJGMTQiLDEyNSwiVktfRjE0IixlLGVdLFsxLDExMiwiRjE1Iiw3MywiRjE1IiwxMjYsIlZLX0YxNSIsZSxlXSxbMSwxMTMsIkYxNiIsNzQsIkYxNiIsMTI3LCJWS19GMTYiLGUsZV0sWzEsMTE0LCJGMTciLDc1LCJGMTciLDEyOCwiVktfRjE3IixlLGVdLFsxLDExNSwiRjE4Iiw3NiwiRjE4IiwxMjksIlZLX0YxOCIsZSxlXSxbMSwxMTYsIkYxOSIsNzcsIkYxOSIsMTMwLCJWS19GMTkiLGUsZV0sWzEsMTE3LCJGMjAiLDc4LCJGMjAiLDEzMSwiVktfRjIwIixlLGVdLFsxLDExOCwiRjIxIiw3OSwiRjIxIiwxMzIsIlZLX0YyMSIsZSxlXSxbMSwxMTksIkYyMiIsODAsIkYyMiIsMTMzLCJWS19GMjIiLGUsZV0sWzEsMTIwLCJGMjMiLDgxLCJGMjMiLDEzNCwiVktfRjIzIixlLGVdLFsxLDEyMSwiRjI0Iiw4MiwiRjI0IiwxMzUsIlZLX0YyNCIsZSxlXSxbMSwxMjIsIk9wZW4iLDAsZSwwLGUsZSxlXSxbMSwxMjMsIkhlbHAiLDAsZSwwLGUsZSxlXSxbMSwxMjQsIlNlbGVjdCIsMCxlLDAsZSxlLGVdLFsxLDEyNSwiQWdhaW4iLDAsZSwwLGUsZSxlXSxbMSwxMjYsIlVuZG8iLDAsZSwwLGUsZSxlXSxbMSwxMjcsIkN1dCIsMCxlLDAsZSxlLGVdLFsxLDEyOCwiQ29weSIsMCxlLDAsZSxlLGVdLFsxLDEyOSwiUGFzdGUiLDAsZSwwLGUsZSxlXSxbMSwxMzAsIkZpbmQiLDAsZSwwLGUsZSxlXSxbMSwxMzEsIkF1ZGlvVm9sdW1lTXV0ZSIsMTE3LCJBdWRpb1ZvbHVtZU11dGUiLDE3MywiVktfVk9MVU1FX01VVEUiLGUsZV0sWzEsMTMyLCJBdWRpb1ZvbHVtZVVwIiwxMTgsIkF1ZGlvVm9sdW1lVXAiLDE3NSwiVktfVk9MVU1FX1VQIixlLGVdLFsxLDEzMywiQXVkaW9Wb2x1bWVEb3duIiwxMTksIkF1ZGlvVm9sdW1lRG93biIsMTc0LCJWS19WT0xVTUVfRE9XTiIsZSxlXSxbMSwxMzQsIk51bXBhZENvbW1hIiwxMTAsIk51bVBhZF9TZXBhcmF0b3IiLDEwOCwiVktfU0VQQVJBVE9SIixlLGVdLFswLDEzNSwiSW50bFJvIiwxMTUsIkFCTlRfQzEiLDE5MywiVktfQUJOVF9DMSIsZSxlXSxbMSwxMzYsIkthbmFNb2RlIiwwLGUsMCxlLGUsZV0sWzAsMTM3LCJJbnRsWWVuIiwwLGUsMCxlLGUsZV0sWzEsMTM4LCJDb252ZXJ0IiwwLGUsMCxlLGUsZV0sWzEsMTM5LCJOb25Db252ZXJ0IiwwLGUsMCxlLGUsZV0sWzEsMTQwLCJMYW5nMSIsMCxlLDAsZSxlLGVdLFsxLDE0MSwiTGFuZzIiLDAsZSwwLGUsZSxlXSxbMSwxNDIsIkxhbmczIiwwLGUsMCxlLGUsZV0sWzEsMTQzLCJMYW5nNCIsMCxlLDAsZSxlLGVdLFsxLDE0NCwiTGFuZzUiLDAsZSwwLGUsZSxlXSxbMSwxNDUsIkFib3J0IiwwLGUsMCxlLGUsZV0sWzEsMTQ2LCJQcm9wcyIsMCxlLDAsZSxlLGVdLFsxLDE0NywiTnVtcGFkUGFyZW5MZWZ0IiwwLGUsMCxlLGUsZV0sWzEsMTQ4LCJOdW1wYWRQYXJlblJpZ2h0IiwwLGUsMCxlLGUsZV0sWzEsMTQ5LCJOdW1wYWRCYWNrc3BhY2UiLDAsZSwwLGUsZSxlXSxbMSwxNTAsIk51bXBhZE1lbW9yeVN0b3JlIiwwLGUsMCxlLGUsZV0sWzEsMTUxLCJOdW1wYWRNZW1vcnlSZWNhbGwiLDAsZSwwLGUsZSxlXSxbMSwxNTIsIk51bXBhZE1lbW9yeUNsZWFyIiwwLGUsMCxlLGUsZV0sWzEsMTUzLCJOdW1wYWRNZW1vcnlBZGQiLDAsZSwwLGUsZSxlXSxbMSwxNTQsIk51bXBhZE1lbW9yeVN1YnRyYWN0IiwwLGUsMCxlLGUsZV0sWzEsMTU1LCJOdW1wYWRDbGVhciIsMTMxLCJDbGVhciIsMTIsIlZLX0NMRUFSIixlLGVdLFsxLDE1NiwiTnVtcGFkQ2xlYXJFbnRyeSIsMCxlLDAsZSxlLGVdLFsxLDAsZSw1LCJDdHJsIiwxNywiVktfQ09OVFJPTCIsZSxlXSxbMSwwLGUsNCwiU2hpZnQiLDE2LCJWS19TSElGVCIsZSxlXSxbMSwwLGUsNiwiQWx0IiwxOCwiVktfTUVOVSIsZSxlXSxbMSwwLGUsNTcsIk1ldGEiLDkxLCJWS19DT01NQU5EIixlLGVdLFsxLDE1NywiQ29udHJvbExlZnQiLDUsZSwwLCJWS19MQ09OVFJPTCIsZSxlXSxbMSwxNTgsIlNoaWZ0TGVmdCIsNCxlLDAsIlZLX0xTSElGVCIsZSxlXSxbMSwxNTksIkFsdExlZnQiLDYsZSwwLCJWS19MTUVOVSIsZSxlXSxbMSwxNjAsIk1ldGFMZWZ0Iiw1NyxlLDAsIlZLX0xXSU4iLGUsZV0sWzEsMTYxLCJDb250cm9sUmlnaHQiLDUsZSwwLCJWS19SQ09OVFJPTCIsZSxlXSxbMSwxNjIsIlNoaWZ0UmlnaHQiLDQsZSwwLCJWS19SU0hJRlQiLGUsZV0sWzEsMTYzLCJBbHRSaWdodCIsNixlLDAsIlZLX1JNRU5VIixlLGVdLFsxLDE2NCwiTWV0YVJpZ2h0Iiw1NyxlLDAsIlZLX1JXSU4iLGUsZV0sWzEsMTY1LCJCcmlnaHRuZXNzVXAiLDAsZSwwLGUsZSxlXSxbMSwxNjYsIkJyaWdodG5lc3NEb3duIiwwLGUsMCxlLGUsZV0sWzEsMTY3LCJNZWRpYVBsYXkiLDAsZSwwLGUsZSxlXSxbMSwxNjgsIk1lZGlhUmVjb3JkIiwwLGUsMCxlLGUsZV0sWzEsMTY5LCJNZWRpYUZhc3RGb3J3YXJkIiwwLGUsMCxlLGUsZV0sWzEsMTcwLCJNZWRpYVJld2luZCIsMCxlLDAsZSxlLGVdLFsxLDE3MSwiTWVkaWFUcmFja05leHQiLDEyNCwiTWVkaWFUcmFja05leHQiLDE3NiwiVktfTUVESUFfTkVYVF9UUkFDSyIsZSxlXSxbMSwxNzIsIk1lZGlhVHJhY2tQcmV2aW91cyIsMTI1LCJNZWRpYVRyYWNrUHJldmlvdXMiLDE3NywiVktfTUVESUFfUFJFVl9UUkFDSyIsZSxlXSxbMSwxNzMsIk1lZGlhU3RvcCIsMTI2LCJNZWRpYVN0b3AiLDE3OCwiVktfTUVESUFfU1RPUCIsZSxlXSxbMSwxNzQsIkVqZWN0IiwwLGUsMCxlLGUsZV0sWzEsMTc1LCJNZWRpYVBsYXlQYXVzZSIsMTI3LCJNZWRpYVBsYXlQYXVzZSIsMTc5LCJWS19NRURJQV9QTEFZX1BBVVNFIixlLGVdLFsxLDE3NiwiTWVkaWFTZWxlY3QiLDEyOCwiTGF1bmNoTWVkaWFQbGF5ZXIiLDE4MSwiVktfTUVESUFfTEFVTkNIX01FRElBX1NFTEVDVCIsZSxlXSxbMSwxNzcsIkxhdW5jaE1haWwiLDEyOSwiTGF1bmNoTWFpbCIsMTgwLCJWS19NRURJQV9MQVVOQ0hfTUFJTCIsZSxlXSxbMSwxNzgsIkxhdW5jaEFwcDIiLDEzMCwiTGF1bmNoQXBwMiIsMTgzLCJWS19NRURJQV9MQVVOQ0hfQVBQMiIsZSxlXSxbMSwxNzksIkxhdW5jaEFwcDEiLDAsZSwwLCJWS19NRURJQV9MQVVOQ0hfQVBQMSIsZSxlXSxbMSwxODAsIlNlbGVjdFRhc2siLDAsZSwwLGUsZSxlXSxbMSwxODEsIkxhdW5jaFNjcmVlblNhdmVyIiwwLGUsMCxlLGUsZV0sWzEsMTgyLCJCcm93c2VyU2VhcmNoIiwxMjAsIkJyb3dzZXJTZWFyY2giLDE3MCwiVktfQlJPV1NFUl9TRUFSQ0giLGUsZV0sWzEsMTgzLCJCcm93c2VySG9tZSIsMTIxLCJCcm93c2VySG9tZSIsMTcyLCJWS19CUk9XU0VSX0hPTUUiLGUsZV0sWzEsMTg0LCJCcm93c2VyQmFjayIsMTIyLCJCcm93c2VyQmFjayIsMTY2LCJWS19CUk9XU0VSX0JBQ0siLGUsZV0sWzEsMTg1LCJCcm93c2VyRm9yd2FyZCIsMTIzLCJCcm93c2VyRm9yd2FyZCIsMTY3LCJWS19CUk9XU0VSX0ZPUldBUkQiLGUsZV0sWzEsMTg2LCJCcm93c2VyU3RvcCIsMCxlLDAsIlZLX0JST1dTRVJfU1RPUCIsZSxlXSxbMSwxODcsIkJyb3dzZXJSZWZyZXNoIiwwLGUsMCwiVktfQlJPV1NFUl9SRUZSRVNIIixlLGVdLFsxLDE4OCwiQnJvd3NlckZhdm9yaXRlcyIsMCxlLDAsIlZLX0JST1dTRVJfRkFWT1JJVEVTIixlLGVdLFsxLDE4OSwiWm9vbVRvZ2dsZSIsMCxlLDAsZSxlLGVdLFsxLDE5MCwiTWFpbFJlcGx5IiwwLGUsMCxlLGUsZV0sWzEsMTkxLCJNYWlsRm9yd2FyZCIsMCxlLDAsZSxlLGVdLFsxLDE5MiwiTWFpbFNlbmQiLDAsZSwwLGUsZSxlXSxbMSwwLGUsMTE0LCJLZXlJbkNvbXBvc2l0aW9uIiwyMjksZSxlLGVdLFsxLDAsZSwxMTYsIkFCTlRfQzIiLDE5NCwiVktfQUJOVF9DMiIsZSxlXSxbMSwwLGUsOTYsIk9FTV84IiwyMjMsIlZLX09FTV84IixlLGVdLFsxLDAsZSwwLGUsMCwiVktfS0FOQSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0hBTkdVTCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0pVTkpBIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfRklOQUwiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19IQU5KQSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0tBTkpJIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQ09OVkVSVCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX05PTkNPTlZFUlQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19BQ0NFUFQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19NT0RFQ0hBTkdFIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfU0VMRUNUIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfUFJJTlQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19FWEVDVVRFIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfU05BUFNIT1QiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19IRUxQIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQVBQUyIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX1BST0NFU1NLRVkiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19QQUNLRVQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19EQkVfU0JDU0NIQVIiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19EQkVfREJDU0NIQVIiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19BVFROIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQ1JTRUwiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19FWFNFTCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0VSRU9GIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfUExBWSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX1pPT00iLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19OT05BTUUiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19QQTEiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19PRU1fQ0xFQVIiLGUsZV1dLG49W10saT1bXTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdFt0LHIsYSxvLHMsbCxjLGgsZF09ZTtpZihpW3JdfHwoaVtyXT0hMCxNdFthXT1yLFJ0W2EudG9Mb3dlckNhc2UoKV09ciksIW5bb10pe2lmKG5bb109ITAsIXMpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgcmVwcmVzZW50YXRpb24gbWlzc2luZyBmb3Iga2V5IGNvZGUgJHtvfSBhcm91bmQgc2NhbiBjb2RlICR7YX1gKTtMdC5kZWZpbmUobyxzKSxDdC5kZWZpbmUobyxofHxzKSxFdC5kZWZpbmUobyxkfHxofHxzKX1sJiYoQXRbbF09byl9fSgpLGZ1bmN0aW9uKGUpe2UudG9TdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIEx0LmtleUNvZGVUb1N0cihlKX0sZS5mcm9tU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiBMdC5zdHJUb0tleUNvZGUoZSl9LGUudG9Vc2VyU2V0dGluZ3NVUz1mdW5jdGlvbihlKXtyZXR1cm4gQ3Qua2V5Q29kZVRvU3RyKGUpfSxlLnRvVXNlclNldHRpbmdzR2VuZXJhbD1mdW5jdGlvbihlKXtyZXR1cm4gRXQua2V5Q29kZVRvU3RyKGUpfSxlLmZyb21Vc2VyU2V0dGluZ3M9ZnVuY3Rpb24oZSl7cmV0dXJuIEN0LnN0clRvS2V5Q29kZShlKXx8RXQuc3RyVG9LZXlDb2RlKGUpfSxlLnRvRWxlY3Ryb25BY2NlbGVyYXRvcj1mdW5jdGlvbihlKXtpZihlPj05OCYmZTw9MTEzKXJldHVybiBudWxsO3N3aXRjaChlKXtjYXNlIDE2OnJldHVybiJVcCI7Y2FzZSAxODpyZXR1cm4iRG93biI7Y2FzZSAxNTpyZXR1cm4iTGVmdCI7Y2FzZSAxNzpyZXR1cm4iUmlnaHQifXJldHVybiBMdC5rZXlDb2RlVG9TdHIoZSl9fShOdHx8KE50PXt9KSk7Y2xhc3MgSXQgZXh0ZW5kcyBpdHtjb25zdHJ1Y3RvcihlLHQsbixpKXtzdXBlcihlLHQsbixpKSx0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj1lLHRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW49dCx0aGlzLnBvc2l0aW9uTGluZU51bWJlcj1uLHRoaXMucG9zaXRpb25Db2x1bW49aX10b1N0cmluZygpe3JldHVybiJbIit0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcisiLCIrdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbisiIC0+ICIrdGhpcy5wb3NpdGlvbkxpbmVOdW1iZXIrIiwiK3RoaXMucG9zaXRpb25Db2x1bW4rIl0ifWVxdWFsc1NlbGVjdGlvbihlKXtyZXR1cm4gSXQuc2VsZWN0aW9uc0VxdWFsKHRoaXMsZSl9c3RhdGljIHNlbGVjdGlvbnNFcXVhbChlLHQpe3JldHVybiBlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj09PXQuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyJiZlLnNlbGVjdGlvblN0YXJ0Q29sdW1uPT09dC5zZWxlY3Rpb25TdGFydENvbHVtbiYmZS5wb3NpdGlvbkxpbmVOdW1iZXI9PT10LnBvc2l0aW9uTGluZU51bWJlciYmZS5wb3NpdGlvbkNvbHVtbj09PXQucG9zaXRpb25Db2x1bW59Z2V0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT09dGhpcy5zdGFydExpbmVOdW1iZXImJnRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW49PT10aGlzLnN0YXJ0Q29sdW1uPzA6MX1zZXRFbmRQb3NpdGlvbihlLHQpe3JldHVybiAwPT09dGhpcy5nZXREaXJlY3Rpb24oKT9uZXcgSXQodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbixlLHQpOm5ldyBJdChlLHQsdGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbil9Z2V0UG9zaXRpb24oKXtyZXR1cm4gbmV3IG50KHRoaXMucG9zaXRpb25MaW5lTnVtYmVyLHRoaXMucG9zaXRpb25Db2x1bW4pfWdldFNlbGVjdGlvblN0YXJ0KCl7cmV0dXJuIG5ldyBudCh0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcix0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKX1zZXRTdGFydFBvc2l0aW9uKGUsdCl7cmV0dXJuIDA9PT10aGlzLmdldERpcmVjdGlvbigpP25ldyBJdChlLHQsdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKTpuZXcgSXQodGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uLGUsdCl9c3RhdGljIGZyb21Qb3NpdGlvbnMoZSx0PWUpe3JldHVybiBuZXcgSXQoZS5saW5lTnVtYmVyLGUuY29sdW1uLHQubGluZU51bWJlcix0LmNvbHVtbil9c3RhdGljIGZyb21SYW5nZShlLHQpe3JldHVybiAwPT09dD9uZXcgSXQoZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbixlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pOm5ldyBJdChlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4sZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbil9c3RhdGljIGxpZnRTZWxlY3Rpb24oZSl7cmV0dXJuIG5ldyBJdChlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcixlLnNlbGVjdGlvblN0YXJ0Q29sdW1uLGUucG9zaXRpb25MaW5lTnVtYmVyLGUucG9zaXRpb25Db2x1bW4pfXN0YXRpYyBzZWxlY3Rpb25zQXJyRXF1YWwoZSx0KXtpZihlJiYhdHx8IWUmJnQpcmV0dXJuITE7aWYoIWUmJiF0KXJldHVybiEwO2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7bisrKWlmKCF0aGlzLnNlbGVjdGlvbnNFcXVhbChlW25dLHRbbl0pKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBpc0lTZWxlY3Rpb24oZSl7cmV0dXJuIGUmJiJudW1iZXIiPT10eXBlb2YgZS5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5zZWxlY3Rpb25TdGFydENvbHVtbiYmIm51bWJlciI9PXR5cGVvZiBlLnBvc2l0aW9uTGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnBvc2l0aW9uQ29sdW1ufXN0YXRpYyBjcmVhdGVXaXRoRGlyZWN0aW9uKGUsdCxuLGkscil7cmV0dXJuIDA9PT1yP25ldyBJdChlLHQsbixpKTpuZXcgSXQobixpLGUsdCl9fWNvbnN0IFV0PU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gSHQoZSx0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpe2NvbnN0IG49VXRbdF07aWYodm9pZCAwPT09bil0aHJvdyBuZXcgRXJyb3IoYCR7ZX0gcmVmZXJlbmNlcyBhbiB1bmtub3duIGNvZGljb246ICR7dH1gKTt0PW59cmV0dXJuIFV0W2VdPXQse2lkOmV9fWNvbnN0IHp0PXthZGQ6SHQoImFkZCIsNmU0KSxwbHVzOkh0KCJwbHVzIiw2ZTQpLGdpc3ROZXc6SHQoImdpc3QtbmV3Iiw2ZTQpLHJlcG9DcmVhdGU6SHQoInJlcG8tY3JlYXRlIiw2ZTQpLGxpZ2h0YnVsYjpIdCgibGlnaHRidWxiIiw2MDAwMSksbGlnaHRCdWxiOkh0KCJsaWdodC1idWxiIiw2MDAwMSkscmVwbzpIdCgicmVwbyIsNjAwMDIpLHJlcG9EZWxldGU6SHQoInJlcG8tZGVsZXRlIiw2MDAwMiksZ2lzdEZvcms6SHQoImdpc3QtZm9yayIsNjAwMDMpLHJlcG9Gb3JrZWQ6SHQoInJlcG8tZm9ya2VkIiw2MDAwMyksZ2l0UHVsbFJlcXVlc3Q6SHQoImdpdC1wdWxsLXJlcXVlc3QiLDYwMDA0KSxnaXRQdWxsUmVxdWVzdEFiYW5kb25lZDpIdCgiZ2l0LXB1bGwtcmVxdWVzdC1hYmFuZG9uZWQiLDYwMDA0KSxyZWNvcmRLZXlzOkh0KCJyZWNvcmQta2V5cyIsNjAwMDUpLGtleWJvYXJkOkh0KCJrZXlib2FyZCIsNjAwMDUpLHRhZzpIdCgidGFnIiw2MDAwNiksdGFnQWRkOkh0KCJ0YWctYWRkIiw2MDAwNiksdGFnUmVtb3ZlOkh0KCJ0YWctcmVtb3ZlIiw2MDAwNikscGVyc29uOkh0KCJwZXJzb24iLDYwMDA3KSxwZXJzb25Gb2xsb3c6SHQoInBlcnNvbi1mb2xsb3ciLDYwMDA3KSxwZXJzb25PdXRsaW5lOkh0KCJwZXJzb24tb3V0bGluZSIsNjAwMDcpLHBlcnNvbkZpbGxlZDpIdCgicGVyc29uLWZpbGxlZCIsNjAwMDcpLGdpdEJyYW5jaDpIdCgiZ2l0LWJyYW5jaCIsNjAwMDgpLGdpdEJyYW5jaENyZWF0ZTpIdCgiZ2l0LWJyYW5jaC1jcmVhdGUiLDYwMDA4KSxnaXRCcmFuY2hEZWxldGU6SHQoImdpdC1icmFuY2gtZGVsZXRlIiw2MDAwOCksc291cmNlQ29udHJvbDpIdCgic291cmNlLWNvbnRyb2wiLDYwMDA4KSxtaXJyb3I6SHQoIm1pcnJvciIsNjAwMDkpLG1pcnJvclB1YmxpYzpIdCgibWlycm9yLXB1YmxpYyIsNjAwMDkpLHN0YXI6SHQoInN0YXIiLDYwMDEwKSxzdGFyQWRkOkh0KCJzdGFyLWFkZCIsNjAwMTApLHN0YXJEZWxldGU6SHQoInN0YXItZGVsZXRlIiw2MDAxMCksc3RhckVtcHR5Okh0KCJzdGFyLWVtcHR5Iiw2MDAxMCksY29tbWVudDpIdCgiY29tbWVudCIsNjAwMTEpLGNvbW1lbnRBZGQ6SHQoImNvbW1lbnQtYWRkIiw2MDAxMSksYWxlcnQ6SHQoImFsZXJ0Iiw2MDAxMiksd2FybmluZzpIdCgid2FybmluZyIsNjAwMTIpLHNlYXJjaDpIdCgic2VhcmNoIiw2MDAxMyksc2VhcmNoU2F2ZTpIdCgic2VhcmNoLXNhdmUiLDYwMDEzKSxsb2dPdXQ6SHQoImxvZy1vdXQiLDYwMDE0KSxzaWduT3V0Okh0KCJzaWduLW91dCIsNjAwMTQpLGxvZ0luOkh0KCJsb2ctaW4iLDYwMDE1KSxzaWduSW46SHQoInNpZ24taW4iLDYwMDE1KSxleWU6SHQoImV5ZSIsNjAwMTYpLGV5ZVVud2F0Y2g6SHQoImV5ZS11bndhdGNoIiw2MDAxNiksZXllV2F0Y2g6SHQoImV5ZS13YXRjaCIsNjAwMTYpLGNpcmNsZUZpbGxlZDpIdCgiY2lyY2xlLWZpbGxlZCIsNjAwMTcpLHByaW1pdGl2ZURvdDpIdCgicHJpbWl0aXZlLWRvdCIsNjAwMTcpLGNsb3NlRGlydHk6SHQoImNsb3NlLWRpcnR5Iiw2MDAxNyksZGVidWdCcmVha3BvaW50Okh0KCJkZWJ1Zy1icmVha3BvaW50Iiw2MDAxNyksZGVidWdCcmVha3BvaW50RGlzYWJsZWQ6SHQoImRlYnVnLWJyZWFrcG9pbnQtZGlzYWJsZWQiLDYwMDE3KSxkZWJ1Z0hpbnQ6SHQoImRlYnVnLWhpbnQiLDYwMDE3KSxwcmltaXRpdmVTcXVhcmU6SHQoInByaW1pdGl2ZS1zcXVhcmUiLDYwMDE4KSxlZGl0Okh0KCJlZGl0Iiw2MDAxOSkscGVuY2lsOkh0KCJwZW5jaWwiLDYwMDE5KSxpbmZvOkh0KCJpbmZvIiw2MDAyMCksaXNzdWVPcGVuZWQ6SHQoImlzc3VlLW9wZW5lZCIsNjAwMjApLGdpc3RQcml2YXRlOkh0KCJnaXN0LXByaXZhdGUiLDYwMDIxKSxnaXRGb3JrUHJpdmF0ZTpIdCgiZ2l0LWZvcmstcHJpdmF0ZSIsNjAwMjEpLGxvY2s6SHQoImxvY2siLDYwMDIxKSxtaXJyb3JQcml2YXRlOkh0KCJtaXJyb3ItcHJpdmF0ZSIsNjAwMjEpLGNsb3NlOkh0KCJjbG9zZSIsNjAwMjIpLHJlbW92ZUNsb3NlOkh0KCJyZW1vdmUtY2xvc2UiLDYwMDIyKSx4Okh0KCJ4Iiw2MDAyMikscmVwb1N5bmM6SHQoInJlcG8tc3luYyIsNjAwMjMpLHN5bmM6SHQoInN5bmMiLDYwMDIzKSxjbG9uZTpIdCgiY2xvbmUiLDYwMDI0KSxkZXNrdG9wRG93bmxvYWQ6SHQoImRlc2t0b3AtZG93bmxvYWQiLDYwMDI0KSxiZWFrZXI6SHQoImJlYWtlciIsNjAwMjUpLG1pY3Jvc2NvcGU6SHQoIm1pY3Jvc2NvcGUiLDYwMDI1KSx2bTpIdCgidm0iLDYwMDI2KSxkZXZpY2VEZXNrdG9wOkh0KCJkZXZpY2UtZGVza3RvcCIsNjAwMjYpLGZpbGU6SHQoImZpbGUiLDYwMDI3KSxmaWxlVGV4dDpIdCgiZmlsZS10ZXh0Iiw2MDAyNyksbW9yZTpIdCgibW9yZSIsNjAwMjgpLGVsbGlwc2lzOkh0KCJlbGxpcHNpcyIsNjAwMjgpLGtlYmFiSG9yaXpvbnRhbDpIdCgia2ViYWItaG9yaXpvbnRhbCIsNjAwMjgpLG1haWxSZXBseTpIdCgibWFpbC1yZXBseSIsNjAwMjkpLHJlcGx5Okh0KCJyZXBseSIsNjAwMjkpLG9yZ2FuaXphdGlvbjpIdCgib3JnYW5pemF0aW9uIiw2MDAzMCksb3JnYW5pemF0aW9uRmlsbGVkOkh0KCJvcmdhbml6YXRpb24tZmlsbGVkIiw2MDAzMCksb3JnYW5pemF0aW9uT3V0bGluZTpIdCgib3JnYW5pemF0aW9uLW91dGxpbmUiLDYwMDMwKSxuZXdGaWxlOkh0KCJuZXctZmlsZSIsNjAwMzEpLGZpbGVBZGQ6SHQoImZpbGUtYWRkIiw2MDAzMSksbmV3Rm9sZGVyOkh0KCJuZXctZm9sZGVyIiw2MDAzMiksZmlsZURpcmVjdG9yeUNyZWF0ZTpIdCgiZmlsZS1kaXJlY3RvcnktY3JlYXRlIiw2MDAzMiksdHJhc2g6SHQoInRyYXNoIiw2MDAzMyksdHJhc2hjYW46SHQoInRyYXNoY2FuIiw2MDAzMyksaGlzdG9yeTpIdCgiaGlzdG9yeSIsNjAwMzQpLGNsb2NrOkh0KCJjbG9jayIsNjAwMzQpLGZvbGRlcjpIdCgiZm9sZGVyIiw2MDAzNSksZmlsZURpcmVjdG9yeTpIdCgiZmlsZS1kaXJlY3RvcnkiLDYwMDM1KSxzeW1ib2xGb2xkZXI6SHQoInN5bWJvbC1mb2xkZXIiLDYwMDM1KSxsb2dvR2l0aHViOkh0KCJsb2dvLWdpdGh1YiIsNjAwMzYpLG1hcmtHaXRodWI6SHQoIm1hcmstZ2l0aHViIiw2MDAzNiksZ2l0aHViOkh0KCJnaXRodWIiLDYwMDM2KSx0ZXJtaW5hbDpIdCgidGVybWluYWwiLDYwMDM3KSxjb25zb2xlOkh0KCJjb25zb2xlIiw2MDAzNykscmVwbDpIdCgicmVwbCIsNjAwMzcpLHphcDpIdCgiemFwIiw2MDAzOCksc3ltYm9sRXZlbnQ6SHQoInN5bWJvbC1ldmVudCIsNjAwMzgpLGVycm9yOkh0KCJlcnJvciIsNjAwMzkpLHN0b3A6SHQoInN0b3AiLDYwMDM5KSx2YXJpYWJsZTpIdCgidmFyaWFibGUiLDYwMDQwKSxzeW1ib2xWYXJpYWJsZTpIdCgic3ltYm9sLXZhcmlhYmxlIiw2MDA0MCksYXJyYXk6SHQoImFycmF5Iiw2MDA0Miksc3ltYm9sQXJyYXk6SHQoInN5bWJvbC1hcnJheSIsNjAwNDIpLHN5bWJvbE1vZHVsZTpIdCgic3ltYm9sLW1vZHVsZSIsNjAwNDMpLHN5bWJvbFBhY2thZ2U6SHQoInN5bWJvbC1wYWNrYWdlIiw2MDA0Myksc3ltYm9sTmFtZXNwYWNlOkh0KCJzeW1ib2wtbmFtZXNwYWNlIiw2MDA0Myksc3ltYm9sT2JqZWN0Okh0KCJzeW1ib2wtb2JqZWN0Iiw2MDA0Myksc3ltYm9sTWV0aG9kOkh0KCJzeW1ib2wtbWV0aG9kIiw2MDA0NCksc3ltYm9sRnVuY3Rpb246SHQoInN5bWJvbC1mdW5jdGlvbiIsNjAwNDQpLHN5bWJvbENvbnN0cnVjdG9yOkh0KCJzeW1ib2wtY29uc3RydWN0b3IiLDYwMDQ0KSxzeW1ib2xCb29sZWFuOkh0KCJzeW1ib2wtYm9vbGVhbiIsNjAwNDcpLHN5bWJvbE51bGw6SHQoInN5bWJvbC1udWxsIiw2MDA0Nyksc3ltYm9sTnVtZXJpYzpIdCgic3ltYm9sLW51bWVyaWMiLDYwMDQ4KSxzeW1ib2xOdW1iZXI6SHQoInN5bWJvbC1udW1iZXIiLDYwMDQ4KSxzeW1ib2xTdHJ1Y3R1cmU6SHQoInN5bWJvbC1zdHJ1Y3R1cmUiLDYwMDQ5KSxzeW1ib2xTdHJ1Y3Q6SHQoInN5bWJvbC1zdHJ1Y3QiLDYwMDQ5KSxzeW1ib2xQYXJhbWV0ZXI6SHQoInN5bWJvbC1wYXJhbWV0ZXIiLDYwMDUwKSxzeW1ib2xUeXBlUGFyYW1ldGVyOkh0KCJzeW1ib2wtdHlwZS1wYXJhbWV0ZXIiLDYwMDUwKSxzeW1ib2xLZXk6SHQoInN5bWJvbC1rZXkiLDYwMDUxKSxzeW1ib2xUZXh0Okh0KCJzeW1ib2wtdGV4dCIsNjAwNTEpLHN5bWJvbFJlZmVyZW5jZTpIdCgic3ltYm9sLXJlZmVyZW5jZSIsNjAwNTIpLGdvVG9GaWxlOkh0KCJnby10by1maWxlIiw2MDA1Miksc3ltYm9sRW51bTpIdCgic3ltYm9sLWVudW0iLDYwMDUzKSxzeW1ib2xWYWx1ZTpIdCgic3ltYm9sLXZhbHVlIiw2MDA1Myksc3ltYm9sUnVsZXI6SHQoInN5bWJvbC1ydWxlciIsNjAwNTQpLHN5bWJvbFVuaXQ6SHQoInN5bWJvbC11bml0Iiw2MDA1NCksYWN0aXZhdGVCcmVha3BvaW50czpIdCgiYWN0aXZhdGUtYnJlYWtwb2ludHMiLDYwMDU1KSxhcmNoaXZlOkh0KCJhcmNoaXZlIiw2MDA1NiksYXJyb3dCb3RoOkh0KCJhcnJvdy1ib3RoIiw2MDA1NyksYXJyb3dEb3duOkh0KCJhcnJvdy1kb3duIiw2MDA1OCksYXJyb3dMZWZ0Okh0KCJhcnJvdy1sZWZ0Iiw2MDA1OSksYXJyb3dSaWdodDpIdCgiYXJyb3ctcmlnaHQiLDYwMDYwKSxhcnJvd1NtYWxsRG93bjpIdCgiYXJyb3ctc21hbGwtZG93biIsNjAwNjEpLGFycm93U21hbGxMZWZ0Okh0KCJhcnJvdy1zbWFsbC1sZWZ0Iiw2MDA2MiksYXJyb3dTbWFsbFJpZ2h0Okh0KCJhcnJvdy1zbWFsbC1yaWdodCIsNjAwNjMpLGFycm93U21hbGxVcDpIdCgiYXJyb3ctc21hbGwtdXAiLDYwMDY0KSxhcnJvd1VwOkh0KCJhcnJvdy11cCIsNjAwNjUpLGJlbGw6SHQoImJlbGwiLDYwMDY2KSxib2xkOkh0KCJib2xkIiw2MDA2NyksYm9vazpIdCgiYm9vayIsNjAwNjgpLGJvb2ttYXJrOkh0KCJib29rbWFyayIsNjAwNjkpLGRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsVW52ZXJpZmllZDpIdCgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC11bnZlcmlmaWVkIiw2MDA3MCksZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWw6SHQoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwiLDYwMDcxKSxkZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbERpc2FibGVkOkh0KCJkZWJ1Zy1icmVha3BvaW50LWNvbmRpdGlvbmFsLWRpc2FibGVkIiw2MDA3MSksZGVidWdCcmVha3BvaW50RGF0YVVudmVyaWZpZWQ6SHQoImRlYnVnLWJyZWFrcG9pbnQtZGF0YS11bnZlcmlmaWVkIiw2MDA3MiksZGVidWdCcmVha3BvaW50RGF0YTpIdCgiZGVidWctYnJlYWtwb2ludC1kYXRhIiw2MDA3MyksZGVidWdCcmVha3BvaW50RGF0YURpc2FibGVkOkh0KCJkZWJ1Zy1icmVha3BvaW50LWRhdGEtZGlzYWJsZWQiLDYwMDczKSxkZWJ1Z0JyZWFrcG9pbnRMb2dVbnZlcmlmaWVkOkh0KCJkZWJ1Zy1icmVha3BvaW50LWxvZy11bnZlcmlmaWVkIiw2MDA3NCksZGVidWdCcmVha3BvaW50TG9nOkh0KCJkZWJ1Zy1icmVha3BvaW50LWxvZyIsNjAwNzUpLGRlYnVnQnJlYWtwb2ludExvZ0Rpc2FibGVkOkh0KCJkZWJ1Zy1icmVha3BvaW50LWxvZy1kaXNhYmxlZCIsNjAwNzUpLGJyaWVmY2FzZTpIdCgiYnJpZWZjYXNlIiw2MDA3NiksYnJvYWRjYXN0Okh0KCJicm9hZGNhc3QiLDYwMDc3KSxicm93c2VyOkh0KCJicm93c2VyIiw2MDA3OCksYnVnOkh0KCJidWciLDYwMDc5KSxjYWxlbmRhcjpIdCgiY2FsZW5kYXIiLDYwMDgwKSxjYXNlU2Vuc2l0aXZlOkh0KCJjYXNlLXNlbnNpdGl2ZSIsNjAwODEpLGNoZWNrOkh0KCJjaGVjayIsNjAwODIpLGNoZWNrbGlzdDpIdCgiY2hlY2tsaXN0Iiw2MDA4MyksY2hldnJvbkRvd246SHQoImNoZXZyb24tZG93biIsNjAwODQpLGRyb3BEb3duQnV0dG9uOkh0KCJkcm9wLWRvd24tYnV0dG9uIiw2MDA4NCksY2hldnJvbkxlZnQ6SHQoImNoZXZyb24tbGVmdCIsNjAwODUpLGNoZXZyb25SaWdodDpIdCgiY2hldnJvbi1yaWdodCIsNjAwODYpLGNoZXZyb25VcDpIdCgiY2hldnJvbi11cCIsNjAwODcpLGNocm9tZUNsb3NlOkh0KCJjaHJvbWUtY2xvc2UiLDYwMDg4KSxjaHJvbWVNYXhpbWl6ZTpIdCgiY2hyb21lLW1heGltaXplIiw2MDA4OSksY2hyb21lTWluaW1pemU6SHQoImNocm9tZS1taW5pbWl6ZSIsNjAwOTApLGNocm9tZVJlc3RvcmU6SHQoImNocm9tZS1yZXN0b3JlIiw2MDA5MSksY2lyY2xlOkh0KCJjaXJjbGUiLDYwMDkyKSxjaXJjbGVPdXRsaW5lOkh0KCJjaXJjbGUtb3V0bGluZSIsNjAwOTIpLGRlYnVnQnJlYWtwb2ludFVudmVyaWZpZWQ6SHQoImRlYnVnLWJyZWFrcG9pbnQtdW52ZXJpZmllZCIsNjAwOTIpLGNpcmNsZVNsYXNoOkh0KCJjaXJjbGUtc2xhc2giLDYwMDkzKSxjaXJjdWl0Qm9hcmQ6SHQoImNpcmN1aXQtYm9hcmQiLDYwMDk0KSxjbGVhckFsbDpIdCgiY2xlYXItYWxsIiw2MDA5NSksY2xpcHB5Okh0KCJjbGlwcHkiLDYwMDk2KSxjbG9zZUFsbDpIdCgiY2xvc2UtYWxsIiw2MDA5NyksY2xvdWREb3dubG9hZDpIdCgiY2xvdWQtZG93bmxvYWQiLDYwMDk4KSxjbG91ZFVwbG9hZDpIdCgiY2xvdWQtdXBsb2FkIiw2MDA5OSksY29kZTpIdCgiY29kZSIsNjAxMDApLGNvbGxhcHNlQWxsOkh0KCJjb2xsYXBzZS1hbGwiLDYwMTAxKSxjb2xvck1vZGU6SHQoImNvbG9yLW1vZGUiLDYwMTAyKSxjb21tZW50RGlzY3Vzc2lvbjpIdCgiY29tbWVudC1kaXNjdXNzaW9uIiw2MDEwMyksY29tcGFyZUNoYW5nZXM6SHQoImNvbXBhcmUtY2hhbmdlcyIsNjAxNTcpLGNyZWRpdENhcmQ6SHQoImNyZWRpdC1jYXJkIiw2MDEwNSksZGFzaDpIdCgiZGFzaCIsNjAxMDgpLGRhc2hib2FyZDpIdCgiZGFzaGJvYXJkIiw2MDEwOSksZGF0YWJhc2U6SHQoImRhdGFiYXNlIiw2MDExMCksZGVidWdDb250aW51ZTpIdCgiZGVidWctY29udGludWUiLDYwMTExKSxkZWJ1Z0Rpc2Nvbm5lY3Q6SHQoImRlYnVnLWRpc2Nvbm5lY3QiLDYwMTEyKSxkZWJ1Z1BhdXNlOkh0KCJkZWJ1Zy1wYXVzZSIsNjAxMTMpLGRlYnVnUmVzdGFydDpIdCgiZGVidWctcmVzdGFydCIsNjAxMTQpLGRlYnVnU3RhcnQ6SHQoImRlYnVnLXN0YXJ0Iiw2MDExNSksZGVidWdTdGVwSW50bzpIdCgiZGVidWctc3RlcC1pbnRvIiw2MDExNiksZGVidWdTdGVwT3V0Okh0KCJkZWJ1Zy1zdGVwLW91dCIsNjAxMTcpLGRlYnVnU3RlcE92ZXI6SHQoImRlYnVnLXN0ZXAtb3ZlciIsNjAxMTgpLGRlYnVnU3RvcDpIdCgiZGVidWctc3RvcCIsNjAxMTkpLGRlYnVnOkh0KCJkZWJ1ZyIsNjAxMjApLGRldmljZUNhbWVyYVZpZGVvOkh0KCJkZXZpY2UtY2FtZXJhLXZpZGVvIiw2MDEyMSksZGV2aWNlQ2FtZXJhOkh0KCJkZXZpY2UtY2FtZXJhIiw2MDEyMiksZGV2aWNlTW9iaWxlOkh0KCJkZXZpY2UtbW9iaWxlIiw2MDEyMyksZGlmZkFkZGVkOkh0KCJkaWZmLWFkZGVkIiw2MDEyNCksZGlmZklnbm9yZWQ6SHQoImRpZmYtaWdub3JlZCIsNjAxMjUpLGRpZmZNb2RpZmllZDpIdCgiZGlmZi1tb2RpZmllZCIsNjAxMjYpLGRpZmZSZW1vdmVkOkh0KCJkaWZmLXJlbW92ZWQiLDYwMTI3KSxkaWZmUmVuYW1lZDpIdCgiZGlmZi1yZW5hbWVkIiw2MDEyOCksZGlmZjpIdCgiZGlmZiIsNjAxMjkpLGRpc2NhcmQ6SHQoImRpc2NhcmQiLDYwMTMwKSxlZGl0b3JMYXlvdXQ6SHQoImVkaXRvci1sYXlvdXQiLDYwMTMxKSxlbXB0eVdpbmRvdzpIdCgiZW1wdHktd2luZG93Iiw2MDEzMiksZXhjbHVkZTpIdCgiZXhjbHVkZSIsNjAxMzMpLGV4dGVuc2lvbnM6SHQoImV4dGVuc2lvbnMiLDYwMTM0KSxleWVDbG9zZWQ6SHQoImV5ZS1jbG9zZWQiLDYwMTM1KSxmaWxlQmluYXJ5Okh0KCJmaWxlLWJpbmFyeSIsNjAxMzYpLGZpbGVDb2RlOkh0KCJmaWxlLWNvZGUiLDYwMTM3KSxmaWxlTWVkaWE6SHQoImZpbGUtbWVkaWEiLDYwMTM4KSxmaWxlUGRmOkh0KCJmaWxlLXBkZiIsNjAxMzkpLGZpbGVTdWJtb2R1bGU6SHQoImZpbGUtc3VibW9kdWxlIiw2MDE0MCksZmlsZVN5bWxpbmtEaXJlY3Rvcnk6SHQoImZpbGUtc3ltbGluay1kaXJlY3RvcnkiLDYwMTQxKSxmaWxlU3ltbGlua0ZpbGU6SHQoImZpbGUtc3ltbGluay1maWxlIiw2MDE0MiksZmlsZVppcDpIdCgiZmlsZS16aXAiLDYwMTQzKSxmaWxlczpIdCgiZmlsZXMiLDYwMTQ0KSxmaWx0ZXI6SHQoImZpbHRlciIsNjAxNDUpLGZsYW1lOkh0KCJmbGFtZSIsNjAxNDYpLGZvbGREb3duOkh0KCJmb2xkLWRvd24iLDYwMTQ3KSxmb2xkVXA6SHQoImZvbGQtdXAiLDYwMTQ4KSxmb2xkOkh0KCJmb2xkIiw2MDE0OSksZm9sZGVyQWN0aXZlOkh0KCJmb2xkZXItYWN0aXZlIiw2MDE1MCksZm9sZGVyT3BlbmVkOkh0KCJmb2xkZXItb3BlbmVkIiw2MDE1MSksZ2VhcjpIdCgiZ2VhciIsNjAxNTIpLGdpZnQ6SHQoImdpZnQiLDYwMTUzKSxnaXN0U2VjcmV0Okh0KCJnaXN0LXNlY3JldCIsNjAxNTQpLGdpc3Q6SHQoImdpc3QiLDYwMTU1KSxnaXRDb21taXQ6SHQoImdpdC1jb21taXQiLDYwMTU2KSxnaXRDb21wYXJlOkh0KCJnaXQtY29tcGFyZSIsNjAxNTcpLGdpdE1lcmdlOkh0KCJnaXQtbWVyZ2UiLDYwMTU4KSxnaXRodWJBY3Rpb246SHQoImdpdGh1Yi1hY3Rpb24iLDYwMTU5KSxnaXRodWJBbHQ6SHQoImdpdGh1Yi1hbHQiLDYwMTYwKSxnbG9iZTpIdCgiZ2xvYmUiLDYwMTYxKSxncmFiYmVyOkh0KCJncmFiYmVyIiw2MDE2MiksZ3JhcGg6SHQoImdyYXBoIiw2MDE2MyksZ3JpcHBlcjpIdCgiZ3JpcHBlciIsNjAxNjQpLGhlYXJ0Okh0KCJoZWFydCIsNjAxNjUpLGhvbWU6SHQoImhvbWUiLDYwMTY2KSxob3Jpem9udGFsUnVsZTpIdCgiaG9yaXpvbnRhbC1ydWxlIiw2MDE2NyksaHVib3Q6SHQoImh1Ym90Iiw2MDE2OCksaW5ib3g6SHQoImluYm94Iiw2MDE2OSksaXNzdWVDbG9zZWQ6SHQoImlzc3VlLWNsb3NlZCIsNjAzMjQpLGlzc3VlUmVvcGVuZWQ6SHQoImlzc3VlLXJlb3BlbmVkIiw2MDE3MSksaXNzdWVzOkh0KCJpc3N1ZXMiLDYwMTcyKSxpdGFsaWM6SHQoIml0YWxpYyIsNjAxNzMpLGplcnNleTpIdCgiamVyc2V5Iiw2MDE3NCksanNvbjpIdCgianNvbiIsNjAxNzUpLGJyYWNrZXQ6SHQoImJyYWNrZXQiLDYwMTc1KSxrZWJhYlZlcnRpY2FsOkh0KCJrZWJhYi12ZXJ0aWNhbCIsNjAxNzYpLGtleTpIdCgia2V5Iiw2MDE3NyksbGF3Okh0KCJsYXciLDYwMTc4KSxsaWdodGJ1bGJBdXRvZml4Okh0KCJsaWdodGJ1bGItYXV0b2ZpeCIsNjAxNzkpLGxpbmtFeHRlcm5hbDpIdCgibGluay1leHRlcm5hbCIsNjAxODApLGxpbms6SHQoImxpbmsiLDYwMTgxKSxsaXN0T3JkZXJlZDpIdCgibGlzdC1vcmRlcmVkIiw2MDE4MiksbGlzdFVub3JkZXJlZDpIdCgibGlzdC11bm9yZGVyZWQiLDYwMTgzKSxsaXZlU2hhcmU6SHQoImxpdmUtc2hhcmUiLDYwMTg0KSxsb2FkaW5nOkh0KCJsb2FkaW5nIiw2MDE4NSksbG9jYXRpb246SHQoImxvY2F0aW9uIiw2MDE4NiksbWFpbFJlYWQ6SHQoIm1haWwtcmVhZCIsNjAxODcpLG1haWw6SHQoIm1haWwiLDYwMTg4KSxtYXJrZG93bjpIdCgibWFya2Rvd24iLDYwMTg5KSxtZWdhcGhvbmU6SHQoIm1lZ2FwaG9uZSIsNjAxOTApLG1lbnRpb246SHQoIm1lbnRpb24iLDYwMTkxKSxtaWxlc3RvbmU6SHQoIm1pbGVzdG9uZSIsNjAxOTIpLG1vcnRhckJvYXJkOkh0KCJtb3J0YXItYm9hcmQiLDYwMTkzKSxtb3ZlOkh0KCJtb3ZlIiw2MDE5NCksbXVsdGlwbGVXaW5kb3dzOkh0KCJtdWx0aXBsZS13aW5kb3dzIiw2MDE5NSksbXV0ZTpIdCgibXV0ZSIsNjAxOTYpLG5vTmV3bGluZTpIdCgibm8tbmV3bGluZSIsNjAxOTcpLG5vdGU6SHQoIm5vdGUiLDYwMTk4KSxvY3RvZmFjZTpIdCgib2N0b2ZhY2UiLDYwMTk5KSxvcGVuUHJldmlldzpIdCgib3Blbi1wcmV2aWV3Iiw2MDIwMCkscGFja2FnZV86SHQoInBhY2thZ2UiLDYwMjAxKSxwYWludGNhbjpIdCgicGFpbnRjYW4iLDYwMjAyKSxwaW46SHQoInBpbiIsNjAyMDMpLHBsYXk6SHQoInBsYXkiLDYwMjA0KSxydW46SHQoInJ1biIsNjAyMDQpLHBsdWc6SHQoInBsdWciLDYwMjA1KSxwcmVzZXJ2ZUNhc2U6SHQoInByZXNlcnZlLWNhc2UiLDYwMjA2KSxwcmV2aWV3Okh0KCJwcmV2aWV3Iiw2MDIwNykscHJvamVjdDpIdCgicHJvamVjdCIsNjAyMDgpLHB1bHNlOkh0KCJwdWxzZSIsNjAyMDkpLHF1ZXN0aW9uOkh0KCJxdWVzdGlvbiIsNjAyMTApLHF1b3RlOkh0KCJxdW90ZSIsNjAyMTEpLHJhZGlvVG93ZXI6SHQoInJhZGlvLXRvd2VyIiw2MDIxMikscmVhY3Rpb25zOkh0KCJyZWFjdGlvbnMiLDYwMjEzKSxyZWZlcmVuY2VzOkh0KCJyZWZlcmVuY2VzIiw2MDIxNCkscmVmcmVzaDpIdCgicmVmcmVzaCIsNjAyMTUpLHJlZ2V4Okh0KCJyZWdleCIsNjAyMTYpLHJlbW90ZUV4cGxvcmVyOkh0KCJyZW1vdGUtZXhwbG9yZXIiLDYwMjE3KSxyZW1vdGU6SHQoInJlbW90ZSIsNjAyMTgpLHJlbW92ZTpIdCgicmVtb3ZlIiw2MDIxOSkscmVwbGFjZUFsbDpIdCgicmVwbGFjZS1hbGwiLDYwMjIwKSxyZXBsYWNlOkh0KCJyZXBsYWNlIiw2MDIyMSkscmVwb0Nsb25lOkh0KCJyZXBvLWNsb25lIiw2MDIyMikscmVwb0ZvcmNlUHVzaDpIdCgicmVwby1mb3JjZS1wdXNoIiw2MDIyMykscmVwb1B1bGw6SHQoInJlcG8tcHVsbCIsNjAyMjQpLHJlcG9QdXNoOkh0KCJyZXBvLXB1c2giLDYwMjI1KSxyZXBvcnQ6SHQoInJlcG9ydCIsNjAyMjYpLHJlcXVlc3RDaGFuZ2VzOkh0KCJyZXF1ZXN0LWNoYW5nZXMiLDYwMjI3KSxyb2NrZXQ6SHQoInJvY2tldCIsNjAyMjgpLHJvb3RGb2xkZXJPcGVuZWQ6SHQoInJvb3QtZm9sZGVyLW9wZW5lZCIsNjAyMjkpLHJvb3RGb2xkZXI6SHQoInJvb3QtZm9sZGVyIiw2MDIzMCkscnNzOkh0KCJyc3MiLDYwMjMxKSxydWJ5Okh0KCJydWJ5Iiw2MDIzMiksc2F2ZUFsbDpIdCgic2F2ZS1hbGwiLDYwMjMzKSxzYXZlQXM6SHQoInNhdmUtYXMiLDYwMjM0KSxzYXZlOkh0KCJzYXZlIiw2MDIzNSksc2NyZWVuRnVsbDpIdCgic2NyZWVuLWZ1bGwiLDYwMjM2KSxzY3JlZW5Ob3JtYWw6SHQoInNjcmVlbi1ub3JtYWwiLDYwMjM3KSxzZWFyY2hTdG9wOkh0KCJzZWFyY2gtc3RvcCIsNjAyMzgpLHNlcnZlcjpIdCgic2VydmVyIiw2MDI0MCksc2V0dGluZ3NHZWFyOkh0KCJzZXR0aW5ncy1nZWFyIiw2MDI0MSksc2V0dGluZ3M6SHQoInNldHRpbmdzIiw2MDI0Miksc2hpZWxkOkh0KCJzaGllbGQiLDYwMjQzKSxzbWlsZXk6SHQoInNtaWxleSIsNjAyNDQpLHNvcnRQcmVjZWRlbmNlOkh0KCJzb3J0LXByZWNlZGVuY2UiLDYwMjQ1KSxzcGxpdEhvcml6b250YWw6SHQoInNwbGl0LWhvcml6b250YWwiLDYwMjQ2KSxzcGxpdFZlcnRpY2FsOkh0KCJzcGxpdC12ZXJ0aWNhbCIsNjAyNDcpLHNxdWlycmVsOkh0KCJzcXVpcnJlbCIsNjAyNDgpLHN0YXJGdWxsOkh0KCJzdGFyLWZ1bGwiLDYwMjQ5KSxzdGFySGFsZjpIdCgic3Rhci1oYWxmIiw2MDI1MCksc3ltYm9sQ2xhc3M6SHQoInN5bWJvbC1jbGFzcyIsNjAyNTEpLHN5bWJvbENvbG9yOkh0KCJzeW1ib2wtY29sb3IiLDYwMjUyKSxzeW1ib2xDdXN0b21Db2xvcjpIdCgic3ltYm9sLWN1c3RvbWNvbG9yIiw2MDI1Miksc3ltYm9sQ29uc3RhbnQ6SHQoInN5bWJvbC1jb25zdGFudCIsNjAyNTMpLHN5bWJvbEVudW1NZW1iZXI6SHQoInN5bWJvbC1lbnVtLW1lbWJlciIsNjAyNTQpLHN5bWJvbEZpZWxkOkh0KCJzeW1ib2wtZmllbGQiLDYwMjU1KSxzeW1ib2xGaWxlOkh0KCJzeW1ib2wtZmlsZSIsNjAyNTYpLHN5bWJvbEludGVyZmFjZTpIdCgic3ltYm9sLWludGVyZmFjZSIsNjAyNTcpLHN5bWJvbEtleXdvcmQ6SHQoInN5bWJvbC1rZXl3b3JkIiw2MDI1OCksc3ltYm9sTWlzYzpIdCgic3ltYm9sLW1pc2MiLDYwMjU5KSxzeW1ib2xPcGVyYXRvcjpIdCgic3ltYm9sLW9wZXJhdG9yIiw2MDI2MCksc3ltYm9sUHJvcGVydHk6SHQoInN5bWJvbC1wcm9wZXJ0eSIsNjAyNjEpLHdyZW5jaDpIdCgid3JlbmNoIiw2MDI2MSksd3JlbmNoU3ViYWN0aW9uOkh0KCJ3cmVuY2gtc3ViYWN0aW9uIiw2MDI2MSksc3ltYm9sU25pcHBldDpIdCgic3ltYm9sLXNuaXBwZXQiLDYwMjYyKSx0YXNrbGlzdDpIdCgidGFza2xpc3QiLDYwMjYzKSx0ZWxlc2NvcGU6SHQoInRlbGVzY29wZSIsNjAyNjQpLHRleHRTaXplOkh0KCJ0ZXh0LXNpemUiLDYwMjY1KSx0aHJlZUJhcnM6SHQoInRocmVlLWJhcnMiLDYwMjY2KSx0aHVtYnNkb3duOkh0KCJ0aHVtYnNkb3duIiw2MDI2NyksdGh1bWJzdXA6SHQoInRodW1ic3VwIiw2MDI2OCksdG9vbHM6SHQoInRvb2xzIiw2MDI2OSksdHJpYW5nbGVEb3duOkh0KCJ0cmlhbmdsZS1kb3duIiw2MDI3MCksdHJpYW5nbGVMZWZ0Okh0KCJ0cmlhbmdsZS1sZWZ0Iiw2MDI3MSksdHJpYW5nbGVSaWdodDpIdCgidHJpYW5nbGUtcmlnaHQiLDYwMjcyKSx0cmlhbmdsZVVwOkh0KCJ0cmlhbmdsZS11cCIsNjAyNzMpLHR3aXR0ZXI6SHQoInR3aXR0ZXIiLDYwMjc0KSx1bmZvbGQ6SHQoInVuZm9sZCIsNjAyNzUpLHVubG9jazpIdCgidW5sb2NrIiw2MDI3NiksdW5tdXRlOkh0KCJ1bm11dGUiLDYwMjc3KSx1bnZlcmlmaWVkOkh0KCJ1bnZlcmlmaWVkIiw2MDI3OCksdmVyaWZpZWQ6SHQoInZlcmlmaWVkIiw2MDI3OSksdmVyc2lvbnM6SHQoInZlcnNpb25zIiw2MDI4MCksdm1BY3RpdmU6SHQoInZtLWFjdGl2ZSIsNjAyODEpLHZtT3V0bGluZTpIdCgidm0tb3V0bGluZSIsNjAyODIpLHZtUnVubmluZzpIdCgidm0tcnVubmluZyIsNjAyODMpLHdhdGNoOkh0KCJ3YXRjaCIsNjAyODQpLHdoaXRlc3BhY2U6SHQoIndoaXRlc3BhY2UiLDYwMjg1KSx3aG9sZVdvcmQ6SHQoIndob2xlLXdvcmQiLDYwMjg2KSx3aW5kb3c6SHQoIndpbmRvdyIsNjAyODcpLHdvcmRXcmFwOkh0KCJ3b3JkLXdyYXAiLDYwMjg4KSx6b29tSW46SHQoInpvb20taW4iLDYwMjg5KSx6b29tT3V0Okh0KCJ6b29tLW91dCIsNjAyOTApLGxpc3RGaWx0ZXI6SHQoImxpc3QtZmlsdGVyIiw2MDI5MSksbGlzdEZsYXQ6SHQoImxpc3QtZmxhdCIsNjAyOTIpLGxpc3RTZWxlY3Rpb246SHQoImxpc3Qtc2VsZWN0aW9uIiw2MDI5Myksc2VsZWN0aW9uOkh0KCJzZWxlY3Rpb24iLDYwMjkzKSxsaXN0VHJlZTpIdCgibGlzdC10cmVlIiw2MDI5NCksZGVidWdCcmVha3BvaW50RnVuY3Rpb25VbnZlcmlmaWVkOkh0KCJkZWJ1Zy1icmVha3BvaW50LWZ1bmN0aW9uLXVudmVyaWZpZWQiLDYwMjk1KSxkZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvbjpIdCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbiIsNjAyOTYpLGRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uRGlzYWJsZWQ6SHQoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24tZGlzYWJsZWQiLDYwMjk2KSxkZWJ1Z1N0YWNrZnJhbWVBY3RpdmU6SHQoImRlYnVnLXN0YWNrZnJhbWUtYWN0aXZlIiw2MDI5NyksY2lyY2xlU21hbGxGaWxsZWQ6SHQoImNpcmNsZS1zbWFsbC1maWxsZWQiLDYwMjk4KSxkZWJ1Z1N0YWNrZnJhbWVEb3Q6SHQoImRlYnVnLXN0YWNrZnJhbWUtZG90Iiw2MDI5OCksZGVidWdTdGFja2ZyYW1lOkh0KCJkZWJ1Zy1zdGFja2ZyYW1lIiw2MDI5OSksZGVidWdTdGFja2ZyYW1lRm9jdXNlZDpIdCgiZGVidWctc3RhY2tmcmFtZS1mb2N1c2VkIiw2MDI5OSksZGVidWdCcmVha3BvaW50VW5zdXBwb3J0ZWQ6SHQoImRlYnVnLWJyZWFrcG9pbnQtdW5zdXBwb3J0ZWQiLDYwMzAwKSxzeW1ib2xTdHJpbmc6SHQoInN5bWJvbC1zdHJpbmciLDYwMzAxKSxkZWJ1Z1JldmVyc2VDb250aW51ZTpIdCgiZGVidWctcmV2ZXJzZS1jb250aW51ZSIsNjAzMDIpLGRlYnVnU3RlcEJhY2s6SHQoImRlYnVnLXN0ZXAtYmFjayIsNjAzMDMpLGRlYnVnUmVzdGFydEZyYW1lOkh0KCJkZWJ1Zy1yZXN0YXJ0LWZyYW1lIiw2MDMwNCksY2FsbEluY29taW5nOkh0KCJjYWxsLWluY29taW5nIiw2MDMwNiksY2FsbE91dGdvaW5nOkh0KCJjYWxsLW91dGdvaW5nIiw2MDMwNyksbWVudTpIdCgibWVudSIsNjAzMDgpLGV4cGFuZEFsbDpIdCgiZXhwYW5kLWFsbCIsNjAzMDkpLGZlZWRiYWNrOkh0KCJmZWVkYmFjayIsNjAzMTApLGdyb3VwQnlSZWZUeXBlOkh0KCJncm91cC1ieS1yZWYtdHlwZSIsNjAzMTEpLHVuZ3JvdXBCeVJlZlR5cGU6SHQoInVuZ3JvdXAtYnktcmVmLXR5cGUiLDYwMzEyKSxhY2NvdW50Okh0KCJhY2NvdW50Iiw2MDMxMyksYmVsbERvdDpIdCgiYmVsbC1kb3QiLDYwMzE0KSxkZWJ1Z0NvbnNvbGU6SHQoImRlYnVnLWNvbnNvbGUiLDYwMzE1KSxsaWJyYXJ5Okh0KCJsaWJyYXJ5Iiw2MDMxNiksb3V0cHV0Okh0KCJvdXRwdXQiLDYwMzE3KSxydW5BbGw6SHQoInJ1bi1hbGwiLDYwMzE4KSxzeW5jSWdub3JlZDpIdCgic3luYy1pZ25vcmVkIiw2MDMxOSkscGlubmVkOkh0KCJwaW5uZWQiLDYwMzIwKSxnaXRodWJJbnZlcnRlZDpIdCgiZ2l0aHViLWludmVydGVkIiw2MDMyMSksZGVidWdBbHQ6SHQoImRlYnVnLWFsdCIsNjAzMDUpLHNlcnZlclByb2Nlc3M6SHQoInNlcnZlci1wcm9jZXNzIiw2MDMyMiksc2VydmVyRW52aXJvbm1lbnQ6SHQoInNlcnZlci1lbnZpcm9ubWVudCIsNjAzMjMpLHBhc3M6SHQoInBhc3MiLDYwMzI0KSxzdG9wQ2lyY2xlOkh0KCJzdG9wLWNpcmNsZSIsNjAzMjUpLHBsYXlDaXJjbGU6SHQoInBsYXktY2lyY2xlIiw2MDMyNikscmVjb3JkOkh0KCJyZWNvcmQiLDYwMzI3KSxkZWJ1Z0FsdFNtYWxsOkh0KCJkZWJ1Zy1hbHQtc21hbGwiLDYwMzI4KSx2bUNvbm5lY3Q6SHQoInZtLWNvbm5lY3QiLDYwMzI5KSxjbG91ZDpIdCgiY2xvdWQiLDYwMzMwKSxtZXJnZTpIdCgibWVyZ2UiLDYwMzMxKSxleHBvcnRJY29uOkh0KCJleHBvcnQiLDYwMzMyKSxncmFwaExlZnQ6SHQoImdyYXBoLWxlZnQiLDYwMzMzKSxtYWduZXQ6SHQoIm1hZ25ldCIsNjAzMzQpLG5vdGVib29rOkh0KCJub3RlYm9vayIsNjAzMzUpLHJlZG86SHQoInJlZG8iLDYwMzM2KSxjaGVja0FsbDpIdCgiY2hlY2stYWxsIiw2MDMzNykscGlubmVkRGlydHk6SHQoInBpbm5lZC1kaXJ0eSIsNjAzMzgpLHBhc3NGaWxsZWQ6SHQoInBhc3MtZmlsbGVkIiw2MDMzOSksY2lyY2xlTGFyZ2VGaWxsZWQ6SHQoImNpcmNsZS1sYXJnZS1maWxsZWQiLDYwMzQwKSxjaXJjbGVMYXJnZTpIdCgiY2lyY2xlLWxhcmdlIiw2MDM0MSksY2lyY2xlTGFyZ2VPdXRsaW5lOkh0KCJjaXJjbGUtbGFyZ2Utb3V0bGluZSIsNjAzNDEpLGNvbWJpbmU6SHQoImNvbWJpbmUiLDYwMzQyKSxnYXRoZXI6SHQoImdhdGhlciIsNjAzNDIpLHRhYmxlOkh0KCJ0YWJsZSIsNjAzNDMpLHZhcmlhYmxlR3JvdXA6SHQoInZhcmlhYmxlLWdyb3VwIiw2MDM0NCksdHlwZUhpZXJhcmNoeTpIdCgidHlwZS1oaWVyYXJjaHkiLDYwMzQ1KSx0eXBlSGllcmFyY2h5U3ViOkh0KCJ0eXBlLWhpZXJhcmNoeS1zdWIiLDYwMzQ2KSx0eXBlSGllcmFyY2h5U3VwZXI6SHQoInR5cGUtaGllcmFyY2h5LXN1cGVyIiw2MDM0NyksZ2l0UHVsbFJlcXVlc3RDcmVhdGU6SHQoImdpdC1wdWxsLXJlcXVlc3QtY3JlYXRlIiw2MDM0OCkscnVuQWJvdmU6SHQoInJ1bi1hYm92ZSIsNjAzNDkpLHJ1bkJlbG93Okh0KCJydW4tYmVsb3ciLDYwMzUwKSxub3RlYm9va1RlbXBsYXRlOkh0KCJub3RlYm9vay10ZW1wbGF0ZSIsNjAzNTEpLGRlYnVnUmVydW46SHQoImRlYnVnLXJlcnVuIiw2MDM1Miksd29ya3NwYWNlVHJ1c3RlZDpIdCgid29ya3NwYWNlLXRydXN0ZWQiLDYwMzUzKSx3b3Jrc3BhY2VVbnRydXN0ZWQ6SHQoIndvcmtzcGFjZS11bnRydXN0ZWQiLDYwMzU0KSx3b3Jrc3BhY2VVbnNwZWNpZmllZDpIdCgid29ya3NwYWNlLXVuc3BlY2lmaWVkIiw2MDM1NSksdGVybWluYWxDbWQ6SHQoInRlcm1pbmFsLWNtZCIsNjAzNTYpLHRlcm1pbmFsRGViaWFuOkh0KCJ0ZXJtaW5hbC1kZWJpYW4iLDYwMzU3KSx0ZXJtaW5hbExpbnV4Okh0KCJ0ZXJtaW5hbC1saW51eCIsNjAzNTgpLHRlcm1pbmFsUG93ZXJzaGVsbDpIdCgidGVybWluYWwtcG93ZXJzaGVsbCIsNjAzNTkpLHRlcm1pbmFsVG11eDpIdCgidGVybWluYWwtdG11eCIsNjAzNjApLHRlcm1pbmFsVWJ1bnR1Okh0KCJ0ZXJtaW5hbC11YnVudHUiLDYwMzYxKSx0ZXJtaW5hbEJhc2g6SHQoInRlcm1pbmFsLWJhc2giLDYwMzYyKSxhcnJvd1N3YXA6SHQoImFycm93LXN3YXAiLDYwMzYzKSxjb3B5Okh0KCJjb3B5Iiw2MDM2NCkscGVyc29uQWRkOkh0KCJwZXJzb24tYWRkIiw2MDM2NSksZmlsdGVyRmlsbGVkOkh0KCJmaWx0ZXItZmlsbGVkIiw2MDM2Niksd2FuZDpIdCgid2FuZCIsNjAzNjcpLGRlYnVnTGluZUJ5TGluZTpIdCgiZGVidWctbGluZS1ieS1saW5lIiw2MDM2OCksaW5zcGVjdDpIdCgiaW5zcGVjdCIsNjAzNjkpLGxheWVyczpIdCgibGF5ZXJzIiw2MDM3MCksbGF5ZXJzRG90Okh0KCJsYXllcnMtZG90Iiw2MDM3MSksbGF5ZXJzQWN0aXZlOkh0KCJsYXllcnMtYWN0aXZlIiw2MDM3MiksY29tcGFzczpIdCgiY29tcGFzcyIsNjAzNzMpLGNvbXBhc3NEb3Q6SHQoImNvbXBhc3MtZG90Iiw2MDM3NCksY29tcGFzc0FjdGl2ZTpIdCgiY29tcGFzcy1hY3RpdmUiLDYwMzc1KSxhenVyZTpIdCgiYXp1cmUiLDYwMzc2KSxpc3N1ZURyYWZ0Okh0KCJpc3N1ZS1kcmFmdCIsNjAzNzcpLGdpdFB1bGxSZXF1ZXN0Q2xvc2VkOkh0KCJnaXQtcHVsbC1yZXF1ZXN0LWNsb3NlZCIsNjAzNzgpLGdpdFB1bGxSZXF1ZXN0RHJhZnQ6SHQoImdpdC1wdWxsLXJlcXVlc3QtZHJhZnQiLDYwMzc5KSxkZWJ1Z0FsbDpIdCgiZGVidWctYWxsIiw2MDM4MCksZGVidWdDb3ZlcmFnZTpIdCgiZGVidWctY292ZXJhZ2UiLDYwMzgxKSxydW5FcnJvcnM6SHQoInJ1bi1lcnJvcnMiLDYwMzgyKSxmb2xkZXJMaWJyYXJ5Okh0KCJmb2xkZXItbGlicmFyeSIsNjAzODMpLGRlYnVnQ29udGludWVTbWFsbDpIdCgiZGVidWctY29udGludWUtc21hbGwiLDYwMzg0KSxiZWFrZXJTdG9wOkh0KCJiZWFrZXItc3RvcCIsNjAzODUpLGdyYXBoTGluZTpIdCgiZ3JhcGgtbGluZSIsNjAzODYpLGdyYXBoU2NhdHRlcjpIdCgiZ3JhcGgtc2NhdHRlciIsNjAzODcpLHBpZUNoYXJ0Okh0KCJwaWUtY2hhcnQiLDYwMzg4KSxicmFja2V0RG90Okh0KCJicmFja2V0LWRvdCIsNjAzODkpLGJyYWNrZXRFcnJvcjpIdCgiYnJhY2tldC1lcnJvciIsNjAzOTApLGxvY2tTbWFsbDpIdCgibG9jay1zbWFsbCIsNjAzOTEpLGF6dXJlRGV2b3BzOkh0KCJhenVyZS1kZXZvcHMiLDYwMzkyKSx2ZXJpZmllZEZpbGxlZDpIdCgidmVyaWZpZWQtZmlsbGVkIiw2MDM5MyksbmV3TGluZTpIdCgibmV3bGluZSIsNjAzOTQpLGxheW91dDpIdCgibGF5b3V0Iiw2MDM5NSksbGF5b3V0QWN0aXZpdHliYXJMZWZ0Okh0KCJsYXlvdXQtYWN0aXZpdHliYXItbGVmdCIsNjAzOTYpLGxheW91dEFjdGl2aXR5YmFyUmlnaHQ6SHQoImxheW91dC1hY3Rpdml0eWJhci1yaWdodCIsNjAzOTcpLGxheW91dFBhbmVsTGVmdDpIdCgibGF5b3V0LXBhbmVsLWxlZnQiLDYwMzk4KSxsYXlvdXRQYW5lbENlbnRlcjpIdCgibGF5b3V0LXBhbmVsLWNlbnRlciIsNjAzOTkpLGxheW91dFBhbmVsSnVzdGlmeTpIdCgibGF5b3V0LXBhbmVsLWp1c3RpZnkiLDYwNDAwKSxsYXlvdXRQYW5lbFJpZ2h0Okh0KCJsYXlvdXQtcGFuZWwtcmlnaHQiLDYwNDAxKSxsYXlvdXRQYW5lbDpIdCgibGF5b3V0LXBhbmVsIiw2MDQwMiksbGF5b3V0U2lkZWJhckxlZnQ6SHQoImxheW91dC1zaWRlYmFyLWxlZnQiLDYwNDAzKSxsYXlvdXRTaWRlYmFyUmlnaHQ6SHQoImxheW91dC1zaWRlYmFyLXJpZ2h0Iiw2MDQwNCksbGF5b3V0U3RhdHVzYmFyOkh0KCJsYXlvdXQtc3RhdHVzYmFyIiw2MDQwNSksbGF5b3V0TWVudWJhcjpIdCgibGF5b3V0LW1lbnViYXIiLDYwNDA2KSxsYXlvdXRDZW50ZXJlZDpIdCgibGF5b3V0LWNlbnRlcmVkIiw2MDQwNyksbGF5b3V0U2lkZWJhclJpZ2h0T2ZmOkh0KCJsYXlvdXQtc2lkZWJhci1yaWdodC1vZmYiLDYwNDE2KSxsYXlvdXRQYW5lbE9mZjpIdCgibGF5b3V0LXBhbmVsLW9mZiIsNjA0MTcpLGxheW91dFNpZGViYXJMZWZ0T2ZmOkh0KCJsYXlvdXQtc2lkZWJhci1sZWZ0LW9mZiIsNjA0MTgpLHRhcmdldDpIdCgidGFyZ2V0Iiw2MDQwOCksaW5kZW50Okh0KCJpbmRlbnQiLDYwNDA5KSxyZWNvcmRTbWFsbDpIdCgicmVjb3JkLXNtYWxsIiw2MDQxMCksZXJyb3JTbWFsbDpIdCgiZXJyb3Itc21hbGwiLDYwNDExKSxhcnJvd0NpcmNsZURvd246SHQoImFycm93LWNpcmNsZS1kb3duIiw2MDQxMiksYXJyb3dDaXJjbGVMZWZ0Okh0KCJhcnJvdy1jaXJjbGUtbGVmdCIsNjA0MTMpLGFycm93Q2lyY2xlUmlnaHQ6SHQoImFycm93LWNpcmNsZS1yaWdodCIsNjA0MTQpLGFycm93Q2lyY2xlVXA6SHQoImFycm93LWNpcmNsZS11cCIsNjA0MTUpLGhlYXJ0RmlsbGVkOkh0KCJoZWFydC1maWxsZWQiLDYwNDIwKSxtYXA6SHQoIm1hcCIsNjA0MjEpLG1hcEZpbGxlZDpIdCgibWFwLWZpbGxlZCIsNjA0MjIpLGNpcmNsZVNtYWxsOkh0KCJjaXJjbGUtc21hbGwiLDYwNDIzKSxiZWxsU2xhc2g6SHQoImJlbGwtc2xhc2giLDYwNDI0KSxiZWxsU2xhc2hEb3Q6SHQoImJlbGwtc2xhc2gtZG90Iiw2MDQyNSksY29tbWVudFVucmVzb2x2ZWQ6SHQoImNvbW1lbnQtdW5yZXNvbHZlZCIsNjA0MjYpLGdpdFB1bGxSZXF1ZXN0R29Ub0NoYW5nZXM6SHQoImdpdC1wdWxsLXJlcXVlc3QtZ28tdG8tY2hhbmdlcyIsNjA0MjcpLGdpdFB1bGxSZXF1ZXN0TmV3Q2hhbmdlczpIdCgiZ2l0LXB1bGwtcmVxdWVzdC1uZXctY2hhbmdlcyIsNjA0MjgpLHNlYXJjaEZ1enp5Okh0KCJzZWFyY2gtZnV6enkiLDYwNDI5KSxjb21tZW50RHJhZnQ6SHQoImNvbW1lbnQtZHJhZnQiLDYwNDMwKSxzZW5kOkh0KCJzZW5kIiw2MDQzMSksc3BhcmtsZTpIdCgic3BhcmtsZSIsNjA0MzIpLGluc2VydDpIdCgiaW5zZXJ0Iiw2MDQzMyksZGlhbG9nRXJyb3I6SHQoImRpYWxvZy1lcnJvciIsImVycm9yIiksZGlhbG9nV2FybmluZzpIdCgiZGlhbG9nLXdhcm5pbmciLCJ3YXJuaW5nIiksZGlhbG9nSW5mbzpIdCgiZGlhbG9nLWluZm8iLCJpbmZvIiksZGlhbG9nQ2xvc2U6SHQoImRpYWxvZy1jbG9zZSIsImNsb3NlIiksdHJlZUl0ZW1FeHBhbmRlZDpIdCgidHJlZS1pdGVtLWV4cGFuZGVkIiwiY2hldnJvbi1kb3duIiksdHJlZUZpbHRlck9uVHlwZU9uOkh0KCJ0cmVlLWZpbHRlci1vbi10eXBlLW9uIiwibGlzdC1maWx0ZXIiKSx0cmVlRmlsdGVyT25UeXBlT2ZmOkh0KCJ0cmVlLWZpbHRlci1vbi10eXBlLW9mZiIsImxpc3Qtc2VsZWN0aW9uIiksdHJlZUZpbHRlckNsZWFyOkh0KCJ0cmVlLWZpbHRlci1jbGVhciIsImNsb3NlIiksdHJlZUl0ZW1Mb2FkaW5nOkh0KCJ0cmVlLWl0ZW0tbG9hZGluZyIsImxvYWRpbmciKSxtZW51U2VsZWN0aW9uOkh0KCJtZW51LXNlbGVjdGlvbiIsImNoZWNrIiksbWVudVN1Ym1lbnU6SHQoIm1lbnUtc3VibWVudSIsImNoZXZyb24tcmlnaHQiKSxtZW51QmFyTW9yZTpIdCgibWVudWJhci1tb3JlIiwibW9yZSIpLHNjcm9sbGJhckJ1dHRvbkxlZnQ6SHQoInNjcm9sbGJhci1idXR0b24tbGVmdCIsInRyaWFuZ2xlLWxlZnQiKSxzY3JvbGxiYXJCdXR0b25SaWdodDpIdCgic2Nyb2xsYmFyLWJ1dHRvbi1yaWdodCIsInRyaWFuZ2xlLXJpZ2h0Iiksc2Nyb2xsYmFyQnV0dG9uVXA6SHQoInNjcm9sbGJhci1idXR0b24tdXAiLCJ0cmlhbmdsZS11cCIpLHNjcm9sbGJhckJ1dHRvbkRvd246SHQoInNjcm9sbGJhci1idXR0b24tZG93biIsInRyaWFuZ2xlLWRvd24iKSx0b29sQmFyTW9yZTpIdCgidG9vbGJhci1tb3JlIiwibW9yZSIpLHF1aWNrSW5wdXRCYWNrOkh0KCJxdWljay1pbnB1dC1iYWNrIiwiYXJyb3ctbGVmdCIpfTt2YXIgRHQsV3QsT3QsUHQscXQsRnQsQnQsVnQsS3QsanQsR3QsJHQsSnQsWHQsWXQsUXQsWnQsZW4sdG4sbm4scm4sYW4sb24sc24sbG4sY24saG4sZG4sdW4sbW4scG4sZm4sZ24sYm4sX24sdm4sd24seW4sVG4sa24sU24seG4sTG4sQ24sRW4sQW4sTW4sUm4sTm4sSW4sVW49ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKHIsYSl7ZnVuY3Rpb24gbyhlKXt0cnl7bChpLm5leHQoZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIHMoZSl7dHJ5e2woaS50aHJvdyhlKSl9Y2F0Y2goZSl7YShlKX19ZnVuY3Rpb24gbChlKXt2YXIgdDtlLmRvbmU/cihlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4obyxzKX1sKChpPWkuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9O2NsYXNzIEhuIGV4dGVuZHMgdXtnZXQgaXNSZXNvbHZlZCgpe3JldHVybiB0aGlzLl9pc1Jlc29sdmVkfWNvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcigpLHRoaXMuX3JlZ2lzdHJ5PWUsdGhpcy5fbGFuZ3VhZ2VJZD10LHRoaXMuX2ZhY3Rvcnk9bix0aGlzLl9pc0Rpc3Bvc2VkPSExLHRoaXMuX3Jlc29sdmVQcm9taXNlPW51bGwsdGhpcy5faXNSZXNvbHZlZD0hMX1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZD0hMCxzdXBlci5kaXNwb3NlKCl9cmVzb2x2ZSgpe3JldHVybiBVbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe3JldHVybiB0aGlzLl9yZXNvbHZlUHJvbWlzZXx8KHRoaXMuX3Jlc29sdmVQcm9taXNlPXRoaXMuX2NyZWF0ZSgpKSx0aGlzLl9yZXNvbHZlUHJvbWlzZX0pKX1fY3JlYXRlKCl7cmV0dXJuIFVuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgZT15aWVsZCB0aGlzLl9mYWN0b3J5LnRva2VuaXphdGlvblN1cHBvcnQ7dGhpcy5faXNSZXNvbHZlZD0hMCxlJiYhdGhpcy5faXNEaXNwb3NlZCYmdGhpcy5fcmVnaXN0ZXIodGhpcy5fcmVnaXN0cnkucmVnaXN0ZXIodGhpcy5fbGFuZ3VhZ2VJZCxlKSl9KSl9fWNsYXNzIHpue2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLm9mZnNldD1lLHRoaXMudHlwZT10LHRoaXMubGFuZ3VhZ2U9bix0aGlzLl90b2tlbkJyYW5kPXZvaWQgMH10b1N0cmluZygpe3JldHVybiIoIit0aGlzLm9mZnNldCsiLCAiK3RoaXMudHlwZSsiKSJ9fSFmdW5jdGlvbihlKXtjb25zdCB0PW5ldyBNYXA7dC5zZXQoMCx6dC5zeW1ib2xNZXRob2QpLHQuc2V0KDEsenQuc3ltYm9sRnVuY3Rpb24pLHQuc2V0KDIsenQuc3ltYm9sQ29uc3RydWN0b3IpLHQuc2V0KDMsenQuc3ltYm9sRmllbGQpLHQuc2V0KDQsenQuc3ltYm9sVmFyaWFibGUpLHQuc2V0KDUsenQuc3ltYm9sQ2xhc3MpLHQuc2V0KDYsenQuc3ltYm9sU3RydWN0KSx0LnNldCg3LHp0LnN5bWJvbEludGVyZmFjZSksdC5zZXQoOCx6dC5zeW1ib2xNb2R1bGUpLHQuc2V0KDksenQuc3ltYm9sUHJvcGVydHkpLHQuc2V0KDEwLHp0LnN5bWJvbEV2ZW50KSx0LnNldCgxMSx6dC5zeW1ib2xPcGVyYXRvciksdC5zZXQoMTIsenQuc3ltYm9sVW5pdCksdC5zZXQoMTMsenQuc3ltYm9sVmFsdWUpLHQuc2V0KDE1LHp0LnN5bWJvbEVudW0pLHQuc2V0KDE0LHp0LnN5bWJvbENvbnN0YW50KSx0LnNldCgxNSx6dC5zeW1ib2xFbnVtKSx0LnNldCgxNix6dC5zeW1ib2xFbnVtTWVtYmVyKSx0LnNldCgxNyx6dC5zeW1ib2xLZXl3b3JkKSx0LnNldCgyNyx6dC5zeW1ib2xTbmlwcGV0KSx0LnNldCgxOCx6dC5zeW1ib2xUZXh0KSx0LnNldCgxOSx6dC5zeW1ib2xDb2xvciksdC5zZXQoMjAsenQuc3ltYm9sRmlsZSksdC5zZXQoMjEsenQuc3ltYm9sUmVmZXJlbmNlKSx0LnNldCgyMix6dC5zeW1ib2xDdXN0b21Db2xvciksdC5zZXQoMjMsenQuc3ltYm9sRm9sZGVyKSx0LnNldCgyNCx6dC5zeW1ib2xUeXBlUGFyYW1ldGVyKSx0LnNldCgyNSx6dC5hY2NvdW50KSx0LnNldCgyNix6dC5pc3N1ZXMpLGUudG9JY29uPWZ1bmN0aW9uKGUpe2xldCBuPXQuZ2V0KGUpO3JldHVybiBufHwoY29uc29sZS5pbmZvKCJObyBjb2RpY29uIGZvdW5kIGZvciBDb21wbGV0aW9uSXRlbUtpbmQgIitlKSxuPXp0LnN5bWJvbFByb3BlcnR5KSxufTtjb25zdCBuPW5ldyBNYXA7bi5zZXQoIm1ldGhvZCIsMCksbi5zZXQoImZ1bmN0aW9uIiwxKSxuLnNldCgiY29uc3RydWN0b3IiLDIpLG4uc2V0KCJmaWVsZCIsMyksbi5zZXQoInZhcmlhYmxlIiw0KSxuLnNldCgiY2xhc3MiLDUpLG4uc2V0KCJzdHJ1Y3QiLDYpLG4uc2V0KCJpbnRlcmZhY2UiLDcpLG4uc2V0KCJtb2R1bGUiLDgpLG4uc2V0KCJwcm9wZXJ0eSIsOSksbi5zZXQoImV2ZW50IiwxMCksbi5zZXQoIm9wZXJhdG9yIiwxMSksbi5zZXQoInVuaXQiLDEyKSxuLnNldCgidmFsdWUiLDEzKSxuLnNldCgiY29uc3RhbnQiLDE0KSxuLnNldCgiZW51bSIsMTUpLG4uc2V0KCJlbnVtLW1lbWJlciIsMTYpLG4uc2V0KCJlbnVtTWVtYmVyIiwxNiksbi5zZXQoImtleXdvcmQiLDE3KSxuLnNldCgic25pcHBldCIsMjcpLG4uc2V0KCJ0ZXh0IiwxOCksbi5zZXQoImNvbG9yIiwxOSksbi5zZXQoImZpbGUiLDIwKSxuLnNldCgicmVmZXJlbmNlIiwyMSksbi5zZXQoImN1c3RvbWNvbG9yIiwyMiksbi5zZXQoImZvbGRlciIsMjMpLG4uc2V0KCJ0eXBlLXBhcmFtZXRlciIsMjQpLG4uc2V0KCJ0eXBlUGFyYW1ldGVyIiwyNCksbi5zZXQoImFjY291bnQiLDI1KSxuLnNldCgiaXNzdWUiLDI2KSxlLmZyb21TdHJpbmc9ZnVuY3Rpb24oZSx0KXtsZXQgaT1uLmdldChlKTtyZXR1cm4gdm9pZCAwIT09aXx8dHx8KGk9OSksaX19KER0fHwoRHQ9e30pKSxmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5FeHBsaWNpdD0xXT0iRXhwbGljaXQifShXdHx8KFd0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0yXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLkNvbnRlbnRDaGFuZ2U9M109IkNvbnRlbnRDaGFuZ2UifShPdHx8KE90PXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRleHQ9MF09IlRleHQiLGVbZS5SZWFkPTFdPSJSZWFkIixlW2UuV3JpdGU9Ml09IldyaXRlIn0oUHR8fChQdD17fSkpLGZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IE1hcDt0LnNldCgwLHp0LnN5bWJvbEZpbGUpLHQuc2V0KDEsenQuc3ltYm9sTW9kdWxlKSx0LnNldCgyLHp0LnN5bWJvbE5hbWVzcGFjZSksdC5zZXQoMyx6dC5zeW1ib2xQYWNrYWdlKSx0LnNldCg0LHp0LnN5bWJvbENsYXNzKSx0LnNldCg1LHp0LnN5bWJvbE1ldGhvZCksdC5zZXQoNix6dC5zeW1ib2xQcm9wZXJ0eSksdC5zZXQoNyx6dC5zeW1ib2xGaWVsZCksdC5zZXQoOCx6dC5zeW1ib2xDb25zdHJ1Y3RvciksdC5zZXQoOSx6dC5zeW1ib2xFbnVtKSx0LnNldCgxMCx6dC5zeW1ib2xJbnRlcmZhY2UpLHQuc2V0KDExLHp0LnN5bWJvbEZ1bmN0aW9uKSx0LnNldCgxMix6dC5zeW1ib2xWYXJpYWJsZSksdC5zZXQoMTMsenQuc3ltYm9sQ29uc3RhbnQpLHQuc2V0KDE0LHp0LnN5bWJvbFN0cmluZyksdC5zZXQoMTUsenQuc3ltYm9sTnVtYmVyKSx0LnNldCgxNix6dC5zeW1ib2xCb29sZWFuKSx0LnNldCgxNyx6dC5zeW1ib2xBcnJheSksdC5zZXQoMTgsenQuc3ltYm9sT2JqZWN0KSx0LnNldCgxOSx6dC5zeW1ib2xLZXkpLHQuc2V0KDIwLHp0LnN5bWJvbE51bGwpLHQuc2V0KDIxLHp0LnN5bWJvbEVudW1NZW1iZXIpLHQuc2V0KDIyLHp0LnN5bWJvbFN0cnVjdCksdC5zZXQoMjMsenQuc3ltYm9sRXZlbnQpLHQuc2V0KDI0LHp0LnN5bWJvbE9wZXJhdG9yKSx0LnNldCgyNSx6dC5zeW1ib2xUeXBlUGFyYW1ldGVyKSxlLnRvSWNvbj1mdW5jdGlvbihlKXtsZXQgbj10LmdldChlKTtyZXR1cm4gbnx8KGNvbnNvbGUuaW5mbygiTm8gY29kaWNvbiBmb3VuZCBmb3IgU3ltYm9sS2luZCAiK2UpLG49enQuc3ltYm9sUHJvcGVydHkpLG59fShxdHx8KHF0PXt9KSksZnVuY3Rpb24oZSl7ZS5pcz1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwib2JqZWN0IiE9dHlwZW9mIGUpJiYoInN0cmluZyI9PXR5cGVvZiBlLmlkJiYic3RyaW5nIj09dHlwZW9mIGUudGl0bGUpfX0oRnR8fChGdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UeXBlPTFdPSJUeXBlIixlW2UuUGFyYW1ldGVyPTJdPSJQYXJhbWV0ZXIifShCdHx8KEJ0PXt9KSksbmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fdG9rZW5pemF0aW9uU3VwcG9ydHM9bmV3IE1hcCx0aGlzLl9mYWN0b3JpZXM9bmV3IE1hcCx0aGlzLl9vbkRpZENoYW5nZT1uZXcgQix0aGlzLm9uRGlkQ2hhbmdlPXRoaXMuX29uRGlkQ2hhbmdlLmV2ZW50LHRoaXMuX2NvbG9yTWFwPW51bGx9aGFuZGxlQ2hhbmdlKGUpe3RoaXMuX29uRGlkQ2hhbmdlLmZpcmUoe2NoYW5nZWRMYW5ndWFnZXM6ZSxjaGFuZ2VkQ29sb3JNYXA6ITF9KX1yZWdpc3RlcihlLHQpe3JldHVybiB0aGlzLl90b2tlbml6YXRpb25TdXBwb3J0cy5zZXQoZSx0KSx0aGlzLmhhbmRsZUNoYW5nZShbZV0pLGgoKCgpPT57dGhpcy5fdG9rZW5pemF0aW9uU3VwcG9ydHMuZ2V0KGUpPT09dCYmKHRoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzLmRlbGV0ZShlKSx0aGlzLmhhbmRsZUNoYW5nZShbZV0pKX0pKX1nZXQoZSl7cmV0dXJuIHRoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzLmdldChlKXx8bnVsbH1yZWdpc3RlckZhY3RvcnkoZSx0KXt2YXIgbjtudWxsPT09KG49dGhpcy5fZmFjdG9yaWVzLmdldChlKSl8fHZvaWQgMD09PW58fG4uZGlzcG9zZSgpO2NvbnN0IGk9bmV3IEhuKHRoaXMsZSx0KTtyZXR1cm4gdGhpcy5fZmFjdG9yaWVzLnNldChlLGkpLGgoKCgpPT57Y29uc3QgdD10aGlzLl9mYWN0b3JpZXMuZ2V0KGUpO3QmJnQ9PT1pJiYodGhpcy5fZmFjdG9yaWVzLmRlbGV0ZShlKSx0LmRpc3Bvc2UoKSl9KSl9Z2V0T3JDcmVhdGUoZSl7cmV0dXJuIFVuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgdD10aGlzLmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0IG49dGhpcy5fZmFjdG9yaWVzLmdldChlKTtyZXR1cm4hbnx8bi5pc1Jlc29sdmVkP251bGw6KHlpZWxkIG4ucmVzb2x2ZSgpLHRoaXMuZ2V0KGUpKX0pKX1pc1Jlc29sdmVkKGUpe2lmKHRoaXMuZ2V0KGUpKXJldHVybiEwO2NvbnN0IHQ9dGhpcy5fZmFjdG9yaWVzLmdldChlKTtyZXR1cm4hKHQmJiF0LmlzUmVzb2x2ZWQpfXNldENvbG9yTWFwKGUpe3RoaXMuX2NvbG9yTWFwPWUsdGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh7Y2hhbmdlZExhbmd1YWdlczpBcnJheS5mcm9tKHRoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzLmtleXMoKSksY2hhbmdlZENvbG9yTWFwOiEwfSl9Z2V0Q29sb3JNYXAoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXB9Z2V0RGVmYXVsdEJhY2tncm91bmQoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXAmJnRoaXMuX2NvbG9yTWFwLmxlbmd0aD4yP3RoaXMuX2NvbG9yTWFwWzJdOm51bGx9fSxmdW5jdGlvbihlKXtlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkRpc2FibGVkPTFdPSJEaXNhYmxlZCIsZVtlLkVuYWJsZWQ9Ml09IkVuYWJsZWQifShWdHx8KFZ0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuQXV0bz0yXT0iQXV0byJ9KEt0fHwoS3Q9e30pKSxmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT0iTm9uZSIsZVtlLktlZXBXaGl0ZXNwYWNlPTFdPSJLZWVwV2hpdGVzcGFjZSIsZVtlLkluc2VydEFzU25pcHBldD00XT0iSW5zZXJ0QXNTbmlwcGV0In0oanR8fChqdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5NZXRob2Q9MF09Ik1ldGhvZCIsZVtlLkZ1bmN0aW9uPTFdPSJGdW5jdGlvbiIsZVtlLkNvbnN0cnVjdG9yPTJdPSJDb25zdHJ1Y3RvciIsZVtlLkZpZWxkPTNdPSJGaWVsZCIsZVtlLlZhcmlhYmxlPTRdPSJWYXJpYWJsZSIsZVtlLkNsYXNzPTVdPSJDbGFzcyIsZVtlLlN0cnVjdD02XT0iU3RydWN0IixlW2UuSW50ZXJmYWNlPTddPSJJbnRlcmZhY2UiLGVbZS5Nb2R1bGU9OF09Ik1vZHVsZSIsZVtlLlByb3BlcnR5PTldPSJQcm9wZXJ0eSIsZVtlLkV2ZW50PTEwXT0iRXZlbnQiLGVbZS5PcGVyYXRvcj0xMV09Ik9wZXJhdG9yIixlW2UuVW5pdD0xMl09IlVuaXQiLGVbZS5WYWx1ZT0xM109IlZhbHVlIixlW2UuQ29uc3RhbnQ9MTRdPSJDb25zdGFudCIsZVtlLkVudW09MTVdPSJFbnVtIixlW2UuRW51bU1lbWJlcj0xNl09IkVudW1NZW1iZXIiLGVbZS5LZXl3b3JkPTE3XT0iS2V5d29yZCIsZVtlLlRleHQ9MThdPSJUZXh0IixlW2UuQ29sb3I9MTldPSJDb2xvciIsZVtlLkZpbGU9MjBdPSJGaWxlIixlW2UuUmVmZXJlbmNlPTIxXT0iUmVmZXJlbmNlIixlW2UuQ3VzdG9tY29sb3I9MjJdPSJDdXN0b21jb2xvciIsZVtlLkZvbGRlcj0yM109IkZvbGRlciIsZVtlLlR5cGVQYXJhbWV0ZXI9MjRdPSJUeXBlUGFyYW1ldGVyIixlW2UuVXNlcj0yNV09IlVzZXIiLGVbZS5Jc3N1ZT0yNl09Iklzc3VlIixlW2UuU25pcHBldD0yN109IlNuaXBwZXQifShHdHx8KEd0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkRlcHJlY2F0ZWQ9MV09IkRlcHJlY2F0ZWQifSgkdHx8KCR0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0wXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0xXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLlRyaWdnZXJGb3JJbmNvbXBsZXRlQ29tcGxldGlvbnM9Ml09IlRyaWdnZXJGb3JJbmNvbXBsZXRlQ29tcGxldGlvbnMifShKdHx8KEp0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkVYQUNUPTBdPSJFWEFDVCIsZVtlLkFCT1ZFPTFdPSJBQk9WRSIsZVtlLkJFTE9XPTJdPSJCRUxPVyJ9KFh0fHwoWHQ9e30pKSxmdW5jdGlvbihlKXtlW2UuTm90U2V0PTBdPSJOb3RTZXQiLGVbZS5Db250ZW50Rmx1c2g9MV09IkNvbnRlbnRGbHVzaCIsZVtlLlJlY292ZXJGcm9tTWFya2Vycz0yXT0iUmVjb3ZlckZyb21NYXJrZXJzIixlW2UuRXhwbGljaXQ9M109IkV4cGxpY2l0IixlW2UuUGFzdGU9NF09IlBhc3RlIixlW2UuVW5kbz01XT0iVW5kbyIsZVtlLlJlZG89Nl09IlJlZG8ifShZdHx8KFl0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxGPTFdPSJMRiIsZVtlLkNSTEY9Ml09IkNSTEYifShRdHx8KFF0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRleHQ9MF09IlRleHQiLGVbZS5SZWFkPTFdPSJSZWFkIixlW2UuV3JpdGU9Ml09IldyaXRlIn0oWnR8fChadD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuS2VlcD0xXT0iS2VlcCIsZVtlLkJyYWNrZXRzPTJdPSJCcmFja2V0cyIsZVtlLkFkdmFuY2VkPTNdPSJBZHZhbmNlZCIsZVtlLkZ1bGw9NF09IkZ1bGwifShlbnx8KGVuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLmFjY2VwdFN1Z2dlc3Rpb25PbkNvbW1pdENoYXJhY3Rlcj0wXT0iYWNjZXB0U3VnZ2VzdGlvbk9uQ29tbWl0Q2hhcmFjdGVyIixlW2UuYWNjZXB0U3VnZ2VzdGlvbk9uRW50ZXI9MV09ImFjY2VwdFN1Z2dlc3Rpb25PbkVudGVyIixlW2UuYWNjZXNzaWJpbGl0eVN1cHBvcnQ9Ml09ImFjY2Vzc2liaWxpdHlTdXBwb3J0IixlW2UuYWNjZXNzaWJpbGl0eVBhZ2VTaXplPTNdPSJhY2Nlc3NpYmlsaXR5UGFnZVNpemUiLGVbZS5hcmlhTGFiZWw9NF09ImFyaWFMYWJlbCIsZVtlLmF1dG9DbG9zaW5nQnJhY2tldHM9NV09ImF1dG9DbG9zaW5nQnJhY2tldHMiLGVbZS5zY3JlZW5SZWFkZXJBbm5vdW5jZUlubGluZVN1Z2dlc3Rpb249Nl09InNjcmVlblJlYWRlckFubm91bmNlSW5saW5lU3VnZ2VzdGlvbiIsZVtlLmF1dG9DbG9zaW5nRGVsZXRlPTddPSJhdXRvQ2xvc2luZ0RlbGV0ZSIsZVtlLmF1dG9DbG9zaW5nT3ZlcnR5cGU9OF09ImF1dG9DbG9zaW5nT3ZlcnR5cGUiLGVbZS5hdXRvQ2xvc2luZ1F1b3Rlcz05XT0iYXV0b0Nsb3NpbmdRdW90ZXMiLGVbZS5hdXRvSW5kZW50PTEwXT0iYXV0b0luZGVudCIsZVtlLmF1dG9tYXRpY0xheW91dD0xMV09ImF1dG9tYXRpY0xheW91dCIsZVtlLmF1dG9TdXJyb3VuZD0xMl09ImF1dG9TdXJyb3VuZCIsZVtlLmJyYWNrZXRQYWlyQ29sb3JpemF0aW9uPTEzXT0iYnJhY2tldFBhaXJDb2xvcml6YXRpb24iLGVbZS5ndWlkZXM9MTRdPSJndWlkZXMiLGVbZS5jb2RlTGVucz0xNV09ImNvZGVMZW5zIixlW2UuY29kZUxlbnNGb250RmFtaWx5PTE2XT0iY29kZUxlbnNGb250RmFtaWx5IixlW2UuY29kZUxlbnNGb250U2l6ZT0xN109ImNvZGVMZW5zRm9udFNpemUiLGVbZS5jb2xvckRlY29yYXRvcnM9MThdPSJjb2xvckRlY29yYXRvcnMiLGVbZS5jb2xvckRlY29yYXRvcnNMaW1pdD0xOV09ImNvbG9yRGVjb3JhdG9yc0xpbWl0IixlW2UuY29sdW1uU2VsZWN0aW9uPTIwXT0iY29sdW1uU2VsZWN0aW9uIixlW2UuY29tbWVudHM9MjFdPSJjb21tZW50cyIsZVtlLmNvbnRleHRtZW51PTIyXT0iY29udGV4dG1lbnUiLGVbZS5jb3B5V2l0aFN5bnRheEhpZ2hsaWdodGluZz0yM109ImNvcHlXaXRoU3ludGF4SGlnaGxpZ2h0aW5nIixlW2UuY3Vyc29yQmxpbmtpbmc9MjRdPSJjdXJzb3JCbGlua2luZyIsZVtlLmN1cnNvclNtb290aENhcmV0QW5pbWF0aW9uPTI1XT0iY3Vyc29yU21vb3RoQ2FyZXRBbmltYXRpb24iLGVbZS5jdXJzb3JTdHlsZT0yNl09ImN1cnNvclN0eWxlIixlW2UuY3Vyc29yU3Vycm91bmRpbmdMaW5lcz0yN109ImN1cnNvclN1cnJvdW5kaW5nTGluZXMiLGVbZS5jdXJzb3JTdXJyb3VuZGluZ0xpbmVzU3R5bGU9MjhdPSJjdXJzb3JTdXJyb3VuZGluZ0xpbmVzU3R5bGUiLGVbZS5jdXJzb3JXaWR0aD0yOV09ImN1cnNvcldpZHRoIixlW2UuZGlzYWJsZUxheWVySGludGluZz0zMF09ImRpc2FibGVMYXllckhpbnRpbmciLGVbZS5kaXNhYmxlTW9ub3NwYWNlT3B0aW1pemF0aW9ucz0zMV09ImRpc2FibGVNb25vc3BhY2VPcHRpbWl6YXRpb25zIixlW2UuZG9tUmVhZE9ubHk9MzJdPSJkb21SZWFkT25seSIsZVtlLmRyYWdBbmREcm9wPTMzXT0iZHJhZ0FuZERyb3AiLGVbZS5kcm9wSW50b0VkaXRvcj0zNF09ImRyb3BJbnRvRWRpdG9yIixlW2UuZW1wdHlTZWxlY3Rpb25DbGlwYm9hcmQ9MzVdPSJlbXB0eVNlbGVjdGlvbkNsaXBib2FyZCIsZVtlLmV4cGVyaW1lbnRhbFdoaXRlc3BhY2VSZW5kZXJpbmc9MzZdPSJleHBlcmltZW50YWxXaGl0ZXNwYWNlUmVuZGVyaW5nIixlW2UuZXh0cmFFZGl0b3JDbGFzc05hbWU9MzddPSJleHRyYUVkaXRvckNsYXNzTmFtZSIsZVtlLmZhc3RTY3JvbGxTZW5zaXRpdml0eT0zOF09ImZhc3RTY3JvbGxTZW5zaXRpdml0eSIsZVtlLmZpbmQ9MzldPSJmaW5kIixlW2UuZml4ZWRPdmVyZmxvd1dpZGdldHM9NDBdPSJmaXhlZE92ZXJmbG93V2lkZ2V0cyIsZVtlLmZvbGRpbmc9NDFdPSJmb2xkaW5nIixlW2UuZm9sZGluZ1N0cmF0ZWd5PTQyXT0iZm9sZGluZ1N0cmF0ZWd5IixlW2UuZm9sZGluZ0hpZ2hsaWdodD00M109ImZvbGRpbmdIaWdobGlnaHQiLGVbZS5mb2xkaW5nSW1wb3J0c0J5RGVmYXVsdD00NF09ImZvbGRpbmdJbXBvcnRzQnlEZWZhdWx0IixlW2UuZm9sZGluZ01heGltdW1SZWdpb25zPTQ1XT0iZm9sZGluZ01heGltdW1SZWdpb25zIixlW2UudW5mb2xkT25DbGlja0FmdGVyRW5kT2ZMaW5lPTQ2XT0idW5mb2xkT25DbGlja0FmdGVyRW5kT2ZMaW5lIixlW2UuZm9udEZhbWlseT00N109ImZvbnRGYW1pbHkiLGVbZS5mb250SW5mbz00OF09ImZvbnRJbmZvIixlW2UuZm9udExpZ2F0dXJlcz00OV09ImZvbnRMaWdhdHVyZXMiLGVbZS5mb250U2l6ZT01MF09ImZvbnRTaXplIixlW2UuZm9udFdlaWdodD01MV09ImZvbnRXZWlnaHQiLGVbZS5mb250VmFyaWF0aW9ucz01Ml09ImZvbnRWYXJpYXRpb25zIixlW2UuZm9ybWF0T25QYXN0ZT01M109ImZvcm1hdE9uUGFzdGUiLGVbZS5mb3JtYXRPblR5cGU9NTRdPSJmb3JtYXRPblR5cGUiLGVbZS5nbHlwaE1hcmdpbj01NV09ImdseXBoTWFyZ2luIixlW2UuZ290b0xvY2F0aW9uPTU2XT0iZ290b0xvY2F0aW9uIixlW2UuaGlkZUN1cnNvckluT3ZlcnZpZXdSdWxlcj01N109ImhpZGVDdXJzb3JJbk92ZXJ2aWV3UnVsZXIiLGVbZS5ob3Zlcj01OF09ImhvdmVyIixlW2UuaW5EaWZmRWRpdG9yPTU5XT0iaW5EaWZmRWRpdG9yIixlW2UuaW5saW5lU3VnZ2VzdD02MF09ImlubGluZVN1Z2dlc3QiLGVbZS5sZXR0ZXJTcGFjaW5nPTYxXT0ibGV0dGVyU3BhY2luZyIsZVtlLmxpZ2h0YnVsYj02Ml09ImxpZ2h0YnVsYiIsZVtlLmxpbmVEZWNvcmF0aW9uc1dpZHRoPTYzXT0ibGluZURlY29yYXRpb25zV2lkdGgiLGVbZS5saW5lSGVpZ2h0PTY0XT0ibGluZUhlaWdodCIsZVtlLmxpbmVOdW1iZXJzPTY1XT0ibGluZU51bWJlcnMiLGVbZS5saW5lTnVtYmVyc01pbkNoYXJzPTY2XT0ibGluZU51bWJlcnNNaW5DaGFycyIsZVtlLmxpbmtlZEVkaXRpbmc9NjddPSJsaW5rZWRFZGl0aW5nIixlW2UubGlua3M9NjhdPSJsaW5rcyIsZVtlLm1hdGNoQnJhY2tldHM9NjldPSJtYXRjaEJyYWNrZXRzIixlW2UubWluaW1hcD03MF09Im1pbmltYXAiLGVbZS5tb3VzZVN0eWxlPTcxXT0ibW91c2VTdHlsZSIsZVtlLm1vdXNlV2hlZWxTY3JvbGxTZW5zaXRpdml0eT03Ml09Im1vdXNlV2hlZWxTY3JvbGxTZW5zaXRpdml0eSIsZVtlLm1vdXNlV2hlZWxab29tPTczXT0ibW91c2VXaGVlbFpvb20iLGVbZS5tdWx0aUN1cnNvck1lcmdlT3ZlcmxhcHBpbmc9NzRdPSJtdWx0aUN1cnNvck1lcmdlT3ZlcmxhcHBpbmciLGVbZS5tdWx0aUN1cnNvck1vZGlmaWVyPTc1XT0ibXVsdGlDdXJzb3JNb2RpZmllciIsZVtlLm11bHRpQ3Vyc29yUGFzdGU9NzZdPSJtdWx0aUN1cnNvclBhc3RlIixlW2UubXVsdGlDdXJzb3JMaW1pdD03N109Im11bHRpQ3Vyc29yTGltaXQiLGVbZS5vY2N1cnJlbmNlc0hpZ2hsaWdodD03OF09Im9jY3VycmVuY2VzSGlnaGxpZ2h0IixlW2Uub3ZlcnZpZXdSdWxlckJvcmRlcj03OV09Im92ZXJ2aWV3UnVsZXJCb3JkZXIiLGVbZS5vdmVydmlld1J1bGVyTGFuZXM9ODBdPSJvdmVydmlld1J1bGVyTGFuZXMiLGVbZS5wYWRkaW5nPTgxXT0icGFkZGluZyIsZVtlLnBhc3RlQXM9ODJdPSJwYXN0ZUFzIixlW2UucGFyYW1ldGVySGludHM9ODNdPSJwYXJhbWV0ZXJIaW50cyIsZVtlLnBlZWtXaWRnZXREZWZhdWx0Rm9jdXM9ODRdPSJwZWVrV2lkZ2V0RGVmYXVsdEZvY3VzIixlW2UuZGVmaW5pdGlvbkxpbmtPcGVuc0luUGVlaz04NV09ImRlZmluaXRpb25MaW5rT3BlbnNJblBlZWsiLGVbZS5xdWlja1N1Z2dlc3Rpb25zPTg2XT0icXVpY2tTdWdnZXN0aW9ucyIsZVtlLnF1aWNrU3VnZ2VzdGlvbnNEZWxheT04N109InF1aWNrU3VnZ2VzdGlvbnNEZWxheSIsZVtlLnJlYWRPbmx5PTg4XT0icmVhZE9ubHkiLGVbZS5yZW5hbWVPblR5cGU9ODldPSJyZW5hbWVPblR5cGUiLGVbZS5yZW5kZXJDb250cm9sQ2hhcmFjdGVycz05MF09InJlbmRlckNvbnRyb2xDaGFyYWN0ZXJzIixlW2UucmVuZGVyRmluYWxOZXdsaW5lPTkxXT0icmVuZGVyRmluYWxOZXdsaW5lIixlW2UucmVuZGVyTGluZUhpZ2hsaWdodD05Ml09InJlbmRlckxpbmVIaWdobGlnaHQiLGVbZS5yZW5kZXJMaW5lSGlnaGxpZ2h0T25seVdoZW5Gb2N1cz05M109InJlbmRlckxpbmVIaWdobGlnaHRPbmx5V2hlbkZvY3VzIixlW2UucmVuZGVyVmFsaWRhdGlvbkRlY29yYXRpb25zPTk0XT0icmVuZGVyVmFsaWRhdGlvbkRlY29yYXRpb25zIixlW2UucmVuZGVyV2hpdGVzcGFjZT05NV09InJlbmRlcldoaXRlc3BhY2UiLGVbZS5yZXZlYWxIb3Jpem9udGFsUmlnaHRQYWRkaW5nPTk2XT0icmV2ZWFsSG9yaXpvbnRhbFJpZ2h0UGFkZGluZyIsZVtlLnJvdW5kZWRTZWxlY3Rpb249OTddPSJyb3VuZGVkU2VsZWN0aW9uIixlW2UucnVsZXJzPTk4XT0icnVsZXJzIixlW2Uuc2Nyb2xsYmFyPTk5XT0ic2Nyb2xsYmFyIixlW2Uuc2Nyb2xsQmV5b25kTGFzdENvbHVtbj0xMDBdPSJzY3JvbGxCZXlvbmRMYXN0Q29sdW1uIixlW2Uuc2Nyb2xsQmV5b25kTGFzdExpbmU9MTAxXT0ic2Nyb2xsQmV5b25kTGFzdExpbmUiLGVbZS5zY3JvbGxQcmVkb21pbmFudEF4aXM9MTAyXT0ic2Nyb2xsUHJlZG9taW5hbnRBeGlzIixlW2Uuc2VsZWN0aW9uQ2xpcGJvYXJkPTEwM109InNlbGVjdGlvbkNsaXBib2FyZCIsZVtlLnNlbGVjdGlvbkhpZ2hsaWdodD0xMDRdPSJzZWxlY3Rpb25IaWdobGlnaHQiLGVbZS5zZWxlY3RPbkxpbmVOdW1iZXJzPTEwNV09InNlbGVjdE9uTGluZU51bWJlcnMiLGVbZS5zaG93Rm9sZGluZ0NvbnRyb2xzPTEwNl09InNob3dGb2xkaW5nQ29udHJvbHMiLGVbZS5zaG93VW51c2VkPTEwN109InNob3dVbnVzZWQiLGVbZS5zbmlwcGV0U3VnZ2VzdGlvbnM9MTA4XT0ic25pcHBldFN1Z2dlc3Rpb25zIixlW2Uuc21hcnRTZWxlY3Q9MTA5XT0ic21hcnRTZWxlY3QiLGVbZS5zbW9vdGhTY3JvbGxpbmc9MTEwXT0ic21vb3RoU2Nyb2xsaW5nIixlW2Uuc3RpY2t5U2Nyb2xsPTExMV09InN0aWNreVNjcm9sbCIsZVtlLnN0aWNreVRhYlN0b3BzPTExMl09InN0aWNreVRhYlN0b3BzIixlW2Uuc3RvcFJlbmRlcmluZ0xpbmVBZnRlcj0xMTNdPSJzdG9wUmVuZGVyaW5nTGluZUFmdGVyIixlW2Uuc3VnZ2VzdD0xMTRdPSJzdWdnZXN0IixlW2Uuc3VnZ2VzdEZvbnRTaXplPTExNV09InN1Z2dlc3RGb250U2l6ZSIsZVtlLnN1Z2dlc3RMaW5lSGVpZ2h0PTExNl09InN1Z2dlc3RMaW5lSGVpZ2h0IixlW2Uuc3VnZ2VzdE9uVHJpZ2dlckNoYXJhY3RlcnM9MTE3XT0ic3VnZ2VzdE9uVHJpZ2dlckNoYXJhY3RlcnMiLGVbZS5zdWdnZXN0U2VsZWN0aW9uPTExOF09InN1Z2dlc3RTZWxlY3Rpb24iLGVbZS50YWJDb21wbGV0aW9uPTExOV09InRhYkNvbXBsZXRpb24iLGVbZS50YWJJbmRleD0xMjBdPSJ0YWJJbmRleCIsZVtlLnVuaWNvZGVIaWdobGlnaHRpbmc9MTIxXT0idW5pY29kZUhpZ2hsaWdodGluZyIsZVtlLnVudXN1YWxMaW5lVGVybWluYXRvcnM9MTIyXT0idW51c3VhbExpbmVUZXJtaW5hdG9ycyIsZVtlLnVzZVNoYWRvd0RPTT0xMjNdPSJ1c2VTaGFkb3dET00iLGVbZS51c2VUYWJTdG9wcz0xMjRdPSJ1c2VUYWJTdG9wcyIsZVtlLndvcmRCcmVhaz0xMjVdPSJ3b3JkQnJlYWsiLGVbZS53b3JkU2VwYXJhdG9ycz0xMjZdPSJ3b3JkU2VwYXJhdG9ycyIsZVtlLndvcmRXcmFwPTEyN109IndvcmRXcmFwIixlW2Uud29yZFdyYXBCcmVha0FmdGVyQ2hhcmFjdGVycz0xMjhdPSJ3b3JkV3JhcEJyZWFrQWZ0ZXJDaGFyYWN0ZXJzIixlW2Uud29yZFdyYXBCcmVha0JlZm9yZUNoYXJhY3RlcnM9MTI5XT0id29yZFdyYXBCcmVha0JlZm9yZUNoYXJhY3RlcnMiLGVbZS53b3JkV3JhcENvbHVtbj0xMzBdPSJ3b3JkV3JhcENvbHVtbiIsZVtlLndvcmRXcmFwT3ZlcnJpZGUxPTEzMV09IndvcmRXcmFwT3ZlcnJpZGUxIixlW2Uud29yZFdyYXBPdmVycmlkZTI9MTMyXT0id29yZFdyYXBPdmVycmlkZTIiLGVbZS53cmFwcGluZ0luZGVudD0xMzNdPSJ3cmFwcGluZ0luZGVudCIsZVtlLndyYXBwaW5nU3RyYXRlZ3k9MTM0XT0id3JhcHBpbmdTdHJhdGVneSIsZVtlLnNob3dEZXByZWNhdGVkPTEzNV09InNob3dEZXByZWNhdGVkIixlW2UuaW5sYXlIaW50cz0xMzZdPSJpbmxheUhpbnRzIixlW2UuZWRpdG9yQ2xhc3NOYW1lPTEzN109ImVkaXRvckNsYXNzTmFtZSIsZVtlLnBpeGVsUmF0aW89MTM4XT0icGl4ZWxSYXRpbyIsZVtlLnRhYkZvY3VzTW9kZT0xMzldPSJ0YWJGb2N1c01vZGUiLGVbZS5sYXlvdXRJbmZvPTE0MF09ImxheW91dEluZm8iLGVbZS53cmFwcGluZ0luZm89MTQxXT0id3JhcHBpbmdJbmZvIixlW2UuZGVmYXVsdENvbG9yRGVjb3JhdG9ycz0xNDJdPSJkZWZhdWx0Q29sb3JEZWNvcmF0b3JzIn0odG58fCh0bj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UZXh0RGVmaW5lZD0wXT0iVGV4dERlZmluZWQiLGVbZS5MRj0xXT0iTEYiLGVbZS5DUkxGPTJdPSJDUkxGIn0obm58fChubj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5MRj0wXT0iTEYiLGVbZS5DUkxGPTFdPSJDUkxGIn0ocm58fChybj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTFdPSJMZWZ0IixlW2UuUmlnaHQ9Ml09IlJpZ2h0In0oYW58fChhbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuSW5kZW50PTFdPSJJbmRlbnQiLGVbZS5JbmRlbnRPdXRkZW50PTJdPSJJbmRlbnRPdXRkZW50IixlW2UuT3V0ZGVudD0zXT0iT3V0ZGVudCJ9KG9ufHwob249e30pKSxmdW5jdGlvbihlKXtlW2UuQm90aD0wXT0iQm90aCIsZVtlLlJpZ2h0PTFdPSJSaWdodCIsZVtlLkxlZnQ9Ml09IkxlZnQiLGVbZS5Ob25lPTNdPSJOb25lIn0oc258fChzbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UeXBlPTFdPSJUeXBlIixlW2UuUGFyYW1ldGVyPTJdPSJQYXJhbWV0ZXIifShsbnx8KGxuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkF1dG9tYXRpYz0wXT0iQXV0b21hdGljIixlW2UuRXhwbGljaXQ9MV09IkV4cGxpY2l0In0oY258fChjbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5EZXBlbmRzT25LYkxheW91dD0tMV09IkRlcGVuZHNPbktiTGF5b3V0IixlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkJhY2tzcGFjZT0xXT0iQmFja3NwYWNlIixlW2UuVGFiPTJdPSJUYWIiLGVbZS5FbnRlcj0zXT0iRW50ZXIiLGVbZS5TaGlmdD00XT0iU2hpZnQiLGVbZS5DdHJsPTVdPSJDdHJsIixlW2UuQWx0PTZdPSJBbHQiLGVbZS5QYXVzZUJyZWFrPTddPSJQYXVzZUJyZWFrIixlW2UuQ2Fwc0xvY2s9OF09IkNhcHNMb2NrIixlW2UuRXNjYXBlPTldPSJFc2NhcGUiLGVbZS5TcGFjZT0xMF09IlNwYWNlIixlW2UuUGFnZVVwPTExXT0iUGFnZVVwIixlW2UuUGFnZURvd249MTJdPSJQYWdlRG93biIsZVtlLkVuZD0xM109IkVuZCIsZVtlLkhvbWU9MTRdPSJIb21lIixlW2UuTGVmdEFycm93PTE1XT0iTGVmdEFycm93IixlW2UuVXBBcnJvdz0xNl09IlVwQXJyb3ciLGVbZS5SaWdodEFycm93PTE3XT0iUmlnaHRBcnJvdyIsZVtlLkRvd25BcnJvdz0xOF09IkRvd25BcnJvdyIsZVtlLkluc2VydD0xOV09Ikluc2VydCIsZVtlLkRlbGV0ZT0yMF09IkRlbGV0ZSIsZVtlLkRpZ2l0MD0yMV09IkRpZ2l0MCIsZVtlLkRpZ2l0MT0yMl09IkRpZ2l0MSIsZVtlLkRpZ2l0Mj0yM109IkRpZ2l0MiIsZVtlLkRpZ2l0Mz0yNF09IkRpZ2l0MyIsZVtlLkRpZ2l0ND0yNV09IkRpZ2l0NCIsZVtlLkRpZ2l0NT0yNl09IkRpZ2l0NSIsZVtlLkRpZ2l0Nj0yN109IkRpZ2l0NiIsZVtlLkRpZ2l0Nz0yOF09IkRpZ2l0NyIsZVtlLkRpZ2l0OD0yOV09IkRpZ2l0OCIsZVtlLkRpZ2l0OT0zMF09IkRpZ2l0OSIsZVtlLktleUE9MzFdPSJLZXlBIixlW2UuS2V5Qj0zMl09IktleUIiLGVbZS5LZXlDPTMzXT0iS2V5QyIsZVtlLktleUQ9MzRdPSJLZXlEIixlW2UuS2V5RT0zNV09IktleUUiLGVbZS5LZXlGPTM2XT0iS2V5RiIsZVtlLktleUc9MzddPSJLZXlHIixlW2UuS2V5SD0zOF09IktleUgiLGVbZS5LZXlJPTM5XT0iS2V5SSIsZVtlLktleUo9NDBdPSJLZXlKIixlW2UuS2V5Sz00MV09IktleUsiLGVbZS5LZXlMPTQyXT0iS2V5TCIsZVtlLktleU09NDNdPSJLZXlNIixlW2UuS2V5Tj00NF09IktleU4iLGVbZS5LZXlPPTQ1XT0iS2V5TyIsZVtlLktleVA9NDZdPSJLZXlQIixlW2UuS2V5UT00N109IktleVEiLGVbZS5LZXlSPTQ4XT0iS2V5UiIsZVtlLktleVM9NDldPSJLZXlTIixlW2UuS2V5VD01MF09IktleVQiLGVbZS5LZXlVPTUxXT0iS2V5VSIsZVtlLktleVY9NTJdPSJLZXlWIixlW2UuS2V5Vz01M109IktleVciLGVbZS5LZXlYPTU0XT0iS2V5WCIsZVtlLktleVk9NTVdPSJLZXlZIixlW2UuS2V5Wj01Nl09IktleVoiLGVbZS5NZXRhPTU3XT0iTWV0YSIsZVtlLkNvbnRleHRNZW51PTU4XT0iQ29udGV4dE1lbnUiLGVbZS5GMT01OV09IkYxIixlW2UuRjI9NjBdPSJGMiIsZVtlLkYzPTYxXT0iRjMiLGVbZS5GND02Ml09IkY0IixlW2UuRjU9NjNdPSJGNSIsZVtlLkY2PTY0XT0iRjYiLGVbZS5GNz02NV09IkY3IixlW2UuRjg9NjZdPSJGOCIsZVtlLkY5PTY3XT0iRjkiLGVbZS5GMTA9NjhdPSJGMTAiLGVbZS5GMTE9NjldPSJGMTEiLGVbZS5GMTI9NzBdPSJGMTIiLGVbZS5GMTM9NzFdPSJGMTMiLGVbZS5GMTQ9NzJdPSJGMTQiLGVbZS5GMTU9NzNdPSJGMTUiLGVbZS5GMTY9NzRdPSJGMTYiLGVbZS5GMTc9NzVdPSJGMTciLGVbZS5GMTg9NzZdPSJGMTgiLGVbZS5GMTk9NzddPSJGMTkiLGVbZS5GMjA9NzhdPSJGMjAiLGVbZS5GMjE9NzldPSJGMjEiLGVbZS5GMjI9ODBdPSJGMjIiLGVbZS5GMjM9ODFdPSJGMjMiLGVbZS5GMjQ9ODJdPSJGMjQiLGVbZS5OdW1Mb2NrPTgzXT0iTnVtTG9jayIsZVtlLlNjcm9sbExvY2s9ODRdPSJTY3JvbGxMb2NrIixlW2UuU2VtaWNvbG9uPTg1XT0iU2VtaWNvbG9uIixlW2UuRXF1YWw9ODZdPSJFcXVhbCIsZVtlLkNvbW1hPTg3XT0iQ29tbWEiLGVbZS5NaW51cz04OF09Ik1pbnVzIixlW2UuUGVyaW9kPTg5XT0iUGVyaW9kIixlW2UuU2xhc2g9OTBdPSJTbGFzaCIsZVtlLkJhY2txdW90ZT05MV09IkJhY2txdW90ZSIsZVtlLkJyYWNrZXRMZWZ0PTkyXT0iQnJhY2tldExlZnQiLGVbZS5CYWNrc2xhc2g9OTNdPSJCYWNrc2xhc2giLGVbZS5CcmFja2V0UmlnaHQ9OTRdPSJCcmFja2V0UmlnaHQiLGVbZS5RdW90ZT05NV09IlF1b3RlIixlW2UuT0VNXzg9OTZdPSJPRU1fOCIsZVtlLkludGxCYWNrc2xhc2g9OTddPSJJbnRsQmFja3NsYXNoIixlW2UuTnVtcGFkMD05OF09Ik51bXBhZDAiLGVbZS5OdW1wYWQxPTk5XT0iTnVtcGFkMSIsZVtlLk51bXBhZDI9MTAwXT0iTnVtcGFkMiIsZVtlLk51bXBhZDM9MTAxXT0iTnVtcGFkMyIsZVtlLk51bXBhZDQ9MTAyXT0iTnVtcGFkNCIsZVtlLk51bXBhZDU9MTAzXT0iTnVtcGFkNSIsZVtlLk51bXBhZDY9MTA0XT0iTnVtcGFkNiIsZVtlLk51bXBhZDc9MTA1XT0iTnVtcGFkNyIsZVtlLk51bXBhZDg9MTA2XT0iTnVtcGFkOCIsZVtlLk51bXBhZDk9MTA3XT0iTnVtcGFkOSIsZVtlLk51bXBhZE11bHRpcGx5PTEwOF09Ik51bXBhZE11bHRpcGx5IixlW2UuTnVtcGFkQWRkPTEwOV09Ik51bXBhZEFkZCIsZVtlLk5VTVBBRF9TRVBBUkFUT1I9MTEwXT0iTlVNUEFEX1NFUEFSQVRPUiIsZVtlLk51bXBhZFN1YnRyYWN0PTExMV09Ik51bXBhZFN1YnRyYWN0IixlW2UuTnVtcGFkRGVjaW1hbD0xMTJdPSJOdW1wYWREZWNpbWFsIixlW2UuTnVtcGFkRGl2aWRlPTExM109Ik51bXBhZERpdmlkZSIsZVtlLktFWV9JTl9DT01QT1NJVElPTj0xMTRdPSJLRVlfSU5fQ09NUE9TSVRJT04iLGVbZS5BQk5UX0MxPTExNV09IkFCTlRfQzEiLGVbZS5BQk5UX0MyPTExNl09IkFCTlRfQzIiLGVbZS5BdWRpb1ZvbHVtZU11dGU9MTE3XT0iQXVkaW9Wb2x1bWVNdXRlIixlW2UuQXVkaW9Wb2x1bWVVcD0xMThdPSJBdWRpb1ZvbHVtZVVwIixlW2UuQXVkaW9Wb2x1bWVEb3duPTExOV09IkF1ZGlvVm9sdW1lRG93biIsZVtlLkJyb3dzZXJTZWFyY2g9MTIwXT0iQnJvd3NlclNlYXJjaCIsZVtlLkJyb3dzZXJIb21lPTEyMV09IkJyb3dzZXJIb21lIixlW2UuQnJvd3NlckJhY2s9MTIyXT0iQnJvd3NlckJhY2siLGVbZS5Ccm93c2VyRm9yd2FyZD0xMjNdPSJCcm93c2VyRm9yd2FyZCIsZVtlLk1lZGlhVHJhY2tOZXh0PTEyNF09Ik1lZGlhVHJhY2tOZXh0IixlW2UuTWVkaWFUcmFja1ByZXZpb3VzPTEyNV09Ik1lZGlhVHJhY2tQcmV2aW91cyIsZVtlLk1lZGlhU3RvcD0xMjZdPSJNZWRpYVN0b3AiLGVbZS5NZWRpYVBsYXlQYXVzZT0xMjddPSJNZWRpYVBsYXlQYXVzZSIsZVtlLkxhdW5jaE1lZGlhUGxheWVyPTEyOF09IkxhdW5jaE1lZGlhUGxheWVyIixlW2UuTGF1bmNoTWFpbD0xMjldPSJMYXVuY2hNYWlsIixlW2UuTGF1bmNoQXBwMj0xMzBdPSJMYXVuY2hBcHAyIixlW2UuQ2xlYXI9MTMxXT0iQ2xlYXIiLGVbZS5NQVhfVkFMVUU9MTMyXT0iTUFYX1ZBTFVFIn0oaG58fChobj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5IaW50PTFdPSJIaW50IixlW2UuSW5mbz0yXT0iSW5mbyIsZVtlLldhcm5pbmc9NF09Ildhcm5pbmciLGVbZS5FcnJvcj04XT0iRXJyb3IifShkbnx8KGRuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlVubmVjZXNzYXJ5PTFdPSJVbm5lY2Vzc2FyeSIsZVtlLkRlcHJlY2F0ZWQ9Ml09IkRlcHJlY2F0ZWQifSh1bnx8KHVuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLklubGluZT0xXT0iSW5saW5lIixlW2UuR3V0dGVyPTJdPSJHdXR0ZXIifShtbnx8KG1uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlVOS05PV049MF09IlVOS05PV04iLGVbZS5URVhUQVJFQT0xXT0iVEVYVEFSRUEiLGVbZS5HVVRURVJfR0xZUEhfTUFSR0lOPTJdPSJHVVRURVJfR0xZUEhfTUFSR0lOIixlW2UuR1VUVEVSX0xJTkVfTlVNQkVSUz0zXT0iR1VUVEVSX0xJTkVfTlVNQkVSUyIsZVtlLkdVVFRFUl9MSU5FX0RFQ09SQVRJT05TPTRdPSJHVVRURVJfTElORV9ERUNPUkFUSU9OUyIsZVtlLkdVVFRFUl9WSUVXX1pPTkU9NV09IkdVVFRFUl9WSUVXX1pPTkUiLGVbZS5DT05URU5UX1RFWFQ9Nl09IkNPTlRFTlRfVEVYVCIsZVtlLkNPTlRFTlRfRU1QVFk9N109IkNPTlRFTlRfRU1QVFkiLGVbZS5DT05URU5UX1ZJRVdfWk9ORT04XT0iQ09OVEVOVF9WSUVXX1pPTkUiLGVbZS5DT05URU5UX1dJREdFVD05XT0iQ09OVEVOVF9XSURHRVQiLGVbZS5PVkVSVklFV19SVUxFUj0xMF09Ik9WRVJWSUVXX1JVTEVSIixlW2UuU0NST0xMQkFSPTExXT0iU0NST0xMQkFSIixlW2UuT1ZFUkxBWV9XSURHRVQ9MTJdPSJPVkVSTEFZX1dJREdFVCIsZVtlLk9VVFNJREVfRURJVE9SPTEzXT0iT1VUU0lERV9FRElUT1IifShwbnx8KHBuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRPUF9SSUdIVF9DT1JORVI9MF09IlRPUF9SSUdIVF9DT1JORVIiLGVbZS5CT1RUT01fUklHSFRfQ09STkVSPTFdPSJCT1RUT01fUklHSFRfQ09STkVSIixlW2UuVE9QX0NFTlRFUj0yXT0iVE9QX0NFTlRFUiJ9KGZufHwoZm49e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0xXT0iTGVmdCIsZVtlLkNlbnRlcj0yXT0iQ2VudGVyIixlW2UuUmlnaHQ9NF09IlJpZ2h0IixlW2UuRnVsbD03XT0iRnVsbCJ9KGdufHwoZ249e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0wXT0iTGVmdCIsZVtlLlJpZ2h0PTFdPSJSaWdodCIsZVtlLk5vbmU9Ml09Ik5vbmUiLGVbZS5MZWZ0T2ZJbmplY3RlZFRleHQ9M109IkxlZnRPZkluamVjdGVkVGV4dCIsZVtlLlJpZ2h0T2ZJbmplY3RlZFRleHQ9NF09IlJpZ2h0T2ZJbmplY3RlZFRleHQifShibnx8KGJuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk9mZj0wXT0iT2ZmIixlW2UuT249MV09Ik9uIixlW2UuUmVsYXRpdmU9Ml09IlJlbGF0aXZlIixlW2UuSW50ZXJ2YWw9M109IkludGVydmFsIixlW2UuQ3VzdG9tPTRdPSJDdXN0b20ifShfbnx8KF9uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5UZXh0PTFdPSJUZXh0IixlW2UuQmxvY2tzPTJdPSJCbG9ja3MifSh2bnx8KHZuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlNtb290aD0wXT0iU21vb3RoIixlW2UuSW1tZWRpYXRlPTFdPSJJbW1lZGlhdGUifSh3bnx8KHduPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkF1dG89MV09IkF1dG8iLGVbZS5IaWRkZW49Ml09IkhpZGRlbiIsZVtlLlZpc2libGU9M109IlZpc2libGUifSh5bnx8KHluPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxUUj0wXT0iTFRSIixlW2UuUlRMPTFdPSJSVEwifShUbnx8KFRuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0yXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLkNvbnRlbnRDaGFuZ2U9M109IkNvbnRlbnRDaGFuZ2UifShrbnx8KGtuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkZpbGU9MF09IkZpbGUiLGVbZS5Nb2R1bGU9MV09Ik1vZHVsZSIsZVtlLk5hbWVzcGFjZT0yXT0iTmFtZXNwYWNlIixlW2UuUGFja2FnZT0zXT0iUGFja2FnZSIsZVtlLkNsYXNzPTRdPSJDbGFzcyIsZVtlLk1ldGhvZD01XT0iTWV0aG9kIixlW2UuUHJvcGVydHk9Nl09IlByb3BlcnR5IixlW2UuRmllbGQ9N109IkZpZWxkIixlW2UuQ29uc3RydWN0b3I9OF09IkNvbnN0cnVjdG9yIixlW2UuRW51bT05XT0iRW51bSIsZVtlLkludGVyZmFjZT0xMF09IkludGVyZmFjZSIsZVtlLkZ1bmN0aW9uPTExXT0iRnVuY3Rpb24iLGVbZS5WYXJpYWJsZT0xMl09IlZhcmlhYmxlIixlW2UuQ29uc3RhbnQ9MTNdPSJDb25zdGFudCIsZVtlLlN0cmluZz0xNF09IlN0cmluZyIsZVtlLk51bWJlcj0xNV09Ik51bWJlciIsZVtlLkJvb2xlYW49MTZdPSJCb29sZWFuIixlW2UuQXJyYXk9MTddPSJBcnJheSIsZVtlLk9iamVjdD0xOF09Ik9iamVjdCIsZVtlLktleT0xOV09IktleSIsZVtlLk51bGw9MjBdPSJOdWxsIixlW2UuRW51bU1lbWJlcj0yMV09IkVudW1NZW1iZXIiLGVbZS5TdHJ1Y3Q9MjJdPSJTdHJ1Y3QiLGVbZS5FdmVudD0yM109IkV2ZW50IixlW2UuT3BlcmF0b3I9MjRdPSJPcGVyYXRvciIsZVtlLlR5cGVQYXJhbWV0ZXI9MjVdPSJUeXBlUGFyYW1ldGVyIn0oU258fChTbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5EZXByZWNhdGVkPTFdPSJEZXByZWNhdGVkIn0oeG58fCh4bj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5IaWRkZW49MF09IkhpZGRlbiIsZVtlLkJsaW5rPTFdPSJCbGluayIsZVtlLlNtb290aD0yXT0iU21vb3RoIixlW2UuUGhhc2U9M109IlBoYXNlIixlW2UuRXhwYW5kPTRdPSJFeHBhbmQiLGVbZS5Tb2xpZD01XT0iU29saWQifShMbnx8KExuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxpbmU9MV09IkxpbmUiLGVbZS5CbG9jaz0yXT0iQmxvY2siLGVbZS5VbmRlcmxpbmU9M109IlVuZGVybGluZSIsZVtlLkxpbmVUaGluPTRdPSJMaW5lVGhpbiIsZVtlLkJsb2NrT3V0bGluZT01XT0iQmxvY2tPdXRsaW5lIixlW2UuVW5kZXJsaW5lVGhpbj02XT0iVW5kZXJsaW5lVGhpbiJ9KENufHwoQ249e30pKSxmdW5jdGlvbihlKXtlW2UuQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0wXT0iQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcyIsZVtlLk5ldmVyR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0xXT0iTmV2ZXJHcm93c1doZW5UeXBpbmdBdEVkZ2VzIixlW2UuR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZT0yXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZSIsZVtlLkdyb3dzT25seVdoZW5UeXBpbmdBZnRlcj0zXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0FmdGVyIn0oRW58fChFbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuU2FtZT0xXT0iU2FtZSIsZVtlLkluZGVudD0yXT0iSW5kZW50IixlW2UuRGVlcEluZGVudD0zXT0iRGVlcEluZGVudCJ9KEFufHwoQW49e30pKTtjbGFzcyBEbntzdGF0aWMgY2hvcmQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4oZXwoNjU1MzUmdCk8PDE2Pj4+MCk+Pj4wfShlLHQpfX1mdW5jdGlvbiBXbihlLHQsbixpLHIpe3JldHVybiBmdW5jdGlvbihlLHQsbixpLHIpe2lmKDA9PT1pKXJldHVybiEwO2NvbnN0IGE9dC5jaGFyQ29kZUF0KGktMSk7aWYoMCE9PWUuZ2V0KGEpKXJldHVybiEwO2lmKDEzPT09YXx8MTA9PT1hKXJldHVybiEwO2lmKHI+MCl7Y29uc3Qgbj10LmNoYXJDb2RlQXQoaSk7aWYoMCE9PWUuZ2V0KG4pKXJldHVybiEwfXJldHVybiExfShlLHQsMCxpLHIpJiZmdW5jdGlvbihlLHQsbixpLHIpe2lmKGkrcj09PW4pcmV0dXJuITA7Y29uc3QgYT10LmNoYXJDb2RlQXQoaStyKTtpZigwIT09ZS5nZXQoYSkpcmV0dXJuITA7aWYoMTM9PT1hfHwxMD09PWEpcmV0dXJuITA7aWYocj4wKXtjb25zdCBuPXQuY2hhckNvZGVBdChpK3ItMSk7aWYoMCE9PWUuZ2V0KG4pKXJldHVybiEwfXJldHVybiExfShlLHQsbixpLHIpfURuLkN0cmxDbWQ9MjA0OCxEbi5TaGlmdD0xMDI0LERuLkFsdD01MTIsRG4uV2luQ3RybD0yNTYsZnVuY3Rpb24oZSl7ZVtlLkxlZnQ9MV09IkxlZnQiLGVbZS5DZW50ZXI9Ml09IkNlbnRlciIsZVtlLlJpZ2h0PTRdPSJSaWdodCIsZVtlLkZ1bGw9N109IkZ1bGwifShNbnx8KE1uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxlZnQ9MV09IkxlZnQiLGVbZS5SaWdodD0yXT0iUmlnaHQifShSbnx8KFJuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLklubGluZT0xXT0iSW5saW5lIixlW2UuR3V0dGVyPTJdPSJHdXR0ZXIifShObnx8KE5uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkJvdGg9MF09IkJvdGgiLGVbZS5SaWdodD0xXT0iUmlnaHQiLGVbZS5MZWZ0PTJdPSJMZWZ0IixlW2UuTm9uZT0zXT0iTm9uZSJ9KElufHwoSW49e30pKTtjbGFzcyBPbntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3dvcmRTZXBhcmF0b3JzPWUsdGhpcy5fc2VhcmNoUmVnZXg9dCx0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfXJlc2V0KGUpe3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleD1lLHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9LTEsdGhpcy5fcHJldk1hdGNoTGVuZ3RoPTB9bmV4dChlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBuO2Rve2lmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgrdGhpcy5fcHJldk1hdGNoTGVuZ3RoPT09dClyZXR1cm4gbnVsbDtpZihuPXRoaXMuX3NlYXJjaFJlZ2V4LmV4ZWMoZSksIW4pcmV0dXJuIG51bGw7Y29uc3QgaT1uLmluZGV4LHI9blswXS5sZW5ndGg7aWYoaT09PXRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgmJnI9PT10aGlzLl9wcmV2TWF0Y2hMZW5ndGgpe2lmKDA9PT1yKXtRKGUsdCx0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgpPjY1NTM1P3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleCs9Mjp0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTE7Y29udGludWV9cmV0dXJuIG51bGx9aWYodGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD1pLHRoaXMuX3ByZXZNYXRjaExlbmd0aD1yLCF0aGlzLl93b3JkU2VwYXJhdG9yc3x8V24odGhpcy5fd29yZFNlcGFyYXRvcnMsZSx0LGkscikpcmV0dXJuIG59d2hpbGUobik7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIFBuKGUsdD0iVW5yZWFjaGFibGUiKXt0aHJvdyBuZXcgRXJyb3IodCl9ZnVuY3Rpb24gcW4oZSl7ZSgpfHwoZSgpLHQobmV3IG8oIkFzc2VydGlvbiBGYWlsZWQiKSkpfWZ1bmN0aW9uIEZuKGUsdCl7bGV0IG49MDtmb3IoO248ZS5sZW5ndGgtMTspe2lmKCF0KGVbbl0sZVtuKzFdKSlyZXR1cm4hMTtuKyt9cmV0dXJuITB9Y2xhc3MgQm57c3RhdGljIGNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyhlLHQsbil7Y29uc3QgaT1uP24uc3RhcnRMaW5lTnVtYmVyOjEscj1uP24uZW5kTGluZU51bWJlcjplLmdldExpbmVDb3VudCgpLGE9bmV3IFZuKHQpLG89YS5nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCk7bGV0IHM7dmFyIGwsYztzPSJhbGxOb25CYXNpY0FzY2lpIj09PW8/bmV3IFJlZ0V4cCgiW15cXHRcXG5cXHJcXHgyMC1cXHg3RV0iLCJnIik6bmV3IFJlZ0V4cCgiIisobD1BcnJheS5mcm9tKG8pLGBbJHtjPWwubWFwKChlPT5TdHJpbmcuZnJvbUNvZGVQb2ludChlKSkpLmpvaW4oIiIpLGMucmVwbGFjZSgvW1xcXHtcfVwqXCtcP1x8XF5cJFwuXFtcXVwoXCldL2csIlxcJCYiKX1dYCksImciKTtjb25zdCBoPW5ldyBPbihudWxsLHMpLGQ9W107bGV0IHUsbT0hMSxwPTAsZj0wLGc9MDtlOmZvcihsZXQgdD1pLG49cjt0PD1uO3QrKyl7Y29uc3Qgbj1lLmdldExpbmVDb250ZW50KHQpLGk9bi5sZW5ndGg7aC5yZXNldCgwKTtkb3tpZih1PWgubmV4dChuKSx1KXtsZXQgZT11LmluZGV4LHI9dS5pbmRleCt1WzBdLmxlbmd0aDtpZihlPjApe1kobi5jaGFyQ29kZUF0KGUtMSkpJiZlLS19aWYocisxPGkpe1kobi5jaGFyQ29kZUF0KHItMSkpJiZyKyt9Y29uc3Qgbz1uLnN1YnN0cmluZyhlLHIpO2xldCBzPXV0KGUrMSxodCxuLDApO3MmJnMuZW5kQ29sdW1uPD1lKzEmJihzPW51bGwpO2NvbnN0IGw9YS5zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKG8scz9zLndvcmQ6bnVsbCk7aWYoMCE9PWwpezM9PT1sP3ArKzoyPT09bD9mKys6MT09PWw/ZysrOlBuKCk7Y29uc3Qgbj0xZTM7aWYoZC5sZW5ndGg+PW4pe209ITA7YnJlYWsgZX1kLnB1c2gobmV3IGl0KHQsZSsxLHQscisxKSl9fX13aGlsZSh1KX1yZXR1cm57cmFuZ2VzOmQsaGFzTW9yZTptLGFtYmlndW91c0NoYXJhY3RlckNvdW50OnAsaW52aXNpYmxlQ2hhcmFjdGVyQ291bnQ6Zixub25CYXNpY0FzY2lpQ2hhcmFjdGVyQ291bnQ6Z319c3RhdGljIGNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0UmVhc29uKGUsdCl7Y29uc3Qgbj1uZXcgVm4odCk7c3dpdGNoKG4uc2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShlLG51bGwpKXtjYXNlIDA6cmV0dXJuIG51bGw7Y2FzZSAyOnJldHVybntraW5kOjF9O2Nhc2UgMzp7Y29uc3QgaT1lLmNvZGVQb2ludEF0KDApLHI9bi5hbWJpZ3VvdXNDaGFyYWN0ZXJzLmdldFByaW1hcnlDb25mdXNhYmxlKGkpLGE9ZWUuZ2V0TG9jYWxlcygpLmZpbHRlcigoZT0+IWVlLmdldEluc3RhbmNlKG5ldyBTZXQoWy4uLnQuYWxsb3dlZExvY2FsZXMsZV0pKS5pc0FtYmlndW91cyhpKSkpO3JldHVybntraW5kOjAsY29uZnVzYWJsZVdpdGg6U3RyaW5nLmZyb21Db2RlUG9pbnQociksbm90QW1iaWd1b3VzSW5Mb2NhbGVzOmF9fWNhc2UgMTpyZXR1cm57a2luZDoyfX19fWNsYXNzIFZue2NvbnN0cnVjdG9yKGUpe3RoaXMub3B0aW9ucz1lLHRoaXMuYWxsb3dlZENvZGVQb2ludHM9bmV3IFNldChlLmFsbG93ZWRDb2RlUG9pbnRzKSx0aGlzLmFtYmlndW91c0NoYXJhY3RlcnM9ZWUuZ2V0SW5zdGFuY2UobmV3IFNldChlLmFsbG93ZWRMb2NhbGVzKSl9Z2V0Q2FuZGlkYXRlQ29kZVBvaW50cygpe2lmKHRoaXMub3B0aW9ucy5ub25CYXNpY0FTQ0lJKXJldHVybiJhbGxOb25CYXNpY0FzY2lpIjtjb25zdCBlPW5ldyBTZXQ7aWYodGhpcy5vcHRpb25zLmludmlzaWJsZUNoYXJhY3RlcnMpZm9yKGNvbnN0IHQgb2YgdGUuY29kZVBvaW50cylLbihTdHJpbmcuZnJvbUNvZGVQb2ludCh0KSl8fGUuYWRkKHQpO2lmKHRoaXMub3B0aW9ucy5hbWJpZ3VvdXNDaGFyYWN0ZXJzKWZvcihjb25zdCB0IG9mIHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5nZXRDb25mdXNhYmxlQ29kZVBvaW50cygpKWUuYWRkKHQpO2Zvcihjb25zdCB0IG9mIHRoaXMuYWxsb3dlZENvZGVQb2ludHMpZS5kZWxldGUodCk7cmV0dXJuIGV9c2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShlLHQpe2NvbnN0IG49ZS5jb2RlUG9pbnRBdCgwKTtpZih0aGlzLmFsbG93ZWRDb2RlUG9pbnRzLmhhcyhuKSlyZXR1cm4gMDtpZih0aGlzLm9wdGlvbnMubm9uQmFzaWNBU0NJSSlyZXR1cm4gMTtsZXQgaT0hMSxyPSExO2lmKHQpZm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1lLmNvZGVQb2ludEF0KDApLG49KGE9ZSxaLnRlc3QoYSkpO2k9aXx8bixufHx0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuaXNBbWJpZ3VvdXModCl8fHRlLmlzSW52aXNpYmxlQ2hhcmFjdGVyKHQpfHwocj0hMCl9dmFyIGE7cmV0dXJuIWkmJnI/MDp0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycyYmIUtuKGUpJiZ0ZS5pc0ludmlzaWJsZUNoYXJhY3RlcihuKT8yOnRoaXMub3B0aW9ucy5hbWJpZ3VvdXNDaGFyYWN0ZXJzJiZ0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuaXNBbWJpZ3VvdXMobik/MzowfX1mdW5jdGlvbiBLbihlKXtyZXR1cm4iICI9PT1lfHwiXG4iPT09ZXx8Ilx0Ij09PWV9Y2xhc3Mgam57c3RhdGljIGZyb21SYW5nZShlKXtyZXR1cm4gbmV3IGpuKGUuc3RhcnRMaW5lTnVtYmVyLGUuZW5kTGluZU51bWJlcil9c3RhdGljIGpvaW5NYW55KGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm5bXTtsZXQgdD1lWzBdO2ZvcihsZXQgbj0xO248ZS5sZW5ndGg7bisrKXQ9dGhpcy5qb2luKHQsZVtuXSk7cmV0dXJuIHR9c3RhdGljIGpvaW4oZSx0KXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIHQ7aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2NvbnN0IG49W107bGV0IGk9MCxyPTAsYT1udWxsO2Zvcig7aTxlLmxlbmd0aHx8cjx0Lmxlbmd0aDspe2xldCBvPW51bGw7aWYoaTxlLmxlbmd0aCYmcjx0Lmxlbmd0aCl7Y29uc3Qgbj1lW2ldLGE9dFtyXTtuLnN0YXJ0TGluZU51bWJlcjxhLnN0YXJ0TGluZU51bWJlcj8obz1uLGkrKyk6KG89YSxyKyspfWVsc2UgaTxlLmxlbmd0aD8obz1lW2ldLGkrKyk6KG89dFtyXSxyKyspO251bGw9PT1hP2E9bzphLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU+PW8uc3RhcnRMaW5lTnVtYmVyP2E9bmV3IGpuKGEuc3RhcnRMaW5lTnVtYmVyLE1hdGgubWF4KGEuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSxvLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpKToobi5wdXNoKGEpLGE9byl9cmV0dXJuIG51bGwhPT1hJiZuLnB1c2goYSksbn1zdGF0aWMgb2ZMZW5ndGgoZSx0KXtyZXR1cm4gbmV3IGpuKGUsZSt0KX1jb25zdHJ1Y3RvcihlLHQpe2lmKGU+dCl0aHJvdyBuZXcgbyhgc3RhcnRMaW5lTnVtYmVyICR7ZX0gY2Fubm90IGJlIGFmdGVyIGVuZExpbmVOdW1iZXJFeGNsdXNpdmUgJHt0fWApO3RoaXMuc3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPXR9Y29udGFpbnMoZSl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPD1lJiZlPHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1nZXQgaXNFbXB0eSgpe3JldHVybiB0aGlzLnN0YXJ0TGluZU51bWJlcj09PXRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1kZWx0YShlKXtyZXR1cm4gbmV3IGpuKHRoaXMuc3RhcnRMaW5lTnVtYmVyK2UsdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlK2UpfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLXRoaXMuc3RhcnRMaW5lTnVtYmVyfWpvaW4oZSl7cmV0dXJuIG5ldyBqbihNYXRoLm1pbih0aGlzLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0TGluZU51bWJlciksTWF0aC5tYXgodGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLGUuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSkpfXRvU3RyaW5nKCl7cmV0dXJuYFske3RoaXMuc3RhcnRMaW5lTnVtYmVyfSwke3RoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX0pYH1pbnRlcnNlY3QoZSl7Y29uc3QgdD1NYXRoLm1heCh0aGlzLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0TGluZU51bWJlciksbj1NYXRoLm1pbih0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKTtpZih0PD1uKXJldHVybiBuZXcgam4odCxuKX1pbnRlcnNlY3RzU3RyaWN0KGUpe3JldHVybiB0aGlzLnN0YXJ0TGluZU51bWJlcjxlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUmJmUuc3RhcnRMaW5lTnVtYmVyPHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1vdmVybGFwT3JUb3VjaChlKXtyZXR1cm4gdGhpcy5zdGFydExpbmVOdW1iZXI8PWUuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSYmZS5zdGFydExpbmVOdW1iZXI8PXRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1lcXVhbHMoZSl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT09PWUuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX10b0luY2x1c2l2ZVJhbmdlKCl7cmV0dXJuIHRoaXMuaXNFbXB0eT9udWxsOm5ldyBpdCh0aGlzLnN0YXJ0TGluZU51bWJlciwxLHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0xLE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKX10b0V4Y2x1c2l2ZVJhbmdlKCl7cmV0dXJuIG5ldyBpdCh0aGlzLnN0YXJ0TGluZU51bWJlciwxLHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSwxKX19Y2xhc3MgR257Y29uc3RydWN0b3IoZSx0KXt0aGlzLmNoYW5nZXM9ZSx0aGlzLmhpdFRpbWVvdXQ9dH19Y2xhc3MgJG57c3RhdGljIGludmVyc2UoZSx0LG4pe2NvbnN0IGk9W107bGV0IHI9MSxhPTE7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1uZXcgJG4obmV3IGpuKHIsdC5vcmlnaW5hbFJhbmdlLnN0YXJ0TGluZU51bWJlciksbmV3IGpuKGEsdC5tb2RpZmllZFJhbmdlLnN0YXJ0TGluZU51bWJlciksdm9pZCAwKTtlLm1vZGlmaWVkUmFuZ2UuaXNFbXB0eXx8aS5wdXNoKGUpLHI9dC5vcmlnaW5hbFJhbmdlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsYT10Lm1vZGlmaWVkUmFuZ2UuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1jb25zdCBvPW5ldyAkbihuZXcgam4ocix0KzEpLG5ldyBqbihhLG4rMSksdm9pZCAwKTtyZXR1cm4gby5tb2RpZmllZFJhbmdlLmlzRW1wdHl8fGkucHVzaChvKSxpfWNvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLm9yaWdpbmFsUmFuZ2U9ZSx0aGlzLm1vZGlmaWVkUmFuZ2U9dCx0aGlzLmlubmVyQ2hhbmdlcz1ufXRvU3RyaW5nKCl7cmV0dXJuYHske3RoaXMub3JpZ2luYWxSYW5nZS50b1N0cmluZygpfS0+JHt0aGlzLm1vZGlmaWVkUmFuZ2UudG9TdHJpbmcoKX19YH1nZXQgY2hhbmdlZExpbmVDb3VudCgpe3JldHVybiBNYXRoLm1heCh0aGlzLm9yaWdpbmFsUmFuZ2UubGVuZ3RoLHRoaXMubW9kaWZpZWRSYW5nZS5sZW5ndGgpfX1jbGFzcyBKbntjb25zdHJ1Y3RvcihlLHQpe3RoaXMub3JpZ2luYWxSYW5nZT1lLHRoaXMubW9kaWZpZWRSYW5nZT10fXRvU3RyaW5nKCl7cmV0dXJuYHske3RoaXMub3JpZ2luYWxSYW5nZS50b1N0cmluZygpfS0+JHt0aGlzLm1vZGlmaWVkUmFuZ2UudG9TdHJpbmcoKX19YH19ZnVuY3Rpb24gWG4oZSx0LG4saSl7cmV0dXJuIG5ldyB2ZShlLHQsbikuQ29tcHV0ZURpZmYoaSl9bGV0IFluPWNsYXNze2NvbnN0cnVjdG9yKGUpe2NvbnN0IHQ9W10sbj1bXTtmb3IobGV0IGk9MCxyPWUubGVuZ3RoO2k8cjtpKyspdFtpXT1uaShlW2ldLDEpLG5baV09aWkoZVtpXSwxKTt0aGlzLmxpbmVzPWUsdGhpcy5fc3RhcnRDb2x1bW5zPXQsdGhpcy5fZW5kQ29sdW1ucz1ufWdldEVsZW1lbnRzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxuPXRoaXMubGluZXMubGVuZ3RoO3Q8bjt0KyspZVt0XT10aGlzLmxpbmVzW3RdLnN1YnN0cmluZyh0aGlzLl9zdGFydENvbHVtbnNbdF0tMSx0aGlzLl9lbmRDb2x1bW5zW3RdLTEpO3JldHVybiBlfWdldFN0cmljdEVsZW1lbnQoZSl7cmV0dXJuIHRoaXMubGluZXNbZV19Z2V0U3RhcnRMaW5lTnVtYmVyKGUpe3JldHVybiBlKzF9Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4gZSsxfWNyZWF0ZUNoYXJTZXF1ZW5jZShlLHQsbil7Y29uc3QgaT1bXSxyPVtdLGE9W107bGV0IG89MDtmb3IobGV0IHM9dDtzPD1uO3MrKyl7Y29uc3QgdD10aGlzLmxpbmVzW3NdLGw9ZT90aGlzLl9zdGFydENvbHVtbnNbc106MSxjPWU/dGhpcy5fZW5kQ29sdW1uc1tzXTp0Lmxlbmd0aCsxO2ZvcihsZXQgZT1sO2U8YztlKyspaVtvXT10LmNoYXJDb2RlQXQoZS0xKSxyW29dPXMrMSxhW29dPWUsbysrOyFlJiZzPG4mJihpW29dPTEwLHJbb109cysxLGFbb109dC5sZW5ndGgrMSxvKyspfXJldHVybiBuZXcgUW4oaSxyLGEpfX07Y2xhc3MgUW57Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuX2NoYXJDb2Rlcz1lLHRoaXMuX2xpbmVOdW1iZXJzPXQsdGhpcy5fY29sdW1ucz1ufXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuX2NoYXJDb2Rlcy5tYXAoKChlLHQpPT4oMTA9PT1lPyJcXG4iOlN0cmluZy5mcm9tQ2hhckNvZGUoZSkpK2AtKCR7dGhpcy5fbGluZU51bWJlcnNbdF19LCR7dGhpcy5fY29sdW1uc1t0XX0pYCkpLmpvaW4oIiwgIikrIl0ifV9hc3NlcnRJbmRleChlLHQpe2lmKGU8MHx8ZT49dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIGluZGV4Iil9Z2V0RWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fY2hhckNvZGVzfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gZT4wJiZlPT09dGhpcy5fbGluZU51bWJlcnMubGVuZ3RoP3RoaXMuZ2V0RW5kTGluZU51bWJlcihlLTEpOih0aGlzLl9hc3NlcnRJbmRleChlLHRoaXMuX2xpbmVOdW1iZXJzKSx0aGlzLl9saW5lTnVtYmVyc1tlXSl9Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4tMT09PWU/dGhpcy5nZXRTdGFydExpbmVOdW1iZXIoZSsxKToodGhpcy5fYXNzZXJ0SW5kZXgoZSx0aGlzLl9saW5lTnVtYmVycyksMTA9PT10aGlzLl9jaGFyQ29kZXNbZV0/dGhpcy5fbGluZU51bWJlcnNbZV0rMTp0aGlzLl9saW5lTnVtYmVyc1tlXSl9Z2V0U3RhcnRDb2x1bW4oZSl7cmV0dXJuIGU+MCYmZT09PXRoaXMuX2NvbHVtbnMubGVuZ3RoP3RoaXMuZ2V0RW5kQ29sdW1uKGUtMSk6KHRoaXMuX2Fzc2VydEluZGV4KGUsdGhpcy5fY29sdW1ucyksdGhpcy5fY29sdW1uc1tlXSl9Z2V0RW5kQ29sdW1uKGUpe3JldHVybi0xPT09ZT90aGlzLmdldFN0YXJ0Q29sdW1uKGUrMSk6KHRoaXMuX2Fzc2VydEluZGV4KGUsdGhpcy5fY29sdW1ucyksMTA9PT10aGlzLl9jaGFyQ29kZXNbZV0/MTp0aGlzLl9jb2x1bW5zW2VdKzEpfX1jbGFzcyBabntjb25zdHJ1Y3RvcihlLHQsbixpLHIsYSxvLHMpe3RoaXMub3JpZ2luYWxTdGFydExpbmVOdW1iZXI9ZSx0aGlzLm9yaWdpbmFsU3RhcnRDb2x1bW49dCx0aGlzLm9yaWdpbmFsRW5kTGluZU51bWJlcj1uLHRoaXMub3JpZ2luYWxFbmRDb2x1bW49aSx0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPXIsdGhpcy5tb2RpZmllZFN0YXJ0Q29sdW1uPWEsdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9byx0aGlzLm1vZGlmaWVkRW5kQ29sdW1uPXN9c3RhdGljIGNyZWF0ZUZyb21EaWZmQ2hhbmdlKGUsdCxuKXtjb25zdCBpPXQuZ2V0U3RhcnRMaW5lTnVtYmVyKGUub3JpZ2luYWxTdGFydCkscj10LmdldFN0YXJ0Q29sdW1uKGUub3JpZ2luYWxTdGFydCksYT10LmdldEVuZExpbmVOdW1iZXIoZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGgtMSksbz10LmdldEVuZENvbHVtbihlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aC0xKSxzPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKGUubW9kaWZpZWRTdGFydCksbD1uLmdldFN0YXJ0Q29sdW1uKGUubW9kaWZpZWRTdGFydCksYz1uLmdldEVuZExpbmVOdW1iZXIoZS5tb2RpZmllZFN0YXJ0K2UubW9kaWZpZWRMZW5ndGgtMSksaD1uLmdldEVuZENvbHVtbihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKTtyZXR1cm4gbmV3IFpuKGkscixhLG8scyxsLGMsaCl9fWNsYXNzIGVpe2NvbnN0cnVjdG9yKGUsdCxuLGkscil7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsdGhpcy5tb2RpZmllZFN0YXJ0TGluZU51bWJlcj1uLHRoaXMubW9kaWZpZWRFbmRMaW5lTnVtYmVyPWksdGhpcy5jaGFyQ2hhbmdlcz1yfXN0YXRpYyBjcmVhdGVGcm9tRGlmZlJlc3VsdChlLHQsbixpLHIsYSxvKXtsZXQgcyxsLGMsaCxkO2lmKDA9PT10Lm9yaWdpbmFsTGVuZ3RoPyhzPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCktMSxsPTApOihzPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCksbD1uLmdldEVuZExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSkpLDA9PT10Lm1vZGlmaWVkTGVuZ3RoPyhjPWkuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCktMSxoPTApOihjPWkuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCksaD1pLmdldEVuZExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSkpLGEmJnQub3JpZ2luYWxMZW5ndGg+MCYmdC5vcmlnaW5hbExlbmd0aDwyMCYmdC5tb2RpZmllZExlbmd0aD4wJiZ0Lm1vZGlmaWVkTGVuZ3RoPDIwJiZyKCkpe2NvbnN0IGE9bi5jcmVhdGVDaGFyU2VxdWVuY2UoZSx0Lm9yaWdpbmFsU3RhcnQsdC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSkscz1pLmNyZWF0ZUNoYXJTZXF1ZW5jZShlLHQubW9kaWZpZWRTdGFydCx0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC0xKTtpZihhLmdldEVsZW1lbnRzKCkubGVuZ3RoPjAmJnMuZ2V0RWxlbWVudHMoKS5sZW5ndGg+MCl7bGV0IGU9WG4oYSxzLHIsITApLmNoYW5nZXM7byYmKGU9ZnVuY3Rpb24oZSl7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGU7Y29uc3QgdD1bZVswXV07bGV0IG49dFswXTtmb3IobGV0IGk9MSxyPWUubGVuZ3RoO2k8cjtpKyspe2NvbnN0IHI9ZVtpXSxhPXIub3JpZ2luYWxTdGFydC0obi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgpLG89ci5tb2RpZmllZFN0YXJ0LShuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aCk7TWF0aC5taW4oYSxvKTwzPyhuLm9yaWdpbmFsTGVuZ3RoPXIub3JpZ2luYWxTdGFydCtyLm9yaWdpbmFsTGVuZ3RoLW4ub3JpZ2luYWxTdGFydCxuLm1vZGlmaWVkTGVuZ3RoPXIubW9kaWZpZWRTdGFydCtyLm1vZGlmaWVkTGVuZ3RoLW4ubW9kaWZpZWRTdGFydCk6KHQucHVzaChyKSxuPXIpfXJldHVybiB0fShlKSksZD1bXTtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspZC5wdXNoKFpuLmNyZWF0ZUZyb21EaWZmQ2hhbmdlKGVbdF0sYSxzKSl9fXJldHVybiBuZXcgZWkocyxsLGMsaCxkKX19Y2xhc3MgdGl7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPW4uc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1uLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1uLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9bi5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9ZSx0aGlzLm1vZGlmaWVkTGluZXM9dCx0aGlzLm9yaWdpbmFsPW5ldyBZbihlKSx0aGlzLm1vZGlmaWVkPW5ldyBZbih0KSx0aGlzLmNvbnRpbnVlTGluZURpZmY9cmkobi5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1yaSgwPT09bi5tYXhDb21wdXRhdGlvblRpbWU/MDpNYXRoLm1pbihuLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKDE9PT10aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMub3JpZ2luYWwubGluZXNbMF0ubGVuZ3RoKXJldHVybiAxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6dm9pZCAwfV19O2lmKDE9PT10aGlzLm1vZGlmaWVkLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMubW9kaWZpZWQubGluZXNbMF0ubGVuZ3RoKXJldHVybntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOnRoaXMub3JpZ2luYWwubGluZXMubGVuZ3RoLG1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyOjEsbW9kaWZpZWRFbmRMaW5lTnVtYmVyOjEsY2hhckNoYW5nZXM6dm9pZCAwfV19O2NvbnN0IGU9WG4odGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVMaW5lRGlmZix0aGlzLnNob3VsZE1ha2VQcmV0dHlEaWZmKSx0PWUuY2hhbmdlcyxuPWUucXVpdEVhcmx5O2lmKHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Upe2NvbnN0IGU9W107Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKWUucHVzaChlaS5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRbbl0sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKTtyZXR1cm57cXVpdEVhcmx5Om4sY2hhbmdlczplfX1jb25zdCBpPVtdO2xldCByPTAsYT0wO2ZvcihsZXQgZT0tMSxuPXQubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG89ZSsxPG4/dFtlKzFdOm51bGwscz1vP28ub3JpZ2luYWxTdGFydDp0aGlzLm9yaWdpbmFsTGluZXMubGVuZ3RoLGw9bz9vLm1vZGlmaWVkU3RhcnQ6dGhpcy5tb2RpZmllZExpbmVzLmxlbmd0aDtmb3IoO3I8cyYmYTxsOyl7Y29uc3QgZT10aGlzLm9yaWdpbmFsTGluZXNbcl0sdD10aGlzLm1vZGlmaWVkTGluZXNbYV07aWYoZSE9PXQpe3tsZXQgbj1uaShlLDEpLG89bmkodCwxKTtmb3IoO24+MSYmbz4xOyl7aWYoZS5jaGFyQ29kZUF0KG4tMikhPT10LmNoYXJDb2RlQXQoby0yKSlicmVhaztuLS0sby0tfShuPjF8fG8+MSkmJnRoaXMuX3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoaSxyKzEsMSxuLGErMSwxLG8pfXtsZXQgbj1paShlLDEpLG89aWkodCwxKTtjb25zdCBzPWUubGVuZ3RoKzEsbD10Lmxlbmd0aCsxO2Zvcig7bjxzJiZvPGw7KXtpZihlLmNoYXJDb2RlQXQobi0xKSE9PWUuY2hhckNvZGVBdChvLTEpKWJyZWFrO24rKyxvKyt9KG48c3x8bzxsKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShpLHIrMSxuLHMsYSsxLG8sbCl9fXIrKyxhKyt9byYmKGkucHVzaChlaS5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLG8sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKSxyKz1vLm9yaWdpbmFsTGVuZ3RoLGErPW8ubW9kaWZpZWRMZW5ndGgpfXJldHVybntxdWl0RWFybHk6bixjaGFuZ2VzOml9fV9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKGUsdCxuLGkscixhLG8pe2lmKHRoaXMuX21lcmdlVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKGUsdCxuLGkscixhLG8pKXJldHVybjtsZXQgczt0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmKHM9W25ldyBabih0LG4sdCxpLHIsYSxyLG8pXSksZS5wdXNoKG5ldyBlaSh0LHQscixyLHMpKX1fbWVyZ2VUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4saSxyLGEsbyl7Y29uc3Qgcz1lLmxlbmd0aDtpZigwPT09cylyZXR1cm4hMTtjb25zdCBsPWVbcy0xXTtyZXR1cm4gMCE9PWwub3JpZ2luYWxFbmRMaW5lTnVtYmVyJiYwIT09bC5tb2RpZmllZEVuZExpbmVOdW1iZXImJihsLm9yaWdpbmFsRW5kTGluZU51bWJlcj09PXQmJmwubW9kaWZpZWRFbmRMaW5lTnVtYmVyPT09cj8odGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMmJmwuY2hhckNoYW5nZXMmJmwuY2hhckNoYW5nZXMucHVzaChuZXcgWm4odCxuLHQsaSxyLGEscixvKSksITApOmwub3JpZ2luYWxFbmRMaW5lTnVtYmVyKzE9PT10JiZsLm1vZGlmaWVkRW5kTGluZU51bWJlcisxPT09ciYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsbC5tb2RpZmllZEVuZExpbmVOdW1iZXI9cix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcy5wdXNoKG5ldyBabih0LG4sdCxpLHIsYSxyLG8pKSwhMCkpfX1mdW5jdGlvbiBuaShlLHQpe2NvbnN0IG49ZnVuY3Rpb24oZSl7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWUuY2hhckNvZGVBdCh0KTtpZigzMiE9PW4mJjkhPT1uKXJldHVybiB0fXJldHVybi0xfShlKTtyZXR1cm4tMT09PW4/dDpuKzF9ZnVuY3Rpb24gaWkoZSx0KXtjb25zdCBuPWZ1bmN0aW9uKGUsdD1lLmxlbmd0aC0xKXtmb3IobGV0IG49dDtuPj0wO24tLSl7Y29uc3QgdD1lLmNoYXJDb2RlQXQobik7aWYoMzIhPT10JiY5IT09dClyZXR1cm4gbn1yZXR1cm4tMX0oZSk7cmV0dXJuLTE9PT1uP3Q6bisyfWZ1bmN0aW9uIHJpKGUpe2lmKDA9PT1lKXJldHVybigpPT4hMDtjb25zdCB0PURhdGUubm93KCk7cmV0dXJuKCk9PkRhdGUubm93KCktdDxlfWNsYXNzIGFpe3N0YXRpYyBhZGRSYW5nZShlLHQpe2xldCBuPTA7Zm9yKDtuPHQubGVuZ3RoJiZ0W25dLmVuZEV4Y2x1c2l2ZTxlLnN0YXJ0OyluKys7bGV0IGk9bjtmb3IoO2k8dC5sZW5ndGgmJnRbaV0uc3RhcnQ8PWUuZW5kRXhjbHVzaXZlOylpKys7aWYobj09PWkpdC5zcGxpY2UobiwwLGUpO2Vsc2V7Y29uc3Qgcj1NYXRoLm1pbihlLnN0YXJ0LHRbbl0uc3RhcnQpLGE9TWF0aC5tYXgoZS5lbmRFeGNsdXNpdmUsdFtpLTFdLmVuZEV4Y2x1c2l2ZSk7dC5zcGxpY2UobixpLW4sbmV3IGFpKHIsYSkpfX1zdGF0aWMgdHJ5Q3JlYXRlKGUsdCl7aWYoIShlPnQpKXJldHVybiBuZXcgYWkoZSx0KX1jb25zdHJ1Y3RvcihlLHQpe2lmKHRoaXMuc3RhcnQ9ZSx0aGlzLmVuZEV4Y2x1c2l2ZT10LGU+dCl0aHJvdyBuZXcgbyhgSW52YWxpZCByYW5nZTogJHt0aGlzLnRvU3RyaW5nKCl9YCl9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gdGhpcy5zdGFydD09PXRoaXMuZW5kRXhjbHVzaXZlfWRlbHRhKGUpe3JldHVybiBuZXcgYWkodGhpcy5zdGFydCtlLHRoaXMuZW5kRXhjbHVzaXZlK2UpfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5lbmRFeGNsdXNpdmUtdGhpcy5zdGFydH10b1N0cmluZygpe3JldHVybmBbJHt0aGlzLnN0YXJ0fSwgJHt0aGlzLmVuZEV4Y2x1c2l2ZX0pYH1lcXVhbHMoZSl7cmV0dXJuIHRoaXMuc3RhcnQ9PT1lLnN0YXJ0JiZ0aGlzLmVuZEV4Y2x1c2l2ZT09PWUuZW5kRXhjbHVzaXZlfWNvbnRhaW5zUmFuZ2UoZSl7cmV0dXJuIHRoaXMuc3RhcnQ8PWUuc3RhcnQmJmUuZW5kRXhjbHVzaXZlPD10aGlzLmVuZEV4Y2x1c2l2ZX1qb2luKGUpe3JldHVybiBuZXcgYWkoTWF0aC5taW4odGhpcy5zdGFydCxlLnN0YXJ0KSxNYXRoLm1heCh0aGlzLmVuZEV4Y2x1c2l2ZSxlLmVuZEV4Y2x1c2l2ZSkpfWludGVyc2VjdChlKXtjb25zdCB0PU1hdGgubWF4KHRoaXMuc3RhcnQsZS5zdGFydCksbj1NYXRoLm1pbih0aGlzLmVuZEV4Y2x1c2l2ZSxlLmVuZEV4Y2x1c2l2ZSk7aWYodDw9bilyZXR1cm4gbmV3IGFpKHQsbil9fWNsYXNzIG9pe3N0YXRpYyB0cml2aWFsKGUsdCl7cmV0dXJuIG5ldyBvaShbbmV3IHNpKG5ldyBhaSgwLGUubGVuZ3RoKSxuZXcgYWkoMCx0Lmxlbmd0aCkpXSwhMSl9c3RhdGljIHRyaXZpYWxUaW1lZE91dChlLHQpe3JldHVybiBuZXcgb2koW25ldyBzaShuZXcgYWkoMCxlLmxlbmd0aCksbmV3IGFpKDAsdC5sZW5ndGgpKV0sITApfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy5kaWZmcz1lLHRoaXMuaGl0VGltZW91dD10fX1jbGFzcyBzaXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc2VxMVJhbmdlPWUsdGhpcy5zZXEyUmFuZ2U9dH1yZXZlcnNlKCl7cmV0dXJuIG5ldyBzaSh0aGlzLnNlcTJSYW5nZSx0aGlzLnNlcTFSYW5nZSl9dG9TdHJpbmcoKXtyZXR1cm5gJHt0aGlzLnNlcTFSYW5nZX0gPC0+ICR7dGhpcy5zZXEyUmFuZ2V9YH1qb2luKGUpe3JldHVybiBuZXcgc2kodGhpcy5zZXExUmFuZ2Uuam9pbihlLnNlcTFSYW5nZSksdGhpcy5zZXEyUmFuZ2Uuam9pbihlLnNlcTJSYW5nZSkpfX1jbGFzcyBsaXtpc1ZhbGlkKCl7cmV0dXJuITB9fWxpLmluc3RhbmNlPW5ldyBsaTtjbGFzcyBjaXtjb25zdHJ1Y3RvcihlKXtpZih0aGlzLnRpbWVvdXQ9ZSx0aGlzLnN0YXJ0VGltZT1EYXRlLm5vdygpLHRoaXMudmFsaWQ9ITAsZTw9MCl0aHJvdyBuZXcgbygidGltZW91dCBtdXN0IGJlIHBvc2l0aXZlIil9aXNWYWxpZCgpe3JldHVybiEoRGF0ZS5ub3coKS10aGlzLnN0YXJ0VGltZTx0aGlzLnRpbWVvdXQpJiZ0aGlzLnZhbGlkJiYodGhpcy52YWxpZD0hMSksdGhpcy52YWxpZH19Y2xhc3MgaGl7Y29uc3RydWN0b3IoZSx0KXt0aGlzLndpZHRoPWUsdGhpcy5oZWlnaHQ9dCx0aGlzLmFycmF5PVtdLHRoaXMuYXJyYXk9bmV3IEFycmF5KGUqdCl9Z2V0KGUsdCl7cmV0dXJuIHRoaXMuYXJyYXlbZSt0KnRoaXMud2lkdGhdfXNldChlLHQsbil7dGhpcy5hcnJheVtlK3QqdGhpcy53aWR0aF09bn19Y2xhc3MgZGl7Y29tcHV0ZShlLHQsbj1saS5pbnN0YW5jZSxpKXtpZigwPT09ZS5sZW5ndGh8fDA9PT10Lmxlbmd0aClyZXR1cm4gb2kudHJpdmlhbChlLHQpO2NvbnN0IHI9bmV3IGhpKGUubGVuZ3RoLHQubGVuZ3RoKSxhPW5ldyBoaShlLmxlbmd0aCx0Lmxlbmd0aCksbz1uZXcgaGkoZS5sZW5ndGgsdC5sZW5ndGgpO2ZvcihsZXQgcz0wO3M8ZS5sZW5ndGg7cysrKWZvcihsZXQgbD0wO2w8dC5sZW5ndGg7bCsrKXtpZighbi5pc1ZhbGlkKCkpcmV0dXJuIG9pLnRyaXZpYWxUaW1lZE91dChlLHQpO2NvbnN0IGM9MD09PXM/MDpyLmdldChzLTEsbCksaD0wPT09bD8wOnIuZ2V0KHMsbC0xKTtsZXQgZDtlLmdldEVsZW1lbnQocyk9PT10LmdldEVsZW1lbnQobCk/KGQ9MD09PXN8fDA9PT1sPzA6ci5nZXQocy0xLGwtMSkscz4wJiZsPjAmJjM9PT1hLmdldChzLTEsbC0xKSYmKGQrPW8uZ2V0KHMtMSxsLTEpKSxkKz1pP2kocyxsKToxKTpkPS0xO2NvbnN0IHU9TWF0aC5tYXgoYyxoLGQpO2lmKHU9PT1kKXtjb25zdCBlPXM+MCYmbD4wP28uZ2V0KHMtMSxsLTEpOjA7by5zZXQocyxsLGUrMSksYS5zZXQocyxsLDMpfWVsc2UgdT09PWM/KG8uc2V0KHMsbCwwKSxhLnNldChzLGwsMSkpOnU9PT1oJiYoby5zZXQocyxsLDApLGEuc2V0KHMsbCwyKSk7ci5zZXQocyxsLHUpfWNvbnN0IHM9W107bGV0IGw9ZS5sZW5ndGgsYz10Lmxlbmd0aDtmdW5jdGlvbiBoKGUsdCl7ZSsxPT09bCYmdCsxPT09Y3x8cy5wdXNoKG5ldyBzaShuZXcgYWkoZSsxLGwpLG5ldyBhaSh0KzEsYykpKSxsPWUsYz10fWxldCBkPWUubGVuZ3RoLTEsdT10Lmxlbmd0aC0xO2Zvcig7ZD49MCYmdT49MDspMz09PWEuZ2V0KGQsdSk/KGgoZCx1KSxkLS0sdS0tKToxPT09YS5nZXQoZCx1KT9kLS06dS0tO3JldHVybiBoKC0xLC0xKSxzLnJldmVyc2UoKSxuZXcgb2kocywhMSl9fWZ1bmN0aW9uIHVpKGUsdCxuKXtsZXQgaT1uO3JldHVybiBpPWZ1bmN0aW9uKGUsdCxuKXtjb25zdCBpPVtdO24ubGVuZ3RoPjAmJmkucHVzaChuWzBdKTtmb3IobGV0IGU9MTtlPG4ubGVuZ3RoO2UrKyl7Y29uc3Qgcj1pW2kubGVuZ3RoLTFdLGE9bltlXTtpZihhLnNlcTFSYW5nZS5pc0VtcHR5KXtsZXQgZT0hMDtjb25zdCBuPWEuc2VxMVJhbmdlLnN0YXJ0LXIuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZTtmb3IobGV0IGk9MTtpPD1uO2krKylpZih0LmdldEVsZW1lbnQoYS5zZXEyUmFuZ2Uuc3RhcnQtaSkhPT10LmdldEVsZW1lbnQoYS5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlLWkpKXtlPSExO2JyZWFrfWlmKGUpe2lbaS5sZW5ndGgtMV09bmV3IHNpKHIuc2VxMVJhbmdlLG5ldyBhaShyLnNlcTJSYW5nZS5zdGFydCxhLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUtbikpO2NvbnRpbnVlfX1pLnB1c2goYSl9cmV0dXJuIGl9KDAsdCxpKSxpPWZ1bmN0aW9uKGUsdCxuKXtpZighZS5nZXRCb3VuZGFyeVNjb3JlfHwhdC5nZXRCb3VuZGFyeVNjb3JlKXJldHVybiBuO2ZvcihsZXQgaT0wO2k8bi5sZW5ndGg7aSsrKXtjb25zdCByPW5baV07aWYoci5zZXExUmFuZ2UuaXNFbXB0eSl7Y29uc3QgYT1pPjA/bltpLTFdLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmU6LTEsbz1pKzE8bi5sZW5ndGg/bltpKzFdLnNlcTJSYW5nZS5zdGFydDp0Lmxlbmd0aDtuW2ldPW1pKHIsZSx0LG8sYSl9ZWxzZSBpZihyLnNlcTJSYW5nZS5pc0VtcHR5KXtjb25zdCBhPWk+MD9uW2ktMV0uc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZTotMSxvPWkrMTxuLmxlbmd0aD9uW2krMV0uc2VxMVJhbmdlLnN0YXJ0OmUubGVuZ3RoO25baV09bWkoci5yZXZlcnNlKCksdCxlLG8sYSkucmV2ZXJzZSgpfX1yZXR1cm4gbn0oZSx0LGkpLGl9ZnVuY3Rpb24gbWkoZSx0LG4saSxyKXtsZXQgYT0xO2Zvcig7ZS5zZXEyUmFuZ2Uuc3RhcnQtYT5yJiZuLmdldEVsZW1lbnQoZS5zZXEyUmFuZ2Uuc3RhcnQtYSk9PT1uLmdldEVsZW1lbnQoZS5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlLWEpJiZhPDIwOylhKys7YS0tO2xldCBvPTA7Zm9yKDtlLnNlcTJSYW5nZS5zdGFydCtvPGkmJm4uZ2V0RWxlbWVudChlLnNlcTJSYW5nZS5zdGFydCtvKT09PW4uZ2V0RWxlbWVudChlLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUrbykmJm88MjA7KW8rKztpZigwPT09YSYmMD09PW8pcmV0dXJuIGU7bGV0IHM9MCxsPS0xO2ZvcihsZXQgaT0tYTtpPD1vO2krKyl7Y29uc3Qgcj1lLnNlcTJSYW5nZS5zdGFydCtpLGE9ZS5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlK2ksbz1lLnNlcTFSYW5nZS5zdGFydCtpLGM9dC5nZXRCb3VuZGFyeVNjb3JlKG8pK24uZ2V0Qm91bmRhcnlTY29yZShyKStuLmdldEJvdW5kYXJ5U2NvcmUoYSk7Yz5sJiYobD1jLHM9aSl9cmV0dXJuIDAhPT1zP25ldyBzaShlLnNlcTFSYW5nZS5kZWx0YShzKSxlLnNlcTJSYW5nZS5kZWx0YShzKSk6ZX1jbGFzcyBwaXtjb21wdXRlKGUsdCxuPWxpLmluc3RhbmNlKXtpZigwPT09ZS5sZW5ndGh8fDA9PT10Lmxlbmd0aClyZXR1cm4gb2kudHJpdmlhbChlLHQpO2Z1bmN0aW9uIGkobixpKXtmb3IoO248ZS5sZW5ndGgmJmk8dC5sZW5ndGgmJmUuZ2V0RWxlbWVudChuKT09PXQuZ2V0RWxlbWVudChpKTspbisrLGkrKztyZXR1cm4gbn1sZXQgcj0wO2NvbnN0IGE9bmV3IGdpO2Euc2V0KDAsaSgwLDApKTtjb25zdCBvPW5ldyBiaTtvLnNldCgwLDA9PT1hLmdldCgwKT9udWxsOm5ldyBmaShudWxsLDAsMCxhLmdldCgwKSkpO2xldCBzPTA7ZTpmb3IoOzspZm9yKHIrKyxzPS1yO3M8PXI7cys9Mil7aWYoIW4uaXNWYWxpZCgpKXJldHVybiBvaS50cml2aWFsVGltZWRPdXQoZSx0KTtjb25zdCBsPXM9PT1yPy0xOmEuZ2V0KHMrMSksYz1zPT09LXI/LTE6YS5nZXQocy0xKSsxLGg9TWF0aC5taW4oTWF0aC5tYXgobCxjKSxlLmxlbmd0aCksZD1oLXMsdT1pKGgsZCk7YS5zZXQocyx1KTtjb25zdCBtPWg9PT1sP28uZ2V0KHMrMSk6by5nZXQocy0xKTtpZihvLnNldChzLHUhPT1oP25ldyBmaShtLGgsZCx1LWgpOm0pLGEuZ2V0KHMpPT09ZS5sZW5ndGgmJmEuZ2V0KHMpLXM9PT10Lmxlbmd0aClicmVhayBlfWxldCBsPW8uZ2V0KHMpO2NvbnN0IGM9W107bGV0IGg9ZS5sZW5ndGgsZD10Lmxlbmd0aDtmb3IoOzspe2NvbnN0IGU9bD9sLngrbC5sZW5ndGg6MCx0PWw/bC55K2wubGVuZ3RoOjA7aWYoZT09PWgmJnQ9PT1kfHxjLnB1c2gobmV3IHNpKG5ldyBhaShlLGgpLG5ldyBhaSh0LGQpKSksIWwpYnJlYWs7aD1sLngsZD1sLnksbD1sLnByZXZ9cmV0dXJuIGMucmV2ZXJzZSgpLG5ldyBvaShjLCExKX19Y2xhc3MgZml7Y29uc3RydWN0b3IoZSx0LG4saSl7dGhpcy5wcmV2PWUsdGhpcy54PXQsdGhpcy55PW4sdGhpcy5sZW5ndGg9aX19Y2xhc3MgZ2l7Y29uc3RydWN0b3IoKXt0aGlzLnBvc2l0aXZlQXJyPW5ldyBJbnQzMkFycmF5KDEwKSx0aGlzLm5lZ2F0aXZlQXJyPW5ldyBJbnQzMkFycmF5KDEwKX1nZXQoZSl7cmV0dXJuIGU8MD8oZT0tZS0xLHRoaXMubmVnYXRpdmVBcnJbZV0pOnRoaXMucG9zaXRpdmVBcnJbZV19c2V0KGUsdCl7aWYoZTwwKXtpZigoZT0tZS0xKT49dGhpcy5uZWdhdGl2ZUFyci5sZW5ndGgpe2NvbnN0IGU9dGhpcy5uZWdhdGl2ZUFycjt0aGlzLm5lZ2F0aXZlQXJyPW5ldyBJbnQzMkFycmF5KDIqZS5sZW5ndGgpLHRoaXMubmVnYXRpdmVBcnIuc2V0KGUpfXRoaXMubmVnYXRpdmVBcnJbZV09dH1lbHNle2lmKGU+PXRoaXMucG9zaXRpdmVBcnIubGVuZ3RoKXtjb25zdCBlPXRoaXMucG9zaXRpdmVBcnI7dGhpcy5wb3NpdGl2ZUFycj1uZXcgSW50MzJBcnJheSgyKmUubGVuZ3RoKSx0aGlzLnBvc2l0aXZlQXJyLnNldChlKX10aGlzLnBvc2l0aXZlQXJyW2VdPXR9fX1jbGFzcyBiaXtjb25zdHJ1Y3Rvcigpe3RoaXMucG9zaXRpdmVBcnI9W10sdGhpcy5uZWdhdGl2ZUFycj1bXX1nZXQoZSl7cmV0dXJuIGU8MD8oZT0tZS0xLHRoaXMubmVnYXRpdmVBcnJbZV0pOnRoaXMucG9zaXRpdmVBcnJbZV19c2V0KGUsdCl7ZTwwPyhlPS1lLTEsdGhpcy5uZWdhdGl2ZUFycltlXT10KTp0aGlzLnBvc2l0aXZlQXJyW2VdPXR9fWNsYXNzIF9pe2NvbnN0cnVjdG9yKGUsdCl7dGhpcy50cmltbWVkSGFzaD1lLHRoaXMubGluZXM9dH1nZXRFbGVtZW50KGUpe3JldHVybiB0aGlzLnRyaW1tZWRIYXNoW2VdfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy50cmltbWVkSGFzaC5sZW5ndGh9Z2V0Qm91bmRhcnlTY29yZShlKXtyZXR1cm4gMWUzLSgoMD09PWU/MDp2aSh0aGlzLmxpbmVzW2UtMV0pKSsoZT09PXRoaXMubGluZXMubGVuZ3RoPzA6dmkodGhpcy5saW5lc1tlXSkpKX19ZnVuY3Rpb24gdmkoZSl7bGV0IHQ9MDtmb3IoO3Q8ZS5sZW5ndGgmJigzMj09PWUuY2hhckNvZGVBdCh0KXx8OT09PWUuY2hhckNvZGVBdCh0KSk7KXQrKztyZXR1cm4gdH1jbGFzcyB3aXtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5saW5lcz1lLHRoaXMuY29uc2lkZXJXaGl0ZXNwYWNlQ2hhbmdlcz1uLHRoaXMuZWxlbWVudHM9W10sdGhpcy5maXJzdENoYXJPZmZzZXRCeUxpbmVNaW51c09uZT1bXSx0aGlzLm9mZnNldEJ5TGluZT1bXTtsZXQgaT0hMTt0LnN0YXJ0PjAmJnQuZW5kRXhjbHVzaXZlPj1lLmxlbmd0aCYmKHQ9bmV3IGFpKHQuc3RhcnQtMSx0LmVuZEV4Y2x1c2l2ZSksaT0hMCksdGhpcy5saW5lUmFuZ2U9dDtmb3IobGV0IHQ9dGhpcy5saW5lUmFuZ2Uuc3RhcnQ7dDx0aGlzLmxpbmVSYW5nZS5lbmRFeGNsdXNpdmU7dCsrKXtsZXQgcj1lW3RdLGE9MDtpZihpKWE9ci5sZW5ndGgscj0iIixpPSExO2Vsc2UgaWYoIW4pe2NvbnN0IGU9ci50cmltU3RhcnQoKTthPXIubGVuZ3RoLWUubGVuZ3RoLHI9ZS50cmltRW5kKCl9dGhpcy5vZmZzZXRCeUxpbmUucHVzaChhKTtmb3IobGV0IGU9MDtlPHIubGVuZ3RoO2UrKyl0aGlzLmVsZW1lbnRzLnB1c2goci5jaGFyQ29kZUF0KGUpKTt0PGUubGVuZ3RoLTEmJih0aGlzLmVsZW1lbnRzLnB1c2goIlxuIi5jaGFyQ29kZUF0KDApKSx0aGlzLmZpcnN0Q2hhck9mZnNldEJ5TGluZU1pbnVzT25lW3QtdGhpcy5saW5lUmFuZ2Uuc3RhcnRdPXRoaXMuZWxlbWVudHMubGVuZ3RoKX10aGlzLm9mZnNldEJ5TGluZS5wdXNoKDApfXRvU3RyaW5nKCl7cmV0dXJuYFNsaWNlOiAiJHt0aGlzLnRleHR9ImB9Z2V0IHRleHQoKXtyZXR1cm5bLi4udGhpcy5lbGVtZW50c10ubWFwKChlPT5TdHJpbmcuZnJvbUNoYXJDb2RlKGUpKSkuam9pbigiIil9Z2V0RWxlbWVudChlKXtyZXR1cm4gdGhpcy5lbGVtZW50c1tlXX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZWxlbWVudHMubGVuZ3RofWdldEJvdW5kYXJ5U2NvcmUoZSl7Y29uc3QgdD1TaShlPjA/dGhpcy5lbGVtZW50c1tlLTFdOi0xKSxuPVNpKGU8dGhpcy5lbGVtZW50cy5sZW5ndGg/dGhpcy5lbGVtZW50c1tlXTotMSk7aWYoNj09PXQmJjc9PT1uKXJldHVybiAwO2xldCBpPTA7cmV0dXJuIHQhPT1uJiYoaSs9MTAsMT09PW4mJihpKz0xKSksaSs9a2kodCksaSs9a2kobiksaX10cmFuc2xhdGVPZmZzZXQoZSl7aWYodGhpcy5saW5lUmFuZ2UuaXNFbXB0eSlyZXR1cm4gbmV3IG50KHRoaXMubGluZVJhbmdlLnN0YXJ0KzEsMSk7bGV0IHQ9MCxuPXRoaXMuZmlyc3RDaGFyT2Zmc2V0QnlMaW5lTWludXNPbmUubGVuZ3RoO2Zvcig7dDxuOyl7Y29uc3QgaT1NYXRoLmZsb29yKCh0K24pLzIpO3RoaXMuZmlyc3RDaGFyT2Zmc2V0QnlMaW5lTWludXNPbmVbaV0+ZT9uPWk6dD1pKzF9Y29uc3QgaT0wPT09dD8wOnRoaXMuZmlyc3RDaGFyT2Zmc2V0QnlMaW5lTWludXNPbmVbdC0xXTtyZXR1cm4gbmV3IG50KHRoaXMubGluZVJhbmdlLnN0YXJ0K3QrMSxlLWkrMSt0aGlzLm9mZnNldEJ5TGluZVt0XSl9dHJhbnNsYXRlUmFuZ2UoZSl7cmV0dXJuIGl0LmZyb21Qb3NpdGlvbnModGhpcy50cmFuc2xhdGVPZmZzZXQoZS5zdGFydCksdGhpcy50cmFuc2xhdGVPZmZzZXQoZS5lbmRFeGNsdXNpdmUpKX1maW5kV29yZENvbnRhaW5pbmcoZSl7aWYoZTwwfHxlPj10aGlzLmVsZW1lbnRzLmxlbmd0aClyZXR1cm47aWYoIXlpKHRoaXMuZWxlbWVudHNbZV0pKXJldHVybjtsZXQgdD1lO2Zvcig7dD4wJiZ5aSh0aGlzLmVsZW1lbnRzW3QtMV0pOyl0LS07bGV0IG49ZTtmb3IoO248dGhpcy5lbGVtZW50cy5sZW5ndGgmJnlpKHRoaXMuZWxlbWVudHNbbl0pOyluKys7cmV0dXJuIG5ldyBhaSh0LG4pfX1mdW5jdGlvbiB5aShlKXtyZXR1cm4gZT49OTcmJmU8PTEyMnx8ZT49NjUmJmU8PTkwfHxlPj00OCYmZTw9NTd9Y29uc3QgVGk9ezA6MCwxOjAsMjowLDM6MTAsNDoyLDU6Myw2OjEwLDc6MTB9O2Z1bmN0aW9uIGtpKGUpe3JldHVybiBUaVtlXX1mdW5jdGlvbiBTaShlKXtyZXR1cm4gMTA9PT1lPzc6MTM9PT1lPzY6ZnVuY3Rpb24oZSl7cmV0dXJuIDMyPT09ZXx8OT09PWV9KGUpPzU6ZT49OTcmJmU8PTEyMj8wOmU+PTY1JiZlPD05MD8xOmU+PTQ4JiZlPD01Nz8yOi0xPT09ZT8zOjR9Y29uc3QgeGk9e2xlZ2FjeTpuZXcgY2xhc3N7Y29tcHV0ZURpZmYoZSx0LG4pe3ZhciBpO2NvbnN0IHI9bmV3IHRpKGUsdCx7bWF4Q29tcHV0YXRpb25UaW1lOm4ubWF4Q29tcHV0YXRpb25UaW1lTXMsc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2U6bi5pZ25vcmVUcmltV2hpdGVzcGFjZSxzaG91bGRDb21wdXRlQ2hhckNoYW5nZXM6ITAsc2hvdWxkTWFrZVByZXR0eURpZmY6ITAsc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlczohMH0pLmNvbXB1dGVEaWZmKCksYT1bXTtsZXQgbz1udWxsO2Zvcihjb25zdCBlIG9mIHIuY2hhbmdlcyl7bGV0IHQsbjt0PTA9PT1lLm9yaWdpbmFsRW5kTGluZU51bWJlcj9uZXcgam4oZS5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcisxLGUub3JpZ2luYWxTdGFydExpbmVOdW1iZXIrMSk6bmV3IGpuKGUub3JpZ2luYWxTdGFydExpbmVOdW1iZXIsZS5vcmlnaW5hbEVuZExpbmVOdW1iZXIrMSksbj0wPT09ZS5tb2RpZmllZEVuZExpbmVOdW1iZXI/bmV3IGpuKGUubW9kaWZpZWRTdGFydExpbmVOdW1iZXIrMSxlLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyKzEpOm5ldyBqbihlLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyLGUubW9kaWZpZWRFbmRMaW5lTnVtYmVyKzEpO2xldCByPW5ldyAkbih0LG4sbnVsbD09PShpPWUuY2hhckNoYW5nZXMpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLm1hcCgoZT0+bmV3IEpuKG5ldyBpdChlLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyLGUub3JpZ2luYWxTdGFydENvbHVtbixlLm9yaWdpbmFsRW5kTGluZU51bWJlcixlLm9yaWdpbmFsRW5kQ29sdW1uKSxuZXcgaXQoZS5tb2RpZmllZFN0YXJ0TGluZU51bWJlcixlLm1vZGlmaWVkU3RhcnRDb2x1bW4sZS5tb2RpZmllZEVuZExpbmVOdW1iZXIsZS5tb2RpZmllZEVuZENvbHVtbikpKSkpO28mJihvLm1vZGlmaWVkUmFuZ2UuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSE9PXIubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXImJm8ub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlIT09ci5vcmlnaW5hbFJhbmdlLnN0YXJ0TGluZU51bWJlcnx8KHI9bmV3ICRuKG8ub3JpZ2luYWxSYW5nZS5qb2luKHIub3JpZ2luYWxSYW5nZSksby5tb2RpZmllZFJhbmdlLmpvaW4oci5tb2RpZmllZFJhbmdlKSxvLmlubmVyQ2hhbmdlcyYmci5pbm5lckNoYW5nZXM/by5pbm5lckNoYW5nZXMuY29uY2F0KHIuaW5uZXJDaGFuZ2VzKTp2b2lkIDApLGEucG9wKCkpKSxhLnB1c2gociksbz1yfXJldHVybiBxbigoKCk9PkZuKGEsKChlLHQpPT50Lm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLWUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT10Lm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLWUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZlLm9yaWdpbmFsUmFuZ2UuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTx0Lm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyJiZlLm1vZGlmaWVkUmFuZ2UuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTx0Lm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyKSkpKSxuZXcgR24oYSxyLnF1aXRFYXJseSl9fSxhZHZhbmNlZDpuZXcgY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmR5bmFtaWNQcm9ncmFtbWluZ0RpZmZpbmc9bmV3IGRpLHRoaXMubXllcnNEaWZmaW5nQWxnb3JpdGhtPW5ldyBwaX1jb21wdXRlRGlmZihlLHQsbil7Y29uc3QgaT0wPT09bi5tYXhDb21wdXRhdGlvblRpbWVNcz9saS5pbnN0YW5jZTpuZXcgY2kobi5tYXhDb21wdXRhdGlvblRpbWVNcykscj0hbi5pZ25vcmVUcmltV2hpdGVzcGFjZSxhPW5ldyBNYXA7ZnVuY3Rpb24gbyhlKXtsZXQgdD1hLmdldChlKTtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9YS5zaXplLGEuc2V0KGUsdCkpLHR9Y29uc3Qgcz1lLm1hcCgoZT0+byhlLnRyaW0oKSkpKSxsPXQubWFwKChlPT5vKGUudHJpbSgpKSkpLGM9bmV3IF9pKHMsZSksaD1uZXcgX2kobCx0KSxkPSgoKT0+Yy5sZW5ndGgraC5sZW5ndGg8MTUwMD90aGlzLmR5bmFtaWNQcm9ncmFtbWluZ0RpZmZpbmcuY29tcHV0ZShjLGgsaSwoKG4saSk9PmVbbl09PT10W2ldPzA9PT10W2ldLmxlbmd0aD8uMToxK01hdGgubG9nKDErdFtpXS5sZW5ndGgpOi45OSkpOnRoaXMubXllcnNEaWZmaW5nQWxnb3JpdGhtLmNvbXB1dGUoYyxoKSkoKTtsZXQgdT1kLmRpZmZzLG09ZC5oaXRUaW1lb3V0O3U9dWkoYyxoLHUpO2NvbnN0IHA9W10sZj1uPT57aWYocilmb3IobGV0IGE9MDthPG47YSsrKXtjb25zdCBuPWcrYSxvPWIrYTtpZihlW25dIT09dFtvXSl7Y29uc3QgYT10aGlzLnJlZmluZURpZmYoZSx0LG5ldyBzaShuZXcgYWkobixuKzEpLG5ldyBhaShvLG8rMSkpLGkscik7Zm9yKGNvbnN0IGUgb2YgYS5tYXBwaW5ncylwLnB1c2goZSk7YS5oaXRUaW1lb3V0JiYobT0hMCl9fX07bGV0IGc9MCxiPTA7Zm9yKGNvbnN0IG4gb2YgdSl7cW4oKCgpPT5uLnNlcTFSYW5nZS5zdGFydC1nPT1uLnNlcTJSYW5nZS5zdGFydC1iKSk7ZihuLnNlcTFSYW5nZS5zdGFydC1nKSxnPW4uc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZSxiPW4uc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZTtjb25zdCBhPXRoaXMucmVmaW5lRGlmZihlLHQsbixpLHIpO2EuaGl0VGltZW91dCYmKG09ITApO2Zvcihjb25zdCBlIG9mIGEubWFwcGluZ3MpcC5wdXNoKGUpfWYoZS5sZW5ndGgtZyk7Y29uc3QgXz1mdW5jdGlvbihlLHQsbil7Y29uc3QgaT1bXTtmb3IoY29uc3QgciBvZiBmdW5jdGlvbiooZSx0KXtsZXQgbixpO2Zvcihjb25zdCByIG9mIGUpdm9pZCAwIT09aSYmdChpLHIpP24ucHVzaChyKToobiYmKHlpZWxkIG4pLG49W3JdKSxpPXI7biYmKHlpZWxkIG4pfShlLm1hcCgoZT0+ZnVuY3Rpb24oZSx0LG4pe2xldCBpPTAscj0wO2UubW9kaWZpZWRSYW5nZS5zdGFydENvbHVtbi0xPj1uW2UubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXItMV0ubGVuZ3RoJiZlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRDb2x1bW4tMT49dFtlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLTFdLmxlbmd0aCYmKGk9MSk7MT09PWUubW9kaWZpZWRSYW5nZS5lbmRDb2x1bW4mJjE9PT1lLm9yaWdpbmFsUmFuZ2UuZW5kQ29sdW1uJiZlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyK2k8PWUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyJiZlLm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyK2k8PWUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyJiYocj0tMSk7Y29uc3QgYT1uZXcgam4oZS5vcmlnaW5hbFJhbmdlLnN0YXJ0TGluZU51bWJlcitpLGUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyKzErciksbz1uZXcgam4oZS5tb2RpZmllZFJhbmdlLnN0YXJ0TGluZU51bWJlcitpLGUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyKzErcik7cmV0dXJuIG5ldyAkbihhLG8sW2VdKX0oZSx0LG4pKSksKChlLHQpPT5lLm9yaWdpbmFsUmFuZ2Uub3ZlcmxhcE9yVG91Y2godC5vcmlnaW5hbFJhbmdlKXx8ZS5tb2RpZmllZFJhbmdlLm92ZXJsYXBPclRvdWNoKHQubW9kaWZpZWRSYW5nZSkpKSl7Y29uc3QgZT1yWzBdLHQ9cltyLmxlbmd0aC0xXTtpLnB1c2gobmV3ICRuKGUub3JpZ2luYWxSYW5nZS5qb2luKHQub3JpZ2luYWxSYW5nZSksZS5tb2RpZmllZFJhbmdlLmpvaW4odC5tb2RpZmllZFJhbmdlKSxyLm1hcCgoZT0+ZS5pbm5lckNoYW5nZXNbMF0pKSkpfXJldHVybiBxbigoKCk9PkZuKGksKChlLHQpPT50Lm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLWUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT10Lm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLWUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZlLm9yaWdpbmFsUmFuZ2UuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTx0Lm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyJiZlLm1vZGlmaWVkUmFuZ2UuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTx0Lm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyKSkpKSxpfShwLGUsdCk7cmV0dXJuIG5ldyBHbihfLG0pfXJlZmluZURpZmYoZSx0LG4saSxyKXtjb25zdCBhPW5ldyB3aShlLG4uc2VxMVJhbmdlLHIpLG89bmV3IHdpKHQsbi5zZXEyUmFuZ2Uscikscz1hLmxlbmd0aCtvLmxlbmd0aDw1MDA/dGhpcy5keW5hbWljUHJvZ3JhbW1pbmdEaWZmaW5nLmNvbXB1dGUoYSxvLGkpOnRoaXMubXllcnNEaWZmaW5nQWxnb3JpdGhtLmNvbXB1dGUoYSxvLGkpO2xldCBsPXMuZGlmZnM7bD11aShhLG8sbCksbD1mdW5jdGlvbihlLHQsbil7Y29uc3QgaT1bXTtsZXQgcjtmdW5jdGlvbiBhKCl7aWYoIXIpcmV0dXJuO2NvbnN0IGU9ci5zMVJhbmdlLmxlbmd0aC1yLmRlbGV0ZWQ7ci5zMlJhbmdlLmxlbmd0aCxyLmFkZGVkLE1hdGgubWF4KHIuZGVsZXRlZCxyLmFkZGVkKSsoci5jb3VudC0xKT5lJiZpLnB1c2gobmV3IHNpKHIuczFSYW5nZSxyLnMyUmFuZ2UpKSxyPXZvaWQgMH1mb3IoY29uc3QgbyBvZiBuKXtmdW5jdGlvbiBzKGUsdCl7dmFyIG4saSxzLGw7aWYoIXJ8fCFyLnMxUmFuZ2UuY29udGFpbnNSYW5nZShlKXx8IXIuczJSYW5nZS5jb250YWluc1JhbmdlKHQpKWlmKCFyfHxyLnMxUmFuZ2UuZW5kRXhjbHVzaXZlPGUuc3RhcnQmJnIuczJSYW5nZS5lbmRFeGNsdXNpdmU8dC5zdGFydClhKCkscj17YWRkZWQ6MCxkZWxldGVkOjAsY291bnQ6MCxzMVJhbmdlOmUsczJSYW5nZTp0fTtlbHNle2NvbnN0IGE9YWkudHJ5Q3JlYXRlKHIuczFSYW5nZS5lbmRFeGNsdXNpdmUsZS5zdGFydCksbz1haS50cnlDcmVhdGUoci5zMlJhbmdlLmVuZEV4Y2x1c2l2ZSx0LnN0YXJ0KTtyLmRlbGV0ZWQrPW51bGwhPT0obj1udWxsPT1hP3ZvaWQgMDphLmxlbmd0aCkmJnZvaWQgMCE9PW4/bjowLHIuYWRkZWQrPW51bGwhPT0oaT1udWxsPT1vP3ZvaWQgMDpvLmxlbmd0aCkmJnZvaWQgMCE9PWk/aTowLHIuczFSYW5nZT1yLnMxUmFuZ2Uuam9pbihlKSxyLnMyUmFuZ2U9ci5zMlJhbmdlLmpvaW4odCl9Y29uc3QgYz1lLmludGVyc2VjdChvLnNlcTFSYW5nZSksaD10LmludGVyc2VjdChvLnNlcTJSYW5nZSk7ci5jb3VudCsrLHIuZGVsZXRlZCs9bnVsbCE9PShzPW51bGw9PWM/dm9pZCAwOmMubGVuZ3RoKSYmdm9pZCAwIT09cz9zOjAsci5hZGRlZCs9bnVsbCE9PShsPW51bGw9PWg/dm9pZCAwOmgubGVuZ3RoKSYmdm9pZCAwIT09bD9sOjB9Y29uc3QgbD1lLmZpbmRXb3JkQ29udGFpbmluZyhvLnNlcTFSYW5nZS5zdGFydC0xKSxjPXQuZmluZFdvcmRDb250YWluaW5nKG8uc2VxMlJhbmdlLnN0YXJ0LTEpLGg9ZS5maW5kV29yZENvbnRhaW5pbmcoby5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlKSxkPXQuZmluZFdvcmRDb250YWluaW5nKG8uc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZSk7bCYmaCYmYyYmZCYmbC5lcXVhbHMoaCkmJmMuZXF1YWxzKGQpP3MobCxjKToobCYmYyYmcyhsLGMpLGgmJmQmJnMoaCxkKSl9YSgpO3JldHVybiBmdW5jdGlvbihlLHQpe2NvbnN0IG49W107Zm9yKDtlLmxlbmd0aD4wfHx0Lmxlbmd0aD4wOyl7Y29uc3QgaT1lWzBdLHI9dFswXTtsZXQgYTthPWkmJighcnx8aS5zZXExUmFuZ2Uuc3RhcnQ8ci5zZXExUmFuZ2Uuc3RhcnQpP2Uuc2hpZnQoKTp0LnNoaWZ0KCksbi5sZW5ndGg+MCYmbltuLmxlbmd0aC0xXS5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlPj1hLnNlcTFSYW5nZS5zdGFydD9uW24ubGVuZ3RoLTFdPW5bbi5sZW5ndGgtMV0uam9pbihhKTpuLnB1c2goYSl9cmV0dXJuIG59KG4saSl9KGEsbyxsKSxsPWZ1bmN0aW9uKGUsdCxuKXtjb25zdCBpPVtdO2Zvcihjb25zdCBlIG9mIG4pe2NvbnN0IHQ9aVtpLmxlbmd0aC0xXTt0JiYoZS5zZXExUmFuZ2Uuc3RhcnQtdC5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlPD0yfHxlLnNlcTJSYW5nZS5zdGFydC10LnNlcTJSYW5nZS5lbmRFeGNsdXNpdmU8PTIpP2lbaS5sZW5ndGgtMV09bmV3IHNpKHQuc2VxMVJhbmdlLmpvaW4oZS5zZXExUmFuZ2UpLHQuc2VxMlJhbmdlLmpvaW4oZS5zZXEyUmFuZ2UpKTppLnB1c2goZSl9cmV0dXJuIGl9KDAsMCxsKTtyZXR1cm57bWFwcGluZ3M6bC5tYXAoKGU9Pm5ldyBKbihhLnRyYW5zbGF0ZVJhbmdlKGUuc2VxMVJhbmdlKSxvLnRyYW5zbGF0ZVJhbmdlKGUuc2VxMlJhbmdlKSkpKSxoaXRUaW1lb3V0OnMuaGl0VGltZW91dH19fX07ZnVuY3Rpb24gTGkoZSx0KXtjb25zdCBuPU1hdGgucG93KDEwLHQpO3JldHVybiBNYXRoLnJvdW5kKGUqbikvbn1jbGFzcyBDaXtjb25zdHJ1Y3RvcihlLHQsbixpPTEpe3RoaXMuX3JnYmFCcmFuZD12b2lkIDAsdGhpcy5yPTB8TWF0aC5taW4oMjU1LE1hdGgubWF4KDAsZSkpLHRoaXMuZz0wfE1hdGgubWluKDI1NSxNYXRoLm1heCgwLHQpKSx0aGlzLmI9MHxNYXRoLm1pbigyNTUsTWF0aC5tYXgoMCxuKSksdGhpcy5hPUxpKE1hdGgubWF4KE1hdGgubWluKDEsaSksMCksMyl9c3RhdGljIGVxdWFscyhlLHQpe3JldHVybiBlLnI9PT10LnImJmUuZz09PXQuZyYmZS5iPT09dC5iJiZlLmE9PT10LmF9fWNsYXNzIEVpe2NvbnN0cnVjdG9yKGUsdCxuLGkpe3RoaXMuX2hzbGFCcmFuZD12b2lkIDAsdGhpcy5oPTB8TWF0aC5tYXgoTWF0aC5taW4oMzYwLGUpLDApLHRoaXMucz1MaShNYXRoLm1heChNYXRoLm1pbigxLHQpLDApLDMpLHRoaXMubD1MaShNYXRoLm1heChNYXRoLm1pbigxLG4pLDApLDMpLHRoaXMuYT1MaShNYXRoLm1heChNYXRoLm1pbigxLGkpLDApLDMpfXN0YXRpYyBlcXVhbHMoZSx0KXtyZXR1cm4gZS5oPT09dC5oJiZlLnM9PT10LnMmJmUubD09PXQubCYmZS5hPT09dC5hfXN0YXRpYyBmcm9tUkdCQShlKXtjb25zdCB0PWUuci8yNTUsbj1lLmcvMjU1LGk9ZS5iLzI1NSxyPWUuYSxhPU1hdGgubWF4KHQsbixpKSxvPU1hdGgubWluKHQsbixpKTtsZXQgcz0wLGw9MDtjb25zdCBjPShvK2EpLzIsaD1hLW87aWYoaD4wKXtzd2l0Y2gobD1NYXRoLm1pbihjPD0uNT9oLygyKmMpOmgvKDItMipjKSwxKSxhKXtjYXNlIHQ6cz0obi1pKS9oKyhuPGk/NjowKTticmVhaztjYXNlIG46cz0oaS10KS9oKzI7YnJlYWs7Y2FzZSBpOnM9KHQtbikvaCs0fXMqPTYwLHM9TWF0aC5yb3VuZChzKX1yZXR1cm4gbmV3IEVpKHMsbCxjLHIpfXN0YXRpYyBfaHVlMnJnYihlLHQsbil7cmV0dXJuIG48MCYmKG4rPTEpLG4+MSYmKG4tPTEpLG48MS82P2UrNioodC1lKSpuOm48LjU/dDpuPDIvMz9lKyh0LWUpKigyLzMtbikqNjplfXN0YXRpYyB0b1JHQkEoZSl7Y29uc3QgdD1lLmgvMzYwLHtzOm4sbDppLGE6cn09ZTtsZXQgYSxvLHM7aWYoMD09PW4pYT1vPXM9aTtlbHNle2NvbnN0IGU9aTwuNT9pKigxK24pOmkrbi1pKm4scj0yKmktZTthPUVpLl9odWUycmdiKHIsZSx0KzEvMyksbz1FaS5faHVlMnJnYihyLGUsdCkscz1FaS5faHVlMnJnYihyLGUsdC0xLzMpfXJldHVybiBuZXcgQ2koTWF0aC5yb3VuZCgyNTUqYSksTWF0aC5yb3VuZCgyNTUqbyksTWF0aC5yb3VuZCgyNTUqcykscil9fWNsYXNzIEFpe2NvbnN0cnVjdG9yKGUsdCxuLGkpe3RoaXMuX2hzdmFCcmFuZD12b2lkIDAsdGhpcy5oPTB8TWF0aC5tYXgoTWF0aC5taW4oMzYwLGUpLDApLHRoaXMucz1MaShNYXRoLm1heChNYXRoLm1pbigxLHQpLDApLDMpLHRoaXMudj1MaShNYXRoLm1heChNYXRoLm1pbigxLG4pLDApLDMpLHRoaXMuYT1MaShNYXRoLm1heChNYXRoLm1pbigxLGkpLDApLDMpfXN0YXRpYyBlcXVhbHMoZSx0KXtyZXR1cm4gZS5oPT09dC5oJiZlLnM9PT10LnMmJmUudj09PXQudiYmZS5hPT09dC5hfXN0YXRpYyBmcm9tUkdCQShlKXtjb25zdCB0PWUuci8yNTUsbj1lLmcvMjU1LGk9ZS5iLzI1NSxyPU1hdGgubWF4KHQsbixpKSxhPXItTWF0aC5taW4odCxuLGkpLG89MD09PXI/MDphL3I7bGV0IHM7cmV0dXJuIHM9MD09PWE/MDpyPT09dD8oKG4taSkvYSU2KzYpJTY6cj09PW4/KGktdCkvYSsyOih0LW4pL2ErNCxuZXcgQWkoTWF0aC5yb3VuZCg2MCpzKSxvLHIsZS5hKX1zdGF0aWMgdG9SR0JBKGUpe2NvbnN0e2g6dCxzOm4sdjppLGE6cn09ZSxhPWkqbixvPWEqKDEtTWF0aC5hYnModC82MCUyLTEpKSxzPWktYTtsZXRbbCxjLGhdPVswLDAsMF07cmV0dXJuIHQ8NjA/KGw9YSxjPW8pOnQ8MTIwPyhsPW8sYz1hKTp0PDE4MD8oYz1hLGg9byk6dDwyNDA/KGM9byxoPWEpOnQ8MzAwPyhsPW8saD1hKTp0PD0zNjAmJihsPWEsaD1vKSxsPU1hdGgucm91bmQoMjU1KihsK3MpKSxjPU1hdGgucm91bmQoMjU1KihjK3MpKSxoPU1hdGgucm91bmQoMjU1KihoK3MpKSxuZXcgQ2kobCxjLGgscil9fWxldCBNaT1jbGFzcyBle3N0YXRpYyBmcm9tSGV4KHQpe3JldHVybiBlLkZvcm1hdC5DU1MucGFyc2VIZXgodCl8fGUucmVkfXN0YXRpYyBlcXVhbHMoZSx0KXtyZXR1cm4hZSYmIXR8fCEoIWV8fCF0KSYmZS5lcXVhbHModCl9Z2V0IGhzbGEoKXtyZXR1cm4gdGhpcy5faHNsYT90aGlzLl9oc2xhOkVpLmZyb21SR0JBKHRoaXMucmdiYSl9Z2V0IGhzdmEoKXtyZXR1cm4gdGhpcy5faHN2YT90aGlzLl9oc3ZhOkFpLmZyb21SR0JBKHRoaXMucmdiYSl9Y29uc3RydWN0b3IoZSl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJDb2xvciBuZWVkcyBhIHZhbHVlIik7aWYoZSBpbnN0YW5jZW9mIENpKXRoaXMucmdiYT1lO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEVpKXRoaXMuX2hzbGE9ZSx0aGlzLnJnYmE9RWkudG9SR0JBKGUpO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgQWkpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2xvciBjdG9yIGFyZ3VtZW50Iik7dGhpcy5faHN2YT1lLHRoaXMucmdiYT1BaS50b1JHQkEoZSl9fWVxdWFscyhlKXtyZXR1cm4hIWUmJkNpLmVxdWFscyh0aGlzLnJnYmEsZS5yZ2JhKSYmRWkuZXF1YWxzKHRoaXMuaHNsYSxlLmhzbGEpJiZBaS5lcXVhbHModGhpcy5oc3ZhLGUuaHN2YSl9Z2V0UmVsYXRpdmVMdW1pbmFuY2UoKXtyZXR1cm4gTGkoLjIxMjYqZS5fcmVsYXRpdmVMdW1pbmFuY2VGb3JDb21wb25lbnQodGhpcy5yZ2JhLnIpKy43MTUyKmUuX3JlbGF0aXZlTHVtaW5hbmNlRm9yQ29tcG9uZW50KHRoaXMucmdiYS5nKSsuMDcyMiplLl9yZWxhdGl2ZUx1bWluYW5jZUZvckNvbXBvbmVudCh0aGlzLnJnYmEuYiksNCl9c3RhdGljIF9yZWxhdGl2ZUx1bWluYW5jZUZvckNvbXBvbmVudChlKXtjb25zdCB0PWUvMjU1O3JldHVybiB0PD0uMDM5Mjg/dC8xMi45MjpNYXRoLnBvdygodCsuMDU1KS8xLjA1NSwyLjQpfWlzTGlnaHRlcigpe3JldHVybigyOTkqdGhpcy5yZ2JhLnIrNTg3KnRoaXMucmdiYS5nKzExNCp0aGlzLnJnYmEuYikvMWUzPj0xMjh9aXNMaWdodGVyVGhhbihlKXtyZXR1cm4gdGhpcy5nZXRSZWxhdGl2ZUx1bWluYW5jZSgpPmUuZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKX1pc0RhcmtlclRoYW4oZSl7cmV0dXJuIHRoaXMuZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKTxlLmdldFJlbGF0aXZlTHVtaW5hbmNlKCl9bGlnaHRlbih0KXtyZXR1cm4gbmV3IGUobmV3IEVpKHRoaXMuaHNsYS5oLHRoaXMuaHNsYS5zLHRoaXMuaHNsYS5sK3RoaXMuaHNsYS5sKnQsdGhpcy5oc2xhLmEpKX1kYXJrZW4odCl7cmV0dXJuIG5ldyBlKG5ldyBFaSh0aGlzLmhzbGEuaCx0aGlzLmhzbGEucyx0aGlzLmhzbGEubC10aGlzLmhzbGEubCp0LHRoaXMuaHNsYS5hKSl9dHJhbnNwYXJlbnQodCl7Y29uc3R7cjpuLGc6aSxiOnIsYTphfT10aGlzLnJnYmE7cmV0dXJuIG5ldyBlKG5ldyBDaShuLGkscixhKnQpKX1pc1RyYW5zcGFyZW50KCl7cmV0dXJuIDA9PT10aGlzLnJnYmEuYX1pc09wYXF1ZSgpe3JldHVybiAxPT09dGhpcy5yZ2JhLmF9b3Bwb3NpdGUoKXtyZXR1cm4gbmV3IGUobmV3IENpKDI1NS10aGlzLnJnYmEuciwyNTUtdGhpcy5yZ2JhLmcsMjU1LXRoaXMucmdiYS5iLHRoaXMucmdiYS5hKSl9bWFrZU9wYXF1ZSh0KXtpZih0aGlzLmlzT3BhcXVlKCl8fDEhPT10LnJnYmEuYSlyZXR1cm4gdGhpcztjb25zdHtyOm4sZzppLGI6cixhOmF9PXRoaXMucmdiYTtyZXR1cm4gbmV3IGUobmV3IENpKHQucmdiYS5yLWEqKHQucmdiYS5yLW4pLHQucmdiYS5nLWEqKHQucmdiYS5nLWkpLHQucmdiYS5iLWEqKHQucmdiYS5iLXIpLDEpKX10b1N0cmluZygpe3JldHVybiB0aGlzLl90b1N0cmluZ3x8KHRoaXMuX3RvU3RyaW5nPWUuRm9ybWF0LkNTUy5mb3JtYXQodGhpcykpLHRoaXMuX3RvU3RyaW5nfXN0YXRpYyBnZXRMaWdodGVyQ29sb3IoZSx0LG4pe2lmKGUuaXNMaWdodGVyVGhhbih0KSlyZXR1cm4gZTtuPW58fC41O2NvbnN0IGk9ZS5nZXRSZWxhdGl2ZUx1bWluYW5jZSgpLHI9dC5nZXRSZWxhdGl2ZUx1bWluYW5jZSgpO3JldHVybiBuPW4qKHItaSkvcixlLmxpZ2h0ZW4obil9c3RhdGljIGdldERhcmtlckNvbG9yKGUsdCxuKXtpZihlLmlzRGFya2VyVGhhbih0KSlyZXR1cm4gZTtuPW58fC41O2NvbnN0IGk9ZS5nZXRSZWxhdGl2ZUx1bWluYW5jZSgpO3JldHVybiBuPW4qKGktdC5nZXRSZWxhdGl2ZUx1bWluYW5jZSgpKS9pLGUuZGFya2VuKG4pfX07ZnVuY3Rpb24gUmkoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPU51bWJlcihuKTsoZXx8MD09PWUmJiIiIT09bi5yZXBsYWNlKC9ccy9nLCIiKSkmJnQucHVzaChlKX1yZXR1cm4gdH1mdW5jdGlvbiBOaShlLHQsbixpKXtyZXR1cm57cmVkOmUvMjU1LGJsdWU6bi8yNTUsZ3JlZW46dC8yNTUsYWxwaGE6aX19ZnVuY3Rpb24gSWkoZSx0KXtjb25zdCBuPXQuaW5kZXgsaT10WzBdLmxlbmd0aDtpZighbilyZXR1cm47Y29uc3Qgcj1lLnBvc2l0aW9uQXQobik7cmV0dXJue3N0YXJ0TGluZU51bWJlcjpyLmxpbmVOdW1iZXIsc3RhcnRDb2x1bW46ci5jb2x1bW4sZW5kTGluZU51bWJlcjpyLmxpbmVOdW1iZXIsZW5kQ29sdW1uOnIuY29sdW1uK2l9fWZ1bmN0aW9uIFVpKGUsdCl7aWYoIWUpcmV0dXJuO2NvbnN0IG49TWkuRm9ybWF0LkNTUy5wYXJzZUhleCh0KTtyZXR1cm4gbj97cmFuZ2U6ZSxjb2xvcjpOaShuLnJnYmEucixuLnJnYmEuZyxuLnJnYmEuYixuLnJnYmEuYSl9OnZvaWQgMH1mdW5jdGlvbiBIaShlLHQsbil7aWYoIWV8fDEhPT10Lmxlbmd0aClyZXR1cm47Y29uc3QgaT1SaSh0WzBdLnZhbHVlcygpKTtyZXR1cm57cmFuZ2U6ZSxjb2xvcjpOaShpWzBdLGlbMV0saVsyXSxuP2lbM106MSl9fWZ1bmN0aW9uIHppKGUsdCxuKXtpZighZXx8MSE9PXQubGVuZ3RoKXJldHVybjtjb25zdCBpPVJpKHRbMF0udmFsdWVzKCkpLHI9bmV3IE1pKG5ldyBFaShpWzBdLGlbMV0vMTAwLGlbMl0vMTAwLG4/aVszXToxKSk7cmV0dXJue3JhbmdlOmUsY29sb3I6Tmkoci5yZ2JhLnIsci5yZ2JhLmcsci5yZ2JhLmIsci5yZ2JhLmEpfX1mdW5jdGlvbiBEaShlLHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT9bLi4uZS5tYXRjaEFsbCh0KV06ZS5maW5kTWF0Y2hlcyh0KX1mdW5jdGlvbiBXaShlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0VmFsdWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnBvc2l0aW9uQXQ/ZnVuY3Rpb24oZSl7Y29uc3QgdD1bXSxuPURpKGUsL1xiKHJnYnxyZ2JhfGhzbHxoc2xhKShcKFswLTlccywuXCVdKlwpKXwoIykoW0EtRmEtZjAtOV17Nn0pXGJ8KCMpKFtBLUZhLWYwLTldezh9KVxiL2dtKTtpZihuLmxlbmd0aD4wKWZvcihjb25zdCBpIG9mIG4pe2NvbnN0IG49aS5maWx0ZXIoKGU9PnZvaWQgMCE9PWUpKSxyPW5bMV0sYT1uWzJdO2lmKCFhKWNvbnRpbnVlO2xldCBvO2lmKCJyZ2IiPT09cil7Y29uc3QgdD0vXlwoXHMqKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldezJ9fFsxLTldWzAtOV18WzAtOV0pXHMqLFxzKigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XVswLTldfFswLTldKVxzKixccyooMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn18WzEtOV1bMC05XXxbMC05XSlccypcKSQvZ207bz1IaShJaShlLGkpLERpKGEsdCksITEpfWVsc2UgaWYoInJnYmEiPT09cil7Y29uc3QgdD0vXlwoXHMqKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldezJ9fFsxLTldWzAtOV18WzAtOV0pXHMqLFxzKigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XVswLTldfFswLTldKVxzKixccyooMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn18WzEtOV1bMC05XXxbMC05XSlccyosXHMqKDBbLl1bMC05XSt8Wy5dWzAtOV0rfFswMV1bLl18WzAxXSlccypcKSQvZ207bz1IaShJaShlLGkpLERpKGEsdCksITApfWVsc2UgaWYoImhzbCI9PT1yKXtjb25zdCB0PS9eXChccyooMzZbMF18M1swLTVdWzAtOV18WzEyXVswLTldWzAtOV18WzEtOV0/WzAtOV0pXHMqLFxzKigxMDB8XGR7MSwyfVsuXVxkKnxcZHsxLDJ9KSVccyosXHMqKDEwMHxcZHsxLDJ9Wy5dXGQqfFxkezEsMn0pJVxzKlwpJC9nbTtvPXppKElpKGUsaSksRGkoYSx0KSwhMSl9ZWxzZSBpZigiaHNsYSI9PT1yKXtjb25zdCB0PS9eXChccyooMzZbMF18M1swLTVdWzAtOV18WzEyXVswLTldWzAtOV18WzEtOV0/WzAtOV0pXHMqLFxzKigxMDB8XGR7MSwyfVsuXVxkKnxcZHsxLDJ9KSVccyosXHMqKDEwMHxcZHsxLDJ9Wy5dXGQqfFxkezEsMn0pJVxzKixccyooMFsuXVswLTldK3xbLl1bMC05XSt8WzAxXVsuXXxbMDFdKVxzKlwpJC9nbTtvPXppKElpKGUsaSksRGkoYSx0KSwhMCl9ZWxzZSIjIj09PXImJihvPVVpKElpKGUsaSkscithKSk7byYmdC5wdXNoKG8pfXJldHVybiB0fShlKTpbXX1NaS53aGl0ZT1uZXcgTWkobmV3IENpKDI1NSwyNTUsMjU1LDEpKSxNaS5ibGFjaz1uZXcgTWkobmV3IENpKDAsMCwwLDEpKSxNaS5yZWQ9bmV3IE1pKG5ldyBDaSgyNTUsMCwwLDEpKSxNaS5ibHVlPW5ldyBNaShuZXcgQ2koMCwwLDI1NSwxKSksTWkuZ3JlZW49bmV3IE1pKG5ldyBDaSgwLDI1NSwwLDEpKSxNaS5jeWFuPW5ldyBNaShuZXcgQ2koMCwyNTUsMjU1LDEpKSxNaS5saWdodGdyZXk9bmV3IE1pKG5ldyBDaSgyMTEsMjExLDIxMSwxKSksTWkudHJhbnNwYXJlbnQ9bmV3IE1pKG5ldyBDaSgwLDAsMCwwKSksZnVuY3Rpb24oZSl7dmFyIHQ7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSl7Y29uc3QgdD1lLnRvU3RyaW5nKDE2KTtyZXR1cm4gMiE9PXQubGVuZ3RoPyIwIit0OnR9ZnVuY3Rpb24gaShlKXtzd2l0Y2goZSl7Y2FzZSA0ODpyZXR1cm4gMDtjYXNlIDQ5OnJldHVybiAxO2Nhc2UgNTA6cmV0dXJuIDI7Y2FzZSA1MTpyZXR1cm4gMztjYXNlIDUyOnJldHVybiA0O2Nhc2UgNTM6cmV0dXJuIDU7Y2FzZSA1NDpyZXR1cm4gNjtjYXNlIDU1OnJldHVybiA3O2Nhc2UgNTY6cmV0dXJuIDg7Y2FzZSA1NzpyZXR1cm4gOTtjYXNlIDk3OmNhc2UgNjU6cmV0dXJuIDEwO2Nhc2UgOTg6Y2FzZSA2NjpyZXR1cm4gMTE7Y2FzZSA5OTpjYXNlIDY3OnJldHVybiAxMjtjYXNlIDEwMDpjYXNlIDY4OnJldHVybiAxMztjYXNlIDEwMTpjYXNlIDY5OnJldHVybiAxNDtjYXNlIDEwMjpjYXNlIDcwOnJldHVybiAxNX1yZXR1cm4gMH10LmZvcm1hdFJHQj1mdW5jdGlvbih0KXtyZXR1cm4gMT09PXQucmdiYS5hP2ByZ2IoJHt0LnJnYmEucn0sICR7dC5yZ2JhLmd9LCAke3QucmdiYS5ifSlgOmUuRm9ybWF0LkNTUy5mb3JtYXRSR0JBKHQpfSx0LmZvcm1hdFJHQkE9ZnVuY3Rpb24oZSl7cmV0dXJuYHJnYmEoJHtlLnJnYmEucn0sICR7ZS5yZ2JhLmd9LCAke2UucmdiYS5ifSwgJHsrZS5yZ2JhLmEudG9GaXhlZCgyKX0pYH0sdC5mb3JtYXRIU0w9ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10LmhzbGEuYT9gaHNsKCR7dC5oc2xhLmh9LCAkeygxMDAqdC5oc2xhLnMpLnRvRml4ZWQoMil9JSwgJHsoMTAwKnQuaHNsYS5sKS50b0ZpeGVkKDIpfSUpYDplLkZvcm1hdC5DU1MuZm9ybWF0SFNMQSh0KX0sdC5mb3JtYXRIU0xBPWZ1bmN0aW9uKGUpe3JldHVybmBoc2xhKCR7ZS5oc2xhLmh9LCAkeygxMDAqZS5oc2xhLnMpLnRvRml4ZWQoMil9JSwgJHsoMTAwKmUuaHNsYS5sKS50b0ZpeGVkKDIpfSUsICR7ZS5oc2xhLmEudG9GaXhlZCgyKX0pYH0sdC5mb3JtYXRIZXg9ZnVuY3Rpb24oZSl7cmV0dXJuYCMke24oZS5yZ2JhLnIpfSR7bihlLnJnYmEuZyl9JHtuKGUucmdiYS5iKX1gfSx0LmZvcm1hdEhleEE9ZnVuY3Rpb24odCxpPSExKXtyZXR1cm4gaSYmMT09PXQucmdiYS5hP2UuRm9ybWF0LkNTUy5mb3JtYXRIZXgodCk6YCMke24odC5yZ2JhLnIpfSR7bih0LnJnYmEuZyl9JHtuKHQucmdiYS5iKX0ke24oTWF0aC5yb3VuZCgyNTUqdC5yZ2JhLmEpKX1gfSx0LmZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5pc09wYXF1ZSgpP2UuRm9ybWF0LkNTUy5mb3JtYXRIZXgodCk6ZS5Gb3JtYXQuQ1NTLmZvcm1hdFJHQkEodCl9LHQucGFyc2VIZXg9ZnVuY3Rpb24odCl7Y29uc3Qgbj10Lmxlbmd0aDtpZigwPT09bilyZXR1cm4gbnVsbDtpZigzNSE9PXQuY2hhckNvZGVBdCgwKSlyZXR1cm4gbnVsbDtpZig3PT09bil7Y29uc3Qgbj0xNippKHQuY2hhckNvZGVBdCgxKSkraSh0LmNoYXJDb2RlQXQoMikpLHI9MTYqaSh0LmNoYXJDb2RlQXQoMykpK2kodC5jaGFyQ29kZUF0KDQpKSxhPTE2KmkodC5jaGFyQ29kZUF0KDUpKStpKHQuY2hhckNvZGVBdCg2KSk7cmV0dXJuIG5ldyBlKG5ldyBDaShuLHIsYSwxKSl9aWYoOT09PW4pe2NvbnN0IG49MTYqaSh0LmNoYXJDb2RlQXQoMSkpK2kodC5jaGFyQ29kZUF0KDIpKSxyPTE2KmkodC5jaGFyQ29kZUF0KDMpKStpKHQuY2hhckNvZGVBdCg0KSksYT0xNippKHQuY2hhckNvZGVBdCg1KSkraSh0LmNoYXJDb2RlQXQoNikpLG89MTYqaSh0LmNoYXJDb2RlQXQoNykpK2kodC5jaGFyQ29kZUF0KDgpKTtyZXR1cm4gbmV3IGUobmV3IENpKG4scixhLG8vMjU1KSl9aWYoND09PW4pe2NvbnN0IG49aSh0LmNoYXJDb2RlQXQoMSkpLHI9aSh0LmNoYXJDb2RlQXQoMikpLGE9aSh0LmNoYXJDb2RlQXQoMykpO3JldHVybiBuZXcgZShuZXcgQ2koMTYqbituLDE2KnIrciwxNiphK2EpKX1pZig1PT09bil7Y29uc3Qgbj1pKHQuY2hhckNvZGVBdCgxKSkscj1pKHQuY2hhckNvZGVBdCgyKSksYT1pKHQuY2hhckNvZGVBdCgzKSksbz1pKHQuY2hhckNvZGVBdCg0KSk7cmV0dXJuIG5ldyBlKG5ldyBDaSgxNipuK24sMTYqcityLDE2KmErYSwoMTYqbytvKS8yNTUpKX1yZXR1cm4gbnVsbH19KSgodD1lLkZvcm1hdHx8KGUuRm9ybWF0PXt9KSkuQ1NTfHwodC5DU1M9e30pKX0oTWl8fChNaT17fSkpO3ZhciBPaT1mdW5jdGlvbihlLHQsbixpKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24ocixhKXtmdW5jdGlvbiBvKGUpe3RyeXtsKGkubmV4dChlKSl9Y2F0Y2goZSl7YShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7bChpLnRocm93KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiBsKGUpe3ZhciB0O2UuZG9uZT9yKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihvLHMpfWwoKGk9aS5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX07Y2xhc3MgUGkgZXh0ZW5kcyBjdHtnZXQgdXJpKCl7cmV0dXJuIHRoaXMuX3VyaX1nZXQgZW9sKCl7cmV0dXJuIHRoaXMuX2VvbH1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLmdldFRleHQoKX1maW5kTWF0Y2hlcyhlKXtjb25zdCB0PVtdO2ZvcihsZXQgbj0wO248dGhpcy5fbGluZXMubGVuZ3RoO24rKyl7Y29uc3QgaT10aGlzLl9saW5lc1tuXSxyPXRoaXMub2Zmc2V0QXQobmV3IG50KG4rMSwxKSksYT1pLm1hdGNoQWxsKGUpO2Zvcihjb25zdCBlIG9mIGEpKGUuaW5kZXh8fDA9PT1lLmluZGV4KSYmKGUuaW5kZXg9ZS5pbmRleCtyKSx0LnB1c2goZSl9cmV0dXJuIHR9Z2V0TGluZXNDb250ZW50KCl7cmV0dXJuIHRoaXMuX2xpbmVzLnNsaWNlKDApfWdldExpbmVDb3VudCgpe3JldHVybiB0aGlzLl9saW5lcy5sZW5ndGh9Z2V0TGluZUNvbnRlbnQoZSl7cmV0dXJuIHRoaXMuX2xpbmVzW2UtMV19Z2V0V29yZEF0UG9zaXRpb24oZSx0KXtjb25zdCBuPXV0KGUuY29sdW1uLGZ1bmN0aW9uKGUpe2xldCB0PWh0O2lmKGUmJmUgaW5zdGFuY2VvZiBSZWdFeHApaWYoZS5nbG9iYWwpdD1lO2Vsc2V7bGV0IG49ImciO2UuaWdub3JlQ2FzZSYmKG4rPSJpIiksZS5tdWx0aWxpbmUmJihuKz0ibSIpLGUudW5pY29kZSYmKG4rPSJ1IiksdD1uZXcgUmVnRXhwKGUuc291cmNlLG4pfXJldHVybiB0Lmxhc3RJbmRleD0wLHR9KHQpLHRoaXMuX2xpbmVzW2UubGluZU51bWJlci0xXSwwKTtyZXR1cm4gbj9uZXcgaXQoZS5saW5lTnVtYmVyLG4uc3RhcnRDb2x1bW4sZS5saW5lTnVtYmVyLG4uZW5kQ29sdW1uKTpudWxsfXdvcmRzKGUpe2NvbnN0IHQ9dGhpcy5fbGluZXMsbj10aGlzLl93b3JkZW5pemUuYmluZCh0aGlzKTtsZXQgaT0wLHI9IiIsYT0wLG89W107cmV0dXJueypbU3ltYm9sLml0ZXJhdG9yXSgpe2Zvcig7OylpZihhPG8ubGVuZ3RoKXtjb25zdCBlPXIuc3Vic3RyaW5nKG9bYV0uc3RhcnQsb1thXS5lbmQpO2ErPTEseWllbGQgZX1lbHNle2lmKCEoaTx0Lmxlbmd0aCkpYnJlYWs7cj10W2ldLG89bihyLGUpLGE9MCxpKz0xfX19fWdldExpbmVXb3JkcyhlLHQpe2NvbnN0IG49dGhpcy5fbGluZXNbZS0xXSxpPXRoaXMuX3dvcmRlbml6ZShuLHQpLHI9W107Zm9yKGNvbnN0IGUgb2YgaSlyLnB1c2goe3dvcmQ6bi5zdWJzdHJpbmcoZS5zdGFydCxlLmVuZCksc3RhcnRDb2x1bW46ZS5zdGFydCsxLGVuZENvbHVtbjplLmVuZCsxfSk7cmV0dXJuIHJ9X3dvcmRlbml6ZShlLHQpe2NvbnN0IG49W107bGV0IGk7Zm9yKHQubGFzdEluZGV4PTA7KGk9dC5leGVjKGUpKSYmMCE9PWlbMF0ubGVuZ3RoOyluLnB1c2goe3N0YXJ0OmkuaW5kZXgsZW5kOmkuaW5kZXgraVswXS5sZW5ndGh9KTtyZXR1cm4gbn1nZXRWYWx1ZUluUmFuZ2UoZSl7aWYoKGU9dGhpcy5fdmFsaWRhdGVSYW5nZShlKSkuc3RhcnRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyKXJldHVybiB0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5zdGFydENvbHVtbi0xLGUuZW5kQ29sdW1uLTEpO2NvbnN0IHQ9dGhpcy5fZW9sLG49ZS5zdGFydExpbmVOdW1iZXItMSxpPWUuZW5kTGluZU51bWJlci0xLHI9W107ci5wdXNoKHRoaXMuX2xpbmVzW25dLnN1YnN0cmluZyhlLnN0YXJ0Q29sdW1uLTEpKTtmb3IobGV0IGU9bisxO2U8aTtlKyspci5wdXNoKHRoaXMuX2xpbmVzW2VdKTtyZXR1cm4gci5wdXNoKHRoaXMuX2xpbmVzW2ldLnN1YnN0cmluZygwLGUuZW5kQ29sdW1uLTEpKSxyLmpvaW4odCl9b2Zmc2V0QXQoZSl7cmV0dXJuIGU9dGhpcy5fdmFsaWRhdGVQb3NpdGlvbihlKSx0aGlzLl9lbnN1cmVMaW5lU3RhcnRzKCksdGhpcy5fbGluZVN0YXJ0cy5nZXRQcmVmaXhTdW0oZS5saW5lTnVtYmVyLTIpKyhlLmNvbHVtbi0xKX1wb3NpdGlvbkF0KGUpe2U9TWF0aC5mbG9vcihlKSxlPU1hdGgubWF4KDAsZSksdGhpcy5fZW5zdXJlTGluZVN0YXJ0cygpO2NvbnN0IHQ9dGhpcy5fbGluZVN0YXJ0cy5nZXRJbmRleE9mKGUpLG49dGhpcy5fbGluZXNbdC5pbmRleF0ubGVuZ3RoO3JldHVybntsaW5lTnVtYmVyOjErdC5pbmRleCxjb2x1bW46MStNYXRoLm1pbih0LnJlbWFpbmRlcixuKX19X3ZhbGlkYXRlUmFuZ2UoZSl7Y29uc3QgdD10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjplLnN0YXJ0Q29sdW1ufSksbj10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuZW5kTGluZU51bWJlcixjb2x1bW46ZS5lbmRDb2x1bW59KTtyZXR1cm4gdC5saW5lTnVtYmVyIT09ZS5zdGFydExpbmVOdW1iZXJ8fHQuY29sdW1uIT09ZS5zdGFydENvbHVtbnx8bi5saW5lTnVtYmVyIT09ZS5lbmRMaW5lTnVtYmVyfHxuLmNvbHVtbiE9PWUuZW5kQ29sdW1uP3tzdGFydExpbmVOdW1iZXI6dC5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuY29sdW1uLGVuZExpbmVOdW1iZXI6bi5saW5lTnVtYmVyLGVuZENvbHVtbjpuLmNvbHVtbn06ZX1fdmFsaWRhdGVQb3NpdGlvbihlKXtpZighbnQuaXNJUG9zaXRpb24oZSkpdGhyb3cgbmV3IEVycm9yKCJiYWQgcG9zaXRpb24iKTtsZXR7bGluZU51bWJlcjp0LGNvbHVtbjpufT1lLGk9ITE7aWYodDwxKXQ9MSxuPTEsaT0hMDtlbHNlIGlmKHQ+dGhpcy5fbGluZXMubGVuZ3RoKXQ9dGhpcy5fbGluZXMubGVuZ3RoLG49dGhpcy5fbGluZXNbdC0xXS5sZW5ndGgrMSxpPSEwO2Vsc2V7Y29uc3QgZT10aGlzLl9saW5lc1t0LTFdLmxlbmd0aCsxO248MT8obj0xLGk9ITApOm4+ZSYmKG49ZSxpPSEwKX1yZXR1cm4gaT97bGluZU51bWJlcjp0LGNvbHVtbjpufTplfX1jbGFzcyBxaXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2hvc3Q9ZSx0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeT10LHRoaXMuX2ZvcmVpZ25Nb2R1bGU9bnVsbH1kaXNwb3NlKCl7dGhpcy5fbW9kZWxzPU9iamVjdC5jcmVhdGUobnVsbCl9X2dldE1vZGVsKGUpe3JldHVybiB0aGlzLl9tb2RlbHNbZV19X2dldE1vZGVscygpe2NvbnN0IGU9W107cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX21vZGVscykuZm9yRWFjaCgodD0+ZS5wdXNoKHRoaXMuX21vZGVsc1t0XSkpKSxlfWFjY2VwdE5ld01vZGVsKGUpe3RoaXMuX21vZGVsc1tlLnVybF09bmV3IFBpKEtlLnBhcnNlKGUudXJsKSxlLmxpbmVzLGUuRU9MLGUudmVyc2lvbklkKX1hY2NlcHRNb2RlbENoYW5nZWQoZSx0KXtpZighdGhpcy5fbW9kZWxzW2VdKXJldHVybjt0aGlzLl9tb2RlbHNbZV0ub25FdmVudHModCl9YWNjZXB0UmVtb3ZlZE1vZGVsKGUpe3RoaXMuX21vZGVsc1tlXSYmZGVsZXRlIHRoaXMuX21vZGVsc1tlXX1jb21wdXRlVW5pY29kZUhpZ2hsaWdodHMoZSx0LG4pe3JldHVybiBPaSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IGk9dGhpcy5fZ2V0TW9kZWwoZSk7cmV0dXJuIGk/Qm4uY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKGksdCxuKTp7cmFuZ2VzOltdLGhhc01vcmU6ITEsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6MCxpbnZpc2libGVDaGFyYWN0ZXJDb3VudDowLG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDowfX0pKX1jb21wdXRlRGlmZihlLHQsbixpKXtyZXR1cm4gT2kodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCByPXRoaXMuX2dldE1vZGVsKGUpLGE9dGhpcy5fZ2V0TW9kZWwodCk7cmV0dXJuIHImJmE/cWkuY29tcHV0ZURpZmYocixhLG4saSk6bnVsbH0pKX1zdGF0aWMgY29tcHV0ZURpZmYoZSx0LG4saSl7Y29uc3Qgcj0iYWR2YW5jZWQiPT09aT94aS5hZHZhbmNlZDp4aS5sZWdhY3ksYT1lLmdldExpbmVzQ29udGVudCgpLG89dC5nZXRMaW5lc0NvbnRlbnQoKSxzPXIuY29tcHV0ZURpZmYoYSxvLG4pO3JldHVybntpZGVudGljYWw6IShzLmNoYW5nZXMubGVuZ3RoPjApJiZ0aGlzLl9tb2RlbHNBcmVJZGVudGljYWwoZSx0KSxxdWl0RWFybHk6cy5oaXRUaW1lb3V0LGNoYW5nZXM6cy5jaGFuZ2VzLm1hcCgoZT0+e3ZhciB0O3JldHVybltlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLGUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLGUubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIsZS5tb2RpZmllZFJhbmdlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsbnVsbD09PSh0PWUuaW5uZXJDaGFuZ2VzKXx8dm9pZCAwPT09dD92b2lkIDA6dC5tYXAoKGU9PltlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLGUub3JpZ2luYWxSYW5nZS5zdGFydENvbHVtbixlLm9yaWdpbmFsUmFuZ2UuZW5kTGluZU51bWJlcixlLm9yaWdpbmFsUmFuZ2UuZW5kQ29sdW1uLGUubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIsZS5tb2RpZmllZFJhbmdlLnN0YXJ0Q29sdW1uLGUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyLGUubW9kaWZpZWRSYW5nZS5lbmRDb2x1bW5dKSldfSkpfX1zdGF0aWMgX21vZGVsc0FyZUlkZW50aWNhbChlLHQpe2NvbnN0IG49ZS5nZXRMaW5lQ291bnQoKTtpZihuIT09dC5nZXRMaW5lQ291bnQoKSlyZXR1cm4hMTtmb3IobGV0IGk9MTtpPD1uO2krKyl7aWYoZS5nZXRMaW5lQ29udGVudChpKSE9PXQuZ2V0TGluZUNvbnRlbnQoaSkpcmV0dXJuITF9cmV0dXJuITB9Y29tcHV0ZU1vcmVNaW5pbWFsRWRpdHMoZSx0LG4pe3JldHVybiBPaSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IGk9dGhpcy5fZ2V0TW9kZWwoZSk7aWYoIWkpcmV0dXJuIHQ7Y29uc3Qgcj1bXTtsZXQgYTt0PXQuc2xpY2UoMCkuc29ydCgoKGUsdCk9PntpZihlLnJhbmdlJiZ0LnJhbmdlKXJldHVybiBpdC5jb21wYXJlUmFuZ2VzVXNpbmdTdGFydHMoZS5yYW5nZSx0LnJhbmdlKTtyZXR1cm4oZS5yYW5nZT8wOjEpLSh0LnJhbmdlPzA6MSl9KSk7Zm9yKGxldHtyYW5nZTplLHRleHQ6byxlb2w6c31vZiB0KXtpZigibnVtYmVyIj09dHlwZW9mIHMmJihhPXMpLGl0LmlzRW1wdHkoZSkmJiFvKWNvbnRpbnVlO2NvbnN0IHQ9aS5nZXRWYWx1ZUluUmFuZ2UoZSk7aWYobz1vLnJlcGxhY2UoL1xyXG58XG58XHIvZyxpLmVvbCksdD09PW8pY29udGludWU7aWYoTWF0aC5tYXgoby5sZW5ndGgsdC5sZW5ndGgpPnFpLl9kaWZmTGltaXQpe3IucHVzaCh7cmFuZ2U6ZSx0ZXh0Om99KTtjb250aW51ZX1jb25zdCBsPWZlKHQsbyxuKSxjPWkub2Zmc2V0QXQoaXQubGlmdChlKS5nZXRTdGFydFBvc2l0aW9uKCkpO2Zvcihjb25zdCBlIG9mIGwpe2NvbnN0IHQ9aS5wb3NpdGlvbkF0KGMrZS5vcmlnaW5hbFN0YXJ0KSxuPWkucG9zaXRpb25BdChjK2Uub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoKSxhPXt0ZXh0Om8uc3Vic3RyKGUubW9kaWZpZWRTdGFydCxlLm1vZGlmaWVkTGVuZ3RoKSxyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOnQubGluZU51bWJlcixzdGFydENvbHVtbjp0LmNvbHVtbixlbmRMaW5lTnVtYmVyOm4ubGluZU51bWJlcixlbmRDb2x1bW46bi5jb2x1bW59fTtpLmdldFZhbHVlSW5SYW5nZShhLnJhbmdlKSE9PWEudGV4dCYmci5wdXNoKGEpfX1yZXR1cm4ibnVtYmVyIj09dHlwZW9mIGEmJnIucHVzaCh7ZW9sOmEsdGV4dDoiIixyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOjAsc3RhcnRDb2x1bW46MCxlbmRMaW5lTnVtYmVyOjAsZW5kQ29sdW1uOjB9fSkscn0pKX1jb21wdXRlTGlua3MoZSl7cmV0dXJuIE9pKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgdD10aGlzLl9nZXRNb2RlbChlKTtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0TGluZUNvdW50JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRMaW5lQ29udGVudD92dC5jb21wdXRlTGlua3MoZSk6W119KHQpOm51bGx9KSl9Y29tcHV0ZURlZmF1bHREb2N1bWVudENvbG9ycyhlKXtyZXR1cm4gT2kodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCB0PXRoaXMuX2dldE1vZGVsKGUpO3JldHVybiB0P1dpKHQpOm51bGx9KSl9dGV4dHVhbFN1Z2dlc3QoZSx0LG4saSl7cmV0dXJuIE9pKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3Qgcj1uZXcgRCghMCksYT1uZXcgUmVnRXhwKG4saSksbz1uZXcgU2V0O2U6Zm9yKGNvbnN0IG4gb2YgZSl7Y29uc3QgZT10aGlzLl9nZXRNb2RlbChuKTtpZihlKWZvcihjb25zdCBuIG9mIGUud29yZHMoYSkpaWYobiE9PXQmJmlzTmFOKE51bWJlcihuKSkmJihvLmFkZChuKSxvLnNpemU+cWkuX3N1Z2dlc3Rpb25zTGltaXQpKWJyZWFrIGV9cmV0dXJue3dvcmRzOkFycmF5LmZyb20obyksZHVyYXRpb246ci5lbGFwc2VkKCl9fSkpfWNvbXB1dGVXb3JkUmFuZ2VzKGUsdCxuLGkpe3JldHVybiBPaSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHI9dGhpcy5fZ2V0TW9kZWwoZSk7aWYoIXIpcmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCk7Y29uc3QgYT1uZXcgUmVnRXhwKG4saSksbz1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgZT10LnN0YXJ0TGluZU51bWJlcjtlPHQuZW5kTGluZU51bWJlcjtlKyspe2NvbnN0IHQ9ci5nZXRMaW5lV29yZHMoZSxhKTtmb3IoY29uc3QgbiBvZiB0KXtpZighaXNOYU4oTnVtYmVyKG4ud29yZCkpKWNvbnRpbnVlO2xldCB0PW9bbi53b3JkXTt0fHwodD1bXSxvW24ud29yZF09dCksdC5wdXNoKHtzdGFydExpbmVOdW1iZXI6ZSxzdGFydENvbHVtbjpuLnN0YXJ0Q29sdW1uLGVuZExpbmVOdW1iZXI6ZSxlbmRDb2x1bW46bi5lbmRDb2x1bW59KX19cmV0dXJuIG99KSl9bmF2aWdhdGVWYWx1ZVNldChlLHQsbixpLHIpe3JldHVybiBPaSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IGE9dGhpcy5fZ2V0TW9kZWwoZSk7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3Qgbz1uZXcgUmVnRXhwKGkscik7dC5zdGFydENvbHVtbj09PXQuZW5kQ29sdW1uJiYodD17c3RhcnRMaW5lTnVtYmVyOnQuc3RhcnRMaW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjp0LmVuZExpbmVOdW1iZXIsZW5kQ29sdW1uOnQuZW5kQ29sdW1uKzF9KTtjb25zdCBzPWEuZ2V0VmFsdWVJblJhbmdlKHQpLGw9YS5nZXRXb3JkQXRQb3NpdGlvbih7bGluZU51bWJlcjp0LnN0YXJ0TGluZU51bWJlcixjb2x1bW46dC5zdGFydENvbHVtbn0sbyk7aWYoIWwpcmV0dXJuIG51bGw7Y29uc3QgYz1hLmdldFZhbHVlSW5SYW5nZShsKTtyZXR1cm4gd3QuSU5TVEFOQ0UubmF2aWdhdGVWYWx1ZVNldCh0LHMsbCxjLG4pfSkpfWxvYWRGb3JlaWduTW9kdWxlKGUsdCxuKXtjb25zdCBpPWZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1lPT5mdW5jdGlvbigpe2NvbnN0IG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiB0KGUsbil9LGk9e307Zm9yKGNvbnN0IHQgb2YgZSlpW3RdPW4odCk7cmV0dXJuIGl9KG4sKChlLHQpPT50aGlzLl9ob3N0LmZocihlLHQpKSkscj17aG9zdDppLGdldE1pcnJvck1vZGVsczooKT0+dGhpcy5fZ2V0TW9kZWxzKCl9O3JldHVybiB0aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeT8odGhpcy5fZm9yZWlnbk1vZHVsZT10aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeShyLHQpLFByb21pc2UucmVzb2x2ZShHKHRoaXMuX2ZvcmVpZ25Nb2R1bGUpKSk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJVbmV4cGVjdGVkIHVzYWdlIikpfWZtcihlLHQpe2lmKCF0aGlzLl9mb3JlaWduTW9kdWxlfHwiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5fZm9yZWlnbk1vZHVsZVtlXSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIitlKSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fZm9yZWlnbk1vZHVsZVtlXS5hcHBseSh0aGlzLl9mb3JlaWduTW9kdWxlLHQpKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9fX1xaS5fZGlmZkxpbWl0PTFlNSxxaS5fc3VnZ2VzdGlvbnNMaW1pdD0xZTQsImZ1bmN0aW9uIj09dHlwZW9mIGltcG9ydFNjcmlwdHMmJihnbG9iYWxUaGlzLm1vbmFjbz17ZWRpdG9yOnZvaWQgMCxsYW5ndWFnZXM6dm9pZCAwLENhbmNlbGxhdGlvblRva2VuU291cmNlOlN0LEVtaXR0ZXI6QixLZXlDb2RlOmhuLEtleU1vZDpEbixQb3NpdGlvbjpudCxSYW5nZTppdCxTZWxlY3Rpb246SXQsU2VsZWN0aW9uRGlyZWN0aW9uOlRuLE1hcmtlclNldmVyaXR5OmRuLE1hcmtlclRhZzp1bixVcmk6S2UsVG9rZW46em59KTtsZXQgRmk9ITE7ZnVuY3Rpb24gQmkoZSl7aWYoRmkpcmV0dXJuO0ZpPSEwO2NvbnN0IHQ9bmV3IGhlKChlPT57Z2xvYmFsVGhpcy5wb3N0TWVzc2FnZShlKX0pLCh0PT5uZXcgcWkodCxlKSkpO2dsb2JhbFRoaXMub25tZXNzYWdlPWU9Pnt0Lm9ubWVzc2FnZShlLmRhdGEpfX1mdW5jdGlvbiBWaShlLHQsLi4ubil7Ci8qIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFZlcnNpb246IDAuMzkuMChmZjM2MjFhM2ZhNjM4OTg3M2JlNTQxMmQxNzU1NDI5NGVhMWIwOTQxKQogICAgICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCiAgICAgKiBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L21vbmFjby1lZGl0b3IvYmxvYi9tYWluL0xJQ0VOU0UudHh0CiAgICAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KcmV0dXJuIGZ1bmN0aW9uKGUsdCl7bGV0IG47cmV0dXJuIG49MD09PXQubGVuZ3RoP2U6ZS5yZXBsYWNlKC9ceyhcZCspXH0vZywoKGUsbik9PntsZXQgaT1uWzBdO3JldHVybiB2b2lkIDAhPT10W2ldP3RbaV06ZX0pKSxufSh0LG4pfWZ1bmN0aW9uIEtpKGUpe3JldHVybiBWaX12YXIgamksR2ksJGksSmksWGksWWksUWksWmksZXIsdHIsbnIsaXIscnIsYXIsb3Isc3IsbHIsY3IsaHIsZHIsdXIsbXIscHIsZnIsZ3IsYnIsX3IsdnIsd3IseXIsVHIsa3IsU3IseHIsTHIsQ3IsRXIsQXIsTXIsUnIsTnIsSXIsVXIsSHIsenIsRHIsV3IsT3IsUHI7Z2xvYmFsVGhpcy5vbm1lc3NhZ2U9ZT0+e0ZpfHxCaShudWxsKX0sKEdpPWppfHwoamk9e30pKS5NSU5fVkFMVUU9LTIxNDc0ODM2NDgsR2kuTUFYX1ZBTFVFPTIxNDc0ODM2NDcsKEppPSRpfHwoJGk9e30pKS5NSU5fVkFMVUU9MCxKaS5NQVhfVkFMVUU9MjE0NzQ4MzY0NywoWWk9WGl8fChYaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09TnVtYmVyLk1BWF9WQUxVRSYmKGU9JGkuTUFYX1ZBTFVFKSx0PT09TnVtYmVyLk1BWF9WQUxVRSYmKHQ9JGkuTUFYX1ZBTFVFKSx7bGluZTplLGNoYXJhY3Rlcjp0fX0sWWkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gUGEub2JqZWN0TGl0ZXJhbCh0KSYmUGEudWludGVnZXIodC5saW5lKSYmUGEudWludGVnZXIodC5jaGFyYWN0ZXIpfSwoWmk9UWl8fChRaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixpKXtpZihQYS51aW50ZWdlcihlKSYmUGEudWludGVnZXIodCkmJlBhLnVpbnRlZ2VyKG4pJiZQYS51aW50ZWdlcihpKSlyZXR1cm57c3RhcnQ6WGkuY3JlYXRlKGUsdCksZW5kOlhpLmNyZWF0ZShuLGkpfTtpZihYaS5pcyhlKSYmWGkuaXModCkpcmV0dXJue3N0YXJ0OmUsZW5kOnR9O3Rocm93IG5ldyBFcnJvcigiUmFuZ2UjY3JlYXRlIGNhbGxlZCB3aXRoIGludmFsaWQgYXJndW1lbnRzWyIrZSsiLCAiK3QrIiwgIituKyIsICIraSsiXSIpfSxaaS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBQYS5vYmplY3RMaXRlcmFsKHQpJiZYaS5pcyh0LnN0YXJ0KSYmWGkuaXModC5lbmQpfSwodHI9ZXJ8fChlcj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybnt1cmk6ZSxyYW5nZTp0fX0sdHIuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gUGEuZGVmaW5lZCh0KSYmUWkuaXModC5yYW5nZSkmJihQYS5zdHJpbmcodC51cmkpfHxQYS51bmRlZmluZWQodC51cmkpKX0sKGlyPW5yfHwobnI9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJue3RhcmdldFVyaTplLHRhcmdldFJhbmdlOnQsdGFyZ2V0U2VsZWN0aW9uUmFuZ2U6bixvcmlnaW5TZWxlY3Rpb25SYW5nZTppfX0saXIuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gUGEuZGVmaW5lZCh0KSYmUWkuaXModC50YXJnZXRSYW5nZSkmJlBhLnN0cmluZyh0LnRhcmdldFVyaSkmJihRaS5pcyh0LnRhcmdldFNlbGVjdGlvblJhbmdlKXx8UGEudW5kZWZpbmVkKHQudGFyZ2V0U2VsZWN0aW9uUmFuZ2UpKSYmKFFpLmlzKHQub3JpZ2luU2VsZWN0aW9uUmFuZ2UpfHxQYS51bmRlZmluZWQodC5vcmlnaW5TZWxlY3Rpb25SYW5nZSkpfSwoYXI9cnJ8fChycj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixpKXtyZXR1cm57cmVkOmUsZ3JlZW46dCxibHVlOm4sYWxwaGE6aX19LGFyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIFBhLm51bWJlclJhbmdlKHQucmVkLDAsMSkmJlBhLm51bWJlclJhbmdlKHQuZ3JlZW4sMCwxKSYmUGEubnVtYmVyUmFuZ2UodC5ibHVlLDAsMSkmJlBhLm51bWJlclJhbmdlKHQuYWxwaGEsMCwxKX0sKHNyPW9yfHwob3I9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57cmFuZ2U6ZSxjb2xvcjp0fX0sc3IuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gUWkuaXModC5yYW5nZSkmJnJyLmlzKHQuY29sb3IpfSwoY3I9bHJ8fChscj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7cmV0dXJue2xhYmVsOmUsdGV4dEVkaXQ6dCxhZGRpdGlvbmFsVGV4dEVkaXRzOm59fSxjci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBQYS5zdHJpbmcodC5sYWJlbCkmJihQYS51bmRlZmluZWQodC50ZXh0RWRpdCl8fHhyLmlzKHQpKSYmKFBhLnVuZGVmaW5lZCh0LmFkZGl0aW9uYWxUZXh0RWRpdHMpfHxQYS50eXBlZEFycmF5KHQuYWRkaXRpb25hbFRleHRFZGl0cyx4ci5pcykpfSwoZHI9aHJ8fChocj17fSkpLkNvbW1lbnQ9ImNvbW1lbnQiLGRyLkltcG9ydHM9ImltcG9ydHMiLGRyLlJlZ2lvbj0icmVnaW9uIiwobXI9dXJ8fCh1cj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixpLHIpe3ZhciBhPXtzdGFydExpbmU6ZSxlbmRMaW5lOnR9O3JldHVybiBQYS5kZWZpbmVkKG4pJiYoYS5zdGFydENoYXJhY3Rlcj1uKSxQYS5kZWZpbmVkKGkpJiYoYS5lbmRDaGFyYWN0ZXI9aSksUGEuZGVmaW5lZChyKSYmKGEua2luZD1yKSxhfSxtci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBQYS51aW50ZWdlcih0LnN0YXJ0TGluZSkmJlBhLnVpbnRlZ2VyKHQuc3RhcnRMaW5lKSYmKFBhLnVuZGVmaW5lZCh0LnN0YXJ0Q2hhcmFjdGVyKXx8UGEudWludGVnZXIodC5zdGFydENoYXJhY3RlcikpJiYoUGEudW5kZWZpbmVkKHQuZW5kQ2hhcmFjdGVyKXx8UGEudWludGVnZXIodC5lbmRDaGFyYWN0ZXIpKSYmKFBhLnVuZGVmaW5lZCh0LmtpbmQpfHxQYS5zdHJpbmcodC5raW5kKSl9LChmcj1wcnx8KHByPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2xvY2F0aW9uOmUsbWVzc2FnZTp0fX0sZnIuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gUGEuZGVmaW5lZCh0KSYmZXIuaXModC5sb2NhdGlvbikmJlBhLnN0cmluZyh0Lm1lc3NhZ2UpfSwoYnI9Z3J8fChncj17fSkpLkVycm9yPTEsYnIuV2FybmluZz0yLGJyLkluZm9ybWF0aW9uPTMsYnIuSGludD00LCh2cj1fcnx8KF9yPXt9KSkuVW5uZWNlc3Nhcnk9MSx2ci5EZXByZWNhdGVkPTIsKHdyfHwod3I9e30pKS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBudWxsIT10JiZQYS5zdHJpbmcodC5ocmVmKX0sKFRyPXlyfHwoeXI9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4saSxyLGEpe3ZhciBvPXtyYW5nZTplLG1lc3NhZ2U6dH07cmV0dXJuIFBhLmRlZmluZWQobikmJihvLnNldmVyaXR5PW4pLFBhLmRlZmluZWQoaSkmJihvLmNvZGU9aSksUGEuZGVmaW5lZChyKSYmKG8uc291cmNlPXIpLFBhLmRlZmluZWQoYSkmJihvLnJlbGF0ZWRJbmZvcm1hdGlvbj1hKSxvfSxUci5pcz1mdW5jdGlvbihlKXt2YXIgdCxuPWU7cmV0dXJuIFBhLmRlZmluZWQobikmJlFpLmlzKG4ucmFuZ2UpJiZQYS5zdHJpbmcobi5tZXNzYWdlKSYmKFBhLm51bWJlcihuLnNldmVyaXR5KXx8UGEudW5kZWZpbmVkKG4uc2V2ZXJpdHkpKSYmKFBhLmludGVnZXIobi5jb2RlKXx8UGEuc3RyaW5nKG4uY29kZSl8fFBhLnVuZGVmaW5lZChuLmNvZGUpKSYmKFBhLnVuZGVmaW5lZChuLmNvZGVEZXNjcmlwdGlvbil8fFBhLnN0cmluZyhudWxsPT09KHQ9bi5jb2RlRGVzY3JpcHRpb24pfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmhyZWYpKSYmKFBhLnN0cmluZyhuLnNvdXJjZSl8fFBhLnVuZGVmaW5lZChuLnNvdXJjZSkpJiYoUGEudW5kZWZpbmVkKG4ucmVsYXRlZEluZm9ybWF0aW9uKXx8UGEudHlwZWRBcnJheShuLnJlbGF0ZWRJbmZvcm1hdGlvbixwci5pcykpfSwoU3I9a3J8fChrcj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bXSxpPTI7aTxhcmd1bWVudHMubGVuZ3RoO2krKyluW2ktMl09YXJndW1lbnRzW2ldO3ZhciByPXt0aXRsZTplLGNvbW1hbmQ6dH07cmV0dXJuIFBhLmRlZmluZWQobikmJm4ubGVuZ3RoPjAmJihyLmFyZ3VtZW50cz1uKSxyfSxTci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBQYS5kZWZpbmVkKHQpJiZQYS5zdHJpbmcodC50aXRsZSkmJlBhLnN0cmluZyh0LmNvbW1hbmQpfSwoTHI9eHJ8fCh4cj17fSkpLnJlcGxhY2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm57cmFuZ2U6ZSxuZXdUZXh0OnR9fSxMci5pbnNlcnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm57cmFuZ2U6e3N0YXJ0OmUsZW5kOmV9LG5ld1RleHQ6dH19LExyLmRlbD1mdW5jdGlvbihlKXtyZXR1cm57cmFuZ2U6ZSxuZXdUZXh0OiIifX0sTHIuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gUGEub2JqZWN0TGl0ZXJhbCh0KSYmUGEuc3RyaW5nKHQubmV3VGV4dCkmJlFpLmlzKHQucmFuZ2UpfSwoRXI9Q3J8fChDcj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7dmFyIGk9e2xhYmVsOmV9O3JldHVybiB2b2lkIDAhPT10JiYoaS5uZWVkc0NvbmZpcm1hdGlvbj10KSx2b2lkIDAhPT1uJiYoaS5kZXNjcmlwdGlvbj1uKSxpfSxFci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB2b2lkIDAhPT10JiZQYS5vYmplY3RMaXRlcmFsKHQpJiZQYS5zdHJpbmcodC5sYWJlbCkmJihQYS5ib29sZWFuKHQubmVlZHNDb25maXJtYXRpb24pfHx2b2lkIDA9PT10Lm5lZWRzQ29uZmlybWF0aW9uKSYmKFBhLnN0cmluZyh0LmRlc2NyaXB0aW9uKXx8dm9pZCAwPT09dC5kZXNjcmlwdGlvbil9LChBcnx8KEFyPXt9KSkuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfSwoUnI9TXJ8fChNcj17fSkpLnJlcGxhY2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybntyYW5nZTplLG5ld1RleHQ6dCxhbm5vdGF0aW9uSWQ6bn19LFJyLmluc2VydD1mdW5jdGlvbihlLHQsbil7cmV0dXJue3JhbmdlOntzdGFydDplLGVuZDplfSxuZXdUZXh0OnQsYW5ub3RhdGlvbklkOm59fSxSci5kZWw9ZnVuY3Rpb24oZSx0KXtyZXR1cm57cmFuZ2U6ZSxuZXdUZXh0OiIiLGFubm90YXRpb25JZDp0fX0sUnIuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4geHIuaXModCkmJihDci5pcyh0LmFubm90YXRpb25JZCl8fEFyLmlzKHQuYW5ub3RhdGlvbklkKSl9LChJcj1Ocnx8KE5yPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3RleHREb2N1bWVudDplLGVkaXRzOnR9fSxJci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBQYS5kZWZpbmVkKHQpJiZLci5pcyh0LnRleHREb2N1bWVudCkmJkFycmF5LmlzQXJyYXkodC5lZGl0cyl9LChIcj1Vcnx8KFVyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT17a2luZDoiY3JlYXRlIix1cmk6ZX07cmV0dXJuIHZvaWQgMD09PXR8fHZvaWQgMD09PXQub3ZlcndyaXRlJiZ2b2lkIDA9PT10Lmlnbm9yZUlmRXhpc3RzfHwoaS5vcHRpb25zPXQpLHZvaWQgMCE9PW4mJihpLmFubm90YXRpb25JZD1uKSxpfSxIci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB0JiYiY3JlYXRlIj09PXQua2luZCYmUGEuc3RyaW5nKHQudXJpKSYmKHZvaWQgMD09PXQub3B0aW9uc3x8KHZvaWQgMD09PXQub3B0aW9ucy5vdmVyd3JpdGV8fFBhLmJvb2xlYW4odC5vcHRpb25zLm92ZXJ3cml0ZSkpJiYodm9pZCAwPT09dC5vcHRpb25zLmlnbm9yZUlmRXhpc3RzfHxQYS5ib29sZWFuKHQub3B0aW9ucy5pZ25vcmVJZkV4aXN0cykpKSYmKHZvaWQgMD09PXQuYW5ub3RhdGlvbklkfHxBci5pcyh0LmFubm90YXRpb25JZCkpfSwoRHI9enJ8fCh6cj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixpKXt2YXIgcj17a2luZDoicmVuYW1lIixvbGRVcmk6ZSxuZXdVcmk6dH07cmV0dXJuIHZvaWQgMD09PW58fHZvaWQgMD09PW4ub3ZlcndyaXRlJiZ2b2lkIDA9PT1uLmlnbm9yZUlmRXhpc3RzfHwoci5vcHRpb25zPW4pLHZvaWQgMCE9PWkmJihyLmFubm90YXRpb25JZD1pKSxyfSxEci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB0JiYicmVuYW1lIj09PXQua2luZCYmUGEuc3RyaW5nKHQub2xkVXJpKSYmUGEuc3RyaW5nKHQubmV3VXJpKSYmKHZvaWQgMD09PXQub3B0aW9uc3x8KHZvaWQgMD09PXQub3B0aW9ucy5vdmVyd3JpdGV8fFBhLmJvb2xlYW4odC5vcHRpb25zLm92ZXJ3cml0ZSkpJiYodm9pZCAwPT09dC5vcHRpb25zLmlnbm9yZUlmRXhpc3RzfHxQYS5ib29sZWFuKHQub3B0aW9ucy5pZ25vcmVJZkV4aXN0cykpKSYmKHZvaWQgMD09PXQuYW5ub3RhdGlvbklkfHxBci5pcyh0LmFubm90YXRpb25JZCkpfSwoT3I9V3J8fChXcj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7dmFyIGk9e2tpbmQ6ImRlbGV0ZSIsdXJpOmV9O3JldHVybiB2b2lkIDA9PT10fHx2b2lkIDA9PT10LnJlY3Vyc2l2ZSYmdm9pZCAwPT09dC5pZ25vcmVJZk5vdEV4aXN0c3x8KGkub3B0aW9ucz10KSx2b2lkIDAhPT1uJiYoaS5hbm5vdGF0aW9uSWQ9biksaX0sT3IuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gdCYmImRlbGV0ZSI9PT10LmtpbmQmJlBhLnN0cmluZyh0LnVyaSkmJih2b2lkIDA9PT10Lm9wdGlvbnN8fCh2b2lkIDA9PT10Lm9wdGlvbnMucmVjdXJzaXZlfHxQYS5ib29sZWFuKHQub3B0aW9ucy5yZWN1cnNpdmUpKSYmKHZvaWQgMD09PXQub3B0aW9ucy5pZ25vcmVJZk5vdEV4aXN0c3x8UGEuYm9vbGVhbih0Lm9wdGlvbnMuaWdub3JlSWZOb3RFeGlzdHMpKSkmJih2b2lkIDA9PT10LmFubm90YXRpb25JZHx8QXIuaXModC5hbm5vdGF0aW9uSWQpKX0sKFByfHwoUHI9e30pKS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB0JiYodm9pZCAwIT09dC5jaGFuZ2VzfHx2b2lkIDAhPT10LmRvY3VtZW50Q2hhbmdlcykmJih2b2lkIDA9PT10LmRvY3VtZW50Q2hhbmdlc3x8dC5kb2N1bWVudENoYW5nZXMuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBQYS5zdHJpbmcoZS5raW5kKT9Vci5pcyhlKXx8enIuaXMoZSl8fFdyLmlzKGUpOk5yLmlzKGUpfSkpKX07dmFyIHFyLEZyLEJyLFZyLEtyLGpyLEdyLCRyLEpyLFhyLFlyLFFyLFpyLGVhLHRhLG5hLGlhLHJhLGFhLG9hLHNhLGxhLGNhLGhhLGRhLHVhLG1hLHBhLGZhLGdhLGJhLF9hLHZhLHdhLHlhLFRhLGthLFNhLHhhLExhLENhLEVhLEFhLE1hLFJhLE5hLElhLFVhLEhhLHphLERhLFdhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMuZWRpdHM9ZSx0aGlzLmNoYW5nZUFubm90YXRpb25zPXR9cmV0dXJuIGUucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbihlLHQsbil7dmFyIGkscjtpZih2b2lkIDA9PT1uP2k9eHIuaW5zZXJ0KGUsdCk6QXIuaXMobik/KHI9bixpPU1yLmluc2VydChlLHQsbikpOih0aGlzLmFzc2VydENoYW5nZUFubm90YXRpb25zKHRoaXMuY2hhbmdlQW5ub3RhdGlvbnMpLHI9dGhpcy5jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UobiksaT1Nci5pbnNlcnQoZSx0LHIpKSx0aGlzLmVkaXRzLnB1c2goaSksdm9pZCAwIT09cilyZXR1cm4gcn0sZS5wcm90b3R5cGUucmVwbGFjZT1mdW5jdGlvbihlLHQsbil7dmFyIGkscjtpZih2b2lkIDA9PT1uP2k9eHIucmVwbGFjZShlLHQpOkFyLmlzKG4pPyhyPW4saT1Nci5yZXBsYWNlKGUsdCxuKSk6KHRoaXMuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnModGhpcy5jaGFuZ2VBbm5vdGF0aW9ucykscj10aGlzLmNoYW5nZUFubm90YXRpb25zLm1hbmFnZShuKSxpPU1yLnJlcGxhY2UoZSx0LHIpKSx0aGlzLmVkaXRzLnB1c2goaSksdm9pZCAwIT09cilyZXR1cm4gcn0sZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG4saTtpZih2b2lkIDA9PT10P249eHIuZGVsKGUpOkFyLmlzKHQpPyhpPXQsbj1Nci5kZWwoZSx0KSk6KHRoaXMuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnModGhpcy5jaGFuZ2VBbm5vdGF0aW9ucyksaT10aGlzLmNoYW5nZUFubm90YXRpb25zLm1hbmFnZSh0KSxuPU1yLmRlbChlLGkpKSx0aGlzLmVkaXRzLnB1c2gobiksdm9pZCAwIT09aSlyZXR1cm4gaX0sZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMuZWRpdHMucHVzaChlKX0sZS5wcm90b3R5cGUuYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRpdHN9LGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5lZGl0cy5zcGxpY2UoMCx0aGlzLmVkaXRzLmxlbmd0aCl9LGUucHJvdG90eXBlLmFzc2VydENoYW5nZUFubm90YXRpb25zPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IEVycm9yKCJUZXh0IGVkaXQgY2hhbmdlIGlzIG5vdCBjb25maWd1cmVkIHRvIG1hbmFnZSBjaGFuZ2UgYW5ub3RhdGlvbnMuIil9LGV9KCksT2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuX2Fubm90YXRpb25zPXZvaWQgMD09PWU/T2JqZWN0LmNyZWF0ZShudWxsKTplLHRoaXMuX2NvdW50ZXI9MCx0aGlzLl9zaXplPTB9cmV0dXJuIGUucHJvdG90eXBlLmFsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hbm5vdGF0aW9uc30sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJzaXplIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NpemV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUubWFuYWdlPWZ1bmN0aW9uKGUsdCl7dmFyIG47aWYoQXIuaXMoZSk/bj1lOihuPXRoaXMubmV4dElkKCksdD1lKSx2b2lkIDAhPT10aGlzLl9hbm5vdGF0aW9uc1tuXSl0aHJvdyBuZXcgRXJyb3IoIklkICIrbisiIGlzIGFscmVhZHkgaW4gdXNlLiIpO2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IEVycm9yKCJObyBhbm5vdGF0aW9uIHByb3ZpZGVkIGZvciBpZCAiK24pO3JldHVybiB0aGlzLl9hbm5vdGF0aW9uc1tuXT10LHRoaXMuX3NpemUrKyxufSxlLnByb3RvdHlwZS5uZXh0SWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY291bnRlcisrLHRoaXMuX2NvdW50ZXIudG9TdHJpbmcoKX0sZX0oKTshZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciB0PXRoaXM7dGhpcy5fdGV4dEVkaXRDaGFuZ2VzPU9iamVjdC5jcmVhdGUobnVsbCksdm9pZCAwIT09ZT8odGhpcy5fd29ya3NwYWNlRWRpdD1lLGUuZG9jdW1lbnRDaGFuZ2VzPyh0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucz1uZXcgT2EoZS5jaGFuZ2VBbm5vdGF0aW9ucyksZS5jaGFuZ2VBbm5vdGF0aW9ucz10aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5hbGwoKSxlLmRvY3VtZW50Q2hhbmdlcy5mb3JFYWNoKChmdW5jdGlvbihlKXtpZihOci5pcyhlKSl7dmFyIG49bmV3IFdhKGUuZWRpdHMsdC5fY2hhbmdlQW5ub3RhdGlvbnMpO3QuX3RleHRFZGl0Q2hhbmdlc1tlLnRleHREb2N1bWVudC51cmldPW59fSkpKTplLmNoYW5nZXMmJk9iamVjdC5rZXlzKGUuY2hhbmdlcykuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIGk9bmV3IFdhKGUuY2hhbmdlc1tuXSk7dC5fdGV4dEVkaXRDaGFuZ2VzW25dPWl9KSkpOnRoaXMuX3dvcmtzcGFjZUVkaXQ9e319T2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJlZGl0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMCE9PXRoaXMuX2NoYW5nZUFubm90YXRpb25zJiYoMD09PXRoaXMuX2NoYW5nZUFubm90YXRpb25zLnNpemU/dGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VBbm5vdGF0aW9ucz12b2lkIDA6dGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VBbm5vdGF0aW9ucz10aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5hbGwoKSksdGhpcy5fd29ya3NwYWNlRWRpdH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5nZXRUZXh0RWRpdENoYW5nZT1mdW5jdGlvbihlKXtpZihLci5pcyhlKSl7aWYodGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2hhbmdlcy4iKTt2YXIgdD17dXJpOmUudXJpLHZlcnNpb246ZS52ZXJzaW9ufTtpZighKGk9dGhpcy5fdGV4dEVkaXRDaGFuZ2VzW3QudXJpXSkpe3ZhciBuPXt0ZXh0RG9jdW1lbnQ6dCxlZGl0czpyPVtdfTt0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKG4pLGk9bmV3IFdhKHIsdGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMpLHRoaXMuX3RleHRFZGl0Q2hhbmdlc1t0LnVyaV09aX1yZXR1cm4gaX1pZih0aGlzLmluaXRDaGFuZ2VzKCksdm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VzKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIG5vcm1hbCB0ZXh0IGVkaXQgY2hhbmdlcy4iKTt2YXIgaTtpZighKGk9dGhpcy5fdGV4dEVkaXRDaGFuZ2VzW2VdKSl7dmFyIHI9W107dGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VzW2VdPXIsaT1uZXcgV2EociksdGhpcy5fdGV4dEVkaXRDaGFuZ2VzW2VdPWl9cmV0dXJuIGl9LGUucHJvdG90eXBlLmluaXREb2N1bWVudENoYW5nZXM9ZnVuY3Rpb24oKXt2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcyYmdm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VzJiYodGhpcy5fY2hhbmdlQW5ub3RhdGlvbnM9bmV3IE9hLHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzPVtdLHRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlQW5ub3RhdGlvbnM9dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMuYWxsKCkpfSxlLnByb3RvdHlwZS5pbml0Q2hhbmdlcz1mdW5jdGlvbigpe3ZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzJiZ2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMmJih0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXM9T2JqZWN0LmNyZWF0ZShudWxsKSl9LGUucHJvdG90eXBlLmNyZWF0ZUZpbGU9ZnVuY3Rpb24oZSx0LG4pe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIGkscixhO2lmKENyLmlzKHQpfHxBci5pcyh0KT9pPXQ6bj10LHZvaWQgMD09PWk/cj1Vci5jcmVhdGUoZSxuKTooYT1Bci5pcyhpKT9pOnRoaXMuX2NoYW5nZUFubm90YXRpb25zLm1hbmFnZShpKSxyPVVyLmNyZWF0ZShlLG4sYSkpLHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2gociksdm9pZCAwIT09YSlyZXR1cm4gYX0sZS5wcm90b3R5cGUucmVuYW1lRmlsZT1mdW5jdGlvbihlLHQsbixpKXtpZih0aGlzLmluaXREb2N1bWVudENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcyl0aHJvdyBuZXcgRXJyb3IoIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBkb2N1bWVudCBjaGFuZ2VzLiIpO3ZhciByLGEsbztpZihDci5pcyhuKXx8QXIuaXMobik/cj1uOmk9bix2b2lkIDA9PT1yP2E9enIuY3JlYXRlKGUsdCxpKToobz1Bci5pcyhyKT9yOnRoaXMuX2NoYW5nZUFubm90YXRpb25zLm1hbmFnZShyKSxhPXpyLmNyZWF0ZShlLHQsaSxvKSksdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMucHVzaChhKSx2b2lkIDAhPT1vKXJldHVybiBvfSxlLnByb3RvdHlwZS5kZWxldGVGaWxlPWZ1bmN0aW9uKGUsdCxuKXtpZih0aGlzLmluaXREb2N1bWVudENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcyl0aHJvdyBuZXcgRXJyb3IoIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBkb2N1bWVudCBjaGFuZ2VzLiIpO3ZhciBpLHIsYTtpZihDci5pcyh0KXx8QXIuaXModCk/aT10Om49dCx2b2lkIDA9PT1pP3I9V3IuY3JlYXRlKGUsbik6KGE9QXIuaXMoaSk/aTp0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UoaSkscj1Xci5jcmVhdGUoZSxuLGEpKSx0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKHIpLHZvaWQgMCE9PWEpcmV0dXJuIGF9fSgpLChGcj1xcnx8KHFyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybnt1cmk6ZX19LEZyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIFBhLmRlZmluZWQodCkmJlBhLnN0cmluZyh0LnVyaSl9LChWcj1Ccnx8KEJyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3VyaTplLHZlcnNpb246dH19LFZyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIFBhLmRlZmluZWQodCkmJlBhLnN0cmluZyh0LnVyaSkmJlBhLmludGVnZXIodC52ZXJzaW9uKX0sKGpyPUtyfHwoS3I9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dXJpOmUsdmVyc2lvbjp0fX0sanIuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gUGEuZGVmaW5lZCh0KSYmUGEuc3RyaW5nKHQudXJpKSYmKG51bGw9PT10LnZlcnNpb258fFBhLmludGVnZXIodC52ZXJzaW9uKSl9LCgkcj1Hcnx8KEdyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLGkpe3JldHVybnt1cmk6ZSxsYW5ndWFnZUlkOnQsdmVyc2lvbjpuLHRleHQ6aX19LCRyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIFBhLmRlZmluZWQodCkmJlBhLnN0cmluZyh0LnVyaSkmJlBhLnN0cmluZyh0Lmxhbmd1YWdlSWQpJiZQYS5pbnRlZ2VyKHQudmVyc2lvbikmJlBhLnN0cmluZyh0LnRleHQpfSwoWHI9SnJ8fChKcj17fSkpLlBsYWluVGV4dD0icGxhaW50ZXh0IixYci5NYXJrZG93bj0ibWFya2Rvd24iLGZ1bmN0aW9uKGUpe2UuaXM9ZnVuY3Rpb24odCl7dmFyIG49dDtyZXR1cm4gbj09PWUuUGxhaW5UZXh0fHxuPT09ZS5NYXJrZG93bn19KEpyfHwoSnI9e30pKSwoWXJ8fChZcj17fSkpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIFBhLm9iamVjdExpdGVyYWwoZSkmJkpyLmlzKHQua2luZCkmJlBhLnN0cmluZyh0LnZhbHVlKX0sKFpyPVFyfHwoUXI9e30pKS5UZXh0PTEsWnIuTWV0aG9kPTIsWnIuRnVuY3Rpb249Myxaci5Db25zdHJ1Y3Rvcj00LFpyLkZpZWxkPTUsWnIuVmFyaWFibGU9Nixaci5DbGFzcz03LFpyLkludGVyZmFjZT04LFpyLk1vZHVsZT05LFpyLlByb3BlcnR5PTEwLFpyLlVuaXQ9MTEsWnIuVmFsdWU9MTIsWnIuRW51bT0xMyxaci5LZXl3b3JkPTE0LFpyLlNuaXBwZXQ9MTUsWnIuQ29sb3I9MTYsWnIuRmlsZT0xNyxaci5SZWZlcmVuY2U9MTgsWnIuRm9sZGVyPTE5LFpyLkVudW1NZW1iZXI9MjAsWnIuQ29uc3RhbnQ9MjEsWnIuU3RydWN0PTIyLFpyLkV2ZW50PTIzLFpyLk9wZXJhdG9yPTI0LFpyLlR5cGVQYXJhbWV0ZXI9MjUsKHRhPWVhfHwoZWE9e30pKS5QbGFpblRleHQ9MSx0YS5TbmlwcGV0PTIsKG5hfHwobmE9e30pKS5EZXByZWNhdGVkPTEsKHJhPWlhfHwoaWE9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybntuZXdUZXh0OmUsaW5zZXJ0OnQscmVwbGFjZTpufX0scmEuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gdCYmUGEuc3RyaW5nKHQubmV3VGV4dCkmJlFpLmlzKHQuaW5zZXJ0KSYmUWkuaXModC5yZXBsYWNlKX0sKG9hPWFhfHwoYWE9e30pKS5hc0lzPTEsb2EuYWRqdXN0SW5kZW50YXRpb249Miwoc2F8fChzYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlKXtyZXR1cm57bGFiZWw6ZX19LChsYXx8KGxhPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2l0ZW1zOmV8fFtdLGlzSW5jb21wbGV0ZTohIXR9fSwoaGE9Y2F8fChjYT17fSkpLmZyb21QbGFpblRleHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvW1xcYCpfe31bXF0oKSMrXC0uIV0vZywiXFwkJiIpfSxoYS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBQYS5zdHJpbmcodCl8fFBhLm9iamVjdExpdGVyYWwodCkmJlBhLnN0cmluZyh0Lmxhbmd1YWdlKSYmUGEuc3RyaW5nKHQudmFsdWUpfSwoZGF8fChkYT17fSkpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuISF0JiZQYS5vYmplY3RMaXRlcmFsKHQpJiYoWXIuaXModC5jb250ZW50cyl8fGNhLmlzKHQuY29udGVudHMpfHxQYS50eXBlZEFycmF5KHQuY29udGVudHMsY2EuaXMpKSYmKHZvaWQgMD09PWUucmFuZ2V8fFFpLmlzKGUucmFuZ2UpKX0sKHVhfHwodWE9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD97bGFiZWw6ZSxkb2N1bWVudGF0aW9uOnR9OntsYWJlbDplfX0sKG1hfHwobWE9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W10saT0yO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspbltpLTJdPWFyZ3VtZW50c1tpXTt2YXIgcj17bGFiZWw6ZX07cmV0dXJuIFBhLmRlZmluZWQodCkmJihyLmRvY3VtZW50YXRpb249dCksUGEuZGVmaW5lZChuKT9yLnBhcmFtZXRlcnM9bjpyLnBhcmFtZXRlcnM9W10scn0sKGZhPXBhfHwocGE9e30pKS5UZXh0PTEsZmEuUmVhZD0yLGZhLldyaXRlPTMsKGdhfHwoZ2E9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj17cmFuZ2U6ZX07cmV0dXJuIFBhLm51bWJlcih0KSYmKG4ua2luZD10KSxufSwoX2E9YmF8fChiYT17fSkpLkZpbGU9MSxfYS5Nb2R1bGU9MixfYS5OYW1lc3BhY2U9MyxfYS5QYWNrYWdlPTQsX2EuQ2xhc3M9NSxfYS5NZXRob2Q9NixfYS5Qcm9wZXJ0eT03LF9hLkZpZWxkPTgsX2EuQ29uc3RydWN0b3I9OSxfYS5FbnVtPTEwLF9hLkludGVyZmFjZT0xMSxfYS5GdW5jdGlvbj0xMixfYS5WYXJpYWJsZT0xMyxfYS5Db25zdGFudD0xNCxfYS5TdHJpbmc9MTUsX2EuTnVtYmVyPTE2LF9hLkJvb2xlYW49MTcsX2EuQXJyYXk9MTgsX2EuT2JqZWN0PTE5LF9hLktleT0yMCxfYS5OdWxsPTIxLF9hLkVudW1NZW1iZXI9MjIsX2EuU3RydWN0PTIzLF9hLkV2ZW50PTI0LF9hLk9wZXJhdG9yPTI1LF9hLlR5cGVQYXJhbWV0ZXI9MjYsKHZhfHwodmE9e30pKS5EZXByZWNhdGVkPTEsKHdhfHwod2E9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4saSxyKXt2YXIgYT17bmFtZTplLGtpbmQ6dCxsb2NhdGlvbjp7dXJpOmkscmFuZ2U6bn19O3JldHVybiByJiYoYS5jb250YWluZXJOYW1lPXIpLGF9LChUYT15YXx8KHlhPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLGkscixhKXt2YXIgbz17bmFtZTplLGRldGFpbDp0LGtpbmQ6bixyYW5nZTppLHNlbGVjdGlvblJhbmdlOnJ9O3JldHVybiB2b2lkIDAhPT1hJiYoby5jaGlsZHJlbj1hKSxvfSxUYS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB0JiZQYS5zdHJpbmcodC5uYW1lKSYmUGEubnVtYmVyKHQua2luZCkmJlFpLmlzKHQucmFuZ2UpJiZRaS5pcyh0LnNlbGVjdGlvblJhbmdlKSYmKHZvaWQgMD09PXQuZGV0YWlsfHxQYS5zdHJpbmcodC5kZXRhaWwpKSYmKHZvaWQgMD09PXQuZGVwcmVjYXRlZHx8UGEuYm9vbGVhbih0LmRlcHJlY2F0ZWQpKSYmKHZvaWQgMD09PXQuY2hpbGRyZW58fEFycmF5LmlzQXJyYXkodC5jaGlsZHJlbikpJiYodm9pZCAwPT09dC50YWdzfHxBcnJheS5pc0FycmF5KHQudGFncykpfSwoU2E9a2F8fChrYT17fSkpLkVtcHR5PSIiLFNhLlF1aWNrRml4PSJxdWlja2ZpeCIsU2EuUmVmYWN0b3I9InJlZmFjdG9yIixTYS5SZWZhY3RvckV4dHJhY3Q9InJlZmFjdG9yLmV4dHJhY3QiLFNhLlJlZmFjdG9ySW5saW5lPSJyZWZhY3Rvci5pbmxpbmUiLFNhLlJlZmFjdG9yUmV3cml0ZT0icmVmYWN0b3IucmV3cml0ZSIsU2EuU291cmNlPSJzb3VyY2UiLFNhLlNvdXJjZU9yZ2FuaXplSW1wb3J0cz0ic291cmNlLm9yZ2FuaXplSW1wb3J0cyIsU2EuU291cmNlRml4QWxsPSJzb3VyY2UuZml4QWxsIiwoTGE9eGF8fCh4YT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXtkaWFnbm9zdGljczplfTtyZXR1cm4gbnVsbCE9dCYmKG4ub25seT10KSxufSxMYS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBQYS5kZWZpbmVkKHQpJiZQYS50eXBlZEFycmF5KHQuZGlhZ25vc3RpY3MseXIuaXMpJiYodm9pZCAwPT09dC5vbmx5fHxQYS50eXBlZEFycmF5KHQub25seSxQYS5zdHJpbmcpKX0sKEVhPUNhfHwoQ2E9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXt0aXRsZTplfSxyPSEwO3JldHVybiJzdHJpbmciPT10eXBlb2YgdD8ocj0hMSxpLmtpbmQ9dCk6a3IuaXModCk/aS5jb21tYW5kPXQ6aS5lZGl0PXQsciYmdm9pZCAwIT09biYmKGkua2luZD1uKSxpfSxFYS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB0JiZQYS5zdHJpbmcodC50aXRsZSkmJih2b2lkIDA9PT10LmRpYWdub3N0aWNzfHxQYS50eXBlZEFycmF5KHQuZGlhZ25vc3RpY3MseXIuaXMpKSYmKHZvaWQgMD09PXQua2luZHx8UGEuc3RyaW5nKHQua2luZCkpJiYodm9pZCAwIT09dC5lZGl0fHx2b2lkIDAhPT10LmNvbW1hbmQpJiYodm9pZCAwPT09dC5jb21tYW5kfHxrci5pcyh0LmNvbW1hbmQpKSYmKHZvaWQgMD09PXQuaXNQcmVmZXJyZWR8fFBhLmJvb2xlYW4odC5pc1ByZWZlcnJlZCkpJiYodm9pZCAwPT09dC5lZGl0fHxQci5pcyh0LmVkaXQpKX0sKE1hPUFhfHwoQWE9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj17cmFuZ2U6ZX07cmV0dXJuIFBhLmRlZmluZWQodCkmJihuLmRhdGE9dCksbn0sTWEuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gUGEuZGVmaW5lZCh0KSYmUWkuaXModC5yYW5nZSkmJihQYS51bmRlZmluZWQodC5jb21tYW5kKXx8a3IuaXModC5jb21tYW5kKSl9LChOYT1SYXx8KFJhPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3RhYlNpemU6ZSxpbnNlcnRTcGFjZXM6dH19LE5hLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIFBhLmRlZmluZWQodCkmJlBhLnVpbnRlZ2VyKHQudGFiU2l6ZSkmJlBhLmJvb2xlYW4odC5pbnNlcnRTcGFjZXMpfSwoVWE9SWF8fChJYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7cmV0dXJue3JhbmdlOmUsdGFyZ2V0OnQsZGF0YTpufX0sVWEuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gUGEuZGVmaW5lZCh0KSYmUWkuaXModC5yYW5nZSkmJihQYS51bmRlZmluZWQodC50YXJnZXQpfHxQYS5zdHJpbmcodC50YXJnZXQpKX0sKHphPUhhfHwoSGE9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57cmFuZ2U6ZSxwYXJlbnQ6dH19LHphLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHZvaWQgMCE9PXQmJlFpLmlzKHQucmFuZ2UpJiYodm9pZCAwPT09dC5wYXJlbnR8fHphLmlzKHQucGFyZW50KSl9LGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSxuKXtpZihlLmxlbmd0aDw9MSlyZXR1cm4gZTt2YXIgaT1lLmxlbmd0aC8yfDAscj1lLnNsaWNlKDAsaSksYT1lLnNsaWNlKGkpO3QocixuKSx0KGEsbik7Zm9yKHZhciBvPTAscz0wLGw9MDtvPHIubGVuZ3RoJiZzPGEubGVuZ3RoOyl7dmFyIGM9bihyW29dLGFbc10pO2VbbCsrXT1jPD0wP3JbbysrXTphW3MrK119Zm9yKDtvPHIubGVuZ3RoOyllW2wrK109cltvKytdO2Zvcig7czxhLmxlbmd0aDspZVtsKytdPWFbcysrXTtyZXR1cm4gZX1lLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixpKXtyZXR1cm4gbmV3IEJhKGUsdCxuLGkpfSxlLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuISEoUGEuZGVmaW5lZCh0KSYmUGEuc3RyaW5nKHQudXJpKSYmKFBhLnVuZGVmaW5lZCh0Lmxhbmd1YWdlSWQpfHxQYS5zdHJpbmcodC5sYW5ndWFnZUlkKSkmJlBhLnVpbnRlZ2VyKHQubGluZUNvdW50KSYmUGEuZnVuYyh0LmdldFRleHQpJiZQYS5mdW5jKHQucG9zaXRpb25BdCkmJlBhLmZ1bmModC5vZmZzZXRBdCkpfSxlLmFwcGx5RWRpdHM9ZnVuY3Rpb24oZSxuKXtmb3IodmFyIGk9ZS5nZXRUZXh0KCkscj10KG4sKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5yYW5nZS5zdGFydC5saW5lLXQucmFuZ2Uuc3RhcnQubGluZTtyZXR1cm4gMD09PW4/ZS5yYW5nZS5zdGFydC5jaGFyYWN0ZXItdC5yYW5nZS5zdGFydC5jaGFyYWN0ZXI6bn0pKSxhPWkubGVuZ3RoLG89ci5sZW5ndGgtMTtvPj0wO28tLSl7dmFyIHM9cltvXSxsPWUub2Zmc2V0QXQocy5yYW5nZS5zdGFydCksYz1lLm9mZnNldEF0KHMucmFuZ2UuZW5kKTtpZighKGM8PWEpKXRocm93IG5ldyBFcnJvcigiT3ZlcmxhcHBpbmcgZWRpdCIpO2k9aS5zdWJzdHJpbmcoMCxsKStzLm5ld1RleHQraS5zdWJzdHJpbmcoYyxpLmxlbmd0aCksYT1sfXJldHVybiBpfX0oRGF8fChEYT17fSkpO3ZhciBQYSxxYSxGYSxCYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4saSl7dGhpcy5fdXJpPWUsdGhpcy5fbGFuZ3VhZ2VJZD10LHRoaXMuX3ZlcnNpb249bix0aGlzLl9jb250ZW50PWksdGhpcy5fbGluZU9mZnNldHM9dm9pZCAwfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInVyaSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl91cml9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJsYW5ndWFnZUlkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xhbmd1YWdlSWR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ2ZXJzaW9uIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnNpb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuZ2V0VGV4dD1mdW5jdGlvbihlKXtpZihlKXt2YXIgdD10aGlzLm9mZnNldEF0KGUuc3RhcnQpLG49dGhpcy5vZmZzZXRBdChlLmVuZCk7cmV0dXJuIHRoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKHQsbil9cmV0dXJuIHRoaXMuX2NvbnRlbnR9LGUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQpe3RoaXMuX2NvbnRlbnQ9ZS50ZXh0LHRoaXMuX3ZlcnNpb249dCx0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9LGUucHJvdG90eXBlLmdldExpbmVPZmZzZXRzPWZ1bmN0aW9uKCl7aWYodm9pZCAwPT09dGhpcy5fbGluZU9mZnNldHMpe2Zvcih2YXIgZT1bXSx0PXRoaXMuX2NvbnRlbnQsbj0hMCxpPTA7aTx0Lmxlbmd0aDtpKyspe24mJihlLnB1c2goaSksbj0hMSk7dmFyIHI9dC5jaGFyQXQoaSk7bj0iXHIiPT09cnx8IlxuIj09PXIsIlxyIj09PXImJmkrMTx0Lmxlbmd0aCYmIlxuIj09PXQuY2hhckF0KGkrMSkmJmkrK31uJiZ0Lmxlbmd0aD4wJiZlLnB1c2godC5sZW5ndGgpLHRoaXMuX2xpbmVPZmZzZXRzPWV9cmV0dXJuIHRoaXMuX2xpbmVPZmZzZXRzfSxlLnByb3RvdHlwZS5wb3NpdGlvbkF0PWZ1bmN0aW9uKGUpe2U9TWF0aC5tYXgoTWF0aC5taW4oZSx0aGlzLl9jb250ZW50Lmxlbmd0aCksMCk7dmFyIHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpLG49MCxpPXQubGVuZ3RoO2lmKDA9PT1pKXJldHVybiBYaS5jcmVhdGUoMCxlKTtmb3IoO248aTspe3ZhciByPU1hdGguZmxvb3IoKG4raSkvMik7dFtyXT5lP2k9cjpuPXIrMX12YXIgYT1uLTE7cmV0dXJuIFhpLmNyZWF0ZShhLGUtdFthXSl9LGUucHJvdG90eXBlLm9mZnNldEF0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0TGluZU9mZnNldHMoKTtpZihlLmxpbmU+PXQubGVuZ3RoKXJldHVybiB0aGlzLl9jb250ZW50Lmxlbmd0aDtpZihlLmxpbmU8MClyZXR1cm4gMDt2YXIgbj10W2UubGluZV0saT1lLmxpbmUrMTx0Lmxlbmd0aD90W2UubGluZSsxXTp0aGlzLl9jb250ZW50Lmxlbmd0aDtyZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4obitlLmNoYXJhY3RlcixpKSxuKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJsaW5lQ291bnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRMaW5lT2Zmc2V0cygpLmxlbmd0aH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlfSgpO3FhPVBhfHwoUGE9e30pLEZhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcscWEuZGVmaW5lZD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZX0scWEudW5kZWZpbmVkPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lfSxxYS5ib29sZWFuPWZ1bmN0aW9uKGUpe3JldHVybiEwPT09ZXx8ITE9PT1lfSxxYS5zdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1GYS5jYWxsKGUpfSxxYS5udW1iZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1GYS5jYWxsKGUpfSxxYS5udW1iZXJSYW5nZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1GYS5jYWxsKGUpJiZ0PD1lJiZlPD1ufSxxYS5pbnRlZ2VyPWZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09RmEuY2FsbChlKSYmLTIxNDc0ODM2NDg8PWUmJmU8PTIxNDc0ODM2NDd9LHFhLnVpbnRlZ2VyPWZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09RmEuY2FsbChlKSYmMDw9ZSYmZTw9MjE0NzQ4MzY0N30scWEuZnVuYz1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09RmEuY2FsbChlKX0scWEub2JqZWN0TGl0ZXJhbD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZX0scWEudHlwZWRBcnJheT1mdW5jdGlvbihlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiZlLmV2ZXJ5KHQpfTt2YXIgVmEsS2EsamEsR2EsJGEsSmEsWGEsWWEsUWEsWmE9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4saSl7dGhpcy5fdXJpPWUsdGhpcy5fbGFuZ3VhZ2VJZD10LHRoaXMuX3ZlcnNpb249bix0aGlzLl9jb250ZW50PWksdGhpcy5fbGluZU9mZnNldHM9dm9pZCAwfWdldCB1cmkoKXtyZXR1cm4gdGhpcy5fdXJpfWdldCBsYW5ndWFnZUlkKCl7cmV0dXJuIHRoaXMuX2xhbmd1YWdlSWR9Z2V0IHZlcnNpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbn1nZXRUZXh0KGUpe2lmKGUpe2NvbnN0IHQ9dGhpcy5vZmZzZXRBdChlLnN0YXJ0KSxuPXRoaXMub2Zmc2V0QXQoZS5lbmQpO3JldHVybiB0aGlzLl9jb250ZW50LnN1YnN0cmluZyh0LG4pfXJldHVybiB0aGlzLl9jb250ZW50fXVwZGF0ZShlLHQpe2ZvcihsZXQgdCBvZiBlKWlmKFphLmlzSW5jcmVtZW50YWwodCkpe2NvbnN0IGU9bm8odC5yYW5nZSksbj10aGlzLm9mZnNldEF0KGUuc3RhcnQpLGk9dGhpcy5vZmZzZXRBdChlLmVuZCk7dGhpcy5fY29udGVudD10aGlzLl9jb250ZW50LnN1YnN0cmluZygwLG4pK3QudGV4dCt0aGlzLl9jb250ZW50LnN1YnN0cmluZyhpLHRoaXMuX2NvbnRlbnQubGVuZ3RoKTtjb25zdCByPU1hdGgubWF4KGUuc3RhcnQubGluZSwwKSxhPU1hdGgubWF4KGUuZW5kLmxpbmUsMCk7bGV0IG89dGhpcy5fbGluZU9mZnNldHM7Y29uc3Qgcz10byh0LnRleHQsITEsbik7aWYoYS1yPT09cy5sZW5ndGgpZm9yKGxldCBlPTAsdD1zLmxlbmd0aDtlPHQ7ZSsrKW9bZStyKzFdPXNbZV07ZWxzZSBzLmxlbmd0aDwxZTQ/by5zcGxpY2UocisxLGEtciwuLi5zKTp0aGlzLl9saW5lT2Zmc2V0cz1vPW8uc2xpY2UoMCxyKzEpLmNvbmNhdChzLG8uc2xpY2UoYSsxKSk7Y29uc3QgbD10LnRleHQubGVuZ3RoLShpLW4pO2lmKDAhPT1sKWZvcihsZXQgZT1yKzErcy5sZW5ndGgsdD1vLmxlbmd0aDtlPHQ7ZSsrKW9bZV09b1tlXStsfWVsc2V7aWYoIVphLmlzRnVsbCh0KSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gY2hhbmdlIGV2ZW50IHJlY2VpdmVkIik7dGhpcy5fY29udGVudD10LnRleHQsdGhpcy5fbGluZU9mZnNldHM9dm9pZCAwfXRoaXMuX3ZlcnNpb249dH1nZXRMaW5lT2Zmc2V0cygpe3JldHVybiB2b2lkIDA9PT10aGlzLl9saW5lT2Zmc2V0cyYmKHRoaXMuX2xpbmVPZmZzZXRzPXRvKHRoaXMuX2NvbnRlbnQsITApKSx0aGlzLl9saW5lT2Zmc2V0c31wb3NpdGlvbkF0KGUpe2U9TWF0aC5tYXgoTWF0aC5taW4oZSx0aGlzLl9jb250ZW50Lmxlbmd0aCksMCk7bGV0IHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpLG49MCxpPXQubGVuZ3RoO2lmKDA9PT1pKXJldHVybntsaW5lOjAsY2hhcmFjdGVyOmV9O2Zvcig7bjxpOyl7bGV0IHI9TWF0aC5mbG9vcigobitpKS8yKTt0W3JdPmU/aT1yOm49cisxfWxldCByPW4tMTtyZXR1cm57bGluZTpyLGNoYXJhY3RlcjplLXRbcl19fW9mZnNldEF0KGUpe2xldCB0PXRoaXMuZ2V0TGluZU9mZnNldHMoKTtpZihlLmxpbmU+PXQubGVuZ3RoKXJldHVybiB0aGlzLl9jb250ZW50Lmxlbmd0aDtpZihlLmxpbmU8MClyZXR1cm4gMDtsZXQgbj10W2UubGluZV0saT1lLmxpbmUrMTx0Lmxlbmd0aD90W2UubGluZSsxXTp0aGlzLl9jb250ZW50Lmxlbmd0aDtyZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4obitlLmNoYXJhY3RlcixpKSxuKX1nZXQgbGluZUNvdW50KCl7cmV0dXJuIHRoaXMuZ2V0TGluZU9mZnNldHMoKS5sZW5ndGh9c3RhdGljIGlzSW5jcmVtZW50YWwoZSl7bGV0IHQ9ZTtyZXR1cm4gbnVsbCE9dCYmInN0cmluZyI9PXR5cGVvZiB0LnRleHQmJnZvaWQgMCE9PXQucmFuZ2UmJih2b2lkIDA9PT10LnJhbmdlTGVuZ3RofHwibnVtYmVyIj09dHlwZW9mIHQucmFuZ2VMZW5ndGgpfXN0YXRpYyBpc0Z1bGwoZSl7bGV0IHQ9ZTtyZXR1cm4gbnVsbCE9dCYmInN0cmluZyI9PXR5cGVvZiB0LnRleHQmJnZvaWQgMD09PXQucmFuZ2UmJnZvaWQgMD09PXQucmFuZ2VMZW5ndGh9fTtmdW5jdGlvbiBlbyhlLHQpe2lmKGUubGVuZ3RoPD0xKXJldHVybiBlO2NvbnN0IG49ZS5sZW5ndGgvMnwwLGk9ZS5zbGljZSgwLG4pLHI9ZS5zbGljZShuKTtlbyhpLHQpLGVvKHIsdCk7bGV0IGE9MCxvPTAscz0wO2Zvcig7YTxpLmxlbmd0aCYmbzxyLmxlbmd0aDspe2xldCBuPXQoaVthXSxyW29dKTtlW3MrK109bjw9MD9pW2ErK106cltvKytdfWZvcig7YTxpLmxlbmd0aDspZVtzKytdPWlbYSsrXTtmb3IoO288ci5sZW5ndGg7KWVbcysrXT1yW28rK107cmV0dXJuIGV9ZnVuY3Rpb24gdG8oZSx0LG49MCl7Y29uc3QgaT10P1tuXTpbXTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7bGV0IHI9ZS5jaGFyQ29kZUF0KHQpOzEzIT09ciYmMTAhPT1yfHwoMTM9PT1yJiZ0KzE8ZS5sZW5ndGgmJjEwPT09ZS5jaGFyQ29kZUF0KHQrMSkmJnQrKyxpLnB1c2gobit0KzEpKX1yZXR1cm4gaX1mdW5jdGlvbiBubyhlKXtjb25zdCB0PWUuc3RhcnQsbj1lLmVuZDtyZXR1cm4gdC5saW5lPm4ubGluZXx8dC5saW5lPT09bi5saW5lJiZ0LmNoYXJhY3Rlcj5uLmNoYXJhY3Rlcj97c3RhcnQ6bixlbmQ6dH06ZX1mdW5jdGlvbiBpbyhlKXtjb25zdCB0PW5vKGUucmFuZ2UpO3JldHVybiB0IT09ZS5yYW5nZT97bmV3VGV4dDplLm5ld1RleHQscmFuZ2U6dH06ZX0oS2E9VmF8fChWYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixpKXtyZXR1cm4gbmV3IFphKGUsdCxuLGkpfSxLYS51cGRhdGU9ZnVuY3Rpb24oZSx0LG4pe2lmKGUgaW5zdGFuY2VvZiBaYSlyZXR1cm4gZS51cGRhdGUodCxuKSxlO3Rocm93IG5ldyBFcnJvcigiVGV4dERvY3VtZW50LnVwZGF0ZTogZG9jdW1lbnQgbXVzdCBiZSBjcmVhdGVkIGJ5IFRleHREb2N1bWVudC5jcmVhdGUiKX0sS2EuYXBwbHlFZGl0cz1mdW5jdGlvbihlLHQpe2xldCBuPWUuZ2V0VGV4dCgpLGk9ZW8odC5tYXAoaW8pLCgoZSx0KT0+e2xldCBuPWUucmFuZ2Uuc3RhcnQubGluZS10LnJhbmdlLnN0YXJ0LmxpbmU7cmV0dXJuIDA9PT1uP2UucmFuZ2Uuc3RhcnQuY2hhcmFjdGVyLXQucmFuZ2Uuc3RhcnQuY2hhcmFjdGVyOm59KSkscj0wO2NvbnN0IGE9W107Zm9yKGNvbnN0IHQgb2YgaSl7bGV0IGk9ZS5vZmZzZXRBdCh0LnJhbmdlLnN0YXJ0KTtpZihpPHIpdGhyb3cgbmV3IEVycm9yKCJPdmVybGFwcGluZyBlZGl0Iik7aT5yJiZhLnB1c2gobi5zdWJzdHJpbmcocixpKSksdC5uZXdUZXh0Lmxlbmd0aCYmYS5wdXNoKHQubmV3VGV4dCkscj1lLm9mZnNldEF0KHQucmFuZ2UuZW5kKX1yZXR1cm4gYS5wdXNoKG4uc3Vic3RyKHIpKSxhLmpvaW4oIiIpfSwoR2E9amF8fChqYT17fSkpW0dhLlN0YXJ0Q29tbWVudFRhZz0wXT0iU3RhcnRDb21tZW50VGFnIixHYVtHYS5Db21tZW50PTFdPSJDb21tZW50IixHYVtHYS5FbmRDb21tZW50VGFnPTJdPSJFbmRDb21tZW50VGFnIixHYVtHYS5TdGFydFRhZ09wZW49M109IlN0YXJ0VGFnT3BlbiIsR2FbR2EuU3RhcnRUYWdDbG9zZT00XT0iU3RhcnRUYWdDbG9zZSIsR2FbR2EuU3RhcnRUYWdTZWxmQ2xvc2U9NV09IlN0YXJ0VGFnU2VsZkNsb3NlIixHYVtHYS5TdGFydFRhZz02XT0iU3RhcnRUYWciLEdhW0dhLkVuZFRhZ09wZW49N109IkVuZFRhZ09wZW4iLEdhW0dhLkVuZFRhZ0Nsb3NlPThdPSJFbmRUYWdDbG9zZSIsR2FbR2EuRW5kVGFnPTldPSJFbmRUYWciLEdhW0dhLkRlbGltaXRlckFzc2lnbj0xMF09IkRlbGltaXRlckFzc2lnbiIsR2FbR2EuQXR0cmlidXRlTmFtZT0xMV09IkF0dHJpYnV0ZU5hbWUiLEdhW0dhLkF0dHJpYnV0ZVZhbHVlPTEyXT0iQXR0cmlidXRlVmFsdWUiLEdhW0dhLlN0YXJ0RG9jdHlwZVRhZz0xM109IlN0YXJ0RG9jdHlwZVRhZyIsR2FbR2EuRG9jdHlwZT0xNF09IkRvY3R5cGUiLEdhW0dhLkVuZERvY3R5cGVUYWc9MTVdPSJFbmREb2N0eXBlVGFnIixHYVtHYS5Db250ZW50PTE2XT0iQ29udGVudCIsR2FbR2EuV2hpdGVzcGFjZT0xN109IldoaXRlc3BhY2UiLEdhW0dhLlVua25vd249MThdPSJVbmtub3duIixHYVtHYS5TY3JpcHQ9MTldPSJTY3JpcHQiLEdhW0dhLlN0eWxlcz0yMF09IlN0eWxlcyIsR2FbR2EuRU9TPTIxXT0iRU9TIiwoSmE9JGF8fCgkYT17fSkpW0phLldpdGhpbkNvbnRlbnQ9MF09IldpdGhpbkNvbnRlbnQiLEphW0phLkFmdGVyT3BlbmluZ1N0YXJ0VGFnPTFdPSJBZnRlck9wZW5pbmdTdGFydFRhZyIsSmFbSmEuQWZ0ZXJPcGVuaW5nRW5kVGFnPTJdPSJBZnRlck9wZW5pbmdFbmRUYWciLEphW0phLldpdGhpbkRvY3R5cGU9M109IldpdGhpbkRvY3R5cGUiLEphW0phLldpdGhpblRhZz00XT0iV2l0aGluVGFnIixKYVtKYS5XaXRoaW5FbmRUYWc9NV09IldpdGhpbkVuZFRhZyIsSmFbSmEuV2l0aGluQ29tbWVudD02XT0iV2l0aGluQ29tbWVudCIsSmFbSmEuV2l0aGluU2NyaXB0Q29udGVudD03XT0iV2l0aGluU2NyaXB0Q29udGVudCIsSmFbSmEuV2l0aGluU3R5bGVDb250ZW50PThdPSJXaXRoaW5TdHlsZUNvbnRlbnQiLEphW0phLkFmdGVyQXR0cmlidXRlTmFtZT05XT0iQWZ0ZXJBdHRyaWJ1dGVOYW1lIixKYVtKYS5CZWZvcmVBdHRyaWJ1dGVWYWx1ZT0xMF09IkJlZm9yZUF0dHJpYnV0ZVZhbHVlIiwoWGF8fChYYT17fSkpLkxBVEVTVD17dGV4dERvY3VtZW50Ontjb21wbGV0aW9uOntjb21wbGV0aW9uSXRlbTp7ZG9jdW1lbnRhdGlvbkZvcm1hdDpbSnIuTWFya2Rvd24sSnIuUGxhaW5UZXh0XX19LGhvdmVyOntjb250ZW50Rm9ybWF0OltKci5NYXJrZG93bixKci5QbGFpblRleHRdfX19LChRYT1ZYXx8KFlhPXt9KSlbUWEuVW5rbm93bj0wXT0iVW5rbm93biIsUWFbUWEuRmlsZT0xXT0iRmlsZSIsUWFbUWEuRGlyZWN0b3J5PTJdPSJEaXJlY3RvcnkiLFFhW1FhLlN5bWJvbGljTGluaz02NF09IlN5bWJvbGljTGluayI7dmFyIHJvPUtpKCksYW89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5zb3VyY2U9ZSx0aGlzLmxlbj1lLmxlbmd0aCx0aGlzLnBvc2l0aW9uPXR9cmV0dXJuIGUucHJvdG90eXBlLmVvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbjw9dGhpcy5wb3NpdGlvbn0sZS5wcm90b3R5cGUuZ2V0U291cmNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc291cmNlfSxlLnByb3RvdHlwZS5wb3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb3NpdGlvbn0sZS5wcm90b3R5cGUuZ29CYWNrVG89ZnVuY3Rpb24oZSl7dGhpcy5wb3NpdGlvbj1lfSxlLnByb3RvdHlwZS5nb0JhY2s9ZnVuY3Rpb24oZSl7dGhpcy5wb3NpdGlvbi09ZX0sZS5wcm90b3R5cGUuYWR2YW5jZT1mdW5jdGlvbihlKXt0aGlzLnBvc2l0aW9uKz1lfSxlLnByb3RvdHlwZS5nb1RvRW5kPWZ1bmN0aW9uKCl7dGhpcy5wb3NpdGlvbj10aGlzLnNvdXJjZS5sZW5ndGh9LGUucHJvdG90eXBlLm5leHRDaGFyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbisrKXx8MH0sZS5wcm90b3R5cGUucGVla0NoYXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPTApLHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbitlKXx8MH0sZS5wcm90b3R5cGUuYWR2YW5jZUlmQ2hhcj1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbikmJih0aGlzLnBvc2l0aW9uKyssITApfSxlLnByb3RvdHlwZS5hZHZhbmNlSWZDaGFycz1mdW5jdGlvbihlKXt2YXIgdDtpZih0aGlzLnBvc2l0aW9uK2UubGVuZ3RoPnRoaXMuc291cmNlLmxlbmd0aClyZXR1cm4hMTtmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbit0KSE9PWVbdF0pcmV0dXJuITE7cmV0dXJuIHRoaXMuYWR2YW5jZSh0KSwhMH0sZS5wcm90b3R5cGUuYWR2YW5jZUlmUmVnRXhwPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc291cmNlLnN1YnN0cih0aGlzLnBvc2l0aW9uKS5tYXRjaChlKTtyZXR1cm4gdD8odGhpcy5wb3NpdGlvbj10aGlzLnBvc2l0aW9uK3QuaW5kZXgrdFswXS5sZW5ndGgsdFswXSk6IiJ9LGUucHJvdG90eXBlLmFkdmFuY2VVbnRpbFJlZ0V4cD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnNvdXJjZS5zdWJzdHIodGhpcy5wb3NpdGlvbikubWF0Y2goZSk7cmV0dXJuIHQ/KHRoaXMucG9zaXRpb249dGhpcy5wb3NpdGlvbit0LmluZGV4LHRbMF0pOih0aGlzLmdvVG9FbmQoKSwiIil9LGUucHJvdG90eXBlLmFkdmFuY2VVbnRpbENoYXI9ZnVuY3Rpb24oZSl7Zm9yKDt0aGlzLnBvc2l0aW9uPHRoaXMuc291cmNlLmxlbmd0aDspe2lmKHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbik9PT1lKXJldHVybiEwO3RoaXMuYWR2YW5jZSgxKX1yZXR1cm4hMX0sZS5wcm90b3R5cGUuYWR2YW5jZVVudGlsQ2hhcnM9ZnVuY3Rpb24oZSl7Zm9yKDt0aGlzLnBvc2l0aW9uK2UubGVuZ3RoPD10aGlzLnNvdXJjZS5sZW5ndGg7KXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoJiZ0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24rdCk9PT1lW3RdO3QrKyk7aWYodD09PWUubGVuZ3RoKXJldHVybiEwO3RoaXMuYWR2YW5jZSgxKX1yZXR1cm4gdGhpcy5nb1RvRW5kKCksITF9LGUucHJvdG90eXBlLnNraXBXaGl0ZXNwYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWR2YW5jZVdoaWxlQ2hhcigoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1fb3x8ZT09PXZvfHxlPT09Zm98fGU9PT1ib3x8ZT09PWdvfSkpPjB9LGUucHJvdG90eXBlLmFkdmFuY2VXaGlsZUNoYXI9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMucG9zaXRpb247dGhpcy5wb3NpdGlvbjx0aGlzLmxlbiYmZSh0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24pKTspdGhpcy5wb3NpdGlvbisrO3JldHVybiB0aGlzLnBvc2l0aW9uLXR9LGV9KCksb289IiEiLmNoYXJDb2RlQXQoMCksc289Ii0iLmNoYXJDb2RlQXQoMCksbG89IjwiLmNoYXJDb2RlQXQoMCksY289Ij4iLmNoYXJDb2RlQXQoMCksaG89Ii8iLmNoYXJDb2RlQXQoMCksdW89Ij0iLmNoYXJDb2RlQXQoMCksbW89JyInLmNoYXJDb2RlQXQoMCkscG89IiciLmNoYXJDb2RlQXQoMCksZm89IlxuIi5jaGFyQ29kZUF0KDApLGdvPSJcciIuY2hhckNvZGVBdCgwKSxibz0iXGYiLmNoYXJDb2RlQXQoMCksX289IiAiLmNoYXJDb2RlQXQoMCksdm89Ilx0Ii5jaGFyQ29kZUF0KDApLHdvPXsidGV4dC94LWhhbmRsZWJhcnMtdGVtcGxhdGUiOiEwLCJ0ZXh0L2h0bWwiOiEwfTtmdW5jdGlvbiB5byhlLHQsbixpKXt2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1uJiYobj0kYS5XaXRoaW5Db250ZW50KSx2b2lkIDA9PT1pJiYoaT0hMSk7dmFyIHIsYSxvLHMsbCxjPW5ldyBhbyhlLHQpLGg9bixkPTAsdT1qYS5Vbmtub3duO2Z1bmN0aW9uIG0oKXtyZXR1cm4gYy5hZHZhbmNlSWZSZWdFeHAoL15bXzpcd11bXzpcdy0uXGRdKi8pLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gcChlLHQsbil7cmV0dXJuIHU9dCxkPWUscj1uLHR9ZnVuY3Rpb24gZigpe3ZhciBlLHQ9Yy5wb3MoKTtpZihjLmVvcygpKXJldHVybiBwKHQsamEuRU9TKTtzd2l0Y2goaCl7Y2FzZSAkYS5XaXRoaW5Db21tZW50OnJldHVybiBjLmFkdmFuY2VJZkNoYXJzKFtzbyxzbyxjb10pPyhoPSRhLldpdGhpbkNvbnRlbnQscCh0LGphLkVuZENvbW1lbnRUYWcpKTooYy5hZHZhbmNlVW50aWxDaGFycyhbc28sc28sY29dKSxwKHQsamEuQ29tbWVudCkpO2Nhc2UgJGEuV2l0aGluRG9jdHlwZTpyZXR1cm4gYy5hZHZhbmNlSWZDaGFyKGNvKT8oaD0kYS5XaXRoaW5Db250ZW50LHAodCxqYS5FbmREb2N0eXBlVGFnKSk6KGMuYWR2YW5jZVVudGlsQ2hhcihjbykscCh0LGphLkRvY3R5cGUpKTtjYXNlICRhLldpdGhpbkNvbnRlbnQ6aWYoYy5hZHZhbmNlSWZDaGFyKGxvKSl7aWYoIWMuZW9zKCkmJmMucGVla0NoYXIoKT09PW9vKXtpZihjLmFkdmFuY2VJZkNoYXJzKFtvbyxzbyxzb10pKXJldHVybiBoPSRhLldpdGhpbkNvbW1lbnQscCh0LGphLlN0YXJ0Q29tbWVudFRhZyk7aWYoYy5hZHZhbmNlSWZSZWdFeHAoL14hZG9jdHlwZS9pKSlyZXR1cm4gaD0kYS5XaXRoaW5Eb2N0eXBlLHAodCxqYS5TdGFydERvY3R5cGVUYWcpfXJldHVybiBjLmFkdmFuY2VJZkNoYXIoaG8pPyhoPSRhLkFmdGVyT3BlbmluZ0VuZFRhZyxwKHQsamEuRW5kVGFnT3BlbikpOihoPSRhLkFmdGVyT3BlbmluZ1N0YXJ0VGFnLHAodCxqYS5TdGFydFRhZ09wZW4pKX1yZXR1cm4gYy5hZHZhbmNlVW50aWxDaGFyKGxvKSxwKHQsamEuQ29udGVudCk7Y2FzZSAkYS5BZnRlck9wZW5pbmdFbmRUYWc6cmV0dXJuIG0oKS5sZW5ndGg+MD8oaD0kYS5XaXRoaW5FbmRUYWcscCh0LGphLkVuZFRhZykpOmMuc2tpcFdoaXRlc3BhY2UoKT9wKHQsamEuV2hpdGVzcGFjZSxybygiZXJyb3IudW5leHBlY3RlZFdoaXRlc3BhY2UiLCJUYWcgbmFtZSBtdXN0IGRpcmVjdGx5IGZvbGxvdyB0aGUgb3BlbiBicmFja2V0LiIpKTooaD0kYS5XaXRoaW5FbmRUYWcsYy5hZHZhbmNlVW50aWxDaGFyKGNvKSx0PGMucG9zKCk/cCh0LGphLlVua25vd24scm8oImVycm9yLmVuZFRhZ05hbWVFeHBlY3RlZCIsIkVuZCB0YWcgbmFtZSBleHBlY3RlZC4iKSk6ZigpKTtjYXNlICRhLldpdGhpbkVuZFRhZzppZihjLnNraXBXaGl0ZXNwYWNlKCkpcmV0dXJuIHAodCxqYS5XaGl0ZXNwYWNlKTtpZihjLmFkdmFuY2VJZkNoYXIoY28pKXJldHVybiBoPSRhLldpdGhpbkNvbnRlbnQscCh0LGphLkVuZFRhZ0Nsb3NlKTtpZihpJiZjLnBlZWtDaGFyKCk9PT1sbylyZXR1cm4gaD0kYS5XaXRoaW5Db250ZW50LHAodCxqYS5FbmRUYWdDbG9zZSxybygiZXJyb3IuY2xvc2luZ0JyYWNrZXRNaXNzaW5nIiwiQ2xvc2luZyBicmFja2V0IG1pc3NpbmcuIikpO2U9cm8oImVycm9yLmNsb3NpbmdCcmFja2V0RXhwZWN0ZWQiLCJDbG9zaW5nIGJyYWNrZXQgZXhwZWN0ZWQuIik7YnJlYWs7Y2FzZSAkYS5BZnRlck9wZW5pbmdTdGFydFRhZzpyZXR1cm4gbz1tKCksbD12b2lkIDAscz12b2lkIDAsby5sZW5ndGg+MD8oYT0hMSxoPSRhLldpdGhpblRhZyxwKHQsamEuU3RhcnRUYWcpKTpjLnNraXBXaGl0ZXNwYWNlKCk/cCh0LGphLldoaXRlc3BhY2Uscm8oImVycm9yLnVuZXhwZWN0ZWRXaGl0ZXNwYWNlIiwiVGFnIG5hbWUgbXVzdCBkaXJlY3RseSBmb2xsb3cgdGhlIG9wZW4gYnJhY2tldC4iKSk6KGg9JGEuV2l0aGluVGFnLGMuYWR2YW5jZVVudGlsQ2hhcihjbyksdDxjLnBvcygpP3AodCxqYS5Vbmtub3duLHJvKCJlcnJvci5zdGFydFRhZ05hbWVFeHBlY3RlZCIsIlN0YXJ0IHRhZyBuYW1lIGV4cGVjdGVkLiIpKTpmKCkpO2Nhc2UgJGEuV2l0aGluVGFnOnJldHVybiBjLnNraXBXaGl0ZXNwYWNlKCk/KGE9ITAscCh0LGphLldoaXRlc3BhY2UpKTphJiYocz1jLmFkdmFuY2VJZlJlZ0V4cCgvXlteXHMiJz48Lz1ceDAwLVx4MEZceDdGXHg4MC1ceDlGXSovKS50b0xvd2VyQ2FzZSgpKS5sZW5ndGg+MD8oaD0kYS5BZnRlckF0dHJpYnV0ZU5hbWUsYT0hMSxwKHQsamEuQXR0cmlidXRlTmFtZSkpOmMuYWR2YW5jZUlmQ2hhcnMoW2hvLGNvXSk/KGg9JGEuV2l0aGluQ29udGVudCxwKHQsamEuU3RhcnRUYWdTZWxmQ2xvc2UpKTpjLmFkdmFuY2VJZkNoYXIoY28pPyhoPSJzY3JpcHQiPT09bz9sJiZ3b1tsXT8kYS5XaXRoaW5Db250ZW50OiRhLldpdGhpblNjcmlwdENvbnRlbnQ6InN0eWxlIj09PW8/JGEuV2l0aGluU3R5bGVDb250ZW50OiRhLldpdGhpbkNvbnRlbnQscCh0LGphLlN0YXJ0VGFnQ2xvc2UpKTppJiZjLnBlZWtDaGFyKCk9PT1sbz8oaD0kYS5XaXRoaW5Db250ZW50LHAodCxqYS5TdGFydFRhZ0Nsb3NlLHJvKCJlcnJvci5jbG9zaW5nQnJhY2tldE1pc3NpbmciLCJDbG9zaW5nIGJyYWNrZXQgbWlzc2luZy4iKSkpOihjLmFkdmFuY2UoMSkscCh0LGphLlVua25vd24scm8oImVycm9yLnVuZXhwZWN0ZWRDaGFyYWN0ZXJJblRhZyIsIlVuZXhwZWN0ZWQgY2hhcmFjdGVyIGluIHRhZy4iKSkpO2Nhc2UgJGEuQWZ0ZXJBdHRyaWJ1dGVOYW1lOnJldHVybiBjLnNraXBXaGl0ZXNwYWNlKCk/KGE9ITAscCh0LGphLldoaXRlc3BhY2UpKTpjLmFkdmFuY2VJZkNoYXIodW8pPyhoPSRhLkJlZm9yZUF0dHJpYnV0ZVZhbHVlLHAodCxqYS5EZWxpbWl0ZXJBc3NpZ24pKTooaD0kYS5XaXRoaW5UYWcsZigpKTtjYXNlICRhLkJlZm9yZUF0dHJpYnV0ZVZhbHVlOmlmKGMuc2tpcFdoaXRlc3BhY2UoKSlyZXR1cm4gcCh0LGphLldoaXRlc3BhY2UpO3ZhciBuPWMuYWR2YW5jZUlmUmVnRXhwKC9eW15ccyInYD08Pl0rLyk7aWYobi5sZW5ndGg+MClyZXR1cm4gYy5wZWVrQ2hhcigpPT09Y28mJmMucGVla0NoYXIoLTEpPT09aG8mJihjLmdvQmFjaygxKSxuPW4uc3Vic3RyKDAsbi5sZW5ndGgtMSkpLCJ0eXBlIj09PXMmJihsPW4pLGg9JGEuV2l0aGluVGFnLGE9ITEscCh0LGphLkF0dHJpYnV0ZVZhbHVlKTt2YXIgcj1jLnBlZWtDaGFyKCk7cmV0dXJuIHI9PT1wb3x8cj09PW1vPyhjLmFkdmFuY2UoMSksYy5hZHZhbmNlVW50aWxDaGFyKHIpJiZjLmFkdmFuY2UoMSksInR5cGUiPT09cyYmKGw9Yy5nZXRTb3VyY2UoKS5zdWJzdHJpbmcodCsxLGMucG9zKCktMSkpLGg9JGEuV2l0aGluVGFnLGE9ITEscCh0LGphLkF0dHJpYnV0ZVZhbHVlKSk6KGg9JGEuV2l0aGluVGFnLGE9ITEsZigpKTtjYXNlICRhLldpdGhpblNjcmlwdENvbnRlbnQ6Zm9yKHZhciBkPTE7IWMuZW9zKCk7KXt2YXIgdT1jLmFkdmFuY2VJZlJlZ0V4cCgvPCEtLXwtLT58PFwvP3NjcmlwdFxzKlwvPz4/L2kpO2lmKDA9PT11Lmxlbmd0aClyZXR1cm4gYy5nb1RvRW5kKCkscCh0LGphLlNjcmlwdCk7aWYoIlx4M2MhLS0iPT09dSkxPT09ZCYmKGQ9Mik7ZWxzZSBpZigiLS1ceDNlIj09PXUpZD0xO2Vsc2UgaWYoIi8iIT09dVsxXSkyPT09ZCYmKGQ9Myk7ZWxzZXtpZigzIT09ZCl7Yy5nb0JhY2sodS5sZW5ndGgpO2JyZWFrfWQ9Mn19cmV0dXJuIGg9JGEuV2l0aGluQ29udGVudCx0PGMucG9zKCk/cCh0LGphLlNjcmlwdCk6ZigpO2Nhc2UgJGEuV2l0aGluU3R5bGVDb250ZW50OnJldHVybiBjLmFkdmFuY2VVbnRpbFJlZ0V4cCgvPFwvc3R5bGUvaSksaD0kYS5XaXRoaW5Db250ZW50LHQ8Yy5wb3MoKT9wKHQsamEuU3R5bGVzKTpmKCl9cmV0dXJuIGMuYWR2YW5jZSgxKSxoPSRhLldpdGhpbkNvbnRlbnQscCh0LGphLlVua25vd24sZSl9cmV0dXJue3NjYW46ZnVuY3Rpb24oKXt2YXIgZT1jLnBvcygpLHQ9aCxuPWYoKTtyZXR1cm4gbj09PWphLkVPU3x8ZSE9PWMucG9zKCl8fGkmJihuPT09amEuU3RhcnRUYWdDbG9zZXx8bj09PWphLkVuZFRhZ0Nsb3NlKT9uOihjb25zb2xlLmxvZygiU2Nhbm5lci5zY2FuIGhhcyBub3QgYWR2YW5jZWQgYXQgb2Zmc2V0ICIrZSsiLCBzdGF0ZSBiZWZvcmU6ICIrdCsiIGFmdGVyOiAiK2gpLGMuYWR2YW5jZSgxKSxwKGUsamEuVW5rbm93bikpfSxnZXRUb2tlblR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sZ2V0VG9rZW5PZmZzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sZ2V0VG9rZW5MZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gYy5wb3MoKS1kfSxnZXRUb2tlbkVuZDpmdW5jdGlvbigpe3JldHVybiBjLnBvcygpfSxnZXRUb2tlblRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gYy5nZXRTb3VyY2UoKS5zdWJzdHJpbmcoZCxjLnBvcygpKX0sZ2V0U2Nhbm5lclN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LGdldFRva2VuRXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4gcn19fWZ1bmN0aW9uIFRvKGUsdCl7dmFyIG49MCxpPWUubGVuZ3RoO2lmKDA9PT1pKXJldHVybiAwO2Zvcig7bjxpOyl7dmFyIHI9TWF0aC5mbG9vcigobitpKS8yKTt0KGVbcl0pP2k9cjpuPXIrMX1yZXR1cm4gbn12YXIga289WyJhcmVhIiwiYmFzZSIsImJyIiwiY29sIiwiZW1iZWQiLCJociIsImltZyIsImlucHV0Iiwia2V5Z2VuIiwibGluayIsIm1lbnVpdGVtIiwibWV0YSIsInBhcmFtIiwic291cmNlIiwidHJhY2siLCJ3YnIiXTtmdW5jdGlvbiBTbyhlKXtyZXR1cm4hIWUmJmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIGk9MCxyPWUubGVuZ3RoLTE7aTw9cjspe3ZhciBhPShpK3IpLzJ8MCxvPW4oZVthXSx0KTtpZihvPDApaT1hKzE7ZWxzZXtpZighKG8+MCkpcmV0dXJuIGE7cj1hLTF9fXJldHVybi0oaSsxKX0oa28sZS50b0xvd2VyQ2FzZSgpLChmdW5jdGlvbihlLHQpe3JldHVybiBlLmxvY2FsZUNvbXBhcmUodCl9KSk+PTB9dmFyIHhvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixpKXt0aGlzLnN0YXJ0PWUsdGhpcy5lbmQ9dCx0aGlzLmNoaWxkcmVuPW4sdGhpcy5wYXJlbnQ9aSx0aGlzLmNsb3NlZD0hMX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJhdHRyaWJ1dGVOYW1lcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmF0dHJpYnV0ZXM/T2JqZWN0LmtleXModGhpcy5hdHRyaWJ1dGVzKTpbXX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5pc1NhbWVUYWc9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PXRoaXMudGFnP3ZvaWQgMD09PWU6dm9pZCAwIT09ZSYmdGhpcy50YWcubGVuZ3RoPT09ZS5sZW5ndGgmJnRoaXMudGFnLnRvTG93ZXJDYXNlKCk9PT1lfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImZpcnN0Q2hpbGQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGlsZHJlblswXX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxhc3RDaGlsZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoLTFdOnZvaWQgMH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5maW5kTm9kZUJlZm9yZT1mdW5jdGlvbihlKXt2YXIgdD1Ubyh0aGlzLmNoaWxkcmVuLChmdW5jdGlvbih0KXtyZXR1cm4gZTw9dC5zdGFydH0pKS0xO2lmKHQ+PTApe3ZhciBuPXRoaXMuY2hpbGRyZW5bdF07aWYoZT5uLnN0YXJ0KXtpZihlPG4uZW5kKXJldHVybiBuLmZpbmROb2RlQmVmb3JlKGUpO3ZhciBpPW4ubGFzdENoaWxkO3JldHVybiBpJiZpLmVuZD09PW4uZW5kP24uZmluZE5vZGVCZWZvcmUoZSk6bn19cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLmZpbmROb2RlQXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9VG8odGhpcy5jaGlsZHJlbiwoZnVuY3Rpb24odCl7cmV0dXJuIGU8PXQuc3RhcnR9KSktMTtpZih0Pj0wKXt2YXIgbj10aGlzLmNoaWxkcmVuW3RdO2lmKGU+bi5zdGFydCYmZTw9bi5lbmQpcmV0dXJuIG4uZmluZE5vZGVBdChlKX1yZXR1cm4gdGhpc30sZX0oKTtmdW5jdGlvbiBMbyhlKXtmb3IodmFyIHQ9eW8oZSx2b2lkIDAsdm9pZCAwLCEwKSxuPW5ldyB4bygwLGUubGVuZ3RoLFtdLHZvaWQgMCksaT1uLHI9LTEsYT12b2lkIDAsbz1udWxsLHM9dC5zY2FuKCk7cyE9PWphLkVPUzspe3N3aXRjaChzKXtjYXNlIGphLlN0YXJ0VGFnT3Blbjp2YXIgbD1uZXcgeG8odC5nZXRUb2tlbk9mZnNldCgpLGUubGVuZ3RoLFtdLGkpO2kuY2hpbGRyZW4ucHVzaChsKSxpPWw7YnJlYWs7Y2FzZSBqYS5TdGFydFRhZzppLnRhZz10LmdldFRva2VuVGV4dCgpO2JyZWFrO2Nhc2UgamEuU3RhcnRUYWdDbG9zZTppLnBhcmVudCYmKGkuZW5kPXQuZ2V0VG9rZW5FbmQoKSx0LmdldFRva2VuTGVuZ3RoKCk/KGkuc3RhcnRUYWdFbmQ9dC5nZXRUb2tlbkVuZCgpLGkudGFnJiZTbyhpLnRhZykmJihpLmNsb3NlZD0hMCxpPWkucGFyZW50KSk6aT1pLnBhcmVudCk7YnJlYWs7Y2FzZSBqYS5TdGFydFRhZ1NlbGZDbG9zZTppLnBhcmVudCYmKGkuY2xvc2VkPSEwLGkuZW5kPXQuZ2V0VG9rZW5FbmQoKSxpLnN0YXJ0VGFnRW5kPXQuZ2V0VG9rZW5FbmQoKSxpPWkucGFyZW50KTticmVhaztjYXNlIGphLkVuZFRhZ09wZW46cj10LmdldFRva2VuT2Zmc2V0KCksYT12b2lkIDA7YnJlYWs7Y2FzZSBqYS5FbmRUYWc6YT10LmdldFRva2VuVGV4dCgpLnRvTG93ZXJDYXNlKCk7YnJlYWs7Y2FzZSBqYS5FbmRUYWdDbG9zZTpmb3IodmFyIGM9aTshYy5pc1NhbWVUYWcoYSkmJmMucGFyZW50OyljPWMucGFyZW50O2lmKGMucGFyZW50KXtmb3IoO2khPT1jOylpLmVuZD1yLGkuY2xvc2VkPSExLGk9aS5wYXJlbnQ7aS5jbG9zZWQ9ITAsaS5lbmRUYWdTdGFydD1yLGkuZW5kPXQuZ2V0VG9rZW5FbmQoKSxpPWkucGFyZW50fWJyZWFrO2Nhc2UgamEuQXR0cmlidXRlTmFtZTpvPXQuZ2V0VG9rZW5UZXh0KCksKGg9aS5hdHRyaWJ1dGVzKXx8KGkuYXR0cmlidXRlcz1oPXt9KSxoW29dPW51bGw7YnJlYWs7Y2FzZSBqYS5BdHRyaWJ1dGVWYWx1ZTp2YXIgaCxkPXQuZ2V0VG9rZW5UZXh0KCk7KGg9aS5hdHRyaWJ1dGVzKSYmbyYmKGhbb109ZCxvPW51bGwpfXM9dC5zY2FuKCl9Zm9yKDtpLnBhcmVudDspaS5lbmQ9ZS5sZW5ndGgsaS5jbG9zZWQ9ITEsaT1pLnBhcmVudDtyZXR1cm57cm9vdHM6bi5jaGlsZHJlbixmaW5kTm9kZUJlZm9yZTpuLmZpbmROb2RlQmVmb3JlLmJpbmQobiksZmluZE5vZGVBdDpuLmZpbmROb2RlQXQuYmluZChuKX19dmFyIENvPXsiQWFjdXRlOyI6IsOBIixBYWN1dGU6IsOBIiwiYWFjdXRlOyI6IsOhIixhYWN1dGU6IsOhIiwiQWJyZXZlOyI6IsSCIiwiYWJyZXZlOyI6IsSDIiwiYWM7Ijoi4oi+IiwiYWNkOyI6IuKIvyIsImFjRTsiOiLiiL7MsyIsIkFjaXJjOyI6IsOCIixBY2lyYzoiw4IiLCJhY2lyYzsiOiLDoiIsYWNpcmM6IsOiIiwiYWN1dGU7IjoiwrQiLGFjdXRlOiLCtCIsIkFjeTsiOiLQkCIsImFjeTsiOiLQsCIsIkFFbGlnOyI6IsOGIixBRWxpZzoiw4YiLCJhZWxpZzsiOiLDpiIsYWVsaWc6IsOmIiwiYWY7Ijoi4oGhIiwiQWZyOyI6IvCdlIQiLCJhZnI7Ijoi8J2UniIsIkFncmF2ZTsiOiLDgCIsQWdyYXZlOiLDgCIsImFncmF2ZTsiOiLDoCIsYWdyYXZlOiLDoCIsImFsZWZzeW07Ijoi4oS1IiwiYWxlcGg7Ijoi4oS1IiwiQWxwaGE7IjoizpEiLCJhbHBoYTsiOiLOsSIsIkFtYWNyOyI6IsSAIiwiYW1hY3I7IjoixIEiLCJhbWFsZzsiOiLiqL8iLCJBTVA7IjoiJiIsQU1QOiImIiwiYW1wOyI6IiYiLGFtcDoiJiIsIkFuZDsiOiLiqZMiLCJhbmQ7Ijoi4oinIiwiYW5kYW5kOyI6IuKplSIsImFuZGQ7Ijoi4qmcIiwiYW5kc2xvcGU7Ijoi4qmYIiwiYW5kdjsiOiLiqZoiLCJhbmc7Ijoi4oigIiwiYW5nZTsiOiLipqQiLCJhbmdsZTsiOiLiiKAiLCJhbmdtc2Q7Ijoi4oihIiwiYW5nbXNkYWE7Ijoi4qaoIiwiYW5nbXNkYWI7Ijoi4qapIiwiYW5nbXNkYWM7Ijoi4qaqIiwiYW5nbXNkYWQ7Ijoi4qarIiwiYW5nbXNkYWU7Ijoi4qasIiwiYW5nbXNkYWY7Ijoi4qatIiwiYW5nbXNkYWc7Ijoi4qauIiwiYW5nbXNkYWg7Ijoi4qavIiwiYW5ncnQ7Ijoi4oifIiwiYW5ncnR2YjsiOiLiir4iLCJhbmdydHZiZDsiOiLipp0iLCJhbmdzcGg7Ijoi4oiiIiwiYW5nc3Q7Ijoiw4UiLCJhbmd6YXJyOyI6IuKNvCIsIkFvZ29uOyI6IsSEIiwiYW9nb247IjoixIUiLCJBb3BmOyI6IvCdlLgiLCJhb3BmOyI6IvCdlZIiLCJhcDsiOiLiiYgiLCJhcGFjaXI7Ijoi4qmvIiwiYXBFOyI6IuKpsCIsImFwZTsiOiLiiYoiLCJhcGlkOyI6IuKJiyIsImFwb3M7IjoiJyIsIkFwcGx5RnVuY3Rpb247Ijoi4oGhIiwiYXBwcm94OyI6IuKJiCIsImFwcHJveGVxOyI6IuKJiiIsIkFyaW5nOyI6IsOFIixBcmluZzoiw4UiLCJhcmluZzsiOiLDpSIsYXJpbmc6IsOlIiwiQXNjcjsiOiLwnZKcIiwiYXNjcjsiOiLwnZK2IiwiQXNzaWduOyI6IuKJlCIsImFzdDsiOiIqIiwiYXN5bXA7Ijoi4omIIiwiYXN5bXBlcTsiOiLiiY0iLCJBdGlsZGU7Ijoiw4MiLEF0aWxkZToiw4MiLCJhdGlsZGU7Ijoiw6MiLGF0aWxkZToiw6MiLCJBdW1sOyI6IsOEIixBdW1sOiLDhCIsImF1bWw7Ijoiw6QiLGF1bWw6IsOkIiwiYXdjb25pbnQ7Ijoi4oizIiwiYXdpbnQ7Ijoi4qiRIiwiYmFja2Nvbmc7Ijoi4omMIiwiYmFja2Vwc2lsb247Ijoiz7YiLCJiYWNrcHJpbWU7Ijoi4oC1IiwiYmFja3NpbTsiOiLiiL0iLCJiYWNrc2ltZXE7Ijoi4ouNIiwiQmFja3NsYXNoOyI6IuKIliIsIkJhcnY7Ijoi4qunIiwiYmFydmVlOyI6IuKKvSIsIkJhcndlZDsiOiLijIYiLCJiYXJ3ZWQ7Ijoi4oyFIiwiYmFyd2VkZ2U7Ijoi4oyFIiwiYmJyazsiOiLijrUiLCJiYnJrdGJyazsiOiLijrYiLCJiY29uZzsiOiLiiYwiLCJCY3k7Ijoi0JEiLCJiY3k7Ijoi0LEiLCJiZHF1bzsiOiLigJ4iLCJiZWNhdXM7Ijoi4oi1IiwiQmVjYXVzZTsiOiLiiLUiLCJiZWNhdXNlOyI6IuKItSIsImJlbXB0eXY7Ijoi4qawIiwiYmVwc2k7Ijoiz7YiLCJiZXJub3U7Ijoi4oSsIiwiQmVybm91bGxpczsiOiLihKwiLCJCZXRhOyI6Is6SIiwiYmV0YTsiOiLOsiIsImJldGg7Ijoi4oS2IiwiYmV0d2VlbjsiOiLiiawiLCJCZnI7Ijoi8J2UhSIsImJmcjsiOiLwnZSfIiwiYmlnY2FwOyI6IuKLgiIsImJpZ2NpcmM7Ijoi4pevIiwiYmlnY3VwOyI6IuKLgyIsImJpZ29kb3Q7Ijoi4qiAIiwiYmlnb3BsdXM7Ijoi4qiBIiwiYmlnb3RpbWVzOyI6IuKogiIsImJpZ3NxY3VwOyI6IuKohiIsImJpZ3N0YXI7Ijoi4piFIiwiYmlndHJpYW5nbGVkb3duOyI6IuKWvSIsImJpZ3RyaWFuZ2xldXA7Ijoi4pazIiwiYmlndXBsdXM7Ijoi4qiEIiwiYmlndmVlOyI6IuKLgSIsImJpZ3dlZGdlOyI6IuKLgCIsImJrYXJvdzsiOiLipI0iLCJibGFja2xvemVuZ2U7Ijoi4qerIiwiYmxhY2tzcXVhcmU7Ijoi4paqIiwiYmxhY2t0cmlhbmdsZTsiOiLilrQiLCJibGFja3RyaWFuZ2xlZG93bjsiOiLilr4iLCJibGFja3RyaWFuZ2xlbGVmdDsiOiLil4IiLCJibGFja3RyaWFuZ2xlcmlnaHQ7Ijoi4pa4IiwiYmxhbms7Ijoi4pCjIiwiYmxrMTI7Ijoi4paSIiwiYmxrMTQ7Ijoi4paRIiwiYmxrMzQ7Ijoi4paTIiwiYmxvY2s7Ijoi4paIIiwiYm5lOyI6Ij3ig6UiLCJibmVxdWl2OyI6IuKJoeKDpSIsImJOb3Q7Ijoi4qutIiwiYm5vdDsiOiLijJAiLCJCb3BmOyI6IvCdlLkiLCJib3BmOyI6IvCdlZMiLCJib3Q7Ijoi4oqlIiwiYm90dG9tOyI6IuKKpSIsImJvd3RpZTsiOiLii4giLCJib3hib3g7Ijoi4qeJIiwiYm94REw7Ijoi4pWXIiwiYm94RGw7Ijoi4pWWIiwiYm94ZEw7Ijoi4pWVIiwiYm94ZGw7Ijoi4pSQIiwiYm94RFI7Ijoi4pWUIiwiYm94RHI7Ijoi4pWTIiwiYm94ZFI7Ijoi4pWSIiwiYm94ZHI7Ijoi4pSMIiwiYm94SDsiOiLilZAiLCJib3hoOyI6IuKUgCIsImJveEhEOyI6IuKVpiIsImJveEhkOyI6IuKVpCIsImJveGhEOyI6IuKVpSIsImJveGhkOyI6IuKUrCIsImJveEhVOyI6IuKVqSIsImJveEh1OyI6IuKVpyIsImJveGhVOyI6IuKVqCIsImJveGh1OyI6IuKUtCIsImJveG1pbnVzOyI6IuKKnyIsImJveHBsdXM7Ijoi4oqeIiwiYm94dGltZXM7Ijoi4oqgIiwiYm94VUw7Ijoi4pWdIiwiYm94VWw7Ijoi4pWcIiwiYm94dUw7Ijoi4pWbIiwiYm94dWw7Ijoi4pSYIiwiYm94VVI7Ijoi4pWaIiwiYm94VXI7Ijoi4pWZIiwiYm94dVI7Ijoi4pWYIiwiYm94dXI7Ijoi4pSUIiwiYm94VjsiOiLilZEiLCJib3h2OyI6IuKUgiIsImJveFZIOyI6IuKVrCIsImJveFZoOyI6IuKVqyIsImJveHZIOyI6IuKVqiIsImJveHZoOyI6IuKUvCIsImJveFZMOyI6IuKVoyIsImJveFZsOyI6IuKVoiIsImJveHZMOyI6IuKVoSIsImJveHZsOyI6IuKUpCIsImJveFZSOyI6IuKVoCIsImJveFZyOyI6IuKVnyIsImJveHZSOyI6IuKVniIsImJveHZyOyI6IuKUnCIsImJwcmltZTsiOiLigLUiLCJCcmV2ZTsiOiLLmCIsImJyZXZlOyI6IsuYIiwiYnJ2YmFyOyI6IsKmIixicnZiYXI6IsKmIiwiQnNjcjsiOiLihKwiLCJic2NyOyI6IvCdkrciLCJic2VtaTsiOiLigY8iLCJic2ltOyI6IuKIvSIsImJzaW1lOyI6IuKLjSIsImJzb2w7IjoiXFwiLCJic29sYjsiOiLip4UiLCJic29saHN1YjsiOiLin4giLCJidWxsOyI6IuKAoiIsImJ1bGxldDsiOiLigKIiLCJidW1wOyI6IuKJjiIsImJ1bXBFOyI6IuKqriIsImJ1bXBlOyI6IuKJjyIsIkJ1bXBlcTsiOiLiiY4iLCJidW1wZXE7Ijoi4omPIiwiQ2FjdXRlOyI6IsSGIiwiY2FjdXRlOyI6IsSHIiwiQ2FwOyI6IuKLkiIsImNhcDsiOiLiiKkiLCJjYXBhbmQ7Ijoi4qmEIiwiY2FwYnJjdXA7Ijoi4qmJIiwiY2FwY2FwOyI6IuKpiyIsImNhcGN1cDsiOiLiqYciLCJjYXBkb3Q7Ijoi4qmAIiwiQ2FwaXRhbERpZmZlcmVudGlhbEQ7Ijoi4oWFIiwiY2FwczsiOiLiiKnvuIAiLCJjYXJldDsiOiLigYEiLCJjYXJvbjsiOiLLhyIsIkNheWxleXM7Ijoi4oStIiwiY2NhcHM7Ijoi4qmNIiwiQ2Nhcm9uOyI6IsSMIiwiY2Nhcm9uOyI6IsSNIiwiQ2NlZGlsOyI6IsOHIixDY2VkaWw6IsOHIiwiY2NlZGlsOyI6IsOnIixjY2VkaWw6IsOnIiwiQ2NpcmM7IjoixIgiLCJjY2lyYzsiOiLEiSIsIkNjb25pbnQ7Ijoi4oiwIiwiY2N1cHM7Ijoi4qmMIiwiY2N1cHNzbTsiOiLiqZAiLCJDZG90OyI6IsSKIiwiY2RvdDsiOiLEiyIsImNlZGlsOyI6IsK4IixjZWRpbDoiwrgiLCJDZWRpbGxhOyI6IsK4IiwiY2VtcHR5djsiOiLiprIiLCJjZW50OyI6IsKiIixjZW50OiLCoiIsIkNlbnRlckRvdDsiOiLCtyIsImNlbnRlcmRvdDsiOiLCtyIsIkNmcjsiOiLihK0iLCJjZnI7Ijoi8J2UoCIsIkNIY3k7Ijoi0KciLCJjaGN5OyI6ItGHIiwiY2hlY2s7Ijoi4pyTIiwiY2hlY2ttYXJrOyI6IuKckyIsIkNoaTsiOiLOpyIsImNoaTsiOiLPhyIsImNpcjsiOiLil4siLCJjaXJjOyI6IsuGIiwiY2lyY2VxOyI6IuKJlyIsImNpcmNsZWFycm93bGVmdDsiOiLihroiLCJjaXJjbGVhcnJvd3JpZ2h0OyI6IuKGuyIsImNpcmNsZWRhc3Q7Ijoi4oqbIiwiY2lyY2xlZGNpcmM7Ijoi4oqaIiwiY2lyY2xlZGRhc2g7Ijoi4oqdIiwiQ2lyY2xlRG90OyI6IuKKmSIsImNpcmNsZWRSOyI6IsKuIiwiY2lyY2xlZFM7Ijoi4pOIIiwiQ2lyY2xlTWludXM7Ijoi4oqWIiwiQ2lyY2xlUGx1czsiOiLiipUiLCJDaXJjbGVUaW1lczsiOiLiipciLCJjaXJFOyI6IuKngyIsImNpcmU7Ijoi4omXIiwiY2lyZm5pbnQ7Ijoi4qiQIiwiY2lybWlkOyI6IuKrryIsImNpcnNjaXI7Ijoi4qeCIiwiQ2xvY2t3aXNlQ29udG91ckludGVncmFsOyI6IuKIsiIsIkNsb3NlQ3VybHlEb3VibGVRdW90ZTsiOiLigJ0iLCJDbG9zZUN1cmx5UXVvdGU7Ijoi4oCZIiwiY2x1YnM7Ijoi4pmjIiwiY2x1YnN1aXQ7Ijoi4pmjIiwiQ29sb247Ijoi4oi3IiwiY29sb247IjoiOiIsIkNvbG9uZTsiOiLiqbQiLCJjb2xvbmU7Ijoi4omUIiwiY29sb25lcTsiOiLiiZQiLCJjb21tYTsiOiIsIiwiY29tbWF0OyI6IkAiLCJjb21wOyI6IuKIgSIsImNvbXBmbjsiOiLiiJgiLCJjb21wbGVtZW50OyI6IuKIgSIsImNvbXBsZXhlczsiOiLihIIiLCJjb25nOyI6IuKJhSIsImNvbmdkb3Q7Ijoi4qmtIiwiQ29uZ3J1ZW50OyI6IuKJoSIsIkNvbmludDsiOiLiiK8iLCJjb25pbnQ7Ijoi4oiuIiwiQ29udG91ckludGVncmFsOyI6IuKIriIsIkNvcGY7Ijoi4oSCIiwiY29wZjsiOiLwnZWUIiwiY29wcm9kOyI6IuKIkCIsIkNvcHJvZHVjdDsiOiLiiJAiLCJDT1BZOyI6IsKpIixDT1BZOiLCqSIsImNvcHk7IjoiwqkiLGNvcHk6IsKpIiwiY29weXNyOyI6IuKElyIsIkNvdW50ZXJDbG9ja3dpc2VDb250b3VySW50ZWdyYWw7Ijoi4oizIiwiY3JhcnI7Ijoi4oa1IiwiQ3Jvc3M7Ijoi4qivIiwiY3Jvc3M7Ijoi4pyXIiwiQ3NjcjsiOiLwnZKeIiwiY3NjcjsiOiLwnZK4IiwiY3N1YjsiOiLiq48iLCJjc3ViZTsiOiLiq5EiLCJjc3VwOyI6IuKrkCIsImNzdXBlOyI6IuKrkiIsImN0ZG90OyI6IuKLryIsImN1ZGFycmw7Ijoi4qS4IiwiY3VkYXJycjsiOiLipLUiLCJjdWVwcjsiOiLii54iLCJjdWVzYzsiOiLii58iLCJjdWxhcnI7Ijoi4oa2IiwiY3VsYXJycDsiOiLipL0iLCJDdXA7Ijoi4ouTIiwiY3VwOyI6IuKIqiIsImN1cGJyY2FwOyI6IuKpiCIsIkN1cENhcDsiOiLiiY0iLCJjdXBjYXA7Ijoi4qmGIiwiY3VwY3VwOyI6IuKpiiIsImN1cGRvdDsiOiLiio0iLCJjdXBvcjsiOiLiqYUiLCJjdXBzOyI6IuKIqu+4gCIsImN1cmFycjsiOiLihrciLCJjdXJhcnJtOyI6IuKkvCIsImN1cmx5ZXFwcmVjOyI6IuKLniIsImN1cmx5ZXFzdWNjOyI6IuKLnyIsImN1cmx5dmVlOyI6IuKLjiIsImN1cmx5d2VkZ2U7Ijoi4ouPIiwiY3VycmVuOyI6IsKkIixjdXJyZW46IsKkIiwiY3VydmVhcnJvd2xlZnQ7Ijoi4oa2IiwiY3VydmVhcnJvd3JpZ2h0OyI6IuKGtyIsImN1dmVlOyI6IuKLjiIsImN1d2VkOyI6IuKLjyIsImN3Y29uaW50OyI6IuKIsiIsImN3aW50OyI6IuKIsSIsImN5bGN0eTsiOiLijK0iLCJEYWdnZXI7Ijoi4oChIiwiZGFnZ2VyOyI6IuKAoCIsImRhbGV0aDsiOiLihLgiLCJEYXJyOyI6IuKGoSIsImRBcnI7Ijoi4oeTIiwiZGFycjsiOiLihpMiLCJkYXNoOyI6IuKAkCIsIkRhc2h2OyI6IuKrpCIsImRhc2h2OyI6IuKKoyIsImRia2Fyb3c7Ijoi4qSPIiwiZGJsYWM7Ijoiy50iLCJEY2Fyb247IjoixI4iLCJkY2Fyb247IjoixI8iLCJEY3k7Ijoi0JQiLCJkY3k7Ijoi0LQiLCJERDsiOiLihYUiLCJkZDsiOiLihYYiLCJkZGFnZ2VyOyI6IuKAoSIsImRkYXJyOyI6IuKHiiIsIkREb3RyYWhkOyI6IuKkkSIsImRkb3RzZXE7Ijoi4qm3IiwiZGVnOyI6IsKwIixkZWc6IsKwIiwiRGVsOyI6IuKIhyIsIkRlbHRhOyI6Is6UIiwiZGVsdGE7IjoizrQiLCJkZW1wdHl2OyI6IuKmsSIsImRmaXNodDsiOiLipb8iLCJEZnI7Ijoi8J2UhyIsImRmcjsiOiLwnZShIiwiZEhhcjsiOiLipaUiLCJkaGFybDsiOiLih4MiLCJkaGFycjsiOiLih4IiLCJEaWFjcml0aWNhbEFjdXRlOyI6IsK0IiwiRGlhY3JpdGljYWxEb3Q7Ijoiy5kiLCJEaWFjcml0aWNhbERvdWJsZUFjdXRlOyI6IsudIiwiRGlhY3JpdGljYWxHcmF2ZTsiOiJgIiwiRGlhY3JpdGljYWxUaWxkZTsiOiLLnCIsImRpYW07Ijoi4ouEIiwiRGlhbW9uZDsiOiLii4QiLCJkaWFtb25kOyI6IuKLhCIsImRpYW1vbmRzdWl0OyI6IuKZpiIsImRpYW1zOyI6IuKZpiIsImRpZTsiOiLCqCIsIkRpZmZlcmVudGlhbEQ7Ijoi4oWGIiwiZGlnYW1tYTsiOiLPnSIsImRpc2luOyI6IuKLsiIsImRpdjsiOiLDtyIsImRpdmlkZTsiOiLDtyIsZGl2aWRlOiLDtyIsImRpdmlkZW9udGltZXM7Ijoi4ouHIiwiZGl2b254OyI6IuKLhyIsIkRKY3k7Ijoi0IIiLCJkamN5OyI6ItGSIiwiZGxjb3JuOyI6IuKMniIsImRsY3JvcDsiOiLijI0iLCJkb2xsYXI7IjoiJCIsIkRvcGY7Ijoi8J2UuyIsImRvcGY7Ijoi8J2VlSIsIkRvdDsiOiLCqCIsImRvdDsiOiLLmSIsIkRvdERvdDsiOiLig5wiLCJkb3RlcTsiOiLiiZAiLCJkb3RlcWRvdDsiOiLiiZEiLCJEb3RFcXVhbDsiOiLiiZAiLCJkb3RtaW51czsiOiLiiLgiLCJkb3RwbHVzOyI6IuKIlCIsImRvdHNxdWFyZTsiOiLiiqEiLCJkb3VibGViYXJ3ZWRnZTsiOiLijIYiLCJEb3VibGVDb250b3VySW50ZWdyYWw7Ijoi4oivIiwiRG91YmxlRG90OyI6IsKoIiwiRG91YmxlRG93bkFycm93OyI6IuKHkyIsIkRvdWJsZUxlZnRBcnJvdzsiOiLih5AiLCJEb3VibGVMZWZ0UmlnaHRBcnJvdzsiOiLih5QiLCJEb3VibGVMZWZ0VGVlOyI6IuKrpCIsIkRvdWJsZUxvbmdMZWZ0QXJyb3c7Ijoi4p+4IiwiRG91YmxlTG9uZ0xlZnRSaWdodEFycm93OyI6IuKfuiIsIkRvdWJsZUxvbmdSaWdodEFycm93OyI6IuKfuSIsIkRvdWJsZVJpZ2h0QXJyb3c7Ijoi4oeSIiwiRG91YmxlUmlnaHRUZWU7Ijoi4oqoIiwiRG91YmxlVXBBcnJvdzsiOiLih5EiLCJEb3VibGVVcERvd25BcnJvdzsiOiLih5UiLCJEb3VibGVWZXJ0aWNhbEJhcjsiOiLiiKUiLCJEb3duQXJyb3c7Ijoi4oaTIiwiRG93bmFycm93OyI6IuKHkyIsImRvd25hcnJvdzsiOiLihpMiLCJEb3duQXJyb3dCYXI7Ijoi4qSTIiwiRG93bkFycm93VXBBcnJvdzsiOiLih7UiLCJEb3duQnJldmU7IjoizJEiLCJkb3duZG93bmFycm93czsiOiLih4oiLCJkb3duaGFycG9vbmxlZnQ7Ijoi4oeDIiwiZG93bmhhcnBvb25yaWdodDsiOiLih4IiLCJEb3duTGVmdFJpZ2h0VmVjdG9yOyI6IuKlkCIsIkRvd25MZWZ0VGVlVmVjdG9yOyI6IuKlniIsIkRvd25MZWZ0VmVjdG9yOyI6IuKGvSIsIkRvd25MZWZ0VmVjdG9yQmFyOyI6IuKlliIsIkRvd25SaWdodFRlZVZlY3RvcjsiOiLipZ8iLCJEb3duUmlnaHRWZWN0b3I7Ijoi4oeBIiwiRG93blJpZ2h0VmVjdG9yQmFyOyI6IuKllyIsIkRvd25UZWU7Ijoi4oqkIiwiRG93blRlZUFycm93OyI6IuKGpyIsImRyYmthcm93OyI6IuKkkCIsImRyY29ybjsiOiLijJ8iLCJkcmNyb3A7Ijoi4oyMIiwiRHNjcjsiOiLwnZKfIiwiZHNjcjsiOiLwnZK5IiwiRFNjeTsiOiLQhSIsImRzY3k7Ijoi0ZUiLCJkc29sOyI6IuKntiIsIkRzdHJvazsiOiLEkCIsImRzdHJvazsiOiLEkSIsImR0ZG90OyI6IuKLsSIsImR0cmk7Ijoi4pa/IiwiZHRyaWY7Ijoi4pa+IiwiZHVhcnI7Ijoi4oe1IiwiZHVoYXI7Ijoi4qWvIiwiZHdhbmdsZTsiOiLipqYiLCJEWmN5OyI6ItCPIiwiZHpjeTsiOiLRnyIsImR6aWdyYXJyOyI6IuKfvyIsIkVhY3V0ZTsiOiLDiSIsRWFjdXRlOiLDiSIsImVhY3V0ZTsiOiLDqSIsZWFjdXRlOiLDqSIsImVhc3RlcjsiOiLiqa4iLCJFY2Fyb247IjoixJoiLCJlY2Fyb247IjoixJsiLCJlY2lyOyI6IuKJliIsIkVjaXJjOyI6IsOKIixFY2lyYzoiw4oiLCJlY2lyYzsiOiLDqiIsZWNpcmM6IsOqIiwiZWNvbG9uOyI6IuKJlSIsIkVjeTsiOiLQrSIsImVjeTsiOiLRjSIsImVERG90OyI6IuKptyIsIkVkb3Q7IjoixJYiLCJlRG90OyI6IuKJkSIsImVkb3Q7IjoixJciLCJlZTsiOiLihYciLCJlZkRvdDsiOiLiiZIiLCJFZnI7Ijoi8J2UiCIsImVmcjsiOiLwnZSiIiwiZWc7Ijoi4qqaIiwiRWdyYXZlOyI6IsOIIixFZ3JhdmU6IsOIIiwiZWdyYXZlOyI6IsOoIixlZ3JhdmU6IsOoIiwiZWdzOyI6IuKqliIsImVnc2RvdDsiOiLiqpgiLCJlbDsiOiLiqpkiLCJFbGVtZW50OyI6IuKIiCIsImVsaW50ZXJzOyI6IuKPpyIsImVsbDsiOiLihJMiLCJlbHM7Ijoi4qqVIiwiZWxzZG90OyI6IuKqlyIsIkVtYWNyOyI6IsSSIiwiZW1hY3I7IjoixJMiLCJlbXB0eTsiOiLiiIUiLCJlbXB0eXNldDsiOiLiiIUiLCJFbXB0eVNtYWxsU3F1YXJlOyI6IuKXuyIsImVtcHR5djsiOiLiiIUiLCJFbXB0eVZlcnlTbWFsbFNxdWFyZTsiOiLilqsiLCJlbXNwOyI6IuKAgyIsImVtc3AxMzsiOiLigIQiLCJlbXNwMTQ7Ijoi4oCFIiwiRU5HOyI6IsWKIiwiZW5nOyI6IsWLIiwiZW5zcDsiOiLigIIiLCJFb2dvbjsiOiLEmCIsImVvZ29uOyI6IsSZIiwiRW9wZjsiOiLwnZS8IiwiZW9wZjsiOiLwnZWWIiwiZXBhcjsiOiLii5UiLCJlcGFyc2w7Ijoi4qejIiwiZXBsdXM7Ijoi4qmxIiwiZXBzaTsiOiLOtSIsIkVwc2lsb247IjoizpUiLCJlcHNpbG9uOyI6Is61IiwiZXBzaXY7Ijoiz7UiLCJlcWNpcmM7Ijoi4omWIiwiZXFjb2xvbjsiOiLiiZUiLCJlcXNpbTsiOiLiiYIiLCJlcXNsYW50Z3RyOyI6IuKqliIsImVxc2xhbnRsZXNzOyI6IuKqlSIsIkVxdWFsOyI6IuKptSIsImVxdWFsczsiOiI9IiwiRXF1YWxUaWxkZTsiOiLiiYIiLCJlcXVlc3Q7Ijoi4omfIiwiRXF1aWxpYnJpdW07Ijoi4oeMIiwiZXF1aXY7Ijoi4omhIiwiZXF1aXZERDsiOiLiqbgiLCJlcXZwYXJzbDsiOiLip6UiLCJlcmFycjsiOiLipbEiLCJlckRvdDsiOiLiiZMiLCJFc2NyOyI6IuKEsCIsImVzY3I7Ijoi4oSvIiwiZXNkb3Q7Ijoi4omQIiwiRXNpbTsiOiLiqbMiLCJlc2ltOyI6IuKJgiIsIkV0YTsiOiLOlyIsImV0YTsiOiLOtyIsIkVUSDsiOiLDkCIsRVRIOiLDkCIsImV0aDsiOiLDsCIsZXRoOiLDsCIsIkV1bWw7Ijoiw4siLEV1bWw6IsOLIiwiZXVtbDsiOiLDqyIsZXVtbDoiw6siLCJldXJvOyI6IuKCrCIsImV4Y2w7IjoiISIsImV4aXN0OyI6IuKIgyIsIkV4aXN0czsiOiLiiIMiLCJleHBlY3RhdGlvbjsiOiLihLAiLCJFeHBvbmVudGlhbEU7Ijoi4oWHIiwiZXhwb25lbnRpYWxlOyI6IuKFhyIsImZhbGxpbmdkb3RzZXE7Ijoi4omSIiwiRmN5OyI6ItCkIiwiZmN5OyI6ItGEIiwiZmVtYWxlOyI6IuKZgCIsImZmaWxpZzsiOiLvrIMiLCJmZmxpZzsiOiLvrIAiLCJmZmxsaWc7Ijoi76yEIiwiRmZyOyI6IvCdlIkiLCJmZnI7Ijoi8J2UoyIsImZpbGlnOyI6Iu+sgSIsIkZpbGxlZFNtYWxsU3F1YXJlOyI6IuKXvCIsIkZpbGxlZFZlcnlTbWFsbFNxdWFyZTsiOiLilqoiLCJmamxpZzsiOiJmaiIsImZsYXQ7Ijoi4pmtIiwiZmxsaWc7Ijoi76yCIiwiZmx0bnM7Ijoi4paxIiwiZm5vZjsiOiLGkiIsIkZvcGY7Ijoi8J2UvSIsImZvcGY7Ijoi8J2VlyIsIkZvckFsbDsiOiLiiIAiLCJmb3JhbGw7Ijoi4oiAIiwiZm9yazsiOiLii5QiLCJmb3JrdjsiOiLiq5kiLCJGb3VyaWVydHJmOyI6IuKEsSIsImZwYXJ0aW50OyI6IuKojSIsImZyYWMxMjsiOiLCvSIsZnJhYzEyOiLCvSIsImZyYWMxMzsiOiLihZMiLCJmcmFjMTQ7IjoiwrwiLGZyYWMxNDoiwrwiLCJmcmFjMTU7Ijoi4oWVIiwiZnJhYzE2OyI6IuKFmSIsImZyYWMxODsiOiLihZsiLCJmcmFjMjM7Ijoi4oWUIiwiZnJhYzI1OyI6IuKFliIsImZyYWMzNDsiOiLCviIsZnJhYzM0OiLCviIsImZyYWMzNTsiOiLihZciLCJmcmFjMzg7Ijoi4oWcIiwiZnJhYzQ1OyI6IuKFmCIsImZyYWM1NjsiOiLihZoiLCJmcmFjNTg7Ijoi4oWdIiwiZnJhYzc4OyI6IuKFniIsImZyYXNsOyI6IuKBhCIsImZyb3duOyI6IuKMoiIsIkZzY3I7Ijoi4oSxIiwiZnNjcjsiOiLwnZK7IiwiZ2FjdXRlOyI6Ise1IiwiR2FtbWE7IjoizpMiLCJnYW1tYTsiOiLOsyIsIkdhbW1hZDsiOiLPnCIsImdhbW1hZDsiOiLPnSIsImdhcDsiOiLiqoYiLCJHYnJldmU7IjoixJ4iLCJnYnJldmU7IjoixJ8iLCJHY2VkaWw7IjoixKIiLCJHY2lyYzsiOiLEnCIsImdjaXJjOyI6IsSdIiwiR2N5OyI6ItCTIiwiZ2N5OyI6ItCzIiwiR2RvdDsiOiLEoCIsImdkb3Q7IjoixKEiLCJnRTsiOiLiiaciLCJnZTsiOiLiiaUiLCJnRWw7Ijoi4qqMIiwiZ2VsOyI6IuKLmyIsImdlcTsiOiLiiaUiLCJnZXFxOyI6IuKJpyIsImdlcXNsYW50OyI6IuKpviIsImdlczsiOiLiqb4iLCJnZXNjYzsiOiLiqqkiLCJnZXNkb3Q7Ijoi4qqAIiwiZ2VzZG90bzsiOiLiqoIiLCJnZXNkb3RvbDsiOiLiqoQiLCJnZXNsOyI6IuKLm++4gCIsImdlc2xlczsiOiLiqpQiLCJHZnI7Ijoi8J2UiiIsImdmcjsiOiLwnZSkIiwiR2c7Ijoi4ouZIiwiZ2c7Ijoi4omrIiwiZ2dnOyI6IuKLmSIsImdpbWVsOyI6IuKEtyIsIkdKY3k7Ijoi0IMiLCJnamN5OyI6ItGTIiwiZ2w7Ijoi4om3IiwiZ2xhOyI6IuKqpSIsImdsRTsiOiLiqpIiLCJnbGo7Ijoi4qqkIiwiZ25hcDsiOiLiqooiLCJnbmFwcHJveDsiOiLiqooiLCJnbkU7Ijoi4ompIiwiZ25lOyI6IuKqiCIsImduZXE7Ijoi4qqIIiwiZ25lcXE7Ijoi4ompIiwiZ25zaW07Ijoi4ounIiwiR29wZjsiOiLwnZS+IiwiZ29wZjsiOiLwnZWYIiwiZ3JhdmU7IjoiYCIsIkdyZWF0ZXJFcXVhbDsiOiLiiaUiLCJHcmVhdGVyRXF1YWxMZXNzOyI6IuKLmyIsIkdyZWF0ZXJGdWxsRXF1YWw7Ijoi4omnIiwiR3JlYXRlckdyZWF0ZXI7Ijoi4qqiIiwiR3JlYXRlckxlc3M7Ijoi4om3IiwiR3JlYXRlclNsYW50RXF1YWw7Ijoi4qm+IiwiR3JlYXRlclRpbGRlOyI6IuKJsyIsIkdzY3I7Ijoi8J2SoiIsImdzY3I7Ijoi4oSKIiwiZ3NpbTsiOiLiibMiLCJnc2ltZTsiOiLiqo4iLCJnc2ltbDsiOiLiqpAiLCJHVDsiOiI+IixHVDoiPiIsIkd0OyI6IuKJqyIsImd0OyI6Ij4iLGd0OiI+IiwiZ3RjYzsiOiLiqqciLCJndGNpcjsiOiLiqboiLCJndGRvdDsiOiLii5ciLCJndGxQYXI7Ijoi4qaVIiwiZ3RxdWVzdDsiOiLiqbwiLCJndHJhcHByb3g7Ijoi4qqGIiwiZ3RyYXJyOyI6IuKluCIsImd0cmRvdDsiOiLii5ciLCJndHJlcWxlc3M7Ijoi4oubIiwiZ3RyZXFxbGVzczsiOiLiqowiLCJndHJsZXNzOyI6IuKJtyIsImd0cnNpbTsiOiLiibMiLCJndmVydG5lcXE7Ijoi4omp77iAIiwiZ3ZuRTsiOiLiianvuIAiLCJIYWNlazsiOiLLhyIsImhhaXJzcDsiOiLigIoiLCJoYWxmOyI6IsK9IiwiaGFtaWx0OyI6IuKEiyIsIkhBUkRjeTsiOiLQqiIsImhhcmRjeTsiOiLRiiIsImhBcnI7Ijoi4oeUIiwiaGFycjsiOiLihpQiLCJoYXJyY2lyOyI6IuKliCIsImhhcnJ3OyI6IuKGrSIsIkhhdDsiOiJeIiwiaGJhcjsiOiLihI8iLCJIY2lyYzsiOiLEpCIsImhjaXJjOyI6IsSlIiwiaGVhcnRzOyI6IuKZpSIsImhlYXJ0c3VpdDsiOiLimaUiLCJoZWxsaXA7Ijoi4oCmIiwiaGVyY29uOyI6IuKKuSIsIkhmcjsiOiLihIwiLCJoZnI7Ijoi8J2UpSIsIkhpbGJlcnRTcGFjZTsiOiLihIsiLCJoa3NlYXJvdzsiOiLipKUiLCJoa3N3YXJvdzsiOiLipKYiLCJob2FycjsiOiLih78iLCJob210aHQ7Ijoi4oi7IiwiaG9va2xlZnRhcnJvdzsiOiLihqkiLCJob29rcmlnaHRhcnJvdzsiOiLihqoiLCJIb3BmOyI6IuKEjSIsImhvcGY7Ijoi8J2VmSIsImhvcmJhcjsiOiLigJUiLCJIb3Jpem9udGFsTGluZTsiOiLilIAiLCJIc2NyOyI6IuKEiyIsImhzY3I7Ijoi8J2SvSIsImhzbGFzaDsiOiLihI8iLCJIc3Ryb2s7IjoixKYiLCJoc3Ryb2s7IjoixKciLCJIdW1wRG93bkh1bXA7Ijoi4omOIiwiSHVtcEVxdWFsOyI6IuKJjyIsImh5YnVsbDsiOiLigYMiLCJoeXBoZW47Ijoi4oCQIiwiSWFjdXRlOyI6IsONIixJYWN1dGU6IsONIiwiaWFjdXRlOyI6IsOtIixpYWN1dGU6IsOtIiwiaWM7Ijoi4oGjIiwiSWNpcmM7Ijoiw44iLEljaXJjOiLDjiIsImljaXJjOyI6IsOuIixpY2lyYzoiw64iLCJJY3k7Ijoi0JgiLCJpY3k7Ijoi0LgiLCJJZG90OyI6IsSwIiwiSUVjeTsiOiLQlSIsImllY3k7Ijoi0LUiLCJpZXhjbDsiOiLCoSIsaWV4Y2w6IsKhIiwiaWZmOyI6IuKHlCIsIklmcjsiOiLihJEiLCJpZnI7Ijoi8J2UpiIsIklncmF2ZTsiOiLDjCIsSWdyYXZlOiLDjCIsImlncmF2ZTsiOiLDrCIsaWdyYXZlOiLDrCIsImlpOyI6IuKFiCIsImlpaWludDsiOiLiqIwiLCJpaWludDsiOiLiiK0iLCJpaW5maW47Ijoi4qecIiwiaWlvdGE7Ijoi4oSpIiwiSUpsaWc7IjoixLIiLCJpamxpZzsiOiLEsyIsIkltOyI6IuKEkSIsIkltYWNyOyI6IsSqIiwiaW1hY3I7IjoixKsiLCJpbWFnZTsiOiLihJEiLCJJbWFnaW5hcnlJOyI6IuKFiCIsImltYWdsaW5lOyI6IuKEkCIsImltYWdwYXJ0OyI6IuKEkSIsImltYXRoOyI6IsSxIiwiaW1vZjsiOiLiirciLCJpbXBlZDsiOiLGtSIsIkltcGxpZXM7Ijoi4oeSIiwiaW47Ijoi4oiIIiwiaW5jYXJlOyI6IuKEhSIsImluZmluOyI6IuKIniIsImluZmludGllOyI6IuKnnSIsImlub2RvdDsiOiLEsSIsIkludDsiOiLiiKwiLCJpbnQ7Ijoi4oirIiwiaW50Y2FsOyI6IuKKuiIsImludGVnZXJzOyI6IuKEpCIsIkludGVncmFsOyI6IuKIqyIsImludGVyY2FsOyI6IuKKuiIsIkludGVyc2VjdGlvbjsiOiLii4IiLCJpbnRsYXJoazsiOiLiqJciLCJpbnRwcm9kOyI6IuKovCIsIkludmlzaWJsZUNvbW1hOyI6IuKBoyIsIkludmlzaWJsZVRpbWVzOyI6IuKBoiIsIklPY3k7Ijoi0IEiLCJpb2N5OyI6ItGRIiwiSW9nb247IjoixK4iLCJpb2dvbjsiOiLEryIsIklvcGY7Ijoi8J2VgCIsImlvcGY7Ijoi8J2VmiIsIklvdGE7IjoizpkiLCJpb3RhOyI6Is65IiwiaXByb2Q7Ijoi4qi8IiwiaXF1ZXN0OyI6IsK/IixpcXVlc3Q6IsK/IiwiSXNjcjsiOiLihJAiLCJpc2NyOyI6IvCdkr4iLCJpc2luOyI6IuKIiCIsImlzaW5kb3Q7Ijoi4ou1IiwiaXNpbkU7Ijoi4ou5IiwiaXNpbnM7Ijoi4ou0IiwiaXNpbnN2OyI6IuKLsyIsImlzaW52OyI6IuKIiCIsIml0OyI6IuKBoiIsIkl0aWxkZTsiOiLEqCIsIml0aWxkZTsiOiLEqSIsIkl1a2N5OyI6ItCGIiwiaXVrY3k7Ijoi0ZYiLCJJdW1sOyI6IsOPIixJdW1sOiLDjyIsIml1bWw7Ijoiw68iLGl1bWw6IsOvIiwiSmNpcmM7IjoixLQiLCJqY2lyYzsiOiLEtSIsIkpjeTsiOiLQmSIsImpjeTsiOiLQuSIsIkpmcjsiOiLwnZSNIiwiamZyOyI6IvCdlKciLCJqbWF0aDsiOiLItyIsIkpvcGY7Ijoi8J2VgSIsImpvcGY7Ijoi8J2VmyIsIkpzY3I7Ijoi8J2SpSIsImpzY3I7Ijoi8J2SvyIsIkpzZXJjeTsiOiLQiCIsImpzZXJjeTsiOiLRmCIsIkp1a2N5OyI6ItCEIiwianVrY3k7Ijoi0ZQiLCJLYXBwYTsiOiLOmiIsImthcHBhOyI6Is66Iiwia2FwcGF2OyI6Is+wIiwiS2NlZGlsOyI6IsS2Iiwia2NlZGlsOyI6IsS3IiwiS2N5OyI6ItCaIiwia2N5OyI6ItC6IiwiS2ZyOyI6IvCdlI4iLCJrZnI7Ijoi8J2UqCIsImtncmVlbjsiOiLEuCIsIktIY3k7Ijoi0KUiLCJraGN5OyI6ItGFIiwiS0pjeTsiOiLQjCIsImtqY3k7Ijoi0ZwiLCJLb3BmOyI6IvCdlYIiLCJrb3BmOyI6IvCdlZwiLCJLc2NyOyI6IvCdkqYiLCJrc2NyOyI6IvCdk4AiLCJsQWFycjsiOiLih5oiLCJMYWN1dGU7IjoixLkiLCJsYWN1dGU7IjoixLoiLCJsYWVtcHR5djsiOiLiprQiLCJsYWdyYW47Ijoi4oSSIiwiTGFtYmRhOyI6Is6bIiwibGFtYmRhOyI6Is67IiwiTGFuZzsiOiLin6oiLCJsYW5nOyI6IuKfqCIsImxhbmdkOyI6IuKmkSIsImxhbmdsZTsiOiLin6giLCJsYXA7Ijoi4qqFIiwiTGFwbGFjZXRyZjsiOiLihJIiLCJsYXF1bzsiOiLCqyIsbGFxdW86IsKrIiwiTGFycjsiOiLihp4iLCJsQXJyOyI6IuKHkCIsImxhcnI7Ijoi4oaQIiwibGFycmI7Ijoi4oekIiwibGFycmJmczsiOiLipJ8iLCJsYXJyZnM7Ijoi4qSdIiwibGFycmhrOyI6IuKGqSIsImxhcnJscDsiOiLihqsiLCJsYXJycGw7Ijoi4qS5IiwibGFycnNpbTsiOiLipbMiLCJsYXJydGw7Ijoi4oaiIiwibGF0OyI6IuKqqyIsImxBdGFpbDsiOiLipJsiLCJsYXRhaWw7Ijoi4qSZIiwibGF0ZTsiOiLiqq0iLCJsYXRlczsiOiLiqq3vuIAiLCJsQmFycjsiOiLipI4iLCJsYmFycjsiOiLipIwiLCJsYmJyazsiOiLinbIiLCJsYnJhY2U7IjoieyIsImxicmFjazsiOiJbIiwibGJya2U7Ijoi4qaLIiwibGJya3NsZDsiOiLipo8iLCJsYnJrc2x1OyI6IuKmjSIsIkxjYXJvbjsiOiLEvSIsImxjYXJvbjsiOiLEviIsIkxjZWRpbDsiOiLEuyIsImxjZWRpbDsiOiLEvCIsImxjZWlsOyI6IuKMiCIsImxjdWI7IjoieyIsIkxjeTsiOiLQmyIsImxjeTsiOiLQuyIsImxkY2E7Ijoi4qS2IiwibGRxdW87Ijoi4oCcIiwibGRxdW9yOyI6IuKAniIsImxkcmRoYXI7Ijoi4qWnIiwibGRydXNoYXI7Ijoi4qWLIiwibGRzaDsiOiLihrIiLCJsRTsiOiLiiaYiLCJsZTsiOiLiiaQiLCJMZWZ0QW5nbGVCcmFja2V0OyI6IuKfqCIsIkxlZnRBcnJvdzsiOiLihpAiLCJMZWZ0YXJyb3c7Ijoi4oeQIiwibGVmdGFycm93OyI6IuKGkCIsIkxlZnRBcnJvd0JhcjsiOiLih6QiLCJMZWZ0QXJyb3dSaWdodEFycm93OyI6IuKHhiIsImxlZnRhcnJvd3RhaWw7Ijoi4oaiIiwiTGVmdENlaWxpbmc7Ijoi4oyIIiwiTGVmdERvdWJsZUJyYWNrZXQ7Ijoi4p+mIiwiTGVmdERvd25UZWVWZWN0b3I7Ijoi4qWhIiwiTGVmdERvd25WZWN0b3I7Ijoi4oeDIiwiTGVmdERvd25WZWN0b3JCYXI7Ijoi4qWZIiwiTGVmdEZsb29yOyI6IuKMiiIsImxlZnRoYXJwb29uZG93bjsiOiLihr0iLCJsZWZ0aGFycG9vbnVwOyI6IuKGvCIsImxlZnRsZWZ0YXJyb3dzOyI6IuKHhyIsIkxlZnRSaWdodEFycm93OyI6IuKGlCIsIkxlZnRyaWdodGFycm93OyI6IuKHlCIsImxlZnRyaWdodGFycm93OyI6IuKGlCIsImxlZnRyaWdodGFycm93czsiOiLih4YiLCJsZWZ0cmlnaHRoYXJwb29uczsiOiLih4siLCJsZWZ0cmlnaHRzcXVpZ2Fycm93OyI6IuKGrSIsIkxlZnRSaWdodFZlY3RvcjsiOiLipY4iLCJMZWZ0VGVlOyI6IuKKoyIsIkxlZnRUZWVBcnJvdzsiOiLihqQiLCJMZWZ0VGVlVmVjdG9yOyI6IuKlmiIsImxlZnR0aHJlZXRpbWVzOyI6IuKLiyIsIkxlZnRUcmlhbmdsZTsiOiLiirIiLCJMZWZ0VHJpYW5nbGVCYXI7Ijoi4qePIiwiTGVmdFRyaWFuZ2xlRXF1YWw7Ijoi4oq0IiwiTGVmdFVwRG93blZlY3RvcjsiOiLipZEiLCJMZWZ0VXBUZWVWZWN0b3I7Ijoi4qWgIiwiTGVmdFVwVmVjdG9yOyI6IuKGvyIsIkxlZnRVcFZlY3RvckJhcjsiOiLipZgiLCJMZWZ0VmVjdG9yOyI6IuKGvCIsIkxlZnRWZWN0b3JCYXI7Ijoi4qWSIiwibEVnOyI6IuKqiyIsImxlZzsiOiLii5oiLCJsZXE7Ijoi4omkIiwibGVxcTsiOiLiiaYiLCJsZXFzbGFudDsiOiLiqb0iLCJsZXM7Ijoi4qm9IiwibGVzY2M7Ijoi4qqoIiwibGVzZG90OyI6IuKpvyIsImxlc2RvdG87Ijoi4qqBIiwibGVzZG90b3I7Ijoi4qqDIiwibGVzZzsiOiLii5rvuIAiLCJsZXNnZXM7Ijoi4qqTIiwibGVzc2FwcHJveDsiOiLiqoUiLCJsZXNzZG90OyI6IuKLliIsImxlc3NlcWd0cjsiOiLii5oiLCJsZXNzZXFxZ3RyOyI6IuKqiyIsIkxlc3NFcXVhbEdyZWF0ZXI7Ijoi4ouaIiwiTGVzc0Z1bGxFcXVhbDsiOiLiiaYiLCJMZXNzR3JlYXRlcjsiOiLiibYiLCJsZXNzZ3RyOyI6IuKJtiIsIkxlc3NMZXNzOyI6IuKqoSIsImxlc3NzaW07Ijoi4omyIiwiTGVzc1NsYW50RXF1YWw7Ijoi4qm9IiwiTGVzc1RpbGRlOyI6IuKJsiIsImxmaXNodDsiOiLipbwiLCJsZmxvb3I7Ijoi4oyKIiwiTGZyOyI6IvCdlI8iLCJsZnI7Ijoi8J2UqSIsImxnOyI6IuKJtiIsImxnRTsiOiLiqpEiLCJsSGFyOyI6IuKloiIsImxoYXJkOyI6IuKGvSIsImxoYXJ1OyI6IuKGvCIsImxoYXJ1bDsiOiLipaoiLCJsaGJsazsiOiLiloQiLCJMSmN5OyI6ItCJIiwibGpjeTsiOiLRmSIsIkxsOyI6IuKLmCIsImxsOyI6IuKJqiIsImxsYXJyOyI6IuKHhyIsImxsY29ybmVyOyI6IuKMniIsIkxsZWZ0YXJyb3c7Ijoi4oeaIiwibGxoYXJkOyI6IuKlqyIsImxsdHJpOyI6IuKXuiIsIkxtaWRvdDsiOiLEvyIsImxtaWRvdDsiOiLFgCIsImxtb3VzdDsiOiLijrAiLCJsbW91c3RhY2hlOyI6IuKOsCIsImxuYXA7Ijoi4qqJIiwibG5hcHByb3g7Ijoi4qqJIiwibG5FOyI6IuKJqCIsImxuZTsiOiLiqociLCJsbmVxOyI6IuKqhyIsImxuZXFxOyI6IuKJqCIsImxuc2ltOyI6IuKLpiIsImxvYW5nOyI6IuKfrCIsImxvYXJyOyI6IuKHvSIsImxvYnJrOyI6IuKfpiIsIkxvbmdMZWZ0QXJyb3c7Ijoi4p+1IiwiTG9uZ2xlZnRhcnJvdzsiOiLin7giLCJsb25nbGVmdGFycm93OyI6IuKftSIsIkxvbmdMZWZ0UmlnaHRBcnJvdzsiOiLin7ciLCJMb25nbGVmdHJpZ2h0YXJyb3c7Ijoi4p+6IiwibG9uZ2xlZnRyaWdodGFycm93OyI6IuKftyIsImxvbmdtYXBzdG87Ijoi4p+8IiwiTG9uZ1JpZ2h0QXJyb3c7Ijoi4p+2IiwiTG9uZ3JpZ2h0YXJyb3c7Ijoi4p+5IiwibG9uZ3JpZ2h0YXJyb3c7Ijoi4p+2IiwibG9vcGFycm93bGVmdDsiOiLihqsiLCJsb29wYXJyb3dyaWdodDsiOiLihqwiLCJsb3BhcjsiOiLipoUiLCJMb3BmOyI6IvCdlYMiLCJsb3BmOyI6IvCdlZ0iLCJsb3BsdXM7Ijoi4qitIiwibG90aW1lczsiOiLiqLQiLCJsb3dhc3Q7Ijoi4oiXIiwibG93YmFyOyI6Il8iLCJMb3dlckxlZnRBcnJvdzsiOiLihpkiLCJMb3dlclJpZ2h0QXJyb3c7Ijoi4oaYIiwibG96OyI6IuKXiiIsImxvemVuZ2U7Ijoi4peKIiwibG96ZjsiOiLip6siLCJscGFyOyI6IigiLCJscGFybHQ7Ijoi4qaTIiwibHJhcnI7Ijoi4oeGIiwibHJjb3JuZXI7Ijoi4oyfIiwibHJoYXI7Ijoi4oeLIiwibHJoYXJkOyI6IuKlrSIsImxybTsiOiLigI4iLCJscnRyaTsiOiLiir8iLCJsc2FxdW87Ijoi4oC5IiwiTHNjcjsiOiLihJIiLCJsc2NyOyI6IvCdk4EiLCJMc2g7Ijoi4oawIiwibHNoOyI6IuKGsCIsImxzaW07Ijoi4omyIiwibHNpbWU7Ijoi4qqNIiwibHNpbWc7Ijoi4qqPIiwibHNxYjsiOiJbIiwibHNxdW87Ijoi4oCYIiwibHNxdW9yOyI6IuKAmiIsIkxzdHJvazsiOiLFgSIsImxzdHJvazsiOiLFgiIsIkxUOyI6IjwiLExUOiI8IiwiTHQ7Ijoi4omqIiwibHQ7IjoiPCIsbHQ6IjwiLCJsdGNjOyI6IuKqpiIsImx0Y2lyOyI6IuKpuSIsImx0ZG90OyI6IuKLliIsImx0aHJlZTsiOiLii4siLCJsdGltZXM7Ijoi4ouJIiwibHRsYXJyOyI6IuKltiIsImx0cXVlc3Q7Ijoi4qm7IiwibHRyaTsiOiLil4MiLCJsdHJpZTsiOiLiirQiLCJsdHJpZjsiOiLil4IiLCJsdHJQYXI7Ijoi4qaWIiwibHVyZHNoYXI7Ijoi4qWKIiwibHVydWhhcjsiOiLipaYiLCJsdmVydG5lcXE7Ijoi4omo77iAIiwibHZuRTsiOiLiiajvuIAiLCJtYWNyOyI6IsKvIixtYWNyOiLCryIsIm1hbGU7Ijoi4pmCIiwibWFsdDsiOiLinKAiLCJtYWx0ZXNlOyI6IuKcoCIsIk1hcDsiOiLipIUiLCJtYXA7Ijoi4oamIiwibWFwc3RvOyI6IuKGpiIsIm1hcHN0b2Rvd247Ijoi4oanIiwibWFwc3RvbGVmdDsiOiLihqQiLCJtYXBzdG91cDsiOiLihqUiLCJtYXJrZXI7Ijoi4pauIiwibWNvbW1hOyI6IuKoqSIsIk1jeTsiOiLQnCIsIm1jeTsiOiLQvCIsIm1kYXNoOyI6IuKAlCIsIm1ERG90OyI6IuKIuiIsIm1lYXN1cmVkYW5nbGU7Ijoi4oihIiwiTWVkaXVtU3BhY2U7Ijoi4oGfIiwiTWVsbGludHJmOyI6IuKEsyIsIk1mcjsiOiLwnZSQIiwibWZyOyI6IvCdlKoiLCJtaG87Ijoi4oSnIiwibWljcm87IjoiwrUiLG1pY3JvOiLCtSIsIm1pZDsiOiLiiKMiLCJtaWRhc3Q7IjoiKiIsIm1pZGNpcjsiOiLiq7AiLCJtaWRkb3Q7IjoiwrciLG1pZGRvdDoiwrciLCJtaW51czsiOiLiiJIiLCJtaW51c2I7Ijoi4oqfIiwibWludXNkOyI6IuKIuCIsIm1pbnVzZHU7Ijoi4qiqIiwiTWludXNQbHVzOyI6IuKIkyIsIm1sY3A7Ijoi4qubIiwibWxkcjsiOiLigKYiLCJtbnBsdXM7Ijoi4oiTIiwibW9kZWxzOyI6IuKKpyIsIk1vcGY7Ijoi8J2VhCIsIm1vcGY7Ijoi8J2VniIsIm1wOyI6IuKIkyIsIk1zY3I7Ijoi4oSzIiwibXNjcjsiOiLwnZOCIiwibXN0cG9zOyI6IuKIviIsIk11OyI6Is6cIiwibXU7IjoizrwiLCJtdWx0aW1hcDsiOiLiirgiLCJtdW1hcDsiOiLiirgiLCJuYWJsYTsiOiLiiIciLCJOYWN1dGU7IjoixYMiLCJuYWN1dGU7IjoixYQiLCJuYW5nOyI6IuKIoOKDkiIsIm5hcDsiOiLiiYkiLCJuYXBFOyI6IuKpsMy4IiwibmFwaWQ7Ijoi4omLzLgiLCJuYXBvczsiOiLFiSIsIm5hcHByb3g7Ijoi4omJIiwibmF0dXI7Ijoi4pmuIiwibmF0dXJhbDsiOiLima4iLCJuYXR1cmFsczsiOiLihJUiLCJuYnNwOyI6IsKgIixuYnNwOiLCoCIsIm5idW1wOyI6IuKJjsy4IiwibmJ1bXBlOyI6IuKJj8y4IiwibmNhcDsiOiLiqYMiLCJOY2Fyb247IjoixYciLCJuY2Fyb247IjoixYgiLCJOY2VkaWw7IjoixYUiLCJuY2VkaWw7IjoixYYiLCJuY29uZzsiOiLiiYciLCJuY29uZ2RvdDsiOiLiqa3MuCIsIm5jdXA7Ijoi4qmCIiwiTmN5OyI6ItCdIiwibmN5OyI6ItC9IiwibmRhc2g7Ijoi4oCTIiwibmU7Ijoi4omgIiwibmVhcmhrOyI6IuKkpCIsIm5lQXJyOyI6IuKHlyIsIm5lYXJyOyI6IuKGlyIsIm5lYXJyb3c7Ijoi4oaXIiwibmVkb3Q7Ijoi4omQzLgiLCJOZWdhdGl2ZU1lZGl1bVNwYWNlOyI6IuKAiyIsIk5lZ2F0aXZlVGhpY2tTcGFjZTsiOiLigIsiLCJOZWdhdGl2ZVRoaW5TcGFjZTsiOiLigIsiLCJOZWdhdGl2ZVZlcnlUaGluU3BhY2U7Ijoi4oCLIiwibmVxdWl2OyI6IuKJoiIsIm5lc2VhcjsiOiLipKgiLCJuZXNpbTsiOiLiiYLMuCIsIk5lc3RlZEdyZWF0ZXJHcmVhdGVyOyI6IuKJqyIsIk5lc3RlZExlc3NMZXNzOyI6IuKJqiIsIk5ld0xpbmU7IjoiXG4iLCJuZXhpc3Q7Ijoi4oiEIiwibmV4aXN0czsiOiLiiIQiLCJOZnI7Ijoi8J2UkSIsIm5mcjsiOiLwnZSrIiwibmdFOyI6IuKJp8y4IiwibmdlOyI6IuKJsSIsIm5nZXE7Ijoi4omxIiwibmdlcXE7Ijoi4omnzLgiLCJuZ2Vxc2xhbnQ7Ijoi4qm+zLgiLCJuZ2VzOyI6IuKpvsy4IiwibkdnOyI6IuKLmcy4IiwibmdzaW07Ijoi4om1Iiwibkd0OyI6IuKJq+KDkiIsIm5ndDsiOiLiia8iLCJuZ3RyOyI6IuKJryIsIm5HdHY7Ijoi4omrzLgiLCJuaEFycjsiOiLih44iLCJuaGFycjsiOiLihq4iLCJuaHBhcjsiOiLiq7IiLCJuaTsiOiLiiIsiLCJuaXM7Ijoi4ou8IiwibmlzZDsiOiLii7oiLCJuaXY7Ijoi4oiLIiwiTkpjeTsiOiLQiiIsIm5qY3k7Ijoi0ZoiLCJubEFycjsiOiLih40iLCJubGFycjsiOiLihpoiLCJubGRyOyI6IuKApSIsIm5sRTsiOiLiiabMuCIsIm5sZTsiOiLiibAiLCJuTGVmdGFycm93OyI6IuKHjSIsIm5sZWZ0YXJyb3c7Ijoi4oaaIiwibkxlZnRyaWdodGFycm93OyI6IuKHjiIsIm5sZWZ0cmlnaHRhcnJvdzsiOiLihq4iLCJubGVxOyI6IuKJsCIsIm5sZXFxOyI6IuKJpsy4IiwibmxlcXNsYW50OyI6IuKpvcy4IiwibmxlczsiOiLiqb3MuCIsIm5sZXNzOyI6IuKJriIsIm5MbDsiOiLii5jMuCIsIm5sc2ltOyI6IuKJtCIsIm5MdDsiOiLiiarig5IiLCJubHQ7Ijoi4omuIiwibmx0cmk7Ijoi4ouqIiwibmx0cmllOyI6IuKLrCIsIm5MdHY7Ijoi4omqzLgiLCJubWlkOyI6IuKIpCIsIk5vQnJlYWs7Ijoi4oGgIiwiTm9uQnJlYWtpbmdTcGFjZTsiOiLCoCIsIk5vcGY7Ijoi4oSVIiwibm9wZjsiOiLwnZWfIiwiTm90OyI6IuKrrCIsIm5vdDsiOiLCrCIsbm90OiLCrCIsIk5vdENvbmdydWVudDsiOiLiiaIiLCJOb3RDdXBDYXA7Ijoi4omtIiwiTm90RG91YmxlVmVydGljYWxCYXI7Ijoi4oimIiwiTm90RWxlbWVudDsiOiLiiIkiLCJOb3RFcXVhbDsiOiLiiaAiLCJOb3RFcXVhbFRpbGRlOyI6IuKJgsy4IiwiTm90RXhpc3RzOyI6IuKIhCIsIk5vdEdyZWF0ZXI7Ijoi4omvIiwiTm90R3JlYXRlckVxdWFsOyI6IuKJsSIsIk5vdEdyZWF0ZXJGdWxsRXF1YWw7Ijoi4omnzLgiLCJOb3RHcmVhdGVyR3JlYXRlcjsiOiLiiavMuCIsIk5vdEdyZWF0ZXJMZXNzOyI6IuKJuSIsIk5vdEdyZWF0ZXJTbGFudEVxdWFsOyI6IuKpvsy4IiwiTm90R3JlYXRlclRpbGRlOyI6IuKJtSIsIk5vdEh1bXBEb3duSHVtcDsiOiLiiY7MuCIsIk5vdEh1bXBFcXVhbDsiOiLiiY/MuCIsIm5vdGluOyI6IuKIiSIsIm5vdGluZG90OyI6IuKLtcy4Iiwibm90aW5FOyI6IuKLucy4Iiwibm90aW52YTsiOiLiiIkiLCJub3RpbnZiOyI6IuKLtyIsIm5vdGludmM7Ijoi4ou2IiwiTm90TGVmdFRyaWFuZ2xlOyI6IuKLqiIsIk5vdExlZnRUcmlhbmdsZUJhcjsiOiLip4/MuCIsIk5vdExlZnRUcmlhbmdsZUVxdWFsOyI6IuKLrCIsIk5vdExlc3M7Ijoi4omuIiwiTm90TGVzc0VxdWFsOyI6IuKJsCIsIk5vdExlc3NHcmVhdGVyOyI6IuKJuCIsIk5vdExlc3NMZXNzOyI6IuKJqsy4IiwiTm90TGVzc1NsYW50RXF1YWw7Ijoi4qm9zLgiLCJOb3RMZXNzVGlsZGU7Ijoi4om0IiwiTm90TmVzdGVkR3JlYXRlckdyZWF0ZXI7Ijoi4qqizLgiLCJOb3ROZXN0ZWRMZXNzTGVzczsiOiLiqqHMuCIsIm5vdG5pOyI6IuKIjCIsIm5vdG5pdmE7Ijoi4oiMIiwibm90bml2YjsiOiLii74iLCJub3RuaXZjOyI6IuKLvSIsIk5vdFByZWNlZGVzOyI6IuKKgCIsIk5vdFByZWNlZGVzRXF1YWw7Ijoi4qqvzLgiLCJOb3RQcmVjZWRlc1NsYW50RXF1YWw7Ijoi4ougIiwiTm90UmV2ZXJzZUVsZW1lbnQ7Ijoi4oiMIiwiTm90UmlnaHRUcmlhbmdsZTsiOiLii6siLCJOb3RSaWdodFRyaWFuZ2xlQmFyOyI6IuKnkMy4IiwiTm90UmlnaHRUcmlhbmdsZUVxdWFsOyI6IuKLrSIsIk5vdFNxdWFyZVN1YnNldDsiOiLiio/MuCIsIk5vdFNxdWFyZVN1YnNldEVxdWFsOyI6IuKLoiIsIk5vdFNxdWFyZVN1cGVyc2V0OyI6IuKKkMy4IiwiTm90U3F1YXJlU3VwZXJzZXRFcXVhbDsiOiLii6MiLCJOb3RTdWJzZXQ7Ijoi4oqC4oOSIiwiTm90U3Vic2V0RXF1YWw7Ijoi4oqIIiwiTm90U3VjY2VlZHM7Ijoi4oqBIiwiTm90U3VjY2VlZHNFcXVhbDsiOiLiqrDMuCIsIk5vdFN1Y2NlZWRzU2xhbnRFcXVhbDsiOiLii6EiLCJOb3RTdWNjZWVkc1RpbGRlOyI6IuKJv8y4IiwiTm90U3VwZXJzZXQ7Ijoi4oqD4oOSIiwiTm90U3VwZXJzZXRFcXVhbDsiOiLiiokiLCJOb3RUaWxkZTsiOiLiiYEiLCJOb3RUaWxkZUVxdWFsOyI6IuKJhCIsIk5vdFRpbGRlRnVsbEVxdWFsOyI6IuKJhyIsIk5vdFRpbGRlVGlsZGU7Ijoi4omJIiwiTm90VmVydGljYWxCYXI7Ijoi4oikIiwibnBhcjsiOiLiiKYiLCJucGFyYWxsZWw7Ijoi4oimIiwibnBhcnNsOyI6IuKrveKDpSIsIm5wYXJ0OyI6IuKIgsy4IiwibnBvbGludDsiOiLiqJQiLCJucHI7Ijoi4oqAIiwibnByY3VlOyI6IuKLoCIsIm5wcmU7Ijoi4qqvzLgiLCJucHJlYzsiOiLiioAiLCJucHJlY2VxOyI6IuKqr8y4IiwibnJBcnI7Ijoi4oePIiwibnJhcnI7Ijoi4oabIiwibnJhcnJjOyI6IuKks8y4IiwibnJhcnJ3OyI6IuKGncy4IiwiblJpZ2h0YXJyb3c7Ijoi4oePIiwibnJpZ2h0YXJyb3c7Ijoi4oabIiwibnJ0cmk7Ijoi4ourIiwibnJ0cmllOyI6IuKLrSIsIm5zYzsiOiLiioEiLCJuc2NjdWU7Ijoi4ouhIiwibnNjZTsiOiLiqrDMuCIsIk5zY3I7Ijoi8J2SqSIsIm5zY3I7Ijoi8J2TgyIsIm5zaG9ydG1pZDsiOiLiiKQiLCJuc2hvcnRwYXJhbGxlbDsiOiLiiKYiLCJuc2ltOyI6IuKJgSIsIm5zaW1lOyI6IuKJhCIsIm5zaW1lcTsiOiLiiYQiLCJuc21pZDsiOiLiiKQiLCJuc3BhcjsiOiLiiKYiLCJuc3FzdWJlOyI6IuKLoiIsIm5zcXN1cGU7Ijoi4oujIiwibnN1YjsiOiLiioQiLCJuc3ViRTsiOiLiq4XMuCIsIm5zdWJlOyI6IuKKiCIsIm5zdWJzZXQ7Ijoi4oqC4oOSIiwibnN1YnNldGVxOyI6IuKKiCIsIm5zdWJzZXRlcXE7Ijoi4quFzLgiLCJuc3VjYzsiOiLiioEiLCJuc3VjY2VxOyI6IuKqsMy4IiwibnN1cDsiOiLiioUiLCJuc3VwRTsiOiLiq4bMuCIsIm5zdXBlOyI6IuKKiSIsIm5zdXBzZXQ7Ijoi4oqD4oOSIiwibnN1cHNldGVxOyI6IuKKiSIsIm5zdXBzZXRlcXE7Ijoi4quGzLgiLCJudGdsOyI6IuKJuSIsIk50aWxkZTsiOiLDkSIsTnRpbGRlOiLDkSIsIm50aWxkZTsiOiLDsSIsbnRpbGRlOiLDsSIsIm50bGc7Ijoi4om4IiwibnRyaWFuZ2xlbGVmdDsiOiLii6oiLCJudHJpYW5nbGVsZWZ0ZXE7Ijoi4ousIiwibnRyaWFuZ2xlcmlnaHQ7Ijoi4ourIiwibnRyaWFuZ2xlcmlnaHRlcTsiOiLii60iLCJOdTsiOiLOnSIsIm51OyI6Is69IiwibnVtOyI6IiMiLCJudW1lcm87Ijoi4oSWIiwibnVtc3A7Ijoi4oCHIiwibnZhcDsiOiLiiY3ig5IiLCJuVkRhc2g7Ijoi4oqvIiwiblZkYXNoOyI6IuKKriIsIm52RGFzaDsiOiLiiq0iLCJudmRhc2g7Ijoi4oqsIiwibnZnZTsiOiLiiaXig5IiLCJudmd0OyI6Ij7ig5IiLCJudkhhcnI7Ijoi4qSEIiwibnZpbmZpbjsiOiLip54iLCJudmxBcnI7Ijoi4qSCIiwibnZsZTsiOiLiiaTig5IiLCJudmx0OyI6Ijzig5IiLCJudmx0cmllOyI6IuKKtOKDkiIsIm52ckFycjsiOiLipIMiLCJudnJ0cmllOyI6IuKKteKDkiIsIm52c2ltOyI6IuKIvOKDkiIsIm53YXJoazsiOiLipKMiLCJud0FycjsiOiLih5YiLCJud2FycjsiOiLihpYiLCJud2Fycm93OyI6IuKGliIsIm53bmVhcjsiOiLipKciLCJPYWN1dGU7Ijoiw5MiLE9hY3V0ZToiw5MiLCJvYWN1dGU7Ijoiw7MiLG9hY3V0ZToiw7MiLCJvYXN0OyI6IuKKmyIsIm9jaXI7Ijoi4oqaIiwiT2NpcmM7Ijoiw5QiLE9jaXJjOiLDlCIsIm9jaXJjOyI6IsO0IixvY2lyYzoiw7QiLCJPY3k7Ijoi0J4iLCJvY3k7Ijoi0L4iLCJvZGFzaDsiOiLiip0iLCJPZGJsYWM7IjoixZAiLCJvZGJsYWM7IjoixZEiLCJvZGl2OyI6IuKouCIsIm9kb3Q7Ijoi4oqZIiwib2Rzb2xkOyI6IuKmvCIsIk9FbGlnOyI6IsWSIiwib2VsaWc7IjoixZMiLCJvZmNpcjsiOiLipr8iLCJPZnI7Ijoi8J2UkiIsIm9mcjsiOiLwnZSsIiwib2dvbjsiOiLLmyIsIk9ncmF2ZTsiOiLDkiIsT2dyYXZlOiLDkiIsIm9ncmF2ZTsiOiLDsiIsb2dyYXZlOiLDsiIsIm9ndDsiOiLip4EiLCJvaGJhcjsiOiLiprUiLCJvaG07IjoizqkiLCJvaW50OyI6IuKIriIsIm9sYXJyOyI6IuKGuiIsIm9sY2lyOyI6IuKmviIsIm9sY3Jvc3M7Ijoi4qa7Iiwib2xpbmU7Ijoi4oC+Iiwib2x0OyI6IuKngCIsIk9tYWNyOyI6IsWMIiwib21hY3I7IjoixY0iLCJPbWVnYTsiOiLOqSIsIm9tZWdhOyI6Is+JIiwiT21pY3JvbjsiOiLOnyIsIm9taWNyb247Ijoizr8iLCJvbWlkOyI6IuKmtiIsIm9taW51czsiOiLiipYiLCJPb3BmOyI6IvCdlYYiLCJvb3BmOyI6IvCdlaAiLCJvcGFyOyI6IuKmtyIsIk9wZW5DdXJseURvdWJsZVF1b3RlOyI6IuKAnCIsIk9wZW5DdXJseVF1b3RlOyI6IuKAmCIsIm9wZXJwOyI6IuKmuSIsIm9wbHVzOyI6IuKKlSIsIk9yOyI6IuKplCIsIm9yOyI6IuKIqCIsIm9yYXJyOyI6IuKGuyIsIm9yZDsiOiLiqZ0iLCJvcmRlcjsiOiLihLQiLCJvcmRlcm9mOyI6IuKEtCIsIm9yZGY7IjoiwqoiLG9yZGY6IsKqIiwib3JkbTsiOiLCuiIsb3JkbToiwroiLCJvcmlnb2Y7Ijoi4oq2Iiwib3JvcjsiOiLiqZYiLCJvcnNsb3BlOyI6IuKplyIsIm9ydjsiOiLiqZsiLCJvUzsiOiLik4giLCJPc2NyOyI6IvCdkqoiLCJvc2NyOyI6IuKEtCIsIk9zbGFzaDsiOiLDmCIsT3NsYXNoOiLDmCIsIm9zbGFzaDsiOiLDuCIsb3NsYXNoOiLDuCIsIm9zb2w7Ijoi4oqYIiwiT3RpbGRlOyI6IsOVIixPdGlsZGU6IsOVIiwib3RpbGRlOyI6IsO1IixvdGlsZGU6IsO1IiwiT3RpbWVzOyI6IuKotyIsIm90aW1lczsiOiLiipciLCJvdGltZXNhczsiOiLiqLYiLCJPdW1sOyI6IsOWIixPdW1sOiLDliIsIm91bWw7Ijoiw7YiLG91bWw6IsO2Iiwib3ZiYXI7Ijoi4oy9IiwiT3ZlckJhcjsiOiLigL4iLCJPdmVyQnJhY2U7Ijoi4o+eIiwiT3ZlckJyYWNrZXQ7Ijoi4o60IiwiT3ZlclBhcmVudGhlc2lzOyI6IuKPnCIsInBhcjsiOiLiiKUiLCJwYXJhOyI6IsK2IixwYXJhOiLCtiIsInBhcmFsbGVsOyI6IuKIpSIsInBhcnNpbTsiOiLiq7MiLCJwYXJzbDsiOiLiq70iLCJwYXJ0OyI6IuKIgiIsIlBhcnRpYWxEOyI6IuKIgiIsIlBjeTsiOiLQnyIsInBjeTsiOiLQvyIsInBlcmNudDsiOiIlIiwicGVyaW9kOyI6Ii4iLCJwZXJtaWw7Ijoi4oCwIiwicGVycDsiOiLiiqUiLCJwZXJ0ZW5rOyI6IuKAsSIsIlBmcjsiOiLwnZSTIiwicGZyOyI6IvCdlK0iLCJQaGk7IjoizqYiLCJwaGk7Ijoiz4YiLCJwaGl2OyI6Is+VIiwicGhtbWF0OyI6IuKEsyIsInBob25lOyI6IuKYjiIsIlBpOyI6Is6gIiwicGk7Ijoiz4AiLCJwaXRjaGZvcms7Ijoi4ouUIiwicGl2OyI6Is+WIiwicGxhbmNrOyI6IuKEjyIsInBsYW5ja2g7Ijoi4oSOIiwicGxhbmt2OyI6IuKEjyIsInBsdXM7IjoiKyIsInBsdXNhY2lyOyI6IuKooyIsInBsdXNiOyI6IuKKniIsInBsdXNjaXI7Ijoi4qiiIiwicGx1c2RvOyI6IuKIlCIsInBsdXNkdTsiOiLiqKUiLCJwbHVzZTsiOiLiqbIiLCJQbHVzTWludXM7IjoiwrEiLCJwbHVzbW47IjoiwrEiLHBsdXNtbjoiwrEiLCJwbHVzc2ltOyI6IuKopiIsInBsdXN0d287Ijoi4qinIiwicG07IjoiwrEiLCJQb2luY2FyZXBsYW5lOyI6IuKEjCIsInBvaW50aW50OyI6IuKolSIsIlBvcGY7Ijoi4oSZIiwicG9wZjsiOiLwnZWhIiwicG91bmQ7IjoiwqMiLHBvdW5kOiLCoyIsIlByOyI6IuKquyIsInByOyI6IuKJuiIsInByYXA7Ijoi4qq3IiwicHJjdWU7Ijoi4om8IiwicHJFOyI6IuKqsyIsInByZTsiOiLiqq8iLCJwcmVjOyI6IuKJuiIsInByZWNhcHByb3g7Ijoi4qq3IiwicHJlY2N1cmx5ZXE7Ijoi4om8IiwiUHJlY2VkZXM7Ijoi4om6IiwiUHJlY2VkZXNFcXVhbDsiOiLiqq8iLCJQcmVjZWRlc1NsYW50RXF1YWw7Ijoi4om8IiwiUHJlY2VkZXNUaWxkZTsiOiLiib4iLCJwcmVjZXE7Ijoi4qqvIiwicHJlY25hcHByb3g7Ijoi4qq5IiwicHJlY25lcXE7Ijoi4qq1IiwicHJlY25zaW07Ijoi4ouoIiwicHJlY3NpbTsiOiLiib4iLCJQcmltZTsiOiLigLMiLCJwcmltZTsiOiLigLIiLCJwcmltZXM7Ijoi4oSZIiwicHJuYXA7Ijoi4qq5IiwicHJuRTsiOiLiqrUiLCJwcm5zaW07Ijoi4ouoIiwicHJvZDsiOiLiiI8iLCJQcm9kdWN0OyI6IuKIjyIsInByb2ZhbGFyOyI6IuKMriIsInByb2ZsaW5lOyI6IuKMkiIsInByb2ZzdXJmOyI6IuKMkyIsInByb3A7Ijoi4oidIiwiUHJvcG9ydGlvbjsiOiLiiLciLCJQcm9wb3J0aW9uYWw7Ijoi4oidIiwicHJvcHRvOyI6IuKInSIsInByc2ltOyI6IuKJviIsInBydXJlbDsiOiLiirAiLCJQc2NyOyI6IvCdkqsiLCJwc2NyOyI6IvCdk4UiLCJQc2k7IjoizqgiLCJwc2k7Ijoiz4giLCJwdW5jc3A7Ijoi4oCIIiwiUWZyOyI6IvCdlJQiLCJxZnI7Ijoi8J2UriIsInFpbnQ7Ijoi4qiMIiwiUW9wZjsiOiLihJoiLCJxb3BmOyI6IvCdlaIiLCJxcHJpbWU7Ijoi4oGXIiwiUXNjcjsiOiLwnZKsIiwicXNjcjsiOiLwnZOGIiwicXVhdGVybmlvbnM7Ijoi4oSNIiwicXVhdGludDsiOiLiqJYiLCJxdWVzdDsiOiI/IiwicXVlc3RlcTsiOiLiiZ8iLCJRVU9UOyI6JyInLFFVT1Q6JyInLCJxdW90OyI6JyInLHF1b3Q6JyInLCJyQWFycjsiOiLih5siLCJyYWNlOyI6IuKIvcyxIiwiUmFjdXRlOyI6IsWUIiwicmFjdXRlOyI6IsWVIiwicmFkaWM7Ijoi4oiaIiwicmFlbXB0eXY7Ijoi4qazIiwiUmFuZzsiOiLin6siLCJyYW5nOyI6IuKfqSIsInJhbmdkOyI6IuKmkiIsInJhbmdlOyI6IuKmpSIsInJhbmdsZTsiOiLin6kiLCJyYXF1bzsiOiLCuyIscmFxdW86IsK7IiwiUmFycjsiOiLihqAiLCJyQXJyOyI6IuKHkiIsInJhcnI7Ijoi4oaSIiwicmFycmFwOyI6IuKltSIsInJhcnJiOyI6IuKHpSIsInJhcnJiZnM7Ijoi4qSgIiwicmFycmM7Ijoi4qSzIiwicmFycmZzOyI6IuKkniIsInJhcnJoazsiOiLihqoiLCJyYXJybHA7Ijoi4oasIiwicmFycnBsOyI6IuKlhSIsInJhcnJzaW07Ijoi4qW0IiwiUmFycnRsOyI6IuKkliIsInJhcnJ0bDsiOiLihqMiLCJyYXJydzsiOiLihp0iLCJyQXRhaWw7Ijoi4qScIiwicmF0YWlsOyI6IuKkmiIsInJhdGlvOyI6IuKItiIsInJhdGlvbmFsczsiOiLihJoiLCJSQmFycjsiOiLipJAiLCJyQmFycjsiOiLipI8iLCJyYmFycjsiOiLipI0iLCJyYmJyazsiOiLinbMiLCJyYnJhY2U7IjoifSIsInJicmFjazsiOiJdIiwicmJya2U7Ijoi4qaMIiwicmJya3NsZDsiOiLipo4iLCJyYnJrc2x1OyI6IuKmkCIsIlJjYXJvbjsiOiLFmCIsInJjYXJvbjsiOiLFmSIsIlJjZWRpbDsiOiLFliIsInJjZWRpbDsiOiLFlyIsInJjZWlsOyI6IuKMiSIsInJjdWI7IjoifSIsIlJjeTsiOiLQoCIsInJjeTsiOiLRgCIsInJkY2E7Ijoi4qS3IiwicmRsZGhhcjsiOiLipakiLCJyZHF1bzsiOiLigJ0iLCJyZHF1b3I7Ijoi4oCdIiwicmRzaDsiOiLihrMiLCJSZTsiOiLihJwiLCJyZWFsOyI6IuKEnCIsInJlYWxpbmU7Ijoi4oSbIiwicmVhbHBhcnQ7Ijoi4oScIiwicmVhbHM7Ijoi4oSdIiwicmVjdDsiOiLilq0iLCJSRUc7Ijoiwq4iLFJFRzoiwq4iLCJyZWc7Ijoiwq4iLHJlZzoiwq4iLCJSZXZlcnNlRWxlbWVudDsiOiLiiIsiLCJSZXZlcnNlRXF1aWxpYnJpdW07Ijoi4oeLIiwiUmV2ZXJzZVVwRXF1aWxpYnJpdW07Ijoi4qWvIiwicmZpc2h0OyI6IuKlvSIsInJmbG9vcjsiOiLijIsiLCJSZnI7Ijoi4oScIiwicmZyOyI6IvCdlK8iLCJySGFyOyI6IuKlpCIsInJoYXJkOyI6IuKHgSIsInJoYXJ1OyI6IuKHgCIsInJoYXJ1bDsiOiLipawiLCJSaG87IjoizqEiLCJyaG87Ijoiz4EiLCJyaG92OyI6Is+xIiwiUmlnaHRBbmdsZUJyYWNrZXQ7Ijoi4p+pIiwiUmlnaHRBcnJvdzsiOiLihpIiLCJSaWdodGFycm93OyI6IuKHkiIsInJpZ2h0YXJyb3c7Ijoi4oaSIiwiUmlnaHRBcnJvd0JhcjsiOiLih6UiLCJSaWdodEFycm93TGVmdEFycm93OyI6IuKHhCIsInJpZ2h0YXJyb3d0YWlsOyI6IuKGoyIsIlJpZ2h0Q2VpbGluZzsiOiLijIkiLCJSaWdodERvdWJsZUJyYWNrZXQ7Ijoi4p+nIiwiUmlnaHREb3duVGVlVmVjdG9yOyI6IuKlnSIsIlJpZ2h0RG93blZlY3RvcjsiOiLih4IiLCJSaWdodERvd25WZWN0b3JCYXI7Ijoi4qWVIiwiUmlnaHRGbG9vcjsiOiLijIsiLCJyaWdodGhhcnBvb25kb3duOyI6IuKHgSIsInJpZ2h0aGFycG9vbnVwOyI6IuKHgCIsInJpZ2h0bGVmdGFycm93czsiOiLih4QiLCJyaWdodGxlZnRoYXJwb29uczsiOiLih4wiLCJyaWdodHJpZ2h0YXJyb3dzOyI6IuKHiSIsInJpZ2h0c3F1aWdhcnJvdzsiOiLihp0iLCJSaWdodFRlZTsiOiLiiqIiLCJSaWdodFRlZUFycm93OyI6IuKGpiIsIlJpZ2h0VGVlVmVjdG9yOyI6IuKlmyIsInJpZ2h0dGhyZWV0aW1lczsiOiLii4wiLCJSaWdodFRyaWFuZ2xlOyI6IuKKsyIsIlJpZ2h0VHJpYW5nbGVCYXI7Ijoi4qeQIiwiUmlnaHRUcmlhbmdsZUVxdWFsOyI6IuKKtSIsIlJpZ2h0VXBEb3duVmVjdG9yOyI6IuKljyIsIlJpZ2h0VXBUZWVWZWN0b3I7Ijoi4qWcIiwiUmlnaHRVcFZlY3RvcjsiOiLihr4iLCJSaWdodFVwVmVjdG9yQmFyOyI6IuKllCIsIlJpZ2h0VmVjdG9yOyI6IuKHgCIsIlJpZ2h0VmVjdG9yQmFyOyI6IuKlkyIsInJpbmc7Ijoiy5oiLCJyaXNpbmdkb3RzZXE7Ijoi4omTIiwicmxhcnI7Ijoi4oeEIiwicmxoYXI7Ijoi4oeMIiwicmxtOyI6IuKAjyIsInJtb3VzdDsiOiLijrEiLCJybW91c3RhY2hlOyI6IuKOsSIsInJubWlkOyI6IuKrriIsInJvYW5nOyI6IuKfrSIsInJvYXJyOyI6IuKHviIsInJvYnJrOyI6IuKfpyIsInJvcGFyOyI6IuKmhiIsIlJvcGY7Ijoi4oSdIiwicm9wZjsiOiLwnZWjIiwicm9wbHVzOyI6IuKoriIsInJvdGltZXM7Ijoi4qi1IiwiUm91bmRJbXBsaWVzOyI6IuKlsCIsInJwYXI7IjoiKSIsInJwYXJndDsiOiLippQiLCJycHBvbGludDsiOiLiqJIiLCJycmFycjsiOiLih4kiLCJScmlnaHRhcnJvdzsiOiLih5siLCJyc2FxdW87Ijoi4oC6IiwiUnNjcjsiOiLihJsiLCJyc2NyOyI6IvCdk4ciLCJSc2g7Ijoi4oaxIiwicnNoOyI6IuKGsSIsInJzcWI7IjoiXSIsInJzcXVvOyI6IuKAmSIsInJzcXVvcjsiOiLigJkiLCJydGhyZWU7Ijoi4ouMIiwicnRpbWVzOyI6IuKLiiIsInJ0cmk7Ijoi4pa5IiwicnRyaWU7Ijoi4oq1IiwicnRyaWY7Ijoi4pa4IiwicnRyaWx0cmk7Ijoi4qeOIiwiUnVsZURlbGF5ZWQ7Ijoi4qe0IiwicnVsdWhhcjsiOiLipagiLCJyeDsiOiLihJ4iLCJTYWN1dGU7IjoixZoiLCJzYWN1dGU7IjoixZsiLCJzYnF1bzsiOiLigJoiLCJTYzsiOiLiqrwiLCJzYzsiOiLiibsiLCJzY2FwOyI6IuKquCIsIlNjYXJvbjsiOiLFoCIsInNjYXJvbjsiOiLFoSIsInNjY3VlOyI6IuKJvSIsInNjRTsiOiLiqrQiLCJzY2U7Ijoi4qqwIiwiU2NlZGlsOyI6IsWeIiwic2NlZGlsOyI6IsWfIiwiU2NpcmM7IjoixZwiLCJzY2lyYzsiOiLFnSIsInNjbmFwOyI6IuKquiIsInNjbkU7Ijoi4qq2Iiwic2Nuc2ltOyI6IuKLqSIsInNjcG9saW50OyI6IuKokyIsInNjc2ltOyI6IuKJvyIsIlNjeTsiOiLQoSIsInNjeTsiOiLRgSIsInNkb3Q7Ijoi4ouFIiwic2RvdGI7Ijoi4oqhIiwic2RvdGU7Ijoi4qmmIiwic2VhcmhrOyI6IuKkpSIsInNlQXJyOyI6IuKHmCIsInNlYXJyOyI6IuKGmCIsInNlYXJyb3c7Ijoi4oaYIiwic2VjdDsiOiLCpyIsc2VjdDoiwqciLCJzZW1pOyI6IjsiLCJzZXN3YXI7Ijoi4qSpIiwic2V0bWludXM7Ijoi4oiWIiwic2V0bW47Ijoi4oiWIiwic2V4dDsiOiLinLYiLCJTZnI7Ijoi8J2UliIsInNmcjsiOiLwnZSwIiwic2Zyb3duOyI6IuKMoiIsInNoYXJwOyI6IuKZryIsIlNIQ0hjeTsiOiLQqSIsInNoY2hjeTsiOiLRiSIsIlNIY3k7Ijoi0KgiLCJzaGN5OyI6ItGIIiwiU2hvcnREb3duQXJyb3c7Ijoi4oaTIiwiU2hvcnRMZWZ0QXJyb3c7Ijoi4oaQIiwic2hvcnRtaWQ7Ijoi4oijIiwic2hvcnRwYXJhbGxlbDsiOiLiiKUiLCJTaG9ydFJpZ2h0QXJyb3c7Ijoi4oaSIiwiU2hvcnRVcEFycm93OyI6IuKGkSIsInNoeTsiOiLCrSIsc2h5OiLCrSIsIlNpZ21hOyI6Is6jIiwic2lnbWE7Ijoiz4MiLCJzaWdtYWY7Ijoiz4IiLCJzaWdtYXY7Ijoiz4IiLCJzaW07Ijoi4oi8Iiwic2ltZG90OyI6IuKpqiIsInNpbWU7Ijoi4omDIiwic2ltZXE7Ijoi4omDIiwic2ltZzsiOiLiqp4iLCJzaW1nRTsiOiLiqqAiLCJzaW1sOyI6IuKqnSIsInNpbWxFOyI6IuKqnyIsInNpbW5lOyI6IuKJhiIsInNpbXBsdXM7Ijoi4qikIiwic2ltcmFycjsiOiLipbIiLCJzbGFycjsiOiLihpAiLCJTbWFsbENpcmNsZTsiOiLiiJgiLCJzbWFsbHNldG1pbnVzOyI6IuKIliIsInNtYXNocDsiOiLiqLMiLCJzbWVwYXJzbDsiOiLip6QiLCJzbWlkOyI6IuKIoyIsInNtaWxlOyI6IuKMoyIsInNtdDsiOiLiqqoiLCJzbXRlOyI6IuKqrCIsInNtdGVzOyI6IuKqrO+4gCIsIlNPRlRjeTsiOiLQrCIsInNvZnRjeTsiOiLRjCIsInNvbDsiOiIvIiwic29sYjsiOiLip4QiLCJzb2xiYXI7Ijoi4oy/IiwiU29wZjsiOiLwnZWKIiwic29wZjsiOiLwnZWkIiwic3BhZGVzOyI6IuKZoCIsInNwYWRlc3VpdDsiOiLimaAiLCJzcGFyOyI6IuKIpSIsInNxY2FwOyI6IuKKkyIsInNxY2FwczsiOiLiipPvuIAiLCJzcWN1cDsiOiLiipQiLCJzcWN1cHM7Ijoi4oqU77iAIiwiU3FydDsiOiLiiJoiLCJzcXN1YjsiOiLiio8iLCJzcXN1YmU7Ijoi4oqRIiwic3FzdWJzZXQ7Ijoi4oqPIiwic3FzdWJzZXRlcTsiOiLiipEiLCJzcXN1cDsiOiLiipAiLCJzcXN1cGU7Ijoi4oqSIiwic3FzdXBzZXQ7Ijoi4oqQIiwic3FzdXBzZXRlcTsiOiLiipIiLCJzcXU7Ijoi4pahIiwiU3F1YXJlOyI6IuKWoSIsInNxdWFyZTsiOiLilqEiLCJTcXVhcmVJbnRlcnNlY3Rpb247Ijoi4oqTIiwiU3F1YXJlU3Vic2V0OyI6IuKKjyIsIlNxdWFyZVN1YnNldEVxdWFsOyI6IuKKkSIsIlNxdWFyZVN1cGVyc2V0OyI6IuKKkCIsIlNxdWFyZVN1cGVyc2V0RXF1YWw7Ijoi4oqSIiwiU3F1YXJlVW5pb247Ijoi4oqUIiwic3F1YXJmOyI6IuKWqiIsInNxdWY7Ijoi4paqIiwic3JhcnI7Ijoi4oaSIiwiU3NjcjsiOiLwnZKuIiwic3NjcjsiOiLwnZOIIiwic3NldG1uOyI6IuKIliIsInNzbWlsZTsiOiLijKMiLCJzc3RhcmY7Ijoi4ouGIiwiU3RhcjsiOiLii4YiLCJzdGFyOyI6IuKYhiIsInN0YXJmOyI6IuKYhSIsInN0cmFpZ2h0ZXBzaWxvbjsiOiLPtSIsInN0cmFpZ2h0cGhpOyI6Is+VIiwic3RybnM7Ijoiwq8iLCJTdWI7Ijoi4ouQIiwic3ViOyI6IuKKgiIsInN1YmRvdDsiOiLiqr0iLCJzdWJFOyI6IuKrhSIsInN1YmU7Ijoi4oqGIiwic3ViZWRvdDsiOiLiq4MiLCJzdWJtdWx0OyI6IuKrgSIsInN1Ym5FOyI6IuKriyIsInN1Ym5lOyI6IuKKiiIsInN1YnBsdXM7Ijoi4qq/Iiwic3VicmFycjsiOiLipbkiLCJTdWJzZXQ7Ijoi4ouQIiwic3Vic2V0OyI6IuKKgiIsInN1YnNldGVxOyI6IuKKhiIsInN1YnNldGVxcTsiOiLiq4UiLCJTdWJzZXRFcXVhbDsiOiLiioYiLCJzdWJzZXRuZXE7Ijoi4oqKIiwic3Vic2V0bmVxcTsiOiLiq4siLCJzdWJzaW07Ijoi4quHIiwic3Vic3ViOyI6IuKrlSIsInN1YnN1cDsiOiLiq5MiLCJzdWNjOyI6IuKJuyIsInN1Y2NhcHByb3g7Ijoi4qq4Iiwic3VjY2N1cmx5ZXE7Ijoi4om9IiwiU3VjY2VlZHM7Ijoi4om7IiwiU3VjY2VlZHNFcXVhbDsiOiLiqrAiLCJTdWNjZWVkc1NsYW50RXF1YWw7Ijoi4om9IiwiU3VjY2VlZHNUaWxkZTsiOiLiib8iLCJzdWNjZXE7Ijoi4qqwIiwic3VjY25hcHByb3g7Ijoi4qq6Iiwic3VjY25lcXE7Ijoi4qq2Iiwic3VjY25zaW07Ijoi4oupIiwic3VjY3NpbTsiOiLiib8iLCJTdWNoVGhhdDsiOiLiiIsiLCJTdW07Ijoi4oiRIiwic3VtOyI6IuKIkSIsInN1bmc7Ijoi4pmqIiwiU3VwOyI6IuKLkSIsInN1cDsiOiLiioMiLCJzdXAxOyI6IsK5IixzdXAxOiLCuSIsInN1cDI7IjoiwrIiLHN1cDI6IsKyIiwic3VwMzsiOiLCsyIsc3VwMzoiwrMiLCJzdXBkb3Q7Ijoi4qq+Iiwic3VwZHN1YjsiOiLiq5giLCJzdXBFOyI6IuKrhiIsInN1cGU7Ijoi4oqHIiwic3VwZWRvdDsiOiLiq4QiLCJTdXBlcnNldDsiOiLiioMiLCJTdXBlcnNldEVxdWFsOyI6IuKKhyIsInN1cGhzb2w7Ijoi4p+JIiwic3VwaHN1YjsiOiLiq5ciLCJzdXBsYXJyOyI6IuKluyIsInN1cG11bHQ7Ijoi4quCIiwic3VwbkU7Ijoi4quMIiwic3VwbmU7Ijoi4oqLIiwic3VwcGx1czsiOiLiq4AiLCJTdXBzZXQ7Ijoi4ouRIiwic3Vwc2V0OyI6IuKKgyIsInN1cHNldGVxOyI6IuKKhyIsInN1cHNldGVxcTsiOiLiq4YiLCJzdXBzZXRuZXE7Ijoi4oqLIiwic3Vwc2V0bmVxcTsiOiLiq4wiLCJzdXBzaW07Ijoi4quIIiwic3Vwc3ViOyI6IuKrlCIsInN1cHN1cDsiOiLiq5YiLCJzd2FyaGs7Ijoi4qSmIiwic3dBcnI7Ijoi4oeZIiwic3dhcnI7Ijoi4oaZIiwic3dhcnJvdzsiOiLihpkiLCJzd253YXI7Ijoi4qSqIiwic3psaWc7Ijoiw58iLHN6bGlnOiLDnyIsIlRhYjsiOiJcdCIsInRhcmdldDsiOiLijJYiLCJUYXU7IjoizqQiLCJ0YXU7Ijoiz4QiLCJ0YnJrOyI6IuKOtCIsIlRjYXJvbjsiOiLFpCIsInRjYXJvbjsiOiLFpSIsIlRjZWRpbDsiOiLFoiIsInRjZWRpbDsiOiLFoyIsIlRjeTsiOiLQoiIsInRjeTsiOiLRgiIsInRkb3Q7Ijoi4oObIiwidGVscmVjOyI6IuKMlSIsIlRmcjsiOiLwnZSXIiwidGZyOyI6IvCdlLEiLCJ0aGVyZTQ7Ijoi4oi0IiwiVGhlcmVmb3JlOyI6IuKItCIsInRoZXJlZm9yZTsiOiLiiLQiLCJUaGV0YTsiOiLOmCIsInRoZXRhOyI6Is64IiwidGhldGFzeW07Ijoiz5EiLCJ0aGV0YXY7Ijoiz5EiLCJ0aGlja2FwcHJveDsiOiLiiYgiLCJ0aGlja3NpbTsiOiLiiLwiLCJUaGlja1NwYWNlOyI6IuKBn+KAiiIsInRoaW5zcDsiOiLigIkiLCJUaGluU3BhY2U7Ijoi4oCJIiwidGhrYXA7Ijoi4omIIiwidGhrc2ltOyI6IuKIvCIsIlRIT1JOOyI6IsOeIixUSE9STjoiw54iLCJ0aG9ybjsiOiLDviIsdGhvcm46IsO+IiwiVGlsZGU7Ijoi4oi8IiwidGlsZGU7Ijoiy5wiLCJUaWxkZUVxdWFsOyI6IuKJgyIsIlRpbGRlRnVsbEVxdWFsOyI6IuKJhSIsIlRpbGRlVGlsZGU7Ijoi4omIIiwidGltZXM7Ijoiw5ciLHRpbWVzOiLDlyIsInRpbWVzYjsiOiLiiqAiLCJ0aW1lc2JhcjsiOiLiqLEiLCJ0aW1lc2Q7Ijoi4qiwIiwidGludDsiOiLiiK0iLCJ0b2VhOyI6IuKkqCIsInRvcDsiOiLiiqQiLCJ0b3Bib3Q7Ijoi4oy2IiwidG9wY2lyOyI6IuKrsSIsIlRvcGY7Ijoi8J2ViyIsInRvcGY7Ijoi8J2VpSIsInRvcGZvcms7Ijoi4quaIiwidG9zYTsiOiLipKkiLCJ0cHJpbWU7Ijoi4oC0IiwiVFJBREU7Ijoi4oSiIiwidHJhZGU7Ijoi4oSiIiwidHJpYW5nbGU7Ijoi4pa1IiwidHJpYW5nbGVkb3duOyI6IuKWvyIsInRyaWFuZ2xlbGVmdDsiOiLil4MiLCJ0cmlhbmdsZWxlZnRlcTsiOiLiirQiLCJ0cmlhbmdsZXE7Ijoi4omcIiwidHJpYW5nbGVyaWdodDsiOiLilrkiLCJ0cmlhbmdsZXJpZ2h0ZXE7Ijoi4oq1IiwidHJpZG90OyI6IuKXrCIsInRyaWU7Ijoi4omcIiwidHJpbWludXM7Ijoi4qi6IiwiVHJpcGxlRG90OyI6IuKDmyIsInRyaXBsdXM7Ijoi4qi5IiwidHJpc2I7Ijoi4qeNIiwidHJpdGltZTsiOiLiqLsiLCJ0cnBleml1bTsiOiLij6IiLCJUc2NyOyI6IvCdkq8iLCJ0c2NyOyI6IvCdk4kiLCJUU2N5OyI6ItCmIiwidHNjeTsiOiLRhiIsIlRTSGN5OyI6ItCLIiwidHNoY3k7Ijoi0ZsiLCJUc3Ryb2s7IjoixaYiLCJ0c3Ryb2s7IjoixaciLCJ0d2l4dDsiOiLiiawiLCJ0d29oZWFkbGVmdGFycm93OyI6IuKGniIsInR3b2hlYWRyaWdodGFycm93OyI6IuKGoCIsIlVhY3V0ZTsiOiLDmiIsVWFjdXRlOiLDmiIsInVhY3V0ZTsiOiLDuiIsdWFjdXRlOiLDuiIsIlVhcnI7Ijoi4oafIiwidUFycjsiOiLih5EiLCJ1YXJyOyI6IuKGkSIsIlVhcnJvY2lyOyI6IuKliSIsIlVicmN5OyI6ItCOIiwidWJyY3k7Ijoi0Z4iLCJVYnJldmU7IjoixawiLCJ1YnJldmU7Ijoixa0iLCJVY2lyYzsiOiLDmyIsVWNpcmM6IsObIiwidWNpcmM7Ijoiw7siLHVjaXJjOiLDuyIsIlVjeTsiOiLQoyIsInVjeTsiOiLRgyIsInVkYXJyOyI6IuKHhSIsIlVkYmxhYzsiOiLFsCIsInVkYmxhYzsiOiLFsSIsInVkaGFyOyI6IuKlriIsInVmaXNodDsiOiLipb4iLCJVZnI7Ijoi8J2UmCIsInVmcjsiOiLwnZSyIiwiVWdyYXZlOyI6IsOZIixVZ3JhdmU6IsOZIiwidWdyYXZlOyI6IsO5Iix1Z3JhdmU6IsO5IiwidUhhcjsiOiLipaMiLCJ1aGFybDsiOiLihr8iLCJ1aGFycjsiOiLihr4iLCJ1aGJsazsiOiLiloAiLCJ1bGNvcm47Ijoi4oycIiwidWxjb3JuZXI7Ijoi4oycIiwidWxjcm9wOyI6IuKMjyIsInVsdHJpOyI6IuKXuCIsIlVtYWNyOyI6IsWqIiwidW1hY3I7IjoixasiLCJ1bWw7IjoiwqgiLHVtbDoiwqgiLCJVbmRlckJhcjsiOiJfIiwiVW5kZXJCcmFjZTsiOiLij58iLCJVbmRlckJyYWNrZXQ7Ijoi4o61IiwiVW5kZXJQYXJlbnRoZXNpczsiOiLij50iLCJVbmlvbjsiOiLii4MiLCJVbmlvblBsdXM7Ijoi4oqOIiwiVW9nb247IjoixbIiLCJ1b2dvbjsiOiLFsyIsIlVvcGY7Ijoi8J2VjCIsInVvcGY7Ijoi8J2VpiIsIlVwQXJyb3c7Ijoi4oaRIiwiVXBhcnJvdzsiOiLih5EiLCJ1cGFycm93OyI6IuKGkSIsIlVwQXJyb3dCYXI7Ijoi4qSSIiwiVXBBcnJvd0Rvd25BcnJvdzsiOiLih4UiLCJVcERvd25BcnJvdzsiOiLihpUiLCJVcGRvd25hcnJvdzsiOiLih5UiLCJ1cGRvd25hcnJvdzsiOiLihpUiLCJVcEVxdWlsaWJyaXVtOyI6IuKlriIsInVwaGFycG9vbmxlZnQ7Ijoi4oa/IiwidXBoYXJwb29ucmlnaHQ7Ijoi4oa+IiwidXBsdXM7Ijoi4oqOIiwiVXBwZXJMZWZ0QXJyb3c7Ijoi4oaWIiwiVXBwZXJSaWdodEFycm93OyI6IuKGlyIsIlVwc2k7Ijoiz5IiLCJ1cHNpOyI6Is+FIiwidXBzaWg7Ijoiz5IiLCJVcHNpbG9uOyI6Is6lIiwidXBzaWxvbjsiOiLPhSIsIlVwVGVlOyI6IuKKpSIsIlVwVGVlQXJyb3c7Ijoi4oalIiwidXB1cGFycm93czsiOiLih4giLCJ1cmNvcm47Ijoi4oydIiwidXJjb3JuZXI7Ijoi4oydIiwidXJjcm9wOyI6IuKMjiIsIlVyaW5nOyI6IsWuIiwidXJpbmc7Ijoixa8iLCJ1cnRyaTsiOiLil7kiLCJVc2NyOyI6IvCdkrAiLCJ1c2NyOyI6IvCdk4oiLCJ1dGRvdDsiOiLii7AiLCJVdGlsZGU7IjoixagiLCJ1dGlsZGU7IjoixakiLCJ1dHJpOyI6IuKWtSIsInV0cmlmOyI6IuKWtCIsInV1YXJyOyI6IuKHiCIsIlV1bWw7Ijoiw5wiLFV1bWw6IsOcIiwidXVtbDsiOiLDvCIsdXVtbDoiw7wiLCJ1d2FuZ2xlOyI6IuKmpyIsInZhbmdydDsiOiLippwiLCJ2YXJlcHNpbG9uOyI6Is+1IiwidmFya2FwcGE7Ijoiz7AiLCJ2YXJub3RoaW5nOyI6IuKIhSIsInZhcnBoaTsiOiLPlSIsInZhcnBpOyI6Is+WIiwidmFycHJvcHRvOyI6IuKInSIsInZBcnI7Ijoi4oeVIiwidmFycjsiOiLihpUiLCJ2YXJyaG87Ijoiz7EiLCJ2YXJzaWdtYTsiOiLPgiIsInZhcnN1YnNldG5lcTsiOiLiiorvuIAiLCJ2YXJzdWJzZXRuZXFxOyI6IuKri++4gCIsInZhcnN1cHNldG5lcTsiOiLiiovvuIAiLCJ2YXJzdXBzZXRuZXFxOyI6IuKrjO+4gCIsInZhcnRoZXRhOyI6Is+RIiwidmFydHJpYW5nbGVsZWZ0OyI6IuKKsiIsInZhcnRyaWFuZ2xlcmlnaHQ7Ijoi4oqzIiwiVmJhcjsiOiLiq6siLCJ2QmFyOyI6IuKrqCIsInZCYXJ2OyI6IuKrqSIsIlZjeTsiOiLQkiIsInZjeTsiOiLQsiIsIlZEYXNoOyI6IuKKqyIsIlZkYXNoOyI6IuKKqSIsInZEYXNoOyI6IuKKqCIsInZkYXNoOyI6IuKKoiIsIlZkYXNobDsiOiLiq6YiLCJWZWU7Ijoi4ouBIiwidmVlOyI6IuKIqCIsInZlZWJhcjsiOiLiirsiLCJ2ZWVlcTsiOiLiiZoiLCJ2ZWxsaXA7Ijoi4ouuIiwiVmVyYmFyOyI6IuKAliIsInZlcmJhcjsiOiJ8IiwiVmVydDsiOiLigJYiLCJ2ZXJ0OyI6InwiLCJWZXJ0aWNhbEJhcjsiOiLiiKMiLCJWZXJ0aWNhbExpbmU7IjoifCIsIlZlcnRpY2FsU2VwYXJhdG9yOyI6IuKdmCIsIlZlcnRpY2FsVGlsZGU7Ijoi4omAIiwiVmVyeVRoaW5TcGFjZTsiOiLigIoiLCJWZnI7Ijoi8J2UmSIsInZmcjsiOiLwnZSzIiwidmx0cmk7Ijoi4oqyIiwidm5zdWI7Ijoi4oqC4oOSIiwidm5zdXA7Ijoi4oqD4oOSIiwiVm9wZjsiOiLwnZWNIiwidm9wZjsiOiLwnZWnIiwidnByb3A7Ijoi4oidIiwidnJ0cmk7Ijoi4oqzIiwiVnNjcjsiOiLwnZKxIiwidnNjcjsiOiLwnZOLIiwidnN1Ym5FOyI6IuKri++4gCIsInZzdWJuZTsiOiLiiorvuIAiLCJ2c3VwbkU7Ijoi4quM77iAIiwidnN1cG5lOyI6IuKKi++4gCIsIlZ2ZGFzaDsiOiLiiqoiLCJ2emlnemFnOyI6IuKmmiIsIldjaXJjOyI6IsW0Iiwid2NpcmM7IjoixbUiLCJ3ZWRiYXI7Ijoi4qmfIiwiV2VkZ2U7Ijoi4ouAIiwid2VkZ2U7Ijoi4oinIiwid2VkZ2VxOyI6IuKJmSIsIndlaWVycDsiOiLihJgiLCJXZnI7Ijoi8J2UmiIsIndmcjsiOiLwnZS0IiwiV29wZjsiOiLwnZWOIiwid29wZjsiOiLwnZWoIiwid3A7Ijoi4oSYIiwid3I7Ijoi4omAIiwid3JlYXRoOyI6IuKJgCIsIldzY3I7Ijoi8J2SsiIsIndzY3I7Ijoi8J2TjCIsInhjYXA7Ijoi4ouCIiwieGNpcmM7Ijoi4pevIiwieGN1cDsiOiLii4MiLCJ4ZHRyaTsiOiLilr0iLCJYZnI7Ijoi8J2UmyIsInhmcjsiOiLwnZS1IiwieGhBcnI7Ijoi4p+6IiwieGhhcnI7Ijoi4p+3IiwiWGk7Ijoizp4iLCJ4aTsiOiLOviIsInhsQXJyOyI6IuKfuCIsInhsYXJyOyI6IuKftSIsInhtYXA7Ijoi4p+8IiwieG5pczsiOiLii7siLCJ4b2RvdDsiOiLiqIAiLCJYb3BmOyI6IvCdlY8iLCJ4b3BmOyI6IvCdlakiLCJ4b3BsdXM7Ijoi4qiBIiwieG90aW1lOyI6IuKogiIsInhyQXJyOyI6IuKfuSIsInhyYXJyOyI6IuKftiIsIlhzY3I7Ijoi8J2SsyIsInhzY3I7Ijoi8J2TjSIsInhzcWN1cDsiOiLiqIYiLCJ4dXBsdXM7Ijoi4qiEIiwieHV0cmk7Ijoi4pazIiwieHZlZTsiOiLii4EiLCJ4d2VkZ2U7Ijoi4ouAIiwiWWFjdXRlOyI6IsOdIixZYWN1dGU6IsOdIiwieWFjdXRlOyI6IsO9Iix5YWN1dGU6IsO9IiwiWUFjeTsiOiLQryIsInlhY3k7Ijoi0Y8iLCJZY2lyYzsiOiLFtiIsInljaXJjOyI6IsW3IiwiWWN5OyI6ItCrIiwieWN5OyI6ItGLIiwieWVuOyI6IsKlIix5ZW46IsKlIiwiWWZyOyI6IvCdlJwiLCJ5ZnI7Ijoi8J2UtiIsIllJY3k7Ijoi0IciLCJ5aWN5OyI6ItGXIiwiWW9wZjsiOiLwnZWQIiwieW9wZjsiOiLwnZWqIiwiWXNjcjsiOiLwnZK0IiwieXNjcjsiOiLwnZOOIiwiWVVjeTsiOiLQriIsInl1Y3k7Ijoi0Y4iLCJZdW1sOyI6IsW4IiwieXVtbDsiOiLDvyIseXVtbDoiw78iLCJaYWN1dGU7IjoixbkiLCJ6YWN1dGU7IjoixboiLCJaY2Fyb247Ijoixb0iLCJ6Y2Fyb247Ijoixb4iLCJaY3k7Ijoi0JciLCJ6Y3k7Ijoi0LciLCJaZG90OyI6IsW7IiwiemRvdDsiOiLFvCIsInplZXRyZjsiOiLihKgiLCJaZXJvV2lkdGhTcGFjZTsiOiLigIsiLCJaZXRhOyI6Is6WIiwiemV0YTsiOiLOtiIsIlpmcjsiOiLihKgiLCJ6ZnI7Ijoi8J2UtyIsIlpIY3k7Ijoi0JYiLCJ6aGN5OyI6ItC2IiwiemlncmFycjsiOiLih50iLCJab3BmOyI6IuKEpCIsInpvcGY7Ijoi8J2VqyIsIlpzY3I7Ijoi8J2StSIsInpzY3I7Ijoi8J2TjyIsInp3ajsiOiLigI0iLCJ6d25qOyI6IuKAjCJ9O2Z1bmN0aW9uIEVvKGUsdCl7aWYoZS5sZW5ndGg8dC5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspaWYoZVtuXSE9PXRbbl0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gQW8oZSx0KXtmb3IodmFyIG49IiI7dD4wOykxPT0oMSZ0KSYmKG4rPWUpLGUrPWUsdD4+Pj0xO3JldHVybiBufXZhciBNbz0iYSIuY2hhckNvZGVBdCgwKSxSbz0ieiIuY2hhckNvZGVBdCgwKSxObz0iQSIuY2hhckNvZGVBdCgwKSxJbz0iWiIuY2hhckNvZGVBdCgwKSxVbz0iMCIuY2hhckNvZGVBdCgwKSxIbz0iOSIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiB6byhlLHQpe3ZhciBuPWUuY2hhckNvZGVBdCh0KTtyZXR1cm4gTW88PW4mJm48PVJvfHxObzw9biYmbjw9SW98fFVvPD1uJiZuPD1Ib31mdW5jdGlvbiBEbyhlKXtyZXR1cm4gdm9pZCAwIT09ZX12YXIgV289ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dmFyIG49dGhpczt0aGlzLmlkPWUsdGhpcy5fdGFncz1bXSx0aGlzLl90YWdNYXA9e30sdGhpcy5fdmFsdWVTZXRNYXA9e30sdGhpcy5fdGFncz10LnRhZ3N8fFtdLHRoaXMuX2dsb2JhbEF0dHJpYnV0ZXM9dC5nbG9iYWxBdHRyaWJ1dGVzfHxbXSx0aGlzLl90YWdzLmZvckVhY2goKGZ1bmN0aW9uKGUpe24uX3RhZ01hcFtlLm5hbWUudG9Mb3dlckNhc2UoKV09ZX0pKSx0LnZhbHVlU2V0cyYmdC52YWx1ZVNldHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bi5fdmFsdWVTZXRNYXBbZS5uYW1lXT1lLnZhbHVlc30pKX1yZXR1cm4gZS5wcm90b3R5cGUuaXNBcHBsaWNhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLmdldElkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWR9LGUucHJvdG90eXBlLnByb3ZpZGVUYWdzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RhZ3N9LGUucHJvdG90eXBlLnByb3ZpZGVBdHRyaWJ1dGVzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49ZnVuY3Rpb24oZSl7dC5wdXNoKGUpfSxpPXRoaXMuX3RhZ01hcFtlLnRvTG93ZXJDYXNlKCldO3JldHVybiBpJiZpLmF0dHJpYnV0ZXMuZm9yRWFjaChuKSx0aGlzLl9nbG9iYWxBdHRyaWJ1dGVzLmZvckVhY2gobiksdH0sZS5wcm90b3R5cGUucHJvdmlkZVZhbHVlcz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMsaT1bXTt0PXQudG9Mb3dlckNhc2UoKTt2YXIgcj1mdW5jdGlvbihlKXtlLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UubmFtZS50b0xvd2VyQ2FzZSgpPT09dCYmKGUudmFsdWVzJiZlLnZhbHVlcy5mb3JFYWNoKChmdW5jdGlvbihlKXtpLnB1c2goZSl9KSksZS52YWx1ZVNldCYmbi5fdmFsdWVTZXRNYXBbZS52YWx1ZVNldF0mJm4uX3ZhbHVlU2V0TWFwW2UudmFsdWVTZXRdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2kucHVzaChlKX0pKSl9KSl9LGE9dGhpcy5fdGFnTWFwW2UudG9Mb3dlckNhc2UoKV07cmV0dXJuIGEmJnIoYS5hdHRyaWJ1dGVzKSxyKHRoaXMuX2dsb2JhbEF0dHJpYnV0ZXMpLGl9LGV9KCk7ZnVuY3Rpb24gT28oZSx0LG4pe3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgaT17a2luZDpuPyJtYXJrZG93biI6InBsYWludGV4dCIsdmFsdWU6IiJ9O2lmKGUuZGVzY3JpcHRpb24mJiExIT09dC5kb2N1bWVudGF0aW9uKXt2YXIgcj1mdW5jdGlvbihlKXtpZihlKXJldHVybiJzdHJpbmciPT10eXBlb2YgZT97a2luZDoibWFya2Rvd24iLHZhbHVlOmV9OntraW5kOiJtYXJrZG93biIsdmFsdWU6ZS52YWx1ZX19KGUuZGVzY3JpcHRpb24pO3ImJihpLnZhbHVlKz1yLnZhbHVlKX1pZihlLnJlZmVyZW5jZXMmJmUucmVmZXJlbmNlcy5sZW5ndGg+MCYmITEhPT10LnJlZmVyZW5jZXMmJihpLnZhbHVlLmxlbmd0aCYmKGkudmFsdWUrPSJcblxuIiksaS52YWx1ZSs9bj9lLnJlZmVyZW5jZXMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4iWyIuY29uY2F0KGUubmFtZSwiXSgiKS5jb25jYXQoZS51cmwsIikiKX0pKS5qb2luKCIgfCAiKTplLnJlZmVyZW5jZXMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4iIi5jb25jYXQoZS5uYW1lLCI6ICIpLmNvbmNhdChlLnVybCl9KSkuam9pbigiXG4iKSksIiIhPT1pLnZhbHVlKXJldHVybiBpfXZhciBQbz1mdW5jdGlvbihlLHQsbixpKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24ocixhKXtmdW5jdGlvbiBvKGUpe3RyeXtsKGkubmV4dChlKSl9Y2F0Y2goZSl7YShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7bChpLnRocm93KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiBsKGUpe3ZhciB0O2UuZG9uZT9yKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihvLHMpfWwoKGk9aS5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX0scW89ZnVuY3Rpb24oZSx0KXt2YXIgbixpLHIsYSxvPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJnJbMF0pdGhyb3cgclsxXTtyZXR1cm4gclsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBhPXtuZXh0OnMoMCksdGhyb3c6cygxKSxyZXR1cm46cygyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGFbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksYTtmdW5jdGlvbiBzKGEpe3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gZnVuY3Rpb24oYSl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtvOyl0cnl7aWYobj0xLGkmJihyPTImYVswXT9pLnJldHVybjphWzBdP2kudGhyb3d8fCgocj1pLnJldHVybikmJnIuY2FsbChpKSwwKTppLm5leHQpJiYhKHI9ci5jYWxsKGksYVsxXSkpLmRvbmUpcmV0dXJuIHI7c3dpdGNoKGk9MCxyJiYoYT1bMiZhWzBdLHIudmFsdWVdKSxhWzBdKXtjYXNlIDA6Y2FzZSAxOnI9YTticmVhaztjYXNlIDQ6cmV0dXJuIG8ubGFiZWwrKyx7dmFsdWU6YVsxXSxkb25lOiExfTtjYXNlIDU6by5sYWJlbCsrLGk9YVsxXSxhPVswXTtjb250aW51ZTtjYXNlIDc6YT1vLm9wcy5wb3AoKSxvLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKHI9by50cnlzLChyPXIubGVuZ3RoPjAmJnJbci5sZW5ndGgtMV0pfHw2IT09YVswXSYmMiE9PWFbMF0pKXtvPTA7Y29udGludWV9aWYoMz09PWFbMF0mJighcnx8YVsxXT5yWzBdJiZhWzFdPHJbM10pKXtvLmxhYmVsPWFbMV07YnJlYWt9aWYoNj09PWFbMF0mJm8ubGFiZWw8clsxXSl7by5sYWJlbD1yWzFdLHI9YTticmVha31pZihyJiZvLmxhYmVsPHJbMl0pe28ubGFiZWw9clsyXSxvLm9wcy5wdXNoKGEpO2JyZWFrfXJbMl0mJm8ub3BzLnBvcCgpLG8udHJ5cy5wb3AoKTtjb250aW51ZX1hPXQuY2FsbChlLG8pfWNhdGNoKGUpe2E9WzYsZV0saT0wfWZpbmFsbHl7bj1yPTB9aWYoNSZhWzBdKXRocm93IGFbMV07cmV0dXJue3ZhbHVlOmFbMF0/YVsxXTp2b2lkIDAsZG9uZTohMH19KFthLHNdKX19fSxGbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5yZWFkRGlyZWN0b3J5PWUsdGhpcy5hdHJpYnV0ZUNvbXBsZXRpb25zPVtdfXJldHVybiBlLnByb3RvdHlwZS5vbkh0bWxBdHRyaWJ1dGVWYWx1ZT1mdW5jdGlvbihlKXsoZnVuY3Rpb24oZSx0KXtpZigic3JjIj09PXR8fCJocmVmIj09PXQpcmV0dXJuITA7dmFyIG49am9bZV07aWYobilyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4/bj09PXQ6LTEhPT1uLmluZGV4T2YodCk7cmV0dXJuITF9KShlLnRhZyxlLmF0dHJpYnV0ZSkmJnRoaXMuYXRyaWJ1dGVDb21wbGV0aW9ucy5wdXNoKGUpfSxlLnByb3RvdHlwZS5jb21wdXRlQ29tcGxldGlvbnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUG8odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBuLGkscixhLG8scyxsLGMsaCxkO3JldHVybiBxbyh0aGlzLChmdW5jdGlvbih1KXtzd2l0Y2godS5sYWJlbCl7Y2FzZSAwOm49e2l0ZW1zOltdLGlzSW5jb21wbGV0ZTohMX0saT0wLHI9dGhpcy5hdHJpYnV0ZUNvbXBsZXRpb25zLHUubGFiZWw9MTtjYXNlIDE6cmV0dXJuIGk8ci5sZW5ndGg/KGE9cltpXSxmdW5jdGlvbihlKXtpZihFbyhlLCJodHRwIil8fEVvKGUsImh0dHBzIil8fEVvKGUsIi8vIikpcmV0dXJuITE7cmV0dXJuITB9KG89ZnVuY3Rpb24oZSl7cmV0dXJuIEVvKGUsIiciKXx8RW8oZSwnIicpP2Uuc2xpY2UoMSwtMSk6ZX0oZS5nZXRUZXh0KGEucmFuZ2UpKSk/Ii4iIT09byYmIi4uIiE9PW8/WzMsMl06KG4uaXNJbmNvbXBsZXRlPSEwLFszLDRdKTpbMyw0XSk6WzMsNV07Y2FzZSAyOnJldHVybiBzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxyPWUubGFzdEluZGV4T2YoIi8iKTtpZigtMT09PXIpaT1mdW5jdGlvbihlLHQsbil7dmFyIGk9S28oZS5zdGFydCx0KSxyPUtvKGUuZW5kLG4pO3JldHVybiBRaS5jcmVhdGUoaSxyKX0obiwxLC0xKTtlbHNle3ZhciBhPXQuc2xpY2UocisxKSxvPUtvKG4uZW5kLC0xLWEubGVuZ3RoKSxzPWEuaW5kZXhPZigiICIpLGw9dm9pZCAwO2w9LTEhPT1zP0tvKG8scyk6S28obi5lbmQsLTEpLGk9UWkuY3JlYXRlKG8sbCl9cmV0dXJuIGl9KGEudmFsdWUsbyxhLnJhbmdlKSxbNCx0aGlzLnByb3ZpZGVQYXRoU3VnZ2VzdGlvbnMoYS52YWx1ZSxzLGUsdCldO2Nhc2UgMzpmb3IobD11LnNlbnQoKSxjPTAsaD1sO2M8aC5sZW5ndGg7YysrKWQ9aFtjXSxuLml0ZW1zLnB1c2goZCk7dS5sYWJlbD00O2Nhc2UgNDpyZXR1cm4gaSsrLFszLDFdO2Nhc2UgNTpyZXR1cm5bMixuXX19KSl9KSl9LGUucHJvdG90eXBlLnByb3ZpZGVQYXRoU3VnZ2VzdGlvbnM9ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJuIFBvKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgcixhLG8scyxsLGMsaCxkLHU7cmV0dXJuIHFvKHRoaXMsKGZ1bmN0aW9uKG0pe3N3aXRjaChtLmxhYmVsKXtjYXNlIDA6aWYocj1lLnN1YnN0cmluZygwLGUubGFzdEluZGV4T2YoIi8iKSsxKSwhKGE9aS5yZXNvbHZlUmVmZXJlbmNlKHJ8fCIuIixuLnVyaSkpKXJldHVyblszLDRdO20ubGFiZWw9MTtjYXNlIDE6cmV0dXJuIG0udHJ5cy5wdXNoKFsxLDMsLDRdKSxvPVtdLFs0LHRoaXMucmVhZERpcmVjdG9yeShhKV07Y2FzZSAyOmZvcihzPW0uc2VudCgpLGw9MCxjPXM7bDxjLmxlbmd0aDtsKyspaD1jW2xdLGQ9aFswXSx1PWhbMV0sZC5jaGFyQ29kZUF0KDApIT09Qm8mJm8ucHVzaChWbyhkLHU9PT1ZYS5EaXJlY3RvcnksdCkpO3JldHVyblsyLG9dO2Nhc2UgMzpyZXR1cm4gbS5zZW50KCksWzMsNF07Y2FzZSA0OnJldHVyblsyLFtdXX19KSl9KSl9LGV9KCksQm89Ii4iLmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gVm8oZSx0LG4pe3JldHVybiB0P3tsYWJlbDplKz0iLyIsa2luZDpRci5Gb2xkZXIsdGV4dEVkaXQ6eHIucmVwbGFjZShuLGUpLGNvbW1hbmQ6e3RpdGxlOiJTdWdnZXN0Iixjb21tYW5kOiJlZGl0b3IuYWN0aW9uLnRyaWdnZXJTdWdnZXN0In19OntsYWJlbDplLGtpbmQ6UXIuRmlsZSx0ZXh0RWRpdDp4ci5yZXBsYWNlKG4sZSl9fWZ1bmN0aW9uIEtvKGUsdCl7cmV0dXJuIFhpLmNyZWF0ZShlLmxpbmUsZS5jaGFyYWN0ZXIrdCl9dmFyIGpvPXthOiJocmVmIixhcmVhOiJocmVmIixib2R5OiJiYWNrZ3JvdW5kIixkZWw6ImNpdGUiLGZvcm06ImFjdGlvbiIsZnJhbWU6WyJzcmMiLCJsb25nZGVzYyJdLGltZzpbInNyYyIsImxvbmdkZXNjIl0saW5zOiJjaXRlIixsaW5rOiJocmVmIixvYmplY3Q6ImRhdGEiLHE6ImNpdGUiLHNjcmlwdDoic3JjIixhdWRpbzoic3JjIixidXR0b246ImZvcm1hY3Rpb24iLGNvbW1hbmQ6Imljb24iLGVtYmVkOiJzcmMiLGh0bWw6Im1hbmlmZXN0IixpbnB1dDpbInNyYyIsImZvcm1hY3Rpb24iXSxzb3VyY2U6InNyYyIsdHJhY2s6InNyYyIsdmlkZW86WyJzcmMiLCJwb3N0ZXIiXX0sR289ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKHIsYSl7ZnVuY3Rpb24gbyhlKXt0cnl7bChpLm5leHQoZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIHMoZSl7dHJ5e2woaS50aHJvdyhlKSl9Y2F0Y2goZSl7YShlKX19ZnVuY3Rpb24gbChlKXt2YXIgdDtlLmRvbmU/cihlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4obyxzKX1sKChpPWkuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9LCRvPWZ1bmN0aW9uKGUsdCl7dmFyIG4saSxyLGEsbz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZyWzBdKXRocm93IHJbMV07cmV0dXJuIHJbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gYT17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihhW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGE7ZnVuY3Rpb24gcyhhKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIGZ1bmN0aW9uKGEpe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7bzspdHJ5e2lmKG49MSxpJiYocj0yJmFbMF0/aS5yZXR1cm46YVswXT9pLnRocm93fHwoKHI9aS5yZXR1cm4pJiZyLmNhbGwoaSksMCk6aS5uZXh0KSYmIShyPXIuY2FsbChpLGFbMV0pKS5kb25lKXJldHVybiByO3N3aXRjaChpPTAsciYmKGE9WzImYVswXSxyLnZhbHVlXSksYVswXSl7Y2FzZSAwOmNhc2UgMTpyPWE7YnJlYWs7Y2FzZSA0OnJldHVybiBvLmxhYmVsKysse3ZhbHVlOmFbMV0sZG9uZTohMX07Y2FzZSA1Om8ubGFiZWwrKyxpPWFbMV0sYT1bMF07Y29udGludWU7Y2FzZSA3OmE9by5vcHMucG9wKCksby50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShyPW8udHJ5cywocj1yLmxlbmd0aD4wJiZyW3IubGVuZ3RoLTFdKXx8NiE9PWFbMF0mJjIhPT1hWzBdKSl7bz0wO2NvbnRpbnVlfWlmKDM9PT1hWzBdJiYoIXJ8fGFbMV0+clswXSYmYVsxXTxyWzNdKSl7by5sYWJlbD1hWzFdO2JyZWFrfWlmKDY9PT1hWzBdJiZvLmxhYmVsPHJbMV0pe28ubGFiZWw9clsxXSxyPWE7YnJlYWt9aWYociYmby5sYWJlbDxyWzJdKXtvLmxhYmVsPXJbMl0sby5vcHMucHVzaChhKTticmVha31yWzJdJiZvLm9wcy5wb3AoKSxvLnRyeXMucG9wKCk7Y29udGludWV9YT10LmNhbGwoZSxvKX1jYXRjaChlKXthPVs2LGVdLGk9MH1maW5hbGx5e249cj0wfWlmKDUmYVswXSl0aHJvdyBhWzFdO3JldHVybnt2YWx1ZTphWzBdP2FbMV06dm9pZCAwLGRvbmU6ITB9fShbYSxzXSl9fX0sSm89S2koKSxYbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLmxzT3B0aW9ucz1lLHRoaXMuZGF0YU1hbmFnZXI9dCx0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9W119cmV0dXJuIGUucHJvdG90eXBlLnNldENvbXBsZXRpb25QYXJ0aWNpcGFudHM9ZnVuY3Rpb24oZSl7dGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzPWV8fFtdfSxlLnByb3RvdHlwZS5kb0NvbXBsZXRlMj1mdW5jdGlvbihlLHQsbixpLHIpe3JldHVybiBHbyh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIGEsbyxzLGw7cmV0dXJuICRvKHRoaXMsKGZ1bmN0aW9uKGMpe3N3aXRjaChjLmxhYmVsKXtjYXNlIDA6aWYoIXRoaXMubHNPcHRpb25zLmZpbGVTeXN0ZW1Qcm92aWRlcnx8IXRoaXMubHNPcHRpb25zLmZpbGVTeXN0ZW1Qcm92aWRlci5yZWFkRGlyZWN0b3J5KXJldHVyblsyLHRoaXMuZG9Db21wbGV0ZShlLHQsbixyKV07YT1uZXcgRm8odGhpcy5sc09wdGlvbnMuZmlsZVN5c3RlbVByb3ZpZGVyLnJlYWREaXJlY3RvcnkpLG89dGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzLHRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cz1bYV0uY29uY2F0KG8pLHM9dGhpcy5kb0NvbXBsZXRlKGUsdCxuLHIpLGMubGFiZWw9MTtjYXNlIDE6cmV0dXJuIGMudHJ5cy5wdXNoKFsxLCwzLDRdKSxbNCxhLmNvbXB1dGVDb21wbGV0aW9ucyhlLGkpXTtjYXNlIDI6cmV0dXJuIGw9Yy5zZW50KCksWzIse2lzSW5jb21wbGV0ZTpzLmlzSW5jb21wbGV0ZXx8bC5pc0luY29tcGxldGUsaXRlbXM6bC5pdGVtcy5jb25jYXQocy5pdGVtcyl9XTtjYXNlIDM6cmV0dXJuIHRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cz1vLFs3XTtjYXNlIDQ6cmV0dXJuWzJdfX0pKX0pKX0sZS5wcm90b3R5cGUuZG9Db21wbGV0ZT1mdW5jdGlvbihlLHQsbixpKXt2YXIgcj10aGlzLl9kb0NvbXBsZXRlKGUsdCxuLGkpO3JldHVybiB0aGlzLmNvbnZlcnRDb21wbGV0aW9uTGlzdChyKX0sZS5wcm90b3R5cGUuX2RvQ29tcGxldGU9ZnVuY3Rpb24oZSx0LG4saSl7dmFyIHI9e2lzSW5jb21wbGV0ZTohMSxpdGVtczpbXX0sYT10aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHMsbz10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGFQcm92aWRlcnMoKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlzQXBwbGljYWJsZShlLmxhbmd1YWdlSWQpJiYoIWl8fCExIT09aVt0LmdldElkKCldKX0pKSxzPXRoaXMuZG9lc1N1cHBvcnRNYXJrZG93bigpLGw9ZS5nZXRUZXh0KCksYz1lLm9mZnNldEF0KHQpLGg9bi5maW5kTm9kZUJlZm9yZShjKTtpZighaClyZXR1cm4gcjt2YXIgZCx1PXlvKGwsaC5zdGFydCksbT0iIjtmdW5jdGlvbiBwKHQsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPWMpLHQ+YyYmKHQ9Yykse3N0YXJ0OmUucG9zaXRpb25BdCh0KSxlbmQ6ZS5wb3NpdGlvbkF0KG4pfX1mdW5jdGlvbiBmKGUsdCl7dmFyIG49cChlLHQpO3JldHVybiBvLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UucHJvdmlkZVRhZ3MoKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyLml0ZW1zLnB1c2goe2xhYmVsOmUubmFtZSxraW5kOlFyLlByb3BlcnR5LGRvY3VtZW50YXRpb246T28oZSx2b2lkIDAscyksdGV4dEVkaXQ6eHIucmVwbGFjZShuLGUubmFtZSksaW5zZXJ0VGV4dEZvcm1hdDplYS5QbGFpblRleHR9KX0pKX0pKSxyfWZ1bmN0aW9uIGcoZSl7Zm9yKHZhciB0PWU7dD4wOyl7dmFyIG49bC5jaGFyQXQodC0xKTtpZigiXG5cciIuaW5kZXhPZihuKT49MClyZXR1cm4gbC5zdWJzdHJpbmcodCxlKTtpZighWW8obikpcmV0dXJuIG51bGw7dC0tfXJldHVybiBsLnN1YnN0cmluZygwLGUpfWZ1bmN0aW9uIGIoZSx0LG4pe3ZvaWQgMD09PW4mJihuPWMpO3ZhciBpPXAoZSxuKSxhPVFvKGwsbiwkYS5XaXRoaW5FbmRUYWcsamEuRW5kVGFnQ2xvc2UpPyIiOiI+IixkPWg7Zm9yKHQmJihkPWQucGFyZW50KTtkOyl7dmFyIHU9ZC50YWc7aWYodSYmKCFkLmNsb3NlZHx8ZC5lbmRUYWdTdGFydCYmZC5lbmRUYWdTdGFydD5jKSl7dmFyIG09e2xhYmVsOiIvIit1LGtpbmQ6UXIuUHJvcGVydHksZmlsdGVyVGV4dDoiLyIrdSx0ZXh0RWRpdDp4ci5yZXBsYWNlKGksIi8iK3UrYSksaW5zZXJ0VGV4dEZvcm1hdDplYS5QbGFpblRleHR9LGY9ZyhkLnN0YXJ0KSxiPWcoZS0xKTtpZihudWxsIT09ZiYmbnVsbCE9PWImJmYhPT1iKXt2YXIgXz1mKyI8LyIrdSthO20udGV4dEVkaXQ9eHIucmVwbGFjZShwKGUtMS1iLmxlbmd0aCksXyksbS5maWx0ZXJUZXh0PWIrIjwvIit1fXJldHVybiByLml0ZW1zLnB1c2gobSkscn1kPWQucGFyZW50fXJldHVybiB0fHxvLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UucHJvdmlkZVRhZ3MoKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyLml0ZW1zLnB1c2goe2xhYmVsOiIvIitlLm5hbWUsa2luZDpRci5Qcm9wZXJ0eSxkb2N1bWVudGF0aW9uOk9vKGUsdm9pZCAwLHMpLGZpbHRlclRleHQ6Ii8iK2UubmFtZSthLHRleHRFZGl0OnhyLnJlcGxhY2UoaSwiLyIrZS5uYW1lK2EpLGluc2VydFRleHRGb3JtYXQ6ZWEuUGxhaW5UZXh0fSl9KSl9KSkscn1mdW5jdGlvbiBfKHQsbil7aWYoaSYmaS5oaWRlQXV0b0NvbXBsZXRlUHJvcG9zYWxzKXJldHVybiByO2lmKCFTbyhuKSl7dmFyIGE9ZS5wb3NpdGlvbkF0KHQpO3IuaXRlbXMucHVzaCh7bGFiZWw6IjwvIituKyI+IixraW5kOlFyLlByb3BlcnR5LGZpbHRlclRleHQ6IjwvIituKyI+Iix0ZXh0RWRpdDp4ci5pbnNlcnQoYSwiJDA8LyIrbisiPiIpLGluc2VydFRleHRGb3JtYXQ6ZWEuU25pcHBldH0pfXJldHVybiByfWZ1bmN0aW9uIHYoZSx0KXtyZXR1cm4gZihlLHQpLGIoZSwhMCx0KSxyfWZ1bmN0aW9uIHcoZSx0KXt2YXIgYTt2b2lkIDA9PT10JiYodD1jKTtmb3IodmFyIGQ9YztkPHQmJiI8IiE9PWxbZF07KWQrKzt2YXIgdT1sLnN1YnN0cmluZyhlLHQpLGY9cChlLGQpLGc9IiI7aWYoIVFvKGwsdCwkYS5BZnRlckF0dHJpYnV0ZU5hbWUsamEuRGVsaW1pdGVyQXNzaWduKSl7dmFyIGI9bnVsbCE9PShhPW51bGw9PWk/dm9pZCAwOmkuYXR0cmlidXRlRGVmYXVsdFZhbHVlKSYmdm9pZCAwIT09YT9hOiJkb3VibGVxdW90ZXMiO2c9ImVtcHR5Ij09PWI/Ij0kMSI6InNpbmdsZXF1b3RlcyI9PT1iPyI9JyQxJyI6Jz0iJDEiJ312YXIgXyx2PShfPU9iamVjdC5jcmVhdGUobnVsbCksaC5hdHRyaWJ1dGVOYW1lcy5mb3JFYWNoKChmdW5jdGlvbihlKXtfW2VdPSEwfSkpLF8pO3JldHVybiB2W3VdPSExLG8uZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5wcm92aWRlQXR0cmlidXRlcyhtKS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZighdltlLm5hbWVdKXt2W2UubmFtZV09ITA7dmFyIHQsbj1lLm5hbWU7InYiIT09ZS52YWx1ZVNldCYmZy5sZW5ndGgmJihuKz1nLChlLnZhbHVlU2V0fHwic3R5bGUiPT09ZS5uYW1lKSYmKHQ9e3RpdGxlOiJTdWdnZXN0Iixjb21tYW5kOiJlZGl0b3IuYWN0aW9uLnRyaWdnZXJTdWdnZXN0In0pKSxyLml0ZW1zLnB1c2goe2xhYmVsOmUubmFtZSxraW5kOiJoYW5kbGVyIj09PWUudmFsdWVTZXQ/UXIuRnVuY3Rpb246UXIuVmFsdWUsZG9jdW1lbnRhdGlvbjpPbyhlLHZvaWQgMCxzKSx0ZXh0RWRpdDp4ci5yZXBsYWNlKGYsbiksaW5zZXJ0VGV4dEZvcm1hdDplYS5TbmlwcGV0LGNvbW1hbmQ6dH0pfX0pKX0pKSxmdW5jdGlvbihlLHQpe3ZhciBpPSJkYXRhLSIsYT17fTtmdW5jdGlvbiBvKGUpe2UuYXR0cmlidXRlTmFtZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7IUVvKGUsaSl8fGFbZV18fHRbZV18fChhW2VdPWUrJz0iJDEiJyl9KSksZS5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gbyhlKX0pKX1hW2ldPSIiLmNvbmNhdChpLCckMT0iJDIiJyksbiYmbi5yb290cy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gbyhlKX0pKTtPYmplY3Qua2V5cyhhKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gci5pdGVtcy5wdXNoKHtsYWJlbDp0LGtpbmQ6UXIuVmFsdWUsdGV4dEVkaXQ6eHIucmVwbGFjZShlLGFbdF0pLGluc2VydFRleHRGb3JtYXQ6ZWEuU25pcHBldH0pfSkpfShmLHYpLHJ9ZnVuY3Rpb24geShuLGkpe3ZhciBoLHUsZixnO2lmKHZvaWQgMD09PWkmJihpPWMpLGM+biYmYzw9aSYmKGc9bFtuXSwvXlsiJ10qJC8udGVzdChnKSkpe3ZhciBiPW4rMSxfPWk7aT5uJiZsW2ktMV09PT1sW25dJiZfLS07dmFyIHY9ZnVuY3Rpb24oZSx0LG4pe2Zvcig7dD5uJiYhWW8oZVt0LTFdKTspdC0tO3JldHVybiB0fShsLGMsYiksdz1mdW5jdGlvbihlLHQsbil7Zm9yKDt0PG4mJiFZbyhlW3RdKTspdCsrO3JldHVybiB0fShsLGMsXyk7aD1wKHYsdyksZj1jPj1iJiZjPD1fP2wuc3Vic3RyaW5nKGIsYyk6IiIsdT0hMX1lbHNlIGg9cChuLGkpLGY9bC5zdWJzdHJpbmcobixjKSx1PSEwO2lmKGEubGVuZ3RoPjApZm9yKHZhciB5PW0udG9Mb3dlckNhc2UoKSxUPWQudG9Mb3dlckNhc2UoKSxrPXAobixpKSx4PTAsTD1hO3g8TC5sZW5ndGg7eCsrKXt2YXIgQz1MW3hdO0Mub25IdG1sQXR0cmlidXRlVmFsdWUmJkMub25IdG1sQXR0cmlidXRlVmFsdWUoe2RvY3VtZW50OmUscG9zaXRpb246dCx0YWc6eSxhdHRyaWJ1dGU6VCx2YWx1ZTpmLHJhbmdlOmt9KX1yZXR1cm4gby5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnByb3ZpZGVWYWx1ZXMobSxkKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD11PyciJytlLm5hbWUrJyInOmUubmFtZTtyLml0ZW1zLnB1c2goe2xhYmVsOmUubmFtZSxmaWx0ZXJUZXh0OnQsa2luZDpRci5Vbml0LGRvY3VtZW50YXRpb246T28oZSx2b2lkIDAscyksdGV4dEVkaXQ6eHIucmVwbGFjZShoLHQpLGluc2VydFRleHRGb3JtYXQ6ZWEuUGxhaW5UZXh0fSl9KSl9KSksUygpLHJ9ZnVuY3Rpb24gVChlKXtyZXR1cm4gYz09PXUuZ2V0VG9rZW5FbmQoKSYmKEw9dS5zY2FuKCkpPT09ZSYmdS5nZXRUb2tlbk9mZnNldCgpPT09Yz91LmdldFRva2VuRW5kKCk6Y31mdW5jdGlvbiBrKCl7Zm9yKHZhciBuPTAsaT1hO248aS5sZW5ndGg7bisrKXt2YXIgcj1pW25dO3Iub25IdG1sQ29udGVudCYmci5vbkh0bWxDb250ZW50KHtkb2N1bWVudDplLHBvc2l0aW9uOnR9KX1yZXR1cm4gUygpfWZ1bmN0aW9uIFMoKXtmb3IodmFyIGUsbixpLGE9Yy0xLG89dC5jaGFyYWN0ZXI7YT49MCYmem8obCxhKTspYS0tLG8tLTtpZihhPj0wJiYiJiI9PT1sW2FdKXt2YXIgcz1RaS5jcmVhdGUoWGkuY3JlYXRlKHQubGluZSxvLTEpLHQpO2Zvcih2YXIgaCBpbiBDbylpZihuPSI7IixpPXZvaWQgMCwoaT0oZT1oKS5sZW5ndGgtbi5sZW5ndGgpPjA/ZS5sYXN0SW5kZXhPZihuKT09PWk6MD09PWkmJmU9PT1uKXt2YXIgZD0iJiIraDtyLml0ZW1zLnB1c2goe2xhYmVsOmQsa2luZDpRci5LZXl3b3JkLGRvY3VtZW50YXRpb246Sm8oImVudGl0eS5wcm9wb3NlIiwiQ2hhcmFjdGVyIGVudGl0eSByZXByZXNlbnRpbmcgJyIuY29uY2F0KENvW2hdLCInIikpLHRleHRFZGl0OnhyLnJlcGxhY2UocyxkKSxpbnNlcnRUZXh0Rm9ybWF0OmVhLlBsYWluVGV4dH0pfX1yZXR1cm4gcn1mb3IodmFyIHgsTD11LnNjYW4oKTtMIT09amEuRU9TJiZ1LmdldFRva2VuT2Zmc2V0KCk8PWM7KXtzd2l0Y2goTCl7Y2FzZSBqYS5TdGFydFRhZ09wZW46aWYodS5nZXRUb2tlbkVuZCgpPT09Yyl7dmFyIEM9VChqYS5TdGFydFRhZyk7cmV0dXJuIDA9PT10LmxpbmUmJih4PXZvaWQgMCx4PXAoYyxDKSxyLml0ZW1zLnB1c2goe2xhYmVsOiIhRE9DVFlQRSIsa2luZDpRci5Qcm9wZXJ0eSxkb2N1bWVudGF0aW9uOiJBIHByZWFtYmxlIGZvciBhbiBIVE1MIGRvY3VtZW50LiIsdGV4dEVkaXQ6eHIucmVwbGFjZSh4LCIhRE9DVFlQRSBodG1sPiIpLGluc2VydFRleHRGb3JtYXQ6ZWEuUGxhaW5UZXh0fSkpLHYoYyxDKX1icmVhaztjYXNlIGphLlN0YXJ0VGFnOmlmKHUuZ2V0VG9rZW5PZmZzZXQoKTw9YyYmYzw9dS5nZXRUb2tlbkVuZCgpKXJldHVybiBmKHUuZ2V0VG9rZW5PZmZzZXQoKSx1LmdldFRva2VuRW5kKCkpO209dS5nZXRUb2tlblRleHQoKTticmVhaztjYXNlIGphLkF0dHJpYnV0ZU5hbWU6aWYodS5nZXRUb2tlbk9mZnNldCgpPD1jJiZjPD11LmdldFRva2VuRW5kKCkpcmV0dXJuIHcodS5nZXRUb2tlbk9mZnNldCgpLHUuZ2V0VG9rZW5FbmQoKSk7ZD11LmdldFRva2VuVGV4dCgpO2JyZWFrO2Nhc2UgamEuRGVsaW1pdGVyQXNzaWduOmlmKHUuZ2V0VG9rZW5FbmQoKT09PWMpe0M9VChqYS5BdHRyaWJ1dGVWYWx1ZSk7cmV0dXJuIHkoYyxDKX1icmVhaztjYXNlIGphLkF0dHJpYnV0ZVZhbHVlOmlmKHUuZ2V0VG9rZW5PZmZzZXQoKTw9YyYmYzw9dS5nZXRUb2tlbkVuZCgpKXJldHVybiB5KHUuZ2V0VG9rZW5PZmZzZXQoKSx1LmdldFRva2VuRW5kKCkpO2JyZWFrO2Nhc2UgamEuV2hpdGVzcGFjZTppZihjPD11LmdldFRva2VuRW5kKCkpc3dpdGNoKHUuZ2V0U2Nhbm5lclN0YXRlKCkpe2Nhc2UgJGEuQWZ0ZXJPcGVuaW5nU3RhcnRUYWc6cmV0dXJuIHYodS5nZXRUb2tlbk9mZnNldCgpLFQoamEuU3RhcnRUYWcpKTtjYXNlICRhLldpdGhpblRhZzpjYXNlICRhLkFmdGVyQXR0cmlidXRlTmFtZTpyZXR1cm4gdyh1LmdldFRva2VuRW5kKCkpO2Nhc2UgJGEuQmVmb3JlQXR0cmlidXRlVmFsdWU6cmV0dXJuIHkodS5nZXRUb2tlbkVuZCgpKTtjYXNlICRhLkFmdGVyT3BlbmluZ0VuZFRhZzpyZXR1cm4gYih1LmdldFRva2VuT2Zmc2V0KCktMSwhMSk7Y2FzZSAkYS5XaXRoaW5Db250ZW50OnJldHVybiBrKCl9YnJlYWs7Y2FzZSBqYS5FbmRUYWdPcGVuOmlmKGM8PXUuZ2V0VG9rZW5FbmQoKSlyZXR1cm4gYih1LmdldFRva2VuT2Zmc2V0KCkrMSwhMSxUKGphLkVuZFRhZykpO2JyZWFrO2Nhc2UgamEuRW5kVGFnOmlmKGM8PXUuZ2V0VG9rZW5FbmQoKSlmb3IodmFyIEU9dS5nZXRUb2tlbk9mZnNldCgpLTE7RT49MDspe3ZhciBBPWwuY2hhckF0KEUpO2lmKCIvIj09PUEpcmV0dXJuIGIoRSwhMSx1LmdldFRva2VuRW5kKCkpO2lmKCFZbyhBKSlicmVhaztFLS19YnJlYWs7Y2FzZSBqYS5TdGFydFRhZ0Nsb3NlOmlmKGM8PXUuZ2V0VG9rZW5FbmQoKSYmbSlyZXR1cm4gXyh1LmdldFRva2VuRW5kKCksbSk7YnJlYWs7Y2FzZSBqYS5Db250ZW50OmlmKGM8PXUuZ2V0VG9rZW5FbmQoKSlyZXR1cm4gaygpO2JyZWFrO2RlZmF1bHQ6aWYoYzw9dS5nZXRUb2tlbkVuZCgpKXJldHVybiByfUw9dS5zY2FuKCl9cmV0dXJuIHJ9LGUucHJvdG90eXBlLmRvUXVvdGVDb21wbGV0ZT1mdW5jdGlvbihlLHQsbixpKXt2YXIgcixhPWUub2Zmc2V0QXQodCk7aWYoYTw9MClyZXR1cm4gbnVsbDt2YXIgbz1udWxsIT09KHI9bnVsbD09aT92b2lkIDA6aS5hdHRyaWJ1dGVEZWZhdWx0VmFsdWUpJiZ2b2lkIDAhPT1yP3I6ImRvdWJsZXF1b3RlcyI7aWYoImVtcHR5Ij09PW8pcmV0dXJuIG51bGw7aWYoIj0iIT09ZS5nZXRUZXh0KCkuY2hhckF0KGEtMSkpcmV0dXJuIG51bGw7dmFyIHM9ImRvdWJsZXF1b3RlcyI9PT1vPyciJDEiJzoiJyQxJyIsbD1uLmZpbmROb2RlQmVmb3JlKGEpO2lmKGwmJmwuYXR0cmlidXRlcyYmbC5zdGFydDxhJiYoIWwuZW5kVGFnU3RhcnR8fGwuZW5kVGFnU3RhcnQ+YSkpZm9yKHZhciBjPXlvKGUuZ2V0VGV4dCgpLGwuc3RhcnQpLGg9Yy5zY2FuKCk7aCE9PWphLkVPUyYmYy5nZXRUb2tlbkVuZCgpPD1hOyl7aWYoaD09PWphLkF0dHJpYnV0ZU5hbWUmJmMuZ2V0VG9rZW5FbmQoKT09PWEtMSlyZXR1cm4oaD1jLnNjYW4oKSkhPT1qYS5EZWxpbWl0ZXJBc3NpZ258fChoPWMuc2NhbigpKT09PWphLlVua25vd258fGg9PT1qYS5BdHRyaWJ1dGVWYWx1ZT9udWxsOnM7aD1jLnNjYW4oKX1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuZG9UYWdDb21wbGV0ZT1mdW5jdGlvbihlLHQsbil7dmFyIGk9ZS5vZmZzZXRBdCh0KTtpZihpPD0wKXJldHVybiBudWxsO3ZhciByPWUuZ2V0VGV4dCgpLmNoYXJBdChpLTEpO2lmKCI+Ij09PXIpe2lmKChvPW4uZmluZE5vZGVCZWZvcmUoaSkpJiZvLnRhZyYmIVNvKG8udGFnKSYmby5zdGFydDxpJiYoIW8uZW5kVGFnU3RhcnR8fG8uZW5kVGFnU3RhcnQ+aSkpZm9yKHZhciBhPShzPXlvKGUuZ2V0VGV4dCgpLG8uc3RhcnQpKS5zY2FuKCk7YSE9PWphLkVPUyYmcy5nZXRUb2tlbkVuZCgpPD1pOyl7aWYoYT09PWphLlN0YXJ0VGFnQ2xvc2UmJnMuZ2V0VG9rZW5FbmQoKT09PWkpcmV0dXJuIiQwPC8iLmNvbmNhdChvLnRhZywiPiIpO2E9cy5zY2FuKCl9fWVsc2UgaWYoIi8iPT09cil7Zm9yKHZhciBvPW4uZmluZE5vZGVCZWZvcmUoaSk7byYmby5jbG9zZWQmJiEoby5lbmRUYWdTdGFydCYmby5lbmRUYWdTdGFydD5pKTspbz1vLnBhcmVudDtpZihvJiZvLnRhZyl7dmFyIHM7Zm9yKGE9KHM9eW8oZS5nZXRUZXh0KCksby5zdGFydCkpLnNjYW4oKTthIT09amEuRU9TJiZzLmdldFRva2VuRW5kKCk8PWk7KXtpZihhPT09amEuRW5kVGFnT3BlbiYmcy5nZXRUb2tlbkVuZCgpPT09aSlyZXR1cm4iIi5jb25jYXQoby50YWcsIj4iKTthPXMuc2NhbigpfX19cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmNvbnZlcnRDb21wbGV0aW9uTGlzdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCl8fGUuaXRlbXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5kb2N1bWVudGF0aW9uJiYic3RyaW5nIiE9dHlwZW9mIGUuZG9jdW1lbnRhdGlvbiYmKGUuZG9jdW1lbnRhdGlvbj17a2luZDoicGxhaW50ZXh0Iix2YWx1ZTplLmRvY3VtZW50YXRpb24udmFsdWV9KX0pKSxlfSxlLnByb3RvdHlwZS5kb2VzU3VwcG9ydE1hcmtkb3duPWZ1bmN0aW9uKCl7dmFyIGUsdCxuO2lmKCFEbyh0aGlzLnN1cHBvcnRzTWFya2Rvd24pKXtpZighRG8odGhpcy5sc09wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzKSlyZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3duPSEwLHRoaXMuc3VwcG9ydHNNYXJrZG93bjt2YXIgaT1udWxsPT09KG49bnVsbD09PSh0PW51bGw9PT0oZT10aGlzLmxzT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMudGV4dERvY3VtZW50KXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jb21wbGV0aW9uKXx8dm9pZCAwPT09dD92b2lkIDA6dC5jb21wbGV0aW9uSXRlbSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZG9jdW1lbnRhdGlvbkZvcm1hdDt0aGlzLnN1cHBvcnRzTWFya2Rvd249QXJyYXkuaXNBcnJheShpKSYmLTEhPT1pLmluZGV4T2YoSnIuTWFya2Rvd24pfXJldHVybiB0aGlzLnN1cHBvcnRzTWFya2Rvd259LGV9KCk7ZnVuY3Rpb24gWW8oZSl7cmV0dXJuL15ccyokLy50ZXN0KGUpfWZ1bmN0aW9uIFFvKGUsdCxuLGkpe2Zvcih2YXIgcj15byhlLHQsbiksYT1yLnNjYW4oKTthPT09amEuV2hpdGVzcGFjZTspYT1yLnNjYW4oKTtyZXR1cm4gYT09PWl9dmFyIFpvLGVzLHRzLG5zPUtpKCksaXM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5sc09wdGlvbnM9ZSx0aGlzLmRhdGFNYW5hZ2VyPXR9cmV0dXJuIGUucHJvdG90eXBlLmRvSG92ZXI9ZnVuY3Rpb24oZSx0LG4saSl7dmFyIHI9dGhpcy5jb252ZXJ0Q29udGVudHMuYmluZCh0aGlzKSxhPXRoaXMuZG9lc1N1cHBvcnRNYXJrZG93bigpLG89ZS5vZmZzZXRBdCh0KSxzPW4uZmluZE5vZGVBdChvKSxsPWUuZ2V0VGV4dCgpO2lmKCFzfHwhcy50YWcpcmV0dXJuIG51bGw7dmFyIGM9dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhUHJvdmlkZXJzKCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pc0FwcGxpY2FibGUoZS5sYW5ndWFnZUlkKX0pKTtmdW5jdGlvbiBoKGUsdCxuKXtmb3IodmFyIG89ZnVuY3Rpb24obil7dmFyIG89bnVsbDtpZihuLnByb3ZpZGVUYWdzKCkuZm9yRWFjaCgoZnVuY3Rpb24obil7aWYobi5uYW1lLnRvTG93ZXJDYXNlKCk9PT1lLnRvTG93ZXJDYXNlKCkpe3ZhciByPU9vKG4saSxhKTtyfHwocj17a2luZDphPyJtYXJrZG93biI6InBsYWludGV4dCIsdmFsdWU6IiJ9KSxvPXtjb250ZW50czpyLHJhbmdlOnR9fX0pKSxvKXJldHVybiBvLmNvbnRlbnRzPXIoby5jb250ZW50cykse3ZhbHVlOm99fSxzPTAsbD1jO3M8bC5sZW5ndGg7cysrKXt2YXIgaD1vKGxbc10pO2lmKCJvYmplY3QiPT10eXBlb2YgaClyZXR1cm4gaC52YWx1ZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBkKHQsbil7Zm9yKHZhciBpPXlvKGUuZ2V0VGV4dCgpLG4pLHI9aS5zY2FuKCk7ciE9PWphLkVPUyYmKGkuZ2V0VG9rZW5FbmQoKTxvfHxpLmdldFRva2VuRW5kKCk9PT1vJiZyIT09dCk7KXI9aS5zY2FuKCk7cmV0dXJuIHI9PT10JiZvPD1pLmdldFRva2VuRW5kKCk/e3N0YXJ0OmUucG9zaXRpb25BdChpLmdldFRva2VuT2Zmc2V0KCkpLGVuZDplLnBvc2l0aW9uQXQoaS5nZXRUb2tlbkVuZCgpKX06bnVsbH1pZihzLmVuZFRhZ1N0YXJ0JiZvPj1zLmVuZFRhZ1N0YXJ0KXt2YXIgdT1kKGphLkVuZFRhZyxzLmVuZFRhZ1N0YXJ0KTtyZXR1cm4gdT9oKHMudGFnLHUpOm51bGx9dmFyIG09ZChqYS5TdGFydFRhZyxzLnN0YXJ0KTtpZihtKXJldHVybiBoKHMudGFnLG0pO3ZhciBwPWQoamEuQXR0cmlidXRlTmFtZSxzLnN0YXJ0KTtpZihwKXJldHVybiBmdW5jdGlvbihlLHQsbil7Zm9yKHZhciBvPWZ1bmN0aW9uKG8pe3ZhciBzPW51bGw7aWYoby5wcm92aWRlQXR0cmlidXRlcyhlKS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZih0PT09ZS5uYW1lJiZlLmRlc2NyaXB0aW9uKXt2YXIgcj1PbyhlLGksYSk7cz1yP3tjb250ZW50czpyLHJhbmdlOm59Om51bGx9fSkpLHMpcmV0dXJuIHMuY29udGVudHM9cihzLmNvbnRlbnRzKSx7dmFsdWU6c319LHM9MCxsPWM7czxsLmxlbmd0aDtzKyspe3ZhciBoPW8obFtzXSk7aWYoIm9iamVjdCI9PXR5cGVvZiBoKXJldHVybiBoLnZhbHVlfXJldHVybiBudWxsfShiPXMudGFnLGUuZ2V0VGV4dChwKSxwKTt2YXIgZj1mdW5jdGlvbigpe2Zvcih2YXIgZT1vLTEsbj10LmNoYXJhY3RlcjtlPj0wJiZ6byhsLGUpOyllLS0sbi0tO2Zvcih2YXIgaT1lKzEscj1uO3pvKGwsaSk7KWkrKyxyKys7aWYoZT49MCYmIiYiPT09bFtlXSl7cmV0dXJuIjsiPT09bFtpXT9RaS5jcmVhdGUoWGkuY3JlYXRlKHQubGluZSxuKSxYaS5jcmVhdGUodC5saW5lLHIrMSkpOlFpLmNyZWF0ZShYaS5jcmVhdGUodC5saW5lLG4pLFhpLmNyZWF0ZSh0LmxpbmUscikpfXJldHVybiBudWxsfSgpO2lmKGYpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW8tMSxuPSImIjt0Pj0wJiZ6byhlLHQpOyl0LS07Zm9yKHQrPTE7em8oZSx0KTspbis9ZVt0XSx0Kz0xO3JldHVybiBuKyI7In0oZSk7Zm9yKHZhciBpIGluIENvKXt2YXIgYT1udWxsO2lmKG49PT0iJiIraSl7dmFyIHM9Q29baV0uY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSxsPSJVKyI7aWYocy5sZW5ndGg8NClmb3IodmFyIGM9NC1zLmxlbmd0aCxoPTA7aDxjOylsKz0iMCIsaCs9MTtsKz1zO3ZhciBkPW5zKCJlbnRpdHkucHJvcG9zZSIsIkNoYXJhY3RlciBlbnRpdHkgcmVwcmVzZW50aW5nICciLmNvbmNhdChDb1tpXSwiJywgdW5pY29kZSBlcXVpdmFsZW50ICciKS5jb25jYXQobCwiJyIpKTthPWQ/e2NvbnRlbnRzOmQscmFuZ2U6dH06bnVsbH1pZihhKXJldHVybiBhLmNvbnRlbnRzPXIoYS5jb250ZW50cyksYX1yZXR1cm4gbnVsbH0obCxmKTt2YXIgZz1kKGphLkF0dHJpYnV0ZVZhbHVlLHMuc3RhcnQpO2lmKGcpe3ZhciBiPXMudGFnLF89ZnVuY3Rpb24oZSl7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGUucmVwbGFjZSgvWyciXS8sIiIpOyInIiE9PWVbMF0mJiciJyE9PWVbMF18fChlPWUuc2xpY2UoMSkpOyInIiE9PWVbZS5sZW5ndGgtMV0mJiciJyE9PWVbZS5sZW5ndGgtMV18fChlPWUuc2xpY2UoMCwtMSkpO3JldHVybiBlfShlLmdldFRleHQoZykpLHY9ZnVuY3Rpb24odCxuKXtmb3IodmFyIGk9eW8oZS5nZXRUZXh0KCksdCkscj1pLnNjYW4oKSxhPXZvaWQgMDtyIT09amEuRU9TJiZpLmdldFRva2VuRW5kKCk8PW47KShyPWkuc2NhbigpKT09PWphLkF0dHJpYnV0ZU5hbWUmJihhPWkuZ2V0VG9rZW5UZXh0KCkpO3JldHVybiBhfShzLnN0YXJ0LGUub2Zmc2V0QXQoZy5zdGFydCkpO2lmKHYpcmV0dXJuIGZ1bmN0aW9uKGUsdCxuLG8pe2Zvcih2YXIgcz1mdW5jdGlvbihzKXt2YXIgbD1udWxsO2lmKHMucHJvdmlkZVZhbHVlcyhlLHQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKG49PT1lLm5hbWUmJmUuZGVzY3JpcHRpb24pe3ZhciB0PU9vKGUsaSxhKTtsPXQ/e2NvbnRlbnRzOnQscmFuZ2U6b306bnVsbH19KSksbClyZXR1cm4gbC5jb250ZW50cz1yKGwuY29udGVudHMpLHt2YWx1ZTpsfX0sbD0wLGg9YztsPGgubGVuZ3RoO2wrKyl7dmFyIGQ9cyhoW2xdKTtpZigib2JqZWN0Ij09dHlwZW9mIGQpcmV0dXJuIGQudmFsdWV9cmV0dXJuIG51bGx9KGIsdixfLGcpfXJldHVybiBudWxsfSxlLnByb3RvdHlwZS5jb252ZXJ0Q29udGVudHM9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuZG9lc1N1cHBvcnRNYXJrZG93bigpKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoImtpbmQiaW4gZSlyZXR1cm57a2luZDoicGxhaW50ZXh0Iix2YWx1ZTplLnZhbHVlfTtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZS52YWx1ZTtlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2U6ZS52YWx1ZX0pKX1yZXR1cm4gZX0sZS5wcm90b3R5cGUuZG9lc1N1cHBvcnRNYXJrZG93bj1mdW5jdGlvbigpe3ZhciBlLHQsbjtpZighRG8odGhpcy5zdXBwb3J0c01hcmtkb3duKSl7aWYoIURvKHRoaXMubHNPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcykpcmV0dXJuIHRoaXMuc3VwcG9ydHNNYXJrZG93bj0hMCx0aGlzLnN1cHBvcnRzTWFya2Rvd247dmFyIGk9bnVsbD09PShuPW51bGw9PT0odD1udWxsPT09KGU9dGhpcy5sc09wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS50ZXh0RG9jdW1lbnQpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmhvdmVyKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jb250ZW50Rm9ybWF0O3RoaXMuc3VwcG9ydHNNYXJrZG93bj1BcnJheS5pc0FycmF5KGkpJiYtMSE9PWkuaW5kZXhPZihKci5NYXJrZG93bil9cmV0dXJuIHRoaXMuc3VwcG9ydHNNYXJrZG93bn0sZX0oKTtmdW5jdGlvbiBycyhlLHQpe3JldHVybiBlfVpvPVssLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dGhpcy5fX3BhcmVudD1lLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9MCx0aGlzLl9faW5kZW50X2NvdW50PS0xLHRoaXMuX19hbGlnbm1lbnRfY291bnQ9MCx0aGlzLl9fd3JhcF9wb2ludF9pbmRleD0wLHRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD0tMSx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQ9MCx0aGlzLl9faXRlbXM9W119ZnVuY3Rpb24gbihlLHQpe3RoaXMuX19jYWNoZT1bIiJdLHRoaXMuX19pbmRlbnRfc2l6ZT1lLmluZGVudF9zaXplLHRoaXMuX19pbmRlbnRfc3RyaW5nPWUuaW5kZW50X2NoYXIsZS5pbmRlbnRfd2l0aF90YWJzfHwodGhpcy5fX2luZGVudF9zdHJpbmc9bmV3IEFycmF5KGUuaW5kZW50X3NpemUrMSkuam9pbihlLmluZGVudF9jaGFyKSksdD10fHwiIixlLmluZGVudF9sZXZlbD4wJiYodD1uZXcgQXJyYXkoZS5pbmRlbnRfbGV2ZWwrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLHRoaXMuX19iYXNlX3N0cmluZz10LHRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg9dC5sZW5ndGh9ZnVuY3Rpb24gaShlLGkpe3RoaXMuX19pbmRlbnRfY2FjaGU9bmV3IG4oZSxpKSx0aGlzLnJhdz0hMSx0aGlzLl9lbmRfd2l0aF9uZXdsaW5lPWUuZW5kX3dpdGhfbmV3bGluZSx0aGlzLmluZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy53cmFwX2xpbmVfbGVuZ3RoPWUud3JhcF9saW5lX2xlbmd0aCx0aGlzLmluZGVudF9lbXB0eV9saW5lcz1lLmluZGVudF9lbXB0eV9saW5lcyx0aGlzLl9fbGluZXM9W10sdGhpcy5wcmV2aW91c19saW5lPW51bGwsdGhpcy5jdXJyZW50X2xpbmU9bnVsbCx0aGlzLm5leHRfbGluZT1uZXcgdCh0aGlzKSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ITEsdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCl9dC5wcm90b3R5cGUuY2xvbmVfZW1wdHk9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdCh0aGlzLl9fcGFyZW50KTtyZXR1cm4gZS5zZXRfaW5kZW50KHRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2FsaWdubWVudF9jb3VudCksZX0sdC5wcm90b3R5cGUuaXRlbT1mdW5jdGlvbihlKXtyZXR1cm4gZTwwP3RoaXMuX19pdGVtc1t0aGlzLl9faXRlbXMubGVuZ3RoK2VdOnRoaXMuX19pdGVtc1tlXX0sdC5wcm90b3R5cGUuaGFzX21hdGNoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLl9faXRlbXMubGVuZ3RoLTE7dD49MDt0LS0paWYodGhpcy5fX2l0ZW1zW3RdLm1hdGNoKGUpKXJldHVybiEwO3JldHVybiExfSx0LnByb3RvdHlwZS5zZXRfaW5kZW50PWZ1bmN0aW9uKGUsdCl7dGhpcy5pc19lbXB0eSgpJiYodGhpcy5fX2luZGVudF9jb3VudD1lfHwwLHRoaXMuX19hbGlnbm1lbnRfY291bnQ9dHx8MCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zaXplKHRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2FsaWdubWVudF9jb3VudCkpfSx0LnByb3RvdHlwZS5fc2V0X3dyYXBfcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJih0aGlzLl9fd3JhcF9wb2ludF9pbmRleD10aGlzLl9faXRlbXMubGVuZ3RoLHRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD10aGlzLl9fY2hhcmFjdGVyX2NvdW50LHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2luZGVudF9jb3VudCx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQ9dGhpcy5fX3BhcmVudC5uZXh0X2xpbmUuX19hbGlnbm1lbnRfY291bnQpfSx0LnByb3RvdHlwZS5fc2hvdWxkX3dyYXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgmJnRoaXMuX19jaGFyYWN0ZXJfY291bnQ+dGhpcy5fX3BhcmVudC53cmFwX2xpbmVfbGVuZ3RoJiZ0aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQ+dGhpcy5fX3BhcmVudC5uZXh0X2xpbmUuX19jaGFyYWN0ZXJfY291bnR9LHQucHJvdG90eXBlLl9hbGxvd193cmFwPWZ1bmN0aW9uKCl7aWYodGhpcy5fc2hvdWxkX3dyYXAoKSl7dGhpcy5fX3BhcmVudC5hZGRfbmV3X2xpbmUoKTt2YXIgZT10aGlzLl9fcGFyZW50LmN1cnJlbnRfbGluZTtyZXR1cm4gZS5zZXRfaW5kZW50KHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudCx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQpLGUuX19pdGVtcz10aGlzLl9faXRlbXMuc2xpY2UodGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgpLHRoaXMuX19pdGVtcz10aGlzLl9faXRlbXMuc2xpY2UoMCx0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksZS5fX2NoYXJhY3Rlcl9jb3VudCs9dGhpcy5fX2NoYXJhY3Rlcl9jb3VudC10aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD10aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQsIiAiPT09ZS5fX2l0ZW1zWzBdJiYoZS5fX2l0ZW1zLnNwbGljZSgwLDEpLGUuX19jaGFyYWN0ZXJfY291bnQtPTEpLCEwfXJldHVybiExfSx0LnByb3RvdHlwZS5pc19lbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fX2l0ZW1zLmxlbmd0aH0sdC5wcm90b3R5cGUubGFzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzX2VtcHR5KCk/bnVsbDp0aGlzLl9faXRlbXNbdGhpcy5fX2l0ZW1zLmxlbmd0aC0xXX0sdC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihlKXt0aGlzLl9faXRlbXMucHVzaChlKTt2YXIgdD1lLmxhc3RJbmRleE9mKCJcbiIpOy0xIT09dD90aGlzLl9fY2hhcmFjdGVyX2NvdW50PWUubGVuZ3RoLXQ6dGhpcy5fX2NoYXJhY3Rlcl9jb3VudCs9ZS5sZW5ndGh9LHQucHJvdG90eXBlLnBvcD1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKXx8KGU9dGhpcy5fX2l0ZW1zLnBvcCgpLHRoaXMuX19jaGFyYWN0ZXJfY291bnQtPWUubGVuZ3RoKSxlfSx0LnByb3RvdHlwZS5fcmVtb3ZlX2luZGVudD1mdW5jdGlvbigpe3RoaXMuX19pbmRlbnRfY291bnQ+MCYmKHRoaXMuX19pbmRlbnRfY291bnQtPTEsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09dGhpcy5fX3BhcmVudC5pbmRlbnRfc2l6ZSl9LHQucHJvdG90eXBlLl9yZW1vdmVfd3JhcF9pbmRlbnQ9ZnVuY3Rpb24oKXt0aGlzLl9fd3JhcF9wb2ludF9pbmRlbnRfY291bnQ+MCYmKHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudC09MSl9LHQucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtmb3IoOyIgIj09PXRoaXMubGFzdCgpOyl0aGlzLl9faXRlbXMucG9wKCksdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09MX0sdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT0iIjtyZXR1cm4gdGhpcy5pc19lbXB0eSgpP3RoaXMuX19wYXJlbnQuaW5kZW50X2VtcHR5X2xpbmVzJiYoZT10aGlzLl9fcGFyZW50LmdldF9pbmRlbnRfc3RyaW5nKHRoaXMuX19pbmRlbnRfY291bnQpKTooZT10aGlzLl9fcGFyZW50LmdldF9pbmRlbnRfc3RyaW5nKHRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2FsaWdubWVudF9jb3VudCksZSs9dGhpcy5fX2l0ZW1zLmpvaW4oIiIpKSxlfSxuLnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9fYmFzZV9zdHJpbmdfbGVuZ3RoO3JldHVybiB0PXR8fDAsZTwwJiYobj0wKSxuKz1lKnRoaXMuX19pbmRlbnRfc2l6ZSxuKz10fSxuLnByb3RvdHlwZS5nZXRfaW5kZW50X3N0cmluZz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19iYXNlX3N0cmluZztyZXR1cm4gdD10fHwwLGU8MCYmKGU9MCxuPSIiKSx0Kz1lKnRoaXMuX19pbmRlbnRfc2l6ZSx0aGlzLl9fZW5zdXJlX2NhY2hlKHQpLG4rPXRoaXMuX19jYWNoZVt0XX0sbi5wcm90b3R5cGUuX19lbnN1cmVfY2FjaGU9ZnVuY3Rpb24oZSl7Zm9yKDtlPj10aGlzLl9fY2FjaGUubGVuZ3RoOyl0aGlzLl9fYWRkX2NvbHVtbigpfSxuLnByb3RvdHlwZS5fX2FkZF9jb2x1bW49ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fY2FjaGUubGVuZ3RoLHQ9MCxuPSIiO3RoaXMuX19pbmRlbnRfc2l6ZSYmZT49dGhpcy5fX2luZGVudF9zaXplJiYoZS09KHQ9TWF0aC5mbG9vcihlL3RoaXMuX19pbmRlbnRfc2l6ZSkpKnRoaXMuX19pbmRlbnRfc2l6ZSxuPW5ldyBBcnJheSh0KzEpLmpvaW4odGhpcy5fX2luZGVudF9zdHJpbmcpKSxlJiYobis9bmV3IEFycmF5KGUrMSkuam9pbigiICIpKSx0aGlzLl9fY2FjaGUucHVzaChuKX0saS5wcm90b3R5cGUuX19hZGRfb3V0cHV0bGluZT1mdW5jdGlvbigpe3RoaXMucHJldmlvdXNfbGluZT10aGlzLmN1cnJlbnRfbGluZSx0aGlzLmN1cnJlbnRfbGluZT10aGlzLm5leHRfbGluZS5jbG9uZV9lbXB0eSgpLHRoaXMuX19saW5lcy5wdXNoKHRoaXMuY3VycmVudF9saW5lKX0saS5wcm90b3R5cGUuZ2V0X2xpbmVfbnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19saW5lcy5sZW5ndGh9LGkucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX19pbmRlbnRfY2FjaGUuZ2V0X2luZGVudF9zdHJpbmcoZSx0KX0saS5wcm90b3R5cGUuZ2V0X2luZGVudF9zaXplPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX19pbmRlbnRfY2FjaGUuZ2V0X2luZGVudF9zaXplKGUsdCl9LGkucHJvdG90eXBlLmlzX2VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMucHJldmlvdXNfbGluZSYmdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKX0saS5wcm90b3R5cGUuYWRkX25ld19saW5lPWZ1bmN0aW9uKGUpe3JldHVybiEodGhpcy5pc19lbXB0eSgpfHwhZSYmdGhpcy5qdXN0X2FkZGVkX25ld2xpbmUoKXx8KHRoaXMucmF3fHx0aGlzLl9fYWRkX291dHB1dGxpbmUoKSwwKSl9LGkucHJvdG90eXBlLmdldF9jb2RlPWZ1bmN0aW9uKGUpe3RoaXMudHJpbSghMCk7dmFyIHQ9dGhpcy5jdXJyZW50X2xpbmUucG9wKCk7dCYmKCJcbiI9PT10W3QubGVuZ3RoLTFdJiYodD10LnJlcGxhY2UoL1xuKyQvZywiIikpLHRoaXMuY3VycmVudF9saW5lLnB1c2godCkpLHRoaXMuX2VuZF93aXRoX25ld2xpbmUmJnRoaXMuX19hZGRfb3V0cHV0bGluZSgpO3ZhciBuPXRoaXMuX19saW5lcy5qb2luKCJcbiIpO3JldHVybiJcbiIhPT1lJiYobj1uLnJlcGxhY2UoL1tcbl0vZyxlKSksbn0saS5wcm90b3R5cGUuc2V0X3dyYXBfcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRfbGluZS5fc2V0X3dyYXBfcG9pbnQoKX0saS5wcm90b3R5cGUuc2V0X2luZGVudD1mdW5jdGlvbihlLHQpe3JldHVybiBlPWV8fDAsdD10fHwwLHRoaXMubmV4dF9saW5lLnNldF9pbmRlbnQoZSx0KSx0aGlzLl9fbGluZXMubGVuZ3RoPjE/KHRoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoZSx0KSwhMCk6KHRoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoKSwhMSl9LGkucHJvdG90eXBlLmFkZF9yYXdfdG9rZW49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLm5ld2xpbmVzO3QrKyl0aGlzLl9fYWRkX291dHB1dGxpbmUoKTt0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KC0xKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGUud2hpdGVzcGFjZV9iZWZvcmUpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZS50ZXh0KSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ITF9LGkucHJvdG90eXBlLmFkZF90b2tlbj1mdW5jdGlvbihlKXt0aGlzLl9fYWRkX3NwYWNlX2JlZm9yZV90b2tlbigpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZSksdGhpcy5zcGFjZV9iZWZvcmVfdG9rZW49ITEsdGhpcy5ub25fYnJlYWtpbmdfc3BhY2U9ITEsdGhpcy5wcmV2aW91c190b2tlbl93cmFwcGVkPXRoaXMuY3VycmVudF9saW5lLl9hbGxvd193cmFwKCl9LGkucHJvdG90eXBlLl9fYWRkX3NwYWNlX2JlZm9yZV90b2tlbj1mdW5jdGlvbigpe3RoaXMuc3BhY2VfYmVmb3JlX3Rva2VuJiYhdGhpcy5qdXN0X2FkZGVkX25ld2xpbmUoKSYmKHRoaXMubm9uX2JyZWFraW5nX3NwYWNlfHx0aGlzLnNldF93cmFwX3BvaW50KCksdGhpcy5jdXJyZW50X2xpbmUucHVzaCgiICIpKX0saS5wcm90b3R5cGUucmVtb3ZlX2luZGVudD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5fX2xpbmVzLmxlbmd0aDtlPHQ7KXRoaXMuX19saW5lc1tlXS5fcmVtb3ZlX2luZGVudCgpLGUrKzt0aGlzLmN1cnJlbnRfbGluZS5fcmVtb3ZlX3dyYXBfaW5kZW50KCl9LGkucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oZSl7Zm9yKGU9dm9pZCAwIT09ZSYmZSx0aGlzLmN1cnJlbnRfbGluZS50cmltKCk7ZSYmdGhpcy5fX2xpbmVzLmxlbmd0aD4xJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpOyl0aGlzLl9fbGluZXMucG9wKCksdGhpcy5jdXJyZW50X2xpbmU9dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMV0sdGhpcy5jdXJyZW50X2xpbmUudHJpbSgpO3RoaXMucHJldmlvdXNfbGluZT10aGlzLl9fbGluZXMubGVuZ3RoPjE/dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMl06bnVsbH0saS5wcm90b3R5cGUuanVzdF9hZGRlZF9uZXdsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCl9LGkucHJvdG90eXBlLmp1c3RfYWRkZWRfYmxhbmtsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKXx8dGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKSYmdGhpcy5wcmV2aW91c19saW5lLmlzX2VtcHR5KCl9LGkucHJvdG90eXBlLmVuc3VyZV9lbXB0eV9saW5lX2Fib3ZlPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciBpPXRoaXMuX19saW5lcy5sZW5ndGgtMjtpPj0wOyl7dmFyIHI9dGhpcy5fX2xpbmVzW2ldO2lmKHIuaXNfZW1wdHkoKSlicmVhaztpZigwIT09ci5pdGVtKDApLmluZGV4T2YoZSkmJnIuaXRlbSgtMSkhPT1uKXt0aGlzLl9fbGluZXMuc3BsaWNlKGkrMSwwLG5ldyB0KHRoaXMpKSx0aGlzLnByZXZpb3VzX2xpbmU9dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMl07YnJlYWt9aS0tfX0sZS5leHBvcnRzLk91dHB1dD1pfSwsLCxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7dGhpcy5yYXdfb3B0aW9ucz1uKGUsdCksdGhpcy5kaXNhYmxlZD10aGlzLl9nZXRfYm9vbGVhbigiZGlzYWJsZWQiKSx0aGlzLmVvbD10aGlzLl9nZXRfY2hhcmFjdGVycygiZW9sIiwiYXV0byIpLHRoaXMuZW5kX3dpdGhfbmV3bGluZT10aGlzLl9nZXRfYm9vbGVhbigiZW5kX3dpdGhfbmV3bGluZSIpLHRoaXMuaW5kZW50X3NpemU9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X3NpemUiLDQpLHRoaXMuaW5kZW50X2NoYXI9dGhpcy5fZ2V0X2NoYXJhY3RlcnMoImluZGVudF9jaGFyIiwiICIpLHRoaXMuaW5kZW50X2xldmVsPXRoaXMuX2dldF9udW1iZXIoImluZGVudF9sZXZlbCIpLHRoaXMucHJlc2VydmVfbmV3bGluZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oInByZXNlcnZlX25ld2xpbmVzIiwhMCksdGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9dGhpcy5fZ2V0X251bWJlcigibWF4X3ByZXNlcnZlX25ld2xpbmVzIiwzMjc4NiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lc3x8KHRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzPTApLHRoaXMuaW5kZW50X3dpdGhfdGFicz10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X3dpdGhfdGFicyIsIlx0Ij09PXRoaXMuaW5kZW50X2NoYXIpLHRoaXMuaW5kZW50X3dpdGhfdGFicyYmKHRoaXMuaW5kZW50X2NoYXI9Ilx0IiwxPT09dGhpcy5pbmRlbnRfc2l6ZSYmKHRoaXMuaW5kZW50X3NpemU9NCkpLHRoaXMud3JhcF9saW5lX2xlbmd0aD10aGlzLl9nZXRfbnVtYmVyKCJ3cmFwX2xpbmVfbGVuZ3RoIix0aGlzLl9nZXRfbnVtYmVyKCJtYXhfY2hhciIpKSx0aGlzLmluZGVudF9lbXB0eV9saW5lcz10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X2VtcHR5X2xpbmVzIiksdGhpcy50ZW1wbGF0aW5nPXRoaXMuX2dldF9zZWxlY3Rpb25fbGlzdCgidGVtcGxhdGluZyIsWyJhdXRvIiwibm9uZSIsImRqYW5nbyIsImVyYiIsImhhbmRsZWJhcnMiLCJwaHAiLCJzbWFydHkiXSxbImF1dG8iXSl9ZnVuY3Rpb24gbihlLHQpe3ZhciBuLHI9e307Zm9yKG4gaW4gZT1pKGUpKW4hPT10JiYocltuXT1lW25dKTtpZih0JiZlW3RdKWZvcihuIGluIGVbdF0pcltuXT1lW3RdW25dO3JldHVybiByfWZ1bmN0aW9uIGkoZSl7dmFyIHQsbj17fTtmb3IodCBpbiBlKW5bdC5yZXBsYWNlKC8tL2csIl8iKV09ZVt0XTtyZXR1cm4gbn10LnByb3RvdHlwZS5fZ2V0X2FycmF5PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXSxpPXR8fFtdO3JldHVybiJvYmplY3QiPT10eXBlb2Ygbj9udWxsIT09biYmImZ1bmN0aW9uIj09dHlwZW9mIG4uY29uY2F0JiYoaT1uLmNvbmNhdCgpKToic3RyaW5nIj09dHlwZW9mIG4mJihpPW4uc3BsaXQoL1teYS16QS1aMC05X1wvXC1dKy8pKSxpfSx0LnByb3RvdHlwZS5fZ2V0X2Jvb2xlYW49ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdO3JldHVybiB2b2lkIDA9PT1uPyEhdDohIW59LHQucHJvdG90eXBlLl9nZXRfY2hhcmFjdGVycz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucmF3X29wdGlvbnNbZV0saT10fHwiIjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4mJihpPW4ucmVwbGFjZSgvXFxyLywiXHIiKS5yZXBsYWNlKC9cXG4vLCJcbiIpLnJlcGxhY2UoL1xcdC8sIlx0IikpLGl9LHQucHJvdG90eXBlLl9nZXRfbnVtYmVyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXTt0PXBhcnNlSW50KHQsMTApLGlzTmFOKHQpJiYodD0wKTt2YXIgaT1wYXJzZUludChuLDEwKTtyZXR1cm4gaXNOYU4oaSkmJihpPXQpLGl9LHQucHJvdG90eXBlLl9nZXRfc2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoZSx0LG4pO2lmKDEhPT1pLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgT3B0aW9uIFZhbHVlOiBUaGUgb3B0aW9uICciK2UrIicgY2FuIG9ubHkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuIit0KyJcbllvdSBwYXNzZWQgaW46ICciK3RoaXMucmF3X29wdGlvbnNbZV0rIiciKTtyZXR1cm4gaVswXX0sdC5wcm90b3R5cGUuX2dldF9zZWxlY3Rpb25fbGlzdD1mdW5jdGlvbihlLHQsbil7aWYoIXR8fDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlNlbGVjdGlvbiBsaXN0IGNhbm5vdCBiZSBlbXB0eS4iKTtpZihuPW58fFt0WzBdXSwhdGhpcy5faXNfdmFsaWRfc2VsZWN0aW9uKG4sdCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIERlZmF1bHQgVmFsdWUhIik7dmFyIGk9dGhpcy5fZ2V0X2FycmF5KGUsbik7aWYoIXRoaXMuX2lzX3ZhbGlkX3NlbGVjdGlvbihpLHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBPcHRpb24gVmFsdWU6IFRoZSBvcHRpb24gJyIrZSsiJyBjYW4gY29udGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuIit0KyJcbllvdSBwYXNzZWQgaW46ICciK3RoaXMucmF3X29wdGlvbnNbZV0rIiciKTtyZXR1cm4gaX0sdC5wcm90b3R5cGUuX2lzX3ZhbGlkX3NlbGVjdGlvbj1mdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aCYmdC5sZW5ndGgmJiFlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybi0xPT09dC5pbmRleE9mKGUpfSkpfSxlLmV4cG9ydHMuT3B0aW9ucz10LGUuZXhwb3J0cy5ub3JtYWxpemVPcHRzPWksZS5leHBvcnRzLm1lcmdlT3B0cz1ufSwsZnVuY3Rpb24oZSl7dmFyIHQ9UmVnRXhwLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgic3RpY2t5Iik7ZnVuY3Rpb24gbihlKXt0aGlzLl9faW5wdXQ9ZXx8IiIsdGhpcy5fX2lucHV0X2xlbmd0aD10aGlzLl9faW5wdXQubGVuZ3RoLHRoaXMuX19wb3NpdGlvbj0wfW4ucHJvdG90eXBlLnJlc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcG9zaXRpb249MH0sbi5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj4wJiYodGhpcy5fX3Bvc2l0aW9uLT0xKX0sbi5wcm90b3R5cGUuaGFzTmV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fcG9zaXRpb248dGhpcy5fX2lucHV0X2xlbmd0aH0sbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIHRoaXMuaGFzTmV4dCgpJiYoZT10aGlzLl9faW5wdXQuY2hhckF0KHRoaXMuX19wb3NpdGlvbiksdGhpcy5fX3Bvc2l0aW9uKz0xKSxlfSxuLnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7cmV0dXJuIGU9ZXx8MCwoZSs9dGhpcy5fX3Bvc2l0aW9uKT49MCYmZTx0aGlzLl9faW5wdXRfbGVuZ3RoJiYodD10aGlzLl9faW5wdXQuY2hhckF0KGUpKSx0fSxuLnByb3RvdHlwZS5fX21hdGNoPWZ1bmN0aW9uKGUsbil7ZS5sYXN0SW5kZXg9bjt2YXIgaT1lLmV4ZWModGhpcy5fX2lucHV0KTtyZXR1cm4haXx8dCYmZS5zdGlja3l8fGkuaW5kZXghPT1uJiYoaT1udWxsKSxpfSxuLnByb3RvdHlwZS50ZXN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9dHx8MCwodCs9dGhpcy5fX3Bvc2l0aW9uKT49MCYmdDx0aGlzLl9faW5wdXRfbGVuZ3RoJiYhIXRoaXMuX19tYXRjaChlLHQpfSxuLnByb3RvdHlwZS50ZXN0Q2hhcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucGVlayh0KTtyZXR1cm4gZS5sYXN0SW5kZXg9MCxudWxsIT09biYmZS50ZXN0KG4pfSxuLnByb3RvdHlwZS5tYXRjaD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fbWF0Y2goZSx0aGlzLl9fcG9zaXRpb24pO3JldHVybiB0P3RoaXMuX19wb3NpdGlvbis9dFswXS5sZW5ndGg6dD1udWxsLHR9LG4ucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHI9IiI7cmV0dXJuIGUmJihpPXRoaXMubWF0Y2goZSkpJiYocis9aVswXSksIXR8fCFpJiZlfHwocis9dGhpcy5yZWFkVW50aWwodCxuKSkscn0sbi5wcm90b3R5cGUucmVhZFVudGlsPWZ1bmN0aW9uKGUsdCl7dmFyIG4saT10aGlzLl9fcG9zaXRpb247ZS5sYXN0SW5kZXg9dGhpcy5fX3Bvc2l0aW9uO3ZhciByPWUuZXhlYyh0aGlzLl9faW5wdXQpO3JldHVybiByPyhpPXIuaW5kZXgsdCYmKGkrPXJbMF0ubGVuZ3RoKSk6aT10aGlzLl9faW5wdXRfbGVuZ3RoLG49dGhpcy5fX2lucHV0LnN1YnN0cmluZyh0aGlzLl9fcG9zaXRpb24saSksdGhpcy5fX3Bvc2l0aW9uPWksbn0sbi5wcm90b3R5cGUucmVhZFVudGlsQWZ0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmVhZFVudGlsKGUsITApfSxuLnByb3RvdHlwZS5nZXRfcmVnZXhwPWZ1bmN0aW9uKGUsbil7dmFyIGk9bnVsbCxyPSJnIjtyZXR1cm4gbiYmdCYmKHI9InkiKSwic3RyaW5nIj09dHlwZW9mIGUmJiIiIT09ZT9pPW5ldyBSZWdFeHAoZSxyKTplJiYoaT1uZXcgUmVnRXhwKGUuc291cmNlLHIpKSxpfSxuLnByb3RvdHlwZS5nZXRfbGl0ZXJhbF9yZWdleHA9ZnVuY3Rpb24oZSl7cmV0dXJuIFJlZ0V4cChlLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIikpfSxuLnByb3RvdHlwZS5wZWVrVW50aWxBZnRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fcG9zaXRpb24sbj10aGlzLnJlYWRVbnRpbEFmdGVyKGUpO3JldHVybiB0aGlzLl9fcG9zaXRpb249dCxufSxuLnByb3RvdHlwZS5sb29rQmFjaz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fcG9zaXRpb24tMTtyZXR1cm4gdD49ZS5sZW5ndGgmJnRoaXMuX19pbnB1dC5zdWJzdHJpbmcodC1lLmxlbmd0aCx0KS50b0xvd2VyQ2FzZSgpPT09ZX0sZS5leHBvcnRzLklucHV0U2Nhbm5lcj1ufSwsLCwsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQpe2U9InN0cmluZyI9PXR5cGVvZiBlP2U6ZS5zb3VyY2UsdD0ic3RyaW5nIj09dHlwZW9mIHQ/dDp0LnNvdXJjZSx0aGlzLl9fZGlyZWN0aXZlc19ibG9ja19wYXR0ZXJuPW5ldyBSZWdFeHAoZSsvIGJlYXV0aWZ5KCBcdytbOl1cdyspKyAvLnNvdXJjZSt0LCJnIiksdGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuPS8gKFx3KylbOl0oXHcrKS9nLHRoaXMuX19kaXJlY3RpdmVzX2VuZF9pZ25vcmVfcGF0dGVybj1uZXcgUmVnRXhwKGUrL1xzYmVhdXRpZnlcc2lnbm9yZTplbmRccy8uc291cmNlK3QsImciKX10LnByb3RvdHlwZS5nZXRfZGlyZWN0aXZlcz1mdW5jdGlvbihlKXtpZighZS5tYXRjaCh0aGlzLl9fZGlyZWN0aXZlc19ibG9ja19wYXR0ZXJuKSlyZXR1cm4gbnVsbDt2YXIgdD17fTt0aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4ubGFzdEluZGV4PTA7Zm9yKHZhciBuPXRoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5leGVjKGUpO247KXRbblsxXV09blsyXSxuPXRoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5leGVjKGUpO3JldHVybiB0fSx0LnByb3RvdHlwZS5yZWFkSWdub3JlZD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZWFkVW50aWxBZnRlcih0aGlzLl9fZGlyZWN0aXZlc19lbmRfaWdub3JlX3BhdHRlcm4pfSxlLmV4cG9ydHMuRGlyZWN0aXZlcz10fSwsZnVuY3Rpb24oZSx0LG4pe3ZhciBpPW4oMTYpLkJlYXV0aWZpZXIscj1uKDE3KS5PcHRpb25zO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgaShlLHQpLmJlYXV0aWZ5KCl9LGUuZXhwb3J0cy5kZWZhdWx0T3B0aW9ucz1mdW5jdGlvbigpe3JldHVybiBuZXcgcn19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1uKDE3KS5PcHRpb25zLHI9bigyKS5PdXRwdXQsYT1uKDgpLklucHV0U2Nhbm5lcixvPW5ldygwLG4oMTMpLkRpcmVjdGl2ZXMpKC9cL1wqLywvXCpcLy8pLHM9L1xyXG58W1xyXG5dLyxsPS9cclxufFtcclxuXS9nLGM9L1xzLyxoPS8oPzpcc3xcbikrL2csZD0vXC9cKig/Oltcc1xTXSo/KSgoPzpcKlwvKXwkKS9nLHU9L1wvXC8oPzpbXlxuXHJcdTIwMjhcdTIwMjldKikvZztmdW5jdGlvbiBtKGUsdCl7dGhpcy5fc291cmNlX3RleHQ9ZXx8IiIsdGhpcy5fb3B0aW9ucz1uZXcgaSh0KSx0aGlzLl9jaD1udWxsLHRoaXMuX2lucHV0PW51bGwsdGhpcy5ORVNURURfQVRfUlVMRT17IkBwYWdlIjohMCwiQGZvbnQtZmFjZSI6ITAsIkBrZXlmcmFtZXMiOiEwLCJAbWVkaWEiOiEwLCJAc3VwcG9ydHMiOiEwLCJAZG9jdW1lbnQiOiEwfSx0aGlzLkNPTkRJVElPTkFMX0dST1VQX1JVTEU9eyJAbWVkaWEiOiEwLCJAc3VwcG9ydHMiOiEwLCJAZG9jdW1lbnQiOiEwfX1tLnByb3RvdHlwZS5lYXRTdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7Zm9yKHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKTt0aGlzLl9jaDspe2lmKHQrPXRoaXMuX2NoLCJcXCI9PT10aGlzLl9jaCl0Kz10aGlzLl9pbnB1dC5uZXh0KCk7ZWxzZSBpZigtMSE9PWUuaW5kZXhPZih0aGlzLl9jaCl8fCJcbiI9PT10aGlzLl9jaClicmVhazt0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCl9cmV0dXJuIHR9LG0ucHJvdG90eXBlLmVhdFdoaXRlc3BhY2U9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWMudGVzdCh0aGlzLl9pbnB1dC5wZWVrKCkpLG49MDtjLnRlc3QodGhpcy5faW5wdXQucGVlaygpKTspdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLGUmJiJcbiI9PT10aGlzLl9jaCYmKDA9PT1ufHxuPHRoaXMuX29wdGlvbnMubWF4X3ByZXNlcnZlX25ld2xpbmVzKSYmKG4rKyx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCEwKSk7cmV0dXJuIHR9LG0ucHJvdG90eXBlLmZvdW5kTmVzdGVkUHNldWRvQ2xhc3M9ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PTEsbj10aGlzLl9pbnB1dC5wZWVrKHQpO247KXtpZigieyI9PT1uKXJldHVybiEwO2lmKCIoIj09PW4pZSs9MTtlbHNlIGlmKCIpIj09PW4pe2lmKDA9PT1lKXJldHVybiExO2UtPTF9ZWxzZSBpZigiOyI9PT1ufHwifSI9PT1uKXJldHVybiExO3QrKyxuPXRoaXMuX2lucHV0LnBlZWsodCl9cmV0dXJuITF9LG0ucHJvdG90eXBlLnByaW50X3N0cmluZz1mdW5jdGlvbihlKXt0aGlzLl9vdXRwdXQuc2V0X2luZGVudCh0aGlzLl9pbmRlbnRMZXZlbCksdGhpcy5fb3V0cHV0Lm5vbl9icmVha2luZ19zcGFjZT0hMCx0aGlzLl9vdXRwdXQuYWRkX3Rva2VuKGUpfSxtLnByb3RvdHlwZS5wcmVzZXJ2ZVNpbmdsZVNwYWNlPWZ1bmN0aW9uKGUpe2UmJih0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKX0sbS5wcm90b3R5cGUuaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5faW5kZW50TGV2ZWwrK30sbS5wcm90b3R5cGUub3V0ZGVudD1mdW5jdGlvbigpe3RoaXMuX2luZGVudExldmVsPjAmJnRoaXMuX2luZGVudExldmVsLS19LG0ucHJvdG90eXBlLmJlYXV0aWZ5PWZ1bmN0aW9uKCl7aWYodGhpcy5fb3B0aW9ucy5kaXNhYmxlZClyZXR1cm4gdGhpcy5fc291cmNlX3RleHQ7dmFyIGU9dGhpcy5fc291cmNlX3RleHQsdD10aGlzLl9vcHRpb25zLmVvbDsiYXV0byI9PT10JiYodD0iXG4iLGUmJnMudGVzdChlfHwiIikmJih0PWUubWF0Y2gocylbMF0pKTt2YXIgbj0oZT1lLnJlcGxhY2UobCwiXG4iKSkubWF0Y2goL15bXHQgXSovKVswXTt0aGlzLl9vdXRwdXQ9bmV3IHIodGhpcy5fb3B0aW9ucyxuKSx0aGlzLl9pbnB1dD1uZXcgYShlKSx0aGlzLl9pbmRlbnRMZXZlbD0wLHRoaXMuX25lc3RlZExldmVsPTAsdGhpcy5fY2g9bnVsbDtmb3IodmFyIGksbSxwPTAsZj0hMSxnPSExLGI9ITEsXz0hMSx2PSExLHc9dGhpcy5fY2g7aT0iIiE9PXRoaXMuX2lucHV0LnJlYWQoaCksbT13LHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSwiXFwiPT09dGhpcy5fY2gmJnRoaXMuX2lucHV0Lmhhc05leHQoKSYmKHRoaXMuX2NoKz10aGlzLl9pbnB1dC5uZXh0KCkpLHc9dGhpcy5fY2gsdGhpcy5fY2g7KWlmKCIvIj09PXRoaXMuX2NoJiYiKiI9PT10aGlzLl9pbnB1dC5wZWVrKCkpe3RoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSx0aGlzLl9pbnB1dC5iYWNrKCk7dmFyIHk9dGhpcy5faW5wdXQucmVhZChkKSxUPW8uZ2V0X2RpcmVjdGl2ZXMoeSk7VCYmInN0YXJ0Ij09PVQuaWdub3JlJiYoeSs9by5yZWFkSWdub3JlZCh0aGlzLl9pbnB1dCkpLHRoaXMucHJpbnRfc3RyaW5nKHkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpfWVsc2UgaWYoIi8iPT09dGhpcy5fY2gmJiIvIj09PXRoaXMuX2lucHV0LnBlZWsoKSl0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwLHRoaXMuX2lucHV0LmJhY2soKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9pbnB1dC5yZWFkKHUpKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApO2Vsc2UgaWYoIkAiPT09dGhpcy5fY2gpaWYodGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKGkpLCJ7Ij09PXRoaXMuX2lucHV0LnBlZWsoKSl0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCt0aGlzLmVhdFN0cmluZygifSIpKTtlbHNle3RoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKTt2YXIgaz10aGlzLl9pbnB1dC5wZWVrVW50aWxBZnRlcigvWzogLDt7fSgpW1xdXC89JyJdL2cpO2subWF0Y2goL1sgOl0kLykmJihrPXRoaXMuZWF0U3RyaW5nKCI6ICIpLnJlcGxhY2UoL1xzJC8sIiIpLHRoaXMucHJpbnRfc3RyaW5nKGspLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApLCJleHRlbmQiPT09KGs9ay5yZXBsYWNlKC9ccyQvLCIiKSk/Xz0hMDoiaW1wb3J0Ij09PWsmJih2PSEwKSxrIGluIHRoaXMuTkVTVEVEX0FUX1JVTEU/KHRoaXMuX25lc3RlZExldmVsKz0xLGsgaW4gdGhpcy5DT05ESVRJT05BTF9HUk9VUF9SVUxFJiYoYj0hMCkpOmZ8fDAhPT1wfHwtMT09PWsuaW5kZXhPZigiOiIpfHwoZz0hMCx0aGlzLmluZGVudCgpKX1lbHNlIiMiPT09dGhpcy5fY2gmJiJ7Ij09PXRoaXMuX2lucHV0LnBlZWsoKT8odGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKGkpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoK3RoaXMuZWF0U3RyaW5nKCJ9IikpKToieyI9PT10aGlzLl9jaD8oZyYmKGc9ITEsdGhpcy5vdXRkZW50KCkpLGI/KGI9ITEsZj10aGlzLl9pbmRlbnRMZXZlbD49dGhpcy5fbmVzdGVkTGV2ZWwpOmY9dGhpcy5faW5kZW50TGV2ZWw+PXRoaXMuX25lc3RlZExldmVsLTEsdGhpcy5fb3B0aW9ucy5uZXdsaW5lX2JldHdlZW5fcnVsZXMmJmYmJnRoaXMuX291dHB1dC5wcmV2aW91c19saW5lJiYieyIhPT10aGlzLl9vdXRwdXQucHJldmlvdXNfbGluZS5pdGVtKC0xKSYmdGhpcy5fb3V0cHV0LmVuc3VyZV9lbXB0eV9saW5lX2Fib3ZlKCIvIiwiLCIpLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsImV4cGFuZCI9PT10aGlzLl9vcHRpb25zLmJyYWNlX3N0eWxlPyh0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuaW5kZW50KCksdGhpcy5fb3V0cHV0LnNldF9pbmRlbnQodGhpcy5faW5kZW50TGV2ZWwpKToodGhpcy5pbmRlbnQoKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpKToifSI9PT10aGlzLl9jaD8odGhpcy5vdXRkZW50KCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpLCJ7Ij09PW0mJnRoaXMuX291dHB1dC50cmltKCEwKSx2PSExLF89ITEsZyYmKHRoaXMub3V0ZGVudCgpLGc9ITEpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSxmPSExLHRoaXMuX25lc3RlZExldmVsJiZ0aGlzLl9uZXN0ZWRMZXZlbC0tLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpLHRoaXMuX29wdGlvbnMubmV3bGluZV9iZXR3ZWVuX3J1bGVzJiYhdGhpcy5fb3V0cHV0Lmp1c3RfYWRkZWRfYmxhbmtsaW5lKCkmJiJ9IiE9PXRoaXMuX2lucHV0LnBlZWsoKSYmdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSghMCkpOiI6Ij09PXRoaXMuX2NoPyFmJiYhYnx8dGhpcy5faW5wdXQubG9va0JhY2soIiYiKXx8dGhpcy5mb3VuZE5lc3RlZFBzZXVkb0NsYXNzKCl8fHRoaXMuX2lucHV0Lmxvb2tCYWNrKCIoIil8fF98fDAhPT1wPyh0aGlzLl9pbnB1dC5sb29rQmFjaygiICIpJiYodGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCksIjoiPT09dGhpcy5faW5wdXQucGVlaygpPyh0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCksdGhpcy5wcmludF9zdHJpbmcoIjo6IikpOnRoaXMucHJpbnRfc3RyaW5nKCI6IikpOih0aGlzLnByaW50X3N0cmluZygiOiIpLGd8fChnPSEwLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLmluZGVudCgpKSk6JyInPT09dGhpcy5fY2h8fCInIj09PXRoaXMuX2NoPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UoaSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcodGhpcy5fY2gpKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApKToiOyI9PT10aGlzLl9jaD8wPT09cD8oZyYmKHRoaXMub3V0ZGVudCgpLGc9ITEpLF89ITEsdj0hMSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSwiLyIhPT10aGlzLl9pbnB1dC5wZWVrKCkmJnRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSk6KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApOiIoIj09PXRoaXMuX2NoP3RoaXMuX2lucHV0Lmxvb2tCYWNrKCJ1cmwiKT8odGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuZWF0V2hpdGVzcGFjZSgpLHArKyx0aGlzLmluZGVudCgpLHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSwiKSI9PT10aGlzLl9jaHx8JyInPT09dGhpcy5fY2h8fCInIj09PXRoaXMuX2NoP3RoaXMuX2lucHV0LmJhY2soKTp0aGlzLl9jaCYmKHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoK3RoaXMuZWF0U3RyaW5nKCIpIikpLHAmJihwLS0sdGhpcy5vdXRkZW50KCkpKSk6KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShpKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCkscCsrLHRoaXMuaW5kZW50KCkpOiIpIj09PXRoaXMuX2NoPyhwJiYocC0tLHRoaXMub3V0ZGVudCgpKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpOiIsIj09PXRoaXMuX2NoPyh0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSwhdGhpcy5fb3B0aW9ucy5zZWxlY3Rvcl9zZXBhcmF0b3JfbmV3bGluZXx8Z3x8MCE9PXB8fHZ8fF8/dGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMDp0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCkpOiI+IiE9PXRoaXMuX2NoJiYiKyIhPT10aGlzLl9jaCYmIn4iIT09dGhpcy5fY2h8fGd8fDAhPT1wPyJdIj09PXRoaXMuX2NoP3RoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKToiWyI9PT10aGlzLl9jaD8odGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKGkpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6Ij0iPT09dGhpcy5fY2g/KHRoaXMuZWF0V2hpdGVzcGFjZSgpLHRoaXMucHJpbnRfc3RyaW5nKCI9IiksYy50ZXN0KHRoaXMuX2NoKSYmKHRoaXMuX2NoPSIiKSk6IiEiIT09dGhpcy5fY2h8fHRoaXMuX2lucHV0Lmxvb2tCYWNrKCJcXCIpPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UoaSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpKToodGhpcy5wcmludF9zdHJpbmcoIiAiKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpOnRoaXMuX29wdGlvbnMuc3BhY2VfYXJvdW5kX2NvbWJpbmF0b3I/KHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApOih0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCksdGhpcy5fY2gmJmMudGVzdCh0aGlzLl9jaCkmJih0aGlzLl9jaD0iIikpO3JldHVybiB0aGlzLl9vdXRwdXQuZ2V0X2NvZGUodCl9LGUuZXhwb3J0cy5CZWF1dGlmaWVyPW19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1uKDYpLk9wdGlvbnM7ZnVuY3Rpb24gcihlKXtpLmNhbGwodGhpcyxlLCJjc3MiKSx0aGlzLnNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lPXRoaXMuX2dldF9ib29sZWFuKCJzZWxlY3Rvcl9zZXBhcmF0b3JfbmV3bGluZSIsITApLHRoaXMubmV3bGluZV9iZXR3ZWVuX3J1bGVzPXRoaXMuX2dldF9ib29sZWFuKCJuZXdsaW5lX2JldHdlZW5fcnVsZXMiLCEwKTt2YXIgdD10aGlzLl9nZXRfYm9vbGVhbigic3BhY2VfYXJvdW5kX3NlbGVjdG9yX3NlcGFyYXRvciIpO3RoaXMuc3BhY2VfYXJvdW5kX2NvbWJpbmF0b3I9dGhpcy5fZ2V0X2Jvb2xlYW4oInNwYWNlX2Fyb3VuZF9jb21iaW5hdG9yIil8fHQ7dmFyIG49dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KCJicmFjZV9zdHlsZSIsWyJjb2xsYXBzZSIsImV4cGFuZCIsImVuZC1leHBhbmQiLCJub25lIiwicHJlc2VydmUtaW5saW5lIl0pO3RoaXMuYnJhY2Vfc3R5bGU9ImNvbGxhcHNlIjtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKykiZXhwYW5kIiE9PW5bcl0/dGhpcy5icmFjZV9zdHlsZT0iY29sbGFwc2UiOnRoaXMuYnJhY2Vfc3R5bGU9bltyXX1yLnByb3RvdHlwZT1uZXcgaSxlLmV4cG9ydHMuT3B0aW9ucz1yfV0sZXM9e30sdHM9ZnVuY3Rpb24gZSh0KXt2YXIgbj1lc1t0XTtpZih2b2lkIDAhPT1uKXJldHVybiBuLmV4cG9ydHM7dmFyIGk9ZXNbdF09e2V4cG9ydHM6e319O3JldHVybiBab1t0XShpLGkuZXhwb3J0cyxlKSxpLmV4cG9ydHN9KDE1KTt2YXIgYXMsb3Msc3M9dHM7ZnVuY3Rpb24gbHMoZSx0LG4pe3ZhciBpPWUuZ2V0VGV4dCgpLHI9ITAsYT0wLG89bi50YWJTaXplfHw0O2lmKHQpe2Zvcih2YXIgcz1lLm9mZnNldEF0KHQuc3RhcnQpLGw9cztsPjAmJm1zKGksbC0xKTspbC0tOzA9PT1sfHx1cyhpLGwtMSk/cz1sOmw8cyYmKHM9bCsxKTtmb3IodmFyIGM9ZS5vZmZzZXRBdCh0LmVuZCksaD1jO2g8aS5sZW5ndGgmJm1zKGksaCk7KWgrKzsoaD09PWkubGVuZ3RofHx1cyhpLGgpKSYmKGM9aCksdD1RaS5jcmVhdGUoZS5wb3NpdGlvbkF0KHMpLGUucG9zaXRpb25BdChjKSk7dmFyIGQ9aS5zdWJzdHJpbmcoMCxzKTtpZihuZXcgUmVnRXhwKC8uKls8XVtePl0qJC8pLnRlc3QoZCkpcmV0dXJuW3tyYW5nZTp0LG5ld1RleHQ6aT1pLnN1YnN0cmluZyhzLGMpfV07aWYocj1jPT09aS5sZW5ndGgsaT1pLnN1YnN0cmluZyhzLGMpLDAhPT1zKXt2YXIgdT1lLm9mZnNldEF0KFhpLmNyZWF0ZSh0LnN0YXJ0LmxpbmUsMCkpO2E9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXQscj0wLGE9bi50YWJTaXplfHw0O2Zvcig7aTxlLmxlbmd0aDspe3ZhciBvPWUuY2hhckF0KGkpO2lmKCIgIj09PW8pcisrO2Vsc2V7aWYoIlx0IiE9PW8pYnJlYWs7cis9YX1pKyt9cmV0dXJuIE1hdGguZmxvb3Ioci9hKX0oZS5nZXRUZXh0KCksdSxuKX19ZWxzZSB0PVFpLmNyZWF0ZShYaS5jcmVhdGUoMCwwKSxlLnBvc2l0aW9uQXQoaS5sZW5ndGgpKTt2YXIgbT17aW5kZW50X3NpemU6byxpbmRlbnRfY2hhcjpuLmluc2VydFNwYWNlcz8iICI6Ilx0IixpbmRlbnRfZW1wdHlfbGluZXM6Y3MobiwiaW5kZW50RW1wdHlMaW5lcyIsITEpLHdyYXBfbGluZV9sZW5ndGg6Y3Mobiwid3JhcExpbmVMZW5ndGgiLDEyMCksdW5mb3JtYXR0ZWQ6aHMobiwidW5mb3JtYXR0ZWQiLHZvaWQgMCksY29udGVudF91bmZvcm1hdHRlZDpocyhuLCJjb250ZW50VW5mb3JtYXR0ZWQiLHZvaWQgMCksaW5kZW50X2lubmVyX2h0bWw6Y3MobiwiaW5kZW50SW5uZXJIdG1sIiwhMSkscHJlc2VydmVfbmV3bGluZXM6Y3MobiwicHJlc2VydmVOZXdMaW5lcyIsITApLG1heF9wcmVzZXJ2ZV9uZXdsaW5lczpjcyhuLCJtYXhQcmVzZXJ2ZU5ld0xpbmVzIiwzMjc4NiksaW5kZW50X2hhbmRsZWJhcnM6Y3MobiwiaW5kZW50SGFuZGxlYmFycyIsITEpLGVuZF93aXRoX25ld2xpbmU6ciYmY3MobiwiZW5kV2l0aE5ld2xpbmUiLCExKSxleHRyYV9saW5lcnM6aHMobiwiZXh0cmFMaW5lcnMiLHZvaWQgMCksd3JhcF9hdHRyaWJ1dGVzOmNzKG4sIndyYXBBdHRyaWJ1dGVzIiwiYXV0byIpLHdyYXBfYXR0cmlidXRlc19pbmRlbnRfc2l6ZTpjcyhuLCJ3cmFwQXR0cmlidXRlc0luZGVudFNpemUiLHZvaWQgMCksZW9sOiJcbiIsaW5kZW50X3NjcmlwdHM6Y3MobiwiaW5kZW50U2NyaXB0cyIsIm5vcm1hbCIpLHRlbXBsYXRpbmc6ZHMobiwiYWxsIiksdW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXI6Y3MobiwidW5mb3JtYXR0ZWRDb250ZW50RGVsaW1pdGVyIiwiIil9LHA9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXMoZSx0LHJzLHNzKX0oaS5yZXBsYWNlKC9eXHMrLywiIiksbSk7aWYoYT4wKXt2YXIgZj1uLmluc2VydFNwYWNlcz9BbygiICIsbyphKTpBbygiXHQiLGEpO3A9cC5zcGxpdCgiXG4iKS5qb2luKCJcbiIrZiksMD09PXQuc3RhcnQuY2hhcmFjdGVyJiYocD1mK3ApfXJldHVyblt7cmFuZ2U6dCxuZXdUZXh0OnB9XX1mdW5jdGlvbiBjcyhlLHQsbil7aWYoZSYmZS5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIGk9ZVt0XTtpZihudWxsIT09aSlyZXR1cm4gaX1yZXR1cm4gbn1mdW5jdGlvbiBocyhlLHQsbil7dmFyIGk9Y3MoZSx0LG51bGwpO3JldHVybiJzdHJpbmciPT10eXBlb2YgaT9pLmxlbmd0aD4wP2kuc3BsaXQoIiwiKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0oKS50b0xvd2VyQ2FzZSgpfSkpOltdOm59ZnVuY3Rpb24gZHMoZSx0KXtyZXR1cm4hMD09PWNzKGUsInRlbXBsYXRpbmciLHQpP1siYXV0byJdOlsibm9uZSJdfWZ1bmN0aW9uIHVzKGUsdCl7cmV0dXJuLTEhPT0iXHJcbiIuaW5kZXhPZihlLmNoYXJBdCh0KSl9ZnVuY3Rpb24gbXMoZSx0KXtyZXR1cm4tMSE9PSIgXHQiLmluZGV4T2YoZS5jaGFyQXQodCkpfSFmdW5jdGlvbigpe3ZhciBlPVssLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dGhpcy5fX3BhcmVudD1lLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9MCx0aGlzLl9faW5kZW50X2NvdW50PS0xLHRoaXMuX19hbGlnbm1lbnRfY291bnQ9MCx0aGlzLl9fd3JhcF9wb2ludF9pbmRleD0wLHRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD0tMSx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQ9MCx0aGlzLl9faXRlbXM9W119ZnVuY3Rpb24gbihlLHQpe3RoaXMuX19jYWNoZT1bIiJdLHRoaXMuX19pbmRlbnRfc2l6ZT1lLmluZGVudF9zaXplLHRoaXMuX19pbmRlbnRfc3RyaW5nPWUuaW5kZW50X2NoYXIsZS5pbmRlbnRfd2l0aF90YWJzfHwodGhpcy5fX2luZGVudF9zdHJpbmc9bmV3IEFycmF5KGUuaW5kZW50X3NpemUrMSkuam9pbihlLmluZGVudF9jaGFyKSksdD10fHwiIixlLmluZGVudF9sZXZlbD4wJiYodD1uZXcgQXJyYXkoZS5pbmRlbnRfbGV2ZWwrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLHRoaXMuX19iYXNlX3N0cmluZz10LHRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg9dC5sZW5ndGh9ZnVuY3Rpb24gaShlLGkpe3RoaXMuX19pbmRlbnRfY2FjaGU9bmV3IG4oZSxpKSx0aGlzLnJhdz0hMSx0aGlzLl9lbmRfd2l0aF9uZXdsaW5lPWUuZW5kX3dpdGhfbmV3bGluZSx0aGlzLmluZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy53cmFwX2xpbmVfbGVuZ3RoPWUud3JhcF9saW5lX2xlbmd0aCx0aGlzLmluZGVudF9lbXB0eV9saW5lcz1lLmluZGVudF9lbXB0eV9saW5lcyx0aGlzLl9fbGluZXM9W10sdGhpcy5wcmV2aW91c19saW5lPW51bGwsdGhpcy5jdXJyZW50X2xpbmU9bnVsbCx0aGlzLm5leHRfbGluZT1uZXcgdCh0aGlzKSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ITEsdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCl9dC5wcm90b3R5cGUuY2xvbmVfZW1wdHk9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdCh0aGlzLl9fcGFyZW50KTtyZXR1cm4gZS5zZXRfaW5kZW50KHRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2FsaWdubWVudF9jb3VudCksZX0sdC5wcm90b3R5cGUuaXRlbT1mdW5jdGlvbihlKXtyZXR1cm4gZTwwP3RoaXMuX19pdGVtc1t0aGlzLl9faXRlbXMubGVuZ3RoK2VdOnRoaXMuX19pdGVtc1tlXX0sdC5wcm90b3R5cGUuaGFzX21hdGNoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLl9faXRlbXMubGVuZ3RoLTE7dD49MDt0LS0paWYodGhpcy5fX2l0ZW1zW3RdLm1hdGNoKGUpKXJldHVybiEwO3JldHVybiExfSx0LnByb3RvdHlwZS5zZXRfaW5kZW50PWZ1bmN0aW9uKGUsdCl7dGhpcy5pc19lbXB0eSgpJiYodGhpcy5fX2luZGVudF9jb3VudD1lfHwwLHRoaXMuX19hbGlnbm1lbnRfY291bnQ9dHx8MCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zaXplKHRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2FsaWdubWVudF9jb3VudCkpfSx0LnByb3RvdHlwZS5fc2V0X3dyYXBfcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJih0aGlzLl9fd3JhcF9wb2ludF9pbmRleD10aGlzLl9faXRlbXMubGVuZ3RoLHRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD10aGlzLl9fY2hhcmFjdGVyX2NvdW50LHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2luZGVudF9jb3VudCx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQ9dGhpcy5fX3BhcmVudC5uZXh0X2xpbmUuX19hbGlnbm1lbnRfY291bnQpfSx0LnByb3RvdHlwZS5fc2hvdWxkX3dyYXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgmJnRoaXMuX19jaGFyYWN0ZXJfY291bnQ+dGhpcy5fX3BhcmVudC53cmFwX2xpbmVfbGVuZ3RoJiZ0aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQ+dGhpcy5fX3BhcmVudC5uZXh0X2xpbmUuX19jaGFyYWN0ZXJfY291bnR9LHQucHJvdG90eXBlLl9hbGxvd193cmFwPWZ1bmN0aW9uKCl7aWYodGhpcy5fc2hvdWxkX3dyYXAoKSl7dGhpcy5fX3BhcmVudC5hZGRfbmV3X2xpbmUoKTt2YXIgZT10aGlzLl9fcGFyZW50LmN1cnJlbnRfbGluZTtyZXR1cm4gZS5zZXRfaW5kZW50KHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudCx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQpLGUuX19pdGVtcz10aGlzLl9faXRlbXMuc2xpY2UodGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgpLHRoaXMuX19pdGVtcz10aGlzLl9faXRlbXMuc2xpY2UoMCx0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksZS5fX2NoYXJhY3Rlcl9jb3VudCs9dGhpcy5fX2NoYXJhY3Rlcl9jb3VudC10aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD10aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQsIiAiPT09ZS5fX2l0ZW1zWzBdJiYoZS5fX2l0ZW1zLnNwbGljZSgwLDEpLGUuX19jaGFyYWN0ZXJfY291bnQtPTEpLCEwfXJldHVybiExfSx0LnByb3RvdHlwZS5pc19lbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fX2l0ZW1zLmxlbmd0aH0sdC5wcm90b3R5cGUubGFzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzX2VtcHR5KCk/bnVsbDp0aGlzLl9faXRlbXNbdGhpcy5fX2l0ZW1zLmxlbmd0aC0xXX0sdC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihlKXt0aGlzLl9faXRlbXMucHVzaChlKTt2YXIgdD1lLmxhc3RJbmRleE9mKCJcbiIpOy0xIT09dD90aGlzLl9fY2hhcmFjdGVyX2NvdW50PWUubGVuZ3RoLXQ6dGhpcy5fX2NoYXJhY3Rlcl9jb3VudCs9ZS5sZW5ndGh9LHQucHJvdG90eXBlLnBvcD1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKXx8KGU9dGhpcy5fX2l0ZW1zLnBvcCgpLHRoaXMuX19jaGFyYWN0ZXJfY291bnQtPWUubGVuZ3RoKSxlfSx0LnByb3RvdHlwZS5fcmVtb3ZlX2luZGVudD1mdW5jdGlvbigpe3RoaXMuX19pbmRlbnRfY291bnQ+MCYmKHRoaXMuX19pbmRlbnRfY291bnQtPTEsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09dGhpcy5fX3BhcmVudC5pbmRlbnRfc2l6ZSl9LHQucHJvdG90eXBlLl9yZW1vdmVfd3JhcF9pbmRlbnQ9ZnVuY3Rpb24oKXt0aGlzLl9fd3JhcF9wb2ludF9pbmRlbnRfY291bnQ+MCYmKHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudC09MSl9LHQucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtmb3IoOyIgIj09PXRoaXMubGFzdCgpOyl0aGlzLl9faXRlbXMucG9wKCksdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09MX0sdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT0iIjtyZXR1cm4gdGhpcy5pc19lbXB0eSgpP3RoaXMuX19wYXJlbnQuaW5kZW50X2VtcHR5X2xpbmVzJiYoZT10aGlzLl9fcGFyZW50LmdldF9pbmRlbnRfc3RyaW5nKHRoaXMuX19pbmRlbnRfY291bnQpKTooZT10aGlzLl9fcGFyZW50LmdldF9pbmRlbnRfc3RyaW5nKHRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2FsaWdubWVudF9jb3VudCksZSs9dGhpcy5fX2l0ZW1zLmpvaW4oIiIpKSxlfSxuLnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9fYmFzZV9zdHJpbmdfbGVuZ3RoO3JldHVybiB0PXR8fDAsZTwwJiYobj0wKSxuKz1lKnRoaXMuX19pbmRlbnRfc2l6ZSxuKz10fSxuLnByb3RvdHlwZS5nZXRfaW5kZW50X3N0cmluZz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19iYXNlX3N0cmluZztyZXR1cm4gdD10fHwwLGU8MCYmKGU9MCxuPSIiKSx0Kz1lKnRoaXMuX19pbmRlbnRfc2l6ZSx0aGlzLl9fZW5zdXJlX2NhY2hlKHQpLG4rPXRoaXMuX19jYWNoZVt0XX0sbi5wcm90b3R5cGUuX19lbnN1cmVfY2FjaGU9ZnVuY3Rpb24oZSl7Zm9yKDtlPj10aGlzLl9fY2FjaGUubGVuZ3RoOyl0aGlzLl9fYWRkX2NvbHVtbigpfSxuLnByb3RvdHlwZS5fX2FkZF9jb2x1bW49ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fY2FjaGUubGVuZ3RoLHQ9MCxuPSIiO3RoaXMuX19pbmRlbnRfc2l6ZSYmZT49dGhpcy5fX2luZGVudF9zaXplJiYoZS09KHQ9TWF0aC5mbG9vcihlL3RoaXMuX19pbmRlbnRfc2l6ZSkpKnRoaXMuX19pbmRlbnRfc2l6ZSxuPW5ldyBBcnJheSh0KzEpLmpvaW4odGhpcy5fX2luZGVudF9zdHJpbmcpKSxlJiYobis9bmV3IEFycmF5KGUrMSkuam9pbigiICIpKSx0aGlzLl9fY2FjaGUucHVzaChuKX0saS5wcm90b3R5cGUuX19hZGRfb3V0cHV0bGluZT1mdW5jdGlvbigpe3RoaXMucHJldmlvdXNfbGluZT10aGlzLmN1cnJlbnRfbGluZSx0aGlzLmN1cnJlbnRfbGluZT10aGlzLm5leHRfbGluZS5jbG9uZV9lbXB0eSgpLHRoaXMuX19saW5lcy5wdXNoKHRoaXMuY3VycmVudF9saW5lKX0saS5wcm90b3R5cGUuZ2V0X2xpbmVfbnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19saW5lcy5sZW5ndGh9LGkucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX19pbmRlbnRfY2FjaGUuZ2V0X2luZGVudF9zdHJpbmcoZSx0KX0saS5wcm90b3R5cGUuZ2V0X2luZGVudF9zaXplPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX19pbmRlbnRfY2FjaGUuZ2V0X2luZGVudF9zaXplKGUsdCl9LGkucHJvdG90eXBlLmlzX2VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMucHJldmlvdXNfbGluZSYmdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKX0saS5wcm90b3R5cGUuYWRkX25ld19saW5lPWZ1bmN0aW9uKGUpe3JldHVybiEodGhpcy5pc19lbXB0eSgpfHwhZSYmdGhpcy5qdXN0X2FkZGVkX25ld2xpbmUoKSkmJih0aGlzLnJhd3x8dGhpcy5fX2FkZF9vdXRwdXRsaW5lKCksITApfSxpLnByb3RvdHlwZS5nZXRfY29kZT1mdW5jdGlvbihlKXt0aGlzLnRyaW0oITApO3ZhciB0PXRoaXMuY3VycmVudF9saW5lLnBvcCgpO3QmJigiXG4iPT09dFt0Lmxlbmd0aC0xXSYmKHQ9dC5yZXBsYWNlKC9cbiskL2csIiIpKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKHQpKSx0aGlzLl9lbmRfd2l0aF9uZXdsaW5lJiZ0aGlzLl9fYWRkX291dHB1dGxpbmUoKTt2YXIgbj10aGlzLl9fbGluZXMuam9pbigiXG4iKTtyZXR1cm4iXG4iIT09ZSYmKG49bi5yZXBsYWNlKC9bXG5dL2csZSkpLG59LGkucHJvdG90eXBlLnNldF93cmFwX3BvaW50PWZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50X2xpbmUuX3NldF93cmFwX3BvaW50KCl9LGkucHJvdG90eXBlLnNldF9pbmRlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1lfHwwLHQ9dHx8MCx0aGlzLm5leHRfbGluZS5zZXRfaW5kZW50KGUsdCksdGhpcy5fX2xpbmVzLmxlbmd0aD4xPyh0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KGUsdCksITApOih0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KCksITEpfSxpLnByb3RvdHlwZS5hZGRfcmF3X3Rva2VuPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8ZS5uZXdsaW5lczt0KyspdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCk7dGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudCgtMSksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlLndoaXRlc3BhY2VfYmVmb3JlKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGUudGV4dCksdGhpcy5zcGFjZV9iZWZvcmVfdG9rZW49ITEsdGhpcy5ub25fYnJlYWtpbmdfc3BhY2U9ITEsdGhpcy5wcmV2aW91c190b2tlbl93cmFwcGVkPSExfSxpLnByb3RvdHlwZS5hZGRfdG9rZW49ZnVuY3Rpb24oZSl7dGhpcy5fX2FkZF9zcGFjZV9iZWZvcmVfdG9rZW4oKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGUpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD10aGlzLmN1cnJlbnRfbGluZS5fYWxsb3dfd3JhcCgpfSxpLnByb3RvdHlwZS5fX2FkZF9zcGFjZV9iZWZvcmVfdG9rZW49ZnVuY3Rpb24oKXt0aGlzLnNwYWNlX2JlZm9yZV90b2tlbiYmIXRoaXMuanVzdF9hZGRlZF9uZXdsaW5lKCkmJih0aGlzLm5vbl9icmVha2luZ19zcGFjZXx8dGhpcy5zZXRfd3JhcF9wb2ludCgpLHRoaXMuY3VycmVudF9saW5lLnB1c2goIiAiKSl9LGkucHJvdG90eXBlLnJlbW92ZV9pbmRlbnQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19saW5lcy5sZW5ndGg7ZTx0Oyl0aGlzLl9fbGluZXNbZV0uX3JlbW92ZV9pbmRlbnQoKSxlKys7dGhpcy5jdXJyZW50X2xpbmUuX3JlbW92ZV93cmFwX2luZGVudCgpfSxpLnByb3RvdHlwZS50cmltPWZ1bmN0aW9uKGUpe2ZvcihlPXZvaWQgMCE9PWUmJmUsdGhpcy5jdXJyZW50X2xpbmUudHJpbSgpO2UmJnRoaXMuX19saW5lcy5sZW5ndGg+MSYmdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKTspdGhpcy5fX2xpbmVzLnBvcCgpLHRoaXMuY3VycmVudF9saW5lPXRoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTFdLHRoaXMuY3VycmVudF9saW5lLnRyaW0oKTt0aGlzLnByZXZpb3VzX2xpbmU9dGhpcy5fX2xpbmVzLmxlbmd0aD4xP3RoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTJdOm51bGx9LGkucHJvdG90eXBlLmp1c3RfYWRkZWRfbmV3bGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSxpLnByb3RvdHlwZS5qdXN0X2FkZGVkX2JsYW5rbGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzX2VtcHR5KCl8fHRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCkmJnRoaXMucHJldmlvdXNfbGluZS5pc19lbXB0eSgpfSxpLnByb3RvdHlwZS5lbnN1cmVfZW1wdHlfbGluZV9hYm92ZT1mdW5jdGlvbihlLG4pe2Zvcih2YXIgaT10aGlzLl9fbGluZXMubGVuZ3RoLTI7aT49MDspe3ZhciByPXRoaXMuX19saW5lc1tpXTtpZihyLmlzX2VtcHR5KCkpYnJlYWs7aWYoMCE9PXIuaXRlbSgwKS5pbmRleE9mKGUpJiZyLml0ZW0oLTEpIT09bil7dGhpcy5fX2xpbmVzLnNwbGljZShpKzEsMCxuZXcgdCh0aGlzKSksdGhpcy5wcmV2aW91c19saW5lPXRoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTJdO2JyZWFrfWktLX19LGUuZXhwb3J0cy5PdXRwdXQ9aX0sZnVuY3Rpb24oZSl7ZS5leHBvcnRzLlRva2VuPWZ1bmN0aW9uKGUsdCxuLGkpe3RoaXMudHlwZT1lLHRoaXMudGV4dD10LHRoaXMuY29tbWVudHNfYmVmb3JlPW51bGwsdGhpcy5uZXdsaW5lcz1ufHwwLHRoaXMud2hpdGVzcGFjZV9iZWZvcmU9aXx8IiIsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLm5leHQ9bnVsbCx0aGlzLnByZXZpb3VzPW51bGwsdGhpcy5vcGVuZWQ9bnVsbCx0aGlzLmNsb3NlZD1udWxsLHRoaXMuZGlyZWN0aXZlcz1udWxsfX0sLCxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7dGhpcy5yYXdfb3B0aW9ucz1uKGUsdCksdGhpcy5kaXNhYmxlZD10aGlzLl9nZXRfYm9vbGVhbigiZGlzYWJsZWQiKSx0aGlzLmVvbD10aGlzLl9nZXRfY2hhcmFjdGVycygiZW9sIiwiYXV0byIpLHRoaXMuZW5kX3dpdGhfbmV3bGluZT10aGlzLl9nZXRfYm9vbGVhbigiZW5kX3dpdGhfbmV3bGluZSIpLHRoaXMuaW5kZW50X3NpemU9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X3NpemUiLDQpLHRoaXMuaW5kZW50X2NoYXI9dGhpcy5fZ2V0X2NoYXJhY3RlcnMoImluZGVudF9jaGFyIiwiICIpLHRoaXMuaW5kZW50X2xldmVsPXRoaXMuX2dldF9udW1iZXIoImluZGVudF9sZXZlbCIpLHRoaXMucHJlc2VydmVfbmV3bGluZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oInByZXNlcnZlX25ld2xpbmVzIiwhMCksdGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9dGhpcy5fZ2V0X251bWJlcigibWF4X3ByZXNlcnZlX25ld2xpbmVzIiwzMjc4NiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lc3x8KHRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzPTApLHRoaXMuaW5kZW50X3dpdGhfdGFicz10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X3dpdGhfdGFicyIsIlx0Ij09PXRoaXMuaW5kZW50X2NoYXIpLHRoaXMuaW5kZW50X3dpdGhfdGFicyYmKHRoaXMuaW5kZW50X2NoYXI9Ilx0IiwxPT09dGhpcy5pbmRlbnRfc2l6ZSYmKHRoaXMuaW5kZW50X3NpemU9NCkpLHRoaXMud3JhcF9saW5lX2xlbmd0aD10aGlzLl9nZXRfbnVtYmVyKCJ3cmFwX2xpbmVfbGVuZ3RoIix0aGlzLl9nZXRfbnVtYmVyKCJtYXhfY2hhciIpKSx0aGlzLmluZGVudF9lbXB0eV9saW5lcz10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X2VtcHR5X2xpbmVzIiksdGhpcy50ZW1wbGF0aW5nPXRoaXMuX2dldF9zZWxlY3Rpb25fbGlzdCgidGVtcGxhdGluZyIsWyJhdXRvIiwibm9uZSIsImRqYW5nbyIsImVyYiIsImhhbmRsZWJhcnMiLCJwaHAiLCJzbWFydHkiXSxbImF1dG8iXSl9ZnVuY3Rpb24gbihlLHQpe3ZhciBuLHI9e307Zm9yKG4gaW4gZT1pKGUpKW4hPT10JiYocltuXT1lW25dKTtpZih0JiZlW3RdKWZvcihuIGluIGVbdF0pcltuXT1lW3RdW25dO3JldHVybiByfWZ1bmN0aW9uIGkoZSl7dmFyIHQsbj17fTtmb3IodCBpbiBlKXtuW3QucmVwbGFjZSgvLS9nLCJfIildPWVbdF19cmV0dXJuIG59dC5wcm90b3R5cGUuX2dldF9hcnJheT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucmF3X29wdGlvbnNbZV0saT10fHxbXTtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIG4/bnVsbCE9PW4mJiJmdW5jdGlvbiI9PXR5cGVvZiBuLmNvbmNhdCYmKGk9bi5jb25jYXQoKSk6InN0cmluZyI9PXR5cGVvZiBuJiYoaT1uLnNwbGl0KC9bXmEtekEtWjAtOV9cL1wtXSsvKSksaX0sdC5wcm90b3R5cGUuX2dldF9ib29sZWFuPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXTtyZXR1cm4gdm9pZCAwPT09bj8hIXQ6ISFufSx0LnByb3RvdHlwZS5fZ2V0X2NoYXJhY3RlcnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdLGk9dHx8IiI7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBuJiYoaT1uLnJlcGxhY2UoL1xcci8sIlxyIikucmVwbGFjZSgvXFxuLywiXG4iKS5yZXBsYWNlKC9cXHQvLCJcdCIpKSxpfSx0LnByb3RvdHlwZS5fZ2V0X251bWJlcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucmF3X29wdGlvbnNbZV07dD1wYXJzZUludCh0LDEwKSxpc05hTih0KSYmKHQ9MCk7dmFyIGk9cGFyc2VJbnQobiwxMCk7cmV0dXJuIGlzTmFOKGkpJiYoaT10KSxpfSx0LnByb3RvdHlwZS5fZ2V0X3NlbGVjdGlvbj1mdW5jdGlvbihlLHQsbil7dmFyIGk9dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KGUsdCxuKTtpZigxIT09aS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIE9wdGlvbiBWYWx1ZTogVGhlIG9wdGlvbiAnIitlKyInIGNhbiBvbmx5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiIrdCsiXG5Zb3UgcGFzc2VkIGluOiAnIit0aGlzLnJhd19vcHRpb25zW2VdKyInIik7cmV0dXJuIGlbMF19LHQucHJvdG90eXBlLl9nZXRfc2VsZWN0aW9uX2xpc3Q9ZnVuY3Rpb24oZSx0LG4pe2lmKCF0fHwwPT09dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJTZWxlY3Rpb24gbGlzdCBjYW5ub3QgYmUgZW1wdHkuIik7aWYobj1ufHxbdFswXV0sIXRoaXMuX2lzX3ZhbGlkX3NlbGVjdGlvbihuLHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBEZWZhdWx0IFZhbHVlISIpO3ZhciBpPXRoaXMuX2dldF9hcnJheShlLG4pO2lmKCF0aGlzLl9pc192YWxpZF9zZWxlY3Rpb24oaSx0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgT3B0aW9uIFZhbHVlOiBUaGUgb3B0aW9uICciK2UrIicgY2FuIGNvbnRhaW4gb25seSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiIrdCsiXG5Zb3UgcGFzc2VkIGluOiAnIit0aGlzLnJhd19vcHRpb25zW2VdKyInIik7cmV0dXJuIGl9LHQucHJvdG90eXBlLl9pc192YWxpZF9zZWxlY3Rpb249ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5sZW5ndGgmJnQubGVuZ3RoJiYhZS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4tMT09PXQuaW5kZXhPZihlKX0pKX0sZS5leHBvcnRzLk9wdGlvbnM9dCxlLmV4cG9ydHMubm9ybWFsaXplT3B0cz1pLGUuZXhwb3J0cy5tZXJnZU9wdHM9bn0sLGZ1bmN0aW9uKGUpe3ZhciB0PVJlZ0V4cC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoInN0aWNreSIpO2Z1bmN0aW9uIG4oZSl7dGhpcy5fX2lucHV0PWV8fCIiLHRoaXMuX19pbnB1dF9sZW5ndGg9dGhpcy5fX2lucHV0Lmxlbmd0aCx0aGlzLl9fcG9zaXRpb249MH1uLnByb3RvdHlwZS5yZXN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5fX3Bvc2l0aW9uPTB9LG4ucHJvdG90eXBlLmJhY2s9ZnVuY3Rpb24oKXt0aGlzLl9fcG9zaXRpb24+MCYmKHRoaXMuX19wb3NpdGlvbi09MSl9LG4ucHJvdG90eXBlLmhhc05leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3Bvc2l0aW9uPHRoaXMuX19pbnB1dF9sZW5ndGh9LG4ucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt2YXIgZT1udWxsO3JldHVybiB0aGlzLmhhc05leHQoKSYmKGU9dGhpcy5fX2lucHV0LmNoYXJBdCh0aGlzLl9fcG9zaXRpb24pLHRoaXMuX19wb3NpdGlvbis9MSksZX0sbi5wcm90b3R5cGUucGVlaz1mdW5jdGlvbihlKXt2YXIgdD1udWxsO3JldHVybiBlPWV8fDAsKGUrPXRoaXMuX19wb3NpdGlvbik+PTAmJmU8dGhpcy5fX2lucHV0X2xlbmd0aCYmKHQ9dGhpcy5fX2lucHV0LmNoYXJBdChlKSksdH0sbi5wcm90b3R5cGUuX19tYXRjaD1mdW5jdGlvbihlLG4pe2UubGFzdEluZGV4PW47dmFyIGk9ZS5leGVjKHRoaXMuX19pbnB1dCk7cmV0dXJuIWl8fHQmJmUuc3RpY2t5fHxpLmluZGV4IT09biYmKGk9bnVsbCksaX0sbi5wcm90b3R5cGUudGVzdD1mdW5jdGlvbihlLHQpe3JldHVybiB0PXR8fDAsKHQrPXRoaXMuX19wb3NpdGlvbik+PTAmJnQ8dGhpcy5fX2lucHV0X2xlbmd0aCYmISF0aGlzLl9fbWF0Y2goZSx0KX0sbi5wcm90b3R5cGUudGVzdENoYXI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnBlZWsodCk7cmV0dXJuIGUubGFzdEluZGV4PTAsbnVsbCE9PW4mJmUudGVzdChuKX0sbi5wcm90b3R5cGUubWF0Y2g9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX21hdGNoKGUsdGhpcy5fX3Bvc2l0aW9uKTtyZXR1cm4gdD90aGlzLl9fcG9zaXRpb24rPXRbMF0ubGVuZ3RoOnQ9bnVsbCx0fSxuLnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxyPSIiO3JldHVybiBlJiYoaT10aGlzLm1hdGNoKGUpKSYmKHIrPWlbMF0pLCF0fHwhaSYmZXx8KHIrPXRoaXMucmVhZFVudGlsKHQsbikpLHJ9LG4ucHJvdG90eXBlLnJlYWRVbnRpbD1mdW5jdGlvbihlLHQpe3ZhciBuLGk9dGhpcy5fX3Bvc2l0aW9uO2UubGFzdEluZGV4PXRoaXMuX19wb3NpdGlvbjt2YXIgcj1lLmV4ZWModGhpcy5fX2lucHV0KTtyZXR1cm4gcj8oaT1yLmluZGV4LHQmJihpKz1yWzBdLmxlbmd0aCkpOmk9dGhpcy5fX2lucHV0X2xlbmd0aCxuPXRoaXMuX19pbnB1dC5zdWJzdHJpbmcodGhpcy5fX3Bvc2l0aW9uLGkpLHRoaXMuX19wb3NpdGlvbj1pLG59LG4ucHJvdG90eXBlLnJlYWRVbnRpbEFmdGVyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJlYWRVbnRpbChlLCEwKX0sbi5wcm90b3R5cGUuZ2V0X3JlZ2V4cD1mdW5jdGlvbihlLG4pe3ZhciBpPW51bGwscj0iZyI7cmV0dXJuIG4mJnQmJihyPSJ5IiksInN0cmluZyI9PXR5cGVvZiBlJiYiIiE9PWU/aT1uZXcgUmVnRXhwKGUscik6ZSYmKGk9bmV3IFJlZ0V4cChlLnNvdXJjZSxyKSksaX0sbi5wcm90b3R5cGUuZ2V0X2xpdGVyYWxfcmVnZXhwPWZ1bmN0aW9uKGUpe3JldHVybiBSZWdFeHAoZS5yZXBsYWNlKC9bLVwvXFxeJCorPy4oKXxbXF17fV0vZywiXFwkJiIpKX0sbi5wcm90b3R5cGUucGVla1VudGlsQWZ0ZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX3Bvc2l0aW9uLG49dGhpcy5yZWFkVW50aWxBZnRlcihlKTtyZXR1cm4gdGhpcy5fX3Bvc2l0aW9uPXQsbn0sbi5wcm90b3R5cGUubG9va0JhY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX3Bvc2l0aW9uLTE7cmV0dXJuIHQ+PWUubGVuZ3RoJiZ0aGlzLl9faW5wdXQuc3Vic3RyaW5nKHQtZS5sZW5ndGgsdCkudG9Mb3dlckNhc2UoKT09PWV9LGUuZXhwb3J0cy5JbnB1dFNjYW5uZXI9bn0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpPW4oOCkuSW5wdXRTY2FubmVyLHI9bigzKS5Ub2tlbixhPW4oMTApLlRva2VuU3RyZWFtLG89bigxMSkuV2hpdGVzcGFjZVBhdHRlcm4scz17U1RBUlQ6IlRLX1NUQVJUIixSQVc6IlRLX1JBVyIsRU9GOiJUS19FT0YifSxsPWZ1bmN0aW9uKGUsdCl7dGhpcy5faW5wdXQ9bmV3IGkoZSksdGhpcy5fb3B0aW9ucz10fHx7fSx0aGlzLl9fdG9rZW5zPW51bGwsdGhpcy5fcGF0dGVybnM9e30sdGhpcy5fcGF0dGVybnMud2hpdGVzcGFjZT1uZXcgbyh0aGlzLl9pbnB1dCl9O2wucHJvdG90eXBlLnRva2VuaXplPWZ1bmN0aW9uKCl7dmFyIGU7dGhpcy5faW5wdXQucmVzdGFydCgpLHRoaXMuX190b2tlbnM9bmV3IGEsdGhpcy5fcmVzZXQoKTtmb3IodmFyIHQ9bmV3IHIocy5TVEFSVCwiIiksbj1udWxsLGk9W10sbz1uZXcgYTt0LnR5cGUhPT1zLkVPRjspe2ZvcihlPXRoaXMuX2dldF9uZXh0X3Rva2VuKHQsbik7dGhpcy5faXNfY29tbWVudChlKTspby5hZGQoZSksZT10aGlzLl9nZXRfbmV4dF90b2tlbih0LG4pO28uaXNFbXB0eSgpfHwoZS5jb21tZW50c19iZWZvcmU9byxvPW5ldyBhKSxlLnBhcmVudD1uLHRoaXMuX2lzX29wZW5pbmcoZSk/KGkucHVzaChuKSxuPWUpOm4mJnRoaXMuX2lzX2Nsb3NpbmcoZSxuKSYmKGUub3BlbmVkPW4sbi5jbG9zZWQ9ZSxuPWkucG9wKCksZS5wYXJlbnQ9biksZS5wcmV2aW91cz10LHQubmV4dD1lLHRoaXMuX190b2tlbnMuYWRkKGUpLHQ9ZX1yZXR1cm4gdGhpcy5fX3Rva2Vuc30sbC5wcm90b3R5cGUuX2lzX2ZpcnN0X3Rva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX190b2tlbnMuaXNFbXB0eSgpfSxsLnByb3RvdHlwZS5fcmVzZXQ9ZnVuY3Rpb24oKXt9LGwucHJvdG90eXBlLl9nZXRfbmV4dF90b2tlbj1mdW5jdGlvbihlLHQpe3RoaXMuX3JlYWRXaGl0ZXNwYWNlKCk7dmFyIG49dGhpcy5faW5wdXQucmVhZCgvLisvZyk7cmV0dXJuIG4/dGhpcy5fY3JlYXRlX3Rva2VuKHMuUkFXLG4pOnRoaXMuX2NyZWF0ZV90b2tlbihzLkVPRiwiIil9LGwucHJvdG90eXBlLl9pc19jb21tZW50PWZ1bmN0aW9uKGUpe3JldHVybiExfSxsLnByb3RvdHlwZS5faXNfb3BlbmluZz1mdW5jdGlvbihlKXtyZXR1cm4hMX0sbC5wcm90b3R5cGUuX2lzX2Nsb3Npbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hMX0sbC5wcm90b3R5cGUuX2NyZWF0ZV90b2tlbj1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgcihlLHQsdGhpcy5fcGF0dGVybnMud2hpdGVzcGFjZS5uZXdsaW5lX2NvdW50LHRoaXMuX3BhdHRlcm5zLndoaXRlc3BhY2Uud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW4pfSxsLnByb3RvdHlwZS5fcmVhZFdoaXRlc3BhY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGF0dGVybnMud2hpdGVzcGFjZS5yZWFkKCl9LGUuZXhwb3J0cy5Ub2tlbml6ZXI9bCxlLmV4cG9ydHMuVE9LRU49c30sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLl9fdG9rZW5zPVtdLHRoaXMuX190b2tlbnNfbGVuZ3RoPXRoaXMuX190b2tlbnMubGVuZ3RoLHRoaXMuX19wb3NpdGlvbj0wLHRoaXMuX19wYXJlbnRfdG9rZW49ZX10LnByb3RvdHlwZS5yZXN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5fX3Bvc2l0aW9uPTB9LHQucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuX190b2tlbnNfbGVuZ3RofSx0LnByb3RvdHlwZS5oYXNOZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19wb3NpdGlvbjx0aGlzLl9fdG9rZW5zX2xlbmd0aH0sdC5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIHRoaXMuaGFzTmV4dCgpJiYoZT10aGlzLl9fdG9rZW5zW3RoaXMuX19wb3NpdGlvbl0sdGhpcy5fX3Bvc2l0aW9uKz0xKSxlfSx0LnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7cmV0dXJuIGU9ZXx8MCwoZSs9dGhpcy5fX3Bvc2l0aW9uKT49MCYmZTx0aGlzLl9fdG9rZW5zX2xlbmd0aCYmKHQ9dGhpcy5fX3Rva2Vuc1tlXSksdH0sdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMuX19wYXJlbnRfdG9rZW4mJihlLnBhcmVudD10aGlzLl9fcGFyZW50X3Rva2VuKSx0aGlzLl9fdG9rZW5zLnB1c2goZSksdGhpcy5fX3Rva2Vuc19sZW5ndGgrPTF9LGUuZXhwb3J0cy5Ub2tlblN0cmVhbT10fSxmdW5jdGlvbihlLHQsbil7dmFyIGk9bigxMikuUGF0dGVybjtmdW5jdGlvbiByKGUsdCl7aS5jYWxsKHRoaXMsZSx0KSx0P3RoaXMuX2xpbmVfcmVnZXhwPXRoaXMuX2lucHV0LmdldF9yZWdleHAodC5fbGluZV9yZWdleHApOnRoaXMuX19zZXRfd2hpdGVzcGFjZV9wYXR0ZXJucygiIiwiIiksdGhpcy5uZXdsaW5lX2NvdW50PTAsdGhpcy53aGl0ZXNwYWNlX2JlZm9yZV90b2tlbj0iIn1yLnByb3RvdHlwZT1uZXcgaSxyLnByb3RvdHlwZS5fX3NldF93aGl0ZXNwYWNlX3BhdHRlcm5zPWZ1bmN0aW9uKGUsdCl7ZSs9IlxcdCAiLHQrPSJcXG5cXHIiLHRoaXMuX21hdGNoX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCgiWyIrZSt0KyJdKyIsITApLHRoaXMuX25ld2xpbmVfcmVnZXhwPXRoaXMuX2lucHV0LmdldF9yZWdleHAoIlxcclxcbnxbIit0KyJdIil9LHIucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oKXt0aGlzLm5ld2xpbmVfY291bnQ9MCx0aGlzLndoaXRlc3BhY2VfYmVmb3JlX3Rva2VuPSIiO3ZhciBlPXRoaXMuX2lucHV0LnJlYWQodGhpcy5fbWF0Y2hfcGF0dGVybik7aWYoIiAiPT09ZSl0aGlzLndoaXRlc3BhY2VfYmVmb3JlX3Rva2VuPSIgIjtlbHNlIGlmKGUpe3ZhciB0PXRoaXMuX19zcGxpdCh0aGlzLl9uZXdsaW5lX3JlZ2V4cCxlKTt0aGlzLm5ld2xpbmVfY291bnQ9dC5sZW5ndGgtMSx0aGlzLndoaXRlc3BhY2VfYmVmb3JlX3Rva2VuPXRbdGhpcy5uZXdsaW5lX2NvdW50XX1yZXR1cm4gZX0sci5wcm90b3R5cGUubWF0Y2hpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9jcmVhdGUoKTtyZXR1cm4gbi5fX3NldF93aGl0ZXNwYWNlX3BhdHRlcm5zKGUsdCksbi5fdXBkYXRlKCksbn0sci5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgcih0aGlzLl9pbnB1dCx0aGlzKX0sci5wcm90b3R5cGUuX19zcGxpdD1mdW5jdGlvbihlLHQpe2UubGFzdEluZGV4PTA7Zm9yKHZhciBuPTAsaT1bXSxyPWUuZXhlYyh0KTtyOylpLnB1c2godC5zdWJzdHJpbmcobixyLmluZGV4KSksbj1yLmluZGV4K3JbMF0ubGVuZ3RoLHI9ZS5leGVjKHQpO3JldHVybiBuPHQubGVuZ3RoP2kucHVzaCh0LnN1YnN0cmluZyhuLHQubGVuZ3RoKSk6aS5wdXNoKCIiKSxpfSxlLmV4cG9ydHMuV2hpdGVzcGFjZVBhdHRlcm49cn0sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQpe3RoaXMuX2lucHV0PWUsdGhpcy5fc3RhcnRpbmdfcGF0dGVybj1udWxsLHRoaXMuX21hdGNoX3BhdHRlcm49bnVsbCx0aGlzLl91bnRpbF9wYXR0ZXJuPW51bGwsdGhpcy5fdW50aWxfYWZ0ZXI9ITEsdCYmKHRoaXMuX3N0YXJ0aW5nX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCh0Ll9zdGFydGluZ19wYXR0ZXJuLCEwKSx0aGlzLl9tYXRjaF9wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAodC5fbWF0Y2hfcGF0dGVybiwhMCksdGhpcy5fdW50aWxfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKHQuX3VudGlsX3BhdHRlcm4pLHRoaXMuX3VudGlsX2FmdGVyPXQuX3VudGlsX2FmdGVyKX10LnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5faW5wdXQucmVhZCh0aGlzLl9zdGFydGluZ19wYXR0ZXJuKTtyZXR1cm4gdGhpcy5fc3RhcnRpbmdfcGF0dGVybiYmIWV8fChlKz10aGlzLl9pbnB1dC5yZWFkKHRoaXMuX21hdGNoX3BhdHRlcm4sdGhpcy5fdW50aWxfcGF0dGVybix0aGlzLl91bnRpbF9hZnRlcikpLGV9LHQucHJvdG90eXBlLnJlYWRfbWF0Y2g9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW5wdXQubWF0Y2godGhpcy5fbWF0Y2hfcGF0dGVybil9LHQucHJvdG90eXBlLnVudGlsX2FmdGVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2NyZWF0ZSgpO3JldHVybiB0Ll91bnRpbF9hZnRlcj0hMCx0Ll91bnRpbF9wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAoZSksdC5fdXBkYXRlKCksdH0sdC5wcm90b3R5cGUudW50aWw9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX3VudGlsX2FmdGVyPSExLHQuX3VudGlsX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cChlKSx0Ll91cGRhdGUoKSx0fSx0LnByb3RvdHlwZS5zdGFydGluZ193aXRoPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2NyZWF0ZSgpO3JldHVybiB0Ll9zdGFydGluZ19wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAoZSwhMCksdC5fdXBkYXRlKCksdH0sdC5wcm90b3R5cGUubWF0Y2hpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX21hdGNoX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cChlLCEwKSx0Ll91cGRhdGUoKSx0fSx0LnByb3RvdHlwZS5fY3JlYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0KHRoaXMuX2lucHV0LHRoaXMpfSx0LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7fSxlLmV4cG9ydHMuUGF0dGVybj10fSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTplLnNvdXJjZSx0PSJzdHJpbmciPT10eXBlb2YgdD90OnQuc291cmNlLHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm49bmV3IFJlZ0V4cChlKy8gYmVhdXRpZnkoIFx3K1s6XVx3KykrIC8uc291cmNlK3QsImciKSx0aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm49LyAoXHcrKVs6XShcdyspL2csdGhpcy5fX2RpcmVjdGl2ZXNfZW5kX2lnbm9yZV9wYXR0ZXJuPW5ldyBSZWdFeHAoZSsvXHNiZWF1dGlmeVxzaWdub3JlOmVuZFxzLy5zb3VyY2UrdCwiZyIpfXQucHJvdG90eXBlLmdldF9kaXJlY3RpdmVzPWZ1bmN0aW9uKGUpe2lmKCFlLm1hdGNoKHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm4pKXJldHVybiBudWxsO3ZhciB0PXt9O3RoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5sYXN0SW5kZXg9MDtmb3IodmFyIG49dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoZSk7bjspdFtuWzFdXT1uWzJdLG49dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoZSk7cmV0dXJuIHR9LHQucHJvdG90eXBlLnJlYWRJZ25vcmVkPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlYWRVbnRpbEFmdGVyKHRoaXMuX19kaXJlY3RpdmVzX2VuZF9pZ25vcmVfcGF0dGVybil9LGUuZXhwb3J0cy5EaXJlY3RpdmVzPXR9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1uKDEyKS5QYXR0ZXJuLHI9e2RqYW5nbzohMSxlcmI6ITEsaGFuZGxlYmFyczohMSxwaHA6ITEsc21hcnR5OiExfTtmdW5jdGlvbiBhKGUsdCl7aS5jYWxsKHRoaXMsZSx0KSx0aGlzLl9fdGVtcGxhdGVfcGF0dGVybj1udWxsLHRoaXMuX2Rpc2FibGVkPU9iamVjdC5hc3NpZ24oe30sciksdGhpcy5fZXhjbHVkZWQ9T2JqZWN0LmFzc2lnbih7fSxyKSx0JiYodGhpcy5fX3RlbXBsYXRlX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCh0Ll9fdGVtcGxhdGVfcGF0dGVybiksdGhpcy5fZXhjbHVkZWQ9T2JqZWN0LmFzc2lnbih0aGlzLl9leGNsdWRlZCx0Ll9leGNsdWRlZCksdGhpcy5fZGlzYWJsZWQ9T2JqZWN0LmFzc2lnbih0aGlzLl9kaXNhYmxlZCx0Ll9kaXNhYmxlZCkpO3ZhciBuPW5ldyBpKGUpO3RoaXMuX19wYXR0ZXJucz17aGFuZGxlYmFyc19jb21tZW50Om4uc3RhcnRpbmdfd2l0aCgve3shLS0vKS51bnRpbF9hZnRlcigvLS19fS8pLGhhbmRsZWJhcnNfdW5lc2NhcGVkOm4uc3RhcnRpbmdfd2l0aCgve3t7LykudW50aWxfYWZ0ZXIoL319fS8pLGhhbmRsZWJhcnM6bi5zdGFydGluZ193aXRoKC97ey8pLnVudGlsX2FmdGVyKC99fS8pLHBocDpuLnN0YXJ0aW5nX3dpdGgoLzxcPyg/Ols9IF18cGhwKS8pLnVudGlsX2FmdGVyKC9cPz4vKSxlcmI6bi5zdGFydGluZ193aXRoKC88JVteJV0vKS51bnRpbF9hZnRlcigvW14lXSU+LyksZGphbmdvOm4uc3RhcnRpbmdfd2l0aCgveyUvKS51bnRpbF9hZnRlcigvJX0vKSxkamFuZ29fdmFsdWU6bi5zdGFydGluZ193aXRoKC97ey8pLnVudGlsX2FmdGVyKC99fS8pLGRqYW5nb19jb21tZW50Om4uc3RhcnRpbmdfd2l0aCgveyMvKS51bnRpbF9hZnRlcigvI30vKSxzbWFydHk6bi5zdGFydGluZ193aXRoKC97KD89W159e1xzXG5dKS8pLnVudGlsX2FmdGVyKC9bXlxzXG5dfS8pLHNtYXJ0eV9jb21tZW50Om4uc3RhcnRpbmdfd2l0aCgve1wqLykudW50aWxfYWZ0ZXIoL1wqfS8pLHNtYXJ0eV9saXRlcmFsOm4uc3RhcnRpbmdfd2l0aCgve2xpdGVyYWx9LykudW50aWxfYWZ0ZXIoL3tcL2xpdGVyYWx9Lyl9fWEucHJvdG90eXBlPW5ldyBpLGEucHJvdG90eXBlLl9jcmVhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEodGhpcy5faW5wdXQsdGhpcyl9LGEucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt0aGlzLl9fc2V0X3RlbXBsYXRlZF9wYXR0ZXJuKCl9LGEucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX2Rpc2FibGVkW2VdPSEwLHQuX3VwZGF0ZSgpLHR9LGEucHJvdG90eXBlLnJlYWRfb3B0aW9ucz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtmb3IodmFyIG4gaW4gcil0Ll9kaXNhYmxlZFtuXT0tMT09PWUudGVtcGxhdGluZy5pbmRleE9mKG4pO3JldHVybiB0Ll91cGRhdGUoKSx0fSxhLnByb3RvdHlwZS5leGNsdWRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2NyZWF0ZSgpO3JldHVybiB0Ll9leGNsdWRlZFtlXT0hMCx0Ll91cGRhdGUoKSx0fSxhLnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKCl7dmFyIGU9IiI7ZT10aGlzLl9tYXRjaF9wYXR0ZXJuP3RoaXMuX2lucHV0LnJlYWQodGhpcy5fc3RhcnRpbmdfcGF0dGVybik6dGhpcy5faW5wdXQucmVhZCh0aGlzLl9zdGFydGluZ19wYXR0ZXJuLHRoaXMuX190ZW1wbGF0ZV9wYXR0ZXJuKTtmb3IodmFyIHQ9dGhpcy5fcmVhZF90ZW1wbGF0ZSgpO3Q7KXRoaXMuX21hdGNoX3BhdHRlcm4/dCs9dGhpcy5faW5wdXQucmVhZCh0aGlzLl9tYXRjaF9wYXR0ZXJuKTp0Kz10aGlzLl9pbnB1dC5yZWFkVW50aWwodGhpcy5fX3RlbXBsYXRlX3BhdHRlcm4pLGUrPXQsdD10aGlzLl9yZWFkX3RlbXBsYXRlKCk7cmV0dXJuIHRoaXMuX3VudGlsX2FmdGVyJiYoZSs9dGhpcy5faW5wdXQucmVhZFVudGlsQWZ0ZXIodGhpcy5fdW50aWxfcGF0dGVybikpLGV9LGEucHJvdG90eXBlLl9fc2V0X3RlbXBsYXRlZF9wYXR0ZXJuPWZ1bmN0aW9uKCl7dmFyIGU9W107dGhpcy5fZGlzYWJsZWQucGhwfHxlLnB1c2godGhpcy5fX3BhdHRlcm5zLnBocC5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpLHRoaXMuX2Rpc2FibGVkLmhhbmRsZWJhcnN8fGUucHVzaCh0aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFycy5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpLHRoaXMuX2Rpc2FibGVkLmVyYnx8ZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5lcmIuX3N0YXJ0aW5nX3BhdHRlcm4uc291cmNlKSx0aGlzLl9kaXNhYmxlZC5kamFuZ298fChlLnB1c2godGhpcy5fX3BhdHRlcm5zLmRqYW5nby5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpLGUucHVzaCh0aGlzLl9fcGF0dGVybnMuZGphbmdvX3ZhbHVlLl9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5kamFuZ29fY29tbWVudC5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpKSx0aGlzLl9kaXNhYmxlZC5zbWFydHl8fGUucHVzaCh0aGlzLl9fcGF0dGVybnMuc21hcnR5Ll9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksdGhpcy5fdW50aWxfcGF0dGVybiYmZS5wdXNoKHRoaXMuX3VudGlsX3BhdHRlcm4uc291cmNlKSx0aGlzLl9fdGVtcGxhdGVfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKCIoPzoiK2Uuam9pbigifCIpKyIpIil9LGEucHJvdG90eXBlLl9yZWFkX3RlbXBsYXRlPWZ1bmN0aW9uKCl7dmFyIGU9IiIsdD10aGlzLl9pbnB1dC5wZWVrKCk7aWYoIjwiPT09dCl7dmFyIG49dGhpcy5faW5wdXQucGVlaygxKTt0aGlzLl9kaXNhYmxlZC5waHB8fHRoaXMuX2V4Y2x1ZGVkLnBocHx8Ij8iIT09bnx8KGU9ZXx8dGhpcy5fX3BhdHRlcm5zLnBocC5yZWFkKCkpLHRoaXMuX2Rpc2FibGVkLmVyYnx8dGhpcy5fZXhjbHVkZWQuZXJifHwiJSIhPT1ufHwoZT1lfHx0aGlzLl9fcGF0dGVybnMuZXJiLnJlYWQoKSl9ZWxzZSJ7Ij09PXQmJih0aGlzLl9kaXNhYmxlZC5oYW5kbGViYXJzfHx0aGlzLl9leGNsdWRlZC5oYW5kbGViYXJzfHwoZT0oZT0oZT1lfHx0aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFyc19jb21tZW50LnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzX3VuZXNjYXBlZC5yZWFkKCkpfHx0aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFycy5yZWFkKCkpLHRoaXMuX2Rpc2FibGVkLmRqYW5nb3x8KHRoaXMuX2V4Y2x1ZGVkLmRqYW5nb3x8dGhpcy5fZXhjbHVkZWQuaGFuZGxlYmFyc3x8KGU9ZXx8dGhpcy5fX3BhdHRlcm5zLmRqYW5nb192YWx1ZS5yZWFkKCkpLHRoaXMuX2V4Y2x1ZGVkLmRqYW5nb3x8KGU9KGU9ZXx8dGhpcy5fX3BhdHRlcm5zLmRqYW5nb19jb21tZW50LnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5kamFuZ28ucmVhZCgpKSksdGhpcy5fZGlzYWJsZWQuc21hcnR5fHx0aGlzLl9kaXNhYmxlZC5kamFuZ28mJnRoaXMuX2Rpc2FibGVkLmhhbmRsZWJhcnMmJihlPShlPShlPWV8fHRoaXMuX19wYXR0ZXJucy5zbWFydHlfY29tbWVudC5yZWFkKCkpfHx0aGlzLl9fcGF0dGVybnMuc21hcnR5X2xpdGVyYWwucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLnNtYXJ0eS5yZWFkKCkpKTtyZXR1cm4gZX0sZS5leHBvcnRzLlRlbXBsYXRhYmxlUGF0dGVybj1hfSwsLCxmdW5jdGlvbihlLHQsbil7dmFyIGk9bigxOSkuQmVhdXRpZmllcixyPW4oMjApLk9wdGlvbnM7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcgaShlLHQsbixyKS5iZWF1dGlmeSgpfSxlLmV4cG9ydHMuZGVmYXVsdE9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHJ9fSxmdW5jdGlvbihlLHQsbil7dmFyIGk9bigyMCkuT3B0aW9ucyxyPW4oMikuT3V0cHV0LGE9bigyMSkuVG9rZW5pemVyLG89bigyMSkuVE9LRU4scz0vXHJcbnxbXHJcbl0vLGw9L1xyXG58W1xyXG5dL2csYz1mdW5jdGlvbihlLHQpe3RoaXMuaW5kZW50X2xldmVsPTAsdGhpcy5hbGlnbm1lbnRfc2l6ZT0wLHRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzPWUubWF4X3ByZXNlcnZlX25ld2xpbmVzLHRoaXMucHJlc2VydmVfbmV3bGluZXM9ZS5wcmVzZXJ2ZV9uZXdsaW5lcyx0aGlzLl9vdXRwdXQ9bmV3IHIoZSx0KX07Yy5wcm90b3R5cGUuY3VycmVudF9saW5lX2hhc19tYXRjaD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fb3V0cHV0LmN1cnJlbnRfbGluZS5oYXNfbWF0Y2goZSl9LGMucHJvdG90eXBlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW49ZnVuY3Rpb24oZSx0KXt0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPWUsdGhpcy5fb3V0cHV0Lm5vbl9icmVha2luZ19zcGFjZT10fSxjLnByb3RvdHlwZS5zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX291dHB1dC5zZXRfaW5kZW50KHRoaXMuaW5kZW50X2xldmVsLHRoaXMuYWxpZ25tZW50X3NpemUpLHRoaXMuX291dHB1dC5zZXRfd3JhcF9wb2ludCgpfSxjLnByb3RvdHlwZS5hZGRfcmF3X3Rva2VuPWZ1bmN0aW9uKGUpe3RoaXMuX291dHB1dC5hZGRfcmF3X3Rva2VuKGUpfSxjLnByb3RvdHlwZS5wcmludF9wcmVzZXJ2ZWRfbmV3bGluZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9MDtlLnR5cGUhPT1vLlRFWFQmJmUucHJldmlvdXMudHlwZSE9PW8uVEVYVCYmKHQ9ZS5uZXdsaW5lcz8xOjApLHRoaXMucHJlc2VydmVfbmV3bGluZXMmJih0PWUubmV3bGluZXM8dGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXMrMT9lLm5ld2xpbmVzOnRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzKzEpO2Zvcih2YXIgbj0wO248dDtuKyspdGhpcy5wcmludF9uZXdsaW5lKG4+MCk7cmV0dXJuIDAhPT10fSxjLnByb3RvdHlwZS50cmF2ZXJzZV93aGl0ZXNwYWNlPWZ1bmN0aW9uKGUpe3JldHVybiEoIWUud2hpdGVzcGFjZV9iZWZvcmUmJiFlLm5ld2xpbmVzKSYmKHRoaXMucHJpbnRfcHJlc2VydmVkX25ld2xpbmVzKGUpfHwodGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCksITApfSxjLnByb3RvdHlwZS5wcmV2aW91c190b2tlbl93cmFwcGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX291dHB1dC5wcmV2aW91c190b2tlbl93cmFwcGVkfSxjLnByb3RvdHlwZS5wcmludF9uZXdsaW5lPWZ1bmN0aW9uKGUpe3RoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoZSl9LGMucHJvdG90eXBlLnByaW50X3Rva2VuPWZ1bmN0aW9uKGUpe2UudGV4dCYmKHRoaXMuX291dHB1dC5zZXRfaW5kZW50KHRoaXMuaW5kZW50X2xldmVsLHRoaXMuYWxpZ25tZW50X3NpemUpLHRoaXMuX291dHB1dC5hZGRfdG9rZW4oZS50ZXh0KSl9LGMucHJvdG90eXBlLmluZGVudD1mdW5jdGlvbigpe3RoaXMuaW5kZW50X2xldmVsKyt9LGMucHJvdG90eXBlLmdldF9mdWxsX2luZGVudD1mdW5jdGlvbihlKXtyZXR1cm4oZT10aGlzLmluZGVudF9sZXZlbCsoZXx8MCkpPDE/IiI6dGhpcy5fb3V0cHV0LmdldF9pbmRlbnRfc3RyaW5nKGUpfTt2YXIgaD1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGwsaT1udWxsO3JldHVybiB0LmNsb3NlZD8oInNjcmlwdCI9PT1lP249InRleHQvamF2YXNjcmlwdCI6InN0eWxlIj09PWUmJihuPSJ0ZXh0L2NzcyIpLG49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW51bGwsbj1lLm5leHQ7bi50eXBlIT09by5FT0YmJmUuY2xvc2VkIT09bjspe2lmKG4udHlwZT09PW8uQVRUUklCVVRFJiYidHlwZSI9PT1uLnRleHQpe24ubmV4dCYmbi5uZXh0LnR5cGU9PT1vLkVRVUFMUyYmbi5uZXh0Lm5leHQmJm4ubmV4dC5uZXh0LnR5cGU9PT1vLlZBTFVFJiYodD1uLm5leHQubmV4dC50ZXh0KTticmVha31uPW4ubmV4dH1yZXR1cm4gdH0odCl8fG4sbi5zZWFyY2goInRleHQvY3NzIik+LTE/aT0iY3NzIjpuLnNlYXJjaCgvbW9kdWxlfCgodGV4dHxhcHBsaWNhdGlvbnxkb2pvKVwvKHgtKT8oamF2YXNjcmlwdHxlY21hc2NyaXB0fGpzY3JpcHR8bGl2ZXNjcmlwdHwobGRcKyk/anNvbnxtZXRob2R8YXNwZWN0KSkvKT4tMT9pPSJqYXZhc2NyaXB0IjpuLnNlYXJjaCgvKHRleHR8YXBwbGljYXRpb258ZG9qbylcLyh4LSk/KGh0bWwpLyk+LTE/aT0iaHRtbCI6bi5zZWFyY2goL3Rlc3RcL251bGwvKT4tMSYmKGk9Im51bGwiKSxpKTpudWxsfTtmdW5jdGlvbiBkKGUsdCl7cmV0dXJuLTEhPT10LmluZGV4T2YoZSl9ZnVuY3Rpb24gdShlLHQsbil7dGhpcy5wYXJlbnQ9ZXx8bnVsbCx0aGlzLnRhZz10P3QudGFnX25hbWU6IiIsdGhpcy5pbmRlbnRfbGV2ZWw9bnx8MCx0aGlzLnBhcnNlcl90b2tlbj10fHxudWxsfWZ1bmN0aW9uIG0oZSl7dGhpcy5fcHJpbnRlcj1lLHRoaXMuX2N1cnJlbnRfZnJhbWU9bnVsbH1mdW5jdGlvbiBwKGUsdCxuLHIpe3RoaXMuX3NvdXJjZV90ZXh0PWV8fCIiLHQ9dHx8e30sdGhpcy5fanNfYmVhdXRpZnk9bix0aGlzLl9jc3NfYmVhdXRpZnk9cix0aGlzLl90YWdfc3RhY2s9bnVsbDt2YXIgYT1uZXcgaSh0LCJodG1sIik7dGhpcy5fb3B0aW9ucz1hLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZT0iZm9yY2UiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMuc3Vic3RyKDAsNSksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2V4cGFuZF9tdWx0aWxpbmU9ImZvcmNlLWV4cGFuZC1tdWx0aWxpbmUiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2FsaWduZWQ9ImZvcmNlLWFsaWduZWQiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2FsaWduZWRfbXVsdGlwbGU9ImFsaWduZWQtbXVsdGlwbGUiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlPSJwcmVzZXJ2ZSI9PT10aGlzLl9vcHRpb25zLndyYXBfYXR0cmlidXRlcy5zdWJzdHIoMCw4KSx0aGlzLl9pc193cmFwX2F0dHJpYnV0ZXNfcHJlc2VydmVfYWxpZ25lZD0icHJlc2VydmUtYWxpZ25lZCI9PT10aGlzLl9vcHRpb25zLndyYXBfYXR0cmlidXRlc31tLnByb3RvdHlwZS5nZXRfcGFyc2VyX3Rva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRfZnJhbWU/dGhpcy5fY3VycmVudF9mcmFtZS5wYXJzZXJfdG9rZW46bnVsbH0sbS5wcm90b3R5cGUucmVjb3JkX3RhZz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgdSh0aGlzLl9jdXJyZW50X2ZyYW1lLGUsdGhpcy5fcHJpbnRlci5pbmRlbnRfbGV2ZWwpO3RoaXMuX2N1cnJlbnRfZnJhbWU9dH0sbS5wcm90b3R5cGUuX3RyeV9wb3BfZnJhbWU9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZSYmKHQ9ZS5wYXJzZXJfdG9rZW4sdGhpcy5fcHJpbnRlci5pbmRlbnRfbGV2ZWw9ZS5pbmRlbnRfbGV2ZWwsdGhpcy5fY3VycmVudF9mcmFtZT1lLnBhcmVudCksdH0sbS5wcm90b3R5cGUuX2dldF9mcmFtZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10aGlzLl9jdXJyZW50X2ZyYW1lO24mJi0xPT09ZS5pbmRleE9mKG4udGFnKTspe2lmKHQmJi0xIT09dC5pbmRleE9mKG4udGFnKSl7bj1udWxsO2JyZWFrfW49bi5wYXJlbnR9cmV0dXJuIG59LG0ucHJvdG90eXBlLnRyeV9wb3A9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9nZXRfZnJhbWUoW2VdLHQpO3JldHVybiB0aGlzLl90cnlfcG9wX2ZyYW1lKG4pfSxtLnByb3RvdHlwZS5pbmRlbnRfdG9fdGFnPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2dldF9mcmFtZShlKTt0JiYodGhpcy5fcHJpbnRlci5pbmRlbnRfbGV2ZWw9dC5pbmRlbnRfbGV2ZWwpfSxwLnByb3RvdHlwZS5iZWF1dGlmeT1mdW5jdGlvbigpe2lmKHRoaXMuX29wdGlvbnMuZGlzYWJsZWQpcmV0dXJuIHRoaXMuX3NvdXJjZV90ZXh0O3ZhciBlPXRoaXMuX3NvdXJjZV90ZXh0LHQ9dGhpcy5fb3B0aW9ucy5lb2w7ImF1dG8iPT09dGhpcy5fb3B0aW9ucy5lb2wmJih0PSJcbiIsZSYmcy50ZXN0KGUpJiYodD1lLm1hdGNoKHMpWzBdKSk7dmFyIG49KGU9ZS5yZXBsYWNlKGwsIlxuIikpLm1hdGNoKC9eW1x0IF0qLylbMF0saT17dGV4dDoiIix0eXBlOiIifSxyPW5ldyBmLGg9bmV3IGModGhpcy5fb3B0aW9ucyxuKSxkPW5ldyBhKGUsdGhpcy5fb3B0aW9ucykudG9rZW5pemUoKTt0aGlzLl90YWdfc3RhY2s9bmV3IG0oaCk7Zm9yKHZhciB1PW51bGwscD1kLm5leHQoKTtwLnR5cGUhPT1vLkVPRjspcC50eXBlPT09by5UQUdfT1BFTnx8cC50eXBlPT09by5DT01NRU5UP3I9dT10aGlzLl9oYW5kbGVfdGFnX29wZW4oaCxwLHIsaSk6cC50eXBlPT09by5BVFRSSUJVVEV8fHAudHlwZT09PW8uRVFVQUxTfHxwLnR5cGU9PT1vLlZBTFVFfHxwLnR5cGU9PT1vLlRFWFQmJiFyLnRhZ19jb21wbGV0ZT91PXRoaXMuX2hhbmRsZV9pbnNpZGVfdGFnKGgscCxyLGQpOnAudHlwZT09PW8uVEFHX0NMT1NFP3U9dGhpcy5faGFuZGxlX3RhZ19jbG9zZShoLHAscik6cC50eXBlPT09by5URVhUP3U9dGhpcy5faGFuZGxlX3RleHQoaCxwLHIpOmguYWRkX3Jhd190b2tlbihwKSxpPXUscD1kLm5leHQoKTtyZXR1cm4gaC5fb3V0cHV0LmdldF9jb2RlKHQpfSxwLnByb3RvdHlwZS5faGFuZGxlX3RhZ19jbG9zZT1mdW5jdGlvbihlLHQsbil7dmFyIGk9e3RleHQ6dC50ZXh0LHR5cGU6dC50eXBlfTtyZXR1cm4gZS5hbGlnbm1lbnRfc2l6ZT0wLG4udGFnX2NvbXBsZXRlPSEwLGUuc2V0X3NwYWNlX2JlZm9yZV90b2tlbih0Lm5ld2xpbmVzfHwiIiE9PXQud2hpdGVzcGFjZV9iZWZvcmUsITApLG4uaXNfdW5mb3JtYXR0ZWQ/ZS5hZGRfcmF3X3Rva2VuKHQpOigiPCI9PT1uLnRhZ19zdGFydF9jaGFyJiYoZS5zZXRfc3BhY2VfYmVmb3JlX3Rva2VuKCIvIj09PXQudGV4dFswXSwhMCksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2V4cGFuZF9tdWx0aWxpbmUmJm4uaGFzX3dyYXBwZWRfYXR0cnMmJmUucHJpbnRfbmV3bGluZSghMSkpLGUucHJpbnRfdG9rZW4odCkpLCFuLmluZGVudF9jb250ZW50fHxuLmlzX3VuZm9ybWF0dGVkfHxuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fChlLmluZGVudCgpLG4uaW5kZW50X2NvbnRlbnQ9ITEpLG4uaXNfaW5saW5lX2VsZW1lbnR8fG4uaXNfdW5mb3JtYXR0ZWR8fG4uaXNfY29udGVudF91bmZvcm1hdHRlZHx8ZS5zZXRfd3JhcF9wb2ludCgpLGl9LHAucHJvdG90eXBlLl9oYW5kbGVfaW5zaWRlX3RhZz1mdW5jdGlvbihlLHQsbixpKXt2YXIgcj1uLmhhc193cmFwcGVkX2F0dHJzLGE9e3RleHQ6dC50ZXh0LHR5cGU6dC50eXBlfTtpZihlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW4odC5uZXdsaW5lc3x8IiIhPT10LndoaXRlc3BhY2VfYmVmb3JlLCEwKSxuLmlzX3VuZm9ybWF0dGVkKWUuYWRkX3Jhd190b2tlbih0KTtlbHNlIGlmKCJ7Ij09PW4udGFnX3N0YXJ0X2NoYXImJnQudHlwZT09PW8uVEVYVCllLnByaW50X3ByZXNlcnZlZF9uZXdsaW5lcyh0KT8odC5uZXdsaW5lcz0wLGUuYWRkX3Jhd190b2tlbih0KSk6ZS5wcmludF90b2tlbih0KTtlbHNle2lmKHQudHlwZT09PW8uQVRUUklCVVRFPyhlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW4oITApLG4uYXR0cl9jb3VudCs9MSk6KHQudHlwZT09PW8uRVFVQUxTfHx0LnR5cGU9PT1vLlZBTFVFJiZ0LnByZXZpb3VzLnR5cGU9PT1vLkVRVUFMUykmJmUuc2V0X3NwYWNlX2JlZm9yZV90b2tlbighMSksdC50eXBlPT09by5BVFRSSUJVVEUmJiI8Ij09PW4udGFnX3N0YXJ0X2NoYXImJigodGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlfHx0aGlzLl9pc193cmFwX2F0dHJpYnV0ZXNfcHJlc2VydmVfYWxpZ25lZCkmJihlLnRyYXZlcnNlX3doaXRlc3BhY2UodCkscj1yfHwwIT09dC5uZXdsaW5lcyksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlKSl7dmFyIHM9bi5hdHRyX2NvdW50PjE7aWYodGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2V4cGFuZF9tdWx0aWxpbmUmJjE9PT1uLmF0dHJfY291bnQpe3ZhciBsLGM9ITAsaD0wO2Rve2lmKChsPWkucGVlayhoKSkudHlwZT09PW8uQVRUUklCVVRFKXtjPSExO2JyZWFrfWgrPTF9d2hpbGUoaDw0JiZsLnR5cGUhPT1vLkVPRiYmbC50eXBlIT09by5UQUdfQ0xPU0UpO3M9IWN9cyYmKGUucHJpbnRfbmV3bGluZSghMSkscj0hMCl9ZS5wcmludF90b2tlbih0KSxyPXJ8fGUucHJldmlvdXNfdG9rZW5fd3JhcHBlZCgpLG4uaGFzX3dyYXBwZWRfYXR0cnM9cn1yZXR1cm4gYX0scC5wcm90b3R5cGUuX2hhbmRsZV90ZXh0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT17dGV4dDp0LnRleHQsdHlwZToiVEtfQ09OVEVOVCJ9O3JldHVybiBuLmN1c3RvbV9iZWF1dGlmaWVyX25hbWU/dGhpcy5fcHJpbnRfY3VzdG9tX2JlYXRpZmllcl90ZXh0KGUsdCxuKTpuLmlzX3VuZm9ybWF0dGVkfHxuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWQ/ZS5hZGRfcmF3X3Rva2VuKHQpOihlLnRyYXZlcnNlX3doaXRlc3BhY2UodCksZS5wcmludF90b2tlbih0KSksaX0scC5wcm90b3R5cGUuX3ByaW50X2N1c3RvbV9iZWF0aWZpZXJfdGV4dD1mdW5jdGlvbihlLHQsbil7dmFyIGk9dGhpcztpZigiIiE9PXQudGV4dCl7dmFyIHIsYT10LnRleHQsbz0xLHM9IiIsbD0iIjsiamF2YXNjcmlwdCI9PT1uLmN1c3RvbV9iZWF1dGlmaWVyX25hbWUmJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9qc19iZWF1dGlmeT9yPXRoaXMuX2pzX2JlYXV0aWZ5OiJjc3MiPT09bi5jdXN0b21fYmVhdXRpZmllcl9uYW1lJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fY3NzX2JlYXV0aWZ5P3I9dGhpcy5fY3NzX2JlYXV0aWZ5OiJodG1sIj09PW4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZSYmKHI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IHAoZSx0LGkuX2pzX2JlYXV0aWZ5LGkuX2Nzc19iZWF1dGlmeSkuYmVhdXRpZnkoKX0pLCJrZWVwIj09PXRoaXMuX29wdGlvbnMuaW5kZW50X3NjcmlwdHM/bz0wOiJzZXBhcmF0ZSI9PT10aGlzLl9vcHRpb25zLmluZGVudF9zY3JpcHRzJiYobz0tZS5pbmRlbnRfbGV2ZWwpO3ZhciBjPWUuZ2V0X2Z1bGxfaW5kZW50KG8pO2lmKGE9YS5yZXBsYWNlKC9cblsgXHRdKiQvLCIiKSwiaHRtbCIhPT1uLmN1c3RvbV9iZWF1dGlmaWVyX25hbWUmJiI8Ij09PWFbMF0mJmEubWF0Y2goL14oPCEtLXw8IVxbQ0RBVEFcWykvKSl7dmFyIGg9L14oPCEtLVteXG5dKnw8IVxbQ0RBVEFcWykoXG4/KShbIFx0XG5dKikoW1xzXFNdKikoLS0+fF1dPikkLy5leGVjKGEpO2lmKCFoKXJldHVybiB2b2lkIGUuYWRkX3Jhd190b2tlbih0KTtzPWMraFsxXSsiXG4iLGE9aFs0XSxoWzVdJiYobD1jK2hbNV0pLGE9YS5yZXBsYWNlKC9cblsgXHRdKiQvLCIiKSwoaFsyXXx8LTEhPT1oWzNdLmluZGV4T2YoIlxuIikpJiYoaD1oWzNdLm1hdGNoKC9bIFx0XSskLykpJiYodC53aGl0ZXNwYWNlX2JlZm9yZT1oWzBdKX1pZihhKWlmKHIpe3ZhciBkPWZ1bmN0aW9uKCl7dGhpcy5lb2w9IlxuIn07ZC5wcm90b3R5cGU9dGhpcy5fb3B0aW9ucy5yYXdfb3B0aW9ucyxhPXIoYythLG5ldyBkKX1lbHNle3ZhciB1PXQud2hpdGVzcGFjZV9iZWZvcmU7dSYmKGE9YS5yZXBsYWNlKG5ldyBSZWdFeHAoIlxuKCIrdSsiKT8iLCJnIiksIlxuIikpLGE9YythLnJlcGxhY2UoL1xuL2csIlxuIitjKX1zJiYoYT1hP3MrYSsiXG4iK2w6cytsKSxlLnByaW50X25ld2xpbmUoITEpLGEmJih0LnRleHQ9YSx0LndoaXRlc3BhY2VfYmVmb3JlPSIiLHQubmV3bGluZXM9MCxlLmFkZF9yYXdfdG9rZW4odCksZS5wcmludF9uZXdsaW5lKCEwKSl9fSxwLnByb3RvdHlwZS5faGFuZGxlX3RhZ19vcGVuPWZ1bmN0aW9uKGUsdCxuLGkpe3ZhciByPXRoaXMuX2dldF90YWdfb3Blbl90b2tlbih0KTtyZXR1cm4hbi5pc191bmZvcm1hdHRlZCYmIW4uaXNfY29udGVudF91bmZvcm1hdHRlZHx8bi5pc19lbXB0eV9lbGVtZW50fHx0LnR5cGUhPT1vLlRBR19PUEVOfHwwIT09dC50ZXh0LmluZGV4T2YoIjwvIik/KGUudHJhdmVyc2Vfd2hpdGVzcGFjZSh0KSx0aGlzLl9zZXRfdGFnX3Bvc2l0aW9uKGUsdCxyLG4saSksci5pc19pbmxpbmVfZWxlbWVudHx8ZS5zZXRfd3JhcF9wb2ludCgpLGUucHJpbnRfdG9rZW4odCkpOihlLmFkZF9yYXdfdG9rZW4odCksci5zdGFydF90YWdfdG9rZW49dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3Aoci50YWdfbmFtZSkpLCh0aGlzLl9pc193cmFwX2F0dHJpYnV0ZXNfZm9yY2VfYWxpZ25lZHx8dGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2FsaWduZWRfbXVsdGlwbGV8fHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19wcmVzZXJ2ZV9hbGlnbmVkKSYmKHIuYWxpZ25tZW50X3NpemU9dC50ZXh0Lmxlbmd0aCsxKSxyLnRhZ19jb21wbGV0ZXx8ci5pc191bmZvcm1hdHRlZHx8KGUuYWxpZ25tZW50X3NpemU9ci5hbGlnbm1lbnRfc2l6ZSkscn07dmFyIGY9ZnVuY3Rpb24oZSx0KXt2YXIgbjsodGhpcy5wYXJlbnQ9ZXx8bnVsbCx0aGlzLnRleHQ9IiIsdGhpcy50eXBlPSJUS19UQUdfT1BFTiIsdGhpcy50YWdfbmFtZT0iIix0aGlzLmlzX2lubGluZV9lbGVtZW50PSExLHRoaXMuaXNfdW5mb3JtYXR0ZWQ9ITEsdGhpcy5pc19jb250ZW50X3VuZm9ybWF0dGVkPSExLHRoaXMuaXNfZW1wdHlfZWxlbWVudD0hMSx0aGlzLmlzX3N0YXJ0X3RhZz0hMSx0aGlzLmlzX2VuZF90YWc9ITEsdGhpcy5pbmRlbnRfY29udGVudD0hMSx0aGlzLm11bHRpbGluZV9jb250ZW50PSExLHRoaXMuY3VzdG9tX2JlYXV0aWZpZXJfbmFtZT1udWxsLHRoaXMuc3RhcnRfdGFnX3Rva2VuPW51bGwsdGhpcy5hdHRyX2NvdW50PTAsdGhpcy5oYXNfd3JhcHBlZF9hdHRycz0hMSx0aGlzLmFsaWdubWVudF9zaXplPTAsdGhpcy50YWdfY29tcGxldGU9ITEsdGhpcy50YWdfc3RhcnRfY2hhcj0iIix0aGlzLnRhZ19jaGVjaz0iIix0KT8odGhpcy50YWdfc3RhcnRfY2hhcj10LnRleHRbMF0sdGhpcy50ZXh0PXQudGV4dCwiPCI9PT10aGlzLnRhZ19zdGFydF9jaGFyPyhuPXQudGV4dC5tYXRjaCgvXjwoW15ccz5dKikvKSx0aGlzLnRhZ19jaGVjaz1uP25bMV06IiIpOihuPXQudGV4dC5tYXRjaCgvXnt7KD86W1xeXXwjXCo/KT8oW15cc31dKykvKSx0aGlzLnRhZ19jaGVjaz1uP25bMV06IiIsInt7Iz4iPT09dC50ZXh0JiYiPiI9PT10aGlzLnRhZ19jaGVjayYmbnVsbCE9PXQubmV4dCYmKHRoaXMudGFnX2NoZWNrPXQubmV4dC50ZXh0KSksdGhpcy50YWdfY2hlY2s9dGhpcy50YWdfY2hlY2sudG9Mb3dlckNhc2UoKSx0LnR5cGU9PT1vLkNPTU1FTlQmJih0aGlzLnRhZ19jb21wbGV0ZT0hMCksdGhpcy5pc19zdGFydF90YWc9Ii8iIT09dGhpcy50YWdfY2hlY2suY2hhckF0KDApLHRoaXMudGFnX25hbWU9dGhpcy5pc19zdGFydF90YWc/dGhpcy50YWdfY2hlY2s6dGhpcy50YWdfY2hlY2suc3Vic3RyKDEpLHRoaXMuaXNfZW5kX3RhZz0hdGhpcy5pc19zdGFydF90YWd8fHQuY2xvc2VkJiYiLz4iPT09dC5jbG9zZWQudGV4dCx0aGlzLmlzX2VuZF90YWc9dGhpcy5pc19lbmRfdGFnfHwieyI9PT10aGlzLnRhZ19zdGFydF9jaGFyJiYodGhpcy50ZXh0Lmxlbmd0aDwzfHwvW14jXF5dLy50ZXN0KHRoaXMudGV4dC5jaGFyQXQoMikpKSk6dGhpcy50YWdfY29tcGxldGU9ITB9O3AucHJvdG90eXBlLl9nZXRfdGFnX29wZW5fdG9rZW49ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGYodGhpcy5fdGFnX3N0YWNrLmdldF9wYXJzZXJfdG9rZW4oKSxlKTtyZXR1cm4gdC5hbGlnbm1lbnRfc2l6ZT10aGlzLl9vcHRpb25zLndyYXBfYXR0cmlidXRlc19pbmRlbnRfc2l6ZSx0LmlzX2VuZF90YWc9dC5pc19lbmRfdGFnfHxkKHQudGFnX2NoZWNrLHRoaXMuX29wdGlvbnMudm9pZF9lbGVtZW50cyksdC5pc19lbXB0eV9lbGVtZW50PXQudGFnX2NvbXBsZXRlfHx0LmlzX3N0YXJ0X3RhZyYmdC5pc19lbmRfdGFnLHQuaXNfdW5mb3JtYXR0ZWQ9IXQudGFnX2NvbXBsZXRlJiZkKHQudGFnX2NoZWNrLHRoaXMuX29wdGlvbnMudW5mb3JtYXR0ZWQpLHQuaXNfY29udGVudF91bmZvcm1hdHRlZD0hdC5pc19lbXB0eV9lbGVtZW50JiZkKHQudGFnX2NoZWNrLHRoaXMuX29wdGlvbnMuY29udGVudF91bmZvcm1hdHRlZCksdC5pc19pbmxpbmVfZWxlbWVudD1kKHQudGFnX25hbWUsdGhpcy5fb3B0aW9ucy5pbmxpbmUpfHwieyI9PT10LnRhZ19zdGFydF9jaGFyLHR9LHAucHJvdG90eXBlLl9zZXRfdGFnX3Bvc2l0aW9uPWZ1bmN0aW9uKGUsdCxuLGkscil7aWYobi5pc19lbXB0eV9lbGVtZW50fHwobi5pc19lbmRfdGFnP24uc3RhcnRfdGFnX3Rva2VuPXRoaXMuX3RhZ19zdGFjay50cnlfcG9wKG4udGFnX25hbWUpOih0aGlzLl9kb19vcHRpb25hbF9lbmRfZWxlbWVudChuKSYmKG4uaXNfaW5saW5lX2VsZW1lbnR8fGUucHJpbnRfbmV3bGluZSghMSkpLHRoaXMuX3RhZ19zdGFjay5yZWNvcmRfdGFnKG4pLCJzY3JpcHQiIT09bi50YWdfbmFtZSYmInN0eWxlIiE9PW4udGFnX25hbWV8fG4uaXNfdW5mb3JtYXR0ZWR8fG4uaXNfY29udGVudF91bmZvcm1hdHRlZHx8KG4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZT1oKG4udGFnX2NoZWNrLHQpKSkpLGQobi50YWdfY2hlY2ssdGhpcy5fb3B0aW9ucy5leHRyYV9saW5lcnMpJiYoZS5wcmludF9uZXdsaW5lKCExKSxlLl9vdXRwdXQuanVzdF9hZGRlZF9ibGFua2xpbmUoKXx8ZS5wcmludF9uZXdsaW5lKCEwKSksbi5pc19lbXB0eV9lbGVtZW50KXtpZigieyI9PT1uLnRhZ19zdGFydF9jaGFyJiYiZWxzZSI9PT1uLnRhZ19jaGVjayl0aGlzLl90YWdfc3RhY2suaW5kZW50X3RvX3RhZyhbImlmIiwidW5sZXNzIiwiZWFjaCJdKSxuLmluZGVudF9jb250ZW50PSEwLGUuY3VycmVudF9saW5lX2hhc19tYXRjaCgve3sjaWYvKXx8ZS5wcmludF9uZXdsaW5lKCExKTsiIS0tIj09PW4udGFnX25hbWUmJnIudHlwZT09PW8uVEFHX0NMT1NFJiZpLmlzX2VuZF90YWcmJi0xPT09bi50ZXh0LmluZGV4T2YoIlxuIil8fChuLmlzX2lubGluZV9lbGVtZW50fHxuLmlzX3VuZm9ybWF0dGVkfHxlLnByaW50X25ld2xpbmUoITEpLHRoaXMuX2NhbGNsdWF0ZV9wYXJlbnRfbXVsdGlsaW5lKGUsbikpfWVsc2UgaWYobi5pc19lbmRfdGFnKXt2YXIgYT0hMTthPShhPW4uc3RhcnRfdGFnX3Rva2VuJiZuLnN0YXJ0X3RhZ190b2tlbi5tdWx0aWxpbmVfY29udGVudCl8fCFuLmlzX2lubGluZV9lbGVtZW50JiYhKGkuaXNfaW5saW5lX2VsZW1lbnR8fGkuaXNfdW5mb3JtYXR0ZWQpJiYhKHIudHlwZT09PW8uVEFHX0NMT1NFJiZuLnN0YXJ0X3RhZ190b2tlbj09PWkpJiYiVEtfQ09OVEVOVCIhPT1yLnR5cGUsKG4uaXNfY29udGVudF91bmZvcm1hdHRlZHx8bi5pc191bmZvcm1hdHRlZCkmJihhPSExKSxhJiZlLnByaW50X25ld2xpbmUoITEpfWVsc2Ugbi5pbmRlbnRfY29udGVudD0hbi5jdXN0b21fYmVhdXRpZmllcl9uYW1lLCI8Ij09PW4udGFnX3N0YXJ0X2NoYXImJigiaHRtbCI9PT1uLnRhZ19uYW1lP24uaW5kZW50X2NvbnRlbnQ9dGhpcy5fb3B0aW9ucy5pbmRlbnRfaW5uZXJfaHRtbDoiaGVhZCI9PT1uLnRhZ19uYW1lP24uaW5kZW50X2NvbnRlbnQ9dGhpcy5fb3B0aW9ucy5pbmRlbnRfaGVhZF9pbm5lcl9odG1sOiJib2R5Ij09PW4udGFnX25hbWUmJihuLmluZGVudF9jb250ZW50PXRoaXMuX29wdGlvbnMuaW5kZW50X2JvZHlfaW5uZXJfaHRtbCkpLG4uaXNfaW5saW5lX2VsZW1lbnR8fG4uaXNfdW5mb3JtYXR0ZWR8fCJUS19DT05URU5UIj09PXIudHlwZSYmIW4uaXNfY29udGVudF91bmZvcm1hdHRlZHx8ZS5wcmludF9uZXdsaW5lKCExKSx0aGlzLl9jYWxjbHVhdGVfcGFyZW50X211bHRpbGluZShlLG4pfSxwLnByb3RvdHlwZS5fY2FsY2x1YXRlX3BhcmVudF9tdWx0aWxpbmU9ZnVuY3Rpb24oZSx0KXshdC5wYXJlbnR8fCFlLl9vdXRwdXQuanVzdF9hZGRlZF9uZXdsaW5lKCl8fCh0LmlzX2lubGluZV9lbGVtZW50fHx0LmlzX3VuZm9ybWF0dGVkKSYmdC5wYXJlbnQuaXNfaW5saW5lX2VsZW1lbnR8fCh0LnBhcmVudC5tdWx0aWxpbmVfY29udGVudD0hMCl9O3ZhciBnPVsiYWRkcmVzcyIsImFydGljbGUiLCJhc2lkZSIsImJsb2NrcXVvdGUiLCJkZXRhaWxzIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImZpZ2NhcHRpb24iLCJmaWd1cmUiLCJmb290ZXIiLCJmb3JtIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZGVyIiwiaHIiLCJtYWluIiwibmF2Iiwib2wiLCJwIiwicHJlIiwic2VjdGlvbiIsInRhYmxlIiwidWwiXSxiPVsiYSIsImF1ZGlvIiwiZGVsIiwiaW5zIiwibWFwIiwibm9zY3JpcHQiLCJ2aWRlbyJdO3AucHJvdG90eXBlLl9kb19vcHRpb25hbF9lbmRfZWxlbWVudD1mdW5jdGlvbihlKXt2YXIgdD1udWxsO2lmKCFlLmlzX2VtcHR5X2VsZW1lbnQmJmUuaXNfc3RhcnRfdGFnJiZlLnBhcmVudCl7aWYoImJvZHkiPT09ZS50YWdfbmFtZSl0PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJoZWFkIik7ZWxzZSBpZigibGkiPT09ZS50YWdfbmFtZSl0PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJsaSIsWyJvbCIsInVsIl0pO2Vsc2UgaWYoImRkIj09PWUudGFnX25hbWV8fCJkdCI9PT1lLnRhZ19uYW1lKXQ9KHQ9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImR0IixbImRsIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImRkIixbImRsIl0pO2Vsc2UgaWYoInAiPT09ZS5wYXJlbnQudGFnX25hbWUmJi0xIT09Zy5pbmRleE9mKGUudGFnX25hbWUpKXt2YXIgbj1lLnBhcmVudC5wYXJlbnQ7biYmLTEhPT1iLmluZGV4T2Yobi50YWdfbmFtZSl8fCh0PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJwIikpfWVsc2UicnAiPT09ZS50YWdfbmFtZXx8InJ0Ij09PWUudGFnX25hbWU/dD0odD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgicnQiLFsicnVieSIsInJ0YyJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJycCIsWyJydWJ5IiwicnRjIl0pOiJvcHRncm91cCI9PT1lLnRhZ19uYW1lP3Q9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoIm9wdGdyb3VwIixbInNlbGVjdCJdKToib3B0aW9uIj09PWUudGFnX25hbWU/dD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgib3B0aW9uIixbInNlbGVjdCIsImRhdGFsaXN0Iiwib3B0Z3JvdXAiXSk6ImNvbGdyb3VwIj09PWUudGFnX25hbWU/dD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiY2FwdGlvbiIsWyJ0YWJsZSJdKToidGhlYWQiPT09ZS50YWdfbmFtZT90PSh0PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjYXB0aW9uIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNvbGdyb3VwIixbInRhYmxlIl0pOiJ0Ym9keSI9PT1lLnRhZ19uYW1lfHwidGZvb3QiPT09ZS50YWdfbmFtZT90PSh0PSh0PSh0PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjYXB0aW9uIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNvbGdyb3VwIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInRoZWFkIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInRib2R5IixbInRhYmxlIl0pOiJ0ciI9PT1lLnRhZ19uYW1lP3Q9KHQ9KHQ9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNhcHRpb24iLFsidGFibGUiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiY29sZ3JvdXAiLFsidGFibGUiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgidHIiLFsidGFibGUiLCJ0aGVhZCIsInRib2R5IiwidGZvb3QiXSk6InRoIiE9PWUudGFnX25hbWUmJiJ0ZCIhPT1lLnRhZ19uYW1lfHwodD0odD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgidGQiLFsidGFibGUiLCJ0aGVhZCIsInRib2R5IiwidGZvb3QiLCJ0ciJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJ0aCIsWyJ0YWJsZSIsInRoZWFkIiwidGJvZHkiLCJ0Zm9vdCIsInRyIl0pKTtyZXR1cm4gZS5wYXJlbnQ9dGhpcy5fdGFnX3N0YWNrLmdldF9wYXJzZXJfdG9rZW4oKSx0fX0sZS5leHBvcnRzLkJlYXV0aWZpZXI9cH0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpPW4oNikuT3B0aW9ucztmdW5jdGlvbiByKGUpe2kuY2FsbCh0aGlzLGUsImh0bWwiKSwxPT09dGhpcy50ZW1wbGF0aW5nLmxlbmd0aCYmImF1dG8iPT09dGhpcy50ZW1wbGF0aW5nWzBdJiYodGhpcy50ZW1wbGF0aW5nPVsiZGphbmdvIiwiZXJiIiwiaGFuZGxlYmFycyIsInBocCJdKSx0aGlzLmluZGVudF9pbm5lcl9odG1sPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfaW5uZXJfaHRtbCIpLHRoaXMuaW5kZW50X2JvZHlfaW5uZXJfaHRtbD10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X2JvZHlfaW5uZXJfaHRtbCIsITApLHRoaXMuaW5kZW50X2hlYWRfaW5uZXJfaHRtbD10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X2hlYWRfaW5uZXJfaHRtbCIsITApLHRoaXMuaW5kZW50X2hhbmRsZWJhcnM9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9oYW5kbGViYXJzIiwhMCksdGhpcy53cmFwX2F0dHJpYnV0ZXM9dGhpcy5fZ2V0X3NlbGVjdGlvbigid3JhcF9hdHRyaWJ1dGVzIixbImF1dG8iLCJmb3JjZSIsImZvcmNlLWFsaWduZWQiLCJmb3JjZS1leHBhbmQtbXVsdGlsaW5lIiwiYWxpZ25lZC1tdWx0aXBsZSIsInByZXNlcnZlIiwicHJlc2VydmUtYWxpZ25lZCJdKSx0aGlzLndyYXBfYXR0cmlidXRlc19pbmRlbnRfc2l6ZT10aGlzLl9nZXRfbnVtYmVyKCJ3cmFwX2F0dHJpYnV0ZXNfaW5kZW50X3NpemUiLHRoaXMuaW5kZW50X3NpemUpLHRoaXMuZXh0cmFfbGluZXJzPXRoaXMuX2dldF9hcnJheSgiZXh0cmFfbGluZXJzIixbImhlYWQiLCJib2R5IiwiL2h0bWwiXSksdGhpcy5pbmxpbmU9dGhpcy5fZ2V0X2FycmF5KCJpbmxpbmUiLFsiYSIsImFiYnIiLCJhcmVhIiwiYXVkaW8iLCJiIiwiYmRpIiwiYmRvIiwiYnIiLCJidXR0b24iLCJjYW52YXMiLCJjaXRlIiwiY29kZSIsImRhdGEiLCJkYXRhbGlzdCIsImRlbCIsImRmbiIsImVtIiwiZW1iZWQiLCJpIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQiLCJpbnMiLCJrYmQiLCJrZXlnZW4iLCJsYWJlbCIsIm1hcCIsIm1hcmsiLCJtYXRoIiwibWV0ZXIiLCJub3NjcmlwdCIsIm9iamVjdCIsIm91dHB1dCIsInByb2dyZXNzIiwicSIsInJ1YnkiLCJzIiwic2FtcCIsInNlbGVjdCIsInNtYWxsIiwic3BhbiIsInN0cm9uZyIsInN1YiIsInN1cCIsInN2ZyIsInRlbXBsYXRlIiwidGV4dGFyZWEiLCJ0aW1lIiwidSIsInZhciIsInZpZGVvIiwid2JyIiwidGV4dCIsImFjcm9ueW0iLCJiaWciLCJzdHJpa2UiLCJ0dCJdKSx0aGlzLnZvaWRfZWxlbWVudHM9dGhpcy5fZ2V0X2FycmF5KCJ2b2lkX2VsZW1lbnRzIixbImFyZWEiLCJiYXNlIiwiYnIiLCJjb2wiLCJlbWJlZCIsImhyIiwiaW1nIiwiaW5wdXQiLCJrZXlnZW4iLCJsaW5rIiwibWVudWl0ZW0iLCJtZXRhIiwicGFyYW0iLCJzb3VyY2UiLCJ0cmFjayIsIndiciIsIiFkb2N0eXBlIiwiP3htbCIsImJhc2Vmb250IiwiaXNpbmRleCJdKSx0aGlzLnVuZm9ybWF0dGVkPXRoaXMuX2dldF9hcnJheSgidW5mb3JtYXR0ZWQiLFtdKSx0aGlzLmNvbnRlbnRfdW5mb3JtYXR0ZWQ9dGhpcy5fZ2V0X2FycmF5KCJjb250ZW50X3VuZm9ybWF0dGVkIixbInByZSIsInRleHRhcmVhIl0pLHRoaXMudW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXI9dGhpcy5fZ2V0X2NoYXJhY3RlcnMoInVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyIiksdGhpcy5pbmRlbnRfc2NyaXB0cz10aGlzLl9nZXRfc2VsZWN0aW9uKCJpbmRlbnRfc2NyaXB0cyIsWyJub3JtYWwiLCJrZWVwIiwic2VwYXJhdGUiXSl9ci5wcm90b3R5cGU9bmV3IGksZS5leHBvcnRzLk9wdGlvbnM9cn0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpPW4oOSkuVG9rZW5pemVyLHI9big5KS5UT0tFTixhPW4oMTMpLkRpcmVjdGl2ZXMsbz1uKDE0KS5UZW1wbGF0YWJsZVBhdHRlcm4scz1uKDEyKS5QYXR0ZXJuLGw9e1RBR19PUEVOOiJUS19UQUdfT1BFTiIsVEFHX0NMT1NFOiJUS19UQUdfQ0xPU0UiLEFUVFJJQlVURToiVEtfQVRUUklCVVRFIixFUVVBTFM6IlRLX0VRVUFMUyIsVkFMVUU6IlRLX1ZBTFVFIixDT01NRU5UOiJUS19DT01NRU5UIixURVhUOiJUS19URVhUIixVTktOT1dOOiJUS19VTktOT1dOIixTVEFSVDpyLlNUQVJULFJBVzpyLlJBVyxFT0Y6ci5FT0Z9LGM9bmV3IGEoLzxcIS0tLywvLS0+LyksaD1mdW5jdGlvbihlLHQpe2kuY2FsbCh0aGlzLGUsdCksdGhpcy5fY3VycmVudF90YWdfbmFtZT0iIjt2YXIgbj1uZXcgbyh0aGlzLl9pbnB1dCkucmVhZF9vcHRpb25zKHRoaXMuX29wdGlvbnMpLHI9bmV3IHModGhpcy5faW5wdXQpO2lmKHRoaXMuX19wYXR0ZXJucz17d29yZDpuLnVudGlsKC9bXG5cclx0IDxdLyksc2luZ2xlX3F1b3RlOm4udW50aWxfYWZ0ZXIoLycvKSxkb3VibGVfcXVvdGU6bi51bnRpbF9hZnRlcigvIi8pLGF0dHJpYnV0ZTpuLnVudGlsKC9bXG5cclx0ID0+XXxcLz4vKSxlbGVtZW50X25hbWU6bi51bnRpbCgvW1xuXHJcdCA+XC9dLyksaGFuZGxlYmFyc19jb21tZW50OnIuc3RhcnRpbmdfd2l0aCgve3shLS0vKS51bnRpbF9hZnRlcigvLS19fS8pLGhhbmRsZWJhcnM6ci5zdGFydGluZ193aXRoKC97ey8pLnVudGlsX2FmdGVyKC99fS8pLGhhbmRsZWJhcnNfb3BlbjpyLnVudGlsKC9bXG5cclx0IH1dLyksaGFuZGxlYmFyc19yYXdfY2xvc2U6ci51bnRpbCgvfX0vKSxjb21tZW50OnIuc3RhcnRpbmdfd2l0aCgvPCEtLS8pLnVudGlsX2FmdGVyKC8tLT4vKSxjZGF0YTpyLnN0YXJ0aW5nX3dpdGgoLzwhXFtDREFUQVxbLykudW50aWxfYWZ0ZXIoL11dPi8pLGNvbmRpdGlvbmFsX2NvbW1lbnQ6ci5zdGFydGluZ193aXRoKC88IVxbLykudW50aWxfYWZ0ZXIoL10+LykscHJvY2Vzc2luZzpyLnN0YXJ0aW5nX3dpdGgoLzxcPy8pLnVudGlsX2FmdGVyKC9cPz4vKX0sdGhpcy5fb3B0aW9ucy5pbmRlbnRfaGFuZGxlYmFycyYmKHRoaXMuX19wYXR0ZXJucy53b3JkPXRoaXMuX19wYXR0ZXJucy53b3JkLmV4Y2x1ZGUoImhhbmRsZWJhcnMiKSksdGhpcy5fdW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXI9bnVsbCx0aGlzLl9vcHRpb25zLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyKXt2YXIgYT10aGlzLl9pbnB1dC5nZXRfbGl0ZXJhbF9yZWdleHAodGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlcik7dGhpcy5fX3BhdHRlcm5zLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyPXIubWF0Y2hpbmcoYSkudW50aWxfYWZ0ZXIoYSl9fTsoaC5wcm90b3R5cGU9bmV3IGkpLl9pc19jb21tZW50PWZ1bmN0aW9uKGUpe3JldHVybiExfSxoLnByb3RvdHlwZS5faXNfb3BlbmluZz1mdW5jdGlvbihlKXtyZXR1cm4gZS50eXBlPT09bC5UQUdfT1BFTn0saC5wcm90b3R5cGUuX2lzX2Nsb3Npbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50eXBlPT09bC5UQUdfQ0xPU0UmJnQmJigoIj4iPT09ZS50ZXh0fHwiLz4iPT09ZS50ZXh0KSYmIjwiPT09dC50ZXh0WzBdfHwifX0iPT09ZS50ZXh0JiYieyI9PT10LnRleHRbMF0mJiJ7Ij09PXQudGV4dFsxXSl9LGgucHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe3RoaXMuX2N1cnJlbnRfdGFnX25hbWU9IiJ9LGgucHJvdG90eXBlLl9nZXRfbmV4dF90b2tlbj1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGw7dGhpcy5fcmVhZFdoaXRlc3BhY2UoKTt2YXIgaT10aGlzLl9pbnB1dC5wZWVrKCk7cmV0dXJuIG51bGw9PT1pP3RoaXMuX2NyZWF0ZV90b2tlbihsLkVPRiwiIik6bj0obj0obj0obj0obj0obj0obj0obj0obj1ufHx0aGlzLl9yZWFkX29wZW5faGFuZGxlYmFycyhpLHQpKXx8dGhpcy5fcmVhZF9hdHRyaWJ1dGUoaSxlLHQpKXx8dGhpcy5fcmVhZF9jbG9zZShpLHQpKXx8dGhpcy5fcmVhZF9yYXdfY29udGVudChpLGUsdCkpfHx0aGlzLl9yZWFkX2NvbnRlbnRfd29yZChpKSl8fHRoaXMuX3JlYWRfY29tbWVudF9vcl9jZGF0YShpKSl8fHRoaXMuX3JlYWRfcHJvY2Vzc2luZyhpKSl8fHRoaXMuX3JlYWRfb3BlbihpLHQpKXx8dGhpcy5fY3JlYXRlX3Rva2VuKGwuVU5LTk9XTix0aGlzLl9pbnB1dC5uZXh0KCkpfSxoLnByb3RvdHlwZS5fcmVhZF9jb21tZW50X29yX2NkYXRhPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGwsbj1udWxsLGk9bnVsbDsiPCI9PT1lJiYoIiEiPT09dGhpcy5faW5wdXQucGVlaygxKSYmKChuPXRoaXMuX19wYXR0ZXJucy5jb21tZW50LnJlYWQoKSk/KGk9Yy5nZXRfZGlyZWN0aXZlcyhuKSkmJiJzdGFydCI9PT1pLmlnbm9yZSYmKG4rPWMucmVhZElnbm9yZWQodGhpcy5faW5wdXQpKTpuPXRoaXMuX19wYXR0ZXJucy5jZGF0YS5yZWFkKCkpLG4mJigodD10aGlzLl9jcmVhdGVfdG9rZW4obC5DT01NRU5ULG4pKS5kaXJlY3RpdmVzPWkpKTtyZXR1cm4gdH0saC5wcm90b3R5cGUuX3JlYWRfcHJvY2Vzc2luZz1mdW5jdGlvbihlKXt2YXIgdD1udWxsLG49bnVsbDtpZigiPCI9PT1lKXt2YXIgaT10aGlzLl9pbnB1dC5wZWVrKDEpOyIhIiE9PWkmJiI/IiE9PWl8fChuPShuPXRoaXMuX19wYXR0ZXJucy5jb25kaXRpb25hbF9jb21tZW50LnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5wcm9jZXNzaW5nLnJlYWQoKSksbiYmKCh0PXRoaXMuX2NyZWF0ZV90b2tlbihsLkNPTU1FTlQsbikpLmRpcmVjdGl2ZXM9bnVsbCl9cmV0dXJuIHR9LGgucHJvdG90eXBlLl9yZWFkX29wZW49ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsLGk9bnVsbDtyZXR1cm4gdHx8IjwiPT09ZSYmKG49dGhpcy5faW5wdXQubmV4dCgpLCIvIj09PXRoaXMuX2lucHV0LnBlZWsoKSYmKG4rPXRoaXMuX2lucHV0Lm5leHQoKSksbis9dGhpcy5fX3BhdHRlcm5zLmVsZW1lbnRfbmFtZS5yZWFkKCksaT10aGlzLl9jcmVhdGVfdG9rZW4obC5UQUdfT1BFTixuKSksaX0saC5wcm90b3R5cGUuX3JlYWRfb3Blbl9oYW5kbGViYXJzPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCxpPW51bGw7cmV0dXJuIHR8fHRoaXMuX29wdGlvbnMuaW5kZW50X2hhbmRsZWJhcnMmJiJ7Ij09PWUmJiJ7Ij09PXRoaXMuX2lucHV0LnBlZWsoMSkmJigiISI9PT10aGlzLl9pbnB1dC5wZWVrKDIpPyhuPShuPXRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzX2NvbW1lbnQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLmhhbmRsZWJhcnMucmVhZCgpLGk9dGhpcy5fY3JlYXRlX3Rva2VuKGwuQ09NTUVOVCxuKSk6KG49dGhpcy5fX3BhdHRlcm5zLmhhbmRsZWJhcnNfb3Blbi5yZWFkKCksaT10aGlzLl9jcmVhdGVfdG9rZW4obC5UQUdfT1BFTixuKSkpLGl9LGgucHJvdG90eXBlLl9yZWFkX2Nsb3NlPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCxpPW51bGw7cmV0dXJuIHQmJigiPCI9PT10LnRleHRbMF0mJigiPiI9PT1lfHwiLyI9PT1lJiYiPiI9PT10aGlzLl9pbnB1dC5wZWVrKDEpKT8obj10aGlzLl9pbnB1dC5uZXh0KCksIi8iPT09ZSYmKG4rPXRoaXMuX2lucHV0Lm5leHQoKSksaT10aGlzLl9jcmVhdGVfdG9rZW4obC5UQUdfQ0xPU0UsbikpOiJ7Ij09PXQudGV4dFswXSYmIn0iPT09ZSYmIn0iPT09dGhpcy5faW5wdXQucGVlaygxKSYmKHRoaXMuX2lucHV0Lm5leHQoKSx0aGlzLl9pbnB1dC5uZXh0KCksaT10aGlzLl9jcmVhdGVfdG9rZW4obC5UQUdfQ0xPU0UsIn19IikpKSxpfSxoLnByb3RvdHlwZS5fcmVhZF9hdHRyaWJ1dGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPW51bGwscj0iIjtpZihuJiYiPCI9PT1uLnRleHRbMF0paWYoIj0iPT09ZSlpPXRoaXMuX2NyZWF0ZV90b2tlbihsLkVRVUFMUyx0aGlzLl9pbnB1dC5uZXh0KCkpO2Vsc2UgaWYoJyInPT09ZXx8IiciPT09ZSl7dmFyIGE9dGhpcy5faW5wdXQubmV4dCgpO2ErPSciJz09PWU/dGhpcy5fX3BhdHRlcm5zLmRvdWJsZV9xdW90ZS5yZWFkKCk6dGhpcy5fX3BhdHRlcm5zLnNpbmdsZV9xdW90ZS5yZWFkKCksaT10aGlzLl9jcmVhdGVfdG9rZW4obC5WQUxVRSxhKX1lbHNlKHI9dGhpcy5fX3BhdHRlcm5zLmF0dHJpYnV0ZS5yZWFkKCkpJiYoaT10LnR5cGU9PT1sLkVRVUFMUz90aGlzLl9jcmVhdGVfdG9rZW4obC5WQUxVRSxyKTp0aGlzLl9jcmVhdGVfdG9rZW4obC5BVFRSSUJVVEUscikpO3JldHVybiBpfSxoLnByb3RvdHlwZS5faXNfY29udGVudF91bmZvcm1hdHRlZD1mdW5jdGlvbihlKXtyZXR1cm4tMT09PXRoaXMuX29wdGlvbnMudm9pZF9lbGVtZW50cy5pbmRleE9mKGUpJiYoLTEhPT10aGlzLl9vcHRpb25zLmNvbnRlbnRfdW5mb3JtYXR0ZWQuaW5kZXhPZihlKXx8LTEhPT10aGlzLl9vcHRpb25zLnVuZm9ybWF0dGVkLmluZGV4T2YoZSkpfSxoLnByb3RvdHlwZS5fcmVhZF9yYXdfY29udGVudD1mdW5jdGlvbihlLHQsbil7dmFyIGk9IiI7aWYobiYmInsiPT09bi50ZXh0WzBdKWk9dGhpcy5fX3BhdHRlcm5zLmhhbmRsZWJhcnNfcmF3X2Nsb3NlLnJlYWQoKTtlbHNlIGlmKHQudHlwZT09PWwuVEFHX0NMT1NFJiYiPCI9PT10Lm9wZW5lZC50ZXh0WzBdJiYiLyIhPT10LnRleHRbMF0pe3ZhciByPXQub3BlbmVkLnRleHQuc3Vic3RyKDEpLnRvTG93ZXJDYXNlKCk7aWYoInNjcmlwdCI9PT1yfHwic3R5bGUiPT09cil7dmFyIGE9dGhpcy5fcmVhZF9jb21tZW50X29yX2NkYXRhKGUpO2lmKGEpcmV0dXJuIGEudHlwZT1sLlRFWFQsYTtpPXRoaXMuX2lucHV0LnJlYWRVbnRpbChuZXcgUmVnRXhwKCI8LyIrcisiW1xcblxcclxcdCBdKj8+IiwiaWciKSl9ZWxzZSB0aGlzLl9pc19jb250ZW50X3VuZm9ybWF0dGVkKHIpJiYoaT10aGlzLl9pbnB1dC5yZWFkVW50aWwobmV3IFJlZ0V4cCgiPC8iK3IrIltcXG5cXHJcXHQgXSo/PiIsImlnIikpKX1yZXR1cm4gaT90aGlzLl9jcmVhdGVfdG9rZW4obC5URVhULGkpOm51bGx9LGgucHJvdG90eXBlLl9yZWFkX2NvbnRlbnRfd29yZD1mdW5jdGlvbihlKXt2YXIgdD0iIjtpZih0aGlzLl9vcHRpb25zLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyJiZlPT09dGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlclswXSYmKHQ9dGhpcy5fX3BhdHRlcm5zLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyLnJlYWQoKSksdHx8KHQ9dGhpcy5fX3BhdHRlcm5zLndvcmQucmVhZCgpKSx0KXJldHVybiB0aGlzLl9jcmVhdGVfdG9rZW4obC5URVhULHQpfSxlLmV4cG9ydHMuVG9rZW5pemVyPWgsZS5leHBvcnRzLlRPS0VOPWx9XSx0PXt9O3ZhciBuPWZ1bmN0aW9uIG4oaSl7dmFyIHI9dFtpXTtpZih2b2lkIDAhPT1yKXJldHVybiByLmV4cG9ydHM7dmFyIGE9dFtpXT17ZXhwb3J0czp7fX07cmV0dXJuIGVbaV0oYSxhLmV4cG9ydHMsbiksYS5leHBvcnRzfSgxOCk7YXM9bn0oKSxvcz0oKCk9Pnt2YXIgZT17NDcwOmU9PntmdW5jdGlvbiB0KGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICIrSlNPTi5zdHJpbmdpZnkoZSkpfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIG4saT0iIixyPTAsYT0tMSxvPTAscz0wO3M8PWUubGVuZ3RoOysrcyl7aWYoczxlLmxlbmd0aCluPWUuY2hhckNvZGVBdChzKTtlbHNle2lmKDQ3PT09bilicmVhaztuPTQ3fWlmKDQ3PT09bil7aWYoYT09PXMtMXx8MT09PW8pO2Vsc2UgaWYoYSE9PXMtMSYmMj09PW8pe2lmKGkubGVuZ3RoPDJ8fDIhPT1yfHw0NiE9PWkuY2hhckNvZGVBdChpLmxlbmd0aC0xKXx8NDYhPT1pLmNoYXJDb2RlQXQoaS5sZW5ndGgtMikpaWYoaS5sZW5ndGg+Mil7dmFyIGw9aS5sYXN0SW5kZXhPZigiLyIpO2lmKGwhPT1pLmxlbmd0aC0xKXstMT09PWw/KGk9IiIscj0wKTpyPShpPWkuc2xpY2UoMCxsKSkubGVuZ3RoLTEtaS5sYXN0SW5kZXhPZigiLyIpLGE9cyxvPTA7Y29udGludWV9fWVsc2UgaWYoMj09PWkubGVuZ3RofHwxPT09aS5sZW5ndGgpe2k9IiIscj0wLGE9cyxvPTA7Y29udGludWV9dCYmKGkubGVuZ3RoPjA/aSs9Ii8uLiI6aT0iLi4iLHI9Mil9ZWxzZSBpLmxlbmd0aD4wP2krPSIvIitlLnNsaWNlKGErMSxzKTppPWUuc2xpY2UoYSsxLHMpLHI9cy1hLTE7YT1zLG89MH1lbHNlIDQ2PT09biYmLTEhPT1vPysrbzpvPS0xfXJldHVybiBpfXZhciBpPXtyZXNvbHZlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlLGk9IiIscj0hMSxhPWFyZ3VtZW50cy5sZW5ndGgtMTthPj0tMSYmIXI7YS0tKXt2YXIgbzthPj0wP289YXJndW1lbnRzW2FdOih2b2lkIDA9PT1lJiYoZT1wcm9jZXNzLmN3ZCgpKSxvPWUpLHQobyksMCE9PW8ubGVuZ3RoJiYoaT1vKyIvIitpLHI9NDc9PT1vLmNoYXJDb2RlQXQoMCkpfXJldHVybiBpPW4oaSwhcikscj9pLmxlbmd0aD4wPyIvIitpOiIvIjppLmxlbmd0aD4wP2k6Ii4ifSxub3JtYWxpemU6ZnVuY3Rpb24oZSl7aWYodChlKSwwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO3ZhciBpPTQ3PT09ZS5jaGFyQ29kZUF0KDApLHI9NDc9PT1lLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSk7cmV0dXJuIDAhPT0oZT1uKGUsIWkpKS5sZW5ndGh8fGl8fChlPSIuIiksZS5sZW5ndGg+MCYmciYmKGUrPSIvIiksaT8iLyIrZTplfSxpc0Fic29sdXRlOmZ1bmN0aW9uKGUpe3JldHVybiB0KGUpLGUubGVuZ3RoPjAmJjQ3PT09ZS5jaGFyQ29kZUF0KDApfSxqb2luOmZ1bmN0aW9uKCl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIi4iO2Zvcih2YXIgZSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoOysrbil7dmFyIHI9YXJndW1lbnRzW25dO3Qociksci5sZW5ndGg+MCYmKHZvaWQgMD09PWU/ZT1yOmUrPSIvIityKX1yZXR1cm4gdm9pZCAwPT09ZT8iLiI6aS5ub3JtYWxpemUoZSl9LHJlbGF0aXZlOmZ1bmN0aW9uKGUsbil7aWYodChlKSx0KG4pLGU9PT1uKXJldHVybiIiO2lmKChlPWkucmVzb2x2ZShlKSk9PT0obj1pLnJlc29sdmUobikpKXJldHVybiIiO2Zvcih2YXIgcj0xO3I8ZS5sZW5ndGgmJjQ3PT09ZS5jaGFyQ29kZUF0KHIpOysrcik7Zm9yKHZhciBhPWUubGVuZ3RoLG89YS1yLHM9MTtzPG4ubGVuZ3RoJiY0Nz09PW4uY2hhckNvZGVBdChzKTsrK3MpO2Zvcih2YXIgbD1uLmxlbmd0aC1zLGM9bzxsP286bCxoPS0xLGQ9MDtkPD1jOysrZCl7aWYoZD09PWMpe2lmKGw+Yyl7aWYoNDc9PT1uLmNoYXJDb2RlQXQocytkKSlyZXR1cm4gbi5zbGljZShzK2QrMSk7aWYoMD09PWQpcmV0dXJuIG4uc2xpY2UocytkKX1lbHNlIG8+YyYmKDQ3PT09ZS5jaGFyQ29kZUF0KHIrZCk/aD1kOjA9PT1kJiYoaD0wKSk7YnJlYWt9dmFyIHU9ZS5jaGFyQ29kZUF0KHIrZCk7aWYodSE9PW4uY2hhckNvZGVBdChzK2QpKWJyZWFrOzQ3PT09dSYmKGg9ZCl9dmFyIG09IiI7Zm9yKGQ9citoKzE7ZDw9YTsrK2QpZCE9PWEmJjQ3IT09ZS5jaGFyQ29kZUF0KGQpfHwoMD09PW0ubGVuZ3RoP20rPSIuLiI6bSs9Ii8uLiIpO3JldHVybiBtLmxlbmd0aD4wP20rbi5zbGljZShzK2gpOihzKz1oLDQ3PT09bi5jaGFyQ29kZUF0KHMpJiYrK3Msbi5zbGljZShzKSl9LF9tYWtlTG9uZzpmdW5jdGlvbihlKXtyZXR1cm4gZX0sZGlybmFtZTpmdW5jdGlvbihlKXtpZih0KGUpLDA9PT1lLmxlbmd0aClyZXR1cm4iLiI7Zm9yKHZhciBuPWUuY2hhckNvZGVBdCgwKSxpPTQ3PT09bixyPS0xLGE9ITAsbz1lLmxlbmd0aC0xO28+PTE7LS1vKWlmKDQ3PT09KG49ZS5jaGFyQ29kZUF0KG8pKSl7aWYoIWEpe3I9bzticmVha319ZWxzZSBhPSExO3JldHVybi0xPT09cj9pPyIvIjoiLiI6aSYmMT09PXI/Ii8vIjplLnNsaWNlKDAscil9LGJhc2VuYW1lOmZ1bmN0aW9uKGUsbil7aWYodm9pZCAwIT09biYmInN0cmluZyIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoJyJleHQiIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcnKTt0KGUpO3ZhciBpLHI9MCxhPS0xLG89ITA7aWYodm9pZCAwIT09biYmbi5sZW5ndGg+MCYmbi5sZW5ndGg8PWUubGVuZ3RoKXtpZihuLmxlbmd0aD09PWUubGVuZ3RoJiZuPT09ZSlyZXR1cm4iIjt2YXIgcz1uLmxlbmd0aC0xLGw9LTE7Zm9yKGk9ZS5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGM9ZS5jaGFyQ29kZUF0KGkpO2lmKDQ3PT09Yyl7aWYoIW8pe3I9aSsxO2JyZWFrfX1lbHNlLTE9PT1sJiYobz0hMSxsPWkrMSkscz49MCYmKGM9PT1uLmNoYXJDb2RlQXQocyk/LTE9PS0tcyYmKGE9aSk6KHM9LTEsYT1sKSl9cmV0dXJuIHI9PT1hP2E9bDotMT09PWEmJihhPWUubGVuZ3RoKSxlLnNsaWNlKHIsYSl9Zm9yKGk9ZS5sZW5ndGgtMTtpPj0wOy0taSlpZig0Nz09PWUuY2hhckNvZGVBdChpKSl7aWYoIW8pe3I9aSsxO2JyZWFrfX1lbHNlLTE9PT1hJiYobz0hMSxhPWkrMSk7cmV0dXJuLTE9PT1hPyIiOmUuc2xpY2UocixhKX0sZXh0bmFtZTpmdW5jdGlvbihlKXt0KGUpO2Zvcih2YXIgbj0tMSxpPTAscj0tMSxhPSEwLG89MCxzPWUubGVuZ3RoLTE7cz49MDstLXMpe3ZhciBsPWUuY2hhckNvZGVBdChzKTtpZig0NyE9PWwpLTE9PT1yJiYoYT0hMSxyPXMrMSksNDY9PT1sPy0xPT09bj9uPXM6MSE9PW8mJihvPTEpOi0xIT09biYmKG89LTEpO2Vsc2UgaWYoIWEpe2k9cysxO2JyZWFrfX1yZXR1cm4tMT09PW58fC0xPT09cnx8MD09PW98fDE9PT1vJiZuPT09ci0xJiZuPT09aSsxPyIiOmUuc2xpY2UobixyKX0sZm9ybWF0OmZ1bmN0aW9uKGUpe2lmKG51bGw9PT1lfHwib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJwYXRoT2JqZWN0IiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIGUpO3JldHVybiBuPSh0PWUpLmRpcnx8dC5yb290LGk9dC5iYXNlfHwodC5uYW1lfHwiIikrKHQuZXh0fHwiIiksbj9uPT09dC5yb290P24raTpuKyIvIitpOmk7dmFyIHQsbixpfSxwYXJzZTpmdW5jdGlvbihlKXt0KGUpO3ZhciBuPXtyb290OiIiLGRpcjoiIixiYXNlOiIiLGV4dDoiIixuYW1lOiIifTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIG47dmFyIGkscj1lLmNoYXJDb2RlQXQoMCksYT00Nz09PXI7YT8obi5yb290PSIvIixpPTEpOmk9MDtmb3IodmFyIG89LTEscz0wLGw9LTEsYz0hMCxoPWUubGVuZ3RoLTEsZD0wO2g+PWk7LS1oKWlmKDQ3IT09KHI9ZS5jaGFyQ29kZUF0KGgpKSktMT09PWwmJihjPSExLGw9aCsxKSw0Nj09PXI/LTE9PT1vP289aDoxIT09ZCYmKGQ9MSk6LTEhPT1vJiYoZD0tMSk7ZWxzZSBpZighYyl7cz1oKzE7YnJlYWt9cmV0dXJuLTE9PT1vfHwtMT09PWx8fDA9PT1kfHwxPT09ZCYmbz09PWwtMSYmbz09PXMrMT8tMSE9PWwmJihuLmJhc2U9bi5uYW1lPTA9PT1zJiZhP2Uuc2xpY2UoMSxsKTplLnNsaWNlKHMsbCkpOigwPT09cyYmYT8obi5uYW1lPWUuc2xpY2UoMSxvKSxuLmJhc2U9ZS5zbGljZSgxLGwpKToobi5uYW1lPWUuc2xpY2UocyxvKSxuLmJhc2U9ZS5zbGljZShzLGwpKSxuLmV4dD1lLnNsaWNlKG8sbCkpLHM+MD9uLmRpcj1lLnNsaWNlKDAscy0xKTphJiYobi5kaXI9Ii8iKSxufSxzZXA6Ii8iLGRlbGltaXRlcjoiOiIsd2luMzI6bnVsbCxwb3NpeDpudWxsfTtpLnBvc2l4PWksZS5leHBvcnRzPWl9LDQ0NzooZSx0LG4pPT57dmFyIGk7aWYobi5yKHQpLG4uZCh0LHtVUkk6KCk9PmYsVXRpbHM6KCk9Pkx9KSwib2JqZWN0Ij09dHlwZW9mIHByb2Nlc3MpaT0id2luMzIiPT09cHJvY2Vzcy5wbGF0Zm9ybTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgbmF2aWdhdG9yKXt2YXIgcj1uYXZpZ2F0b3IudXNlckFnZW50O2k9ci5pbmRleE9mKCJXaW5kb3dzIik+PTB9dmFyIGEsbyxzPShhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGE9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSkoZSx0KX0sZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyh0KSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWEoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihuLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgbil9KSxsPS9eXHdbXHdcZCsuLV0qJC8sYz0vXlwvLyxoPS9eXC9cLy87ZnVuY3Rpb24gZChlLHQpe2lmKCFlLnNjaGVtZSYmdCl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IFNjaGVtZSBpcyBtaXNzaW5nOiB7c2NoZW1lOiAiIiwgYXV0aG9yaXR5OiAiJy5jb25jYXQoZS5hdXRob3JpdHksJyIsIHBhdGg6ICInKS5jb25jYXQoZS5wYXRoLCciLCBxdWVyeTogIicpLmNvbmNhdChlLnF1ZXJ5LCciLCBmcmFnbWVudDogIicpLmNvbmNhdChlLmZyYWdtZW50LCcifScpKTtpZihlLnNjaGVtZSYmIWwudGVzdChlLnNjaGVtZSkpdGhyb3cgbmV3IEVycm9yKCJbVXJpRXJyb3JdOiBTY2hlbWUgY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXJzLiIpO2lmKGUucGF0aClpZihlLmF1dGhvcml0eSl7aWYoIWMudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYoaC50ZXN0KGUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBkb2VzIG5vdCBjb250YWluIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY2Fubm90IGJlZ2luIHdpdGggdHdvIHNsYXNoIGNoYXJhY3RlcnMgKCIvLyIpJyl9dmFyIHU9IiIsbT0iLyIscD0vXigoW146Lz8jXSs/KTopPyhcL1wvKFteLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/LyxmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixpLHIsYSl7dmFyIG8sczt2b2lkIDA9PT1hJiYoYT0hMSksIm9iamVjdCI9PXR5cGVvZiBlPyh0aGlzLnNjaGVtZT1lLnNjaGVtZXx8dSx0aGlzLmF1dGhvcml0eT1lLmF1dGhvcml0eXx8dSx0aGlzLnBhdGg9ZS5wYXRofHx1LHRoaXMucXVlcnk9ZS5xdWVyeXx8dSx0aGlzLmZyYWdtZW50PWUuZnJhZ21lbnR8fHUpOih0aGlzLnNjaGVtZT0ocz1hLChvPWUpfHxzP286ImZpbGUiKSx0aGlzLmF1dGhvcml0eT10fHx1LHRoaXMucGF0aD1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlImh0dHBzIjpjYXNlImh0dHAiOmNhc2UiZmlsZSI6dD90WzBdIT09bSYmKHQ9bSt0KTp0PW19cmV0dXJuIHR9KHRoaXMuc2NoZW1lLG58fHUpLHRoaXMucXVlcnk9aXx8dSx0aGlzLmZyYWdtZW50PXJ8fHUsZCh0aGlzLGEpKX1yZXR1cm4gZS5pc1VyaT1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGV8fCEhdCYmInN0cmluZyI9PXR5cGVvZiB0LmF1dGhvcml0eSYmInN0cmluZyI9PXR5cGVvZiB0LmZyYWdtZW50JiYic3RyaW5nIj09dHlwZW9mIHQucGF0aCYmInN0cmluZyI9PXR5cGVvZiB0LnF1ZXJ5JiYic3RyaW5nIj09dHlwZW9mIHQuc2NoZW1lJiYic3RyaW5nIj09dHlwZW9mIHQuZnNQYXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgdC53aXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgdC50b1N0cmluZ30sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJmc1BhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geSh0aGlzLCExKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS53aXRoPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiB0aGlzO3ZhciB0PWUuc2NoZW1lLG49ZS5hdXRob3JpdHksaT1lLnBhdGgscj1lLnF1ZXJ5LGE9ZS5mcmFnbWVudDtyZXR1cm4gdm9pZCAwPT09dD90PXRoaXMuc2NoZW1lOm51bGw9PT10JiYodD11KSx2b2lkIDA9PT1uP249dGhpcy5hdXRob3JpdHk6bnVsbD09PW4mJihuPXUpLHZvaWQgMD09PWk/aT10aGlzLnBhdGg6bnVsbD09PWkmJihpPXUpLHZvaWQgMD09PXI/cj10aGlzLnF1ZXJ5Om51bGw9PT1yJiYocj11KSx2b2lkIDA9PT1hP2E9dGhpcy5mcmFnbWVudDpudWxsPT09YSYmKGE9dSksdD09PXRoaXMuc2NoZW1lJiZuPT09dGhpcy5hdXRob3JpdHkmJmk9PT10aGlzLnBhdGgmJnI9PT10aGlzLnF1ZXJ5JiZhPT09dGhpcy5mcmFnbWVudD90aGlzOm5ldyBiKHQsbixpLHIsYSl9LGUucGFyc2U9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0hMSk7dmFyIG49cC5leGVjKGUpO3JldHVybiBuP25ldyBiKG5bMl18fHUseChuWzRdfHx1KSx4KG5bNV18fHUpLHgobls3XXx8dSkseChuWzldfHx1KSx0KTpuZXcgYih1LHUsdSx1LHUpfSxlLmZpbGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dTtpZihpJiYoZT1lLnJlcGxhY2UoL1xcL2csbSkpLGVbMF09PT1tJiZlWzFdPT09bSl7dmFyIG49ZS5pbmRleE9mKG0sMik7LTE9PT1uPyh0PWUuc3Vic3RyaW5nKDIpLGU9bSk6KHQ9ZS5zdWJzdHJpbmcoMixuKSxlPWUuc3Vic3RyaW5nKG4pfHxtKX1yZXR1cm4gbmV3IGIoImZpbGUiLHQsZSx1LHUpfSxlLmZyb209ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGIoZS5zY2hlbWUsZS5hdXRob3JpdHksZS5wYXRoLGUucXVlcnksZS5mcmFnbWVudCk7cmV0dXJuIGQodCwhMCksdH0sZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSxUKHRoaXMsZSl9LGUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlLnJldml2ZT1mdW5jdGlvbih0KXtpZih0KXtpZih0IGluc3RhbmNlb2YgZSlyZXR1cm4gdDt2YXIgbj1uZXcgYih0KTtyZXR1cm4gbi5fZm9ybWF0dGVkPXQuZXh0ZXJuYWwsbi5fZnNQYXRoPXQuX3NlcD09PWc/dC5mc1BhdGg6bnVsbCxufXJldHVybiB0fSxlfSgpLGc9aT8xOnZvaWQgMCxiPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgdD1udWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIHQuX2Zvcm1hdHRlZD1udWxsLHQuX2ZzUGF0aD1udWxsLHR9cmV0dXJuIHModCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImZzUGF0aCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mc1BhdGh8fCh0aGlzLl9mc1BhdGg9eSh0aGlzLCExKSksdGhpcy5fZnNQYXRofSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksZT9UKHRoaXMsITApOih0aGlzLl9mb3JtYXR0ZWR8fCh0aGlzLl9mb3JtYXR0ZWQ9VCh0aGlzLCExKSksdGhpcy5fZm9ybWF0dGVkKX0sdC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIGU9eyRtaWQ6MX07cmV0dXJuIHRoaXMuX2ZzUGF0aCYmKGUuZnNQYXRoPXRoaXMuX2ZzUGF0aCxlLl9zZXA9ZyksdGhpcy5fZm9ybWF0dGVkJiYoZS5leHRlcm5hbD10aGlzLl9mb3JtYXR0ZWQpLHRoaXMucGF0aCYmKGUucGF0aD10aGlzLnBhdGgpLHRoaXMuc2NoZW1lJiYoZS5zY2hlbWU9dGhpcy5zY2hlbWUpLHRoaXMuYXV0aG9yaXR5JiYoZS5hdXRob3JpdHk9dGhpcy5hdXRob3JpdHkpLHRoaXMucXVlcnkmJihlLnF1ZXJ5PXRoaXMucXVlcnkpLHRoaXMuZnJhZ21lbnQmJihlLmZyYWdtZW50PXRoaXMuZnJhZ21lbnQpLGV9LHR9KGYpLF89KChvPXt9KVs1OF09IiUzQSIsb1s0N109IiUyRiIsb1s2M109IiUzRiIsb1szNV09IiUyMyIsb1s5MV09IiU1QiIsb1s5M109IiU1RCIsb1s2NF09IiU0MCIsb1szM109IiUyMSIsb1szNl09IiUyNCIsb1szOF09IiUyNiIsb1szOV09IiUyNyIsb1s0MF09IiUyOCIsb1s0MV09IiUyOSIsb1s0Ml09IiUyQSIsb1s0M109IiUyQiIsb1s0NF09IiUyQyIsb1s1OV09IiUzQiIsb1s2MV09IiUzRCIsb1szMl09IiUyMCIsbyk7ZnVuY3Rpb24gdihlLHQpe2Zvcih2YXIgbj12b2lkIDAsaT0tMSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBhPWUuY2hhckNvZGVBdChyKTtpZihhPj05NyYmYTw9MTIyfHxhPj02NSYmYTw9OTB8fGE+PTQ4JiZhPD01N3x8NDU9PT1hfHw0Nj09PWF8fDk1PT09YXx8MTI2PT09YXx8dCYmNDc9PT1hKS0xIT09aSYmKG4rPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhpLHIpKSxpPS0xKSx2b2lkIDAhPT1uJiYobis9ZS5jaGFyQXQocikpO2Vsc2V7dm9pZCAwPT09biYmKG49ZS5zdWJzdHIoMCxyKSk7dmFyIG89X1thXTt2b2lkIDAhPT1vPygtMSE9PWkmJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcoaSxyKSksaT0tMSksbis9byk6LTE9PT1pJiYoaT1yKX19cmV0dXJuLTEhPT1pJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKGkpKSksdm9pZCAwIT09bj9uOmV9ZnVuY3Rpb24gdyhlKXtmb3IodmFyIHQ9dm9pZCAwLG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGk9ZS5jaGFyQ29kZUF0KG4pOzM1PT09aXx8NjM9PT1pPyh2b2lkIDA9PT10JiYodD1lLnN1YnN0cigwLG4pKSx0Kz1fW2ldKTp2b2lkIDAhPT10JiYodCs9ZVtuXSl9cmV0dXJuIHZvaWQgMCE9PXQ/dDplfWZ1bmN0aW9uIHkoZSx0KXt2YXIgbjtyZXR1cm4gbj1lLmF1dGhvcml0eSYmZS5wYXRoLmxlbmd0aD4xJiYiZmlsZSI9PT1lLnNjaGVtZT8iLy8iLmNvbmNhdChlLmF1dGhvcml0eSkuY29uY2F0KGUucGF0aCk6NDc9PT1lLnBhdGguY2hhckNvZGVBdCgwKSYmKGUucGF0aC5jaGFyQ29kZUF0KDEpPj02NSYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTkwfHxlLnBhdGguY2hhckNvZGVBdCgxKT49OTcmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD0xMjIpJiY1OD09PWUucGF0aC5jaGFyQ29kZUF0KDIpP3Q/ZS5wYXRoLnN1YnN0cigxKTplLnBhdGhbMV0udG9Mb3dlckNhc2UoKStlLnBhdGguc3Vic3RyKDIpOmUucGF0aCxpJiYobj1uLnJlcGxhY2UoL1wvL2csIlxcIikpLG59ZnVuY3Rpb24gVChlLHQpe3ZhciBuPXQ/dzp2LGk9IiIscj1lLnNjaGVtZSxhPWUuYXV0aG9yaXR5LG89ZS5wYXRoLHM9ZS5xdWVyeSxsPWUuZnJhZ21lbnQ7aWYociYmKGkrPXIsaSs9IjoiKSwoYXx8ImZpbGUiPT09cikmJihpKz1tLGkrPW0pLGEpe3ZhciBjPWEuaW5kZXhPZigiQCIpO2lmKC0xIT09Yyl7dmFyIGg9YS5zdWJzdHIoMCxjKTthPWEuc3Vic3RyKGMrMSksLTE9PT0oYz1oLmluZGV4T2YoIjoiKSk/aSs9bihoLCExKTooaSs9bihoLnN1YnN0cigwLGMpLCExKSxpKz0iOiIsaSs9bihoLnN1YnN0cihjKzEpLCExKSksaSs9IkAifS0xPT09KGM9KGE9YS50b0xvd2VyQ2FzZSgpKS5pbmRleE9mKCI6IikpP2krPW4oYSwhMSk6KGkrPW4oYS5zdWJzdHIoMCxjKSwhMSksaSs9YS5zdWJzdHIoYykpfWlmKG8pe2lmKG8ubGVuZ3RoPj0zJiY0Nz09PW8uY2hhckNvZGVBdCgwKSYmNTg9PT1vLmNoYXJDb2RlQXQoMikpKGQ9by5jaGFyQ29kZUF0KDEpKT49NjUmJmQ8PTkwJiYobz0iLyIuY29uY2F0KFN0cmluZy5mcm9tQ2hhckNvZGUoZCszMiksIjoiKS5jb25jYXQoby5zdWJzdHIoMykpKTtlbHNlIGlmKG8ubGVuZ3RoPj0yJiY1OD09PW8uY2hhckNvZGVBdCgxKSl7dmFyIGQ7KGQ9by5jaGFyQ29kZUF0KDApKT49NjUmJmQ8PTkwJiYobz0iIi5jb25jYXQoU3RyaW5nLmZyb21DaGFyQ29kZShkKzMyKSwiOiIpLmNvbmNhdChvLnN1YnN0cigyKSkpfWkrPW4obywhMCl9cmV0dXJuIHMmJihpKz0iPyIsaSs9bihzLCExKSksbCYmKGkrPSIjIixpKz10P2w6dihsLCExKSksaX1mdW5jdGlvbiBrKGUpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGUpfWNhdGNoKHQpe3JldHVybiBlLmxlbmd0aD4zP2Uuc3Vic3RyKDAsMykrayhlLnN1YnN0cigzKSk6ZX19dmFyIFM9LyglWzAtOUEtWmEtel1bMC05QS1aYS16XSkrL2c7ZnVuY3Rpb24geChlKXtyZXR1cm4gZS5tYXRjaChTKT9lLnJlcGxhY2UoUywoZnVuY3Rpb24oZSl7cmV0dXJuIGsoZSl9KSk6ZX12YXIgTCxDLEU9big0NzApLEE9ZnVuY3Rpb24oZSx0LG4pe2lmKG58fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgaSxyPTAsYT10Lmxlbmd0aDtyPGE7cisrKSFpJiZyIGluIHR8fChpfHwoaT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDAscikpLGlbcl09dFtyXSk7cmV0dXJuIGUuY29uY2F0KGl8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKX0sTT1FLnBvc2l4fHxFOyhDPUx8fChMPXt9KSkuam9pblBhdGg9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07cmV0dXJuIGUud2l0aCh7cGF0aDpNLmpvaW4uYXBwbHkoTSxBKFtlLnBhdGhdLHQsITEpKX0pfSxDLnJlc29sdmVQYXRoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3ZhciBpPWUucGF0aHx8Ii8iO3JldHVybiBlLndpdGgoe3BhdGg6TS5yZXNvbHZlLmFwcGx5KE0sQShbaV0sdCwhMSkpfSl9LEMuZGlybmFtZT1mdW5jdGlvbihlKXt2YXIgdD1NLmRpcm5hbWUoZS5wYXRoKTtyZXR1cm4gMT09PXQubGVuZ3RoJiY0Nj09PXQuY2hhckNvZGVBdCgwKT9lOmUud2l0aCh7cGF0aDp0fSl9LEMuYmFzZW5hbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIE0uYmFzZW5hbWUoZS5wYXRoKX0sQy5leHRuYW1lPWZ1bmN0aW9uKGUpe3JldHVybiBNLmV4dG5hbWUoZS5wYXRoKX19fSx0PXt9O2Z1bmN0aW9uIG4oaSl7aWYodFtpXSlyZXR1cm4gdFtpXS5leHBvcnRzO3ZhciByPXRbaV09e2V4cG9ydHM6e319O3JldHVybiBlW2ldKHIsci5leHBvcnRzLG4pLHIuZXhwb3J0c31yZXR1cm4gbi5kPShlLHQpPT57Zm9yKHZhciBpIGluIHQpbi5vKHQsaSkmJiFuLm8oZSxpKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaSx7ZW51bWVyYWJsZTohMCxnZXQ6dFtpXX0pfSxuLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpLG4ucj1lPT57InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sbig0NDcpfSkoKTt2YXJ7VVJJOnBzLFV0aWxzOmZzfT1vcztmdW5jdGlvbiBncyhlKXt2YXIgdD1lWzBdO3JldHVybiB0IT09ZVtlLmxlbmd0aC0xXXx8IiciIT09dCYmJyInIT09dHx8KGU9ZS5zdWJzdHIoMSxlLmxlbmd0aC0yKSksZX1mdW5jdGlvbiBicyhlLHQsbixpLHIsYSl7dmFyIG89Z3Mobik7aWYocz1vLGw9ZS5sYW5ndWFnZUlkLHMubGVuZ3RoJiYoImhhbmRsZWJhcnMiIT09bHx8IS97e3x9fS8udGVzdChzKSkmJi9cYih3W1x3XGQrLi1dKjpcL1wvKT9bXlxzKCk8Pl0rKD86XChbXHdcZF0rXCl8KFteWzpwdW5jdDpdXHNdfFwvPykpLy50ZXN0KHMpKXt2YXIgcyxsO28ubGVuZ3RoPG4ubGVuZ3RoJiYoaSsrLHItLSk7dmFyIGM9ZnVuY3Rpb24oZSx0LG4saSl7aWYoIS9eXHMqamF2YXNjcmlwdFw6L2kudGVzdCh0KSYmIS9bXG5ccl0vLnRlc3QodCkpcmV0dXJuIHQ9dC5yZXBsYWNlKC9eXHMqL2csIiIpLC9eaHR0cHM/OlwvXC8vaS50ZXN0KHQpfHwvXmZpbGU6XC9cLy9pLnRlc3QodCk/dDovXlwjL2kudGVzdCh0KT9lK3Q6L15cL1wvL2kudGVzdCh0KT8oRW8oZSwiaHR0cHM6Ly8iKT8iaHR0cHMiOiJodHRwIikrIjoiK3QucmVwbGFjZSgvXlxzKi9nLCIiKTpuP24ucmVzb2x2ZVJlZmVyZW5jZSh0LGl8fGUpOnR9KGUudXJpLG8sdCxhKTtpZihjJiZmdW5jdGlvbihlKXt0cnl7cmV0dXJuIHBzLnBhcnNlKGUpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oYykpcmV0dXJue3JhbmdlOlFpLmNyZWF0ZShlLnBvc2l0aW9uQXQoaSksZS5wb3NpdGlvbkF0KHIpKSx0YXJnZXQ6Y319fWZ1bmN0aW9uIF9zKGUsdCl7Zm9yKHZhciBuPVtdLGk9eW8oZS5nZXRUZXh0KCksMCkscj1pLnNjYW4oKSxhPXZvaWQgMCxvPSExLHM9dm9pZCAwLGw9e307ciE9PWphLkVPUzspe3N3aXRjaChyKXtjYXNlIGphLlN0YXJ0VGFnOmlmKCFzKW89ImJhc2UiPT09aS5nZXRUb2tlblRleHQoKS50b0xvd2VyQ2FzZSgpO2JyZWFrO2Nhc2UgamEuQXR0cmlidXRlTmFtZTphPWkuZ2V0VG9rZW5UZXh0KCkudG9Mb3dlckNhc2UoKTticmVhaztjYXNlIGphLkF0dHJpYnV0ZVZhbHVlOmlmKCJzcmMiPT09YXx8ImhyZWYiPT09YSl7dmFyIGM9aS5nZXRUb2tlblRleHQoKTtpZighbykodT1icyhlLHQsYyxpLmdldFRva2VuT2Zmc2V0KCksaS5nZXRUb2tlbkVuZCgpLHMpKSYmbi5wdXNoKHUpO28mJnZvaWQgMD09PXMmJihzPWdzKGMpKSYmdCYmKHM9dC5yZXNvbHZlUmVmZXJlbmNlKHMsZS51cmkpKSxvPSExLGE9dm9pZCAwfWVsc2UgaWYoImlkIj09PWEpe2xbZ3MoaS5nZXRUb2tlblRleHQoKSldPWkuZ2V0VG9rZW5PZmZzZXQoKX19cj1pLnNjYW4oKX1mb3IodmFyIGg9MCxkPW47aDxkLmxlbmd0aDtoKyspe3ZhciB1PWRbaF0sbT1lLnVyaSsiIyI7aWYodS50YXJnZXQmJkVvKHUudGFyZ2V0LG0pKXt2YXIgcD1sW3UudGFyZ2V0LnN1YnN0cihtLmxlbmd0aCldO2lmKHZvaWQgMCE9PXApe3ZhciBmPWUucG9zaXRpb25BdChwKTt1LnRhcmdldD0iIi5jb25jYXQobSkuY29uY2F0KGYubGluZSsxLCIsIikuY29uY2F0KGYuY2hhcmFjdGVyKzEpfX19cmV0dXJuIG59ZnVuY3Rpb24gdnMoZSx0LG4pe3ZhciBpPWUub2Zmc2V0QXQodCkscj1uLmZpbmROb2RlQXQoaSk7aWYoIXIudGFnKXJldHVybltdO3ZhciBhPVtdLG89VHMoamEuU3RhcnRUYWcsZSxyLnN0YXJ0KSxzPSJudW1iZXIiPT10eXBlb2Ygci5lbmRUYWdTdGFydCYmVHMoamEuRW5kVGFnLGUsci5lbmRUYWdTdGFydCk7cmV0dXJuKG8mJnlzKG8sdCl8fHMmJnlzKHMsdCkpJiYobyYmYS5wdXNoKHtraW5kOnBhLlJlYWQscmFuZ2U6b30pLHMmJmEucHVzaCh7a2luZDpwYS5SZWFkLHJhbmdlOnN9KSksYX1mdW5jdGlvbiB3cyhlLHQpe3JldHVybiBlLmxpbmU8dC5saW5lfHxlLmxpbmU9PT10LmxpbmUmJmUuY2hhcmFjdGVyPD10LmNoYXJhY3Rlcn1mdW5jdGlvbiB5cyhlLHQpe3JldHVybiB3cyhlLnN0YXJ0LHQpJiZ3cyh0LGUuZW5kKX1mdW5jdGlvbiBUcyhlLHQsbil7Zm9yKHZhciBpPXlvKHQuZ2V0VGV4dCgpLG4pLHI9aS5zY2FuKCk7ciE9PWphLkVPUyYmciE9PWU7KXI9aS5zY2FuKCk7cmV0dXJuIHIhPT1qYS5FT1M/e3N0YXJ0OnQucG9zaXRpb25BdChpLmdldFRva2VuT2Zmc2V0KCkpLGVuZDp0LnBvc2l0aW9uQXQoaS5nZXRUb2tlbkVuZCgpKX06bnVsbH1mdW5jdGlvbiBrcyhlLHQpe3ZhciBuPVtdO3JldHVybiB0LnJvb3RzLmZvckVhY2goKGZ1bmN0aW9uKHQpe1NzKGUsdCwiIixuKX0pKSxufWZ1bmN0aW9uIFNzKGUsdCxuLGkpe3ZhciByPWZ1bmN0aW9uKGUpe3ZhciB0PWUudGFnO2lmKGUuYXR0cmlidXRlcyl7dmFyIG49ZS5hdHRyaWJ1dGVzLmlkLGk9ZS5hdHRyaWJ1dGVzLmNsYXNzO24mJih0Kz0iIyIuY29uY2F0KG4ucmVwbGFjZSgvW1wiXCddL2csIiIpKSksaSYmKHQrPWkucmVwbGFjZSgvW1wiXCddL2csIiIpLnNwbGl0KC9ccysvKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiIuIi5jb25jYXQoZSl9KSkuam9pbigiIikpfXJldHVybiB0fHwiPyJ9KHQpLGE9ZXIuY3JlYXRlKGUudXJpLFFpLmNyZWF0ZShlLnBvc2l0aW9uQXQodC5zdGFydCksZS5wb3NpdGlvbkF0KHQuZW5kKSkpLG89e25hbWU6cixsb2NhdGlvbjphLGNvbnRhaW5lck5hbWU6bixraW5kOmJhLkZpZWxkfTtpLnB1c2gobyksdC5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbih0KXtTcyhlLHQscixpKX0pKX1mdW5jdGlvbiB4cyhlLHQsbixpKXt2YXIgcixhPWUub2Zmc2V0QXQodCksbz1pLmZpbmROb2RlQXQoYSk7aWYoIW8udGFnKXJldHVybiBudWxsO2lmKCFmdW5jdGlvbihlLHQsbil7aWYoZS5lbmRUYWdTdGFydCYmZS5lbmRUYWdTdGFydCsyPD10JiZ0PD1lLmVuZFRhZ1N0YXJ0KzIrbi5sZW5ndGgpcmV0dXJuITA7cmV0dXJuIGUuc3RhcnQrMTw9dCYmdDw9ZS5zdGFydCsxK24ubGVuZ3RofShvLGEsby50YWcpKXJldHVybiBudWxsO3ZhciBzPVtdLGw9e3N0YXJ0OmUucG9zaXRpb25BdChvLnN0YXJ0KzEpLGVuZDplLnBvc2l0aW9uQXQoby5zdGFydCsxK28udGFnLmxlbmd0aCl9O2lmKHMucHVzaCh7cmFuZ2U6bCxuZXdUZXh0Om59KSxvLmVuZFRhZ1N0YXJ0KXt2YXIgYz17c3RhcnQ6ZS5wb3NpdGlvbkF0KG8uZW5kVGFnU3RhcnQrMiksZW5kOmUucG9zaXRpb25BdChvLmVuZFRhZ1N0YXJ0KzIrby50YWcubGVuZ3RoKX07cy5wdXNoKHtyYW5nZTpjLG5ld1RleHQ6bn0pfXJldHVybntjaGFuZ2VzOigocj17fSlbZS51cmkudG9TdHJpbmcoKV09cyxyKX19ZnVuY3Rpb24gTHMoZSx0LG4pe3ZhciBpPWUub2Zmc2V0QXQodCkscj1uLmZpbmROb2RlQXQoaSk7aWYoIXIudGFnKXJldHVybiBudWxsO2lmKCFyLmVuZFRhZ1N0YXJ0KXJldHVybiBudWxsO2lmKHIuc3RhcnQrMTw9aSYmaTw9ci5zdGFydCsxK3IudGFnLmxlbmd0aCl7dmFyIGE9aS0xLXIuc3RhcnQrci5lbmRUYWdTdGFydCsyO3JldHVybiBlLnBvc2l0aW9uQXQoYSl9aWYoci5lbmRUYWdTdGFydCsyPD1pJiZpPD1yLmVuZFRhZ1N0YXJ0KzIrci50YWcubGVuZ3RoKXthPWktMi1yLmVuZFRhZ1N0YXJ0K3Iuc3RhcnQrMTtyZXR1cm4gZS5wb3NpdGlvbkF0KGEpfXJldHVybiBudWxsfWZ1bmN0aW9uIENzKGUsdCxuKXt2YXIgaT1lLm9mZnNldEF0KHQpLHI9bi5maW5kTm9kZUF0KGkpLGE9ci50YWc/ci50YWcubGVuZ3RoOjA7cmV0dXJuIHIuZW5kVGFnU3RhcnQmJihyLnN0YXJ0KzE8PWkmJmk8PXIuc3RhcnQrMSthfHxyLmVuZFRhZ1N0YXJ0KzI8PWkmJmk8PXIuZW5kVGFnU3RhcnQrMithKT9bUWkuY3JlYXRlKGUucG9zaXRpb25BdChyLnN0YXJ0KzEpLGUucG9zaXRpb25BdChyLnN0YXJ0KzErYSkpLFFpLmNyZWF0ZShlLnBvc2l0aW9uQXQoci5lbmRUYWdTdGFydCsyKSxlLnBvc2l0aW9uQXQoci5lbmRUYWdTdGFydCsyK2EpKV06bnVsbH1mdW5jdGlvbiBFcyhlLHQpe3ZhciBuPXlvKGUuZ2V0VGV4dCgpKSxpPW4uc2NhbigpLHI9W10sYT1bXSxvPW51bGwscz0tMTtmdW5jdGlvbiBsKGUpe3IucHVzaChlKSxzPWUuc3RhcnRMaW5lfWZvcig7aSE9PWphLkVPUzspe3N3aXRjaChpKXtjYXNlIGphLlN0YXJ0VGFnOnZhciBjPW4uZ2V0VG9rZW5UZXh0KCksaD1lLnBvc2l0aW9uQXQobi5nZXRUb2tlbk9mZnNldCgpKS5saW5lO2EucHVzaCh7c3RhcnRMaW5lOmgsdGFnTmFtZTpjfSksbz1jO2JyZWFrO2Nhc2UgamEuRW5kVGFnOm89bi5nZXRUb2tlblRleHQoKTticmVhaztjYXNlIGphLlN0YXJ0VGFnQ2xvc2U6aWYoIW98fCFTbyhvKSlicmVhaztjYXNlIGphLkVuZFRhZ0Nsb3NlOmNhc2UgamEuU3RhcnRUYWdTZWxmQ2xvc2U6Zm9yKHZhciBkPWEubGVuZ3RoLTE7ZD49MCYmYVtkXS50YWdOYW1lIT09bzspZC0tO2lmKGQ+PTApe3ZhciB1PWFbZF07YS5sZW5ndGg9ZCwocD1lLnBvc2l0aW9uQXQobi5nZXRUb2tlbk9mZnNldCgpKS5saW5lLTEpPihoPXUuc3RhcnRMaW5lKSYmcyE9PWgmJmwoe3N0YXJ0TGluZTpoLGVuZExpbmU6cH0pfWJyZWFrO2Nhc2UgamEuQ29tbWVudDpoPWUucG9zaXRpb25BdChuLmdldFRva2VuT2Zmc2V0KCkpLmxpbmU7dmFyIG09bi5nZXRUb2tlblRleHQoKS5tYXRjaCgvXlxzKiMocmVnaW9uXGIpfChlbmRyZWdpb25cYikvKTtpZihtKWlmKG1bMV0pYS5wdXNoKHtzdGFydExpbmU6aCx0YWdOYW1lOiIifSk7ZWxzZXtmb3IoZD1hLmxlbmd0aC0xO2Q+PTAmJmFbZF0udGFnTmFtZS5sZW5ndGg7KWQtLTtpZihkPj0wKXt2YXIgcDt1PWFbZF07YS5sZW5ndGg9ZCwocD1oKT4oaD11LnN0YXJ0TGluZSkmJnMhPT1oJiZsKHtzdGFydExpbmU6aCxlbmRMaW5lOnAsa2luZDpoci5SZWdpb259KX19ZWxzZSBoPChwPWUucG9zaXRpb25BdChuLmdldFRva2VuT2Zmc2V0KCkrbi5nZXRUb2tlbkxlbmd0aCgpKS5saW5lKSYmbCh7c3RhcnRMaW5lOmgsZW5kTGluZTpwLGtpbmQ6aHIuQ29tbWVudH0pfWk9bi5zY2FuKCl9dmFyIGY9dCYmdC5yYW5nZUxpbWl0fHxOdW1iZXIuTUFYX1ZBTFVFO3JldHVybiByLmxlbmd0aD5mP2Z1bmN0aW9uKGUsdCl7ZT1lLnNvcnQoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5zdGFydExpbmUtdC5zdGFydExpbmU7cmV0dXJuIDA9PT1uJiYobj1lLmVuZExpbmUtdC5lbmRMaW5lKSxufSkpO2Zvcih2YXIgbj12b2lkIDAsaT1bXSxyPVtdLGE9W10sbz1mdW5jdGlvbihlLHQpe3JbZV09dCx0PDMwJiYoYVt0XT0oYVt0XXx8MCkrMSl9LHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIGw9ZVtzXTtpZihuKXtpZihsLnN0YXJ0TGluZT5uLnN0YXJ0TGluZSlpZihsLmVuZExpbmU8PW4uZW5kTGluZSlpLnB1c2gobiksbj1sLG8ocyxpLmxlbmd0aCk7ZWxzZSBpZihsLnN0YXJ0TGluZT5uLmVuZExpbmUpe2Rve249aS5wb3AoKX13aGlsZShuJiZsLnN0YXJ0TGluZT5uLmVuZExpbmUpO24mJmkucHVzaChuKSxuPWwsbyhzLGkubGVuZ3RoKX19ZWxzZSBuPWwsbyhzLDApfXZhciBjPTAsaD0wO2ZvcihzPTA7czxhLmxlbmd0aDtzKyspe3ZhciBkPWFbc107aWYoZCl7aWYoZCtjPnQpe2g9czticmVha31jKz1kfX12YXIgdT1bXTtmb3Iocz0wO3M8ZS5sZW5ndGg7cysrKXt2YXIgbT1yW3NdOyJudW1iZXIiPT10eXBlb2YgbSYmKG08aHx8bT09PWgmJmMrKzx0KSYmdS5wdXNoKGVbc10pfXJldHVybiB1fShyLGYpOnJ9ZnVuY3Rpb24gQXMoZSx0KXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1mdW5jdGlvbihlLHQpe3ZhciBuPUxvKGUuZ2V0VGV4dCgpKSxpPWUub2Zmc2V0QXQodCkscj1uLmZpbmROb2RlQXQoaSksYT1mdW5jdGlvbihlKXt2YXIgdD1lLG49ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3RhcnRUYWdFbmQmJmUuZW5kVGFnU3RhcnQmJmUuc3RhcnRUYWdFbmQ8ZS5lbmRUYWdTdGFydD9bW2Uuc3RhcnRUYWdFbmQsZS5lbmRUYWdTdGFydF0sW2Uuc3RhcnQsZS5lbmRdXTpbW2Uuc3RhcnQsZS5lbmRdXX0saT1bXTtmb3IoO3QucGFyZW50OyluKHQ9dC5wYXJlbnQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBpLnB1c2goZSl9KSk7cmV0dXJuIGl9KHIpO2lmKHIuc3RhcnRUYWdFbmQmJiFyLmVuZFRhZ1N0YXJ0KXtpZihyLnN0YXJ0VGFnRW5kIT09ci5lbmQpcmV0dXJuW1tyLnN0YXJ0LHIuZW5kXV07dmFyIG89UWkuY3JlYXRlKGUucG9zaXRpb25BdChyLnN0YXJ0VGFnRW5kLTIpLGUucG9zaXRpb25BdChyLnN0YXJ0VGFnRW5kKSk7cmV0dXJuIi8+Ij09PWUuZ2V0VGV4dChvKT9hLnVuc2hpZnQoW3Iuc3RhcnQrMSxyLnN0YXJ0VGFnRW5kLTJdKTphLnVuc2hpZnQoW3Iuc3RhcnQrMSxyLnN0YXJ0VGFnRW5kLTFdKSxhPU1zKGUscixpKS5jb25jYXQoYSl9aWYoIXIuc3RhcnRUYWdFbmR8fCFyLmVuZFRhZ1N0YXJ0KXJldHVybiBhO3JldHVybiBhLnVuc2hpZnQoW3Iuc3RhcnQsci5lbmRdKSxyLnN0YXJ0PGkmJmk8ci5zdGFydFRhZ0VuZD8oYS51bnNoaWZ0KFtyLnN0YXJ0KzEsci5zdGFydFRhZ0VuZC0xXSksYT1NcyhlLHIsaSkuY29uY2F0KGEpKTpyLnN0YXJ0VGFnRW5kPD1pJiZpPD1yLmVuZFRhZ1N0YXJ0PyhhLnVuc2hpZnQoW3Iuc3RhcnRUYWdFbmQsci5lbmRUYWdTdGFydF0pLGEpOihpPj1yLmVuZFRhZ1N0YXJ0KzImJmEudW5zaGlmdChbci5lbmRUYWdTdGFydCsyLHIuZW5kLTFdKSxhKX0oZSx0KSxpPXZvaWQgMCxyPXZvaWQgMCxhPW4ubGVuZ3RoLTE7YT49MDthLS0pe3ZhciBvPW5bYV07aSYmb1swXT09PWlbMF0mJm9bMV09PT1pWzFdfHwocj1IYS5jcmVhdGUoUWkuY3JlYXRlKGUucG9zaXRpb25BdChuW2FdWzBdKSxlLnBvc2l0aW9uQXQoblthXVsxXSkpLHIpKSxpPW99cmV0dXJuIHJ8fChyPUhhLmNyZWF0ZShRaS5jcmVhdGUodCx0KSkpLHJ9KSl9ZnVuY3Rpb24gTXMoZSx0LG4pe2Zvcih2YXIgaT1RaS5jcmVhdGUoZS5wb3NpdGlvbkF0KHQuc3RhcnQpLGUucG9zaXRpb25BdCh0LmVuZCkpLHI9ZS5nZXRUZXh0KGkpLGE9bi10LnN0YXJ0LG89eW8ocikscz1vLnNjYW4oKSxsPXQuc3RhcnQsYz1bXSxoPSExLGQ9LTE7cyE9PWphLkVPUzspe3N3aXRjaChzKXtjYXNlIGphLkF0dHJpYnV0ZU5hbWU6aWYoYTxvLmdldFRva2VuT2Zmc2V0KCkpe2g9ITE7YnJlYWt9YTw9by5nZXRUb2tlbkVuZCgpJiZjLnVuc2hpZnQoW28uZ2V0VG9rZW5PZmZzZXQoKSxvLmdldFRva2VuRW5kKCldKSxoPSEwLGQ9by5nZXRUb2tlbk9mZnNldCgpO2JyZWFrO2Nhc2UgamEuQXR0cmlidXRlVmFsdWU6aWYoIWgpYnJlYWs7dmFyIHU9by5nZXRUb2tlblRleHQoKTtpZihhPG8uZ2V0VG9rZW5PZmZzZXQoKSl7Yy5wdXNoKFtkLG8uZ2V0VG9rZW5FbmQoKV0pO2JyZWFrfWE+PW8uZ2V0VG9rZW5PZmZzZXQoKSYmYTw9by5nZXRUb2tlbkVuZCgpJiYoYy51bnNoaWZ0KFtvLmdldFRva2VuT2Zmc2V0KCksby5nZXRUb2tlbkVuZCgpXSksKCciJz09PXVbMF0mJiciJz09PXVbdS5sZW5ndGgtMV18fCInIj09PXVbMF0mJiInIj09PXVbdS5sZW5ndGgtMV0pJiZhPj1vLmdldFRva2VuT2Zmc2V0KCkrMSYmYTw9by5nZXRUb2tlbkVuZCgpLTEmJmMudW5zaGlmdChbby5nZXRUb2tlbk9mZnNldCgpKzEsby5nZXRUb2tlbkVuZCgpLTFdKSxjLnB1c2goW2Qsby5nZXRUb2tlbkVuZCgpXSkpfXM9by5zY2FuKCl9cmV0dXJuIGMubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bZVswXStsLGVbMV0rbF19KSl9dmFyIFJzPXt2ZXJzaW9uOjEuMSx0YWdzOlt7bmFtZToiaHRtbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGh0bWwgZWxlbWVudCByZXByZXNlbnRzIHRoZSByb290IG9mIGFuIEhUTUwgZG9jdW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6Im1hbmlmZXN0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJTcGVjaWZpZXMgdGhlIFVSSSBvZiBhIHJlc291cmNlIG1hbmlmZXN0IGluZGljYXRpbmcgcmVzb3VyY2VzIHRoYXQgc2hvdWxkIGJlIGNhY2hlZCBsb2NhbGx5LiBTZWUgW1VzaW5nIHRoZSBhcHBsaWNhdGlvbiBjYWNoZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9Vc2luZ190aGVfYXBwbGljYXRpb25fY2FjaGUpIGZvciBkZXRhaWxzLiJ9fSx7bmFtZToidmVyc2lvbiIsZGVzY3JpcHRpb246J1NwZWNpZmllcyB0aGUgdmVyc2lvbiBvZiB0aGUgSFRNTCBbRG9jdW1lbnQgVHlwZSBEZWZpbml0aW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0RURCAiRG9jdW1lbnQgVHlwZSBEZWZpbml0aW9uOiBJbiBIVE1MLCB0aGUgZG9jdHlwZSBpcyB0aGUgcmVxdWlyZWQgIjwhRE9DVFlQRSBodG1sPiIgcHJlYW1ibGUgZm91bmQgYXQgdGhlIHRvcCBvZiBhbGwgZG9jdW1lbnRzLiBJdHMgc29sZSBwdXJwb3NlIGlzIHRvIHByZXZlbnQgYSBicm93c2VyIGZyb20gc3dpdGNoaW5nIGludG8gc28tY2FsbGVkIOKAnHF1aXJrcyBtb2Rl4oCdIHdoZW4gcmVuZGVyaW5nIGEgZG9jdW1lbnQ7IHRoYXQgaXMsIHRoZSAiPCFET0NUWVBFIGh0bWw+IiBkb2N0eXBlIGVuc3VyZXMgdGhhdCB0aGUgYnJvd3NlciBtYWtlcyBhIGJlc3QtZWZmb3J0IGF0dGVtcHQgYXQgZm9sbG93aW5nIHRoZSByZWxldmFudCBzcGVjaWZpY2F0aW9ucywgcmF0aGVyIHRoYW4gdXNpbmcgYSBkaWZmZXJlbnQgcmVuZGVyaW5nIG1vZGUgdGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aCBzb21lIHNwZWNpZmljYXRpb25zLiIpIHRoYXQgZ292ZXJucyB0aGUgY3VycmVudCBkb2N1bWVudC4gVGhpcyBhdHRyaWJ1dGUgaXMgbm90IG5lZWRlZCwgYmVjYXVzZSBpdCBpcyByZWR1bmRhbnQgd2l0aCB0aGUgdmVyc2lvbiBpbmZvcm1hdGlvbiBpbiB0aGUgZG9jdW1lbnQgdHlwZSBkZWNsYXJhdGlvbi4nfSx7bmFtZToieG1sbnMiLGRlc2NyaXB0aW9uOidTcGVjaWZpZXMgdGhlIFhNTCBOYW1lc3BhY2Ugb2YgdGhlIGRvY3VtZW50LiBEZWZhdWx0IHZhbHVlIGlzIGAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCJgLiBUaGlzIGlzIHJlcXVpcmVkIGluIGRvY3VtZW50cyBwYXJzZWQgd2l0aCBYTUwgcGFyc2VycywgYW5kIG9wdGlvbmFsIGluIHRleHQvaHRtbCBkb2N1bWVudHMuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9odG1sIn1dfSx7bmFtZToiaGVhZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhlYWQgZWxlbWVudCByZXByZXNlbnRzIGEgY29sbGVjdGlvbiBvZiBtZXRhZGF0YSBmb3IgdGhlIERvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJwcm9maWxlIixkZXNjcmlwdGlvbjoiVGhlIFVSSXMgb2Ygb25lIG9yIG1vcmUgbWV0YWRhdGEgcHJvZmlsZXMsIHNlcGFyYXRlZCBieSB3aGl0ZSBzcGFjZS4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2hlYWQifV19LHtuYW1lOiJ0aXRsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRpdGxlIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgZG9jdW1lbnQncyB0aXRsZSBvciBuYW1lLiBBdXRob3JzIHNob3VsZCB1c2UgdGl0bGVzIHRoYXQgaWRlbnRpZnkgdGhlaXIgZG9jdW1lbnRzIGV2ZW4gd2hlbiB0aGV5IGFyZSB1c2VkIG91dCBvZiBjb250ZXh0LCBmb3IgZXhhbXBsZSBpbiBhIHVzZXIncyBoaXN0b3J5IG9yIGJvb2ttYXJrcywgb3IgaW4gc2VhcmNoIHJlc3VsdHMuIFRoZSBkb2N1bWVudCdzIHRpdGxlIGlzIG9mdGVuIGRpZmZlcmVudCBmcm9tIGl0cyBmaXJzdCBoZWFkaW5nLCBzaW5jZSB0aGUgZmlyc3QgaGVhZGluZyBkb2VzIG5vdCBoYXZlIHRvIHN0YW5kIGFsb25lIHdoZW4gdGFrZW4gb3V0IG9mIGNvbnRleHQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGl0bGUifV19LHtuYW1lOiJiYXNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYmFzZSBlbGVtZW50IGFsbG93cyBhdXRob3JzIHRvIHNwZWNpZnkgdGhlIGRvY3VtZW50IGJhc2UgVVJMIGZvciB0aGUgcHVycG9zZXMgb2YgcmVzb2x2aW5nIHJlbGF0aXZlIFVSTHMsIGFuZCB0aGUgbmFtZSBvZiB0aGUgZGVmYXVsdCBicm93c2luZyBjb250ZXh0IGZvciB0aGUgcHVycG9zZXMgb2YgZm9sbG93aW5nIGh5cGVybGlua3MuIFRoZSBlbGVtZW50IGRvZXMgbm90IHJlcHJlc2VudCBhbnkgY29udGVudCBiZXlvbmQgdGhpcyBpbmZvcm1hdGlvbi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiaHJlZiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJhc2UgVVJMIHRvIGJlIHVzZWQgdGhyb3VnaG91dCB0aGUgZG9jdW1lbnQgZm9yIHJlbGF0aXZlIFVSTCBhZGRyZXNzZXMuIElmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgdGhpcyBlbGVtZW50IG11c3QgY29tZSBiZWZvcmUgYW55IG90aGVyIGVsZW1lbnRzIHdpdGggYXR0cmlidXRlcyB3aG9zZSB2YWx1ZXMgYXJlIFVSTHMuIEFic29sdXRlIGFuZCByZWxhdGl2ZSBVUkxzIGFyZSBhbGxvd2VkLiJ9fSx7bmFtZToidGFyZ2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIG5hbWUgb3Iga2V5d29yZCBpbmRpY2F0aW5nIHRoZSBkZWZhdWx0IGxvY2F0aW9uIHRvIGRpc3BsYXkgdGhlIHJlc3VsdCB3aGVuIGh5cGVybGlua3Mgb3IgZm9ybXMgY2F1c2UgbmF2aWdhdGlvbiwgZm9yIGVsZW1lbnRzIHRoYXQgZG8gbm90IGhhdmUgYW4gZXhwbGljaXQgdGFyZ2V0IHJlZmVyZW5jZS4gSXQgaXMgYSBuYW1lIG9mLCBvciBrZXl3b3JkIGZvciwgYSBfYnJvd3NpbmcgY29udGV4dF8gKGZvciBleGFtcGxlOiB0YWIsIHdpbmRvdywgb3IgaW5saW5lIGZyYW1lKS4gVGhlIGZvbGxvd2luZyBrZXl3b3JkcyBoYXZlIHNwZWNpYWwgbWVhbmluZ3M6XG5cbiogICBgX3NlbGZgOiBMb2FkIHRoZSByZXN1bHQgaW50byB0aGUgc2FtZSBicm93c2luZyBjb250ZXh0IGFzIHRoZSBjdXJyZW50IG9uZS4gVGhpcyB2YWx1ZSBpcyB0aGUgZGVmYXVsdCBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQuXG4qICAgYF9ibGFua2A6IExvYWQgdGhlIHJlc3VsdCBpbnRvIGEgbmV3IHVubmFtZWQgYnJvd3NpbmcgY29udGV4dC5cbiogICBgX3BhcmVudGA6IExvYWQgdGhlIHJlc3VsdCBpbnRvIHRoZSBwYXJlbnQgYnJvd3NpbmcgY29udGV4dCBvZiB0aGUgY3VycmVudCBvbmUuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cbiogICBgX3RvcGA6IExvYWQgdGhlIHJlc3VsdCBpbnRvIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCAodGhhdCBpcywgdGhlIGJyb3dzaW5nIGNvbnRleHQgdGhhdCBpcyBhbiBhbmNlc3RvciBvZiB0aGUgY3VycmVudCBvbmUsIGFuZCBoYXMgbm8gcGFyZW50KS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIG9wdGlvbiBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIHRoaXMgZWxlbWVudCBtdXN0IGNvbWUgYmVmb3JlIGFueSBvdGhlciBlbGVtZW50cyB3aXRoIGF0dHJpYnV0ZXMgd2hvc2UgdmFsdWVzIGFyZSBVUkxzLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Jhc2UifV19LHtuYW1lOiJsaW5rIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbGluayBlbGVtZW50IGFsbG93cyBhdXRob3JzIHRvIGxpbmsgdGhlaXIgZG9jdW1lbnQgdG8gb3RoZXIgcmVzb3VyY2VzLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJocmVmIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIFtVUkxdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvVVJMICJVUkw6IFVuaWZvcm0gUmVzb3VyY2UgTG9jYXRvciAoVVJMKSBpcyBhIHRleHQgc3RyaW5nIHNwZWNpZnlpbmcgd2hlcmUgYSByZXNvdXJjZSBjYW4gYmUgZm91bmQgb24gdGhlIEludGVybmV0LiIpIG9mIHRoZSBsaW5rZWQgcmVzb3VyY2UuIEEgVVJMIGNhbiBiZSBhYnNvbHV0ZSBvciByZWxhdGl2ZS4nfX0se25hbWU6ImNyb3Nzb3JpZ2luIix2YWx1ZVNldDoieG8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGVzIHdoZXRoZXIgW0NPUlNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQ09SUyAiQ09SUzogQ09SUyAoQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcpIGlzIGEgc3lzdGVtLCBjb25zaXN0aW5nIG9mIHRyYW5zbWl0dGluZyBIVFRQIGhlYWRlcnMsIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGJyb3dzZXJzIGJsb2NrIGZyb250ZW5kIEphdmFTY3JpcHQgY29kZSBmcm9tIGFjY2Vzc2luZyByZXNwb25zZXMgZm9yIGNyb3NzLW9yaWdpbiByZXF1ZXN0cy4iKSBtdXN0IGJlIHVzZWQgd2hlbiBmZXRjaGluZyB0aGUgcmVzb3VyY2UuIFtDT1JTLWVuYWJsZWQgaW1hZ2VzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0NPUlNfRW5hYmxlZF9JbWFnZSkgY2FuIGJlIHJldXNlZCBpbiB0aGUgW2A8Y2FudmFzPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYW52YXMgIlVzZSB0aGUgSFRNTCA8Y2FudmFzPiBlbGVtZW50IHdpdGggZWl0aGVyIHRoZSBjYW52YXMgc2NyaXB0aW5nIEFQSSBvciB0aGUgV2ViR0wgQVBJIHRvIGRyYXcgZ3JhcGhpY3MgYW5kIGFuaW1hdGlvbnMuIikgZWxlbWVudCB3aXRob3V0IGJlaW5nIF90YWludGVkXy4gVGhlIGFsbG93ZWQgdmFsdWVzIGFyZTpcblxuYGFub255bW91c2BcblxuQSBjcm9zcy1vcmlnaW4gcmVxdWVzdCAoaS5lLiB3aXRoIGFuIFtgT3JpZ2luYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL09yaWdpbiAiVGhlIE9yaWdpbiByZXF1ZXN0IGhlYWRlciBpbmRpY2F0ZXMgd2hlcmUgYSBmZXRjaCBvcmlnaW5hdGVzIGZyb20uIEl0IGRvZXNuXCd0IGluY2x1ZGUgYW55IHBhdGggaW5mb3JtYXRpb24sIGJ1dCBvbmx5IHRoZSBzZXJ2ZXIgbmFtZS4gSXQgaXMgc2VudCB3aXRoIENPUlMgcmVxdWVzdHMsIGFzIHdlbGwgYXMgd2l0aCBQT1NUIHJlcXVlc3RzLiBJdCBpcyBzaW1pbGFyIHRvIHRoZSBSZWZlcmVyIGhlYWRlciwgYnV0LCB1bmxpa2UgdGhpcyBoZWFkZXIsIGl0IGRvZXNuXCd0IGRpc2Nsb3NlIHRoZSB3aG9sZSBwYXRoLiIpIEhUVFAgaGVhZGVyKSBpcyBwZXJmb3JtZWQsIGJ1dCBubyBjcmVkZW50aWFsIGlzIHNlbnQgKGkuZS4gbm8gY29va2llLCBYLjUwOSBjZXJ0aWZpY2F0ZSwgb3IgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbikuIElmIHRoZSBzZXJ2ZXIgZG9lcyBub3QgZ2l2ZSBjcmVkZW50aWFscyB0byB0aGUgb3JpZ2luIHNpdGUgKGJ5IG5vdCBzZXR0aW5nIHRoZSBbYEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9BY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gIlRoZSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gcmVzcG9uc2UgaGVhZGVyIGluZGljYXRlcyB3aGV0aGVyIHRoZSByZXNwb25zZSBjYW4gYmUgc2hhcmVkIHdpdGggcmVxdWVzdGluZyBjb2RlIGZyb20gdGhlIGdpdmVuIG9yaWdpbi4iKSBIVFRQIGhlYWRlcikgdGhlIGltYWdlIHdpbGwgYmUgdGFpbnRlZCBhbmQgaXRzIHVzYWdlIHJlc3RyaWN0ZWQuXG5cbmB1c2UtY3JlZGVudGlhbHNgXG5cbkEgY3Jvc3Mtb3JpZ2luIHJlcXVlc3QgKGkuZS4gd2l0aCBhbiBgT3JpZ2luYCBIVFRQIGhlYWRlcikgaXMgcGVyZm9ybWVkIGFsb25nIHdpdGggYSBjcmVkZW50aWFsIHNlbnQgKGkuZS4gYSBjb29raWUsIGNlcnRpZmljYXRlLCBhbmQvb3IgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbiBpcyBwZXJmb3JtZWQpLiBJZiB0aGUgc2VydmVyIGRvZXMgbm90IGdpdmUgY3JlZGVudGlhbHMgdG8gdGhlIG9yaWdpbiBzaXRlICh0aHJvdWdoIFtgQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHNgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMgIlRoZSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscyByZXNwb25zZSBoZWFkZXIgdGVsbHMgYnJvd3NlcnMgd2hldGhlciB0byBleHBvc2UgdGhlIHJlc3BvbnNlIHRvIGZyb250ZW5kIEphdmFTY3JpcHQgY29kZSB3aGVuIHRoZSByZXF1ZXN0XCdzIGNyZWRlbnRpYWxzIG1vZGUgKFJlcXVlc3QuY3JlZGVudGlhbHMpIGlzICJpbmNsdWRlIi4iKSBIVFRQIGhlYWRlciksIHRoZSByZXNvdXJjZSB3aWxsIGJlIF90YWludGVkXyBhbmQgaXRzIHVzYWdlIHJlc3RyaWN0ZWQuXG5cbklmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHByZXNlbnQsIHRoZSByZXNvdXJjZSBpcyBmZXRjaGVkIHdpdGhvdXQgYSBbQ09SU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9DT1JTICJDT1JTOiBDT1JTIChDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZykgaXMgYSBzeXN0ZW0sIGNvbnNpc3Rpbmcgb2YgdHJhbnNtaXR0aW5nIEhUVFAgaGVhZGVycywgdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgYnJvd3NlcnMgYmxvY2sgZnJvbnRlbmQgSmF2YVNjcmlwdCBjb2RlIGZyb20gYWNjZXNzaW5nIHJlc3BvbnNlcyBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLiIpIHJlcXVlc3QgKGkuZS4gd2l0aG91dCBzZW5kaW5nIHRoZSBgT3JpZ2luYCBIVFRQIGhlYWRlciksIHByZXZlbnRpbmcgaXRzIG5vbi10YWludGVkIHVzYWdlLiBJZiBpbnZhbGlkLCBpdCBpcyBoYW5kbGVkIGFzIGlmIHRoZSBlbnVtZXJhdGVkIGtleXdvcmQgKiphbm9ueW1vdXMqKiB3YXMgdXNlZC4gU2VlIFtDT1JTIHNldHRpbmdzIGF0dHJpYnV0ZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQ09SU19zZXR0aW5nc19hdHRyaWJ1dGVzKSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4nfX0se25hbWU6InJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgbmFtZXMgYSByZWxhdGlvbnNoaXAgb2YgdGhlIGxpbmtlZCBkb2N1bWVudCB0byB0aGUgY3VycmVudCBkb2N1bWVudC4gVGhlIGF0dHJpYnV0ZSBtdXN0IGJlIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIFtsaW5rIHR5cGVzIHZhbHVlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9MaW5rX3R5cGVzKS4ifX0se25hbWU6Im1lZGlhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIG1lZGlhIHRoYXQgdGhlIGxpbmtlZCByZXNvdXJjZSBhcHBsaWVzIHRvLiBJdHMgdmFsdWUgbXVzdCBiZSBhIG1lZGlhIHR5cGUgLyBbbWVkaWEgcXVlcnldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9NZWRpYV9xdWVyaWVzKS4gVGhpcyBhdHRyaWJ1dGUgaXMgbWFpbmx5IHVzZWZ1bCB3aGVuIGxpbmtpbmcgdG8gZXh0ZXJuYWwgc3R5bGVzaGVldHMg4oCUIGl0IGFsbG93cyB0aGUgdXNlciBhZ2VudCB0byBwaWNrIHRoZSBiZXN0IGFkYXB0ZWQgb25lIGZvciB0aGUgZGV2aWNlIGl0IHJ1bnMgb24uXG5cbioqTm90ZXM6KipcblxuKiAgIEluIEhUTUwgNCwgdGhpcyBjYW4gb25seSBiZSBhIHNpbXBsZSB3aGl0ZS1zcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBtZWRpYSBkZXNjcmlwdGlvbiBsaXRlcmFscywgaS5lLiwgW21lZGlhIHR5cGVzIGFuZCBncm91cHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9AbWVkaWEpLCB3aGVyZSBkZWZpbmVkIGFuZCBhbGxvd2VkIGFzIHZhbHVlcyBmb3IgdGhpcyBhdHRyaWJ1dGUsIHN1Y2ggYXMgYHByaW50YCwgYHNjcmVlbmAsIGBhdXJhbGAsIGBicmFpbGxlYC4gSFRNTDUgZXh0ZW5kZWQgdGhpcyB0byBhbnkga2luZCBvZiBbbWVkaWEgcXVlcmllc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL01lZGlhX3F1ZXJpZXMpLCB3aGljaCBhcmUgYSBzdXBlcnNldCBvZiB0aGUgYWxsb3dlZCB2YWx1ZXMgb2YgSFRNTCA0LlxuKiAgIEJyb3dzZXJzIG5vdCBzdXBwb3J0aW5nIFtDU1MzIE1lZGlhIFF1ZXJpZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9NZWRpYV9xdWVyaWVzKSB3b24ndCBuZWNlc3NhcmlseSByZWNvZ25pemUgdGhlIGFkZXF1YXRlIGxpbms7IGRvIG5vdCBmb3JnZXQgdG8gc2V0IGZhbGxiYWNrIGxpbmtzLCB0aGUgcmVzdHJpY3RlZCBzZXQgb2YgbWVkaWEgcXVlcmllcyBkZWZpbmVkIGluIEhUTUwgNC4ifX0se25hbWU6ImhyZWZsYW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIGxhbmd1YWdlIG9mIHRoZSBsaW5rZWQgcmVzb3VyY2UuIEl0IGlzIHB1cmVseSBhZHZpc29yeS4gQWxsb3dlZCB2YWx1ZXMgYXJlIGRldGVybWluZWQgYnkgW0JDUDQ3XShodHRwczovL3d3dy5pZXRmLm9yZy9yZmMvYmNwL2JjcDQ3LnR4dCkuIFVzZSB0aGlzIGF0dHJpYnV0ZSBvbmx5IGlmIHRoZSBbYGhyZWZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSNhdHRyLWhyZWYpIGF0dHJpYnV0ZSBpcyBwcmVzZW50LiJ9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byBkZWZpbmUgdGhlIHR5cGUgb2YgdGhlIGNvbnRlbnQgbGlua2VkIHRvLiBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBzaG91bGQgYmUgYSBNSU1FIHR5cGUgc3VjaCBhcyAqKnRleHQvaHRtbCoqLCAqKnRleHQvY3NzKiosIGFuZCBzbyBvbi4gVGhlIGNvbW1vbiB1c2Ugb2YgdGhpcyBhdHRyaWJ1dGUgaXMgdG8gZGVmaW5lIHRoZSB0eXBlIG9mIHN0eWxlc2hlZXQgYmVpbmcgcmVmZXJlbmNlZCAoc3VjaCBhcyAqKnRleHQvY3NzKiopLCBidXQgZ2l2ZW4gdGhhdCBDU1MgaXMgdGhlIG9ubHkgc3R5bGVzaGVldCBsYW5ndWFnZSB1c2VkIG9uIHRoZSB3ZWIsIG5vdCBvbmx5IGlzIGl0IHBvc3NpYmxlIHRvIG9taXQgdGhlIGB0eXBlYCBhdHRyaWJ1dGUsIGJ1dCBpcyBhY3R1YWxseSBub3cgcmVjb21tZW5kZWQgcHJhY3RpY2UuIEl0IGlzIGFsc28gdXNlZCBvbiBgcmVsPSJwcmVsb2FkImAgbGluayB0eXBlcywgdG8gbWFrZSBzdXJlIHRoZSBicm93c2VyIG9ubHkgZG93bmxvYWRzIGZpbGUgdHlwZXMgdGhhdCBpdCBzdXBwb3J0cy4nfX0se25hbWU6InNpemVzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBzaXplcyBvZiB0aGUgaWNvbnMgZm9yIHZpc3VhbCBtZWRpYSBjb250YWluZWQgaW4gdGhlIHJlc291cmNlLiBJdCBtdXN0IGJlIHByZXNlbnQgb25seSBpZiB0aGUgW2ByZWxgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGluayNhdHRyLXJlbCkgY29udGFpbnMgYSB2YWx1ZSBvZiBgaWNvbmAgb3IgYSBub24tc3RhbmRhcmQgdHlwZSBzdWNoIGFzIEFwcGxlJ3MgYGFwcGxlLXRvdWNoLWljb25gLiBJdCBtYXkgaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGBhbnlgLCBtZWFuaW5nIHRoYXQgdGhlIGljb24gY2FuIGJlIHNjYWxlZCB0byBhbnkgc2l6ZSBhcyBpdCBpcyBpbiBhIHZlY3RvciBmb3JtYXQsIGxpa2UgYGltYWdlL3N2Zyt4bWxgLlxuKiAgIGEgd2hpdGUtc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2Ygc2l6ZXMsIGVhY2ggaW4gdGhlIGZvcm1hdCBgXzx3aWR0aCBpbiBwaXhlbHM+X3hfPGhlaWdodCBpbiBwaXhlbHM+X2Agb3IgYF88d2lkdGggaW4gcGl4ZWxzPl9YXzxoZWlnaHQgaW4gcGl4ZWxzPl9gLiBFYWNoIG9mIHRoZXNlIHNpemVzIG11c3QgYmUgY29udGFpbmVkIGluIHRoZSByZXNvdXJjZS5cblxuKipOb3RlOioqIE1vc3QgaWNvbiBmb3JtYXRzIGFyZSBvbmx5IGFibGUgdG8gc3RvcmUgb25lIHNpbmdsZSBpY29uOyB0aGVyZWZvcmUgbW9zdCBvZiB0aGUgdGltZSB0aGUgW2BzaXplc2BdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMjYXR0ci1zaXplcykgY29udGFpbnMgb25seSBvbmUgZW50cnkuIE1TJ3MgSUNPIGZvcm1hdCBkb2VzLCBhcyB3ZWxsIGFzIEFwcGxlJ3MgSUNOUy4gSUNPIGlzIG1vcmUgdWJpcXVpdG91czsgeW91IHNob3VsZCBkZWZpbml0ZWx5IHVzZSBpdC4ifX0se25hbWU6ImFzIixkZXNjcmlwdGlvbjonVGhpcyBhdHRyaWJ1dGUgaXMgb25seSB1c2VkIHdoZW4gYHJlbD0icHJlbG9hZCJgIG9yIGByZWw9InByZWZldGNoImAgaGFzIGJlZW4gc2V0IG9uIHRoZSBgPGxpbms+YCBlbGVtZW50LiBJdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgY29udGVudCBiZWluZyBsb2FkZWQgYnkgdGhlIGA8bGluaz5gLCB3aGljaCBpcyBuZWNlc3NhcnkgZm9yIGNvbnRlbnQgcHJpb3JpdGl6YXRpb24sIHJlcXVlc3QgbWF0Y2hpbmcsIGFwcGxpY2F0aW9uIG9mIGNvcnJlY3QgW2NvbnRlbnQgc2VjdXJpdHkgcG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0NTUCksIGFuZCBzZXR0aW5nIG9mIGNvcnJlY3QgW2BBY2NlcHRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQWNjZXB0ICJUaGUgQWNjZXB0IHJlcXVlc3QgSFRUUCBoZWFkZXIgYWR2ZXJ0aXNlcyB3aGljaCBjb250ZW50IHR5cGVzLCBleHByZXNzZWQgYXMgTUlNRSB0eXBlcywgdGhlIGNsaWVudCBpcyBhYmxlIHRvIHVuZGVyc3RhbmQuIFVzaW5nIGNvbnRlbnQgbmVnb3RpYXRpb24sIHRoZSBzZXJ2ZXIgdGhlbiBzZWxlY3RzIG9uZSBvZiB0aGUgcHJvcG9zYWxzLCB1c2VzIGl0IGFuZCBpbmZvcm1zIHRoZSBjbGllbnQgb2YgaXRzIGNob2ljZSB3aXRoIHRoZSBDb250ZW50LVR5cGUgcmVzcG9uc2UgaGVhZGVyLiBCcm93c2VycyBzZXQgYWRlcXVhdGUgdmFsdWVzIGZvciB0aGlzIGhlYWRlciBkZXBlbmRpbmcgb27CoHRoZSBjb250ZXh0IHdoZXJlIHRoZSByZXF1ZXN0IGlzIGRvbmU6IHdoZW4gZmV0Y2hpbmcgYSBDU1Mgc3R5bGVzaGVldCBhIGRpZmZlcmVudCB2YWx1ZSBpcyBzZXQgZm9yIHRoZSByZXF1ZXN0IHRoYW4gd2hlbiBmZXRjaGluZyBhbiBpbWFnZSzCoHZpZGVvIG9yIGEgc2NyaXB0LiIpIHJlcXVlc3QgaGVhZGVyLid9LHtuYW1lOiJpbXBvcnRhbmNlIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoZSByZWxhdGl2ZSBpbXBvcnRhbmNlIG9mIHRoZSByZXNvdXJjZS4gUHJpb3JpdHkgaGludHMgYXJlIGRlbGVnYXRlZCB1c2luZyB0aGUgdmFsdWVzOiJ9LHtuYW1lOiJpbXBvcnRhbmNlIixkZXNjcmlwdGlvbjonKipgYXV0b2AqKjogSW5kaWNhdGVzwqAqKm5vwqBwcmVmZXJlbmNlKiouIFRoZSBicm93c2VyIG1heSB1c2UgaXRzIG93biBoZXVyaXN0aWNzIHRvIGRlY2lkZSB0aGUgcHJpb3JpdHkgb2YgdGhlIHJlc291cmNlLlxuXG4qKmBoaWdoYCoqOiBJbmRpY2F0ZXMgdG8gdGhlwqBicm93c2VywqB0aGF0IHRoZSByZXNvdXJjZSBpcyBvZsKgKipoaWdoKiogcHJpb3JpdHkuXG5cbioqYGxvd2AqKjrCoEluZGljYXRlcyB0byB0aGXCoGJyb3dzZXLCoHRoYXQgdGhlIHJlc291cmNlIGlzIG9mwqAqKmxvdyoqIHByaW9yaXR5LlxuXG4qKk5vdGU6KiogVGhlIGBpbXBvcnRhbmNlYCBhdHRyaWJ1dGUgbWF5IG9ubHkgYmUgdXNlZCBmb3IgdGhlIGA8bGluaz5gIGVsZW1lbnQgaWYgYHJlbD0icHJlbG9hZCJgIG9yIGByZWw9InByZWZldGNoImAgaXMgcHJlc2VudC4nfSx7bmFtZToiaW50ZWdyaXR5IixkZXNjcmlwdGlvbjoiQ29udGFpbnMgaW5saW5lIG1ldGFkYXRhIOKAlCBhIGJhc2U2NC1lbmNvZGVkIGNyeXB0b2dyYXBoaWMgaGFzaCBvZiB0aGUgcmVzb3VyY2UgKGZpbGUpIHlvdeKAmXJlIHRlbGxpbmcgdGhlIGJyb3dzZXIgdG8gZmV0Y2guIFRoZSBicm93c2VyIGNhbiB1c2UgdGhpcyB0byB2ZXJpZnkgdGhhdCB0aGUgZmV0Y2hlZCByZXNvdXJjZSBoYXMgYmVlbiBkZWxpdmVyZWQgZnJlZSBvZiB1bmV4cGVjdGVkIG1hbmlwdWxhdGlvbi4gU2VlIFtTdWJyZXNvdXJjZSBJbnRlZ3JpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1N1YnJlc291cmNlX0ludGVncml0eSkuIn0se25hbWU6InJlZmVycmVycG9saWN5IixkZXNjcmlwdGlvbjonQSBzdHJpbmcgaW5kaWNhdGluZyB3aGljaCByZWZlcnJlciB0byB1c2Ugd2hlbiBmZXRjaGluZyB0aGUgcmVzb3VyY2U6XG5cbiogICBgbm8tcmVmZXJyZXJgIG1lYW5zIHRoYXQgdGhlIFtgUmVmZXJlcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyICJUaGUgUmVmZXJlciByZXF1ZXN0IGhlYWRlciBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgcHJldmlvdXMgd2ViIHBhZ2UgZnJvbSB3aGljaCBhIGxpbmsgdG8gdGhlIGN1cnJlbnRseSByZXF1ZXN0ZWQgcGFnZSB3YXMgZm9sbG93ZWQuIFRoZSBSZWZlcmVyIGhlYWRlciBhbGxvd3Mgc2VydmVycyB0byBpZGVudGlmeSB3aGVyZSBwZW9wbGUgYXJlIHZpc2l0aW5nIHRoZW0gZnJvbSBhbmQgbWF5IHVzZSB0aGF0IGRhdGEgZm9yIGFuYWx5dGljcywgbG9nZ2luZywgb3Igb3B0aW1pemVkIGNhY2hpbmcsIGZvciBleGFtcGxlLiIpIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50LlxuKiAgIGBuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZWAgbWVhbnMgdGhhdCBubyBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBiZSBzZW50IHdoZW4gbmF2aWdhdGluZyB0byBhbiBvcmlnaW4gd2l0aG91dCBUTFMgKEhUVFBTKS4gVGhpcyBpcyBhIHVzZXIgYWdlbnTigJlzIGRlZmF1bHQgYmVoYXZpb3IsIGlmIG5vIHBvbGljeSBpcyBvdGhlcndpc2Ugc3BlY2lmaWVkLlxuKiAgIGBvcmlnaW5gIG1lYW5zIHRoYXQgdGhlIHJlZmVycmVyIHdpbGwgYmUgdGhlIG9yaWdpbiBvZiB0aGUgcGFnZSwgd2hpY2ggaXMgcm91Z2hseSB0aGUgc2NoZW1lLCB0aGUgaG9zdCwgYW5kIHRoZSBwb3J0LlxuKiAgIGBvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gIG1lYW5zIHRoYXQgbmF2aWdhdGluZyB0byBvdGhlciBvcmlnaW5zIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgc2NoZW1lLCB0aGUgaG9zdCwgYW5kIHRoZSBwb3J0LCB3aGlsZSBuYXZpZ2F0aW5nIG9uIHRoZSBzYW1lIG9yaWdpbiB3aWxsIGluY2x1ZGUgdGhlIHJlZmVycmVyXCdzIHBhdGguXG4qICAgYHVuc2FmZS11cmxgIG1lYW5zIHRoYXQgdGhlIHJlZmVycmVyIHdpbGwgaW5jbHVkZSB0aGUgb3JpZ2luIGFuZCB0aGUgcGF0aCAoYnV0IG5vdCB0aGUgZnJhZ21lbnQsIHBhc3N3b3JkLCBvciB1c2VybmFtZSkuIFRoaXMgY2FzZSBpcyB1bnNhZmUgYmVjYXVzZSBpdCBjYW4gbGVhayBvcmlnaW5zIGFuZCBwYXRocyBmcm9tIFRMUy1wcm90ZWN0ZWQgcmVzb3VyY2VzIHRvIGluc2VjdXJlIG9yaWdpbnMuJ30se25hbWU6InRpdGxlIixkZXNjcmlwdGlvbjonVGhlIGB0aXRsZWAgYXR0cmlidXRlIGhhcyBzcGVjaWFsIHNlbWFudGljcyBvbiB0aGUgYDxsaW5rPmAgZWxlbWVudC4gV2hlbiB1c2VkIG9uIGEgYDxsaW5rIHJlbD0ic3R5bGVzaGVldCI+YCBpdCBkZWZpbmVzIGEgW3ByZWZlcnJlZCBvciBhbiBhbHRlcm5hdGUgc3R5bGVzaGVldF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0FsdGVybmF0aXZlX3N0eWxlX3NoZWV0cykuIEluY29ycmVjdGx5IHVzaW5nIGl0IG1heSBbY2F1c2UgdGhlIHN0eWxlc2hlZXQgdG8gYmUgaWdub3JlZF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Db3JyZWN0bHlfVXNpbmdfVGl0bGVzX1dpdGhfRXh0ZXJuYWxfU3R5bGVzaGVldHMpLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGluayJ9XX0se25hbWU6Im1ldGEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtZXRhIGVsZW1lbnQgcmVwcmVzZW50cyB2YXJpb3VzIGtpbmRzIG9mIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIGV4cHJlc3NlZCB1c2luZyB0aGUgdGl0bGUsIGJhc2UsIGxpbmssIHN0eWxlLCBhbmQgc2NyaXB0IGVsZW1lbnRzLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBuYW1lIG9mIGEgcGllY2Ugb2YgZG9jdW1lbnQtbGV2ZWwgbWV0YWRhdGEuIEl0IHNob3VsZCBub3QgYmUgc2V0IGlmIG9uZSBvZiB0aGUgYXR0cmlidXRlcyBbYGl0ZW1wcm9wYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLWl0ZW1wcm9wKSwgW2BodHRwLWVxdWl2YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1odHRwLWVxdWl2KSBvciBbYGNoYXJzZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNoYXJzZXQpIGlzIGFsc28gc2V0LlxuXG5UaGlzIG1ldGFkYXRhIG5hbWUgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB2YWx1ZSBjb250YWluZWQgYnkgdGhlIFtgY29udGVudGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItY29udGVudCkgYXR0cmlidXRlLiBUaGUgcG9zc2libGUgdmFsdWVzIGZvciB0aGUgbmFtZSBhdHRyaWJ1dGUgYXJlOlxuXG4qICAgYGFwcGxpY2F0aW9uLW5hbWVgIHdoaWNoIGRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIGFwcGxpY2F0aW9uIHJ1bm5pbmcgaW4gdGhlIHdlYiBwYWdlLlxuICAgIFxuICAgICoqTm90ZToqKlxuICAgIFxuICAgICogICBCcm93c2VycyBtYXkgdXNlIHRoaXMgdG8gaWRlbnRpZnkgdGhlIGFwcGxpY2F0aW9uLiBJdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgW2A8dGl0bGU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RpdGxlICJUaGUgSFRNTCBUaXRsZSBlbGVtZW50ICg8dGl0bGU+KSBkZWZpbmVzIHRoZSBkb2N1bWVudFwncyB0aXRsZSB0aGF0IGlzIHNob3duIGluIGEgYnJvd3NlclwncyB0aXRsZSBiYXIgb3IgYSBwYWdlXCdzIHRhYi4iKSBlbGVtZW50LCB3aGljaCB1c3VhbGx5IGNvbnRhaW4gdGhlIGFwcGxpY2F0aW9uIG5hbWUsIGJ1dCBtYXkgYWxzbyBjb250YWluIGluZm9ybWF0aW9uIGxpa2UgdGhlIGRvY3VtZW50IG5hbWUgb3IgYSBzdGF0dXMuXG4gICAgKiAgIFNpbXBsZSB3ZWIgcGFnZXMgc2hvdWxkblwndCBkZWZpbmUgYW4gYXBwbGljYXRpb24tbmFtZS5cbiAgICBcbiogICBgYXV0aG9yYCB3aGljaCBkZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBkb2N1bWVudFwncyBhdXRob3IuXG4qICAgYGRlc2NyaXB0aW9uYCB3aGljaCBjb250YWlucyBhIHNob3J0IGFuZCBhY2N1cmF0ZSBzdW1tYXJ5IG9mIHRoZSBjb250ZW50IG9mIHRoZSBwYWdlLiBTZXZlcmFsIGJyb3dzZXJzLCBsaWtlIEZpcmVmb3ggYW5kIE9wZXJhLCB1c2UgdGhpcyBhcyB0aGUgZGVmYXVsdCBkZXNjcmlwdGlvbiBvZiBib29rbWFya2VkIHBhZ2VzLlxuKiAgIGBnZW5lcmF0b3JgIHdoaWNoIGNvbnRhaW5zIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBzb2Z0d2FyZSB0aGF0IGdlbmVyYXRlZCB0aGUgcGFnZS5cbiogICBga2V5d29yZHNgIHdoaWNoIGNvbnRhaW5zIHdvcmRzIHJlbGV2YW50IHRvIHRoZSBwYWdlXCdzIGNvbnRlbnQgc2VwYXJhdGVkIGJ5IGNvbW1hcy5cbiogICBgcmVmZXJyZXJgIHdoaWNoIGNvbnRyb2xzIHRoZSBbYFJlZmVyZXJgIEhUVFAgaGVhZGVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlcikgYXR0YWNoZWQgdG8gcmVxdWVzdHMgc2VudCBmcm9tIHRoZSBkb2N1bWVudDpcbiAgICBcbiAgICBWYWx1ZXMgZm9yIHRoZSBgY29udGVudGAgYXR0cmlidXRlIG9mIGA8bWV0YSBuYW1lPSJyZWZlcnJlciI+YFxuICAgIFxuICAgIGBuby1yZWZlcnJlcmBcbiAgICBcbiAgICBEbyBub3Qgc2VuZCBhIEhUVFAgYFJlZmVycmVyYCBoZWFkZXIuXG4gICAgXG4gICAgYG9yaWdpbmBcbiAgICBcbiAgICBTZW5kIHRoZSBbb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L09yaWdpbikgb2YgdGhlIGRvY3VtZW50LlxuICAgIFxuICAgIGBuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZWBcbiAgICBcbiAgICBTZW5kIHRoZSBbb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L09yaWdpbikgYXMgYSByZWZlcnJlciB0byBVUkxzIGFzIHNlY3VyZSBhcyB0aGUgY3VycmVudCBwYWdlLCAoaHR0cHPihpJodHRwcyksIGJ1dCBkb2VzIG5vdCBzZW5kIGEgcmVmZXJyZXIgdG8gbGVzcyBzZWN1cmUgVVJMcyAoaHR0cHPihpJodHRwKS4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIuXG4gICAgXG4gICAgYG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmBcbiAgICBcbiAgICBTZW5kIHRoZSBmdWxsIFVSTCAoc3RyaXBwZWQgb2YgcGFyYW1ldGVycykgZm9yIHNhbWUtb3JpZ2luIHJlcXVlc3RzLCBidXQgb25seSBzZW5kIHRoZSBbb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L09yaWdpbikgZm9yIG90aGVyIGNhc2VzLlxuICAgIFxuICAgIGBzYW1lLW9yaWdpbmBcbiAgICBcbiAgICBBIHJlZmVycmVyIHdpbGwgYmUgc2VudCBmb3IgW3NhbWUtc2l0ZSBvcmlnaW5zXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TYW1lLW9yaWdpbl9wb2xpY3kpLCBidXQgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIHdpbGwgY29udGFpbiBubyByZWZlcnJlciBpbmZvcm1hdGlvbi5cbiAgICBcbiAgICBgc3RyaWN0LW9yaWdpbmBcbiAgICBcbiAgICBPbmx5IHNlbmQgdGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1lbnQgYXMgdGhlIHJlZmVycmVyIHRvIGEtcHJpb3JpIGFzLW11Y2gtc2VjdXJlIGRlc3RpbmF0aW9uIChIVFRQUy0+SFRUUFMpLCBidXQgZG9uXCd0IHNlbmQgaXQgdG8gYSBsZXNzIHNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFMtPkhUVFApLlxuICAgIFxuICAgIGBzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYFxuICAgIFxuICAgIFNlbmQgYSBmdWxsIFVSTCB3aGVuIHBlcmZvcm1pbmcgYSBzYW1lLW9yaWdpbiByZXF1ZXN0LCBvbmx5IHNlbmQgdGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1lbnQgdG8gYS1wcmlvcmkgYXMtbXVjaC1zZWN1cmUgZGVzdGluYXRpb24gKEhUVFBTLT5IVFRQUyksIGFuZCBzZW5kIG5vIGhlYWRlciB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChIVFRQUy0+SFRUUCkuXG4gICAgXG4gICAgYHVuc2FmZS1VUkxgXG4gICAgXG4gICAgU2VuZCB0aGUgZnVsbCBVUkwgKHN0cmlwcGVkIG9mIHBhcmFtZXRlcnMpIGZvciBzYW1lLW9yaWdpbiBvciBjcm9zcy1vcmlnaW4gcmVxdWVzdHMuXG4gICAgXG4gICAgKipOb3RlczoqKlxuICAgIFxuICAgICogICBTb21lIGJyb3dzZXJzIHN1cHBvcnQgdGhlIGRlcHJlY2F0ZWQgdmFsdWVzIG9mIGBhbHdheXNgLCBgZGVmYXVsdGAsIGFuZCBgbmV2ZXJgIGZvciByZWZlcnJlci5cbiAgICAqICAgRHluYW1pY2FsbHkgaW5zZXJ0aW5nIGA8bWV0YSBuYW1lPSJyZWZlcnJlciI+YCAod2l0aCBbYGRvY3VtZW50LndyaXRlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50L3dyaXRlKSBvciBbYGFwcGVuZENoaWxkYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05vZGUvYXBwZW5kQ2hpbGQpKSBtYWtlcyB0aGUgcmVmZXJyZXIgYmVoYXZpb3VyIHVucHJlZGljdGFibGUuXG4gICAgKiAgIFdoZW4gc2V2ZXJhbCBjb25mbGljdGluZyBwb2xpY2llcyBhcmUgZGVmaW5lZCwgdGhlIG5vLXJlZmVycmVyIHBvbGljeSBpcyBhcHBsaWVkLlxuICAgIFxuXG5UaGlzIGF0dHJpYnV0ZSBtYXkgYWxzbyBoYXZlIGEgdmFsdWUgdGFrZW4gZnJvbSB0aGUgZXh0ZW5kZWQgbGlzdCBkZWZpbmVkIG9uIFtXSEFUV0cgV2lraSBNZXRhRXh0ZW5zaW9ucyBwYWdlXShodHRwczovL3dpa2kud2hhdHdnLm9yZy93aWtpL01ldGFFeHRlbnNpb25zKS4gQWx0aG91Z2ggbm9uZSBoYXZlIGJlZW4gZm9ybWFsbHkgYWNjZXB0ZWQgeWV0LCBhIGZldyBjb21tb25seSB1c2VkIG5hbWVzIGFyZTpcblxuKiAgIGBjcmVhdG9yYCB3aGljaCBkZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBjcmVhdG9yIG9mIHRoZSBkb2N1bWVudCwgc3VjaCBhcyBhbiBvcmdhbml6YXRpb24gb3IgaW5zdGl0dXRpb24uIElmIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lLCBzZXZlcmFsIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgZWxlbWVudHMgc2hvdWxkIGJlIHVzZWQuXG4qICAgYGdvb2dsZWJvdGAsIGEgc3lub255bSBvZiBgcm9ib3RzYCwgaXMgb25seSBmb2xsb3dlZCBieSBHb29nbGVib3QgKHRoZSBpbmRleGluZyBjcmF3bGVyIGZvciBHb29nbGUpLlxuKiAgIGBwdWJsaXNoZXJgIHdoaWNoIGRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIGRvY3VtZW50XCdzIHB1Ymxpc2hlci5cbiogICBgcm9ib3RzYCB3aGljaCBkZWZpbmVzIHRoZSBiZWhhdmlvdXIgdGhhdCBjb29wZXJhdGl2ZSBjcmF3bGVycywgb3IgInJvYm90cyIsIHNob3VsZCB1c2Ugd2l0aCB0aGUgcGFnZS4gSXQgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgdmFsdWVzIGJlbG93OlxuICAgIFxuICAgIFZhbHVlcyBmb3IgdGhlIGNvbnRlbnQgb2YgYDxtZXRhIG5hbWU9InJvYm90cyI+YFxuICAgIFxuICAgIFZhbHVlXG4gICAgXG4gICAgRGVzY3JpcHRpb25cbiAgICBcbiAgICBVc2VkIGJ5XG4gICAgXG4gICAgYGluZGV4YFxuICAgIFxuICAgIEFsbG93cyB0aGUgcm9ib3QgdG8gaW5kZXggdGhlIHBhZ2UgKGRlZmF1bHQpLlxuICAgIFxuICAgIEFsbFxuICAgIFxuICAgIGBub2luZGV4YFxuICAgIFxuICAgIFJlcXVlc3RzIHRoZSByb2JvdCB0byBub3QgaW5kZXggdGhlIHBhZ2UuXG4gICAgXG4gICAgQWxsXG4gICAgXG4gICAgYGZvbGxvd2BcbiAgICBcbiAgICBBbGxvd3MgdGhlIHJvYm90IHRvIGZvbGxvdyB0aGUgbGlua3Mgb24gdGhlIHBhZ2UgKGRlZmF1bHQpLlxuICAgIFxuICAgIEFsbFxuICAgIFxuICAgIGBub2ZvbGxvd2BcbiAgICBcbiAgICBSZXF1ZXN0cyB0aGUgcm9ib3QgdG8gbm90IGZvbGxvdyB0aGUgbGlua3Mgb24gdGhlIHBhZ2UuXG4gICAgXG4gICAgQWxsXG4gICAgXG4gICAgYG5vbmVgXG4gICAgXG4gICAgRXF1aXZhbGVudCB0byBgbm9pbmRleCwgbm9mb2xsb3dgXG4gICAgXG4gICAgW0dvb2dsZV0oaHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vd2VibWFzdGVycy9hbnN3ZXIvNzk4MTIpXG4gICAgXG4gICAgYG5vb2RwYFxuICAgIFxuICAgIFByZXZlbnRzIHVzaW5nIHRoZSBbT3BlbiBEaXJlY3RvcnkgUHJvamVjdF0oaHR0cHM6Ly93d3cuZG1vei5vcmcvKSBkZXNjcmlwdGlvbiwgaWYgYW55LCBhcyB0aGUgcGFnZSBkZXNjcmlwdGlvbiBpbiBzZWFyY2ggZW5naW5lIHJlc3VsdHMuXG4gICAgXG4gICAgW0dvb2dsZV0oaHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vd2VibWFzdGVycy9hbnN3ZXIvMzU2MjQjbm9kbW96KSwgW1lhaG9vXShodHRwczovL2hlbHAueWFob28uY29tL2tiL3NlYXJjaC1mb3ItZGVza3RvcC9tZXRhLXRhZ3Mtcm9ib3RzdHh0LXlhaG9vLXNlYXJjaC1zbG4yMjEzLmh0bWwjY29udDUpLCBbQmluZ10oaHR0cHM6Ly93d3cuYmluZy5jb20vd2VibWFzdGVyL2hlbHAvd2hpY2gtcm9ib3RzLW1ldGF0YWdzLWRvZXMtYmluZy1zdXBwb3J0LTUxOThkMjQwKVxuICAgIFxuICAgIGBub2FyY2hpdmVgXG4gICAgXG4gICAgUmVxdWVzdHMgdGhlIHNlYXJjaCBlbmdpbmUgbm90IHRvIGNhY2hlIHRoZSBwYWdlIGNvbnRlbnQuXG4gICAgXG4gICAgW0dvb2dsZV0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vd2VibWFzdGVycy9jb250cm9sLWNyYXdsLWluZGV4L2RvY3Mvcm9ib3RzX21ldGFfdGFnI3ZhbGlkLWluZGV4aW5nLS1zZXJ2aW5nLWRpcmVjdGl2ZXMpLCBbWWFob29dKGh0dHBzOi8vaGVscC55YWhvby5jb20va2Ivc2VhcmNoLWZvci1kZXNrdG9wL1NMTjIyMTMuaHRtbCksIFtCaW5nXShodHRwczovL3d3dy5iaW5nLmNvbS93ZWJtYXN0ZXIvaGVscC93aGljaC1yb2JvdHMtbWV0YXRhZ3MtZG9lcy1iaW5nLXN1cHBvcnQtNTE5OGQyNDApXG4gICAgXG4gICAgYG5vc25pcHBldGBcbiAgICBcbiAgICBQcmV2ZW50cyBkaXNwbGF5aW5nIGFueSBkZXNjcmlwdGlvbiBvZiB0aGUgcGFnZSBpbiBzZWFyY2ggZW5naW5lIHJlc3VsdHMuXG4gICAgXG4gICAgW0dvb2dsZV0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vd2VibWFzdGVycy9jb250cm9sLWNyYXdsLWluZGV4L2RvY3Mvcm9ib3RzX21ldGFfdGFnI3ZhbGlkLWluZGV4aW5nLS1zZXJ2aW5nLWRpcmVjdGl2ZXMpLCBbQmluZ10oaHR0cHM6Ly93d3cuYmluZy5jb20vd2VibWFzdGVyL2hlbHAvd2hpY2gtcm9ib3RzLW1ldGF0YWdzLWRvZXMtYmluZy1zdXBwb3J0LTUxOThkMjQwKVxuICAgIFxuICAgIGBub2ltYWdlaW5kZXhgXG4gICAgXG4gICAgUmVxdWVzdHMgdGhpcyBwYWdlIG5vdCB0byBhcHBlYXIgYXMgdGhlIHJlZmVycmluZyBwYWdlIG9mIGFuIGluZGV4ZWQgaW1hZ2UuXG4gICAgXG4gICAgW0dvb2dsZV0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vd2VibWFzdGVycy9jb250cm9sLWNyYXdsLWluZGV4L2RvY3Mvcm9ib3RzX21ldGFfdGFnI3ZhbGlkLWluZGV4aW5nLS1zZXJ2aW5nLWRpcmVjdGl2ZXMpXG4gICAgXG4gICAgYG5vY2FjaGVgXG4gICAgXG4gICAgU3lub255bSBvZiBgbm9hcmNoaXZlYC5cbiAgICBcbiAgICBbQmluZ10oaHR0cHM6Ly93d3cuYmluZy5jb20vd2VibWFzdGVyL2hlbHAvd2hpY2gtcm9ib3RzLW1ldGF0YWdzLWRvZXMtYmluZy1zdXBwb3J0LTUxOThkMjQwKVxuICAgIFxuICAgICoqTm90ZXM6KipcbiAgICBcbiAgICAqICAgT25seSBjb29wZXJhdGl2ZSByb2JvdHMgZm9sbG93IHRoZXNlIHJ1bGVzLiBEbyBub3QgZXhwZWN0IHRvIHByZXZlbnQgZS1tYWlsIGhhcnZlc3RlcnMgd2l0aCB0aGVtLlxuICAgICogICBUaGUgcm9ib3Qgc3RpbGwgbmVlZHMgdG8gYWNjZXNzIHRoZSBwYWdlIGluIG9yZGVyIHRvIHJlYWQgdGhlc2UgcnVsZXMuIFRvIHByZXZlbnQgYmFuZHdpZHRoIGNvbnN1bXB0aW9uLCB1c2UgYSBfW3JvYm90cy50eHRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3Nhcnkvcm9ib3RzLnR4dCAicm9ib3RzLnR4dDogUm9ib3RzLnR4dCBpcyBhIGZpbGUgd2hpY2ggaXMgdXN1YWxseSBwbGFjZWQgaW4gdGhlIHJvb3Qgb2YgYW55IHdlYnNpdGUuIEl0IGRlY2lkZXMgd2hldGhlcsKgY3Jhd2xlcnMgYXJlIHBlcm1pdHRlZCBvciBmb3JiaWRkZW4gYWNjZXNzIHRvIHRoZSB3ZWIgc2l0ZS4iKV8gZmlsZS5cbiAgICAqICAgSWYgeW91IHdhbnQgdG8gcmVtb3ZlIGEgcGFnZSwgYG5vaW5kZXhgIHdpbGwgd29yaywgYnV0IG9ubHkgYWZ0ZXIgdGhlIHJvYm90IHZpc2l0cyB0aGUgcGFnZSBhZ2Fpbi4gRW5zdXJlIHRoYXQgdGhlIGByb2JvdHMudHh0YCBmaWxlIGlzIG5vdCBwcmV2ZW50aW5nIHJldmlzaXRzLlxuICAgICogICBTb21lIHZhbHVlcyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLCBsaWtlIGBpbmRleGAgYW5kIGBub2luZGV4YCwgb3IgYGZvbGxvd2AgYW5kIGBub2ZvbGxvd2AuIEluIHRoZXNlIGNhc2VzIHRoZSByb2JvdFwncyBiZWhhdmlvdXIgaXMgdW5kZWZpbmVkIGFuZCBtYXkgdmFyeSBiZXR3ZWVuIHRoZW0uXG4gICAgKiAgIFNvbWUgY3Jhd2xlciByb2JvdHMsIGxpa2UgR29vZ2xlLCBZYWhvbyBhbmQgQmluZywgc3VwcG9ydCB0aGUgc2FtZSB2YWx1ZXMgZm9yIHRoZSBIVFRQIGhlYWRlciBgWC1Sb2JvdHMtVGFnYDsgdGhpcyBhbGxvd3Mgbm9uLUhUTUwgZG9jdW1lbnRzIGxpa2UgaW1hZ2VzIHRvIHVzZSB0aGVzZSBydWxlcy5cbiAgICBcbiogICBgc2x1cnBgLCBpcyBhIHN5bm9ueW0gb2YgYHJvYm90c2AsIGJ1dCBvbmx5IGZvciBTbHVycCAtIHRoZSBjcmF3bGVyIGZvciBZYWhvbyBTZWFyY2guXG4qICAgYHZpZXdwb3J0YCwgd2hpY2ggZ2l2ZXMgaGludHMgYWJvdXQgdGhlIHNpemUgb2YgdGhlIGluaXRpYWwgc2l6ZSBvZiB0aGUgW3ZpZXdwb3J0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3ZpZXdwb3J0ICJ2aWV3cG9ydDogQSB2aWV3cG9ydCByZXByZXNlbnRzIGEgcG9seWdvbmFsIChub3JtYWxseSByZWN0YW5ndWxhcikgYXJlYSBpbiBjb21wdXRlciBncmFwaGljcyB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyB2aWV3ZWQuIEluIHdlYiBicm93c2VyIHRlcm1zLCBpdCByZWZlcnMgdG8gdGhlIHBhcnQgb2YgdGhlIGRvY3VtZW50IHlvdVwncmUgdmlld2luZyB3aGljaCBpcyBjdXJyZW50bHkgdmlzaWJsZSBpbiBpdHMgd2luZG93IChvciB0aGUgc2NyZWVuLCBpZiB0aGUgZG9jdW1lbnQgaXMgYmVpbmcgdmlld2VkIGluIGZ1bGwgc2NyZWVuIG1vZGUpLiBDb250ZW50IG91dHNpZGUgdGhlIHZpZXdwb3J0IGlzIG5vdCB2aXNpYmxlIG9uc2NyZWVuIHVudGlsIHNjcm9sbGVkIGludG8gdmlldy4iKS4gVXNlZCBieSBtb2JpbGUgZGV2aWNlcyBvbmx5LlxuICAgIFxuICAgIFZhbHVlcyBmb3IgdGhlIGNvbnRlbnQgb2YgYDxtZXRhIG5hbWU9InZpZXdwb3J0Ij5gXG4gICAgXG4gICAgVmFsdWVcbiAgICBcbiAgICBQb3NzaWJsZSBzdWJ2YWx1ZXNcbiAgICBcbiAgICBEZXNjcmlwdGlvblxuICAgIFxuICAgIGB3aWR0aGBcbiAgICBcbiAgICBBIHBvc2l0aXZlIGludGVnZXIgbnVtYmVyLCBvciB0aGUgdGV4dCBgZGV2aWNlLXdpZHRoYFxuICAgIFxuICAgIERlZmluZXMgdGhlIHBpeGVsIHdpZHRoIG9mIHRoZSB2aWV3cG9ydCB0aGF0IHlvdSB3YW50IHRoZSB3ZWIgc2l0ZSB0byBiZSByZW5kZXJlZCBhdC5cbiAgICBcbiAgICBgaGVpZ2h0YFxuICAgIFxuICAgIEEgcG9zaXRpdmUgaW50ZWdlciwgb3IgdGhlIHRleHQgYGRldmljZS1oZWlnaHRgXG4gICAgXG4gICAgRGVmaW5lcyB0aGUgaGVpZ2h0IG9mIHRoZSB2aWV3cG9ydC4gTm90IHVzZWQgYnkgYW55IGJyb3dzZXIuXG4gICAgXG4gICAgYGluaXRpYWwtc2NhbGVgXG4gICAgXG4gICAgQSBwb3NpdGl2ZSBudW1iZXIgYmV0d2VlbiBgMC4wYCBhbmQgYDEwLjBgXG4gICAgXG4gICAgRGVmaW5lcyB0aGUgcmF0aW8gYmV0d2VlbiB0aGUgZGV2aWNlIHdpZHRoIChgZGV2aWNlLXdpZHRoYCBpbiBwb3J0cmFpdCBtb2RlIG9yIGBkZXZpY2UtaGVpZ2h0YCBpbiBsYW5kc2NhcGUgbW9kZSkgYW5kIHRoZSB2aWV3cG9ydCBzaXplLlxuICAgIFxuICAgIGBtYXhpbXVtLXNjYWxlYFxuICAgIFxuICAgIEEgcG9zaXRpdmUgbnVtYmVyIGJldHdlZW4gYDAuMGAgYW5kIGAxMC4wYFxuICAgIFxuICAgIERlZmluZXMgdGhlIG1heGltdW0gYW1vdW50IHRvIHpvb20gaW4uIEl0IG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0byB0aGUgYG1pbmltdW0tc2NhbGVgIG9yIHRoZSBiZWhhdmlvdXIgaXMgdW5kZWZpbmVkLiBCcm93c2VyIHNldHRpbmdzIGNhbiBpZ25vcmUgdGhpcyBydWxlIGFuZCBpT1MxMCsgaWdub3JlcyBpdCBieSBkZWZhdWx0LlxuICAgIFxuICAgIGBtaW5pbXVtLXNjYWxlYFxuICAgIFxuICAgIEEgcG9zaXRpdmUgbnVtYmVyIGJldHdlZW4gYDAuMGAgYW5kIGAxMC4wYFxuICAgIFxuICAgIERlZmluZXMgdGhlIG1pbmltdW0gem9vbSBsZXZlbC4gSXQgbXVzdCBiZSBzbWFsbGVyIG9yIGVxdWFsIHRvIHRoZSBgbWF4aW11bS1zY2FsZWAgb3IgdGhlIGJlaGF2aW91ciBpcyB1bmRlZmluZWQuIEJyb3dzZXIgc2V0dGluZ3MgY2FuIGlnbm9yZSB0aGlzIHJ1bGUgYW5kIGlPUzEwKyBpZ25vcmVzIGl0IGJ5IGRlZmF1bHQuXG4gICAgXG4gICAgYHVzZXItc2NhbGFibGVgXG4gICAgXG4gICAgYHllc2Agb3IgYG5vYFxuICAgIFxuICAgIElmIHNldCB0byBgbm9gLCB0aGUgdXNlciBpcyBub3QgYWJsZSB0byB6b29tIGluIHRoZSB3ZWJwYWdlLiBUaGUgZGVmYXVsdCBpcyBgeWVzYC4gQnJvd3NlciBzZXR0aW5ncyBjYW4gaWdub3JlIHRoaXMgcnVsZSwgYW5kIGlPUzEwKyBpZ25vcmVzIGl0IGJ5IGRlZmF1bHQuXG4gICAgXG4gICAgU3BlY2lmaWNhdGlvblxuICAgIFxuICAgIFN0YXR1c1xuICAgIFxuICAgIENvbW1lbnRcbiAgICBcbiAgICBbQ1NTIERldmljZSBBZGFwdGF0aW9uICBcbiAgICBUaGUgZGVmaW5pdGlvbiBvZiBcJzxtZXRhIG5hbWU9InZpZXdwb3J0Ij5cJyBpbiB0aGF0IHNwZWNpZmljYXRpb24uXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWRldmljZS1hZGFwdC8jdmlld3BvcnQtbWV0YSlcbiAgICBcbiAgICBXb3JraW5nIERyYWZ0XG4gICAgXG4gICAgTm9uLW5vcm1hdGl2ZWx5IGRlc2NyaWJlcyB0aGUgVmlld3BvcnQgTUVUQSBlbGVtZW50XG4gICAgXG4gICAgU2VlIGFsc286IFtgQHZpZXdwb3J0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0B2aWV3cG9ydCAiVGhlIEB2aWV3cG9ydCBDU1MgYXQtcnVsZSBsZXRzIHlvdSBjb25maWd1cmUgdGhlIHZpZXdwb3J0IHRocm91Z2ggd2hpY2ggdGhlIGRvY3VtZW50IGlzIHZpZXdlZC4gSXRcJ3MgcHJpbWFyaWx5IHVzZWQgZm9yIG1vYmlsZSBkZXZpY2VzLCBidXQgaXMgYWxzbyB1c2VkIGJ5IGRlc2t0b3AgYnJvd3NlcnMgdGhhdCBzdXBwb3J0IGZlYXR1cmVzIGxpa2UgInNuYXAgdG8gZWRnZSIgKHN1Y2ggYXMgTWljcm9zb2Z0IEVkZ2UpLiIpXG4gICAgXG4gICAgKipOb3RlczoqKlxuICAgIFxuICAgICogICBUaG91Z2ggdW5zdGFuZGFyZGl6ZWQsIHRoaXMgZGVjbGFyYXRpb24gaXMgcmVzcGVjdGVkIGJ5IG1vc3QgbW9iaWxlIGJyb3dzZXJzIGR1ZSB0byBkZS1mYWN0byBkb21pbmFuY2UuXG4gICAgKiAgIFRoZSBkZWZhdWx0IHZhbHVlcyBtYXkgdmFyeSBiZXR3ZWVuIGRldmljZXMgYW5kIGJyb3dzZXJzLlxuICAgICogICBUbyBsZWFybiBhYm91dCB0aGlzIGRlY2xhcmF0aW9uIGluIEZpcmVmb3ggZm9yIE1vYmlsZSwgc2VlIFt0aGlzIGFydGljbGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW9iaWxlL1ZpZXdwb3J0X21ldGFfdGFnICJNb2JpbGUvVmlld3BvcnQgbWV0YSB0YWciKS4nfX0se25hbWU6Imh0dHAtZXF1aXYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0RlZmluZXMgYSBwcmFnbWEgZGlyZWN0aXZlLiBUaGUgYXR0cmlidXRlIGlzIG5hbWVkIGAqKmh0dHAtZXF1aXYqKihhbGVudClgIGJlY2F1c2UgYWxsIHRoZSBhbGxvd2VkIHZhbHVlcyBhcmUgbmFtZXMgb2YgcGFydGljdWxhciBIVFRQIGhlYWRlcnM6XG5cbiogICBgImNvbnRlbnQtbGFuZ3VhZ2UiYCAgXG4gICAgRGVmaW5lcyB0aGUgZGVmYXVsdCBsYW5ndWFnZSBvZiB0aGUgcGFnZS4gSXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIFtsYW5nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2xhbmcpIGF0dHJpYnV0ZSBvbiBhbnkgZWxlbWVudC5cbiAgICBcbiAgICAqKldhcm5pbmc6KiogRG8gbm90IHVzZSB0aGlzIHZhbHVlLCBhcyBpdCBpcyBvYnNvbGV0ZS4gUHJlZmVyIHRoZSBgbGFuZ2AgYXR0cmlidXRlIG9uIHRoZSBbYDxodG1sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9odG1sICJUaGUgSFRNTCA8aHRtbD4gZWxlbWVudCByZXByZXNlbnRzIHRoZSByb290ICh0b3AtbGV2ZWwgZWxlbWVudCkgb2YgYW4gSFRNTCBkb2N1bWVudCwgc28gaXQgaXMgYWxzbyByZWZlcnJlZCB0byBhcyB0aGUgcm9vdCBlbGVtZW50LiBBbGwgb3RoZXIgZWxlbWVudHMgbXVzdCBiZSBkZXNjZW5kYW50cyBvZiB0aGlzIGVsZW1lbnQuIikgZWxlbWVudC5cbiAgICBcbiogICBgImNvbnRlbnQtc2VjdXJpdHktcG9saWN5ImAgIFxuICAgIEFsbG93cyBwYWdlIGF1dGhvcnMgdG8gZGVmaW5lIGEgW2NvbnRlbnQgcG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9DU1AvQ1NQX3BvbGljeV9kaXJlY3RpdmVzKSBmb3IgdGhlIGN1cnJlbnQgcGFnZS4gQ29udGVudCBwb2xpY2llcyBtb3N0bHkgc3BlY2lmeSBhbGxvd2VkIHNlcnZlciBvcmlnaW5zIGFuZCBzY3JpcHQgZW5kcG9pbnRzIHdoaWNoIGhlbHAgZ3VhcmQgYWdhaW5zdCBjcm9zcy1zaXRlIHNjcmlwdGluZyBhdHRhY2tzLlxuKiAgIGAiY29udGVudC10eXBlImAgIFxuICAgIERlZmluZXMgdGhlIFtNSU1FIHR5cGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvTUlNRV90eXBlKSBvZiB0aGUgZG9jdW1lbnQsIGZvbGxvd2VkIGJ5IGl0cyBjaGFyYWN0ZXIgZW5jb2RpbmcuIEl0IGZvbGxvd3MgdGhlIHNhbWUgc3ludGF4IGFzIHRoZSBIVFRQIGBjb250ZW50LXR5cGVgIGVudGl0eS1oZWFkZXIgZmllbGQsIGJ1dCBhcyBpdCBpcyBpbnNpZGUgYSBIVE1MIHBhZ2UsIG1vc3QgdmFsdWVzIG90aGVyIHRoYW4gYHRleHQvaHRtbGAgYXJlIGltcG9zc2libGUuIFRoZXJlZm9yZSB0aGUgdmFsaWQgc3ludGF4IGZvciBpdHMgYGNvbnRlbnRgIGlzIHRoZSBzdHJpbmcgXCdgdGV4dC9odG1sYFwnIGZvbGxvd2VkIGJ5IGEgY2hhcmFjdGVyIHNldCB3aXRoIHRoZSBmb2xsb3dpbmcgc3ludGF4OiBcJ2A7IGNoYXJzZXQ9X0lBTkFjaGFyc2V0X2BcJywgd2hlcmUgYElBTkFjaGFyc2V0YCBpcyB0aGUgX3ByZWZlcnJlZCBNSU1FIG5hbWVfIGZvciBhIGNoYXJhY3RlciBzZXQgYXMgW2RlZmluZWQgYnkgdGhlIElBTkEuXShodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyYWN0ZXItc2V0cylcbiAgICBcbiAgICAqKldhcm5pbmc6KiogRG8gbm90IHVzZSB0aGlzIHZhbHVlLCBhcyBpdCBpcyBvYnNvbGV0ZS4gVXNlIHRoZSBbYGNoYXJzZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNoYXJzZXQpIGF0dHJpYnV0ZSBvbiB0aGUgW2A8bWV0YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSAiVGhlIEhUTUwgPG1ldGE+IGVsZW1lbnQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBvdGhlciBIVE1MIG1ldGEtcmVsYXRlZCBlbGVtZW50cywgbGlrZSA8YmFzZT4sIDxsaW5rPiwgPHNjcmlwdD4sIDxzdHlsZT4gb3IgPHRpdGxlPi4iKSBlbGVtZW50LlxuICAgIFxuICAgICoqTm90ZToqKiBBcyBbYDxtZXRhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhICJUaGUgSFRNTCA8bWV0YT4gZWxlbWVudCByZXByZXNlbnRzIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IG90aGVyIEhUTUwgbWV0YS1yZWxhdGVkIGVsZW1lbnRzLCBsaWtlIDxiYXNlPiwgPGxpbms+LCA8c2NyaXB0PiwgPHN0eWxlPiBvciA8dGl0bGU+LiIpIGNhblwndCBjaGFuZ2UgZG9jdW1lbnRzXCcgdHlwZXMgaW4gWEhUTUwgb3IgSFRNTDVcJ3MgWEhUTUwgc2VyaWFsaXphdGlvbiwgbmV2ZXIgc2V0IHRoZSBNSU1FIHR5cGUgdG8gYW4gWEhUTUwgTUlNRSB0eXBlIHdpdGggYDxtZXRhPmAuXG4gICAgXG4qICAgYCJyZWZyZXNoImAgIFxuICAgIFRoaXMgaW5zdHJ1Y3Rpb24gc3BlY2lmaWVzOlxuICAgICogICBUaGUgbnVtYmVyIG9mIHNlY29uZHMgdW50aWwgdGhlIHBhZ2Ugc2hvdWxkIGJlIHJlbG9hZGVkIC0gb25seSBpZiB0aGUgW2Bjb250ZW50YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jb250ZW50KSBhdHRyaWJ1dGUgY29udGFpbnMgYSBwb3NpdGl2ZSBpbnRlZ2VyLlxuICAgICogICBUaGUgbnVtYmVyIG9mIHNlY29uZHMgdW50aWwgdGhlIHBhZ2Ugc2hvdWxkIHJlZGlyZWN0IHRvIGFub3RoZXIgLSBvbmx5IGlmIHRoZSBbYGNvbnRlbnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNvbnRlbnQpIGF0dHJpYnV0ZSBjb250YWlucyBhIHBvc2l0aXZlIGludGVnZXIgZm9sbG93ZWQgYnkgdGhlIHN0cmluZyBcJ2A7dXJsPWBcJywgYW5kIGEgdmFsaWQgVVJMLlxuKiAgIGAic2V0LWNvb2tpZSJgICBcbiAgICBEZWZpbmVzIGEgW2Nvb2tpZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9jb29raWUpIGZvciB0aGUgcGFnZS4gSXRzIGNvbnRlbnQgbXVzdCBmb2xsb3cgdGhlIHN5bnRheCBkZWZpbmVkIGluIHRoZSBbSUVURiBIVFRQIENvb2tpZSBTcGVjaWZpY2F0aW9uXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1odHRwc3RhdGUtY29va2llLTE0KS5cbiAgICBcbiAgICAqKldhcm5pbmc6KiogRG8gbm90IHVzZSB0aGlzIGluc3RydWN0aW9uLCBhcyBpdCBpcyBvYnNvbGV0ZS4gVXNlIHRoZSBIVFRQIGhlYWRlciBbYFNldC1Db29raWVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvU2V0LUNvb2tpZSkgaW5zdGVhZC4nfX0se25hbWU6ImNvbnRlbnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIHRoZSB2YWx1ZSBmb3IgdGhlIFtgaHR0cC1lcXVpdmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItaHR0cC1lcXVpdikgb3IgW2BuYW1lYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1uYW1lKSBhdHRyaWJ1dGUsIGRlcGVuZGluZyBvbiB3aGljaCBpcyB1c2VkLiJ9fSx7bmFtZToiY2hhcnNldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgZGVjbGFyZXMgdGhlIHBhZ2VcJ3MgY2hhcmFjdGVyIGVuY29kaW5nLiBJdCBtdXN0IGNvbnRhaW4gYSBbc3RhbmRhcmQgSUFOQSBNSU1FIG5hbWUgZm9yIGNoYXJhY3RlciBlbmNvZGluZ3NdKGh0dHBzOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2NoYXJhY3Rlci1zZXRzKS4gQWx0aG91Z2ggdGhlIHN0YW5kYXJkIGRvZXNuXCd0IHJlcXVlc3QgYSBzcGVjaWZpYyBlbmNvZGluZywgaXQgc3VnZ2VzdHM6XG5cbiogICBBdXRob3JzIGFyZSBlbmNvdXJhZ2VkIHRvIHVzZSBbYFVURi04YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9VVEYtOCkuXG4qICAgQXV0aG9ycyBzaG91bGQgbm90IHVzZSBBU0NJSS1pbmNvbXBhdGlibGUgZW5jb2RpbmdzIHRvIGF2b2lkIHNlY3VyaXR5IHJpc2s6IGJyb3dzZXJzIG5vdCBzdXBwb3J0aW5nIHRoZW0gbWF5IGludGVycHJldCBoYXJtZnVsIGNvbnRlbnQgYXMgSFRNTC4gVGhpcyBoYXBwZW5zIHdpdGggdGhlIGBKSVNfQzYyMjYtMTk4M2AsIGBKSVNfWDAyMTItMTk5MGAsIGBIWi1HQi0yMzEyYCwgYEpPSEFCYCwgdGhlIElTTy0yMDIyIGZhbWlseSBhbmQgdGhlIEVCQ0RJQyBmYW1pbHkuXG5cbioqTm90ZToqKiBBU0NJSS1pbmNvbXBhdGlibGUgZW5jb2RpbmdzIGFyZSB0aG9zZSB0aGF0IGRvblwndCBtYXAgdGhlIDgtYml0IGNvZGUgcG9pbnRzIGAweDIwYCB0byBgMHg3RWAgdG8gdGhlIGAweDAwMjBgIHRvIGAweDAwN0VgIFVuaWNvZGUgY29kZSBwb2ludHMpXG5cbiogICBBdXRob3JzICoqbXVzdCBub3QqKiB1c2UgYENFU1UtOGAsIGBVVEYtN2AsIGBCT0NVLTFgIGFuZC9vciBgU0NTVWAgYXMgW2Nyb3NzLXNpdGUgc2NyaXB0aW5nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0Nyb3NzLXNpdGVfc2NyaXB0aW5nKSBhdHRhY2tzIHdpdGggdGhlc2UgZW5jb2RpbmdzIGhhdmUgYmVlbiBkZW1vbnN0cmF0ZWQuXG4qICAgQXV0aG9ycyBzaG91bGQgbm90IHVzZSBgVVRGLTMyYCBiZWNhdXNlIG5vdCBhbGwgSFRNTDUgZW5jb2RpbmcgYWxnb3JpdGhtcyBjYW4gZGlzdGluZ3Vpc2ggaXQgZnJvbSBgVVRGLTE2YC5cblxuKipOb3RlczoqKlxuXG4qICAgVGhlIGRlY2xhcmVkIGNoYXJhY3RlciBlbmNvZGluZyBtdXN0IG1hdGNoIHRoZSBvbmUgdGhlIHBhZ2Ugd2FzIHNhdmVkIHdpdGggdG8gYXZvaWQgZ2FyYmxlZCBjaGFyYWN0ZXJzIGFuZCBzZWN1cml0eSBob2xlcy5cbiogICBUaGUgW2A8bWV0YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSAiVGhlIEhUTUwgPG1ldGE+IGVsZW1lbnQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBvdGhlciBIVE1MIG1ldGEtcmVsYXRlZCBlbGVtZW50cywgbGlrZSA8YmFzZT4sIDxsaW5rPiwgPHNjcmlwdD4sIDxzdHlsZT4gb3IgPHRpdGxlPi4iKSBlbGVtZW50IGRlY2xhcmluZyB0aGUgZW5jb2RpbmcgbXVzdCBiZSBpbnNpZGUgdGhlIFtgPGhlYWQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2hlYWQgIlRoZSBIVE1MIDxoZWFkPiBlbGVtZW50IHByb3ZpZGVzIGdlbmVyYWwgaW5mb3JtYXRpb24gKG1ldGFkYXRhKSBhYm91dCB0aGUgZG9jdW1lbnQsIGluY2x1ZGluZyBpdHMgdGl0bGUgYW5kIGxpbmtzIHRvIGl0c8Kgc2NyaXB0cyBhbmQgc3R5bGUgc2hlZXRzLiIpIGVsZW1lbnQgYW5kICoqd2l0aGluIHRoZSBmaXJzdCAxMDI0IGJ5dGVzKiogb2YgdGhlIEhUTUwgYXMgc29tZSBicm93c2VycyBvbmx5IGxvb2sgYXQgdGhvc2UgYnl0ZXMgYmVmb3JlIGNob29zaW5nIGFuIGVuY29kaW5nLlxuKiAgIFRoaXMgW2A8bWV0YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSAiVGhlIEhUTUwgPG1ldGE+IGVsZW1lbnQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBvdGhlciBIVE1MIG1ldGEtcmVsYXRlZCBlbGVtZW50cywgbGlrZSA8YmFzZT4sIDxsaW5rPiwgPHNjcmlwdD4sIDxzdHlsZT4gb3IgPHRpdGxlPi4iKSBlbGVtZW50IGlzIG9ubHkgb25lIHBhcnQgb2YgdGhlIFthbGdvcml0aG0gdG8gZGV0ZXJtaW5lIGEgcGFnZVwncyBjaGFyYWN0ZXIgc2V0XShodHRwczovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI2VuY29kaW5nLXNuaWZmaW5nLWFsZ29yaXRobSAiQWxnb3JpdGhtIGNoYXJzZXQgcGFnZSIpLiBUaGUgW2BDb250ZW50LVR5cGVgIGhlYWRlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0NvbnRlbnQtVHlwZSkgYW5kIGFueSBbQnl0ZS1PcmRlciBNYXJrc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9CeXRlLU9yZGVyX01hcmsgIlRoZSBkZWZpbml0aW9uIG9mIHRoYXQgdGVybSAoQnl0ZS1PcmRlciBNYXJrcykgaGFzIG5vdCBiZWVuIHdyaXR0ZW4geWV0OyBwbGVhc2UgY29uc2lkZXIgY29udHJpYnV0aW5nIGl0ISIpIG92ZXJyaWRlIHRoaXMgZWxlbWVudC5cbiogICBJdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBkZWZpbmUgdGhlIGNoYXJhY3RlciBlbmNvZGluZy4gSWYgYSBwYWdlXCdzIGVuY29kaW5nIGlzIHVuZGVmaW5lZCwgY3Jvc3Mtc2NyaXB0aW5nIHRlY2huaXF1ZXMgYXJlIHBvc3NpYmxlLCBzdWNoIGFzIHRoZSBbYFVURi03YCBmYWxsYmFjayBjcm9zcy1zY3JpcHRpbmcgdGVjaG5pcXVlXShodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2RvY3R5cGUtbWlycm9yL3dpa2kvQXJ0aWNsZVV0ZjcpLlxuKiAgIFRoZSBbYDxtZXRhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhICJUaGUgSFRNTCA8bWV0YT4gZWxlbWVudCByZXByZXNlbnRzIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IG90aGVyIEhUTUwgbWV0YS1yZWxhdGVkIGVsZW1lbnRzLCBsaWtlIDxiYXNlPiwgPGxpbms+LCA8c2NyaXB0PiwgPHN0eWxlPiBvciA8dGl0bGU+LiIpIGVsZW1lbnQgd2l0aCBhIGBjaGFyc2V0YCBhdHRyaWJ1dGUgaXMgYSBzeW5vbnltIGZvciB0aGUgcHJlLUhUTUw1IGA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1fSUFOQWNoYXJzZXRfIj5gLCB3aGVyZSBfYElBTkFjaGFyc2V0YF8gY29udGFpbnMgdGhlIHZhbHVlIG9mIHRoZSBlcXVpdmFsZW50IFtgY2hhcnNldGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItY2hhcnNldCkgYXR0cmlidXRlLiBUaGlzIHN5bnRheCBpcyBzdGlsbCBhbGxvd2VkLCBhbHRob3VnaCBubyBsb25nZXIgcmVjb21tZW5kZWQuJ319LHtuYW1lOiJzY2hlbWUiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBzY2hlbWUgaW4gd2hpY2ggbWV0YWRhdGEgaXMgZGVzY3JpYmVkLiBBIHNjaGVtZSBpcyBhIGNvbnRleHQgbGVhZGluZyB0byB0aGUgY29ycmVjdCBpbnRlcnByZXRhdGlvbnMgb2YgdGhlIFtgY29udGVudGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItY29udGVudCkgdmFsdWUsIGxpa2UgYSBmb3JtYXQuXG5cbioqV2FybmluZzoqKiBEbyBub3QgdXNlIHRoaXMgdmFsdWUsIGFzIGl0IGlzIG9ic29sZXRlLiBUaGVyZSBpcyBubyByZXBsYWNlbWVudCBhcyB0aGVyZSB3YXMgbm8gcmVhbCB1c2FnZSBmb3IgaXQuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhIn1dfSx7bmFtZToic3R5bGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzdHlsZSBlbGVtZW50IGFsbG93cyBhdXRob3JzIHRvIGVtYmVkIHN0eWxlIGluZm9ybWF0aW9uIGluIHRoZWlyIGRvY3VtZW50cy4gVGhlIHN0eWxlIGVsZW1lbnQgaXMgb25lIG9mIHNldmVyYWwgaW5wdXRzIHRvIHRoZSBzdHlsaW5nIHByb2Nlc3NpbmcgbW9kZWwuIFRoZSBlbGVtZW50IGRvZXMgbm90IHJlcHJlc2VudCBjb250ZW50IGZvciB0aGUgdXNlci4ifSxhdHRyaWJ1dGVzOlt7bmFtZToibWVkaWEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGRlZmluZXMgd2hpY2ggbWVkaWEgdGhlIHN0eWxlIHNob3VsZCBiZSBhcHBsaWVkIHRvLiBJdHMgdmFsdWUgaXMgYSBbbWVkaWEgcXVlcnldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0d1aWRlL0NTUy9NZWRpYV9xdWVyaWVzKSwgd2hpY2ggZGVmYXVsdHMgdG8gYGFsbGAgaWYgdGhlIGF0dHJpYnV0ZSBpcyBtaXNzaW5nLiJ9fSx7bmFtZToibm9uY2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgY3J5cHRvZ3JhcGhpYyBub25jZSAobnVtYmVyIHVzZWQgb25jZSkgdXNlZCB0byB3aGl0ZWxpc3QgaW5saW5lIHN0eWxlcyBpbiBhIFtzdHlsZS1zcmMgQ29udGVudC1TZWN1cml0eS1Qb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9Db250ZW50LVNlY3VyaXR5LVBvbGljeS9zdHlsZS1zcmMpLiBUaGUgc2VydmVyIG11c3QgZ2VuZXJhdGUgYSB1bmlxdWUgbm9uY2UgdmFsdWUgZWFjaCB0aW1lIGl0IHRyYW5zbWl0cyBhIHBvbGljeS4gSXQgaXMgY3JpdGljYWwgdG8gcHJvdmlkZSBhIG5vbmNlIHRoYXQgY2Fubm90IGJlIGd1ZXNzZWQgYXMgYnlwYXNzaW5nIGEgcmVzb3VyY2XigJlzIHBvbGljeSBpcyBvdGhlcndpc2UgdHJpdmlhbC4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGRlZmluZXMgdGhlIHN0eWxpbmcgbGFuZ3VhZ2UgYXMgYSBNSU1FIHR5cGUgKGNoYXJzZXQgc2hvdWxkIG5vdCBiZSBzcGVjaWZpZWQpLiBUaGlzIGF0dHJpYnV0ZSBpcyBvcHRpb25hbCBhbmQgZGVmYXVsdHMgdG8gYHRleHQvY3NzYCBpZiBpdCBpcyBub3Qgc3BlY2lmaWVkIOKAlCB0aGVyZSBpcyB2ZXJ5IGxpdHRsZSByZWFzb24gdG8gaW5jbHVkZSB0aGlzIGluIG1vZGVybiB3ZWIgZG9jdW1lbnRzLiJ9fSx7bmFtZToic2NvcGVkIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJ0aXRsZSIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyBbYWx0ZXJuYXRpdmUgc3R5bGUgc2hlZXRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9BbHRlcm5hdGl2ZV9zdHlsZV9zaGVldHMpIHNldHMuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zdHlsZSJ9XX0se25hbWU6ImJvZHkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBib2R5IGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgY29udGVudCBvZiB0aGUgZG9jdW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6Im9uYWZ0ZXJwcmludCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCBhZnRlciB0aGUgdXNlciBoYXMgcHJpbnRlZCB0aGUgZG9jdW1lbnQuIn19LHtuYW1lOiJvbmJlZm9yZXByaW50IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHVzZXIgcmVxdWVzdHMgcHJpbnRpbmcgb2YgdGhlIGRvY3VtZW50LiJ9fSx7bmFtZToib25iZWZvcmV1bmxvYWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgaXMgYWJvdXQgdG8gYmUgdW5sb2FkZWQuIn19LHtuYW1lOiJvbmhhc2hjaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZnJhZ21lbnQgaWRlbnRpZmllciBwYXJ0IChzdGFydGluZyB3aXRoIHRoZSBoYXNoIChgJyMnYCkgY2hhcmFjdGVyKSBvZiB0aGUgZG9jdW1lbnQncyBjdXJyZW50IGFkZHJlc3MgaGFzIGNoYW5nZWQuIn19LHtuYW1lOiJvbmxhbmd1YWdlY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHByZWZlcnJlZCBsYW5ndWFnZXMgY2hhbmdlZC4ifX0se25hbWU6Im9ubWVzc2FnZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBkb2N1bWVudCBoYXMgcmVjZWl2ZWQgYSBtZXNzYWdlLiJ9fSx7bmFtZToib25vZmZsaW5lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gbmV0d29yayBjb21tdW5pY2F0aW9uIGhhcyBmYWlsZWQuIn19LHtuYW1lOiJvbm9ubGluZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIG5ldHdvcmsgY29tbXVuaWNhdGlvbiBoYXMgYmVlbiByZXN0b3JlZC4ifX0se25hbWU6Im9ucGFnZWhpZGUifSx7bmFtZToib25wYWdlc2hvdyJ9LHtuYW1lOiJvbnBvcHN0YXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHVzZXIgaGFzIG5hdmlnYXRlZCBzZXNzaW9uIGhpc3RvcnkuIn19LHtuYW1lOiJvbnN0b3JhZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgc3RvcmFnZSBhcmVhIGhhcyBjaGFuZ2VkLiJ9fSx7bmFtZToib251bmxvYWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgaXMgZ29pbmcgYXdheS4ifX0se25hbWU6ImFsaW5rIixkZXNjcmlwdGlvbjonQ29sb3Igb2YgdGV4dCBmb3IgaHlwZXJsaW5rcyB3aGVuIHNlbGVjdGVkLiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2Bjb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jb2xvciAiVGhlIGNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHZhbHVlIG9mIGFuIGVsZW1lbnRcJ3MgdGV4dCBhbmQgdGV4dCBkZWNvcmF0aW9ucywgYW5kIHNldHMgdGhlIGN1cnJlbnRjb2xvciB2YWx1ZS4iKSBwcm9wZXJ0eSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBbYDphY3RpdmVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvOmFjdGl2ZSAiVGhlIDphY3RpdmUgQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFuIGVsZW1lbnQgKHN1Y2ggYXMgYSBidXR0b24pIHRoYXQgaXMgYmVpbmcgYWN0aXZhdGVkIGJ5IHRoZSB1c2VyLiIpIHBzZXVkby1jbGFzcyBpbnN0ZWFkLl8nfSx7bmFtZToiYmFja2dyb3VuZCIsZGVzY3JpcHRpb246J1VSSSBvZiBhIGltYWdlIHRvIHVzZSBhcyBhIGJhY2tncm91bmQuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYGJhY2tncm91bmRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZCAiVGhlIGJhY2tncm91bmQgc2hvcnRoYW5kIENTUyBwcm9wZXJ0eSBzZXRzIGFsbCBiYWNrZ3JvdW5kIHN0eWxlIHByb3BlcnRpZXMgYXQgb25jZSwgc3VjaCBhcyBjb2xvciwgaW1hZ2UsIG9yaWdpbiBhbmQgc2l6ZSwgb3IgcmVwZWF0IG1ldGhvZC4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToiYmdjb2xvciIsZGVzY3JpcHRpb246J0JhY2tncm91bmQgY29sb3IgZm9yIHRoZSBkb2N1bWVudC4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgYmFja2dyb3VuZC1jb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWNvbG9yICJUaGUgYmFja2dyb3VuZC1jb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBlbGVtZW50LiIpIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGluc3RlYWQuXyd9LHtuYW1lOiJib3R0b21tYXJnaW4iLGRlc2NyaXB0aW9uOidUaGUgbWFyZ2luIG9mIHRoZSBib3R0b20gb2YgdGhlIGJvZHkuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYG1hcmdpbi1ib3R0b21gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luLWJvdHRvbSAiVGhlIG1hcmdpbi1ib3R0b20gQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSBib3R0b20gb2YgYW4gZWxlbWVudC4gQSBwb3NpdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgZmFydGhlciBmcm9tIGl0cyBuZWlnaGJvcnMsIHdoaWxlIGEgbmVnYXRpdmUgdmFsdWUgcGxhY2VzIGl0IGNsb3Nlci4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToibGVmdG1hcmdpbiIsZGVzY3JpcHRpb246J1RoZSBtYXJnaW4gb2YgdGhlIGxlZnQgb2YgdGhlIGJvZHkuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYG1hcmdpbi1sZWZ0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbi1sZWZ0ICJUaGUgbWFyZ2luLWxlZnQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSBsZWZ0IHNpZGUgb2YgYW4gZWxlbWVudC4gQSBwb3NpdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgZmFydGhlciBmcm9tIGl0cyBuZWlnaGJvcnMsIHdoaWxlIGEgbmVnYXRpdmUgdmFsdWUgcGxhY2VzIGl0IGNsb3Nlci4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToibGluayIsZGVzY3JpcHRpb246J0NvbG9yIG9mIHRleHQgZm9yIHVudmlzaXRlZCBoeXBlcnRleHQgbGlua3MuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYGNvbG9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NvbG9yICJUaGUgY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGZvcmVncm91bmQgY29sb3IgdmFsdWUgb2YgYW4gZWxlbWVudFwncyB0ZXh0IGFuZCB0ZXh0IGRlY29yYXRpb25zLCBhbmQgc2V0cyB0aGUgY3VycmVudGNvbG9yIHZhbHVlLiIpIHByb3BlcnR5IGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIFtgOmxpbmtgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvOmxpbmsgIlRoZSA6bGluayBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGhhcyBub3QgeWV0IGJlZW4gdmlzaXRlZC4gSXQgbWF0Y2hlcyBldmVyeSB1bnZpc2l0ZWQgPGE+LCA8YXJlYT4sIG9yIDxsaW5rPiBlbGVtZW50IHRoYXQgaGFzIGFuIGhyZWYgYXR0cmlidXRlLiIpIHBzZXVkby1jbGFzcyBpbnN0ZWFkLl8nfSx7bmFtZToib25ibHVyIixkZXNjcmlwdGlvbjoiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBkb2N1bWVudCBsb3NlcyBmb2N1cy4ifSx7bmFtZToib25lcnJvciIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgZmFpbHMgdG8gbG9hZCBwcm9wZXJseS4ifSx7bmFtZToib25mb2N1cyIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgcmVjZWl2ZXMgZm9jdXMuIn0se25hbWU6Im9ubG9hZCIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgaGFzIGZpbmlzaGVkIGxvYWRpbmcuIn0se25hbWU6Im9ucmVkbyIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgdXNlciBoYXMgbW92ZWQgZm9yd2FyZCBpbiB1bmRvIHRyYW5zYWN0aW9uIGhpc3RvcnkuIn0se25hbWU6Im9ucmVzaXplIixkZXNjcmlwdGlvbjoiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBkb2N1bWVudCBoYXMgYmVlbiByZXNpemVkLiJ9LHtuYW1lOiJvbnVuZG8iLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHVzZXIgaGFzIG1vdmVkIGJhY2t3YXJkIGluIHVuZG8gdHJhbnNhY3Rpb24gaGlzdG9yeS4ifSx7bmFtZToicmlnaHRtYXJnaW4iLGRlc2NyaXB0aW9uOidUaGUgbWFyZ2luIG9mIHRoZSByaWdodCBvZiB0aGUgYm9keS4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgbWFyZ2luLXJpZ2h0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbi1yaWdodCAiVGhlIG1hcmdpbi1yaWdodCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gdGhlIHJpZ2h0IHNpZGUgb2YgYW4gZWxlbWVudC4gQSBwb3NpdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgZmFydGhlciBmcm9tIGl0cyBuZWlnaGJvcnMsIHdoaWxlIGEgbmVnYXRpdmUgdmFsdWUgcGxhY2VzIGl0IGNsb3Nlci4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToidGV4dCIsZGVzY3JpcHRpb246J0ZvcmVncm91bmQgY29sb3Igb2YgdGV4dC4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sb3IgIlRoZSBjb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgZm9yZWdyb3VuZCBjb2xvciB2YWx1ZSBvZiBhbiBlbGVtZW50XCdzIHRleHQgYW5kIHRleHQgZGVjb3JhdGlvbnMsIGFuZCBzZXRzIHRoZSBjdXJyZW50Y29sb3IgdmFsdWUuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6InRvcG1hcmdpbiIsZGVzY3JpcHRpb246J1RoZSBtYXJnaW4gb2YgdGhlIHRvcCBvZiB0aGUgYm9keS4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgbWFyZ2luLXRvcGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tdG9wICJUaGUgbWFyZ2luLXRvcCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gdGhlIHRvcCBvZiBhbiBlbGVtZW50LiBBIHBvc2l0aXZlIHZhbHVlIHBsYWNlcyBpdCBmYXJ0aGVyIGZyb20gaXRzIG5laWdoYm9ycywgd2hpbGUgYSBuZWdhdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgY2xvc2VyLiIpIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGluc3RlYWQuXyd9LHtuYW1lOiJ2bGluayIsZGVzY3JpcHRpb246J0NvbG9yIG9mIHRleHQgZm9yIHZpc2l0ZWQgaHlwZXJ0ZXh0IGxpbmtzLiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2Bjb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jb2xvciAiVGhlIGNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHZhbHVlIG9mIGFuIGVsZW1lbnRcJ3MgdGV4dCBhbmQgdGV4dCBkZWNvcmF0aW9ucywgYW5kIHNldHMgdGhlIGN1cnJlbnRjb2xvciB2YWx1ZS4iKSBwcm9wZXJ0eSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBbYDp2aXNpdGVkYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTLzp2aXNpdGVkICJUaGUgOnZpc2l0ZWQgQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGxpbmtzIHRoYXQgdGhlIHVzZXIgaGFzIGFscmVhZHkgdmlzaXRlZC4gRm9yIHByaXZhY3kgcmVhc29ucywgdGhlIHN0eWxlcyB0aGF0IGNhbiBiZSBtb2RpZmllZCB1c2luZyB0aGlzIHNlbGVjdG9yIGFyZSB2ZXJ5IGxpbWl0ZWQuIikgcHNldWRvLWNsYXNzIGluc3RlYWQuXyd9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYm9keSJ9XX0se25hbWU6ImFydGljbGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBhcnRpY2xlIGVsZW1lbnQgcmVwcmVzZW50cyBhIGNvbXBsZXRlLCBvciBzZWxmLWNvbnRhaW5lZCwgY29tcG9zaXRpb24gaW4gYSBkb2N1bWVudCwgcGFnZSwgYXBwbGljYXRpb24sIG9yIHNpdGUgYW5kIHRoYXQgaXMsIGluIHByaW5jaXBsZSwgaW5kZXBlbmRlbnRseSBkaXN0cmlidXRhYmxlIG9yIHJldXNhYmxlLCBlLmcuIGluIHN5bmRpY2F0aW9uLiBUaGlzIGNvdWxkIGJlIGEgZm9ydW0gcG9zdCwgYSBtYWdhemluZSBvciBuZXdzcGFwZXIgYXJ0aWNsZSwgYSBibG9nIGVudHJ5LCBhIHVzZXItc3VibWl0dGVkIGNvbW1lbnQsIGFuIGludGVyYWN0aXZlIHdpZGdldCBvciBnYWRnZXQsIG9yIGFueSBvdGhlciBpbmRlcGVuZGVudCBpdGVtIG9mIGNvbnRlbnQuIEVhY2ggYXJ0aWNsZSBzaG91bGQgYmUgaWRlbnRpZmllZCwgdHlwaWNhbGx5IGJ5IGluY2x1ZGluZyBhIGhlYWRpbmcgKGgx4oCTaDYgZWxlbWVudCkgYXMgYSBjaGlsZCBvZiB0aGUgYXJ0aWNsZSBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2FydGljbGUifV19LHtuYW1lOiJzZWN0aW9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc2VjdGlvbiBlbGVtZW50IHJlcHJlc2VudHMgYSBnZW5lcmljIHNlY3Rpb24gb2YgYSBkb2N1bWVudCBvciBhcHBsaWNhdGlvbi4gQSBzZWN0aW9uLCBpbiB0aGlzIGNvbnRleHQsIGlzIGEgdGhlbWF0aWMgZ3JvdXBpbmcgb2YgY29udGVudC4gRWFjaCBzZWN0aW9uIHNob3VsZCBiZSBpZGVudGlmaWVkLCB0eXBpY2FsbHkgYnkgaW5jbHVkaW5nIGEgaGVhZGluZyAoIGgxLSBoNiBlbGVtZW50KSBhcyBhIGNoaWxkIG9mIHRoZSBzZWN0aW9uIGVsZW1lbnQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2VjdGlvbiJ9XX0se25hbWU6Im5hdiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5hdiBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIG9mIGEgcGFnZSB0aGF0IGxpbmtzIHRvIG90aGVyIHBhZ2VzIG9yIHRvIHBhcnRzIHdpdGhpbiB0aGUgcGFnZTogYSBzZWN0aW9uIHdpdGggbmF2aWdhdGlvbiBsaW5rcy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9uYXYifV19LHtuYW1lOiJhc2lkZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGFzaWRlIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gb2YgYSBwYWdlIHRoYXQgY29uc2lzdHMgb2YgY29udGVudCB0aGF0IGlzIHRhbmdlbnRpYWxseSByZWxhdGVkIHRvIHRoZSBjb250ZW50IGFyb3VuZCB0aGUgYXNpZGUgZWxlbWVudCwgYW5kIHdoaWNoIGNvdWxkIGJlIGNvbnNpZGVyZWQgc2VwYXJhdGUgZnJvbSB0aGF0IGNvbnRlbnQuIFN1Y2ggc2VjdGlvbnMgYXJlIG9mdGVuIHJlcHJlc2VudGVkIGFzIHNpZGViYXJzIGluIHByaW50ZWQgdHlwb2dyYXBoeS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hc2lkZSJ9XX0se25hbWU6ImgxIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaDEgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBoZWFkaW5nLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0hlYWRpbmdfRWxlbWVudHMifV19LHtuYW1lOiJoMiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGgyIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gaGVhZGluZy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9IZWFkaW5nX0VsZW1lbnRzIn1dfSx7bmFtZToiaDMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoMyBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIGhlYWRpbmcuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvSGVhZGluZ19FbGVtZW50cyJ9XX0se25hbWU6Img0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaDQgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBoZWFkaW5nLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0hlYWRpbmdfRWxlbWVudHMifV19LHtuYW1lOiJoNSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGg1IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gaGVhZGluZy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9IZWFkaW5nX0VsZW1lbnRzIn1dfSx7bmFtZToiaDYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoNiBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIGhlYWRpbmcuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvSGVhZGluZ19FbGVtZW50cyJ9XX0se25hbWU6ImhlYWRlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhlYWRlciBlbGVtZW50IHJlcHJlc2VudHMgaW50cm9kdWN0b3J5IGNvbnRlbnQgZm9yIGl0cyBuZWFyZXN0IGFuY2VzdG9yIHNlY3Rpb25pbmcgY29udGVudCBvciBzZWN0aW9uaW5nIHJvb3QgZWxlbWVudC4gQSBoZWFkZXIgdHlwaWNhbGx5IGNvbnRhaW5zIGEgZ3JvdXAgb2YgaW50cm9kdWN0b3J5IG9yIG5hdmlnYXRpb25hbCBhaWRzLiBXaGVuIHRoZSBuZWFyZXN0IGFuY2VzdG9yIHNlY3Rpb25pbmcgY29udGVudCBvciBzZWN0aW9uaW5nIHJvb3QgZWxlbWVudCBpcyB0aGUgYm9keSBlbGVtZW50LCB0aGVuIGl0IGFwcGxpZXMgdG8gdGhlIHdob2xlIHBhZ2UuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaGVhZGVyIn1dfSx7bmFtZToiZm9vdGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZm9vdGVyIGVsZW1lbnQgcmVwcmVzZW50cyBhIGZvb3RlciBmb3IgaXRzIG5lYXJlc3QgYW5jZXN0b3Igc2VjdGlvbmluZyBjb250ZW50IG9yIHNlY3Rpb25pbmcgcm9vdCBlbGVtZW50LiBBIGZvb3RlciB0eXBpY2FsbHkgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgaXRzIHNlY3Rpb24gc3VjaCBhcyB3aG8gd3JvdGUgaXQsIGxpbmtzIHRvIHJlbGF0ZWQgZG9jdW1lbnRzLCBjb3B5cmlnaHQgZGF0YSwgYW5kIHRoZSBsaWtlLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvb3RlciJ9XX0se25hbWU6ImFkZHJlc3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBhZGRyZXNzIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgY29udGFjdCBpbmZvcm1hdGlvbiBmb3IgaXRzIG5lYXJlc3QgYXJ0aWNsZSBvciBib2R5IGVsZW1lbnQgYW5jZXN0b3IuIElmIHRoYXQgaXMgdGhlIGJvZHkgZWxlbWVudCwgdGhlbiB0aGUgY29udGFjdCBpbmZvcm1hdGlvbiBhcHBsaWVzIHRvIHRoZSBkb2N1bWVudCBhcyBhIHdob2xlLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2FkZHJlc3MifV19LHtuYW1lOiJwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcCBlbGVtZW50IHJlcHJlc2VudHMgYSBwYXJhZ3JhcGguIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcCJ9XX0se25hbWU6ImhyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaHIgZWxlbWVudCByZXByZXNlbnRzIGEgcGFyYWdyYXBoLWxldmVsIHRoZW1hdGljIGJyZWFrLCBlLmcuIGEgc2NlbmUgY2hhbmdlIGluIGEgc3RvcnksIG9yIGEgdHJhbnNpdGlvbiB0byBhbm90aGVyIHRvcGljIHdpdGhpbiBhIHNlY3Rpb24gb2YgYSByZWZlcmVuY2UgYm9vay4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBhbGlnbm1lbnQgb2YgdGhlIHJ1bGUgb24gdGhlIHBhZ2UuIElmIG5vIHZhbHVlIGlzIHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYGxlZnRgLiJ9LHtuYW1lOiJjb2xvciIsZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIHRoZSBydWxlIHRocm91Z2ggY29sb3IgbmFtZSBvciBoZXhhZGVjaW1hbCB2YWx1ZS4ifSx7bmFtZToibm9zaGFkZSIsZGVzY3JpcHRpb246IlNldHMgdGhlIHJ1bGUgdG8gaGF2ZSBubyBzaGFkaW5nLiJ9LHtuYW1lOiJzaXplIixkZXNjcmlwdGlvbjoiU2V0cyB0aGUgaGVpZ2h0LCBpbiBwaXhlbHMsIG9mIHRoZSBydWxlLiJ9LHtuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246IlNldHMgdGhlIGxlbmd0aCBvZiB0aGUgcnVsZSBvbiB0aGUgcGFnZSB0aHJvdWdoIGEgcGl4ZWwgb3IgcGVyY2VudGFnZSB2YWx1ZS4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2hyIn1dfSx7bmFtZToicHJlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcHJlIGVsZW1lbnQgcmVwcmVzZW50cyBhIGJsb2NrIG9mIHByZWZvcm1hdHRlZCB0ZXh0LCBpbiB3aGljaCBzdHJ1Y3R1cmUgaXMgcmVwcmVzZW50ZWQgYnkgdHlwb2dyYXBoaWMgY29udmVudGlvbnMgcmF0aGVyIHRoYW4gYnkgZWxlbWVudHMuIn0sYXR0cmlidXRlczpbe25hbWU6ImNvbHMiLGRlc2NyaXB0aW9uOidDb250YWlucyB0aGUgX3ByZWZlcnJlZF8gY291bnQgb2YgY2hhcmFjdGVycyB0aGF0IGEgbGluZSBzaG91bGQgaGF2ZS4gSXQgd2FzIGEgbm9uLXN0YW5kYXJkIHN5bm9ueW0gb2YgW2B3aWR0aGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9wcmUjYXR0ci13aWR0aCkuIFRvIGFjaGlldmUgc3VjaCBhbiBlZmZlY3QsIHVzZSBDU1MgW2B3aWR0aGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy93aWR0aCAiVGhlIHdpZHRoIENTUyBwcm9wZXJ0eSBzZXRzIGFuIGVsZW1lbnRcJ3Mgd2lkdGguIEJ5IGRlZmF1bHQgaXQgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGNvbnRlbnQgYXJlYSwgYnV0IGlmIGJveC1zaXppbmcgaXMgc2V0IHRvIGJvcmRlci1ib3gsIGl0IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIgYXJlYS4iKSBpbnN0ZWFkLid9LHtuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246J0NvbnRhaW5zIHRoZSBfcHJlZmVycmVkXyBjb3VudCBvZiBjaGFyYWN0ZXJzIHRoYXQgYSBsaW5lIHNob3VsZCBoYXZlLiBUaG91Z2ggdGVjaG5pY2FsbHkgc3RpbGwgaW1wbGVtZW50ZWQsIHRoaXMgYXR0cmlidXRlIGhhcyBubyB2aXN1YWwgZWZmZWN0OyB0byBhY2hpZXZlIHN1Y2ggYW4gZWZmZWN0LCB1c2UgQ1NTIFtgd2lkdGhgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1Mvd2lkdGggIlRoZSB3aWR0aCBDU1MgcHJvcGVydHkgc2V0cyBhbiBlbGVtZW50XCdzIHdpZHRoLiBCeSBkZWZhdWx0IGl0IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBjb250ZW50IGFyZWEsIGJ1dCBpZiBib3gtc2l6aW5nIGlzIHNldCB0byBib3JkZXItYm94LCBpdCBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyIGFyZWEuIikgaW5zdGVhZC4nfSx7bmFtZToid3JhcCIsZGVzY3JpcHRpb246J0lzIGEgX2hpbnRfIGluZGljYXRpbmcgaG93IHRoZSBvdmVyZmxvdyBtdXN0IGhhcHBlbi4gSW4gbW9kZXJuIGJyb3dzZXIgdGhpcyBoaW50IGlzIGlnbm9yZWQgYW5kIG5vIHZpc3VhbCBlZmZlY3QgcmVzdWx0cyBpbiBpdHMgcHJlc2VudDsgdG8gYWNoaWV2ZSBzdWNoIGFuIGVmZmVjdCwgdXNlIENTUyBbYHdoaXRlLXNwYWNlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3doaXRlLXNwYWNlICJUaGUgd2hpdGUtc3BhY2UgQ1NTIHByb3BlcnR5IHNldHMgaG93IHdoaXRlIHNwYWNlIGluc2lkZSBhbiBlbGVtZW50IGlzIGhhbmRsZWQuIikgaW5zdGVhZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3ByZSJ9XX0se25hbWU6ImJsb2NrcXVvdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBibG9ja3F1b3RlIGVsZW1lbnQgcmVwcmVzZW50cyBjb250ZW50IHRoYXQgaXMgcXVvdGVkIGZyb20gYW5vdGhlciBzb3VyY2UsIG9wdGlvbmFsbHkgd2l0aCBhIGNpdGF0aW9uIHdoaWNoIG11c3QgYmUgd2l0aGluIGEgZm9vdGVyIG9yIGNpdGUgZWxlbWVudCwgYW5kIG9wdGlvbmFsbHkgd2l0aCBpbi1saW5lIGNoYW5nZXMgc3VjaCBhcyBhbm5vdGF0aW9ucyBhbmQgYWJicmV2aWF0aW9ucy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY2l0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBVUkwgdGhhdCBkZXNpZ25hdGVzIGEgc291cmNlIGRvY3VtZW50IG9yIG1lc3NhZ2UgZm9yIHRoZSBpbmZvcm1hdGlvbiBxdW90ZWQuIFRoaXMgYXR0cmlidXRlIGlzIGludGVuZGVkIHRvIHBvaW50IHRvIGluZm9ybWF0aW9uIGV4cGxhaW5pbmcgdGhlIGNvbnRleHQgb3IgdGhlIHJlZmVyZW5jZSBmb3IgdGhlIHF1b3RlLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Jsb2NrcXVvdGUifV19LHtuYW1lOiJvbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG9sIGVsZW1lbnQgcmVwcmVzZW50cyBhIGxpc3Qgb2YgaXRlbXMsIHdoZXJlIHRoZSBpdGVtcyBoYXZlIGJlZW4gaW50ZW50aW9uYWxseSBvcmRlcmVkLCBzdWNoIHRoYXQgY2hhbmdpbmcgdGhlIG9yZGVyIHdvdWxkIGNoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGUgZG9jdW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6InJldmVyc2VkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhhdCB0aGUgaXRlbXMgb2YgdGhlIGxpc3QgYXJlIHNwZWNpZmllZCBpbiByZXZlcnNlZCBvcmRlci4ifX0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGludGVnZXIgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgc3RhcnQgdmFsdWUgZm9yIG51bWJlcmluZyB0aGUgaW5kaXZpZHVhbCBsaXN0IGl0ZW1zLiBBbHRob3VnaCB0aGUgb3JkZXJpbmcgdHlwZSBvZiBsaXN0IGVsZW1lbnRzIG1pZ2h0IGJlIFJvbWFuIG51bWVyYWxzLCBzdWNoIGFzIFhYWEksIG9yIGxldHRlcnMsIHRoZSB2YWx1ZSBvZiBzdGFydCBpcyBhbHdheXMgcmVwcmVzZW50ZWQgYXMgYSBudW1iZXIuIFRvIHN0YXJ0IG51bWJlcmluZyBlbGVtZW50cyBmcm9tIHRoZSBsZXR0ZXIgIkMiLCB1c2UgYDxvbCBzdGFydD0iMyI+YC5cblxuKipOb3RlKio6IFRoaXMgYXR0cmlidXRlIHdhcyBkZXByZWNhdGVkIGluIEhUTUw0LCBidXQgcmVpbnRyb2R1Y2VkIGluIEhUTUw1Lid9fSx7bmFtZToidHlwZSIsdmFsdWVTZXQ6Imx0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIG51bWJlcmluZyB0eXBlOlxuXG4qICAgYCdhJ2AgaW5kaWNhdGVzIGxvd2VyY2FzZSBsZXR0ZXJzLFxuKiAgIGAnQSdgIGluZGljYXRlcyB1cHBlcmNhc2UgbGV0dGVycyxcbiogICBgJ2knYCBpbmRpY2F0ZXMgbG93ZXJjYXNlIFJvbWFuIG51bWVyYWxzLFxuKiAgIGAnSSdgIGluZGljYXRlcyB1cHBlcmNhc2UgUm9tYW4gbnVtZXJhbHMsXG4qICAgYW5kIGAnMSdgIGluZGljYXRlcyBudW1iZXJzIChkZWZhdWx0KS5cblxuVGhlIHR5cGUgc2V0IGlzIHVzZWQgZm9yIHRoZSBlbnRpcmUgbGlzdCB1bmxlc3MgYSBkaWZmZXJlbnQgW2B0eXBlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xpI2F0dHItdHlwZSkgYXR0cmlidXRlIGlzIHVzZWQgd2l0aGluIGFuIGVuY2xvc2VkIFtgPGxpPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9saSBcIlRoZSBIVE1MIDxsaT4gZWxlbWVudCBpcyB1c2VkIHRvIHJlcHJlc2VudCBhbiBpdGVtIGluIGEgbGlzdC4gSXQgbXVzdCBiZSBjb250YWluZWQgaW4gYSBwYXJlbnQgZWxlbWVudDogYW4gb3JkZXJlZCBsaXN0ICg8b2w+KSwgYW4gdW5vcmRlcmVkIGxpc3QgKDx1bD4pLCBvciBhIG1lbnUgKDxtZW51PikuIEluIG1lbnVzIGFuZCB1bm9yZGVyZWQgbGlzdHMsIGxpc3QgaXRlbXMgYXJlIHVzdWFsbHkgZGlzcGxheWVkIHVzaW5nIGJ1bGxldCBwb2ludHMuIEluIG9yZGVyZWQgbGlzdHMsIHRoZXkgYXJlIHVzdWFsbHkgZGlzcGxheWVkIHdpdGggYW4gYXNjZW5kaW5nIGNvdW50ZXIgb24gdGhlIGxlZnQsIHN1Y2ggYXMgYSBudW1iZXIgb3IgbGV0dGVyLlwiKSBlbGVtZW50LlxuXG4qKk5vdGU6KiogVGhpcyBhdHRyaWJ1dGUgd2FzIGRlcHJlY2F0ZWQgaW4gSFRNTDQsIGJ1dCByZWludHJvZHVjZWQgaW4gSFRNTDUuXG5cblVubGVzcyB0aGUgdmFsdWUgb2YgdGhlIGxpc3QgbnVtYmVyIG1hdHRlcnMgKGUuZy4gaW4gbGVnYWwgb3IgdGVjaG5pY2FsIGRvY3VtZW50cyB3aGVyZSBpdGVtcyBhcmUgdG8gYmUgcmVmZXJlbmNlZCBieSB0aGVpciBudW1iZXIvbGV0dGVyKSwgdGhlIENTUyBbYGxpc3Qtc3R5bGUtdHlwZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9saXN0LXN0eWxlLXR5cGUgXCJUaGUgbGlzdC1zdHlsZS10eXBlIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJrZXIgKHN1Y2ggYXMgYSBkaXNjLCBjaGFyYWN0ZXIsIG9yIGN1c3RvbSBjb3VudGVyIHN0eWxlKSBvZiBhIGxpc3QgaXRlbSBlbGVtZW50LlwiKSBwcm9wZXJ0eSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiJ9fSx7bmFtZToiY29tcGFjdCIsZGVzY3JpcHRpb246J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaGludHMgdGhhdCB0aGUgbGlzdCBzaG91bGQgYmUgcmVuZGVyZWQgaW4gYSBjb21wYWN0IHN0eWxlLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBhdHRyaWJ1dGUgZGVwZW5kcyBvbiB0aGUgdXNlciBhZ2VudCBhbmQgaXQgZG9lc25cJ3Qgd29yayBpbiBhbGwgYnJvd3NlcnMuXG5cbioqV2FybmluZzoqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlLCBhcyBpdCBoYXMgYmVlbiBkZXByZWNhdGVkOiB0aGUgW2A8b2w+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29sICJUaGUgSFRNTCA8b2w+IGVsZW1lbnQgcmVwcmVzZW50cyBhbiBvcmRlcmVkIGxpc3Qgb2YgaXRlbXMsIHR5cGljYWxseSByZW5kZXJlZCBhcyBhIG51bWJlcmVkIGxpc3QuIikgZWxlbWVudCBzaG91bGQgYmUgc3R5bGVkIHVzaW5nIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKS4gVG8gZ2l2ZSBhbiBlZmZlY3Qgc2ltaWxhciB0byB0aGUgYGNvbXBhY3RgIGF0dHJpYnV0ZSwgdGhlIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKSBwcm9wZXJ0eSBbYGxpbmUtaGVpZ2h0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2xpbmUtaGVpZ2h0ICJUaGUgbGluZS1oZWlnaHQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGFtb3VudCBvZiBzcGFjZSB1c2VkIGZvciBsaW5lcywgc3VjaCBhcyBpbiB0ZXh0LiBPbiBibG9jay1sZXZlbCBlbGVtZW50cywgaXQgc3BlY2lmaWVzIHRoZSBtaW5pbXVtIGhlaWdodCBvZiBsaW5lIGJveGVzIHdpdGhpbiB0aGUgZWxlbWVudC4gT24gbm9uLXJlcGxhY2VkIGlubGluZSBlbGVtZW50cywgaXQgc3BlY2lmaWVzIHRoZSBoZWlnaHQgdGhhdCBpcyB1c2VkIHRvIGNhbGN1bGF0ZSBsaW5lIGJveCBoZWlnaHQuIikgY2FuIGJlIHVzZWQgd2l0aCBhIHZhbHVlIG9mIGA4MCVgLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb2wifV19LHtuYW1lOiJ1bCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVsIGVsZW1lbnQgcmVwcmVzZW50cyBhIGxpc3Qgb2YgaXRlbXMsIHdoZXJlIHRoZSBvcmRlciBvZiB0aGUgaXRlbXMgaXMgbm90IGltcG9ydGFudCDigJQgdGhhdCBpcywgd2hlcmUgY2hhbmdpbmcgdGhlIG9yZGVyIHdvdWxkIG5vdCBtYXRlcmlhbGx5IGNoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGUgZG9jdW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6ImNvbXBhY3QiLGRlc2NyaXB0aW9uOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGhpbnRzIHRoYXQgdGhlIGxpc3Qgc2hvdWxkIGJlIHJlbmRlcmVkIGluIGEgY29tcGFjdCBzdHlsZS4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoaXMgYXR0cmlidXRlIGRlcGVuZHMgb24gdGhlIHVzZXIgYWdlbnQgYW5kIGl0IGRvZXNuXCd0IHdvcmsgaW4gYWxsIGJyb3dzZXJzLlxuXG4qKlVzYWdlIG5vdGU6wqAqKkRvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUsIGFzIGl0IGhhcyBiZWVuIGRlcHJlY2F0ZWQ6IHRoZSBbYDx1bD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdWwgIlRoZSBIVE1MIDx1bD4gZWxlbWVudCByZXByZXNlbnRzIGFuIHVub3JkZXJlZCBsaXN0IG9mIGl0ZW1zLCB0eXBpY2FsbHkgcmVuZGVyZWQgYXMgYSBidWxsZXRlZCBsaXN0LiIpIGVsZW1lbnQgc2hvdWxkIGJlIHN0eWxlZCB1c2luZyBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykuIFRvIGdpdmUgYSBzaW1pbGFyIGVmZmVjdCBhcyB0aGUgYGNvbXBhY3RgIGF0dHJpYnV0ZSwgdGhlIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKSBwcm9wZXJ0eSBbbGluZS1oZWlnaHRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL2xpbmUtaGVpZ2h0KSBjYW4gYmUgdXNlZCB3aXRoIGEgdmFsdWUgb2YgYDgwJWAuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC91bCJ9XX0se25hbWU6ImxpIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbGkgZWxlbWVudCByZXByZXNlbnRzIGEgbGlzdCBpdGVtLiBJZiBpdHMgcGFyZW50IGVsZW1lbnQgaXMgYW4gb2wsIHVsLCBvciBtZW51IGVsZW1lbnQsIHRoZW4gdGhlIGVsZW1lbnQgaXMgYW4gaXRlbSBvZiB0aGUgcGFyZW50IGVsZW1lbnQncyBsaXN0LCBhcyBkZWZpbmVkIGZvciB0aG9zZSBlbGVtZW50cy4gT3RoZXJ3aXNlLCB0aGUgbGlzdCBpdGVtIGhhcyBubyBkZWZpbmVkIGxpc3QtcmVsYXRlZCByZWxhdGlvbnNoaXAgdG8gYW55IG90aGVyIGxpIGVsZW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGludGVnZXIgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgY3VycmVudCBvcmRpbmFsIHZhbHVlIG9mIHRoZSBsaXN0IGl0ZW0gYXMgZGVmaW5lZCBieSB0aGUgW2A8b2w+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29sICJUaGUgSFRNTCA8b2w+IGVsZW1lbnQgcmVwcmVzZW50cyBhbiBvcmRlcmVkIGxpc3Qgb2YgaXRlbXMsIHR5cGljYWxseSByZW5kZXJlZCBhcyBhIG51bWJlcmVkIGxpc3QuIikgZWxlbWVudC4gVGhlIG9ubHkgYWxsb3dlZCB2YWx1ZSBmb3IgdGhpcyBhdHRyaWJ1dGUgaXMgYSBudW1iZXIsIGV2ZW4gaWYgdGhlIGxpc3QgaXMgZGlzcGxheWVkIHdpdGggUm9tYW4gbnVtZXJhbHMgb3IgbGV0dGVycy4gTGlzdCBpdGVtcyB0aGF0IGZvbGxvdyB0aGlzIG9uZSBjb250aW51ZSBudW1iZXJpbmcgZnJvbSB0aGUgdmFsdWUgc2V0LiBUaGUgKip2YWx1ZSoqIGF0dHJpYnV0ZSBoYXMgbm8gbWVhbmluZyBmb3IgdW5vcmRlcmVkIGxpc3RzIChbYDx1bD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdWwgIlRoZSBIVE1MIDx1bD4gZWxlbWVudCByZXByZXNlbnRzIGFuIHVub3JkZXJlZCBsaXN0IG9mIGl0ZW1zLCB0eXBpY2FsbHkgcmVuZGVyZWQgYXMgYSBidWxsZXRlZCBsaXN0LiIpKSBvciBmb3IgbWVudXMgKFtgPG1lbnU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21lbnUgIlRoZSBIVE1MIDxtZW51PiBlbGVtZW50IHJlcHJlc2VudHMgYSBncm91cCBvZiBjb21tYW5kcyB0aGF0IGEgdXNlciBjYW4gcGVyZm9ybSBvciBhY3RpdmF0ZS4gVGhpcyBpbmNsdWRlcyBib3RoIGxpc3QgbWVudXMsIHdoaWNoIG1pZ2h0IGFwcGVhciBhY3Jvc3MgdGhlIHRvcCBvZiBhIHNjcmVlbiwgYXMgd2VsbCBhcyBjb250ZXh0IG1lbnVzLCBzdWNoIGFzIHRob3NlIHRoYXQgbWlnaHQgYXBwZWFyIHVuZGVybmVhdGggYSBidXR0b24gYWZ0ZXIgaXQgaGFzIGJlZW4gY2xpY2tlZC4iKSkuXG5cbioqTm90ZSoqOiBUaGlzIGF0dHJpYnV0ZSB3YXMgZGVwcmVjYXRlZCBpbiBIVE1MNCwgYnV0IHJlaW50cm9kdWNlZCBpbiBIVE1MNS5cblxuKipOb3RlOioqIFByaW9yIHRvIEdlY2tvwqA5LjAsIG5lZ2F0aXZlIHZhbHVlcyB3ZXJlIGluY29ycmVjdGx5IGNvbnZlcnRlZCB0byAwLiBTdGFydGluZyBpbiBHZWNrb8KgOS4wIGFsbCBpbnRlZ2VyIHZhbHVlcyBhcmUgY29ycmVjdGx5IHBhcnNlZC4nfX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOidUaGlzIGNoYXJhY3RlciBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSBudW1iZXJpbmcgdHlwZTpcblxuKiAgIGBhYDogbG93ZXJjYXNlIGxldHRlcnNcbiogICBgQWA6IHVwcGVyY2FzZSBsZXR0ZXJzXG4qICAgYGlgOiBsb3dlcmNhc2UgUm9tYW4gbnVtZXJhbHNcbiogICBgSWA6IHVwcGVyY2FzZSBSb21hbiBudW1lcmFsc1xuKiAgIGAxYDogbnVtYmVyc1xuXG5UaGlzIHR5cGUgb3ZlcnJpZGVzIHRoZSBvbmUgdXNlZCBieSBpdHMgcGFyZW50IFtgPG9sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vbCAiVGhlIEhUTUwgPG9sPiBlbGVtZW50IHJlcHJlc2VudHMgYW4gb3JkZXJlZCBsaXN0IG9mIGl0ZW1zLCB0eXBpY2FsbHkgcmVuZGVyZWQgYXMgYSBudW1iZXJlZCBsaXN0LiIpIGVsZW1lbnQsIGlmIGFueS5cblxuKipVc2FnZSBub3RlOioqIFRoaXMgYXR0cmlidXRlIGhhcyBiZWVuIGRlcHJlY2F0ZWQ6IHVzZSB0aGUgQ1NTIFtgbGlzdC1zdHlsZS10eXBlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2xpc3Qtc3R5bGUtdHlwZSAiVGhlIGxpc3Qtc3R5bGUtdHlwZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFya2VyIChzdWNoIGFzIGEgZGlzYywgY2hhcmFjdGVyLCBvciBjdXN0b20gY291bnRlciBzdHlsZSkgb2YgYSBsaXN0IGl0ZW0gZWxlbWVudC4iKSBwcm9wZXJ0eSBpbnN0ZWFkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGkifV19LHtuYW1lOiJkbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRsIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBhc3NvY2lhdGlvbiBsaXN0IGNvbnNpc3Rpbmcgb2YgemVybyBvciBtb3JlIG5hbWUtdmFsdWUgZ3JvdXBzIChhIGRlc2NyaXB0aW9uIGxpc3QpLiBBIG5hbWUtdmFsdWUgZ3JvdXAgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgbmFtZXMgKGR0IGVsZW1lbnRzKSBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSB2YWx1ZXMgKGRkIGVsZW1lbnRzKSwgaWdub3JpbmcgYW55IG5vZGVzIG90aGVyIHRoYW4gZHQgYW5kIGRkIGVsZW1lbnRzLiBXaXRoaW4gYSBzaW5nbGUgZGwgZWxlbWVudCwgdGhlcmUgc2hvdWxkIG5vdCBiZSBtb3JlIHRoYW4gb25lIGR0IGVsZW1lbnQgZm9yIGVhY2ggbmFtZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kbCJ9XX0se25hbWU6ImR0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZHQgZWxlbWVudCByZXByZXNlbnRzIHRoZSB0ZXJtLCBvciBuYW1lLCBwYXJ0IG9mIGEgdGVybS1kZXNjcmlwdGlvbiBncm91cCBpbiBhIGRlc2NyaXB0aW9uIGxpc3QgKGRsIGVsZW1lbnQpLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2R0In1dfSx7bmFtZToiZGQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkZCBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGRlc2NyaXB0aW9uLCBkZWZpbml0aW9uLCBvciB2YWx1ZSwgcGFydCBvZiBhIHRlcm0tZGVzY3JpcHRpb24gZ3JvdXAgaW4gYSBkZXNjcmlwdGlvbiBsaXN0IChkbCBlbGVtZW50KS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToibm93cmFwIixkZXNjcmlwdGlvbjoiSWYgdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0byBgeWVzYCwgdGhlIGRlZmluaXRpb24gdGV4dCB3aWxsIG5vdCB3cmFwLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgbm9gLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGQifV19LHtuYW1lOiJmaWd1cmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBmaWd1cmUgZWxlbWVudCByZXByZXNlbnRzIHNvbWUgZmxvdyBjb250ZW50LCBvcHRpb25hbGx5IHdpdGggYSBjYXB0aW9uLCB0aGF0IGlzIHNlbGYtY29udGFpbmVkIChsaWtlIGEgY29tcGxldGUgc2VudGVuY2UpIGFuZCBpcyB0eXBpY2FsbHkgcmVmZXJlbmNlZCBhcyBhIHNpbmdsZSB1bml0IGZyb20gdGhlIG1haW4gZmxvdyBvZiB0aGUgZG9jdW1lbnQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZmlndXJlIn1dfSx7bmFtZToiZmlnY2FwdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGZpZ2NhcHRpb24gZWxlbWVudCByZXByZXNlbnRzIGEgY2FwdGlvbiBvciBsZWdlbmQgZm9yIHRoZSByZXN0IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgZmlnY2FwdGlvbiBlbGVtZW50J3MgcGFyZW50IGZpZ3VyZSBlbGVtZW50LCBpZiBhbnkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZmlnY2FwdGlvbiJ9XX0se25hbWU6Im1haW4iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtYWluIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgbWFpbiBjb250ZW50IG9mIHRoZSBib2R5IG9mIGEgZG9jdW1lbnQgb3IgYXBwbGljYXRpb24uIFRoZSBtYWluIGNvbnRlbnQgYXJlYSBjb25zaXN0cyBvZiBjb250ZW50IHRoYXQgaXMgZGlyZWN0bHkgcmVsYXRlZCB0byBvciBleHBhbmRzIHVwb24gdGhlIGNlbnRyYWwgdG9waWMgb2YgYSBkb2N1bWVudCBvciBjZW50cmFsIGZ1bmN0aW9uYWxpdHkgb2YgYW4gYXBwbGljYXRpb24uIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWFpbiJ9XX0se25hbWU6ImRpdiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRpdiBlbGVtZW50IGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYXQgYWxsLiBJdCByZXByZXNlbnRzIGl0cyBjaGlsZHJlbi4gSXQgY2FuIGJlIHVzZWQgd2l0aCB0aGUgY2xhc3MsIGxhbmcsIGFuZCB0aXRsZSBhdHRyaWJ1dGVzIHRvIG1hcmsgdXAgc2VtYW50aWNzIGNvbW1vbiB0byBhIGdyb3VwIG9mIGNvbnNlY3V0aXZlIGVsZW1lbnRzLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RpdiJ9XX0se25hbWU6ImEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBhIGVsZW1lbnQgaGFzIGFuIGhyZWYgYXR0cmlidXRlLCB0aGVuIGl0IHJlcHJlc2VudHMgYSBoeXBlcmxpbmsgKGEgaHlwZXJ0ZXh0IGFuY2hvcikgbGFiZWxlZCBieSBpdHMgY29udGVudHMuIn0sYXR0cmlidXRlczpbe25hbWU6ImhyZWYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvbnRhaW5zIGEgVVJMIG9yIGEgVVJMIGZyYWdtZW50IHRoYXQgdGhlIGh5cGVybGluayBwb2ludHMgdG8uIn19LHtuYW1lOiJ0YXJnZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1NwZWNpZmllcyB3aGVyZSB0byBkaXNwbGF5IHRoZSBsaW5rZWQgVVJMLiBJdCBpcyBhIG5hbWUgb2YsIG9yIGtleXdvcmQgZm9yLCBhIF9icm93c2luZyBjb250ZXh0XzogYSB0YWIsIHdpbmRvdywgb3IgYDxpZnJhbWU+YC4gVGhlIGZvbGxvd2luZyBrZXl3b3JkcyBoYXZlIHNwZWNpYWwgbWVhbmluZ3M6XG5cbiogICBgX3NlbGZgOiBMb2FkIHRoZSBVUkwgaW50byB0aGUgc2FtZSBicm93c2luZyBjb250ZXh0IGFzIHRoZSBjdXJyZW50IG9uZS4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci5cbiogICBgX2JsYW5rYDogTG9hZCB0aGUgVVJMIGludG8gYSBuZXcgYnJvd3NpbmcgY29udGV4dC4gVGhpcyBpcyB1c3VhbGx5IGEgdGFiLCBidXQgdXNlcnMgY2FuIGNvbmZpZ3VyZSBicm93c2VycyB0byB1c2UgbmV3IHdpbmRvd3MgaW5zdGVhZC5cbiogICBgX3BhcmVudGA6IExvYWQgdGhlIFVSTCBpbnRvIHRoZSBwYXJlbnQgYnJvd3NpbmcgY29udGV4dCBvZiB0aGUgY3VycmVudCBvbmUuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuKiAgIGBfdG9wYDogTG9hZCB0aGUgVVJMIGludG8gdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0ICh0aGF0IGlzLCB0aGUgImhpZ2hlc3QiIGJyb3dzaW5nIGNvbnRleHQgdGhhdCBpcyBhbiBhbmNlc3RvciBvZiB0aGUgY3VycmVudCBvbmUsIGFuZCBoYXMgbm8gcGFyZW50KS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG5cbioqTm90ZToqKiBXaGVuIHVzaW5nIGB0YXJnZXRgLCBjb25zaWRlciBhZGRpbmcgYHJlbD0ibm9yZWZlcnJlciJgIHRvIGF2b2lkIGV4cGxvaXRhdGlvbiBvZiB0aGUgYHdpbmRvdy5vcGVuZXJgIEFQSS5cblxuKipOb3RlOioqIExpbmtpbmcgdG8gYW5vdGhlciBwYWdlIHVzaW5nIGB0YXJnZXQ9Il9ibGFuayJgIHdpbGwgcnVuIHRoZSBuZXcgcGFnZSBvbiB0aGUgc2FtZSBwcm9jZXNzIGFzIHlvdXIgcGFnZS4gSWYgdGhlIG5ldyBwYWdlIGlzIGV4ZWN1dGluZyBleHBlbnNpdmUgSlMsIHlvdXIgcGFnZVwncyBwZXJmb3JtYW5jZSBtYXkgc3VmZmVyLiBUbyBhdm9pZCB0aGlzIHVzZSBgcmVsPSJub29wZW5lciJgLid9fSx7bmFtZToiZG93bmxvYWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGluc3RydWN0cyBicm93c2VycyB0byBkb3dubG9hZCBhIFVSTCBpbnN0ZWFkIG9mIG5hdmlnYXRpbmcgdG8gaXQsIHNvIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gc2F2ZSBpdCBhcyBhIGxvY2FsIGZpbGUuIElmIHRoZSBhdHRyaWJ1dGUgaGFzIGEgdmFsdWUsIGl0IGlzIHVzZWQgYXMgdGhlIHByZS1maWxsZWQgZmlsZSBuYW1lIGluIHRoZSBTYXZlIHByb21wdCAodGhlIHVzZXIgY2FuIHN0aWxsIGNoYW5nZSB0aGUgZmlsZSBuYW1lIGlmIHRoZXkgd2FudCkuIFRoZXJlIGFyZSBubyByZXN0cmljdGlvbnMgb24gYWxsb3dlZCB2YWx1ZXMsIHRob3VnaCBgL2AgYW5kIGBcXGAgYXJlIGNvbnZlcnRlZCB0byB1bmRlcnNjb3Jlcy4gTW9zdCBmaWxlIHN5c3RlbXMgbGltaXQgc29tZSBwdW5jdHVhdGlvbiBpbiBmaWxlIG5hbWVzLCBhbmQgYnJvd3NlcnMgd2lsbCBhZGp1c3QgdGhlIHN1Z2dlc3RlZCBuYW1lIGFjY29yZGluZ2x5LlxuXG4qKk5vdGVzOioqXG5cbiogICBUaGlzIGF0dHJpYnV0ZSBvbmx5IHdvcmtzIGZvciBbc2FtZS1vcmlnaW4gVVJMc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU2FtZS1vcmlnaW5fcG9saWN5KS5cbiogICBBbHRob3VnaCBIVFRQKHMpIFVSTHMgbmVlZCB0byBiZSBpbiB0aGUgc2FtZS1vcmlnaW4sIFtgYmxvYjpgIFVSTHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9VUkwuY3JlYXRlT2JqZWN0VVJMKSBhbmQgW2BkYXRhOmAgVVJMc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9EYXRhX1VSSXMpIGFyZSBhbGxvd2VkIHNvIHRoYXQgY29udGVudCBnZW5lcmF0ZWQgYnkgSmF2YVNjcmlwdCwgc3VjaCBhcyBwaWN0dXJlcyBjcmVhdGVkIGluIGFuIGltYWdlLWVkaXRvciBXZWIgYXBwLCBjYW4gYmUgZG93bmxvYWRlZC5cbiogICBJZiB0aGUgSFRUUCBoZWFkZXIgW2BDb250ZW50LURpc3Bvc2l0aW9uOmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9Db250ZW50LURpc3Bvc2l0aW9uKSBnaXZlcyBhIGRpZmZlcmVudCBmaWxlbmFtZSB0aGFuIHRoaXMgYXR0cmlidXRlLCB0aGUgSFRUUCBoZWFkZXIgdGFrZXMgcHJpb3JpdHkgb3ZlciB0aGlzIGF0dHJpYnV0ZS5cbiogICBJZiBgQ29udGVudC1EaXNwb3NpdGlvbjpgIGlzIHNldCB0byBgaW5saW5lYCwgRmlyZWZveCBwcmlvcml0aXplcyBgQ29udGVudC1EaXNwb3NpdGlvbmAsIGxpa2UgdGhlIGZpbGVuYW1lIGNhc2UsIHdoaWxlIENocm9tZSBwcmlvcml0aXplcyB0aGUgYGRvd25sb2FkYCBhdHRyaWJ1dGUuIn19LHtuYW1lOiJwaW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidDb250YWlucyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIFVSTHMgdG8gd2hpY2gsIHdoZW4gdGhlIGh5cGVybGluayBpcyBmb2xsb3dlZCwgW2BQT1NUYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9NZXRob2RzL1BPU1QgIlRoZSBIVFRQIFBPU1QgbWV0aG9kIHNlbmRzIGRhdGEgdG8gdGhlIHNlcnZlci4gVGhlIHR5cGUgb2YgdGhlIGJvZHkgb2YgdGhlIHJlcXVlc3QgaXMgaW5kaWNhdGVkIGJ5IHRoZSBDb250ZW50LVR5cGUgaGVhZGVyLiIpIHJlcXVlc3RzIHdpdGggdGhlIGJvZHkgYFBJTkdgIHdpbGwgYmUgc2VudCBieSB0aGUgYnJvd3NlciAoaW4gdGhlIGJhY2tncm91bmQpLiBUeXBpY2FsbHkgdXNlZCBmb3IgdHJhY2tpbmcuJ319LHtuYW1lOiJyZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlNwZWNpZmllcyB0aGUgcmVsYXRpb25zaGlwIG9mIHRoZSB0YXJnZXQgb2JqZWN0IHRvIHRoZSBsaW5rIG9iamVjdC4gVGhlIHZhbHVlIGlzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgW2xpbmsgdHlwZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvTGlua190eXBlcykuIn19LHtuYW1lOiJocmVmbGFuZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSBodW1hbiBsYW5ndWFnZSBvZiB0aGUgbGlua2VkIHJlc291cmNlLiBJdCBpcyBwdXJlbHkgYWR2aXNvcnksIHdpdGggbm8gYnVpbHQtaW4gZnVuY3Rpb25hbGl0eS4gQWxsb3dlZCB2YWx1ZXMgYXJlIGRldGVybWluZWQgYnkgW0JDUDQ3XShodHRwczovL3d3dy5pZXRmLm9yZy9yZmMvYmNwL2JjcDQ3LnR4dCAiVGFncyBmb3IgSWRlbnRpZnlpbmcgTGFuZ3VhZ2VzIikuJ319LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidTcGVjaWZpZXMgdGhlIG1lZGlhIHR5cGUgaW4gdGhlIGZvcm0gb2YgYSBbTUlNRSB0eXBlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L01JTUVfdHlwZSAiTUlNRSB0eXBlOiBBwqBNSU1FIHR5cGXCoChub3cgcHJvcGVybHkgY2FsbGVkICJtZWRpYSB0eXBlIiwgYnV0wqBhbHNvIHNvbWV0aW1lcyAiY29udGVudCB0eXBlIikgaXMgYSBzdHJpbmcgc2VudCBhbG9uZ8Kgd2l0aCBhIGZpbGUgaW5kaWNhdGluZyB0aGUgdHlwZSBvZiB0aGUgZmlsZSAoZGVzY3JpYmluZyB0aGUgY29udGVudCBmb3JtYXQsIGZvciBleGFtcGxlLCBhIHNvdW5kIGZpbGUgbWlnaHQgYmUgbGFiZWxlZMKgYXVkaW8vb2dnLCBvciBhbiBpbWFnZSBmaWxlwqBpbWFnZS9wbmcpLiIpIGZvciB0aGUgbGlua2VkIFVSTC4gSXQgaXMgcHVyZWx5IGFkdmlzb3J5LCB3aXRoIG5vIGJ1aWx0LWluIGZ1bmN0aW9uYWxpdHkuJ319LHtuYW1lOiJyZWZlcnJlcnBvbGljeSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB3aGljaCBbcmVmZXJyZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyKSB0byBzZW5kIHdoZW4gZmV0Y2hpbmcgdGhlIFVSTDpcblxuKiAgIGAnbm8tcmVmZXJyZXInYCBtZWFucyB0aGUgYFJlZmVyZXI6YCBoZWFkZXIgd2lsbCBub3QgYmUgc2VudC5cbiogICBgJ25vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlJ2AgbWVhbnMgbm8gYFJlZmVyZXI6YCBoZWFkZXIgd2lsbCBiZSBzZW50IHdoZW4gbmF2aWdhdGluZyB0byBhbiBvcmlnaW4gd2l0aG91dCBIVFRQUy4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci5cbiogICBgJ29yaWdpbidgIG1lYW5zIHRoZSByZWZlcnJlciB3aWxsIGJlIHRoZSBbb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L09yaWdpbikgb2YgdGhlIHBhZ2UsIG5vdCBpbmNsdWRpbmcgaW5mb3JtYXRpb24gYWZ0ZXIgdGhlIGRvbWFpbi5cbiogICBgJ29yaWdpbi13aGVuLWNyb3NzLW9yaWdpbidgIG1lYW5pbmcgdGhhdCBuYXZpZ2F0aW9ucyB0byBvdGhlciBvcmlnaW5zIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgc2NoZW1lLCB0aGUgaG9zdCBhbmQgdGhlIHBvcnQsIHdoaWxlIG5hdmlnYXRpb25zIG9uIHRoZSBzYW1lIG9yaWdpbiB3aWxsIGluY2x1ZGUgdGhlIHJlZmVycmVyJ3MgcGF0aC5cbiogICBgJ3N0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4nYFxuKiAgIGAndW5zYWZlLXVybCdgIG1lYW5zIHRoZSByZWZlcnJlciB3aWxsIGluY2x1ZGUgdGhlIG9yaWdpbiBhbmQgcGF0aCwgYnV0IG5vdCB0aGUgZnJhZ21lbnQsIHBhc3N3b3JkLCBvciB1c2VybmFtZS4gVGhpcyBpcyB1bnNhZmUgYmVjYXVzZSBpdCBjYW4gbGVhayBkYXRhIGZyb20gc2VjdXJlIFVSTHMgdG8gaW5zZWN1cmUgb25lcy4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2EifV19LHtuYW1lOiJlbSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGVtIGVsZW1lbnQgcmVwcmVzZW50cyBzdHJlc3MgZW1waGFzaXMgb2YgaXRzIGNvbnRlbnRzLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2VtIn1dfSx7bmFtZToic3Ryb25nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc3Ryb25nIGVsZW1lbnQgcmVwcmVzZW50cyBzdHJvbmcgaW1wb3J0YW5jZSwgc2VyaW91c25lc3MsIG9yIHVyZ2VuY3kgZm9yIGl0cyBjb250ZW50cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zdHJvbmcifV19LHtuYW1lOiJzbWFsbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNtYWxsIGVsZW1lbnQgcmVwcmVzZW50cyBzaWRlIGNvbW1lbnRzIHN1Y2ggYXMgc21hbGwgcHJpbnQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc21hbGwifV19LHtuYW1lOiJzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcyBlbGVtZW50IHJlcHJlc2VudHMgY29udGVudHMgdGhhdCBhcmUgbm8gbG9uZ2VyIGFjY3VyYXRlIG9yIG5vIGxvbmdlciByZWxldmFudC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zIn1dfSx7bmFtZToiY2l0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGNpdGUgZWxlbWVudCByZXByZXNlbnRzIGEgcmVmZXJlbmNlIHRvIGEgY3JlYXRpdmUgd29yay4gSXQgbXVzdCBpbmNsdWRlIHRoZSB0aXRsZSBvZiB0aGUgd29yayBvciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yKHBlcnNvbiwgcGVvcGxlIG9yIG9yZ2FuaXphdGlvbikgb3IgYW4gVVJMIHJlZmVyZW5jZSwgb3IgYSByZWZlcmVuY2UgaW4gYWJicmV2aWF0ZWQgZm9ybSBhcyBwZXIgdGhlIGNvbnZlbnRpb25zIHVzZWQgZm9yIHRoZSBhZGRpdGlvbiBvZiBjaXRhdGlvbiBtZXRhZGF0YS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jaXRlIn1dfSx7bmFtZToicSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHEgZWxlbWVudCByZXByZXNlbnRzIHNvbWUgcGhyYXNpbmcgY29udGVudCBxdW90ZWQgZnJvbSBhbm90aGVyIHNvdXJjZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY2l0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIGlzIGEgVVJMIHRoYXQgZGVzaWduYXRlcyBhIHNvdXJjZSBkb2N1bWVudCBvciBtZXNzYWdlIGZvciB0aGUgaW5mb3JtYXRpb24gcXVvdGVkLiBUaGlzIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCB0byBwb2ludCB0byBpbmZvcm1hdGlvbiBleHBsYWluaW5nIHRoZSBjb250ZXh0IG9yIHRoZSByZWZlcmVuY2UgZm9yIHRoZSBxdW90ZS4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9xIn1dfSx7bmFtZToiZGZuIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGZuIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgZGVmaW5pbmcgaW5zdGFuY2Ugb2YgYSB0ZXJtLiBUaGUgcGFyYWdyYXBoLCBkZXNjcmlwdGlvbiBsaXN0IGdyb3VwLCBvciBzZWN0aW9uIHRoYXQgaXMgdGhlIG5lYXJlc3QgYW5jZXN0b3Igb2YgdGhlIGRmbiBlbGVtZW50IG11c3QgYWxzbyBjb250YWluIHRoZSBkZWZpbml0aW9uKHMpIGZvciB0aGUgdGVybSBnaXZlbiBieSB0aGUgZGZuIGVsZW1lbnQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGZuIn1dfSx7bmFtZToiYWJiciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGFiYnIgZWxlbWVudCByZXByZXNlbnRzIGFuIGFiYnJldmlhdGlvbiBvciBhY3JvbnltLCBvcHRpb25hbGx5IHdpdGggaXRzIGV4cGFuc2lvbi4gVGhlIHRpdGxlIGF0dHJpYnV0ZSBtYXkgYmUgdXNlZCB0byBwcm92aWRlIGFuIGV4cGFuc2lvbiBvZiB0aGUgYWJicmV2aWF0aW9uLiBUaGUgYXR0cmlidXRlLCBpZiBzcGVjaWZpZWQsIG11c3QgY29udGFpbiBhbiBleHBhbnNpb24gb2YgdGhlIGFiYnJldmlhdGlvbiwgYW5kIG5vdGhpbmcgZWxzZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hYmJyIn1dfSx7bmFtZToicnVieSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHJ1YnkgZWxlbWVudCBhbGxvd3Mgb25lIG9yIG1vcmUgc3BhbnMgb2YgcGhyYXNpbmcgY29udGVudCB0byBiZSBtYXJrZWQgd2l0aCBydWJ5IGFubm90YXRpb25zLiBSdWJ5IGFubm90YXRpb25zIGFyZSBzaG9ydCBydW5zIG9mIHRleHQgcHJlc2VudGVkIGFsb25nc2lkZSBiYXNlIHRleHQsIHByaW1hcmlseSB1c2VkIGluIEVhc3QgQXNpYW4gdHlwb2dyYXBoeSBhcyBhIGd1aWRlIGZvciBwcm9udW5jaWF0aW9uIG9yIHRvIGluY2x1ZGUgb3RoZXIgYW5ub3RhdGlvbnMuIEluIEphcGFuZXNlLCB0aGlzIGZvcm0gb2YgdHlwb2dyYXBoeSBpcyBhbHNvIGtub3duIGFzIGZ1cmlnYW5hLiBSdWJ5IHRleHQgY2FuIGFwcGVhciBvbiBlaXRoZXIgc2lkZSwgYW5kIHNvbWV0aW1lcyBib3RoIHNpZGVzLCBvZiB0aGUgYmFzZSB0ZXh0LCBhbmQgaXQgaXMgcG9zc2libGUgdG8gY29udHJvbCBpdHMgcG9zaXRpb24gdXNpbmcgQ1NTLiBBIG1vcmUgY29tcGxldGUgaW50cm9kdWN0aW9uIHRvIHJ1YnkgY2FuIGJlIGZvdW5kIGluIHRoZSBVc2UgQ2FzZXMgJiBFeHBsb3JhdG9yeSBBcHByb2FjaGVzIGZvciBSdWJ5IE1hcmt1cCBkb2N1bWVudCBhcyB3ZWxsIGFzIGluIENTUyBSdWJ5IE1vZHVsZSBMZXZlbCAxLiBbUlVCWS1VQ10gW0NTU1JVQlldIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcnVieSJ9XX0se25hbWU6InJiIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcmIgZWxlbWVudCBtYXJrcyB0aGUgYmFzZSB0ZXh0IGNvbXBvbmVudCBvZiBhIHJ1YnkgYW5ub3RhdGlvbi4gV2hlbiBpdCBpcyB0aGUgY2hpbGQgb2YgYSBydWJ5IGVsZW1lbnQsIGl0IGRvZXNuJ3QgcmVwcmVzZW50IGFueXRoaW5nIGl0c2VsZiwgYnV0IGl0cyBwYXJlbnQgcnVieSBlbGVtZW50IHVzZXMgaXQgYXMgcGFydCBvZiBkZXRlcm1pbmluZyB3aGF0IGl0IHJlcHJlc2VudHMuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcmIifV19LHtuYW1lOiJydCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHJ0IGVsZW1lbnQgbWFya3MgdGhlIHJ1YnkgdGV4dCBjb21wb25lbnQgb2YgYSBydWJ5IGFubm90YXRpb24uIFdoZW4gaXQgaXMgdGhlIGNoaWxkIG9mIGEgcnVieSBlbGVtZW50IG9yIG9mIGFuIHJ0YyBlbGVtZW50IHRoYXQgaXMgaXRzZWxmIHRoZSBjaGlsZCBvZiBhIHJ1YnkgZWxlbWVudCwgaXQgZG9lc24ndCByZXByZXNlbnQgYW55dGhpbmcgaXRzZWxmLCBidXQgaXRzIGFuY2VzdG9yIHJ1YnkgZWxlbWVudCB1c2VzIGl0IGFzIHBhcnQgb2YgZGV0ZXJtaW5pbmcgd2hhdCBpdCByZXByZXNlbnRzLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3J0In1dfSx7bmFtZToicnAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBycCBlbGVtZW50IGlzIHVzZWQgdG8gcHJvdmlkZSBmYWxsYmFjayB0ZXh0IHRvIGJlIHNob3duIGJ5IHVzZXIgYWdlbnRzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBydWJ5IGFubm90YXRpb25zLiBPbmUgd2lkZXNwcmVhZCBjb252ZW50aW9uIGlzIHRvIHByb3ZpZGUgcGFyZW50aGVzZXMgYXJvdW5kIHRoZSBydWJ5IHRleHQgY29tcG9uZW50IG9mIGEgcnVieSBhbm5vdGF0aW9uLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3JwIn1dfSx7bmFtZToidGltZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRpbWUgZWxlbWVudCByZXByZXNlbnRzIGl0cyBjb250ZW50cywgYWxvbmcgd2l0aCBhIG1hY2hpbmUtcmVhZGFibGUgZm9ybSBvZiB0aG9zZSBjb250ZW50cyBpbiB0aGUgZGF0ZXRpbWUgYXR0cmlidXRlLiBUaGUga2luZCBvZiBjb250ZW50IGlzIGxpbWl0ZWQgdG8gdmFyaW91cyBraW5kcyBvZiBkYXRlcywgdGltZXMsIHRpbWUtem9uZSBvZmZzZXRzLCBhbmQgZHVyYXRpb25zLCBhcyBkZXNjcmliZWQgYmVsb3cuIn0sYXR0cmlidXRlczpbe25hbWU6ImRhdGV0aW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIHRpbWUgYW5kL29yIGRhdGUgb2YgdGhlIGVsZW1lbnQgYW5kIG11c3QgYmUgaW4gb25lIG9mIHRoZSBmb3JtYXRzIGRlc2NyaWJlZCBiZWxvdy4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aW1lIn1dfSx7bmFtZToiY29kZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGNvZGUgZWxlbWVudCByZXByZXNlbnRzIGEgZnJhZ21lbnQgb2YgY29tcHV0ZXIgY29kZS4gVGhpcyBjb3VsZCBiZSBhbiBYTUwgZWxlbWVudCBuYW1lLCBhIGZpbGUgbmFtZSwgYSBjb21wdXRlciBwcm9ncmFtLCBvciBhbnkgb3RoZXIgc3RyaW5nIHRoYXQgYSBjb21wdXRlciB3b3VsZCByZWNvZ25pemUuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29kZSJ9XX0se25hbWU6InZhciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHZhciBlbGVtZW50IHJlcHJlc2VudHMgYSB2YXJpYWJsZS4gVGhpcyBjb3VsZCBiZSBhbiBhY3R1YWwgdmFyaWFibGUgaW4gYSBtYXRoZW1hdGljYWwgZXhwcmVzc2lvbiBvciBwcm9ncmFtbWluZyBjb250ZXh0LCBhbiBpZGVudGlmaWVyIHJlcHJlc2VudGluZyBhIGNvbnN0YW50LCBhIHN5bWJvbCBpZGVudGlmeWluZyBhIHBoeXNpY2FsIHF1YW50aXR5LCBhIGZ1bmN0aW9uIHBhcmFtZXRlciwgb3IganVzdCBiZSBhIHRlcm0gdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGluIHByb3NlLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3ZhciJ9XX0se25hbWU6InNhbXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzYW1wIGVsZW1lbnQgcmVwcmVzZW50cyBzYW1wbGUgb3IgcXVvdGVkIG91dHB1dCBmcm9tIGFub3RoZXIgcHJvZ3JhbSBvciBjb21wdXRpbmcgc3lzdGVtLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NhbXAifV19LHtuYW1lOiJrYmQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBrYmQgZWxlbWVudCByZXByZXNlbnRzIHVzZXIgaW5wdXQgKHR5cGljYWxseSBrZXlib2FyZCBpbnB1dCwgYWx0aG91Z2ggaXQgbWF5IGFsc28gYmUgdXNlZCB0byByZXByZXNlbnQgb3RoZXIgaW5wdXQsIHN1Y2ggYXMgdm9pY2UgY29tbWFuZHMpLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2tiZCJ9XX0se25hbWU6InN1YiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHN1YiBlbGVtZW50IHJlcHJlc2VudHMgYSBzdWJzY3JpcHQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3ViIn1dfSx7bmFtZToic3VwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc3VwIGVsZW1lbnQgcmVwcmVzZW50cyBhIHN1cGVyc2NyaXB0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3N1cCJ9XX0se25hbWU6ImkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNwYW4gb2YgdGV4dCBpbiBhbiBhbHRlcm5hdGUgdm9pY2Ugb3IgbW9vZCwgb3Igb3RoZXJ3aXNlIG9mZnNldCBmcm9tIHRoZSBub3JtYWwgcHJvc2UgaW4gYSBtYW5uZXIgaW5kaWNhdGluZyBhIGRpZmZlcmVudCBxdWFsaXR5IG9mIHRleHQsIHN1Y2ggYXMgYSB0YXhvbm9taWMgZGVzaWduYXRpb24sIGEgdGVjaG5pY2FsIHRlcm0sIGFuIGlkaW9tYXRpYyBwaHJhc2UgZnJvbSBhbm90aGVyIGxhbmd1YWdlLCB0cmFuc2xpdGVyYXRpb24sIGEgdGhvdWdodCwgb3IgYSBzaGlwIG5hbWUgaW4gV2VzdGVybiB0ZXh0cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pIn1dfSx7bmFtZToiYiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGIgZWxlbWVudCByZXByZXNlbnRzIGEgc3BhbiBvZiB0ZXh0IHRvIHdoaWNoIGF0dGVudGlvbiBpcyBiZWluZyBkcmF3biBmb3IgdXRpbGl0YXJpYW4gcHVycG9zZXMgd2l0aG91dCBjb252ZXlpbmcgYW55IGV4dHJhIGltcG9ydGFuY2UgYW5kIHdpdGggbm8gaW1wbGljYXRpb24gb2YgYW4gYWx0ZXJuYXRlIHZvaWNlIG9yIG1vb2QsIHN1Y2ggYXMga2V5IHdvcmRzIGluIGEgZG9jdW1lbnQgYWJzdHJhY3QsIHByb2R1Y3QgbmFtZXMgaW4gYSByZXZpZXcsIGFjdGlvbmFibGUgd29yZHMgaW4gaW50ZXJhY3RpdmUgdGV4dC1kcml2ZW4gc29mdHdhcmUsIG9yIGFuIGFydGljbGUgbGVkZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iIn1dfSx7bmFtZToidSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHUgZWxlbWVudCByZXByZXNlbnRzIGEgc3BhbiBvZiB0ZXh0IHdpdGggYW4gdW5hcnRpY3VsYXRlZCwgdGhvdWdoIGV4cGxpY2l0bHkgcmVuZGVyZWQsIG5vbi10ZXh0dWFsIGFubm90YXRpb24sIHN1Y2ggYXMgbGFiZWxpbmcgdGhlIHRleHQgYXMgYmVpbmcgYSBwcm9wZXIgbmFtZSBpbiBDaGluZXNlIHRleHQgKGEgQ2hpbmVzZSBwcm9wZXIgbmFtZSBtYXJrKSwgb3IgbGFiZWxpbmcgdGhlIHRleHQgYXMgYmVpbmcgbWlzc3BlbHQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdSJ9XX0se25hbWU6Im1hcmsiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtYXJrIGVsZW1lbnQgcmVwcmVzZW50cyBhIHJ1biBvZiB0ZXh0IGluIG9uZSBkb2N1bWVudCBtYXJrZWQgb3IgaGlnaGxpZ2h0ZWQgZm9yIHJlZmVyZW5jZSBwdXJwb3NlcywgZHVlIHRvIGl0cyByZWxldmFuY2UgaW4gYW5vdGhlciBjb250ZXh0LiBXaGVuIHVzZWQgaW4gYSBxdW90YXRpb24gb3Igb3RoZXIgYmxvY2sgb2YgdGV4dCByZWZlcnJlZCB0byBmcm9tIHRoZSBwcm9zZSwgaXQgaW5kaWNhdGVzIGEgaGlnaGxpZ2h0IHRoYXQgd2FzIG5vdCBvcmlnaW5hbGx5IHByZXNlbnQgYnV0IHdoaWNoIGhhcyBiZWVuIGFkZGVkIHRvIGJyaW5nIHRoZSByZWFkZXIncyBhdHRlbnRpb24gdG8gYSBwYXJ0IG9mIHRoZSB0ZXh0IHRoYXQgbWlnaHQgbm90IGhhdmUgYmVlbiBjb25zaWRlcmVkIGltcG9ydGFudCBieSB0aGUgb3JpZ2luYWwgYXV0aG9yIHdoZW4gdGhlIGJsb2NrIHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4sIGJ1dCB3aGljaCBpcyBub3cgdW5kZXIgcHJldmlvdXNseSB1bmV4cGVjdGVkIHNjcnV0aW55LiBXaGVuIHVzZWQgaW4gdGhlIG1haW4gcHJvc2Ugb2YgYSBkb2N1bWVudCwgaXQgaW5kaWNhdGVzIGEgcGFydCBvZiB0aGUgZG9jdW1lbnQgdGhhdCBoYXMgYmVlbiBoaWdobGlnaHRlZCBkdWUgdG8gaXRzIGxpa2VseSByZWxldmFuY2UgdG8gdGhlIHVzZXIncyBjdXJyZW50IGFjdGl2aXR5LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21hcmsifV19LHtuYW1lOiJiZGkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiZGkgZWxlbWVudCByZXByZXNlbnRzIGEgc3BhbiBvZiB0ZXh0IHRoYXQgaXMgdG8gYmUgaXNvbGF0ZWQgZnJvbSBpdHMgc3Vycm91bmRpbmdzIGZvciB0aGUgcHVycG9zZXMgb2YgYmlkaXJlY3Rpb25hbCB0ZXh0IGZvcm1hdHRpbmcuIFtCSURJXSJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2JkaSJ9XX0se25hbWU6ImJkbyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJkbyBlbGVtZW50IHJlcHJlc2VudHMgZXhwbGljaXQgdGV4dCBkaXJlY3Rpb25hbGl0eSBmb3JtYXR0aW5nIGNvbnRyb2wgZm9yIGl0cyBjaGlsZHJlbi4gSXQgYWxsb3dzIGF1dGhvcnMgdG8gb3ZlcnJpZGUgdGhlIFVuaWNvZGUgYmlkaXJlY3Rpb25hbCBhbGdvcml0aG0gYnkgZXhwbGljaXRseSBzcGVjaWZ5aW5nIGEgZGlyZWN0aW9uIG92ZXJyaWRlLiBbQklESV0ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZGlyIixkZXNjcmlwdGlvbjoiVGhlIGRpcmVjdGlvbiBpbiB3aGljaCB0ZXh0IHNob3VsZCBiZSByZW5kZXJlZCBpbiB0aGlzIGVsZW1lbnQncyBjb250ZW50cy4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsdHJgOiBJbmRpY2F0ZXMgdGhhdCB0aGUgdGV4dCBzaG91bGQgZ28gaW4gYSBsZWZ0LXRvLXJpZ2h0IGRpcmVjdGlvbi5cbiogICBgcnRsYDogSW5kaWNhdGVzIHRoYXQgdGhlIHRleHQgc2hvdWxkIGdvIGluIGEgcmlnaHQtdG8tbGVmdCBkaXJlY3Rpb24uIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iZG8ifV19LHtuYW1lOiJzcGFuIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc3BhbiBlbGVtZW50IGRvZXNuJ3QgbWVhbiBhbnl0aGluZyBvbiBpdHMgb3duLCBidXQgY2FuIGJlIHVzZWZ1bCB3aGVuIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgZ2xvYmFsIGF0dHJpYnV0ZXMsIGUuZy4gY2xhc3MsIGxhbmcsIG9yIGRpci4gSXQgcmVwcmVzZW50cyBpdHMgY2hpbGRyZW4uIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3BhbiJ9XX0se25hbWU6ImJyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYnIgZWxlbWVudCByZXByZXNlbnRzIGEgbGluZSBicmVhay4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY2xlYXIiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgd2hlcmUgdG8gYmVnaW4gdGhlIG5leHQgbGluZSBhZnRlciB0aGUgYnJlYWsuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iciJ9XX0se25hbWU6IndiciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHdiciBlbGVtZW50IHJlcHJlc2VudHMgYSBsaW5lIGJyZWFrIG9wcG9ydHVuaXR5LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3diciJ9XX0se25hbWU6ImlucyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGlucyBlbGVtZW50IHJlcHJlc2VudHMgYW4gYWRkaXRpb24gdG8gdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjaXRlIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgVVJJIG9mIGEgcmVzb3VyY2UgdGhhdCBleHBsYWlucyB0aGUgY2hhbmdlLCBzdWNoIGFzIGEgbGluayB0byBtZWV0aW5nIG1pbnV0ZXMgb3IgYSB0aWNrZXQgaW4gYSB0cm91Ymxlc2hvb3Rpbmcgc3lzdGVtLiJ9LHtuYW1lOiJkYXRldGltZSIsZGVzY3JpcHRpb246J1RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgdGltZSBhbmQgZGF0ZSBvZiB0aGUgY2hhbmdlIGFuZCBtdXN0IGJlIGEgdmFsaWQgZGF0ZSB3aXRoIGFuIG9wdGlvbmFsIHRpbWUgc3RyaW5nLiBJZiB0aGUgdmFsdWUgY2Fubm90IGJlIHBhcnNlZCBhcyBhIGRhdGUgd2l0aCBhbiBvcHRpb25hbCB0aW1lIHN0cmluZywgdGhlIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIHRpbWUgc3RhbXAuIEZvciB0aGUgZm9ybWF0IG9mIHRoZSBzdHJpbmcgd2l0aG91dCBhIHRpbWUsIHNlZSBbRm9ybWF0IG9mIGEgdmFsaWQgZGF0ZSBzdHJpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRGF0ZV9hbmRfdGltZV9mb3JtYXRzI0Zvcm1hdF9vZl9hX3ZhbGlkX2RhdGVfc3RyaW5nICJDZXJ0YWluIEhUTUwgZWxlbWVudHMgdXNlIGRhdGUgYW5kL29yIHRpbWUgdmFsdWVzLiBUaGUgZm9ybWF0cyBvZiB0aGUgc3RyaW5ncyB0aGF0IHNwZWNpZnkgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGlzIGFydGljbGUuIikgaW4gW0RhdGUgYW5kIHRpbWUgZm9ybWF0cyB1c2VkIGluIEhUTUxdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRGF0ZV9hbmRfdGltZV9mb3JtYXRzICJDZXJ0YWluIEhUTUwgZWxlbWVudHMgdXNlIGRhdGUgYW5kL29yIHRpbWUgdmFsdWVzLiBUaGUgZm9ybWF0cyBvZiB0aGUgc3RyaW5ncyB0aGF0IHNwZWNpZnkgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGlzIGFydGljbGUuIikuIFRoZSBmb3JtYXQgb2YgdGhlIHN0cmluZyBpZiBpdCBpbmNsdWRlcyBib3RoIGRhdGUgYW5kIHRpbWUgaXMgY292ZXJlZCBpbiBbRm9ybWF0IG9mIGEgdmFsaWQgbG9jYWwgZGF0ZSBhbmQgdGltZSBzdHJpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRGF0ZV9hbmRfdGltZV9mb3JtYXRzI0Zvcm1hdF9vZl9hX3ZhbGlkX2xvY2FsX2RhdGVfYW5kX3RpbWVfc3RyaW5nICJDZXJ0YWluIEhUTUwgZWxlbWVudHMgdXNlIGRhdGUgYW5kL29yIHRpbWUgdmFsdWVzLiBUaGUgZm9ybWF0cyBvZiB0aGUgc3RyaW5ncyB0aGF0IHNwZWNpZnkgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGlzIGFydGljbGUuIikgaW4gW0RhdGUgYW5kIHRpbWUgZm9ybWF0cyB1c2VkIGluIEhUTUxdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRGF0ZV9hbmRfdGltZV9mb3JtYXRzICJDZXJ0YWluIEhUTUwgZWxlbWVudHMgdXNlIGRhdGUgYW5kL29yIHRpbWUgdmFsdWVzLiBUaGUgZm9ybWF0cyBvZiB0aGUgc3RyaW5ncyB0aGF0IHNwZWNpZnkgdGhlc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGlzIGFydGljbGUuIikuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnMifV19LHtuYW1lOiJkZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkZWwgZWxlbWVudCByZXByZXNlbnRzIGEgcmVtb3ZhbCBmcm9tIHRoZSBkb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY2l0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBVUkkgZm9yIGEgcmVzb3VyY2UgdGhhdCBleHBsYWlucyB0aGUgY2hhbmdlIChmb3IgZXhhbXBsZSwgbWVldGluZyBtaW51dGVzKS4ifX0se25hbWU6ImRhdGV0aW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIHRpbWUgYW5kIGRhdGUgb2YgdGhlIGNoYW5nZSBhbmQgbXVzdCBiZSBhIHZhbGlkIGRhdGUgc3RyaW5nIHdpdGggYW4gb3B0aW9uYWwgdGltZS4gSWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBwYXJzZWQgYXMgYSBkYXRlIHdpdGggYW4gb3B0aW9uYWwgdGltZSBzdHJpbmcsIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYW4gYXNzb2NpYXRlZCB0aW1lIHN0YW1wLiBGb3IgdGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nIHdpdGhvdXQgYSB0aW1lLCBzZWUgW0Zvcm1hdCBvZiBhIHZhbGlkIGRhdGUgc3RyaW5nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyNGb3JtYXRfb2ZfYV92YWxpZF9kYXRlX3N0cmluZyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpIGluIFtEYXRlIGFuZCB0aW1lIGZvcm1hdHMgdXNlZCBpbiBIVE1MXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpLiBUaGUgZm9ybWF0IG9mIHRoZSBzdHJpbmcgaWYgaXQgaW5jbHVkZXMgYm90aCBkYXRlIGFuZCB0aW1lIGlzIGNvdmVyZWQgaW4gW0Zvcm1hdCBvZiBhIHZhbGlkIGxvY2FsIGRhdGUgYW5kIHRpbWUgc3RyaW5nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyNGb3JtYXRfb2ZfYV92YWxpZF9sb2NhbF9kYXRlX2FuZF90aW1lX3N0cmluZyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpIGluIFtEYXRlIGFuZCB0aW1lIGZvcm1hdHMgdXNlZCBpbiBIVE1MXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpLid9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RlbCJ9XX0se25hbWU6InBpY3R1cmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwaWN0dXJlIGVsZW1lbnQgaXMgYSBjb250YWluZXIgd2hpY2ggcHJvdmlkZXMgbXVsdGlwbGUgc291cmNlcyB0byBpdHMgY29udGFpbmVkIGltZyBlbGVtZW50IHRvIGFsbG93IGF1dGhvcnMgdG8gZGVjbGFyYXRpdmVseSBjb250cm9sIG9yIGdpdmUgaGludHMgdG8gdGhlIHVzZXIgYWdlbnQgYWJvdXQgd2hpY2ggaW1hZ2UgcmVzb3VyY2UgdG8gdXNlLCBiYXNlZCBvbiB0aGUgc2NyZWVuIHBpeGVsIGRlbnNpdHksIHZpZXdwb3J0IHNpemUsIGltYWdlIGZvcm1hdCwgYW5kIG90aGVyIGZhY3RvcnMuIEl0IHJlcHJlc2VudHMgaXRzIGNoaWxkcmVuLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3BpY3R1cmUifV19LHtuYW1lOiJpbWciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGltZyBlbGVtZW50IHJlcHJlc2VudHMgYW4gaW1hZ2UuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyBhbiBhbHRlcm5hdGl2ZSB0ZXh0IGRlc2NyaXB0aW9uIG9mIHRoZSBpbWFnZS5cblxuKipOb3RlOioqIEJyb3dzZXJzIGRvIG5vdCBhbHdheXMgZGlzcGxheSB0aGUgaW1hZ2UgcmVmZXJlbmNlZCBieSB0aGUgZWxlbWVudC4gVGhpcyBpcyB0aGUgY2FzZSBmb3Igbm9uLWdyYXBoaWNhbCBicm93c2VycyAoaW5jbHVkaW5nIHRob3NlIHVzZWQgYnkgcGVvcGxlIHdpdGggdmlzdWFsIGltcGFpcm1lbnRzKSwgaWYgdGhlIHVzZXIgY2hvb3NlcyBub3QgdG8gZGlzcGxheSBpbWFnZXMsIG9yIGlmIHRoZSBicm93c2VyIGNhbm5vdCBkaXNwbGF5IHRoZSBpbWFnZSBiZWNhdXNlIGl0IGlzIGludmFsaWQgb3IgYW4gW3Vuc3VwcG9ydGVkIHR5cGVdKCNTdXBwb3J0ZWRfaW1hZ2VfZm9ybWF0cykuIEluIHRoZXNlIGNhc2VzLCB0aGUgYnJvd3NlciBtYXkgcmVwbGFjZSB0aGUgaW1hZ2Ugd2l0aCB0aGUgdGV4dCBkZWZpbmVkIGluIHRoaXMgZWxlbWVudFwncyBgYWx0YCBhdHRyaWJ1dGUuIFlvdSBzaG91bGQsIGZvciB0aGVzZSByZWFzb25zIGFuZCBvdGhlcnMsIHByb3ZpZGUgYSB1c2VmdWwgdmFsdWUgZm9yIGBhbHRgIHdoZW5ldmVyIHBvc3NpYmxlLlxuXG4qKk5vdGU6KiogT21pdHRpbmcgdGhpcyBhdHRyaWJ1dGUgYWx0b2dldGhlciBpbmRpY2F0ZXMgdGhhdCB0aGUgaW1hZ2UgaXMgYSBrZXkgcGFydCBvZiB0aGUgY29udGVudCwgYW5kIG5vIHRleHR1YWwgZXF1aXZhbGVudCBpcyBhdmFpbGFibGUuIFNldHRpbmcgdGhpcyBhdHRyaWJ1dGUgdG8gYW4gZW1wdHkgc3RyaW5nIChgYWx0PSIiYCkgaW5kaWNhdGVzIHRoYXQgdGhpcyBpbWFnZSBpcyBfbm90XyBhIGtleSBwYXJ0IG9mIHRoZSBjb250ZW50IChkZWNvcmF0aXZlKSwgYW5kIHRoYXQgbm9uLXZpc3VhbCBicm93c2VycyBtYXkgb21pdCBpdCBmcm9tIHJlbmRlcmluZy4nfX0se25hbWU6InNyYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGltYWdlIFVSTC4gVGhpcyBhdHRyaWJ1dGUgaXMgbWFuZGF0b3J5IGZvciB0aGUgYDxpbWc+YCBlbGVtZW50LiBPbiBicm93c2VycyBzdXBwb3J0aW5nIGBzcmNzZXRgLCBgc3JjYCBpcyB0cmVhdGVkIGxpa2UgYSBjYW5kaWRhdGUgaW1hZ2Ugd2l0aCBhIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvciBgMXhgIHVubGVzcyBhbiBpbWFnZSB3aXRoIHRoaXMgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9yIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBgc3Jjc2V0LGAgb3IgdW5sZXNzIGBzcmNzZXRgIGNvbnRhaW5zICdgd2AnIGRlc2NyaXB0b3JzLiJ9fSx7bmFtZToic3Jjc2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGxpc3Qgb2Ygb25lIG9yIG1vcmUgc3RyaW5ncyBzZXBhcmF0ZWQgYnkgY29tbWFzIGluZGljYXRpbmcgYSBzZXQgb2YgcG9zc2libGUgaW1hZ2Ugc291cmNlcyBmb3IgdGhlIHVzZXIgYWdlbnQgdG8gdXNlLiBFYWNoIHN0cmluZyBpcyBjb21wb3NlZCBvZjpcblxuMS4gIGEgVVJMIHRvIGFuIGltYWdlLFxuMi4gIG9wdGlvbmFsbHksIHdoaXRlc3BhY2UgZm9sbG93ZWQgYnkgb25lIG9mOlxuICAgICogICBBIHdpZHRoIGRlc2NyaXB0b3IsIG9yIGEgcG9zaXRpdmUgaW50ZWdlciBkaXJlY3RseSBmb2xsb3dlZCBieSAnYHdgJy4gVGhlIHdpZHRoIGRlc2NyaXB0b3IgaXMgZGl2aWRlZCBieSB0aGUgc291cmNlIHNpemUgZ2l2ZW4gaW4gdGhlIGBzaXplc2AgYXR0cmlidXRlIHRvIGNhbGN1bGF0ZSB0aGUgZWZmZWN0aXZlIHBpeGVsIGRlbnNpdHkuXG4gICAgKiAgIEEgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9yLCB3aGljaCBpcyBhIHBvc2l0aXZlIGZsb2F0aW5nIHBvaW50IG51bWJlciBkaXJlY3RseSBmb2xsb3dlZCBieSAnYHhgJy5cblxuSWYgbm8gZGVzY3JpcHRvciBpcyBzcGVjaWZpZWQsIHRoZSBzb3VyY2UgaXMgYXNzaWduZWQgdGhlIGRlZmF1bHQgZGVzY3JpcHRvcjogYDF4YC5cblxuSXQgaXMgaW5jb3JyZWN0IHRvIG1peCB3aWR0aCBkZXNjcmlwdG9ycyBhbmQgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9ycyBpbiB0aGUgc2FtZSBgc3Jjc2V0YCBhdHRyaWJ1dGUuIER1cGxpY2F0ZSBkZXNjcmlwdG9ycyAoZm9yIGluc3RhbmNlLCB0d28gc291cmNlcyBpbiB0aGUgc2FtZSBgc3Jjc2V0YCB3aGljaCBhcmUgYm90aCBkZXNjcmliZWQgd2l0aCAnYDJ4YCcpIGFyZSBhbHNvIGludmFsaWQuXG5cblRoZSB1c2VyIGFnZW50IHNlbGVjdHMgYW55IG9uZSBvZiB0aGUgYXZhaWxhYmxlIHNvdXJjZXMgYXQgaXRzIGRpc2NyZXRpb24uIFRoaXMgcHJvdmlkZXMgdGhlbSB3aXRoIHNpZ25pZmljYW50IGxlZXdheSB0byB0YWlsb3IgdGhlaXIgc2VsZWN0aW9uIGJhc2VkIG9uIHRoaW5ncyBsaWtlIHVzZXIgcHJlZmVyZW5jZXMgb3IgYmFuZHdpZHRoIGNvbmRpdGlvbnMuIFNlZSBvdXIgW1Jlc3BvbnNpdmUgaW1hZ2VzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0xlYXJuL0hUTUwvTXVsdGltZWRpYV9hbmRfZW1iZWRkaW5nL1Jlc3BvbnNpdmVfaW1hZ2VzKSB0dXRvcmlhbCBmb3IgYW4gZXhhbXBsZS4ifX0se25hbWU6ImNyb3Nzb3JpZ2luIix2YWx1ZVNldDoieG8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGVzIGlmIHRoZSBmZXRjaGluZyBvZiB0aGUgcmVsYXRlZCBpbWFnZSBtdXN0IGJlIGRvbmUgdXNpbmcgQ09SUyBvciBub3QuIFtDT1JTLWVuYWJsZWQgaW1hZ2VzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NPUlNfRW5hYmxlZF9JbWFnZSkgY2FuIGJlIHJldXNlZCBpbiB0aGUgW2A8Y2FudmFzPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYW52YXMgIlVzZSB0aGUgSFRNTCA8Y2FudmFzPiBlbGVtZW50IHdpdGggZWl0aGVyIHRoZSBjYW52YXMgc2NyaXB0aW5nIEFQSSBvciB0aGUgV2ViR0wgQVBJIHRvIGRyYXcgZ3JhcGhpY3MgYW5kIGFuaW1hdGlvbnMuIikgZWxlbWVudCB3aXRob3V0IGJlaW5nICJbdGFpbnRlZF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9DT1JTX2VuYWJsZWRfaW1hZ2UjV2hhdF9pc19hX3RhaW50ZWRfY2FudmFzKS4iIFRoZSBhbGxvd2VkIHZhbHVlcyBhcmU6J319LHtuYW1lOiJ1c2VtYXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBwYXJ0aWFsIFVSTCAoc3RhcnRpbmcgd2l0aCBcJyNcJykgb2YgYW4gW2ltYWdlIG1hcF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9IVE1ML0VsZW1lbnQvbWFwKSBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnQuXG5cbioqTm90ZToqKiBZb3UgY2Fubm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBpZiB0aGUgYDxpbWc+YCBlbGVtZW50IGlzIGEgZGVzY2VuZGFudCBvZiBhbiBbYDxhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hICJUaGUgSFRNTCA8YT4gZWxlbWVudCAob3IgYW5jaG9yIGVsZW1lbnQpIGNyZWF0ZXMgYSBoeXBlcmxpbmsgdG8gb3RoZXIgd2ViIHBhZ2VzLCBmaWxlcywgbG9jYXRpb25zIHdpdGhpbiB0aGUgc2FtZSBwYWdlLCBlbWFpbCBhZGRyZXNzZXMsIG9yIGFueSBvdGhlciBVUkwuIikgb3IgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIGVsZW1lbnQuJ319LHtuYW1lOiJpc21hcCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIGltYWdlIGlzIHBhcnQgb2YgYSBzZXJ2ZXItc2lkZSBtYXAuIElmIHNvLCB0aGUgcHJlY2lzZSBjb29yZGluYXRlcyBvZiBhIGNsaWNrIGFyZSBzZW50IHRvIHRoZSBzZXJ2ZXIuXG5cbioqTm90ZToqKiBUaGlzIGF0dHJpYnV0ZSBpcyBhbGxvd2VkIG9ubHkgaWYgdGhlIGA8aW1nPmAgZWxlbWVudCBpcyBhIGRlc2NlbmRhbnQgb2YgYW4gW2A8YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSAiVGhlIEhUTUwgPGE+IGVsZW1lbnQgKG9yIGFuY2hvciBlbGVtZW50KSBjcmVhdGVzIGEgaHlwZXJsaW5rIHRvIG90aGVyIHdlYiBwYWdlcywgZmlsZXMsIGxvY2F0aW9ucyB3aXRoaW4gdGhlIHNhbWUgcGFnZSwgZW1haWwgYWRkcmVzc2VzLCBvciBhbnkgb3RoZXIgVVJMLiIpIGVsZW1lbnQgd2l0aCBhIHZhbGlkIFtgaHJlZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hI2F0dHItaHJlZikgYXR0cmlidXRlLid9fSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbnRyaW5zaWMgd2lkdGggb2YgdGhlIGltYWdlIGluIHBpeGVscy4ifX0se25hbWU6ImhlaWdodCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGludHJpbnNpYyBoZWlnaHQgb2YgdGhlIGltYWdlIGluIHBpeGVscy4ifX0se25hbWU6ImRlY29kaW5nIixkZXNjcmlwdGlvbjoiUHJvdmlkZXMgYW4gaW1hZ2UgZGVjb2RpbmcgaGludCB0byB0aGUgYnJvd3Nlci4gVGhlIGFsbG93ZWQgdmFsdWVzIGFyZToifSx7bmFtZToiZGVjb2RpbmciLGRlc2NyaXB0aW9uOiJgc3luY2BcblxuRGVjb2RlIHRoZSBpbWFnZSBzeW5jaHJvbm91c2x5IGZvciBhdG9taWMgcHJlc2VudGF0aW9uIHdpdGggb3RoZXIgY29udGVudC5cblxuYGFzeW5jYFxuXG5EZWNvZGUgdGhlIGltYWdlIGFzeW5jaHJvbm91c2x5IHRvIHJlZHVjZSBkZWxheSBpbiBwcmVzZW50aW5nIG90aGVyIGNvbnRlbnQuXG5cbmBhdXRvYFxuXG5EZWZhdWx0IG1vZGUsIHdoaWNoIGluZGljYXRlcyBubyBwcmVmZXJlbmNlIGZvciB0aGUgZGVjb2RpbmcgbW9kZS4gVGhlIGJyb3dzZXIgZGVjaWRlcyB3aGF0IGlzIGJlc3QgZm9yIHRoZSB1c2VyLiJ9LHtuYW1lOiJpbXBvcnRhbmNlIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoZSByZWxhdGl2ZSBpbXBvcnRhbmNlIG9mIHRoZSByZXNvdXJjZS4gUHJpb3JpdHkgaGludHMgYXJlIGRlbGVnYXRlZCB1c2luZyB0aGUgdmFsdWVzOiJ9LHtuYW1lOiJpbXBvcnRhbmNlIixkZXNjcmlwdGlvbjoiYGF1dG9gOiBJbmRpY2F0ZXPCoCoqbm/CoHByZWZlcmVuY2UqKi4gVGhlIGJyb3dzZXIgbWF5IHVzZSBpdHMgb3duIGhldXJpc3RpY3MgdG8gZGVjaWRlIHRoZSBwcmlvcml0eSBvZiB0aGUgaW1hZ2UuXG5cbmBoaWdoYDogSW5kaWNhdGVzIHRvIHRoZcKgYnJvd3NlcsKgdGhhdCB0aGUgaW1hZ2UgaXMgb2bCoCoqaGlnaCoqIHByaW9yaXR5LlxuXG5gbG93YDrCoEluZGljYXRlcyB0byB0aGXCoGJyb3dzZXLCoHRoYXQgdGhlIGltYWdlIGlzIG9mwqAqKmxvdyoqIHByaW9yaXR5LiJ9LHtuYW1lOiJpbnRyaW5zaWNzaXplIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgdGVsbHMgdGhlIGJyb3dzZXIgdG8gaWdub3JlIHRoZSBhY3R1YWwgaW50cmluc2ljIHNpemUgb2YgdGhlIGltYWdlIGFuZCBwcmV0ZW5kIGl04oCZcyB0aGUgc2l6ZSBzcGVjaWZpZWQgaW4gdGhlIGF0dHJpYnV0ZS4gU3BlY2lmaWNhbGx5LCB0aGUgaW1hZ2Ugd291bGQgcmFzdGVyIGF0IHRoZXNlIGRpbWVuc2lvbnMgYW5kIGBuYXR1cmFsV2lkdGhgL2BuYXR1cmFsSGVpZ2h0YCBvbiBpbWFnZXMgd291bGQgcmV0dXJuIHRoZSB2YWx1ZXMgc3BlY2lmaWVkIGluIHRoaXMgYXR0cmlidXRlLiBbRXhwbGFpbmVyXShodHRwczovL2dpdGh1Yi5jb20vb2phbnZhZmFpL2ludHJpbnNpY3NpemUtYXR0cmlidXRlKSwgW2V4YW1wbGVzXShodHRwczovL2dvb2dsZWNocm9tZS5naXRodWIuaW8vc2FtcGxlcy9pbnRyaW5zaWMtc2l6ZS9pbmRleC5odG1sKSJ9LHtuYW1lOiJyZWZlcnJlcnBvbGljeSIsZGVzY3JpcHRpb246IkEgc3RyaW5nIGluZGljYXRpbmcgd2hpY2ggcmVmZXJyZXIgdG8gdXNlIHdoZW4gZmV0Y2hpbmcgdGhlIHJlc291cmNlOlxuXG4qICAgYG5vLXJlZmVycmVyOmAgVGhlIFtgUmVmZXJlcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyIFwiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS5cIikgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQuXG4qICAgYG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlOmAgTm8gYFJlZmVyZXJgIGhlYWRlciB3aWxsIGJlIHNlbnQgd2hlbiBuYXZpZ2F0aW5nIHRvIGFuIG9yaWdpbiB3aXRob3V0IFRMUyAoSFRUUFMpLiBUaGlzIGlzIGEgdXNlciBhZ2VudOKAmXMgZGVmYXVsdCBiZWhhdmlvciBpZiBubyBwb2xpY3kgaXMgb3RoZXJ3aXNlIHNwZWNpZmllZC5cbiogICBgb3JpZ2luOmAgVGhlIGBSZWZlcmVyYCBoZWFkZXIgd2lsbCBpbmNsdWRlIHRoZSBwYWdlIG9mIG9yaWdpbidzIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydC5cbiogICBgb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luOmAgTmF2aWdhdGluZyB0byBvdGhlciBvcmlnaW5zIHdpbGwgbGltaXQgdGhlIGluY2x1ZGVkIHJlZmVycmFsIGRhdGEgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QgYW5kIHRoZSBwb3J0LCB3aGlsZSBuYXZpZ2F0aW5nIGZyb20gdGhlIHNhbWUgb3JpZ2luIHdpbGwgaW5jbHVkZSB0aGUgcmVmZXJyZXIncyBmdWxsIHBhdGguXG4qICAgYHVuc2FmZS11cmw6YCBUaGUgYFJlZmVyZXJgIGhlYWRlciB3aWxsIGluY2x1ZGUgdGhlIG9yaWdpbiBhbmQgdGhlIHBhdGgsIGJ1dCBub3QgdGhlIGZyYWdtZW50LCBwYXNzd29yZCwgb3IgdXNlcm5hbWUuIFRoaXMgY2FzZSBpcyB1bnNhZmUgYmVjYXVzZSBpdCBjYW4gbGVhayBvcmlnaW5zIGFuZCBwYXRocyBmcm9tIFRMUy1wcm90ZWN0ZWQgcmVzb3VyY2VzIHRvIGluc2VjdXJlIG9yaWdpbnMuIn0se25hbWU6InNpemVzIixkZXNjcmlwdGlvbjoiQSBsaXN0IG9mIG9uZSBvciBtb3JlIHN0cmluZ3Mgc2VwYXJhdGVkIGJ5IGNvbW1hcyBpbmRpY2F0aW5nIGEgc2V0IG9mIHNvdXJjZSBzaXplcy4gRWFjaCBzb3VyY2Ugc2l6ZSBjb25zaXN0cyBvZjpcblxuMS4gIGEgbWVkaWEgY29uZGl0aW9uLiBUaGlzIG11c3QgYmUgb21pdHRlZCBmb3IgdGhlIGxhc3QgaXRlbS5cbjIuICBhIHNvdXJjZSBzaXplIHZhbHVlLlxuXG5Tb3VyY2Ugc2l6ZSB2YWx1ZXMgc3BlY2lmeSB0aGUgaW50ZW5kZWQgZGlzcGxheSBzaXplIG9mIHRoZSBpbWFnZS4gVXNlciBhZ2VudHMgdXNlIHRoZSBjdXJyZW50IHNvdXJjZSBzaXplIHRvIHNlbGVjdCBvbmUgb2YgdGhlIHNvdXJjZXMgc3VwcGxpZWQgYnkgdGhlIGBzcmNzZXRgIGF0dHJpYnV0ZSwgd2hlbiB0aG9zZSBzb3VyY2VzIGFyZSBkZXNjcmliZWQgdXNpbmcgd2lkdGggKCdgd2AnKSBkZXNjcmlwdG9ycy4gVGhlIHNlbGVjdGVkIHNvdXJjZSBzaXplIGFmZmVjdHMgdGhlIGludHJpbnNpYyBzaXplIG9mIHRoZSBpbWFnZSAodGhlIGltYWdl4oCZcyBkaXNwbGF5IHNpemUgaWYgbm8gQ1NTIHN0eWxpbmcgaXMgYXBwbGllZCkuIElmIHRoZSBgc3Jjc2V0YCBhdHRyaWJ1dGUgaXMgYWJzZW50LCBvciBjb250YWlucyBubyB2YWx1ZXMgd2l0aCBhIHdpZHRoIChgd2ApIGRlc2NyaXB0b3IsIHRoZW4gdGhlIGBzaXplc2AgYXR0cmlidXRlIGhhcyBubyBlZmZlY3QuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbWcifV19LHtuYW1lOiJpZnJhbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpZnJhbWUgZWxlbWVudCByZXByZXNlbnRzIGEgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQuIn0sYXR0cmlidXRlczpbe25hbWU6InNyYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIFVSTCBvZiB0aGUgcGFnZSB0byBlbWJlZC4gVXNlIGEgdmFsdWUgb2YgYGFib3V0OmJsYW5rYCB0byBlbWJlZCBhbiBlbXB0eSBwYWdlIHRoYXQgY29uZm9ybXMgdG8gdGhlIFtzYW1lLW9yaWdpbiBwb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1NhbWUtb3JpZ2luX3BvbGljeSNJbmhlcml0ZWRfb3JpZ2lucykuIEFsc28gbm90ZSB0aGF0IHByb2dyYW1hdGljYWxseSByZW1vdmluZyBhbiBgPGlmcmFtZT5gXCdzIHNyYyBhdHRyaWJ1dGUgKGUuZy4gdmlhIFtgRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoKWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FbGVtZW50L3JlbW92ZUF0dHJpYnV0ZSAiVGhlIEVsZW1lbnQgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZSgpIHJlbW92ZXMgdGhlIGF0dHJpYnV0ZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBmcm9tIHRoZSBlbGVtZW50LiIpKSBjYXVzZXMgYGFib3V0OmJsYW5rYCB0byBiZSBsb2FkZWQgaW4gdGhlIGZyYW1lIGluIEZpcmVmb3ggKGZyb20gdmVyc2lvbiA2NSksIENocm9taXVtLWJhc2VkIGJyb3dzZXJzLCBhbmQgU2FmYXJpL2lPUy4nfX0se25hbWU6InNyY2RvYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5saW5lIEhUTUwgdG8gZW1iZWQsIG92ZXJyaWRpbmcgdGhlIGBzcmNgIGF0dHJpYnV0ZS4gSWYgYSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdGhlIGBzcmNkb2NgIGF0dHJpYnV0ZSwgaXQgd2lsbCBmYWxsIGJhY2sgdG8gdGhlIFVSTCBpbiB0aGUgYHNyY2AgYXR0cmlidXRlLiJ9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSB0YXJnZXRhYmxlIG5hbWUgZm9yIHRoZSBlbWJlZGRlZCBicm93c2luZyBjb250ZXh0LiBUaGlzIGNhbiBiZSB1c2VkIGluIHRoZSBgdGFyZ2V0YCBhdHRyaWJ1dGUgb2YgdGhlIFtgPGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2EgIlRoZSBIVE1MIDxhPiBlbGVtZW50IChvciBhbmNob3IgZWxlbWVudCkgY3JlYXRlcyBhIGh5cGVybGluayB0byBvdGhlciB3ZWIgcGFnZXMsIGZpbGVzLCBsb2NhdGlvbnMgd2l0aGluIHRoZSBzYW1lIHBhZ2UsIGVtYWlsIGFkZHJlc3Nlcywgb3IgYW55IG90aGVyIFVSTC4iKSwgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIiksIG9yIFtgPGJhc2U+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Jhc2UgIlRoZSBIVE1MIDxiYXNlPiBlbGVtZW50IHNwZWNpZmllcyB0aGUgYmFzZSBVUkwgdG8gdXNlIGZvciBhbGwgcmVsYXRpdmUgVVJMcyBjb250YWluZWQgd2l0aGluIGEgZG9jdW1lbnQuIFRoZXJlIGNhbiBiZSBvbmx5IG9uZSA8YmFzZT4gZWxlbWVudCBpbiBhIGRvY3VtZW50LiIpIGVsZW1lbnRzOyB0aGUgYGZvcm10YXJnZXRgIGF0dHJpYnV0ZSBvZiB0aGUgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgb3IgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIGVsZW1lbnRzOyBvciB0aGUgYHdpbmRvd05hbWVgIHBhcmFtZXRlciBpbiB0aGUgW2B3aW5kb3cub3BlbigpYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dpbmRvdy9vcGVuICJUaGXCoFdpbmRvdyBpbnRlcmZhY2VcJ3Mgb3BlbigpIG1ldGhvZCBsb2FkcyB0aGUgc3BlY2lmaWVkIHJlc291cmNlIGludG8gdGhlIGJyb3dzaW5nIGNvbnRleHQgKHdpbmRvdywgPGlmcmFtZT4gb3IgdGFiKSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4gSWYgdGhlIG5hbWUgZG9lc25cJ3QgZXhpc3QsIHRoZW4gYSBuZXcgd2luZG93IGlzIG9wZW5lZCBhbmQgdGhlIHNwZWNpZmllZCByZXNvdXJjZSBpcyBsb2FkZWQgaW50byBpdHMgYnJvd3NpbmcgY29udGV4dC4iKSBtZXRob2QuJ319LHtuYW1lOiJzYW5kYm94Iix2YWx1ZVNldDoic2IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0FwcGxpZXMgZXh0cmEgcmVzdHJpY3Rpb25zIHRvIHRoZSBjb250ZW50IGluIHRoZSBmcmFtZS4gVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgY2FuIGVpdGhlciBiZSBlbXB0eSB0byBhcHBseSBhbGwgcmVzdHJpY3Rpb25zLCBvciBzcGFjZS1zZXBhcmF0ZWQgdG9rZW5zIHRvIGxpZnQgcGFydGljdWxhciByZXN0cmljdGlvbnM6XG5cbiogICBgYWxsb3ctZm9ybXNgOiBBbGxvd3MgdGhlIHJlc291cmNlIHRvIHN1Ym1pdCBmb3Jtcy4gSWYgdGhpcyBrZXl3b3JkIGlzIG5vdCB1c2VkLCBmb3JtIHN1Ym1pc3Npb24gaXMgYmxvY2tlZC5cbiogICBgYWxsb3ctbW9kYWxzYDogTGV0cyB0aGUgcmVzb3VyY2UgW29wZW4gbW9kYWwgd2luZG93c10oaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0bWwjc2FuZGJveGVkLW1vZGFscy1mbGFnKS5cbiogICBgYWxsb3ctb3JpZW50YXRpb24tbG9ja2A6IExldHMgdGhlIHJlc291cmNlIFtsb2NrIHRoZSBzY3JlZW4gb3JpZW50YXRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TY3JlZW4vbG9ja09yaWVudGF0aW9uKS5cbiogICBgYWxsb3ctcG9pbnRlci1sb2NrYDogTGV0cyB0aGUgcmVzb3VyY2UgdXNlIHRoZSBbUG9pbnRlciBMb2NrIEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWJBUEkvUG9pbnRlcl9Mb2NrKS5cbiogICBgYWxsb3ctcG9wdXBzYDogQWxsb3dzIHBvcHVwcyAoc3VjaCBhcyBgd2luZG93Lm9wZW4oKWAsIGB0YXJnZXQ9Il9ibGFuayJgLCBvciBgc2hvd01vZGFsRGlhbG9nKClgKS4gSWYgdGhpcyBrZXl3b3JkIGlzIG5vdCB1c2VkLCB0aGUgcG9wdXAgd2lsbCBzaWxlbnRseSBmYWlsIHRvIG9wZW4uXG4qICAgYGFsbG93LXBvcHVwcy10by1lc2NhcGUtc2FuZGJveGA6IExldHMgdGhlIHNhbmRib3hlZCBkb2N1bWVudCBvcGVuIG5ldyB3aW5kb3dzIHdpdGhvdXQgdGhvc2Ugd2luZG93cyBpbmhlcml0aW5nIHRoZSBzYW5kYm94aW5nLiBGb3IgZXhhbXBsZSwgdGhpcyBjYW4gc2FmZWx5IHNhbmRib3ggYW4gYWR2ZXJ0aXNlbWVudCB3aXRob3V0IGZvcmNpbmcgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIHVwb24gdGhlIHBhZ2UgdGhlIGFkIGxpbmtzIHRvLlxuKiAgIGBhbGxvdy1wcmVzZW50YXRpb25gOiBMZXRzIHRoZSByZXNvdXJjZSBzdGFydCBhIFtwcmVzZW50YXRpb24gc2Vzc2lvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1ByZXNlbnRhdGlvblJlcXVlc3QpLlxuKiAgIGBhbGxvdy1zYW1lLW9yaWdpbmA6IElmIHRoaXMgdG9rZW4gaXMgbm90IHVzZWQsIHRoZSByZXNvdXJjZSBpcyB0cmVhdGVkIGFzIGJlaW5nIGZyb20gYSBzcGVjaWFsIG9yaWdpbiB0aGF0IGFsd2F5cyBmYWlscyB0aGUgW3NhbWUtb3JpZ2luIHBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9zYW1lLW9yaWdpbl9wb2xpY3kgInNhbWUtb3JpZ2luIHBvbGljeTogVGhlIHNhbWUtb3JpZ2luIHBvbGljeSBpcyBhIGNyaXRpY2FsIHNlY3VyaXR5IG1lY2hhbmlzbSB0aGF0IHJlc3RyaWN0cyBob3cgYSBkb2N1bWVudCBvciBzY3JpcHQgbG9hZGVkIGZyb20gb25lIG9yaWdpbiBjYW4gaW50ZXJhY3Qgd2l0aCBhIHJlc291cmNlIGZyb20gYW5vdGhlciBvcmlnaW4uIikuXG4qICAgYGFsbG93LXNjcmlwdHNgOiBMZXRzIHRoZSByZXNvdXJjZSBydW4gc2NyaXB0cyAoYnV0IG5vdCBjcmVhdGUgcG9wdXAgd2luZG93cykuXG4qICAgYGFsbG93LXN0b3JhZ2UtYWNjZXNzLWJ5LXVzZXItYWN0aXZhdGlvbmAgOiBMZXRzIHRoZSByZXNvdXJjZSByZXF1ZXN0IGFjY2VzcyB0byB0aGUgcGFyZW50XCdzIHN0b3JhZ2UgY2FwYWJpbGl0aWVzIHdpdGggdGhlIFtTdG9yYWdlIEFjY2VzcyBBUEldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TdG9yYWdlX0FjY2Vzc19BUEkpLlxuKiAgIGBhbGxvdy10b3AtbmF2aWdhdGlvbmA6IExldHMgdGhlIHJlc291cmNlIG5hdmlnYXRlIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCAodGhlIG9uZSBuYW1lZCBgX3RvcGApLlxuKiAgIGBhbGxvdy10b3AtbmF2aWdhdGlvbi1ieS11c2VyLWFjdGl2YXRpb25gOiBMZXRzIHRoZSByZXNvdXJjZSBuYXZpZ2F0ZSB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQsIGJ1dCBvbmx5IGlmIGluaXRpYXRlZCBieSBhIHVzZXIgZ2VzdHVyZS5cblxuKipOb3RlcyBhYm91dCBzYW5kYm94aW5nOioqXG5cbiogICBXaGVuIHRoZSBlbWJlZGRlZCBkb2N1bWVudCBoYXMgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBlbWJlZGRpbmcgcGFnZSwgaXQgaXMgKipzdHJvbmdseSBkaXNjb3VyYWdlZCoqIHRvIHVzZSBib3RoIGBhbGxvdy1zY3JpcHRzYCBhbmQgYGFsbG93LXNhbWUtb3JpZ2luYCwgYXMgdGhhdCBsZXRzIHRoZSBlbWJlZGRlZCBkb2N1bWVudCByZW1vdmUgdGhlIGBzYW5kYm94YCBhdHRyaWJ1dGUg4oCUIG1ha2luZyBpdCBubyBtb3JlIHNlY3VyZSB0aGFuIG5vdCB1c2luZyB0aGUgYHNhbmRib3hgIGF0dHJpYnV0ZSBhdCBhbGwuXG4qICAgU2FuZGJveGluZyBpcyB1c2VsZXNzIGlmIHRoZSBhdHRhY2tlciBjYW4gZGlzcGxheSBjb250ZW50IG91dHNpZGUgYSBzYW5kYm94ZWQgYGlmcmFtZWAg4oCUIHN1Y2ggYXMgaWYgdGhlIHZpZXdlciBvcGVucyB0aGUgZnJhbWUgaW4gYSBuZXcgdGFiLiBTdWNoIGNvbnRlbnQgc2hvdWxkIGJlIGFsc28gc2VydmVkIGZyb20gYSBfc2VwYXJhdGUgb3JpZ2luXyB0byBsaW1pdCBwb3RlbnRpYWwgZGFtYWdlLlxuKiAgIFRoZSBgc2FuZGJveGAgYXR0cmlidXRlIGlzIHVuc3VwcG9ydGVkIGluIEludGVybmV0IEV4cGxvcmVyIDkgYW5kIGVhcmxpZXIuJ319LHtuYW1lOiJzZWFtbGVzcyIsdmFsdWVTZXQ6InYifSx7bmFtZToiYWxsb3dmdWxsc2NyZWVuIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonU2V0IHRvIGB0cnVlYCBpZiB0aGUgYDxpZnJhbWU+YCBjYW4gYWN0aXZhdGUgZnVsbHNjcmVlbiBtb2RlIGJ5IGNhbGxpbmcgdGhlIFtgcmVxdWVzdEZ1bGxzY3JlZW4oKWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FbGVtZW50L3JlcXVlc3RGdWxsc2NyZWVuICJUaGUgRWxlbWVudC5yZXF1ZXN0RnVsbHNjcmVlbigpIG1ldGhvZCBpc3N1ZXMgYW4gYXN5bmNocm9ub3VzIHJlcXVlc3QgdG8gbWFrZSB0aGUgZWxlbWVudCBiZSBkaXNwbGF5ZWQgaW4gZnVsbC1zY3JlZW4gbW9kZS4iKSBtZXRob2QuJ319LHtuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHdpZHRoIG9mIHRoZSBmcmFtZSBpbiBDU1MgcGl4ZWxzLiBEZWZhdWx0IGlzIGAzMDBgLiJ9fSx7bmFtZToiaGVpZ2h0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaGVpZ2h0IG9mIHRoZSBmcmFtZSBpbiBDU1MgcGl4ZWxzLiBEZWZhdWx0IGlzIGAxNTBgLiJ9fSx7bmFtZToiYWxsb3ciLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBbZmVhdHVyZSBwb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvRmVhdHVyZV9Qb2xpY3kpIGZvciB0aGUgYDxpZnJhbWU+YC4ifSx7bmFtZToiYWxsb3dwYXltZW50cmVxdWVzdCIsZGVzY3JpcHRpb246IlNldCB0byBgdHJ1ZWAgaWYgYSBjcm9zcy1vcmlnaW4gYDxpZnJhbWU+YCBzaG91bGQgYmUgYWxsb3dlZCB0byBpbnZva2UgdGhlIFtQYXltZW50IFJlcXVlc3QgQVBJXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUGF5bWVudF9SZXF1ZXN0X0FQSSkuIn0se25hbWU6ImFsbG93cGF5bWVudHJlcXVlc3QiLGRlc2NyaXB0aW9uOidUaGlzIGF0dHJpYnV0ZSBpcyBjb25zaWRlcmVkIGEgbGVnYWN5IGF0dHJpYnV0ZSBhbmQgcmVkZWZpbmVkIGFzIGBhbGxvdz0icGF5bWVudCJgLid9LHtuYW1lOiJjc3AiLGRlc2NyaXB0aW9uOidBIFtDb250ZW50IFNlY3VyaXR5IFBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9DU1ApIGVuZm9yY2VkIGZvciB0aGUgZW1iZWRkZWQgcmVzb3VyY2UuIFNlZSBbYEhUTUxJRnJhbWVFbGVtZW50LmNzcGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSUZyYW1lRWxlbWVudC9jc3AgIlRoZSBjc3AgcHJvcGVydHkgb2YgdGhlIEhUTUxJRnJhbWVFbGVtZW50IGludGVyZmFjZSBzcGVjaWZpZXMgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IHRoYXQgYW4gZW1iZWRkZWQgZG9jdW1lbnQgbXVzdCBhZ3JlZSB0byBlbmZvcmNlIHVwb24gaXRzZWxmLiIpIGZvciBkZXRhaWxzLid9LHtuYW1lOiJpbXBvcnRhbmNlIixkZXNjcmlwdGlvbjoiVGhlIGRvd25sb2FkIHByaW9yaXR5IG9mIHRoZSByZXNvdXJjZSBpbiB0aGUgYDxpZnJhbWU+YCdzIGBzcmNgIGF0dHJpYnV0ZS4gQWxsb3dlZCB2YWx1ZXM6XG5cbmBhdXRvYCAoZGVmYXVsdClcblxuTm8gcHJlZmVyZW5jZS4gVGhlIGJyb3dzZXIgdXNlcyBpdHMgb3duIGhldXJpc3RpY3MgdG8gZGVjaWRlIHRoZSBwcmlvcml0eSBvZiB0aGUgcmVzb3VyY2UuXG5cbmBoaWdoYFxuXG5UaGUgcmVzb3VyY2Ugc2hvdWxkIGJlIGRvd25sb2FkZWQgYmVmb3JlIG90aGVyIGxvd2VyLXByaW9yaXR5IHBhZ2UgcmVzb3VyY2VzLlxuXG5gbG93YFxuXG5UaGUgcmVzb3VyY2Ugc2hvdWxkIGJlIGRvd25sb2FkZWQgYWZ0ZXIgb3RoZXIgaGlnaGVyLXByaW9yaXR5IHBhZ2UgcmVzb3VyY2VzLiJ9LHtuYW1lOiJyZWZlcnJlcnBvbGljeSIsZGVzY3JpcHRpb246J0luZGljYXRlcyB3aGljaCBbcmVmZXJyZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudC9yZWZlcnJlcikgdG8gc2VuZCB3aGVuIGZldGNoaW5nIHRoZSBmcmFtZVwncyByZXNvdXJjZTpcblxuKiAgIGBuby1yZWZlcnJlcmA6IFRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudC5cbiogICBgbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVgIChkZWZhdWx0KTogVGhlIFtgUmVmZXJlcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyICJUaGUgUmVmZXJlciByZXF1ZXN0IGhlYWRlciBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgcHJldmlvdXMgd2ViIHBhZ2UgZnJvbSB3aGljaCBhIGxpbmsgdG8gdGhlIGN1cnJlbnRseSByZXF1ZXN0ZWQgcGFnZSB3YXMgZm9sbG93ZWQuIFRoZSBSZWZlcmVyIGhlYWRlciBhbGxvd3Mgc2VydmVycyB0byBpZGVudGlmeSB3aGVyZSBwZW9wbGUgYXJlIHZpc2l0aW5nIHRoZW0gZnJvbSBhbmQgbWF5IHVzZSB0aGF0IGRhdGEgZm9yIGFuYWx5dGljcywgbG9nZ2luZywgb3Igb3B0aW1pemVkIGNhY2hpbmcsIGZvciBleGFtcGxlLiIpIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50IHRvIFtvcmlnaW5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3Nhcnkvb3JpZ2luICJvcmlnaW46IFdlYiBjb250ZW50XCdzIG9yaWdpbiBpcyBkZWZpbmVkIGJ5IHRoZSBzY2hlbWUgKHByb3RvY29sKSwgaG9zdCAoZG9tYWluKSwgYW5kIHBvcnQgb2YgdGhlIFVSTCB1c2VkIHRvIGFjY2VzcyBpdC4gVHdvIG9iamVjdHMgaGF2ZSB0aGUgc2FtZSBvcmlnaW4gb25seSB3aGVuIHRoZSBzY2hlbWUsIGhvc3QsIGFuZCBwb3J0IGFsbCBtYXRjaC4iKXMgd2l0aG91dCBbVExTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1RMUyAiVExTOiBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgKFRMUyksIHByZXZpb3VzbHkga25vd24gYXMgU2VjdXJlIFNvY2tldHMgTGF5ZXIgKFNTTCksIGlzIGEgcHJvdG9jb2wgdXNlZCBieSBhcHBsaWNhdGlvbnMgdG8gY29tbXVuaWNhdGUgc2VjdXJlbHkgYWNyb3NzIGEgbmV0d29yaywgcHJldmVudGluZyB0YW1wZXJpbmcgd2l0aCBhbmQgZWF2ZXNkcm9wcGluZyBvbiBlbWFpbCwgd2ViIGJyb3dzaW5nLCBtZXNzYWdpbmcsIGFuZCBvdGhlciBwcm90b2NvbHMuIikgKFtIVFRQU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9IVFRQUyAiSFRUUFM6IEhUVFBTIChIVFRQIFNlY3VyZSkgaXMgYW4gZW5jcnlwdGVkIHZlcnNpb24gb2YgdGhlIEhUVFAgcHJvdG9jb2wuIEl0IHVzdWFsbHkgdXNlcyBTU0wgb3IgVExTIHRvIGVuY3J5cHQgYWxsIGNvbW11bmljYXRpb24gYmV0d2VlbiBhIGNsaWVudCBhbmQgYSBzZXJ2ZXIuIFRoaXMgc2VjdXJlIGNvbm5lY3Rpb24gYWxsb3dzIGNsaWVudHMgdG8gc2FmZWx5IGV4Y2hhbmdlIHNlbnNpdGl2ZSBkYXRhIHdpdGggYSBzZXJ2ZXIsIGZvciBleGFtcGxlIGZvciBiYW5raW5nIGFjdGl2aXRpZXMgb3Igb25saW5lIHNob3BwaW5nLiIpKS5cbiogICBgb3JpZ2luYDogVGhlIHNlbnQgcmVmZXJyZXIgd2lsbCBiZSBsaW1pdGVkIHRvIHRoZSBvcmlnaW4gb2YgdGhlIHJlZmVycmluZyBwYWdlOiBpdHMgW3NjaGVtZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9BcmNoaXZlL01vemlsbGEvVVJJU2NoZW1lKSwgW2hvc3RdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvaG9zdCAiaG9zdDogQSBob3N0IGlzIGEgZGV2aWNlIGNvbm5lY3RlZCB0byB0aGUgSW50ZXJuZXQgKG9yIGEgbG9jYWwgbmV0d29yaykuIFNvbWUgaG9zdHMgY2FsbGVkIHNlcnZlcnMgb2ZmZXIgYWRkaXRpb25hbCBzZXJ2aWNlcyBsaWtlIHNlcnZpbmcgd2VicGFnZXMgb3Igc3RvcmluZyBmaWxlcyBhbmQgZW1haWxzLiIpLCBhbmQgW3BvcnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvcG9ydCAicG9ydDogRm9yIGEgY29tcHV0ZXIgY29ubmVjdGVkIHRvIGEgbmV0d29yayB3aXRoIGFuIElQIGFkZHJlc3MsIGEgcG9ydCBpcyBhIGNvbW11bmljYXRpb24gZW5kcG9pbnQuIFBvcnRzIGFyZSBkZXNpZ25hdGVkIGJ5IG51bWJlcnMsIGFuZCBiZWxvdyAxMDI0IGVhY2ggcG9ydCBpcyBhc3NvY2lhdGVkIGJ5IGRlZmF1bHQgd2l0aCBhIHNwZWNpZmljIHByb3RvY29sLiIpLlxuKiAgIGBvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gOiBUaGUgcmVmZXJyZXIgc2VudCB0byBvdGhlciBvcmlnaW5zIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgc2NoZW1lLCB0aGUgaG9zdCwgYW5kIHRoZSBwb3J0LiBOYXZpZ2F0aW9ucyBvbiB0aGUgc2FtZSBvcmlnaW4gd2lsbCBzdGlsbCBpbmNsdWRlIHRoZSBwYXRoLlxuKiAgIGBzYW1lLW9yaWdpbmA6IEEgcmVmZXJyZXIgd2lsbCBiZSBzZW50IGZvciBbc2FtZSBvcmlnaW5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvU2FtZS1vcmlnaW5fcG9saWN5ICJzYW1lIG9yaWdpbjogVGhlIHNhbWUtb3JpZ2luIHBvbGljeSBpcyBhIGNyaXRpY2FsIHNlY3VyaXR5IG1lY2hhbmlzbSB0aGF0IHJlc3RyaWN0cyBob3cgYSBkb2N1bWVudCBvciBzY3JpcHQgbG9hZGVkIGZyb20gb25lIG9yaWdpbiBjYW4gaW50ZXJhY3Qgd2l0aCBhIHJlc291cmNlIGZyb20gYW5vdGhlciBvcmlnaW4uIiksIGJ1dCBjcm9zcy1vcmlnaW4gcmVxdWVzdHMgd2lsbCBjb250YWluIG5vIHJlZmVycmVyIGluZm9ybWF0aW9uLlxuKiAgIGBzdHJpY3Qtb3JpZ2luYDogT25seSBzZW5kIHRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGFzIHRoZSByZWZlcnJlciB3aGVuIHRoZSBwcm90b2NvbCBzZWN1cml0eSBsZXZlbCBzdGF5cyB0aGUgc2FtZSAoSFRUUFPihpJIVFRQUyksIGJ1dCBkb25cJ3Qgc2VuZCBpdCB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChIVFRQU+KGkkhUVFApLlxuKiAgIGBzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYDogU2VuZCBhIGZ1bGwgVVJMIHdoZW4gcGVyZm9ybWluZyBhIHNhbWUtb3JpZ2luIHJlcXVlc3QsIG9ubHkgc2VuZCB0aGUgb3JpZ2luIHdoZW4gdGhlIHByb3RvY29sIHNlY3VyaXR5IGxldmVsIHN0YXlzIHRoZSBzYW1lIChIVFRQU+KGkkhUVFBTKSwgYW5kIHNlbmQgbm8gaGVhZGVyIHRvIGEgbGVzcyBzZWN1cmUgZGVzdGluYXRpb24gKEhUVFBT4oaSSFRUUCkuXG4qICAgYHVuc2FmZS11cmxgOiBUaGUgcmVmZXJyZXIgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW4gX2FuZF8gdGhlIHBhdGggKGJ1dCBub3QgdGhlIFtmcmFnbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMvaGFzaCksIFtwYXNzd29yZF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMvcGFzc3dvcmQpLCBvciBbdXNlcm5hbWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL3VzZXJuYW1lKSkuICoqVGhpcyB2YWx1ZSBpcyB1bnNhZmUqKiwgYmVjYXVzZSBpdCBsZWFrcyBvcmlnaW5zIGFuZCBwYXRocyBmcm9tIFRMUy1wcm90ZWN0ZWQgcmVzb3VyY2VzIHRvIGluc2VjdXJlIG9yaWdpbnMuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pZnJhbWUifV19LHtuYW1lOiJlbWJlZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGVtYmVkIGVsZW1lbnQgcHJvdmlkZXMgYW4gaW50ZWdyYXRpb24gcG9pbnQgZm9yIGFuIGV4dGVybmFsICh0eXBpY2FsbHkgbm9uLUhUTUwpIGFwcGxpY2F0aW9uIG9yIGludGVyYWN0aXZlIGNvbnRlbnQuIn0sYXR0cmlidXRlczpbe25hbWU6InNyYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIFVSTMKgb2YgdGhlIHJlc291cmNlIGJlaW5nIGVtYmVkZGVkLiJ9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIE1JTUXCoHR5cGUgdG8gdXNlIHRvIHNlbGVjdCB0aGUgcGx1Zy1pbiB0byBpbnN0YW50aWF0ZS4ifX0se25hbWU6IndpZHRoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGlzcGxheWVkIHdpZHRoIG9mIHRoZSByZXNvdXJjZSwgaW4gW0NTUyBwaXhlbHNdKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLyNweCkuIFRoaXMgbXVzdCBiZSBhbiBhYnNvbHV0ZSB2YWx1ZTsgcGVyY2VudGFnZXMgYXJlIF9ub3RfIGFsbG93ZWQuIn19LHtuYW1lOiJoZWlnaHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkaXNwbGF5ZWQgaGVpZ2h0IG9mIHRoZSByZXNvdXJjZSwgaW4gW0NTUyBwaXhlbHNdKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLyNweCkuIFRoaXMgbXVzdCBiZSBhbiBhYnNvbHV0ZSB2YWx1ZTsgcGVyY2VudGFnZXMgYXJlIF9ub3RfIGFsbG93ZWQuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZW1iZWQifV19LHtuYW1lOiJvYmplY3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBvYmplY3QgZWxlbWVudCBjYW4gcmVwcmVzZW50IGFuIGV4dGVybmFsIHJlc291cmNlLCB3aGljaCwgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHRoZSByZXNvdXJjZSwgd2lsbCBlaXRoZXIgYmUgdHJlYXRlZCBhcyBhbiBpbWFnZSwgYXMgYSBuZXN0ZWQgYnJvd3NpbmcgY29udGV4dCwgb3IgYXMgYW4gZXh0ZXJuYWwgcmVzb3VyY2UgdG8gYmUgcHJvY2Vzc2VkIGJ5IGEgcGx1Z2luLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkYXRhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYWRkcmVzcyBvZiB0aGUgcmVzb3VyY2UgYXMgYSB2YWxpZCBVUkwuIEF0IGxlYXN0IG9uZSBvZiAqKmRhdGEqKiBhbmQgKip0eXBlKiogbXVzdCBiZSBkZWZpbmVkLiJ9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIFtjb250ZW50IHR5cGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQ29udGVudF90eXBlKSBvZiB0aGUgcmVzb3VyY2Ugc3BlY2lmaWVkIGJ5ICoqZGF0YSoqLiBBdCBsZWFzdCBvbmUgb2YgKipkYXRhKiogYW5kICoqdHlwZSoqIG11c3QgYmUgZGVmaW5lZC4ifX0se25hbWU6InR5cGVtdXN0bWF0Y2giLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyBpZiB0aGUgKip0eXBlKiogYXR0cmlidXRlIGFuZCB0aGUgYWN0dWFsIFtjb250ZW50IHR5cGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQ29udGVudF90eXBlKSBvZiB0aGUgcmVzb3VyY2UgbXVzdCBtYXRjaCB0byBiZSB1c2VkLiJ9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5hbWUgb2YgdmFsaWQgYnJvd3NpbmcgY29udGV4dCAoSFRNTDUpLCBvciB0aGUgbmFtZSBvZiB0aGUgY29udHJvbCAoSFRNTCA0KS4ifX0se25hbWU6InVzZW1hcCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBoYXNoLW5hbWUgcmVmZXJlbmNlIHRvIGEgW2A8bWFwPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tYXAgXCJUaGUgSFRNTCA8bWFwPiBlbGVtZW50IGlzIHVzZWQgd2l0aCA8YXJlYT4gZWxlbWVudHMgdG8gZGVmaW5lIGFuIGltYWdlIG1hcCAoYSBjbGlja2FibGUgbGluayBhcmVhKS5cIikgZWxlbWVudDsgdGhhdCBpcyBhICcjJyBmb2xsb3dlZCBieSB0aGUgdmFsdWUgb2YgYSBbYG5hbWVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWFwI2F0dHItbmFtZSkgb2YgYSBtYXAgZWxlbWVudC4ifX0se25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBmb3JtIGVsZW1lbnQsIGlmIGFueSwgdGhhdCB0aGUgb2JqZWN0IGVsZW1lbnQgaXMgYXNzb2NpYXRlZCB3aXRoIChpdHMgX2Zvcm0gb3duZXJfKS4gVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBhbiBJRCBvZiBhIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuJ319LHtuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHdpZHRoIG9mIHRoZSBkaXNwbGF5IHJlc291cmNlLCBpbiBbQ1NTIHBpeGVsc10oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy12YWx1ZXMvI3B4KS4gLS0gKEFic29sdXRlIHZhbHVlcyBvbmx5LiBbTk8gcGVyY2VudGFnZXNdKGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2VtYmVkZGVkLWNvbnRlbnQuaHRtbCNkaW1lbnNpb24tYXR0cmlidXRlcykpIn19LHtuYW1lOiJoZWlnaHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoZWlnaHQgb2YgdGhlIGRpc3BsYXllZCByZXNvdXJjZSwgaW4gW0NTUyBwaXhlbHNdKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLyNweCkuIC0tIChBYnNvbHV0ZSB2YWx1ZXMgb25seS4gW05PIHBlcmNlbnRhZ2VzXShodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9lbWJlZGRlZC1jb250ZW50Lmh0bWwjZGltZW5zaW9uLWF0dHJpYnV0ZXMpKSJ9fSx7bmFtZToiYXJjaGl2ZSIsZGVzY3JpcHRpb246IkEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgVVJJcyBmb3IgYXJjaGl2ZXMgb2YgcmVzb3VyY2VzIGZvciB0aGUgb2JqZWN0LiJ9LHtuYW1lOiJib3JkZXIiLGRlc2NyaXB0aW9uOiJUaGUgd2lkdGggb2YgYSBib3JkZXIgYXJvdW5kIHRoZSBjb250cm9sLCBpbiBwaXhlbHMuIn0se25hbWU6ImNsYXNzaWQiLGRlc2NyaXB0aW9uOiJUaGUgVVJJIG9mIHRoZSBvYmplY3QncyBpbXBsZW1lbnRhdGlvbi4gSXQgY2FuIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCwgb3IgaW4gcGxhY2Ugb2YsIHRoZSAqKmRhdGEqKiBhdHRyaWJ1dGUuIn0se25hbWU6ImNvZGViYXNlIixkZXNjcmlwdGlvbjoiVGhlIGJhc2UgcGF0aCB1c2VkIHRvIHJlc29sdmUgcmVsYXRpdmUgVVJJcyBzcGVjaWZpZWQgYnkgKipjbGFzc2lkKiosICoqZGF0YSoqLCBvciAqKmFyY2hpdmUqKi4gSWYgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgaXMgdGhlIGJhc2UgVVJJIG9mIHRoZSBjdXJyZW50IGRvY3VtZW50LiJ9LHtuYW1lOiJjb2RldHlwZSIsZGVzY3JpcHRpb246IlRoZSBjb250ZW50IHR5cGUgb2YgdGhlIGRhdGEgc3BlY2lmaWVkIGJ5ICoqY2xhc3NpZCoqLiJ9LHtuYW1lOiJkZWNsYXJlIixkZXNjcmlwdGlvbjoiVGhlIHByZXNlbmNlIG9mIHRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgbWFrZXMgdGhpcyBlbGVtZW50IGEgZGVjbGFyYXRpb24gb25seS4gVGhlIG9iamVjdCBtdXN0IGJlIGluc3RhbnRpYXRlZCBieSBhIHN1YnNlcXVlbnQgYDxvYmplY3Q+YCBlbGVtZW50LiBJbiBIVE1MNSwgcmVwZWF0IHRoZSA8b2JqZWN0PiBlbGVtZW50IGNvbXBsZXRlbHkgZWFjaCB0aGF0IHRoYXQgdGhlIHJlc291cmNlIGlzIHJldXNlZC4ifSx7bmFtZToic3RhbmRieSIsZGVzY3JpcHRpb246IkEgbWVzc2FnZSB0aGF0IHRoZSBicm93c2VyIGNhbiBzaG93IHdoaWxlIGxvYWRpbmcgdGhlIG9iamVjdCdzIGltcGxlbWVudGF0aW9uIGFuZCBkYXRhLiJ9LHtuYW1lOiJ0YWJpbmRleCIsZGVzY3JpcHRpb246IlRoZSBwb3NpdGlvbiBvZiB0aGUgZWxlbWVudCBpbiB0aGUgdGFiYmluZyBuYXZpZ2F0aW9uIG9yZGVyIGZvciB0aGUgY3VycmVudCBkb2N1bWVudC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29iamVjdCJ9XX0se25hbWU6InBhcmFtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcGFyYW0gZWxlbWVudCBkZWZpbmVzIHBhcmFtZXRlcnMgZm9yIHBsdWdpbnMgaW52b2tlZCBieSBvYmplY3QgZWxlbWVudHMuIEl0IGRvZXMgbm90IHJlcHJlc2VudCBhbnl0aGluZyBvbiBpdHMgb3duLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJOYW1lIG9mIHRoZSBwYXJhbWV0ZXIuIn19LHtuYW1lOiJ2YWx1ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiU3BlY2lmaWVzIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLiJ9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246J09ubHkgdXNlZCBpZiB0aGUgYHZhbHVldHlwZWAgaXMgc2V0IHRvICJyZWYiLiBTcGVjaWZpZXMgdGhlIE1JTUUgdHlwZSBvZiB2YWx1ZXMgZm91bmQgYXQgdGhlIFVSSSBzcGVjaWZpZWQgYnkgdmFsdWUuJ30se25hbWU6InZhbHVldHlwZSIsZGVzY3JpcHRpb246J1NwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgYHZhbHVlYCBhdHRyaWJ1dGUuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBkYXRhOiBEZWZhdWx0IHZhbHVlLiBUaGUgdmFsdWUgaXMgcGFzc2VkIHRvIHRoZSBvYmplY3RcJ3MgaW1wbGVtZW50YXRpb24gYXMgYSBzdHJpbmcuXG4qICAgcmVmOiBUaGUgdmFsdWUgaXMgYSBVUkkgdG8gYSByZXNvdXJjZSB3aGVyZSBydW4tdGltZSB2YWx1ZXMgYXJlIHN0b3JlZC5cbiogICBvYmplY3Q6IEFuIElEIG9mIGFub3RoZXIgW2A8b2JqZWN0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vYmplY3QgIlRoZSBIVE1MIDxvYmplY3Q+IGVsZW1lbnQgcmVwcmVzZW50cyBhbiBleHRlcm5hbCByZXNvdXJjZSwgd2hpY2ggY2FuIGJlIHRyZWF0ZWQgYXMgYW4gaW1hZ2UsIGEgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQsIG9yIGEgcmVzb3VyY2UgdG8gYmUgaGFuZGxlZCBieSBhIHBsdWdpbi4iKSBpbiB0aGUgc2FtZSBkb2N1bWVudC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3BhcmFtIn1dfSx7bmFtZToidmlkZW8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgdmlkZW8gZWxlbWVudCBpcyB1c2VkIGZvciBwbGF5aW5nIHZpZGVvcyBvciBtb3ZpZXMsIGFuZCBhdWRpbyBmaWxlcyB3aXRoIGNhcHRpb25zLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMifSx7bmFtZToiY3Jvc3NvcmlnaW4iLHZhbHVlU2V0OiJ4byJ9LHtuYW1lOiJwb3N0ZXIifSx7bmFtZToicHJlbG9hZCIsdmFsdWVTZXQ6InBsIn0se25hbWU6ImF1dG9wbGF5Iix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBCb29sZWFuIGF0dHJpYnV0ZTsgaWYgc3BlY2lmaWVkLCB0aGUgdmlkZW8gYXV0b21hdGljYWxseSBiZWdpbnMgdG8gcGxheSBiYWNrIGFzIHNvb24gYXMgaXQgY2FuIGRvIHNvIHdpdGhvdXQgc3RvcHBpbmcgdG8gZmluaXNoIGxvYWRpbmcgdGhlIGRhdGEuIn19LHtuYW1lOiJtZWRpYWdyb3VwIn0se25hbWU6Imxvb3AiLHZhbHVlU2V0OiJ2In0se25hbWU6Im11dGVkIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJjb250cm9scyIsdmFsdWVTZXQ6InYifSx7bmFtZToid2lkdGgifSx7bmFtZToiaGVpZ2h0In1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC92aWRlbyJ9XX0se25hbWU6ImF1ZGlvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBhdWRpbyBlbGVtZW50IHJlcHJlc2VudHMgYSBzb3VuZCBvciBhdWRpbyBzdHJlYW0uIn0sYXR0cmlidXRlczpbe25hbWU6InNyYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIFVSTCBvZiB0aGUgYXVkaW8gdG8gZW1iZWQuIFRoaXMgaXMgc3ViamVjdCB0byBbSFRUUCBhY2Nlc3MgY29udHJvbHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvSFRUUF9hY2Nlc3NfY29udHJvbCkuIFRoaXMgaXMgb3B0aW9uYWw7IHlvdSBtYXkgaW5zdGVhZCB1c2UgdGhlIFtgPHNvdXJjZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc291cmNlICJUaGUgSFRNTCA8c291cmNlPiBlbGVtZW50IHNwZWNpZmllcyBtdWx0aXBsZSBtZWRpYSByZXNvdXJjZXMgZm9yIHRoZSA8cGljdHVyZT4sIHRoZSA8YXVkaW8+IGVsZW1lbnQsIG9yIHRoZSA8dmlkZW8+IGVsZW1lbnQuIikgZWxlbWVudCB3aXRoaW4gdGhlIGF1ZGlvIGJsb2NrIHRvIHNwZWNpZnkgdGhlIGF1ZGlvIHRvIGVtYmVkLid9fSx7bmFtZToiY3Jvc3NvcmlnaW4iLHZhbHVlU2V0OiJ4byIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgd2hldGhlciB0byB1c2UgQ09SUyB0byBmZXRjaCB0aGUgcmVsYXRlZCBpbWFnZS4gW0NPUlMtZW5hYmxlZCByZXNvdXJjZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ09SU19FbmFibGVkX0ltYWdlKSBjYW4gYmUgcmV1c2VkIGluIHRoZSBbYDxjYW52YXM+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhbnZhcyAiVXNlIHRoZSBIVE1MIDxjYW52YXM+IGVsZW1lbnQgd2l0aCBlaXRoZXIgdGhlIGNhbnZhcyBzY3JpcHRpbmcgQVBJIG9yIHRoZSBXZWJHTCBBUEkgdG8gZHJhdyBncmFwaGljcyBhbmQgYW5pbWF0aW9ucy4iKSBlbGVtZW50IHdpdGhvdXQgYmVpbmcgX3RhaW50ZWRfLiBUaGUgYWxsb3dlZCB2YWx1ZXMgYXJlOlxuXG5hbm9ueW1vdXNcblxuU2VuZHMgYSBjcm9zcy1vcmlnaW4gcmVxdWVzdCB3aXRob3V0IGEgY3JlZGVudGlhbC4gSW4gb3RoZXIgd29yZHMsIGl0IHNlbmRzIHRoZSBgT3JpZ2luOmAgSFRUUCBoZWFkZXIgd2l0aG91dCBhIGNvb2tpZSwgWC41MDkgY2VydGlmaWNhdGUsIG9yIHBlcmZvcm1pbmcgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbi4gSWYgdGhlIHNlcnZlciBkb2VzIG5vdCBnaXZlIGNyZWRlbnRpYWxzIHRvIHRoZSBvcmlnaW4gc2l0ZSAoYnkgbm90IHNldHRpbmcgdGhlIGBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW46YCBIVFRQIGhlYWRlciksIHRoZSBpbWFnZSB3aWxsIGJlIF90YWludGVkXywgYW5kIGl0cyB1c2FnZSByZXN0cmljdGVkLlxuXG51c2UtY3JlZGVudGlhbHNcblxuU2VuZHMgYSBjcm9zcy1vcmlnaW4gcmVxdWVzdCB3aXRoIGEgY3JlZGVudGlhbC4gSW4gb3RoZXIgd29yZHMsIGl0IHNlbmRzIHRoZSBgT3JpZ2luOmAgSFRUUCBoZWFkZXIgd2l0aCBhIGNvb2tpZSwgYSBjZXJ0aWZpY2F0ZSwgb3IgcGVyZm9ybWluZyBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uLiBJZiB0aGUgc2VydmVyIGRvZXMgbm90IGdpdmUgY3JlZGVudGlhbHMgdG8gdGhlIG9yaWdpbiBzaXRlICh0aHJvdWdoIGBBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsczpgIEhUVFAgaGVhZGVyKSwgdGhlIGltYWdlIHdpbGwgYmUgX3RhaW50ZWRfIGFuZCBpdHMgdXNhZ2UgcmVzdHJpY3RlZC5cblxuV2hlbiBub3QgcHJlc2VudCwgdGhlIHJlc291cmNlIGlzIGZldGNoZWQgd2l0aG91dCBhIENPUlMgcmVxdWVzdCAoaS5lLiB3aXRob3V0IHNlbmRpbmcgdGhlIGBPcmlnaW46YCBIVFRQIGhlYWRlciksIHByZXZlbnRpbmcgaXRzIG5vbi10YWludGVkIHVzZWQgaW4gW2A8Y2FudmFzPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYW52YXMgIlVzZSB0aGUgSFRNTCA8Y2FudmFzPiBlbGVtZW50IHdpdGggZWl0aGVyIHRoZSBjYW52YXMgc2NyaXB0aW5nIEFQSSBvciB0aGUgV2ViR0wgQVBJIHRvIGRyYXcgZ3JhcGhpY3MgYW5kIGFuaW1hdGlvbnMuIikgZWxlbWVudHMuIElmIGludmFsaWQsIGl0IGlzIGhhbmRsZWQgYXMgaWYgdGhlIGVudW1lcmF0ZWQga2V5d29yZCAqKmFub255bW91cyoqIHdhcyB1c2VkLiBTZWUgW0NPUlMgc2V0dGluZ3MgYXR0cmlidXRlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9IVE1ML0NPUlNfc2V0dGluZ3NfYXR0cmlidXRlcykgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uJ319LHtuYW1lOiJwcmVsb2FkIix2YWx1ZVNldDoicGwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBhIGhpbnQgdG8gdGhlIGJyb3dzZXIgYWJvdXQgd2hhdCB0aGUgYXV0aG9yIHRoaW5rcyB3aWxsIGxlYWQgdG8gdGhlIGJlc3QgdXNlciBleHBlcmllbmNlLiBJdCBtYXkgaGF2ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgbm9uZWA6IEluZGljYXRlcyB0aGF0IHRoZSBhdWRpbyBzaG91bGQgbm90IGJlIHByZWxvYWRlZC5cbiogICBgbWV0YWRhdGFgOiBJbmRpY2F0ZXMgdGhhdCBvbmx5IGF1ZGlvIG1ldGFkYXRhIChlLmcuIGxlbmd0aCkgaXMgZmV0Y2hlZC5cbiogICBgYXV0b2A6IEluZGljYXRlcyB0aGF0IHRoZSB3aG9sZSBhdWRpbyBmaWxlIGNhbiBiZSBkb3dubG9hZGVkLCBldmVuIGlmIHRoZSB1c2VyIGlzIG5vdCBleHBlY3RlZCB0byB1c2UgaXQuXG4qICAgX2VtcHR5IHN0cmluZ186IEEgc3lub255bSBvZiB0aGUgYGF1dG9gIHZhbHVlLlxuXG5JZiBub3Qgc2V0LCBgcHJlbG9hZGAncyBkZWZhdWx0IHZhbHVlIGlzIGJyb3dzZXItZGVmaW5lZCAoaS5lLiBlYWNoIGJyb3dzZXIgbWF5IGhhdmUgaXRzIG93biBkZWZhdWx0IHZhbHVlKS4gVGhlIHNwZWMgYWR2aXNlcyBpdCB0byBiZSBzZXQgdG8gYG1ldGFkYXRhYC5cblxuKipVc2FnZSBub3RlczoqKlxuXG4qICAgVGhlIGBhdXRvcGxheWAgYXR0cmlidXRlIGhhcyBwcmVjZWRlbmNlIG92ZXLCoGBwcmVsb2FkYC4gSWYgYGF1dG9wbGF5YCBpcyBzcGVjaWZpZWQsIHRoZSBicm93c2VyIHdvdWxkIG9idmlvdXNseSBuZWVkIHRvIHN0YXJ0IGRvd25sb2FkaW5nIHRoZSBhdWRpbyBmb3IgcGxheWJhY2suXG4qICAgVGhlIGJyb3dzZXIgaXMgbm90IGZvcmNlZCBieSB0aGUgc3BlY2lmaWNhdGlvbiB0byBmb2xsb3cgdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlOyBpdCBpcyBhIG1lcmUgaGludC4ifX0se25hbWU6ImF1dG9wbGF5Iix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBCb29sZWFuIGF0dHJpYnV0ZTrCoGlmIHNwZWNpZmllZCwgdGhlIGF1ZGlvIHdpbGwgYXV0b21hdGljYWxseSBiZWdpbiBwbGF5YmFjayBhcyBzb29uIGFzIGl0IGNhbiBkbyBzbywgd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgZW50aXJlIGF1ZGlvIGZpbGUgdG8gZmluaXNoIGRvd25sb2FkaW5nLlxuXG4qKk5vdGUqKjogU2l0ZXMgdGhhdCBhdXRvbWF0aWNhbGx5IHBsYXkgYXVkaW8gKG9yIHZpZGVvcyB3aXRoIGFuIGF1ZGlvIHRyYWNrKSBjYW4gYmUgYW4gdW5wbGVhc2FudCBleHBlcmllbmNlIGZvciB1c2Vycywgc28gc2hvdWxkIGJlIGF2b2lkZWQgd2hlbiBwb3NzaWJsZS4gSWYgeW91IG11c3Qgb2ZmZXIgYXV0b3BsYXkgZnVuY3Rpb25hbGl0eSwgeW91IHNob3VsZCBtYWtlIGl0IG9wdC1pbiAocmVxdWlyaW5nIGEgdXNlciB0byBzcGVjaWZpY2FsbHkgZW5hYmxlIGl0KS4gSG93ZXZlciwgdGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4gY3JlYXRpbmcgbWVkaWEgZWxlbWVudHMgd2hvc2Ugc291cmNlIHdpbGwgYmUgc2V0IGF0IGEgbGF0ZXIgdGltZSwgdW5kZXIgdXNlciBjb250cm9sLiJ9fSx7bmFtZToibWVkaWFncm91cCJ9LHtuYW1lOiJsb29wIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBCb29sZWFuIGF0dHJpYnV0ZTrCoGlmIHNwZWNpZmllZCwgdGhlIGF1ZGlvIHBsYXllciB3aWxswqBhdXRvbWF0aWNhbGx5IHNlZWsgYmFjayB0byB0aGUgc3RhcnTCoHVwb24gcmVhY2hpbmcgdGhlIGVuZCBvZiB0aGUgYXVkaW8uIn19LHtuYW1lOiJtdXRlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgYXVkaW8gd2lsbCBiZSBpbml0aWFsbHkgc2lsZW5jZWQuIEl0cyBkZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuIn19LHtuYW1lOiJjb250cm9scyIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoaXMgYXR0cmlidXRlIGlzIHByZXNlbnQsIHRoZSBicm93c2VyIHdpbGwgb2ZmZXIgY29udHJvbHMgdG8gYWxsb3cgdGhlIHVzZXIgdG8gY29udHJvbCBhdWRpbyBwbGF5YmFjaywgaW5jbHVkaW5nIHZvbHVtZSwgc2Vla2luZywgYW5kIHBhdXNlL3Jlc3VtZSBwbGF5YmFjay4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hdWRpbyJ9XX0se25hbWU6InNvdXJjZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNvdXJjZSBlbGVtZW50IGFsbG93cyBhdXRob3JzIHRvIHNwZWNpZnkgbXVsdGlwbGUgYWx0ZXJuYXRpdmUgbWVkaWEgcmVzb3VyY2VzIGZvciBtZWRpYSBlbGVtZW50cy4gSXQgZG9lcyBub3QgcmVwcmVzZW50IGFueXRoaW5nIG9uIGl0cyBvd24uIn0sYXR0cmlidXRlczpbe25hbWU6InNyYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonUmVxdWlyZWQgZm9yIFtgPGF1ZGlvPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hdWRpbyAiVGhlIEhUTUwgPGF1ZGlvPiBlbGVtZW50IGlzIHVzZWQgdG8gZW1iZWQgc291bmQgY29udGVudCBpbiBkb2N1bWVudHMuIEl0IG1heSBjb250YWluIG9uZSBvciBtb3JlIGF1ZGlvIHNvdXJjZXMsIHJlcHJlc2VudGVkIHVzaW5nIHRoZSBzcmMgYXR0cmlidXRlIG9yIHRoZSA8c291cmNlPiBlbGVtZW50OsKgdGhlIGJyb3dzZXIgd2lsbCBjaG9vc2UgdGhlIG1vc3Qgc3VpdGFibGUgb25lLiBJdCBjYW4gYWxzbyBiZSB0aGUgZGVzdGluYXRpb24gZm9yIHN0cmVhbWVkIG1lZGlhLCB1c2luZyBhIE1lZGlhU3RyZWFtLiIpIGFuZCBbYDx2aWRlbz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdmlkZW8gIlRoZSBIVE1MIFZpZGVvIGVsZW1lbnQgKDx2aWRlbz4pIGVtYmVkcyBhIG1lZGlhIHBsYXllciB3aGljaCBzdXBwb3J0cyB2aWRlbyBwbGF5YmFjayBpbnRvIHRoZSBkb2N1bWVudC4iKSwgYWRkcmVzcyBvZiB0aGUgbWVkaWEgcmVzb3VyY2UuIFRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBpcyBpZ25vcmVkIHdoZW4gdGhlIGA8c291cmNlPmAgZWxlbWVudCBpcyBwbGFjZWQgaW5zaWRlIGEgW2A8cGljdHVyZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcGljdHVyZSAiVGhlIEhUTUwgPHBpY3R1cmU+IGVsZW1lbnQgY29udGFpbnMgemVybyBvciBtb3JlIDxzb3VyY2U+IGVsZW1lbnRzIGFuZCBvbmUgPGltZz4gZWxlbWVudCB0byBwcm92aWRlIHZlcnNpb25zIG9mIGFuIGltYWdlIGZvciBkaWZmZXJlbnQgZGlzcGxheS9kZXZpY2Ugc2NlbmFyaW9zLiIpIGVsZW1lbnQuJ319LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgTUlNRS10eXBlIG9mIHRoZSByZXNvdXJjZSwgb3B0aW9uYWxseSB3aXRoIGEgYGNvZGVjc2AgcGFyYW1ldGVyLiBTZWUgW1JGQyA0MjgxXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDI4MSkgZm9yIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBzcGVjaWZ5IGNvZGVjcy4ifX0se25hbWU6InNpemVzIixkZXNjcmlwdGlvbjonSXMgYSBsaXN0IG9mIHNvdXJjZSBzaXplcyB0aGF0IGRlc2NyaWJlcyB0aGUgZmluYWwgcmVuZGVyZWQgd2lkdGggb2YgdGhlIGltYWdlIHJlcHJlc2VudGVkIGJ5IHRoZSBzb3VyY2UuIEVhY2ggc291cmNlIHNpemUgY29uc2lzdHMgb2YgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBtZWRpYSBjb25kaXRpb24tbGVuZ3RoIHBhaXJzLiBUaGlzIGluZm9ybWF0aW9uIGlzIHVzZWQgYnkgdGhlIGJyb3dzZXIgdG8gZGV0ZXJtaW5lLCBiZWZvcmUgbGF5aW5nIHRoZSBwYWdlIG91dCwgd2hpY2ggaW1hZ2UgZGVmaW5lZCBpbiBbYHNyY3NldGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zb3VyY2UjYXR0ci1zcmNzZXQpIHRvIHVzZS4gIFxuVGhlIGBzaXplc2AgYXR0cmlidXRlIGhhcyBhbiBlZmZlY3Qgb25seSB3aGVuIHRoZSBbYDxzb3VyY2U+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NvdXJjZSAiVGhlIEhUTUwgPHNvdXJjZT4gZWxlbWVudCBzcGVjaWZpZXMgbXVsdGlwbGUgbWVkaWEgcmVzb3VyY2VzIGZvciB0aGUgPHBpY3R1cmU+LCB0aGUgPGF1ZGlvPiBlbGVtZW50LCBvciB0aGUgPHZpZGVvPiBlbGVtZW50LiIpIGVsZW1lbnQgaXMgdGhlIGRpcmVjdCBjaGlsZCBvZiBhIFtgPHBpY3R1cmU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3BpY3R1cmUgIlRoZSBIVE1MIDxwaWN0dXJlPiBlbGVtZW50IGNvbnRhaW5zIHplcm8gb3IgbW9yZSA8c291cmNlPiBlbGVtZW50cyBhbmQgb25lIDxpbWc+IGVsZW1lbnQgdG8gcHJvdmlkZSB2ZXJzaW9ucyBvZiBhbiBpbWFnZSBmb3IgZGlmZmVyZW50IGRpc3BsYXkvZGV2aWNlIHNjZW5hcmlvcy4iKSBlbGVtZW50Lid9LHtuYW1lOiJzcmNzZXQiLGRlc2NyaXB0aW9uOiJBIGxpc3Qgb2Ygb25lIG9yIG1vcmUgc3RyaW5ncyBzZXBhcmF0ZWQgYnkgY29tbWFzIGluZGljYXRpbmcgYSBzZXQgb2YgcG9zc2libGUgaW1hZ2VzIHJlcHJlc2VudGVkIGJ5IHRoZSBzb3VyY2UgZm9yIHRoZSBicm93c2VyIHRvIHVzZS4gRWFjaCBzdHJpbmcgaXMgY29tcG9zZWQgb2Y6XG5cbjEuICBvbmUgVVJMIHRvIGFuIGltYWdlLFxuMi4gIGEgd2lkdGggZGVzY3JpcHRvciwgdGhhdCBpcyBhIHBvc2l0aXZlIGludGVnZXIgZGlyZWN0bHkgZm9sbG93ZWQgYnkgYCd3J2AuIFRoZSBkZWZhdWx0IHZhbHVlLCBpZiBtaXNzaW5nLCBpcyB0aGUgaW5maW5pdHkuXG4zLiAgYSBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3IsIHRoYXQgaXMgYSBwb3NpdGl2ZSBmbG9hdGluZyBudW1iZXIgZGlyZWN0bHkgZm9sbG93ZWQgYnkgYCd4J2AuIFRoZSBkZWZhdWx0IHZhbHVlLCBpZiBtaXNzaW5nLCBpcyBgMXhgLlxuXG5FYWNoIHN0cmluZyBpbiB0aGUgbGlzdCBtdXN0IGhhdmUgYXQgbGVhc3QgYSB3aWR0aCBkZXNjcmlwdG9yIG9yIGEgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9yIHRvIGJlIHZhbGlkLiBBbW9uZyB0aGUgbGlzdCwgdGhlcmUgbXVzdCBiZSBvbmx5IG9uZSBzdHJpbmcgY29udGFpbmluZyB0aGUgc2FtZSB0dXBsZSBvZiB3aWR0aCBkZXNjcmlwdG9yIGFuZCBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3IuICBcblRoZSBicm93c2VyIGNob29zZXMgdGhlIG1vc3QgYWRlcXVhdGUgaW1hZ2UgdG8gZGlzcGxheSBhdCBhIGdpdmVuIHBvaW50IG9mIHRpbWUuICBcblRoZSBgc3Jjc2V0YCBhdHRyaWJ1dGUgaGFzIGFuIGVmZmVjdCBvbmx5IHdoZW4gdGhlIFtgPHNvdXJjZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc291cmNlIFwiVGhlIEhUTUwgPHNvdXJjZT4gZWxlbWVudCBzcGVjaWZpZXMgbXVsdGlwbGUgbWVkaWEgcmVzb3VyY2VzIGZvciB0aGUgPHBpY3R1cmU+LCB0aGUgPGF1ZGlvPiBlbGVtZW50LCBvciB0aGUgPHZpZGVvPiBlbGVtZW50LlwiKSBlbGVtZW50IGlzIHRoZSBkaXJlY3QgY2hpbGQgb2YgYSBbYDxwaWN0dXJlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9waWN0dXJlIFwiVGhlIEhUTUwgPHBpY3R1cmU+IGVsZW1lbnQgY29udGFpbnMgemVybyBvciBtb3JlIDxzb3VyY2U+IGVsZW1lbnRzIGFuZCBvbmUgPGltZz4gZWxlbWVudCB0byBwcm92aWRlIHZlcnNpb25zIG9mIGFuIGltYWdlIGZvciBkaWZmZXJlbnQgZGlzcGxheS9kZXZpY2Ugc2NlbmFyaW9zLlwiKSBlbGVtZW50LiJ9LHtuYW1lOiJtZWRpYSIsZGVzY3JpcHRpb246J1tNZWRpYSBxdWVyeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MvTWVkaWFfcXVlcmllcykgb2YgdGhlIHJlc291cmNlXCdzIGludGVuZGVkIG1lZGlhOyB0aGlzIHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gYSBbYDxwaWN0dXJlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9waWN0dXJlICJUaGUgSFRNTCA8cGljdHVyZT4gZWxlbWVudCBjb250YWlucyB6ZXJvIG9yIG1vcmUgPHNvdXJjZT4gZWxlbWVudHMgYW5kIG9uZSA8aW1nPiBlbGVtZW50IHRvIHByb3ZpZGUgdmVyc2lvbnMgb2YgYW4gaW1hZ2UgZm9yIGRpZmZlcmVudCBkaXNwbGF5L2RldmljZSBzY2VuYXJpb3MuIikgZWxlbWVudC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NvdXJjZSJ9XX0se25hbWU6InRyYWNrIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdHJhY2sgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBzcGVjaWZ5IGV4cGxpY2l0IGV4dGVybmFsIHRpbWVkIHRleHQgdHJhY2tzIGZvciBtZWRpYSBlbGVtZW50cy4gSXQgZG9lcyBub3QgcmVwcmVzZW50IGFueXRoaW5nIG9uIGl0cyBvd24uIn0sYXR0cmlidXRlczpbe25hbWU6ImRlZmF1bHQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdHJhY2sgc2hvdWxkIGJlIGVuYWJsZWQgdW5sZXNzIHRoZSB1c2VyJ3MgcHJlZmVyZW5jZXMgaW5kaWNhdGUgdGhhdCBhbm90aGVyIHRyYWNrIGlzIG1vcmUgYXBwcm9wcmlhdGUuIFRoaXMgbWF5IG9ubHkgYmUgdXNlZCBvbiBvbmUgYHRyYWNrYCBlbGVtZW50IHBlciBtZWRpYSBlbGVtZW50LiJ9fSx7bmFtZToia2luZCIsdmFsdWVTZXQ6InRrIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJIb3cgdGhlIHRleHQgdHJhY2sgaXMgbWVhbnQgdG8gYmUgdXNlZC4gSWYgb21pdHRlZCB0aGUgZGVmYXVsdCBraW5kIGlzIGBzdWJ0aXRsZXNgLiBJZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50LCBpdCB3aWxsIHVzZSB0aGUgYHN1YnRpdGxlc2AuIElmIHRoZSBhdHRyaWJ1dGUgY29udGFpbnMgYW4gaW52YWxpZCB2YWx1ZSwgaXQgd2lsbCB1c2UgYG1ldGFkYXRhYC4gKFZlcnNpb25zIG9mIENocm9tZSBlYXJsaWVyIHRoYW4gNTIgdHJlYXRlZCBhbiBpbnZhbGlkIHZhbHVlIGFzIGBzdWJ0aXRsZXNgLinCoFRoZSBmb2xsb3dpbmcga2V5d29yZHMgYXJlIGFsbG93ZWQ6XG5cbiogICBgc3VidGl0bGVzYFxuICAgICogICBTdWJ0aXRsZXMgcHJvdmlkZSB0cmFuc2xhdGlvbiBvZiBjb250ZW50IHRoYXQgY2Fubm90IGJlIHVuZGVyc3Rvb2QgYnkgdGhlIHZpZXdlci4gRm9yIGV4YW1wbGUgZGlhbG9ndWUgb3IgdGV4dCB0aGF0IGlzIG5vdCBFbmdsaXNoIGluIGFuIEVuZ2xpc2ggbGFuZ3VhZ2UgZmlsbS5cbiAgICAqICAgU3VidGl0bGVzIG1heSBjb250YWluIGFkZGl0aW9uYWwgY29udGVudCwgdXN1YWxseSBleHRyYSBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uLiBGb3IgZXhhbXBsZSB0aGUgdGV4dCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBTdGFyIFdhcnMgZmlsbXMsIG9yIHRoZSBkYXRlLCB0aW1lLCBhbmQgbG9jYXRpb24gb2YgYSBzY2VuZS5cbiogICBgY2FwdGlvbnNgXG4gICAgKiAgIENsb3NlZCBjYXB0aW9ucyBwcm92aWRlIGEgdHJhbnNjcmlwdGlvbiBhbmQgcG9zc2libHkgYSB0cmFuc2xhdGlvbiBvZiBhdWRpby5cbiAgICAqICAgSXQgbWF5IGluY2x1ZGUgaW1wb3J0YW50IG5vbi12ZXJiYWwgaW5mb3JtYXRpb24gc3VjaCBhcyBtdXNpYyBjdWVzIG9yIHNvdW5kIGVmZmVjdHMuIEl0IG1heSBpbmRpY2F0ZSB0aGUgY3VlJ3Mgc291cmNlIChlLmcuIG11c2ljLCB0ZXh0LCBjaGFyYWN0ZXIpLlxuICAgICogICBTdWl0YWJsZSBmb3IgdXNlcnMgd2hvIGFyZSBkZWFmIG9yIHdoZW4gdGhlIHNvdW5kIGlzIG11dGVkLlxuKiAgIGBkZXNjcmlwdGlvbnNgXG4gICAgKiAgIFRleHR1YWwgZGVzY3JpcHRpb24gb2YgdGhlIHZpZGVvIGNvbnRlbnQuXG4gICAgKiAgIFN1aXRhYmxlIGZvciB1c2VycyB3aG8gYXJlIGJsaW5kIG9yIHdoZXJlIHRoZSB2aWRlbyBjYW5ub3QgYmUgc2Vlbi5cbiogICBgY2hhcHRlcnNgXG4gICAgKiAgIENoYXB0ZXIgdGl0bGVzIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIHdoZW4gdGhlIHVzZXIgaXMgbmF2aWdhdGluZyB0aGUgbWVkaWEgcmVzb3VyY2UuXG4qICAgYG1ldGFkYXRhYFxuICAgICogICBUcmFja3MgdXNlZCBieSBzY3JpcHRzLiBOb3QgdmlzaWJsZSB0byB0aGUgdXNlci4ifX0se25hbWU6ImxhYmVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHVzZXItcmVhZGFibGUgdGl0bGUgb2YgdGhlIHRleHQgdHJhY2sgd2hpY2ggaXMgdXNlZCBieSB0aGUgYnJvd3NlciB3aGVuIGxpc3RpbmcgYXZhaWxhYmxlIHRleHQgdHJhY2tzLiJ9fSx7bmFtZToic3JjIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBZGRyZXNzIG9mIHRoZSB0cmFjayAoYC52dHRgIGZpbGUpLiBNdXN0IGJlIGEgdmFsaWQgVVJMLiBUaGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHNwZWNpZmllZCBhbmQgaXRzIFVSTCB2YWx1ZSBtdXN0IGhhdmUgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBkb2N1bWVudCDigJQgdW5sZXNzIHRoZSBbYDxhdWRpbz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXVkaW8gIlRoZSBIVE1MIDxhdWRpbz4gZWxlbWVudCBpcyB1c2VkIHRvIGVtYmVkIHNvdW5kIGNvbnRlbnQgaW4gZG9jdW1lbnRzLiBJdCBtYXkgY29udGFpbiBvbmUgb3IgbW9yZSBhdWRpbyBzb3VyY2VzLCByZXByZXNlbnRlZCB1c2luZyB0aGUgc3JjIGF0dHJpYnV0ZSBvciB0aGUgPHNvdXJjZT4gZWxlbWVudDrCoHRoZSBicm93c2VyIHdpbGwgY2hvb3NlIHRoZSBtb3N0IHN1aXRhYmxlIG9uZS4gSXQgY2FuIGFsc28gYmUgdGhlIGRlc3RpbmF0aW9uIGZvciBzdHJlYW1lZCBtZWRpYSwgdXNpbmcgYSBNZWRpYVN0cmVhbS4iKSBvciBbYDx2aWRlbz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdmlkZW8gIlRoZSBIVE1MIFZpZGVvIGVsZW1lbnQgKDx2aWRlbz4pIGVtYmVkcyBhIG1lZGlhIHBsYXllciB3aGljaCBzdXBwb3J0cyB2aWRlbyBwbGF5YmFjayBpbnRvIHRoZSBkb2N1bWVudC4iKSBwYXJlbnQgZWxlbWVudCBvZiB0aGUgYHRyYWNrYCBlbGVtZW50IGhhcyBhIFtgY3Jvc3NvcmlnaW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0NPUlNfc2V0dGluZ3NfYXR0cmlidXRlcykgYXR0cmlidXRlLid9fSx7bmFtZToic3JjbGFuZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiTGFuZ3VhZ2Ugb2YgdGhlIHRyYWNrIHRleHQgZGF0YS4gSXQgbXVzdCBiZSBhIHZhbGlkIFtCQ1AgNDddKGh0dHBzOi8vcjEyYS5naXRodWIuaW8vYXBwLXN1YnRhZ3MvKSBsYW5ndWFnZSB0YWcuIElmIHRoZSBga2luZGAgYXR0cmlidXRlIGlzIHNldCB0b8KgYHN1YnRpdGxlcyxgIHRoZW4gYHNyY2xhbmdgIG11c3QgYmUgZGVmaW5lZC4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90cmFjayJ9XX0se25hbWU6Im1hcCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1hcCBlbGVtZW50LCBpbiBjb25qdW5jdGlvbiB3aXRoIGFuIGltZyBlbGVtZW50IGFuZCBhbnkgYXJlYSBlbGVtZW50IGRlc2NlbmRhbnRzLCBkZWZpbmVzIGFuIGltYWdlIG1hcC4gVGhlIGVsZW1lbnQgcmVwcmVzZW50cyBpdHMgY2hpbGRyZW4uIn0sYXR0cmlidXRlczpbe25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYW1lIGF0dHJpYnV0ZSBnaXZlcyB0aGUgbWFwIGEgbmFtZSBzbyB0aGF0IGl0IGNhbiBiZSByZWZlcmVuY2VkLiBUaGUgYXR0cmlidXRlIG11c3QgYmUgcHJlc2VudCBhbmQgbXVzdCBoYXZlIGEgbm9uLWVtcHR5IHZhbHVlIHdpdGggbm8gc3BhY2UgY2hhcmFjdGVycy4gVGhlIHZhbHVlIG9mIHRoZSBuYW1lIGF0dHJpYnV0ZSBtdXN0IG5vdCBiZSBhIGNvbXBhdGliaWxpdHktY2FzZWxlc3MgbWF0Y2ggZm9yIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZSBhdHRyaWJ1dGUgb2YgYW5vdGhlciBtYXAgZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4gSWYgdGhlIGlkIGF0dHJpYnV0ZSBpcyBhbHNvIHNwZWNpZmllZCwgYm90aCBhdHRyaWJ1dGVzIG11c3QgaGF2ZSB0aGUgc2FtZSB2YWx1ZS4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tYXAifV19LHtuYW1lOiJhcmVhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYXJlYSBlbGVtZW50IHJlcHJlc2VudHMgZWl0aGVyIGEgaHlwZXJsaW5rIHdpdGggc29tZSB0ZXh0IGFuZCBhIGNvcnJlc3BvbmRpbmcgYXJlYSBvbiBhbiBpbWFnZSBtYXAsIG9yIGEgZGVhZCBhcmVhIG9uIGFuIGltYWdlIG1hcC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWx0In0se25hbWU6ImNvb3JkcyJ9LHtuYW1lOiJzaGFwZSIsdmFsdWVTZXQ6InNoIn0se25hbWU6ImhyZWYifSx7bmFtZToidGFyZ2V0In0se25hbWU6ImRvd25sb2FkIn0se25hbWU6InBpbmcifSx7bmFtZToicmVsIn0se25hbWU6ImhyZWZsYW5nIn0se25hbWU6InR5cGUifSx7bmFtZToiYWNjZXNza2V5IixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEga2V5Ym9hcmQgbmF2aWdhdGlvbiBhY2NlbGVyYXRvciBmb3IgdGhlIGVsZW1lbnQuIFByZXNzaW5nIEFMVCBvciBhIHNpbWlsYXIga2V5IGluIGFzc29jaWF0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgc2VsZWN0cyB0aGUgZm9ybSBjb250cm9sIGNvcnJlbGF0ZWQgd2l0aCB0aGF0IGtleSBzZXF1ZW5jZS4gUGFnZSBkZXNpZ25lcnMgYXJlIGZvcmV3YXJuZWQgdG8gYXZvaWQga2V5IHNlcXVlbmNlcyBhbHJlYWR5IGJvdW5kIHRvIGJyb3dzZXJzLiBUaGlzIGF0dHJpYnV0ZSBpcyBnbG9iYWwgc2luY2UgSFRNTDUuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hcmVhIn1dfSx7bmFtZToidGFibGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0YWJsZSBlbGVtZW50IHJlcHJlc2VudHMgZGF0YSB3aXRoIG1vcmUgdGhhbiBvbmUgZGltZW5zaW9uLCBpbiB0aGUgZm9ybSBvZiBhIHRhYmxlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJib3JkZXIifSx7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRlcyBob3cgdGhlIHRhYmxlIG11c3QgYmUgYWxpZ25lZCBpbnNpZGUgdGhlIGNvbnRhaW5pbmcgZG9jdW1lbnQuIEl0IG1heSBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgbGVmdDogdGhlIHRhYmxlIGlzIGRpc3BsYXllZCBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkb2N1bWVudDtcbiogICBjZW50ZXI6IHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgaW4gdGhlIGNlbnRlciBvZiB0aGUgZG9jdW1lbnQ7XG4qICAgcmlnaHQ6IHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRvY3VtZW50LlxuXG4qKlVzYWdlIE5vdGUqKlxuXG4qICAgKipEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlKiosIGFzIGl0IGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFRoZSBbYDx0YWJsZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGFibGUgIlRoZSBIVE1MIDx0YWJsZT4gZWxlbWVudCByZXByZXNlbnRzIHRhYnVsYXIgZGF0YSDigJQgdGhhdCBpcywgaW5mb3JtYXRpb24gcHJlc2VudGVkIGluIGEgdHdvLWRpbWVuc2lvbmFsIHRhYmxlIGNvbXByaXNlZCBvZiByb3dzIGFuZCBjb2x1bW5zIG9mIGNlbGxzIGNvbnRhaW5pbmcgZGF0YS4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpLiBTZXQgW2BtYXJnaW4tbGVmdGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tbGVmdCAiVGhlIG1hcmdpbi1sZWZ0IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiB0aGUgbGVmdCBzaWRlIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgYW5kIFtgbWFyZ2luLXJpZ2h0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbi1yaWdodCAiVGhlIG1hcmdpbi1yaWdodCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gdGhlIHJpZ2h0IHNpZGUgb2YgYW4gZWxlbWVudC4gQSBwb3NpdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgZmFydGhlciBmcm9tIGl0cyBuZWlnaGJvcnMsIHdoaWxlIGEgbmVnYXRpdmUgdmFsdWUgcGxhY2VzIGl0IGNsb3Nlci4iKSB0byBgYXV0b2Agb3IgW2BtYXJnaW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luICJUaGUgbWFyZ2luIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiBhbGwgZm91ciBzaWRlcyBvZiBhbiBlbGVtZW50LiBJdCBpcyBhIHNob3J0aGFuZCBmb3IgbWFyZ2luLXRvcCwgbWFyZ2luLXJpZ2h0LCBtYXJnaW4tYm90dG9tLCBhbmQgbWFyZ2luLWxlZnQuIikgdG8gYDAgYXV0b2AgdG8gYWNoaWV2ZSBhbiBlZmZlY3QgdGhhdCBpcyBzaW1pbGFyIHRvIHRoZSBhbGlnbiBhdHRyaWJ1dGUuXG4qICAgUHJpb3IgdG8gRmlyZWZveCA0LCBGaXJlZm94IGFsc28gc3VwcG9ydGVkIHRoZSBgbWlkZGxlYCwgYGFic21pZGRsZWAsIGFuZCBgYWJzY2VudGVyYCB2YWx1ZXMgYXMgc3lub255bXMgb2YgYGNlbnRlcmAsIGluIHF1aXJrcyBtb2RlIG9ubHkuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90YWJsZSJ9XX0se25hbWU6ImNhcHRpb24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjYXB0aW9uIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgdGl0bGUgb2YgdGhlIHRhYmxlIHRoYXQgaXMgaXRzIHBhcmVudCwgaWYgaXQgaGFzIGEgcGFyZW50IGFuZCB0aGF0IGlzIGEgdGFibGUgZWxlbWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRlcyBob3cgdGhlIGNhcHRpb24gbXVzdCBiZSBhbGlnbmVkIHdpdGggcmVzcGVjdCB0byB0aGUgdGFibGUuIEl0IG1heSBoYXZlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuYGxlZnRgXG5cblRoZSBjYXB0aW9uIGlzIGRpc3BsYXllZCB0byB0aGUgbGVmdCBvZiB0aGUgdGFibGUuXG5cbmB0b3BgXG5cblRoZSBjYXB0aW9uIGlzIGRpc3BsYXllZCBhYm92ZSB0aGUgdGFibGUuXG5cbmByaWdodGBcblxuVGhlIGNhcHRpb24gaXMgZGlzcGxheWVkIHRvIHRoZSByaWdodCBvZiB0aGUgdGFibGUuXG5cbmBib3R0b21gXG5cblRoZSBjYXB0aW9uIGlzIGRpc3BsYXllZCBiZWxvdyB0aGUgdGFibGUuXG5cbioqVXNhZ2Ugbm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlLCBhcyBpdCBoYXMgYmVlbiBkZXByZWNhdGVkLiBUaGUgW2A8Y2FwdGlvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FwdGlvbiAiVGhlIEhUTUwgVGFibGUgQ2FwdGlvbiBlbGVtZW50ICg8Y2FwdGlvbj4pIHNwZWNpZmllcyB0aGUgY2FwdGlvbiAob3IgdGl0bGUpIG9mIGEgdGFibGUsIGFuZCBpZiB1c2VkIGlzIGFsd2F5cyB0aGUgZmlyc3QgY2hpbGQgb2YgYSA8dGFibGU+LiIpIGVsZW1lbnQgc2hvdWxkIGJlIHN0eWxlZCB1c2luZyB0aGUgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpIHByb3BlcnRpZXMgW2BjYXB0aW9uLXNpZGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY2FwdGlvbi1zaWRlICJUaGUgY2FwdGlvbi1zaWRlIENTUyBwcm9wZXJ0eSBwdXRzIHRoZSBjb250ZW50IG9mIGEgdGFibGVcJ3MgPGNhcHRpb24+IG9uIHRoZSBzcGVjaWZpZWQgc2lkZS4gVGhlIHZhbHVlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIHdyaXRpbmctbW9kZSBvZiB0aGUgdGFibGUuIikgYW5kIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKS4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhcHRpb24ifV19LHtuYW1lOiJjb2xncm91cCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGNvbGdyb3VwIGVsZW1lbnQgcmVwcmVzZW50cyBhIGdyb3VwIG9mIG9uZSBvciBtb3JlIGNvbHVtbnMgaW4gdGhlIHRhYmxlIHRoYXQgaXMgaXRzIHBhcmVudCwgaWYgaXQgaGFzIGEgcGFyZW50IGFuZCB0aGF0IGlzIGEgdGFibGUgZWxlbWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3BhbiJ9LHtuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyBob3Jpem9udGFsIGFsaWdubWVudCBvZiBlYWNoIGNvbHVtbiBjZWxsIGNvbnRlbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbFxuKiAgIGBjZW50ZXJgLCBjZW50ZXJpbmcgdGhlIGNvbnRlbnQgaW4gdGhlIGNlbGxcbiogICBgcmlnaHRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGxcbiogICBganVzdGlmeWAsIGluc2VydGluZyBzcGFjZXMgaW50byB0aGUgdGV4dHVhbCBjb250ZW50IHNvIHRoYXQgdGhlIGNvbnRlbnQgaXMganVzdGlmaWVkIGluIHRoZSBjZWxsXG4qICAgYGNoYXJgLCBhbGlnbmluZyB0aGUgdGV4dHVhbCBjb250ZW50IG9uIGEgc3BlY2lhbCBjaGFyYWN0ZXIgd2l0aCBhIG1pbmltYWwgb2Zmc2V0LCBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzIFVuaW1wbGVtZW50ZWQgKHNlZSBbYnVnwqAyMjEyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyICJjaGFyYWN0ZXIgYWxpZ25tZW50IG5vdCBpbXBsZW1lbnRlZCAoYWxpZ249Y2hhciwgY2hhcm9mZj0sIHRleHQtYWxpZ246PHN0cmluZz4pIikpLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCB0aGUgYGxlZnRgIHZhbHVlIGlzIGFzc3VtZWQuIFRoZSBkZXNjZW5kYW50IFtgPGNvbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sICJUaGUgSFRNTCA8Y29sPiBlbGVtZW50IGRlZmluZXMgYSBjb2x1bW4gd2l0aGluIGEgdGFibGUgYW5kIGlzIHVzZWQgZm9yIGRlZmluaW5nIGNvbW1vbiBzZW1hbnRpY3Mgb24gYWxsIGNvbW1vbiBjZWxscy4gSXQgaXMgZ2VuZXJhbGx5IGZvdW5kIHdpdGhpbiBhIDxjb2xncm91cD4gZWxlbWVudC4iKSBlbGVtZW50cyBtYXkgb3ZlcnJpZGUgdGhpcyB2YWx1ZSB1c2luZyB0aGVpciBvd24gW2BhbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wjYXR0ci1hbGlnbikgYXR0cmlidXRlLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSAobm90IHN1cHBvcnRlZCkgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXM6XG4gICAgKiAgIERvIG5vdCB0cnkgdG8gc2V0IHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgb24gYSBzZWxlY3RvciBnaXZpbmcgYSBbYDxjb2xncm91cD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sZ3JvdXAgIlRoZSBIVE1MIDxjb2xncm91cD4gZWxlbWVudCBkZWZpbmVzIGEgZ3JvdXAgb2YgY29sdW1ucyB3aXRoaW4gYSB0YWJsZS4iKSBlbGVtZW50LiBCZWNhdXNlIFtgPHRkPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCAiVGhlIEhUTUwgPHRkPiBlbGVtZW50IGRlZmluZXMgYSBjZWxsIG9mIGEgdGFibGUgdGhhdCBjb250YWlucyBkYXRhLiBJdCBwYXJ0aWNpcGF0ZXMgaW4gdGhlIHRhYmxlIG1vZGVsLiIpIGVsZW1lbnRzIGFyZSBub3QgZGVzY2VuZGFudCBvZiB0aGUgW2A8Y29sZ3JvdXA+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbGdyb3VwICJUaGUgSFRNTCA8Y29sZ3JvdXA+IGVsZW1lbnQgZGVmaW5lcyBhIGdyb3VwIG9mIGNvbHVtbnMgd2l0aGluIGEgdGFibGUuIikgZWxlbWVudCwgdGhleSB3b25cJ3QgaW5oZXJpdCBpdC5cbiAgICAqICAgSWYgdGhlIHRhYmxlIGRvZXNuXCd0IHVzZSBhIFtgY29sc3BhbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCNhdHRyLWNvbHNwYW4pIGF0dHJpYnV0ZSwgdXNlIG9uZSBgdGQ6bnRoLWNoaWxkKGFuK2IpYCBDU1Mgc2VsZWN0b3IgcGVyIGNvbHVtbiwgd2hlcmUgYSBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIHRoZSBjb2x1bW5zIGluIHRoZSB0YWJsZSBhbmQgYiBpcyB0aGUgb3JkaW5hbCBwb3NpdGlvbiBvZiB0aGlzIGNvbHVtbiBpbiB0aGUgdGFibGUuIE9ubHkgYWZ0ZXIgdGhpcyBzZWxlY3RvciB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IGNhbiBiZSB1c2VkLlxuICAgICogICBJZiB0aGUgdGFibGUgZG9lcyB1c2UgYSBbYGNvbHNwYW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jb2xzcGFuKSBhdHRyaWJ1dGUsIHRoZSBlZmZlY3QgY2FuIGJlIGFjaGlldmVkIGJ5IGNvbWJpbmluZyBhZGVxdWF0ZSBDU1MgYXR0cmlidXRlIHNlbGVjdG9ycyBsaWtlIGBbY29sc3Bhbj1uXWAsIHRob3VnaCB0aGlzIGlzIG5vdCB0cml2aWFsLlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGluIENTUzMsIHlvdSBjYW4gdXNlIHRoZSB2YWx1ZSBvZiB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbGdyb3VwI2F0dHItY2hhcikgYXMgdGhlIHZhbHVlIG9mIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgVW5pbXBsZW1lbnRlZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbGdyb3VwIn1dfSx7bmFtZToiY29sIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiBhIGNvbCBlbGVtZW50IGhhcyBhIHBhcmVudCBhbmQgdGhhdCBpcyBhIGNvbGdyb3VwIGVsZW1lbnQgdGhhdCBpdHNlbGYgaGFzIGEgcGFyZW50IHRoYXQgaXMgYSB0YWJsZSBlbGVtZW50LCB0aGVuIHRoZSBjb2wgZWxlbWVudCByZXByZXNlbnRzIG9uZSBvciBtb3JlIGNvbHVtbnMgaW4gdGhlIGNvbHVtbiBncm91cCByZXByZXNlbnRlZCBieSB0aGF0IGNvbGdyb3VwLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcGFuIn0se25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IGhvcml6b250YWwgYWxpZ25tZW50IG9mIGVhY2ggY29sdW1uIGNlbGwgY29udGVudCB3aWxsIGJlIGhhbmRsZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbGVmdGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsXG4qICAgYGNlbnRlcmAsIGNlbnRlcmluZyB0aGUgY29udGVudCBpbiB0aGUgY2VsbFxuKiAgIGByaWdodGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbFxuKiAgIGBqdXN0aWZ5YCwgaW5zZXJ0aW5nIHNwYWNlcyBpbnRvIHRoZSB0ZXh0dWFsIGNvbnRlbnQgc28gdGhhdCB0aGUgY29udGVudCBpcyBqdXN0aWZpZWQgaW4gdGhlIGNlbGxcbiogICBgY2hhcmAsIGFsaWduaW5nIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb24gYSBzcGVjaWFsIGNoYXJhY3RlciB3aXRoIGEgbWluaW1hbCBvZmZzZXQsIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCNhdHRyLWNoYXJvZmYpIGF0dHJpYnV0ZXMgVW5pbXBsZW1lbnRlZCAoc2VlIFtidWfCoDIyMTJdKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTIgImNoYXJhY3RlciBhbGlnbm1lbnQgbm90IGltcGxlbWVudGVkIChhbGlnbj1jaGFyLCBjaGFyb2ZmPSwgdGV4dC1hbGlnbjo8c3RyaW5nPikiKSkuXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQsIGl0cyB2YWx1ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgW2BhbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCNhdHRyLWFsaWduKSBvZiB0aGUgW2A8Y29sZ3JvdXA+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbGdyb3VwICJUaGUgSFRNTCA8Y29sZ3JvdXA+IGVsZW1lbnQgZGVmaW5lcyBhIGdyb3VwIG9mIGNvbHVtbnMgd2l0aGluIGEgdGFibGUuIikgZWxlbWVudCB0aGlzIGA8Y29sPmAgZWxlbWVudCBiZWxvbmdzIHRvby4gSWYgdGhlcmUgYXJlIG5vbmUsIHRoZSBgbGVmdGAgdmFsdWUgaXMgYXNzdW1lZC5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgKG5vdCBzdXBwb3J0ZWQpIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzOlxuICAgICogICBEbyBub3QgdHJ5IHRvIHNldCB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IG9uIGEgc2VsZWN0b3IgZ2l2aW5nIGEgW2A8Y29sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wgIlRoZSBIVE1MIDxjb2w+IGVsZW1lbnQgZGVmaW5lcyBhIGNvbHVtbiB3aXRoaW4gYSB0YWJsZSBhbmQgaXMgdXNlZCBmb3IgZGVmaW5pbmcgY29tbW9uIHNlbWFudGljcyBvbiBhbGwgY29tbW9uIGNlbGxzLiBJdCBpcyBnZW5lcmFsbHkgZm91bmQgd2l0aGluIGEgPGNvbGdyb3VwPiBlbGVtZW50LiIpIGVsZW1lbnQuIEJlY2F1c2UgW2A8dGQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkICJUaGUgSFRNTCA8dGQ+IGVsZW1lbnQgZGVmaW5lcyBhIGNlbGwgb2YgYSB0YWJsZSB0aGF0IGNvbnRhaW5zIGRhdGEuIEl0IHBhcnRpY2lwYXRlcyBpbiB0aGUgdGFibGUgbW9kZWwuIikgZWxlbWVudHMgYXJlIG5vdCBkZXNjZW5kYW50IG9mIHRoZSBbYDxjb2w+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCAiVGhlIEhUTUwgPGNvbD4gZWxlbWVudCBkZWZpbmVzIGEgY29sdW1uIHdpdGhpbiBhIHRhYmxlIGFuZCBpcyB1c2VkIGZvciBkZWZpbmluZyBjb21tb24gc2VtYW50aWNzIG9uIGFsbCBjb21tb24gY2VsbHMuIEl0IGlzIGdlbmVyYWxseSBmb3VuZCB3aXRoaW4gYSA8Y29sZ3JvdXA+IGVsZW1lbnQuIikgZWxlbWVudCwgdGhleSB3b25cJ3QgaW5oZXJpdCBpdC5cbiAgICAqICAgSWYgdGhlIHRhYmxlIGRvZXNuXCd0IHVzZSBhIFtgY29sc3BhbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCNhdHRyLWNvbHNwYW4pIGF0dHJpYnV0ZSwgdXNlIHRoZSBgdGQ6bnRoLWNoaWxkKGFuK2IpYCBDU1Mgc2VsZWN0b3IuIFNldCBgYWAgdG8gemVybyBhbmQgYGJgIHRvIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uIGluIHRoZSB0YWJsZSwgZS5nLiBgdGQ6bnRoLWNoaWxkKDIpIHsgdGV4dC1hbGlnbjogcmlnaHQ7IH1gIHRvIHJpZ2h0LWFsaWduIHRoZSBzZWNvbmQgY29sdW1uLlxuICAgICogICBJZiB0aGUgdGFibGUgZG9lcyB1c2UgYSBbYGNvbHNwYW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jb2xzcGFuKSBhdHRyaWJ1dGUsIHRoZSBlZmZlY3QgY2FuIGJlIGFjaGlldmVkIGJ5IGNvbWJpbmluZyBhZGVxdWF0ZSBDU1MgYXR0cmlidXRlIHNlbGVjdG9ycyBsaWtlIGBbY29sc3Bhbj1uXWAsIHRob3VnaCB0aGlzIGlzIG5vdCB0cml2aWFsLlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGluIENTUzMsIHlvdSBjYW4gdXNlIHRoZSB2YWx1ZSBvZiB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCNhdHRyLWNoYXIpIGFzIHRoZSB2YWx1ZSBvZiB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IFVuaW1wbGVtZW50ZWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wifV19LHtuYW1lOiJ0Ym9keSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRib2R5IGVsZW1lbnQgcmVwcmVzZW50cyBhIGJsb2NrIG9mIHJvd3MgdGhhdCBjb25zaXN0IG9mIGEgYm9keSBvZiBkYXRhIGZvciB0aGUgcGFyZW50IHRhYmxlIGVsZW1lbnQsIGlmIHRoZSB0Ym9keSBlbGVtZW50IGhhcyBhIHBhcmVudCBhbmQgaXQgaXMgYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgZWFjaCBjZWxsIGNvbnRlbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbFxuKiAgIGBjZW50ZXJgLCBjZW50ZXJpbmcgdGhlIGNvbnRlbnQgaW4gdGhlIGNlbGxcbiogICBgcmlnaHRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGxcbiogICBganVzdGlmeWAsIGluc2VydGluZyBzcGFjZXMgaW50byB0aGUgdGV4dHVhbCBjb250ZW50IHNvIHRoYXQgdGhlIGNvbnRlbnQgaXMganVzdGlmaWVkIGluIHRoZSBjZWxsXG4qICAgYGNoYXJgLCBhbGlnbmluZyB0aGUgdGV4dHVhbCBjb250ZW50IG9uIGEgc3BlY2lhbCBjaGFyYWN0ZXIgd2l0aCBhIG1pbmltYWwgb2Zmc2V0LCBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rib2R5I2F0dHItY2hhcm9mZikgYXR0cmlidXRlcy5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGBsZWZ0YCB2YWx1ZSBpcyBhc3N1bWVkLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSAobm90IHN1cHBvcnRlZCkgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXMsIHVzZSB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBvbiBpdC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBpbiBDU1MzLCB5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Ym9keSNhdHRyLWNoYXIpIGFzIHRoZSB2YWx1ZSBvZiB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IFVuaW1wbGVtZW50ZWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Ym9keSJ9XX0se25hbWU6InRoZWFkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGhlYWQgZWxlbWVudCByZXByZXNlbnRzIHRoZSBibG9jayBvZiByb3dzIHRoYXQgY29uc2lzdCBvZiB0aGUgY29sdW1uIGxhYmVscyAoaGVhZGVycykgZm9yIHRoZSBwYXJlbnQgdGFibGUgZWxlbWVudCwgaWYgdGhlIHRoZWFkIGVsZW1lbnQgaGFzIGEgcGFyZW50IGFuZCBpdCBpcyBhIHRhYmxlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyBob3Jpem9udGFsIGFsaWdubWVudCBvZiBlYWNoIGNlbGwgY29udGVudCB3aWxsIGJlIGhhbmRsZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbGVmdGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsXG4qICAgYGNlbnRlcmAsIGNlbnRlcmluZyB0aGUgY29udGVudCBpbiB0aGUgY2VsbFxuKiAgIGByaWdodGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbFxuKiAgIGBqdXN0aWZ5YCwgaW5zZXJ0aW5nIHNwYWNlcyBpbnRvIHRoZSB0ZXh0dWFsIGNvbnRlbnQgc28gdGhhdCB0aGUgY29udGVudCBpcyBqdXN0aWZpZWQgaW4gdGhlIGNlbGxcbiogICBgY2hhcmAsIGFsaWduaW5nIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb24gYSBzcGVjaWFsIGNoYXJhY3RlciB3aXRoIGEgbWluaW1hbCBvZmZzZXQsIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aGVhZCNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGhlYWQjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzIFVuaW1wbGVtZW50ZWQgKHNlZSBbYnVnwqAyMjEyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyICJjaGFyYWN0ZXIgYWxpZ25tZW50IG5vdCBpbXBsZW1lbnRlZCAoYWxpZ249Y2hhciwgY2hhcm9mZj0sIHRleHQtYWxpZ246PHN0cmluZz4pIikpLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCB0aGUgYGxlZnRgIHZhbHVlIGlzIGFzc3VtZWQuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIChub3Qgc3VwcG9ydGVkKSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlcywgdXNlIHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IG9uIGl0LlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGluIENTUzMsIHlvdSBjYW4gdXNlIHRoZSB2YWx1ZSBvZiB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoZWFkI2F0dHItY2hhcikgYXMgdGhlIHZhbHVlIG9mIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgVW5pbXBsZW1lbnRlZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoZWFkIn1dfSx7bmFtZToidGZvb3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0Zm9vdCBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGJsb2NrIG9mIHJvd3MgdGhhdCBjb25zaXN0IG9mIHRoZSBjb2x1bW4gc3VtbWFyaWVzIChmb290ZXJzKSBmb3IgdGhlIHBhcmVudCB0YWJsZSBlbGVtZW50LCBpZiB0aGUgdGZvb3QgZWxlbWVudCBoYXMgYSBwYXJlbnQgYW5kIGl0IGlzIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IGhvcml6b250YWwgYWxpZ25tZW50IG9mIGVhY2ggY2VsbCBjb250ZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGxcbiogICBgY2VudGVyYCwgY2VudGVyaW5nIHRoZSBjb250ZW50IGluIHRoZSBjZWxsXG4qICAgYHJpZ2h0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsXG4qICAgYGp1c3RpZnlgLCBpbnNlcnRpbmcgc3BhY2VzIGludG8gdGhlIHRleHR1YWwgY29udGVudCBzbyB0aGF0IHRoZSBjb250ZW50IGlzIGp1c3RpZmllZCBpbiB0aGUgY2VsbFxuKiAgIGBjaGFyYCwgYWxpZ25pbmcgdGhlIHRleHR1YWwgY29udGVudCBvbiBhIHNwZWNpYWwgY2hhcmFjdGVyIHdpdGggYSBtaW5pbWFsIG9mZnNldCwgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rib2R5I2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Ym9keSNhdHRyLWNoYXJvZmYpIGF0dHJpYnV0ZXMgVW5pbXBsZW1lbnRlZCAoc2VlIFtidWfCoDIyMTJdKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTIgImNoYXJhY3RlciBhbGlnbm1lbnQgbm90IGltcGxlbWVudGVkIChhbGlnbj1jaGFyLCBjaGFyb2ZmPSwgdGV4dC1hbGlnbjo8c3RyaW5nPikiKSkuXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQsIHRoZSBgbGVmdGAgdmFsdWUgaXMgYXNzdW1lZC5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgKG5vdCBzdXBwb3J0ZWQpIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzLCB1c2UgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgb24gaXQuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgaW4gQ1NTMywgeW91IGNhbiB1c2UgdGhlIHZhbHVlIG9mIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGZvb3QjYXR0ci1jaGFyKSBhcyB0aGUgdmFsdWUgb2YgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBVbmltcGxlbWVudGVkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGZvb3QifV19LHtuYW1lOiJ0ciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRyIGVsZW1lbnQgcmVwcmVzZW50cyBhIHJvdyBvZiBjZWxscyBpbiBhIHRhYmxlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J0EgW2BET01TdHJpbmdgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRE9NU3RyaW5nICJET01TdHJpbmcgaXMgYSBVVEYtMTYgU3RyaW5nLiBBcyBKYXZhU2NyaXB0IGFscmVhZHkgdXNlcyBzdWNoIHN0cmluZ3MsIERPTVN0cmluZyBpcyBtYXBwZWQgZGlyZWN0bHkgdG8gYSBTdHJpbmcuIikgd2hpY2ggc3BlY2lmaWVzIGhvdyB0aGUgY2VsbFwncyBjb250ZXh0IHNob3VsZCBiZSBhbGlnbmVkIGhvcml6b250YWxseSB3aXRoaW4gdGhlIGNlbGxzIGluIHRoZSByb3c7IHRoaXMgaXMgc2hvcnRoYW5kIGZvciB1c2luZyBgYWxpZ25gIG9uIGV2ZXJ5IGNlbGwgaW4gdGhlIHJvdyBpbmRpdmlkdWFsbHkuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbmBsZWZ0YFxuXG5BbGlnbiB0aGUgY29udGVudCBvZiBlYWNoIGNlbGwgYXQgaXRzIGxlZnQgZWRnZS5cblxuYGNlbnRlcmBcblxuQ2VudGVyIHRoZSBjb250ZW50cyBvZiBlYWNoIGNlbGwgYmV0d2VlbiB0aGVpciBsZWZ0IGFuZCByaWdodCBlZGdlcy5cblxuYHJpZ2h0YFxuXG5BbGlnbiB0aGUgY29udGVudCBvZiBlYWNoIGNlbGwgYXQgaXRzIHJpZ2h0IGVkZ2UuXG5cbmBqdXN0aWZ5YFxuXG5XaWRlbiB3aGl0ZXNwYWNlcyB3aXRoaW4gdGhlIHRleHQgb2YgZWFjaCBjZWxsIHNvIHRoYXQgdGhlIHRleHQgZmlsbHMgdGhlIGZ1bGwgd2lkdGggb2YgZWFjaCBjZWxsIChmdWxsIGp1c3RpZmljYXRpb24pLlxuXG5gY2hhcmBcblxuQWxpZ24gZWFjaCBjZWxsIGluIHRoZSByb3cgb24gYSBzcGVjaWZpYyBjaGFyYWN0ZXIgKHN1Y2ggdGhhdCBlYWNoIHJvdyBpbiB0aGUgY29sdW1uIHRoYXQgaXMgY29uZmlndXJlZCB0aGlzIHdheSB3aWxsIGhvcml6b250YWxseSBhbGlnbiBpdHMgY2VsbHMgb24gdGhhdCBjaGFyYWN0ZXIpLiBUaGlzIHVzZXMgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ciNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdHIjYXR0ci1jaGFyb2ZmKSB0byBlc3RhYmxpc2ggdGhlIGFsaWdubWVudCBjaGFyYWN0ZXIgKHR5cGljYWxseSAiLiIgb3IgIiwiIHdoZW4gYWxpZ25pbmcgbnVtZXJpY2FsIGRhdGEpIGFuZCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgZm9sbG93IHRoZSBhbGlnbm1lbnQgY2hhcmFjdGVyLiBUaGlzIGFsaWdubWVudCB0eXBlIHdhcyBuZXZlciB3aWRlbHkgc3VwcG9ydGVkLlxuXG5JZiBubyB2YWx1ZSBpcyBleHByZXNzbHkgc2V0IGZvciBgYWxpZ25gLCB0aGUgcGFyZW50IG5vZGVcJ3MgdmFsdWUgaXMgaW5oZXJpdGVkLlxuXG5JbnN0ZWFkIG9mIHVzaW5nIHRoZSBvYnNvbGV0ZSBgYWxpZ25gIGF0dHJpYnV0ZSwgeW91IHNob3VsZCBpbnN0ZWFkIHVzZSB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSB0byBlc3RhYmxpc2ggYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCwgb3IgYGp1c3RpZnlgIGFsaWdubWVudCBmb3IgdGhlIHJvd1wncyBjZWxscy4gVG8gYXBwbHkgY2hhcmFjdGVyLWJhc2VkIGFsaWdubWVudCwgc2V0IHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IHRvIHRoZSBhbGlnbm1lbnQgY2hhcmFjdGVyIChzdWNoIGFzIGAiLiJgIG9yIGAiLCJgKS4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RyIn1dfSx7bmFtZToidGQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0ZCBlbGVtZW50IHJlcHJlc2VudHMgYSBkYXRhIGNlbGwgaW4gYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY29sc3BhbiJ9LHtuYW1lOiJyb3dzcGFuIn0se25hbWU6ImhlYWRlcnMifSx7bmFtZToiYWJiciIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGEgc2hvcnQgYWJicmV2aWF0ZWQgZGVzY3JpcHRpb24gb2YgdGhlIGNlbGwncyBjb250ZW50LiBTb21lIHVzZXItYWdlbnRzLCBzdWNoIGFzIHNwZWVjaCByZWFkZXJzLCBtYXkgcHJlc2VudCB0aGlzIGRlc2NyaXB0aW9uIGJlZm9yZSB0aGUgY29udGVudCBpdHNlbGYuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gcHV0IHRoZSBhYmJyZXZpYXRlZCBkZXNjcmlwdGlvbiBpbnNpZGUgdGhlIGNlbGwgYW5kIHBsYWNlIHRoZSBsb25nIGNvbnRlbnQgaW4gdGhlICoqdGl0bGUqKiBhdHRyaWJ1dGUuIn0se25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IHRoZSBjZWxsIGNvbnRlbnRcJ3MgaG9yaXpvbnRhbCBhbGlnbm1lbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgOiBUaGUgY29udGVudCBpcyBhbGlnbmVkIHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsLlxuKiAgIGBjZW50ZXJgOiBUaGUgY29udGVudCBpcyBjZW50ZXJlZCBpbiB0aGUgY2VsbC5cbiogICBgcmlnaHRgOiBUaGUgY29udGVudCBpcyBhbGlnbmVkIHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbC5cbiogICBganVzdGlmeWAgKHdpdGggdGV4dCBvbmx5KTogVGhlIGNvbnRlbnQgaXMgc3RyZXRjaGVkIG91dCBpbnNpZGUgdGhlIGNlbGwgc28gdGhhdCBpdCBjb3ZlcnMgaXRzIGVudGlyZSB3aWR0aC5cbiogICBgY2hhcmAgKHdpdGggdGV4dCBvbmx5KTogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byBhIGNoYXJhY3RlciBpbnNpZGUgdGhlIGA8dGg+YCBlbGVtZW50IHdpdGggbWluaW1hbCBvZmZzZXQuIFRoaXMgY2hhcmFjdGVyIGlzIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzIFVuaW1wbGVtZW50ZWQgKHNlZSBbYnVnwqAyMjEyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyICJjaGFyYWN0ZXIgYWxpZ25tZW50IG5vdCBpbXBsZW1lbnRlZCAoYWxpZ249Y2hhciwgY2hhcm9mZj0sIHRleHQtYWxpZ246PHN0cmluZz4pIikpLlxuXG5UaGUgZGVmYXVsdCB2YWx1ZSB3aGVuIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQgaXMgYGxlZnRgLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlcywgYXBwbHkgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgdG8gdGhlIGVsZW1lbnQuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgZ2l2ZSB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IHRoZSBzYW1lIHZhbHVlIHlvdSB3b3VsZCB1c2UgZm9yIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jaGFyKS4gVW5pbXBsZW1lbnRlZCBpbiBDU1MzLid9LHtuYW1lOiJheGlzIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYSBsaXN0IG9mIHNwYWNlLXNlcGFyYXRlZCBzdHJpbmdzLiBFYWNoIHN0cmluZyBpcyB0aGUgYGlkYCBvZiBhIGdyb3VwIG9mIGNlbGxzIHRoYXQgdGhpcyBoZWFkZXIgYXBwbGllcyB0by5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC4ifSx7bmFtZToiYmdjb2xvciIsZGVzY3JpcHRpb246J1RoaXMgYXR0cmlidXRlIGRlZmluZXMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgZWFjaCBjZWxsIGluIGEgY29sdW1uLiBJdCBjb25zaXN0cyBvZiBhIDYtZGlnaXQgaGV4YWRlY2ltYWwgY29kZSBhcyBkZWZpbmVkIGluIFtzUkdCXShodHRwczovL3d3dy53My5vcmcvR3JhcGhpY3MvQ29sb3Ivc1JHQikgYW5kIGlzIHByZWZpeGVkIGJ5IFwnI1wnLiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgdXNlZCB3aXRoIG9uZSBvZiBzaXh0ZWVuIHByZWRlZmluZWQgY29sb3Igc3RyaW5nczpcblxuwqBcblxuYGJsYWNrYCA9ICIjMDAwMDAwIlxuXG7CoFxuXG5gZ3JlZW5gID0gIiMwMDgwMDAiXG5cbsKgXG5cbmBzaWx2ZXJgID0gIiNDMEMwQzAiXG5cbsKgXG5cbmBsaW1lYCA9ICIjMDBGRjAwIlxuXG7CoFxuXG5gZ3JheWAgPSAiIzgwODA4MCJcblxuwqBcblxuYG9saXZlYCA9ICIjODA4MDAwIlxuXG7CoFxuXG5gd2hpdGVgID0gIiNGRkZGRkYiXG5cbsKgXG5cbmB5ZWxsb3dgID0gIiNGRkZGMDAiXG5cbsKgXG5cbmBtYXJvb25gID0gIiM4MDAwMDAiXG5cbsKgXG5cbmBuYXZ5YCA9ICIjMDAwMDgwIlxuXG7CoFxuXG5gcmVkYCA9ICIjRkYwMDAwIlxuXG7CoFxuXG5gYmx1ZWAgPSAiIzAwMDBGRiJcblxuwqBcblxuYHB1cnBsZWAgPSAiIzgwMDA4MCJcblxuwqBcblxuYHRlYWxgID0gIiMwMDgwODAiXG5cbsKgXG5cbmBmdWNoc2lhYCA9ICIjRkYwMEZGIlxuXG7CoFxuXG5gYXF1YWAgPSAiIzAwRkZGRiJcblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUsIGFzIGl0IGlzIG5vbi1zdGFuZGFyZCBhbmQgb25seSBpbXBsZW1lbnRlZCBpbiBzb21lIHZlcnNpb25zIG9mIE1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlcjogVGhlIFtgPHRkPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCAiVGhlIEhUTUwgPHRkPiBlbGVtZW50IGRlZmluZXMgYSBjZWxsIG9mIGEgdGFibGUgdGhhdCBjb250YWlucyBkYXRhLiBJdCBwYXJ0aWNpcGF0ZXMgaW4gdGhlIHRhYmxlIG1vZGVsLiIpIGVsZW1lbnQgc2hvdWxkIGJlIHN0eWxlZCB1c2luZyBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykuIFRvIGNyZWF0ZSBhIHNpbWlsYXIgZWZmZWN0IHVzZSB0aGUgW2BiYWNrZ3JvdW5kLWNvbG9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtY29sb3IgIlRoZSBiYWNrZ3JvdW5kLWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGVsZW1lbnQuIikgcHJvcGVydHkgaW4gW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpIGluc3RlYWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCJ9XX0se25hbWU6InRoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGggZWxlbWVudCByZXByZXNlbnRzIGEgaGVhZGVyIGNlbGwgaW4gYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY29sc3BhbiJ9LHtuYW1lOiJyb3dzcGFuIn0se25hbWU6ImhlYWRlcnMifSx7bmFtZToic2NvcGUiLHZhbHVlU2V0OiJzIn0se25hbWU6InNvcnRlZCJ9LHtuYW1lOiJhYmJyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBhIHNob3J0IGFiYnJldmlhdGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBjZWxsJ3MgY29udGVudC4gU29tZSB1c2VyLWFnZW50cywgc3VjaCBhcyBzcGVlY2ggcmVhZGVycywgbWF5IHByZXNlbnQgdGhpcyBkZXNjcmlwdGlvbiBiZWZvcmUgdGhlIGNvbnRlbnQgaXRzZWxmLiJ9fSx7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgdGhlIGNlbGwgY29udGVudFwncyBob3Jpem9udGFsIGFsaWdubWVudCB3aWxsIGJlIGhhbmRsZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbGVmdGA6IFRoZSBjb250ZW50IGlzIGFsaWduZWQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGwuXG4qICAgYGNlbnRlcmA6IFRoZSBjb250ZW50IGlzIGNlbnRlcmVkIGluIHRoZSBjZWxsLlxuKiAgIGByaWdodGA6IFRoZSBjb250ZW50IGlzIGFsaWduZWQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsLlxuKiAgIGBqdXN0aWZ5YCAod2l0aCB0ZXh0IG9ubHkpOiBUaGUgY29udGVudCBpcyBzdHJldGNoZWQgb3V0IGluc2lkZSB0aGUgY2VsbCBzbyB0aGF0IGl0IGNvdmVycyBpdHMgZW50aXJlIHdpZHRoLlxuKiAgIGBjaGFyYCAod2l0aCB0ZXh0IG9ubHkpOiBUaGUgY29udGVudCBpcyBhbGlnbmVkIHRvIGEgY2hhcmFjdGVyIGluc2lkZSB0aGUgYDx0aD5gIGVsZW1lbnQgd2l0aCBtaW5pbWFsIG9mZnNldC4gVGhpcyBjaGFyYWN0ZXIgaXMgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoI2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aCNhdHRyLWNoYXJvZmYpIGF0dHJpYnV0ZXMuXG5cblRoZSBkZWZhdWx0IHZhbHVlIHdoZW4gdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCBpcyBgbGVmdGAuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzLCBhcHBseSB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSB0byB0aGUgZWxlbWVudC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBnaXZlIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgdGhlIHNhbWUgdmFsdWUgeW91IHdvdWxkIHVzZSBmb3IgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aCNhdHRyLWNoYXIpLiBVbmltcGxlbWVudGVkIGluIENTUzMuJ30se25hbWU6ImF4aXMiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBhIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIHN0cmluZ3MuIEVhY2ggc3RyaW5nIGlzIHRoZSBgaWRgIG9mIGEgZ3JvdXAgb2YgY2VsbHMgdGhhdCB0aGlzIGhlYWRlciBhcHBsaWVzIHRvLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkOiB1c2UgdGhlIFtgc2NvcGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGgjYXR0ci1zY29wZSkgYXR0cmlidXRlIGluc3RlYWQuIn0se25hbWU6ImJnY29sb3IiLGRlc2NyaXB0aW9uOidUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGVhY2ggY2VsbCBpbiBhIGNvbHVtbi4gSXQgY29uc2lzdHMgb2YgYSA2LWRpZ2l0IGhleGFkZWNpbWFsIGNvZGUgYXMgZGVmaW5lZCBpbiBbc1JHQl0oaHR0cHM6Ly93d3cudzMub3JnL0dyYXBoaWNzL0NvbG9yL3NSR0IpIGFuZCBpcyBwcmVmaXhlZCBieSBcJyNcJy4gVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHVzZWQgd2l0aCBvbmUgb2Ygc2l4dGVlbiBwcmVkZWZpbmVkIGNvbG9yIHN0cmluZ3M6XG5cbsKgXG5cbmBibGFja2AgPSAiIzAwMDAwMCJcblxuwqBcblxuYGdyZWVuYCA9ICIjMDA4MDAwIlxuXG7CoFxuXG5gc2lsdmVyYCA9ICIjQzBDMEMwIlxuXG7CoFxuXG5gbGltZWAgPSAiIzAwRkYwMCJcblxuwqBcblxuYGdyYXlgID0gIiM4MDgwODAiXG5cbsKgXG5cbmBvbGl2ZWAgPSAiIzgwODAwMCJcblxuwqBcblxuYHdoaXRlYCA9ICIjRkZGRkZGIlxuXG7CoFxuXG5geWVsbG93YCA9ICIjRkZGRjAwIlxuXG7CoFxuXG5gbWFyb29uYCA9ICIjODAwMDAwIlxuXG7CoFxuXG5gbmF2eWAgPSAiIzAwMDA4MCJcblxuwqBcblxuYHJlZGAgPSAiI0ZGMDAwMCJcblxuwqBcblxuYGJsdWVgID0gIiMwMDAwRkYiXG5cbsKgXG5cbmBwdXJwbGVgID0gIiM4MDAwODAiXG5cbsKgXG5cbmB0ZWFsYCA9ICIjMDA4MDgwIlxuXG7CoFxuXG5gZnVjaHNpYWAgPSAiI0ZGMDBGRiJcblxuwqBcblxuYGFxdWFgID0gIiMwMEZGRkYiXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlLCBhcyBpdCBpcyBub24tc3RhbmRhcmQgYW5kIG9ubHkgaW1wbGVtZW50ZWQgaW4gc29tZSB2ZXJzaW9ucyBvZiBNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXI6IFRoZSBbYDx0aD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGggIlRoZSBIVE1MIDx0aD4gZWxlbWVudCBkZWZpbmVzIGEgY2VsbCBhcyBoZWFkZXIgb2YgYSBncm91cCBvZiB0YWJsZSBjZWxscy4gVGhlIGV4YWN0IG5hdHVyZSBvZiB0aGlzIGdyb3VwIGlzIGRlZmluZWQgYnkgdGhlIHNjb3BlIGFuZCBoZWFkZXJzIGF0dHJpYnV0ZXMuIikgZWxlbWVudCBzaG91bGQgYmUgc3R5bGVkIHVzaW5nIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUykuIFRvIGNyZWF0ZSBhIHNpbWlsYXIgZWZmZWN0IHVzZSB0aGUgW2BiYWNrZ3JvdW5kLWNvbG9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtY29sb3IgIlRoZSBiYWNrZ3JvdW5kLWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGVsZW1lbnQuIikgcHJvcGVydHkgaW4gW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTKSBpbnN0ZWFkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGgifV19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZm9ybSBlbGVtZW50IHJlcHJlc2VudHMgYSBjb2xsZWN0aW9uIG9mIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50cywgc29tZSBvZiB3aGljaCBjYW4gcmVwcmVzZW50IGVkaXRhYmxlIHZhbHVlcyB0aGF0IGNhbiBiZSBzdWJtaXR0ZWQgdG8gYSBzZXJ2ZXIgZm9yIHByb2Nlc3NpbmcuIn0sYXR0cmlidXRlczpbe25hbWU6ImFjY2VwdC1jaGFyc2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBIHNwYWNlLSBvciBjb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBjaGFyYWN0ZXIgZW5jb2RpbmdzIHRoYXQgdGhlIHNlcnZlciBhY2NlcHRzLiBUaGUgYnJvd3NlciB1c2VzIHRoZW0gaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlIGxpc3RlZC4gVGhlIGRlZmF1bHQgdmFsdWUsIHRoZSByZXNlcnZlZCBzdHJpbmcgYCJVTktOT1dOImAsIGluZGljYXRlcyB0aGUgc2FtZSBlbmNvZGluZyBhcyB0aGF0IG9mIHRoZSBkb2N1bWVudCBjb250YWluaW5nIHRoZSBmb3JtIGVsZW1lbnQuICBcbkluIHByZXZpb3VzIHZlcnNpb25zIG9mIEhUTUwsIHRoZSBkaWZmZXJlbnQgY2hhcmFjdGVyIGVuY29kaW5ncyBjb3VsZCBiZSBkZWxpbWl0ZWQgYnkgc3BhY2VzIG9yIGNvbW1hcy4gSW4gSFRNTDUsIG9ubHkgc3BhY2VzIGFyZSBhbGxvd2VkIGFzIGRlbGltaXRlcnMuJ319LHtuYW1lOiJhY3Rpb24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBVUkkgb2YgYSBwcm9ncmFtIHRoYXQgcHJvY2Vzc2VzIHRoZSBmb3JtIGluZm9ybWF0aW9uLiBUaGlzIHZhbHVlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgW2Bmb3JtYWN0aW9uYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiNhdHRyLWZvcm1hY3Rpb24pIGF0dHJpYnV0ZSBvbiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBvciBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50Lid9fSx7bmFtZToiYXV0b2NvbXBsZXRlIix2YWx1ZVNldDoibyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgaW5wdXQgZWxlbWVudHMgY2FuIGJ5IGRlZmF1bHQgaGF2ZSB0aGVpciB2YWx1ZXMgYXV0b21hdGljYWxseSBjb21wbGV0ZWQgYnkgdGhlIGJyb3dzZXIuIFRoaXMgc2V0dGluZyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhbiBgYXV0b2NvbXBsZXRlYCBhdHRyaWJ1dGUgb24gYW4gZWxlbWVudCBiZWxvbmdpbmcgdG8gdGhlIGZvcm0uIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgb2ZmYDogVGhlIHVzZXIgbXVzdCBleHBsaWNpdGx5IGVudGVyIGEgdmFsdWUgaW50byBlYWNoIGZpZWxkIGZvciBldmVyeSB1c2UsIG9yIHRoZSBkb2N1bWVudCBwcm92aWRlcyBpdHMgb3duIGF1dG8tY29tcGxldGlvbiBtZXRob2Q7IHRoZSBicm93c2VyIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgY29tcGxldGUgZW50cmllcy5cbiogICBgb25gOiBUaGUgYnJvd3NlciBjYW4gYXV0b21hdGljYWxseSBjb21wbGV0ZSB2YWx1ZXMgYmFzZWQgb24gdmFsdWVzIHRoYXQgdGhlIHVzZXIgaGFzIHByZXZpb3VzbHkgZW50ZXJlZCBpbiB0aGUgZm9ybS5cblxuRm9yIG1vc3QgbW9kZXJuIGJyb3dzZXJzIChpbmNsdWRpbmcgRmlyZWZveCAzOCssIEdvb2dsZSBDaHJvbWUgMzQrLCBJRSAxMSspIHNldHRpbmcgdGhlIGF1dG9jb21wbGV0ZSBhdHRyaWJ1dGUgd2lsbCBub3QgcHJldmVudCBhIGJyb3dzZXIncyBwYXNzd29yZCBtYW5hZ2VyIGZyb20gYXNraW5nIHRoZSB1c2VyIGlmIHRoZXkgd2FudCB0byBzdG9yZSBsb2dpbiBmaWVsZHMgKHVzZXJuYW1lIGFuZCBwYXNzd29yZCksIGlmIHRoZSB1c2VyIHBlcm1pdHMgdGhlIHN0b3JhZ2UgdGhlIGJyb3dzZXIgd2lsbCBhdXRvZmlsbCB0aGUgbG9naW4gdGhlIG5leHQgdGltZSB0aGUgdXNlciB2aXNpdHMgdGhlIHBhZ2UuIFNlZSBbVGhlIGF1dG9jb21wbGV0ZSBhdHRyaWJ1dGUgYW5kIGxvZ2luIGZpZWxkc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU2VjdXJpbmdfeW91cl9zaXRlL1R1cm5pbmdfb2ZmX2Zvcm1fYXV0b2NvbXBsZXRpb24jVGhlX2F1dG9jb21wbGV0ZV9hdHRyaWJ1dGVfYW5kX2xvZ2luX2ZpZWxkcykuIn19LHtuYW1lOiJlbmN0eXBlIix2YWx1ZVNldDoiZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1doZW4gdGhlIHZhbHVlIG9mIHRoZSBgbWV0aG9kYCBhdHRyaWJ1dGUgaXMgYHBvc3RgLCBlbmN0eXBlIGlzIHRoZSBbTUlNRSB0eXBlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaW1lX3R5cGUpIG9mIGNvbnRlbnQgdGhhdCBpcyB1c2VkIHRvIHN1Ym1pdCB0aGUgZm9ybSB0byB0aGUgc2VydmVyLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGA6IFRoZSBkZWZhdWx0IHZhbHVlIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZC5cbiogICBgbXVsdGlwYXJ0L2Zvcm0tZGF0YWA6IFRoZSB2YWx1ZSB1c2VkIGZvciBhbiBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50IHdpdGggdGhlIGB0eXBlYCBhdHRyaWJ1dGUgc2V0IHRvICJmaWxlIi5cbiogICBgdGV4dC9wbGFpbmA6IChIVE1MNSlcblxuVGhpcyB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIFtgZm9ybWVuY3R5cGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItZm9ybWVuY3R5cGUpIGF0dHJpYnV0ZSBvbiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBvciBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50Lid9fSx7bmFtZToibWV0aG9kIix2YWx1ZVNldDoibSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhlIFtIVFRQXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQKSBtZXRob2QgdGhhdCB0aGUgYnJvd3NlciB1c2VzIHRvIHN1Ym1pdCB0aGUgZm9ybS4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBwb3N0YDogQ29ycmVzcG9uZHMgdG8gdGhlIEhUVFAgW1BPU1QgbWV0aG9kXShodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS41KSA7IGZvcm0gZGF0YSBhcmUgaW5jbHVkZWQgaW4gdGhlIGJvZHkgb2YgdGhlIGZvcm0gYW5kIHNlbnQgdG8gdGhlIHNlcnZlci5cbiogICBgZ2V0YDogQ29ycmVzcG9uZHMgdG8gdGhlIEhUVFAgW0dFVCBtZXRob2RdKGh0dHBzOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzkuaHRtbCNzZWM5LjMpOyBmb3JtIGRhdGEgYXJlIGFwcGVuZGVkIHRvIHRoZSBgYWN0aW9uYCBhdHRyaWJ1dGUgVVJJIHdpdGggYSBcJz9cJyBhcyBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0aW5nIFVSSSBpcyBzZW50IHRvIHRoZSBzZXJ2ZXIuIFVzZSB0aGlzIG1ldGhvZCB3aGVuIHRoZSBmb3JtIGhhcyBubyBzaWRlLWVmZmVjdHMgYW5kIGNvbnRhaW5zIG9ubHkgQVNDSUkgY2hhcmFjdGVycy5cbiogICBgZGlhbG9nYDogVXNlIHdoZW4gdGhlIGZvcm0gaXMgaW5zaWRlIGHCoFtgPGRpYWxvZz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGlhbG9nICJUaGUgSFRNTCA8ZGlhbG9nPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkaWFsb2cgYm94IG9yIG90aGVyIGludGVyYWN0aXZlIGNvbXBvbmVudCwgc3VjaCBhcyBhbiBpbnNwZWN0b3Igb3Igd2luZG93LiIpIGVsZW1lbnQgdG8gY2xvc2UgdGhlIGRpYWxvZyB3aGVuIHN1Ym1pdHRlZC5cblxuVGhpcyB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIFtgZm9ybW1ldGhvZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24jYXR0ci1mb3JtbWV0aG9kKSBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgb3IgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudC4nfX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYW1lIG9mIHRoZSBmb3JtLiBJbiBIVE1MIDQsIGl0cyB1c2UgaXMgZGVwcmVjYXRlZCAoYGlkYCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkKS4gSXQgbXVzdCBiZSB1bmlxdWUgYW1vbmcgdGhlIGZvcm1zIGluIGEgZG9jdW1lbnQgYW5kIG5vdCBqdXN0IGFuIGVtcHR5IHN0cmluZyBpbiBIVE1MIDUuIn19LHtuYW1lOiJub3ZhbGlkYXRlIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgZm9ybSBpcyBub3QgdG8gYmUgdmFsaWRhdGVkIHdoZW4gc3VibWl0dGVkLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkIChhbmQgdGhlcmVmb3JlIHRoZSBmb3JtIGlzIHZhbGlkYXRlZCksIHRoaXMgZGVmYXVsdCBzZXR0aW5nIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgW2Bmb3Jtbm92YWxpZGF0ZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24jYXR0ci1mb3Jtbm92YWxpZGF0ZSkgYXR0cmlidXRlIG9uIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIG9yIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQgYmVsb25naW5nIHRvIHRoZSBmb3JtLid9fSx7bmFtZToidGFyZ2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBIG5hbWUgb3Iga2V5d29yZCBpbmRpY2F0aW5nIHdoZXJlIHRvIGRpc3BsYXkgdGhlIHJlc3BvbnNlIHRoYXQgaXMgcmVjZWl2ZWQgYWZ0ZXIgc3VibWl0dGluZyB0aGUgZm9ybS4gSW4gSFRNTCA0LCB0aGlzIGlzIHRoZSBuYW1lL2tleXdvcmQgZm9yIGEgZnJhbWUuIEluIEhUTUw1LCBpdCBpcyBhIG5hbWUva2V5d29yZCBmb3IgYSBfYnJvd3NpbmcgY29udGV4dF8gKGZvciBleGFtcGxlLCB0YWIsIHdpbmRvdywgb3IgaW5saW5lIGZyYW1lKS4gVGhlIGZvbGxvd2luZyBrZXl3b3JkcyBoYXZlIHNwZWNpYWwgbWVhbmluZ3M6XG5cbiogICBgX3NlbGZgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIHRoZSBzYW1lIEhUTUwgNCBmcmFtZSAob3IgSFRNTDUgYnJvd3NpbmcgY29udGV4dCkgYXMgdGhlIGN1cnJlbnQgb25lLiBUaGlzIHZhbHVlIGlzIHRoZSBkZWZhdWx0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZC5cbiogICBgX2JsYW5rYDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byBhIG5ldyB1bm5hbWVkIEhUTUwgNCB3aW5kb3cgb3IgSFRNTDUgYnJvd3NpbmcgY29udGV4dC5cbiogICBgX3BhcmVudGA6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIEhUTUwgNCBmcmFtZXNldCBwYXJlbnQgb2YgdGhlIGN1cnJlbnQgZnJhbWUsIG9yIEhUTUw1IHBhcmVudCBicm93c2luZyBjb250ZXh0IG9mIHRoZSBjdXJyZW50IG9uZS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIG9wdGlvbiBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuKiAgIGBfdG9wYDogSFRNTCA0OiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIHRoZSBmdWxsIG9yaWdpbmFsIHdpbmRvdywgYW5kIGNhbmNlbCBhbGwgb3RoZXIgZnJhbWVzLiBIVE1MNTogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgKGkuZS4sIHRoZSBicm93c2luZyBjb250ZXh0IHRoYXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgb25lLCBhbmQgaGFzIG5vIHBhcmVudCkuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cbiogICBfaWZyYW1lbmFtZV86IFRoZSByZXNwb25zZSBpcyBkaXNwbGF5ZWQgaW4gYSBuYW1lZCBbYDxpZnJhbWU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lmcmFtZSAiVGhlIEhUTUwgSW5saW5lIEZyYW1lIGVsZW1lbnQgKDxpZnJhbWU+KSByZXByZXNlbnRzIGEgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQsIGVtYmVkZGluZyBhbm90aGVyIEhUTUwgcGFnZSBpbnRvIHRoZSBjdXJyZW50IG9uZS4iKS5cblxuSFRNTDU6IFRoaXMgdmFsdWUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBbYGZvcm10YXJnZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItZm9ybXRhcmdldCkgYXR0cmlidXRlIG9uIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIG9yIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQuJ319LHtuYW1lOiJhY2NlcHQiLGRlc2NyaXB0aW9uOidBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbnRlbnQgdHlwZXMgdGhhdCB0aGUgc2VydmVyIGFjY2VwdHMuXG5cbioqVXNhZ2Ugbm90ZToqKiBUaGlzIGF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkIGluIEhUTUw1IGFuZCBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWQuIEluc3RlYWQsIHVzZSB0aGUgW2BhY2NlcHRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQjYXR0ci1hY2NlcHQpIGF0dHJpYnV0ZSBvZiB0aGUgc3BlY2lmaWMgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudC4nfSx7bmFtZToiYXV0b2NhcGl0YWxpemUiLGRlc2NyaXB0aW9uOiJUaGlzIGlzIGEgbm9uc3RhbmRhcmQgYXR0cmlidXRlIHVzZWQgYnkgaU9TIFNhZmFyaSBNb2JpbGUgd2hpY2ggY29udHJvbHMgd2hldGhlciBhbmQgaG93IHRoZSB0ZXh0IHZhbHVlIGZvciB0ZXh0dWFsIGZvcm0gY29udHJvbCBkZXNjZW5kYW50cyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBjYXBpdGFsaXplZCBhcyBpdCBpcyBlbnRlcmVkL2VkaXRlZCBieSB0aGUgdXNlci4gSWYgdGhlIGBhdXRvY2FwaXRhbGl6ZWAgYXR0cmlidXRlIGlzIHNwZWNpZmllZCBvbiBhbiBpbmRpdmlkdWFsIGZvcm0gY29udHJvbCBkZXNjZW5kYW50LCBpdCB0cnVtcHMgdGhlIGZvcm0td2lkZSBgYXV0b2NhcGl0YWxpemVgIHNldHRpbmcuIFRoZSBub24tZGVwcmVjYXRlZCB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBpbiBpT1MgNSBhbmQgbGF0ZXIuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBzZW50ZW5jZXNgLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYG5vbmVgOiBDb21wbGV0ZWx5IGRpc2FibGVzIGF1dG9tYXRpYyBjYXBpdGFsaXphdGlvblxuKiAgIGBzZW50ZW5jZXNgOiBBdXRvbWF0aWNhbGx5IGNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiBzZW50ZW5jZXMuXG4qICAgYHdvcmRzYDogQXV0b21hdGljYWxseSBjYXBpdGFsaXplIHRoZSBmaXJzdCBsZXR0ZXIgb2Ygd29yZHMuXG4qICAgYGNoYXJhY3RlcnNgOiBBdXRvbWF0aWNhbGx5IGNhcGl0YWxpemUgYWxsIGNoYXJhY3RlcnMuXG4qICAgYG9uYDogRGVwcmVjYXRlZCBzaW5jZSBpT1MgNS5cbiogICBgb2ZmYDogRGVwcmVjYXRlZCBzaW5jZSBpT1MgNS4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0ifV19LHtuYW1lOiJsYWJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxhYmVsIGVsZW1lbnQgcmVwcmVzZW50cyBhIGNhcHRpb24gaW4gYSB1c2VyIGludGVyZmFjZS4gVGhlIGNhcHRpb24gY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGZvcm0gY29udHJvbCwga25vd24gYXMgdGhlIGxhYmVsIGVsZW1lbnQncyBsYWJlbGVkIGNvbnRyb2wsIGVpdGhlciB1c2luZyB0aGUgZm9yIGF0dHJpYnV0ZSwgb3IgYnkgcHV0dGluZyB0aGUgZm9ybSBjb250cm9sIGluc2lkZSB0aGUgbGFiZWwgZWxlbWVudCBpdHNlbGYuIn0sYXR0cmlidXRlczpbe25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50IHdpdGggd2hpY2ggdGhlIGxhYmVsIGlzIGFzc29jaWF0ZWQgKGl0cyBfZm9ybSBvd25lcl8pLiBJZiBzcGVjaWZpZWQsIHRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIGlzIHRoZSBgaWRgIG9mIGEgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4gVGhpcyBsZXRzIHlvdSBwbGFjZSBsYWJlbCBlbGVtZW50cyBhbnl3aGVyZSB3aXRoaW4gYSBkb2N1bWVudCwgbm90IGp1c3QgYXMgZGVzY2VuZGFudHMgb2YgdGhlaXIgZm9ybSBlbGVtZW50cy4nfX0se25hbWU6ImZvciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIFtgaWRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzI2F0dHItaWQpIG9mIGEgW2xhYmVsYWJsZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvR3VpZGUvSFRNTC9Db250ZW50X2NhdGVnb3JpZXMjRm9ybV9sYWJlbGFibGUpIGZvcm0tcmVsYXRlZCBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50IGFzIHRoZSBgPGxhYmVsPmAgZWxlbWVudC4gVGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50IHdpdGggYW4gYGlkYCBtYXRjaGluZyB0aGUgdmFsdWUgb2YgdGhlIGBmb3JgIGF0dHJpYnV0ZSBpcyB0aGUgX2xhYmVsZWQgY29udHJvbF8gZm9yIHRoaXMgbGFiZWwgZWxlbWVudCwgaWYgaXQgaXMgYSBsYWJlbGFibGUgZWxlbWVudC4gSWYgaXQgaXPCoG5vdCBsYWJlbGFibGUgdGhlbiB0aGUgYGZvcmAgYXR0cmlidXRlIGhhcyBubyBlZmZlY3QuIElmIHRoZXJlIGFyZSBvdGhlciBlbGVtZW50cyB3aGljaCBhbHNvIG1hdGNoIHRoZSBgaWRgIHZhbHVlLCBsYXRlciBpbiB0aGUgZG9jdW1lbnQsIHRoZXkgYXJlIG5vdCBjb25zaWRlcmVkLlxuXG4qKk5vdGUqKjogQSBgPGxhYmVsPmAgZWxlbWVudCBjYW4gaGF2ZSBib3RoIGEgYGZvcmAgYXR0cmlidXRlIGFuZCBhIGNvbnRhaW5lZCBjb250cm9sIGVsZW1lbnQsIGFzIGxvbmcgYXMgdGhlIGBmb3JgIGF0dHJpYnV0ZSBwb2ludHMgdG8gdGhlIGNvbnRhaW5lZCBjb250cm9sIGVsZW1lbnQuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGFiZWwifV19LHtuYW1lOiJpbnB1dCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGlucHV0IGVsZW1lbnQgcmVwcmVzZW50cyBhIHR5cGVkIGRhdGEgZmllbGQsIHVzdWFsbHkgd2l0aCBhIGZvcm0gY29udHJvbCB0byBhbGxvdyB0aGUgdXNlciB0byBlZGl0IHRoZSBkYXRhLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhY2NlcHQifSx7bmFtZToiYWx0In0se25hbWU6ImF1dG9jb21wbGV0ZSIsdmFsdWVTZXQ6ImlucHV0YXV0b2NvbXBsZXRlIn0se25hbWU6ImF1dG9mb2N1cyIsdmFsdWVTZXQ6InYifSx7bmFtZToiY2hlY2tlZCIsdmFsdWVTZXQ6InYifSx7bmFtZToiZGlybmFtZSJ9LHtuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYifSx7bmFtZToiZm9ybSJ9LHtuYW1lOiJmb3JtYWN0aW9uIn0se25hbWU6ImZvcm1lbmN0eXBlIix2YWx1ZVNldDoiZXQifSx7bmFtZToiZm9ybW1ldGhvZCIsdmFsdWVTZXQ6ImZtIn0se25hbWU6ImZvcm1ub3ZhbGlkYXRlIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJmb3JtdGFyZ2V0In0se25hbWU6ImhlaWdodCJ9LHtuYW1lOiJpbnB1dG1vZGUiLHZhbHVlU2V0OiJpbSJ9LHtuYW1lOiJsaXN0In0se25hbWU6Im1heCJ9LHtuYW1lOiJtYXhsZW5ndGgifSx7bmFtZToibWluIn0se25hbWU6Im1pbmxlbmd0aCJ9LHtuYW1lOiJtdWx0aXBsZSIsdmFsdWVTZXQ6InYifSx7bmFtZToibmFtZSJ9LHtuYW1lOiJwYXR0ZXJuIn0se25hbWU6InBsYWNlaG9sZGVyIn0se25hbWU6InJlYWRvbmx5Iix2YWx1ZVNldDoidiJ9LHtuYW1lOiJyZXF1aXJlZCIsdmFsdWVTZXQ6InYifSx7bmFtZToic2l6ZSJ9LHtuYW1lOiJzcmMifSx7bmFtZToic3RlcCJ9LHtuYW1lOiJ0eXBlIix2YWx1ZVNldDoidCJ9LHtuYW1lOiJ2YWx1ZSJ9LHtuYW1lOiJ3aWR0aCJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQifV19LHtuYW1lOiJidXR0b24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBidXR0b24gZWxlbWVudCByZXByZXNlbnRzIGEgYnV0dG9uIGxhYmVsZWQgYnkgaXRzIGNvbnRlbnRzLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhdXRvZm9jdXMiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGxldHMgeW91IHNwZWNpZnkgdGhhdCB0aGUgYnV0dG9uIHNob3VsZCBoYXZlIGlucHV0IGZvY3VzIHdoZW4gdGhlIHBhZ2UgbG9hZHMsIHVubGVzcyB0aGUgdXNlciBvdmVycmlkZXMgaXQsIGZvciBleGFtcGxlIGJ5IHR5cGluZyBpbiBhIGRpZmZlcmVudCBjb250cm9sLiBPbmx5IG9uZSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudCBpbiBhIGRvY3VtZW50IGNhbiBoYXZlIHRoaXMgYXR0cmlidXRlIHNwZWNpZmllZC4ifX0se25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBjYW5ub3QgaW50ZXJhY3Qgd2l0aCB0aGUgYnV0dG9uLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgYnV0dG9uIGluaGVyaXRzIGl0cyBzZXR0aW5nIGZyb20gdGhlIGNvbnRhaW5pbmcgZWxlbWVudCwgZm9yIGV4YW1wbGUgW2A8ZmllbGRzZXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ZpZWxkc2V0ICJUaGUgSFRNTCA8ZmllbGRzZXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBncm91cCBzZXZlcmFsIGNvbnRyb2xzIGFzIHdlbGwgYXMgbGFiZWxzICg8bGFiZWw+KSB3aXRoaW4gYSB3ZWIgZm9ybS4iKTsgaWYgdGhlcmUgaXMgbm8gY29udGFpbmluZyBlbGVtZW50IHdpdGggdGhlICoqZGlzYWJsZWQqKiBhdHRyaWJ1dGUgc2V0LCB0aGVuIHRoZSBidXR0b24gaXMgZW5hYmxlZC5cblxuRmlyZWZveCB3aWxsLCB1bmxpa2Ugb3RoZXIgYnJvd3NlcnMsIGJ5IGRlZmF1bHQsIFtwZXJzaXN0IHRoZSBkeW5hbWljIGRpc2FibGVkIHN0YXRlXShodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81OTg1ODM5L2J1Zy13aXRoLWZpcmVmb3gtZGlzYWJsZWQtYXR0cmlidXRlLW9mLWlucHV0LW5vdC1yZXNldHRpbmctd2hlbi1yZWZyZXNoaW5nKSBvZiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBhY3Jvc3MgcGFnZSBsb2Fkcy4gVXNlIHRoZSBbYGF1dG9jb21wbGV0ZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24jYXR0ci1hdXRvY29tcGxldGUpIGF0dHJpYnV0ZSB0byBjb250cm9sIHRoaXMgZmVhdHVyZS4nfX0se25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBmb3JtIGVsZW1lbnQgdGhhdCB0aGUgYnV0dG9uIGlzIGFzc29jaWF0ZWQgd2l0aCAoaXRzIF9mb3JtIG93bmVyXykuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIG11c3QgYmUgdGhlICoqaWQqKiBhdHRyaWJ1dGUgb2YgYSBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50LiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgYDxidXR0b24+YCBlbGVtZW50IHdpbGwgYmUgYXNzb2NpYXRlZCB0byBhbiBhbmNlc3RvciBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50LCBpZiBvbmUgZXhpc3RzLiBUaGlzIGF0dHJpYnV0ZSBlbmFibGVzIHlvdSB0byBhc3NvY2lhdGUgYDxidXR0b24+YCBlbGVtZW50cyB0byBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50cyBhbnl3aGVyZSB3aXRoaW4gYSBkb2N1bWVudCwgbm90IGp1c3QgYXMgZGVzY2VuZGFudHMgb2YgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudHMuJ319LHtuYW1lOiJmb3JtYWN0aW9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgVVJJIG9mIGEgcHJvZ3JhbSB0aGF0IHByb2Nlc3NlcyB0aGUgaW5mb3JtYXRpb24gc3VibWl0dGVkIGJ5IHRoZSBidXR0b24uIElmIHNwZWNpZmllZCwgaXQgb3ZlcnJpZGVzIHRoZSBbYGFjdGlvbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtI2F0dHItYWN0aW9uKSBhdHRyaWJ1dGUgb2YgdGhlIGJ1dHRvbidzIGZvcm0gb3duZXIuIn19LHtuYW1lOiJmb3JtZW5jdHlwZSIsdmFsdWVTZXQ6ImV0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidJZiB0aGUgYnV0dG9uIGlzIGEgc3VibWl0IGJ1dHRvbiwgdGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGNvbnRlbnQgdGhhdCBpcyB1c2VkIHRvIHN1Ym1pdCB0aGUgZm9ybSB0byB0aGUgc2VydmVyLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGA6IFRoZSBkZWZhdWx0IHZhbHVlIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZC5cbiogICBgbXVsdGlwYXJ0L2Zvcm0tZGF0YWA6IFVzZSB0aGlzIHZhbHVlIGlmIHlvdSBhcmUgdXNpbmcgYW4gW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudCB3aXRoIHRoZSBbYHR5cGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQjYXR0ci10eXBlKSBhdHRyaWJ1dGUgc2V0IHRvIGBmaWxlYC5cbiogICBgdGV4dC9wbGFpbmBcblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLCBpdCBvdmVycmlkZXMgdGhlIFtgZW5jdHlwZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtI2F0dHItZW5jdHlwZSkgYXR0cmlidXRlIG9mIHRoZSBidXR0b25cJ3MgZm9ybSBvd25lci4nfX0se25hbWU6ImZvcm1tZXRob2QiLHZhbHVlU2V0OiJmbSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhlIGJ1dHRvbiBpcyBhIHN1Ym1pdCBidXR0b24sIHRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgSFRUUCBtZXRob2QgdGhhdCB0aGUgYnJvd3NlciB1c2VzIHRvIHN1Ym1pdCB0aGUgZm9ybS4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBwb3N0YDogVGhlIGRhdGEgZnJvbSB0aGUgZm9ybSBhcmUgaW5jbHVkZWQgaW4gdGhlIGJvZHkgb2YgdGhlIGZvcm0gYW5kIHNlbnQgdG8gdGhlIHNlcnZlci5cbiogICBgZ2V0YDogVGhlIGRhdGEgZnJvbSB0aGUgZm9ybSBhcmUgYXBwZW5kZWQgdG8gdGhlICoqZm9ybSoqIGF0dHJpYnV0ZSBVUkksIHdpdGggYSAnPycgYXMgYSBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0aW5nIFVSSSBpcyBzZW50IHRvIHRoZSBzZXJ2ZXIuIFVzZSB0aGlzIG1ldGhvZCB3aGVuIHRoZSBmb3JtIGhhcyBubyBzaWRlLWVmZmVjdHMgYW5kIGNvbnRhaW5zIG9ubHkgQVNDSUkgY2hhcmFjdGVycy5cblxuSWYgc3BlY2lmaWVkLCB0aGlzIGF0dHJpYnV0ZSBvdmVycmlkZXMgdGhlIFtgbWV0aG9kYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0jYXR0ci1tZXRob2QpIGF0dHJpYnV0ZSBvZiB0aGUgYnV0dG9uJ3MgZm9ybSBvd25lci4ifX0se25hbWU6ImZvcm1ub3ZhbGlkYXRlIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhlIGJ1dHRvbiBpcyBhIHN1Ym1pdCBidXR0b24sIHRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoYXQgdGhlIGZvcm0gaXMgbm90IHRvIGJlIHZhbGlkYXRlZCB3aGVuIGl0IGlzIHN1Ym1pdHRlZC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLCBpdCBvdmVycmlkZXMgdGhlIFtgbm92YWxpZGF0ZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtI2F0dHItbm92YWxpZGF0ZSkgYXR0cmlidXRlIG9mIHRoZSBidXR0b24ncyBmb3JtIG93bmVyLiJ9fSx7bmFtZToiZm9ybXRhcmdldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhlIGJ1dHRvbiBpcyBhIHN1Ym1pdCBidXR0b24sIHRoaXMgYXR0cmlidXRlIGlzIGEgbmFtZSBvciBrZXl3b3JkIGluZGljYXRpbmcgd2hlcmUgdG8gZGlzcGxheSB0aGUgcmVzcG9uc2UgdGhhdCBpcyByZWNlaXZlZCBhZnRlciBzdWJtaXR0aW5nIHRoZSBmb3JtLiBUaGlzIGlzIGEgbmFtZSBvZiwgb3Iga2V5d29yZCBmb3IsIGEgX2Jyb3dzaW5nIGNvbnRleHRfIChmb3IgZXhhbXBsZSwgdGFiLCB3aW5kb3csIG9yIGlubGluZSBmcmFtZSkuIElmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgaXQgb3ZlcnJpZGVzIHRoZSBbYHRhcmdldGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtI2F0dHItdGFyZ2V0KSBhdHRyaWJ1dGUgb2YgdGhlIGJ1dHRvbidzIGZvcm0gb3duZXIuIFRoZSBmb2xsb3dpbmcga2V5d29yZHMgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOlxuXG4qICAgYF9zZWxmYDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgc2FtZSBicm93c2luZyBjb250ZXh0IGFzIHRoZSBjdXJyZW50IG9uZS4gVGhpcyB2YWx1ZSBpcyB0aGUgZGVmYXVsdCBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQuXG4qICAgYF9ibGFua2A6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gYSBuZXcgdW5uYW1lZCBicm93c2luZyBjb250ZXh0LlxuKiAgIGBfcGFyZW50YDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgcGFyZW50IGJyb3dzaW5nIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgb25lLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgb3B0aW9uIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG4qICAgYF90b3BgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCAodGhhdCBpcywgdGhlIGJyb3dzaW5nIGNvbnRleHQgdGhhdCBpcyBhbiBhbmNlc3RvciBvZiB0aGUgY3VycmVudCBvbmUsIGFuZCBoYXMgbm8gcGFyZW50KS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIG9wdGlvbiBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLiJ9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5hbWUgb2YgdGhlIGJ1dHRvbiwgd2hpY2ggaXMgc3VibWl0dGVkIHdpdGggdGhlIGZvcm0gZGF0YS4ifX0se25hbWU6InR5cGUiLHZhbHVlU2V0OiJidCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHR5cGUgb2YgdGhlIGJ1dHRvbi4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBzdWJtaXRgOiBUaGUgYnV0dG9uIHN1Ym1pdHMgdGhlIGZvcm0gZGF0YSB0byB0aGUgc2VydmVyLiBUaGlzIGlzIHRoZSBkZWZhdWx0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgb3IgaWYgdGhlIGF0dHJpYnV0ZSBpcyBkeW5hbWljYWxseSBjaGFuZ2VkIHRvIGFuIGVtcHR5IG9yIGludmFsaWQgdmFsdWUuXG4qICAgYHJlc2V0YDogVGhlIGJ1dHRvbiByZXNldHMgYWxsIHRoZSBjb250cm9scyB0byB0aGVpciBpbml0aWFsIHZhbHVlcy5cbiogICBgYnV0dG9uYDogVGhlIGJ1dHRvbiBoYXMgbm8gZGVmYXVsdCBiZWhhdmlvci4gSXQgY2FuIGhhdmUgY2xpZW50LXNpZGUgc2NyaXB0cyBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnQncyBldmVudHMsIHdoaWNoIGFyZSB0cmlnZ2VyZWQgd2hlbiB0aGUgZXZlbnRzIG9jY3VyLiJ9fSx7bmFtZToidmFsdWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBidXR0b24uIEl0IGRlZmluZXMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgYnV0dG9uIHdoaWNoIGlzIHN1Ym1pdHRlZCB3aXRoIHRoZSBmb3JtIGRhdGEuIFRoaXMgdmFsdWUgaXMgcGFzc2VkIHRvIHRoZSBzZXJ2ZXIgaW4gcGFyYW1zIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkLiJ9fSx7bmFtZToiYXV0b2NvbXBsZXRlIixkZXNjcmlwdGlvbjonVGhlIHVzZSBvZiB0aGlzIGF0dHJpYnV0ZSBvbiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBpcyBub25zdGFuZGFyZCBhbmQgRmlyZWZveC1zcGVjaWZpYy4gQnkgZGVmYXVsdCwgdW5saWtlIG90aGVyIGJyb3dzZXJzLCBbRmlyZWZveCBwZXJzaXN0cyB0aGUgZHluYW1pYyBkaXNhYmxlZCBzdGF0ZV0oaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTk4NTgzOS9idWctd2l0aC1maXJlZm94LWRpc2FibGVkLWF0dHJpYnV0ZS1vZi1pbnB1dC1ub3QtcmVzZXR0aW5nLXdoZW4tcmVmcmVzaGluZykgb2YgYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgYWNyb3NzIHBhZ2UgbG9hZHMuIFNldHRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIHRvIGBvZmZgIChpLmUuIGBhdXRvY29tcGxldGU9Im9mZiJgKSBkaXNhYmxlcyB0aGlzIGZlYXR1cmUuIFNlZSBbYnVnwqA2NTQwNzJdKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY1NDA3MiAiaWYgZGlzYWJsZWQgc3RhdGUgaXMgY2hhbmdlZCB3aXRoIGphdmFzY3JpcHQsIHRoZSBub3JtYWwgc3RhdGUgZG9lc25cJ3QgcmV0dXJuIGFmdGVyIHJlZnJlc2hpbmcgdGhlIHBhZ2UiKS4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiJ9XX0se25hbWU6InNlbGVjdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNlbGVjdCBlbGVtZW50IHJlcHJlc2VudHMgYSBjb250cm9sIGZvciBzZWxlY3RpbmcgYW1vbmdzdCBhIHNldCBvZiBvcHRpb25zLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhdXRvY29tcGxldGUiLHZhbHVlU2V0OiJpbnB1dGF1dG9jb21wbGV0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBbYERPTVN0cmluZ2BdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9ET01TdHJpbmcgIkRPTVN0cmluZyBpcyBhIFVURi0xNiBTdHJpbmcuIEFzIEphdmFTY3JpcHQgYWxyZWFkeSB1c2VzIHN1Y2ggc3RyaW5ncywgRE9NU3RyaW5nIGlzIG1hcHBlZCBkaXJlY3RseSB0byBhIFN0cmluZy4iKSBwcm92aWRpbmcgYSBoaW50IGZvciBhIFt1c2VyIGFnZW50XCdzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3VzZXJfYWdlbnQgInVzZXIgYWdlbnRcJ3M6IEEgdXNlciBhZ2VudCBpcyBhIGNvbXB1dGVyIHByb2dyYW0gcmVwcmVzZW50aW5nIGEgcGVyc29uLCBmb3IgZXhhbXBsZSwgYSBicm93c2VyIGluIGEgV2ViIGNvbnRleHQuIikgYXV0b2NvbXBsZXRlIGZlYXR1cmUuIFNlZSBbVGhlIEhUTUwgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9BdHRyaWJ1dGVzL2F1dG9jb21wbGV0ZSkgZm9yIGEgY29tcGxldGUgbGlzdCBvZiB2YWx1ZXMgYW5kIGRldGFpbHMgb24gaG93IHRvIHVzZSBhdXRvY29tcGxldGUuJ319LHtuYW1lOiJhdXRvZm9jdXMiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGxldHMgeW91IHNwZWNpZnkgdGhhdCBhIGZvcm0gY29udHJvbCBzaG91bGQgaGF2ZSBpbnB1dCBmb2N1cyB3aGVuIHRoZSBwYWdlIGxvYWRzLiBPbmx5IG9uZSBmb3JtIGVsZW1lbnQgaW4gYSBkb2N1bWVudCBjYW4gaGF2ZSB0aGUgYGF1dG9mb2N1c2AgYXR0cmlidXRlLiJ9fSx7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBpbnRlcmFjdCB3aXRoIHRoZSBjb250cm9sLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgY29udHJvbCBpbmhlcml0cyBpdHMgc2V0dGluZyBmcm9tIHRoZSBjb250YWluaW5nIGVsZW1lbnQsIGZvciBleGFtcGxlIGBmaWVsZHNldGA7IGlmIHRoZXJlIGlzIG5vIGNvbnRhaW5pbmcgZWxlbWVudCB3aXRoIHRoZSBgZGlzYWJsZWRgIGF0dHJpYnV0ZSBzZXQsIHRoZW4gdGhlIGNvbnRyb2wgaXMgZW5hYmxlZC4ifX0se25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGxldHMgeW91IHNwZWNpZnkgdGhlIGZvcm0gZWxlbWVudCB0b8Kgd2hpY2jCoHRoZSBzZWxlY3QgZWxlbWVudCBpcyBhc3NvY2lhdGVkwqAodGhhdCBpcywgaXRzICJmb3JtIG93bmVyIikuIElmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgaXRzIHZhbHVlIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIGBpZGAgb2YgYSBmb3JtIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIFRoaXMgZW5hYmxlcyB5b3UgdG8gcGxhY2Ugc2VsZWN0IGVsZW1lbnRzIGFueXdoZXJlIHdpdGhpbiBhIGRvY3VtZW50LCBub3QganVzdCBhcyBkZXNjZW5kYW50cyBvZiB0aGVpciBmb3JtIGVsZW1lbnRzLid9fSx7bmFtZToibXVsdGlwbGUiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IG11bHRpcGxlIG9wdGlvbnMgY2FuIGJlIHNlbGVjdGVkIGluIHRoZSBsaXN0LiBJZiBpdCBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIG9ubHkgb25lIG9wdGlvbiBjYW4gYmUgc2VsZWN0ZWQgYXQgYSB0aW1lLiBXaGVuIGBtdWx0aXBsZWAgaXMgc3BlY2lmaWVkLCBtb3N0IGJyb3dzZXJzIHdpbGwgc2hvdyBhIHNjcm9sbGluZyBsaXN0IGJveCBpbnN0ZWFkIG9mIGEgc2luZ2xlIGxpbmUgZHJvcGRvd24uIn19LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2wuIn19LHtuYW1lOiJyZXF1aXJlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGluZyB0aGF0IGFuIG9wdGlvbiB3aXRoIGEgbm9uLWVtcHR5IHN0cmluZyB2YWx1ZSBtdXN0IGJlIHNlbGVjdGVkLiJ9fSx7bmFtZToic2l6ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhlIGNvbnRyb2wgaXMgcHJlc2VudGVkIGFzIGEgc2Nyb2xsaW5nIGxpc3QgYm94IChlLmcuIHdoZW4gYG11bHRpcGxlYCBpcyBzcGVjaWZpZWQpLCB0aGlzIGF0dHJpYnV0ZSByZXByZXNlbnRzIHRoZSBudW1iZXIgb2Ygcm93cyBpbiB0aGUgbGlzdCB0aGF0IHNob3VsZCBiZSB2aXNpYmxlIGF0IG9uZSB0aW1lLiBCcm93c2VycyBhcmUgbm90IHJlcXVpcmVkIHRvIHByZXNlbnQgYSBzZWxlY3QgZWxlbWVudCBhcyBhIHNjcm9sbGVkIGxpc3QgYm94LiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwLlxuXG4qKk5vdGU6KiogQWNjb3JkaW5nIHRvIHRoZSBIVE1MNSBzcGVjaWZpY2F0aW9uLCB0aGUgZGVmYXVsdCB2YWx1ZSBmb3Igc2l6ZSBzaG91bGQgYmUgMTsgaG93ZXZlciwgaW4gcHJhY3RpY2UsIHRoaXMgaGFzIGJlZW4gZm91bmQgdG8gYnJlYWsgc29tZSB3ZWIgc2l0ZXMsIGFuZCBubyBvdGhlciBicm93c2VyIGN1cnJlbnRseSBkb2VzIHRoYXQsIHNvIE1vemlsbGEgaGFzIG9wdGVkIHRvIGNvbnRpbnVlIHRvIHJldHVybiAwIGZvciB0aGUgdGltZSBiZWluZyB3aXRoIEZpcmVmb3guIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2VsZWN0In1dfSx7bmFtZToiZGF0YWxpc3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkYXRhbGlzdCBlbGVtZW50IHJlcHJlc2VudHMgYSBzZXQgb2Ygb3B0aW9uIGVsZW1lbnRzIHRoYXQgcmVwcmVzZW50IHByZWRlZmluZWQgb3B0aW9ucyBmb3Igb3RoZXIgY29udHJvbHMuIEluIHRoZSByZW5kZXJpbmcsIHRoZSBkYXRhbGlzdCBlbGVtZW50IHJlcHJlc2VudHMgbm90aGluZyBhbmQgaXQsIGFsb25nIHdpdGggaXRzIGNoaWxkcmVuLCBzaG91bGQgYmUgaGlkZGVuLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RhdGFsaXN0In1dfSx7bmFtZToib3B0Z3JvdXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBvcHRncm91cCBlbGVtZW50IHJlcHJlc2VudHMgYSBncm91cCBvZiBvcHRpb24gZWxlbWVudHMgd2l0aCBhIGNvbW1vbiBsYWJlbC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGlzIEJvb2xlYW4gYXR0cmlidXRlIGlzIHNldCwgbm9uZSBvZiB0aGUgaXRlbXMgaW4gdGhpcyBvcHRpb24gZ3JvdXAgaXMgc2VsZWN0YWJsZS4gT2Z0ZW4gYnJvd3NlcnMgZ3JleSBvdXQgc3VjaCBjb250cm9sIGFuZCBpdCB3b24ndCByZWNlaXZlIGFueSBicm93c2luZyBldmVudHMsIGxpa2UgbW91c2UgY2xpY2tzIG9yIGZvY3VzLXJlbGF0ZWQgb25lcy4ifX0se25hbWU6ImxhYmVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBvZiB0aGUgZ3JvdXAgb2Ygb3B0aW9ucywgd2hpY2ggdGhlIGJyb3dzZXIgY2FuIHVzZSB3aGVuIGxhYmVsaW5nIHRoZSBvcHRpb25zIGluIHRoZSB1c2VyIGludGVyZmFjZS4gVGhpcyBhdHRyaWJ1dGUgaXMgbWFuZGF0b3J5IGlmIHRoaXMgZWxlbWVudCBpcyB1c2VkLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29wdGdyb3VwIn1dfSx7bmFtZToib3B0aW9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgb3B0aW9uIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBvcHRpb24gaW4gYSBzZWxlY3QgZWxlbWVudCBvciBhcyBwYXJ0IG9mIGEgbGlzdCBvZiBzdWdnZXN0aW9ucyBpbiBhIGRhdGFsaXN0IGVsZW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSWYgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpcyBzZXQsIHRoaXMgb3B0aW9uIGlzIG5vdCBjaGVja2FibGUuIE9mdGVuIGJyb3dzZXJzIGdyZXkgb3V0IHN1Y2ggY29udHJvbCBhbmQgaXQgd29uXCd0IHJlY2VpdmUgYW55IGJyb3dzaW5nIGV2ZW50LCBsaWtlIG1vdXNlIGNsaWNrcyBvciBmb2N1cy1yZWxhdGVkIG9uZXMuIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQsIHRoZSBlbGVtZW50IGNhbiBzdGlsbCBiZSBkaXNhYmxlZCBpZiBvbmUgb2YgaXRzIGFuY2VzdG9ycyBpcyBhIGRpc2FibGVkIFtgPG9wdGdyb3VwPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vcHRncm91cCAiVGhlIEhUTUwgPG9wdGdyb3VwPiBlbGVtZW50IGNyZWF0ZXMgYSBncm91cGluZyBvZiBvcHRpb25zIHdpdGhpbiBhIDxzZWxlY3Q+IGVsZW1lbnQuIikgZWxlbWVudC4nfX0se25hbWU6ImxhYmVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpcyB0ZXh0IGZvciB0aGUgbGFiZWwgaW5kaWNhdGluZyB0aGUgbWVhbmluZyBvZiB0aGUgb3B0aW9uLiBJZiB0aGUgYGxhYmVsYCBhdHRyaWJ1dGUgaXNuJ3QgZGVmaW5lZCwgaXRzIHZhbHVlIGlzIHRoYXQgb2YgdGhlIGVsZW1lbnQgdGV4dCBjb250ZW50LiJ9fSx7bmFtZToic2VsZWN0ZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidJZiBwcmVzZW50LCB0aGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBvcHRpb24gaXMgaW5pdGlhbGx5IHNlbGVjdGVkLiBJZiB0aGUgYDxvcHRpb24+YCBlbGVtZW50IGlzIHRoZSBkZXNjZW5kYW50IG9mIGEgW2A8c2VsZWN0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zZWxlY3QgIlRoZSBIVE1MIDxzZWxlY3Q+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNvbnRyb2wgdGhhdCBwcm92aWRlcyBhIG1lbnUgb2Ygb3B0aW9ucyIpIGVsZW1lbnQgd2hvc2UgW2BtdWx0aXBsZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zZWxlY3QjYXR0ci1tdWx0aXBsZSkgYXR0cmlidXRlIGlzIG5vdCBzZXQsIG9ubHkgb25lIHNpbmdsZSBgPG9wdGlvbj5gIG9mIHRoaXMgW2A8c2VsZWN0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zZWxlY3QgIlRoZSBIVE1MIDxzZWxlY3Q+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNvbnRyb2wgdGhhdCBwcm92aWRlcyBhIG1lbnUgb2Ygb3B0aW9ucyIpIGVsZW1lbnQgbWF5IGhhdmUgdGhlIGBzZWxlY3RlZGAgYXR0cmlidXRlLid9fSx7bmFtZToidmFsdWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjb250ZW50IG9mIHRoaXMgYXR0cmlidXRlIHJlcHJlc2VudHMgdGhlIHZhbHVlIHRvIGJlIHN1Ym1pdHRlZCB3aXRoIHRoZSBmb3JtLCBzaG91bGQgdGhpcyBvcHRpb24gYmUgc2VsZWN0ZWQuwqBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBvbWl0dGVkLCB0aGUgdmFsdWUgaXMgdGFrZW4gZnJvbSB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBvcHRpb24gZWxlbWVudC4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vcHRpb24ifV19LHtuYW1lOiJ0ZXh0YXJlYSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRleHRhcmVhIGVsZW1lbnQgcmVwcmVzZW50cyBhIG11bHRpbGluZSBwbGFpbiB0ZXh0IGVkaXQgY29udHJvbCBmb3IgdGhlIGVsZW1lbnQncyByYXcgdmFsdWUuIFRoZSBjb250ZW50cyBvZiB0aGUgY29udHJvbCByZXByZXNlbnQgdGhlIGNvbnRyb2wncyBkZWZhdWx0IHZhbHVlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhdXRvY29tcGxldGUiLHZhbHVlU2V0OiJpbnB1dGF1dG9jb21wbGV0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIGNhbiBiZSBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlZCBieSB0aGUgYnJvd3Nlci4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBvZmZgOiBUaGUgdXNlciBtdXN0IGV4cGxpY2l0bHkgZW50ZXIgYSB2YWx1ZSBpbnRvIHRoaXMgZmllbGQgZm9yIGV2ZXJ5IHVzZSwgb3IgdGhlIGRvY3VtZW50IHByb3ZpZGVzIGl0cyBvd24gYXV0by1jb21wbGV0aW9uIG1ldGhvZDsgdGhlIGJyb3dzZXIgZG9lcyBub3QgYXV0b21hdGljYWxseSBjb21wbGV0ZSB0aGUgZW50cnkuXG4qICAgYG9uYDogVGhlIGJyb3dzZXIgY2FuIGF1dG9tYXRpY2FsbHkgY29tcGxldGUgdGhlIHZhbHVlIGJhc2VkIG9uIHZhbHVlcyB0aGF0IHRoZSB1c2VyIGhhcyBlbnRlcmVkIGR1cmluZyBwcmV2aW91cyB1c2VzLlxuXG5JZiB0aGUgYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQgb24gYSBgPHRleHRhcmVhPmAgZWxlbWVudCwgdGhlbiB0aGUgYnJvd3NlciB1c2VzIHRoZSBgYXV0b2NvbXBsZXRlYCBhdHRyaWJ1dGUgdmFsdWUgb2YgdGhlIGA8dGV4dGFyZWE+YCBlbGVtZW50XCdzIGZvcm0gb3duZXIuIFRoZSBmb3JtIG93bmVyIGlzIGVpdGhlciB0aGUgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCB0aGF0IHRoaXMgYDx0ZXh0YXJlYT5gIGVsZW1lbnQgaXMgYSBkZXNjZW5kYW50IG9mIG9yIHRoZSBmb3JtIGVsZW1lbnQgd2hvc2UgYGlkYCBpcyBzcGVjaWZpZWQgYnkgdGhlIGBmb3JtYCBhdHRyaWJ1dGUgb2YgdGhlIGlucHV0IGVsZW1lbnQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIFtgYXV0b2NvbXBsZXRlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0jYXR0ci1hdXRvY29tcGxldGUpIGF0dHJpYnV0ZSBpbiBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKS4nfX0se25hbWU6ImF1dG9mb2N1cyIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgbGV0cyB5b3Ugc3BlY2lmeSB0aGF0IGEgZm9ybSBjb250cm9sIHNob3VsZCBoYXZlIGlucHV0IGZvY3VzIHdoZW4gdGhlIHBhZ2UgbG9hZHMuIE9ubHkgb25lIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50IGluIGEgZG9jdW1lbnQgY2FuIGhhdmUgdGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVkLiJ9fSx7bmFtZToiY29scyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHZpc2libGUgd2lkdGggb2YgdGhlIHRleHQgY29udHJvbCwgaW4gYXZlcmFnZSBjaGFyYWN0ZXIgd2lkdGhzLiBJZiBpdCBpcyBzcGVjaWZpZWQsIGl0IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLiBJZiBpdCBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBgMjBgLiJ9fSx7bmFtZToiZGlybmFtZSJ9LHtuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgY2Fubm90IGludGVyYWN0IHdpdGggdGhlIGNvbnRyb2wuIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBjb250cm9sIGluaGVyaXRzIGl0cyBzZXR0aW5nIGZyb20gdGhlIGNvbnRhaW5pbmcgZWxlbWVudCwgZm9yIGV4YW1wbGUgW2A8ZmllbGRzZXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ZpZWxkc2V0ICJUaGUgSFRNTCA8ZmllbGRzZXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBncm91cCBzZXZlcmFsIGNvbnRyb2xzIGFzIHdlbGwgYXMgbGFiZWxzICg8bGFiZWw+KSB3aXRoaW4gYSB3ZWIgZm9ybS4iKTsgaWYgdGhlcmUgaXMgbm8gY29udGFpbmluZyBlbGVtZW50IHdoZW4gdGhlIGBkaXNhYmxlZGAgYXR0cmlidXRlIGlzIHNldCwgdGhlIGNvbnRyb2wgaXMgZW5hYmxlZC4nfX0se25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBmb3JtIGVsZW1lbnQgdGhhdCB0aGUgYDx0ZXh0YXJlYT5gIGVsZW1lbnQgaXMgYXNzb2NpYXRlZCB3aXRoIChpdHMgImZvcm0gb3duZXIiKS4gVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgbXVzdCBiZSB0aGUgYGlkYCBvZiBhIGZvcm0gZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGA8dGV4dGFyZWE+YCBlbGVtZW50IG11c3QgYmUgYSBkZXNjZW5kYW50IG9mIGEgZm9ybSBlbGVtZW50LiBUaGlzIGF0dHJpYnV0ZSBlbmFibGVzIHlvdSB0byBwbGFjZSBgPHRleHRhcmVhPmAgZWxlbWVudHMgYW55d2hlcmUgd2l0aGluIGEgZG9jdW1lbnQsIG5vdCBqdXN0IGFzIGRlc2NlbmRhbnRzIG9mIGZvcm0gZWxlbWVudHMuJ319LHtuYW1lOiJpbnB1dG1vZGUiLHZhbHVlU2V0OiJpbSJ9LHtuYW1lOiJtYXhsZW5ndGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzICh1bmljb2RlIGNvZGUgcG9pbnRzKSB0aGF0IHRoZSB1c2VyIGNhbiBlbnRlci4gSWYgdGhpcyB2YWx1ZSBpc24ndCBzcGVjaWZpZWQsIHRoZSB1c2VyIGNhbiBlbnRlciBhbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMuIn19LHtuYW1lOiJtaW5sZW5ndGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtaW5pbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzICh1bmljb2RlIGNvZGUgcG9pbnRzKSByZXF1aXJlZCB0aGF0IHRoZSB1c2VyIHNob3VsZCBlbnRlci4ifX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYW1lIG9mIHRoZSBjb250cm9sLiJ9fSx7bmFtZToicGxhY2Vob2xkZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0EgaGludCB0byB0aGUgdXNlciBvZiB3aGF0IGNhbiBiZSBlbnRlcmVkIGluIHRoZSBjb250cm9sLiBDYXJyaWFnZSByZXR1cm5zIG9yIGxpbmUtZmVlZHMgd2l0aGluIHRoZSBwbGFjZWhvbGRlciB0ZXh0IG11c3QgYmUgdHJlYXRlZCBhcyBsaW5lIGJyZWFrcyB3aGVuIHJlbmRlcmluZyB0aGUgaGludC5cblxuKipOb3RlOioqIFBsYWNlaG9sZGVycyBzaG91bGQgb25seSBiZSB1c2VkIHRvIHNob3cgYW4gZXhhbXBsZSBvZiB0aGUgdHlwZSBvZiBkYXRhIHRoYXQgc2hvdWxkIGJlIGVudGVyZWQgaW50byBhIGZvcm07IHRoZXkgYXJlIF9ub3RfIGEgc3Vic3RpdHV0ZSBmb3IgYSBwcm9wZXIgW2A8bGFiZWw+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xhYmVsICJUaGUgSFRNTCA8bGFiZWw+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNhcHRpb24gZm9yIGFuIGl0ZW0gaW4gYSB1c2VyIGludGVyZmFjZS4iKSBlbGVtZW50IHRpZWQgdG8gdGhlIGlucHV0LiBTZWUgW0xhYmVscyBhbmQgcGxhY2Vob2xkZXJzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQjTGFiZWxzX2FuZF9wbGFjZWhvbGRlcnMgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBpbiBbPGlucHV0PjogVGhlIElucHV0IChGb3JtIElucHV0KSBlbGVtZW50XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBmb3IgYSBmdWxsIGV4cGxhbmF0aW9uLid9fSx7bmFtZToicmVhZG9ubHkiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBtb2RpZnkgdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sLiBVbmxpa2UgdGhlIGBkaXNhYmxlZGAgYXR0cmlidXRlLCB0aGUgYHJlYWRvbmx5YCBhdHRyaWJ1dGUgZG9lcyBub3QgcHJldmVudCB0aGUgdXNlciBmcm9tIGNsaWNraW5nIG9yIHNlbGVjdGluZyBpbiB0aGUgY29udHJvbC4gVGhlIHZhbHVlIG9mIGEgcmVhZC1vbmx5IGNvbnRyb2wgaXMgc3RpbGwgc3VibWl0dGVkIHdpdGggdGhlIGZvcm0uIn19LHtuYW1lOiJyZXF1aXJlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGF0IHRoZSB1c2VyIG11c3QgZmlsbCBpbiBhIHZhbHVlIGJlZm9yZSBzdWJtaXR0aW5nIGEgZm9ybS4ifX0se25hbWU6InJvd3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBudW1iZXIgb2YgdmlzaWJsZSB0ZXh0IGxpbmVzIGZvciB0aGUgY29udHJvbC4ifX0se25hbWU6IndyYXAiLHZhbHVlU2V0OiJ3IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgaG93IHRoZSBjb250cm9sIHdyYXBzIHRleHQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgaGFyZGA6IFRoZSBicm93c2VyIGF1dG9tYXRpY2FsbHkgaW5zZXJ0cyBsaW5lIGJyZWFrcyAoQ1IrTEYpIHNvIHRoYXQgZWFjaCBsaW5lIGhhcyBubyBtb3JlIHRoYW4gdGhlIHdpZHRoIG9mIHRoZSBjb250cm9sOyB0aGUgYGNvbHNgIGF0dHJpYnV0ZSBtdXN0IGFsc28gYmUgc3BlY2lmaWVkIGZvciB0aGlzIHRvIHRha2UgZWZmZWN0LlxuKiAgIGBzb2Z0YDogVGhlIGJyb3dzZXIgZW5zdXJlcyB0aGF0IGFsbCBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUgY29uc2lzdCBvZiBhIENSK0xGIHBhaXIsIGJ1dCBkb2VzIG5vdCBpbnNlcnQgYW55IGFkZGl0aW9uYWwgbGluZSBicmVha3MuXG4qICAgYG9mZmAgOiBMaWtlIGBzb2Z0YCBidXQgY2hhbmdlcyBhcHBlYXJhbmNlIHRvIGB3aGl0ZS1zcGFjZTogcHJlYCBzbyBsaW5lIHNlZ21lbnRzIGV4Y2VlZGluZyBgY29sc2AgYXJlIG5vdCB3cmFwcGVkIGFuZCB0aGUgYDx0ZXh0YXJlYT5gIGJlY29tZXMgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGUuXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIGBzb2Z0YCBpcyBpdHMgZGVmYXVsdCB2YWx1ZS4ifX0se25hbWU6ImF1dG9jYXBpdGFsaXplIixkZXNjcmlwdGlvbjoiVGhpcyBpcyBhIG5vbi1zdGFuZGFyZCBhdHRyaWJ1dGUgc3VwcG9ydGVkIGJ5IFdlYktpdCBvbiBpT1MgKHRoZXJlZm9yZSBuZWFybHkgYWxsIGJyb3dzZXJzIHJ1bm5pbmcgb24gaU9TLCBpbmNsdWRpbmcgU2FmYXJpLCBGaXJlZm94LCBhbmQgQ2hyb21lKSwgd2hpY2ggY29udHJvbHMgd2hldGhlciBhbmQgaG93IHRoZSB0ZXh0IHZhbHVlIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGNhcGl0YWxpemVkIGFzIGl0IGlzIGVudGVyZWQvZWRpdGVkIGJ5IHRoZSB1c2VyLiBUaGUgbm9uLWRlcHJlY2F0ZWQgdmFsdWVzIGFyZSBhdmFpbGFibGUgaW4gaU9TIDUgYW5kIGxhdGVyLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYG5vbmVgOiBDb21wbGV0ZWx5IGRpc2FibGVzIGF1dG9tYXRpYyBjYXBpdGFsaXphdGlvbi5cbiogICBgc2VudGVuY2VzYDogQXV0b21hdGljYWxseSBjYXBpdGFsaXplIHRoZSBmaXJzdCBsZXR0ZXIgb2Ygc2VudGVuY2VzLlxuKiAgIGB3b3Jkc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIHdvcmRzLlxuKiAgIGBjaGFyYWN0ZXJzYDogQXV0b21hdGljYWxseSBjYXBpdGFsaXplIGFsbCBjaGFyYWN0ZXJzLlxuKiAgIGBvbmA6IERlcHJlY2F0ZWQgc2luY2UgaU9TIDUuXG4qICAgYG9mZmA6IERlcHJlY2F0ZWQgc2luY2UgaU9TIDUuIn0se25hbWU6InNwZWxsY2hlY2siLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciB0aGUgYDx0ZXh0YXJlYT5gIGlzIHN1YmplY3QgdG8gc3BlbGwgY2hlY2tpbmcgYnkgdGhlIHVuZGVybHlpbmcgYnJvd3Nlci9PUy4gdGhlIHZhbHVlIGNhbiBiZTpcblxuKiAgIGB0cnVlYDogSW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgbmVlZHMgdG8gaGF2ZSBpdHMgc3BlbGxpbmcgYW5kIGdyYW1tYXIgY2hlY2tlZC5cbiogICBgZGVmYXVsdGAgOiBJbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBpcyB0byBhY3QgYWNjb3JkaW5nIHRvIGEgZGVmYXVsdCBiZWhhdmlvciwgcG9zc2libHkgYmFzZWQgb24gdGhlIHBhcmVudCBlbGVtZW50J3Mgb3duIGBzcGVsbGNoZWNrYCB2YWx1ZS5cbiogICBgZmFsc2VgIDogSW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBzcGVsbCBjaGVja2VkLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGV4dGFyZWEifV19LHtuYW1lOiJvdXRwdXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBvdXRwdXQgZWxlbWVudCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYSBjYWxjdWxhdGlvbiBwZXJmb3JtZWQgYnkgdGhlIGFwcGxpY2F0aW9uLCBvciB0aGUgcmVzdWx0IG9mIGEgdXNlciBhY3Rpb24uIn0sYXR0cmlidXRlczpbe25hbWU6ImZvciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBvdGhlciBlbGVtZW50c+KAmSBbYGlkYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pZClzLCBpbmRpY2F0aW5nIHRoYXQgdGhvc2UgZWxlbWVudHMgY29udHJpYnV0ZWQgaW5wdXQgdmFsdWVzIHRvIChvciBvdGhlcndpc2UgYWZmZWN0ZWQpIHRoZSBjYWxjdWxhdGlvbi4ifX0se25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBbZm9ybSBlbGVtZW50XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSkgdGhhdCB0aGlzIGVsZW1lbnQgaXMgYXNzb2NpYXRlZCB3aXRoIChpdHMgImZvcm0gb3duZXIiKS4gVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBhbiBgaWRgIG9mIGEgZm9ybSBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50LiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgb3V0cHV0IGVsZW1lbnQgbXVzdCBiZSBhIGRlc2NlbmRhbnQgb2YgYSBmb3JtIGVsZW1lbnQuIFRoaXMgYXR0cmlidXRlIGVuYWJsZXMgeW91IHRvIHBsYWNlIG91dHB1dCBlbGVtZW50cyBhbnl3aGVyZSB3aXRoaW4gYSBkb2N1bWVudCwgbm90IGp1c3QgYXMgZGVzY2VuZGFudHMgb2YgdGhlaXIgZm9ybSBlbGVtZW50cy4nfX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBuYW1lIG9mIHRoZSBlbGVtZW50LCBleHBvc2VkIGluIHRoZSBbYEhUTUxGb3JtRWxlbWVudGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MRm9ybUVsZW1lbnQgIlRoZSBIVE1MRm9ybUVsZW1lbnQgaW50ZXJmYWNlIHJlcHJlc2VudHMgYSA8Zm9ybT4gZWxlbWVudCBpbiB0aGUgRE9NOyBpdCBhbGxvd3MgYWNjZXNzIHRvIGFuZCBpbiBzb21lIGNhc2VzIG1vZGlmaWNhdGlvbiBvZiBhc3BlY3RzIG9mIHRoZSBmb3JtLCBhcyB3ZWxsIGFzIGFjY2VzcyB0byBpdHMgY29tcG9uZW50IGVsZW1lbnRzLiIpIEFQSS4nfX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vdXRwdXQifV19LHtuYW1lOiJwcm9ncmVzcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHByb2dyZXNzIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgY29tcGxldGlvbiBwcm9ncmVzcyBvZiBhIHRhc2suIFRoZSBwcm9ncmVzcyBpcyBlaXRoZXIgaW5kZXRlcm1pbmF0ZSwgaW5kaWNhdGluZyB0aGF0IHByb2dyZXNzIGlzIGJlaW5nIG1hZGUgYnV0IHRoYXQgaXQgaXMgbm90IGNsZWFyIGhvdyBtdWNoIG1vcmUgd29yayByZW1haW5zIHRvIGJlIGRvbmUgYmVmb3JlIHRoZSB0YXNrIGlzIGNvbXBsZXRlIChlLmcuIGJlY2F1c2UgdGhlIHRhc2sgaXMgd2FpdGluZyBmb3IgYSByZW1vdGUgaG9zdCB0byByZXNwb25kKSwgb3IgdGhlIHByb2dyZXNzIGlzIGEgbnVtYmVyIGluIHRoZSByYW5nZSB6ZXJvIHRvIGEgbWF4aW11bSwgZ2l2aW5nIHRoZSBmcmFjdGlvbiBvZiB3b3JrIHRoYXQgaGFzIHNvIGZhciBiZWVuIGNvbXBsZXRlZC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToidmFsdWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgbXVjaCBvZiB0aGUgdGFzayB0aGF0IGhhcyBiZWVuIGNvbXBsZXRlZC4gSXQgbXVzdCBiZSBhIHZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlciBiZXR3ZWVuIDAgYW5kIGBtYXhgLCBvciBiZXR3ZWVuIDAgYW5kIDEgaWYgYG1heGAgaXMgb21pdHRlZC4gSWYgdGhlcmUgaXMgbm8gYHZhbHVlYCBhdHRyaWJ1dGUsIHRoZSBwcm9ncmVzcyBiYXIgaXMgaW5kZXRlcm1pbmF0ZTsgdGhpcyBpbmRpY2F0ZXMgdGhhdCBhbiBhY3Rpdml0eSBpcyBvbmdvaW5nIHdpdGggbm8gaW5kaWNhdGlvbiBvZiBob3cgbG9uZyBpdCBpcyBleHBlY3RlZCB0byB0YWtlLiJ9fSx7bmFtZToibWF4IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBkZXNjcmliZXMgaG93IG11Y2ggd29yayB0aGUgdGFzayBpbmRpY2F0ZWQgYnkgdGhlIGBwcm9ncmVzc2AgZWxlbWVudCByZXF1aXJlcy4gVGhlIGBtYXhgIGF0dHJpYnV0ZSwgaWYgcHJlc2VudCwgbXVzdCBoYXZlIGEgdmFsdWUgZ3JlYXRlciB0aGFuIHplcm8gYW5kIGJlIGEgdmFsaWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Byb2dyZXNzIn1dfSx7bmFtZToibWV0ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtZXRlciBlbGVtZW50IHJlcHJlc2VudHMgYSBzY2FsYXIgbWVhc3VyZW1lbnQgd2l0aGluIGEga25vd24gcmFuZ2UsIG9yIGEgZnJhY3Rpb25hbCB2YWx1ZTsgZm9yIGV4YW1wbGUgZGlzayB1c2FnZSwgdGhlIHJlbGV2YW5jZSBvZiBhIHF1ZXJ5IHJlc3VsdCwgb3IgdGhlIGZyYWN0aW9uIG9mIGEgdm90aW5nIHBvcHVsYXRpb24gdG8gaGF2ZSBzZWxlY3RlZCBhIHBhcnRpY3VsYXIgY2FuZGlkYXRlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJ2YWx1ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGN1cnJlbnQgbnVtZXJpYyB2YWx1ZS4gVGhpcyBtdXN0IGJlIGJldHdlZW4gdGhlIG1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIChgbWluYCBhdHRyaWJ1dGUgYW5kIGBtYXhgIGF0dHJpYnV0ZSkgaWYgdGhleSBhcmUgc3BlY2lmaWVkLiBJZiB1bnNwZWNpZmllZCBvciBtYWxmb3JtZWQsIHRoZSB2YWx1ZSBpcyAwLiBJZiBzcGVjaWZpZWQsIGJ1dCBub3Qgd2l0aGluIHRoZSByYW5nZSBnaXZlbiBieSB0aGUgYG1pbmAgYXR0cmlidXRlIGFuZCBgbWF4YCBhdHRyaWJ1dGUsIHRoZSB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgbmVhcmVzdCBlbmQgb2YgdGhlIHJhbmdlLlxuXG4qKlVzYWdlIG5vdGU6KiogVW5sZXNzIHRoZSBgdmFsdWVgIGF0dHJpYnV0ZSBpcyBiZXR3ZWVuIGAwYCBhbmQgYDFgIChpbmNsdXNpdmUpLCB0aGUgYG1pbmAgYW5kIGBtYXhgIGF0dHJpYnV0ZXMgc2hvdWxkIGRlZmluZSB0aGUgcmFuZ2Ugc28gdGhhdCB0aGUgYHZhbHVlYCBhdHRyaWJ1dGUncyB2YWx1ZSBpcyB3aXRoaW4gaXQuIn19LHtuYW1lOiJtaW4iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsb3dlciBudW1lcmljIGJvdW5kIG9mIHRoZSBtZWFzdXJlZCByYW5nZS4gVGhpcyBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgbWF4aW11bSB2YWx1ZSAoYG1heGAgYXR0cmlidXRlKSwgaWYgc3BlY2lmaWVkLiBJZiB1bnNwZWNpZmllZCwgdGhlIG1pbmltdW0gdmFsdWUgaXMgMC4ifX0se25hbWU6Im1heCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVwcGVyIG51bWVyaWMgYm91bmQgb2YgdGhlIG1lYXN1cmVkIHJhbmdlLiBUaGlzIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBtaW5pbXVtIHZhbHVlIChgbWluYCBhdHRyaWJ1dGUpLCBpZiBzcGVjaWZpZWQuIElmIHVuc3BlY2lmaWVkLCB0aGUgbWF4aW11bSB2YWx1ZSBpcyAxLiJ9fSx7bmFtZToibG93IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdXBwZXIgbnVtZXJpYyBib3VuZCBvZiB0aGUgbG93IGVuZCBvZiB0aGUgbWVhc3VyZWQgcmFuZ2UuIFRoaXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIG1pbmltdW0gdmFsdWUgKGBtaW5gIGF0dHJpYnV0ZSksIGFuZCBpdCBhbHNvIG11c3QgYmUgbGVzcyB0aGFuIHRoZSBoaWdoIHZhbHVlIGFuZCBtYXhpbXVtIHZhbHVlIChgaGlnaGAgYXR0cmlidXRlIGFuZCBgbWF4YCBhdHRyaWJ1dGUsIHJlc3BlY3RpdmVseSksIGlmIGFueSBhcmUgc3BlY2lmaWVkLiBJZiB1bnNwZWNpZmllZCwgb3IgaWYgbGVzcyB0aGFuIHRoZSBtaW5pbXVtIHZhbHVlLCB0aGUgYGxvd2AgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIG1pbmltdW0gdmFsdWUuIn19LHtuYW1lOiJoaWdoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbG93ZXIgbnVtZXJpYyBib3VuZCBvZiB0aGUgaGlnaCBlbmQgb2YgdGhlIG1lYXN1cmVkIHJhbmdlLiBUaGlzIG11c3QgYmUgbGVzcyB0aGFuIHRoZSBtYXhpbXVtIHZhbHVlIChgbWF4YCBhdHRyaWJ1dGUpLCBhbmQgaXQgYWxzbyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbG93IHZhbHVlIGFuZCBtaW5pbXVtIHZhbHVlIChgbG93YCBhdHRyaWJ1dGUgYW5kICoqbWluKiogYXR0cmlidXRlLCByZXNwZWN0aXZlbHkpLCBpZiBhbnkgYXJlIHNwZWNpZmllZC4gSWYgdW5zcGVjaWZpZWQsIG9yIGlmIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSB2YWx1ZSwgdGhlIGBoaWdoYCB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgbWF4aW11bSB2YWx1ZS4ifX0se25hbWU6Im9wdGltdW0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgb3B0aW1hbCBudW1lcmljIHZhbHVlLiBJdCBtdXN0IGJlIHdpdGhpbiB0aGUgcmFuZ2UgKGFzIGRlZmluZWQgYnkgdGhlIGBtaW5gIGF0dHJpYnV0ZSBhbmQgYG1heGAgYXR0cmlidXRlKS4gV2hlbiB1c2VkIHdpdGggdGhlIGBsb3dgIGF0dHJpYnV0ZSBhbmQgYGhpZ2hgIGF0dHJpYnV0ZSwgaXQgZ2l2ZXMgYW4gaW5kaWNhdGlvbiB3aGVyZSBhbG9uZyB0aGUgcmFuZ2UgaXMgY29uc2lkZXJlZCBwcmVmZXJhYmxlLiBGb3IgZXhhbXBsZSwgaWYgaXQgaXMgYmV0d2VlbiB0aGUgYG1pbmAgYXR0cmlidXRlIGFuZCB0aGUgYGxvd2AgYXR0cmlidXRlLCB0aGVuIHRoZSBsb3dlciByYW5nZSBpcyBjb25zaWRlcmVkIHByZWZlcnJlZC4ifX0se25hbWU6ImZvcm0iLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBhc3NvY2lhdGVzIHRoZSBlbGVtZW50IHdpdGggYSBgZm9ybWAgZWxlbWVudCB0aGF0IGhhcyBvd25lcnNoaXAgb2YgdGhlIGBtZXRlcmAgZWxlbWVudC4gRm9yIGV4YW1wbGUsIGEgYG1ldGVyYCBtaWdodCBiZSBkaXNwbGF5aW5nIGEgcmFuZ2UgY29ycmVzcG9uZGluZyB0byBhbiBgaW5wdXRgIGVsZW1lbnQgb2YgYHR5cGVgIF9udW1iZXJfLiBUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IHVzZWQgaWYgdGhlIGBtZXRlcmAgZWxlbWVudCBpcyBiZWluZyB1c2VkIGFzIGEgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQ7IGV2ZW4gdGhlbiwgaXQgbWF5IGJlIG9taXR0ZWQgaWYgdGhlIGVsZW1lbnQgYXBwZWFycyBhcyBhIGRlc2NlbmRhbnQgb2YgYSBgZm9ybWAgZWxlbWVudC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGVyIn1dfSx7bmFtZToiZmllbGRzZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBmaWVsZHNldCBlbGVtZW50IHJlcHJlc2VudHMgYSBzZXQgb2YgZm9ybSBjb250cm9scyBvcHRpb25hbGx5IGdyb3VwZWQgdW5kZXIgYSBjb21tb24gbmFtZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGlzIEJvb2xlYW4gYXR0cmlidXRlIGlzIHNldCwgYWxsIGZvcm0gY29udHJvbHMgdGhhdCBhcmUgZGVzY2VuZGFudHMgb2YgdGhlIGA8ZmllbGRzZXQ+YCwgYXJlIGRpc2FibGVkLCBtZWFuaW5nIHRoZXkgYXJlIG5vdCBlZGl0YWJsZSBhbmQgd29uJ3QgYmUgc3VibWl0dGVkIGFsb25nIHdpdGggdGhlIGA8Zm9ybT5gLiBUaGV5IHdvbid0IHJlY2VpdmUgYW55IGJyb3dzaW5nIGV2ZW50cywgbGlrZSBtb3VzZSBjbGlja3Mgb3IgZm9jdXMtcmVsYXRlZCBldmVudHMuIEJ5IGRlZmF1bHQgYnJvd3NlcnMgZGlzcGxheSBzdWNoIGNvbnRyb2xzIGdyYXllZCBvdXQuIE5vdGUgdGhhdCBmb3JtIGVsZW1lbnRzIGluc2lkZSB0aGUgW2A8bGVnZW5kPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9sZWdlbmQgXCJUaGUgSFRNTCA8bGVnZW5kPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjYXB0aW9uIGZvciB0aGUgY29udGVudCBvZiBpdHMgcGFyZW50IDxmaWVsZHNldD4uXCIpIGVsZW1lbnQgd29uJ3QgYmUgZGlzYWJsZWQuIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSB0YWtlcyB0aGUgdmFsdWUgb2YgdGhlIGBpZGAgYXR0cmlidXRlIG9mIGEgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCB5b3Ugd2FudCB0aGUgYDxmaWVsZHNldD5gIHRvIGJlIHBhcnQgb2YsIGV2ZW4gaWYgaXQgaXMgbm90IGluc2lkZSB0aGUgZm9ybS4nfX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ3JvdXAuXG5cbioqTm90ZSoqOiBUaGUgY2FwdGlvbiBmb3IgdGhlIGZpZWxkc2V0IGlzIGdpdmVuIGJ5IHRoZSBmaXJzdCBbYDxsZWdlbmQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xlZ2VuZCAiVGhlIEhUTUwgPGxlZ2VuZD4gZWxlbWVudCByZXByZXNlbnRzIGEgY2FwdGlvbiBmb3IgdGhlIGNvbnRlbnQgb2YgaXRzIHBhcmVudCA8ZmllbGRzZXQ+LiIpIGVsZW1lbnQgbmVzdGVkIGluc2lkZSBpdC4nfX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9maWVsZHNldCJ9XX0se25hbWU6ImxlZ2VuZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxlZ2VuZCBlbGVtZW50IHJlcHJlc2VudHMgYSBjYXB0aW9uIGZvciB0aGUgcmVzdCBvZiB0aGUgY29udGVudHMgb2YgdGhlIGxlZ2VuZCBlbGVtZW50J3MgcGFyZW50IGZpZWxkc2V0IGVsZW1lbnQsIGlmIGFueS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9sZWdlbmQifV19LHtuYW1lOiJkZXRhaWxzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGV0YWlscyBlbGVtZW50IHJlcHJlc2VudHMgYSBkaXNjbG9zdXJlIHdpZGdldCBmcm9tIHdoaWNoIHRoZSB1c2VyIGNhbiBvYnRhaW4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvciBjb250cm9scy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToib3BlbiIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBkZXRhaWxzIOKAlCB0aGF0IGlzLCB0aGUgY29udGVudHMgb2YgdGhlIGA8ZGV0YWlscz5gIGVsZW1lbnQg4oCUIGFyZSBjdXJyZW50bHkgdmlzaWJsZS4gVGhlIGRlZmF1bHQsIGBmYWxzZWAsIG1lYW5zIHRoZSBkZXRhaWxzIGFyZSBub3QgdmlzaWJsZS4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kZXRhaWxzIn1dfSx7bmFtZToic3VtbWFyeSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHN1bW1hcnkgZWxlbWVudCByZXByZXNlbnRzIGEgc3VtbWFyeSwgY2FwdGlvbiwgb3IgbGVnZW5kIGZvciB0aGUgcmVzdCBvZiB0aGUgY29udGVudHMgb2YgdGhlIHN1bW1hcnkgZWxlbWVudCdzIHBhcmVudCBkZXRhaWxzIGVsZW1lbnQsIGlmIGFueS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zdW1tYXJ5In1dfSx7bmFtZToiZGlhbG9nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGlhbG9nIGVsZW1lbnQgcmVwcmVzZW50cyBhIHBhcnQgb2YgYW4gYXBwbGljYXRpb24gdGhhdCBhIHVzZXIgaW50ZXJhY3RzIHdpdGggdG8gcGVyZm9ybSBhIHRhc2ssIGZvciBleGFtcGxlIGEgZGlhbG9nIGJveCwgaW5zcGVjdG9yLCBvciB3aW5kb3cuIn0sYXR0cmlidXRlczpbe25hbWU6Im9wZW4iLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgZGlhbG9nIGlzIGFjdGl2ZSBhbmQgYXZhaWxhYmxlIGZvciBpbnRlcmFjdGlvbi4gV2hlbiB0aGUgYG9wZW5gIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCB0aGUgZGlhbG9nIHNob3VsZG4ndCBiZSBzaG93biB0byB0aGUgdXNlci4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RpYWxvZyJ9XX0se25hbWU6InNjcmlwdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNjcmlwdCBlbGVtZW50IGFsbG93cyBhdXRob3JzIHRvIGluY2x1ZGUgZHluYW1pYyBzY3JpcHQgYW5kIGRhdGEgYmxvY2tzIGluIHRoZWlyIGRvY3VtZW50cy4gVGhlIGVsZW1lbnQgZG9lcyBub3QgcmVwcmVzZW50IGNvbnRlbnQgZm9yIHRoZSB1c2VyLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgVVJJIG9mIGFuIGV4dGVybmFsIHNjcmlwdDsgdGhpcyBjYW4gYmUgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBlbWJlZGRpbmcgYSBzY3JpcHQgZGlyZWN0bHkgd2l0aGluIGEgZG9jdW1lbnQuXG5cbklmIGEgYHNjcmlwdGAgZWxlbWVudCBoYXMgYSBgc3JjYCBhdHRyaWJ1dGUgc3BlY2lmaWVkLCBpdCBzaG91bGQgbm90IGhhdmUgYSBzY3JpcHQgZW1iZWRkZWQgaW5zaWRlIGl0cyB0YWdzLiJ9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSB0eXBlIG9mIHNjcmlwdCByZXByZXNlbnRlZC4gVGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIHdpbGwgYmUgaW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgY2F0ZWdvcmllczpcblxuKiAgICoqT21pdHRlZCBvciBhIEphdmFTY3JpcHQgTUlNRSB0eXBlOioqIEZvciBIVE1MNS1jb21wbGlhbnQgYnJvd3NlcnMgdGhpcyBpbmRpY2F0ZXMgdGhlIHNjcmlwdCBpcyBKYXZhU2NyaXB0LiBIVE1MNSBzcGVjaWZpY2F0aW9uIHVyZ2VzIGF1dGhvcnMgdG8gb21pdCB0aGUgYXR0cmlidXRlIHJhdGhlciB0aGFuIHByb3ZpZGUgYSByZWR1bmRhbnQgTUlNRSB0eXBlLiBJbiBlYXJsaWVyIGJyb3dzZXJzLCB0aGlzIGlkZW50aWZpZWQgdGhlIHNjcmlwdGluZyBsYW5ndWFnZSBvZiB0aGUgZW1iZWRkZWQgb3IgaW1wb3J0ZWQgKHZpYSB0aGUgYHNyY2AgYXR0cmlidXRlKSBjb2RlLiBKYXZhU2NyaXB0IE1JTUUgdHlwZXMgYXJlIFtsaXN0ZWQgaW4gdGhlIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQmFzaWNzX29mX0hUVFAvTUlNRV90eXBlcyNKYXZhU2NyaXB0X3R5cGVzKS5cbiogICAqKmBtb2R1bGVgOioqIEZvciBIVE1MNS1jb21wbGlhbnQgYnJvd3NlcnMgdGhlIGNvZGUgaXMgdHJlYXRlZCBhcyBhIEphdmFTY3JpcHQgbW9kdWxlLiBUaGUgcHJvY2Vzc2luZyBvZiB0aGUgc2NyaXB0IGNvbnRlbnRzIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgYGNoYXJzZXRgIGFuZCBgZGVmZXJgIGF0dHJpYnV0ZXMuIEZvciBpbmZvcm1hdGlvbiBvbiB1c2luZyBgbW9kdWxlYCwgc2VlIFtFUzYgaW4gRGVwdGg6IE1vZHVsZXNdKGh0dHBzOi8vaGFja3MubW96aWxsYS5vcmcvMjAxNS8wOC9lczYtaW4tZGVwdGgtbW9kdWxlcy8pLiBDb2RlIG1heSBiZWhhdmUgZGlmZmVyZW50bHkgd2hlbiB0aGUgYG1vZHVsZWAga2V5d29yZCBpcyB1c2VkLlxuKiAgICoqQW55IG90aGVyIHZhbHVlOioqIFRoZSBlbWJlZGRlZCBjb250ZW50IGlzIHRyZWF0ZWQgYXMgYSBkYXRhIGJsb2NrIHdoaWNoIHdvblwndCBiZSBwcm9jZXNzZWQgYnkgdGhlIGJyb3dzZXIuIERldmVsb3BlcnMgbXVzdCB1c2UgYSB2YWxpZCBNSU1FIHR5cGUgdGhhdCBpcyBub3QgYSBKYXZhU2NyaXB0IE1JTUUgdHlwZSB0byBkZW5vdGUgZGF0YSBibG9ja3MuIFRoZSBgc3JjYCBhdHRyaWJ1dGUgd2lsbCBiZSBpZ25vcmVkLlxuXG4qKk5vdGU6KiogaW4gRmlyZWZveCB5b3UgY291bGQgc3BlY2lmeSB0aGUgdmVyc2lvbiBvZiBKYXZhU2NyaXB0IGNvbnRhaW5lZCBpbiBhIGA8c2NyaXB0PmAgZWxlbWVudCBieSBpbmNsdWRpbmcgYSBub24tc3RhbmRhcmQgYHZlcnNpb25gIHBhcmFtZXRlciBpbnNpZGUgdGhlIGB0eXBlYCBhdHRyaWJ1dGUg4oCUIGZvciBleGFtcGxlIGB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQ7dmVyc2lvbj0xLjgiYC4gVGhpcyBoYXMgYmVlbiByZW1vdmVkIGluIEZpcmVmb3ggNTkgKHNlZSBbYnVnwqAxNDI4NzQ1XShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI4NzQ1ICJGSVhFRDogUmVtb3ZlIHN1cHBvcnQgZm9yIHZlcnNpb24gcGFyYW1ldGVyIGZyb20gc2NyaXB0IGxvYWRlciIpKS4nfX0se25hbWU6ImNoYXJzZXQifSx7bmFtZToiYXN5bmMiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGlzIGEgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGluZyB0aGF0IHRoZSBicm93c2VyIHNob3VsZCwgaWYgcG9zc2libGUsIGxvYWQgdGhlIHNjcmlwdCBhc3luY2hyb25vdXNseS5cblxuVGhpcyBhdHRyaWJ1dGUgbXVzdCBub3QgYmUgdXNlZCBpZiB0aGUgYHNyY2AgYXR0cmlidXRlIGlzIGFic2VudCAoaS5lLiBmb3IgaW5saW5lIHNjcmlwdHMpLiBJZiBpdCBpcyBpbmNsdWRlZCBpbiB0aGlzIGNhc2UgaXQgd2lsbCBoYXZlIG5vIGVmZmVjdC5cblxuQnJvd3NlcnMgdXN1YWxseSBhc3N1bWUgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gYW5kIGxvYWQgc2NyaXB0cyBzeW5jaHJvbm91c2x5LCAoaS5lLiBgYXN5bmM9ImZhbHNlImApIGR1cmluZyBIVE1MIHBhcnNpbmcuXG5cbkR5bmFtaWNhbGx5IGluc2VydGVkIHNjcmlwdHMgKHVzaW5nIFtgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgpYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50L2NyZWF0ZUVsZW1lbnQgIkluIGFuIEhUTUwgZG9jdW1lbnQsIHRoZSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCkgbWV0aG9kIGNyZWF0ZXMgdGhlIEhUTUwgZWxlbWVudCBzcGVjaWZpZWQgYnkgdGFnTmFtZSwgb3IgYW4gSFRNTFVua25vd25FbGVtZW50IGlmIHRhZ05hbWUgaXNuXCd0IHJlY29nbml6ZWQuIikpIGxvYWQgYXN5bmNocm9ub3VzbHkgYnkgZGVmYXVsdCwgc28gdG8gdHVybiBvbiBzeW5jaHJvbm91cyBsb2FkaW5nIChpLmUuIHNjcmlwdHMgbG9hZCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGluc2VydGVkKSBzZXQgYGFzeW5jPSJmYWxzZSJgLlxuXG5TZWUgW0Jyb3dzZXIgY29tcGF0aWJpbGl0eV0oI0Jyb3dzZXJfY29tcGF0aWJpbGl0eSkgZm9yIG5vdGVzIG9uIGJyb3dzZXIgc3VwcG9ydC4gU2VlIGFsc28gW0FzeW5jIHNjcmlwdHMgZm9yIGFzbS5qc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HYW1lcy9UZWNobmlxdWVzL0FzeW5jX3NjcmlwdHMpLid9fSx7bmFtZToiZGVmZXIiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGlzIHNldCB0byBpbmRpY2F0ZSB0byBhIGJyb3dzZXIgdGhhdCB0aGUgc2NyaXB0IGlzIG1lYW50IHRvIGJlIGV4ZWN1dGVkIGFmdGVyIHRoZSBkb2N1bWVudCBoYXMgYmVlbiBwYXJzZWQsIGJ1dCBiZWZvcmUgZmlyaW5nIFtgRE9NQ29udGVudExvYWRlZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0V2ZW50cy9ET01Db250ZW50TG9hZGVkICIvZW4tVVMvZG9jcy9XZWIvRXZlbnRzL0RPTUNvbnRlbnRMb2FkZWQiKS5cblxuU2NyaXB0cyB3aXRoIHRoZSBgZGVmZXJgIGF0dHJpYnV0ZSB3aWxsIHByZXZlbnQgdGhlIGBET01Db250ZW50TG9hZGVkYCBldmVudCBmcm9tIGZpcmluZyB1bnRpbCB0aGUgc2NyaXB0IGhhcyBsb2FkZWQgYW5kIGZpbmlzaGVkIGV2YWx1YXRpbmcuXG5cblRoaXMgYXR0cmlidXRlIG11c3Qgbm90IGJlIHVzZWQgaWYgdGhlIGBzcmNgIGF0dHJpYnV0ZSBpcyBhYnNlbnQgKGkuZS4gZm9yIGlubGluZSBzY3JpcHRzKSwgaW4gdGhpcyBjYXNlIGl0IHdvdWxkIGhhdmUgbm8gZWZmZWN0LlxuXG5UbyBhY2hpZXZlIGEgc2ltaWxhciBlZmZlY3QgZm9yIGR5bmFtaWNhbGx5IGluc2VydGVkIHNjcmlwdHMgdXNlIGBhc3luYz0iZmFsc2UiYCBpbnN0ZWFkLiBTY3JpcHRzIHdpdGggdGhlIGBkZWZlcmAgYXR0cmlidXRlIHdpbGwgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcHBlYXIgaW4gdGhlIGRvY3VtZW50Lid9fSx7bmFtZToiY3Jvc3NvcmlnaW4iLHZhbHVlU2V0OiJ4byIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonTm9ybWFsIGBzY3JpcHRgIGVsZW1lbnRzIHBhc3MgbWluaW1hbCBpbmZvcm1hdGlvbiB0byB0aGUgW2B3aW5kb3cub25lcnJvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9HbG9iYWxFdmVudEhhbmRsZXJzL29uZXJyb3IgIlRoZSBvbmVycm9yIHByb3BlcnR5IG9mIHRoZSBHbG9iYWxFdmVudEhhbmRsZXJzIG1peGluIGlzIGFuIEV2ZW50SGFuZGxlciB0aGF0IHByb2Nlc3NlcyBlcnJvciBldmVudHMuIikgZm9yIHNjcmlwdHMgd2hpY2ggZG8gbm90IHBhc3MgdGhlIHN0YW5kYXJkIFtDT1JTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0NPUlMgIkNPUlM6IENPUlMgKENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nKSBpcyBhIHN5c3RlbSwgY29uc2lzdGluZyBvZiB0cmFuc21pdHRpbmcgSFRUUCBoZWFkZXJzLCB0aGF0IGRldGVybWluZXMgd2hldGhlciBicm93c2VycyBibG9jayBmcm9udGVuZCBKYXZhU2NyaXB0IGNvZGUgZnJvbSBhY2Nlc3NpbmcgcmVzcG9uc2VzIGZvciBjcm9zcy1vcmlnaW4gcmVxdWVzdHMuIikgY2hlY2tzLiBUbyBhbGxvdyBlcnJvciBsb2dnaW5nIGZvciBzaXRlcyB3aGljaCB1c2UgYSBzZXBhcmF0ZSBkb21haW4gZm9yIHN0YXRpYyBtZWRpYSwgdXNlIHRoaXMgYXR0cmlidXRlLiBTZWUgW0NPUlMgc2V0dGluZ3MgYXR0cmlidXRlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9DT1JTX3NldHRpbmdzX2F0dHJpYnV0ZXMpIGZvciBhIG1vcmUgZGVzY3JpcHRpdmUgZXhwbGFuYXRpb24gb2YgaXRzIHZhbGlkIGFyZ3VtZW50cy4nfX0se25hbWU6Im5vbmNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGNyeXB0b2dyYXBoaWMgbm9uY2UgKG51bWJlciB1c2VkIG9uY2UpIHRvIHdoaXRlbGlzdCBpbmxpbmUgc2NyaXB0cyBpbiBhIFtzY3JpcHQtc3JjIENvbnRlbnQtU2VjdXJpdHktUG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQ29udGVudC1TZWN1cml0eS1Qb2xpY3kvc2NyaXB0LXNyYykuIFRoZSBzZXJ2ZXIgbXVzdCBnZW5lcmF0ZSBhIHVuaXF1ZSBub25jZSB2YWx1ZSBlYWNoIHRpbWUgaXQgdHJhbnNtaXRzIGEgcG9saWN5LiBJdCBpcyBjcml0aWNhbCB0byBwcm92aWRlIGEgbm9uY2UgdGhhdCBjYW5ub3QgYmUgZ3Vlc3NlZCBhcyBieXBhc3NpbmcgYSByZXNvdXJjZSdzIHBvbGljeSBpcyBvdGhlcndpc2UgdHJpdmlhbC4ifX0se25hbWU6ImludGVncml0eSIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGlubGluZSBtZXRhZGF0YSB0aGF0IGEgdXNlciBhZ2VudCBjYW4gdXNlIHRvIHZlcmlmeSB0aGF0IGEgZmV0Y2hlZCByZXNvdXJjZSBoYXMgYmVlbiBkZWxpdmVyZWQgZnJlZSBvZiB1bmV4cGVjdGVkIG1hbmlwdWxhdGlvbi4gU2VlIFtTdWJyZXNvdXJjZSBJbnRlZ3JpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1N1YnJlc291cmNlX0ludGVncml0eSkuIn0se25hbWU6Im5vbW9kdWxlIixkZXNjcmlwdGlvbjoiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpcyBzZXQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgc2NyaXB0IHNob3VsZCBub3QgYmUgZXhlY3V0ZWQgaW4gYnJvd3NlcnMgdGhhdCBzdXBwb3J0IFtFUzIwMTUgbW9kdWxlc10oaHR0cHM6Ly9oYWNrcy5tb3ppbGxhLm9yZy8yMDE1LzA4L2VzNi1pbi1kZXB0aC1tb2R1bGVzLykg4oCUIGluIGVmZmVjdCwgdGhpcyBjYW4gYmUgdXNlZCB0byBzZXJ2ZSBmYWxsYmFjayBzY3JpcHRzIHRvIG9sZGVyIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgbW9kdWxhciBKYXZhU2NyaXB0IGNvZGUuIn0se25hbWU6InJlZmVycmVycG9saWN5IixkZXNjcmlwdGlvbjonSW5kaWNhdGVzIHdoaWNoIFtyZWZlcnJlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50L3JlZmVycmVyKSB0byBzZW5kIHdoZW4gZmV0Y2hpbmcgdGhlIHNjcmlwdCwgb3IgcmVzb3VyY2VzIGZldGNoZWQgYnkgdGhlIHNjcmlwdDpcblxuKiAgIGBuby1yZWZlcnJlcmA6IFRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudC5cbiogICBgbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVgIChkZWZhdWx0KTogVGhlIFtgUmVmZXJlcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9SZWZlcmVyICJUaGUgUmVmZXJlciByZXF1ZXN0IGhlYWRlciBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgcHJldmlvdXMgd2ViIHBhZ2UgZnJvbSB3aGljaCBhIGxpbmsgdG8gdGhlIGN1cnJlbnRseSByZXF1ZXN0ZWQgcGFnZSB3YXMgZm9sbG93ZWQuIFRoZSBSZWZlcmVyIGhlYWRlciBhbGxvd3Mgc2VydmVycyB0byBpZGVudGlmeSB3aGVyZSBwZW9wbGUgYXJlIHZpc2l0aW5nIHRoZW0gZnJvbSBhbmQgbWF5IHVzZSB0aGF0IGRhdGEgZm9yIGFuYWx5dGljcywgbG9nZ2luZywgb3Igb3B0aW1pemVkIGNhY2hpbmcsIGZvciBleGFtcGxlLiIpIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50IHRvIFtvcmlnaW5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3Nhcnkvb3JpZ2luICJvcmlnaW46IFdlYiBjb250ZW50XCdzIG9yaWdpbiBpcyBkZWZpbmVkIGJ5IHRoZSBzY2hlbWUgKHByb3RvY29sKSwgaG9zdCAoZG9tYWluKSwgYW5kIHBvcnQgb2YgdGhlIFVSTCB1c2VkIHRvIGFjY2VzcyBpdC4gVHdvIG9iamVjdHMgaGF2ZSB0aGUgc2FtZSBvcmlnaW4gb25seSB3aGVuIHRoZSBzY2hlbWUsIGhvc3QsIGFuZCBwb3J0IGFsbCBtYXRjaC4iKXMgd2l0aG91dCBbVExTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1RMUyAiVExTOiBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgKFRMUyksIHByZXZpb3VzbHkga25vd24gYXMgU2VjdXJlIFNvY2tldHMgTGF5ZXIgKFNTTCksIGlzIGEgcHJvdG9jb2wgdXNlZCBieSBhcHBsaWNhdGlvbnMgdG8gY29tbXVuaWNhdGUgc2VjdXJlbHkgYWNyb3NzIGEgbmV0d29yaywgcHJldmVudGluZyB0YW1wZXJpbmcgd2l0aCBhbmQgZWF2ZXNkcm9wcGluZyBvbiBlbWFpbCwgd2ViIGJyb3dzaW5nLCBtZXNzYWdpbmcsIGFuZCBvdGhlciBwcm90b2NvbHMuIikgKFtIVFRQU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9IVFRQUyAiSFRUUFM6IEhUVFBTIChIVFRQIFNlY3VyZSkgaXMgYW4gZW5jcnlwdGVkIHZlcnNpb24gb2YgdGhlIEhUVFAgcHJvdG9jb2wuIEl0IHVzdWFsbHkgdXNlcyBTU0wgb3IgVExTIHRvIGVuY3J5cHQgYWxsIGNvbW11bmljYXRpb24gYmV0d2VlbiBhIGNsaWVudCBhbmQgYSBzZXJ2ZXIuIFRoaXMgc2VjdXJlIGNvbm5lY3Rpb24gYWxsb3dzIGNsaWVudHMgdG8gc2FmZWx5IGV4Y2hhbmdlIHNlbnNpdGl2ZSBkYXRhIHdpdGggYSBzZXJ2ZXIsIGZvciBleGFtcGxlIGZvciBiYW5raW5nIGFjdGl2aXRpZXMgb3Igb25saW5lIHNob3BwaW5nLiIpKS5cbiogICBgb3JpZ2luYDogVGhlIHNlbnQgcmVmZXJyZXIgd2lsbCBiZSBsaW1pdGVkIHRvIHRoZSBvcmlnaW4gb2YgdGhlIHJlZmVycmluZyBwYWdlOiBpdHMgW3NjaGVtZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9BcmNoaXZlL01vemlsbGEvVVJJU2NoZW1lKSwgW2hvc3RdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvaG9zdCAiaG9zdDogQSBob3N0IGlzIGEgZGV2aWNlIGNvbm5lY3RlZCB0byB0aGUgSW50ZXJuZXQgKG9yIGEgbG9jYWwgbmV0d29yaykuIFNvbWUgaG9zdHMgY2FsbGVkIHNlcnZlcnMgb2ZmZXIgYWRkaXRpb25hbCBzZXJ2aWNlcyBsaWtlIHNlcnZpbmcgd2VicGFnZXMgb3Igc3RvcmluZyBmaWxlcyBhbmQgZW1haWxzLiIpLCBhbmQgW3BvcnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvcG9ydCAicG9ydDogRm9yIGEgY29tcHV0ZXIgY29ubmVjdGVkIHRvIGEgbmV0d29yayB3aXRoIGFuIElQIGFkZHJlc3MsIGEgcG9ydCBpcyBhIGNvbW11bmljYXRpb24gZW5kcG9pbnQuIFBvcnRzIGFyZSBkZXNpZ25hdGVkIGJ5IG51bWJlcnMsIGFuZCBiZWxvdyAxMDI0IGVhY2ggcG9ydCBpcyBhc3NvY2lhdGVkIGJ5IGRlZmF1bHQgd2l0aCBhIHNwZWNpZmljIHByb3RvY29sLiIpLlxuKiAgIGBvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gOiBUaGUgcmVmZXJyZXIgc2VudCB0byBvdGhlciBvcmlnaW5zIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgc2NoZW1lLCB0aGUgaG9zdCwgYW5kIHRoZSBwb3J0LiBOYXZpZ2F0aW9ucyBvbiB0aGUgc2FtZSBvcmlnaW4gd2lsbCBzdGlsbCBpbmNsdWRlIHRoZSBwYXRoLlxuKiAgIGBzYW1lLW9yaWdpbmA6IEEgcmVmZXJyZXIgd2lsbCBiZSBzZW50IGZvciBbc2FtZSBvcmlnaW5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvU2FtZS1vcmlnaW5fcG9saWN5ICJzYW1lIG9yaWdpbjogVGhlIHNhbWUtb3JpZ2luIHBvbGljeSBpcyBhIGNyaXRpY2FsIHNlY3VyaXR5IG1lY2hhbmlzbSB0aGF0IHJlc3RyaWN0cyBob3cgYSBkb2N1bWVudCBvciBzY3JpcHQgbG9hZGVkIGZyb20gb25lIG9yaWdpbiBjYW4gaW50ZXJhY3Qgd2l0aCBhIHJlc291cmNlIGZyb20gYW5vdGhlciBvcmlnaW4uIiksIGJ1dCBjcm9zcy1vcmlnaW4gcmVxdWVzdHMgd2lsbCBjb250YWluIG5vIHJlZmVycmVyIGluZm9ybWF0aW9uLlxuKiAgIGBzdHJpY3Qtb3JpZ2luYDogT25seSBzZW5kIHRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGFzIHRoZSByZWZlcnJlciB3aGVuIHRoZSBwcm90b2NvbCBzZWN1cml0eSBsZXZlbCBzdGF5cyB0aGUgc2FtZSAoZS5nLiBIVFRQU+KGkkhUVFBTKSwgYnV0IGRvblwndCBzZW5kIGl0IHRvIGEgbGVzcyBzZWN1cmUgZGVzdGluYXRpb24gKGUuZy4gSFRUUFPihpJIVFRQKS5cbiogICBgc3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmA6IFNlbmQgYSBmdWxsIFVSTCB3aGVuIHBlcmZvcm1pbmcgYSBzYW1lLW9yaWdpbiByZXF1ZXN0LCBidXQgb25seSBzZW5kIHRoZSBvcmlnaW4gd2hlbiB0aGUgcHJvdG9jb2wgc2VjdXJpdHkgbGV2ZWwgc3RheXMgdGhlIHNhbWUgKGUuZy5IVFRQU+KGkkhUVFBTKSwgYW5kIHNlbmQgbm8gaGVhZGVyIHRvIGEgbGVzcyBzZWN1cmUgZGVzdGluYXRpb24gKGUuZy4gSFRUUFPihpJIVFRQKS5cbiogICBgdW5zYWZlLXVybGA6IFRoZSByZWZlcnJlciB3aWxsIGluY2x1ZGUgdGhlIG9yaWdpbiBfYW5kXyB0aGUgcGF0aCAoYnV0IG5vdCB0aGUgW2ZyYWdtZW50XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy9oYXNoKSwgW3Bhc3N3b3JkXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy9wYXNzd29yZCksIG9yIFt1c2VybmFtZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMvdXNlcm5hbWUpKS4gKipUaGlzIHZhbHVlIGlzIHVuc2FmZSoqLCBiZWNhdXNlIGl0IGxlYWtzIG9yaWdpbnMgYW5kIHBhdGhzIGZyb20gVExTLXByb3RlY3RlZCByZXNvdXJjZXMgdG8gaW5zZWN1cmUgb3JpZ2lucy5cblxuKipOb3RlKio6IEFuIGVtcHR5IHN0cmluZyB2YWx1ZSAoYCIiYCkgaXMgYm90aCB0aGUgZGVmYXVsdCB2YWx1ZSwgYW5kIGEgZmFsbGJhY2sgdmFsdWUgaWYgYHJlZmVycmVycG9saWN5YCBpcyBub3Qgc3VwcG9ydGVkLiBJZiBgcmVmZXJyZXJwb2xpY3lgIGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBvbiB0aGUgYDxzY3JpcHQ+YCBlbGVtZW50LCBpdCB3aWxsIGFkb3B0IGEgaGlnaGVyLWxldmVsIHJlZmVycmVyIHBvbGljeSwgaS5lLiBvbmUgc2V0IG9uIHRoZSB3aG9sZSBkb2N1bWVudCBvciBkb21haW4uIElmIGEgaGlnaGVyLWxldmVsIHBvbGljeSBpcyBub3QgYXZhaWxhYmxlLMKgdGhlIGVtcHR5IHN0cmluZyBpcyB0cmVhdGVkIGFzIGJlaW5nIGVxdWl2YWxlbnQgdG8gYG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlYC4nfSx7bmFtZToidGV4dCIsZGVzY3JpcHRpb246Ikxpa2UgdGhlIGB0ZXh0Q29udGVudGAgYXR0cmlidXRlLCB0aGlzIGF0dHJpYnV0ZSBzZXRzIHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQuIFVubGlrZSB0aGUgYHRleHRDb250ZW50YCBhdHRyaWJ1dGUsIGhvd2V2ZXIsIHRoaXMgYXR0cmlidXRlIGlzIGV2YWx1YXRlZCBhcyBleGVjdXRhYmxlIGNvZGUgYWZ0ZXIgdGhlIG5vZGUgaXMgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2NyaXB0In1dfSx7bmFtZToibm9zY3JpcHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBub3NjcmlwdCBlbGVtZW50IHJlcHJlc2VudHMgbm90aGluZyBpZiBzY3JpcHRpbmcgaXMgZW5hYmxlZCwgYW5kIHJlcHJlc2VudHMgaXRzIGNoaWxkcmVuIGlmIHNjcmlwdGluZyBpcyBkaXNhYmxlZC4gSXQgaXMgdXNlZCB0byBwcmVzZW50IGRpZmZlcmVudCBtYXJrdXAgdG8gdXNlciBhZ2VudHMgdGhhdCBzdXBwb3J0IHNjcmlwdGluZyBhbmQgdGhvc2UgdGhhdCBkb24ndCBzdXBwb3J0IHNjcmlwdGluZywgYnkgYWZmZWN0aW5nIGhvdyB0aGUgZG9jdW1lbnQgaXMgcGFyc2VkLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L25vc2NyaXB0In1dfSx7bmFtZToidGVtcGxhdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0ZW1wbGF0ZSBlbGVtZW50IGlzIHVzZWQgdG8gZGVjbGFyZSBmcmFnbWVudHMgb2YgSFRNTCB0aGF0IGNhbiBiZSBjbG9uZWQgYW5kIGluc2VydGVkIGluIHRoZSBkb2N1bWVudCBieSBzY3JpcHQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGVtcGxhdGUifV19LHtuYW1lOiJjYW52YXMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjYW52YXMgZWxlbWVudCBwcm92aWRlcyBzY3JpcHRzIHdpdGggYSByZXNvbHV0aW9uLWRlcGVuZGVudCBiaXRtYXAgY2FudmFzLCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgcmVuZGVyaW5nIGdyYXBocywgZ2FtZSBncmFwaGljcywgYXJ0LCBvciBvdGhlciB2aXN1YWwgaW1hZ2VzIG9uIHRoZSBmbHkuIn0sYXR0cmlidXRlczpbe25hbWU6IndpZHRoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgd2lkdGggb2YgdGhlIGNvb3JkaW5hdGUgc3BhY2UgaW4gQ1NTIHBpeGVscy4gRGVmYXVsdHMgdG8gMzAwLiJ9fSx7bmFtZToiaGVpZ2h0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaGVpZ2h0IG9mIHRoZSBjb29yZGluYXRlIHNwYWNlIGluIENTUyBwaXhlbHMuIERlZmF1bHRzIHRvIDE1MC4ifX0se25hbWU6Im1vei1vcGFxdWUiLGRlc2NyaXB0aW9uOiJMZXRzIHRoZSBjYW52YXMga25vdyB3aGV0aGVyIG9yIG5vdCB0cmFuc2x1Y2VuY3kgd2lsbCBiZSBhIGZhY3Rvci4gSWYgdGhlIGNhbnZhcyBrbm93cyB0aGVyZSdzIG5vIHRyYW5zbHVjZW5jeSwgcGFpbnRpbmcgcGVyZm9ybWFuY2UgY2FuIGJlIG9wdGltaXplZC4gVGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBieSBNb3ppbGxhLWJhc2VkIGJyb3dzZXJzOyB1c2UgdGhlIHN0YW5kYXJkaXplZCBbYGNhbnZhcy5nZXRDb250ZXh0KCcyZCcsIHsgYWxwaGE6IGZhbHNlIH0pYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxDYW52YXNFbGVtZW50L2dldENvbnRleHQgXCJUaGUgSFRNTENhbnZhc0VsZW1lbnQuZ2V0Q29udGV4dCgpIG1ldGhvZCByZXR1cm5zIGEgZHJhd2luZyBjb250ZXh0IG9uIHRoZSBjYW52YXMsIG9yIG51bGwgaWYgdGhlIGNvbnRleHQgaWRlbnRpZmllciBpcyBub3Qgc3VwcG9ydGVkLlwiKSBpbnN0ZWFkLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FudmFzIn1dfV0sZ2xvYmFsQXR0cmlidXRlczpbe25hbWU6ImFjY2Vzc2tleSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUHJvdmlkZXMgYSBoaW50IGZvciBnZW5lcmF0aW5nIGEga2V5Ym9hcmQgc2hvcnRjdXQgZm9yIHRoZSBjdXJyZW50IGVsZW1lbnQuIFRoaXMgYXR0cmlidXRlIGNvbnNpc3RzIG9mIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgY2hhcmFjdGVycy4gVGhlIGJyb3dzZXIgc2hvdWxkIHVzZSB0aGUgZmlyc3Qgb25lIHRoYXQgZXhpc3RzIG9uIHRoZSBjb21wdXRlciBrZXlib2FyZCBsYXlvdXQuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9hY2Nlc3NrZXkifV19LHtuYW1lOiJhdXRvY2FwaXRhbGl6ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQ29udHJvbHMgd2hldGhlciBhbmQgaG93IHRleHQgaW5wdXQgaXMgYXV0b21hdGljYWxseSBjYXBpdGFsaXplZCBhcyBpdCBpcyBlbnRlcmVkL2VkaXRlZCBieSB0aGUgdXNlci4gSXQgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgb2ZmYCBvciBgbm9uZWAsIG5vIGF1dG9jYXBpdGFsaXphdGlvbiBpcyBhcHBsaWVkIChhbGwgbGV0dGVycyBkZWZhdWx0IHRvIGxvd2VyY2FzZSlcbiogICBgb25gIG9yIGBzZW50ZW5jZXNgLCB0aGUgZmlyc3QgbGV0dGVyIG9mIGVhY2ggc2VudGVuY2UgZGVmYXVsdHMgdG8gYSBjYXBpdGFsIGxldHRlcjsgYWxsIG90aGVyIGxldHRlcnMgZGVmYXVsdCB0byBsb3dlcmNhc2VcbiogICBgd29yZHNgLCB0aGUgZmlyc3QgbGV0dGVyIG9mIGVhY2ggd29yZCBkZWZhdWx0cyB0byBhIGNhcGl0YWwgbGV0dGVyOyBhbGwgb3RoZXIgbGV0dGVycyBkZWZhdWx0IHRvIGxvd2VyY2FzZVxuKiAgIGBjaGFyYWN0ZXJzYCwgYWxsIGxldHRlcnMgc2hvdWxkIGRlZmF1bHQgdG8gdXBwZXJjYXNlIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9hdXRvY2FwaXRhbGl6ZSJ9XX0se25hbWU6ImNsYXNzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBjbGFzc2VzIG9mIHRoZSBlbGVtZW50LiBDbGFzc2VzIGFsbG93cyBDU1MgYW5kIEphdmFTY3JpcHQgdG8gc2VsZWN0IGFuZCBhY2Nlc3Mgc3BlY2lmaWMgZWxlbWVudHMgdmlhIHRoZSBbY2xhc3Mgc2VsZWN0b3JzXSgvZW4tVVMvZG9jcy9XZWIvQ1NTL0NsYXNzX3NlbGVjdG9ycykgb3IgZnVuY3Rpb25zIGxpa2UgdGhlIG1ldGhvZCBbYERvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoKWBdKC9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnQvZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAicmV0dXJucyBhbiBhcnJheS1saWtlIG9iamVjdCBvZiBhbGwgY2hpbGQgZWxlbWVudHMgd2hpY2ggaGF2ZSBhbGwgb2YgdGhlIGdpdmVuIGNsYXNzIG5hbWVzLiIpLid9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvY2xhc3MifV19LHtuYW1lOiJjb250ZW50ZWRpdGFibGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRpbmcgaWYgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIGVkaXRhYmxlIGJ5IHRoZSB1c2VyLiBJZiBzbywgdGhlIGJyb3dzZXIgbW9kaWZpZXMgaXRzIHdpZGdldCB0byBhbGxvdyBlZGl0aW5nLiBUaGUgYXR0cmlidXRlIG11c3QgdGFrZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgdHJ1ZWAgb3IgdGhlIF9lbXB0eSBzdHJpbmdfLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBtdXN0IGJlIGVkaXRhYmxlO1xuKiAgIGBmYWxzZWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IG11c3Qgbm90IGJlIGVkaXRhYmxlLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvY29udGVudGVkaXRhYmxlIn1dfSx7bmFtZToiY29udGV4dG1lbnUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBgWyoqaWQqKl0oI2F0dHItaWQpYCBvZiBhIFtgPG1lbnU+YF0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZW51ICJUaGUgSFRNTCA8bWVudT4gZWxlbWVudCByZXByZXNlbnRzIGEgZ3JvdXAgb2YgY29tbWFuZHMgdGhhdCBhIHVzZXIgY2FuIHBlcmZvcm0gb3IgYWN0aXZhdGUuIFRoaXMgaW5jbHVkZXMgYm90aCBsaXN0IG1lbnVzLCB3aGljaCBtaWdodCBhcHBlYXIgYWNyb3NzIHRoZSB0b3Agb2YgYSBzY3JlZW4sIGFzIHdlbGwgYXMgY29udGV4dCBtZW51cywgc3VjaCBhcyB0aG9zZSB0aGF0IG1pZ2h0IGFwcGVhciB1bmRlcm5lYXRoIGEgYnV0dG9uIGFmdGVyIGl0IGhhcyBiZWVuIGNsaWNrZWQuIikgdG8gdXNlIGFzIHRoZSBjb250ZXh0dWFsIG1lbnUgZm9yIHRoaXMgZWxlbWVudC4nfSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2NvbnRleHRtZW51In1dfSx7bmFtZToiZGlyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIHRoZSBkaXJlY3Rpb25hbGl0eSBvZiB0aGUgZWxlbWVudCdzIHRleHQuIEl0IGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYGx0cmAsIHdoaWNoIG1lYW5zIF9sZWZ0IHRvIHJpZ2h0XyBhbmQgaXMgdG8gYmUgdXNlZCBmb3IgbGFuZ3VhZ2VzIHRoYXQgYXJlIHdyaXR0ZW4gZnJvbSB0aGUgbGVmdCB0byB0aGUgcmlnaHQgKGxpa2UgRW5nbGlzaCk7XG4qICAgYHJ0bGAsIHdoaWNoIG1lYW5zIF9yaWdodCB0byBsZWZ0XyBhbmQgaXMgdG8gYmUgdXNlZCBmb3IgbGFuZ3VhZ2VzIHRoYXQgYXJlIHdyaXR0ZW4gZnJvbSB0aGUgcmlnaHQgdG8gdGhlIGxlZnQgKGxpa2UgQXJhYmljKTtcbiogICBgYXV0b2AsIHdoaWNoIGxldHMgdGhlIHVzZXIgYWdlbnQgZGVjaWRlLiBJdCB1c2VzIGEgYmFzaWMgYWxnb3JpdGhtIGFzIGl0IHBhcnNlcyB0aGUgY2hhcmFjdGVycyBpbnNpZGUgdGhlIGVsZW1lbnQgdW50aWwgaXQgZmluZHMgYSBjaGFyYWN0ZXIgd2l0aCBhIHN0cm9uZyBkaXJlY3Rpb25hbGl0eSwgdGhlbiBpdCBhcHBsaWVzIHRoYXQgZGlyZWN0aW9uYWxpdHkgdG8gdGhlIHdob2xlIGVsZW1lbnQuIn0sdmFsdWVTZXQ6ImQiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvZGlyIn1dfSx7bmFtZToiZHJhZ2dhYmxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGVsZW1lbnQgY2FuIGJlIGRyYWdnZWQsIHVzaW5nIHRoZSBbRHJhZyBhbmQgRHJvcCBBUEldKC9lbi11cy9kb2NzL0RyYWdEcm9wL0RyYWdfYW5kX0Ryb3ApLiBJdCBjYW4gaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGB0cnVlYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgbWF5IGJlIGRyYWdnZWRcbiogICBgZmFsc2VgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBtYXkgbm90IGJlIGRyYWdnZWQuIn0sdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvZHJhZ2dhYmxlIn1dfSx7bmFtZToiZHJvcHpvbmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRpbmcgd2hhdCB0eXBlcyBvZiBjb250ZW50IGNhbiBiZSBkcm9wcGVkIG9uIGFuIGVsZW1lbnQsIHVzaW5nIHRoZSBbRHJhZyBhbmQgRHJvcCBBUEldKC9lbi1VUy9kb2NzL0RyYWdEcm9wL0RyYWdfYW5kX0Ryb3ApLiBJdCBjYW4gaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGBjb3B5YCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgZHJvcHBpbmcgd2lsbCBjcmVhdGUgYSBjb3B5IG9mIHRoZSBlbGVtZW50IHRoYXQgd2FzIGRyYWdnZWRcbiogICBgbW92ZWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHRoYXQgd2FzIGRyYWdnZWQgd2lsbCBiZSBtb3ZlZCB0byB0aGlzIG5ldyBsb2NhdGlvbi5cbiogICBgbGlua2AsIHdpbGwgY3JlYXRlIGEgbGluayB0byB0aGUgZHJhZ2dlZCBkYXRhLiJ9fSx7bmFtZToiZXhwb3J0cGFydHMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlVzZWQgdG8gdHJhbnNpdGl2ZWx5IGV4cG9ydCBzaGFkb3cgcGFydHMgZnJvbSBhIG5lc3RlZCBzaGFkb3cgdHJlZSBpbnRvIGEgY29udGFpbmluZyBsaWdodCB0cmVlLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvZXhwb3J0cGFydHMifV19LHtuYW1lOiJoaWRkZW4iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgaXMgbm90IHlldCwgb3IgaXMgbm8gbG9uZ2VyLCBfcmVsZXZhbnRfLiBGb3IgZXhhbXBsZSwgaXQgY2FuIGJlIHVzZWQgdG8gaGlkZSBlbGVtZW50cyBvZiB0aGUgcGFnZSB0aGF0IGNhbid0IGJlIHVzZWQgdW50aWwgdGhlIGxvZ2luIHByb2Nlc3MgaGFzIGJlZW4gY29tcGxldGVkLiBUaGUgYnJvd3NlciB3b24ndCByZW5kZXIgc3VjaCBlbGVtZW50cy4gVGhpcyBhdHRyaWJ1dGUgbXVzdCBub3QgYmUgdXNlZCB0byBoaWRlIGNvbnRlbnQgdGhhdCBjb3VsZCBsZWdpdGltYXRlbHkgYmUgc2hvd24uIn0sdmFsdWVTZXQ6InYiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaGlkZGVuIn1dfSx7bmFtZToiaWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgYSB1bmlxdWUgaWRlbnRpZmllciAoSUQpIHdoaWNoIG11c3QgYmUgdW5pcXVlIGluIHRoZSB3aG9sZSBkb2N1bWVudC4gSXRzIHB1cnBvc2UgaXMgdG8gaWRlbnRpZnkgdGhlIGVsZW1lbnQgd2hlbiBsaW5raW5nICh1c2luZyBhIGZyYWdtZW50IGlkZW50aWZpZXIpLCBzY3JpcHRpbmcsIG9yIHN0eWxpbmcgKHdpdGggQ1NTKS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2lkIn1dfSx7bmFtZToiaW5wdXRtb2RlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidQcm92aWRlcyBhIGhpbnQgdG8gYnJvd3NlcnMgYXMgdG8gdGhlIHR5cGUgb2YgdmlydHVhbCBrZXlib2FyZCBjb25maWd1cmF0aW9uIHRvIHVzZSB3aGVuIGVkaXRpbmcgdGhpcyBlbGVtZW50IG9yIGl0cyBjb250ZW50cy4gVXNlZCBwcmltYXJpbHkgb24gW2A8aW5wdXQ+YF0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnRzLCBidXQgaXMgdXNhYmxlIG9uIGFueSBlbGVtZW50IHdoaWxlIGluIGBbY29udGVudGVkaXRhYmxlXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLWNvbnRlbnRlZGl0YWJsZSlgIG1vZGUuJ30scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pbnB1dG1vZGUifV19LHtuYW1lOiJpcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoYXQgYSBzdGFuZGFyZCBIVE1MIGVsZW1lbnQgc2hvdWxkIGJlaGF2ZSBsaWtlIGEgcmVnaXN0ZXJlZCBjdXN0b20gYnVpbHQtaW4gZWxlbWVudCAoc2VlIFtVc2luZyBjdXN0b20gZWxlbWVudHNdKC9lbi1VUy9kb2NzL1dlYi9XZWJfQ29tcG9uZW50cy9Vc2luZ19jdXN0b21fZWxlbWVudHMpIGZvciBtb3JlIGRldGFpbHMpLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaXMifV19LHtuYW1lOiJpdGVtaWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1bmlxdWUsIGdsb2JhbCBpZGVudGlmaWVyIG9mIGFuIGl0ZW0uIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pdGVtaWQifV19LHtuYW1lOiJpdGVtcHJvcCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVXNlZCB0byBhZGQgcHJvcGVydGllcyB0byBhbiBpdGVtLiBFdmVyeSBIVE1MIGVsZW1lbnQgbWF5IGhhdmUgYW4gYGl0ZW1wcm9wYCBhdHRyaWJ1dGUgc3BlY2lmaWVkLCB3aGVyZSBhbiBgaXRlbXByb3BgIGNvbnNpc3RzIG9mIGEgbmFtZSBhbmQgdmFsdWUgcGFpci4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2l0ZW1wcm9wIn1dfSx7bmFtZToiaXRlbXJlZiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUHJvcGVydGllcyB0aGF0IGFyZSBub3QgZGVzY2VuZGFudHMgb2YgYW4gZWxlbWVudCB3aXRoIHRoZSBgaXRlbXNjb3BlYCBhdHRyaWJ1dGUgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgaXRlbSB1c2luZyBhbiBgaXRlbXJlZmAuIEl0IHByb3ZpZGVzIGEgbGlzdCBvZiBlbGVtZW50IGlkcyAobm90IGBpdGVtaWRgcykgd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZWxzZXdoZXJlIGluIHRoZSBkb2N1bWVudC4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2l0ZW1yZWYifV19LHtuYW1lOiJpdGVtc2NvcGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6ImBpdGVtc2NvcGVgICh1c3VhbGx5KSB3b3JrcyBhbG9uZyB3aXRoIGBbaXRlbXR5cGVdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzI2F0dHItaXRlbXR5cGUpYCB0byBzcGVjaWZ5IHRoYXQgdGhlIEhUTUwgY29udGFpbmVkIGluIGEgYmxvY2sgaXMgYWJvdXQgYSBwYXJ0aWN1bGFyIGl0ZW0uIGBpdGVtc2NvcGVgIGNyZWF0ZXMgdGhlIEl0ZW0gYW5kIGRlZmluZXMgdGhlIHNjb3BlIG9mIHRoZSBgaXRlbXR5cGVgIGFzc29jaWF0ZWQgd2l0aCBpdC4gYGl0ZW10eXBlYCBpcyBhIHZhbGlkIFVSTCBvZiBhIHZvY2FidWxhcnkgKHN1Y2ggYXMgW3NjaGVtYS5vcmddKGh0dHBzOi8vc2NoZW1hLm9yZy8pKSB0aGF0IGRlc2NyaWJlcyB0aGUgaXRlbSBhbmQgaXRzIHByb3BlcnRpZXMgY29udGV4dC4ifSx2YWx1ZVNldDoidiIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pdGVtc2NvcGUifV19LHtuYW1lOiJpdGVtdHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiU3BlY2lmaWVzIHRoZSBVUkwgb2YgdGhlIHZvY2FidWxhcnkgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZGVmaW5lIGBpdGVtcHJvcGBzIChpdGVtIHByb3BlcnRpZXMpIGluIHRoZSBkYXRhIHN0cnVjdHVyZS4gYFtpdGVtc2NvcGVdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzI2F0dHItaXRlbXNjb3BlKWAgaXMgdXNlZCB0byBzZXQgdGhlIHNjb3BlIG9mIHdoZXJlIGluIHRoZSBkYXRhIHN0cnVjdHVyZSB0aGUgdm9jYWJ1bGFyeSBzZXQgYnkgYGl0ZW10eXBlYCB3aWxsIGJlIGFjdGl2ZS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2l0ZW10eXBlIn1dfSx7bmFtZToibGFuZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSGVscHMgZGVmaW5lIHRoZSBsYW5ndWFnZSBvZiBhbiBlbGVtZW50OiB0aGUgbGFuZ3VhZ2UgdGhhdCBub24tZWRpdGFibGUgZWxlbWVudHMgYXJlIGluLCBvciB0aGUgbGFuZ3VhZ2UgdGhhdCBlZGl0YWJsZSBlbGVtZW50cyBzaG91bGQgYmUgd3JpdHRlbiBpbiBieSB0aGUgdXNlci4gVGhlIGF0dHJpYnV0ZSBjb250YWlucyBvbmUg4oCcbGFuZ3VhZ2UgdGFn4oCdIChtYWRlIG9mIGh5cGhlbi1zZXBhcmF0ZWQg4oCcbGFuZ3VhZ2Ugc3VidGFnc+KAnSkgaW4gdGhlIGZvcm1hdCBkZWZpbmVkIGluIFtfVGFncyBmb3IgSWRlbnRpZnlpbmcgTGFuZ3VhZ2VzIChCQ1A0NylfXShodHRwczovL3d3dy5pZXRmLm9yZy9yZmMvYmNwL2JjcDQ3LnR4dCkuIFsqKnhtbDpsYW5nKipdKCNhdHRyLXhtbDpsYW5nKSBoYXMgcHJpb3JpdHkgb3ZlciBpdC4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2xhbmcifV19LHtuYW1lOiJwYXJ0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBwYXJ0IG5hbWVzIG9mIHRoZSBlbGVtZW50LiBQYXJ0IG5hbWVzIGFsbG93cyBDU1MgdG8gc2VsZWN0IGFuZCBzdHlsZSBzcGVjaWZpYyBlbGVtZW50cyBpbiBhIHNoYWRvdyB0cmVlIHZpYSB0aGUgW2A6OnBhcnRgXSgvZW4tVVMvZG9jcy9XZWIvQ1NTLzo6cGFydCAiVGhlIDo6cGFydCBDU1MgcHNldWRvLWVsZW1lbnQgcmVwcmVzZW50cyBhbnkgZWxlbWVudCB3aXRoaW4gYSBzaGFkb3cgdHJlZSB0aGF0IGhhcyBhIG1hdGNoaW5nIHBhcnQgYXR0cmlidXRlLiIpIHBzZXVkby1lbGVtZW50Lid9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvcGFydCJ9XX0se25hbWU6InJvbGUiLHZhbHVlU2V0OiJyb2xlcyJ9LHtuYW1lOiJzbG90IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBc3NpZ25zIGEgc2xvdCBpbiBhIFtzaGFkb3cgRE9NXSgvZW4tVVMvZG9jcy9XZWIvV2ViX0NvbXBvbmVudHMvU2hhZG93X0RPTSkgc2hhZG93IHRyZWUgdG8gYW4gZWxlbWVudDogQW4gZWxlbWVudCB3aXRoIGEgYHNsb3RgIGF0dHJpYnV0ZSBpcyBhc3NpZ25lZCB0byB0aGUgc2xvdCBjcmVhdGVkIGJ5IHRoZSBbYDxzbG90PmBdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2xvdCBcIlRoZSBIVE1MIDxzbG90PiBlbGVtZW504oCUcGFydCBvZiB0aGUgV2ViIENvbXBvbmVudHMgdGVjaG5vbG9neSBzdWl0ZeKAlGlzIGEgcGxhY2Vob2xkZXIgaW5zaWRlIGEgd2ViIGNvbXBvbmVudCB0aGF0IHlvdSBjYW4gZmlsbCB3aXRoIHlvdXIgb3duIG1hcmt1cCwgd2hpY2ggbGV0cyB5b3UgY3JlYXRlIHNlcGFyYXRlIERPTSB0cmVlcyBhbmQgcHJlc2VudCB0aGVtIHRvZ2V0aGVyLlwiKSBlbGVtZW50IHdob3NlIGBbbmFtZV0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zbG90I2F0dHItbmFtZSlgIGF0dHJpYnV0ZSdzIHZhbHVlIG1hdGNoZXMgdGhhdCBgc2xvdGAgYXR0cmlidXRlJ3MgdmFsdWUuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9zbG90In1dfSx7bmFtZToic3BlbGxjaGVjayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgZGVmaW5lcyB3aGV0aGVyIHRoZSBlbGVtZW50IG1heSBiZSBjaGVja2VkIGZvciBzcGVsbGluZyBlcnJvcnMuIEl0IG1heSBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYHRydWVgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUsIGlmIHBvc3NpYmxlLCBjaGVja2VkIGZvciBzcGVsbGluZyBlcnJvcnM7XG4qICAgYGZhbHNlYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBjaGVja2VkIGZvciBzcGVsbGluZyBlcnJvcnMuIn0sdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvc3BlbGxjaGVjayJ9XX0se25hbWU6InN0eWxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidDb250YWlucyBbQ1NTXSgvZW4tVVMvZG9jcy9XZWIvQ1NTKSBzdHlsaW5nIGRlY2xhcmF0aW9ucyB0byBiZSBhcHBsaWVkIHRvIHRoZSBlbGVtZW50LiBOb3RlIHRoYXQgaXQgaXMgcmVjb21tZW5kZWQgZm9yIHN0eWxlcyB0byBiZSBkZWZpbmVkIGluIGEgc2VwYXJhdGUgZmlsZSBvciBmaWxlcy4gVGhpcyBhdHRyaWJ1dGUgYW5kIHRoZSBbYDxzdHlsZT5gXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3N0eWxlICJUaGUgSFRNTCA8c3R5bGU+IGVsZW1lbnQgY29udGFpbnMgc3R5bGUgaW5mb3JtYXRpb24gZm9yIGEgZG9jdW1lbnQsIG9yIHBhcnQgb2YgYSBkb2N1bWVudC4iKSBlbGVtZW50IGhhdmUgbWFpbmx5IHRoZSBwdXJwb3NlIG9mIGFsbG93aW5nIGZvciBxdWljayBzdHlsaW5nLCBmb3IgZXhhbXBsZSBmb3IgdGVzdGluZyBwdXJwb3Nlcy4nfSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3N0eWxlIn1dfSx7bmFtZToidGFiaW5kZXgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGludGVnZXIgYXR0cmlidXRlIGluZGljYXRpbmcgaWYgdGhlIGVsZW1lbnQgY2FuIHRha2UgaW5wdXQgZm9jdXMgKGlzIF9mb2N1c2FibGVfKSwgaWYgaXQgc2hvdWxkIHBhcnRpY2lwYXRlIHRvIHNlcXVlbnRpYWwga2V5Ym9hcmQgbmF2aWdhdGlvbiwgYW5kIGlmIHNvLCBhdCB3aGF0IHBvc2l0aW9uLiBJdCBjYW4gdGFrZSBzZXZlcmFsIHZhbHVlczpcblxuKiAgIGEgX25lZ2F0aXZlIHZhbHVlXyBtZWFucyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBiZSBmb2N1c2FibGUsIGJ1dCBzaG91bGQgbm90IGJlIHJlYWNoYWJsZSB2aWEgc2VxdWVudGlhbCBrZXlib2FyZCBuYXZpZ2F0aW9uO1xuKiAgIGAwYCBtZWFucyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBiZSBmb2N1c2FibGUgYW5kIHJlYWNoYWJsZSB2aWEgc2VxdWVudGlhbCBrZXlib2FyZCBuYXZpZ2F0aW9uLCBidXQgaXRzIHJlbGF0aXZlIG9yZGVyIGlzIGRlZmluZWQgYnkgdGhlIHBsYXRmb3JtIGNvbnZlbnRpb247XG4qICAgYSBfcG9zaXRpdmUgdmFsdWVfIG1lYW5zIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIGZvY3VzYWJsZSBhbmQgcmVhY2hhYmxlIHZpYSBzZXF1ZW50aWFsIGtleWJvYXJkIG5hdmlnYXRpb247IHRoZSBvcmRlciBpbiB3aGljaCB0aGUgZWxlbWVudHMgYXJlIGZvY3VzZWQgaXMgdGhlIGluY3JlYXNpbmcgdmFsdWUgb2YgdGhlIFsqKnRhYmluZGV4KipdKCNhdHRyLXRhYmluZGV4KS4gSWYgc2V2ZXJhbCBlbGVtZW50cyBzaGFyZSB0aGUgc2FtZSB0YWJpbmRleCwgdGhlaXIgcmVsYXRpdmUgb3JkZXIgZm9sbG93cyB0aGVpciByZWxhdGl2ZSBwb3NpdGlvbnMgaW4gdGhlIGRvY3VtZW50LiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvdGFiaW5kZXgifV19LHtuYW1lOiJ0aXRsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQ29udGFpbnMgYSB0ZXh0IHJlcHJlc2VudGluZyBhZHZpc29yeSBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIHRoZSBlbGVtZW50IGl0IGJlbG9uZ3MgdG8uIFN1Y2ggaW5mb3JtYXRpb24gY2FuIHR5cGljYWxseSwgYnV0IG5vdCBuZWNlc3NhcmlseSwgYmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyIGFzIGEgdG9vbHRpcC4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RpdGxlIn1dfSx7bmFtZToidHJhbnNsYXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbnVtZXJhdGVkIGF0dHJpYnV0ZSB0aGF0IGlzIHVzZWQgdG8gc3BlY2lmeSB3aGV0aGVyIGFuIGVsZW1lbnQncyBhdHRyaWJ1dGUgdmFsdWVzIGFuZCB0aGUgdmFsdWVzIG9mIGl0cyBbYFRleHRgXSgvZW4tVVMvZG9jcy9XZWIvQVBJL1RleHQgXCJUaGUgVGV4dCBpbnRlcmZhY2UgcmVwcmVzZW50cyB0aGUgdGV4dHVhbCBjb250ZW50IG9mIEVsZW1lbnQgb3IgQXR0ci4gSWYgYW4gZWxlbWVudCBoYXMgbm8gbWFya3VwIHdpdGhpbiBpdHMgY29udGVudCwgaXQgaGFzIGEgc2luZ2xlIGNoaWxkIGltcGxlbWVudGluZyBUZXh0IHRoYXQgY29udGFpbnMgdGhlIGVsZW1lbnQncyB0ZXh0LiBIb3dldmVyLCBpZiB0aGUgZWxlbWVudCBjb250YWlucyBtYXJrdXAsIGl0IGlzIHBhcnNlZCBpbnRvIGluZm9ybWF0aW9uIGl0ZW1zIGFuZCBUZXh0IG5vZGVzIHRoYXQgZm9ybSBpdHMgY2hpbGRyZW4uXCIpIG5vZGUgY2hpbGRyZW4gYXJlIHRvIGJlIHRyYW5zbGF0ZWQgd2hlbiB0aGUgcGFnZSBpcyBsb2NhbGl6ZWQsIG9yIHdoZXRoZXIgdG8gbGVhdmUgdGhlbSB1bmNoYW5nZWQuIEl0IGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgZW1wdHkgc3RyaW5nIGFuZCBgeWVzYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgd2lsbCBiZSB0cmFuc2xhdGVkLlxuKiAgIGBub2AsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHdpbGwgbm90IGJlIHRyYW5zbGF0ZWQuIn0sdmFsdWVTZXQ6InkiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvdHJhbnNsYXRlIn1dfSx7bmFtZToib25hYm9ydCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxvYWRpbmcgb2YgYSByZXNvdXJjZSBoYXMgYmVlbiBhYm9ydGVkLiJ9fSx7bmFtZToib25ibHVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbGVtZW50IGhhcyBsb3N0IGZvY3VzIChkb2VzIG5vdCBidWJibGUpLiJ9fSx7bmFtZToib25jYW5wbGF5IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdXNlciBhZ2VudCBjYW4gcGxheSB0aGUgbWVkaWEsIGJ1dCBlc3RpbWF0ZXMgdGhhdCBub3QgZW5vdWdoIGRhdGEgaGFzIGJlZW4gbG9hZGVkIHRvIHBsYXkgdGhlIG1lZGlhIHVwIHRvIGl0cyBlbmQgd2l0aG91dCBoYXZpbmcgdG8gc3RvcCBmb3IgZnVydGhlciBidWZmZXJpbmcgb2YgY29udGVudC4ifX0se25hbWU6Im9uY2FucGxheXRocm91Z2giLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1c2VyIGFnZW50IGNhbiBwbGF5IHRoZSBtZWRpYSB1cCB0byBpdHMgZW5kIHdpdGhvdXQgaGF2aW5nIHRvIHN0b3AgZm9yIGZ1cnRoZXIgYnVmZmVyaW5nIG9mIGNvbnRlbnQuIn19LHtuYW1lOiJvbmNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGNoYW5nZSBldmVudCBpcyBmaXJlZCBmb3IgPGlucHV0PiwgPHNlbGVjdD4sIGFuZCA8dGV4dGFyZWE+IGVsZW1lbnRzIHdoZW4gYSBjaGFuZ2UgdG8gdGhlIGVsZW1lbnQncyB2YWx1ZSBpcyBjb21taXR0ZWQgYnkgdGhlIHVzZXIuIn19LHtuYW1lOiJvbmNsaWNrIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBidXR0b24gaGFzIGJlZW4gcHJlc3NlZCBhbmQgcmVsZWFzZWQgb24gYW4gZWxlbWVudC4ifX0se25hbWU6Im9uY29udGV4dG1lbnUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSByaWdodCBidXR0b24gb2YgdGhlIG1vdXNlIGlzIGNsaWNrZWQgKGJlZm9yZSB0aGUgY29udGV4dCBtZW51IGlzIGRpc3BsYXllZCkuIn19LHtuYW1lOiJvbmRibGNsaWNrIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBidXR0b24gaXMgY2xpY2tlZCB0d2ljZSBvbiBhbiBlbGVtZW50LiJ9fSx7bmFtZToib25kcmFnIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbGVtZW50IG9yIHRleHQgc2VsZWN0aW9uIGlzIGJlaW5nIGRyYWdnZWQgKGV2ZXJ5IDM1MG1zKS4ifX0se25hbWU6Im9uZHJhZ2VuZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBkcmFnIG9wZXJhdGlvbiBpcyBiZWluZyBlbmRlZCAoYnkgcmVsZWFzaW5nIGEgbW91c2UgYnV0dG9uIG9yIGhpdHRpbmcgdGhlIGVzY2FwZSBrZXkpLiJ9fSx7bmFtZToib25kcmFnZW50ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgZHJhZ2dlZCBlbGVtZW50IG9yIHRleHQgc2VsZWN0aW9uIGVudGVycyBhIHZhbGlkIGRyb3AgdGFyZ2V0LiJ9fSx7bmFtZToib25kcmFnbGVhdmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgZHJhZ2dlZCBlbGVtZW50IG9yIHRleHQgc2VsZWN0aW9uIGxlYXZlcyBhIHZhbGlkIGRyb3AgdGFyZ2V0LiJ9fSx7bmFtZToib25kcmFnb3ZlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbiBpcyBiZWluZyBkcmFnZ2VkIG92ZXIgYSB2YWxpZCBkcm9wIHRhcmdldCAoZXZlcnkgMzUwbXMpLiJ9fSx7bmFtZToib25kcmFnc3RhcnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1c2VyIHN0YXJ0cyBkcmFnZ2luZyBhbiBlbGVtZW50IG9yIHRleHQgc2VsZWN0aW9uLiJ9fSx7bmFtZToib25kcm9wIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbGVtZW50IGlzIGRyb3BwZWQgb24gYSB2YWxpZCBkcm9wIHRhcmdldC4ifX0se25hbWU6Im9uZHVyYXRpb25jaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkdXJhdGlvbiBhdHRyaWJ1dGUgaGFzIGJlZW4gdXBkYXRlZC4ifX0se25hbWU6Im9uZW1wdGllZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG1lZGlhIGhhcyBiZWNvbWUgZW1wdHk7IGZvciBleGFtcGxlLCB0aGlzIGV2ZW50IGlzIHNlbnQgaWYgdGhlIG1lZGlhIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkIChvciBwYXJ0aWFsbHkgbG9hZGVkKSwgYW5kIHRoZSBsb2FkKCkgbWV0aG9kIGlzIGNhbGxlZCB0byByZWxvYWQgaXQuIn19LHtuYW1lOiJvbmVuZGVkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQbGF5YmFjayBoYXMgc3RvcHBlZCBiZWNhdXNlIHRoZSBlbmQgb2YgdGhlIG1lZGlhIHdhcyByZWFjaGVkLiJ9fSx7bmFtZToib25lcnJvciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSByZXNvdXJjZSBmYWlsZWQgdG8gbG9hZC4ifX0se25hbWU6Im9uZm9jdXMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVsZW1lbnQgaGFzIHJlY2VpdmVkIGZvY3VzIChkb2VzIG5vdCBidWJibGUpLiJ9fSx7bmFtZToib25mb3JtY2hhbmdlIn0se25hbWU6Im9uZm9ybWlucHV0In0se25hbWU6Im9uaW5wdXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB2YWx1ZSBvZiBhbiBlbGVtZW50IGNoYW5nZXMgb3IgdGhlIGNvbnRlbnQgb2YgYW4gZWxlbWVudCB3aXRoIHRoZSBhdHRyaWJ1dGUgY29udGVudGVkaXRhYmxlIGlzIG1vZGlmaWVkLiJ9fSx7bmFtZToib25pbnZhbGlkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHN1Ym1pdHRhYmxlIGVsZW1lbnQgaGFzIGJlZW4gY2hlY2tlZCBhbmQgZG9lc24ndCBzYXRpc2Z5IGl0cyBjb25zdHJhaW50cy4ifX0se25hbWU6Im9ua2V5ZG93biIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBrZXkgaXMgcHJlc3NlZCBkb3duLiJ9fSx7bmFtZToib25rZXlwcmVzcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBrZXkgaXMgcHJlc3NlZCBkb3duIGFuZCB0aGF0IGtleSBub3JtYWxseSBwcm9kdWNlcyBhIGNoYXJhY3RlciB2YWx1ZSAodXNlIGlucHV0IGluc3RlYWQpLiJ9fSx7bmFtZToib25rZXl1cCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBrZXkgaXMgcmVsZWFzZWQuIn19LHtuYW1lOiJvbmxvYWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcmVzb3VyY2UgYW5kIGl0cyBkZXBlbmRlbnQgcmVzb3VyY2VzIGhhdmUgZmluaXNoZWQgbG9hZGluZy4ifX0se25hbWU6Im9ubG9hZGVkZGF0YSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGZpcnN0IGZyYW1lIG9mIHRoZSBtZWRpYSBoYXMgZmluaXNoZWQgbG9hZGluZy4ifX0se25hbWU6Im9ubG9hZGVkbWV0YWRhdGEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtZXRhZGF0YSBoYXMgYmVlbiBsb2FkZWQuIn19LHtuYW1lOiJvbmxvYWRzdGFydCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUHJvZ3Jlc3MgaGFzIGJlZ3VuLiJ9fSx7bmFtZToib25tb3VzZWRvd24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGJ1dHRvbiAodXN1YWxseSBhIG1vdXNlKSBpcyBwcmVzc2VkIG9uIGFuIGVsZW1lbnQuIn19LHtuYW1lOiJvbm1vdXNlbW92ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb3ZlciBhbiBlbGVtZW50LiJ9fSx7bmFtZToib25tb3VzZW91dCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb2ZmIHRoZSBlbGVtZW50IHRoYXQgaGFzIHRoZSBsaXN0ZW5lciBhdHRhY2hlZCBvciBvZmYgb25lIG9mIGl0cyBjaGlsZHJlbi4ifX0se25hbWU6Im9ubW91c2VvdmVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBvbnRvIHRoZSBlbGVtZW50IHRoYXQgaGFzIHRoZSBsaXN0ZW5lciBhdHRhY2hlZCBvciBvbnRvIG9uZSBvZiBpdHMgY2hpbGRyZW4uIn19LHtuYW1lOiJvbm1vdXNldXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGJ1dHRvbiBpcyByZWxlYXNlZCBvdmVyIGFuIGVsZW1lbnQuIn19LHtuYW1lOiJvbm1vdXNld2hlZWwifSx7bmFtZToib25tb3VzZWVudGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBvbnRvIHRoZSBlbGVtZW50IHRoYXQgaGFzIHRoZSBsaXN0ZW5lciBhdHRhY2hlZC4ifX0se25hbWU6Im9ubW91c2VsZWF2ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb2ZmIHRoZSBlbGVtZW50IHRoYXQgaGFzIHRoZSBsaXN0ZW5lciBhdHRhY2hlZC4ifX0se25hbWU6Im9ucGF1c2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlBsYXliYWNrIGhhcyBiZWVuIHBhdXNlZC4ifX0se25hbWU6Im9ucGxheSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUGxheWJhY2sgaGFzIGJlZ3VuLiJ9fSx7bmFtZToib25wbGF5aW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQbGF5YmFjayBpcyByZWFkeSB0byBzdGFydCBhZnRlciBoYXZpbmcgYmVlbiBwYXVzZWQgb3IgZGVsYXllZCBkdWUgdG8gbGFjayBvZiBkYXRhLiJ9fSx7bmFtZToib25wcm9ncmVzcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW4gcHJvZ3Jlc3MuIn19LHtuYW1lOiJvbnJhdGVjaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwbGF5YmFjayByYXRlIGhhcyBjaGFuZ2VkLiJ9fSx7bmFtZToib25yZXNldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBmb3JtIGlzIHJlc2V0LiJ9fSx7bmFtZToib25yZXNpemUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkb2N1bWVudCB2aWV3IGhhcyBiZWVuIHJlc2l6ZWQuIn19LHtuYW1lOiJvbnJlYWR5c3RhdGVjaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSBvZiBhIGRvY3VtZW50IGhhcyBjaGFuZ2VkLiJ9fSx7bmFtZToib25zY3JvbGwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkb2N1bWVudCB2aWV3IG9yIGFuIGVsZW1lbnQgaGFzIGJlZW4gc2Nyb2xsZWQuIn19LHtuYW1lOiJvbnNlZWtlZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBzZWVrIG9wZXJhdGlvbiBjb21wbGV0ZWQuIn19LHtuYW1lOiJvbnNlZWtpbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgc2VlayBvcGVyYXRpb24gYmVnYW4uIn19LHtuYW1lOiJvbnNlbGVjdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiU29tZSB0ZXh0IGlzIGJlaW5nIHNlbGVjdGVkLiJ9fSx7bmFtZToib25zaG93IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGNvbnRleHRtZW51IGV2ZW50IHdhcyBmaXJlZCBvbi9idWJibGVkIHRvIGFuIGVsZW1lbnQgdGhhdCBoYXMgYSBjb250ZXh0bWVudSBhdHRyaWJ1dGUifX0se25hbWU6Im9uc3RhbGxlZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVzZXIgYWdlbnQgaXMgdHJ5aW5nIHRvIGZldGNoIG1lZGlhIGRhdGEsIGJ1dCBkYXRhIGlzIHVuZXhwZWN0ZWRseSBub3QgZm9ydGhjb21pbmcuIn19LHtuYW1lOiJvbnN1Ym1pdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBmb3JtIGlzIHN1Ym1pdHRlZC4ifX0se25hbWU6Im9uc3VzcGVuZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiTWVkaWEgZGF0YSBsb2FkaW5nIGhhcyBiZWVuIHN1c3BlbmRlZC4ifX0se25hbWU6Im9udGltZXVwZGF0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRpbWUgaW5kaWNhdGVkIGJ5IHRoZSBjdXJyZW50VGltZSBhdHRyaWJ1dGUgaGFzIGJlZW4gdXBkYXRlZC4ifX0se25hbWU6Im9udm9sdW1lY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdm9sdW1lIGhhcyBjaGFuZ2VkLiJ9fSx7bmFtZToib253YWl0aW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQbGF5YmFjayBoYXMgc3RvcHBlZCBiZWNhdXNlIG9mIGEgdGVtcG9yYXJ5IGxhY2sgb2YgZGF0YS4ifX0se25hbWU6Im9ucG9pbnRlcmNhbmNlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50ZXIgaXMgdW5saWtlbHkgdG8gcHJvZHVjZSBhbnkgbW9yZSBldmVudHMuIn19LHtuYW1lOiJvbnBvaW50ZXJkb3duIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcG9pbnRlciBlbnRlcnMgdGhlIGFjdGl2ZSBidXR0b25zIHN0YXRlLiJ9fSx7bmFtZToib25wb2ludGVyZW50ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBpbnNpZGUgdGhlIGhpdC10ZXN0aW5nIGJvdW5kYXJ5LiJ9fSx7bmFtZToib25wb2ludGVybGVhdmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBvdXQgb2YgdGhlIGhpdC10ZXN0aW5nIGJvdW5kYXJ5LiJ9fSx7bmFtZToib25wb2ludGVybG9ja2NoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50ZXIgd2FzIGxvY2tlZCBvciByZWxlYXNlZC4ifX0se25hbWU6Im9ucG9pbnRlcmxvY2tlcnJvciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSXQgd2FzIGltcG9zc2libGUgdG8gbG9jayB0aGUgcG9pbnRlciBmb3IgdGVjaG5pY2FsIHJlYXNvbnMgb3IgYmVjYXVzZSB0aGUgcGVybWlzc2lvbiB3YXMgZGVuaWVkLiJ9fSx7bmFtZToib25wb2ludGVybW92ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50ZXIgY2hhbmdlZCBjb29yZGluYXRlcy4ifX0se25hbWU6Im9ucG9pbnRlcm91dCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50aW5nIGRldmljZSBtb3ZlZCBvdXQgb2YgaGl0LXRlc3RpbmcgYm91bmRhcnkgb3IgbGVhdmVzIGRldGVjdGFibGUgaG92ZXIgcmFuZ2UuIn19LHtuYW1lOiJvbnBvaW50ZXJvdmVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIGludG8gdGhlIGhpdC10ZXN0aW5nIGJvdW5kYXJ5LiJ9fSx7bmFtZToib25wb2ludGVydXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGVyIGxlYXZlcyB0aGUgYWN0aXZlIGJ1dHRvbnMgc3RhdGUuIn19LHtuYW1lOiJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1hY3RpdmVkZXNjZW5kYW50In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIGN1cnJlbnRseSBhY3RpdmUgZWxlbWVudCB3aGVuIERPTSBmb2N1cyBpcyBvbiBhIFtgY29tcG9zaXRlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jY29tcG9zaXRlKSB3aWRnZXQsIFtgdGV4dGJveGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RleHRib3gpLCBbYGdyb3VwYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JvdXApLCBvciBbYGFwcGxpY2F0aW9uYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXBwbGljYXRpb24pLiJ9fSx7bmFtZToiYXJpYS1hdG9taWMiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYXRvbWljIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIFthc3Npc3RpdmUgdGVjaG5vbG9naWVzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tYXNzaXN0aXZlLXRlY2hub2xvZ3kpIHdpbGwgcHJlc2VudCBhbGwsIG9yIG9ubHkgcGFydHMgb2YsIHRoZSBjaGFuZ2VkIHJlZ2lvbiBiYXNlZCBvbiB0aGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMgZGVmaW5lZCBieSB0aGUgW2BhcmlhLXJlbGV2YW50YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yZWxldmFudCkgYXR0cmlidXRlLiJ9fSx7bmFtZToiYXJpYS1hdXRvY29tcGxldGUiLHZhbHVlU2V0OiJhdXRvY29tcGxldGUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1hdXRvY29tcGxldGUifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgaW5wdXR0aW5nIHRleHQgY291bGQgdHJpZ2dlciBkaXNwbGF5IG9mIG9uZSBvciBtb3JlIHByZWRpY3Rpb25zIG9mIHRoZSB1c2VyJ3MgaW50ZW5kZWQgdmFsdWUgZm9yIGFuIGlucHV0IGFuZCBzcGVjaWZpZXMgaG93IHByZWRpY3Rpb25zIHdvdWxkIGJlIHByZXNlbnRlZCBpZiB0aGV5IGFyZSBtYWRlLiJ9fSx7bmFtZToiYXJpYS1idXN5Iix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWJ1c3kifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIGFuIGVsZW1lbnQgaXMgYmVpbmcgbW9kaWZpZWQgYW5kIHRoYXQgYXNzaXN0aXZlIHRlY2hub2xvZ2llcyBfTUFZXyB3YW50IHRvIHdhaXQgdW50aWwgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIGNvbXBsZXRlIGJlZm9yZSBleHBvc2luZyB0aGVtIHRvIHRoZSB1c2VyLiJ9fSx7bmFtZToiYXJpYS1jaGVja2VkIix2YWx1ZVNldDoidHJpc3RhdGUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jaGVja2VkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0luZGljYXRlcyB0aGUgY3VycmVudCAiY2hlY2tlZCIgW3N0YXRlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tc3RhdGUpIG9mIGNoZWNrYm94ZXMsIHJhZGlvIGJ1dHRvbnMsIGFuZCBvdGhlciBbd2lkZ2V0c10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIFNlZSByZWxhdGVkIFtgYXJpYS1wcmVzc2VkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wcmVzc2VkKSBhbmQgW2BhcmlhLXNlbGVjdGVkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZWxlY3RlZCkuJ319LHtuYW1lOiJhcmlhLWNvbGNvdW50IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29sY291bnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgaW4gYSBbYHRhYmxlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGFibGUpLCBbYGdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncmlkKSwgb3IgW2B0cmVlZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RyZWVncmlkKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWNvbGluZGV4YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb2xpbmRleCkuIn19LHtuYW1lOiJhcmlhLWNvbGluZGV4IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29saW5kZXgifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhbiBbZWxlbWVudCdzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgY29sdW1uIGluZGV4IG9yIHBvc2l0aW9uIHdpdGggcmVzcGVjdCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgd2l0aGluIGEgW2B0YWJsZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RhYmxlKSwgW2BncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JpZCksIG9yIFtgdHJlZWdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0cmVlZ3JpZCkuIFNlZSByZWxhdGVkIFtgYXJpYS1jb2xjb3VudGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29sY291bnQpIGFuZCBbYGFyaWEtY29sc3BhbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29sc3BhbikuIn19LHtuYW1lOiJhcmlhLWNvbHNwYW4iLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb2xzcGFuIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIG51bWJlciBvZiBjb2x1bW5zIHNwYW5uZWQgYnkgYSBjZWxsIG9yIGdyaWRjZWxsIHdpdGhpbiBhIFtgdGFibGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0YWJsZSksIFtgZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyaWQpLCBvciBbYHRyZWVncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdHJlZWdyaWQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtY29saW5kZXhgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbGluZGV4KSBhbmQgW2BhcmlhLXJvd3NwYW5gXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvd3NwYW4pLiJ9fSx7bmFtZToiYXJpYS1jb250cm9scyIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbnRyb2xzIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSB3aG9zZSBjb250ZW50cyBvciBwcmVzZW5jZSBhcmUgY29udHJvbGxlZCBieSB0aGUgY3VycmVudCBlbGVtZW50LiBTZWUgcmVsYXRlZCBbYGFyaWEtb3duc2BdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtb3ducykuIn19LHtuYW1lOiJhcmlhLWN1cnJlbnQiLHZhbHVlU2V0OiJjdXJyZW50IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY3VycmVudCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgdGhhdCByZXByZXNlbnRzIHRoZSBjdXJyZW50IGl0ZW0gd2l0aGluIGEgY29udGFpbmVyIG9yIHNldCBvZiByZWxhdGVkIGVsZW1lbnRzLiJ9fSx7bmFtZToiYXJpYS1kZXNjcmliZWRieSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRlc2NyaWJlZGJ5In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSB0aGF0IGRlc2NyaWJlcyB0aGUgW29iamVjdF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLW9iamVjdCkuIFNlZSByZWxhdGVkIFtgYXJpYS1sYWJlbGxlZGJ5YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1sYWJlbGxlZGJ5KS4ifX0se25hbWU6ImFyaWEtZGlzYWJsZWQiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZGlzYWJsZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoYXQgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgaXMgW3BlcmNlaXZhYmxlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tcGVyY2VpdmFibGUpIGJ1dCBkaXNhYmxlZCwgc28gaXQgaXMgbm90IGVkaXRhYmxlIG9yIG90aGVyd2lzZSBbb3BlcmFibGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vcGVyYWJsZSkuIFNlZSByZWxhdGVkIFtgYXJpYS1oaWRkZW5gXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWhpZGRlbikgYW5kIFtgYXJpYS1yZWFkb25seWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcmVhZG9ubHkpLiJ9fSx7bmFtZToiYXJpYS1kcm9wZWZmZWN0Iix2YWx1ZVNldDoiZHJvcGVmZmVjdCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRyb3BlZmZlY3QifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiXFxbRGVwcmVjYXRlZCBpbiBBUklBIDEuMVxcXSBJbmRpY2F0ZXMgd2hhdCBmdW5jdGlvbnMgY2FuIGJlIHBlcmZvcm1lZCB3aGVuIGEgZHJhZ2dlZCBvYmplY3QgaXMgcmVsZWFzZWQgb24gdGhlIGRyb3AgdGFyZ2V0LiJ9fSx7bmFtZToiYXJpYS1lcnJvcm1lc3NhZ2UiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1lcnJvcm1lc3NhZ2UifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWRlbnRpZmllcyB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSB0aGF0IHByb3ZpZGVzIGFuIGVycm9yIG1lc3NhZ2UgZm9yIHRoZSBbb2JqZWN0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tb2JqZWN0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWludmFsaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWludmFsaWQpIGFuZCBbYGFyaWEtZGVzY3JpYmVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRlc2NyaWJlZGJ5KS4ifX0se25hbWU6ImFyaWEtZXhwYW5kZWQiLHZhbHVlU2V0OiJ1IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZXhwYW5kZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGVsZW1lbnQsIG9yIGFub3RoZXIgZ3JvdXBpbmcgZWxlbWVudCBpdCBjb250cm9scywgaXMgY3VycmVudGx5IGV4cGFuZGVkIG9yIGNvbGxhcHNlZC4ifX0se25hbWU6ImFyaWEtZmxvd3RvIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZmxvd3RvIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIG5leHQgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSAob3IgZWxlbWVudHMpIGluIGFuIGFsdGVybmF0ZSByZWFkaW5nIG9yZGVyIG9mIGNvbnRlbnQgd2hpY2gsIGF0IHRoZSB1c2VyJ3MgZGlzY3JldGlvbiwgYWxsb3dzIGFzc2lzdGl2ZSB0ZWNobm9sb2d5IHRvIG92ZXJyaWRlIHRoZSBnZW5lcmFsIGRlZmF1bHQgb2YgcmVhZGluZyBpbiBkb2N1bWVudCBzb3VyY2Ugb3JkZXIuIn19LHtuYW1lOiJhcmlhLWdyYWJiZWQiLHZhbHVlU2V0OiJ1IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZ3JhYmJlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidcXFtEZXByZWNhdGVkIGluIEFSSUEgMS4xXFxdIEluZGljYXRlcyBhbiBlbGVtZW50XCdzICJncmFiYmVkIiBbc3RhdGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1zdGF0ZSkgaW4gYSBkcmFnLWFuZC1kcm9wIG9wZXJhdGlvbi4nfX0se25hbWU6ImFyaWEtaGFzcG9wdXAiLHZhbHVlU2V0OiJoYXNwb3B1cCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWhhc3BvcHVwIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgYXZhaWxhYmlsaXR5IGFuZCB0eXBlIG9mIGludGVyYWN0aXZlIHBvcHVwIGVsZW1lbnQsIHN1Y2ggYXMgbWVudSBvciBkaWFsb2csIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBhbiBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpLiJ9fSx7bmFtZToiYXJpYS1oaWRkZW4iLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtaGlkZGVuIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGlzIGV4cG9zZWQgdG8gYW4gYWNjZXNzaWJpbGl0eSBBUEkuIFNlZSByZWxhdGVkIFtgYXJpYS1kaXNhYmxlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZGlzYWJsZWQpLiJ9fSx7bmFtZToiYXJpYS1pbnZhbGlkIix2YWx1ZVNldDoiaW52YWxpZCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWludmFsaWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBlbnRlcmVkIHZhbHVlIGRvZXMgbm90IGNvbmZvcm0gdG8gdGhlIGZvcm1hdCBleHBlY3RlZCBieSB0aGUgYXBwbGljYXRpb24uIFNlZSByZWxhdGVkIFtgYXJpYS1lcnJvcm1lc3NhZ2VgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWVycm9ybWVzc2FnZSkuIn19LHtuYW1lOiJhcmlhLWxhYmVsIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWwifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhIHN0cmluZyB2YWx1ZSB0aGF0IGxhYmVscyB0aGUgY3VycmVudCBlbGVtZW50LiBTZWUgcmVsYXRlZCBbYGFyaWEtbGFiZWxsZWRieWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWxsZWRieSkuIn19LHtuYW1lOiJhcmlhLWxhYmVsbGVkYnkiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1sYWJlbGxlZGJ5In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSB0aGF0IGxhYmVscyB0aGUgY3VycmVudCBlbGVtZW50LiBTZWUgcmVsYXRlZCBbYGFyaWEtZGVzY3JpYmVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRlc2NyaWJlZGJ5KS4ifX0se25hbWU6ImFyaWEtbGV2ZWwiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1sZXZlbCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBoaWVyYXJjaGljYWwgbGV2ZWwgb2YgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSB3aXRoaW4gYSBzdHJ1Y3R1cmUuIn19LHtuYW1lOiJhcmlhLWxpdmUiLHZhbHVlU2V0OiJsaXZlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGl2ZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCBhbiBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIHdpbGwgYmUgdXBkYXRlZCwgYW5kIGRlc2NyaWJlcyB0aGUgdHlwZXMgb2YgdXBkYXRlcyB0aGUgW3VzZXIgYWdlbnRzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tdXNlci1hZ2VudCksIFthc3Npc3RpdmUgdGVjaG5vbG9naWVzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tYXNzaXN0aXZlLXRlY2hub2xvZ3kpLCBhbmQgdXNlciBjYW4gZXhwZWN0IGZyb20gdGhlIFtsaXZlIHJlZ2lvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWxpdmUtcmVnaW9uKS4ifX0se25hbWU6ImFyaWEtbW9kYWwiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbW9kYWwifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBpcyBtb2RhbCB3aGVuIGRpc3BsYXllZC4ifX0se25hbWU6ImFyaWEtbXVsdGlsaW5lIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW11bHRpbGluZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciBhIHRleHQgYm94IGFjY2VwdHMgbXVsdGlwbGUgbGluZXMgb2YgaW5wdXQgb3Igb25seSBhIHNpbmdsZSBsaW5lLiJ9fSx7bmFtZToiYXJpYS1tdWx0aXNlbGVjdGFibGUiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbXVsdGlzZWxlY3RhYmxlIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIG1heSBzZWxlY3QgbW9yZSB0aGFuIG9uZSBpdGVtIGZyb20gdGhlIGN1cnJlbnQgc2VsZWN0YWJsZSBkZXNjZW5kYW50cy4ifX0se25hbWU6ImFyaWEtb3JpZW50YXRpb24iLHZhbHVlU2V0OiJvcmllbnRhdGlvbiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW9yaWVudGF0aW9uIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIHRoZSBlbGVtZW50J3Mgb3JpZW50YXRpb24gaXMgaG9yaXpvbnRhbCwgdmVydGljYWwsIG9yIHVua25vd24vYW1iaWd1b3VzLiJ9fSx7bmFtZToiYXJpYS1vd25zIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtb3ducyJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSBpbiBvcmRlciB0byBkZWZpbmUgYSB2aXN1YWwsIGZ1bmN0aW9uYWwsIG9yIGNvbnRleHR1YWwgcGFyZW50L2NoaWxkIFtyZWxhdGlvbnNoaXBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1yZWxhdGlvbnNoaXApIGJldHdlZW4gRE9NIGVsZW1lbnRzIHdoZXJlIHRoZSBET00gaGllcmFyY2h5IGNhbm5vdCBiZSB1c2VkIHRvIHJlcHJlc2VudCB0aGUgcmVsYXRpb25zaGlwLiBTZWUgcmVsYXRlZCBbYGFyaWEtY29udHJvbHNgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbnRyb2xzKS4ifX0se25hbWU6ImFyaWEtcGxhY2Vob2xkZXIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wbGFjZWhvbGRlciJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGEgc2hvcnQgaGludCAoYSB3b3JkIG9yIHNob3J0IHBocmFzZSkgaW50ZW5kZWQgdG8gYWlkIHRoZSB1c2VyIHdpdGggZGF0YSBlbnRyeSB3aGVuIHRoZSBjb250cm9sIGhhcyBubyB2YWx1ZS4gQSBoaW50IGNvdWxkIGJlIGEgc2FtcGxlIHZhbHVlIG9yIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGV4cGVjdGVkIGZvcm1hdC4ifX0se25hbWU6ImFyaWEtcG9zaW5zZXQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wb3NpbnNldCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkncyBudW1iZXIgb3IgcG9zaXRpb24gaW4gdGhlIGN1cnJlbnQgc2V0IG9mIGxpc3RpdGVtcyBvciB0cmVlaXRlbXMuIE5vdCByZXF1aXJlZCBpZiBhbGwgZWxlbWVudHMgaW4gdGhlIHNldCBhcmUgcHJlc2VudCBpbiB0aGUgRE9NLiBTZWUgcmVsYXRlZCBbYGFyaWEtc2V0c2l6ZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtc2V0c2l6ZSkuIn19LHtuYW1lOiJhcmlhLXByZXNzZWQiLHZhbHVlU2V0OiJ0cmlzdGF0ZSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXByZXNzZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSW5kaWNhdGVzIHRoZSBjdXJyZW50ICJwcmVzc2VkIiBbc3RhdGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1zdGF0ZSkgb2YgdG9nZ2xlIGJ1dHRvbnMuIFNlZSByZWxhdGVkIFtgYXJpYS1jaGVja2VkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jaGVja2VkKSBhbmQgW2BhcmlhLXNlbGVjdGVkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZWxlY3RlZCkuJ319LHtuYW1lOiJhcmlhLXJlYWRvbmx5Iix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJlYWRvbmx5In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGF0IHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGlzIG5vdCBlZGl0YWJsZSwgYnV0IGlzIG90aGVyd2lzZSBbb3BlcmFibGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vcGVyYWJsZSkuIFNlZSByZWxhdGVkIFtgYXJpYS1kaXNhYmxlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZGlzYWJsZWQpLiJ9fSx7bmFtZToiYXJpYS1yZWxldmFudCIsdmFsdWVTZXQ6InJlbGV2YW50IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcmVsZXZhbnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoYXQgbm90aWZpY2F0aW9ucyB0aGUgdXNlciBhZ2VudCB3aWxsIHRyaWdnZXIgd2hlbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlIHdpdGhpbiBhIGxpdmUgcmVnaW9uIGlzIG1vZGlmaWVkLiBTZWUgcmVsYXRlZCBbYGFyaWEtYXRvbWljYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1hdG9taWMpLiJ9fSx7bmFtZToiYXJpYS1yZXF1aXJlZCIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yZXF1aXJlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCB1c2VyIGlucHV0IGlzIHJlcXVpcmVkIG9uIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGJlZm9yZSBhIGZvcm0gbWF5IGJlIHN1Ym1pdHRlZC4ifX0se25hbWU6ImFyaWEtcm9sZWRlc2NyaXB0aW9uIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm9sZWRlc2NyaXB0aW9uIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgYSBodW1hbi1yZWFkYWJsZSwgYXV0aG9yLWxvY2FsaXplZCBkZXNjcmlwdGlvbiBmb3IgdGhlIFtyb2xlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tcm9sZSkgb2YgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KS4ifX0se25hbWU6ImFyaWEtcm93Y291bnQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3djb3VudCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyBpbiBhIFtgdGFibGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0YWJsZSksIFtgZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyaWQpLCBvciBbYHRyZWVncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdHJlZWdyaWQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtcm93aW5kZXhgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvd2luZGV4KS4ifX0se25hbWU6ImFyaWEtcm93aW5kZXgiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dpbmRleCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGFuIFtlbGVtZW50J3NdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSByb3cgaW5kZXggb3IgcG9zaXRpb24gd2l0aCByZXNwZWN0IHRvIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyB3aXRoaW4gYSBbYHRhYmxlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGFibGUpLCBbYGdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncmlkKSwgb3IgW2B0cmVlZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RyZWVncmlkKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXJvd2NvdW50YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3djb3VudCkgYW5kIFtgYXJpYS1yb3dzcGFuYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dzcGFuKS4ifX0se25hbWU6ImFyaWEtcm93c3BhbiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvd3NwYW4ifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3Mgc3Bhbm5lZCBieSBhIGNlbGwgb3IgZ3JpZGNlbGwgd2l0aGluIGEgW2B0YWJsZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RhYmxlKSwgW2BncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JpZCksIG9yIFtgdHJlZWdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0cmVlZ3JpZCkuIFNlZSByZWxhdGVkIFtgYXJpYS1yb3dpbmRleGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93aW5kZXgpIGFuZCBbYGFyaWEtY29sc3BhbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29sc3BhbikuIn19LHtuYW1lOiJhcmlhLXNlbGVjdGVkIix2YWx1ZVNldDoidSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNlbGVjdGVkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0luZGljYXRlcyB0aGUgY3VycmVudCAic2VsZWN0ZWQiIFtzdGF0ZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXN0YXRlKSBvZiB2YXJpb3VzIFt3aWRnZXRzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWNoZWNrZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNoZWNrZWQpIGFuZCBbYGFyaWEtcHJlc3NlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcHJlc3NlZCkuJ319LHtuYW1lOiJhcmlhLXNldHNpemUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZXRzaXplIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgY3VycmVudCBzZXQgb2YgbGlzdGl0ZW1zIG9yIHRyZWVpdGVtcy4gTm90IHJlcXVpcmVkIGlmIGFsbCBlbGVtZW50cyBpbiB0aGUgc2V0IGFyZSBwcmVzZW50IGluIHRoZSBET00uIFNlZSByZWxhdGVkIFtgYXJpYS1wb3NpbnNldGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcG9zaW5zZXQpLiJ9fSx7bmFtZToiYXJpYS1zb3J0Iix2YWx1ZVNldDoic29ydCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNvcnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIGlmIGl0ZW1zIGluIGEgdGFibGUgb3IgZ3JpZCBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvciBkZXNjZW5kaW5nIG9yZGVyLiJ9fSx7bmFtZToiYXJpYS12YWx1ZW1heCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXZhbHVlbWF4In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIG1heGltdW0gYWxsb3dlZCB2YWx1ZSBmb3IgYSByYW5nZSBbd2lkZ2V0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4ifX0se25hbWU6ImFyaWEtdmFsdWVtaW4iLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS12YWx1ZW1pbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBtaW5pbXVtIGFsbG93ZWQgdmFsdWUgZm9yIGEgcmFuZ2UgW3dpZGdldF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIn19LHtuYW1lOiJhcmlhLXZhbHVlbm93IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWVub3cifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgY3VycmVudCB2YWx1ZSBmb3IgYSByYW5nZSBbd2lkZ2V0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXZhbHVldGV4dGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWV0ZXh0KS4ifX0se25hbWU6ImFyaWEtdmFsdWV0ZXh0IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWV0ZXh0In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIGh1bWFuIHJlYWRhYmxlIHRleHQgYWx0ZXJuYXRpdmUgb2YgW2BhcmlhLXZhbHVlbm93YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS12YWx1ZW5vdykgZm9yIGEgcmFuZ2UgW3dpZGdldF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIn19LHtuYW1lOiJhcmlhLWRldGFpbHMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgdGhhdCBwcm92aWRlcyBhIGRldGFpbGVkLCBleHRlbmRlZCBkZXNjcmlwdGlvbiBmb3IgdGhlIFtvYmplY3RdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vYmplY3QpLiBTZWUgcmVsYXRlZCBbYGFyaWEtZGVzY3JpYmVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRlc2NyaWJlZGJ5KS4ifX0se25hbWU6ImFyaWEta2V5c2hvcnRjdXRzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMga2V5Ym9hcmQgc2hvcnRjdXRzIHRoYXQgYW4gYXV0aG9yIGhhcyBpbXBsZW1lbnRlZCB0byBhY3RpdmF0ZSBvciBnaXZlIGZvY3VzIHRvIGFuIGVsZW1lbnQuIn19XSx2YWx1ZVNldHM6W3tuYW1lOiJiIix2YWx1ZXM6W3tuYW1lOiJ0cnVlIn0se25hbWU6ImZhbHNlIn1dfSx7bmFtZToidSIsdmFsdWVzOlt7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9LHtuYW1lOiJ1bmRlZmluZWQifV19LHtuYW1lOiJvIix2YWx1ZXM6W3tuYW1lOiJvbiJ9LHtuYW1lOiJvZmYifV19LHtuYW1lOiJ5Iix2YWx1ZXM6W3tuYW1lOiJ5ZXMifSx7bmFtZToibm8ifV19LHtuYW1lOiJ3Iix2YWx1ZXM6W3tuYW1lOiJzb2Z0In0se25hbWU6ImhhcmQifV19LHtuYW1lOiJkIix2YWx1ZXM6W3tuYW1lOiJsdHIifSx7bmFtZToicnRsIn0se25hbWU6ImF1dG8ifV19LHtuYW1lOiJtIix2YWx1ZXM6W3tuYW1lOiJnZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvcnJlc3BvbmRzIHRvIHRoZSBIVFRQIFtHRVQgbWV0aG9kXShodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS4zKTsgZm9ybSBkYXRhIGFyZSBhcHBlbmRlZCB0byB0aGUgYGFjdGlvbmAgYXR0cmlidXRlIFVSSSB3aXRoIGEgJz8nIGFzIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHRpbmcgVVJJIGlzIHNlbnQgdG8gdGhlIHNlcnZlci4gVXNlIHRoaXMgbWV0aG9kIHdoZW4gdGhlIGZvcm0gaGFzIG5vIHNpZGUtZWZmZWN0cyBhbmQgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLiJ9fSx7bmFtZToicG9zdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQ29ycmVzcG9uZHMgdG8gdGhlIEhUVFAgW1BPU1QgbWV0aG9kXShodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS41KTsgZm9ybSBkYXRhIGFyZSBpbmNsdWRlZCBpbiB0aGUgYm9keSBvZiB0aGUgZm9ybSBhbmQgc2VudCB0byB0aGUgc2VydmVyLiJ9fSx7bmFtZToiZGlhbG9nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJVc2Ugd2hlbiB0aGUgZm9ybSBpcyBpbnNpZGUgYSBbYDxkaWFsb2c+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RpYWxvZykgZWxlbWVudCB0byBjbG9zZSB0aGUgZGlhbG9nIHdoZW4gc3VibWl0dGVkLiJ9fV19LHtuYW1lOiJmbSIsdmFsdWVzOlt7bmFtZToiZ2V0In0se25hbWU6InBvc3QifV19LHtuYW1lOiJzIix2YWx1ZXM6W3tuYW1lOiJyb3cifSx7bmFtZToiY29sIn0se25hbWU6InJvd2dyb3VwIn0se25hbWU6ImNvbGdyb3VwIn1dfSx7bmFtZToidCIsdmFsdWVzOlt7bmFtZToiaGlkZGVuIn0se25hbWU6InRleHQifSx7bmFtZToic2VhcmNoIn0se25hbWU6InRlbCJ9LHtuYW1lOiJ1cmwifSx7bmFtZToiZW1haWwifSx7bmFtZToicGFzc3dvcmQifSx7bmFtZToiZGF0ZXRpbWUifSx7bmFtZToiZGF0ZSJ9LHtuYW1lOiJtb250aCJ9LHtuYW1lOiJ3ZWVrIn0se25hbWU6InRpbWUifSx7bmFtZToiZGF0ZXRpbWUtbG9jYWwifSx7bmFtZToibnVtYmVyIn0se25hbWU6InJhbmdlIn0se25hbWU6ImNvbG9yIn0se25hbWU6ImNoZWNrYm94In0se25hbWU6InJhZGlvIn0se25hbWU6ImZpbGUifSx7bmFtZToic3VibWl0In0se25hbWU6ImltYWdlIn0se25hbWU6InJlc2V0In0se25hbWU6ImJ1dHRvbiJ9XX0se25hbWU6ImltIix2YWx1ZXM6W3tuYW1lOiJ2ZXJiYXRpbSJ9LHtuYW1lOiJsYXRpbiJ9LHtuYW1lOiJsYXRpbi1uYW1lIn0se25hbWU6ImxhdGluLXByb3NlIn0se25hbWU6ImZ1bGwtd2lkdGgtbGF0aW4ifSx7bmFtZToia2FuYSJ9LHtuYW1lOiJrYW5hLW5hbWUifSx7bmFtZToia2F0YWthbmEifSx7bmFtZToibnVtZXJpYyJ9LHtuYW1lOiJ0ZWwifSx7bmFtZToiZW1haWwifSx7bmFtZToidXJsIn1dfSx7bmFtZToiYnQiLHZhbHVlczpbe25hbWU6ImJ1dHRvbiJ9LHtuYW1lOiJzdWJtaXQifSx7bmFtZToicmVzZXQifSx7bmFtZToibWVudSJ9XX0se25hbWU6Imx0Iix2YWx1ZXM6W3tuYW1lOiIxIn0se25hbWU6ImEifSx7bmFtZToiQSJ9LHtuYW1lOiJpIn0se25hbWU6IkkifV19LHtuYW1lOiJtdCIsdmFsdWVzOlt7bmFtZToiY29udGV4dCJ9LHtuYW1lOiJ0b29sYmFyIn1dfSx7bmFtZToibWl0Iix2YWx1ZXM6W3tuYW1lOiJjb21tYW5kIn0se25hbWU6ImNoZWNrYm94In0se25hbWU6InJhZGlvIn1dfSx7bmFtZToiZXQiLHZhbHVlczpbe25hbWU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9LHtuYW1lOiJtdWx0aXBhcnQvZm9ybS1kYXRhIn0se25hbWU6InRleHQvcGxhaW4ifV19LHtuYW1lOiJ0ayIsdmFsdWVzOlt7bmFtZToic3VidGl0bGVzIn0se25hbWU6ImNhcHRpb25zIn0se25hbWU6ImRlc2NyaXB0aW9ucyJ9LHtuYW1lOiJjaGFwdGVycyJ9LHtuYW1lOiJtZXRhZGF0YSJ9XX0se25hbWU6InBsIix2YWx1ZXM6W3tuYW1lOiJub25lIn0se25hbWU6Im1ldGFkYXRhIn0se25hbWU6ImF1dG8ifV19LHtuYW1lOiJzaCIsdmFsdWVzOlt7bmFtZToiY2lyY2xlIn0se25hbWU6ImRlZmF1bHQifSx7bmFtZToicG9seSJ9LHtuYW1lOiJyZWN0In1dfSx7bmFtZToieG8iLHZhbHVlczpbe25hbWU6ImFub255bW91cyJ9LHtuYW1lOiJ1c2UtY3JlZGVudGlhbHMifV19LHtuYW1lOiJzYiIsdmFsdWVzOlt7bmFtZToiYWxsb3ctZm9ybXMifSx7bmFtZToiYWxsb3ctbW9kYWxzIn0se25hbWU6ImFsbG93LXBvaW50ZXItbG9jayJ9LHtuYW1lOiJhbGxvdy1wb3B1cHMifSx7bmFtZToiYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94In0se25hbWU6ImFsbG93LXNhbWUtb3JpZ2luIn0se25hbWU6ImFsbG93LXNjcmlwdHMifSx7bmFtZToiYWxsb3ctdG9wLW5hdmlnYXRpb24ifV19LHtuYW1lOiJ0cmlzdGF0ZSIsdmFsdWVzOlt7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9LHtuYW1lOiJtaXhlZCJ9LHtuYW1lOiJ1bmRlZmluZWQifV19LHtuYW1lOiJpbnB1dGF1dG9jb21wbGV0ZSIsdmFsdWVzOlt7bmFtZToiYWRkaXRpb25hbC1uYW1lIn0se25hbWU6ImFkZHJlc3MtbGV2ZWwxIn0se25hbWU6ImFkZHJlc3MtbGV2ZWwyIn0se25hbWU6ImFkZHJlc3MtbGV2ZWwzIn0se25hbWU6ImFkZHJlc3MtbGV2ZWw0In0se25hbWU6ImFkZHJlc3MtbGluZTEifSx7bmFtZToiYWRkcmVzcy1saW5lMiJ9LHtuYW1lOiJhZGRyZXNzLWxpbmUzIn0se25hbWU6ImJkYXkifSx7bmFtZToiYmRheS15ZWFyIn0se25hbWU6ImJkYXktZGF5In0se25hbWU6ImJkYXktbW9udGgifSx7bmFtZToiYmlsbGluZyJ9LHtuYW1lOiJjYy1hZGRpdGlvbmFsLW5hbWUifSx7bmFtZToiY2MtY3NjIn0se25hbWU6ImNjLWV4cCJ9LHtuYW1lOiJjYy1leHAtbW9udGgifSx7bmFtZToiY2MtZXhwLXllYXIifSx7bmFtZToiY2MtZmFtaWx5LW5hbWUifSx7bmFtZToiY2MtZ2l2ZW4tbmFtZSJ9LHtuYW1lOiJjYy1uYW1lIn0se25hbWU6ImNjLW51bWJlciJ9LHtuYW1lOiJjYy10eXBlIn0se25hbWU6ImNvdW50cnkifSx7bmFtZToiY291bnRyeS1uYW1lIn0se25hbWU6ImN1cnJlbnQtcGFzc3dvcmQifSx7bmFtZToiZW1haWwifSx7bmFtZToiZmFtaWx5LW5hbWUifSx7bmFtZToiZmF4In0se25hbWU6ImdpdmVuLW5hbWUifSx7bmFtZToiaG9tZSJ9LHtuYW1lOiJob25vcmlmaWMtcHJlZml4In0se25hbWU6Imhvbm9yaWZpYy1zdWZmaXgifSx7bmFtZToiaW1wcCJ9LHtuYW1lOiJsYW5ndWFnZSJ9LHtuYW1lOiJtb2JpbGUifSx7bmFtZToibmFtZSJ9LHtuYW1lOiJuZXctcGFzc3dvcmQifSx7bmFtZToibmlja25hbWUifSx7bmFtZToib3JnYW5pemF0aW9uIn0se25hbWU6Im9yZ2FuaXphdGlvbi10aXRsZSJ9LHtuYW1lOiJwYWdlciJ9LHtuYW1lOiJwaG90byJ9LHtuYW1lOiJwb3N0YWwtY29kZSJ9LHtuYW1lOiJzZXgifSx7bmFtZToic2hpcHBpbmcifSx7bmFtZToic3RyZWV0LWFkZHJlc3MifSx7bmFtZToidGVsLWFyZWEtY29kZSJ9LHtuYW1lOiJ0ZWwifSx7bmFtZToidGVsLWNvdW50cnktY29kZSJ9LHtuYW1lOiJ0ZWwtZXh0ZW5zaW9uIn0se25hbWU6InRlbC1sb2NhbCJ9LHtuYW1lOiJ0ZWwtbG9jYWwtcHJlZml4In0se25hbWU6InRlbC1sb2NhbC1zdWZmaXgifSx7bmFtZToidGVsLW5hdGlvbmFsIn0se25hbWU6InRyYW5zYWN0aW9uLWFtb3VudCJ9LHtuYW1lOiJ0cmFuc2FjdGlvbi1jdXJyZW5jeSJ9LHtuYW1lOiJ1cmwifSx7bmFtZToidXNlcm5hbWUifSx7bmFtZToid29yayJ9XX0se25hbWU6ImF1dG9jb21wbGV0ZSIsdmFsdWVzOlt7bmFtZToiaW5saW5lIn0se25hbWU6Imxpc3QifSx7bmFtZToiYm90aCJ9LHtuYW1lOiJub25lIn1dfSx7bmFtZToiY3VycmVudCIsdmFsdWVzOlt7bmFtZToicGFnZSJ9LHtuYW1lOiJzdGVwIn0se25hbWU6ImxvY2F0aW9uIn0se25hbWU6ImRhdGUifSx7bmFtZToidGltZSJ9LHtuYW1lOiJ0cnVlIn0se25hbWU6ImZhbHNlIn1dfSx7bmFtZToiZHJvcGVmZmVjdCIsdmFsdWVzOlt7bmFtZToiY29weSJ9LHtuYW1lOiJtb3ZlIn0se25hbWU6ImxpbmsifSx7bmFtZToiZXhlY3V0ZSJ9LHtuYW1lOiJwb3B1cCJ9LHtuYW1lOiJub25lIn1dfSx7bmFtZToiaW52YWxpZCIsdmFsdWVzOlt7bmFtZToiZ3JhbW1hciJ9LHtuYW1lOiJmYWxzZSJ9LHtuYW1lOiJzcGVsbGluZyJ9LHtuYW1lOiJ0cnVlIn1dfSx7bmFtZToibGl2ZSIsdmFsdWVzOlt7bmFtZToib2ZmIn0se25hbWU6InBvbGl0ZSJ9LHtuYW1lOiJhc3NlcnRpdmUifV19LHtuYW1lOiJvcmllbnRhdGlvbiIsdmFsdWVzOlt7bmFtZToidmVydGljYWwifSx7bmFtZToiaG9yaXpvbnRhbCJ9LHtuYW1lOiJ1bmRlZmluZWQifV19LHtuYW1lOiJyZWxldmFudCIsdmFsdWVzOlt7bmFtZToiYWRkaXRpb25zIn0se25hbWU6InJlbW92YWxzIn0se25hbWU6InRleHQifSx7bmFtZToiYWxsIn0se25hbWU6ImFkZGl0aW9ucyB0ZXh0In1dfSx7bmFtZToic29ydCIsdmFsdWVzOlt7bmFtZToiYXNjZW5kaW5nIn0se25hbWU6ImRlc2NlbmRpbmcifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJvdGhlciJ9XX0se25hbWU6InJvbGVzIix2YWx1ZXM6W3tuYW1lOiJhbGVydCJ9LHtuYW1lOiJhbGVydGRpYWxvZyJ9LHtuYW1lOiJidXR0b24ifSx7bmFtZToiY2hlY2tib3gifSx7bmFtZToiZGlhbG9nIn0se25hbWU6ImdyaWRjZWxsIn0se25hbWU6ImxpbmsifSx7bmFtZToibG9nIn0se25hbWU6Im1hcnF1ZWUifSx7bmFtZToibWVudWl0ZW0ifSx7bmFtZToibWVudWl0ZW1jaGVja2JveCJ9LHtuYW1lOiJtZW51aXRlbXJhZGlvIn0se25hbWU6Im9wdGlvbiJ9LHtuYW1lOiJwcm9ncmVzc2JhciJ9LHtuYW1lOiJyYWRpbyJ9LHtuYW1lOiJzY3JvbGxiYXIifSx7bmFtZToic2VhcmNoYm94In0se25hbWU6InNsaWRlciJ9LHtuYW1lOiJzcGluYnV0dG9uIn0se25hbWU6InN0YXR1cyJ9LHtuYW1lOiJzd2l0Y2gifSx7bmFtZToidGFiIn0se25hbWU6InRhYnBhbmVsIn0se25hbWU6InRleHRib3gifSx7bmFtZToidGltZXIifSx7bmFtZToidG9vbHRpcCJ9LHtuYW1lOiJ0cmVlaXRlbSJ9LHtuYW1lOiJjb21ib2JveCJ9LHtuYW1lOiJncmlkIn0se25hbWU6Imxpc3Rib3gifSx7bmFtZToibWVudSJ9LHtuYW1lOiJtZW51YmFyIn0se25hbWU6InJhZGlvZ3JvdXAifSx7bmFtZToidGFibGlzdCJ9LHtuYW1lOiJ0cmVlIn0se25hbWU6InRyZWVncmlkIn0se25hbWU6ImFwcGxpY2F0aW9uIn0se25hbWU6ImFydGljbGUifSx7bmFtZToiY2VsbCJ9LHtuYW1lOiJjb2x1bW5oZWFkZXIifSx7bmFtZToiZGVmaW5pdGlvbiJ9LHtuYW1lOiJkaXJlY3RvcnkifSx7bmFtZToiZG9jdW1lbnQifSx7bmFtZToiZmVlZCJ9LHtuYW1lOiJmaWd1cmUifSx7bmFtZToiZ3JvdXAifSx7bmFtZToiaGVhZGluZyJ9LHtuYW1lOiJpbWcifSx7bmFtZToibGlzdCJ9LHtuYW1lOiJsaXN0aXRlbSJ9LHtuYW1lOiJtYXRoIn0se25hbWU6Im5vbmUifSx7bmFtZToibm90ZSJ9LHtuYW1lOiJwcmVzZW50YXRpb24ifSx7bmFtZToicmVnaW9uIn0se25hbWU6InJvdyJ9LHtuYW1lOiJyb3dncm91cCJ9LHtuYW1lOiJyb3doZWFkZXIifSx7bmFtZToic2VwYXJhdG9yIn0se25hbWU6InRhYmxlIn0se25hbWU6InRlcm0ifSx7bmFtZToidGV4dCJ9LHtuYW1lOiJ0b29sYmFyIn0se25hbWU6ImJhbm5lciJ9LHtuYW1lOiJjb21wbGVtZW50YXJ5In0se25hbWU6ImNvbnRlbnRpbmZvIn0se25hbWU6ImZvcm0ifSx7bmFtZToibWFpbiJ9LHtuYW1lOiJuYXZpZ2F0aW9uIn0se25hbWU6InJlZ2lvbiJ9LHtuYW1lOiJzZWFyY2gifSx7bmFtZToiZG9jLWFic3RyYWN0In0se25hbWU6ImRvYy1hY2tub3dsZWRnbWVudHMifSx7bmFtZToiZG9jLWFmdGVyd29yZCJ9LHtuYW1lOiJkb2MtYXBwZW5kaXgifSx7bmFtZToiZG9jLWJhY2tsaW5rIn0se25hbWU6ImRvYy1iaWJsaW9lbnRyeSJ9LHtuYW1lOiJkb2MtYmlibGlvZ3JhcGh5In0se25hbWU6ImRvYy1iaWJsaW9yZWYifSx7bmFtZToiZG9jLWNoYXB0ZXIifSx7bmFtZToiZG9jLWNvbG9waG9uIn0se25hbWU6ImRvYy1jb25jbHVzaW9uIn0se25hbWU6ImRvYy1jb3ZlciJ9LHtuYW1lOiJkb2MtY3JlZGl0In0se25hbWU6ImRvYy1jcmVkaXRzIn0se25hbWU6ImRvYy1kZWRpY2F0aW9uIn0se25hbWU6ImRvYy1lbmRub3RlIn0se25hbWU6ImRvYy1lbmRub3RlcyJ9LHtuYW1lOiJkb2MtZXBpZ3JhcGgifSx7bmFtZToiZG9jLWVwaWxvZ3VlIn0se25hbWU6ImRvYy1lcnJhdGEifSx7bmFtZToiZG9jLWV4YW1wbGUifSx7bmFtZToiZG9jLWZvb3Rub3RlIn0se25hbWU6ImRvYy1mb3Jld29yZCJ9LHtuYW1lOiJkb2MtZ2xvc3NhcnkifSx7bmFtZToiZG9jLWdsb3NzcmVmIn0se25hbWU6ImRvYy1pbmRleCJ9LHtuYW1lOiJkb2MtaW50cm9kdWN0aW9uIn0se25hbWU6ImRvYy1ub3RlcmVmIn0se25hbWU6ImRvYy1ub3RpY2UifSx7bmFtZToiZG9jLXBhZ2VicmVhayJ9LHtuYW1lOiJkb2MtcGFnZWxpc3QifSx7bmFtZToiZG9jLXBhcnQifSx7bmFtZToiZG9jLXByZWZhY2UifSx7bmFtZToiZG9jLXByb2xvZ3VlIn0se25hbWU6ImRvYy1wdWxscXVvdGUifSx7bmFtZToiZG9jLXFuYSJ9LHtuYW1lOiJkb2Mtc3VidGl0bGUifSx7bmFtZToiZG9jLXRpcCJ9LHtuYW1lOiJkb2MtdG9jIn1dfSx7bmFtZToibWV0YW5hbWVzIix2YWx1ZXM6W3tuYW1lOiJhcHBsaWNhdGlvbi1uYW1lIn0se25hbWU6ImF1dGhvciJ9LHtuYW1lOiJkZXNjcmlwdGlvbiJ9LHtuYW1lOiJmb3JtYXQtZGV0ZWN0aW9uIn0se25hbWU6ImdlbmVyYXRvciJ9LHtuYW1lOiJrZXl3b3JkcyJ9LHtuYW1lOiJwdWJsaXNoZXIifSx7bmFtZToicmVmZXJyZXIifSx7bmFtZToicm9ib3RzIn0se25hbWU6InRoZW1lLWNvbG9yIn0se25hbWU6InZpZXdwb3J0In1dfSx7bmFtZToiaGFzcG9wdXAiLHZhbHVlczpbe25hbWU6ImZhbHNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiIoZGVmYXVsdCkgSW5kaWNhdGVzIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBwb3B1cC4ifX0se25hbWU6InRydWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSBtZW51LiJ9fSx7bmFtZToibWVudSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBwb3B1cCBpcyBhIG1lbnUuIn19LHtuYW1lOiJsaXN0Ym94IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIHBvcHVwIGlzIGEgbGlzdGJveC4ifX0se25hbWU6InRyZWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSB0cmVlLiJ9fSx7bmFtZToiZ3JpZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBwb3B1cCBpcyBhIGdyaWQuIn19LHtuYW1lOiJkaWFsb2ciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSBkaWFsb2cuIn19XX1dfSxOcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5kYXRhUHJvdmlkZXJzPVtdLHRoaXMuc2V0RGF0YVByb3ZpZGVycyghMSE9PWUudXNlRGVmYXVsdERhdGFQcm92aWRlcixlLmN1c3RvbURhdGFQcm92aWRlcnN8fFtdKX1yZXR1cm4gZS5wcm90b3R5cGUuc2V0RGF0YVByb3ZpZGVycz1mdW5jdGlvbihlLHQpe3ZhciBuO3RoaXMuZGF0YVByb3ZpZGVycz1bXSxlJiZ0aGlzLmRhdGFQcm92aWRlcnMucHVzaChuZXcgV28oImh0bWw1IixScykpLChuPXRoaXMuZGF0YVByb3ZpZGVycykucHVzaC5hcHBseShuLHQpfSxlLnByb3RvdHlwZS5nZXREYXRhUHJvdmlkZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YVByb3ZpZGVyc30sZX0oKSxJcz17fTtmdW5jdGlvbiBVcyhlLHQpe3JldHVybiBuZXcgV28oZSx0KX1zZWxmLm9ubWVzc2FnZT0oKT0+e0JpKCgoZSx0KT0+bmV3IGNsYXNze19jdHg7X2xhbmd1YWdlU2VydmljZTtfbGFuZ3VhZ2VTZXR0aW5ncztfbGFuZ3VhZ2VJZDtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2N0eD1lLHRoaXMuX2xhbmd1YWdlU2V0dGluZ3M9dC5sYW5ndWFnZVNldHRpbmdzLHRoaXMuX2xhbmd1YWdlSWQ9dC5sYW5ndWFnZUlkO2NvbnN0IG49dGhpcy5fbGFuZ3VhZ2VTZXR0aW5ncy5kYXRhLGk9bj8udXNlRGVmYXVsdERhdGFQcm92aWRlcixyPVtdO2lmKG4/LmRhdGFQcm92aWRlcnMpZm9yKGNvbnN0IGUgaW4gbi5kYXRhUHJvdmlkZXJzKXIucHVzaChVcyhlLG4uZGF0YVByb3ZpZGVyc1tlXSkpO3RoaXMuX2xhbmd1YWdlU2VydmljZT1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT1Jcyk7dmFyIHQ9bmV3IE5zKGUpLG49bmV3IGlzKGUsdCksaT1uZXcgWG8oZSx0KTtyZXR1cm57c2V0RGF0YVByb3ZpZGVyczp0LnNldERhdGFQcm92aWRlcnMuYmluZCh0KSxjcmVhdGVTY2FubmVyOnlvLHBhcnNlSFRNTERvY3VtZW50OmZ1bmN0aW9uKGUpe3JldHVybiBMbyhlLmdldFRleHQoKSl9LGRvQ29tcGxldGU6aS5kb0NvbXBsZXRlLmJpbmQoaSksZG9Db21wbGV0ZTI6aS5kb0NvbXBsZXRlMi5iaW5kKGkpLHNldENvbXBsZXRpb25QYXJ0aWNpcGFudHM6aS5zZXRDb21wbGV0aW9uUGFydGljaXBhbnRzLmJpbmQoaSksZG9Ib3ZlcjpuLmRvSG92ZXIuYmluZChuKSxmb3JtYXQ6bHMsZmluZERvY3VtZW50SGlnaGxpZ2h0czp2cyxmaW5kRG9jdW1lbnRMaW5rczpfcyxmaW5kRG9jdW1lbnRTeW1ib2xzOmtzLGdldEZvbGRpbmdSYW5nZXM6RXMsZ2V0U2VsZWN0aW9uUmFuZ2VzOkFzLGRvUXVvdGVDb21wbGV0ZTppLmRvUXVvdGVDb21wbGV0ZS5iaW5kKGkpLGRvVGFnQ29tcGxldGU6aS5kb1RhZ0NvbXBsZXRlLmJpbmQoaSksZG9SZW5hbWU6eHMsZmluZE1hdGNoaW5nVGFnUG9zaXRpb246THMsZmluZE9uVHlwZVJlbmFtZVJhbmdlczpDcyxmaW5kTGlua2VkRWRpdGluZ1JhbmdlczpDc319KHt1c2VEZWZhdWx0RGF0YVByb3ZpZGVyOmksY3VzdG9tRGF0YVByb3ZpZGVyczpyfSl9YXN5bmMgZG9Db21wbGV0ZShlLHQpe2xldCBuPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighbilyZXR1cm4gbnVsbDtsZXQgaT10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VIVE1MRG9jdW1lbnQobik7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9sYW5ndWFnZVNlcnZpY2UuZG9Db21wbGV0ZShuLHQsaSx0aGlzLl9sYW5ndWFnZVNldHRpbmdzJiZ0aGlzLl9sYW5ndWFnZVNldHRpbmdzLnN1Z2dlc3QpKX1hc3luYyBmb3JtYXQoZSx0LG4pe2xldCBpPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighaSlyZXR1cm5bXTtsZXQgcj17Li4udGhpcy5fbGFuZ3VhZ2VTZXR0aW5ncy5mb3JtYXQsLi4ubn0sYT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZm9ybWF0KGksdCxyKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGEpfWFzeW5jIGRvSG92ZXIoZSx0KXtsZXQgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuIG51bGw7bGV0IGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KG4pLHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvSG92ZXIobix0LGkpO3JldHVybiBQcm9taXNlLnJlc29sdmUocil9YXN5bmMgZmluZERvY3VtZW50SGlnaGxpZ2h0cyhlLHQpe2xldCBuPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighbilyZXR1cm5bXTtsZXQgaT10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VIVE1MRG9jdW1lbnQobikscj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZmluZERvY3VtZW50SGlnaGxpZ2h0cyhuLHQsaSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyKX1hc3luYyBmaW5kRG9jdW1lbnRMaW5rcyhlKXtsZXQgdD10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXQpcmV0dXJuW107bGV0IG49dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmREb2N1bWVudExpbmtzKHQsbnVsbCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShuKX1hc3luYyBmaW5kRG9jdW1lbnRTeW1ib2xzKGUpe2xldCB0PXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighdClyZXR1cm5bXTtsZXQgbj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VIVE1MRG9jdW1lbnQodCksaT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZmluZERvY3VtZW50U3ltYm9scyh0LG4pO3JldHVybiBQcm9taXNlLnJlc29sdmUoaSl9YXN5bmMgZ2V0Rm9sZGluZ1JhbmdlcyhlLHQpe2xldCBuPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighbilyZXR1cm5bXTtsZXQgaT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZ2V0Rm9sZGluZ1JhbmdlcyhuLHQpO3JldHVybiBQcm9taXNlLnJlc29sdmUoaSl9YXN5bmMgZ2V0U2VsZWN0aW9uUmFuZ2VzKGUsdCl7bGV0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybltdO2xldCBpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5nZXRTZWxlY3Rpb25SYW5nZXMobix0KTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpfWFzeW5jIGRvUmVuYW1lKGUsdCxuKXtsZXQgaT10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIWkpcmV0dXJuIG51bGw7bGV0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KGkpLGE9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvUmVuYW1lKGksdCxuLHIpO3JldHVybiBQcm9taXNlLnJlc29sdmUoYSl9X2dldFRleHREb2N1bWVudChlKXtsZXQgdD10aGlzLl9jdHguZ2V0TWlycm9yTW9kZWxzKCk7Zm9yKGxldCBuIG9mIHQpaWYobi51cmkudG9TdHJpbmcoKT09PWUpcmV0dXJuIFZhLmNyZWF0ZShlLHRoaXMuX2xhbmd1YWdlSWQsbi52ZXJzaW9uLG4uZ2V0VmFsdWUoKSk7cmV0dXJuIG51bGx9fShlLHQpKSl9fSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1odG1sLndvcmtlci5qcy5tYXAKCg==', null, false);
4
4
  /* eslint-enable */
5
5
 
6
6
  export { WorkerFactory as default };