@codingame/monaco-editor-wrapper 3.10.0-monaco-update.1 → 3.10.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.
- package/README.md +15 -0
- package/dist/COBOL.tmLanguage.js +172 -0
- package/dist/Erlang.plist.js +1752 -0
- package/dist/HTML (Eex)2.js +100 -0
- package/dist/JSON.tmLanguage.js +221 -0
- package/dist/JSONC.tmLanguage.js +221 -0
- package/dist/JavaProperties.tmLanguage.js +116 -0
- package/dist/JavaScript.tmLanguage.js +5929 -0
- package/dist/JavaScriptReact.tmLanguage.js +5929 -0
- package/dist/Kotlin.tmLanguage.js +724 -0
- package/dist/META.js +100 -0
- package/dist/MagicPython.tmLanguage.js +4221 -0
- package/dist/MagicRegExp.tmLanguage.js +505 -0
- package/dist/Markdown Redcarpet.js +221 -0
- package/dist/RMarkdown.js +25 -0
- package/dist/Rcpp.js +50 -0
- package/dist/Rd (R Documentation).js +131 -0
- package/dist/Regular Expressions (JavaScript).tmLanguage.js +166 -0
- package/dist/Scala.tmLanguage.js +1324 -0
- package/dist/TypeScript.tmLanguage.js +5680 -0
- package/dist/TypeScriptReact.tmLanguage.js +5929 -0
- package/dist/{_virtual/_commonjsHelpers.js → _monaco-editor_commonjs-external.js} +9 -2
- package/dist/_rollupPluginBabelHelpers.js +51 -0
- package/dist/angular.js +62 -0
- package/dist/asp-vb-net.tmlanguage.js +247 -0
- package/dist/aspnetcorerazor.js +72 -0
- package/dist/aspnetcorerazor.tmLanguage.js +1825 -0
- package/dist/atd.js +110 -0
- package/dist/atd2.js +114 -0
- package/dist/buildignore.r.js +5 -0
- package/dist/buildtarget.js +53 -0
- package/dist/c.js +101 -0
- package/dist/c.tmLanguage.js +3565 -0
- package/dist/cabal.js +10 -0
- package/dist/cabal.tmLanguage.js +66 -0
- package/dist/clojure.js +68 -0
- package/dist/clojure.tmLanguage.js +439 -0
- package/dist/cobol.js +6 -0
- package/dist/cobol2.js +341 -0
- package/dist/codeblock-cabal.js +42 -0
- package/dist/codeblock-haskell.js +42 -0
- package/dist/codeblock-literate-haskell.js +42 -0
- package/dist/codeblock.js +59 -0
- package/dist/codeblock2.js +36 -0
- package/dist/codeblock3.js +95 -0
- package/dist/coffeescript-coffeescript.code-snippets.js +18 -0
- package/dist/coffeescript.js +91 -0
- package/dist/coffeescript.tmLanguage.js +1324 -0
- package/dist/configuration/files.d.ts +6 -0
- package/dist/configuration/index.d.ts +2 -1
- package/dist/cpp-c.code-snippets.js +18 -0
- package/dist/cpp-cpp.code-snippets.js +18 -0
- package/dist/cpp.js +101 -0
- package/dist/cpp.tmLanguage.js +16648 -0
- package/dist/cpptools.js +2631 -0
- package/dist/cram.js +257 -0
- package/dist/csharp.js +92 -0
- package/dist/csharp.tmLanguage.js +4992 -0
- package/dist/css.js +106 -0
- package/dist/css.tmLanguage.js +1873 -0
- package/dist/css.worker.js +6 -0
- package/dist/cuda-cpp.js +101 -0
- package/dist/cuda-cpp.tmLanguage.js +19993 -0
- package/dist/d-diet.js +92 -0
- package/dist/d.js +3212 -0
- package/dist/d2.js +97 -0
- package/dist/d3.js +609 -0
- package/dist/dart.js +543 -0
- package/dist/dart2.js +103 -0
- package/dist/dart3.js +1130 -0
- package/dist/dcf.js +93 -0
- package/dist/debian-control.r.js +69 -0
- package/dist/diet.js +758 -0
- package/dist/diet2.js +100 -0
- package/dist/django-html.js +155 -0
- package/dist/django-html.tmLanguage.js +715 -0
- package/dist/django-txt.js +155 -0
- package/dist/django-txt.tmLanguage.js +269 -0
- package/dist/dml.js +169 -0
- package/dist/dml2.js +90 -0
- package/dist/dockercompose.js +82 -0
- package/dist/dpp.js +97 -0
- package/dist/dscript.js +90 -0
- package/dist/dune-project.js +481 -0
- package/dist/dune-project2.js +65 -0
- package/dist/dune-workspace.js +298 -0
- package/dist/dune-workspace2.js +65 -0
- package/dist/dune.js +2962 -0
- package/dist/dune2.js +65 -0
- package/dist/eex.js +55 -0
- package/dist/elixir-snippets.js +184 -0
- package/dist/elixir.js +2341 -0
- package/dist/elixir2.js +69 -0
- package/dist/elixir3.js +40 -0
- package/dist/erlang-erlang.js +195 -0
- package/dist/erlang.js +81 -0
- package/dist/erlang2.js +86 -0
- package/dist/expression.js +846 -0
- package/dist/features/cssContribution.d.ts +1 -0
- package/dist/features/cssContribution.js +7 -0
- package/dist/features/extensionConfigurations.d.ts +1 -0
- package/dist/features/extensionConfigurations.js +44 -0
- package/dist/features/htmlContribution.d.ts +4 -0
- package/dist/features/htmlContribution.js +112 -0
- package/dist/features/jsonContribution.d.ts +6 -0
- package/dist/features/jsonContribution.js +43 -0
- package/dist/features/typescriptContribution.d.ts +1 -0
- package/dist/features/typescriptContribution.js +32 -0
- package/dist/fsharp-fsharp.code-snippets.js +18 -0
- package/dist/fsharp.js +80 -0
- package/dist/fsharp.tmLanguage.js +1844 -0
- package/dist/go.js +103 -0
- package/dist/go.mod.js +8 -0
- package/dist/go.mod.tmGrammar.js +182 -0
- package/dist/go.sum.tmGrammar.js +55 -0
- package/dist/go.tmLanguage.js +1025 -0
- package/dist/go.work.js +8 -0
- package/dist/govulncheck.tmGrammar.js +138 -0
- package/dist/groovy-groovy.code-snippets.js +229 -0
- package/dist/groovy.js +79 -0
- package/dist/groovy.tmLanguage.js +1391 -0
- package/dist/haskell.js +88 -0
- package/dist/haskell.tmLanguage.js +629 -0
- package/dist/haskell2.js +16 -0
- package/dist/html (eex).js +31 -0
- package/dist/html-derivative.tmLanguage.js +57 -0
- package/dist/html-html.code-snippets.js +20 -0
- package/dist/html.js +11 -0
- package/dist/html.tmLanguage.js +2652 -0
- package/dist/html.tmLanguage2.js +107 -0
- package/dist/html.worker.js +6 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2207 -0
- package/dist/index2.js +1398 -0
- package/dist/inline-styles.js +104 -0
- package/dist/inline-template.js +88 -0
- package/dist/jade.js +11 -0
- package/dist/java-java.js +125 -0
- package/dist/java-properties.js +73 -0
- package/dist/java.js +98 -0
- package/dist/java.tmLanguage.js +1863 -0
- package/dist/java2.js +917 -0
- package/dist/javascript-javascript.code-snippets.js +205 -0
- package/dist/javascript.js +197 -0
- package/dist/javascriptreact.js +197 -0
- package/dist/jsdoc.js.injection.tmLanguage.js +32 -0
- package/dist/jsdoc.ts.injection.tmLanguage.js +32 -0
- package/dist/json.js +75 -0
- package/dist/json.worker.js +6 -0
- package/dist/jsonc.js +75 -0
- package/dist/jsx-tags.js +158 -0
- package/dist/julia.js +89 -0
- package/dist/julia.tmLanguage.js +954 -0
- package/dist/jvm-bytecode-verbose.js +1231 -0
- package/dist/jvm-bytecode.js +565 -0
- package/dist/kotlin-kotlin.js +117 -0
- package/dist/kotlin.js +103 -0
- package/dist/kotlinscript.js +103 -0
- package/dist/languages/extensions/extensionConfigurationLoader.d.ts +3 -0
- package/dist/languages/extensions/grammarLoader.d.ts +2 -0
- package/dist/languages/extensions/languageConfigurationLoader.d.ts +2 -0
- package/dist/languages/extensions/snippetLoader.d.ts +2 -0
- package/dist/languages/extensions/themeLoader.d.ts +2 -0
- package/dist/languages/index.d.ts +2 -0
- package/dist/languages/textMate/index.d.ts +1 -0
- package/dist/literate haskell.js +88 -0
- package/dist/literateHaskell.tmLanguage.js +70 -0
- package/dist/lua.js +84 -0
- package/dist/lua.tmLanguage.js +914 -0
- package/dist/lua2.js +2853 -0
- package/dist/main.js +3564 -9
- package/dist/markdown-basics-markdown.code-snippets.js +121 -0
- package/dist/markdown-svelte-css.js +37 -0
- package/dist/markdown-svelte-js.js +37 -0
- package/dist/markdown-svelte.js +59 -0
- package/dist/markdown-vue.js +54 -0
- package/dist/markdown.js +49 -0
- package/dist/markdown.tmLanguage.js +3042 -0
- package/dist/menhir-action.js +51 -0
- package/dist/menhir.js +597 -0
- package/dist/merlin.js +111 -0
- package/dist/monaco.d.ts +10 -6
- package/dist/namespace.r.js +88 -0
- package/dist/oasis.js +99 -0
- package/dist/objective-c.js +79 -0
- package/dist/objective-c.tmLanguage.js +3763 -0
- package/dist/objective-cpp.js +79 -0
- package/dist/ocaml-dune-project.js +38 -0
- package/dist/ocaml-dune.js +53 -0
- package/dist/ocaml-markdown-codeblock.js +42 -0
- package/dist/ocaml-ocaml.js +88 -0
- package/dist/ocaml-ocamllex.js +12 -0
- package/dist/ocaml.META.js +29 -0
- package/dist/ocaml.interface.js +292 -0
- package/dist/ocaml.interface2.js +114 -0
- package/dist/ocaml.js +903 -0
- package/dist/ocaml.menhir.js +81 -0
- package/dist/ocaml.oasis.js +18 -0
- package/dist/ocaml.ocamlbuild.js +45 -0
- package/dist/ocaml.ocamlformat.js +8 -0
- package/dist/ocaml.ocamllex.js +60 -0
- package/dist/ocaml.opam-install.js +49 -0
- package/dist/ocaml.opam.js +69 -0
- package/dist/ocaml2.js +114 -0
- package/dist/ocaml3.js +136 -0
- package/dist/ocamlbuild.js +189 -0
- package/dist/ocamldoc.js +54 -0
- package/dist/ocamlformat.js +206 -0
- package/dist/ocamllex.js +133 -0
- package/dist/omnisharp-csharp.js +508 -0
- package/dist/omnisharp.js +594 -0
- package/dist/opam-install.js +40 -0
- package/dist/opam.js +140 -0
- package/dist/pascal-pascal.js +382 -0
- package/dist/pascal.js +80 -0
- package/dist/pascal.tmLanguage.js +169 -0
- package/dist/pascal2.js +26 -0
- package/dist/perl.js +93 -0
- package/dist/perl.tmLanguage.js +2986 -0
- package/dist/perl6.js +86 -0
- package/dist/perl6.tmLanguage.js +323 -0
- package/dist/pgsql.tmLanguage.js +284 -0
- package/dist/php-php.code-snippets.js +267 -0
- package/dist/php.js +154 -0
- package/dist/php.tmLanguage.js +4036 -0
- package/dist/pip-requirements.js +8 -0
- package/dist/pip-requirements.tmLanguage.js +89 -0
- package/dist/plaintext.js +11 -0
- package/dist/platform.tmLanguage.js +1135 -0
- package/dist/postcss.src.yaml.js +393 -0
- package/dist/postgres.js +80 -0
- package/dist/postgresql.js +75 -0
- package/dist/powershell.js +107 -0
- package/dist/powershell.tmLanguage.js +1037 -0
- package/dist/pug-svelte-dotblock.js +69 -0
- package/dist/pug-svelte-tags.js +215 -0
- package/dist/pug-svelte.js +307 -0
- package/dist/python.js +236 -0
- package/dist/r.js +664 -0
- package/dist/r2.js +88 -0
- package/dist/rbuildignore.js +39 -0
- package/dist/rd.js +81 -0
- package/dist/reason-markdown-codeblock.js +42 -0
- package/dist/reason.js +79 -0
- package/dist/rmd.js +84 -0
- package/dist/rnamespace.js +283 -0
- package/dist/ruby.js +95 -0
- package/dist/ruby.tmLanguage.js +2784 -0
- package/dist/rust.js +84 -0
- package/dist/rust.tmLanguage.js +1178 -0
- package/dist/sassdoc.tmLanguage.js +362 -0
- package/dist/scala.js +85 -0
- package/dist/scalameta.js +224 -0
- package/dist/scss.js +117 -0
- package/dist/scss.tmLanguage.js +1887 -0
- package/dist/sdl.js +162 -0
- package/dist/sdl2.js +90 -0
- package/dist/semanticdb.js +62 -0
- package/dist/shell-unix-bash.tmLanguage.js +2038 -0
- package/dist/shellscript.js +93 -0
- package/dist/solargraph.js +192 -0
- package/dist/solidity-solidity.js +213 -0
- package/dist/solidity.js +1224 -0
- package/dist/solidity2.js +71 -0
- package/dist/solidity3.js +143 -0
- package/dist/sql.js +99 -0
- package/dist/sql.tmLanguage.js +636 -0
- package/dist/svelte.js +120 -0
- package/dist/svelte.svelte-vscode-javascript.js +45 -0
- package/dist/svelte.svelte-vscode-svelte.js +46 -0
- package/dist/svelte.svelte-vscode-typescript.js +43 -0
- package/dist/svelte.svelte-vscode.js +383 -0
- package/dist/svelte.tmLanguage.src.yaml.js +1099 -0
- package/dist/svlangserver-systemverilog.js +395 -0
- package/dist/svlangserver.js +85 -0
- package/dist/swift-swift.code-snippets.js +183 -0
- package/dist/swift.js +90 -0
- package/dist/swift.tmLanguage.js +3312 -0
- package/dist/systemverilog.js +187 -0
- package/dist/systemverilog.tmLanguage.js +1259 -0
- package/dist/tasty.js +72 -0
- package/dist/tcl-tcl.js +151 -0
- package/dist/tcl.js +78 -0
- package/dist/tcl.tmlanguage.yaml.js +5490 -0
- package/dist/template.js +207 -0
- package/dist/theme/index.d.ts +4 -1
- package/dist/theme-defaults~dark_plus.js +210 -0
- package/dist/theme-defaults~dark_plus_experimental.js +145 -0
- package/dist/theme-defaults~dark_vs.js +412 -0
- package/dist/theme-defaults~hc_black.js +471 -0
- package/dist/theme-defaults~hc_light.js +595 -0
- package/dist/theme-defaults~light_plus.js +212 -0
- package/dist/theme-defaults~light_plus_experimental.js +158 -0
- package/dist/theme-defaults~light_vs.js +441 -0
- package/dist/tools/EditorOpenHandlerRegistry.d.ts +2 -3
- package/dist/ts.worker.js +6 -0
- package/dist/typescript-basics-typescript.code-snippets.js +313 -0
- package/dist/typescript-language-features.js +1103 -0
- package/dist/typescript.js +216 -0
- package/dist/typescriptreact.js +216 -0
- package/dist/vb-vb.code-snippets.js +88 -0
- package/dist/vb.js +79 -0
- package/dist/verilog.js +187 -0
- package/dist/{node_modules/monaco-vim/lib/cm/keymap_vim.js → vim.js} +1790 -4
- package/dist/volar-vue.js +289 -0
- package/dist/vscode-R-r-snippets.js +534 -0
- package/dist/vscode-R-rmarkdown.js +461 -0
- package/dist/vscode-R.js +660 -0
- package/dist/vscode-django-filters.js +340 -0
- package/dist/vscode-django.js +37 -0
- package/dist/vscode-go-go.js +276 -0
- package/dist/vscode-go.js +1610 -0
- package/dist/vscode-groovy.js +28 -0
- package/dist/vscode-python.js +706 -0
- package/dist/vue-directives.js +25 -0
- package/dist/vue-interpolations.js +25 -0
- package/dist/vue-sfc-style-variable-injection.js +63 -0
- package/dist/vue.js +151 -0
- package/dist/vue.tmLanguage.js +1218 -0
- package/dist/worker.d.ts +10 -1
- package/dist/worker.js +43 -11
- package/dist/xml.js +116 -0
- package/dist/xml.tmLanguage.js +395 -0
- package/dist/xsl.js +39 -0
- package/dist/xsl.tmLanguage.js +102 -0
- package/dist/yaml.js +82 -0
- package/dist/yaml.tmLanguage.js +629 -0
- package/package.json +67 -127
- package/stats.html +1429 -90
- package/dist/_virtual/_monaco-editor.js +0 -6
- package/dist/_virtual/actions.js +0 -3
- package/dist/_virtual/basicInput.js +0 -3
- package/dist/_virtual/cm_adapter.js +0 -3
- package/dist/_virtual/commands.js +0 -3
- package/dist/_virtual/editor.api.js +0 -6
- package/dist/_virtual/index.js +0 -3
- package/dist/_virtual/index2.js +0 -3
- package/dist/_virtual/index3.js +0 -3
- package/dist/_virtual/keymap_vim.js +0 -3
- package/dist/_virtual/shiftCommand.js +0 -6
- package/dist/_virtual/state.js +0 -3
- package/dist/_virtual/statusbar.js +0 -3
- package/dist/_virtual/util.js +0 -3
- package/dist/assets/Angular.ng-template-16.1.8.vsix/expression-c051cd51.json +0 -834
- package/dist/assets/Angular.ng-template-16.1.8.vsix/inline-styles-59ea31e9.json +0 -92
- package/dist/assets/Angular.ng-template-16.1.8.vsix/inline-template-f0c3f556.json +0 -76
- package/dist/assets/Angular.ng-template-16.1.8.vsix/template-e24e3ba1.json +0 -195
- package/dist/assets/Dart-Code.dart-code-3.75.20231009.vsix/dart-bea1db40.json +0 -534
- package/dist/assets/Dart-Code.dart-code-3.75.20231009.vsix/dart-language-configuration-c4b1f694.json +0 -29
- package/dist/assets/Dart-Code.dart-code-3.75.20231009.vsix/flutter_activity_bar-17811551.svg +0 -14
- package/dist/assets/IMCTradingBV.svlangserver-0.4.1.vsix/codeblock-67e70f41.json +0 -81
- package/dist/assets/IMCTradingBV.svlangserver-0.4.1.vsix/language-configuration-3467c3a6.json +0 -57
- package/dist/assets/IMCTradingBV.svlangserver-0.4.1.vsix/systemverilog-ff001e9f.json +0 -349
- package/dist/assets/IMCTradingBV.svlangserver-0.4.1.vsix/systemverilog.tmLanguage-31a99a46.json +0 -1246
- package/dist/assets/IMCTradingBV.svlangserver-0.4.1.vsix/tasks.schema-832643df.json +0 -30
- package/dist/assets/JakeBecker.elixir-ls-0.17.1.vsix/eex-e9a5e762.json +0 -41
- package/dist/assets/JakeBecker.elixir-ls-0.17.1.vsix/eex-language-configuration-6fb789e3.json +0 -58
- package/dist/assets/JakeBecker.elixir-ls-0.17.1.vsix/elixir-7cb5db44.json +0 -2580
- package/dist/assets/JakeBecker.elixir-ls-0.17.1.vsix/elixir-language-configuration-4bd217f4.json +0 -74
- package/dist/assets/JakeBecker.elixir-ls-0.17.1.vsix/html-eex-3079072a.json +0 -25
- package/dist/assets/JuanBlanco.solidity-0.0.165.vsix/solidity-1f693465.json +0 -213
- package/dist/assets/JuanBlanco.solidity-0.0.165.vsix/solidity-642a30e7.json +0 -1215
- package/dist/assets/JuanBlanco.solidity-0.0.165.vsix/solidity.configuration-d0229207.json +0 -32
- package/dist/assets/REditorSupport.r-2.8.2.vsix/Markdown Redcarpet-12881a56.json +0 -146
- package/dist/assets/REditorSupport.r-2.8.2.vsix/RMarkdown-0bbb72c0.json +0 -13
- package/dist/assets/REditorSupport.r-2.8.2.vsix/Rcpp-cea57c6d.json +0 -34
- package/dist/assets/REditorSupport.r-2.8.2.vsix/Rd (R Documentation)-555f4e62.json +0 -117
- package/dist/assets/REditorSupport.r-2.8.2.vsix/Rlogo-6d3318a6.svg +0 -14
- package/dist/assets/REditorSupport.r-2.8.2.vsix/dcf-3d561f42.json +0 -82
- package/dist/assets/REditorSupport.r-2.8.2.vsix/dcf-configuration-d58bba2d.json +0 -24
- package/dist/assets/REditorSupport.r-2.8.2.vsix/r-configuration-78e137e5.json +0 -33
- package/dist/assets/REditorSupport.r-2.8.2.vsix/r-fe2a45c3.json +0 -647
- package/dist/assets/REditorSupport.r-2.8.2.vsix/r-snippets-9e46c45c.json +0 -475
- package/dist/assets/REditorSupport.r-2.8.2.vsix/rbuildignore-9cfe22f1.json +0 -27
- package/dist/assets/REditorSupport.r-2.8.2.vsix/rbuildignore-configuration-8eb95bcb.json +0 -2
- package/dist/assets/REditorSupport.r-2.8.2.vsix/rd-configuration-194dd9d9.json +0 -27
- package/dist/assets/REditorSupport.r-2.8.2.vsix/rmarkdown-dea1e283.json +0 -459
- package/dist/assets/REditorSupport.r-2.8.2.vsix/rmd-configuration-b4c6dc23.json +0 -27
- package/dist/assets/REditorSupport.r-2.8.2.vsix/rnamespace-290042cd.json +0 -222
- package/dist/assets/alefragnani.pascal-9.6.0.vsix/package.nls-8c1cec26.json +0 -24
- package/dist/assets/alefragnani.pascal-9.6.0.vsix/package.nls.pt-br-50a237c2.json +0 -24
- package/dist/assets/alefragnani.pascal-9.6.0.vsix/pascal-365151a8.json +0 -414
- package/dist/assets/alefragnani.pascal-9.6.0.vsix/pascal-93ca5af8.tmLanguage +0 -243
- package/dist/assets/alefragnani.pascal-9.6.0.vsix/pascal.configuration-650e481b.json +0 -32
- package/dist/assets/batisteo.vscode-django-1.14.0.vsix/django-html.tmLanguage-a755b992.json +0 -701
- package/dist/assets/batisteo.vscode-django-1.14.0.vsix/django-txt.tmLanguage-856346a9.json +0 -255
- package/dist/assets/batisteo.vscode-django-1.14.0.vsix/filters-f60b575d.json +0 -339
- package/dist/assets/batisteo.vscode-django-1.14.0.vsix/language-configuration-f8af0b2f.json +0 -63
- package/dist/assets/batisteo.vscode-django-1.14.0.vsix/tags-43e8b685.json +0 -496
- package/dist/assets/bitwisecook.tcl-0.4.3.vsix/language-configuration-e9539ff0.json +0 -75
- package/dist/assets/bitwisecook.tcl-0.4.3.vsix/tcl-10fb1e40.json +0 -142
- package/dist/assets/bitwisecook.tcl-0.4.3.vsix/tcl-d73ae460.json +0 -5474
- package/dist/assets/broadcomMFD.cobol-language-support-2.0.3.vsix/COBOL.tmLanguage-67e1eefb.json +0 -216
- package/dist/assets/broadcomMFD.cobol-language-support-2.0.3.vsix/lang-config-a301d1b9.json +0 -27
- package/dist/assets/broadcomMFD.cobol-language-support-2.0.3.vsix/pgm_conf.schema-f8558717.json +0 -24
- package/dist/assets/broadcomMFD.cobol-language-support-2.0.3.vsix/proc_grps.schema-428d2a80.json +0 -55
- package/dist/assets/ckolkman.vscode-postgres-1.4.3.vsix/language-configuration-b3cf7aac.json +0 -25
- package/dist/assets/ckolkman.vscode-postgres-1.4.3.vsix/pgsql-a84fddae.tmLanguage +0 -413
- package/dist/assets/ckolkman.vscode-postgres-1.4.3.vsix/postgres-explorer-ce4bf408.svg +0 -100
- package/dist/assets/golang.Go-0.39.1.vsix/go-71588b74.json +0 -274
- package/dist/assets/golang.Go-0.39.1.vsix/go.mod.language-configuration-0301a994.json +0 -5
- package/dist/assets/golang.Go-0.39.1.vsix/go.mod.tmGrammar-6cbef28b.json +0 -171
- package/dist/assets/golang.Go-0.39.1.vsix/go.sum.tmGrammar-36d4acfd.json +0 -44
- package/dist/assets/golang.Go-0.39.1.vsix/govulncheck.tmGrammar-3741e2c9.json +0 -123
- package/dist/assets/johnsoncodehk.vscode-angular-1.0.22.vsix/angular-directives-77c45bf9.json +0 -123
- package/dist/assets/johnsoncodehk.vscode-angular-1.0.22.vsix/angular-interpolations-b1f89745.json +0 -44
- package/dist/assets/johnsoncodehk.vscode-angular-1.0.22.vsix/angular-template-language-configuration-4cd1b761.json +0 -8
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/C2Hs-c12145c8.json +0 -23
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/C2Hs-configuration-dc72a3f0.json +0 -29
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/Hsc2Hs-685ef114.json +0 -23
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/Hsc2Hs-configuration-15e5e5c3.json +0 -30
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/alex-07217e37.json +0 -236
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/cabal-8f2b8b9f.json +0 -53
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/cabal-configuration-64e517a3.json +0 -6
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/codeblock-cabal-34484e34.json +0 -28
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/codeblock-haskell-138d661e.json +0 -28
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/codeblock-literate-haskell-90d8db8f.json +0 -28
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/happy-3cd8fa35.json +0 -196
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/haskell-192ef944.json +0 -2525
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/haskell-configuration-54079281.json +0 -29
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/literate-haskell-configuration-23cbb80e.json +0 -29
- package/dist/assets/justusadam.language-haskell-3.6.0.vsix/literateHaskell-0a08d9f7.json +0 -56
- package/dist/assets/mathiasfrohlich.Kotlin-1.7.1.vsix/Kotlin-5d2aa580.tmLanguage +0 -1067
- package/dist/assets/mathiasfrohlich.Kotlin-1.7.1.vsix/codeblock-8be87145.json +0 -22
- package/dist/assets/mathiasfrohlich.Kotlin-1.7.1.vsix/kotlin-9f43cb02.json +0 -107
- package/dist/assets/mathiasfrohlich.Kotlin-1.7.1.vsix/kotlin.configuration-1d328649.json +0 -35
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/aspnetcorerazor.tmLanguage-7002af3f.json +0 -1812
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/csharp-a17ace76.json +0 -493
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/language-configuration-f8b16509.json +0 -24
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls-b9937871.json +0 -419
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.cs-80b9e0b3.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.de-2f7710c0.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.es-d1bd829b.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.fr-e0bc41f9.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.it-0e21bedf.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.ja-2384013f.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.ko-621d3dfe.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.pl-bd72e09e.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.pt-br-a446b36f.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.ru-923ade42.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.tr-10253fa3.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.zh-cn-00cb169d.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/package.nls.zh-tw-1c34b33a.json +0 -201
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/vs2019_dark-a56f6e51.json +0 -783
- package/dist/assets/ms-dotnettools.csharp-2.6.24.vsix/vs2019_light-fd29b4ae.json +0 -807
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/conda-environment-3aa03e16.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/conda-meta-e7f42ee0.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/condarc-8ad258e5.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls-c97ce436.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.cs-5dee4ffc.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.de-b852e3ec.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.es-66adbb9e.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.fr-6abf0276.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.it-12650beb.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.ja-de4ee3bd.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.ko-254d6467.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.pl-f957d6c6.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.pt-br-d02ca4d9.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.qps-ploc-f24b5e76.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.ru-e6ba5e62.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.tr-05d98040.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.zh-cn-f41941e0.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/package.nls.zh-tw-02c30e90.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/pip-requirements-85cd5b06.json +0 -1
- package/dist/assets/ms-python.python-2023.19.12861011.vsix/pip-requirements.tmLanguage-5dcdde1f.json +0 -1
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls-faad5326.json +0 -1006
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.cs-1c63e64b.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.de-a80f3548.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.es-ed5f9669.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.fr-0a6f6680.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.it-690d744e.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.ja-9e548ee8.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.ko-b7c6d97d.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.pl-fac1f880.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.pt-br-618e6fff.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.ru-b8aa8e97.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.tr-61b293ea.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.zh-cn-2fb473f1.json +0 -441
- package/dist/assets/ms-vscode.cpptools-1.18.0.vsix/package.nls.zh-tw-bd960e98.json +0 -441
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/META-a4e7fa6f.json +0 -56
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/META-e71a284d.json +0 -10
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/atd-03beef93.json +0 -57
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/cram-947e10d8.json +0 -167
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-3f9df928.json +0 -24
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-ac59c79b.json +0 -2949
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-b84b8558.json +0 -30
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-project-1f8165b1.json +0 -26
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-project-c3d6414c.json +0 -326
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/dune-workspace-714d48f4.json +0 -191
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/logo-1ec58c70.svg +0 -3
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/menhir-318b208e.json +0 -349
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/menhir-action-1de9ecfe.json +0 -29
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/menhir-ba3ffd84.json +0 -27
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/merlin-68658127.json +0 -73
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/oasis-6cb9104d.json +0 -6
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/oasis-b3731651.json +0 -69
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocaml-2b852e88.json +0 -54
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocaml-721ae493.json +0 -654
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocaml-8263d04c.json +0 -49
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocaml-markdown-codeblock-d59b1879.json +0 -24
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocaml.interface-82c9d397.json +0 -161
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamlbuild-28c2016d.json +0 -110
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamlbuild-68c3ee9d.json +0 -16
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamldoc-68623cf8.json +0 -31
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamlformat-12d00ff4.json +0 -5
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamlformat-566f44ca.json +0 -191
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamllex-16f56b53.json +0 -6
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamllex-2f54f6a7.json +0 -21
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/ocamllex-9eea3c0f.json +0 -108
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/opam-051cc018.json +0 -24
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/opam-a3126c97.json +0 -111
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/opam-install-24f044a3.json +0 -23
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/opam-install-5c433c27.json +0 -19
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/reason-46868a8a.json +0 -2357
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/reason-e5da4a73.json +0 -25
- package/dist/assets/ocamllabs.ocaml-platform-1.13.1.vsix/reason-markdown-codeblock-80e4eeb5.json +0 -24
- package/dist/assets/pgourlain.erlang-0.9.7.vsix/Erlang-dc87abbd.plist +0 -2719
- package/dist/assets/pgourlain.erlang-0.9.7.vsix/erlang-ceac2319.json +0 -197
- package/dist/assets/pgourlain.erlang-0.9.7.vsix/erlang.configuration-52d0fdab.json +0 -25
- package/dist/assets/redhat.java-1.24.2023101604.vsix/JavaProperties.tmLanguage-0a8c48eb.json +0 -103
- package/dist/assets/redhat.java-1.24.2023101604.vsix/java-properties-configuration-97f1db18.json +0 -67
- package/dist/assets/redhat.java-1.24.2023101604.vsix/java.tmLanguage-7cffeca4.json +0 -1892
- package/dist/assets/redhat.java-1.24.2023101604.vsix/language-configuration-054e92b8.json +0 -92
- package/dist/assets/redhat.java-1.24.2023101604.vsix/package.nls-2147d73e.json +0 -29
- package/dist/assets/redhat.java-1.24.2023101604.vsix/package.nls.ko-a7811004.json +0 -26
- package/dist/assets/redhat.java-1.24.2023101604.vsix/package.nls.zh-cn-5b3edff8.json +0 -27
- package/dist/assets/redhat.java-1.24.2023101604.vsix/package.nls.zh-tw-236ee4a0.json +0 -26
- package/dist/assets/redhat.java-1.24.2023101604.vsix/package.schema-58232c4f.json +0 -28
- package/dist/assets/scala-lang.scala-0.5.7.vsix/Scala.tmLanguage-e9b79520.json +0 -1
- package/dist/assets/scala-lang.scala-0.5.7.vsix/language-configuration-acc80ed1.json +0 -33
- package/dist/assets/scalameta.metals-1.25.2.vsix/book-dark-6f0d6908.svg +0 -5
- package/dist/assets/scalameta.metals-1.25.2.vsix/book-light-ba883494.svg +0 -1
- package/dist/assets/scalameta.metals-1.25.2.vsix/buildtarget-73bbface.json +0 -37
- package/dist/assets/scalameta.metals-1.25.2.vsix/file_type_java-36bb31ca.svg +0 -1
- package/dist/assets/scalameta.metals-1.25.2.vsix/file_type_scala-b6c14b23.svg +0 -1
- package/dist/assets/scalameta.metals-1.25.2.vsix/jvm-bytecode-cab4d04e.json +0 -395
- package/dist/assets/scalameta.metals-1.25.2.vsix/jvm-bytecode-verbose-3611fa8e.json +0 -745
- package/dist/assets/scalameta.metals-1.25.2.vsix/scalameta-5e510695.svg +0 -11
- package/dist/assets/scalameta.metals-1.25.2.vsix/scalameta-logo-f3b7b0bf.png +0 -0
- package/dist/assets/scalameta.metals-1.25.2.vsix/semanticdb-44c14f33.json +0 -37
- package/dist/assets/scalameta.metals-1.25.2.vsix/tasty-c2b151f2.json +0 -56
- package/dist/assets/sumneko.lua-3.7.0.vsix/package.nls-f1576108.json +0 -231
- package/dist/assets/sumneko.lua-3.7.0.vsix/package.nls.pt-br-44d0849d.json +0 -231
- package/dist/assets/sumneko.lua-3.7.0.vsix/package.nls.zh-cn-3f634909.json +0 -231
- package/dist/assets/sumneko.lua-3.7.0.vsix/package.nls.zh-tw-144dc848.json +0 -231
- package/dist/assets/sumneko.lua-3.7.0.vsix/schema-dedfd658.json +0 -3421
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/javascript-7aebc91a.json +0 -43
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/language-configuration-3cb1f78d.json +0 -38
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/markdown-svelte-4cd58a41.json +0 -45
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/markdown-svelte-css-0fdc510e.json +0 -23
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/markdown-svelte-js-cd568059.json +0 -23
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/package-json-schema-ec2f7bd4.json +0 -9
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/postcss-05883dcd.json +0 -377
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/prettier-options-schema-9e36a684.json +0 -112
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/pug-svelte-04246371.json +0 -293
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/pug-svelte-dotblock-b92db507.json +0 -55
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/pug-svelte-tags-65124af1.json +0 -201
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/svelte-a1bb47f3.json +0 -22
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/svelte.tmLanguage-aec82be9.json +0 -1163
- package/dist/assets/svelte.svelte-vscode-107.12.0.vsix/typescript-bd1c0ff1.json +0 -37
- package/dist/assets/webfreak.code-d-0.23.2.vsix/d-2da26fd0.json +0 -3163
- package/dist/assets/webfreak.code-d-0.23.2.vsix/d-316cb838.json +0 -90
- package/dist/assets/webfreak.code-d-0.23.2.vsix/diet-0b761e76.json +0 -87
- package/dist/assets/webfreak.code-d-0.23.2.vsix/diet-7fe4fdb7.json +0 -92
- package/dist/assets/webfreak.code-d-0.23.2.vsix/diet-83c1bebc.json +0 -742
- package/dist/assets/webfreak.code-d-0.23.2.vsix/dml-ef6957d3.json +0 -157
- package/dist/assets/webfreak.code-d-0.23.2.vsix/dub.schema-77c2f417.json +0 -377
- package/dist/assets/webfreak.code-d-0.23.2.vsix/general-7b927912.json +0 -84
- package/dist/assets/webfreak.code-d-0.23.2.vsix/sdl-b6c61596.json +0 -149
- package/dist/configuration/index.js +0 -45
- package/dist/editor/autofold.js +0 -24
- package/dist/editor/cobol.js +0 -67
- package/dist/editor/index.js +0 -9
- package/dist/extensions/Angular.ng-template-16.1.8.vsix.js +0 -16
- package/dist/extensions/Dart-Code.dart-code-3.75.20231009.vsix.js +0 -14
- package/dist/extensions/IMCTradingBV.svlangserver-0.4.1.vsix.js +0 -18
- package/dist/extensions/JakeBecker.elixir-ls-0.17.1.vsix.js +0 -18
- package/dist/extensions/JuanBlanco.solidity-0.0.165.vsix.js +0 -14
- package/dist/extensions/REditorSupport.r-2.8.2.vsix.js +0 -42
- package/dist/extensions/alefragnani.pascal-9.6.0.vsix.js +0 -18
- package/dist/extensions/batisteo.vscode-django-1.14.0.vsix.js +0 -18
- package/dist/extensions/bitwisecook.tcl-0.4.3.vsix.js +0 -14
- package/dist/extensions/broadcomMFD.cobol-language-support-2.0.3.vsix.js +0 -16
- package/dist/extensions/castwide.solargraph-0.24.0.vsix.js +0 -5
- package/dist/extensions/ckolkman.vscode-postgres-1.4.3.vsix.js +0 -14
- package/dist/extensions/golang.Go-0.39.1.vsix.js +0 -18
- package/dist/extensions/johnsoncodehk.vscode-angular-1.0.22.vsix.js +0 -14
- package/dist/extensions/justusadam.language-haskell-3.6.0.vsix.js +0 -38
- package/dist/extensions/mathiasfrohlich.Kotlin-1.7.1.vsix.js +0 -16
- package/dist/extensions/ms-dotnettools.csharp-2.6.24.vsix.js +0 -46
- package/dist/extensions/ms-python.python-2023.19.12861011.vsix.js +0 -48
- package/dist/extensions/ms-vscode.cpptools-1.18.0.vsix.js +0 -36
- package/dist/extensions/ocamllabs.ocaml-platform-1.13.1.vsix.js +0 -82
- package/dist/extensions/pgourlain.erlang-0.9.7.vsix.js +0 -14
- package/dist/extensions/redhat.java-1.24.2023101604.vsix.js +0 -26
- package/dist/extensions/scala-lang.scala-0.5.7.vsix.js +0 -12
- package/dist/extensions/scalameta.metals-1.25.2.vsix.js +0 -30
- package/dist/extensions/sumneko.lua-3.7.0.vsix.js +0 -18
- package/dist/extensions/svelte.svelte-vscode-107.12.0.vsix.js +0 -36
- package/dist/extensions/webfreak.code-d-0.23.2.vsix.js +0 -26
- package/dist/extensions.d.ts +0 -36
- package/dist/features/debug.js +0 -6
- package/dist/features/extensionHostWorker.js +0 -11
- package/dist/features/search.d.ts +0 -1
- package/dist/features/search.js +0 -7
- package/dist/features/viewPanels.d.ts +0 -1
- package/dist/features/viewPanels.js +0 -11
- package/dist/features/views.d.ts +0 -4
- package/dist/features/views.js +0 -27
- package/dist/keybindings/index.js +0 -36
- package/dist/keybindings/vim.js +0 -82
- package/dist/languages/index.js +0 -40
- package/dist/monaco.js +0 -93
- package/dist/node_modules/lodash.kebabcase/index.js +0 -439
- package/dist/node_modules/lodash.throttle/index.js +0 -443
- package/dist/node_modules/monaco-emacs/lib/emacs/actions.js +0 -596
- package/dist/node_modules/monaco-emacs/lib/emacs/basicInput.js +0 -113
- package/dist/node_modules/monaco-emacs/lib/emacs/commands.js +0 -184
- package/dist/node_modules/monaco-emacs/lib/emacs/index.js +0 -186
- package/dist/node_modules/monaco-emacs/lib/emacs/state.js +0 -116
- package/dist/node_modules/monaco-emacs/lib/emacs/util.js +0 -112
- package/dist/node_modules/monaco-emacs/lib/index.js +0 -31
- package/dist/node_modules/monaco-vim/lib/cm_adapter.js +0 -1393
- package/dist/node_modules/monaco-vim/lib/index.js +0 -71
- package/dist/node_modules/monaco-vim/lib/statusbar.js +0 -239
- package/dist/services.d.ts +0 -8
- package/dist/services.js +0 -73
- package/dist/style.js +0 -12
- package/dist/theme/index.js +0 -21
- package/dist/tools/EditorOpenHandlerRegistry.js +0 -108
- package/dist/tools/FakeWorker.d.ts +0 -5
- package/dist/tools/FakeWorker.js +0 -8
- package/dist/tools.js +0 -235
- /package/dist/{editor → extensions}/autofold.d.ts +0 -0
- /package/dist/{editor → extensions}/cobol.d.ts +0 -0
- /package/dist/{editor → extensions}/index.d.ts +0 -0
- /package/dist/{features/debug.d.ts → languages/snippets/index.d.ts} +0 -0
- /package/dist/{features/extensionHostWorker.d.ts → languages/textMate/semanticTokens.d.ts} +0 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { c as createBase64WorkerFactory } from './worker.js';
|
|
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);
|
|
4
|
+
/* eslint-enable */
|
|
5
|
+
|
|
6
|
+
export { WorkerFactory as default };
|