@tscircuit/fake-snippets 0.0.107 → 0.0.109

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/api/generated-index.js +82 -22
  2. package/biome.json +7 -1
  3. package/bun-tests/fake-snippets-api/routes/package_builds/get.test.ts +0 -15
  4. package/bun-tests/fake-snippets-api/routes/package_builds/list.test.ts +0 -12
  5. package/bun.lock +62 -19
  6. package/dist/bundle.js +25 -24
  7. package/dist/index.d.ts +26 -15
  8. package/dist/index.js +19 -18
  9. package/dist/schema.d.ts +32 -24
  10. package/dist/schema.js +7 -6
  11. package/fake-snippets-api/lib/db/db-client.ts +10 -1
  12. package/fake-snippets-api/lib/db/schema.ts +4 -3
  13. package/fake-snippets-api/lib/db/seed.ts +6 -9
  14. package/fake-snippets-api/lib/public-mapping/public-map-package-build.ts +0 -3
  15. package/fake-snippets-api/lib/public-mapping/public-map-package-release.ts +3 -0
  16. package/package.json +7 -8
  17. package/src/App.tsx +12 -11
  18. package/src/components/DownloadButtonAndMenu.tsx +133 -35
  19. package/src/components/FileSidebar.tsx +45 -193
  20. package/src/components/Footer.tsx +0 -1
  21. package/src/components/HeaderLogin.tsx +1 -1
  22. package/src/components/HiddenFilesDropdown.tsx +0 -2
  23. package/src/components/PackageBreadcrumb.tsx +1 -1
  24. package/src/components/PackageBuildsPage/PackageBuildDetailsPage.tsx +0 -2
  25. package/src/components/PackageBuildsPage/build-preview-content.tsx +34 -5
  26. package/src/components/PackageCard.tsx +0 -1
  27. package/src/components/ViewPackagePage/components/ShikiCodeViewer.tsx +20 -11
  28. package/src/components/ViewPackagePage/components/important-files-view.tsx +75 -59
  29. package/src/components/ViewPackagePage/components/main-content-header.tsx +4 -4
  30. package/src/components/ViewPackagePage/components/main-content-view-selector.tsx +0 -1
  31. package/src/components/ViewPackagePage/components/mobile-sidebar.tsx +1 -2
  32. package/src/components/ViewPackagePage/components/package-header.tsx +14 -17
  33. package/src/components/ViewPackagePage/components/preview-image-squares.tsx +0 -1
  34. package/src/components/ViewPackagePage/components/repo-page-content.tsx +21 -20
  35. package/src/components/ViewPackagePage/components/sidebar-about-section.tsx +18 -2
  36. package/src/components/ViewPackagePage/components/sidebar-releases-section.tsx +1 -1
  37. package/src/components/ViewPackagePage/components/sidebar.tsx +0 -2
  38. package/src/components/ViewPackagePage/components/tab-views/files-view.tsx +18 -17
  39. package/src/components/ViewPackagePage/components/theme-toggle.tsx +0 -2
  40. package/src/components/ViewPackagePage/hooks/use-toast.tsx +0 -1
  41. package/src/components/package-port/CodeAndPreview.tsx +23 -40
  42. package/src/components/package-port/CodeEditor.tsx +24 -1
  43. package/src/components/package-port/CodeEditorHeader.tsx +5 -2
  44. package/src/components/preview/BuildsList.tsx +20 -9
  45. package/src/components/preview/ConnectedPackagesList.tsx +73 -60
  46. package/src/components/preview/ConnectedRepoOverview.tsx +160 -154
  47. package/src/components/preview/PackageReleasesDashboard.tsx +41 -30
  48. package/src/components/preview/index.tsx +16 -153
  49. package/src/hooks/use-current-package-id.ts +5 -30
  50. package/src/hooks/use-current-package-info.ts +29 -5
  51. package/src/hooks/use-global-store.ts +1 -1
  52. package/src/hooks/useFileManagement.ts +153 -34
  53. package/src/hooks/useOptimizedPackageFilesLoader.ts +149 -0
  54. package/src/hooks/useUpdatePackageFilesMutation.ts +2 -0
  55. package/src/index.css +24 -0
  56. package/src/lib/download-fns/download-circuit-png.ts +11 -3
  57. package/src/lib/download-fns/download-gltf-from-circuit-json.ts +44 -0
  58. package/src/lib/utils/isComponentExported.ts +9 -0
  59. package/src/lib/utils/transformFilesToTreeData.tsx +195 -0
  60. package/src/pages/404.tsx +3 -5
  61. package/src/pages/authorize.tsx +0 -2
  62. package/src/pages/landing.tsx +0 -1
  63. package/src/pages/preview-release.tsx +279 -0
  64. package/src/pages/release-builds.tsx +0 -8
  65. package/src/pages/release-detail.tsx +17 -15
  66. package/src/pages/releases.tsx +5 -1
  67. package/src/pages/view-package.tsx +14 -13
  68. package/src/components/Footer2.tsx +0 -100
  69. package/src/components/ShippingInformationForm.tsx +0 -423
  70. package/src/components/StaticViewSnippetHeader.tsx +0 -70
  71. package/src/components/ViewPackagePage/components/file-explorer.tsx +0 -67
  72. package/src/components/ViewPackagePage/components/readme-view.tsx +0 -58
  73. package/src/components/ViewPackagePage/components/repo-header-button.tsx +0 -36
  74. package/src/components/ViewPackagePage/components/repo-header.tsx +0 -4
  75. package/src/components/ViewPackagePage/components/sidebar-contributors-section.tsx +0 -31
  76. package/src/components/ViewSnippetHeader.tsx +0 -181
  77. package/src/components/ui/input-otp.tsx +0 -69
  78. package/src/hooks/use-snippets-base-api-url.ts +0 -3
  79. package/src/pages/preview-build.tsx +0 -380
  80. package/src/pages/settings.tsx +0 -25
package/dist/bundle.js CHANGED
@@ -221,7 +221,10 @@ var packageReleaseSchema = z.object({
221
221
  is_pr_preview: z.boolean().default(false),
222
222
  github_pr_number: z.number().nullable().optional(),
223
223
  // Latest Build Reference
224
- latest_package_build_id: z.string().nullable().optional()
224
+ latest_package_build_id: z.string().nullable().optional(),
225
+ branch_name: z.string().nullable().optional(),
226
+ commit_message: z.string().nullable().optional(),
227
+ commit_author: z.string().nullable().optional()
225
228
  });
226
229
  var packageFileSchema = z.object({
227
230
  package_file_id: z.string(),
@@ -264,7 +267,8 @@ var packageSchema = z.object({
264
267
  ai_usage_instructions: z.string().nullable(),
265
268
  latest_package_release_fs_sha: z.string().nullable().default(null),
266
269
  default_view: z.enum(["files", "3d", "pcb", "schematic"]).default("files").optional(),
267
- allow_pr_previews: z.boolean().default(false).optional()
270
+ allow_pr_previews: z.boolean().default(false).optional(),
271
+ is_starred: z.boolean().default(false).optional()
268
272
  });
269
273
  var jlcpcbOrderStateSchema = z.object({
270
274
  jlcpcb_order_state_id: z.string(),
@@ -320,10 +324,7 @@ var packageBuildSchema = z.object({
320
324
  build_error: z.string().nullable().optional(),
321
325
  build_error_last_updated_at: z.string().datetime(),
322
326
  preview_url: z.string().nullable().optional(),
323
- build_logs: z.string().nullable().optional(),
324
- branch_name: z.string().nullable().optional(),
325
- commit_message: z.string().nullable().optional(),
326
- commit_author: z.string().nullable().optional()
327
+ build_logs: z.string().nullable().optional()
327
328
  });
328
329
  var databaseSchema = z.object({
329
330
  idCounter: z.number().default(0),
@@ -548,6 +549,9 @@ var seed = (db) => {
548
549
  unscoped_name: "my-test-board",
549
550
  github_repo_full_name: "testuser/my-test-board",
550
551
  owner_name: "testuser",
552
+ branch_name: "main",
553
+ commit_message: "Attempted build of a555timer-square-wave package",
554
+ commit_author: "testuser",
551
555
  creator_account_id: account_id,
552
556
  code: `
553
557
  import { A555Timer } from "@tsci/seveibar.a555timer"
@@ -1079,10 +1083,7 @@ export default () => (
1079
1083
  build_error: "Build failed: Unable to complete transpilation step",
1080
1084
  build_error_last_updated_at: new Date(Date.now() - 14e3).toISOString(),
1081
1085
  preview_url: null,
1082
- build_logs: "Build process:\n1. Environment setup - OK\n2. Dependency resolution - OK\n3. Code compilation - FAILED\nError: Invalid syntax in component declaration\nBuild terminated with errors",
1083
- branch_name: "main",
1084
- commit_message: "Attempted build of a555timer-square-wave package",
1085
- commit_author: "testuser"
1086
+ build_logs: "Build process:\n1. Environment setup - OK\n2. Dependency resolution - OK\n3. Code compilation - FAILED\nError: Invalid syntax in component declaration\nBuild terminated with errors"
1086
1087
  });
1087
1088
  const release1 = db.getPackageReleaseById(packageReleaseId1);
1088
1089
  db.updatePackageRelease({
@@ -1620,6 +1621,9 @@ exports.A555Timer = A555Timer;
1620
1621
  name: "testuser/a555timer-square-wave",
1621
1622
  unscoped_name: "a555timer-square-wave",
1622
1623
  owner_name: "testuser",
1624
+ branch_name: "main",
1625
+ commit_message: "Attempted build of a555timer-square-wave package",
1626
+ commit_author: "testuser",
1623
1627
  creator_account_id: account_id,
1624
1628
  code: `
1625
1629
  import { A555Timer } from "@tsci/seveibar.a555timer"
@@ -2152,10 +2156,7 @@ export const SquareWaveModule = () => (
2152
2156
  build_error: "Build failed: Unable to complete transpilation step",
2153
2157
  build_error_last_updated_at: new Date(Date.now() - 14e3).toISOString(),
2154
2158
  preview_url: null,
2155
- build_logs: "Build process:\n1. Environment setup - OK\n2. Dependency resolution - OK\n3. Code compilation - FAILED\nError: Invalid syntax in component declaration\nBuild terminated with errors",
2156
- branch_name: "main",
2157
- commit_message: "Attempted build of a555timer-square-wave package",
2158
- commit_author: "testuser"
2159
+ build_logs: "Build process:\n1. Environment setup - OK\n2. Dependency resolution - OK\n3. Code compilation - FAILED\nError: Invalid syntax in component declaration\nBuild terminated with errors"
2159
2160
  });
2160
2161
  const successfulBuild = db.addPackageBuild({
2161
2162
  package_release_id: packageReleaseId2,
@@ -2194,10 +2195,7 @@ export const SquareWaveModule = () => (
2194
2195
  build_error: null,
2195
2196
  build_error_last_updated_at: (/* @__PURE__ */ new Date()).toISOString(),
2196
2197
  preview_url: "http://localhost:3000/preview/package_build_1",
2197
- build_logs: "Build process:\n1. Environment setup - OK\n2. Dependency resolution - OK\n3. Code compilation - OK\n4. Circuit validation - OK\n5. Package assembly - OK\nBuild completed successfully",
2198
- branch_name: "main",
2199
- commit_message: "Initial build of a555timer-square-wave package",
2200
- commit_author: "testuser"
2198
+ build_logs: "Build process:\n1. Environment setup - OK\n2. Dependency resolution - OK\n3. Code compilation - OK\n4. Circuit validation - OK\n5. Package assembly - OK\nBuild completed successfully"
2201
2199
  });
2202
2200
  const release2 = db.getPackageReleaseById(packageReleaseId2);
2203
2201
  db.updatePackageRelease({
@@ -2457,6 +2455,9 @@ var initializer = combine(databaseSchema.parse({}), (set, get) => ({
2457
2455
  is_locked: false,
2458
2456
  created_at: currentTime,
2459
2457
  updated_at: currentTime,
2458
+ branch_name: snippet.branch_name,
2459
+ commit_message: snippet.commit_message,
2460
+ commit_author: snippet.commit_author,
2460
2461
  has_transpiled: true,
2461
2462
  transpilation_error: null,
2462
2463
  ...snippet.name == "testuser/my-test-board" ? { is_pr_preview: true, github_pr_number: 69 } : {}
@@ -4970,10 +4971,7 @@ var publicMapPackageBuild = (internalPackageBuild, options = {
4970
4971
  build_error: internalPackageBuild.build_error,
4971
4972
  build_error_last_updated_at: internalPackageBuild.build_error_last_updated_at,
4972
4973
  preview_url: internalPackageBuild.preview_url,
4973
- build_logs: options.include_logs ? internalPackageBuild.build_logs : null,
4974
- branch_name: internalPackageBuild.branch_name,
4975
- commit_message: internalPackageBuild.commit_message,
4976
- commit_author: internalPackageBuild.commit_author
4974
+ build_logs: options.include_logs ? internalPackageBuild.build_logs : null
4977
4975
  };
4978
4976
  return result;
4979
4977
  };
@@ -5833,7 +5831,10 @@ var publicMapPackageRelease = (internal_package_release, options = {
5833
5831
  transpilation_logs: options.include_logs ? internal_package_release.transpilation_logs : [],
5834
5832
  circuit_json_build_logs: options.include_logs ? internal_package_release.circuit_json_build_logs : [],
5835
5833
  is_pr_preview: Boolean(internal_package_release.is_pr_preview),
5836
- github_pr_number: internal_package_release.github_pr_number
5834
+ github_pr_number: internal_package_release.github_pr_number,
5835
+ branch_name: internal_package_release.branch_name,
5836
+ commit_message: internal_package_release.commit_message ?? null,
5837
+ commit_author: internal_package_release.commit_author ?? null
5837
5838
  };
5838
5839
  if (options.include_ai_review && options.db) {
5839
5840
  const reviews = options.db.listAiReviews().filter(
@@ -8194,4 +8195,4 @@ var stdin_default = winterSpec;
8194
8195
  export {
8195
8196
  stdin_default as default
8196
8197
  };
8197
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9kYi1jbGllbnQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvYXV0b2xvYWQtZGV2LXBhY2thZ2VzLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zZWVkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX2ZpbGUvZ2VuZXJhdGUtZnMtc2hhLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtZGIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1jdHgtZXJyb3IudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1zZXNzaW9uLWF1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1vcHRpb25hbC1zZXNzaW9uLWF1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1lcnJvci1oYW5kbGluZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXJlcXVlc3QtbG9nZ2luZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL2FpX3Jldmlld3MvcHJvY2Vzc19yZXZpZXcudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9kYXRhc2hlZXRzL3Byb2Nlc3NfYWxsX2RhdGFzaGVldHMudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9kYi50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL21vdmVfb3JkZXJzX2ZvcndhcmQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvdXRpbHMvb3JkZXItc3RlcHMudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9yZWNlaXZlZF9xdW90ZXMudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9ydW5fYXN5bmNfdGFza3MudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9zZWVkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvZ2V0X2FjY291bnRfYmFsYW5jZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL3NlYXJjaC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL3VwZGF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FpX3Jldmlld3MvY3JlYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWlfcmV2aWV3cy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haV9yZXZpZXdzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haS9bLi4uYW55cm91dGVdLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWkudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haXN0cmVhbS9bLi4uYW55cm91dGVdLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYXV0b2NvbXBsZXRlL2NyZWF0ZV9hdXRvY29tcGxldGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9kYXRhc2hlZXRzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2RhdGFzaGVldHMvZ2V0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvZGF0YXNoZWV0cy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvZ2l0aHViL2luc3RhbGxhdGlvbnMvY3JlYXRlX25ld19pbnN0YWxsYXRpb25fcmVkaXJlY3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9naXRodWIvcmVwb3MvbGlzdF9hdmFpbGFibGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9naXRodWIvcmVwb3MvcmVmcmVzaC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2hlYWx0aC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy91cGxvYWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9xdW90ZXMvY3JlYXRlX2FsbF92ZW5kb3JfcXVvdGVzLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfcXVvdGVzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX3F1b3Rlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcnMvY3JlYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVycy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9idWlsZHMvZ2V0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2UtYnVpbGQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2J1aWxkcy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX3JlbGVhc2UvZmluZC1wYWNrYWdlLXJlbGVhc2UtaWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2NyZWF0ZV9vcl91cGRhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvZGVsZXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX2ZpbGUvZ2V0LXBhY2thZ2UtZmlsZS1pZC1mcm9tLWZpbGUtZGVzY3JpcHRvci50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9ub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2Rvd25sb2FkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS1yZWxlYXNlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX3JlbGVhc2VzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvcmVidWlsZC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvdXBkYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvYWRkX3N0YXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2RlbGV0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2ZvcmsudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9nZW5lcmF0ZV9mcm9tX2psY3BjYi50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2ltYWdlcy9bb3duZXJfZ2l0aHViX3VzZXJuYW1lXS9bdW5zY29wZWRfbmFtZV0vW3ZpZXdfZm9ybWF0XS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2xpc3RfbGF0ZXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvbGlzdF90cmVuZGluZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9yZW1vdmVfc3Rhci50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL3NlYXJjaC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL3VwZGF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3Byb3h5LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvYWRkX3N0YXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9kZWxldGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9kb3dubG9hZC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2dlbmVyYXRlX2Zyb21famxjcGNiLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2V0X2ltYWdlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2V0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvaW1hZ2VzL1thdXRob3JdL1tzbmlwcGV0X25hbWVdL1t0eXBlRm9ybWF0XS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2xpc3RfbGF0ZXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdF90cmVuZGluZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9yZW1vdmVfc3Rhci50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3NlYXJjaC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3VwZGF0ZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtnZXRSb3V0ZU1hdGNoZXJ9IGZyb20gXCJuZXh0LXJvdXRlLW1hdGNoZXJcIlxuaW1wb3J0IHsgbWFrZVJlcXVlc3RBZ2FpbnN0V2ludGVyU3BlYyB9IGZyb20gXCJ3aW50ZXJzcGVjXCJcblxuaW1wb3J0ICogYXMgcHNueWdnZXdjem9hdmp1YiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvX2Zha2UvYWlfcmV2aWV3cy9wcm9jZXNzX3Jldmlldy50c1wiXG5pbXBvcnQgKiBhcyBzbW51Ymp0d3FpZ2lpb2Z5IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9kYXRhc2hlZXRzL3Byb2Nlc3NfYWxsX2RhdGFzaGVldHMudHNcIlxuaW1wb3J0ICogYXMgem5kb3NmeXViZnZrYmVteCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvX2Zha2UvZGIudHNcIlxuaW1wb3J0ICogYXMgcHNoemR3b2JxemRkd25ocCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvX2Zha2UvbW92ZV9vcmRlcnNfZm9yd2FyZC50c1wiXG5pbXBvcnQgKiBhcyBtbHN0bnFudXh4bnloa2lvIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9yZWNlaXZlZF9xdW90ZXMudHNcIlxuaW1wb3J0ICogYXMgZWxxdm5sb3F4cGp0cHh1aiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvX2Zha2UvcnVuX2FzeW5jX3Rhc2tzLnRzXCJcbmltcG9ydCAqIGFzIHN6cGRzamVscW54cWdhbWUgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL3NlZWQudHNcIlxuaW1wb3J0ICogYXMgdWVheHFzeW5pY2R6cWVwZyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvZ2V0X2FjY291bnRfYmFsYW5jZS50c1wiXG5pbXBvcnQgKiBhcyBhb3VydWlkbnphcnp5dWZzIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9hY2NvdW50cy9nZXQudHNcIlxuaW1wb3J0ICogYXMgeGljeGVmdnFqcWp0d2ljZyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvc2VhcmNoLnRzXCJcbmltcG9ydCAqIGFzIHJhcm5xcHNmYm5oemNsdXcgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL3VwZGF0ZS50c1wiXG5pbXBvcnQgKiBhcyB1Z3FhZG92aGNteGdraXVsIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haV9yZXZpZXdzL2NyZWF0ZS50c1wiXG5pbXBvcnQgKiBhcyBvbXp1d3JlbGtwcGZmaWNnIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haV9yZXZpZXdzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBjaXlqeWd3eG5qb3Nya2tlIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haV9yZXZpZXdzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgendnb3B0cm93bHp3b2ZydCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWkudHNcIlxuaW1wb3J0ICogYXMga2pwbm9mb3pqZnJ0aWRqaCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWkvWy4uLmFueXJvdXRlXS50c1wiXG5pbXBvcnQgKiBhcyB6Y2tzb2J3Y29qdGxqY3JqIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haXN0cmVhbS9bLi4uYW55cm91dGVdLnRzXCJcbmltcG9ydCAqIGFzIG1mY2Z3dmhibWhnc3JudmogZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2F1dG9jb21wbGV0ZS9jcmVhdGVfYXV0b2NvbXBsZXRlLnRzXCJcbmltcG9ydCAqIGFzIHdmdGpienBzd2pvZG1rd3IgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2RhdGFzaGVldHMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIGZvbWtuemdmd2Jmb291ZGogZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2RhdGFzaGVldHMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIGp1eHVvaGJneHlveXRqaXIgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2RhdGFzaGVldHMvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyB1b3NrZ2p1bG53Y2h5bHJlIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9naXRodWIvaW5zdGFsbGF0aW9ucy9jcmVhdGVfbmV3X2luc3RhbGxhdGlvbl9yZWRpcmVjdC50c1wiXG5pbXBvcnQgKiBhcyB0dHVpa3VpY2N3dGN1Z21iIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9naXRodWIvcmVwb3MvbGlzdF9hdmFpbGFibGUudHNcIlxuaW1wb3J0ICogYXMgY3l6dHVoZWFmYmRyZWRndCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvZ2l0aHViL3JlcG9zL3JlZnJlc2gudHNcIlxuaW1wb3J0ICogYXMgYW5ic2txb292a3Z4YWZzaiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvaGVhbHRoLnRzXCJcbmltcG9ydCAqIGFzIHpsZmR0cXBkY21jbXJvenYgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGgudHNcIlxuaW1wb3J0ICogYXMgeHZqamtiZG5kaWh3YnlldCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfZmlsZXMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIGJ6ZWN0c21hd2d3bW9yancgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX2ZpbGVzL3VwbG9hZC50c1wiXG5pbXBvcnQgKiBhcyBjdHRsYmltdXpzeXB1d3p3IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9xdW90ZXMvY3JlYXRlX2FsbF92ZW5kb3JfcXVvdGVzLnRzXCJcbmltcG9ydCAqIGFzIHl6d2R2dWRidnltaXd2amYgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX3F1b3Rlcy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMganBva3J4Znlua3V2aWx3bSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfcXVvdGVzL2dldC50c1wiXG5pbXBvcnQgKiBhcyB4ZnFpaXRobWJieXV5YXliIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcnMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIGFza2trbGZpbHpsb3prdnggZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVycy9nZXQudHNcIlxuaW1wb3J0ICogYXMgdGhrbm10cGt3dXBkdXZmayBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgYXVyY2ZuaXRsd2J6amp1diBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9idWlsZHMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIGp2c2tqcnpyZ21taG1vYmggZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfYnVpbGRzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMga2xtcnVtbmRreWdodHZtZCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9jcmVhdGVfb3JfdXBkYXRlLnRzXCJcbmltcG9ydCAqIGFzIGxiaHhncHpjcmloeGRrdnMgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIHpudGFmdndvaWN2cW9tZG0gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvZGVsZXRlLnRzXCJcbmltcG9ydCAqIGFzIHNwZ3ZtcmFsc3FoeWJrancgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvZG93bmxvYWQudHNcIlxuaW1wb3J0ICogYXMgZWxrd2VtcXVseWtqam1jYyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9nZXQudHNcIlxuaW1wb3J0ICogYXMgY2VzamtpdmlnY2pkc3l1dCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIHpvemRscm9samVwY2RsdmQgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIGJtaHprcHdpdXN3d3F6cnUgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIHZzd25zc2thdmxpZG1mcmkgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyByYmp6aHdpbmxsc3hmdXZ6IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX3JlbGVhc2VzL3JlYnVpbGQudHNcIlxuaW1wb3J0ICogYXMgZ2JmYWR4Y2dqenZyaGFwZiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy91cGRhdGUudHNcIlxuaW1wb3J0ICogYXMgenJ4d2RpZGNka3VtYmRucSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvYWRkX3N0YXIudHNcIlxuaW1wb3J0ICogYXMgaWlndHJvY2diZm93YmJobCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIHdtb3l1ZnlubnhiYnhoYnIgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2RlbGV0ZS50c1wiXG5pbXBvcnQgKiBhcyBudW1ncWVkcnB0a2lvYmFtIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9mb3JrLnRzXCJcbmltcG9ydCAqIGFzIHR1empjdWtidGJ3a21rYm8gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2dlbmVyYXRlX2Zyb21famxjcGNiLnRzXCJcbmltcG9ydCAqIGFzIG1qc2Zkc3dtdHFoaGdudXggZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBqcGd1Y25jcnVybG1qZWRlIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9pbWFnZXMvW293bmVyX2dpdGh1Yl91c2VybmFtZV0vW3Vuc2NvcGVkX25hbWVdL1t2aWV3X2Zvcm1hdF0udHNcIlxuaW1wb3J0ICogYXMgb2N4cnZlc2xwcnpjd3diZSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvbGlzdF9sYXRlc3QudHNcIlxuaW1wb3J0ICogYXMgbmh5b2xndGt5a3Fld3RoaiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvbGlzdF90cmVuZGluZy50c1wiXG5pbXBvcnQgKiBhcyBvcHV5eXNhcXB6dnhhaXN3IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIGhncWVxZWJzcWV5aHprZ3UgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL3JlbW92ZV9zdGFyLnRzXCJcbmltcG9ydCAqIGFzIGR4cXVydWl5c2ZxdGprYmwgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL3NlYXJjaC50c1wiXG5pbXBvcnQgKiBhcyBlemtxcmp0eHJyeXRvZWJ0IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy91cGRhdGUudHNcIlxuaW1wb3J0ICogYXMgYmtlcnhzanljZGRnbmxicSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcHJveHkudHNcIlxuaW1wb3J0ICogYXMgbnJudmVkZ2xya3RmdGtnYyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvYWRkX3N0YXIudHNcIlxuaW1wb3J0ICogYXMgZHFldXBlZnp4Y3l4aGtzZSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIHFobnd1d2lzcGZ5bmlnYm0gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2RlbGV0ZS50c1wiXG5pbXBvcnQgKiBhcyB1c21qcnhraXZpd3l3aGl6IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9kb3dubG9hZC50c1wiXG5pbXBvcnQgKiBhcyBubHhmdmdtamxqcGtwem1qIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZW5lcmF0ZV9mcm9tX2psY3BjYi50c1wiXG5pbXBvcnQgKiBhcyBlY2V4c3R2dHhwa2R0dWZ3IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZXRfaW1hZ2UudHNcIlxuaW1wb3J0ICogYXMgY3N5em9tZnRmeGR2em95cCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIHhpaGlrd2FxZHlocmlhc28gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2ltYWdlcy9bYXV0aG9yXS9bc25pcHBldF9uYW1lXS9bdHlwZUZvcm1hdF0udHNcIlxuaW1wb3J0ICogYXMgb25pb3NobHNzZ2FuaWZ5cyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdF9sYXRlc3QudHNcIlxuaW1wb3J0ICogYXMgd2VncWlxeXdpaWNpYmt3aCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdF90cmVuZGluZy50c1wiXG5pbXBvcnQgKiBhcyBjdWNxY2RkZnBvZnJrZHhlIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIHd4a3F4Y2VqeXJ4cmNtZWsgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3JlbW92ZV9zdGFyLnRzXCJcbmltcG9ydCAqIGFzIGJ5amh0aHB2bG1rdG12dGUgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3NlYXJjaC50c1wiXG5pbXBvcnQgKiBhcyBxb2RyeW9sdm12bXhscHJvIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy91cGRhdGUudHNcIlxuXG5jb25zdCByb3V0ZU1hcFdpdGhIYW5kbGVycyA9IHtcbiAgXCIvYXBpL19mYWtlL2FpX3Jldmlld3MvcHJvY2Vzc19yZXZpZXdcIjogcHNueWdnZXdjem9hdmp1Yi5kZWZhdWx0LFwiL2FwaS9fZmFrZS9kYXRhc2hlZXRzL3Byb2Nlc3NfYWxsX2RhdGFzaGVldHNcIjogc21udWJqdHdxaWdpaW9meS5kZWZhdWx0LFwiL2FwaS9fZmFrZS9kYlwiOiB6bmRvc2Z5dWJmdmtiZW14LmRlZmF1bHQsXCIvYXBpL19mYWtlL21vdmVfb3JkZXJzX2ZvcndhcmRcIjogcHNoemR3b2JxemRkd25ocC5kZWZhdWx0LFwiL2FwaS9fZmFrZS9yZWNlaXZlZF9xdW90ZXNcIjogbWxzdG5xbnV4eG55aGtpby5kZWZhdWx0LFwiL2FwaS9fZmFrZS9ydW5fYXN5bmNfdGFza3NcIjogZWxxdm5sb3F4cGp0cHh1ai5kZWZhdWx0LFwiL2FwaS9fZmFrZS9zZWVkXCI6IHN6cGRzamVscW54cWdhbWUuZGVmYXVsdCxcIi9hcGkvYWNjb3VudHMvZ2V0X2FjY291bnRfYmFsYW5jZVwiOiB1ZWF4cXN5bmljZHpxZXBnLmRlZmF1bHQsXCIvYXBpL2FjY291bnRzL2dldFwiOiBhb3VydWlkbnphcnp5dWZzLmRlZmF1bHQsXCIvYXBpL2FjY291bnRzL3NlYXJjaFwiOiB4aWN4ZWZ2cWpxanR3aWNnLmRlZmF1bHQsXCIvYXBpL2FjY291bnRzL3VwZGF0ZVwiOiByYXJucXBzZmJuaHpjbHV3LmRlZmF1bHQsXCIvYXBpL2FpX3Jldmlld3MvY3JlYXRlXCI6IHVncWFkb3ZoY214Z2tpdWwuZGVmYXVsdCxcIi9hcGkvYWlfcmV2aWV3cy9nZXRcIjogb216dXdyZWxrcHBmZmljZy5kZWZhdWx0LFwiL2FwaS9haV9yZXZpZXdzL2xpc3RcIjogY2l5anlnd3huam9zcmtrZS5kZWZhdWx0LFwiL2FwaS9haVwiOiB6d2dvcHRyb3dsendvZnJ0LmRlZmF1bHQsXCIvYXBpL2FpL1suLi5hbnlyb3V0ZV1cIjoga2pwbm9mb3pqZnJ0aWRqaC5kZWZhdWx0LFwiL2FwaS9haXN0cmVhbS9bLi4uYW55cm91dGVdXCI6IHpja3NvYndjb2p0bGpjcmouZGVmYXVsdCxcIi9hcGkvYXV0b2NvbXBsZXRlL2NyZWF0ZV9hdXRvY29tcGxldGVcIjogbWZjZnd2aGJtaGdzcm52ai5kZWZhdWx0LFwiL2FwaS9kYXRhc2hlZXRzL2NyZWF0ZVwiOiB3ZnRqYnpwc3dqb2Rta3dyLmRlZmF1bHQsXCIvYXBpL2RhdGFzaGVldHMvZ2V0XCI6IGZvbWtuemdmd2Jmb291ZGouZGVmYXVsdCxcIi9hcGkvZGF0YXNoZWV0cy9saXN0XCI6IGp1eHVvaGJneHlveXRqaXIuZGVmYXVsdCxcIi9hcGkvZ2l0aHViL2luc3RhbGxhdGlvbnMvY3JlYXRlX25ld19pbnN0YWxsYXRpb25fcmVkaXJlY3RcIjogdW9za2dqdWxud2NoeWxyZS5kZWZhdWx0LFwiL2FwaS9naXRodWIvcmVwb3MvbGlzdF9hdmFpbGFibGVcIjogdHR1aWt1aWNjd3RjdWdtYi5kZWZhdWx0LFwiL2FwaS9naXRodWIvcmVwb3MvcmVmcmVzaFwiOiBjeXp0dWhlYWZiZHJlZGd0LmRlZmF1bHQsXCIvYXBpL2hlYWx0aFwiOiBhbmJza3Fvb3ZrdnhhZnNqLmRlZmF1bHQsXCIvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGhcIjogemxmZHRxcGRjbWNtcm96di5kZWZhdWx0LFwiL2FwaS9vcmRlcl9maWxlcy9nZXRcIjogeHZqamtiZG5kaWh3YnlldC5kZWZhdWx0LFwiL2FwaS9vcmRlcl9maWxlcy91cGxvYWRcIjogYnplY3RzbWF3Z3dtb3Jqdy5kZWZhdWx0LFwiL2FwaS9vcmRlcl9xdW90ZXMvY3JlYXRlX2FsbF92ZW5kb3JfcXVvdGVzXCI6IGN0dGxiaW11enN5cHV3encuZGVmYXVsdCxcIi9hcGkvb3JkZXJfcXVvdGVzL2NyZWF0ZVwiOiB5endkdnVkYnZ5bWl3dmpmLmRlZmF1bHQsXCIvYXBpL29yZGVyX3F1b3Rlcy9nZXRcIjoganBva3J4Znlua3V2aWx3bS5kZWZhdWx0LFwiL2FwaS9vcmRlcnMvY3JlYXRlXCI6IHhmcWlpdGhtYmJ5dXlheWIuZGVmYXVsdCxcIi9hcGkvb3JkZXJzL2dldFwiOiBhc2tra2xmaWx6bG96a3Z4LmRlZmF1bHQsXCIvYXBpL29yZGVycy9saXN0XCI6IHRoa25tdHBrd3VwZHV2ZmsuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9idWlsZHMvZ2V0XCI6IGF1cmNmbml0bHdiempqdXYuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9idWlsZHMvbGlzdFwiOiBqdnNranJ6cmdtbWhtb2JoLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfZmlsZXMvY3JlYXRlX29yX3VwZGF0ZVwiOiBrbG1ydW1uZGt5Z2h0dm1kLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfZmlsZXMvY3JlYXRlXCI6IGxiaHhncHpjcmloeGRrdnMuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9maWxlcy9kZWxldGVcIjogem50YWZ2d29pY3Zxb21kbS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX2ZpbGVzL2Rvd25sb2FkXCI6IHNwZ3ZtcmFsc3FoeWJrancuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9maWxlcy9nZXRcIjogZWxrd2VtcXVseWtqam1jYy5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3RcIjogY2VzamtpdmlnY2pkc3l1dC5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX3JlbGVhc2VzL2NyZWF0ZVwiOiB6b3pkbHJvbGplcGNkbHZkLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfcmVsZWFzZXMvZ2V0XCI6IGJtaHprcHdpdXN3d3F6cnUuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy9saXN0XCI6IHZzd25zc2thdmxpZG1mcmkuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy9yZWJ1aWxkXCI6IHJianpod2lubGxzeGZ1dnouZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy91cGRhdGVcIjogZ2JmYWR4Y2dqenZyaGFwZi5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9hZGRfc3RhclwiOiB6cnh3ZGlkY2RrdW1iZG5xLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2NyZWF0ZVwiOiBpaWd0cm9jZ2Jmb3diYmhsLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2RlbGV0ZVwiOiB3bW95dWZ5bm54YmJ4aGJyLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2ZvcmtcIjogbnVtZ3FlZHJwdGtpb2JhbS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9nZW5lcmF0ZV9mcm9tX2psY3BjYlwiOiB0dXpqY3VrYnRid2tta2JvLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2dldFwiOiBtanNmZHN3bXRxaGhnbnV4LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2ltYWdlcy9bb3duZXJfZ2l0aHViX3VzZXJuYW1lXS9bdW5zY29wZWRfbmFtZV0vW3ZpZXdfZm9ybWF0XVwiOiBqcGd1Y25jcnVybG1qZWRlLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2xpc3RfbGF0ZXN0XCI6IG9jeHJ2ZXNscHJ6Y3d3YmUuZGVmYXVsdCxcIi9hcGkvcGFja2FnZXMvbGlzdF90cmVuZGluZ1wiOiBuaHlvbGd0a3lrcWV3dGhqLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2xpc3RcIjogb3B1eXlzYXFwenZ4YWlzdy5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9yZW1vdmVfc3RhclwiOiBoZ3FlcWVic3FleWh6a2d1LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL3NlYXJjaFwiOiBkeHF1cnVpeXNmcXRqa2JsLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL3VwZGF0ZVwiOiBlemtxcmp0eHJyeXRvZWJ0LmRlZmF1bHQsXCIvYXBpL3Byb3h5XCI6IGJrZXJ4c2p5Y2RkZ25sYnEuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvYWRkX3N0YXJcIjogbnJudmVkZ2xya3RmdGtnYy5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9jcmVhdGVcIjogZHFldXBlZnp4Y3l4aGtzZS5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9kZWxldGVcIjogcWhud3V3aXNwZnluaWdibS5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9kb3dubG9hZFwiOiB1c21qcnhraXZpd3l3aGl6LmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2dlbmVyYXRlX2Zyb21famxjcGNiXCI6IG5seGZ2Z21qbGpwa3B6bWouZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvZ2V0X2ltYWdlXCI6IGVjZXhzdHZ0eHBrZHR1ZncuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvZ2V0XCI6IGNzeXpvbWZ0ZnhkdnpveXAuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvaW1hZ2VzL1thdXRob3JdL1tzbmlwcGV0X25hbWVdL1t0eXBlRm9ybWF0XVwiOiB4aWhpa3dhcWR5aHJpYXNvLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2xpc3RfbGF0ZXN0XCI6IG9uaW9zaGxzc2dhbmlmeXMuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvbGlzdF90cmVuZGluZ1wiOiB3ZWdxaXF5d2lpY2lia3doLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2xpc3RcIjogY3VjcWNkZGZwb2Zya2R4ZS5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9yZW1vdmVfc3RhclwiOiB3eGtxeGNlanlyeHJjbWVrLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL3NlYXJjaFwiOiBieWpodGhwdmxta3RtdnRlLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL3VwZGF0ZVwiOiBxb2RyeW9sdm12bXhscHJvLmRlZmF1bHRcbn1cblxuY29uc3Qgd2ludGVyU3BlYyA9IHtcbiAgcm91dGVNYXRjaGVyOiBnZXRSb3V0ZU1hdGNoZXIoT2JqZWN0LmtleXMocm91dGVNYXBXaXRoSGFuZGxlcnMpKSxcbiAgcm91dGVNYXBXaXRoSGFuZGxlcnMsXG4gIG1ha2VSZXF1ZXN0OiBhc3luYyAocmVxLCBvcHRpb25zKSA9PiBtYWtlUmVxdWVzdEFnYWluc3RXaW50ZXJTcGVjKHdpbnRlclNwZWMsIG9wdGlvbnMpKHJlcSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgd2ludGVyU3BlYyIsICJpbXBvcnQgeyBjcmVhdGVXaXRoV2ludGVyU3BlYyB9IGZyb20gXCJ3aW50ZXJzcGVjXCJcbmltcG9ydCB7IHdpdGhEYiB9IGZyb20gXCIuL3dpdGgtZGJcIlxuaW1wb3J0IHsgY3JlYXRlV2l0aERlZmF1bHRFeGNlcHRpb25IYW5kbGluZyB9IGZyb20gXCJ3aW50ZXJzcGVjL21pZGRsZXdhcmVcIlxuaW1wb3J0IHsgd2l0aEN0eEVycm9yIH0gZnJvbSBcIi4vd2l0aC1jdHgtZXJyb3JcIlxuaW1wb3J0IHsgd2l0aFNlc3Npb25BdXRoIH0gZnJvbSBcIi4vd2l0aC1zZXNzaW9uLWF1dGhcIlxuaW1wb3J0IHsgd2l0aE9wdGlvbmFsU2Vzc2lvbkF1dGggfSBmcm9tIFwiLi93aXRoLW9wdGlvbmFsLXNlc3Npb24tYXV0aFwiXG5pbXBvcnQgeyB3aXRoRXJyb3JIYW5kbGluZyB9IGZyb20gXCIuL3dpdGgtZXJyb3ItaGFuZGxpbmdcIlxuaW1wb3J0IHsgd2l0aFJlcXVlc3RMb2dnaW5nIH0gZnJvbSBcIi4vd2l0aC1yZXF1ZXN0LWxvZ2dpbmdcIlxuXG5leHBvcnQgY29uc3Qgd2l0aFJvdXRlU3BlYyA9IGNyZWF0ZVdpdGhXaW50ZXJTcGVjKHtcbiAgYXBpTmFtZTogXCJ0c2NpcmN1aXQgU25pcHBldHMgQVBJXCIsXG4gIHByb2R1Y3Rpb25TZXJ2ZXJVcmw6IFwiaHR0cHM6Ly9zbmlwcGV0cy50c2NpcmN1aXQuY29tL2FwaVwiLFxuICBiZWZvcmVBdXRoTWlkZGxld2FyZTogW3dpdGhSZXF1ZXN0TG9nZ2luZywgd2l0aEVycm9ySGFuZGxpbmcsIHdpdGhDdHhFcnJvcl0sXG4gIGF1dGhNaWRkbGV3YXJlOiB7XG4gICAgc2Vzc2lvbjogd2l0aFNlc3Npb25BdXRoLFxuICAgIG9wdGlvbmFsX3Nlc3Npb246IHdpdGhPcHRpb25hbFNlc3Npb25BdXRoLFxuICB9LFxuICBhZnRlckF1dGhNaWRkbGV3YXJlOiBbXG4gICAgd2l0aERiLFxuICAgIGNyZWF0ZVdpdGhEZWZhdWx0RXhjZXB0aW9uSGFuZGxpbmcoe1xuICAgICAgaW5jbHVkZVN0YWNrVHJhY2VJblJlc3BvbnNlOiB0cnVlLFxuICAgIH0pLFxuICBdLFxufSlcbiIsICJpbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IGhvaXN0IH0gZnJvbSBcInp1c3RhbmQtaG9pc3RcIlxuaW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBmcm9tIFwienVzdGFuZC92YW5pbGxhXCJcblxuaW1wb3J0IHsgY29tYmluZSB9IGZyb20gXCJ6dXN0YW5kL21pZGRsZXdhcmVcIlxuaW1wb3J0IHtcbiAgdHlwZSBBY2NvdW50LFxuICB0eXBlIEFjY291bnRQYWNrYWdlLFxuICB0eXBlIEpsY3BjYk9yZGVyU3RhdGUsXG4gIHR5cGUgSmxjcGNiT3JkZXJTdGVwUnVuLFxuICB0eXBlIExvZ2luUGFnZSxcbiAgdHlwZSBPcmRlcixcbiAgdHlwZSBPcmRlckZpbGUsXG4gIE9yZGVyUXVvdGUsXG4gIHR5cGUgUGFja2FnZSxcbiAgdHlwZSBQYWNrYWdlRmlsZSxcbiAgdHlwZSBQYWNrYWdlUmVsZWFzZSxcbiAgcGFja2FnZVJlbGVhc2VTY2hlbWEsXG4gIHR5cGUgUGFja2FnZUJ1aWxkLFxuICB0eXBlIEFpUmV2aWV3LFxuICBhaVJldmlld1NjaGVtYSxcbiAgdHlwZSBEYXRhc2hlZXQsXG4gIGRhdGFzaGVldFNjaGVtYSxcbiAgdHlwZSBTZXNzaW9uLFxuICB0eXBlIFNuaXBwZXQsXG4gIGRhdGFiYXNlU2NoZW1hLFxuICB0eXBlIHBhY2thZ2VTY2hlbWEsXG4gIHR5cGUgc25pcHBldFNjaGVtYSxcbn0gZnJvbSBcIi4vc2NoZW1hLnRzXCJcbmltcG9ydCB7IHNlZWQgYXMgc2VlZEZuIH0gZnJvbSBcIi4vc2VlZFwiXG5pbXBvcnQgeyBnZW5lcmF0ZUZzU2hhIH0gZnJvbSBcIi4uL3BhY2thZ2VfZmlsZS9nZW5lcmF0ZS1mcy1zaGFcIlxuXG5leHBvcnQgY29uc3QgY3JlYXRlRGF0YWJhc2UgPSAoeyBzZWVkIH06IHsgc2VlZD86IGJvb2xlYW4gfSA9IHt9KSA9PiB7XG4gIGNvbnN0IGRiID0gaG9pc3QoY3JlYXRlU3RvcmUoaW5pdGlhbGl6ZXIpKVxuICBpZiAoc2VlZCkge1xuICAgIHNlZWRGbihkYilcbiAgfVxuICByZXR1cm4gZGJcbn1cblxuZXhwb3J0IHR5cGUgRGJDbGllbnQgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVEYXRhYmFzZT5cblxuY29uc3QgaW5pdGlhbGl6ZXIgPSBjb21iaW5lKGRhdGFiYXNlU2NoZW1hLnBhcnNlKHt9KSwgKHNldCwgZ2V0KSA9PiAoe1xuICBhZGRPcmRlcjogKG9yZGVyOiBPbWl0PE9yZGVyLCBcIm9yZGVyX2lkXCI+KTogT3JkZXIgPT4ge1xuICAgIGNvbnN0IG5ld09yZGVyID0geyBvcmRlcl9pZDogYG9yZGVyXyR7Z2V0KCkuaWRDb3VudGVyICsgMX1gLCAuLi5vcmRlciB9XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3JkZXJzOiBbLi4uc3RhdGUub3JkZXJzLCBuZXdPcmRlcl0sXG4gICAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBuZXdPcmRlclxuICB9LFxuICBnZXRPcmRlckJ5SWQ6IChvcmRlcklkOiBzdHJpbmcpOiBPcmRlciB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmRlcnMuZmluZCgob3JkZXIpID0+IG9yZGVyLm9yZGVyX2lkID09PSBvcmRlcklkKVxuICB9LFxuICBnZXRPcmRlckZpbGVzQnlPcmRlcklkOiAob3JkZXJJZDogc3RyaW5nKTogT3JkZXJGaWxlW10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUub3JkZXJGaWxlcy5maWx0ZXIoKGZpbGUpID0+IGZpbGUub3JkZXJfaWQgPT09IG9yZGVySWQpXG4gIH0sXG4gIGFkZE9yZGVyUXVvdGU6ICh7XG4gICAgYWNjb3VudF9pZCxcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgdmVuZG9yX25hbWUsXG4gIH06IHtcbiAgICBhY2NvdW50X2lkOiBzdHJpbmdcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ/OiBzdHJpbmdcbiAgICB2ZW5kb3JfbmFtZTogc3RyaW5nXG4gIH0pOiBzdHJpbmcgPT4ge1xuICAgIC8vIERldGFpbHMgZm9yIHRoZSBvcmRlciBxdW90ZSB3aWxsIGJlIHVwZGF0ZWQgYnkgdGhlIGpvYiB3aXRoIHRoZSBjb3N0XG4gICAgY29uc3QgbmV3T3JkZXJRdW90ZSA9IHtcbiAgICAgIG9yZGVyX3F1b3RlX2lkOiBgb3JkZXJfcXVvdGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICBhY2NvdW50X2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlX3JlbGVhc2VfaWQgPz8gbnVsbCxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIGNvbXBsZXRlZF9hdDogbnVsbCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgaGFzX2Vycm9yOiBmYWxzZSxcbiAgICAgIGlzX2NvbXBsZXRlZDogZmFsc2UsXG4gICAgICBpc19wcm9jZXNzaW5nOiB0cnVlLFxuICAgICAgdmVuZG9yX25hbWUsXG4gICAgICBxdW90ZWRfY29tcG9uZW50czogW10sXG4gICAgICBiYXJlX3BjYl9jb3N0OiAwLFxuICAgICAgc2hpcHBpbmdfb3B0aW9uczogW10sXG4gICAgICB0b3RhbF9jb3N0X3dpdGhvdXRfc2hpcHBpbmc6IDAsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yZGVyUXVvdGVzOiBbLi4uc3RhdGUub3JkZXJRdW90ZXMsIG5ld09yZGVyUXVvdGVdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbmV3T3JkZXJRdW90ZS5vcmRlcl9xdW90ZV9pZFxuICB9LFxuICBnZXRPcmRlclF1b3RlQnlJZDogKG9yZGVyUXVvdGVJZDogc3RyaW5nKTogT3JkZXJRdW90ZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmRlclF1b3Rlcy5maW5kKFxuICAgICAgKHF1b3RlKSA9PiBxdW90ZS5vcmRlcl9xdW90ZV9pZCA9PT0gb3JkZXJRdW90ZUlkLFxuICAgIClcbiAgfSxcbiAgZ2V0SmxjcGNiT3JkZXJTdGF0ZXNCeU9yZGVySWQ6IChcbiAgICBvcmRlcklkOiBzdHJpbmcsXG4gICk6IEpsY3BjYk9yZGVyU3RhdGUgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuamxjcGNiT3JkZXJTdGF0ZS5maW5kKChzdGF0ZSkgPT4gc3RhdGUub3JkZXJfaWQgPT09IG9yZGVySWQpXG4gIH0sXG4gIGdldEpsY3BjYk9yZGVyU3RlcFJ1bnNCeUpsY3BjYk9yZGVyU3RhdGVJZDogKFxuICAgIGpsY3BjYk9yZGVyU3RhdGVJZDogc3RyaW5nLFxuICApOiBKbGNwY2JPcmRlclN0ZXBSdW5bXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5qbGNwY2JPcmRlclN0ZXBSdW5zXG4gICAgICAuZmlsdGVyKChzdGVwUnVuKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZGVyU3RhdGUgPSBzdGF0ZS5qbGNwY2JPcmRlclN0YXRlLmZpbmQoXG4gICAgICAgICAgKHN0YXRlKSA9PlxuICAgICAgICAgICAgc3RhdGUuamxjcGNiX29yZGVyX3N0YXRlX2lkID09PSBzdGVwUnVuLmpsY3BjYl9vcmRlcl9zdGF0ZV9pZCxcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gb3JkZXJTdGF0ZT8ub3JkZXJfaWQgPT09IGpsY3BjYk9yZGVyU3RhdGVJZFxuICAgICAgfSlcbiAgICAgIC5zb3J0KFxuICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpLFxuICAgICAgKVxuICB9LFxuICB1cGRhdGVPcmRlcjogKG9yZGVySWQ6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxPcmRlcj4pID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgb3JkZXJzOiBzdGF0ZS5vcmRlcnMubWFwKChvcmRlcikgPT5cbiAgICAgICAgb3JkZXIub3JkZXJfaWQgPT09IG9yZGVySWQgPyB7IC4uLm9yZGVyLCAuLi51cGRhdGVzIH0gOiBvcmRlcixcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGFkZEpsY3BjYk9yZGVyU3RhdGU6IChcbiAgICBvcmRlclN0YXRlOiBPbWl0PEpsY3BjYk9yZGVyU3RhdGUsIFwiamxjcGNiX29yZGVyX3N0YXRlX2lkXCI+LFxuICApOiBKbGNwY2JPcmRlclN0YXRlID0+IHtcbiAgICBjb25zdCBuZXdPcmRlclN0YXRlID0ge1xuICAgICAgamxjcGNiX29yZGVyX3N0YXRlX2lkOiBgb3JkZXJfc3RhdGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5vcmRlclN0YXRlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBqbGNwY2JPcmRlclN0YXRlOiBbLi4uc3RhdGUuamxjcGNiT3JkZXJTdGF0ZSwgbmV3T3JkZXJTdGF0ZV0sXG4gICAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBuZXdPcmRlclN0YXRlXG4gIH0sXG4gIHVwZGF0ZUpsY3BjYk9yZGVyU3RhdGU6IChcbiAgICBvcmRlcklkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxKbGNwY2JPcmRlclN0YXRlPixcbiAgKSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGpsY3BjYk9yZGVyU3RhdGU6IHN0YXRlLmpsY3BjYk9yZGVyU3RhdGUubWFwKChvcmRlclN0YXRlKSA9PlxuICAgICAgICBvcmRlclN0YXRlLm9yZGVyX2lkID09PSBvcmRlcklkXG4gICAgICAgICAgPyB7IC4uLm9yZGVyU3RhdGUsIC4uLnVwZGF0ZXMgfVxuICAgICAgICAgIDogb3JkZXJTdGF0ZSxcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGFkZE9yZGVyRmlsZTogKG9yZGVyRmlsZTogT21pdDxPcmRlckZpbGUsIFwib3JkZXJfZmlsZV9pZFwiPik6IE9yZGVyRmlsZSA9PiB7XG4gICAgY29uc3QgbmV3T3JkZXJGaWxlID0ge1xuICAgICAgb3JkZXJfZmlsZV9pZDogYG9yZGVyX2ZpbGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5vcmRlckZpbGUsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yZGVyRmlsZXM6IFsuLi5zdGF0ZS5vcmRlckZpbGVzLCBuZXdPcmRlckZpbGVdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbmV3T3JkZXJGaWxlXG4gIH0sXG4gIGdldE9yZGVyRmlsZUJ5SWQ6IChvcmRlckZpbGVJZDogc3RyaW5nKTogT3JkZXJGaWxlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLm9yZGVyRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5vcmRlcl9maWxlX2lkID09PSBvcmRlckZpbGVJZClcbiAgfSxcbiAgYWRkQWNjb3VudDogKFxuICAgIGFjY291bnQ6IE9taXQ8QWNjb3VudCwgXCJhY2NvdW50X2lkXCI+ICYgUGFydGlhbDxQaWNrPEFjY291bnQsIFwiYWNjb3VudF9pZFwiPj4sXG4gICkgPT4ge1xuICAgIGNvbnN0IG5ld0FjY291bnQgPSB7XG4gICAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQgfHwgYGFjY291bnRfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5hY2NvdW50LFxuICAgIH1cblxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjY291bnRzOiBbLi4uc3RhdGUuYWNjb3VudHMsIG5ld0FjY291bnRdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBuZXdBY2NvdW50XG4gIH0sXG4gIGFkZEFjY291bnRQYWNrYWdlOiAoXG4gICAgYWNjb3VudFBhY2thZ2U6IE9taXQ8QWNjb3VudFBhY2thZ2UsIFwiYWNjb3VudF9wYWNrYWdlX2lkXCI+LFxuICApOiBBY2NvdW50UGFja2FnZSA9PiB7XG4gICAgY29uc3QgbmV3QWNjb3VudFBhY2thZ2UgPSB7XG4gICAgICBhY2NvdW50X3BhY2thZ2VfaWQ6IGBhcF8ke2dldCgpLmlkQ291bnRlciArIDF9YCxcbiAgICAgIC4uLmFjY291bnRQYWNrYWdlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50UGFja2FnZXM6IFsuLi5zdGF0ZS5hY2NvdW50UGFja2FnZXMsIG5ld0FjY291bnRQYWNrYWdlXSxcbiAgICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIG5ld0FjY291bnRQYWNrYWdlXG4gIH0sXG4gIGdldEFjY291bnRQYWNrYWdlQnlJZDogKFxuICAgIGFjY291bnRQYWNrYWdlSWQ6IHN0cmluZyxcbiAgKTogQWNjb3VudFBhY2thZ2UgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWNjb3VudFBhY2thZ2VzLmZpbmQoXG4gICAgICAoYXApID0+IGFwLmFjY291bnRfcGFja2FnZV9pZCA9PT0gYWNjb3VudFBhY2thZ2VJZCxcbiAgICApXG4gIH0sXG4gIHVwZGF0ZUFjY291bnRQYWNrYWdlOiAoXG4gICAgYWNjb3VudFBhY2thZ2VJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8QWNjb3VudFBhY2thZ2U+LFxuICApOiB2b2lkID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgYWNjb3VudFBhY2thZ2VzOiBzdGF0ZS5hY2NvdW50UGFja2FnZXMubWFwKChhcCkgPT5cbiAgICAgICAgYXAuYWNjb3VudF9wYWNrYWdlX2lkID09PSBhY2NvdW50UGFja2FnZUlkID8geyAuLi5hcCwgLi4udXBkYXRlcyB9IDogYXAsXG4gICAgICApLFxuICAgIH0pKVxuICB9LFxuICBkZWxldGVBY2NvdW50UGFja2FnZTogKGFjY291bnRQYWNrYWdlSWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGxldCBkZWxldGVkID0gZmFsc2VcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgICAgIChhcCkgPT4gYXAuYWNjb3VudF9wYWNrYWdlX2lkID09PSBhY2NvdW50UGFja2FnZUlkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc3BsaWNlKGluZGV4LCAxKVxuICAgICAgICBkZWxldGVkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0YXRlXG4gICAgfSlcbiAgICByZXR1cm4gZGVsZXRlZFxuICB9LFxuICBhZGRTbmlwcGV0OiAoXG4gICAgc25pcHBldDogT21pdDxcbiAgICAgIHouaW5wdXQ8dHlwZW9mIHNuaXBwZXRTY2hlbWE+LFxuICAgICAgXCJzbmlwcGV0X2lkXCIgfCBcInBhY2thZ2VfcmVsZWFzZV9pZFwiXG4gICAgPiAmIHsgY3JlYXRvcl9hY2NvdW50X2lkPzogc3RyaW5nOyBnaXRodWJfcmVwb19mdWxsX25hbWU/OiBzdHJpbmcgfSxcbiAgKTogU25pcHBldCA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKVxuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpXG5cbiAgICBjb25zdCBuZXdTdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgbmV4dElkID0gbmV3U3RhdGUuaWRDb3VudGVyICsgMVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBwYWNrYWdlIHRoYXQgd2lsbCBzZXJ2ZSBhcyBvdXIgc25pcHBldFxuICAgIGNvbnN0IG5ld1BhY2thZ2UgPSB7XG4gICAgICBwYWNrYWdlX2lkOiBgcGtnXyR7bmV4dElkfWAsXG4gICAgICBjcmVhdG9yX2FjY291bnRfaWQ6IHNuaXBwZXQuY3JlYXRvcl9hY2NvdW50X2lkID8/IHNuaXBwZXQub3duZXJfbmFtZSwgLy8gVXNpbmcgb3duZXJfbmFtZSBhcyBhY2NvdW50X2lkIHNpbmNlIHdlIGRvbid0IGhhdmUgY29udGV4dFxuICAgICAgb3duZXJfb3JnX2lkOiBcIlwiLCAvLyBFbXB0eSBzdHJpbmcgaW5zdGVhZCBvZiBudWxsIHRvIG1hdGNoIHR5cGVcbiAgICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogc25pcHBldC5vd25lcl9uYW1lLFxuICAgICAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBzbmlwcGV0LmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBuYW1lOiBgJHtzbmlwcGV0Lm93bmVyX25hbWV9LyR7c25pcHBldC51bnNjb3BlZF9uYW1lfWAsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBzbmlwcGV0LnVuc2NvcGVkX25hbWUsXG4gICAgICBsYXRlc3RfdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgbGljZW5zZTogbnVsbCxcbiAgICAgIHdlYnNpdGU6IG51bGwsXG4gICAgICBzdGFyX2NvdW50OiAwLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZTogc25pcHBldC5naXRodWJfcmVwb19mdWxsX25hbWUgfHwgbnVsbCxcbiAgICAgIGFpX2Rlc2NyaXB0aW9uOiBcInBsYWNlaG9sZGVyIGFpIGRlc2NyaXB0aW9uXCIsXG4gICAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IFwicGxhY2Vob2xkZXIgYWkgdXNhZ2UgaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICBpc19zbmlwcGV0OiB0cnVlLFxuICAgICAgaXNfYm9hcmQ6IHNuaXBwZXQuc25pcHBldF90eXBlID09PSBcImJvYXJkXCIsXG4gICAgICBpc19wYWNrYWdlOiBzbmlwcGV0LnNuaXBwZXRfdHlwZSA9PT0gXCJwYWNrYWdlXCIsXG4gICAgICBpc19tb2RlbDogc25pcHBldC5zbmlwcGV0X3R5cGUgPT09IFwibW9kZWxcIixcbiAgICAgIGlzX2Zvb3RwcmludDogc25pcHBldC5zbmlwcGV0X3R5cGUgPT09IFwiZm9vdHByaW50XCIsXG4gICAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXQuc25pcHBldF90eXBlLFxuICAgICAgaXNfcHJpdmF0ZTogZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogZmFsc2UsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBgcGFja2FnZV9yZWxlYXNlXyR7bmV4dElkfWAsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2ZzX3NoYTogbnVsbCxcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgcGFja2FnZSByZWxlYXNlXG4gICAgY29uc3QgbmV3UGFja2FnZVJlbGVhc2UgPSBwYWNrYWdlUmVsZWFzZVNjaGVtYS5wYXJzZSh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IGBwYWNrYWdlX3JlbGVhc2VfJHtuZXh0SWR9YCxcbiAgICAgIHBhY2thZ2VfaWQ6IG5ld1BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIGlzX2xhdGVzdDogdHJ1ZSxcbiAgICAgIGlzX2xvY2tlZDogZmFsc2UsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHVwZGF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgaGFzX3RyYW5zcGlsZWQ6IHRydWUsXG4gICAgICB0cmFuc3BpbGF0aW9uX2Vycm9yOiBudWxsLFxuICAgICAgLi4uKHNuaXBwZXQubmFtZSA9PSBcInRlc3R1c2VyL215LXRlc3QtYm9hcmRcIlxuICAgICAgICA/IHsgaXNfcHJfcHJldmlldzogdHJ1ZSwgZ2l0aHViX3ByX251bWJlcjogNjkgfVxuICAgICAgICA6IHt9KSxcbiAgICB9KVxuXG4gICAgLy8gQWRkIGFsbCB0aGUgZmlsZXNcbiAgICBjb25zdCBwYWNrYWdlRmlsZXM6IFBhY2thZ2VGaWxlW10gPSBbXVxuICAgIGxldCBmaWxlSWRDb3VudGVyID0gbmV4dElkXG5cbiAgICAvLyBBZGQgbWFpbiBjb2RlIGZpbGVcbiAgICBwYWNrYWdlRmlsZXMucHVzaCh7XG4gICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtmaWxlSWRDb3VudGVyKyt9YCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgZmlsZV9wYXRoOiBcImluZGV4LnRzeFwiLFxuICAgICAgY29udGVudF90ZXh0OiBzbmlwcGV0LmNvZGUgfHwgXCJcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgIH0pXG5cbiAgICAvLyBBZGQgRFRTIGZpbGUgaWYgcHJvdmlkZWRcbiAgICBpZiAoc25pcHBldC5kdHMpIHtcbiAgICAgIHBhY2thZ2VGaWxlcy5wdXNoKHtcbiAgICAgICAgcGFja2FnZV9maWxlX2lkOiBgcGFja2FnZV9maWxlXyR7ZmlsZUlkQ291bnRlcisrfWAsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICBjb250ZW50X3RleHQ6IHNuaXBwZXQuZHRzLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQWRkIGNvbXBpbGVkIEpTIGlmIHByb3ZpZGVkXG4gICAgaWYgKHNuaXBwZXQuY29tcGlsZWRfanMpIHtcbiAgICAgIHBhY2thZ2VGaWxlcy5wdXNoKHtcbiAgICAgICAgcGFja2FnZV9maWxlX2lkOiBgcGFja2FnZV9maWxlXyR7ZmlsZUlkQ291bnRlcisrfWAsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvaW5kZXguanNcIixcbiAgICAgICAgY29udGVudF90ZXh0OiBzbmlwcGV0LmNvbXBpbGVkX2pzLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQWRkIGNpcmN1aXQgSlNPTiBpZiBwcm92aWRlZFxuICAgIGlmIChzbmlwcGV0LmNpcmN1aXRfanNvbiAmJiBzbmlwcGV0LmNpcmN1aXRfanNvbi5sZW5ndGggPiAwKSB7XG4gICAgICBwYWNrYWdlRmlsZXMucHVzaCh7XG4gICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke2ZpbGVJZENvdW50ZXIrK31gLFxuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2NpcmN1aXQuanNvblwiLFxuICAgICAgICBjb250ZW50X3RleHQ6IEpTT04uc3RyaW5naWZ5KHNuaXBwZXQuY2lyY3VpdF9qc29uKSxcbiAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgZGF0YWJhc2Ugc3RhdGUgYXRvbWljYWxseVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHBhY2thZ2VzOiBbLi4uc3RhdGUucGFja2FnZXMsIG5ld1BhY2thZ2VdLFxuICAgICAgcGFja2FnZVJlbGVhc2VzOiBbLi4uc3RhdGUucGFja2FnZVJlbGVhc2VzLCBuZXdQYWNrYWdlUmVsZWFzZV0sXG4gICAgICBwYWNrYWdlRmlsZXM6IFsuLi5zdGF0ZS5wYWNrYWdlRmlsZXMsIC4uLnBhY2thZ2VGaWxlc10sXG4gICAgICBpZENvdW50ZXI6IGZpbGVJZENvdW50ZXIsXG4gICAgfSkpXG5cbiAgICAvLyBVcGRhdGUgZnNfc2hhIGZvciB0aGUgbmV3IHBhY2thZ2UgcmVsZWFzZVxuICAgIGNvbnN0IGRiU3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IHJlbGVhc2VGaWxlcyA9IGRiU3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChwZikgPT4gcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuICAgIGNvbnN0IGZzU2hhID0gZ2VuZXJhdGVGc1NoYShyZWxlYXNlRmlsZXMpXG5cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBwYWNrYWdlUmVsZWFzZXM6IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5tYXAoKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZFxuICAgICAgICAgID8geyAuLi5wciwgZnNfc2hhOiBmc1NoYSB9XG4gICAgICAgICAgOiBwcixcbiAgICAgICksXG4gICAgICBwYWNrYWdlczogc3RhdGUucGFja2FnZXMubWFwKChwa2cpID0+XG4gICAgICAgIHBrZy5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkID09PSBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgICAgICAgICA/IHsgLi4ucGtnLCBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2ZzX3NoYTogZnNTaGEgfVxuICAgICAgICAgIDogcGtnLFxuICAgICAgKSxcbiAgICB9KSlcblxuICAgIC8vIFJldHVybiBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgY3JlYXRlIGVuZHBvaW50XG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IG5ld1BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgbmFtZTogbmV3UGFja2FnZS5uYW1lLFxuICAgICAgdW5zY29wZWRfbmFtZTogbmV3UGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgICAgb3duZXJfbmFtZTogc25pcHBldC5vd25lcl9uYW1lLFxuICAgICAgY29kZTogc25pcHBldC5jb2RlIHx8IFwiXCIsXG4gICAgICBkdHM6IHNuaXBwZXQuZHRzLFxuICAgICAgY29tcGlsZWRfanM6IHNuaXBwZXQuY29tcGlsZWRfanMsXG4gICAgICBzdGFyX2NvdW50OiAwLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHNuaXBwZXRfdHlwZTogc25pcHBldC5zbmlwcGV0X3R5cGUsXG4gICAgICBjaXJjdWl0X2pzb246IHNuaXBwZXQuY2lyY3VpdF9qc29uIHx8IFtdLFxuICAgICAgZGVzY3JpcHRpb246IHNuaXBwZXQuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIGlzX3N0YXJyZWQ6IGZhbHNlLFxuICAgICAgdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgaXNfcHJpdmF0ZTogZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogZmFsc2UsXG4gICAgfVxuICB9LFxuICBnZXRMYXRlc3RTbmlwcGV0czogKGxpbWl0OiBudW1iZXIpOiBTbmlwcGV0W10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcblxuICAgIC8vIEdldCBhbGwgcGFja2FnZXMgdGhhdCBhcmUgc25pcHBldHNcbiAgICBjb25zdCBzbmlwcGV0UGFja2FnZXMgPSBzdGF0ZS5wYWNrYWdlc1xuICAgICAgLmZpbHRlcigocGtnKSA9PiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSlcbiAgICAgIC5tYXAoKHBrZykgPT4ge1xuICAgICAgICAvLyBHZXQgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT5cbiAgICAgICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgICAgIHByLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIC8vIEdldCB0aGUgcGFja2FnZSBmaWxlc1xuICAgICAgICBjb25zdCBwYWNrYWdlRmlsZXMgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIEdldCB0aGUgY29kZSBmaWxlXG4gICAgICAgIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAgICAgKGZpbGUpID0+XG4gICAgICAgICAgICBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiIHx8IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiLFxuICAgICAgICApXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgc3RhcnJlZFxuICAgICAgICBjb25zdCBpc1N0YXJyZWQgPSBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc29tZShcbiAgICAgICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgICAgIClcblxuICAgICAgICAvLyBDb252ZXJ0IHRvIHNuaXBwZXQgZm9ybWF0XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcGtnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgICAgICBjb2RlOiBjb2RlRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgZHRzOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgICAgICBjb21waWxlZF9qczpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGNyZWF0ZWRfYXQ6IHBrZy5jcmVhdGVkX2F0LFxuICAgICAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgICAgIHN0YXJfY291bnQ6IHBrZy5zdGFyX2NvdW50IHx8IDAsXG4gICAgICAgICAgaXNfc3RhcnJlZDogaXNTdGFycmVkLFxuICAgICAgICAgIHZlcnNpb246IHBrZy5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgICAgY2lyY3VpdF9qc29uOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICAuZmxhdE1hcCgoZmlsZSkgPT4gSlNPTi5wYXJzZShmaWxlLmNvbnRlbnRfdGV4dCB8fCBcIltdXCIpKSB8fCBbXSxcbiAgICAgICAgICBpc19wcml2YXRlOiBwa2cuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgICAgICBpc19wdWJsaWM6IHBrZy5pc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgICAgICBpc191bmxpc3RlZDogcGtnLmlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHNuaXBwZXQpOiBzbmlwcGV0IGlzIE5vbk51bGxhYmxlPHR5cGVvZiBzbmlwcGV0PiA9PiBzbmlwcGV0ICE9PSBudWxsLFxuICAgICAgKVxuICAgICAgLm1hcCgoc25pcHBldCkgPT4gKHtcbiAgICAgICAgLi4uc25pcHBldCxcbiAgICAgICAgZGVzY3JpcHRpb246IHNuaXBwZXQuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIH0pKVxuICAgICAgLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKCksXG4gICAgICApXG4gICAgICAuc2xpY2UoMCwgbGltaXQpXG5cbiAgICByZXR1cm4gc25pcHBldFBhY2thZ2VzXG4gIH0sXG4gIGdldFRyZW5kaW5nU25pcHBldHM6IChsaW1pdDogbnVtYmVyLCBzaW5jZTogc3RyaW5nKTogU25pcHBldFtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3Qgc2luY2VEYXRlID0gbmV3IERhdGUoc2luY2UpLmdldFRpbWUoKVxuXG4gICAgLy8gR2V0IHN0YXIgY291bnRzIHdpdGhpbiB0aW1lIHBlcmlvZFxuICAgIGNvbnN0IHJlY2VudFN0YXJzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKVxuICAgIHN0YXRlLmFjY291bnRQYWNrYWdlcy5mb3JFYWNoKChhcCkgPT4ge1xuICAgICAgaWYgKGFwLmlzX3N0YXJyZWQgJiYgbmV3IERhdGUoYXAuY3JlYXRlZF9hdCkuZ2V0VGltZSgpID49IHNpbmNlRGF0ZSkge1xuICAgICAgICByZWNlbnRTdGFycy5zZXQoXG4gICAgICAgICAgYXAucGFja2FnZV9pZCxcbiAgICAgICAgICAocmVjZW50U3RhcnMuZ2V0KGFwLnBhY2thZ2VfaWQpIHx8IDApICsgMSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCBwYWNrYWdlc1dpdGhTdGFyQ291bnQgPSBbLi4uc3RhdGUucGFja2FnZXNdXG4gICAgICAubWFwKChwa2cpID0+ICh7XG4gICAgICAgIC4uLnBrZyxcbiAgICAgICAgc3Rhcl9jb3VudDogcmVjZW50U3RhcnMuZ2V0KHBrZy5wYWNrYWdlX2lkKSB8fCAwLFxuICAgICAgfSkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYi5zdGFyX2NvdW50IC0gYS5zdGFyX2NvdW50KVxuICAgICAgLnNsaWNlKDAsIGxpbWl0KVxuXG4gICAgY29uc3QgdHJlbmRpbmdTbmlwcGV0cyA9IHBhY2thZ2VzV2l0aFN0YXJDb3VudFxuICAgICAgLm1hcCgocGtnKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgICAgKHByKSA9PlxuICAgICAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgICAgICApXG4gICAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBudWxsXG5cbiAgICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgICAgICBjb2RlOiBjb2RlRmlsZSA/IGNvZGVGaWxlLmNvbnRlbnRfdGV4dCB8fCBcIlwiIDogXCJcIixcbiAgICAgICAgICBjcmVhdGVkX2F0OiBwa2cuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgICAgICBzbmlwcGV0X3R5cGU6IHBrZy5pc19zbmlwcGV0ID8gXCJib2FyZFwiIDogXCJwYWNrYWdlXCIsXG4gICAgICAgICAgc3Rhcl9jb3VudDogcGtnLnN0YXJfY291bnQsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChzbmlwcGV0KSA9PiBzbmlwcGV0ICE9PSBudWxsKVxuXG4gICAgcmV0dXJuIHRyZW5kaW5nU25pcHBldHMgYXMgU25pcHBldFtdXG4gIH0sXG4gIGdldFBhY2thZ2VzQnlBdXRob3I6IChhdXRob3JOYW1lPzogc3RyaW5nKTogUGFja2FnZVtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgcGFja2FnZXMgPSBhdXRob3JOYW1lXG4gICAgICA/IHN0YXRlLnBhY2thZ2VzLmZpbHRlcigocGtnKSA9PiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBhdXRob3JOYW1lKVxuICAgICAgOiBzdGF0ZS5wYWNrYWdlc1xuICAgIHJldHVybiBwYWNrYWdlcy5tYXAoKHBrZykgPT4gKHtcbiAgICAgIC4uLnBrZyxcbiAgICAgIHN0YXJfY291bnQ6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgYXAuaXNfc3RhcnJlZCxcbiAgICAgICkubGVuZ3RoLFxuICAgIH0pKVxuICB9LFxuICBnZXRTbmlwcGV0QnlBdXRob3JBbmROYW1lOiAoXG4gICAgYXV0aG9yTmFtZTogc3RyaW5nLFxuICAgIHNuaXBwZXROYW1lOiBzdHJpbmcsXG4gICk6IFNuaXBwZXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICAvLyBMb29rIGZvciB0aGUgcGFja2FnZSB0aGF0IHJlcHJlc2VudHMgdGhpcyBzbmlwcGV0IHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZ1xuICAgIGNvbnN0IF9wYWNrYWdlID0gc3RhdGUucGFja2FnZXMuZmluZChcbiAgICAgIChwa2cpID0+XG4gICAgICAgIHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IGF1dGhvck5hbWUudG9Mb3dlckNhc2UoKSAmJlxuICAgICAgICBwa2cubmFtZS50b0xvd2VyQ2FzZSgpID09PSBzbmlwcGV0TmFtZS50b0xvd2VyQ2FzZSgpICYmXG4gICAgICAgIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIV9wYWNrYWdlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHIpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gX3BhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBwci5pc19sYXRlc3QgPT09IHRydWUsXG4gICAgKVxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiB1bmRlZmluZWRcblxuICAgIC8vIEdldCB0aGUgcGFja2FnZSBmaWxlc1xuICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IHN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG5cbiAgICAvLyBHZXQgdGhlIGNvZGUgZmlsZSAoaW5kZXgudHMgb3IgaW5kZXgudHN4KVxuICAgIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICApXG5cbiAgICAvLyBNYXAgdGhlIHBhY2thZ2UgZGF0YSB0byBtYXRjaCB0aGUgU25pcHBldCBzdHJ1Y3R1cmVcbiAgICByZXR1cm4ge1xuICAgICAgc25pcHBldF9pZDogX3BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogX3BhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgdW5zY29wZWRfbmFtZTogX3BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICAgIG5hbWU6IF9wYWNrYWdlLm5hbWUsXG4gICAgICBvd25lcl9uYW1lOiBfcGFja2FnZS5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBfcGFja2FnZS5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgc25pcHBldF90eXBlOiBfcGFja2FnZS5zbmlwcGV0X3R5cGUgfHwgXCJib2FyZFwiLFxuICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgZHRzOlxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguZC50c1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjb21waWxlZF9qczpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIpXG4gICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IF9wYWNrYWdlLmNyZWF0ZWRfYXQsXG4gICAgICB1cGRhdGVkX2F0OiBfcGFja2FnZS51cGRhdGVkX2F0LFxuICAgICAgc3Rhcl9jb3VudDogX3BhY2thZ2Uuc3Rhcl9jb3VudCB8fCAwLFxuICAgICAgaXNfc3RhcnJlZDogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiBfcGFja2FnZS5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICBjaXJjdWl0X2pzb246IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICApPy5jb250ZW50X3RleHRcbiAgICAgICAgPyBKU09OLnBhcnNlKFxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIltdXCIsXG4gICAgICAgICAgKVxuICAgICAgICA6IFtdLFxuICAgICAgaXNfcHJpdmF0ZTogX3BhY2thZ2UuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogX3BhY2thZ2UuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogX3BhY2thZ2UuaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgfVxuICB9LFxuICB1cGRhdGVTbmlwcGV0OiAoXG4gICAgc25pcHBldElkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxTbmlwcGV0PixcbiAgKTogU25pcHBldCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gc25pcHBldElkICYmIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICAgICAgKVxuICAgICAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KClcbiAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpXG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgcGFja2FnZVxuICAgICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgY29uc3QgY3VycmVudFBhY2thZ2UgPSB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XVxuICAgICAgdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0gPSB7XG4gICAgICAgIC4uLmN1cnJlbnRQYWNrYWdlLFxuICAgICAgICBkZXNjcmlwdGlvbjogdXBkYXRlcy5kZXNjcmlwdGlvbiA/PyBjdXJyZW50UGFja2FnZS5kZXNjcmlwdGlvbixcbiAgICAgICAgaXNfcHJpdmF0ZTogdXBkYXRlcy5pc19wcml2YXRlID8/IGN1cnJlbnRQYWNrYWdlLmlzX3ByaXZhdGUsXG4gICAgICAgIGlzX3B1YmxpYzpcbiAgICAgICAgICB1cGRhdGVzLmlzX3ByaXZhdGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyAhdXBkYXRlcy5pc19wcml2YXRlXG4gICAgICAgICAgICA6IGN1cnJlbnRQYWNrYWdlLmlzX3B1YmxpYyxcbiAgICAgICAgaXNfdW5saXN0ZWQ6IHVwZGF0ZXMuaXNfcHJpdmF0ZVxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogKHVwZGF0ZXMuaXNfdW5saXN0ZWQgPz8gY3VycmVudFBhY2thZ2UuaXNfdW5saXN0ZWQpLFxuICAgICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH1cblxuICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IHBhY2thZ2UgcmVsZWFzZVxuICAgICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gY3VycmVudFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIClcbiAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBzdGF0ZVxuXG4gICAgICAvLyBVcGRhdGUgcGFja2FnZSBmaWxlcyBpZiBjb2RlL2R0cy9qcyBjaGFuZ2VkXG4gICAgICBjb25zdCB1cGRhdGVkRmlsZXMgPSBbLi4uc3RhdGUucGFja2FnZUZpbGVzXVxuICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gdXBkYXRlZEZpbGVzLmZpbHRlcihcbiAgICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICApXG5cbiAgICAgIGlmICh1cGRhdGVzLmNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBjb2RlRmlsZUluZGV4ID0gcGFja2FnZUZpbGVzLmZpbmRJbmRleChcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiIHx8IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIsXG4gICAgICAgIClcbiAgICAgICAgaWYgKGNvZGVGaWxlSW5kZXggPj0gMCkge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlc1tjb2RlRmlsZUluZGV4XSA9IHtcbiAgICAgICAgICAgIC4uLnBhY2thZ2VGaWxlc1tjb2RlRmlsZUluZGV4XSxcbiAgICAgICAgICAgIGNvbnRlbnRfdGV4dDogdXBkYXRlcy5jb2RlLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlcy5wdXNoKHtcbiAgICAgICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke3RpbWVzdGFtcH1gLFxuICAgICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgICAgICBmaWxlX3BhdGg6IFwiaW5kZXgudHN4XCIsXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuY29kZSxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHVwZGF0ZXMuZHRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgZHRzRmlsZUluZGV4ID0gcGFja2FnZUZpbGVzLmZpbmRJbmRleChcbiAgICAgICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICApXG4gICAgICAgIGlmIChkdHNGaWxlSW5kZXggPj0gMCkge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlc1tkdHNGaWxlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ucGFja2FnZUZpbGVzW2R0c0ZpbGVJbmRleF0sXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuZHRzLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlcy5wdXNoKHtcbiAgICAgICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke3RpbWVzdGFtcH1gLFxuICAgICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiB1cGRhdGVzLmR0cyxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHVwZGF0ZXMuY29tcGlsZWRfanMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBqc0ZpbGVJbmRleCA9IHBhY2thZ2VGaWxlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgIClcbiAgICAgICAgaWYgKGpzRmlsZUluZGV4ID49IDApIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXNbanNGaWxlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ucGFja2FnZUZpbGVzW2pzRmlsZUluZGV4XSxcbiAgICAgICAgICAgIGNvbnRlbnRfdGV4dDogdXBkYXRlcy5jb21waWxlZF9qcyxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXMucHVzaCh7XG4gICAgICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHt0aW1lc3RhbXB9YCxcbiAgICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuY29tcGlsZWRfanMsXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSBjaXJjdWl0IEpTT04gaWYgcHJvdmlkZWRcbiAgICAgIGlmICh1cGRhdGVzLmNpcmN1aXRfanNvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNpcmN1aXRGaWxlSW5kZXggPSBwYWNrYWdlRmlsZXMuZmluZEluZGV4KFxuICAgICAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICAgICAgKVxuICAgICAgICBpZiAoY2lyY3VpdEZpbGVJbmRleCA+PSAwKSB7XG4gICAgICAgICAgdXBkYXRlZEZpbGVzW2NpcmN1aXRGaWxlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ucGFja2FnZUZpbGVzW2NpcmN1aXRGaWxlSW5kZXhdLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiBKU09OLnN0cmluZ2lmeSh1cGRhdGVzLmNpcmN1aXRfanNvbiksXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJldHVybiB1cGRhdGVkIHN0YXRlXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGFja2FnZXM6IHVwZGF0ZWRQYWNrYWdlcyxcbiAgICAgICAgcGFja2FnZUZpbGVzOiB1cGRhdGVkRmlsZXMsXG4gICAgICB9XG4gICAgfSlcblxuICAgIC8vIEdldCB0aGUgdXBkYXRlZCBzbmlwcGV0IHRvIHJldHVyblxuICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlID0gZ2V0KCkucGFja2FnZXMuZmluZChcbiAgICAgIChwa2cpID0+IHBrZy5wYWNrYWdlX2lkID09PSBzbmlwcGV0SWQsXG4gICAgKVxuICAgIGlmICghdXBkYXRlZFBhY2thZ2UpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gZ2V0KCkucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHIpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gdXBkYXRlZFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgcGFja2FnZUZpbGVzID0gZ2V0KCkucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcblxuICAgIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICApXG4gICAgY29uc3QgZHRzRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICApXG4gICAgY29uc3QganNGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIixcbiAgICApXG4gICAgY29uc3QgY2lyY3VpdEZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICApXG5cbiAgICAvLyBSZXR1cm4gaW4gc25pcHBldCBmb3JtYXRcbiAgICByZXR1cm4ge1xuICAgICAgc25pcHBldF9pZDogdXBkYXRlZFBhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogdXBkYXRlZFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgdW5zY29wZWRfbmFtZTogdXBkYXRlZFBhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICAgIG5hbWU6IHVwZGF0ZWRQYWNrYWdlLm5hbWUsXG4gICAgICBvd25lcl9uYW1lOiB1cGRhdGVkUGFja2FnZS5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiB1cGRhdGVkUGFja2FnZS5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgc25pcHBldF90eXBlOiB1cGRhdGVkUGFja2FnZS5zbmlwcGV0X3R5cGUgfHwgXCJib2FyZFwiLFxuICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgZHRzOiBkdHNGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNvbXBpbGVkX2pzOiBqc0ZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY3JlYXRlZF9hdDogdXBkYXRlZFBhY2thZ2UuY3JlYXRlZF9hdCxcbiAgICAgIHVwZGF0ZWRfYXQ6IHVwZGF0ZWRQYWNrYWdlLnVwZGF0ZWRfYXQsXG4gICAgICBzdGFyX2NvdW50OiB1cGRhdGVkUGFja2FnZS5zdGFyX2NvdW50IHx8IDAsXG4gICAgICBpc19zdGFycmVkOiBmYWxzZSxcbiAgICAgIHZlcnNpb246IHVwZGF0ZWRQYWNrYWdlLmxhdGVzdF92ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgIGNpcmN1aXRfanNvbjogY2lyY3VpdEZpbGVcbiAgICAgICAgPyBKU09OLnBhcnNlKGNpcmN1aXRGaWxlLmNvbnRlbnRfdGV4dCB8fCBcIltdXCIpXG4gICAgICAgIDogW10sXG4gICAgICBpc19wcml2YXRlOiB1cGRhdGVkUGFja2FnZS5pc19wcml2YXRlID8/IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiB1cGRhdGVkUGFja2FnZS5pc19wdWJsaWMgPz8gdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiB1cGRhdGVkUGFja2FnZS5pc191bmxpc3RlZCA/PyBmYWxzZSxcbiAgICB9XG4gIH0sXG4gIGdldFNuaXBwZXRCeUlkOiAoXG4gICAgc25pcHBldElkOiBzdHJpbmcsXG4gICAgYXV0aD86IHsgZ2l0aHViX3VzZXJuYW1lOiBzdHJpbmcgfSxcbiAgKTogU25pcHBldCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIC8vIExvb2sgZm9yIHRoZSBwYWNrYWdlIHRoYXQgcmVwcmVzZW50cyB0aGlzIHNuaXBwZXRcbiAgICBjb25zdCBfcGFja2FnZSA9IHN0YXRlLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gc25pcHBldElkICYmIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIV9wYWNrYWdlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBIYW5kbGUgdmlzaWJpbGl0eSBiYXNlZCBvbiBhdXRoZW50aWNhdGlvblxuICAgIGlmICghYXV0aCkge1xuICAgICAgLy8gVW5hdXRoZW50aWNhdGVkIHVzZXJzIGNhbiBvbmx5IHNlZSBwdWJsaWMgYW5kIG5vbi11bmxpc3RlZCBwYWNrYWdlc1xuICAgICAgaWYgKCFfcGFja2FnZS5pc19wdWJsaWMgfHwgX3BhY2thZ2UuaXNfdW5saXN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBdXRoZW50aWNhdGVkIHVzZXJzIGNhbiBzZWU6XG4gICAgICAvLyAxLiBQdWJsaWMgYW5kIG5vbi11bmxpc3RlZCBwYWNrYWdlc1xuICAgICAgLy8gMi4gVGhlaXIgb3duIHVubGlzdGVkIHBhY2thZ2VzXG4gICAgICAvLyAzLiBUaGVpciBvd24gcHJpdmF0ZSBwYWNrYWdlc1xuICAgICAgY29uc3QgaXNPd25QYWNrYWdlID1cbiAgICAgICAgX3BhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBhdXRoPy5naXRodWJfdXNlcm5hbWVcbiAgICAgIGNvbnN0IGlzUHVibGljQW5kTm90VW5saXN0ZWQgPSBfcGFja2FnZS5pc19wdWJsaWMgJiYgIV9wYWNrYWdlLmlzX3VubGlzdGVkXG4gICAgICBjb25zdCBpc093blVubGlzdGVkID0gX3BhY2thZ2UuaXNfdW5saXN0ZWQgJiYgaXNPd25QYWNrYWdlXG4gICAgICBjb25zdCBpc093blByaXZhdGUgPSBfcGFja2FnZS5pc19wcml2YXRlICYmIGlzT3duUGFja2FnZVxuXG4gICAgICBpZiAoIWlzUHVibGljQW5kTm90VW5saXN0ZWQgJiYgIWlzT3duVW5saXN0ZWQgJiYgIWlzT3duUHJpdmF0ZSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2UgZmlsZXNcbiAgICBjb25zdCBwYWNrYWdlRmlsZXMgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuXG4gICAgLy8gR2V0IHRoZSBjb2RlIGZpbGUgKGluZGV4LnRzIG9yIGluZGV4LnRzeClcbiAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgKVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgc3RhcnJlZCB0aGlzIHNuaXBwZXRcbiAgICBjb25zdCBpc1N0YXJyZWQgPSBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc29tZShcbiAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gc25pcHBldElkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgKVxuXG4gICAgLy8gTWFwIHRoZSBwYWNrYWdlIGRhdGEgdG8gbWF0Y2ggdGhlIFNuaXBwZXQgc3RydWN0dXJlXG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IF9wYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgIHVuc2NvcGVkX25hbWU6IF9wYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgICBuYW1lOiBfcGFja2FnZS5uYW1lLFxuICAgICAgb3duZXJfbmFtZTogX3BhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICBkZXNjcmlwdGlvbjogX3BhY2thZ2UuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogX3BhY2thZ2Uuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgIGNvZGU6IGNvZGVGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGR0czpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjcmVhdGVkX2F0OiBfcGFja2FnZS5jcmVhdGVkX2F0LFxuICAgICAgdXBkYXRlZF9hdDogX3BhY2thZ2UudXBkYXRlZF9hdCxcbiAgICAgIHN0YXJfY291bnQ6IF9wYWNrYWdlLnN0YXJfY291bnQgfHwgMCxcbiAgICAgIGlzX3N0YXJyZWQ6IGlzU3RhcnJlZCxcbiAgICAgIHZlcnNpb246IF9wYWNrYWdlLmxhdGVzdF92ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgIGNpcmN1aXRfanNvbjogcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICAgICk/LmNvbnRlbnRfdGV4dFxuICAgICAgICA/IEpTT04ucGFyc2UoXG4gICAgICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIpXG4gICAgICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiW11cIixcbiAgICAgICAgICApXG4gICAgICAgIDogW10sXG4gICAgICBpc19wcml2YXRlOiBfcGFja2FnZS5pc19wcml2YXRlIHx8IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiBfcGFja2FnZS5pc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiBfcGFja2FnZS5pc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICB9XG4gIH0sXG4gIHNlYXJjaFNuaXBwZXRzOiAocXVlcnk6IHN0cmluZyk6IFNuaXBwZXRbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IGxvd2VyY2FzZVF1ZXJ5ID0gcXVlcnkudG9Mb3dlckNhc2UoKVxuXG4gICAgLy8gR2V0IGFsbCBwYWNrYWdlcyB0aGF0IGFyZSBzbmlwcGV0c1xuICAgIGNvbnN0IHBhY2thZ2VzID0gc3RhdGUucGFja2FnZXMuZmlsdGVyKChwa2cpID0+IHBrZy5pc19zbmlwcGV0ID09PSB0cnVlKVxuXG4gICAgLy8gRmluZCBwYWNrYWdlcyB0aGF0IG1hdGNoIGJ5IG5hbWUgb3IgZGVzY3JpcHRpb25cbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzQnlNZXRhZGF0YSA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwa2cpID0+XG4gICAgICAgIHBrZy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJjYXNlUXVlcnkpIHx8XG4gICAgICAgIHBrZy5kZXNjcmlwdGlvbj8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlcmNhc2VRdWVyeSksXG4gICAgKVxuXG4gICAgLy8gRmluZCBwYWNrYWdlcyB0aGF0IG1hdGNoIGJ5IGNvZGUgY29udGVudCBpbiBhbnkgZmlsZVxuICAgIGNvbnN0IG1hdGNoaW5nRmlsZXNCeUNvbnRlbnQgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+XG4gICAgICAgIGZpbGUuY29udGVudF90ZXh0Py50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVF1ZXJ5KSA/PyBmYWxzZSxcbiAgICApXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2VzIGZvciBtYXRjaGluZyBmaWxlc1xuICAgIGNvbnN0IG1hdGNoaW5nUGFja2FnZXNCeUNvbnRlbnQgPSBtYXRjaGluZ0ZpbGVzQnlDb250ZW50XG4gICAgICAubWFwKChmaWxlKSA9PiB7XG4gICAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgcmVsZWFzZSBmb3IgdGhpcyBmaWxlXG4gICAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG4gICAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBudWxsXG5cbiAgICAgICAgLy8gRmluZCB0aGUgcGFja2FnZSBmb3IgdGhpcyByZWxlYXNlXG4gICAgICAgIHJldHVybiBwYWNrYWdlcy5maW5kKFxuICAgICAgICAgIChwa2cpID0+XG4gICAgICAgICAgICBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG4gICAgICB9KVxuICAgICAgLmZpbHRlcigocGtnKTogcGtnIGlzIE5vbk51bGxhYmxlPHR5cGVvZiBwa2c+ID0+IHBrZyAhPT0gbnVsbClcblxuICAgIC8vIENvbWJpbmUgYm90aCBzZXRzIG9mIG1hdGNoaW5nIHBhY2thZ2VzIGFuZCByZW1vdmUgZHVwbGljYXRlc1xuICAgIGNvbnN0IG1hdGNoaW5nUGFja2FnZXMgPSBbXG4gICAgICAuLi5uZXcgU2V0KFsuLi5tYXRjaGluZ1BhY2thZ2VzQnlNZXRhZGF0YSwgLi4ubWF0Y2hpbmdQYWNrYWdlc0J5Q29udGVudF0pLFxuICAgIF1cblxuICAgIC8vIENvbnZlcnQgbWF0Y2hpbmcgcGFja2FnZXMgdG8gc25pcHBldCBmb3JtYXRcbiAgICByZXR1cm4gbWF0Y2hpbmdQYWNrYWdlc1xuICAgICAgLm1hcCgocGtnKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgICAgKHByKSA9PlxuICAgICAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgICAgICApXG4gICAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBudWxsXG5cbiAgICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IGlzU3RhcnJlZCA9IHN0YXRlLmFjY291bnRQYWNrYWdlcy5zb21lKFxuICAgICAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgYXAuaXNfc3RhcnJlZCxcbiAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcGtnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgICAgICBjb2RlOiBjb2RlRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgZHRzOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgICAgICBjb21waWxlZF9qczpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGNyZWF0ZWRfYXQ6IHBrZy5jcmVhdGVkX2F0LFxuICAgICAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgICAgIHN0YXJfY291bnQ6IHBrZy5zdGFyX2NvdW50IHx8IDAsXG4gICAgICAgICAgaXNfc3RhcnJlZDogaXNTdGFycmVkLFxuICAgICAgICAgIHZlcnNpb246IHBrZy5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgICAgY2lyY3VpdF9qc29uOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICAuZmxhdE1hcCgoZmlsZSkgPT4gSlNPTi5wYXJzZShmaWxlLmNvbnRlbnRfdGV4dCB8fCBcIltdXCIpKSB8fCBbXSxcbiAgICAgICAgfSBhcyBTbmlwcGV0XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoc25pcHBldCk6IHNuaXBwZXQgaXMgU25pcHBldCA9PiBzbmlwcGV0ICE9PSBudWxsKVxuICB9LFxuICBzZWFyY2hQYWNrYWdlczogKHF1ZXJ5OiBzdHJpbmcpOiBQYWNrYWdlW10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICBjb25zdCBsb3dlcmNhc2VRdWVyeSA9IHF1ZXJ5LnRvTG93ZXJDYXNlKClcblxuICAgIC8vIEdldCBhbGwgcGFja2FnZXMgdGhhdCBhcmUgcHVibGljXG4gICAgY29uc3QgcGFja2FnZXMgPSBzdGF0ZS5wYWNrYWdlcy5maWx0ZXIoKHBrZykgPT4gcGtnLmlzX3B1YmxpYyA9PT0gdHJ1ZSlcblxuICAgIC8vIEZpbmQgcGFja2FnZXMgdGhhdCBtYXRjaCBieSBuYW1lIG9yIGRlc2NyaXB0aW9uXG4gICAgY29uc3QgbWF0Y2hpbmdQYWNrYWdlc0J5TWV0YWRhdGEgPSBwYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocGtnKSA9PlxuICAgICAgICBwa2cubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVF1ZXJ5KSB8fFxuICAgICAgICBwa2cuZGVzY3JpcHRpb24/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJjYXNlUXVlcnkpLFxuICAgIClcblxuICAgIC8vIEZpbmQgcGFja2FnZXMgdGhhdCBtYXRjaCBieSBjb2RlIGNvbnRlbnQgaW4gYW55IGZpbGVcbiAgICBjb25zdCBtYXRjaGluZ0ZpbGVzQnlDb250ZW50ID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChmaWxlKSA9PlxuICAgICAgICBmaWxlLmNvbnRlbnRfdGV4dD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlcmNhc2VRdWVyeSkgPz8gZmFsc2UsXG4gICAgKVxuXG4gICAgLy8gR2V0IHRoZSBwYWNrYWdlcyBmb3IgbWF0Y2hpbmcgZmlsZXNcbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzQnlDb250ZW50ID0gbWF0Y2hpbmdGaWxlc0J5Q29udGVudFxuICAgICAgLm1hcCgoZmlsZSkgPT4ge1xuICAgICAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIHJlbGVhc2UgZm9yIHRoaXMgZmlsZVxuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgZm9yIHRoaXMgcmVsZWFzZVxuICAgICAgICByZXR1cm4gcGFja2FnZXMuZmluZChcbiAgICAgICAgICAocGtnKSA9PlxuICAgICAgICAgICAgcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKHBrZyk6IHBrZyBpcyBOb25OdWxsYWJsZTx0eXBlb2YgcGtnPiA9PiBwa2cgIT09IG51bGwpXG5cbiAgICAvLyBDb21iaW5lIGJvdGggc2V0cyBvZiBtYXRjaGluZyBwYWNrYWdlcyBhbmQgcmVtb3ZlIGR1cGxpY2F0ZXNcbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzID0gW1xuICAgICAgLi4ubmV3IFNldChbLi4ubWF0Y2hpbmdQYWNrYWdlc0J5TWV0YWRhdGEsIC4uLm1hdGNoaW5nUGFja2FnZXNCeUNvbnRlbnRdKSxcbiAgICBdXG5cbiAgICByZXR1cm4gbWF0Y2hpbmdQYWNrYWdlc1xuICB9LFxuICBzZWFyY2hBY2NvdW50czogKHF1ZXJ5OiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyKTogQWNjb3VudFtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgbG93ZXJjYXNlUXVlcnkgPSBxdWVyeS50b0xvd2VyQ2FzZSgpXG5cbiAgICBjb25zdCBhY2NvdW50c1dpdGhQdWJsaWNQYWNrYWdlcyA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gICAgc3RhdGUucGFja2FnZXNcbiAgICAgIC5maWx0ZXIoKHBrZykgPT4gcGtnLmlzX3B1YmxpYyA9PT0gdHJ1ZSlcbiAgICAgIC5mb3JFYWNoKChwa2cpID0+IHtcbiAgICAgICAgaWYgKHBrZy5jcmVhdG9yX2FjY291bnRfaWQpIHtcbiAgICAgICAgICBhY2NvdW50c1dpdGhQdWJsaWNQYWNrYWdlcy5hZGQocGtnLmNyZWF0b3JfYWNjb3VudF9pZClcbiAgICAgICAgfVxuICAgICAgICBpZiAocGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSkge1xuICAgICAgICAgIGNvbnN0IGFjY291bnQgPSBzdGF0ZS5hY2NvdW50cy5maW5kKFxuICAgICAgICAgICAgKGFjYykgPT4gYWNjLmdpdGh1Yl91c2VybmFtZSA9PT0gcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKGFjY291bnQpIHtcbiAgICAgICAgICAgIGFjY291bnRzV2l0aFB1YmxpY1BhY2thZ2VzLmFkZChhY2NvdW50LmFjY291bnRfaWQpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgY29uc3QgbWF0Y2hpbmdBY2NvdW50cyA9IHN0YXRlLmFjY291bnRzXG4gICAgICAuZmlsdGVyKChhY2NvdW50KSA9PiB7XG4gICAgICAgIGlmICghYWNjb3VudHNXaXRoUHVibGljUGFja2FnZXMuaGFzKGFjY291bnQuYWNjb3VudF9pZCkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjb3VudC5naXRodWJfdXNlcm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlcmNhc2VRdWVyeSlcbiAgICAgIH0pXG4gICAgICAuc2xpY2UoMCwgbGltaXQgfHwgNTApXG5cbiAgICByZXR1cm4gbWF0Y2hpbmdBY2NvdW50c1xuICB9LFxuICBkZWxldGVTbmlwcGV0OiAoc25pcHBldElkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5zbmlwcGV0cy5maW5kSW5kZXgoKHMpID0+IHMuc25pcHBldF9pZCA9PT0gc25pcHBldElkKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBzdGF0ZS5zbmlwcGV0cy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiBkZWxldGVkXG4gIH0sXG4gIGFkZFNlc3Npb246IChzZXNzaW9uOiBPbWl0PFNlc3Npb24sIFwic2Vzc2lvbl9pZFwiPik6IFNlc3Npb24gPT4ge1xuICAgIGNvbnN0IG5ld1Nlc3Npb24gPSB7IHNlc3Npb25faWQ6IGBzZXNzaW9uXyR7RGF0ZS5ub3coKX1gLCAuLi5zZXNzaW9uIH1cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgc2Vzc2lvbnM6IFsuLi5zdGF0ZS5zZXNzaW9ucywgbmV3U2Vzc2lvbl0sXG4gICAgfSkpXG4gICAgcmV0dXJuIG5ld1Nlc3Npb25cbiAgfSxcbiAgZ2V0U2Vzc2lvbnM6ICh7XG4gICAgYWNjb3VudF9pZCxcbiAgICBpc19jbGlfc2Vzc2lvbixcbiAgfTogeyBhY2NvdW50X2lkOiBzdHJpbmc7IGlzX2NsaV9zZXNzaW9uPzogYm9vbGVhbiB9KTogU2Vzc2lvbltdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnNlc3Npb25zLmZpbHRlcihcbiAgICAgIChzZXNzaW9uKSA9PlxuICAgICAgICBzZXNzaW9uLmFjY291bnRfaWQgPT09IGFjY291bnRfaWQgJiZcbiAgICAgICAgKGlzX2NsaV9zZXNzaW9uID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICBzZXNzaW9uLmlzX2NsaV9zZXNzaW9uID09PSBpc19jbGlfc2Vzc2lvbiksXG4gICAgKVxuICB9LFxuICBjcmVhdGVMb2dpblBhZ2U6ICgpOiBMb2dpblBhZ2UgPT4ge1xuICAgIGNvbnN0IG5ld0xvZ2luUGFnZTogTG9naW5QYWdlID0ge1xuICAgICAgbG9naW5fcGFnZV9pZDogYGxvZ2luX3BhZ2VfJHtEYXRlLm5vdygpfWAsXG4gICAgICBsb2dpbl9wYWdlX2F1dGhfdG9rZW46IGB0b2tlbl8ke0RhdGUubm93KCl9YCxcbiAgICAgIHdhc19sb2dpbl9zdWNjZXNzZnVsOiBmYWxzZSxcbiAgICAgIGhhc19iZWVuX3VzZWRfdG9fY3JlYXRlX3Nlc3Npb246IGZhbHNlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgZXhwaXJlc19hdDogbmV3IERhdGUoRGF0ZS5ub3coKSArIDMwICogNjAgKiAxMDAwKS50b0lTT1N0cmluZygpLCAvLyAzMCBtaW51dGVzIGV4cGlyYXRpb25cbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGxvZ2luUGFnZXM6IFsuLi5zdGF0ZS5sb2dpblBhZ2VzLCBuZXdMb2dpblBhZ2VdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdMb2dpblBhZ2VcbiAgfSxcbiAgZ2V0TG9naW5QYWdlOiAobG9naW5QYWdlSWQ6IHN0cmluZyk6IExvZ2luUGFnZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5sb2dpblBhZ2VzLmZpbmQoKGxwKSA9PiBscC5sb2dpbl9wYWdlX2lkID09PSBsb2dpblBhZ2VJZClcbiAgfSxcbiAgdXBkYXRlTG9naW5QYWdlOiAobG9naW5QYWdlSWQ6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxMb2dpblBhZ2U+KTogdm9pZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGxvZ2luUGFnZXM6IHN0YXRlLmxvZ2luUGFnZXMubWFwKChscCkgPT5cbiAgICAgICAgbHAubG9naW5fcGFnZV9pZCA9PT0gbG9naW5QYWdlSWQgPyB7IC4uLmxwLCAuLi51cGRhdGVzIH0gOiBscCxcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGdldEFjY291bnQ6IChhY2NvdW50SWQ6IHN0cmluZyk6IEFjY291bnQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWNjb3VudHMuZmluZCgoYWNjb3VudCkgPT4gYWNjb3VudC5hY2NvdW50X2lkID09PSBhY2NvdW50SWQpXG4gIH0sXG4gIHVwZGF0ZUFjY291bnQ6IChcbiAgICBhY2NvdW50SWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPEFjY291bnQ+LFxuICApOiBBY2NvdW50IHwgdW5kZWZpbmVkID0+IHtcbiAgICBsZXQgdXBkYXRlZEFjY291bnQ6IEFjY291bnQgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBhY2NvdW50SW5kZXggPSBzdGF0ZS5hY2NvdW50cy5maW5kSW5kZXgoXG4gICAgICAgIChhY2NvdW50KSA9PiBhY2NvdW50LmFjY291bnRfaWQgPT09IGFjY291bnRJZCxcbiAgICAgIClcbiAgICAgIGlmIChhY2NvdW50SW5kZXggIT09IC0xKSB7XG4gICAgICAgIHVwZGF0ZWRBY2NvdW50ID0geyAuLi5zdGF0ZS5hY2NvdW50c1thY2NvdW50SW5kZXhdIH1cbiAgICAgICAgaWYgKHVwZGF0ZXMuc2hpcHBpbmdJbmZvKSB7XG4gICAgICAgICAgdXBkYXRlZEFjY291bnQuc2hpcHBpbmdJbmZvID0ge1xuICAgICAgICAgICAgLi4udXBkYXRlZEFjY291bnQuc2hpcHBpbmdJbmZvLFxuICAgICAgICAgICAgLi4udXBkYXRlcy5zaGlwcGluZ0luZm8sXG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSB1cGRhdGVzLnNoaXBwaW5nSW5mb1xuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZWRBY2NvdW50ID0geyAuLi51cGRhdGVkQWNjb3VudCwgLi4udXBkYXRlcyB9XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRBY2NvdW50cyA9IFsuLi5zdGF0ZS5hY2NvdW50c11cbiAgICAgICAgdXBkYXRlZEFjY291bnRzW2FjY291bnRJbmRleF0gPSB1cGRhdGVkQWNjb3VudFxuICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYWNjb3VudHM6IHVwZGF0ZWRBY2NvdW50cyB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiB1cGRhdGVkQWNjb3VudFxuICB9LFxuICBjcmVhdGVTZXNzaW9uOiAoc2Vzc2lvbjogT21pdDxTZXNzaW9uLCBcInNlc3Npb25faWRcIj4pOiBTZXNzaW9uID0+IHtcbiAgICBjb25zdCBuZXdTZXNzaW9uID0geyBzZXNzaW9uX2lkOiBgc2Vzc2lvbl8ke0RhdGUubm93KCl9YCwgLi4uc2Vzc2lvbiB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHNlc3Npb25zOiBbLi4uc3RhdGUuc2Vzc2lvbnMsIG5ld1Nlc3Npb25dLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdTZXNzaW9uXG4gIH0sXG4gIGFkZFN0YXI6IChhY2NvdW50SWQ6IHN0cmluZywgcGFja2FnZUlkOiBzdHJpbmcpOiBBY2NvdW50UGFja2FnZSA9PiB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgY29uc3QgYWNjb3VudFBhY2thZ2UgPSB7XG4gICAgICBhY2NvdW50X3BhY2thZ2VfaWQ6IGBhcF8ke0RhdGUubm93KCl9YCxcbiAgICAgIGFjY291bnRfaWQ6IGFjY291bnRJZCxcbiAgICAgIHBhY2thZ2VfaWQ6IHBhY2thZ2VJZCxcbiAgICAgIGlzX3N0YXJyZWQ6IHRydWUsXG4gICAgICBjcmVhdGVkX2F0OiBub3csXG4gICAgICB1cGRhdGVkX2F0OiBub3csXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3Mgc3RhciBjb3VudFxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgYW5kIGluY3JlbWVudCBpdHMgc3RhciBjb3VudFxuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICAgICAgKVxuICAgICAgaWYgKHBhY2thZ2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlcyA9IFsuLi5zdGF0ZS5wYWNrYWdlc11cbiAgICAgICAgdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0gPSB7XG4gICAgICAgICAgLi4udXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0sXG4gICAgICAgICAgc3Rhcl9jb3VudDogKHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdLnN0YXJfY291bnQgfHwgMCkgKyAxLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYWNrYWdlczogdXBkYXRlZFBhY2thZ2VzLFxuICAgICAgICAgIGFjY291bnRQYWNrYWdlczogWy4uLnN0YXRlLmFjY291bnRQYWNrYWdlcywgYWNjb3VudFBhY2thZ2VdLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjY291bnRQYWNrYWdlczogWy4uLnN0YXRlLmFjY291bnRQYWNrYWdlcywgYWNjb3VudFBhY2thZ2VdLFxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gYWNjb3VudFBhY2thZ2VcbiAgfSxcbiAgcmVtb3ZlU3RhcjogKGFjY291bnRJZDogc3RyaW5nLCBwYWNrYWdlSWQ6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgYW5kIGRlY3JlbWVudCBpdHMgc3RhciBjb3VudFxuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICAgICAgKVxuXG4gICAgICBpZiAocGFja2FnZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgICB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSA9IHtcbiAgICAgICAgICAuLi51cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSxcbiAgICAgICAgICBzdGFyX2NvdW50OiBNYXRoLm1heChcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAodXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0uc3Rhcl9jb3VudCB8fCAwKSAtIDEsXG4gICAgICAgICAgKSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGFja2FnZXM6IHVwZGF0ZWRQYWNrYWdlcyxcbiAgICAgICAgICBhY2NvdW50UGFja2FnZXM6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgICAgICAoYXApID0+XG4gICAgICAgICAgICAgICEoYXAuYWNjb3VudF9pZCA9PT0gYWNjb3VudElkICYmIGFwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCksXG4gICAgICAgICAgKSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50UGFja2FnZXM6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgICAgKGFwKSA9PiAhKGFwLmFjY291bnRfaWQgPT09IGFjY291bnRJZCAmJiBhcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQpLFxuICAgICAgICApLFxuICAgICAgfVxuICAgIH0pXG4gIH0sXG4gIGhhc1N0YXJyZWQ6IChhY2NvdW50SWQ6IHN0cmluZywgcGFja2FnZUlkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRQYWNrYWdlcy5zb21lKFxuICAgICAgKGFwKSA9PlxuICAgICAgICBhcC5hY2NvdW50X2lkID09PSBhY2NvdW50SWQgJiZcbiAgICAgICAgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkICYmXG4gICAgICAgIGFwLmlzX3N0YXJyZWQsXG4gICAgKVxuICB9LFxuICBhZGRQYWNrYWdlOiAoXG4gICAgX3BhY2thZ2U6IE9taXQ8XG4gICAgICB6LmlucHV0PHR5cGVvZiBwYWNrYWdlU2NoZW1hPixcbiAgICAgIFwicGFja2FnZV9pZFwiIHwgXCJnaXRodWJfcmVwb19mdWxsX25hbWVcIlxuICAgID4sXG4gICk6IFBhY2thZ2UgPT4ge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KClcbiAgICBjb25zdCBuZXdQYWNrYWdlID0ge1xuICAgICAgcGFja2FnZV9pZDogYHBhY2thZ2VfJHt0aW1lc3RhbXB9YCxcbiAgICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZTogbnVsbCxcbiAgICAgIC4uLl9wYWNrYWdlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgcGFja2FnZXM6IFsuLi5zdGF0ZS5wYWNrYWdlcywgbmV3UGFja2FnZSBhcyBQYWNrYWdlXSxcbiAgICB9KSlcbiAgICByZXR1cm4gbmV3UGFja2FnZSBhcyBQYWNrYWdlXG4gIH0sXG4gIHVwZGF0ZVBhY2thZ2U6IChcbiAgICBwYWNrYWdlSWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPFBhY2thZ2U+LFxuICApOiBQYWNrYWdlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBsZXQgdXBkYXRlZFBhY2thZ2U6IFBhY2thZ2UgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBwYWNrYWdlSW5kZXggPSBzdGF0ZS5wYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgICAgIChwa2cpID0+IHBrZy5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQsXG4gICAgICApXG4gICAgICBpZiAocGFja2FnZUluZGV4ID09PSAtMSkgcmV0dXJuIHN0YXRlXG5cbiAgICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlcyA9IFsuLi5zdGF0ZS5wYWNrYWdlc11cbiAgICAgIHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdID0ge1xuICAgICAgICAuLi51cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSxcbiAgICAgICAgLi4udXBkYXRlcyxcbiAgICAgIH1cbiAgICAgIHVwZGF0ZWRQYWNrYWdlID0gdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF1cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBwYWNrYWdlczogdXBkYXRlZFBhY2thZ2VzIH1cbiAgICB9KVxuICAgIHJldHVybiB1cGRhdGVkUGFja2FnZVxuICB9LFxuICBnZXRQYWNrYWdlQnlJZDogKHBhY2thZ2VJZDogc3RyaW5nKTogUGFja2FnZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IHBrZyA9IHN0YXRlLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZClcbiAgICBpZiAoIXBrZykgcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB7XG4gICAgICAuLi5wa2csXG4gICAgfVxuICB9LFxuICBnZXRQYWNrYWdlUmVsZWFzZUJ5SWQ6IChcbiAgICBwYWNrYWdlUmVsZWFzZUlkOiBzdHJpbmcsXG4gICk6IFBhY2thZ2VSZWxlYXNlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gICAgKVxuICB9LFxuICBhZGRQYWNrYWdlUmVsZWFzZTogKFxuICAgIHBhY2thZ2VSZWxlYXNlOiBPbWl0PFxuICAgICAgei5pbnB1dDx0eXBlb2YgcGFja2FnZVJlbGVhc2VTY2hlbWE+LFxuICAgICAgXCJwYWNrYWdlX3JlbGVhc2VfaWRcIlxuICAgID4sXG4gICk6IFBhY2thZ2VSZWxlYXNlID0+IHtcbiAgICBjb25zdCBwYXJzZWQgPSBwYWNrYWdlUmVsZWFzZVNjaGVtYS5wYXJzZSh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IGBwYWNrYWdlX3JlbGVhc2VfJHtEYXRlLm5vdygpfWAsXG4gICAgICAuLi5wYWNrYWdlUmVsZWFzZSxcbiAgICB9KVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlUmVsZWFzZXM6IFsuLi5zdGF0ZS5wYWNrYWdlUmVsZWFzZXMsIHBhcnNlZF0sXG4gICAgfSkpXG4gICAgcmV0dXJuIHBhcnNlZFxuICB9LFxuICB1cGRhdGVQYWNrYWdlUmVsZWFzZTogKHBhY2thZ2VSZWxlYXNlOiBQYWNrYWdlUmVsZWFzZSk6IHZvaWQgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlUmVsZWFzZXM6IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5tYXAoKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZFxuICAgICAgICAgID8gcGFja2FnZVJlbGVhc2VcbiAgICAgICAgICA6IHByLFxuICAgICAgKSxcbiAgICB9KSlcbiAgfSxcbiAgZGVsZXRlUGFja2FnZUZpbGU6IChwYWNrYWdlRmlsZUlkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmluZEluZGV4KFxuICAgICAgICAoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX2ZpbGVfaWQgPT09IHBhY2thZ2VGaWxlSWQsXG4gICAgICApXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIHN0YXRlLnBhY2thZ2VGaWxlcy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiBkZWxldGVkXG4gIH0sXG4gIGFkZFBhY2thZ2VGaWxlOiAoXG4gICAgcGFja2FnZUZpbGU6IE9taXQ8UGFja2FnZUZpbGUsIFwicGFja2FnZV9maWxlX2lkXCI+LFxuICApOiBQYWNrYWdlRmlsZSA9PiB7XG4gICAgY29uc3QgbmV3UGFja2FnZUZpbGUgPSB7XG4gICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtEYXRlLm5vdygpfWAsXG4gICAgICAuLi5wYWNrYWdlRmlsZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHBhY2thZ2VGaWxlczogWy4uLnN0YXRlLnBhY2thZ2VGaWxlcywgbmV3UGFja2FnZUZpbGVdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdQYWNrYWdlRmlsZVxuICB9LFxuICB1cGRhdGVQYWNrYWdlRmlsZTogKFxuICAgIHBhY2thZ2VGaWxlSWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPE9taXQ8UGFja2FnZUZpbGUsIFwicGFja2FnZV9maWxlX2lkXCI+PixcbiAgKTogUGFja2FnZUZpbGUgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlRmlsZXM6IHN0YXRlLnBhY2thZ2VGaWxlcy5tYXAoKGZpbGUpID0+XG4gICAgICAgIGZpbGUucGFja2FnZV9maWxlX2lkID09PSBwYWNrYWdlRmlsZUlkID8geyAuLi5maWxlLCAuLi51cGRhdGVzIH0gOiBmaWxlLFxuICAgICAgKSxcbiAgICB9KSlcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9maWxlX2lkID09PSBwYWNrYWdlRmlsZUlkLFxuICAgICkhXG4gIH0sXG4gIGdldFN0YXJDb3VudDogKHBhY2thZ2VJZDogc3RyaW5nKTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCAmJiBhcC5pc19zdGFycmVkLFxuICAgICkubGVuZ3RoXG4gIH0sXG4gIGdldFBhY2thZ2VGaWxlc0J5UmVsZWFzZUlkOiAocGFja2FnZVJlbGVhc2VJZDogc3RyaW5nKTogUGFja2FnZUZpbGVbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKHBmKSA9PiBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gICAgKVxuICB9LFxuICAvKipcbiAgICogVXBkYXRlIGZzX3NoYSBmb3IgYSBwYWNrYWdlIHJlbGVhc2UgYmFzZWQgb24gaXRzIGZpbGVzXG4gICAqL1xuICB1cGRhdGVQYWNrYWdlUmVsZWFzZUZzU2hhOiAocGFja2FnZVJlbGVhc2VJZDogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IHN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAocGYpID0+IHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCxcbiAgICApXG4gICAgY29uc3QgZnNTaGEgPSBnZW5lcmF0ZUZzU2hhKHBhY2thZ2VGaWxlcylcblxuICAgIHNldCgoY3VycmVudFN0YXRlKSA9PiAoe1xuICAgICAgLi4uY3VycmVudFN0YXRlLFxuICAgICAgcGFja2FnZVJlbGVhc2VzOiBjdXJyZW50U3RhdGUucGFja2FnZVJlbGVhc2VzLm1hcCgocHIpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZFxuICAgICAgICAgID8geyAuLi5wciwgZnNfc2hhOiBmc1NoYSB9XG4gICAgICAgICAgOiBwcixcbiAgICAgICksXG4gICAgICBwYWNrYWdlczogY3VycmVudFN0YXRlLnBhY2thZ2VzLm1hcCgocGtnKSA9PlxuICAgICAgICBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZFxuICAgICAgICAgID8geyAuLi5wa2csIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfZnNfc2hhOiBmc1NoYSB9XG4gICAgICAgICAgOiBwa2csXG4gICAgICApLFxuICAgIH0pKVxuICB9LFxuXG4gIGFkZEFpUmV2aWV3OiAocmV2aWV3OiBPbWl0PEFpUmV2aWV3LCBcImFpX3Jldmlld19pZFwiPik6IEFpUmV2aWV3ID0+IHtcbiAgICBjb25zdCBiYXNlID0gYWlSZXZpZXdTY2hlbWEub21pdCh7IGFpX3Jldmlld19pZDogdHJ1ZSB9KS5wYXJzZShyZXZpZXcpXG4gICAgY29uc3QgbmV3UmV2aWV3ID0ge1xuICAgICAgYWlfcmV2aWV3X2lkOiBjcnlwdG8ucmFuZG9tVVVJRCgpLFxuICAgICAgLi4uYmFzZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGFpUmV2aWV3czogWy4uLnN0YXRlLmFpUmV2aWV3cywgbmV3UmV2aWV3XSxcbiAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICB9KSlcbiAgICByZXR1cm4gbmV3UmV2aWV3XG4gIH0sXG4gIHVwZGF0ZUFpUmV2aWV3OiAoXG4gICAgYWlSZXZpZXdJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8QWlSZXZpZXc+LFxuICApOiBBaVJldmlldyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgbGV0IHVwZGF0ZWQ6IEFpUmV2aWV3IHwgdW5kZWZpbmVkXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5haVJldmlld3MuZmluZEluZGV4KFxuICAgICAgICAoYXIpID0+IGFyLmFpX3Jldmlld19pZCA9PT0gYWlSZXZpZXdJZCxcbiAgICAgIClcbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiBzdGF0ZVxuICAgICAgY29uc3QgYWlSZXZpZXdzID0gWy4uLnN0YXRlLmFpUmV2aWV3c11cbiAgICAgIGFpUmV2aWV3c1tpbmRleF0gPSB7IC4uLmFpUmV2aWV3c1tpbmRleF0sIC4uLnVwZGF0ZXMgfVxuICAgICAgdXBkYXRlZCA9IGFpUmV2aWV3c1tpbmRleF1cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhaVJldmlld3MgfVxuICAgIH0pXG4gICAgcmV0dXJuIHVwZGF0ZWRcbiAgfSxcbiAgZ2V0QWlSZXZpZXdCeUlkOiAoYWlSZXZpZXdJZDogc3RyaW5nKTogQWlSZXZpZXcgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWlSZXZpZXdzLmZpbmQoKGFyKSA9PiBhci5haV9yZXZpZXdfaWQgPT09IGFpUmV2aWV3SWQpXG4gIH0sXG4gIGxpc3RBaVJldmlld3M6ICgpOiBBaVJldmlld1tdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFpUmV2aWV3c1xuICB9LFxuICBhZGREYXRhc2hlZXQ6ICh7IGNoaXBfbmFtZSB9OiB7IGNoaXBfbmFtZTogc3RyaW5nIH0pOiBEYXRhc2hlZXQgPT4ge1xuICAgIGNvbnN0IG5ld0RhdGFzaGVldCA9IGRhdGFzaGVldFNjaGVtYS5wYXJzZSh7XG4gICAgICBkYXRhc2hlZXRfaWQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICBjaGlwX25hbWUsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBwaW5faW5mb3JtYXRpb246IG51bGwsXG4gICAgICBkYXRhc2hlZXRfcGRmX3VybHM6IG51bGwsXG4gICAgICBhaV9kZXNjcmlwdGlvbjogbnVsbCxcbiAgICB9KVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBkYXRhc2hlZXRzOiBbLi4uc3RhdGUuZGF0YXNoZWV0cywgbmV3RGF0YXNoZWV0XSxcbiAgICB9KSlcbiAgICByZXR1cm4gbmV3RGF0YXNoZWV0XG4gIH0sXG4gIGdldERhdGFzaGVldEJ5SWQ6IChkYXRhc2hlZXRJZDogc3RyaW5nKTogRGF0YXNoZWV0IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmRhdGFzaGVldHMuZmluZCgoZCkgPT4gZC5kYXRhc2hlZXRfaWQgPT09IGRhdGFzaGVldElkKVxuICB9LFxuICBnZXREYXRhc2hlZXRCeUNoaXBOYW1lOiAoY2hpcE5hbWU6IHN0cmluZyk6IERhdGFzaGVldCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5kYXRhc2hlZXRzLmZpbmQoXG4gICAgICAoZCkgPT4gZC5jaGlwX25hbWUudG9Mb3dlckNhc2UoKSA9PT0gY2hpcE5hbWUudG9Mb3dlckNhc2UoKSxcbiAgICApXG4gIH0sXG4gIGxpc3REYXRhc2hlZXRzOiAoe1xuICAgIGNoaXBfbmFtZSxcbiAgICBpc19wb3B1bGFyLFxuICB9OiB7IGNoaXBfbmFtZT86IHN0cmluZzsgaXNfcG9wdWxhcj86IGJvb2xlYW4gfSA9IHt9KTogRGF0YXNoZWV0W10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICBpZiAoaXNfcG9wdWxhcikge1xuICAgICAgcmV0dXJuIHN0YXRlLmRhdGFzaGVldHNcbiAgICB9XG5cbiAgICBpZiAoY2hpcF9uYW1lKSB7XG4gICAgICByZXR1cm4gc3RhdGUuZGF0YXNoZWV0cy5maWx0ZXIoXG4gICAgICAgIChkKSA9PiBkLmNoaXBfbmFtZS50b0xvd2VyQ2FzZSgpID09PSBjaGlwX25hbWUudG9Mb3dlckNhc2UoKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGUuZGF0YXNoZWV0c1xuICB9LFxuICB1cGRhdGVEYXRhc2hlZXQ6IChcbiAgICBkYXRhc2hlZXRJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8RGF0YXNoZWV0PixcbiAgKTogRGF0YXNoZWV0IHwgdW5kZWZpbmVkID0+IHtcbiAgICBsZXQgdXBkYXRlZDogRGF0YXNoZWV0IHwgdW5kZWZpbmVkXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5kYXRhc2hlZXRzLmZpbmRJbmRleChcbiAgICAgICAgKGQpID0+IGQuZGF0YXNoZWV0X2lkID09PSBkYXRhc2hlZXRJZCxcbiAgICAgIClcbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiBzdGF0ZVxuICAgICAgY29uc3QgZGF0YXNoZWV0cyA9IFsuLi5zdGF0ZS5kYXRhc2hlZXRzXVxuICAgICAgZGF0YXNoZWV0c1tpbmRleF0gPSB7IC4uLmRhdGFzaGVldHNbaW5kZXhdLCAuLi51cGRhdGVzIH1cbiAgICAgIHVwZGF0ZWQgPSBkYXRhc2hlZXRzW2luZGV4XVxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGRhdGFzaGVldHMgfVxuICAgIH0pXG4gICAgcmV0dXJuIHVwZGF0ZWRcbiAgfSxcbiAgYWRkUGFja2FnZUJ1aWxkOiAoXG4gICAgcGFja2FnZUJ1aWxkOiBPbWl0PFBhY2thZ2VCdWlsZCwgXCJwYWNrYWdlX2J1aWxkX2lkXCI+LFxuICApOiBQYWNrYWdlQnVpbGQgPT4ge1xuICAgIGNvbnN0IG5ld1BhY2thZ2VCdWlsZCA9IHtcbiAgICAgIHBhY2thZ2VfYnVpbGRfaWQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICAuLi5wYWNrYWdlQnVpbGQsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlQnVpbGRzOiBbLi4uc3RhdGUucGFja2FnZUJ1aWxkcywgbmV3UGFja2FnZUJ1aWxkXSxcbiAgICAgIC8vIEF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSBwYWNrYWdlIHJlbGVhc2UgdG8gcmVmZXJlbmNlIHRoaXMgYXMgdGhlIGxhdGVzdCBidWlsZFxuICAgICAgcGFja2FnZVJlbGVhc2VzOiBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMubWFwKChyZWxlYXNlKSA9PlxuICAgICAgICByZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZUJ1aWxkLnBhY2thZ2VfcmVsZWFzZV9pZFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5yZWxlYXNlLFxuICAgICAgICAgICAgICBsYXRlc3RfcGFja2FnZV9idWlsZF9pZDogbmV3UGFja2FnZUJ1aWxkLnBhY2thZ2VfYnVpbGRfaWQsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiByZWxlYXNlLFxuICAgICAgKSxcbiAgICB9KSlcbiAgICByZXR1cm4gbmV3UGFja2FnZUJ1aWxkXG4gIH0sXG4gIGdldFBhY2thZ2VCdWlsZEJ5SWQ6IChwYWNrYWdlQnVpbGRJZDogc3RyaW5nKTogUGFja2FnZUJ1aWxkIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnBhY2thZ2VCdWlsZHMuZmluZChcbiAgICAgIChwYikgPT4gcGIucGFja2FnZV9idWlsZF9pZCA9PT0gcGFja2FnZUJ1aWxkSWQsXG4gICAgKVxuICB9LFxuICBnZXRQYWNrYWdlQnVpbGRzQnlSZWxlYXNlSWQ6IChwYWNrYWdlUmVsZWFzZUlkOiBzdHJpbmcpOiBQYWNrYWdlQnVpbGRbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5wYWNrYWdlQnVpbGRzXG4gICAgICAuZmlsdGVyKChwYikgPT4gcGIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkKVxuICAgICAgLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKCksXG4gICAgICApXG4gIH0sXG4gIHVwZGF0ZVBhY2thZ2VCdWlsZDogKFxuICAgIHBhY2thZ2VCdWlsZElkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxQYWNrYWdlQnVpbGQ+LFxuICApOiBQYWNrYWdlQnVpbGQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGxldCB1cGRhdGVkOiBQYWNrYWdlQnVpbGQgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLnBhY2thZ2VCdWlsZHMuZmluZEluZGV4KFxuICAgICAgICAocGIpID0+IHBiLnBhY2thZ2VfYnVpbGRfaWQgPT09IHBhY2thZ2VCdWlsZElkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHN0YXRlXG4gICAgICBjb25zdCBwYWNrYWdlQnVpbGRzID0gWy4uLnN0YXRlLnBhY2thZ2VCdWlsZHNdXG4gICAgICBwYWNrYWdlQnVpbGRzW2luZGV4XSA9IHsgLi4ucGFja2FnZUJ1aWxkc1tpbmRleF0sIC4uLnVwZGF0ZXMgfVxuICAgICAgdXBkYXRlZCA9IHBhY2thZ2VCdWlsZHNbaW5kZXhdXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgcGFja2FnZUJ1aWxkcyB9XG4gICAgfSlcbiAgICByZXR1cm4gdXBkYXRlZFxuICB9LFxufSkpXG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgY29uc3QgZXJyb3JTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGVycm9yX2NvZGU6IHouc3RyaW5nKCksXG4gICAgbWVzc2FnZTogei5zdHJpbmcoKSxcbiAgfSlcbiAgLnBhc3N0aHJvdWdoKClcblxuZXhwb3J0IGNvbnN0IGVycm9yUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGVycm9yOiBlcnJvclNjaGVtYSxcbn0pXG5cbmV4cG9ydCBjb25zdCBzbmlwcGV0U2NoZW1hID0gei5vYmplY3Qoe1xuICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIHVuc2NvcGVkX25hbWU6IHouc3RyaW5nKCksXG4gIG93bmVyX25hbWU6IHouc3RyaW5nKCksXG4gIGlzX3N0YXJyZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBjb2RlOiB6LnN0cmluZygpLFxuICBkdHM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY29tcGlsZWRfanM6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICBjaXJjdWl0X2pzb246IHouYXJyYXkoei5yZWNvcmQoei5hbnkoKSkpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudDogei5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHN0YXJyZWRfYXQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgc25pcHBldF90eXBlOiB6LmVudW0oW1wiYm9hcmRcIiwgXCJwYWNrYWdlXCIsIFwibW9kZWxcIiwgXCJmb290cHJpbnRcIl0pLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB2ZXJzaW9uOiB6LnN0cmluZygpLmRlZmF1bHQoXCIwLjAuMVwiKSxcbiAgc3Rhcl9jb3VudDogei5udW1iZXIoKS5kZWZhdWx0KDApLFxuICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcHVibGljOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICBpc191bmxpc3RlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIHRhZ3M6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBTbmlwcGV0ID0gei5pbmZlcjx0eXBlb2Ygc25pcHBldFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHNlc3Npb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHouc3RyaW5nKCksXG4gIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gIGV4cGlyZXNfYXQ6IHouc3RyaW5nKCksXG4gIGlzX2NsaV9zZXNzaW9uOiB6LmJvb2xlYW4oKSxcbn0pXG5leHBvcnQgdHlwZSBTZXNzaW9uID0gei5pbmZlcjx0eXBlb2Ygc2Vzc2lvblNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGxvZ2luUGFnZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgbG9naW5fcGFnZV9pZDogei5zdHJpbmcoKSxcbiAgbG9naW5fcGFnZV9hdXRoX3Rva2VuOiB6LnN0cmluZygpLFxuICB3YXNfbG9naW5fc3VjY2Vzc2Z1bDogei5ib29sZWFuKCksXG4gIGhhc19iZWVuX3VzZWRfdG9fY3JlYXRlX3Nlc3Npb246IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICBleHBpcmVzX2F0OiB6LnN0cmluZygpLFxufSlcbmV4cG9ydCB0eXBlIExvZ2luUGFnZSA9IHouaW5mZXI8dHlwZW9mIGxvZ2luUGFnZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHNoaXBwaW5nSW5mb1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgZmlyc3ROYW1lOiB6LnN0cmluZygpLFxuICBsYXN0TmFtZTogei5zdHJpbmcoKSxcbiAgY29tcGFueU5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgYWRkcmVzczogei5zdHJpbmcoKSxcbiAgYXBhcnRtZW50OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGNpdHk6IHouc3RyaW5nKCksXG4gIHN0YXRlOiB6LnN0cmluZygpLFxuICB6aXBDb2RlOiB6LnN0cmluZygpLFxuICBjb3VudHJ5OiB6LnN0cmluZygpLFxuICBwaG9uZTogei5zdHJpbmcoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBhY2NvdW50U2NoZW1hID0gei5vYmplY3Qoe1xuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBnaXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCksXG4gIHNoaXBwaW5nSW5mbzogc2hpcHBpbmdJbmZvU2NoZW1hLm9wdGlvbmFsKCksXG59KVxuZXhwb3J0IHR5cGUgQWNjb3VudCA9IHouaW5mZXI8dHlwZW9mIGFjY291bnRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBvcmRlclNjaGVtYSA9IHoub2JqZWN0KHtcbiAgb3JkZXJfaWQ6IHouc3RyaW5nKCksXG4gIGFjY291bnRfaWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgaXNfcnVubmluZzogei5ib29sZWFuKCksXG4gIGlzX3N0YXJ0ZWQ6IHouYm9vbGVhbigpLFxuICBpc19maW5pc2hlZDogei5ib29sZWFuKCksXG4gIGVycm9yOiBlcnJvclNjaGVtYS5udWxsYWJsZSgpLFxuICBoYXNfZXJyb3I6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICBzdGFydGVkX2F0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGNvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBjaXJjdWl0X2pzb246IHouYW55KCksXG59KVxuZXhwb3J0IHR5cGUgT3JkZXIgPSB6LmluZmVyPHR5cGVvZiBvcmRlclNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IG9yZGVyRmlsZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgb3JkZXJfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgb3JkZXJfaWQ6IHouc3RyaW5nKCksXG4gIGlzX2dlcmJlcnNfemlwOiB6LmJvb2xlYW4oKSxcbiAgY29udGVudF90eXBlOiB6LnN0cmluZygpLFxuICBmb3JfcHJvdmlkZXI6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgdXBsb2FkZWRfYXQ6IHouc3RyaW5nKCksXG4gIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBjb250ZW50X2J5dGVzOiB6Lmluc3RhbmNlb2YoVWludDhBcnJheSkubnVsbGFibGUoKSxcbn0pXG5leHBvcnQgdHlwZSBPcmRlckZpbGUgPSB6LmluZmVyPHR5cGVvZiBvcmRlckZpbGVTY2hlbWE+XG5cbmNvbnN0IHNoaXBwaW5nT3B0aW9uU2NoZW1hID0gei5vYmplY3Qoe1xuICBjYXJyaWVyOiB6LnN0cmluZygpLFxuICBzZXJ2aWNlOiB6LnN0cmluZygpLFxuICBjb3N0OiB6Lm51bWJlcigpLFxufSlcbmV4cG9ydCB0eXBlIFNoaXBwaW5nT3B0aW9uID0gei5pbmZlcjx0eXBlb2Ygc2hpcHBpbmdPcHRpb25TY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBxdW90ZWRDb21wb25lbnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIG1hbnVmYWN0dXJlcl9wYXJ0X251bWJlcjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBzdXBwbGllcl9wYXJ0X251bWJlcjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBxdWFudGl0eTogei5udW1iZXIoKS5kZWZhdWx0KDApLFxuICB1bml0X3ByaWNlOiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIHRvdGFsX3ByaWNlOiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIGF2YWlsYWJsZTogei5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbn0pXG5leHBvcnQgdHlwZSBRdW90ZWRDb21wb25lbnQgPSB6LmluZmVyPHR5cGVvZiBxdW90ZWRDb21wb25lbnRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBvcmRlclF1b3RlU2NoZW1hID0gei5vYmplY3Qoe1xuICBvcmRlcl9xdW90ZV9pZDogei5zdHJpbmcoKSxcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgaXNfY29tcGxldGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcHJvY2Vzc2luZzogei5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgdmVuZG9yX25hbWU6IHouc3RyaW5nKCksXG4gIGVycm9yOiBlcnJvclNjaGVtYS5udWxsYWJsZSgpLFxuICBoYXNfZXJyb3I6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICB1cGRhdGVkX2F0OiB6LnN0cmluZygpLFxuICBjb21wbGV0ZWRfYXQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgcXVvdGVkX2NvbXBvbmVudHM6IHouYXJyYXkocXVvdGVkQ29tcG9uZW50U2NoZW1hKS5udWxsYWJsZSgpLFxuICBiYXJlX3BjYl9jb3N0OiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIHNoaXBwaW5nX29wdGlvbnM6IHouYXJyYXkoc2hpcHBpbmdPcHRpb25TY2hlbWEpLFxuICB0b3RhbF9jb3N0X3dpdGhvdXRfc2hpcHBpbmc6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbn0pXG5leHBvcnQgdHlwZSBPcmRlclF1b3RlID0gei5pbmZlcjx0eXBlb2Ygb3JkZXJRdW90ZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGFpUmV2aWV3U2NoZW1hID0gei5vYmplY3Qoe1xuICBhaV9yZXZpZXdfaWQ6IHouc3RyaW5nKCkudXVpZCgpLFxuICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgYWlfcmV2aWV3X3RleHQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgc3RhcnRfcHJvY2Vzc2luZ19hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCksXG4gIGZpbmlzaGVkX3Byb2Nlc3NpbmdfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLFxuICBwcm9jZXNzaW5nX2Vycm9yOiB6LmFueSgpLm51bGxhYmxlKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgZGlzcGxheV9zdGF0dXM6IHouZW51bShbXCJwZW5kaW5nXCIsIFwiY29tcGxldGVkXCIsIFwiZmFpbGVkXCJdKSxcbn0pXG5leHBvcnQgdHlwZSBBaVJldmlldyA9IHouaW5mZXI8dHlwZW9mIGFpUmV2aWV3U2NoZW1hPlxuXG5leHBvcnQgY29uc3QgZGF0YXNoZWV0UGluSW5mb3JtYXRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBpbl9udW1iZXI6IHouc3RyaW5nKCksXG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLFxuICBjYXBhYmlsaXRpZXM6IHouYXJyYXkoei5zdHJpbmcoKSksXG59KVxuXG5leHBvcnQgY29uc3QgZGF0YXNoZWV0U2NoZW1hID0gei5vYmplY3Qoe1xuICBkYXRhc2hlZXRfaWQ6IHouc3RyaW5nKCksXG4gIGNoaXBfbmFtZTogei5zdHJpbmcoKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgcGluX2luZm9ybWF0aW9uOiBkYXRhc2hlZXRQaW5JbmZvcm1hdGlvblNjaGVtYS5hcnJheSgpLm51bGxhYmxlKCksXG4gIGRhdGFzaGVldF9wZGZfdXJsczogei5hcnJheSh6LnN0cmluZygpKS5udWxsYWJsZSgpLFxuICBhaV9kZXNjcmlwdGlvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxufSlcbmV4cG9ydCB0eXBlIERhdGFzaGVldCA9IHouaW5mZXI8dHlwZW9mIGRhdGFzaGVldFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGdpdGh1Ykluc3RhbGxhdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgZ2l0aHViX2luc3RhbGxhdGlvbl9pZDogei5zdHJpbmcoKSxcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgaW5zdGFsbGF0aW9uX2lkOiB6LnN0cmluZygpLCAvLyBHaXRIdWIgQXBwIGluc3RhbGxhdGlvbiBJRFxuICBnaXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgdXBkYXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLFxuICBpc19hY3RpdmU6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gIGFjY2Vzc190b2tlbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksIC8vIEZvciBzdG9yaW5nIEdpdEh1YiBhY2Nlc3MgdG9rZW5cbiAgYWNjZXNzX3Rva2VuX2V4cGlyZXNfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG59KVxuZXhwb3J0IHR5cGUgR2l0aHViSW5zdGFsbGF0aW9uID0gei5pbmZlcjx0eXBlb2YgZ2l0aHViSW5zdGFsbGF0aW9uU2NoZW1hPlxuXG4vLyBUT0RPOiBSZW1vdmUgdGhpcyBzY2hlbWEgYWZ0ZXIgbWlncmF0aW9uIHRvIGFjY291bnRQYWNrYWdlcyBpcyBjb21wbGV0ZVxuZXhwb3J0IGNvbnN0IGFjY291bnRTbmlwcGV0U2NoZW1hID0gei5vYmplY3Qoe1xuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICBoYXNfc3RhcnJlZDogei5ib29sZWFuKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCksXG59KVxuZXhwb3J0IHR5cGUgQWNjb3VudFNuaXBwZXQgPSB6LmluZmVyPHR5cGVvZiBhY2NvdW50U25pcHBldFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGFjY291bnRQYWNrYWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBhY2NvdW50X3BhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gIGlzX3N0YXJyZWQ6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICB1cGRhdGVkX2F0OiB6LnN0cmluZygpLFxufSlcbmV4cG9ydCB0eXBlIEFjY291bnRQYWNrYWdlID0gei5pbmZlcjx0eXBlb2YgYWNjb3VudFBhY2thZ2VTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBwYWNrYWdlUmVsZWFzZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICB2ZXJzaW9uOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGlzX2xvY2tlZDogei5ib29sZWFuKCksXG4gIGlzX2xhdGVzdDogei5ib29sZWFuKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgY29tbWl0X3NoYTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGxpY2Vuc2U6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3I6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0OiB6XG4gICAgLnN0cmluZygpXG4gICAgLmRhdGV0aW1lKClcbiAgICAubnVsbGFibGUoKVxuICAgIC5vcHRpb25hbCgpLFxuICBoYXNfdHJhbnNwaWxlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIHRyYW5zcGlsYXRpb25fZXJyb3I6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBmc19zaGE6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICAvLyBCdWlsZCBTdGF0dXMgYW5kIERpc3BsYXlcbiAgZGlzcGxheV9zdGF0dXM6IHpcbiAgICAuZW51bShbXCJwZW5kaW5nXCIsIFwiYnVpbGRpbmdcIiwgXCJjb21wbGV0ZVwiLCBcImVycm9yXCJdKVxuICAgIC5kZWZhdWx0KFwicGVuZGluZ1wiKSxcbiAgdG90YWxfYnVpbGRfZHVyYXRpb25fbXM6IHoubnVtYmVyKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuXG4gIC8vIFRyYW5zcGlsYXRpb24gUHJvY2Vzc1xuICB0cmFuc3BpbGF0aW9uX2Rpc3BsYXlfc3RhdHVzOiB6XG4gICAgLmVudW0oW1wicGVuZGluZ1wiLCBcImJ1aWxkaW5nXCIsIFwiY29tcGxldGVcIiwgXCJlcnJvclwiXSlcbiAgICAuZGVmYXVsdChcInBlbmRpbmdcIiksXG4gIHRyYW5zcGlsYXRpb25faW5fcHJvZ3Jlc3M6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICB0cmFuc3BpbGF0aW9uX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIHRyYW5zcGlsYXRpb25fY29tcGxldGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICB0cmFuc3BpbGF0aW9uX2xvZ3M6IHouYXJyYXkoei5hbnkoKSkuZGVmYXVsdChbXSksXG4gIHRyYW5zcGlsYXRpb25faXNfc3RhbGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuXG4gIC8vIENpcmN1aXQgSlNPTiBCdWlsZCBQcm9jZXNzXG4gIGNpcmN1aXRfanNvbl9idWlsZF9kaXNwbGF5X3N0YXR1czogelxuICAgIC5lbnVtKFtcInBlbmRpbmdcIiwgXCJidWlsZGluZ1wiLCBcImNvbXBsZXRlXCIsIFwiZXJyb3JcIl0pXG4gICAgLmRlZmF1bHQoXCJwZW5kaW5nXCIpLFxuICBjaXJjdWl0X2pzb25fYnVpbGRfaW5fcHJvZ3Jlc3M6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBjaXJjdWl0X2pzb25fYnVpbGRfc3RhcnRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2NvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IHouYXJyYXkoei5hbnkoKSkuZGVmYXVsdChbXSksXG4gIGNpcmN1aXRfanNvbl9idWlsZF9pc19zdGFsZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG5cbiAgLy8gQUkgUmV2aWV3XG4gIGFpX3Jldmlld190ZXh0OiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKS5vcHRpb25hbCgpLFxuICBhaV9yZXZpZXdfc3RhcnRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgYWlfcmV2aWV3X2NvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgYWlfcmV2aWV3X2Vycm9yOiB6LmFueSgpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgYWlfcmV2aWV3X2xvZ3M6IHouYXJyYXkoei5hbnkoKSkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICBhaV9yZXZpZXdfcmVxdWVzdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcblxuICAvLyBQcmV2aWV3XG4gIGlzX3ByX3ByZXZpZXc6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBnaXRodWJfcHJfbnVtYmVyOiB6Lm51bWJlcigpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcblxuICAvLyBMYXRlc3QgQnVpbGQgUmVmZXJlbmNlXG4gIGxhdGVzdF9wYWNrYWdlX2J1aWxkX2lkOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBQYWNrYWdlUmVsZWFzZSA9IHouaW5mZXI8dHlwZW9mIHBhY2thZ2VSZWxlYXNlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZUZpbGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBhY2thZ2VfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgY29udGVudF9taW1ldHlwZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGlzX3JlbGVhc2VfdGFyYmFsbDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgbnBtX3BhY2tfb3V0cHV0OiB6LmFueSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBQYWNrYWdlRmlsZSA9IHouaW5mZXI8dHlwZW9mIHBhY2thZ2VGaWxlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgY3JlYXRvcl9hY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBvd25lcl9vcmdfaWQ6IHouc3RyaW5nKCksXG4gIG93bmVyX2dpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBnaXRodWJfcmVwb19mdWxsX25hbWU6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLFxuICB1cGRhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIGlzX3NuaXBwZXQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19ib2FyZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3BhY2thZ2U6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19tb2RlbDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2Zvb3RwcmludDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3ByaXZhdGU6IHouYm9vbGVhbigpLm51bGxhYmxlKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3B1YmxpYzogei5ib29sZWFuKCkubnVsbGFibGUoKS5kZWZhdWx0KHRydWUpLFxuICBpc191bmxpc3RlZDogei5ib29sZWFuKCkubnVsbGFibGUoKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgc25pcHBldF90eXBlOiB6LmVudW0oW1wiYm9hcmRcIiwgXCJwYWNrYWdlXCIsIFwibW9kZWxcIiwgXCJmb290cHJpbnRcIl0pLm9wdGlvbmFsKCksXG4gIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgbGF0ZXN0X3ZlcnNpb246IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgbGljZW5zZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICB3ZWJzaXRlOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgc3Rhcl9jb3VudDogei5udW1iZXIoKS5kZWZhdWx0KDApLFxuICBhaV9kZXNjcmlwdGlvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBsYXRlc3RfbGljZW5zZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGFpX3VzYWdlX2luc3RydWN0aW9uczogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2ZzX3NoYTogei5zdHJpbmcoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG4gIGRlZmF1bHRfdmlldzogelxuICAgIC5lbnVtKFtcImZpbGVzXCIsIFwiM2RcIiwgXCJwY2JcIiwgXCJzY2hlbWF0aWNcIl0pXG4gICAgLmRlZmF1bHQoXCJmaWxlc1wiKVxuICAgIC5vcHRpb25hbCgpLFxuICBhbGxvd19wcl9wcmV2aWV3czogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSkub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBQYWNrYWdlID0gei5pbmZlcjx0eXBlb2YgcGFja2FnZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGpsY3BjYk9yZGVyU3RhdGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGpsY3BjYl9vcmRlcl9zdGF0ZV9pZDogei5zdHJpbmcoKSxcbiAgb3JkZXJfaWQ6IHouc3RyaW5nKCksXG4gIGFyZV9nZXJiZXJzX3VwbG9hZGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfZ2VyYmVyX2FuYWx5emVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgYXJlX2luaXRpYWxfY29zdHNfY2FsY3VsYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX3BjYl9hZGRlZF90b19jYXJ0OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfYm9tX3VwbG9hZGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcG5wX3VwbG9hZGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfYm9tX3BucF9hbmFseXplZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2JvbV9wYXJzaW5nX2NvbXBsZXRlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgYXJlX2NvbXBvbmVudHNfYXZhaWxhYmxlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcGF0Y2hfbWFwX2dlbmVyYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2pzb25fbWVyZ2VfZmlsZV9jcmVhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfZGZtX3Jlc3VsdF9nZW5lcmF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBhcmVfZmlsZXNfZG93bmxvYWRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGFyZV9wcm9kdWN0X2NhdGVnb3JpZXNfZmV0Y2hlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGFyZV9maW5hbF9jb3N0c19jYWxjdWxhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX3VwZGF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19hZGRlZF90b19jYXJ0OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgdXBsb2FkZWRfZ2VyYmVyX21ldGFkYXRhOiB6LmFueSgpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgZ2VyYmVyX2FuYWx5c2lzOiB6LmFueSgpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgYXJlX2dlcmJlcnNfZ2VuZXJhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgY3VycmVudF9zdGVwOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbn0pXG5leHBvcnQgdHlwZSBKbGNwY2JPcmRlclN0YXRlID0gei5pbmZlcjx0eXBlb2YgamxjcGNiT3JkZXJTdGF0ZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGpsY3BjYk9yZGVyU3RlcFJ1blNjaGVtYSA9IHoub2JqZWN0KHtcbiAgamxjcGNiX29yZGVyX3N0ZXBfcnVuX2lkOiB6LnN0cmluZygpLFxuICBpc19ydW5uaW5nOiB6LmJvb2xlYW4oKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG4gIHN0ZXBfZnVuY3Rpb25fbmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG4gIGpsY3BjYl9vcmRlcl9zdGF0ZV9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG4gIGVycm9yX21lc3NhZ2U6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxufSlcbmV4cG9ydCB0eXBlIEpsY3BjYk9yZGVyU3RlcFJ1biA9IHouaW5mZXI8dHlwZW9mIGpsY3BjYk9yZGVyU3RlcFJ1blNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHBhY2thZ2VCdWlsZFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgcGFja2FnZV9idWlsZF9pZDogei5zdHJpbmcoKS51dWlkKCksXG4gIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLFxuICB0cmFuc3BpbGF0aW9uX2luX3Byb2dyZXNzOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgdHJhbnNwaWxhdGlvbl9zdGFydGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICB0cmFuc3BpbGF0aW9uX2NvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgdHJhbnNwaWxhdGlvbl9sb2dzOiB6LmFycmF5KHouYW55KCkpLmRlZmF1bHQoW10pLFxuICB0cmFuc3BpbGF0aW9uX2Vycm9yOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2luX3Byb2dyZXNzOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiB6LmFycmF5KHouYW55KCkpLmRlZmF1bHQoW10pLFxuICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3I6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBidWlsZF9pbl9wcm9ncmVzczogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGJ1aWxkX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGJ1aWxkX2NvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgYnVpbGRfZXJyb3I6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBidWlsZF9lcnJvcl9sYXN0X3VwZGF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgcHJldmlld191cmw6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBidWlsZF9sb2dzOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgYnJhbmNoX25hbWU6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBjb21taXRfbWVzc2FnZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNvbW1pdF9hdXRob3I6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxufSlcbmV4cG9ydCB0eXBlIFBhY2thZ2VCdWlsZCA9IHouaW5mZXI8dHlwZW9mIHBhY2thZ2VCdWlsZFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGRhdGFiYXNlU2NoZW1hID0gei5vYmplY3Qoe1xuICBpZENvdW50ZXI6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbiAgc25pcHBldHM6IHouYXJyYXkoc25pcHBldFNjaGVtYSkuZGVmYXVsdChbXSksXG4gIHBhY2thZ2VSZWxlYXNlczogei5hcnJheShwYWNrYWdlUmVsZWFzZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIHBhY2thZ2VGaWxlczogei5hcnJheShwYWNrYWdlRmlsZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIHNlc3Npb25zOiB6LmFycmF5KHNlc3Npb25TY2hlbWEpLmRlZmF1bHQoW10pLFxuICBsb2dpblBhZ2VzOiB6LmFycmF5KGxvZ2luUGFnZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGFjY291bnRzOiB6LmFycmF5KGFjY291bnRTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBwYWNrYWdlczogei5hcnJheShwYWNrYWdlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgb3JkZXJzOiB6LmFycmF5KG9yZGVyU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgb3JkZXJGaWxlczogei5hcnJheShvcmRlckZpbGVTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBhY2NvdW50U25pcHBldHM6IHouYXJyYXkoYWNjb3VudFNuaXBwZXRTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBhY2NvdW50UGFja2FnZXM6IHouYXJyYXkoYWNjb3VudFBhY2thZ2VTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBqbGNwY2JPcmRlclN0YXRlOiB6LmFycmF5KGpsY3BjYk9yZGVyU3RhdGVTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBqbGNwY2JPcmRlclN0ZXBSdW5zOiB6LmFycmF5KGpsY3BjYk9yZGVyU3RlcFJ1blNjaGVtYSkuZGVmYXVsdChbXSksXG4gIG9yZGVyUXVvdGVzOiB6LmFycmF5KG9yZGVyUXVvdGVTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBhaVJldmlld3M6IHouYXJyYXkoYWlSZXZpZXdTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBkYXRhc2hlZXRzOiB6LmFycmF5KGRhdGFzaGVldFNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGdpdGh1Ykluc3RhbGxhdGlvbnM6IHouYXJyYXkoZ2l0aHViSW5zdGFsbGF0aW9uU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgcGFja2FnZUJ1aWxkczogei5hcnJheShwYWNrYWdlQnVpbGRTY2hlbWEpLmRlZmF1bHQoW10pLFxufSlcbmV4cG9ydCB0eXBlIERhdGFiYXNlU2NoZW1hID0gei5pbmZlcjx0eXBlb2YgZGF0YWJhc2VTY2hlbWE+XG4iLCAiaW1wb3J0IGZzIGZyb20gXCJmc1wiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgYXhpb3MgZnJvbSBcInJlZGF4aW9zXCJcbmltcG9ydCB0eXBlIHsgRGJDbGllbnQgfSBmcm9tIFwiLi9kYi1jbGllbnRcIlxuaW1wb3J0IHR5cGUgeyBQYWNrYWdlLCBQYWNrYWdlRmlsZSwgUGFja2FnZVJlbGVhc2UgfSBmcm9tIFwiLi9zY2hlbWFcIlxuXG5jb25zdCBleHRyYWN0VHNjaURlcGVuZGVuY2llcyA9IChcbiAgY29kZTogc3RyaW5nLFxuKTogQXJyYXk8eyBvd25lcjogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfT4gPT4ge1xuICBjb25zdCByZWdleCA9IC9AdHNjaVxcLyhbXi5dKylcXC4oW15cIidcXHNdKykvZ1xuICBjb25zdCBtYXRjaGVzID0gQXJyYXkuZnJvbShjb2RlLm1hdGNoQWxsKHJlZ2V4KSlcbiAgcmV0dXJuIG1hdGNoZXMubWFwKChtYXRjaCkgPT4gKHtcbiAgICBvd25lcjogbWF0Y2hbMV0sXG4gICAgbmFtZTogbWF0Y2hbMl0sXG4gIH0pKVxufVxuXG5jb25zdCByZWdpc3RyeUFwaSA9IGF4aW9zLmNyZWF0ZSh7XG4gIGJhc2VVUkw6IFwiaHR0cHM6Ly9yZWdpc3RyeS1hcGkudHNjaXJjdWl0LmNvbVwiLFxuICBoZWFkZXJzOiB7XG4gICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgfSxcbn0pXG5cbmNvbnN0IGZldGNoUGFja2FnZUZyb21SZWdpc3RyeSA9IGFzeW5jIChvd25lcjogc3RyaW5nLCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgZnVsbE5hbWUgPSBgJHtvd25lcn0vJHtuYW1lfWBcbiAgY29uc29sZS5sb2coYEZldGNoaW5nIHBhY2thZ2UgJHtmdWxsTmFtZX0uLi5gKVxuXG4gIGxldCBwYWNrYWdlRGF0YVxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVnaXN0cnlBcGkucG9zdChcIi9wYWNrYWdlcy9nZXRcIiwge1xuICAgICAgbmFtZTogZnVsbE5hbWUsXG4gICAgfSlcbiAgICBwYWNrYWdlRGF0YSA9IHJlc3BvbnNlLmRhdGFcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBwYWNrYWdlIGRhdGEgZm9yICR7ZnVsbE5hbWV9OmAsIGUpXG4gICAgdGhyb3cgZVxuICB9XG5cbiAgbGV0IHJlbGVhc2VEYXRhXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZWdpc3RyeUFwaS5wb3N0KFwiL3BhY2thZ2VfcmVsZWFzZXMvZ2V0XCIsIHtcbiAgICAgIHBhY2thZ2VfaWQ6IHBhY2thZ2VEYXRhLnBhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIGlzX2xhdGVzdDogdHJ1ZSxcbiAgICB9KVxuICAgIHJlbGVhc2VEYXRhID0gcmVzcG9uc2UuZGF0YVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGZldGNoIHJlbGVhc2UgZGF0YSBmb3IgJHtmdWxsTmFtZX06YCwgZSlcbiAgICB0aHJvdyBlXG4gIH1cblxuICBsZXQgZmlsZXNEYXRhXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZWdpc3RyeUFwaS5wb3N0KFwiL3BhY2thZ2VfZmlsZXMvbGlzdFwiLCB7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHJlbGVhc2VEYXRhLnBhY2thZ2VfcmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgfSlcbiAgICBmaWxlc0RhdGEgPSByZXNwb25zZS5kYXRhXG5cbiAgICAvLyBGZXRjaCBjb250ZW50X3RleHQgZm9yIGVhY2ggZmlsZSBpbmRpdmlkdWFsbHlcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXNEYXRhLnBhY2thZ2VfZmlsZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZpbGVSZXNwb25zZSA9IGF3YWl0IHJlZ2lzdHJ5QXBpLnBvc3QoXCIvcGFja2FnZV9maWxlcy9nZXRcIiwge1xuICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcmVsZWFzZURhdGEucGFja2FnZV9yZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgICBmaWxlX3BhdGg6IGZpbGUuZmlsZV9wYXRoLFxuICAgICAgICB9KVxuICAgICAgICBmaWxlLmNvbnRlbnRfdGV4dCA9IGZpbGVSZXNwb25zZS5kYXRhLnBhY2thZ2VfZmlsZS5jb250ZW50X3RleHRcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBgRmFpbGVkIHRvIGZldGNoIGNvbnRlbnQgZm9yIGZpbGUgJHtmaWxlLmZpbGVfcGF0aH0gaW4gcGFja2FnZSAke2Z1bGxOYW1lfTpgLFxuICAgICAgICAgIGUsXG4gICAgICAgIClcbiAgICAgICAgdGhyb3cgZVxuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBmaWxlcyBkYXRhIGZvciAke2Z1bGxOYW1lfTpgLCBlKVxuICAgIHRocm93IGVcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcGFja2FnZTogcGFja2FnZURhdGEucGFja2FnZSBhcyBQYWNrYWdlLFxuICAgIHJlbGVhc2U6IHJlbGVhc2VEYXRhLnBhY2thZ2VfcmVsZWFzZSBhcyBQYWNrYWdlUmVsZWFzZSxcbiAgICBmaWxlczogZmlsZXNEYXRhLnBhY2thZ2VfZmlsZXMgYXMgUGFja2FnZUZpbGVbXSxcbiAgfVxufVxuXG5jb25zdCBsb2FkUGFja2FnZVdpdGhEZXBlbmRlbmNpZXMgPSBhc3luYyAoXG4gIGRiOiBEYkNsaWVudCxcbiAgb3duZXI6IHN0cmluZyxcbiAgbmFtZTogc3RyaW5nLFxuICBsb2FkZWRQYWNrYWdlcyA9IG5ldyBTZXQ8c3RyaW5nPigpLFxuKSA9PiB7XG4gIGNvbnN0IHBhY2thZ2VLZXkgPSBgJHtvd25lcn0vJHtuYW1lfWBcbiAgaWYgKGxvYWRlZFBhY2thZ2VzLmhhcyhwYWNrYWdlS2V5KSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBsZXQgcmVzdWx0XG4gIHRyeSB7XG4gICAgcmVzdWx0ID0gYXdhaXQgZmV0Y2hQYWNrYWdlRnJvbVJlZ2lzdHJ5KG93bmVyLCBuYW1lKVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihgXHUyNzE3IEZhaWxlZCB0byBsb2FkICR7cGFja2FnZUtleX1gKVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3QgeyBwYWNrYWdlOiBwa2csIHJlbGVhc2UsIGZpbGVzIH0gPSByZXN1bHRcblxuICAvLyBDaGVjayBpZiBwYWNrYWdlIGFscmVhZHkgZXhpc3RzXG4gIGlmIChkYi5nZXRQYWNrYWdlQnlJZChwa2cucGFja2FnZV9pZCkpIHtcbiAgICBjb25zb2xlLmxvZyhgXHUyNzEzIFBhY2thZ2UgJHtwYWNrYWdlS2V5fSBhbHJlYWR5IGV4aXN0c2ApXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIEFkZCBwYWNrYWdlLCByZWxlYXNlLCBhbmQgZmlsZXMgdG8gZGJcbiAgZGIuYWRkUGFja2FnZSh7XG4gICAgLi4ucGtnLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogcmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgc3Rhcl9jb3VudDogTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTEpLFxuICB9KVxuXG4gIGRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICAuLi5yZWxlYXNlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB0cmFuc3BpbGF0aW9uX2xvZ3M6IEFycmF5LmlzQXJyYXkocmVsZWFzZS50cmFuc3BpbGF0aW9uX2xvZ3MpXG4gICAgICA/IHJlbGVhc2UudHJhbnNwaWxhdGlvbl9sb2dzXG4gICAgICA6IFtdLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiBBcnJheS5pc0FycmF5KHJlbGVhc2UuY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3MpXG4gICAgICA/IHJlbGVhc2UuY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3NcbiAgICAgIDogW10sXG4gICAgdHJhbnNwaWxhdGlvbl9kaXNwbGF5X3N0YXR1czpcbiAgICAgIHJlbGVhc2UudHJhbnNwaWxhdGlvbl9kaXNwbGF5X3N0YXR1cyA/PyBcInBlbmRpbmdcIixcbiAgfSlcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBkYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICAuLi5maWxlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH0pXG4gIH1cblxuICBsb2FkZWRQYWNrYWdlcy5hZGQocGFja2FnZUtleSlcbiAgY29uc29sZS5sb2coYFx1MjcxMyBMb2FkZWQgJHtwYWNrYWdlS2V5fWApXG5cbiAgLy8gTG9hZCBkZXBlbmRlbmNpZXNcbiAgY29uc3QgbWFpbkZpbGUgPSBmaWxlcy5maW5kKFxuICAgIChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIiB8fCBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiLFxuICApXG4gIGlmICghbWFpbkZpbGU/LmNvbnRlbnRfdGV4dCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBjb25zdCBkZXBlbmRlbmNpZXMgPSBleHRyYWN0VHNjaURlcGVuZGVuY2llcyhtYWluRmlsZS5jb250ZW50X3RleHQpXG4gIGxldCBhbGxEZXBzTG9hZGVkID0gdHJ1ZVxuXG4gIGZvciAoY29uc3QgZGVwIG9mIGRlcGVuZGVuY2llcykge1xuICAgIGNvbnN0IGRlcExvYWRlZCA9IGF3YWl0IGxvYWRQYWNrYWdlV2l0aERlcGVuZGVuY2llcyhcbiAgICAgIGRiLFxuICAgICAgZGVwLm93bmVyLFxuICAgICAgZGVwLm5hbWUsXG4gICAgICBsb2FkZWRQYWNrYWdlcyxcbiAgICApXG4gICAgaWYgKCFkZXBMb2FkZWQpIHtcbiAgICAgIGFsbERlcHNMb2FkZWQgPSBmYWxzZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgXHUyNkEwXHVGRTBGIEZhaWxlZCB0byBsb2FkIGRlcGVuZGVuY3kgJHtkZXAub3duZXJ9LyR7ZGVwLm5hbWV9IGZvciAke3BhY2thZ2VLZXl9YCxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsRGVwc0xvYWRlZFxufVxuXG5leHBvcnQgY29uc3QgbG9hZEF1dG9sb2FkUGFja2FnZXMgPSBhc3luYyAoZGI6IERiQ2xpZW50KSA9PiB7XG4gIGNvbnN0IGF1dG9sb2FkUGF0aCA9IHBhdGguam9pbihcbiAgICBwYXRoLmRpcm5hbWUoX19kaXJuYW1lKSxcbiAgICBcImRiXCIsXG4gICAgXCJhdXRvbG9hZC1wYWNrYWdlcy5qc29uXCIsXG4gIClcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGF1dG9sb2FkUGF0aCkpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiTm8gYXV0b2xvYWQtcGFja2FnZXMuanNvbiBmb3VuZFwiKVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgYXV0b2xvYWRDb250ZW50ID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoYXV0b2xvYWRQYXRoLCBcInV0ZjhcIikpXG4gIGNvbnN0IGxvYWRlZFBhY2thZ2VzID0gbmV3IFNldDxzdHJpbmc+KClcbiAgbGV0IHN1Y2Nlc3NDb3VudCA9IDBcbiAgbGV0IGZhaWx1cmVDb3VudCA9IDBcblxuICBmb3IgKGNvbnN0IHBhY2thZ2VSZWYgb2YgYXV0b2xvYWRDb250ZW50LnBhY2thZ2VzKSB7XG4gICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGxvYWRQYWNrYWdlV2l0aERlcGVuZGVuY2llcyhcbiAgICAgIGRiLFxuICAgICAgcGFja2FnZVJlZi5vd25lcixcbiAgICAgIHBhY2thZ2VSZWYubmFtZSxcbiAgICAgIGxvYWRlZFBhY2thZ2VzLFxuICAgIClcbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgc3VjY2Vzc0NvdW50KytcbiAgICB9IGVsc2Uge1xuICAgICAgZmFpbHVyZUNvdW50KytcbiAgICB9XG4gIH1cblxuICBjb25zb2xlLmxvZyhgXFxuUGFja2FnZSBsb2FkaW5nIGNvbXBsZXRlOmApXG4gIGNvbnNvbGUubG9nKGBcdTI3MTMgU3VjY2Vzc2Z1bGx5IGxvYWRlZDogJHtzdWNjZXNzQ291bnR9IHBhY2thZ2VzYClcbiAgaWYgKGZhaWx1cmVDb3VudCA+IDApIHtcbiAgICBjb25zb2xlLmxvZyhgXHUyNzE3IEZhaWxlZCB0byBsb2FkOiAke2ZhaWx1cmVDb3VudH0gcGFja2FnZXNgKVxuICB9XG59XG4iLCAiaW1wb3J0IHsgRGJDbGllbnQgfSBmcm9tIFwiLi9kYi1jbGllbnRcIlxuaW1wb3J0IHsgbG9hZEF1dG9sb2FkUGFja2FnZXMgfSBmcm9tIFwiLi9hdXRvbG9hZC1kZXYtcGFja2FnZXNcIlxuXG5leHBvcnQgY29uc3Qgc2VlZCA9IChkYjogRGJDbGllbnQpID0+IHtcbiAgY29uc3QgeyBhY2NvdW50X2lkIH0gPSBkYi5hZGRBY2NvdW50KHtcbiAgICBhY2NvdW50X2lkOiBcImFjY291bnQtMTIzNFwiLFxuICAgIGdpdGh1Yl91c2VybmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIHNoaXBwaW5nSW5mbzoge1xuICAgICAgZmlyc3ROYW1lOiBcIlRlc3RcIixcbiAgICAgIGxhc3ROYW1lOiBcIlVzZXJcIixcbiAgICAgIGNvbXBhbnlOYW1lOiBcIlRlc3QgQ29tcGFueVwiLFxuICAgICAgYWRkcmVzczogXCIxMjMgVGVzdCBTdFwiLFxuICAgICAgYXBhcnRtZW50OiBcIkFwdCA0QlwiLFxuICAgICAgY2l0eTogXCJUZXN0dmlsbGVcIixcbiAgICAgIHN0YXRlOiBcIk5ZXCIsXG4gICAgICB6aXBDb2RlOiBcIjEwMDAxXCIsXG4gICAgICBjb3VudHJ5OiBcIlVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYVwiLFxuICAgICAgcGhvbmU6IFwiNTU1LTEyMy00NTY3XCIsXG4gICAgfSxcbiAgfSlcbiAgZGIuYWRkQWNjb3VudCh7XG4gICAgZ2l0aHViX3VzZXJuYW1lOiBcInNldmVpYmFyXCIsXG4gIH0pXG5cbiAgaWYgKHByb2Nlc3MuZW52LkFVVE9MT0FEX1BBQ0tBR0VTID09PSBcInRydWVcIikge1xuICAgIGxvYWRBdXRvbG9hZFBhY2thZ2VzKGRiKVxuICB9XG5cbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlSWQxIH0gPSBkYi5hZGRTbmlwcGV0KHtcbiAgICBuYW1lOiBcInRlc3R1c2VyL215LXRlc3QtYm9hcmRcIixcbiAgICB1bnNjb3BlZF9uYW1lOiBcIm15LXRlc3QtYm9hcmRcIixcbiAgICBnaXRodWJfcmVwb19mdWxsX25hbWU6IFwidGVzdHVzZXIvbXktdGVzdC1ib2FyZFwiLFxuICAgIG93bmVyX25hbWU6IFwidGVzdHVzZXJcIixcbiAgICBjcmVhdG9yX2FjY291bnRfaWQ6IGFjY291bnRfaWQsXG4gICAgY29kZTogYFxuaW1wb3J0IHsgQTU1NVRpbWVyIH0gZnJvbSBcIkB0c2NpL3NldmVpYmFyLmE1NTV0aW1lclwiXG5cbmV4cG9ydCBkZWZhdWx0ICgpID0+IChcbiAgPGJvYXJkIHdpZHRoPVwiMTBtbVwiIGhlaWdodD1cIjEwbW1cIj5cbiAgICA8QTU1NVRpbWVyIG5hbWU9XCJVMVwiIC8+XG4gIDwvYm9hcmQ+XG4pYC50cmltKCksXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzbmlwcGV0X3R5cGU6IFwiYm9hcmRcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBIHNpbXBsZSBib2FyZCB3aXRoIGFuIEE1NTUgVGltZXIgY29tcG9uZW50XCIsXG4gICAgY2lyY3VpdF9qc29uOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgICBuYW1lOiBcInBpbjFcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluMVwiLCBcIjFcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgICAgbmFtZTogXCJwaW4yXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjJcIiwgXCIyXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICAgIG5hbWU6IFwicGluM1wiLFxuICAgICAgICBwaW5fbnVtYmVyOiAzLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4zXCIsIFwiM1wiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgICBuYW1lOiBcInBpbjRcIixcbiAgICAgICAgcGluX251bWJlcjogNCxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNFwiLCBcIjRcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgbmFtZTogXCJwaW41XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjVcIiwgXCI1XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICAgIG5hbWU6IFwicGluNlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA2LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW42XCIsIFwiNlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgICBuYW1lOiBcInBpbjdcIixcbiAgICAgICAgcGluX251bWJlcjogNyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluN1wiLCBcIjdcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgICAgbmFtZTogXCJwaW44XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDgsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjhcIiwgXCI4XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfY29tcG9uZW50XCIsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGZ0eXBlOiBcInNpbXBsZV9jaGlwXCIsXG4gICAgICAgIG5hbWU6IFwiVTFcIixcbiAgICAgICAgc3VwcGxpZXJfcGFydF9udW1iZXJzOiB7fSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX2NvbXBvbmVudFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHJvdGF0aW9uOiAwLFxuICAgICAgICBzaXplOiB7XG4gICAgICAgICAgd2lkdGg6IDEuMSxcbiAgICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIH0sXG4gICAgICAgIHBpbl9zcGFjaW5nOiAwLjIsXG4gICAgICAgIHBvcnRfbGFiZWxzOiB7fSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAxLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMVwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMTAwMDAwMDAwMDAwMDAwMDMsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfMlwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjA5OTk5OTk5OTk5OTk5OTk4LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzNcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF80XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzVcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA2LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNlwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNyxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDYsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzdcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDgsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA3LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfY29tcG9uZW50XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6IDguODIsXG4gICAgICAgIGhlaWdodDogOC44MixcbiAgICAgICAgbGF5ZXI6IFwidG9wXCIsXG4gICAgICAgIHJvdGF0aW9uOiAwLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfYm9hcmRcIixcbiAgICAgICAgcGNiX2JvYXJkX2lkOiBcInBjYl9ib2FyZF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgdGhpY2tuZXNzOiAxLjQsXG4gICAgICAgIG51bV9sYXllcnM6IDQsXG4gICAgICAgIHdpZHRoOiAxMCxcbiAgICAgICAgaGVpZ2h0OiAxMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8wXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIxXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMVwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMlwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8yXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjNcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzNcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfM1wiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNFwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF80XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI1XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzVcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNlwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV82XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzZcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjdcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzdcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjhcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2Jfc2lsa3NjcmVlbl9wYXRoXCIsXG4gICAgICAgIHBjYl9zaWxrc2NyZWVuX3BhdGhfaWQ6IFwicGNiX3NpbGtzY3JlZW5fcGF0aF8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3V0ZTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMS4wMDMzMzMzMzMzMzMzMzMyLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjcwOTQ2MzgwMzc5MDUwMjYsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC4zODM5NTkwNDM4MDYzMDY3LFxuICAgICAgICAgICAgeTogMy42ODMwNDA4NjkwNDcwMDk2LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogNi4xNDM2NDQ3NzU3MjI1NTZlLTE3LFxuICAgICAgICAgICAgeTogMy42MDY2NjY2NjY2NjY2Njc0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC4zODM5NTkwNDM4MDYzMDY3NCxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuNzA5NDYzODAzNzkwNTAyNyxcbiAgICAgICAgICAgIHk6IDMuOTAwNTM2MTk2MjA5NDk3OCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuOTI2OTU5MTMwOTUyOTkwOSxcbiAgICAgICAgICAgIHk6IDQuMjI2MDQwOTU2MTkzNjkzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMS4wMDMzMzMzMzMzMzMzMzMyLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzdHJva2Vfd2lkdGg6IDAuMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzFcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8yXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfM1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF80XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzdcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzdcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiY2FkX2NvbXBvbmVudFwiLFxuICAgICAgICBjYWRfY29tcG9uZW50X2lkOiBcImNhZF9jb21wb25lbnRfMFwiLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLjcsXG4gICAgICAgIH0sXG4gICAgICAgIHJvdGF0aW9uOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHo6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGZvb3RwcmludGVyX3N0cmluZzogXCJkaXA4XCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0pXG5cbiAgY29uc3QgZmlyc3RCdWlsZCA9IGRiLmFkZFBhY2thZ2VCdWlsZCh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZUlkMSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTUwMDApLnRvSVNPU3RyaW5nKCksIC8vIDE1IHNlY29uZHMgYWdvXG4gICAgdHJhbnNwaWxhdGlvbl9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgdHJhbnNwaWxhdGlvbl9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTUwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgdHJhbnNwaWxhdGlvbl9jb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxNDAwMCkudG9JU09TdHJpbmcoKSxcbiAgICB0cmFuc3BpbGF0aW9uX2xvZ3M6IFtcbiAgICAgIFwiW0lORk9dIFN0YXJ0aW5nIHRyYW5zcGlsYXRpb24uLi5cIixcbiAgICAgIFwiW0lORk9dIFBhcnNpbmcgcGFja2FnZSBjb2RlXCIsXG4gICAgICBcIltFUlJPUl0gRmFpbGVkIHRvIHBhcnNlIFR5cGVTY3JpcHQgZGVmaW5pdGlvbnNcIixcbiAgICAgIFwiW0VSUk9SXSBJbnZhbGlkIHN5bnRheCBpbiBjb21wb25lbnQgZGVjbGFyYXRpb25cIixcbiAgICBdLFxuICAgIHRyYW5zcGlsYXRpb25fZXJyb3I6XG4gICAgICBcIlR5cGVTY3JpcHQgY29tcGlsYXRpb24gZmFpbGVkOiBTeW50YXggZXJyb3IgaW4gY29tcG9uZW50IGRlY2xhcmF0aW9uXCIsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfc3RhcnRlZF9hdDogbnVsbCxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfY29tcGxldGVkX2F0OiBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiBbXSxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3I6IFwiQnVpbGQgY2FuY2VsbGVkIGR1ZSB0byB0cmFuc3BpbGF0aW9uIGZhaWx1cmVcIixcbiAgICBidWlsZF9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgYnVpbGRfc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDE1MDAwKS50b0lTT1N0cmluZygpLFxuICAgIGJ1aWxkX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDE0MDAwKS50b0lTT1N0cmluZygpLFxuICAgIGJ1aWxkX2Vycm9yOiBcIkJ1aWxkIGZhaWxlZDogVW5hYmxlIHRvIGNvbXBsZXRlIHRyYW5zcGlsYXRpb24gc3RlcFwiLFxuICAgIGJ1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDE0MDAwKS50b0lTT1N0cmluZygpLFxuICAgIHByZXZpZXdfdXJsOiBudWxsLFxuICAgIGJ1aWxkX2xvZ3M6XG4gICAgICBcIkJ1aWxkIHByb2Nlc3M6XFxuXCIgK1xuICAgICAgXCIxLiBFbnZpcm9ubWVudCBzZXR1cCAtIE9LXFxuXCIgK1xuICAgICAgXCIyLiBEZXBlbmRlbmN5IHJlc29sdXRpb24gLSBPS1xcblwiICtcbiAgICAgIFwiMy4gQ29kZSBjb21waWxhdGlvbiAtIEZBSUxFRFxcblwiICtcbiAgICAgIFwiRXJyb3I6IEludmFsaWQgc3ludGF4IGluIGNvbXBvbmVudCBkZWNsYXJhdGlvblxcblwiICtcbiAgICAgIFwiQnVpbGQgdGVybWluYXRlZCB3aXRoIGVycm9yc1wiLFxuICAgIGJyYW5jaF9uYW1lOiBcIm1haW5cIixcbiAgICBjb21taXRfbWVzc2FnZTogXCJBdHRlbXB0ZWQgYnVpbGQgb2YgYTU1NXRpbWVyLXNxdWFyZS13YXZlIHBhY2thZ2VcIixcbiAgICBjb21taXRfYXV0aG9yOiBcInRlc3R1c2VyXCIsXG4gIH0pXG5cbiAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlIHJlbGVhc2Ugd2l0aCB0aGUgbGF0ZXN0IGJ1aWxkIElEXG4gIGNvbnN0IHJlbGVhc2UxID0gZGIuZ2V0UGFja2FnZVJlbGVhc2VCeUlkKHBhY2thZ2VSZWxlYXNlSWQxKSFcbiAgZGIudXBkYXRlUGFja2FnZVJlbGVhc2Uoe1xuICAgIC4uLnJlbGVhc2UxLFxuICAgIGxhdGVzdF9wYWNrYWdlX2J1aWxkX2lkOiBmaXJzdEJ1aWxkLnBhY2thZ2VfYnVpbGRfaWQsXG4gIH0pXG4gIC8vIERlZmluZSB0aGUgQHRzY2kvc2V2ZWliYXIuYTU1NXRpbWVyIHBhY2thZ2VcbiAgZGIuYWRkU25pcHBldCh7XG4gICAgbmFtZTogXCJzZXZlaWJhci9hNTU1dGltZXJcIixcbiAgICB1bnNjb3BlZF9uYW1lOiBcImE1NTV0aW1lclwiLFxuICAgIG93bmVyX25hbWU6IFwic2V2ZWliYXJcIixcbiAgICBjb2RlOiBgXG5leHBvcnQgY29uc3QgQTU1NVRpbWVyID0gKHsgbmFtZSB9OiB7IG5hbWU6IHN0cmluZyB9KSA9PiAoXG4gIDxjaGlwIG5hbWU9e25hbWV9IGZvb3RwcmludD1cImRpcDhcIiAvPlxuKVxuYC50cmltKCksXG4gICAgZHRzOiBgXG5kZWNsYXJlIG1vZHVsZSBcIkB0c2NpL3NldmVpYmFyLmE1NTV0aW1lclwiIHtcbiAgZXhwb3J0IGNvbnN0IEE1NTVUaW1lcjogKHsgbmFtZSB9OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9KSA9PiBhbnk7XG59XG5gLnRyaW0oKSxcbiAgICBjb21waWxlZF9qczogYFxuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkE1NTVUaW1lciA9IHZvaWQgMDtcbmNvbnN0IEE1NTVUaW1lciA9ICh7XG4gIG5hbWVcbn0pID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiY2hpcFwiLCB7XG4gIG5hbWU6IG5hbWUsXG4gIGZvb3RwcmludDogXCJkaXA4XCJcbn0pO1xuZXhwb3J0cy5BNTU1VGltZXIgPSBBNTU1VGltZXI7XG4gICAgYC50cmltKCksXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzbmlwcGV0X3R5cGU6IFwicGFja2FnZVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgc2ltcGxlIHBhY2thZ2Ugd2l0aCBhbiBBNTU1IFRpbWVyIGNvbXBvbmVudFwiLFxuICAgIGNpcmN1aXRfanNvbjogW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgbmFtZTogXCJwaW4xXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjFcIiwgXCIxXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIG5hbWU6IFwicGluMlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4yXCIsIFwiMlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBuYW1lOiBcInBpbjNcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluM1wiLCBcIjNcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgbmFtZTogXCJwaW40XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjRcIiwgXCI0XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIG5hbWU6IFwicGluNVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW41XCIsIFwiNVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBuYW1lOiBcInBpbjZcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNlwiLCBcIjZcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgbmFtZTogXCJwaW43XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjdcIiwgXCI3XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIG5hbWU6IFwicGluOFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW44XCIsIFwiOFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX2NvbXBvbmVudFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmdHlwZTogXCJzaW1wbGVfY2hpcFwiLFxuICAgICAgICBuYW1lOiBcIlUxXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19jb21wb25lbnRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc2l6ZToge1xuICAgICAgICAgIHdpZHRoOiAxLjEsXG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICB9LFxuICAgICAgICBwaW5fc3BhY2luZzogMC4yLFxuICAgICAgICBwb3J0X2xhYmVsczoge30sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzBcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzFcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzJcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8zXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF81XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzZcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA2LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF83XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2NvbXBvbmVudFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiA4LjgyLFxuICAgICAgICBoZWlnaHQ6IDguODIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2JvYXJkXCIsXG4gICAgICAgIHBjYl9ib2FyZF9pZDogXCJwY2JfYm9hcmRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaWNrbmVzczogMS40LFxuICAgICAgICBudW1fbGF5ZXJzOiA0LFxuICAgICAgICB3aWR0aDogNTAsXG4gICAgICAgIGhlaWdodDogNTAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjJcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIzXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjRcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjZcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI3XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI4XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3NpbGtzY3JlZW5fcGF0aFwiLFxuICAgICAgICBwY2Jfc2lsa3NjcmVlbl9wYXRoX2lkOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm91dGU6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC43MDk0NjM4MDM3OTA1MDI2LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuMzgzOTU5MDQzODA2MzA2NyxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDYuMTQzNjQ0Nzc1NzIyNTU2ZS0xNyxcbiAgICAgICAgICAgIHk6IDMuNjA2NjY2NjY2NjY2NjY3NCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuMzgzOTU5MDQzODA2MzA2NzQsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjcwOTQ2MzgwMzc5MDUwMjcsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc3Ryb2tlX3dpZHRoOiAwLjEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImNhZF9jb21wb25lbnRcIixcbiAgICAgICAgY2FkX2NvbXBvbmVudF9pZDogXCJjYWRfY29tcG9uZW50XzBcIixcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMC43LFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLFxuICAgICAgICB9LFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmb290cHJpbnRlcl9zdHJpbmc6IFwiZGlwOFwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9KVxuXG4gIC8vIEFkZCBhIHNuaXBwZXQgdGhhdCBvdXRwdXRzIGEgc3F1YXJlIHdhdmVmb3JtIHVzaW5nIHRoZSBhNTU1dGltZXJcblxuICBjb25zdCB7IHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2VJZDIgfSA9IGRiLmFkZFNuaXBwZXQoe1xuICAgIG5hbWU6IFwidGVzdHVzZXIvYTU1NXRpbWVyLXNxdWFyZS13YXZlXCIsXG4gICAgdW5zY29wZWRfbmFtZTogXCJhNTU1dGltZXItc3F1YXJlLXdhdmVcIixcbiAgICBvd25lcl9uYW1lOiBcInRlc3R1c2VyXCIsXG4gICAgY3JlYXRvcl9hY2NvdW50X2lkOiBhY2NvdW50X2lkLFxuICAgIGNvZGU6IGBcbmltcG9ydCB7IEE1NTVUaW1lciB9IGZyb20gXCJAdHNjaS9zZXZlaWJhci5hNTU1dGltZXJcIlxuXG5leHBvcnQgY29uc3QgU3F1YXJlV2F2ZU1vZHVsZSA9ICgpID0+IChcbiAgPEE1NTVUaW1lciBuYW1lPVwiVTFcIiAvPlxuKVxuYC50cmltKCksXG4gICAgZHRzOiAnZXhwb3J0IGRlY2xhcmUgY29uc3QgU3F1YXJlV2F2ZU1vZHVsZTogKCkgPT4gaW1wb3J0KFwicmVhY3QvanN4LXJ1bnRpbWVcIikuSlNYLkVsZW1lbnQ7XFxuJyxcbiAgICBjb21waWxlZF9qczpcbiAgICAgICdcInVzZSBzdHJpY3RcIjtcXG5cXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcXG4gIHZhbHVlOiB0cnVlXFxufSk7XFxuZXhwb3J0cy5TcXVhcmVXYXZlTW9kdWxlID0gdm9pZCAwO1xcbnZhciBfc2V2ZWliYXIgPSByZXF1aXJlKFwiQHRzY2kvc2V2ZWliYXIuYTU1NXRpbWVyXCIpO1xcbmNvbnN0IFNxdWFyZVdhdmVNb2R1bGUgPSAoKSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChfc2V2ZWliYXIuQTU1NVRpbWVyLCB7XFxuICBuYW1lOiBcIlUxXCJcXG59KTtcXG5leHBvcnRzLlNxdWFyZVdhdmVNb2R1bGUgPSBTcXVhcmVXYXZlTW9kdWxlOycsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzbmlwcGV0X3R5cGU6IFwicGFja2FnZVwiLFxuICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZTogXCJ0ZXN0dXNlci90ZXN0XCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIkEgc2ltcGxlIHBhY2thZ2UgdGhhdCBvdXRwdXRzIGEgc3F1YXJlIHdhdmVmb3JtIHVzaW5nIHRoZSBhNTU1dGltZXJcIixcbiAgICBjaXJjdWl0X2pzb246IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIG5hbWU6IFwicGluMVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAxLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4xXCIsIFwiMVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgICBuYW1lOiBcInBpbjJcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluMlwiLCBcIjJcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgICAgbmFtZTogXCJwaW4zXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjNcIiwgXCIzXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICAgIG5hbWU6IFwicGluNFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW40XCIsIFwiNFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgICBuYW1lOiBcInBpbjVcIixcbiAgICAgICAgcGluX251bWJlcjogNSxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNVwiLCBcIjVcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgICAgbmFtZTogXCJwaW42XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDYsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjZcIiwgXCI2XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICAgIG5hbWU6IFwicGluN1wiLFxuICAgICAgICBwaW5fbnVtYmVyOiA3LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW43XCIsIFwiN1wiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgICBuYW1lOiBcInBpbjhcIixcbiAgICAgICAgcGluX251bWJlcjogOCxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluOFwiLCBcIjhcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9jb21wb25lbnRcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgICAgZnR5cGU6IFwic2ltcGxlX2NoaXBcIixcbiAgICAgICAgbmFtZTogXCJVMVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfY29tcG9uZW50XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcm90YXRpb246IDAsXG4gICAgICAgIHNpemU6IHtcbiAgICAgICAgICB3aWR0aDogMS4xLFxuICAgICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgfSxcbiAgICAgICAgcGluX3NwYWNpbmc6IDAuMixcbiAgICAgICAgcG9ydF9sYWJlbHM6IHt9LFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8wXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8xXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDIsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8yXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAzLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfM1wiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogNCxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNVwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMTAwMDAwMDAwMDAwMDAwMDMsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDYsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA1LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF82XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjA5OTk5OTk5OTk5OTk5OTk4LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA3LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfN1wiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogOCxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9jb21wb25lbnRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDogOC44MixcbiAgICAgICAgaGVpZ2h0OiA4LjgyLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm90YXRpb246IDAsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9ib2FyZFwiLFxuICAgICAgICBwY2JfYm9hcmRfaWQ6IFwicGNiX2JvYXJkXzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICB0aGlja25lc3M6IDEuNCxcbiAgICAgICAgbnVtX2xheWVyczogNCxcbiAgICAgICAgd2lkdGg6IDUwLFxuICAgICAgICBoZWlnaHQ6IDUwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjFcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8xXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIyXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMlwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiM1wiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfM1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI0XCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV80XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzRcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjVcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF81XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI2XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzZcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiN1wiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzdcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfN1wiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiOFwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhcIixcbiAgICAgICAgcGNiX3NpbGtzY3JlZW5fcGF0aF9pZDogXCJwY2Jfc2lsa3NjcmVlbl9wYXRoXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXI6IFwidG9wXCIsXG4gICAgICAgIHJvdXRlOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0xLjAwMzMzMzMzMzMzMzMzMzIsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuOTI2OTU5MTMwOTUyOTkwOSxcbiAgICAgICAgICAgIHk6IDQuMjI2MDQwOTU2MTkzNjkzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuNzA5NDYzODAzNzkwNTAyNixcbiAgICAgICAgICAgIHk6IDMuOTAwNTM2MTk2MjA5NDk3OCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjM4Mzk1OTA0MzgwNjMwNjcsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiA2LjE0MzY0NDc3NTcyMjU1NmUtMTcsXG4gICAgICAgICAgICB5OiAzLjYwNjY2NjY2NjY2NjY2NzQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjM4Mzk1OTA0MzgwNjMwNjc0LFxuICAgICAgICAgICAgeTogMy42ODMwNDA4NjkwNDcwMDk2LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC43MDk0NjM4MDM3OTA1MDI3LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAxLjAwMzMzMzMzMzMzMzMzMzIsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMy4wMSxcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHN0cm9rZV93aWR0aDogMC4xLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfM1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzZcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJjYWRfY29tcG9uZW50XCIsXG4gICAgICAgIGNhZF9jb21wb25lbnRfaWQ6IFwiY2FkX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHo6IDAuNyxcbiAgICAgICAgfSxcbiAgICAgICAgcm90YXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgICAgZm9vdHByaW50ZXJfc3RyaW5nOiBcImRpcDhcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSlcblxuICAvLyBBZGQgZmFpbGVkIGJ1aWxkIGZpcnN0XG4gIGNvbnN0IGZhaWxlZEJ1aWxkID0gZGIuYWRkUGFja2FnZUJ1aWxkKHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlSWQyLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxNTAwMCkudG9JU09TdHJpbmcoKSwgLy8gMTUgc2Vjb25kcyBhZ29cbiAgICB0cmFuc3BpbGF0aW9uX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICB0cmFuc3BpbGF0aW9uX3N0YXJ0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxNTAwMCkudG9JU09TdHJpbmcoKSxcbiAgICB0cmFuc3BpbGF0aW9uX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDE0MDAwKS50b0lTT1N0cmluZygpLFxuICAgIHRyYW5zcGlsYXRpb25fbG9nczogW1xuICAgICAgXCJbSU5GT10gU3RhcnRpbmcgdHJhbnNwaWxhdGlvbi4uLlwiLFxuICAgICAgXCJbSU5GT10gUGFyc2luZyBwYWNrYWdlIGNvZGVcIixcbiAgICAgIFwiW0VSUk9SXSBGYWlsZWQgdG8gcGFyc2UgVHlwZVNjcmlwdCBkZWZpbml0aW9uc1wiLFxuICAgICAgXCJbRVJST1JdIEludmFsaWQgc3ludGF4IGluIGNvbXBvbmVudCBkZWNsYXJhdGlvblwiLFxuICAgIF0sXG4gICAgdHJhbnNwaWxhdGlvbl9lcnJvcjpcbiAgICAgIFwiVHlwZVNjcmlwdCBjb21waWxhdGlvbiBmYWlsZWQ6IFN5bnRheCBlcnJvciBpbiBjb21wb25lbnQgZGVjbGFyYXRpb25cIixcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfaW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9zdGFydGVkX2F0OiBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQ6IG51bGwsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IFtdLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcjogXCJCdWlsZCBjYW5jZWxsZWQgZHVlIHRvIHRyYW5zcGlsYXRpb24gZmFpbHVyZVwiLFxuICAgIGJ1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBidWlsZF9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTUwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgYnVpbGRfY29tcGxldGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTQwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgYnVpbGRfZXJyb3I6IFwiQnVpbGQgZmFpbGVkOiBVbmFibGUgdG8gY29tcGxldGUgdHJhbnNwaWxhdGlvbiBzdGVwXCIsXG4gICAgYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTQwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgcHJldmlld191cmw6IG51bGwsXG4gICAgYnVpbGRfbG9nczpcbiAgICAgIFwiQnVpbGQgcHJvY2VzczpcXG5cIiArXG4gICAgICBcIjEuIEVudmlyb25tZW50IHNldHVwIC0gT0tcXG5cIiArXG4gICAgICBcIjIuIERlcGVuZGVuY3kgcmVzb2x1dGlvbiAtIE9LXFxuXCIgK1xuICAgICAgXCIzLiBDb2RlIGNvbXBpbGF0aW9uIC0gRkFJTEVEXFxuXCIgK1xuICAgICAgXCJFcnJvcjogSW52YWxpZCBzeW50YXggaW4gY29tcG9uZW50IGRlY2xhcmF0aW9uXFxuXCIgK1xuICAgICAgXCJCdWlsZCB0ZXJtaW5hdGVkIHdpdGggZXJyb3JzXCIsXG4gICAgYnJhbmNoX25hbWU6IFwibWFpblwiLFxuICAgIGNvbW1pdF9tZXNzYWdlOiBcIkF0dGVtcHRlZCBidWlsZCBvZiBhNTU1dGltZXItc3F1YXJlLXdhdmUgcGFja2FnZVwiLFxuICAgIGNvbW1pdF9hdXRob3I6IFwidGVzdHVzZXJcIixcbiAgfSlcblxuICAvLyBBZGQgc3VjY2Vzc2Z1bCBidWlsZFxuICBjb25zdCBzdWNjZXNzZnVsQnVpbGQgPSBkYi5hZGRQYWNrYWdlQnVpbGQoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2VJZDIsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHRyYW5zcGlsYXRpb25faW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIHRyYW5zcGlsYXRpb25fc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDUwMDApLnRvSVNPU3RyaW5nKCksIC8vIFN0YXJ0ZWQgNSBzZWNvbmRzIGFnb1xuICAgIHRyYW5zcGlsYXRpb25fY29tcGxldGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMzAwMCkudG9JU09TdHJpbmcoKSwgLy8gQ29tcGxldGVkIDMgc2Vjb25kcyBhZ29cbiAgICB0cmFuc3BpbGF0aW9uX2xvZ3M6IFtcbiAgICAgIFwiW0lORk9dIFN0YXJ0aW5nIHRyYW5zcGlsYXRpb24uLi5cIixcbiAgICAgIFwiW0lORk9dIFBhcnNpbmcgcGFja2FnZSBjb2RlXCIsXG4gICAgICBcIltJTkZPXSBHZW5lcmF0aW5nIFR5cGVTY3JpcHQgZGVmaW5pdGlvbnNcIixcbiAgICAgIFwiW0lORk9dIENvbXBpbGluZyB0byBKYXZhU2NyaXB0XCIsXG4gICAgICBcIltTVUNDRVNTXSBUcmFuc3BpbGF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgICBdLFxuICAgIHRyYW5zcGlsYXRpb25fZXJyb3I6IG51bGwsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDMwMDApLnRvSVNPU3RyaW5nKCksIC8vIFN0YXJ0ZWQgYWZ0ZXIgdHJhbnNwaWxhdGlvblxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxMDAwKS50b0lTT1N0cmluZygpLCAvLyBDb21wbGV0ZWQgMSBzZWNvbmQgYWdvXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IFtcbiAgICAgIFwiW0lORk9dIFN0YXJ0aW5nIGNpcmN1aXQgSlNPTiBidWlsZC4uLlwiLFxuICAgICAgXCJbSU5GT10gQW5hbHl6aW5nIGNvbXBvbmVudCBzdHJ1Y3R1cmVcIixcbiAgICAgIFwiW0lORk9dIEdlbmVyYXRpbmcgcG9ydCBjb25maWd1cmF0aW9uc1wiLFxuICAgICAgXCJbSU5GT10gVmFsaWRhdGluZyBjaXJjdWl0IGNvbm5lY3Rpb25zXCIsXG4gICAgICBcIltTVUNDRVNTXSBDaXJjdWl0IEpTT04gYnVpbGQgY29tcGxldGVkXCIsXG4gICAgXSxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3I6IG51bGwsXG4gICAgYnVpbGRfaW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIGJ1aWxkX3N0YXJ0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxMDAwMCkudG9JU09TdHJpbmcoKSwgLy8gU3RhcnRlZCAxMCBzZWNvbmRzIGFnb1xuICAgIGJ1aWxkX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLCAvLyBKdXN0IGNvbXBsZXRlZFxuICAgIGJ1aWxkX2Vycm9yOiBudWxsLFxuICAgIGJ1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHByZXZpZXdfdXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9wcmV2aWV3L3BhY2thZ2VfYnVpbGRfMVwiLFxuICAgIGJ1aWxkX2xvZ3M6XG4gICAgICBcIkJ1aWxkIHByb2Nlc3M6XFxuXCIgK1xuICAgICAgXCIxLiBFbnZpcm9ubWVudCBzZXR1cCAtIE9LXFxuXCIgK1xuICAgICAgXCIyLiBEZXBlbmRlbmN5IHJlc29sdXRpb24gLSBPS1xcblwiICtcbiAgICAgIFwiMy4gQ29kZSBjb21waWxhdGlvbiAtIE9LXFxuXCIgK1xuICAgICAgXCI0LiBDaXJjdWl0IHZhbGlkYXRpb24gLSBPS1xcblwiICtcbiAgICAgIFwiNS4gUGFja2FnZSBhc3NlbWJseSAtIE9LXFxuXCIgK1xuICAgICAgXCJCdWlsZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIsXG4gICAgYnJhbmNoX25hbWU6IFwibWFpblwiLFxuICAgIGNvbW1pdF9tZXNzYWdlOiBcIkluaXRpYWwgYnVpbGQgb2YgYTU1NXRpbWVyLXNxdWFyZS13YXZlIHBhY2thZ2VcIixcbiAgICBjb21taXRfYXV0aG9yOiBcInRlc3R1c2VyXCIsXG4gIH0pXG5cbiAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlIHJlbGVhc2Ugd2l0aCB0aGUgbGF0ZXN0IChzdWNjZXNzZnVsKSBidWlsZCBJRFxuICBjb25zdCByZWxlYXNlMiA9IGRiLmdldFBhY2thZ2VSZWxlYXNlQnlJZChwYWNrYWdlUmVsZWFzZUlkMikhXG4gIGRiLnVwZGF0ZVBhY2thZ2VSZWxlYXNlKHtcbiAgICAuLi5yZWxlYXNlMixcbiAgICBsYXRlc3RfcGFja2FnZV9idWlsZF9pZDogc3VjY2Vzc2Z1bEJ1aWxkLnBhY2thZ2VfYnVpbGRfaWQsXG4gIH0pXG5cbiAgZGIuYWRkT3JkZXIoe1xuICAgIGFjY291bnRfaWQsXG4gICAgaXNfcnVubmluZzogZmFsc2UsXG4gICAgaXNfc3RhcnRlZDogZmFsc2UsXG4gICAgaXNfZmluaXNoZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBudWxsLFxuICAgIGhhc19lcnJvcjogZmFsc2UsXG4gICAgY2lyY3VpdF9qc29uOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX2NvbXBvbmVudFwiLFxuICAgICAgICBmdHlwZTogXCJzaW1wbGVfcmVzaXN0b3JcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzFcIixcbiAgICAgICAgbmFtZTogXCJSMVwiLFxuICAgICAgICByZXNpc3RhbmU6IFwiMWtcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc3RhcnRlZF9hdDogbnVsbCxcbiAgICBjb21wbGV0ZWRfYXQ6IG51bGwsXG4gIH0pXG59XG4iLCAiaW1wb3J0IG1kNSBmcm9tIFwibWQ1XCJcbmltcG9ydCB0eXBlIHsgUGFja2FnZUZpbGUgfSBmcm9tIFwiLi4vZGIvc2NoZW1hXCJcblxuLyoqXG4gKiBHZW5lcmF0ZSBhbiBNRDUgaGFzaCBmcm9tIHBhY2thZ2UgZmlsZXMgY29udGVudFxuICogVXNlcyB0aGUgc2FtZSBmb3JtYXQgYXMgZXhpc3RpbmcgdGVzdHM6IGNyZWF0ZXMgYSBtYXAgb2YgZmlsZV9wYXRoIC0+IGNvbnRlbnRfdGV4dFxuICogYW5kIGdlbmVyYXRlcyBhbiBNRDUgaGFzaCBvZiB0aGUgSlNPTiBzdHJpbmdpZmllZCBtYXBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRnNTaGEocGFja2FnZUZpbGVzOiBQYWNrYWdlRmlsZVtdKTogc3RyaW5nIHtcbiAgY29uc3QgZnNNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fVxuXG4gIHBhY2thZ2VGaWxlc1xuICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuY29udGVudF90ZXh0KSAvLyBPbmx5IGluY2x1ZGUgZmlsZXMgd2l0aCBjb250ZW50XG4gICAgLmZvckVhY2goKGZpbGUpID0+IHtcbiAgICAgIGZzTWFwW2ZpbGUuZmlsZV9wYXRoXSA9IGZpbGUuY29udGVudF90ZXh0IHx8IFwiXCJcbiAgICB9KVxuXG4gIGNvbnN0IGhhc2ggPSBtZDUoSlNPTi5zdHJpbmdpZnkoZnNNYXApKVxuICByZXR1cm4gYG1kNS0ke2hhc2h9YFxufVxuIiwgImltcG9ydCB0eXBlIHsgRGJDbGllbnQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL2RiLWNsaWVudFwiXG5pbXBvcnQgeyBjcmVhdGVEYXRhYmFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvZGItY2xpZW50XCJcbmltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gXCJ3aW50ZXJzcGVjXCJcblxuZXhwb3J0IGNvbnN0IHdpdGhEYjogTWlkZGxld2FyZTxcbiAge30sXG4gIHtcbiAgICBkYjogRGJDbGllbnRcbiAgfVxuPiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICBpZiAoIWN0eC5kYikge1xuICAgIGN0eC5kYiA9IGNyZWF0ZURhdGFiYXNlKClcbiAgfVxuICByZXR1cm4gbmV4dChyZXEsIGN0eClcbn1cbiIsICJpbXBvcnQgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5cbmV4cG9ydCB0eXBlIEN0eEVycm9yRm4gPSAoXG4gIHN0YXR1czogbnVtYmVyLFxuICBlcnJvcl9wYXlsb2FkOiB7XG4gICAgZXJyb3JfY29kZTogc3RyaW5nXG4gICAgbWVzc2FnZTogc3RyaW5nXG4gIH0sXG4pID0+IFJlc3BvbnNlXG5cbmV4cG9ydCBjb25zdCB3aXRoQ3R4RXJyb3I6IE1pZGRsZXdhcmU8XG4gIHt9LFxuICB7XG4gICAgZXJyb3I6IEN0eEVycm9yRm5cbiAgfVxuPiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICBjdHguZXJyb3IgPSAoc3RhdHVzLCBlcnJvcl9wYXlsb2FkKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IGVycm9yOiBlcnJvcl9wYXlsb2FkIH0pLCB7XG4gICAgICBzdGF0dXMsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgfSxcbiAgICB9KVxuICB9XG4gIHJldHVybiBuZXh0KHJlcSwgY3R4KVxufVxuIiwgImltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gXCJ3aW50ZXJzcGVjL21pZGRsZXdhcmVcIlxuaW1wb3J0IHR5cGUgeyBDdHhFcnJvckZuIH0gZnJvbSBcIi4vd2l0aC1jdHgtZXJyb3JcIlxuXG5leHBvcnQgY29uc3Qgd2l0aFNlc3Npb25BdXRoOiBNaWRkbGV3YXJlPFxuICB7XG4gICAgZXJyb3I6IEN0eEVycm9yRm5cbiAgICBkYjogYW55XG4gIH0sXG4gIHtcbiAgICBhdXRoOiB7XG4gICAgICB0eXBlOiBcInNlc3Npb25cIlxuICAgICAgYWNjb3VudF9pZDogc3RyaW5nXG4gICAgICBwZXJzb25hbF9vcmdfaWQ6IHN0cmluZ1xuICAgICAgZ2l0aHViX3VzZXJuYW1lOiBzdHJpbmdcbiAgICAgIHNlc3Npb25faWQ6IHN0cmluZ1xuICAgIH1cbiAgfSxcbiAge31cbj4gPSBhc3luYyAocmVxLCBjdHgsIG5leHQpID0+IHtcbiAgaWYgKHJlcS5tZXRob2QgPT09IFwiT1BUSU9OU1wiKSByZXR1cm4gbmV4dChyZXEsIGN0eClcblxuICBjb25zdCB0b2tlbiA9IHJlcS5oZWFkZXJzLmdldChcImF1dGhvcml6YXRpb25cIik/LnNwbGl0KFwiQmVhcmVyIFwiKT8uWzFdXG5cbiAgLy8gT25seSBjaGVjayBkYXRhYmFzZSBhY2NvdW50cyB3aGVuIHdlJ3JlIGluIGEgQnVuIHRlc3QgZW52aXJvbm1lbnRcbiAgaWYgKHByb2Nlc3MuZW52LkJVTl9URVNUID09PSBcInRydWVcIiAmJiBjdHguZGI/LmFjY291bnRzKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKChhY2M6IGFueSkgPT4gYWNjLmFjY291bnRfaWQgPT09IHRva2VuKVxuXG4gICAgaWYgKGFjY291bnQpIHtcbiAgICAgIGN0eC5hdXRoID0ge1xuICAgICAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICAgICAgYWNjb3VudF9pZDogYWNjb3VudC5hY2NvdW50X2lkLFxuICAgICAgICBwZXJzb25hbF9vcmdfaWQ6IGBvcmctJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgICAgZ2l0aHViX3VzZXJuYW1lOiBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSxcbiAgICAgICAgc2Vzc2lvbl9pZDogYHNlc3Npb24tJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0KHJlcSwgY3R4KVxuICAgIH1cbiAgfVxuXG4gIC8vIEZvciBhbGwgb3RoZXIgZW52aXJvbm1lbnRzIG9yIGlmIGFjY291bnQgbm90IGZvdW5kIGluIHRlc3QsIHVzZSBoYXJkY29kZWQgYXV0aFxuICBjdHguYXV0aCA9IHtcbiAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICBhY2NvdW50X2lkOiBcImFjY291bnQtMTIzNFwiLFxuICAgIHBlcnNvbmFsX29yZ19pZDogXCJvcmctMTIzNFwiLFxuICAgIGdpdGh1Yl91c2VybmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIHNlc3Npb25faWQ6IFwic2Vzc2lvbi0xMjM0XCIsXG4gIH1cblxuICByZXR1cm4gbmV4dChyZXEsIGN0eClcbn1cbiIsICJpbXBvcnQgdHlwZSB7IE1pZGRsZXdhcmUgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcbmltcG9ydCB0eXBlIHsgQ3R4RXJyb3JGbiB9IGZyb20gXCIuL3dpdGgtY3R4LWVycm9yXCJcblxuZXhwb3J0IGNvbnN0IHdpdGhPcHRpb25hbFNlc3Npb25BdXRoOiBNaWRkbGV3YXJlPFxuICB7XG4gICAgZXJyb3I6IEN0eEVycm9yRm5cbiAgICBkYjogYW55XG4gIH0sXG4gIHtcbiAgICBhdXRoPzoge1xuICAgICAgdHlwZTogXCJzZXNzaW9uXCJcbiAgICAgIGFjY291bnRfaWQ6IHN0cmluZ1xuICAgICAgcGVyc29uYWxfb3JnX2lkOiBzdHJpbmdcbiAgICAgIGdpdGh1Yl91c2VybmFtZTogc3RyaW5nXG4gICAgICBzZXNzaW9uX2lkOiBzdHJpbmdcbiAgICB9XG4gIH0sXG4gIHt9XG4+ID0gYXN5bmMgKHJlcSwgY3R4LCBuZXh0KSA9PiB7XG4gIGlmIChyZXEubWV0aG9kID09PSBcIk9QVElPTlNcIikgcmV0dXJuIG5leHQocmVxLCBjdHgpXG5cbiAgY29uc3QgdG9rZW4gPSByZXEuaGVhZGVycy5nZXQoXCJhdXRob3JpemF0aW9uXCIpPy5zcGxpdChcIkJlYXJlciBcIik/LlsxXVxuXG4gIGlmICghdG9rZW4pIHtcbiAgICByZXR1cm4gbmV4dChyZXEsIGN0eClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5CVU5fVEVTVCA9PT0gXCJ0cnVlXCIgJiYgY3R4LmRiPy5hY2NvdW50cykge1xuICAgIGNvbnN0IGFjY291bnQgPSBjdHguZGIuYWNjb3VudHMuZmluZCgoYWNjOiBhbnkpID0+IGFjYy5hY2NvdW50X2lkID09PSB0b2tlbilcblxuICAgIGlmIChhY2NvdW50KSB7XG4gICAgICBjdHguYXV0aCA9IHtcbiAgICAgICAgdHlwZTogXCJzZXNzaW9uXCIsXG4gICAgICAgIGFjY291bnRfaWQ6IGFjY291bnQuYWNjb3VudF9pZCxcbiAgICAgICAgcGVyc29uYWxfb3JnX2lkOiBgb3JnLSR7YWNjb3VudC5hY2NvdW50X2lkfWAsXG4gICAgICAgIGdpdGh1Yl91c2VybmFtZTogYWNjb3VudC5naXRodWJfdXNlcm5hbWUsXG4gICAgICAgIHNlc3Npb25faWQ6IGBzZXNzaW9uLSR7YWNjb3VudC5hY2NvdW50X2lkfWAsXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG4gIH1cblxuICBjdHguYXV0aCA9IHtcbiAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICBhY2NvdW50X2lkOiBcImFjY291bnQtMTIzNFwiLFxuICAgIHBlcnNvbmFsX29yZ19pZDogXCJvcmctMTIzNFwiLFxuICAgIGdpdGh1Yl91c2VybmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIHNlc3Npb25faWQ6IFwic2Vzc2lvbi0xMjM0XCIsXG4gIH1cblxuICByZXR1cm4gbmV4dChyZXEsIGN0eClcbn1cbiIsICJpbXBvcnQgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQga2xldXIgZnJvbSBcImtsZXVyXCJcblxuZXhwb3J0IGNvbnN0IHdpdGhFcnJvckhhbmRsaW5nOiBNaWRkbGV3YXJlPHt9LCB7fT4gPSBhc3luYyAocmVxLCBjdHgsIG5leHQpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgbmV4dChyZXEsIGN0eClcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGNvbnNvbGUuZXJyb3Ioa2xldXIucmVkKFwiSW50ZXJjZXB0ZWQgZXJyb3I6XCIpLCBlcnJvcilcbiAgICAvLyBJZiBlcnJvciBpcyBhIFJlc3BvbnNlLCByZXR1cm4gaXRcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBSZXNwb25zZSkge1xuICAgICAgcmV0dXJuIGVycm9yXG4gICAgfVxuICAgIHJldHVybiAoY3R4IGFzIGFueSkuanNvbihcbiAgICAgIHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICBlcnJvcjoge1xuICAgICAgICAgIG1lc3NhZ2U6IGVycm9yPy5tZXNzYWdlLFxuICAgICAgICAgIGVycm9yX2NvZGU6IGVycm9yPy5lcnJvcl9jb2RlID8/IFwiaW50ZXJuYWxfc2VydmVyX2Vycm9yXCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgeyBzdGF0dXM6IGVycm9yPy5zdGF0dXMgfHwgNTAwIH0sXG4gICAgKVxuICB9XG59XG4iLCAiaW1wb3J0IHsgTWlkZGxld2FyZSB9IGZyb20gXCJ3aW50ZXJzcGVjL21pZGRsZXdhcmVcIlxuaW1wb3J0IGtsZXVyIGZyb20gXCJrbGV1clwiXG5cbi8vIEVOQUJMRSBDT0xPUlMgQUxXQVlTXG5rbGV1ci5lbmFibGVkID0gdHJ1ZVxuXG5jb25zdCBjb2xvclN0YXR1cyA9IChzdGF0dXM6IG51bWJlcikgPT4ge1xuICBpZiAoc3RhdHVzID49IDUwMCkge1xuICAgIHJldHVybiBrbGV1ci5yZWQoc3RhdHVzLnRvU3RyaW5nKCkpXG4gIH1cbiAgaWYgKHN0YXR1cyA+PSA0MDApIHtcbiAgICByZXR1cm4ga2xldXIueWVsbG93KHN0YXR1cy50b1N0cmluZygpKVxuICB9XG4gIHJldHVybiBrbGV1ci5ncmVlbihzdGF0dXMudG9TdHJpbmcoKSlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dnZXIge1xuICBlcnJvcjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXG4gIGluZm86ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZFxuICB3YXJuOiAoLi4uYXJnczogYW55W10pID0+IHZvaWRcbiAgZGVidWc6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZFxufVxuXG5leHBvcnQgY29uc3Qgd2l0aFJlcXVlc3RMb2dnaW5nOiBNaWRkbGV3YXJlPFxuICB7fSxcbiAge1xuICAgIGxvZ2dlcjogTG9nZ2VyXG4gIH1cbj4gPSBhc3luYyAocmVxLCBjdHgsIG5leHQpID0+IHtcbiAgaWYgKCFjdHgubG9nZ2VyKSB7XG4gICAgY3R4LmxvZ2dlciA9IHtcbiAgICAgIGVycm9yOiAoLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUuZXJyb3IoLi4uYXJncyksXG4gICAgICBpbmZvOiAoLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUubG9nKC4uLmFyZ3MpLFxuICAgICAgd2FybjogKC4uLmFyZ3M6IGFueVtdKSA9PiBjb25zb2xlLndhcm4oLi4uYXJncyksXG4gICAgICBkZWJ1ZzogKC4uLmFyZ3M6IGFueVtdKSA9PiBjb25zb2xlLmxvZyguLi5hcmdzKSxcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICBjdHgubG9nZ2VyLmluZm8oa2xldXIuYmx1ZShgPiAke3JlcS5tZXRob2R9ICR7cmVxLnVybH1gKSlcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG5leHQocmVxLCBjdHgpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlQm9keSA9IGF3YWl0IHJlc3BvbnNlLmNsb25lKCkudGV4dCgpXG4gICAgICBjdHgubG9nZ2VyLmluZm8oXG4gICAgICAgIGA8ICR7Y29sb3JTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKX0gJHtrbGV1ci5ncmF5KHJlc3BvbnNlQm9keS5zbGljZSgwLCA0MCkucmVwbGFjZSgvKFxcclxcbnxcXG58XFxyKS9nbSwgXCJcIikpfWAsXG4gICAgICApXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY3R4LmxvZ2dlci5pbmZvKGA8ICR7Y29sb3JTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKX1gKVxuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2VcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgY3R4LmxvZ2dlci5pbmZvKGtsZXVyLnJlZChgPCBFUlJPUiAke2UudG9TdHJpbmcoKS5zbGljZSgwLCA1MCl9Li4uYCkpXG4gICAgdGhyb3cgZVxuICB9XG59XG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IGFpUmV2aWV3U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgYWlfcmV2aWV3X2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgYWlfcmV2aWV3OiBhaVJldmlld1NjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBhaV9yZXZpZXdfaWQgfSA9IHJlcS5qc29uQm9keVxuICBjb25zdCBleGlzdGluZyA9IGN0eC5kYi5nZXRBaVJldmlld0J5SWQoYWlfcmV2aWV3X2lkKVxuICBpZiAoIWV4aXN0aW5nKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWlfcmV2aWV3X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJBSSByZXZpZXcgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgY29uc3QgdXBkYXRlZCA9IGN0eC5kYi51cGRhdGVBaVJldmlldyhhaV9yZXZpZXdfaWQsIHtcbiAgICBhaV9yZXZpZXdfdGV4dDogXCJQbGFjZWhvbGRlciBBSSBSZXZpZXdcIixcbiAgICBzdGFydF9wcm9jZXNzaW5nX2F0OiBleGlzdGluZy5zdGFydF9wcm9jZXNzaW5nX2F0ID8/IG5vdyxcbiAgICBmaW5pc2hlZF9wcm9jZXNzaW5nX2F0OiBub3csXG4gICAgZGlzcGxheV9zdGF0dXM6IFwiY29tcGxldGVkXCIsXG4gIH0pIVxuICByZXR1cm4gY3R4Lmpzb24oeyBhaV9yZXZpZXc6IHVwZGF0ZWQgfSlcbn0pXG4iLCAiaW1wb3J0IHsgZGF0YXNoZWV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGNvbnN0IHByb2Nlc3NBbGxEYXRhc2hlZXRzID0gKGN0eDogYW55KSA9PiB7XG4gIGNvbnN0IHByb2Nlc3NlZCA9IFtdIGFzIHouaW5mZXI8dHlwZW9mIGRhdGFzaGVldFNjaGVtYT5bXVxuICBjdHguZGIuZGF0YXNoZWV0cy5mb3JFYWNoKChkczogYW55KSA9PiB7XG4gICAgaWYgKCFkcy5waW5faW5mb3JtYXRpb24gfHwgIWRzLmRhdGFzaGVldF9wZGZfdXJscyB8fCAhZHMuYWlfZGVzY3JpcHRpb24pIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBjdHguZGIudXBkYXRlRGF0YXNoZWV0KGRzLmRhdGFzaGVldF9pZCwge1xuICAgICAgICBwaW5faW5mb3JtYXRpb246IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwaW5fbnVtYmVyOiBcIjFcIixcbiAgICAgICAgICAgIG5hbWU6IFwiUElOMVwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiUGxhY2Vob2xkZXIgcGluXCIsXG4gICAgICAgICAgICBjYXBhYmlsaXRpZXM6IFtcImRpZ2l0YWxcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZGF0YXNoZWV0X3BkZl91cmxzOiBbXCJodHRwczovL2V4YW1wbGUuY29tL2RhdGFzaGVldC5wZGZcIl0sXG4gICAgICAgIGFpX2Rlc2NyaXB0aW9uOiBcIlBsYWNlaG9sZGVyIGFpIGRlc2NyaXB0aW9uXCIsXG4gICAgICB9KVxuICAgICAgcHJvY2Vzc2VkLnB1c2godXBkYXRlZCEpXG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2Nlc3NlZC5wdXNoKGRzKVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIHByb2Nlc3NlZFxufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGRhdGFzaGVldHM6IGRhdGFzaGVldFNjaGVtYS5hcnJheSgpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBkYXRhc2hlZXRzID0gcHJvY2Vzc0FsbERhdGFzaGVldHMoY3R4KVxuICByZXR1cm4gY3R4Lmpzb24oeyBkYXRhc2hlZXRzIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzZWVkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zZWVkXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25SZXNwb25zZTogei5hbnkoKSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICByZXR1cm4gY3R4Lmpzb24oY3R4LmRiLmdldFN0YXRlKCkpXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlclN0ZXBzIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL3V0aWxzL29yZGVyLXN0ZXBzXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHN1Y2Nlc3M6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICAvLyBHZXQgYWxsIG9yZGVycyB0aGF0IGFyZW4ndCBmaW5pc2hlZFxuICBjb25zdCBvcmRlcnMgPSBjdHguZGIub3JkZXJzLmZpbHRlcigob3JkZXIpID0+ICFvcmRlci5pc19maW5pc2hlZClcbiAgY29uc3QgdXBkYXRlZE9yZGVycyA9IFtdXG5cbiAgZm9yIChjb25zdCBvcmRlciBvZiBvcmRlcnMpIHtcbiAgICBjb25zdCBvcmRlclN0YXRlID0gY3R4LmRiLmdldEpsY3BjYk9yZGVyU3RhdGVzQnlPcmRlcklkKG9yZGVyLm9yZGVyX2lkKVxuICAgIGlmICghb3JkZXJTdGF0ZSkgY29udGludWVcblxuICAgIC8vIEZpbmQgdGhlIG5leHQgc3RlcCB0byBjb21wbGV0ZVxuICAgIGxldCBuZXh0U3RlcEluZGV4ID0gLTFcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9yZGVyU3RlcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHN0ZXAgPSBvcmRlclN0ZXBzW2ldXG4gICAgICBpZiAoIW9yZGVyU3RhdGVbc3RlcF0pIHtcbiAgICAgICAgbmV4dFN0ZXBJbmRleCA9IGlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBhbGwgc3RlcHMgYXJlIGNvbXBsZXRlZCBvciBubyBuZXh0IHN0ZXAgZm91bmRcbiAgICBpZiAobmV4dFN0ZXBJbmRleCA9PT0gLTEpIHtcbiAgICAgIHVwZGF0ZWRPcmRlcnMucHVzaCh7XG4gICAgICAgIG9yZGVyX2lkOiBvcmRlci5vcmRlcl9pZCxcbiAgICAgICAgY3VycmVudF9zdGVwOiBudWxsLFxuICAgICAgfSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBuZXh0IHN0ZXAgdG8gdHJ1ZVxuICAgIGNvbnN0IG5leHRTdGVwID0gb3JkZXJTdGVwc1tuZXh0U3RlcEluZGV4XVxuICAgIGNvbnN0IHVwZGF0ZXMgPSB7XG4gICAgICBbbmV4dFN0ZXBdOiB0cnVlLFxuICAgICAgY3VycmVudF9zdGVwOiBuZXh0U3RlcCxcbiAgICB9XG5cbiAgICAvLyBJZiB0aGlzIGlzIHRoZSBsYXN0IHN0ZXAsIGFsc28gdXBkYXRlIHRoZSBvcmRlciBzdGF0dXNcbiAgICBpZiAobmV4dFN0ZXBJbmRleCA9PT0gb3JkZXJTdGVwcy5sZW5ndGggLSAxKSB7XG4gICAgICBjdHguZGIudXBkYXRlT3JkZXIob3JkZXIub3JkZXJfaWQsIHtcbiAgICAgICAgaXNfZmluaXNoZWQ6IHRydWUsXG4gICAgICAgIGNvbXBsZXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjdHguZGIudXBkYXRlSmxjcGNiT3JkZXJTdGF0ZShvcmRlci5vcmRlcl9pZCwgdXBkYXRlcylcblxuICAgIHVwZGF0ZWRPcmRlcnMucHVzaCh7XG4gICAgICBvcmRlcl9pZDogb3JkZXIub3JkZXJfaWQsXG4gICAgICBjdXJyZW50X3N0ZXA6IG5leHRTdGVwLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gIH0pXG59KVxuIiwgImV4cG9ydCBjb25zdCBvcmRlclN0ZXBzID0gW1xuICBcImFyZV9nZXJiZXJzX2dlbmVyYXRlZFwiLFxuICBcImFyZV9nZXJiZXJzX3VwbG9hZGVkXCIsXG4gIFwiaXNfZ2VyYmVyX2FuYWx5emVkXCIsXG4gIFwiYXJlX2luaXRpYWxfY29zdHNfY2FsY3VsYXRlZFwiLFxuICBcImlzX3BjYl9hZGRlZF90b19jYXJ0XCIsXG4gIFwiaXNfYm9tX3VwbG9hZGVkXCIsXG4gIFwiaXNfcG5wX3VwbG9hZGVkXCIsXG4gIFwiaXNfYm9tX3BucF9hbmFseXplZFwiLFxuICBcImlzX2JvbV9wYXJzaW5nX2NvbXBsZXRlXCIsXG4gIFwiYXJlX2NvbXBvbmVudHNfYXZhaWxhYmxlXCIsXG4gIFwiaXNfcGF0Y2hfbWFwX2dlbmVyYXRlZFwiLFxuICBcImlzX2pzb25fbWVyZ2VfZmlsZV9jcmVhdGVkXCIsXG4gIFwiaXNfZGZtX3Jlc3VsdF9nZW5lcmF0ZWRcIixcbiAgXCJhcmVfZmlsZXNfZG93bmxvYWRlZFwiLFxuICBcImFyZV9wcm9kdWN0X2NhdGVnb3JpZXNfZmV0Y2hlZFwiLFxuICBcImFyZV9maW5hbF9jb3N0c19jYWxjdWxhdGVkXCIsXG4gIFwiaXNfanNvbl9tZXJnZV9maWxlX3VwZGF0ZWRcIixcbiAgXCJpc19hZGRlZF90b19jYXJ0XCIsXG5dIGFzIGNvbnN0XG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyUXVvdGVTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZV9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyX3F1b3Rlczogb3JkZXJRdW90ZVNjaGVtYS5hcnJheSgpLm9wdGlvbmFsKCksXG4gICAgZXJyb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmRlcl9xdW90ZV9pZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcl9xdW90ZXM6IFtcbiAgICAgIHtcbiAgICAgICAgb3JkZXJfcXVvdGVfaWQsXG4gICAgICAgIGFjY291bnRfaWQ6IFwiMTIzXCIsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogXCIxMjNcIixcbiAgICAgICAgaXNfY29tcGxldGVkOiB0cnVlLFxuICAgICAgICBpc19wcm9jZXNzaW5nOiBmYWxzZSxcbiAgICAgICAgdmVuZG9yX25hbWU6IFwiSkxDUENCXCIsXG4gICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICBoYXNfZXJyb3I6IGZhbHNlLFxuICAgICAgICBjcmVhdGVkX2F0OiBcIjIwMjUtMDQtMjFcIixcbiAgICAgICAgdXBkYXRlZF9hdDogXCIyMDI1LTA0LTIxXCIsXG4gICAgICAgIGNvbXBsZXRlZF9hdDogXCIyMDI1LTA0LTIxXCIsXG4gICAgICAgIHF1b3RlZF9jb21wb25lbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWFudWZhY3R1cmVyX3BhcnRfbnVtYmVyOiBcIjEyM1wiLFxuICAgICAgICAgICAgc3VwcGxpZXJfcGFydF9udW1iZXI6IFwiMTIzXCIsXG4gICAgICAgICAgICBxdWFudGl0eTogMSxcbiAgICAgICAgICAgIHVuaXRfcHJpY2U6IDEwMCxcbiAgICAgICAgICAgIHRvdGFsX3ByaWNlOiAxMDAsXG4gICAgICAgICAgICBhdmFpbGFibGU6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtYW51ZmFjdHVyZXJfcGFydF9udW1iZXI6IFwiMTIzNFwiLFxuICAgICAgICAgICAgc3VwcGxpZXJfcGFydF9udW1iZXI6IFwiMTIzNFwiLFxuICAgICAgICAgICAgcXVhbnRpdHk6IDEsXG4gICAgICAgICAgICB1bml0X3ByaWNlOiAyMDAsXG4gICAgICAgICAgICB0b3RhbF9wcmljZTogMjAwLFxuICAgICAgICAgICAgYXZhaWxhYmxlOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGJhcmVfcGNiX2Nvc3Q6IDMwMCxcbiAgICAgICAgc2hpcHBpbmdfb3B0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNhcnJpZXI6IFwiREhMXCIsXG4gICAgICAgICAgICBzZXJ2aWNlOiBcIkV4cHJlc3NcIixcbiAgICAgICAgICAgIGNvc3Q6IDEwMCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNhcnJpZXI6IFwiRmVkRXhcIixcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiRXhwcmVzc1wiLFxuICAgICAgICAgICAgY29zdDogMjAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHRvdGFsX2Nvc3Rfd2l0aG91dF9zaGlwcGluZzogMTAwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb3JkZXJfcXVvdGVfaWQsXG4gICAgICAgIGFjY291bnRfaWQ6IFwiMTIzXCIsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogXCIxMjNcIixcbiAgICAgICAgaXNfY29tcGxldGVkOiB0cnVlLFxuICAgICAgICBpc19wcm9jZXNzaW5nOiBmYWxzZSxcbiAgICAgICAgdmVuZG9yX25hbWU6IFwiREtSZWRcIixcbiAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgIGhhc19lcnJvcjogZmFsc2UsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IFwiMjAyNS0wNC0yMVwiLFxuICAgICAgICB1cGRhdGVkX2F0OiBcIjIwMjUtMDQtMjFcIixcbiAgICAgICAgY29tcGxldGVkX2F0OiBcIjIwMjUtMDQtMjFcIixcbiAgICAgICAgcXVvdGVkX2NvbXBvbmVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtYW51ZmFjdHVyZXJfcGFydF9udW1iZXI6IFwiMTIzXCIsXG4gICAgICAgICAgICBzdXBwbGllcl9wYXJ0X251bWJlcjogXCIxMjNcIixcbiAgICAgICAgICAgIHF1YW50aXR5OiAxLFxuICAgICAgICAgICAgdW5pdF9wcmljZTogMTAwLFxuICAgICAgICAgICAgdG90YWxfcHJpY2U6IDEwMCxcbiAgICAgICAgICAgIGF2YWlsYWJsZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1hbnVmYWN0dXJlcl9wYXJ0X251bWJlcjogXCIxMjM0XCIsXG4gICAgICAgICAgICBzdXBwbGllcl9wYXJ0X251bWJlcjogXCIxMjM0XCIsXG4gICAgICAgICAgICBxdWFudGl0eTogMSxcbiAgICAgICAgICAgIHVuaXRfcHJpY2U6IDIwMCxcbiAgICAgICAgICAgIHRvdGFsX3ByaWNlOiAyMDAsXG4gICAgICAgICAgICBhdmFpbGFibGU6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYmFyZV9wY2JfY29zdDogMzAwLFxuICAgICAgICBzaGlwcGluZ19vcHRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2FycmllcjogXCJESExcIixcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiRXhwcmVzc1wiLFxuICAgICAgICAgICAgY29zdDogMTAwLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2FycmllcjogXCJGZWRFeFwiLFxuICAgICAgICAgICAgc2VydmljZTogXCJFeHByZXNzXCIsXG4gICAgICAgICAgICBjb3N0OiAyMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdG90YWxfY29zdF93aXRob3V0X3NoaXBwaW5nOiAxMDAsXG4gICAgICB9LFxuICAgIF0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBwcm9jZXNzQWxsRGF0YXNoZWV0cyB9IGZyb20gXCIuL2RhdGFzaGVldHMvcHJvY2Vzc19hbGxfZGF0YXNoZWV0c1wiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHsgb2s6IHouYm9vbGVhbigpIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIHByb2Nlc3NBbGxEYXRhc2hlZXRzKGN0eClcbiAgcmV0dXJuIGN0eC5qc29uKHsgb2s6IHRydWUgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNlZWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NlZWRcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3QoeyBvazogei5ib29sZWFuKCkgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgc2VlZChjdHguZGIpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHsgb2s6IHRydWUgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGFjY291bnRfYmFsYW5jZTogei5vYmplY3Qoe1xuICAgICAgbW9udGhseV9haV9idWRnZXRfdXNlZF91c2Q6IHoubnVtYmVyKCksXG4gICAgfSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIC8vIEZvciB0aGlzIGV4YW1wbGUsIHdlJ2xsIHJldHVybiBhIG1vY2sgYmFsYW5jZVxuICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHlvdSB3b3VsZCBmZXRjaCB0aGlzIGZyb20gYSBkYXRhYmFzZSBvciBleHRlcm5hbCBzZXJ2aWNlXG4gIGNvbnN0IG1vY2tCYWxhbmNlID0ge1xuICAgIG1vbnRobHlfYWlfYnVkZ2V0X3VzZWRfdXNkOiAyLjUsXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIGFjY291bnRfYmFsYW5jZTogbW9ja0JhbGFuY2UsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBBY2NvdW50LCBhY2NvdW50U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgZ2l0aHViX3VzZXJuYW1lOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgYWNjb3VudDogYWNjb3VudFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IGFjY291bnQ6IEFjY291bnQgfCB1bmRlZmluZWRcblxuICBpZiAocmVxLm1ldGhvZCA9PT0gXCJQT1NUXCIpIHtcbiAgICBjb25zdCB7IGdpdGh1Yl91c2VybmFtZSB9ID0gcmVxLmpzb25Cb2R5XG4gICAgYWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKFxuICAgICAgKGFjYzogQWNjb3VudCkgPT5cbiAgICAgICAgYWNjLmdpdGh1Yl91c2VybmFtZS50b0xvd2VyQ2FzZSgpID09PSBnaXRodWJfdXNlcm5hbWUudG9Mb3dlckNhc2UoKSxcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KGN0eC5hdXRoLmFjY291bnRfaWQpXG4gIH1cblxuICBpZiAoIWFjY291bnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhY2NvdW50X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJBY2NvdW50IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oeyBhY2NvdW50IH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBhY2NvdW50U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcXVlcnk6IHouc3RyaW5nKCksXG4gICAgbGltaXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZWZhdWx0KDUwKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBhY2NvdW50czogei5hcnJheShhY2NvdW50U2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBxdWVyeSwgbGltaXQgfSA9IHJlcS5qc29uQm9keVxuICBjb25zdCBhY2NvdW50cyA9IGN0eC5kYi5zZWFyY2hBY2NvdW50cyhxdWVyeSwgbGltaXQpXG4gIHJldHVybiBjdHguanNvbih7IGFjY291bnRzLCBvazogdHJ1ZSB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHtcbiAgYWNjb3VudFNjaGVtYSxcbiAgc2hpcHBpbmdJbmZvU2NoZW1hLFxufSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBzaGlwcGluZ0luZm86IHNoaXBwaW5nSW5mb1NjaGVtYSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGFjY291bnQ6IGFjY291bnRTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc2hpcHBpbmdJbmZvIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCB1cGRhdGVkQWNjb3VudCA9IGN0eC5kYi51cGRhdGVBY2NvdW50KGN0eC5hdXRoLmFjY291bnRfaWQsIHtcbiAgICBzaGlwcGluZ0luZm8sXG4gIH0pXG5cbiAgaWYgKCF1cGRhdGVkQWNjb3VudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFjY291bnRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkFjY291bnQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7IGFjY291bnQ6IHVwZGF0ZWRBY2NvdW50IH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBhaVJldmlld1NjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAub3B0aW9uYWwoKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgYWlfcmV2aWV3OiBhaVJldmlld1NjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQgfSA9IHJlcS5qc29uQm9keSA/PyB7fVxuXG4gIGlmIChwYWNrYWdlX3JlbGVhc2VfaWQpIHtcbiAgICBjb25zdCByZWxlYXNlID0gY3R4LmRiLmdldFBhY2thZ2VSZWxlYXNlQnlJZChwYWNrYWdlX3JlbGVhc2VfaWQpXG4gICAgaWYgKCFyZWxlYXNlKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cbiAgICBjdHguZGIudXBkYXRlUGFja2FnZVJlbGVhc2Uoe1xuICAgICAgLi4ucmVsZWFzZSxcbiAgICAgIGFpX3Jldmlld19yZXF1ZXN0ZWQ6IHRydWUsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGFpX3JldmlldyA9IGN0eC5kYi5hZGRBaVJldmlldyh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgYWlfcmV2aWV3X3RleHQ6IG51bGwsXG4gICAgc3RhcnRfcHJvY2Vzc2luZ19hdDogbnVsbCxcbiAgICBmaW5pc2hlZF9wcm9jZXNzaW5nX2F0OiBudWxsLFxuICAgIHByb2Nlc3NpbmdfZXJyb3I6IG51bGwsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGRpc3BsYXlfc3RhdHVzOiBcInBlbmRpbmdcIixcbiAgfSlcblxuICByZXR1cm4gY3R4Lmpzb24oeyBhaV9yZXZpZXcgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IGFpUmV2aWV3U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBhaV9yZXZpZXdfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBhaV9yZXZpZXc6IGFpUmV2aWV3U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGFpX3Jldmlld19pZCB9ID0gcmVxLnF1ZXJ5XG4gIGNvbnN0IGFpX3JldmlldyA9IGN0eC5kYi5nZXRBaVJldmlld0J5SWQoYWlfcmV2aWV3X2lkKVxuICBpZiAoIWFpX3Jldmlldykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFpX3Jldmlld19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQUkgcmV2aWV3IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cbiAgcmV0dXJuIGN0eC5qc29uKHsgYWlfcmV2aWV3IH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBhaVJldmlld1NjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGFpX3Jldmlld3M6IHouYXJyYXkoYWlSZXZpZXdTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBhaV9yZXZpZXdzID0gY3R4LmRiLmxpc3RBaVJldmlld3MoKVxuICByZXR1cm4gY3R4Lmpzb24oeyBhaV9yZXZpZXdzIH0pXG59KVxuIiwgIi8qKlxuICogRm9yd2FyZCByZXF1ZXN0IHRvIGFudGhyb3BpY1xuICovXG5leHBvcnQgZGVmYXVsdCBhc3luYyAocmVxOiBSZXF1ZXN0KSA9PiB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwocmVxLnVybClcbiAgY29uc3QgYW50aHJvcGljQXBpS2V5ID0gcHJvY2Vzcy5lbnYuQU5USFJPUElDX0FQSV9LRVlcblxuICBpZiAoIWFudGhyb3BpY0FwaUtleSkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXCJBbnRocm9waWMgQVBJIGtleSBpcyBub3Qgc2V0XCIsIHsgc3RhdHVzOiA1MDAgfSlcbiAgfVxuXG4gIGNvbnN0IGFudGhyb3BpY1VybCA9XG4gICAgXCJodHRwczovL2FwaS5hbnRocm9waWMuY29tXCIgKyB1cmwucGF0aG5hbWUucmVwbGFjZSgvXlxcL2FwaVxcL2FpLywgXCJcIilcblxuICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMocmVxLmhlYWRlcnMpXG4gIGhlYWRlcnMuc2V0KFwieC1hcGkta2V5XCIsIGAke2FudGhyb3BpY0FwaUtleX1gKVxuXG4gIGNvbnNvbGUubG9nKFwic2VuZGluZyByZXF1ZXN0IHRvIGFudGhyb3BpY1wiKVxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGFudGhyb3BpY1VybCwge1xuICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgIGJvZHk6IHJlcS5ib2R5LFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBkdXBsZXg6IFwiaGFsZlwiLFxuICB9KS50aGVuKChyKSA9PiByLmpzb24oKSlcblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlKSwge1xuICAgIHN0YXR1czogMjAwLFxuICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgfSlcbn1cbiIsICJpbXBvcnQgYWkgZnJvbSBcIi4vYWkvWy4uLmFueXJvdXRlXVwiXG5leHBvcnQgZGVmYXVsdCBhaVxuIiwgImltcG9ydCB7IFJlYWRhYmxlU3RyZWFtIH0gZnJvbSBcInN0cmVhbS93ZWJcIlxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyAocmVxOiBSZXF1ZXN0KSA9PiB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwocmVxLnVybClcbiAgY29uc3QgYW50aHJvcGljQXBpS2V5ID0gcHJvY2Vzcy5lbnYuQU5USFJPUElDX0FQSV9LRVlcblxuICBpZiAoIWFudGhyb3BpY0FwaUtleSkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXCJBbnRocm9waWMgQVBJIGtleSBpcyBub3Qgc2V0XCIsIHsgc3RhdHVzOiA1MDAgfSlcbiAgfVxuXG4gIGNvbnN0IGFudGhyb3BpY1VybCA9XG4gICAgXCJodHRwczovL2FwaS5hbnRocm9waWMuY29tXCIgKyB1cmwucGF0aG5hbWUucmVwbGFjZSgvXlxcL2FwaVxcL2FpLywgXCJcIilcblxuICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMocmVxLmhlYWRlcnMpXG4gIGhlYWRlcnMuc2V0KFwieC1hcGkta2V5XCIsIGAke2FudGhyb3BpY0FwaUtleX1gKVxuICBoZWFkZXJzLnNldChcIkFjY2VwdFwiLCBcInRleHQvZXZlbnQtc3RyZWFtXCIpXG4gIGhlYWRlcnMuc2V0KFwiQ2FjaGUtQ29udHJvbFwiLCBcIm5vLWNhY2hlXCIpXG4gIGhlYWRlcnMuc2V0KFwiQ29ubmVjdGlvblwiLCBcImtlZXAtYWxpdmVcIilcblxuICBjb25zb2xlLmxvZyhcInNlbmRpbmcgcmVxdWVzdCB0byBhbnRocm9waWNcIilcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChhbnRocm9waWNVcmwsIHtcbiAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgaGVhZGVyczogaGVhZGVycyxcbiAgICBib2R5OiByZXEuYm9keSxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZHVwbGV4OiBcImhhbGZcIixcbiAgfSlcblxuICAvLyBDaGVjayBpZiB0aGUgcmVzcG9uc2UgaXMgc3VjY2Vzc2Z1bFxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShcbiAgICAgIGBBbnRocm9waWMgQVBJIHJldHVybmVkIGFuIGVycm9yOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWAsXG4gICAgICB7XG4gICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICAvLyBDcmVhdGUgYSBSZWFkYWJsZVN0cmVhbSB0byBwcm9jZXNzIHRoZSByZXNwb25zZVxuICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgIGFzeW5jIHN0YXJ0KGNvbnRyb2xsZXIpIHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHkhLmdldFJlYWRlcigpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgICAgICAgIGlmIChkb25lKSBicmVha1xuICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKClcbiAgICAgICAgY29udHJvbGxlci5jbG9zZSgpXG4gICAgICB9XG4gICAgfSxcbiAgfSlcblxuICAvLyBSZXR1cm4gYSBzdHJlYW1pbmcgcmVzcG9uc2VcbiAgcmV0dXJuIG5ldyBSZXNwb25zZShzdHJlYW0gYXMgYW55LCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJ0ZXh0L2V2ZW50LXN0cmVhbVwiLFxuICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwibm8tY2FjaGVcIixcbiAgICAgIENvbm5lY3Rpb246IFwia2VlcC1hbGl2ZVwiLFxuICAgIH0sXG4gIH0pXG59XG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCBPcGVuQUkgZnJvbSBcIm9wZW5haVwiXG5cbi8vIExhenktbG9hZGVkIGNsaWVudCBpbnN0YW5jZVxubGV0IG9wZW5haTogT3BlbkFJIHwgbnVsbCA9IG51bGxcbmxldCBjYWNoZWRSZWFkbWU6IHN0cmluZyB8IG51bGwgPSBudWxsXG5cbmZ1bmN0aW9uIGdldE9wZW5BSUNsaWVudCgpIHtcbiAgY29uc3QgYXBpS2V5ID0gcHJvY2Vzcy5lbnYuVklURV9PUEVOUk9VVEVSX0FQSV9LRVlcbiAgaWYgKCFhcGlLZXkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIEFwaSBLZXkgaW4gZW52XCIpXG4gIH1cblxuICBpZiAoIW9wZW5haSkge1xuICAgIG9wZW5haSA9IG5ldyBPcGVuQUkoe1xuICAgICAgYXBpS2V5LFxuICAgICAgYmFzZVVSTDogXCJodHRwczovL29wZW5yb3V0ZXIuYWkvYXBpL3YxXCIsXG4gICAgICBkZWZhdWx0SGVhZGVyczoge1xuICAgICAgICBcIkhUVFAtUmVmZXJlclwiOiBcImh0dHBzOi8vdHNjaXJjdWl0LmNvbVwiLFxuICAgICAgICBcIlgtVGl0bGVcIjogXCJUU0NpcmN1aXQgRWRpdG9yXCIsXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gb3BlbmFpXG59XG5cbi8vIENhY2hlIFJFQURNRVxuYXN5bmMgZnVuY3Rpb24gZ2V0Q2FjaGVkUmVhZG1lKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGlmIChjYWNoZWRSZWFkbWUgIT09IG51bGwpIHJldHVybiBjYWNoZWRSZWFkbWVcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goXG4gICAgXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdHNjaXJjdWl0L3Byb3BzL21haW4vUkVBRE1FLm1kXCIsXG4gIClcbiAgaWYgKCFyZXMub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCBSRUFETUU6ICR7cmVzLnN0YXR1c31gKVxuICB9XG4gIGNhY2hlZFJlYWRtZSA9IGF3YWl0IHJlcy50ZXh0KClcbiAgcmV0dXJuIGNhY2hlZFJlYWRtZVxufVxuXG5hc3luYyBmdW5jdGlvbiBjb21wbGV0aW9uKFxuICBvcGVuYWk6IE9wZW5BSSxcbiAgcmVhZG1lQ29udGVudDogc3RyaW5nLFxuICBwcmVmaXg6IHN0cmluZyxcbiAgc3VmZml4OiBzdHJpbmcsXG4gIG1vZGVsID0gXCJvcGVuYWkvZ3B0LTQuMS1taW5pXCIsXG4gIGxhbmd1YWdlPzogc3RyaW5nLFxuKSB7XG4gIGNvbnN0IHN5c3RlbU1lc3NhZ2UgPSBgWW91IGFyZSBhbiBleHBlcnQgJHtsYW5ndWFnZSA/IGxhbmd1YWdlICsgXCIgXCIgOiBcIlwifXByb2dyYW1tZXIgd29ya2luZyBpbiBhIFRTWCAoVHlwZVNjcmlwdCArIFJlYWN0IEpTWCkgZW52aXJvbm1lbnQuXG5cbkJlbG93IGlzIHRoZSBSRUFETUUubWQgZm9yIHRoZSBhdmFpbGFibGUgY29tcG9uZW50cy4gWW91IE1VU1QgdXNlIHRoaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGNvbXBvbmVudHMgYW5kIHByb3BzIGFyZSB2YWxpZC4gXG5Pbmx5IHVzZSBjb21wb25lbnRzIGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1bmRlciBBdmFpbGFibGUgQ29tcG9uZW50cyBpbiB0aGUgUkVBRE1FLiBOZXZlciBpbnZlbnQgb3IgZ3Vlc3MgbmV3IGNvbXBvbmVudHMuIElmIHRoZSB1c2VyIHBhcnRpYWxseSB0eXBlcyBhIGNvbXBvbmVudCB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBSRUFETUUsIGRvIE5PVCB0cnkgdG8gY29tcGxldGUgaXQuXG5cbj09PT09IFJFQURNRS5tZCBTVEFSVCA9PT09PVxuJHtyZWFkbWVDb250ZW50fVxuPT09PT0gUkVBRE1FLm1kIEVORCA9PT09PVxuXG5TcGVjaWFsIGluc3RydWN0aW9uIGZvciB0aGUgPGNoaXA+IGNvbXBvbmVudDpcbi0gRG8gTk9UIGFkZCBjaGlwIGFzIGEgcHJvcCAoZS5nLiwgPGNoaXAgY2hpcD1cIi4uLlwiPiBpcyBpbnZhbGlkKS5cbi0gQWx3YXlzIHVzZSB0aGlzIGZvcm1hdDogXG4gIDxjaGlwIG5hbWU9XCJVPG51bWJlcj5cIiBmb290cHJpbnQ9XCI8dmFsaWQgZm9vdHByaW50PlwiIHBpbkxhYmVscz17e319IHBjYlg9ezB9IHBjYlk9ezB9IHNjaFg9ezB9IHNjaFk9ezB9IC8+XG4tIERldGVybWluZSB0aGUgbmV4dCBzZXF1ZW50aWFsIG5hbWUgYXV0b21hdGljYWxseTogZS5nLiBVMSwgVTIsIFUzLlxuLSBPbmx5IHVzZSB2YWxpZCBmb290cHJpbnRzIGFuZCBwaW5MYWJlbHMgZnJvbSB0aGUgUkVBRE1FLlxuLSBTb21lIGNvbXBvbmVudHMgbGlrZSA8bmV0bGFiZWw+IGRvIG5vdCBoYXZlIGEgJ25hbWUnIHByb3AgXHUyMDE0IGRvIG5vdCBhZGQgaXQgZm9yIHRob3NlLlxuXG5TVFJJQ1QgcnVsZXM6XG4tIElmIHBhcnRpYWwgbGlrZSBcIjxjYXBhXCIsIG9ubHkgYXBwZW5kIHJlbWFpbmluZyBcImNpdG9yXCIuIE5ldmVyIHJlcGVhdCBsZXR0ZXJzLiBcbi0gSWYgaW5wdXQgaXMgXCI8Y2FwYWNpdG9yXCIsIGFkZCBvbmx5IHByb3BzLCBuZXZlciByZXBlYXQgdGFnLiBcbi0gQWx3YXlzIHByb2R1Y2UgZXhhY3RseSBvbmUgSlNYIGNvbXBvbmVudCwgc3RhcnRpbmcgd2l0aCBcIjxcIiBpZiBuZWVkZWQuIFxuLSBJZiBwYXJ0aWFsIGRvZXNuXHUyMDE5dCBtYXRjaCBhbnkgdmFsaWQgY29tcG9uZW50LCBvdXRwdXQgbm90aGluZy4gXG4tIE5ldmVyIG91dHB1dCB0d28gSlNYIGVsZW1lbnRzLiBBbHdheXMgZW5kIHdpdGggZXhhY3RseSBvbmUgXCIvPlwiLiBcbi0gTmV2ZXIgYWRkIGR1cGxpY2F0ZSBjbG9zaW5nIFwiLz5cIi4gXG4tIE5ldmVyIG91dHB1dCB0aGUgY29tcG9uZW50IG5hbWUgYXMgYSBwcm9wLiBcbi0gTmV2ZXIgYWRkIHdoaXRlc3BhY2UgYmVmb3JlIHlvdXIgY29tcGxldGlvbi5cbi0gSWYgdGhlIGlucHV0IGlzIGV4YWN0bHkgXCI8XCIsIHRoZW4gc3RhcnQgd2l0aCB0aGUgY29tcG9uZW50IG5hbWUgZGlyZWN0bHkgKGxpa2UgXCJyZXNpc3RvciAuLi4gLz5cIikgd2l0aG91dCBhZGRpbmcgYW5vdGhlciBcIjxcIi5cbi0gU28gdGhhdCB0aGUgZmluYWwgcmVzdWx0IGlzIFwiPHJlc2lzdG9yIC4uLiAvPlwiLCBub3QgXCI8PHJlc2lzdG9yIC4uLiAvPlwiLlxuLSBOZXZlciBwcm9kdWNlIGEgZG91YmxlIFwiPFwiLlxuXG5FeGFtcGxlczpcbi0gSW5wdXQ6IFwiPEZJTExfTUU+XCJcbiAgT3V0cHV0OiA8cmVzaXN0b3IgbmFtZT1cIlIxXCIgZm9vdHByaW50PVwiMDYwM1wiIHBjYlg9ezV9IHBjYlk9ezd9IHNjaFg9ezF9IHNjaFk9ezJ9IHJlc2lzdGFuY2U9ezEwMDB9IC8+XG4tIElucHV0OiBcIjxjYTxGSUxMX01FPlwiXG4gIE91dHB1dDogcGFjaXRvciBuYW1lPVwiQzFcIiBmb290cHJpbnQ9XCIwODA1XCIgcGNiWD17MTB9IHBjYlk9ezE1fSBzY2hYPXszfSBzY2hZPXs0fSAvPlxuLSBJbnB1dDogXCI8Y2hpcDxGSUxMX01FPlwiXG4gIE91dHB1dDogbmFtZT1cIlUxXCIgZm9vdHByaW50PVwiU09JQy04XCIgcGluTGFiZWxzPXt7fX0gcGNiWD17MH0gcGNiWT17MH0gc2NoWD17MH0gc2NoWT17MH0gLz5cbi0gSW5wdXQ6IFwiPG5ldGw8RklMTF9NRT5cIlxuICBPdXRwdXQ6IGFiZWwgbmFtZT1cIk4xXCIgLz5cbi0gTkVWRVIgb3V0cHV0OiA8Y2FwYWNpdG9yIGNhcGFjaXRvciAuLi4gLz4gb3IgPG5ldG5ldCAuLi4gLz5cbi0gSW5wdXQ6IFwiPFwiXG4gIE91dHB1dDogcmVzaXN0b3IgbmFtZT1cIlIxXCIgZm9vdHByaW50PVwiMDYwM1wiIHBjYlg9ezV9IHBjYlk9ezd9IHNjaFg9ezF9IHNjaFk9ezJ9IHJlc2lzdGFuY2U9ezEwMDB9IC8+XG4tIElucHV0OiBcIjxjYVwiXG4gIE91dHB1dDogcGFjaXRvciBuYW1lPVwiQzFcIiBmb290cHJpbnQ9XCIwODA1XCIgcGNiWD17MTB9IHBjYlk9ezE1fSBzY2hYPXszfSBzY2hZPXs0fSAvPlxuLSBJbnB1dDogXCI8Y2FwYWNpdG9yXCJcbiAgT3V0cHV0OiAgY2FwYWNpdGFuY2U9XCIxMDAwcEZcIiBmb290cHJpbnQ9XCIwODA1XCIgbmFtZT1cIkMxXCIgcGNiWD17MTB9IHBjYlk9ezE1fSBzY2hYPXszfSBzY2hZPXs0fSAvPmBcblxuICBjb25zdCBjaGF0Q29tcGxldGlvbiA9IGF3YWl0IG9wZW5haS5jaGF0LmNvbXBsZXRpb25zLmNyZWF0ZSh7XG4gICAgbWVzc2FnZXM6IFtcbiAgICAgIHsgcm9sZTogXCJzeXN0ZW1cIiwgY29udGVudDogc3lzdGVtTWVzc2FnZSB9LFxuICAgICAgeyByb2xlOiBcInVzZXJcIiwgY29udGVudDogYCR7cHJlZml4fTxGSUxMX01FPiR7c3VmZml4fWAgfSxcbiAgICBdLFxuICAgIG1vZGVsLFxuICB9KVxuXG4gIHJldHVybiBjaGF0Q29tcGxldGlvbi5jaG9pY2VzWzBdLm1lc3NhZ2U/LmNvbnRlbnQgPz8gXCJcIlxufVxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLCAvLyBcdTI3MDUgUmVxdWlyZSB1c2VyIHRvIGJlIHNpZ25lZCBpblxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHByZWZpeDogei5zdHJpbmcoKSxcbiAgICBzdWZmaXg6IHouc3RyaW5nKCksXG4gICAgbW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBsYW5ndWFnZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgcHJlZGljdGlvbjogei5zdHJpbmcoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qgb3BlbmFpID0gZ2V0T3BlbkFJQ2xpZW50KClcbiAgY29uc3QgeyBwcmVmaXgsIHN1ZmZpeCwgbW9kZWwsIGxhbmd1YWdlIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCByZWFkbWVDb250ZW50ID0gYXdhaXQgZ2V0Q2FjaGVkUmVhZG1lKClcbiAgY29uc3QgcHJlZGljdGlvblJlc3VsdCA9IGF3YWl0IGNvbXBsZXRpb24oXG4gICAgb3BlbmFpLFxuICAgIHJlYWRtZUNvbnRlbnQsXG4gICAgcHJlZml4LFxuICAgIHN1ZmZpeCxcbiAgICBtb2RlbCxcbiAgICBsYW5ndWFnZSxcbiAgKVxuICByZXR1cm4gY3R4Lmpzb24oeyBwcmVkaWN0aW9uOiBwcmVkaWN0aW9uUmVzdWx0IH0pXG59KVxuIiwgImltcG9ydCB7IGRhdGFzaGVldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBjaGlwX25hbWU6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBkYXRhc2hlZXQ6IGRhdGFzaGVldFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBjaGlwX25hbWUgfSA9IHJlcS5qc29uQm9keVxuICBjb25zdCBkYXRhc2hlZXQgPSBjdHguZGIuYWRkRGF0YXNoZWV0KHsgY2hpcF9uYW1lIH0pXG4gIHJldHVybiBjdHguanNvbih7IGRhdGFzaGVldCB9KVxufSlcbiIsICJpbXBvcnQgeyBkYXRhc2hlZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBkYXRhc2hlZXRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGNoaXBfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLnJlZmluZSgodmFsKSA9PiB2YWwuZGF0YXNoZWV0X2lkIHx8IHZhbC5jaGlwX25hbWUsIHtcbiAgICAgIG1lc3NhZ2U6IFwiZGF0YXNoZWV0X2lkIG9yIGNoaXBfbmFtZSByZXF1aXJlZFwiLFxuICAgIH0pLFxuICBqc29uQm9keTogei5hbnkoKS5vcHRpb25hbCgpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBkYXRhc2hlZXQ6IGRhdGFzaGVldFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBkYXRhc2hlZXRfaWQsIGNoaXBfbmFtZSB9ID0gcmVxLnF1ZXJ5XG4gIGxldCBkYXRhc2hlZXRcbiAgaWYgKGRhdGFzaGVldF9pZCkge1xuICAgIGRhdGFzaGVldCA9IGN0eC5kYi5nZXREYXRhc2hlZXRCeUlkKGRhdGFzaGVldF9pZClcbiAgfSBlbHNlIGlmIChjaGlwX25hbWUpIHtcbiAgICBkYXRhc2hlZXQgPSBjdHguZGIuZ2V0RGF0YXNoZWV0QnlDaGlwTmFtZShjaGlwX25hbWUpXG4gIH1cbiAgaWYgKCFkYXRhc2hlZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJkYXRhc2hlZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkRhdGFzaGVldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG4gIHJldHVybiBjdHguanNvbih7IGRhdGFzaGVldCB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIGNoaXBfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX3BvcHVsYXI6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBkYXRhc2hlZXRzOiB6LmFycmF5KFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBkYXRhc2hlZXRfaWQ6IHouc3RyaW5nKCkudXVpZCgpLFxuICAgICAgICBjaGlwX25hbWU6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGNoaXBfbmFtZSwgaXNfcG9wdWxhciB9ID0gcmVxLmNvbW1vblBhcmFtc1xuICBjb25zdCBkYXRhc2hlZXRzID0gY3R4LmRiXG4gICAgLmxpc3REYXRhc2hlZXRzKHsgY2hpcF9uYW1lLCBpc19wb3B1bGFyIH0pXG4gICAgLm1hcCgoZHMpID0+ICh7XG4gICAgICBkYXRhc2hlZXRfaWQ6IGRzLmRhdGFzaGVldF9pZCxcbiAgICAgIGNoaXBfbmFtZTogZHMuY2hpcF9uYW1lLFxuICAgIH0pKVxuXG4gIHJldHVybiBjdHguanNvbih7IGRhdGFzaGVldHMgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KGN0eC5hdXRoLmFjY291bnRfaWQpXG5cbiAgaWYgKCFhY2NvdW50KSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShcIkFjY291bnQgbm90IGZvdW5kXCIsIHsgc3RhdHVzOiA0MDEgfSlcbiAgfVxuXG4gIC8vIEdldCByZXR1cm5fdG9fcGFnZSBmcm9tIHF1ZXJ5IHBhcmFtc1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlcS51cmwpXG4gIGNvbnN0IHJldHVyblRvUGFnZSA9IHVybC5zZWFyY2hQYXJhbXMuZ2V0KFwicmV0dXJuX3RvX3BhZ2VcIikgfHwgXCIvXCJcblxuICAvLyBDaGVjayBpZiB1c2VyIGFscmVhZHkgaGFzIGFuIGFjdGl2ZSBHaXRIdWIgaW5zdGFsbGF0aW9uXG4gIGNvbnN0IGV4aXN0aW5nSW5zdGFsbGF0aW9uID0gY3R4LmRiLmdpdGh1Ykluc3RhbGxhdGlvbnMuZmluZChcbiAgICAoaW5zdGFsbGF0aW9uKSA9PlxuICAgICAgaW5zdGFsbGF0aW9uLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgaW5zdGFsbGF0aW9uLmlzX2FjdGl2ZSxcbiAgKVxuXG4gIGlmIChleGlzdGluZ0luc3RhbGxhdGlvbikge1xuICAgIC8vIElmIGluc3RhbGxhdGlvbiBhbHJlYWR5IGV4aXN0cywgcmVkaXJlY3QgYmFja1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXCJcIiwge1xuICAgICAgc3RhdHVzOiAzMDIsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIExvY2F0aW9uOiByZXR1cm5Ub1BhZ2UsXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICAvLyBDcmVhdGUgYSBuZXcgR2l0SHViIGluc3RhbGxhdGlvbiAoc2ltdWxhdGluZyB0aGUgdXNlciBjb21wbGV0aW5nIHRoZSBHaXRIdWIgQXBwIGluc3RhbGxhdGlvbilcbiAgY29uc3QgZ2l0aHViSW5zdGFsbGF0aW9uSWQgPSBgZmFrZV9naF9pbnN0YWxsYXRpb25fJHtEYXRlLm5vdygpfWBcbiAgY29uc3QgbW9ja0luc3RhbGxhdGlvbklkID0gYCR7RGF0ZS5ub3coKX1gIC8vIE1vY2sgR2l0SHViIEFwcCBpbnN0YWxsYXRpb24gSURcblxuICBjb25zdCBuZXdJbnN0YWxsYXRpb24gPSB7XG4gICAgZ2l0aHViX2luc3RhbGxhdGlvbl9pZDogZ2l0aHViSW5zdGFsbGF0aW9uSWQsXG4gICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBpbnN0YWxsYXRpb25faWQ6IG1vY2tJbnN0YWxsYXRpb25JZCxcbiAgICBnaXRodWJfdXNlcm5hbWU6IGFjY291bnQuZ2l0aHViX3VzZXJuYW1lLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgaXNfYWN0aXZlOiB0cnVlLFxuICAgIGFjY2Vzc190b2tlbjogYGdoc19tb2NrX3Rva2VuXyR7RGF0ZS5ub3coKX1gLCAvLyBNb2NrIGFjY2VzcyB0b2tlblxuICAgIGFjY2Vzc190b2tlbl9leHBpcmVzX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpICsgMzYwMDAwMCkudG9JU09TdHJpbmcoKSwgLy8gMSBob3VyIGZyb20gbm93XG4gIH1cblxuICBjdHguZGIuZ2l0aHViSW5zdGFsbGF0aW9ucy5wdXNoKG5ld0luc3RhbGxhdGlvbilcblxuICAvLyBSZXR1cm4gSFRNTCBwYWdlIHRoYXQgc2hvd3MgaW5zdGFsbGF0aW9uIHN1Y2Nlc3MgYW5kIHJlZGlyZWN0cyBiYWNrXG4gIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgYFxuICAgIDxodG1sPlxuICAgICAgPGhlYWQ+XG4gICAgICAgIDx0aXRsZT5HaXRIdWIgSW5zdGFsbGF0aW9uIENvbXBsZXRlPC90aXRsZT5cbiAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj1cInJlZnJlc2hcIiBjb250ZW50PVwiMzt1cmw9JHtyZXR1cm5Ub1BhZ2V9XCI+XG4gICAgICA8L2hlYWQ+XG4gICAgICA8Ym9keSBzdHlsZT1cImZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsgcGFkZGluZzogNDBweDsgdGV4dC1hbGlnbjogY2VudGVyO1wiPlxuICAgICAgICA8aDE+XHUyNzA1IEdpdEh1YiBJbnN0YWxsYXRpb24gQ29tcGxldGUhPC9oMT5cbiAgICAgICAgPHA+WW91ciBHaXRIdWIgYWNjb3VudCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgY29ubmVjdGVkIHRvIHRzY2lyY3VpdC48L3A+XG4gICAgICAgIDxwPllvdSBjYW4gbm93IGFjY2VzcyB5b3VyIHJlcG9zaXRvcmllcyBpbiB0aGUgcGFja2FnZSBzZXR0aW5ncy48L3A+XG4gICAgICAgIDxwPlJlZGlyZWN0aW5nIHlvdSBiYWNrIGluIDMgc2Vjb25kcy4uLjwvcD5cbiAgICAgICAgPGEgaHJlZj1cIiR7cmV0dXJuVG9QYWdlfVwiIHN0eWxlPVwiY29sb3I6ICMwMDY2Y2M7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC13ZWlnaHQ6IGJvbGQ7XCI+Q2xpY2sgaGVyZSBpZiB5b3UncmUgbm90IHJlZGlyZWN0ZWQgYXV0b21hdGljYWxseTwvYT5cbiAgICAgIDwvYm9keT5cbiAgICA8L2h0bWw+XG4gICAgYCxcbiAgICB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XCIsXG4gICAgICB9LFxuICAgIH0sXG4gIClcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHJlcG9zOiB6LmFycmF5KFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLFxuICAgICAgICBmdWxsX25hbWU6IHouc3RyaW5nKCksXG4gICAgICAgIHByaXZhdGU6IHouYm9vbGVhbigpLFxuICAgICAgICBvd25lcjogei5vYmplY3Qoe1xuICAgICAgICAgIGxvZ2luOiB6LnN0cmluZygpLFxuICAgICAgICB9KSxcbiAgICAgICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICAgICAgZGVmYXVsdF9icmFuY2g6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICB9KSxcbn0pKGFzeW5jIChfcmVxLCBjdHgpID0+IHtcbiAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KGN0eC5hdXRoLmFjY291bnRfaWQpXG5cbiAgaWYgKCFhY2NvdW50KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDEsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWNjb3VudF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQWNjb3VudCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgR2l0SHViIGFjY291bnQgY29ubmVjdGVkXG4gIGlmICghYWNjb3VudC5naXRodWJfdXNlcm5hbWUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJnaXRodWJfbm90X2Nvbm5lY3RlZFwiLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgXCJHaXRIdWIgYWNjb3VudCBub3QgY29ubmVjdGVkLiBQbGVhc2UgY29ubmVjdCB5b3VyIEdpdEh1YiBhY2NvdW50IGZpcnN0LlwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB1c2VyIGhhcyBhIEdpdEh1YiBpbnN0YWxsYXRpb25cbiAgY29uc3QgZ2l0aHViSW5zdGFsbGF0aW9uID0gY3R4LmRiLmdpdGh1Ykluc3RhbGxhdGlvbnMuZmluZChcbiAgICAoaW5zdGFsbGF0aW9uKSA9PlxuICAgICAgaW5zdGFsbGF0aW9uLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgaW5zdGFsbGF0aW9uLmlzX2FjdGl2ZSxcbiAgKVxuXG4gIGlmICghZ2l0aHViSW5zdGFsbGF0aW9uKSB7XG4gICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5IGlmIG5vIEdpdEh1YiBpbnN0YWxsYXRpb24gZm91bmRcbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgcmVwb3M6IFtdLFxuICAgIH0pXG4gIH1cblxuICAvLyBNb2NrIHJlcG9zaXRvcmllcyBmb3IgZGVtb25zdHJhdGlvblxuICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoaXMgd291bGQgZmV0Y2ggZnJvbSBHaXRIdWIgQVBJIHVzaW5nIHRoZSBpbnN0YWxsYXRpb24gYWNjZXNzIHRva2VuXG4gIGNvbnN0IG1vY2tSZXBvcyA9IFtcbiAgICB7XG4gICAgICB1bnNjb3BlZF9uYW1lOiBcIm15LWVsZWN0cm9uaWNzLXByb2plY3RcIixcbiAgICAgIGZ1bGxfbmFtZTogYCR7YWNjb3VudC5naXRodWJfdXNlcm5hbWV9L215LWVsZWN0cm9uaWNzLXByb2plY3RgLFxuICAgICAgb3duZXI6IHtcbiAgICAgICAgbG9naW46IGFjY291bnQuZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFyZHVpbm8tYmFzZWQgc2Vuc29yIG1vbml0b3Jpbmcgc3lzdGVtXCIsXG4gICAgICBwcml2YXRlOiBmYWxzZSxcbiAgICAgIGRlZmF1bHRfYnJhbmNoOiBcIm1haW5cIixcbiAgICB9LFxuICAgIHtcbiAgICAgIHVuc2NvcGVkX25hbWU6IFwicGNiLWRlc2lnbnNcIixcbiAgICAgIGZ1bGxfbmFtZTogYCR7YWNjb3VudC5naXRodWJfdXNlcm5hbWV9L3BjYi1kZXNpZ25zYCxcbiAgICAgIG93bmVyOiB7XG4gICAgICAgIGxvZ2luOiBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSxcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogXCJDb2xsZWN0aW9uIG9mIFBDQiBkZXNpZ25zIGZvciB2YXJpb3VzIHByb2plY3RzXCIsXG4gICAgICBwcml2YXRlOiB0cnVlLFxuICAgICAgZGVmYXVsdF9icmFuY2g6IFwibWFpblwiLFxuICAgIH0sXG4gICAge1xuICAgICAgdW5zY29wZWRfbmFtZTogXCJ0c2NpcmN1aXQtZXhhbXBsZXNcIixcbiAgICAgIGZ1bGxfbmFtZTogYCR7YWNjb3VudC5naXRodWJfdXNlcm5hbWV9L3RzY2lyY3VpdC1leGFtcGxlc2AsXG4gICAgICBvd25lcjoge1xuICAgICAgICBsb2dpbjogYWNjb3VudC5naXRodWJfdXNlcm5hbWUsXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246IFwiRXhhbXBsZXMgYW5kIHR1dG9yaWFscyBmb3IgdHNjaXJjdWl0XCIsXG4gICAgICBwcml2YXRlOiBmYWxzZSxcbiAgICAgIGRlZmF1bHRfYnJhbmNoOiBcIm1haW5cIixcbiAgICB9LFxuICBdXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICByZXBvczogbW9ja1JlcG9zLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHN1Y2Nlc3M6IHouYm9vbGVhbigpLFxuICAgIG1lc3NhZ2U6IHouc3RyaW5nKCksXG4gICAgcmVwb3NfcmVmcmVzaGVkOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IGFjY291bnQgPSBjdHguZGIuZ2V0QWNjb3VudChjdHguYXV0aC5hY2NvdW50X2lkKVxuXG4gIGlmICghYWNjb3VudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAxLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFjY291bnRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkFjY291bnQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIEdpdEh1YiBpbnN0YWxsYXRpb25cbiAgY29uc3QgZ2l0aHViSW5zdGFsbGF0aW9uID0gY3R4LmRiLmdpdGh1Ykluc3RhbGxhdGlvbnMuZmluZChcbiAgICAoaW5zdGFsbGF0aW9uKSA9PlxuICAgICAgaW5zdGFsbGF0aW9uLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgaW5zdGFsbGF0aW9uLmlzX2FjdGl2ZSxcbiAgKVxuXG4gIGlmICghZ2l0aHViSW5zdGFsbGF0aW9uKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZ2l0aHViX25vdF9jb25uZWN0ZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiR2l0SHViIGFjY291bnQgbm90IGNvbm5lY3RlZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoaXMgd291bGQgcmVmcmVzaCByZXBvcyBmcm9tIEdpdEh1YiBBUElcbiAgLy8gRm9yIGZha2UgQVBJLCBzaW11bGF0ZSByZWZyZXNoaW5nIGJ5IHVwZGF0aW5nIHRoZSBpbnN0YWxsYXRpb24gdGltZXN0YW1wXG4gIGdpdGh1Ykluc3RhbGxhdGlvbi51cGRhdGVkX2F0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICAgIG1lc3NhZ2U6IFwiR2l0SHViIHJlcG9zaXRvcmllcyByZWZyZXNoZWQgc3VjY2Vzc2Z1bGx5XCIsXG4gICAgcmVwb3NfcmVmcmVzaGVkOiAzLCAvLyBNb2NrIG51bWJlclxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHsgb2s6IHouYm9vbGVhbigpIH0pLFxufSkoYXN5bmMgKHJlcTogYW55LCBjdHg6IGFueSkgPT4ge1xuICByZXR1cm4gY3R4Lmpzb24oeyBvazogdHJ1ZSB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IG1zIGZyb20gXCJtc1wiXG5pbXBvcnQgeyBTaWduSldUIH0gZnJvbSBcImpvc2VcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBnaXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzZXNzaW9uOiB6Lm9iamVjdCh7XG4gICAgICBzZXNzaW9uX2lkOiB6LnN0cmluZygpLFxuICAgICAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgICAgIGV4cGlyZXNfYXQ6IHouc3RyaW5nKCksXG4gICAgICBpc19jbGlfc2Vzc2lvbjogei5ib29sZWFuKCksXG4gICAgICB0b2tlbjogei5zdHJpbmcoKSxcbiAgICB9KSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IGFjY291bnRcbiAgaWYgKFwiYWNjb3VudF9pZFwiIGluIHJlcS5qc29uQm9keSkge1xuICAgIGFjY291bnQgPSBjdHguZGIuZ2V0QWNjb3VudChyZXEuanNvbkJvZHkuYWNjb3VudF9pZClcbiAgfSBlbHNlIHtcbiAgICBhY2NvdW50ID0gY3R4LmRiLmdldEFjY291bnQocmVxLmpzb25Cb2R5LmdpdGh1Yl91c2VybmFtZSlcbiAgfVxuXG4gIGlmICghYWNjb3VudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFjY291bnRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkFjY291bnQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IG5ld19zZXNzaW9uID0gY3R4LmRiLmNyZWF0ZVNlc3Npb24oe1xuICAgIGV4cGlyZXNfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgKyBtcyhcIjYwIGRheVwiKSkudG9JU09TdHJpbmcoKSxcbiAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQsXG4gICAgaXNfY2xpX3Nlc3Npb246IGZhbHNlLFxuICB9KVxuXG4gIGNvbnN0IHRva2VuID0gYXdhaXQgbmV3IFNpZ25KV1Qoe1xuICAgIGFjY291bnRfaWQ6IGFjY291bnQuYWNjb3VudF9pZCxcbiAgICBzZXNzaW9uX2lkOiBuZXdfc2Vzc2lvbi5zZXNzaW9uX2lkLFxuICAgIGdpdGh1Yl91c2VybmFtZTogYWNjb3VudC5naXRodWJfdXNlcm5hbWUsXG4gIH0pXG4gICAgLnNldFByb3RlY3RlZEhlYWRlcih7IGFsZzogXCJIUzI1NlwiIH0pXG4gICAgLnNldEV4cGlyYXRpb25UaW1lKG5ldyBEYXRlKERhdGUubm93KCkgKyBtcyhcIjYwIGRheVwiKSkudG9JU09TdHJpbmcoKSlcbiAgICAuc2lnbihuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUocHJvY2Vzcy5lbnYuSldUX1NFQ1JFVCB8fCBcIlwiKSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIHNlc3Npb246IHtcbiAgICAgIC4uLm5ld19zZXNzaW9uLFxuICAgICAgdG9rZW4sXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyRmlsZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyX2ZpbGU6IG9yZGVyRmlsZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmRlcl9maWxlX2lkIH0gPSByZXEucXVlcnlcblxuICBjb25zdCBvcmRlckZpbGUgPSBjdHguZGIuZ2V0T3JkZXJGaWxlQnlJZChvcmRlcl9maWxlX2lkKVxuICBpZiAoIW9yZGVyRmlsZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZGVyX2ZpbGVfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZGVyIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfZmlsZTogb3JkZXJGaWxlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgb3JkZXJGaWxlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfaWQ6IHouc3RyaW5nKCksXG4gICAgY29udGVudF9iYXNlNjQ6IHouc3RyaW5nKCksXG4gICAgaXNfZ2VyYmVyc196aXA6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgZm9yX3Byb3ZpZGVyOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9maWxlOiBvcmRlckZpbGVTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JkZXJfaWQsIGNvbnRlbnRfYmFzZTY0LCBpc19nZXJiZXJzX3ppcCwgZm9yX3Byb3ZpZGVyIH0gPVxuICAgIHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IG9yZGVyID0gY3R4LmRiLmdldE9yZGVyQnlJZChvcmRlcl9pZClcbiAgaWYgKCFvcmRlcikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZGVyX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmRlciBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgbmV3T3JkZXJGaWxlID0ge1xuICAgIG9yZGVyX2lkLFxuICAgIGlzX2dlcmJlcnNfemlwOiBpc19nZXJiZXJzX3ppcCB8fCBmYWxzZSxcbiAgICBjb250ZW50X3R5cGU6IFwiYmFzZTY0XCIsXG4gICAgZm9yX3Byb3ZpZGVyOiBmb3JfcHJvdmlkZXIgfHwgbnVsbCxcbiAgICB1cGxvYWRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGNvbnRlbnRfdGV4dDogQnVmZmVyLmZyb20oY29udGVudF9iYXNlNjQsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKFwidXRmLThcIiksXG4gICAgY29udGVudF9ieXRlczogVWludDhBcnJheS5mcm9tKGF0b2IoY29udGVudF9iYXNlNjQpLCAoYykgPT5cbiAgICAgIGMuY2hhckNvZGVBdCgwKSxcbiAgICApLFxuICB9XG5cbiAgY29uc3Qgb3JkZXJGaWxlID0gY3R4LmRiLmFkZE9yZGVyRmlsZShuZXdPcmRlckZpbGUpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcl9maWxlOiBvcmRlckZpbGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZV9pZHM6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9yZWxlYXNlX2lkIH0gPSByZXEuanNvbkJvZHlcbiAgY29uc3QgdmVuZG9yTmFtZXMgPSBbXCJKTENQQ0JcIiwgXCJNYWNyb0ZhYlwiXVxuXG4gIGxldCBvcmRlclF1b3RlSWRzID0gW11cbiAgZm9yIChjb25zdCB2ZW5kb3JOYW1lIG9mIHZlbmRvck5hbWVzKSB7XG4gICAgY29uc3Qgb3JkZXJRdW90ZUlkID0gY3R4LmRiLmFkZE9yZGVyUXVvdGUoe1xuICAgICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIHZlbmRvcl9uYW1lOiB2ZW5kb3JOYW1lLFxuICAgIH0pXG4gICAgb3JkZXJRdW90ZUlkcy5wdXNoKG9yZGVyUXVvdGVJZClcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfcXVvdGVfaWRzOiBvcmRlclF1b3RlSWRzLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICAgIHZlbmRvcl9uYW1lOiB6LmxpdGVyYWwoXCJqbGNwY2JcIiksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGVycm9yOiB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgZXJyb3JfY29kZTogei5zdHJpbmcoKSxcbiAgICAgICAgbWVzc2FnZTogei5zdHJpbmcoKSxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uYWwoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQsIHZlbmRvcl9uYW1lIH0gPSByZXEuanNvbkJvZHlcblxuICAvLyBjaGVjayBwYWNrYWdlIHJlbGVhc2UgZXhpc3RzXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLmdldFBhY2thZ2VSZWxlYXNlQnlJZChwYWNrYWdlX3JlbGVhc2VfaWQpXG4gIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4Lmpzb24oXG4gICAgICB7XG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgeyBzdGF0dXM6IDQwNCB9LFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlRmlsZXMgPVxuICAgIGN0eC5kYi5nZXRQYWNrYWdlRmlsZXNCeVJlbGVhc2VJZChwYWNrYWdlX3JlbGVhc2VfaWQpXG4gIGlmIChwYWNrYWdlUmVsZWFzZUZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjdHguanNvbihcbiAgICAgIHtcbiAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9maWxlc19ub3RfZm91bmRcIixcbiAgICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBmaWxlcyBub3QgZm91bmRcIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7IHN0YXR1czogNDA0IH0sXG4gICAgKVxuICB9XG5cbiAgY29uc3Qgb3JkZXJRdW90ZUlkID0gY3R4LmRiLmFkZE9yZGVyUXVvdGUoe1xuICAgIGFjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIHZlbmRvcl9uYW1lLFxuICB9KVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfcXVvdGVfaWQ6IG9yZGVyUXVvdGVJZCxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyUXVvdGVTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfcXVvdGVfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZTogb3JkZXJRdW90ZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmRlcl9xdW90ZV9pZCB9ID0gcmVxLmNvbW1vblBhcmFtc1xuXG4gIGNvbnN0IG9yZGVyUXVvdGUgPSBjdHguZGIuZ2V0T3JkZXJRdW90ZUJ5SWQob3JkZXJfcXVvdGVfaWQpXG5cbiAgaWYgKCFvcmRlclF1b3RlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JkZXJfcXVvdGVfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZGVyIHF1b3RlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZGVyX3F1b3RlOiBvcmRlclF1b3RlLFxuICB9KVxufSlcbiIsICJpbXBvcnQge1xuICBKbGNwY2JPcmRlclN0YXRlLFxuICB0eXBlIE9yZGVyLFxuICBvcmRlclNjaGVtYSxcbn0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLnV1aWQoKS5vcHRpb25hbCgpLFxuICAgICAgY2lyY3VpdF9qc29uOiB6LmFycmF5KHoucmVjb3JkKHouYW55KCkpKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoKGRhdGEpID0+IGRhdGEucGFja2FnZV9yZWxlYXNlX2lkIHx8IGRhdGEuY2lyY3VpdF9qc29uLCB7XG4gICAgICBtZXNzYWdlOiBcIkVpdGhlciBwYWNrYWdlX3JlbGVhc2VfaWQgb3IgY2lyY3VpdF9qc29uIG11c3QgYmUgcHJvdmlkZWRcIixcbiAgICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXI6IG9yZGVyU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGNpcmN1aXRfanNvbiB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgbmV3T3JkZXIgPSB7XG4gICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBpc19ydW5uaW5nOiBmYWxzZSxcbiAgICBpc19zdGFydGVkOiBmYWxzZSxcbiAgICBpc19maW5pc2hlZDogZmFsc2UsXG4gICAgZXJyb3I6IG51bGwsXG4gICAgaGFzX2Vycm9yOiBmYWxzZSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc3RhcnRlZF9hdDogbnVsbCxcbiAgICBjb21wbGV0ZWRfYXQ6IG51bGwsXG4gICAgY2lyY3VpdF9qc29uLFxuICB9XG5cbiAgY29uc3Qgb3JkZXIgPSBjdHguZGIuYWRkT3JkZXIobmV3T3JkZXIpXG5cbiAgY29uc3QgbmV3SmxjcGNiT3JkZXJTdGF0ZSA9IHtcbiAgICBvcmRlcl9pZDogb3JkZXIub3JkZXJfaWQsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGFyZV9nZXJiZXJzX3VwbG9hZGVkOiBmYWxzZSxcbiAgICBpc19nZXJiZXJfYW5hbHl6ZWQ6IGZhbHNlLFxuICAgIGFyZV9pbml0aWFsX2Nvc3RzX2NhbGN1bGF0ZWQ6IGZhbHNlLFxuICAgIGlzX3BjYl9hZGRlZF90b19jYXJ0OiBmYWxzZSxcbiAgICBpc19ib21fdXBsb2FkZWQ6IGZhbHNlLFxuICAgIGlzX3BucF91cGxvYWRlZDogZmFsc2UsXG4gICAgaXNfYm9tX3BucF9hbmFseXplZDogZmFsc2UsXG4gICAgaXNfYm9tX3BhcnNpbmdfY29tcGxldGU6IGZhbHNlLFxuICAgIGFyZV9jb21wb25lbnRzX2F2YWlsYWJsZTogZmFsc2UsXG4gICAgaXNfcGF0Y2hfbWFwX2dlbmVyYXRlZDogZmFsc2UsXG4gICAgaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWQ6IGZhbHNlLFxuICAgIGlzX2RmbV9yZXN1bHRfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgICBhcmVfZmlsZXNfZG93bmxvYWRlZDogZmFsc2UsXG4gICAgYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkOiBmYWxzZSxcbiAgICBhcmVfZmluYWxfY29zdHNfY2FsY3VsYXRlZDogZmFsc2UsXG4gICAgaXNfanNvbl9tZXJnZV9maWxlX3VwZGF0ZWQ6IGZhbHNlLFxuICAgIGlzX2FkZGVkX3RvX2NhcnQ6IGZhbHNlLFxuICAgIGFyZV9nZXJiZXJzX2dlbmVyYXRlZDogZmFsc2UsXG4gICAgY3VycmVudF9zdGVwOiBudWxsLFxuICB9XG5cbiAgY3R4LmRiLmFkZEpsY3BjYk9yZGVyU3RhdGUobmV3SmxjcGNiT3JkZXJTdGF0ZSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZGVyLFxuICB9KVxufSlcbiIsICJpbXBvcnQge1xuICBlcnJvclNjaGVtYSxcbiAgamxjcGNiT3JkZXJTdGF0ZVNjaGVtYSxcbiAgb3JkZXJTY2hlbWEsXG59IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlclN0ZXBzIGFzIHNpbXVsYXRlU2NlbmFyaW9zIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL3V0aWxzL29yZGVyLXN0ZXBzXCJcblxuY29uc3QgZGVmYXVsdE9yZGVyU3RhdGUgPSB7XG4gIGFyZV9nZXJiZXJzX3VwbG9hZGVkOiBmYWxzZSxcbiAgaXNfZ2VyYmVyX2FuYWx5emVkOiBmYWxzZSxcbiAgYXJlX2luaXRpYWxfY29zdHNfY2FsY3VsYXRlZDogZmFsc2UsXG4gIGlzX3BjYl9hZGRlZF90b19jYXJ0OiBmYWxzZSxcbiAgaXNfYm9tX3VwbG9hZGVkOiBmYWxzZSxcbiAgaXNfcG5wX3VwbG9hZGVkOiBmYWxzZSxcbiAgaXNfYm9tX3BucF9hbmFseXplZDogZmFsc2UsXG4gIGlzX2JvbV9wYXJzaW5nX2NvbXBsZXRlOiBmYWxzZSxcbiAgYXJlX2NvbXBvbmVudHNfYXZhaWxhYmxlOiBmYWxzZSxcbiAgaXNfcGF0Y2hfbWFwX2dlbmVyYXRlZDogZmFsc2UsXG4gIGlzX2pzb25fbWVyZ2VfZmlsZV9jcmVhdGVkOiBmYWxzZSxcbiAgaXNfZGZtX3Jlc3VsdF9nZW5lcmF0ZWQ6IGZhbHNlLFxuICBhcmVfZmlsZXNfZG93bmxvYWRlZDogZmFsc2UsXG4gIGFyZV9wcm9kdWN0X2NhdGVnb3JpZXNfZmV0Y2hlZDogZmFsc2UsXG4gIGFyZV9maW5hbF9jb3N0c19jYWxjdWxhdGVkOiBmYWxzZSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX3VwZGF0ZWQ6IGZhbHNlLFxuICBpc19hZGRlZF90b19jYXJ0OiBmYWxzZSxcbiAgdXBsb2FkZWRfZ2VyYmVyX21ldGFkYXRhOiBudWxsLFxuICBnZXJiZXJfYW5hbHlzaXM6IG51bGwsXG4gIGFyZV9nZXJiZXJzX2dlbmVyYXRlZDogZmFsc2UsXG4gIGN1cnJlbnRfc3RlcDogbnVsbCBhcyBudWxsIHwgKHR5cGVvZiBzaW11bGF0ZVNjZW5hcmlvcylbbnVtYmVyXSxcbn1cblxuY29uc3QgZXJyb3JNYXAgPSB7XG4gIGFyZV9nZXJiZXJzX2dlbmVyYXRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiR0VSQkVSX0dFTkVSQVRJT05fRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJHZXJiZXIgZ2VuZXJhdGlvbiBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX2dlcmJlcnNfdXBsb2FkZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkdFUkJFUl9VUExPQURfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJHZXJiZXIgdXBsb2FkIGZhaWxlZFwiLFxuICB9LFxuICBpc19nZXJiZXJfYW5hbHl6ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkFOQUxZWkVfR0VSQkVSX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiQW5hbHl6ZSBnZXJiZXIgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2JvbV91cGxvYWRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiQk9NX1VQTE9BRF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkJvbSB1cGxvYWQgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX3BucF91cGxvYWRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiUE5QX1VQTE9BRF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIlBucCB1cGxvYWQgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2JvbV9wbnBfYW5hbHl6ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkFOQUxZWkVfQk9NX0FORF9QTlBfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJBbmFseXplIGJvbSBhbmQgcG5wIGZhaWxlZFwiLFxuICB9LFxuICBpc19ib21fcGFyc2luZ19jb21wbGV0ZToge1xuICAgIGVycm9yX2NvZGU6IFwiQk9NX1BBUlNJTkdfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJCb20gcGFyc2luZyBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX2NvbXBvbmVudHNfYXZhaWxhYmxlOiB7XG4gICAgZXJyb3JfY29kZTogXCJDT01QT05FTlRTX0FWQUlMQUJJTElUWV9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkNvbXBvbmVudHMgYXZhaWxhYmlsaXR5IGZhaWxlZFwiLFxuICB9LFxuICBpc19wYXRjaF9tYXBfZ2VuZXJhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJHRU5FUkFURV9QQVRDSF9NQVBfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJHZW5lcmF0ZSBwYXRjaCBtYXAgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2pzb25fbWVyZ2VfZmlsZV9jcmVhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJDUkVBVElPTl9KU09OX01FUkdFX0ZJTEVfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJDcmVhdGlvbiBqc29uIG1lcmdlIGZpbGUgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2RmbV9yZXN1bHRfZ2VuZXJhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJHRU5FUkFURV9ERk1fUkVTVUxUX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiR2VuZXJhdGUgZGZtIHJlc3VsdCBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX2ZpbGVzX2Rvd25sb2FkZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkRPV05MT0FEX0ZJTEVTX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiRG93bmxvYWQgZmlsZXMgZmFpbGVkXCIsXG4gIH0sXG4gIGFyZV9wcm9kdWN0X2NhdGVnb3JpZXNfZmV0Y2hlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiRkVUQ0hfUFJPRFVDVF9DQVRFR09SSUVTX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiRmV0Y2ggcHJvZHVjdCBjYXRlZ29yaWVzIGZhaWxlZFwiLFxuICB9LFxuICBhcmVfZmluYWxfY29zdHNfY2FsY3VsYXRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiRklOQUxfQ09TVF9DQUxDVUxBVElPTl9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkZpbmFsIGNvc3QgY2FsY3VsYXRpb24gZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2pzb25fbWVyZ2VfZmlsZV91cGRhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJVUERBVEVfSlNPTl9NRVJHRV9GSUxFX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiVXBkYXRlIGpzb24gbWVyZ2UgZmlsZSBmYWlsZWRcIixcbiAgfSxcbiAgaXNfcGNiX2FkZGVkX3RvX2NhcnQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkFERF9QQ0JfVE9fQ0FSVF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkFkZCBwY2IgdG8gY2FydCBmYWlsZWRcIixcbiAgfSxcbiAgaXNfYWRkZWRfdG9fY2FydDoge1xuICAgIGVycm9yX2NvZGU6IFwiQUREX1RPX0NBUlRfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJBZGQgdG8gY2FydCBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX2luaXRpYWxfY29zdHNfY2FsY3VsYXRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiSU5JVElBTF9DT1NUX0NBTENVTEFUSU9OX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiSW5pdGlhbCBjb3N0IGNhbGN1bGF0aW9uIGZhaWxlZFwiLFxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgICBfc2ltdWxhdGVfc2NlbmFyaW86IHouZW51bShzaW11bGF0ZVNjZW5hcmlvcykub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyOiBvcmRlclNjaGVtYSxcbiAgICBvcmRlclN0YXRlOiBqbGNwY2JPcmRlclN0YXRlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZGVyX2lkLCBfc2ltdWxhdGVfc2NlbmFyaW8gfSA9IHJlcS5xdWVyeVxuXG4gIGNvbnN0IG9yZGVyID0gY3R4LmRiLmdldE9yZGVyQnlJZChvcmRlcl9pZClcbiAgaWYgKCFvcmRlcikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZGVyX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmRlciBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgdXBkYXRlZE9yZGVyU3RhdGUgPSB7XG4gICAgLi4uZGVmYXVsdE9yZGVyU3RhdGUsXG4gICAgb3JkZXJfaWQsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICB9XG5cbiAgaWYgKF9zaW11bGF0ZV9zY2VuYXJpbykge1xuICAgIGNvbnN0IGVycm9yID0gZXJyb3JNYXBbX3NpbXVsYXRlX3NjZW5hcmlvXVxuICAgIGlmIChlcnJvcikge1xuICAgICAgb3JkZXIuZXJyb3IgPSBlcnJvclNjaGVtYS5wYXJzZShlcnJvcilcbiAgICAgIG9yZGVyLmhhc19lcnJvciA9IHRydWVcbiAgICAgIGN0eC5kYi51cGRhdGVPcmRlcihvcmRlcl9pZCwgeyBlcnJvcjogb3JkZXIuZXJyb3IsIGhhc19lcnJvcjogdHJ1ZSB9KVxuXG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBzaW11bGF0ZVNjZW5hcmlvcy5pbmRleE9mKF9zaW11bGF0ZV9zY2VuYXJpbylcbiAgICAgIHNpbXVsYXRlU2NlbmFyaW9zLnNsaWNlKDAsIGN1cnJlbnRJbmRleCkuZm9yRWFjaCgoc2NlbmFyaW8pID0+IHtcbiAgICAgICAgdXBkYXRlZE9yZGVyU3RhdGVbc2NlbmFyaW9dID0gdHJ1ZVxuICAgICAgfSlcbiAgICAgIHVwZGF0ZWRPcmRlclN0YXRlLmN1cnJlbnRfc3RlcCA9IHNpbXVsYXRlU2NlbmFyaW9zW2N1cnJlbnRJbmRleF1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZXhpc3RpbmdTdGF0ZSA9IGN0eC5kYi5nZXRKbGNwY2JPcmRlclN0YXRlc0J5T3JkZXJJZChvcmRlcl9pZClcbiAgICBpZiAoZXhpc3RpbmdTdGF0ZSkge1xuICAgICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgICAgb3JkZXIsXG4gICAgICAgIG9yZGVyU3RhdGU6IGV4aXN0aW5nU3RhdGUsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGN0eC5kYi51cGRhdGVKbGNwY2JPcmRlclN0YXRlKG9yZGVyX2lkLCB1cGRhdGVkT3JkZXJTdGF0ZSlcblxuICBjb25zdCBvcmRlclN0YXRlID0gY3R4LmRiLmdldEpsY3BjYk9yZGVyU3RhdGVzQnlPcmRlcklkKG9yZGVyX2lkKSFcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZGVyLFxuICAgIG9yZGVyU3RhdGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlclNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyczogei5hcnJheShvcmRlclNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJzOiBjdHguZGIub3JkZXJzLmZpbHRlcigobykgPT4gby5hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2VCdWlsZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlLWJ1aWxkXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9idWlsZF9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfYnVpbGQ6IHouYW55KCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9idWlsZF9pZCB9ID0gcmVxLnF1ZXJ5XG5cbiAgaWYgKCFwYWNrYWdlX2J1aWxkX2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9yZXF1ZXN0XCIsXG4gICAgICBtZXNzYWdlOiBcInBhY2thZ2VfYnVpbGRfaWQgaXMgcmVxdWlyZWRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcGFja2FnZUJ1aWxkID0gY3R4LmRiLnBhY2thZ2VCdWlsZHMuZmluZChcbiAgICAoYnVpbGQpID0+IGJ1aWxkLnBhY2thZ2VfYnVpbGRfaWQgPT09IHBhY2thZ2VfYnVpbGRfaWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VCdWlsZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfYnVpbGRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgYnVpbGQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlQnVpbGQucGFja2FnZV9yZWxlYXNlX2lkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX2lkLFxuICApXG4gIGlmICghcGtnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKHBrZy5jcmVhdG9yX2FjY291bnRfaWQgIT09IGN0eC5hdXRoLmFjY291bnRfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJ1bmF1dGhvcml6ZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBhY2Nlc3MgdGhpcyBwYWNrYWdlIGJ1aWxkXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHB1YmxpY0J1aWxkID0gcHVibGljTWFwUGFja2FnZUJ1aWxkKHBhY2thZ2VCdWlsZCwge1xuICAgIGluY2x1ZGVfbG9nczogdHJ1ZSxcbiAgfSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIHBhY2thZ2VfYnVpbGQ6IHB1YmxpY0J1aWxkLFxuICB9KVxufSlcbiIsICJpbXBvcnQgKiBhcyBaVCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBjb25zdCBwdWJsaWNNYXBQYWNrYWdlQnVpbGQgPSAoXG4gIGludGVybmFsUGFja2FnZUJ1aWxkOiBaVC5QYWNrYWdlQnVpbGQsXG4gIG9wdGlvbnM6IHtcbiAgICBpbmNsdWRlX2xvZ3M/OiBib29sZWFuXG4gIH0gPSB7XG4gICAgaW5jbHVkZV9sb2dzOiBmYWxzZSxcbiAgfSxcbik6IFpULlBhY2thZ2VCdWlsZCA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAuLi5pbnRlcm5hbFBhY2thZ2VCdWlsZCxcbiAgICBjcmVhdGVkX2F0OiBpbnRlcm5hbFBhY2thZ2VCdWlsZC5jcmVhdGVkX2F0LFxuICAgIHRyYW5zcGlsYXRpb25fc3RhcnRlZF9hdDogaW50ZXJuYWxQYWNrYWdlQnVpbGQudHJhbnNwaWxhdGlvbl9zdGFydGVkX2F0LFxuICAgIHRyYW5zcGlsYXRpb25fY29tcGxldGVkX2F0OiBpbnRlcm5hbFBhY2thZ2VCdWlsZC50cmFuc3BpbGF0aW9uX2NvbXBsZXRlZF9hdCxcbiAgICB0cmFuc3BpbGF0aW9uX2xvZ3M6IG9wdGlvbnMuaW5jbHVkZV9sb2dzXG4gICAgICA/IGludGVybmFsUGFja2FnZUJ1aWxkLnRyYW5zcGlsYXRpb25fbG9nc1xuICAgICAgOiBbXSxcbiAgICB0cmFuc3BpbGF0aW9uX2Vycm9yOiBpbnRlcm5hbFBhY2thZ2VCdWlsZC50cmFuc3BpbGF0aW9uX2Vycm9yLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9zdGFydGVkX2F0OlxuICAgICAgaW50ZXJuYWxQYWNrYWdlQnVpbGQuY2lyY3VpdF9qc29uX2J1aWxkX3N0YXJ0ZWRfYXQsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2NvbXBsZXRlZF9hdDpcbiAgICAgIGludGVybmFsUGFja2FnZUJ1aWxkLmNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IG9wdGlvbnMuaW5jbHVkZV9sb2dzXG4gICAgICA/IGludGVybmFsUGFja2FnZUJ1aWxkLmNpcmN1aXRfanNvbl9idWlsZF9sb2dzXG4gICAgICA6IFtdLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcjogaW50ZXJuYWxQYWNrYWdlQnVpbGQuY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yLFxuICAgIGJ1aWxkX3N0YXJ0ZWRfYXQ6IGludGVybmFsUGFja2FnZUJ1aWxkLmJ1aWxkX3N0YXJ0ZWRfYXQsXG4gICAgYnVpbGRfY29tcGxldGVkX2F0OiBpbnRlcm5hbFBhY2thZ2VCdWlsZC5idWlsZF9jb21wbGV0ZWRfYXQsXG4gICAgYnVpbGRfZXJyb3I6IGludGVybmFsUGFja2FnZUJ1aWxkLmJ1aWxkX2Vycm9yLFxuICAgIGJ1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDpcbiAgICAgIGludGVybmFsUGFja2FnZUJ1aWxkLmJ1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdCxcbiAgICBwcmV2aWV3X3VybDogaW50ZXJuYWxQYWNrYWdlQnVpbGQucHJldmlld191cmwsXG4gICAgYnVpbGRfbG9nczogb3B0aW9ucy5pbmNsdWRlX2xvZ3MgPyBpbnRlcm5hbFBhY2thZ2VCdWlsZC5idWlsZF9sb2dzIDogbnVsbCxcbiAgICBicmFuY2hfbmFtZTogaW50ZXJuYWxQYWNrYWdlQnVpbGQuYnJhbmNoX25hbWUsXG4gICAgY29tbWl0X21lc3NhZ2U6IGludGVybmFsUGFja2FnZUJ1aWxkLmNvbW1pdF9tZXNzYWdlLFxuICAgIGNvbW1pdF9hdXRob3I6IGludGVybmFsUGFja2FnZUJ1aWxkLmNvbW1pdF9hdXRob3IsXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2VCdWlsZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlLWJ1aWxkXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9idWlsZHM6IHouYXJyYXkoei5hbnkoKSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9pZCwgcGFja2FnZV9yZWxlYXNlX2lkIH0gPSByZXEucXVlcnlcbiAgaWYgKCFwYWNrYWdlX2lkICYmICFwYWNrYWdlX3JlbGVhc2VfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX3JlcXVlc3RcIixcbiAgICAgIG1lc3NhZ2U6IFwiRWl0aGVyIHBhY2thZ2VfaWQgb3IgcGFja2FnZV9yZWxlYXNlX2lkIG11c3QgYmUgcHJvdmlkZWRcIixcbiAgICB9KVxuICB9XG5cbiAgbGV0IHRhcmdldFBhY2thZ2VJZCA9IHBhY2thZ2VfaWRcblxuICBpZiAocGFja2FnZV9yZWxlYXNlX2lkKSB7XG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHIpID0+IHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cbiAgICB0YXJnZXRQYWNrYWdlSWQgPSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX2lkXG4gIH1cblxuICBpZiAodGFyZ2V0UGFja2FnZUlkKSB7XG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAucGFja2FnZV9pZCA9PT0gdGFyZ2V0UGFja2FnZUlkKVxuICAgIGlmICghcGtnKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChwa2cuY3JlYXRvcl9hY2NvdW50X2lkICE9PSBjdHguYXV0aC5hY2NvdW50X2lkKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInVuYXV0aG9yaXplZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIllvdSBhcmUgbm90IGF1dGhvcml6ZWQgdG8gYWNjZXNzIHRoaXMgcGFja2FnZVwiLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBsZXQgYnVpbGRzID0gY3R4LmRiLnBhY2thZ2VCdWlsZHNcblxuICBpZiAocGFja2FnZV9pZCkge1xuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlcyA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmlsdGVyKFxuICAgICAgKHgpID0+IHgucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZCxcbiAgICApXG4gICAgaWYgKHBhY2thZ2VSZWxlYXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZUlkcyA9IHBhY2thZ2VSZWxlYXNlc1xuICAgICAgLmZpbHRlcigocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQpXG4gICAgICAubWFwKChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkKVxuXG4gICAgYnVpbGRzID0gYnVpbGRzLmZpbHRlcigoYnVpbGQpID0+XG4gICAgICBwYWNrYWdlUmVsZWFzZUlkcy5pbmNsdWRlcyhidWlsZC5wYWNrYWdlX3JlbGVhc2VfaWQpLFxuICAgIClcbiAgfVxuXG4gIGlmIChwYWNrYWdlX3JlbGVhc2VfaWQpIHtcbiAgICBidWlsZHMgPSBidWlsZHMuZmlsdGVyKFxuICAgICAgKGJ1aWxkKSA9PiBidWlsZC5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG4gIH1cblxuICBidWlsZHMgPSBidWlsZHMuc29ydChcbiAgICAoYSwgYikgPT5cbiAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKCksXG4gIClcblxuICBjb25zdCBwdWJsaWNCdWlsZHMgPSBidWlsZHMubWFwKChidWlsZCkgPT5cbiAgICBwdWJsaWNNYXBQYWNrYWdlQnVpbGQoYnVpbGQsIHtcbiAgICAgIGluY2x1ZGVfbG9nczogZmFsc2UsXG4gICAgfSksXG4gIClcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIHBhY2thZ2VfYnVpbGRzOiBwdWJsaWNCdWlsZHMsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IFBhY2thZ2UsIFBhY2thZ2VSZWxlYXNlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgY29uc3QgZmluZFBhY2thZ2VSZWxlYXNlSWQgPSBhc3luYyAoXG4gIHBhcmFtczpcbiAgICB8IHN0cmluZ1xuICAgIHwge1xuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHN0cmluZ1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwYWNrYWdlX25hbWU6IHN0cmluZ1xuICAgICAgICB1c2VfbGF0ZXN0X3ZlcnNpb246IHRydWVcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogc3RyaW5nXG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZD86IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgICB9LFxuICBjdHg6IHsgZGI6IGFueSB9LFxuKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiA9PiB7XG4gIGlmICh0eXBlb2YgcGFyYW1zID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIGZpbmRQYWNrYWdlUmVsZWFzZUlkRnJvbVBhY2thZ2VOYW1lV2l0aFZlcnNpb24ocGFyYW1zLCBjdHguZGIpXG4gIH1cblxuICBpZiAoXG4gICAgXCJwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIgaW4gcGFyYW1zICYmXG4gICAgcGFyYW1zLnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cbiAgKSB7XG4gICAgY29uc3QgeyBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uIH0gPSBwYXJhbXNcblxuICAgIGlmIChwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLmVuZHNXaXRoKFwiQGxhdGVzdFwiKSkge1xuICAgICAgY29uc3QgW3BhY2thZ2VOYW1lXSA9IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uc3BsaXQoXCJAXCIpXG4gICAgICByZXR1cm4gZmluZFBhY2thZ2VSZWxlYXNlSWQoXG4gICAgICAgIHtcbiAgICAgICAgICBwYWNrYWdlX25hbWU6IHBhY2thZ2VOYW1lISxcbiAgICAgICAgICB1c2VfbGF0ZXN0X3ZlcnNpb246IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGN0eCxcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGZpbmRQYWNrYWdlUmVsZWFzZUlkRnJvbVBhY2thZ2VOYW1lV2l0aFZlcnNpb24oXG4gICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uISxcbiAgICAgIGN0eC5kYixcbiAgICApXG4gIH1cblxuICBpZiAoXCJwYWNrYWdlX3JlbGVhc2VfaWRcIiBpbiBwYXJhbXMgJiYgcGFyYW1zLnBhY2thZ2VfcmVsZWFzZV9pZCkge1xuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByOiBQYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYXJhbXMucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gcGFyYW1zLnBhY2thZ2VfcmVsZWFzZV9pZFxuICB9XG5cbiAgaWYgKFwicGFja2FnZV9uYW1lXCIgaW4gcGFyYW1zKSB7XG4gICAgY29uc3QgeyBwYWNrYWdlX25hbWUsIHVzZV9sYXRlc3RfdmVyc2lvbiB9ID0gcGFyYW1zXG5cbiAgICBpZiAoIXVzZV9sYXRlc3RfdmVyc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXNlX2xhdGVzdF92ZXJzaW9uIG11c3QgYmUgdHJ1ZVwiKVxuICAgIH1cblxuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgICAgKHA6IFBhY2thZ2UpID0+IHAubmFtZSA9PT0gcGFja2FnZV9uYW1lLnJlcGxhY2UoL15ALywgXCJcIiksXG4gICAgKVxuICAgIGlmICghcGtnKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByOiBQYWNrYWdlUmVsZWFzZSkgPT4gcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0LFxuICAgIClcblxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZFxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IGZpbmRQYWNrYWdlUmVsZWFzZUlkRnJvbVBhY2thZ2VOYW1lV2l0aFZlcnNpb24gPSAoXG4gIHBhY2thZ2VOYW1lV2l0aFZlcnNpb246IHN0cmluZyxcbiAgZGI6IGFueSxcbik6IHN0cmluZyB8IG51bGwgPT4ge1xuICBpZiAoIXBhY2thZ2VOYW1lV2l0aFZlcnNpb24pIHJldHVybiBudWxsXG5cbiAgY29uc3QgW3BhY2thZ2VOYW1lLCB2ZXJzaW9uXSA9IHBhY2thZ2VOYW1lV2l0aFZlcnNpb25cbiAgICAucmVwbGFjZSgvXkAvLCBcIlwiKVxuICAgIC5zcGxpdChcIkBcIilcblxuICBjb25zdCBwa2cgPSBkYi5wYWNrYWdlcy5maW5kKChwOiBQYWNrYWdlKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VOYW1lKVxuICBpZiAoIXBrZykge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBsZXQgcGFja2FnZVJlbGVhc2VcblxuICBpZiAoIXZlcnNpb24gfHwgdmVyc2lvbiA9PT0gXCJsYXRlc3RcIikge1xuICAgIHBhY2thZ2VSZWxlYXNlID0gZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHI6IFBhY2thZ2VSZWxlYXNlKSA9PiBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci5pc19sYXRlc3QsXG4gICAgKVxuICB9IGVsc2Uge1xuICAgIHBhY2thZ2VSZWxlYXNlID0gZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHI6IFBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci52ZXJzaW9uID09PSB2ZXJzaW9uLFxuICAgIClcbiAgfVxuXG4gIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZFxufVxuIiwgImltcG9ydCAqIGFzIHp0IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IGZpbmRQYWNrYWdlUmVsZWFzZUlkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX3JlbGVhc2UvZmluZC1wYWNrYWdlLXJlbGVhc2UtaWRcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmNvbnN0IHJvdXRlU3BlYyA9IHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICBpc19yZWxlYXNlX3RhcmJhbGw6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gICAgICBjb250ZW50X21pbWV0eXBlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjb250ZW50X3RleHQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGNvbnRlbnRfYmFzZTY0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIG5wbV9wYWNrX291dHB1dDogei5hbnkoKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLnJlZmluZSgodikgPT4ge1xuICAgICAgaWYgKHYucGFja2FnZV9yZWxlYXNlX2lkKSByZXR1cm4gdHJ1ZVxuICAgICAgaWYgKHYucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikgcmV0dXJuIHRydWVcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0sIFwiTXVzdCBzcGVjaWZ5IGVpdGhlciBwYWNrYWdlX3JlbGVhc2VfaWQgb3IgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiKVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LnBhY2thZ2VfcmVsZWFzZV9pZCAmJiB2LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHJldHVybiBmYWxzZVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBcIkNhbm5vdCBzcGVjaWZ5IGJvdGggcGFja2FnZV9yZWxlYXNlX2lkIGFuZCBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIpXG4gICAgLnJlZmluZSgodikgPT4ge1xuICAgICAgaWYgKHYuY29udGVudF9iYXNlNjQgJiYgdi5jb250ZW50X3RleHQpIHJldHVybiBmYWxzZVxuICAgICAgaWYgKCF2LmNvbnRlbnRfYmFzZTY0ICYmIHYuY29udGVudF90ZXh0ID09PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBcIkVpdGhlciBjb250ZW50X2Jhc2U2NCBvciBjb250ZW50X3RleHQgaXMgcmVxdWlyZWRcIiksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX2ZpbGU6IHp0LnBhY2thZ2VGaWxlU2NoZW1hLFxuICB9KSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyhyb3V0ZVNwZWMpKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsZV9wYXRoLFxuICAgIGNvbnRlbnRfbWltZXR5cGU6IHByb3ZpZGVkQ29udGVudE1pbWV0eXBlLFxuICAgIGNvbnRlbnRfYmFzZTY0LFxuICAgIGNvbnRlbnRfdGV4dCxcbiAgICBpc19yZWxlYXNlX3RhcmJhbGwsXG4gICAgbnBtX3BhY2tfb3V0cHV0LFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgaWYgKGlzX3JlbGVhc2VfdGFyYmFsbCAmJiAhbnBtX3BhY2tfb3V0cHV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibWlzc2luZ19vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOiBcIm5wbV9wYWNrX291dHB1dCBpcyByZXF1aXJlZCBmb3IgcmVsZWFzZSB0YXJiYWxsc1wiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIWlzX3JlbGVhc2VfdGFyYmFsbCAmJiBucG1fcGFja19vdXRwdXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX29wdGlvbnNcIixcbiAgICAgIG1lc3NhZ2U6IFwibnBtX3BhY2tfb3V0cHV0IGlzIG9ubHkgdmFsaWQgZm9yIHJlbGVhc2UgdGFyYmFsbHNcIixcbiAgICB9KVxuICB9XG5cbiAgbGV0IHBhY2thZ2VSZWxlYXNlSWQgPSByZXEuanNvbkJvZHkucGFja2FnZV9yZWxlYXNlX2lkXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkICYmIHJlcS5qc29uQm9keS5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSB7XG4gICAgY29uc3QgZm91bmRQYWNrYWdlUmVsZWFzZUlkID0gYXdhaXQgZmluZFBhY2thZ2VSZWxlYXNlSWQoXG4gICAgICB7IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHJlcS5qc29uQm9keS5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uIH0sXG4gICAgICBjdHgsXG4gICAgKVxuICAgIGlmIChmb3VuZFBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlSWQgPSBmb3VuZFBhY2thZ2VSZWxlYXNlSWRcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVmVyaWZ5IHRoZSBwYWNrYWdlIHJlbGVhc2UgZXhpc3RzXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgdGhlIHBhY2thZ2UgdG8gY2hlY2sgcGVybWlzc2lvbnNcbiAgY29uc3QgZXhpc3RpbmdQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9pZCxcbiAgKVxuXG4gIGlmICghZXhpc3RpbmdQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgcGVybWlzc2lvbiB0byBjcmVhdGUvdXBkYXRlIHRoZSBmaWxlXG4gIGlmIChleGlzdGluZ1BhY2thZ2UuY3JlYXRvcl9hY2NvdW50X2lkICE9PSBjdHguYXV0aC5hY2NvdW50X2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gbW9kaWZ5IGZpbGVzIGluIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBmaWxlIGV4aXN0c1xuICBjb25zdCBleGlzaXRpbmdGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChwZikgPT5cbiAgICAgIHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCAmJiBwZi5maWxlX3BhdGggPT09IGZpbGVfcGF0aCxcbiAgKVxuXG4gIC8vIERldGVybWluZSBjb250ZW50IG1pbWV0eXBlXG4gIGNvbnN0IGNvbnRlbnRNaW1ldHlwZSA9XG4gICAgcHJvdmlkZWRDb250ZW50TWltZXR5cGUgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLnRzXCIpIHx8IGZpbGVfcGF0aC5lbmRzV2l0aChcIi50c3hcIilcbiAgICAgID8gXCJ0ZXh0L3R5cGVzY3JpcHRcIlxuICAgICAgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuanNcIikgPyBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5qc29uXCIpID8gXCJhcHBsaWNhdGlvbi9qc29uXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIubWRcIikgPyBcInRleHQvbWFya2Rvd25cIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5odG1sXCIpID8gXCJ0ZXh0L2h0bWxcIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5jc3NcIikgPyBcInRleHQvY3NzXCIgOiBudWxsKSB8fFxuICAgIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCJcblxuICBpZiAoZXhpc2l0aW5nRmlsZSkge1xuICAgIGNvbnN0IHBhY2thZ2VfZmlsZSA9IGN0eC5kYi51cGRhdGVQYWNrYWdlRmlsZShcbiAgICAgIGV4aXNpdGluZ0ZpbGUucGFja2FnZV9maWxlX2lkLFxuICAgICAge1xuICAgICAgICBjb250ZW50X3RleHQ6XG4gICAgICAgICAgY29udGVudF90ZXh0ID8/XG4gICAgICAgICAgKGNvbnRlbnRfYmFzZTY0XG4gICAgICAgICAgICA/IEJ1ZmZlci5mcm9tKGNvbnRlbnRfYmFzZTY0LCBcImJhc2U2NFwiKS50b1N0cmluZygpXG4gICAgICAgICAgICA6IG51bGwpLFxuICAgICAgICBjb250ZW50X21pbWV0eXBlOiBjb250ZW50TWltZXR5cGUsXG4gICAgICAgIGlzX3JlbGVhc2VfdGFyYmFsbDogaXNfcmVsZWFzZV90YXJiYWxsIHx8IGZhbHNlLFxuICAgICAgICBucG1fcGFja19vdXRwdXQ6IG5wbV9wYWNrX291dHB1dCB8fCBudWxsLFxuICAgICAgfSxcbiAgICApXG5cbiAgICAvLyBVcGRhdGUgZnNfc2hhIGZvciB0aGUgcGFja2FnZSByZWxlYXNlXG4gICAgY3R4LmRiLnVwZGF0ZVBhY2thZ2VSZWxlYXNlRnNTaGEocGFja2FnZVJlbGVhc2VJZClcblxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBhY2thZ2VfZmlsZSxcbiAgICB9KVxuICB9XG5cbiAgaWYgKFxuICAgICFyZXEuanNvbkJvZHkucGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgIXJlcS5qc29uQm9keS5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXG4gIClcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJtaXNzaW5nX29wdGlvbnNcIixcbiAgICAgIG1lc3NhZ2U6XG4gICAgICAgIFwiTXVzdCBzcGVjaWZ5IGVpdGhlciBwYWNrYWdlX3JlbGVhc2VfaWQgb3IgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiLFxuICAgIH0pXG4gIC8vIENyZWF0ZSB0aGUgcGFja2FnZSBmaWxlXG4gIGNvbnN0IG5ld1BhY2thZ2VGaWxlID0ge1xuICAgIHBhY2thZ2VfZmlsZV9pZDogY3J5cHRvLnJhbmRvbVVVSUQoKSxcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlSWQsXG4gICAgZmlsZV9wYXRoLFxuICAgIGNvbnRlbnRfdGV4dDpcbiAgICAgIGNvbnRlbnRfdGV4dCA/P1xuICAgICAgKGNvbnRlbnRfYmFzZTY0XG4gICAgICAgID8gQnVmZmVyLmZyb20oY29udGVudF9iYXNlNjQsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKClcbiAgICAgICAgOiBudWxsKSxcbiAgICBjb250ZW50X21pbWV0eXBlOiBjb250ZW50TWltZXR5cGUsXG4gICAgaXNfZGlyZWN0b3J5OiBmYWxzZSxcbiAgICBpc19yZWxlYXNlX3RhcmJhbGw6IGlzX3JlbGVhc2VfdGFyYmFsbCB8fCBmYWxzZSxcbiAgICBucG1fcGFja19vdXRwdXQ6IG5wbV9wYWNrX291dHB1dCB8fCBudWxsLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgfVxuXG4gIC8vIEFkZCB0byB0aGUgdGVzdCBkYXRhYmFzZVxuICBjdHguZGIuYWRkUGFja2FnZUZpbGUobmV3UGFja2FnZUZpbGUpXG5cbiAgLy8gVXBkYXRlIGZzX3NoYSBmb3IgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICBjdHguZGIudXBkYXRlUGFja2FnZVJlbGVhc2VGc1NoYShwYWNrYWdlUmVsZWFzZUlkKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9maWxlOiBuZXdQYWNrYWdlRmlsZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0ICogYXMgenQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgZmluZFBhY2thZ2VSZWxlYXNlSWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfcmVsZWFzZS9maW5kLXBhY2thZ2UtcmVsZWFzZS1pZFwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3Qgcm91dGVTcGVjID0ge1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIGlzX3JlbGVhc2VfdGFyYmFsbDogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgICAgIGNvbnRlbnRfbWltZXR5cGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY29udGVudF9iYXNlNjQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgbnBtX3BhY2tfb3V0cHV0OiB6LmFueSgpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQpIHJldHVybiB0cnVlXG4gICAgICBpZiAodi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gdHJ1ZVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgXCJNdXN0IHNwZWNpZnkgZWl0aGVyIHBhY2thZ2VfcmVsZWFzZV9pZCBvciBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIpXG4gICAgLnJlZmluZSgodikgPT4ge1xuICAgICAgaWYgKHYucGFja2FnZV9yZWxlYXNlX2lkICYmIHYucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwiQ2Fubm90IHNwZWNpZnkgYm90aCBwYWNrYWdlX3JlbGVhc2VfaWQgYW5kIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIilcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5jb250ZW50X2Jhc2U2NCAmJiB2LmNvbnRlbnRfdGV4dCkgcmV0dXJuIGZhbHNlXG4gICAgICBpZiAoIXYuY29udGVudF9iYXNlNjQgJiYgIXYuY29udGVudF90ZXh0KSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJFaXRoZXIgY29udGVudF9iYXNlNjQgb3IgY29udGVudF90ZXh0IGlzIHJlcXVpcmVkXCIpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZV9maWxlOiB6dC5wYWNrYWdlRmlsZVNjaGVtYSxcbiAgfSksXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMocm91dGVTcGVjKShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbGVfcGF0aCxcbiAgICBjb250ZW50X21pbWV0eXBlOiBwcm92aWRlZENvbnRlbnRNaW1ldHlwZSxcbiAgICBjb250ZW50X2Jhc2U2NCxcbiAgICBjb250ZW50X3RleHQsXG4gICAgaXNfcmVsZWFzZV90YXJiYWxsLFxuICAgIG5wbV9wYWNrX291dHB1dCxcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIGlmIChpc19yZWxlYXNlX3RhcmJhbGwgJiYgIW5wbV9wYWNrX291dHB1dCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm1pc3Npbmdfb3B0aW9uc1wiLFxuICAgICAgbWVzc2FnZTogXCJucG1fcGFja19vdXRwdXQgaXMgcmVxdWlyZWQgZm9yIHJlbGVhc2UgdGFyYmFsbHNcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKCFpc19yZWxlYXNlX3RhcmJhbGwgJiYgbnBtX3BhY2tfb3V0cHV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOiBcIm5wbV9wYWNrX291dHB1dCBpcyBvbmx5IHZhbGlkIGZvciByZWxlYXNlIHRhcmJhbGxzXCIsXG4gICAgfSlcbiAgfVxuXG4gIGxldCBwYWNrYWdlUmVsZWFzZUlkID0gcmVxLmpzb25Cb2R5LnBhY2thZ2VfcmVsZWFzZV9pZFxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCAmJiByZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikge1xuICAgIGNvbnN0IGZvdW5kUGFja2FnZVJlbGVhc2VJZCA9IGF3YWl0IGZpbmRQYWNrYWdlUmVsZWFzZUlkKFxuICAgICAgcmVxLmpzb25Cb2R5LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgICBjdHgsXG4gICAgKVxuICAgIGlmIChmb3VuZFBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlSWQgPSBmb3VuZFBhY2thZ2VSZWxlYXNlSWRcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVmVyaWZ5IHRoZSBwYWNrYWdlIHJlbGVhc2UgZXhpc3RzXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBEZXRlcm1pbmUgY29udGVudCBtaW1ldHlwZVxuICBjb25zdCBjb250ZW50TWltZXR5cGUgPVxuICAgIHByb3ZpZGVkQ29udGVudE1pbWV0eXBlIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi50c1wiKSB8fCBmaWxlX3BhdGguZW5kc1dpdGgoXCIudHN4XCIpXG4gICAgICA/IFwidGV4dC90eXBlc2NyaXB0XCJcbiAgICAgIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLmpzXCIpID8gXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuanNvblwiKSA/IFwiYXBwbGljYXRpb24vanNvblwiIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLm1kXCIpID8gXCJ0ZXh0L21hcmtkb3duXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuaHRtbFwiKSA/IFwidGV4dC9odG1sXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuY3NzXCIpID8gXCJ0ZXh0L2Nzc1wiIDogbnVsbCkgfHxcbiAgICBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiXG5cbiAgLy8gQ3JlYXRlIHRoZSBwYWNrYWdlIGZpbGVcbiAgY29uc3QgbmV3UGFja2FnZUZpbGUgPSB7XG4gICAgcGFja2FnZV9maWxlX2lkOiBjcnlwdG8ucmFuZG9tVVVJRCgpLFxuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2VJZCxcbiAgICBmaWxlX3BhdGgsXG4gICAgY29udGVudF90ZXh0OlxuICAgICAgY29udGVudF90ZXh0IHx8XG4gICAgICAoY29udGVudF9iYXNlNjRcbiAgICAgICAgPyBCdWZmZXIuZnJvbShjb250ZW50X2Jhc2U2NCwgXCJiYXNlNjRcIikudG9TdHJpbmcoKVxuICAgICAgICA6IG51bGwpLFxuICAgIGNvbnRlbnRfbWltZXR5cGU6IGNvbnRlbnRNaW1ldHlwZSxcbiAgICBpc19kaXJlY3Rvcnk6IGZhbHNlLFxuICAgIGlzX3JlbGVhc2VfdGFyYmFsbDogaXNfcmVsZWFzZV90YXJiYWxsIHx8IGZhbHNlLFxuICAgIG5wbV9wYWNrX291dHB1dDogbnBtX3BhY2tfb3V0cHV0IHx8IG51bGwsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICB9XG5cbiAgLy8gQWRkIHRvIHRoZSB0ZXN0IGRhdGFiYXNlXG4gIGN0eC5kYi5hZGRQYWNrYWdlRmlsZShuZXdQYWNrYWdlRmlsZSlcblxuICAvLyBVcGRhdGUgZnNfc2hhIGZvciB0aGUgcGFja2FnZSByZWxlYXNlXG4gIGN0eC5kYi51cGRhdGVQYWNrYWdlUmVsZWFzZUZzU2hhKHBhY2thZ2VSZWxlYXNlSWQpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX2ZpbGU6IG5ld1BhY2thZ2VGaWxlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgZmluZFBhY2thZ2VSZWxlYXNlSWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfcmVsZWFzZS9maW5kLXBhY2thZ2UtcmVsZWFzZS1pZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLnJlZmluZSgodikgPT4ge1xuICAgICAgaWYgKHYucGFja2FnZV9yZWxlYXNlX2lkKSByZXR1cm4gdHJ1ZVxuICAgICAgaWYgKHYucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikgcmV0dXJuIHRydWVcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0sIFwiTXVzdCBzcGVjaWZ5IGVpdGhlciBwYWNrYWdlX3JlbGVhc2VfaWQgb3IgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiKVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LnBhY2thZ2VfcmVsZWFzZV9pZCAmJiB2LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHJldHVybiBmYWxzZVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBcIkNhbm5vdCBzcGVjaWZ5IGJvdGggcGFja2FnZV9yZWxlYXNlX2lkIGFuZCBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgZmlsZV9wYXRoIH0gPSByZXEuanNvbkJvZHlcblxuICBsZXQgcGFja2FnZVJlbGVhc2VJZCA9IHJlcS5qc29uQm9keS5wYWNrYWdlX3JlbGVhc2VfaWRcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQgJiYgcmVxLmpzb25Cb2R5LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHtcbiAgICBjb25zdCBmb3VuZFBhY2thZ2VSZWxlYXNlSWQgPSBhd2FpdCBmaW5kUGFja2FnZVJlbGVhc2VJZChcbiAgICAgIHJlcS5qc29uQm9keS5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLFxuICAgICAgY3R4LFxuICAgIClcbiAgICBpZiAoZm91bmRQYWNrYWdlUmVsZWFzZUlkKSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZUlkID0gZm91bmRQYWNrYWdlUmVsZWFzZUlkXG4gICAgfVxuICB9XG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEdldCB0aGUgcGFja2FnZSByZWxlYXNlIHRvIGNoZWNrIHBlcm1pc3Npb25zXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgdGhlIHBhY2thZ2UgdG8gY2hlY2sgcGVybWlzc2lvbnNcbiAgY29uc3QgZXhpc3RpbmdwYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9pZCxcbiAgKVxuXG4gIGlmICghZXhpc3RpbmdwYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgcGVybWlzc2lvbiB0byBkZWxldGUgdGhlIGZpbGVcbiAgaWYgKGV4aXN0aW5ncGFja2FnZS5jcmVhdG9yX2FjY291bnRfaWQgIT09IGN0eC5hdXRoLmFjY291bnRfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBkZWxldGUgZmlsZXMgaW4gdGhpcyBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEZpbmQgdGhlIGZpbGVcbiAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKGYpID0+XG4gICAgICBmLmZpbGVfcGF0aCA9PT0gZmlsZV9wYXRoICYmIGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZpbGVfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gRGVsZXRlIHRoZSBmaWxlIHVzaW5nIGRlbGV0ZVBhY2thZ2VGaWxlIG1ldGhvZFxuICBjb25zdCBkZWxldGVkID0gY3R4LmRiLmRlbGV0ZVBhY2thZ2VGaWxlKHBhY2thZ2VGaWxlLnBhY2thZ2VfZmlsZV9pZClcblxuICBpZiAoIWRlbGV0ZWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJmaWxlX2RlbGV0aW9uX2ZhaWxlZFwiLFxuICAgICAgbWVzc2FnZTogXCJGYWlsZWQgdG8gZGVsZXRlIHBhY2thZ2UgZmlsZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBVcGRhdGUgZnNfc2hhIGZvciB0aGUgcGFja2FnZSByZWxlYXNlXG4gIGN0eC5kYi51cGRhdGVQYWNrYWdlUmVsZWFzZUZzU2hhKHBhY2thZ2VSZWxlYXNlSWQpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgTm90Rm91bmRFcnJvciB9IGZyb20gXCJ3aW50ZXJzcGVjL21pZGRsZXdhcmVcIlxuaW1wb3J0ICogYXMgWlQgZnJvbSBcIi4uL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGggfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvdXRpbHMvbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoXCJcbmV4cG9ydCBjb25zdCBnZXRQYWNrYWdlRmlsZUlkRnJvbUZpbGVEZXNjcmlwdG9yID0gYXN5bmMgKFxuICBkZXNjcmlwdG9yOlxuICAgIHwgeyBwYWNrYWdlX2ZpbGVfaWQ6IHN0cmluZyB9XG4gICAgfCB7IHBhY2thZ2VfcmVsZWFzZV9pZDogc3RyaW5nOyBmaWxlX3BhdGg6IHN0cmluZyB9XG4gICAgfCB7IHBhY2thZ2VfaWQ6IHN0cmluZzsgdmVyc2lvbj86IHN0cmluZzsgZmlsZV9wYXRoOiBzdHJpbmcgfVxuICAgIHwgeyBwYWNrYWdlX25hbWU6IHN0cmluZzsgdmVyc2lvbj86IHN0cmluZzsgZmlsZV9wYXRoOiBzdHJpbmcgfVxuICAgIHwgeyBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiBzdHJpbmc7IGZpbGVfcGF0aDogc3RyaW5nIH0sXG4gIGN0eDogeyBkYjogYW55IH0sXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBpZiAoXCJwYWNrYWdlX2ZpbGVfaWRcIiBpbiBkZXNjcmlwdG9yKSB7XG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PiBwZi5wYWNrYWdlX2ZpbGVfaWQgPT09IGRlc2NyaXB0b3IucGFja2FnZV9maWxlX2lkLFxuICAgIClcblxuICAgIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIHJldHVybiBkZXNjcmlwdG9yLnBhY2thZ2VfZmlsZV9pZFxuICB9XG5cbiAgaWYgKFwicGFja2FnZV9yZWxlYXNlX2lkXCIgaW4gZGVzY3JpcHRvcikge1xuICAgIGNvbnN0IHsgcGFja2FnZV9yZWxlYXNlX2lkLCBmaWxlX3BhdGggfSA9IGRlc2NyaXB0b3JcbiAgICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChwZjogWlQuUGFja2FnZUZpbGUpID0+XG4gICAgICAgIHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChwZi5maWxlX3BhdGgpID09PVxuICAgICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChmaWxlX3BhdGgpLFxuICAgIClcblxuICAgIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIHJldHVybiBwYWNrYWdlRmlsZS5wYWNrYWdlX2ZpbGVfaWRcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfaWRcIiBpbiBkZXNjcmlwdG9yKSB7XG4gICAgY29uc3QgeyBwYWNrYWdlX2lkLCB2ZXJzaW9uLCBmaWxlX3BhdGggfSA9IGRlc2NyaXB0b3JcblxuICAgIC8vIFZlcmlmeSBwYWNrYWdlIGV4aXN0c1xuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgICAgKHA6IFpULlBhY2thZ2UpID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZCxcbiAgICApXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBsZXQgcGFja2FnZVJlbGVhc2VcbiAgICBpZiAodmVyc2lvbikge1xuICAgICAgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcjogWlQuUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZCAmJiBwci52ZXJzaW9uID09PSB2ZXJzaW9uLFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByOiBaVC5QYWNrYWdlUmVsZWFzZSkgPT4gcHIucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZCAmJiBwci5pc19sYXRlc3QsXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIpXG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgZmlsZVxuICAgIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKHBmOiBaVC5QYWNrYWdlRmlsZSkgPT5cbiAgICAgICAgcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKHBmLmZpbGVfcGF0aCkgPT09XG4gICAgICAgICAgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKGZpbGVfcGF0aCksXG4gICAgKVxuXG4gICAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhY2thZ2VGaWxlLnBhY2thZ2VfZmlsZV9pZFxuICB9XG5cbiAgaWYgKFwicGFja2FnZV9uYW1lXCIgaW4gZGVzY3JpcHRvcikge1xuICAgIGNvbnN0IHsgcGFja2FnZV9uYW1lLCB2ZXJzaW9uLCBmaWxlX3BhdGggfSA9IGRlc2NyaXB0b3JcblxuICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgZmlyc3RcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocDogWlQuUGFja2FnZSkgPT4gcC5uYW1lID09PSBwYWNrYWdlX25hbWUpXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBQYWNrYWdlIG5vdCBmb3VuZDogJHtwYWNrYWdlX25hbWV9YClcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBsZXQgcGFja2FnZVJlbGVhc2VcbiAgICBpZiAodmVyc2lvbikge1xuICAgICAgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcjogWlQuUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcjogWlQuUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0LFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIGZpbGVcbiAgICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChwZjogWlQuUGFja2FnZUZpbGUpID0+XG4gICAgICAgIHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChwZi5maWxlX3BhdGgpID09PVxuICAgICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChmaWxlX3BhdGgpLFxuICAgIClcblxuICAgIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIHJldHVybiBwYWNrYWdlRmlsZS5wYWNrYWdlX2ZpbGVfaWRcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIiBpbiBkZXNjcmlwdG9yKSB7XG4gICAgY29uc3QgeyBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLCBmaWxlX3BhdGggfSA9IGRlc2NyaXB0b3JcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uc3BsaXQoXCJAXCIpWzFdXG4gICAgY29uc3QgdmVyc2lvbiA9IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uc3BsaXQoXCJAXCIpWzJdXG5cbiAgICAvLyBGaW5kIHRoZSBwYWNrYWdlXG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHA6IFpULlBhY2thZ2UpID0+IHAubmFtZSA9PT0gcGFja2FnZU5hbWUpXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBQYWNrYWdlIG5vdCBmb3VuZDogJHtwYWNrYWdlTmFtZX1gKVxuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgIGxldCBwYWNrYWdlUmVsZWFzZVxuICAgIGlmICghdmVyc2lvbiB8fCB2ZXJzaW9uID09PSBcImxhdGVzdFwiKSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByOiBaVC5QYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgICBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci5pc19sYXRlc3QsXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgIGBQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kIGZvciB2ZXJzaW9uOiAke3ZlcnNpb24gfHwgXCJsYXRlc3RcIn1gLFxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIGZpbGVcbiAgICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChwZjogWlQuUGFja2FnZUZpbGUpID0+XG4gICAgICAgIHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChwZi5maWxlX3BhdGgpID09PVxuICAgICAgICAgIG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChmaWxlX3BhdGgpLFxuICAgIClcblxuICAgIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBQYWNrYWdlIGZpbGUgbm90IGZvdW5kOiAke2ZpbGVfcGF0aH1gKVxuICAgIH1cblxuICAgIHJldHVybiBwYWNrYWdlRmlsZS5wYWNrYWdlX2ZpbGVfaWRcbiAgfVxuXG4gIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFwiSW52YWxpZCBwYWNrYWdlIGZpbGUgZGVzY3JpcHRvclwiKVxufVxuIiwgImNvbnN0IFJFU1RSSUNURURfRElSUyA9IFtcIi9ub2RlX21vZHVsZXMvXCIsIFwiL2Rpc3QvXCIsIFwiLy5naXQvXCJdXG5cbi8qKlxuICogQSBub3JtYWxpemVkIHByb2plY3QgcGF0aCBhbHdheXMgc3RhcnRzIHdpdGggXCIuL1wiIGFuZCBuZXZlciBlbmRzIHdpdGggYSBzbGFzaC5cbiAqIEl0IGhhcyBubyBiYWNrd2FyZHMgc2xhc2hlcyBhbmQgbm8gZG91YmxlIHNsYXNoZXMuIEl0IGRvZXMgbm90IGdvIHRvIHBhcmVudFxuICogZGlyZWN0b3JpZXMuIEl0IGlzIG5vdCBhIGRpcmVjdG9yeSAobXVzdCBoYXZlIGEgZmlsZSBleHRlbnNpb24pXG4gKlxuICogR09PRDpcbiAqICAtIHNyYy9pbmRleC50c1xuICogIC0gUkVBRE1FLm1kXG4gKlxuICogQkFEOlxuICogLSAuL1JFQURNRS5tZFxuICogLSAuL3NyYy9pbmRleC50c1xuICogLSBzcmNcXGluZGV4LnRzXG4gKiAtIC4uL1JFQURNRS5tZFxuICogLSAuL3NyYy9cbiAqIC0gLi9zcmNcbiAqXG4gKiBBZGRpdGlvbmFsbHksIHRocm93IG9uIGRpcmVjdG9yaWVzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIGluY2x1ZGVkLCBlLmcuXG4gKiAtIG5vZGVfbW9kdWxlc1xuICogLSBkaXN0XG4gKiAtIC5naXRcbiAqL1xuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aEFuZFZhbGlkYXRlID0gKHJhd1BhdGg6IHN0cmluZykgPT4ge1xuICBjb25zdCBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aChyYXdQYXRoKVxuXG4gIGlmIChub3JtYWxpemVkUGF0aC5pbmNsdWRlcyhcIi4uL1wiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiSW52YWxpZCBwcm9qZWN0IGZpbGUgcGF0aC4gUGFyZW50IGRpcmVjdG9yaWVzIGFyZSBub3QgYWxsb3dlZC5cIixcbiAgICApXG4gIH1cblxuICBpZiAoUkVTVFJJQ1RFRF9ESVJTLnNvbWUoKGRpcikgPT4gbm9ybWFsaXplZFBhdGguaW5jbHVkZXMoZGlyKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBwcm9qZWN0IGZpbGUgcGF0aC4gUmVzdHJpY3RlZCBkaXJlY3RvcmllcyAoJHtSRVNUUklDVEVEX0RJUlMubWFwKFxuICAgICAgICAocmQpID0+IHJkLnNsaWNlKDEsIC0xKSxcbiAgICAgICkuam9pbihcIiwgXCIpfSkgYXJlIG5vdCBhbGxvd2VkLmAsXG4gICAgKVxuICB9XG5cbiAgaWYgKCFub3JtYWxpemVkUGF0aC5pbmNsdWRlcyhcIi5cIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBwcm9qZWN0IGZpbGUgcGF0aC4gTXVzdCBoYXZlIGEgZmlsZSBleHRlbnNpb24uIEdpdmVuIFwiJHtyYXdQYXRofVwiYCxcbiAgICApXG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZFBhdGhcbn1cblxuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aCA9IChyYXdQYXRoOiBzdHJpbmcpID0+IHtcbiAgbGV0IG5vcm1hbGl6ZWRQYXRoID0gcmF3UGF0aC50cmltKCkgLy8gUmVtb3ZlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZVxuICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UoL1xcLysvZywgXCIvXCIpIC8vIFJlcGxhY2UgbXVsdGlwbGUgY29uc2VjdXRpdmUgc2xhc2hlcyB3aXRoIGEgc2luZ2xlIHNsYXNoXG4gIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGgucmVwbGFjZSgvXlxcLlxcLy8sIFwiXCIpIC8vIFJlbW92ZSBsZWFkaW5nIFwiLi9cIlxuICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UoL1xcLyQvLCBcIlwiKSAvLyBSZW1vdmUgdHJhaWxpbmcgc2xhc2hcbiAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKSAvLyBSZXBsYWNlIGJhY2tzbGFzaGVzIHdpdGggZm9yd2FyZCBzbGFzaGVzXG4gIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGgucmVwbGFjZSgvXlxcLy8sIFwiXCIpIC8vIFJlbW92ZSBsZWFkaW5nIFwiL1wiXG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRQYXRoXG59XG4iLCAiaW1wb3J0IHsgZ2V0UGFja2FnZUZpbGVJZEZyb21GaWxlRGVzY3JpcHRvciB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9maWxlL2dldC1wYWNrYWdlLWZpbGUtaWQtZnJvbS1maWxlLWRlc2NyaXB0b3JcIlxuaW1wb3J0IHsgZmluZFBhY2thZ2VSZWxlYXNlSWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfcmVsZWFzZS9maW5kLXBhY2thZ2UtcmVsZWFzZS1pZFwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3Qgcm91dGVTcGVjID0ge1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgcXVlcnlQYXJhbXM6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKSxcbiAgICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgICAgfSksXG4gICAgKSxcbiAganNvblJlc3BvbnNlOiB6LmFueSgpLCAvLyBVc2luZyBhbnkgYmVjYXVzZSB3ZSdyZSByZXR1cm5pbmcgYmluYXJ5IGRhdGFcbn0gYXMgY29uc3RcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyhyb3V0ZVNwZWMpKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQgcGFja2FnZUZpbGVJZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGNvbnN0IHBhcmFtcyA9IHJlcS5xdWVyeVxuXG4gIGlmIChcInBhY2thZ2VfZmlsZV9pZFwiIGluIHBhcmFtcykge1xuICAgIHBhY2thZ2VGaWxlSWQgPSBwYXJhbXMucGFja2FnZV9maWxlX2lkXG4gIH0gZWxzZSBpZiAoXCJwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIgaW4gcGFyYW1zKSB7XG4gICAgY29uc3QgeyBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLCBmaWxlX3BhdGggfSA9IHBhcmFtc1xuXG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2VJZCA9IGF3YWl0IGZpbmRQYWNrYWdlUmVsZWFzZUlkKFxuICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbixcbiAgICAgIGN0eCxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwibm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcGFja2FnZUZpbGVJZCA9IGF3YWl0IGdldFBhY2thZ2VGaWxlSWRGcm9tRmlsZURlc2NyaXB0b3IoXG4gICAgICAgIHtcbiAgICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlSWQsXG4gICAgICAgICAgZmlsZV9wYXRoOiBmaWxlX3BhdGgsXG4gICAgICAgIH0sXG4gICAgICAgIGN0eCxcbiAgICAgIClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGlmICghcGFja2FnZUZpbGVJZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImJhZF9yZXF1ZXN0XCIsXG4gICAgICBtZXNzYWdlOiBcIkNvdWxkIG5vdCBkZXRlcm1pbmUgcGFja2FnZV9maWxlX2lkXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChwZikgPT4gcGYucGFja2FnZV9maWxlX2lkID09PSBwYWNrYWdlRmlsZUlkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGNvbnRlbnRUeXBlID0gXCJ0ZXh0L3BsYWluXCJcblxuICBjb25zdCBoZWFkZXJzID0ge1xuICAgIFwiQ29udGVudC1UeXBlXCI6IGNvbnRlbnRUeXBlLFxuICAgIFwiQ29udGVudC1EaXNwb3NpdGlvblwiOiBgYXR0YWNobWVudDsgZmlsZW5hbWU9XCIke3BhY2thZ2VGaWxlLmZpbGVfcGF0aC5zcGxpdChcIi9cIikucG9wKCl9XCJgLFxuICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcInB1YmxpYywgbWF4LWFnZT04NjQwMCwgc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZT02MDQ4MDBcIixcbiAgICBFeHBpcmVzOiBuZXcgRGF0ZShEYXRlLm5vdygpICsgODY0MDAwMDApLnRvVVRDU3RyaW5nKCksXG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKHBhY2thZ2VGaWxlLmNvbnRlbnRfdGV4dCwgeyBoZWFkZXJzIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0ICogYXMgWlQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgZ2V0UGFja2FnZUZpbGVJZEZyb21GaWxlRGVzY3JpcHRvciB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9maWxlL2dldC1wYWNrYWdlLWZpbGUtaWQtZnJvbS1maWxlLWRlc2NyaXB0b3JcIlxuXG5jb25zdCByb3V0ZVNwZWMgPSB7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9maWxlX2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gICAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgIClcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gICAgICAgIHZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgICAgfSksXG4gICAgKVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9uYW1lOiB6LnN0cmluZygpLFxuICAgICAgICB2ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgIClcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCksXG4gICAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgICksXG4gIGpzb25SZXNwb25zZTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgb2s6IHouYm9vbGVhbigpLFxuICAgICAgcGFja2FnZV9maWxlOiBaVC5wYWNrYWdlRmlsZVNjaGVtYS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLm9yKFpULmVycm9yUmVzcG9uc2VTY2hlbWEpLFxufSBhcyBjb25zdFxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHJvdXRlU3BlYykoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHBhY2thZ2VGaWxlSWQgPSBhd2FpdCBnZXRQYWNrYWdlRmlsZUlkRnJvbUZpbGVEZXNjcmlwdG9yKFxuICAgIHJlcS5qc29uQm9keSxcbiAgICBjdHgsXG4gIClcblxuICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PiBwZi5wYWNrYWdlX2ZpbGVfaWQgPT09IHBhY2thZ2VGaWxlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9maWxlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9maWxlOiB7XG4gICAgICAuLi5wYWNrYWdlRmlsZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IHBhY2thZ2VGaWxlLmNyZWF0ZWRfYXQudG9TdHJpbmcoKSxcbiAgICB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCAqIGFzIFpUIGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IGZpbmRQYWNrYWdlUmVsZWFzZUlkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX3JlbGVhc2UvZmluZC1wYWNrYWdlLXJlbGVhc2UtaWRcIlxuXG5jb25zdCByb3V0ZVNwZWMgPSB7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX25hbWU6IHouc3RyaW5nKCksXG4gICAgICAgIHVzZV9sYXRlc3RfdmVyc2lvbjogei5saXRlcmFsKHRydWUpLFxuICAgICAgfSksXG4gICAgKVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKSxcbiAgICAgIH0pLFxuICAgICksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX2ZpbGVzOiB6LmFycmF5KFpULnBhY2thZ2VGaWxlU2NoZW1hKSxcbiAgfSksXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMocm91dGVTcGVjKShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgcGFja2FnZVJlbGVhc2VJZCA9IGF3YWl0IGZpbmRQYWNrYWdlUmVsZWFzZUlkKHJlcS5qc29uQm9keSwgY3R4KVxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBPbWl0IHRoZSBjb250ZW50X3RleHQgZmllbGRcbiAgY29uc3QgcGFja2FnZUZpbGVzID0gY3R4LmRiLnBhY2thZ2VGaWxlc1xuICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkKVxuICAgIC5tYXAoKHsgY29udGVudF90ZXh0LCAuLi5maWxlIH0pID0+ICh7XG4gICAgICAuLi5maWxlLFxuICAgIH0pKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9maWxlczogcGFja2FnZUZpbGVzLFxuICB9KVxufSlcbiIsICJpbXBvcnQgKiBhcyBaVCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgdHlwZSB7IERiQ2xpZW50IH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9kYi1jbGllbnRcIlxuXG5leHBvcnQgY29uc3QgcHVibGljTWFwUGFja2FnZVJlbGVhc2UgPSAoXG4gIGludGVybmFsX3BhY2thZ2VfcmVsZWFzZTogWlQuUGFja2FnZVJlbGVhc2UsXG4gIG9wdGlvbnM6IHtcbiAgICBpbmNsdWRlX2xvZ3M/OiBib29sZWFuXG4gICAgaW5jbHVkZV9haV9yZXZpZXc/OiBib29sZWFuXG4gICAgZGI/OiBEYkNsaWVudFxuICB9ID0ge1xuICAgIGluY2x1ZGVfbG9nczogZmFsc2UsXG4gICAgaW5jbHVkZV9haV9yZXZpZXc6IGZhbHNlLFxuICB9LFxuKTogWlQuUGFja2FnZVJlbGVhc2UgPT4ge1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgLi4uaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLFxuICAgIGNyZWF0ZWRfYXQ6IGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5jcmVhdGVkX2F0LFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcl9sYXN0X3VwZGF0ZWRfYXQ6XG4gICAgICBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdCxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3I6IGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5jaXJjdWl0X2pzb25fYnVpbGRfZXJyb3IsXG4gICAgdHJhbnNwaWxhdGlvbl9sb2dzOiBvcHRpb25zLmluY2x1ZGVfbG9nc1xuICAgICAgPyBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UudHJhbnNwaWxhdGlvbl9sb2dzXG4gICAgICA6IFtdLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiBvcHRpb25zLmluY2x1ZGVfbG9nc1xuICAgICAgPyBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3NcbiAgICAgIDogW10sXG4gICAgaXNfcHJfcHJldmlldzogQm9vbGVhbihpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuaXNfcHJfcHJldmlldyksXG4gICAgZ2l0aHViX3ByX251bWJlcjogaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLmdpdGh1Yl9wcl9udW1iZXIsXG4gIH1cblxuICBpZiAob3B0aW9ucy5pbmNsdWRlX2FpX3JldmlldyAmJiBvcHRpb25zLmRiKSB7XG4gICAgY29uc3QgcmV2aWV3cyA9IG9wdGlvbnMuZGJcbiAgICAgIC5saXN0QWlSZXZpZXdzKClcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChyKSA9PlxuICAgICAgICAgIHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgKVxuICAgICAgLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKCksXG4gICAgICApXG5cbiAgICBpZiAocmV2aWV3cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsYXRlc3QgPSByZXZpZXdzWzBdXG4gICAgICByZXN1bHQuYWlfcmV2aWV3X3RleHQgPSBsYXRlc3QuYWlfcmV2aWV3X3RleHQgPz8gbnVsbFxuICAgICAgcmVzdWx0LmFpX3Jldmlld19zdGFydGVkX2F0ID0gbGF0ZXN0LnN0YXJ0X3Byb2Nlc3NpbmdfYXQgPz8gbnVsbFxuICAgICAgcmVzdWx0LmFpX3Jldmlld19jb21wbGV0ZWRfYXQgPSBsYXRlc3QuZmluaXNoZWRfcHJvY2Vzc2luZ19hdCA/PyBudWxsXG4gICAgICByZXN1bHQuYWlfcmV2aWV3X2Vycm9yID0gbGF0ZXN0LnByb2Nlc3NpbmdfZXJyb3IgPz8gbnVsbFxuICAgIH1cbiAgfVxuXG4gIC8vIE9ubHkgaW5jbHVkZSBBSSByZXZpZXcgZmllbGRzIHdoZW4gaW5jbHVkZV9haV9yZXZpZXcgaXMgdHJ1ZVxuICBpZiAoIW9wdGlvbnMuaW5jbHVkZV9haV9yZXZpZXcpIHtcbiAgICBkZWxldGUgcmVzdWx0LmFpX3Jldmlld190ZXh0XG4gICAgZGVsZXRlIHJlc3VsdC5haV9yZXZpZXdfc3RhcnRlZF9hdFxuICAgIGRlbGV0ZSByZXN1bHQuYWlfcmV2aWV3X2NvbXBsZXRlZF9hdFxuICAgIGRlbGV0ZSByZXN1bHQuYWlfcmV2aWV3X2Vycm9yXG4gICAgZGVsZXRlIHJlc3VsdC5haV9yZXZpZXdfbG9nc1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIiwgImltcG9ydCB7IHBhY2thZ2VSZWxlYXNlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2UtcmVsZWFzZVwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX2xhdGVzdDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBjb21taXRfc2hhOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2VfcmVsZWFzZTogcGFja2FnZVJlbGVhc2VTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGxldCB7XG4gICAgcGFja2FnZV9pZCxcbiAgICBwYWNrYWdlX25hbWUsXG4gICAgaXNfbGF0ZXN0ID0gdHJ1ZSxcbiAgICB2ZXJzaW9uLFxuICAgIGNvbW1pdF9zaGEsXG4gICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbixcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIGlmIChwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uICYmICFwYWNrYWdlX2lkKSB7XG4gICAgY29uc3QgW3BhY2thZ2VOYW1lLCBwYXJzZWRWZXJzaW9uXSA9IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uc3BsaXQoXCJAXCIpXG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gcGFja2FnZU5hbWUpXG5cbiAgICBpZiAoIXBrZykge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBgUGFja2FnZSBub3QgZm91bmQ6ICR7cGFja2FnZU5hbWV9YCxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcGFja2FnZV9pZCA9IHBrZy5wYWNrYWdlX2lkXG4gICAgdmVyc2lvbiA9IHBhcnNlZFZlcnNpb25cbiAgfVxuXG4gIGlmICghcGFja2FnZV9pZCAmJiBwYWNrYWdlX25hbWUpIHtcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5uYW1lID09PSBwYWNrYWdlX25hbWUpXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogYFBhY2thZ2Ugbm90IGZvdW5kOiAke3BhY2thZ2VfbmFtZX1gLFxuICAgICAgfSlcbiAgICB9XG4gICAgcGFja2FnZV9pZCA9IHBrZy5wYWNrYWdlX2lkXG4gIH1cblxuICBpZiAoIXBhY2thZ2VfaWQgfHwgIXZlcnNpb24pIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJtaXNzaW5nX29wdGlvbnNcIixcbiAgICAgIG1lc3NhZ2U6IFwicGFja2FnZV9pZCBvciBwYWNrYWdlX25hbWUgYW5kIHZlcnNpb24gYXJlIHJlcXVpcmVkXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHZlcnNpb24gYWxyZWFkeSBleGlzdHNcbiAgY29uc3QgZXhpc3RpbmdSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZCAmJiBwci52ZXJzaW9uID09PSB2ZXJzaW9uLFxuICApXG5cbiAgaWYgKGV4aXN0aW5nUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInZlcnNpb25fYWxyZWFkeV9leGlzdHNcIixcbiAgICAgIG1lc3NhZ2U6IGBWZXJzaW9uICR7dmVyc2lvbn0gYWxyZWFkeSBleGlzdHMgZm9yIHRoaXMgcGFja2FnZWAsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFVwZGF0ZSBwcmV2aW91cyBsYXRlc3QgaWYgbmVlZGVkXG4gIGlmIChpc19sYXRlc3QpIHtcbiAgICBjdHguZGIucGFja2FnZVJlbGVhc2VzXG4gICAgICAuZmlsdGVyKChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZCAmJiBwci5pc19sYXRlc3QpXG4gICAgICAuZm9yRWFjaCgocHIpID0+IChwci5pc19sYXRlc3QgPSBmYWxzZSkpXG4gIH1cblxuICBjb25zdCBuZXdQYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5hZGRQYWNrYWdlUmVsZWFzZSh7XG4gICAgcGFja2FnZV9pZCxcbiAgICBpc19sYXRlc3QsXG4gICAgdmVyc2lvbixcbiAgICBpc19sb2NrZWQ6IGZhbHNlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBjb21taXRfc2hhOiBjb21taXRfc2hhID8/IG51bGwsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yOiBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcl9sYXN0X3VwZGF0ZWRfYXQ6IG51bGwsXG4gICAgLy8gU2V0dGluZyB0aGUgdHJhbnNwaWxlZCBhcyB0cnVlIG9uIGNyZWF0aW9uXG4gICAgaGFzX3RyYW5zcGlsZWQ6IHRydWUsXG4gICAgdHJhbnNwaWxhdGlvbl9lcnJvcjogbnVsbCxcbiAgfSlcblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UncyBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIGlmIHRoaXMgaXMgdGhlIGxhdGVzdCByZWxlYXNlXG4gIGlmIChpc19sYXRlc3QpIHtcbiAgICBjdHguZGIudXBkYXRlUGFja2FnZShwYWNrYWdlX2lkLCB7XG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICBsYXRlc3RfdmVyc2lvbjogdmVyc2lvbixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX3JlbGVhc2U6IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlKG5ld1BhY2thZ2VSZWxlYXNlLCB7IGRiOiBjdHguZGIgfSksXG4gIH0pXG59KVxuIiwgImltcG9ydCAqIGFzIHp0IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2UtcmVsZWFzZVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBpbmNsdWRlX2xvZ3M6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gICAgaW5jbHVkZV9haV9yZXZpZXc6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gIH0pLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBwYWNrYWdlX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaXNfbGF0ZXN0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2VfcmVsZWFzZTogenQucGFja2FnZVJlbGVhc2VTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbixcbiAgICBwYWNrYWdlX25hbWUsXG4gICAgcGFja2FnZV9pZCxcbiAgICBpc19sYXRlc3QsXG4gIH0gPSByZXEuanNvbkJvZHlcblxuICAvLyBIYW5kbGUgcGFja2FnZV9uYW1lIHdpdGggaXNfbGF0ZXN0XG4gIGlmIChwYWNrYWdlX25hbWUgJiYgaXNfbGF0ZXN0ID09PSB0cnVlKSB7XG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHgpID0+IHgubmFtZSA9PT0gcGFja2FnZV9uYW1lKVxuXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBTb3J0IHJlbGVhc2VzIGJ5IHZlcnNpb24gdG8gZmluZCB0aGUgbGF0ZXN0IG9uZVxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlcyA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXNcbiAgICAgIC5maWx0ZXIoKHgpID0+IHgucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQpXG4gICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKClcbiAgICAgICAgKVxuICAgICAgfSlcblxuICAgIGlmIChwYWNrYWdlUmVsZWFzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJObyByZWxlYXNlcyBmb3VuZCBmb3IgdGhpcyBwYWNrYWdlXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZTogcHVibGljTWFwUGFja2FnZVJlbGVhc2UocGFja2FnZVJlbGVhc2VzWzBdLCB7XG4gICAgICAgIGluY2x1ZGVfYWlfcmV2aWV3OiByZXEuY29tbW9uUGFyYW1zPy5pbmNsdWRlX2FpX3JldmlldyxcbiAgICAgICAgZGI6IGN0eC5kYixcbiAgICAgIH0pLFxuICAgIH0pXG4gIH1cblxuICAvLyBIYW5kbGUgcGFja2FnZV9pZCB3aXRoIGlzX2xhdGVzdFxuICBpZiAocGFja2FnZV9pZCAmJiBpc19sYXRlc3QgPT09IHRydWUpIHtcbiAgICAvLyBTb3J0IHJlbGVhc2VzIGJ5IHZlcnNpb24gdG8gZmluZCB0aGUgbGF0ZXN0IG9uZVxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlcyA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXNcbiAgICAgIC5maWx0ZXIoKHgpID0+IHgucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbmV3IERhdGUoYi5jcmVhdGVkX2F0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKVxuICAgICAgICApXG4gICAgICB9KVxuXG4gICAgaWYgKHBhY2thZ2VSZWxlYXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIk5vIHJlbGVhc2VzIGZvdW5kIGZvciB0aGlzIHBhY2thZ2VcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgcGFja2FnZV9yZWxlYXNlOiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShwYWNrYWdlUmVsZWFzZXNbMF0sIHtcbiAgICAgICAgaW5jbHVkZV9haV9yZXZpZXc6IHJlcS5jb21tb25QYXJhbXM/LmluY2x1ZGVfYWlfcmV2aWV3LFxuICAgICAgICBkYjogY3R4LmRiLFxuICAgICAgfSksXG4gICAgfSlcbiAgfVxuXG4gIGlmIChwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uICYmICFwYWNrYWdlX3JlbGVhc2VfaWQpIHtcbiAgICBjb25zdCBbcGFja2FnZU5hbWUsIHBhcnNlZFZlcnNpb25dID0gcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5zcGxpdChcIkBcIilcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgoeCkgPT4geC5uYW1lID09PSBwYWNrYWdlTmFtZSlcbiAgICBjb25zdCBwa2dSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKCh4KSA9PiB7XG4gICAgICByZXR1cm4geC52ZXJzaW9uID09IHBhcnNlZFZlcnNpb24gJiYgeC5wYWNrYWdlX2lkID09IHBrZz8ucGFja2FnZV9pZFxuICAgIH0pXG5cbiAgICBpZiAoIXBrZ1JlbGVhc2UpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgcGFja2FnZV9yZWxlYXNlOiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShwa2dSZWxlYXNlLCB7XG4gICAgICAgIGluY2x1ZGVfYWlfcmV2aWV3OiByZXEuY29tbW9uUGFyYW1zPy5pbmNsdWRlX2FpX3JldmlldyxcbiAgICAgICAgZGI6IGN0eC5kYixcbiAgICAgIH0pLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBmb3VuZFJlbGVhc2UgPVxuICAgIHBhY2thZ2VfcmVsZWFzZV9pZCAmJiBjdHguZGIuZ2V0UGFja2FnZVJlbGVhc2VCeUlkKHBhY2thZ2VfcmVsZWFzZV9pZClcblxuICBpZiAoIWZvdW5kUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfcmVsZWFzZTogcHVibGljTWFwUGFja2FnZVJlbGVhc2UoZm91bmRSZWxlYXNlLCB7XG4gICAgICBpbmNsdWRlX2xvZ3M6IHJlcS5jb21tb25QYXJhbXM/LmluY2x1ZGVfbG9ncyxcbiAgICAgIGluY2x1ZGVfYWlfcmV2aWV3OiByZXEuY29tbW9uUGFyYW1zPy5pbmNsdWRlX2FpX3JldmlldyxcbiAgICAgIGRiOiBjdHguZGIsXG4gICAgfSksXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHBhY2thZ2VSZWxlYXNlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2UtcmVsZWFzZVwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgaW5jbHVkZV9haV9yZXZpZXc6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gIH0pLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBpc19sYXRlc3Q6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgICB2ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjb21taXRfc2hhOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAucmVmaW5lKCh7IHBhY2thZ2VfaWQsIHBhY2thZ2VfbmFtZSB9KSA9PiB7XG4gICAgICBpZiAocGFja2FnZV9pZCAmJiBwYWNrYWdlX25hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwicGFja2FnZV9pZCBhbmQgcGFja2FnZV9uYW1lIGFyZSBtdXR1YWxseSBleGNsdXNpdmVcIilcbiAgICAucmVmaW5lKCh7IHBhY2thZ2VfaWQsIHBhY2thZ2VfbmFtZSB9KSA9PiB7XG4gICAgICBpZiAoIXBhY2thZ2VfaWQgJiYgIXBhY2thZ2VfbmFtZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJwYWNrYWdlX2lkIG9yIHBhY2thZ2VfbmFtZSBpcyByZXF1aXJlZFwiKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2VfcmVsZWFzZXM6IHouYXJyYXkocGFja2FnZVJlbGVhc2VTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfaWQsIHBhY2thZ2VfbmFtZSwgaXNfbGF0ZXN0LCB2ZXJzaW9uLCBjb21taXRfc2hhIH0gPVxuICAgIHJlcS5qc29uQm9keVxuXG4gIGlmICghcGFja2FnZV9pZCAmJiAhcGFja2FnZV9uYW1lICYmICFpc19sYXRlc3QgJiYgIXZlcnNpb24gJiYgIWNvbW1pdF9zaGEpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX3F1ZXJ5XCIsXG4gICAgICBtZXNzYWdlOlxuICAgICAgICBcIkF0IGxlYXN0IG9uZSBvZiBwYWNrYWdlX2lkLCBwYWNrYWdlX25hbWUsIGlzX2xhdGVzdCwgdmVyc2lvbiBvciBjb21taXRfc2hhIGlzIHJlcXVpcmVkXCIsXG4gICAgfSlcbiAgfVxuXG4gIGxldCByZWxlYXNlcyA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXNcblxuICAvLyBBcHBseSBmaWx0ZXJzXG4gIGlmIChwYWNrYWdlX2lkKSB7XG4gICAgcmVsZWFzZXMgPSByZWxlYXNlcy5maWx0ZXIoKHByKSA9PiBwci5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkKVxuICB9XG5cbiAgaWYgKHBhY2thZ2VfbmFtZSkge1xuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VfbmFtZSlcbiAgICBpZiAocGtnKSB7XG4gICAgICByZWxlYXNlcyA9IHJlbGVhc2VzLmZpbHRlcigocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkKVxuICAgIH0gZWxzZSB7XG4gICAgICByZWxlYXNlcyA9IFtdXG4gICAgfVxuICB9XG5cbiAgaWYgKGlzX2xhdGVzdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmVsZWFzZXMgPSByZWxlYXNlcy5maWx0ZXIoKHByKSA9PiBwci5pc19sYXRlc3QgPT09IGlzX2xhdGVzdClcbiAgfVxuXG4gIGlmICh2ZXJzaW9uKSB7XG4gICAgcmVsZWFzZXMgPSByZWxlYXNlcy5maWx0ZXIoKHByKSA9PiBwci52ZXJzaW9uID09PSB2ZXJzaW9uKVxuICB9XG5cbiAgaWYgKGNvbW1pdF9zaGEpIHtcbiAgICByZWxlYXNlcyA9IHJlbGVhc2VzLmZpbHRlcigocHIpID0+IHByLmNvbW1pdF9zaGEgPT09IGNvbW1pdF9zaGEpXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfcmVsZWFzZXM6IHJlbGVhc2VzLm1hcCgocHIpID0+XG4gICAgICBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShwciwge1xuICAgICAgICBpbmNsdWRlX2FpX3JldmlldzogcmVxLmNvbW1vblBhcmFtcz8uaW5jbHVkZV9haV9yZXZpZXcsXG4gICAgICAgIGRiOiBjdHguZGIsXG4gICAgICB9KSxcbiAgICApLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IERlYnVnIGZyb20gXCJkZWJ1Z1wiXG5cbmNvbnN0IGRlYnVnID0gRGVidWcoXCJmYWtlLXNuaXBwZXRzLWFwaTpyZWJ1aWxkLXBhY2thZ2VcIilcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgICByZWJ1aWxkX3RyYW5zcGlsYXRpb246IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gICAgcmVidWlsZF9jaXJjdWl0X2pzb246IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9yZWxlYXNlX2lkLCByZWJ1aWxkX3RyYW5zcGlsYXRpb24sIHJlYnVpbGRfY2lyY3VpdF9qc29uIH0gPVxuICAgIHJlcS5qc29uQm9keVxuXG4gIGRlYnVnKFwianNvbkJvZHlcIiwgcmVxLmpzb25Cb2R5KVxuICAvLyBHZXQgdGhlIHBhY2thZ2UgcmVsZWFzZSBpbmZvIGZvciBsb2dnaW5nXG4gIGNvbnN0IHJlbGVhc2UgPSBjdHguZGIuZ2V0UGFja2FnZVJlbGVhc2VCeUlkKHBhY2thZ2VfcmVsZWFzZV9pZClcblxuICBpZiAoIXJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcGFja2FnZUluZm8gPSBjdHguZGIuZ2V0UGFja2FnZUJ5SWQocmVsZWFzZS5wYWNrYWdlX2lkKVxuXG4gIGlmICghcGFja2FnZUluZm8pIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAocGFja2FnZUluZm8ub3duZXJfb3JnX2lkICE9PSBjdHguYXV0aC5wZXJzb25hbF9vcmdfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gcmVidWlsZCB0aGlzIHBhY2thZ2UgcmVsZWFzZVwiLFxuICAgIH0pXG4gIH1cblxuICBkZWJ1ZyhcbiAgICBgUmVidWlsZGluZyBwYWNrYWdlIHJlbGVhc2UgJHtwYWNrYWdlX3JlbGVhc2VfaWR9IGZvciAke3BhY2thZ2VJbmZvLm5hbWV9QCR7cmVsZWFzZS52ZXJzaW9ufWAsXG4gIClcblxuICAvLyBUcmlnZ2VyIHRyYW5zcGlsYXRpb24gaWYgcmVxdWVzdGVkXG4gIGlmIChyZWJ1aWxkX3RyYW5zcGlsYXRpb24pIHtcbiAgICBkZWJ1ZyhcIlJlc2V0dGluZyB0cmFuc3BpbGF0aW9uIHN0YXRlXCIpXG4gIH1cblxuICAvLyBTZXQgY2lyY3VpdCBKU09OIGJ1aWxkIHN0YXRlIHRvIHBlbmRpbmcgZm9yIHdvcmtlciBwaWNrdXAgaWYgcmVxdWVzdGVkXG4gIGlmIChyZWJ1aWxkX2NpcmN1aXRfanNvbikge1xuICAgIGRlYnVnKFwiUmVzZXR0aW5nIGNpcmN1aXQgSlNPTiBidWlsZCBzdGF0ZVwiKVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc19sb2NrZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgaXNfbGF0ZXN0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGxpY2Vuc2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBmc19zaGE6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICByZWFkeV90b19idWlsZDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBhaV9yZXZpZXdfcmVxdWVzdGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgaXNfbG9ja2VkLFxuICAgIGlzX2xhdGVzdCxcbiAgICBsaWNlbnNlLFxuICAgIGZzX3NoYSxcbiAgICByZWFkeV90b19idWlsZCxcbiAgICBhaV9yZXZpZXdfcmVxdWVzdGVkLFxuICB9ID0gcmVxLmpzb25Cb2R5XG4gIGxldCByZWxlYXNlSWQgPSBwYWNrYWdlX3JlbGVhc2VfaWRcblxuICAvLyBIYW5kbGUgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiBsb29rdXBcbiAgaWYgKCFyZWxlYXNlSWQgJiYgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikge1xuICAgIGNvbnN0IFtwYWNrYWdlTmFtZSwgdmVyc2lvbl0gPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVxuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VOYW1lKVxuICAgIGlmIChwa2cpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgICAgIClcbiAgICAgIGlmIChyZWxlYXNlKSB7XG4gICAgICAgIHJlbGVhc2VJZCA9IHJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFyZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgZGVsdGEgPSB7XG4gICAgaXNfbG9ja2VkLFxuICAgIGlzX2xhdGVzdCxcbiAgICBsaWNlbnNlLFxuICAgIGZzX3NoYSxcbiAgICByZWFkeV90b19idWlsZCxcbiAgICBhaV9yZXZpZXdfcmVxdWVzdGVkLFxuICB9XG4gIGlmIChcbiAgICBPYmplY3Qua2V5cyhkZWx0YSkuZmlsdGVyKFxuICAgICAgKGspID0+IGRlbHRhW2sgYXMga2V5b2YgdHlwZW9mIGRlbHRhXSAhPT0gdW5kZWZpbmVkLFxuICAgICkubGVuZ3RoID09PSAwXG4gICkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vX2ZpZWxkc19wcm92aWRlZFwiLFxuICAgICAgbWVzc2FnZTogXCJObyBmaWVsZHMgcHJvdmlkZWQgdG8gdXBkYXRlXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHJlbGVhc2VJZCxcbiAgKVxuICBpZiAoIXJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ3JlYXRlIHVwZGF0ZWQgcmVsZWFzZSBvYmplY3RcbiAgY29uc3QgdXBkYXRlZFJlbGVhc2UgPSB7XG4gICAgLi4ucmVsZWFzZSxcbiAgICAuLi4oaXNfbG9ja2VkICE9PSB1bmRlZmluZWQgJiYgeyBpc19sb2NrZWQgfSksXG4gICAgLi4uKGlzX2xhdGVzdCAhPT0gdW5kZWZpbmVkICYmIHsgaXNfbGF0ZXN0IH0pLFxuICAgIC4uLihsaWNlbnNlICE9PSB1bmRlZmluZWQgJiYgeyBsaWNlbnNlIH0pLFxuICAgIC4uLihmc19zaGEgIT09IHVuZGVmaW5lZCAmJiB7IGZzX3NoYSB9KSxcbiAgICAuLi4ocmVhZHlfdG9fYnVpbGQgIT09IHVuZGVmaW5lZCAmJiB7IHJlYWR5X3RvX2J1aWxkIH0pLFxuICAgIC4uLihhaV9yZXZpZXdfcmVxdWVzdGVkICE9PSB1bmRlZmluZWQgJiYgeyBhaV9yZXZpZXdfcmVxdWVzdGVkIH0pLFxuICAgIC4uLihhaV9yZXZpZXdfcmVxdWVzdGVkID09PSB0cnVlICYmIHtcbiAgICAgIGFpX3Jldmlld190ZXh0OiBcIlBsYWNlaG9sZGVyIEFJIFJldmlldyBUZXh0XCIsXG4gICAgfSksXG4gIH1cblxuICAvLyBIYW5kbGUgaXNfbGF0ZXN0IHVwZGF0ZXMgYXRvbWljYWxseVxuICBpZiAoaXNfbGF0ZXN0ICE9PSB1bmRlZmluZWQgJiYgaXNfbGF0ZXN0KSB7XG4gICAgLy8gR2V0IGFsbCByZWxlYXNlcyBmb3IgdGhpcyBwYWNrYWdlIHRoYXQgYXJlIGN1cnJlbnRseSBtYXJrZWQgYXMgbGF0ZXN0XG4gICAgY29uc3Qgb3RoZXJMYXRlc3RSZWxlYXNlcyA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmlsdGVyKFxuICAgICAgKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX2lkID09PSByZWxlYXNlLnBhY2thZ2VfaWQgJiZcbiAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkICE9PSByZWxlYXNlSWQgJiZcbiAgICAgICAgcHIuaXNfbGF0ZXN0LFxuICAgIClcblxuICAgIC8vIFVwZGF0ZSBhbGwgcmVsZWFzZXMgaW4gYSBzaW5nbGUgb3BlcmF0aW9uXG4gICAgZm9yIChjb25zdCBsYXRlc3RSZWxlYXNlIG9mIG90aGVyTGF0ZXN0UmVsZWFzZXMpIHtcbiAgICAgIGN0eC5kYi51cGRhdGVQYWNrYWdlUmVsZWFzZSh7XG4gICAgICAgIC4uLmxhdGVzdFJlbGVhc2UsXG4gICAgICAgIGlzX2xhdGVzdDogZmFsc2UsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8vIFVwZGF0ZSB0aGUgdGFyZ2V0IHJlbGVhc2VcbiAgY3R4LmRiLnVwZGF0ZVBhY2thZ2VSZWxlYXNlKHVwZGF0ZWRSZWxlYXNlKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAub3Ioei5vYmplY3QoeyBuYW1lOiB6LnN0cmluZygpIH0pKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQgcGFja2FnZUlkOiBzdHJpbmdcblxuICAvLyBHZXQgcGFja2FnZSBJRCBlaXRoZXIgZGlyZWN0bHkgb3IgYnkgbmFtZVxuICBpZiAoXCJwYWNrYWdlX2lkXCIgaW4gcmVxLmpzb25Cb2R5KSB7XG4gICAgY29uc3QgYm9keSA9IHJlcS5qc29uQm9keVxuICAgIHBhY2thZ2VJZCA9IGJvZHkucGFja2FnZV9pZFxuICB9IGVsc2Uge1xuICAgIC8vIElmIG5hbWUgaXMgcHJvdmlkZWQsIGxvb2sgdXAgdGhlIHBhY2thZ2VfaWRcbiAgICBjb25zdCBib2R5ID0gcmVxLmpzb25Cb2R5XG4gICAgY29uc3QgcGFja2FnZURhdGEgPSBjdHguZGIucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cubmFtZSA9PT0gYm9keS5uYW1lKVxuXG4gICAgaWYgKCFwYWNrYWdlRGF0YSkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHBhY2thZ2VJZCA9IHBhY2thZ2VEYXRhLnBhY2thZ2VfaWRcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHBhY2thZ2UgZXhpc3RzIChleHRyYSBjaGVjayBmb3IgSUQtYmFzZWQgbG9va3VwKVxuICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQpXG5cbiAgaWYgKCFwa2cpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBhbHJlYWR5IHN0YXJyZWRcbiAgY29uc3QgZXhpc3RpbmcgPSBjdHguZGIuYWNjb3VudFBhY2thZ2VzLmZpbmQoXG4gICAgKGFwKSA9PlxuICAgICAgYXAuYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCAmJiBhcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQsXG4gIClcblxuICBpZiAoZXhpc3Rpbmc/LmlzX3N0YXJyZWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhbHJlYWR5X3N0YXJyZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGhhdmUgYWxyZWFkeSBzdGFycmVkIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UncyBzdGFyIGNvdW50XG4gIHBrZy5zdGFyX2NvdW50ID0gKHBrZy5zdGFyX2NvdW50IHx8IDApICsgMVxuXG4gIGlmIChleGlzdGluZykge1xuICAgIC8vIElmIHJlY29yZCBleGlzdHMgYnV0IGlzX3N0YXJyZWQgaXMgZmFsc2UsIHVwZGF0ZSB0byBpc19zdGFycmVkPXRydWVcbiAgICBleGlzdGluZy5pc19zdGFycmVkID0gdHJ1ZVxuICAgIGV4aXN0aW5nLnVwZGF0ZWRfYXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgfSBlbHNlIHtcbiAgICAvLyBBZGQgc3RhciBieSBjcmVhdGluZyBhIG5ldyBhY2NvdW50X3BhY2thZ2UgcmVjb3JkXG4gICAgY29uc3QgbmV3VGltZXN0YW1wID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgY29uc3QgbmV3QWNjb3VudFBhY2thZ2UgPSB7XG4gICAgICBhY2NvdW50X3BhY2thZ2VfaWQ6IGBhcF8ke0RhdGUubm93KCl9YCxcbiAgICAgIGFjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgICBwYWNrYWdlX2lkOiBwYWNrYWdlSWQsXG4gICAgICBpc19zdGFycmVkOiB0cnVlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3VGltZXN0YW1wLFxuICAgICAgdXBkYXRlZF9hdDogbmV3VGltZXN0YW1wLFxuICAgIH1cbiAgICBjdHguZGIuYWRkQWNjb3VudFBhY2thZ2UobmV3QWNjb3VudFBhY2thZ2UpXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgdHlwZSAqIGFzIHp0IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGNvbnN0IHB1YmxpY01hcFBhY2thZ2UgPSAoaW50ZXJuYWxQYWNrYWdlOiB7XG4gIHBhY2thZ2VfaWQ6IHN0cmluZ1xuICBjcmVhdG9yX2FjY291bnRfaWQ6IHN0cmluZ1xuICBvd25lcl9vcmdfaWQ6IHN0cmluZ1xuICBvd25lcl9naXRodWJfdXNlcm5hbWU6IHN0cmluZyB8IG51bGxcbiAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBib29sZWFuXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsXG4gIGxhdGVzdF92ZXJzaW9uPzogc3RyaW5nIHwgbnVsbFxuICBsYXRlc3RfbGljZW5zZT86IHN0cmluZyB8IG51bGxcbiAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZD86IHN0cmluZyB8IG51bGxcbiAgc3Rhcl9jb3VudD86IG51bWJlciB8IG51bGxcbiAgbmFtZTogc3RyaW5nXG4gIHdlYnNpdGU6IHN0cmluZyB8IG51bGxcbiAgdW5zY29wZWRfbmFtZTogc3RyaW5nXG4gIHVwZGF0ZWRfYXQ6IHN0cmluZ1xuICBjcmVhdGVkX2F0OiBzdHJpbmdcbiAgYWlfZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGxcbiAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiBzdHJpbmcgfCBudWxsXG4gIGlzX3NuaXBwZXQ6IGJvb2xlYW5cbiAgaXNfYm9hcmQ6IGJvb2xlYW5cbiAgaXNfcGFja2FnZTogYm9vbGVhblxuICBpc19tb2RlbDogYm9vbGVhblxuICBpc19mb290cHJpbnQ6IGJvb2xlYW5cbiAgaXNfcHJpdmF0ZTogYm9vbGVhbiB8IG51bGxcbiAgaXNfdW5saXN0ZWQ6IGJvb2xlYW4gfCBudWxsXG4gIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfZnNfc2hhOiBzdHJpbmcgfCBudWxsXG4gIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZT86IHN0cmluZyB8IG51bGxcbiAgYWxsb3dfcHJfcHJldmlld3M/OiBib29sZWFuXG59KTogenQuUGFja2FnZSA9PiB7XG4gIHJldHVybiB7XG4gICAgLi4uaW50ZXJuYWxQYWNrYWdlLFxuICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6XG4gICAgICBpbnRlcm5hbFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCA/PyBudWxsLFxuICAgIGxhdGVzdF92ZXJzaW9uOiBpbnRlcm5hbFBhY2thZ2UubGF0ZXN0X3ZlcnNpb24gPz8gbnVsbCxcbiAgICBsaWNlbnNlOiBpbnRlcm5hbFBhY2thZ2UubGF0ZXN0X2xpY2Vuc2UgPz8gbnVsbCxcbiAgICB3ZWJzaXRlOiBpbnRlcm5hbFBhY2thZ2Uud2Vic2l0ZSA/PyBudWxsLFxuICAgIHN0YXJfY291bnQ6IGludGVybmFsUGFja2FnZS5zdGFyX2NvdW50ID8/IDAsXG4gICAgY3JlYXRlZF9hdDogaW50ZXJuYWxQYWNrYWdlLmNyZWF0ZWRfYXQsXG4gICAgdXBkYXRlZF9hdDogaW50ZXJuYWxQYWNrYWdlLnVwZGF0ZWRfYXQsXG4gICAgZ2l0aHViX3JlcG9fZnVsbF9uYW1lOiBpbnRlcm5hbFBhY2thZ2UuZ2l0aHViX3JlcG9fZnVsbF9uYW1lID8/IG51bGwsXG4gICAgaXNfcHJpdmF0ZTogaW50ZXJuYWxQYWNrYWdlLmlzX3ByaXZhdGUgPz8gZmFsc2UsXG4gICAgaXNfcHVibGljOiBpbnRlcm5hbFBhY2thZ2UuaXNfcHJpdmF0ZSA9PT0gdHJ1ZSA/IGZhbHNlIDogdHJ1ZSxcbiAgICBpc191bmxpc3RlZDpcbiAgICAgIGludGVybmFsUGFja2FnZS5pc19wcml2YXRlID09PSB0cnVlXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IChpbnRlcm5hbFBhY2thZ2UuaXNfdW5saXN0ZWQgPz8gZmFsc2UpLFxuICAgIGFsbG93X3ByX3ByZXZpZXdzOiBCb29sZWFuKGludGVybmFsUGFja2FnZS5hbGxvd19wcl9wcmV2aWV3cyksXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBwYWNrYWdlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZVwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBuYW1lOiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC5yZWdleChcbiAgICAgICAgL15bQGEtekEtWjAtOS1fXFwvXSskLyxcbiAgICAgICAgXCJQYWNrYWdlIG5hbWUgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCBoeXBoZW5zLCB1bmRlcnNjb3JlcywgYW5kIGZvcndhcmQgc2xhc2hlc1wiLFxuICAgICAgKVxuICAgICAgLnRyYW5zZm9ybSgobmFtZSkgPT4gbmFtZS5yZXBsYWNlKC9eQC8sIFwiXCIpKVxuICAgICAgLm9wdGlvbmFsKCksXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZTogcGFja2FnZVNjaGVtYS5vcHRpb25hbCgpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG5hbWUsIGRlc2NyaXB0aW9uLCBpc19wcml2YXRlLCBpc191bmxpc3RlZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgZXhpc3RpbmdQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLm5hbWUgPT09IG5hbWUpXG5cbiAgaWYgKGV4aXN0aW5nUGFja2FnZSkge1xuICAgIHRocm93IGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9hbHJlYWR5X2V4aXN0c1wiLFxuICAgICAgbWVzc2FnZTogXCJBIHBhY2thZ2Ugd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHNcIixcbiAgICB9KVxuICB9XG5cbiAgbGV0IHVuc2NvcGVkX25hbWUgPSBuYW1lPy5pbmNsdWRlcyhcIi9cIikgPyBuYW1lPy5zcGxpdChcIi9cIilbMV0gOiBuYW1lXG4gIGlmICghdW5zY29wZWRfbmFtZSkge1xuICAgIGNvbnN0IHN0YXRlID0gY3R4LmRiLmdldFN0YXRlKClcbiAgICBjb25zdCBjb3VudCA9IHN0YXRlLnBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwa2cpID0+IHBrZy5jcmVhdG9yX2FjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgKS5sZW5ndGhcblxuICAgIHVuc2NvcGVkX25hbWUgPSBgdW50aXRsZWQtcGFja2FnZS0ke2NvdW50fWBcbiAgfVxuXG4gIGNvbnN0IG5ld1BhY2thZ2UgPSBjdHguZGIuYWRkUGFja2FnZSh7XG4gICAgbmFtZTogbmFtZT8uaW5jbHVkZXMoXCIvXCIpXG4gICAgICA/IG5hbWVcbiAgICAgIDogYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke1N0cmluZyh1bnNjb3BlZF9uYW1lKX1gLFxuICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiA/PyBudWxsLFxuICAgIGNyZWF0b3JfYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBvd25lcl9vcmdfaWQ6IGN0eC5hdXRoLnBlcnNvbmFsX29yZ19pZCxcbiAgICBvd25lcl9naXRodWJfdXNlcm5hbWU6IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSxcbiAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBudWxsLFxuICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfZnNfc2hhOiBudWxsLFxuICAgIGxhdGVzdF92ZXJzaW9uOiBudWxsLFxuICAgIGxpY2Vuc2U6IG51bGwsXG4gICAgd2Vic2l0ZTogbnVsbCxcbiAgICBpc19zb3VyY2VfZnJvbV9naXRodWI6IGZhbHNlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdW5zY29wZWRfbmFtZSxcbiAgICBzdGFyX2NvdW50OiAwLFxuICAgIGFpX2Rlc2NyaXB0aW9uOiBcInBsYWNlaG9sZGVyIGFpIGRlc2NyaXB0aW9uXCIsXG4gICAgaXNfcHJpdmF0ZTogaXNfcHJpdmF0ZSA/PyBmYWxzZSxcbiAgICBpc19wdWJsaWM6IGlzX3ByaXZhdGUgPT09IHRydWUgPyBmYWxzZSA6IHRydWUsXG4gICAgaXNfdW5saXN0ZWQ6IGlzX3ByaXZhdGUgPT09IHRydWUgPyB0cnVlIDogKGlzX3VubGlzdGVkID8/IGZhbHNlKSxcbiAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IFwicGxhY2Vob2xkZXIgYWkgdXNhZ2UgaW5zdHJ1Y3Rpb25zXCIsXG4gICAgZGVmYXVsdF92aWV3OiBcImZpbGVzXCIsXG4gIH0pXG5cbiAgaWYgKCFuZXdQYWNrYWdlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIGNyZWF0ZSBwYWNrYWdlXCIpXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIHBhY2thZ2U6IHB1YmxpY01hcFBhY2thZ2UobmV3UGFja2FnZSksXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfaWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IHBhY2thZ2VJbmRleCA9IGN0eC5kYi5wYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZCxcbiAgKVxuXG4gIGlmIChwYWNrYWdlSW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzW3BhY2thZ2VJbmRleF1cblxuICBpZiAocGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSAhPT0gY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICBjdHguZGIucGFja2FnZXMuc3BsaWNlKHBhY2thZ2VJbmRleCwgMSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBwYWNrYWdlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZVwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIC8vIEFjY2VwdCBlaXRoZXIgcGFja2FnZV9pZCBvciBwYWNrYWdlX25hbWUgdG8gZmluZCB0aGUgcGFja2FnZSB0byBmb3JrXG4gICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIC8vIE9wdGlvbmFsIHBhcmFtZXRlcnMgdG8gY3VzdG9taXplIHRoZSBmb3JrZWQgcGFja2FnZVxuICAgICAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgICAgIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgIH0pXG4gICAgLnJlZmluZShcbiAgICAgIChkYXRhKSA9PlxuICAgICAgICBkYXRhLnBhY2thZ2VfaWQgIT09IHVuZGVmaW5lZCB8fCBkYXRhLnBhY2thZ2VfbmFtZSAhPT0gdW5kZWZpbmVkLFxuICAgICAge1xuICAgICAgICBtZXNzYWdlOiBcIkVpdGhlciBwYWNrYWdlX2lkIG9yIHBhY2thZ2VfbmFtZSBtdXN0IGJlIHByb3ZpZGVkXCIsXG4gICAgICB9LFxuICAgIClcbiAgICAudHJhbnNmb3JtKChkYXRhKSA9PiAoe1xuICAgICAgLi4uZGF0YSxcbiAgICAgIC8vIElmIHRoZSBwYWNrYWdlIGlzIHByaXZhdGUsIGl0IHNob3VsZCBiZSB1bmxpc3RlZFxuICAgICAgaXNfdW5saXN0ZWQ6IGRhdGEuaXNfcHJpdmF0ZSA/IHRydWUgOiBkYXRhLmlzX3VubGlzdGVkLFxuICAgIH0pKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZTogcGFja2FnZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX2lkLCBwYWNrYWdlX25hbWUsIGlzX3ByaXZhdGUsIGlzX3VubGlzdGVkIH0gPSByZXEuanNvbkJvZHlcblxuICAvLyBGaW5kIHRoZSBwYWNrYWdlIHRvIGZvcmtcbiAgbGV0IHNvdXJjZVBhY2thZ2UgPSBudWxsXG4gIGlmIChwYWNrYWdlX2lkKSB7XG4gICAgc291cmNlUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwa2cpID0+IHBrZy5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkKVxuICB9IGVsc2UgaWYgKHBhY2thZ2VfbmFtZSkge1xuICAgIHNvdXJjZVBhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cubmFtZSA9PT0gcGFja2FnZV9uYW1lKVxuICB9XG5cbiAgaWYgKCFzb3VyY2VQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiVGhlIHBhY2thZ2UgdG8gZm9yayB3YXMgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChzb3VyY2VQYWNrYWdlLmNyZWF0b3JfYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImNhbm5vdF9mb3JrX293bl9wYWNrYWdlXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBjYW5ub3QgZm9yayB5b3VyIG93biBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGZvcmsgYWxyZWFkeSBleGlzdHMgKHVzZXIgYWxyZWFkeSBoYXMgYSBwYWNrYWdlIHdpdGggdGhlIHNhbWUgbmFtZSlcbiAgY29uc3QgZm9ya05hbWUgPSBgJHtjdHguYXV0aC5naXRodWJfdXNlcm5hbWV9LyR7c291cmNlUGFja2FnZS51bnNjb3BlZF9uYW1lfWBcbiAgY29uc3QgZXhpc3RpbmdGb3JrID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHBrZykgPT5cbiAgICAgIHBrZy5jcmVhdG9yX2FjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgcGtnLm5hbWUgPT09IGZvcmtOYW1lLFxuICApXG5cbiAgaWYgKGV4aXN0aW5nRm9yaykge1xuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBwYWNrYWdlOiBwdWJsaWNNYXBQYWNrYWdlKGV4aXN0aW5nRm9yayksXG4gICAgfSlcbiAgfVxuXG4gIC8vIEZpbmQgdGhlIGxhdGVzdCByZWxlYXNlIG9mIHRoZSBzb3VyY2UgcGFja2FnZVxuICBjb25zdCBzb3VyY2VQYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocmVsZWFzZSkgPT5cbiAgICAgIHJlbGVhc2UucGFja2FnZV9pZCA9PT0gc291cmNlUGFja2FnZS5wYWNrYWdlX2lkICYmXG4gICAgICByZWxlYXNlLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgKVxuXG4gIGlmICghc291cmNlUGFja2FnZVJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzb3VyY2VfcGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJUaGUgc291cmNlIHBhY2thZ2UgZG9lcyBub3QgaGF2ZSBhbnkgcmVsZWFzZXMgdG8gZm9ya1wiLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgdGhlIGZpbGVzIGZyb20gdGhlIHNvdXJjZSBwYWNrYWdlIHJlbGVhc2VcbiAgY29uc3Qgc291cmNlRmlsZXMgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAoZmlsZSkgPT5cbiAgICAgIGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBzb3VyY2VQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gIClcblxuICBpZiAoc291cmNlRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic291cmNlX3BhY2thZ2VfZmlsZXNfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlRoZSBzb3VyY2UgcGFja2FnZSByZWxlYXNlIGRvZXMgbm90IGhhdmUgYW55IGZpbGVzIHRvIGZvcmtcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ3JlYXRlIHRoZSBmb3JrZWQgcGFja2FnZVxuICBjb25zdCBmb3JrZWRQYWNrYWdlID0gY3R4LmRiLmFkZFBhY2thZ2Uoe1xuICAgIG5hbWU6IGZvcmtOYW1lLFxuICAgIGRlc2NyaXB0aW9uOiBzb3VyY2VQYWNrYWdlLmRlc2NyaXB0aW9uLFxuICAgIGNyZWF0b3JfYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBvd25lcl9vcmdfaWQ6IGN0eC5hdXRoLnBlcnNvbmFsX29yZ19pZCxcbiAgICBvd25lcl9naXRodWJfdXNlcm5hbWU6IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSxcbiAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBudWxsLFxuICAgIGxhdGVzdF92ZXJzaW9uOiBudWxsLFxuICAgIGxpY2Vuc2U6IG51bGwsXG4gICAgd2Vic2l0ZTogbnVsbCxcbiAgICBpc19zb3VyY2VfZnJvbV9naXRodWI6IGZhbHNlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdW5zY29wZWRfbmFtZTogc291cmNlUGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgIHN0YXJfY291bnQ6IDAsXG4gICAgYWlfZGVzY3JpcHRpb246IHNvdXJjZVBhY2thZ2UuYWlfZGVzY3JpcHRpb24gfHwgXCJmb3JrZWQgcGFja2FnZVwiLFxuICAgIGlzX3ByaXZhdGU6IGlzX3ByaXZhdGUsXG4gICAgaXNfcHVibGljOiAhaXNfcHJpdmF0ZSxcbiAgICBpc191bmxpc3RlZCxcbiAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IFwiZm9ya2VkIHBhY2thZ2UgdXNhZ2VcIixcbiAgICBpc19ib2FyZDogQm9vbGVhbihzb3VyY2VQYWNrYWdlLmlzX2JvYXJkKSxcbiAgICBpc19wYWNrYWdlOiB0cnVlLFxuICAgIGlzX21vZGVsOiBCb29sZWFuKHNvdXJjZVBhY2thZ2UuaXNfbW9kZWwpLFxuICAgIGlzX2Zvb3RwcmludDogQm9vbGVhbihzb3VyY2VQYWNrYWdlLmlzX2Zvb3RwcmludCksXG4gICAgaXNfc25pcHBldDogQm9vbGVhbihzb3VyY2VQYWNrYWdlLmlzX3NuaXBwZXQpLFxuICB9KVxuXG4gIGlmICghZm9ya2VkUGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZhaWxlZF90b19jcmVhdGVfZm9ya2VkX3BhY2thZ2VcIixcbiAgICAgIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGNyZWF0ZSBmb3JrZWQgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDcmVhdGUgYSBuZXcgcGFja2FnZSByZWxlYXNlIGZvciB0aGUgZm9ya2VkIHBhY2thZ2VcbiAgY29uc3QgZm9ya2VkUGFja2FnZVJlbGVhc2UgPSBjdHguZGIuYWRkUGFja2FnZVJlbGVhc2Uoe1xuICAgIHBhY2thZ2VfaWQ6IGZvcmtlZFBhY2thZ2UucGFja2FnZV9pZCxcbiAgICB2ZXJzaW9uOiBzb3VyY2VQYWNrYWdlUmVsZWFzZS52ZXJzaW9uLFxuICAgIGlzX2xvY2tlZDogZmFsc2UsXG4gICAgaXNfbGF0ZXN0OiB0cnVlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBjb21taXRfc2hhOiBudWxsLFxuICAgIGxpY2Vuc2U6IHNvdXJjZVBhY2thZ2VSZWxlYXNlLmxpY2Vuc2UgfHwgbnVsbCxcbiAgICAvLyBTZXR0aW5nIHRoZSB0cmFuc3BpbGVkIGFzIHRydWUgb24gY3JlYXRpb25cbiAgICBoYXNfdHJhbnNwaWxlZDogdHJ1ZSxcbiAgICB0cmFuc3BpbGF0aW9uX2Vycm9yOiBudWxsLFxuICB9KVxuXG4gIC8vIFVwZGF0ZSB0aGUgZm9ya2VkIHBhY2thZ2Ugd2l0aCByZWxlYXNlIGluZm9cbiAgZm9ya2VkUGFja2FnZS5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkID1cbiAgICBmb3JrZWRQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgZm9ya2VkUGFja2FnZS5sYXRlc3RfdmVyc2lvbiA9IGZvcmtlZFBhY2thZ2VSZWxlYXNlLnZlcnNpb24gfHwgbnVsbFxuXG4gIC8vIENvcHkgYWxsIGZpbGVzIGZyb20gdGhlIHNvdXJjZSBwYWNrYWdlIHJlbGVhc2UgdG8gdGhlIGZvcmtlZCBwYWNrYWdlIHJlbGVhc2VcbiAgZm9yIChjb25zdCBzb3VyY2VGaWxlIG9mIHNvdXJjZUZpbGVzKSB7XG4gICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogZm9ya2VkUGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgZmlsZV9wYXRoOiBzb3VyY2VGaWxlLmZpbGVfcGF0aCxcbiAgICAgIGNvbnRlbnRfdGV4dDogc291cmNlRmlsZS5jb250ZW50X3RleHQsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgcGFja2FnZTogcHVibGljTWFwUGFja2FnZShmb3JrZWRQYWNrYWdlKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQge1xuICBmZXRjaEVhc3lFREFDb21wb25lbnQsXG4gIGNvbnZlcnRSYXdFYXN5RWRhVG9UcyxcbiAgbm9ybWFsaXplTWFudWZhY3R1cmVyUGFydE51bWJlcixcbiAgRWFzeUVkYUpzb25TY2hlbWEsXG59IGZyb20gXCJlYXN5ZWRhXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIGpsY3BjYl9wYXJ0X251bWJlcjogei5zdHJpbmcoKS5taW4oMSwgXCJKTENQQ0IgcGFydCBudW1iZXIgaXMgcmVxdWlyZWRcIiksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZTogcGFja2FnZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBqbGNwY2JfcGFydF9udW1iZXIgfSA9IHJlcS5qc29uQm9keVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmF3RWFzeUpzb24gPSBhd2FpdCBmZXRjaEVhc3lFREFDb21wb25lbnQoamxjcGNiX3BhcnRfbnVtYmVyKVxuXG4gICAgaWYgKCFyYXdFYXN5SnNvbikge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJjb21wb25lbnRfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IGBDb21wb25lbnQgd2l0aCBKTENQQ0IgcGFydCBudW1iZXIgJHtqbGNwY2JfcGFydF9udW1iZXJ9IG5vdCBmb3VuZGAsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IGJldHRlckVhc3kgPSBhd2FpdCBFYXN5RWRhSnNvblNjaGVtYS5wYXJzZShyYXdFYXN5SnNvbilcblxuICAgIGNvbnN0IHRzeENvbXBvbmVudCA9IGF3YWl0IGNvbnZlcnRSYXdFYXN5RWRhVG9UcyhyYXdFYXN5SnNvbilcblxuICAgIGNvbnN0IGNvbXBvbmVudE5hbWUgPSBub3JtYWxpemVNYW51ZmFjdHVyZXJQYXJ0TnVtYmVyKFxuICAgICAgYmV0dGVyRWFzeS5kYXRhU3RyLmhlYWQuY19wYXJhW1wiTWFudWZhY3R1cmVyIFBhcnRcIl0gPz8gXCJcIixcbiAgICApXG4gICAgICAucmVwbGFjZSgvW15hLXpBLVowLTktX10vZywgXCItXCIpXG4gICAgICAucmVwbGFjZSgvLS0vZywgXCItXCIpXG5cbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IGAke2N0eC5hdXRoLmdpdGh1Yl91c2VybmFtZX0vJHtjb21wb25lbnROYW1lfWBcblxuICAgIGNvbnN0IGV4aXN0aW5nUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VOYW1lKVxuXG4gICAgaWYgKGV4aXN0aW5nUGFja2FnZSkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDksIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX2FscmVhZHlfZXhpc3RzXCIsXG4gICAgICAgIG1lc3NhZ2U6IGNvbXBvbmVudE5hbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IG5ld1BhY2thZ2UgPSB7XG4gICAgICBuYW1lOiBwYWNrYWdlTmFtZSxcbiAgICAgIHVuc2NvcGVkX25hbWU6IGNvbXBvbmVudE5hbWUsXG4gICAgICBvd25lcl9uYW1lOiBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUsXG4gICAgICBjb2RlOiB0c3hDb21wb25lbnQsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBkZXNjcmlwdGlvbjogYEdlbmVyYXRlZCBmcm9tIEpMQ1BDQiBwYXJ0IG51bWJlciAke2psY3BjYl9wYXJ0X251bWJlcn1gLFxuICAgICAgY3JlYXRvcl9hY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgb3duZXJfb3JnX2lkOiBjdHguYXV0aC5wZXJzb25hbF9vcmdfaWQsXG4gICAgICBvd25lcl9naXRodWJfdXNlcm5hbWU6IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSxcbiAgICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG51bGwsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2ZzX3NoYTogbnVsbCxcbiAgICAgIGxhdGVzdF92ZXJzaW9uOiBudWxsLFxuICAgICAgbGljZW5zZTogbnVsbCxcbiAgICAgIGFpX2Rlc2NyaXB0aW9uOiBcInBsYWNlaG9sZGVyIGFpIGRlc2NyaXB0aW9uXCIsXG4gICAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IFwicGxhY2Vob2xkZXIgYWkgdXNhZ2UgaW5zdHJ1Y3Rpb25zXCIsXG4gICAgfVxuXG4gICAgY29uc3QgY3JlYXRlZFBhY2thZ2UgPSBjdHguZGIuYWRkUGFja2FnZShuZXdQYWNrYWdlKVxuXG4gICAgY29uc3QgY3JlYXRlZFBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICAgIHBhY2thZ2VfaWQ6IGNyZWF0ZWRQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBpc19sYXRlc3Q6IHRydWUsXG4gICAgICBpc19sb2NrZWQ6IGZhbHNlLFxuICAgIH0pXG5cbiAgICBjdHguZGIudXBkYXRlUGFja2FnZShjcmVhdGVkUGFja2FnZS5wYWNrYWdlX2lkLCB7XG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBjcmVhdGVkUGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIH0pXG5cbiAgICBjdHguZGIuYWRkUGFja2FnZUZpbGUoe1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBjcmVhdGVkUGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgZmlsZV9wYXRoOiBcImluZGV4LnRzeFwiLFxuICAgICAgY29udGVudF90ZXh0OiBTdHJpbmcodHN4Q29tcG9uZW50KSxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9KVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgcGFja2FnZTogY3JlYXRlZFBhY2thZ2UgYXMgYW55LFxuICAgIH0pXG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICBpZiAoU3RyaW5nKGVycm9yKS5pbmNsdWRlcyhcIkNvbXBvbmVudCBub3QgZm91bmRcIikpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwiY29tcG9uZW50X25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBgQ29tcG9uZW50IHdpdGggSkxDUENCIHBhcnQgbnVtYmVyICR7amxjcGNiX3BhcnRfbnVtYmVyfSBub3QgZm91bmRgLFxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9nZW5lcmF0aW9uX2ZhaWxlZFwiLFxuICAgICAgbWVzc2FnZTogYEZhaWxlZCB0byBnZW5lcmF0ZSBwYWNrYWdlIGZyb20gSkxDUENCIHBhcnQ6ICR7ZXJyb3IubWVzc2FnZSB8fCBTdHJpbmcoZXJyb3IpfWAsXG4gICAgfSlcbiAgfVxufSlcbiIsICJpbXBvcnQgeyBwYWNrYWdlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZVwiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcIm9wdGlvbmFsX3Nlc3Npb25cIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25Cb2R5OiB6LmFueSgpLm9wdGlvbmFsKCksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlOiBwYWNrYWdlU2NoZW1hXG4gICAgICAuZXh0ZW5kKHtcbiAgICAgICAgaXNfc3RhcnJlZDogei5ib29sZWFuKCksXG4gICAgICB9KVxuICAgICAgLm9wdGlvbmFsKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9pZCwgbmFtZSB9ID0gcmVxLmNvbW1vblBhcmFtc1xuICBjb25zdCBhdXRoID0gXCJhdXRoXCIgaW4gY3R4ICYmIGN0eC5hdXRoID8gY3R4LmF1dGggOiBudWxsXG5cbiAgY29uc3QgZm91bmRQYWNrYWdlID1cbiAgICAocGFja2FnZV9pZCAmJiBjdHguZGIuZ2V0UGFja2FnZUJ5SWQocGFja2FnZV9pZCkpIHx8XG4gICAgY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gbmFtZSlcblxuICBpZiAoIWZvdW5kUGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBgUGFja2FnZSBub3QgZm91bmQgKHNlYXJjaGVkIHVzaW5nICR7SlNPTi5zdHJpbmdpZnkocmVxLmNvbW1vblBhcmFtcyl9KWAsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChcbiAgICBmb3VuZFBhY2thZ2UuaXNfcHJpdmF0ZSAmJlxuICAgIGF1dGg/LmdpdGh1Yl91c2VybmFtZSAhPT0gZm91bmRQYWNrYWdlLm93bmVyX2dpdGh1Yl91c2VybmFtZVxuICApIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogYFBhY2thZ2Ugbm90IGZvdW5kIChzZWFyY2hlZCB1c2luZyAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICByZXEuY29tbW9uUGFyYW1zLFxuICAgICAgKX0pYCxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlOiB7XG4gICAgICAuLi5wdWJsaWNNYXBQYWNrYWdlKGZvdW5kUGFja2FnZSksXG4gICAgICBpc19zdGFycmVkOiBhdXRoXG4gICAgICAgID8gY3R4LmRiLmhhc1N0YXJyZWQoYXV0aC5hY2NvdW50X2lkLCBmb3VuZFBhY2thZ2UucGFja2FnZV9pZClcbiAgICAgICAgOiBmYWxzZSxcbiAgICB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBBbnlDaXJjdWl0RWxlbWVudCB9IGZyb20gXCJjaXJjdWl0LWpzb25cIlxuaW1wb3J0IHtcbiAgY29udmVydENpcmN1aXRKc29uVG9Bc3NlbWJseVN2ZyxcbiAgY29udmVydENpcmN1aXRKc29uVG9QY2JTdmcsXG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnLFxufSBmcm9tIFwiY2lyY3VpdC10by1zdmdcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuLy8gRGVmaW5lIHRoZSB2aWV3IHR5cGVzIGFuZCBleHRlbnNpb25zXG5jb25zdCBWSUVXX1RZUEVTID0gW1wic2NoZW1hdGljXCIsIFwicGNiXCIsIFwiYXNzZW1ibHlcIiwgXCIzZFwiXSBhcyBjb25zdFxuY29uc3QgRVhURU5TSU9OUyA9IFtcInN2Z1wiLCBcInBuZ1wiXSBhcyBjb25zdFxuXG4vLyBDcmVhdGUgYSByZWdleCBwYXR0ZXJuIGZvciB0aGUgdmlldyBmb3JtYXQgdGhhdCBpbmNsdWRlcyBvcHRpb25hbCB3aWR0aCBzdWZmaXhcbmNvbnN0IHZpZXdGb3JtYXRQYXR0ZXJuID0gbmV3IFJlZ0V4cChcbiAgYF4oJHtWSUVXX1RZUEVTLmpvaW4oXCJ8XCIpfSktPyhcXFxcZCt3KT9cXFxcLigke0VYVEVOU0lPTlMuam9pbihcInxcIil9KSRgLFxuKVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgcm91dGVQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvd25lcl9naXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCksXG4gICAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKSxcbiAgICB2aWV3X2Zvcm1hdDogei5zdHJpbmcoKS5yZWdleCh2aWV3Rm9ybWF0UGF0dGVybiwge1xuICAgICAgbWVzc2FnZTogYEludmFsaWQgdmlldyBmb3JtYXQuIE11c3QgYmUgb25lIG9mOiAke1ZJRVdfVFlQRVMuam9pbihcIiwgXCIpfSB3aXRoIG9wdGlvbmFsIHdpZHRoIHN1ZmZpeCAoZS5nLiAtODAwdykuJHtFWFRFTlNJT05TLmpvaW4oXCIgb3IgXCIpfWAsXG4gICAgfSksXG4gIH0pLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIGZzX3NoYTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAgcmF3UmVzcG9uc2U6IHRydWUsXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvd25lcl9naXRodWJfdXNlcm5hbWUsIHVuc2NvcGVkX25hbWUsIHZpZXdfZm9ybWF0IH0gPSByZXEucm91dGVQYXJhbXNcbiAgY29uc3QgeyBmc19zaGEgfSA9IHJlcS5xdWVyeVxuXG4gIC8vIFBhcnNlIHRoZSB2aWV3IGZvcm1hdFxuICBjb25zdCBbb3V0cHV0VHlwZSwgZm9ybWF0XSA9IHZpZXdfZm9ybWF0LnNwbGl0KFwiLlwiKVxuXG4gIC8vIEdldCB0aGUgcGFja2FnZVxuICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocCkgPT5cbiAgICAgIHAub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBvd25lcl9naXRodWJfdXNlcm5hbWUgJiZcbiAgICAgIHAudW5zY29wZWRfbmFtZSA9PT0gdW5zY29wZWRfbmFtZSxcbiAgKVxuXG4gIC8vIElmIHBhY2thZ2UgaXMgbm90IGZvdW5kLCByZXR1cm4gNDA0XG4gIGlmICghcGtnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2UgZm9yIHRoZSBnaXZlbiBoYXNoIHZhbHVlXG4gIGNvbnN0IHBrZ19yZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIuZnNfc2hhID09PSBmc19zaGEsXG4gIClcblxuICBpZiAoIXBrZ19yZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEdldCB0aGUgY2lyY3VpdCBKU09OIGZyb20gdGhlIHBhY2thZ2UgZmlsZXNcbiAgY29uc3QgY2lyY3VpdF9qc29uX2ZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKHBmKSA9PlxuICAgICAgcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwa2dfcmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgIHBmLmZpbGVfcGF0aCA9PT0gXCJjaXJjdWl0Lmpzb25cIixcbiAgKVxuXG4gIGlmICghY2lyY3VpdF9qc29uX2ZpbGU/LmNvbnRlbnRfdGV4dCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImNpcmN1aXRfanNvbl9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQ2lyY3VpdCBKU09OIG5vdCBmb3VuZCBmb3IgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjaXJjdWl0X2pzb24gPSBKU09OLnBhcnNlKGNpcmN1aXRfanNvbl9maWxlLmNvbnRlbnRfdGV4dClcblxuICAvLyBDb252ZXJ0IGNpcmN1aXQganNvbiB0byBzdmdcbiAgbGV0IHN2ZyA9IFwiXCJcblxuICBpZiAob3V0cHV0VHlwZSA9PT0gXCJzY2hlbWF0aWNcIikge1xuICAgIHN2ZyA9IGNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnKGNpcmN1aXRfanNvbiBhcyBBbnlDaXJjdWl0RWxlbWVudFtdKVxuICB9IGVsc2UgaWYgKG91dHB1dFR5cGUgPT09IFwicGNiXCIpIHtcbiAgICBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyhjaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXSlcbiAgfSBlbHNlIGlmIChvdXRwdXRUeXBlID09PSBcImFzc2VtYmx5XCIpIHtcbiAgICBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub0Fzc2VtYmx5U3ZnKGNpcmN1aXRfanNvbiBhcyBBbnlDaXJjdWl0RWxlbWVudFtdKVxuICB9IGVsc2UgaWYgKG91dHB1dFR5cGUgPT09IFwiM2RcIikge1xuICAgIC8vIEZvciAzRCB2aWV3LCB3ZSdsbCByZXR1cm4gYSBzaW1wbGUgU1ZHIHBsYWNlaG9sZGVyXG4gICAgc3ZnID0gYDxzdmcgd2lkdGg9XCI0MDBcIiBoZWlnaHQ9XCIzMDBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICA8cmVjdCB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgZmlsbD1cIiNmMGYwZjBcIi8+XG4gICAgICA8dGV4dCB4PVwiNTAlXCIgeT1cIjUwJVwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgZmlsbD1cIiM2NjZcIj4zRCBQcmV2aWV3PC90ZXh0PlxuICAgIDwvc3ZnPmBcbiAgfVxuXG4gIGlmIChmb3JtYXQgPT09IFwic3ZnXCIpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKHN2Zywge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImltYWdlL3N2Zyt4bWxcIixcbiAgICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwicHVibGljLCBtYXgtYWdlPTg2NDAwLCBzLW1heGFnZT04NjQwMFwiLFxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgLy8gRm9yIFBORyBmb3JtYXQsIHdlJ2xsIHJldHVybiB0aGUgU1ZHIGFzIFBOR1xuICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoaXMgd291bGQgdXNlIEByZXN2Zy9yZXN2Zy1qc1xuICByZXR1cm4gbmV3IFJlc3BvbnNlKHN2Zywge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiaW1hZ2UvcG5nXCIsXG4gICAgICBcIkNhY2hlLUNvbnRyb2xcIjogXCJwdWJsaWMsIG1heC1hZ2U9ODY0MDAsIHMtbWF4YWdlPTg2NDAwXCIsXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2VcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBsaW1pdDogei5zdHJpbmcoKS5yZWdleCgvXlxcZCskLykudHJhbnNmb3JtKE51bWJlcikub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VzOiB6LmFycmF5KHBhY2thZ2VTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBsaW1pdCA9IHJlcS5xdWVyeS5saW1pdCB8fCA1MFxuXG4gIC8vIEdldCBhbGwgcGFja2FnZXMgdGhhdCBhcmUgbm90IHNuaXBwZXRzXG4gIGNvbnN0IHBhY2thZ2VzID0gY3R4LmRiLnBhY2thZ2VzXG4gICAgLmZpbHRlcigocGtnKSA9PiAhcGtnLmlzX3NuaXBwZXQpXG4gICAgLnNvcnQoXG4gICAgICAoYSwgYikgPT5cbiAgICAgICAgbmV3IERhdGUoYi5jcmVhdGVkX2F0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSxcbiAgICApXG4gICAgLnNsaWNlKDAsIGxpbWl0KVxuICAgIC5tYXAoKHBrZykgPT4gcHVibGljTWFwUGFja2FnZShwa2cpKVxuXG4gIHJldHVybiBjdHguanNvbih7IHBhY2thZ2VzIH0pXG59KVxuIiwgImltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe30pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZXM6IHouYXJyYXkocGFja2FnZVNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIC8vIEdldCBhbGwgcGFja2FnZXMgYW5kIHRoZWlyIHN0YXIgY291bnRzXG4gIGNvbnN0IHBhY2thZ2VzV2l0aFN0YXJzID0gY3R4LmRiLnBhY2thZ2VzLm1hcCgocGtnKSA9PiB7XG4gICAgY29uc3Qgc3RhckNvdW50ID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgKS5sZW5ndGhcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5wa2csXG4gICAgICBzdGFyX2NvdW50OiBzdGFyQ291bnQsXG4gICAgfVxuICB9KVxuXG4gIC8vIEZpbHRlciBvdXQgcGFja2FnZXMgd2l0aCBubyBzdGFycyBhbmQgc29ydCBieSBzdGFyIGNvdW50XG4gIGNvbnN0IHRyZW5kaW5nUGFja2FnZXMgPSBjdHguZGIucGFja2FnZXNcbiAgICAuZmlsdGVyKChwKSA9PiBwLnN0YXJfY291bnQgPiAwKVxuICAgIC5zb3J0KChhLCBiKSA9PiBiLnN0YXJfY291bnQgLSBhLnN0YXJfY291bnQpXG4gICAgLnNsaWNlKDAsIDUwKVxuXG4gIC8vIFJhbmRvbWl6ZSB0aGUgb3JkZXIgb2YgdGhlIHBhY2thZ2VzLCB0aGVuIHBpY2sgdGhlIGZpcnN0IDEwXG4gIGNvbnN0IHJhbmRvbWl6ZWRQYWNrYWdlcyA9IHRyZW5kaW5nUGFja2FnZXMuc29ydCgoKSA9PiBNYXRoLnJhbmRvbSgpIC0gMC41KVxuICBjb25zdCBzZWxlY3RlZFBhY2thZ2VzID0gcmFuZG9taXplZFBhY2thZ2VzLnNsaWNlKDAsIDEwKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZXM6IHNlbGVjdGVkUGFja2FnZXMubWFwKChwKSA9PiAoe1xuICAgICAgLi4ucCxcbiAgICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IHAubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBudWxsLFxuICAgIH0pKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcIm9wdGlvbmFsX3Nlc3Npb25cIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgY3JlYXRvcl9hY2NvdW50X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaXNfd3JpdGFibGU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2VzOiB6LmFycmF5KHBhY2thZ2VTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGNyZWF0b3JfYWNjb3VudF9pZCwgb3duZXJfZ2l0aHViX3VzZXJuYW1lLCBuYW1lLCBpc193cml0YWJsZSB9ID1cbiAgICByZXEuY29tbW9uUGFyYW1zXG5cbiAgY29uc3QgYXV0aCA9IFwiYXV0aFwiIGluIGN0eCAmJiBjdHguYXV0aCA/IGN0eC5hdXRoIDogbnVsbFxuXG4gIGlmICghYXV0aCAmJiAhaXNfd3JpdGFibGUgJiYgIWNyZWF0b3JfYWNjb3VudF9pZCAmJiAhb3duZXJfZ2l0aHViX3VzZXJuYW1lKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9yZXF1ZXN0XCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBtdXN0IHByb3ZpZGUgc29tZSBmaWx0ZXJpbmcgcGFyYW1ldGVycyBvciBiZSBsb2dnZWQgaW5cIixcbiAgICB9KVxuICB9XG5cbiAgbGV0IHBhY2thZ2VzID0gY3R4LmRiLnBhY2thZ2VzXG5cbiAgLy8gQXBwbHkgZmlsdGVyc1xuICBpZiAoY3JlYXRvcl9hY2NvdW50X2lkKSB7XG4gICAgcGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocCkgPT4gcC5jcmVhdG9yX2FjY291bnRfaWQgPT09IGNyZWF0b3JfYWNjb3VudF9pZCxcbiAgICApXG4gIH1cbiAgaWYgKG93bmVyX2dpdGh1Yl91c2VybmFtZSkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHApID0+IHAub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBvd25lcl9naXRodWJfdXNlcm5hbWUsXG4gICAgKVxuICB9XG4gIGlmIChuYW1lKSB7XG4gICAgcGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIoKHApID0+IHAubmFtZSA9PT0gbmFtZSlcbiAgfVxuXG4gIGlmIChpc193cml0YWJsZSAmJiBhdXRoKSB7XG4gICAgcGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIoKHApID0+IHAub3duZXJfb3JnX2lkID09PSBhdXRoLnBlcnNvbmFsX29yZ19pZClcbiAgfVxuXG4gIC8vIEdldCBzdGFyIHRpbWVzdGFtcHMgZm9yIGF1dGhlbnRpY2F0ZWQgdXNlclxuICBjb25zdCBzdGFyVGltZXN0YW1wcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KClcbiAgaWYgKGF1dGgpIHtcbiAgICBjdHguZGIuYWNjb3VudFBhY2thZ2VzXG4gICAgICAuZmlsdGVyKChhcCkgPT4gYXAuYWNjb3VudF9pZCA9PT0gYXV0aC5hY2NvdW50X2lkICYmIGFwLmlzX3N0YXJyZWQpXG4gICAgICAuZm9yRWFjaCgoYXApID0+IHtcbiAgICAgICAgc3RhclRpbWVzdGFtcHMuc2V0KGFwLnBhY2thZ2VfaWQsIGFwLnVwZGF0ZWRfYXQpXG4gICAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlczogcGFja2FnZXMubWFwKChwKSA9PiAoe1xuICAgICAgLi4ucCxcbiAgICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IHAubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBudWxsLFxuICAgICAgc3RhcnJlZF9hdDogc3RhclRpbWVzdGFtcHMuZ2V0KHAucGFja2FnZV9pZCkgfHwgbnVsbCxcbiAgICB9KSksXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAub3Ioei5vYmplY3QoeyBuYW1lOiB6LnN0cmluZygpIH0pKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQgcGFja2FnZUlkOiBzdHJpbmdcblxuICAvLyBHZXQgcGFja2FnZSBJRCBlaXRoZXIgZGlyZWN0bHkgb3IgYnkgbmFtZVxuICBpZiAoXCJwYWNrYWdlX2lkXCIgaW4gcmVxLmpzb25Cb2R5KSB7XG4gICAgY29uc3QgYm9keSA9IHJlcS5qc29uQm9keVxuICAgIHBhY2thZ2VJZCA9IGJvZHkucGFja2FnZV9pZFxuICB9IGVsc2Uge1xuICAgIC8vIElmIG5hbWUgaXMgcHJvdmlkZWQsIGxvb2sgdXAgdGhlIHBhY2thZ2VfaWRcbiAgICBjb25zdCBib2R5ID0gcmVxLmpzb25Cb2R5XG4gICAgY29uc3QgcGFja2FnZURhdGEgPSBjdHguZGIucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cubmFtZSA9PT0gYm9keS5uYW1lKVxuXG4gICAgaWYgKCFwYWNrYWdlRGF0YSkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHBhY2thZ2VJZCA9IHBhY2thZ2VEYXRhLnBhY2thZ2VfaWRcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHBhY2thZ2UgZXhpc3RzIChleHRyYSBjaGVjayBmb3IgSUQtYmFzZWQgbG9va3VwKVxuICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQpXG5cbiAgaWYgKCFwa2cpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBhbHJlYWR5IHN0YXJyZWRcbiAgY29uc3QgZXhpc3RpbmcgPSBjdHguZGIuYWNjb3VudFBhY2thZ2VzLmZpbmQoXG4gICAgKGFwKSA9PlxuICAgICAgYXAuYWNjb3VudF9pZCA9PT0gY3R4LmF1dGguYWNjb3VudF9pZCAmJiBhcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQsXG4gIClcblxuICBpZiAoIWV4aXN0aW5nPy5pc19zdGFycmVkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibm90X3N0YXJyZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGhhdmUgbm90IHN0YXJyZWQgdGhpcyBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFVwZGF0ZSB0aGUgcGFja2FnZSdzIHN0YXIgY291bnRcbiAgcGtnLnN0YXJfY291bnQgPSBNYXRoLm1heCgwLCAocGtnLnN0YXJfY291bnQgfHwgMCkgLSAxKVxuXG4gIC8vIFJlbW92ZSBzdGFyIGJ5IHVwZGF0aW5nIGlzX3N0YXJyZWQgdG8gZmFsc2VcbiAgZXhpc3RpbmcuaXNfc3RhcnJlZCA9IGZhbHNlXG4gIGV4aXN0aW5nLnVwZGF0ZWRfYXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHF1ZXJ5OiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2VzOiB6LmFycmF5KHBhY2thZ2VTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHF1ZXJ5IH0gPSByZXEuanNvbkJvZHlcbiAgY29uc3QgcGFja2FnZXMgPSBjdHguZGIuc2VhcmNoUGFja2FnZXMocXVlcnkpXG4gIHJldHVybiBjdHguanNvbih7IHBhY2thZ2VzLCBvazogdHJ1ZSB9KVxufSlcbiIsICJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBwYWNrYWdlU2NoZW1hIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCIuLi8uLi8uLi9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgICAgIG5hbWU6IHpcbiAgICAgICAgLnN0cmluZygpXG4gICAgICAgIC5yZWdleChcbiAgICAgICAgICAvXltAYS16QS1aMC05LV9cXC9dKyQvLFxuICAgICAgICAgIFwiUGFja2FnZSBuYW1lIGNhbiBvbmx5IGNvbnRhaW4gbGV0dGVycywgbnVtYmVycywgaHlwaGVucywgdW5kZXJzY29yZXMsIGFuZCBmb3J3YXJkIHNsYXNoZXNcIixcbiAgICAgICAgKVxuICAgICAgICAudHJhbnNmb3JtKChuYW1lKSA9PiBuYW1lLnJlcGxhY2UoL15ALywgXCJcIikpXG4gICAgICAgIC5vcHRpb25hbCgpLFxuICAgICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHdlYnNpdGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gICAgICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgICBkZWZhdWx0X3ZpZXc6IHouZW51bShbXCJmaWxlc1wiLCBcIjNkXCIsIFwicGNiXCIsIFwic2NoZW1hdGljXCJdKS5vcHRpb25hbCgpLFxuICAgICAgYWxsb3dfcHJfcHJldmlld3M6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAudHJhbnNmb3JtKChkYXRhKSA9PiAoe1xuICAgICAgLi4uZGF0YSxcbiAgICAgIGlzX3VubGlzdGVkOiBkYXRhLmlzX3ByaXZhdGUgPyB0cnVlIDogZGF0YS5pc191bmxpc3RlZCxcbiAgICB9KSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlOiBwYWNrYWdlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgcGFja2FnZV9pZCxcbiAgICBuYW1lLFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIHdlYnNpdGUsXG4gICAgaXNfcHJpdmF0ZSxcbiAgICBpc191bmxpc3RlZCxcbiAgICBnaXRodWJfcmVwb19mdWxsX25hbWUsXG4gICAgZGVmYXVsdF92aWV3LFxuICAgIGFsbG93X3ByX3ByZXZpZXdzLFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgcGFja2FnZUluZGV4ID0gY3R4LmRiLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkLFxuICApXG5cbiAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBleGlzdGluZ1BhY2thZ2UgPSBjdHguZGIucGFja2FnZXNbcGFja2FnZUluZGV4XVxuXG4gIC8vIENoZWNrIGlmIHVzZXIgaGFzIHBlcm1pc3Npb24gdG8gdXBkYXRlIHRoZSBwYWNrYWdlXG4gIGlmIChleGlzdGluZ1BhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lICE9PSBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB1cGRhdGUgdGhpcyBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGZvciBkdXBsaWNhdGUgcGFja2FnZSBuYW1lIGlmIG5hbWUgaXMgYmVpbmcgdXBkYXRlZFxuICBpZiAobmFtZSkge1xuICAgIGNvbnN0IG5ld0Z1bGxOYW1lID0gYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke25hbWV9YFxuICAgIGNvbnN0IGR1cGxpY2F0ZVBhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAgIChwKSA9PiBwLm5hbWUgPT09IG5ld0Z1bGxOYW1lICYmIHAucGFja2FnZV9pZCAhPT0gcGFja2FnZV9pZCxcbiAgICApXG4gICAgaWYgKGR1cGxpY2F0ZVBhY2thZ2UpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9hbHJlYWR5X2V4aXN0c1wiLFxuICAgICAgICBtZXNzYWdlOiBcIkEgcGFja2FnZSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0c1wiLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCB1cGRhdGVkUGFja2FnZSA9IGN0eC5kYi51cGRhdGVQYWNrYWdlKHBhY2thZ2VfaWQsIHtcbiAgICBuYW1lOiBuYW1lID8gYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke25hbWV9YCA6IGV4aXN0aW5nUGFja2FnZS5uYW1lLFxuICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiA/PyBleGlzdGluZ1BhY2thZ2UuZGVzY3JpcHRpb24sXG4gICAgdW5zY29wZWRfbmFtZTogbmFtZSA/PyBleGlzdGluZ1BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICB3ZWJzaXRlOiB3ZWJzaXRlID8/IGV4aXN0aW5nUGFja2FnZS53ZWJzaXRlLFxuICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZTpcbiAgICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZSA9PT0gbnVsbFxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiAoZ2l0aHViX3JlcG9fZnVsbF9uYW1lID8/IGV4aXN0aW5nUGFja2FnZS5naXRodWJfcmVwb19mdWxsX25hbWUpLFxuICAgIGlzX3ByaXZhdGU6IGlzX3ByaXZhdGUgPz8gZXhpc3RpbmdQYWNrYWdlLmlzX3ByaXZhdGUsXG4gICAgaXNfcHVibGljOlxuICAgICAgaXNfcHJpdmF0ZSAhPT0gdW5kZWZpbmVkID8gIWlzX3ByaXZhdGUgOiBleGlzdGluZ1BhY2thZ2UuaXNfcHVibGljLFxuICAgIGlzX3VubGlzdGVkOiBpc191bmxpc3RlZCA/PyBleGlzdGluZ1BhY2thZ2UuaXNfdW5saXN0ZWQsXG4gICAgZGVmYXVsdF92aWV3OiBkZWZhdWx0X3ZpZXcgPz8gZXhpc3RpbmdQYWNrYWdlLmRlZmF1bHRfdmlldyxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgYWxsb3dfcHJfcHJldmlld3M6IGFsbG93X3ByX3ByZXZpZXdzID8/IGV4aXN0aW5nUGFja2FnZS5hbGxvd19wcl9wcmV2aWV3cyxcbiAgfSlcblxuICBpZiAoIXVwZGF0ZWRQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwidXBkYXRlX2ZhaWxlZFwiLFxuICAgICAgbWVzc2FnZTogXCJGYWlsZWQgdG8gdXBkYXRlIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlOiB1cGRhdGVkUGFja2FnZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3QgUFJPWFlfSEVBREVSUyA9IFtcbiAgXCJYLVRhcmdldC1VcmxcIixcbiAgXCJYLVNlbmRlci1PcmlnaW5cIixcbiAgXCJYLVNlbmRlci1Ib3N0XCIsXG4gIFwiWC1TZW5kZXItUmVmZXJlclwiLFxuICBcIlgtU2VuZGVyLVVzZXItQWdlbnRcIixcbiAgXCJYLVNlbmRlci1Db29raWVcIixcbl1cblxuY29uc3QgQUxMT1dFRF9ET01BSU5TOiBBcnJheTx7IGRvbWFpbjogc3RyaW5nOyByb3V0ZXM/OiBzdHJpbmdbXSB9PiA9IFtcbiAgeyBkb21haW46IFwiZWFzeWVkYS5jb21cIiB9LFxuXVxuXG5mdW5jdGlvbiBpc0FsbG93ZWREb21haW4odXJsOiBzdHJpbmcpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7IGhvc3RuYW1lLCBwYXRobmFtZSwgcG9ydCB9ID0gbmV3IFVSTCh1cmwpXG4gICAgY29uc3QgYWxsb3dlZERvbWFpbiA9IEFMTE9XRURfRE9NQUlOUy5maW5kKFxuICAgICAgKGRvbWFpbikgPT4gZG9tYWluLmRvbWFpbiA9PT0gaG9zdG5hbWUsXG4gICAgKVxuXG4gICAgaWYgKGFsbG93ZWREb21haW4pIHtcbiAgICAgIGlmIChcbiAgICAgICAgIWFsbG93ZWREb21haW4ucm91dGVzIHx8XG4gICAgICAgIGFsbG93ZWREb21haW4ucm91dGVzLnNvbWUoKHJvdXRlKSA9PiBwYXRobmFtZS5zdGFydHNXaXRoKHJvdXRlKSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBob3N0bmFtZSA9PT0gXCJsb2NhbGhvc3RcIiB8fCAoaG9zdG5hbWUgPT09IFwiMTI3LjAuMC4xXCIgJiYgcG9ydClcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIiwgXCJQVVRcIiwgXCJERUxFVEVcIiwgXCJQQVRDSFwiLCBcIkhFQURcIiwgXCJPUFRJT05TXCJdLFxuICBqc29uUmVzcG9uc2U6IHouYW55KCksXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGlmIChyZXEuaGVhZGVycy5nZXQoXCJYLXByb3hpZWRcIikpIHtcbiAgICByZXR1cm4gY3R4Lmpzb24oXG4gICAgICB7IGVycm9yOiBcIlJlY3Vyc2l2ZSBwcm94eSBjYWxscyBhcmUgbm90IGFsbG93ZWRcIiB9LFxuICAgICAgeyBzdGF0dXM6IDQwMyB9LFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IHRhcmdldFVybCA9IHJlcS5oZWFkZXJzLmdldChcIlgtVGFyZ2V0LVVybFwiKVxuXG4gIGlmICghdGFyZ2V0VXJsKSB7XG4gICAgcmV0dXJuIGN0eC5qc29uKFxuICAgICAgeyBlcnJvcjogXCJYLVRhcmdldC1VcmwgaGVhZGVyIGlzIHJlcXVpcmVkXCIgfSxcbiAgICAgIHsgc3RhdHVzOiA0MDAgfSxcbiAgICApXG4gIH1cblxuICBpZiAoIWlzQWxsb3dlZERvbWFpbih0YXJnZXRVcmwpKSB7XG4gICAgcmV0dXJuIGN0eC5qc29uKHsgZXJyb3I6IFwiRG9tYWluIG5vdCBhbGxvd2VkXCIgfSwgeyBzdGF0dXM6IDQwMyB9KVxuICB9XG5cbiAgbGV0IGJvZHk6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBpZiAoW1wiUE9TVFwiLCBcIlBVVFwiLCBcIlBBVENIXCJdLmluY2x1ZGVzKHJlcS5tZXRob2QpKSB7XG4gICAgYm9keSA9IGF3YWl0IHJlcS5jbG9uZSgpLnRleHQoKVxuICB9XG5cbiAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHJlcS5oZWFkZXJzKVxuXG4gIGNvbnN0IHNlbmRlck9yaWdpbiA9IHJlcS5oZWFkZXJzLmdldChcIlgtU2VuZGVyLU9yaWdpblwiKVxuICBpZiAoc2VuZGVyT3JpZ2luKSB7XG4gICAgaGVhZGVycy5zZXQoXCJPcmlnaW5cIiwgc2VuZGVyT3JpZ2luKVxuICB9XG5cbiAgY29uc3Qgc2VuZGVySG9zdCA9IHJlcS5oZWFkZXJzLmdldChcIlgtU2VuZGVyLUhvc3RcIilcbiAgaWYgKHNlbmRlckhvc3QpIHtcbiAgICBjb25zdCBob3N0VmFsdWUgPSBzZW5kZXJIb3N0LnJlcGxhY2UoL15odHRwcz86XFwvXFwvLywgXCJcIilcbiAgICBoZWFkZXJzLnNldChcIkhvc3RcIiwgaG9zdFZhbHVlKVxuICAgIGhlYWRlcnMuc2V0KFwiYXV0aG9yaXR5XCIsIGhvc3RWYWx1ZSlcbiAgfVxuXG4gIGNvbnN0IHNlbmRlclJlZmVyZXIgPSByZXEuaGVhZGVycy5nZXQoXCJYLVNlbmRlci1SZWZlcmVyXCIpXG4gIGlmIChzZW5kZXJSZWZlcmVyKSB7XG4gICAgaGVhZGVycy5zZXQoXCJSZWZlcmVyXCIsIHNlbmRlclJlZmVyZXIpXG4gIH1cblxuICBjb25zdCBzZW5kZXJVc2VyQWdlbnQgPSByZXEuaGVhZGVycy5nZXQoXCJYLVNlbmRlci1Vc2VyLUFnZW50XCIpXG4gIGlmIChzZW5kZXJVc2VyQWdlbnQpIHtcbiAgICBoZWFkZXJzLnNldChcIlVzZXItQWdlbnRcIiwgc2VuZGVyVXNlckFnZW50KVxuICB9XG5cbiAgY29uc3Qgc2VuZGVyQ29va2llID0gcmVxLmhlYWRlcnMuZ2V0KFwiWC1TZW5kZXItQ29va2llXCIpXG4gIGlmIChzZW5kZXJDb29raWUpIHtcbiAgICBoZWFkZXJzLnNldChcIkNvb2tpZVwiLCBzZW5kZXJDb29raWUpXG4gIH1cblxuICBmb3IgKGNvbnN0IGhlYWRlciBvZiBQUk9YWV9IRUFERVJTKSB7XG4gICAgaGVhZGVycy5kZWxldGUoaGVhZGVyKVxuICB9XG5cbiAgaGVhZGVycy5kZWxldGUoXCJjb250ZW50LWVuY29kaW5nXCIpXG4gIGhlYWRlcnMuZGVsZXRlKFwiYWNjZXB0LWVuY29kaW5nXCIpXG4gIGhlYWRlcnMuc2V0KFwiWC1wcm94aWVkXCIsIFwidHJ1ZVwiKVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0YXJnZXRVcmwsIHtcbiAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICBib2R5OiBbXCJHRVRcIiwgXCJIRUFEXCJdLmluY2x1ZGVzKHJlcS5tZXRob2QpID8gdW5kZWZpbmVkIDogYm9keSxcbiAgICB9KVxuXG4gICAgY29uc3QgcmVzcG9uc2VIZWFkZXJzID0gbmV3IEhlYWRlcnMocmVzcG9uc2UuaGVhZGVycylcbiAgICByZXNwb25zZUhlYWRlcnMuZGVsZXRlKFwiY29udGVudC1lbmNvZGluZ1wiKVxuXG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShyZXNwb25zZS5ib2R5LCB7XG4gICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsXG4gICAgICBoZWFkZXJzOiByZXNwb25zZUhlYWRlcnMsXG4gICAgfSlcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiUHJveHkgZXJyb3I6XCIsIGVycm9yKVxuICAgIHJldHVybiBjdHguanNvbihcbiAgICAgIHsgZXJyb3I6IHsgbWVzc2FnZTogXCJGYWlsZWQgdG8gcHJveHkgcmVxdWVzdFwiIH0gfSxcbiAgICAgIHsgc3RhdHVzOiA1MDIgfSxcbiAgICApXG4gIH1cbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc25pcHBldF9pZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgLy8gQ2hlY2sgaWYgc25pcHBldCBleGlzdHMgKGFzIGEgcGFja2FnZSlcbiAgY29uc3Qgc25pcHBldCA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgIChwa2cpID0+IHBrZy5wYWNrYWdlX2lkID09PSBzbmlwcGV0X2lkICYmIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICApXG5cbiAgaWYgKCFzbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBzdGFycmVkXG4gIGNvbnN0IGV4aXN0aW5nID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maW5kKFxuICAgIChhcCkgPT5cbiAgICAgIGFwLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgYXAucGFja2FnZV9pZCA9PT0gc25pcHBldF9pZCxcbiAgKVxuXG4gIGlmIChleGlzdGluZz8uaXNfc3RhcnJlZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFscmVhZHlfc3RhcnJlZFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgaGF2ZSBhbHJlYWR5IHN0YXJyZWQgdGhpcyBzbmlwcGV0XCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFVwZGF0ZSB0aGUgcGFja2FnZSdzIHN0YXIgY291bnRcbiAgc25pcHBldC5zdGFyX2NvdW50ID0gKHNuaXBwZXQuc3Rhcl9jb3VudCB8fCAwKSArIDFcblxuICBpZiAoZXhpc3RpbmcpIHtcbiAgICAvLyBJZiByZWNvcmQgZXhpc3RzIGJ1dCBpc19zdGFycmVkIGlzIGZhbHNlLCB1cGRhdGUgdG8gaXNfc3RhcnJlZD10cnVlXG4gICAgZXhpc3RpbmcuaXNfc3RhcnJlZCA9IHRydWVcbiAgICBleGlzdGluZy51cGRhdGVkX2F0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gIH0gZWxzZSB7XG4gICAgLy8gQWRkIHN0YXIgYnkgY3JlYXRpbmcgYSBuZXcgYWNjb3VudF9wYWNrYWdlIHJlY29yZFxuICAgIGN0eC5kYi5hZGRBY2NvdW50UGFja2FnZSh7XG4gICAgICBhY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgcGFja2FnZV9pZDogc25pcHBldF9pZCxcbiAgICAgIGlzX3N0YXJyZWQ6IHRydWUsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNvZGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBzbmlwcGV0X3R5cGU6IHouZW51bShbXCJib2FyZFwiLCBcInBhY2thZ2VcIiwgXCJtb2RlbFwiLCBcImZvb3RwcmludFwiXSksXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjb21waWxlZF9qczogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNpcmN1aXRfanNvbjogei5hcnJheSh6LnJlY29yZCh6LmFueSgpKSkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICAgIGR0czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX3ByaXZhdGU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgaXNfcHVibGljOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHNuaXBwZXQ6IHNuaXBwZXRTY2hlbWEub3B0aW9uYWwoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHtcbiAgICB1bnNjb3BlZF9uYW1lLFxuICAgIGNvZGUgPSBcIlwiLFxuICAgIHNuaXBwZXRfdHlwZSxcbiAgICBkZXNjcmlwdGlvbiA9IFwiXCIsXG4gICAgY29tcGlsZWRfanMsXG4gICAgY2lyY3VpdF9qc29uLFxuICAgIGR0cyxcbiAgICBpc19wcml2YXRlLFxuICAgIGlzX3B1YmxpYyxcbiAgICBpc191bmxpc3RlZCxcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KClcbiAgY29uc3QgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApLnRvSVNPU3RyaW5nKClcblxuICBpZiAoIXVuc2NvcGVkX25hbWUpIHtcbiAgICAvLyBDb3VudCBzbmlwcGV0cyBvZiB0aGlzIHR5cGUgZm9yIHRoaXMgdXNlclxuICAgIGNvbnN0IHVzZXJTbmlwcGV0cyA9IGN0eC5kYi5wYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocCkgPT5cbiAgICAgICAgcC5vd25lcl9naXRodWJfdXNlcm5hbWUgPT09IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSAmJlxuICAgICAgICBwLmlzX3NuaXBwZXQgPT09IHRydWUgJiZcbiAgICAgICAgKChwLmlzX2JvYXJkICYmIHNuaXBwZXRfdHlwZSA9PT0gXCJib2FyZFwiKSB8fFxuICAgICAgICAgIChwLmlzX3BhY2thZ2UgJiYgc25pcHBldF90eXBlID09PSBcInBhY2thZ2VcIikgfHxcbiAgICAgICAgICAocC5pc19tb2RlbCAmJiBzbmlwcGV0X3R5cGUgPT09IFwibW9kZWxcIikgfHxcbiAgICAgICAgICAocC5pc19mb290cHJpbnQgJiYgc25pcHBldF90eXBlID09PSBcImZvb3RwcmludFwiKSksXG4gICAgKVxuICAgIHVuc2NvcGVkX25hbWUgPSBgdW50aXRsZWQtJHtzbmlwcGV0X3R5cGV9LSR7dXNlclNuaXBwZXRzLmxlbmd0aCArIDF9YFxuICB9XG5cbiAgY29uc3QgZXhpc3RpbmdQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHBrZykgPT5cbiAgICAgIHBrZy51bnNjb3BlZF9uYW1lID09PSB1bnNjb3BlZF9uYW1lICYmXG4gICAgICBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUsXG4gIClcblxuICBpZiAoZXhpc3RpbmdQYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9hbHJlYWR5X2V4aXN0c1wiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgaGF2ZSBhbHJlYWR5IGZvcmtlZCB0aGlzIHNuaXBwZXQgaW4geW91ciBhY2NvdW50LlwiLFxuICAgIH0pXG4gIH1cblxuICB0cnkge1xuICAgIC8vIENyZWF0ZSB0aGUgcGFja2FnZSBkaXJlY3RseSAod2hpY2ggd2lsbCBzZXJ2ZSBhcyBvdXIgc25pcHBldClcbiAgICBjb25zdCBuZXdQYWNrYWdlID0gY3R4LmRiLmFkZFBhY2thZ2Uoe1xuICAgICAgY3JlYXRvcl9hY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgb3duZXJfb3JnX2lkOiBjdHguYXV0aC5wZXJzb25hbF9vcmdfaWQsXG4gICAgICBvd25lcl9naXRodWJfdXNlcm5hbWU6IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSxcbiAgICAgIGlzX3NvdXJjZV9mcm9tX2dpdGh1YjogZmFsc2UsXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICBuYW1lOiBgJHtjdHguYXV0aC5naXRodWJfdXNlcm5hbWV9LyR7dW5zY29wZWRfbmFtZX1gLFxuICAgICAgdW5zY29wZWRfbmFtZTogdW5zY29wZWRfbmFtZSxcbiAgICAgIGxhdGVzdF92ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgICBsaWNlbnNlOiBudWxsLFxuICAgICAgc3Rhcl9jb3VudDogMCxcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgdXBkYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICBhaV9kZXNjcmlwdGlvbjogbnVsbCxcbiAgICAgIGlzX3NuaXBwZXQ6IHRydWUsXG4gICAgICBpc19ib2FyZDogc25pcHBldF90eXBlID09PSBcImJvYXJkXCIsXG4gICAgICBpc19wYWNrYWdlOiBzbmlwcGV0X3R5cGUgPT09IFwicGFja2FnZVwiLFxuICAgICAgaXNfbW9kZWw6IHNuaXBwZXRfdHlwZSA9PT0gXCJtb2RlbFwiLFxuICAgICAgaXNfZm9vdHByaW50OiBzbmlwcGV0X3R5cGUgPT09IFwiZm9vdHByaW50XCIsXG4gICAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXRfdHlwZSxcbiAgICAgIGlzX3ByaXZhdGU6IGlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IGlzX3B1YmxpYyB8fCB0cnVlLFxuICAgICAgaXNfdW5saXN0ZWQ6IGlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogbnVsbCxcbiAgICAgIGFpX3VzYWdlX2luc3RydWN0aW9uczogXCJwbGFjZWhvbGRlciBhaSB1c2FnZSBpbnN0cnVjdGlvbnNcIixcbiAgICB9KVxuXG4gICAgY29uc3QgbmV3UGFja2FnZVJlbGVhc2UgPSBjdHguZGIuYWRkUGFja2FnZVJlbGVhc2Uoe1xuICAgICAgcGFja2FnZV9pZDogbmV3UGFja2FnZS5wYWNrYWdlX2lkLFxuICAgICAgdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgaXNfbGF0ZXN0OiB0cnVlLFxuICAgICAgaXNfbG9ja2VkOiBmYWxzZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgLy8gU2V0dGluZyB0aGUgdHJhbnNwaWxlZCBhcyB0cnVlIG9uIGNyZWF0aW9uXG4gICAgICBoYXNfdHJhbnNwaWxlZDogdHJ1ZSxcbiAgICAgIHRyYW5zcGlsYXRpb25fZXJyb3I6IG51bGwsXG4gICAgfSlcblxuICAgIGN0eC5kYi51cGRhdGVQYWNrYWdlKG5ld1BhY2thZ2UucGFja2FnZV9pZCwge1xuICAgICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIH0pXG5cbiAgICAvLyBBZGQgcGFja2FnZSBmaWxlc1xuICAgIC8vIEFkZCBpbmRleC50c3ggZmlsZSB3aXRoIHRoZSBjb2RlIGNvbnRlbnRcbiAgICBjdHguZGIuYWRkUGFja2FnZUZpbGUoe1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICBmaWxlX3BhdGg6IFwiaW5kZXgudHN4XCIsXG4gICAgICBjb250ZW50X3RleHQ6IGNvZGUsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICB9KVxuXG4gICAgLy8gQWRkIERUUyBmaWxlIGlmIHByb3ZpZGVkXG4gICAgaWYgKGR0cykge1xuICAgICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9pbmRleC5kLnRzXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogZHRzLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQWRkIGNvbXBpbGVkIEpTIGlmIHByb3ZpZGVkXG4gICAgaWYgKGNvbXBpbGVkX2pzKSB7XG4gICAgICBjdHguZGIuYWRkUGFja2FnZUZpbGUoe1xuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogY29tcGlsZWRfanMsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBBZGQgY2lyY3VpdCBKU09OIGlmIHByb3ZpZGVkXG4gICAgaWYgKGNpcmN1aXRfanNvbikge1xuICAgICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICAgICAgY29udGVudF90ZXh0OiBKU09OLnN0cmluZ2lmeShjaXJjdWl0X2pzb24pLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBzbmlwcGV0IHJlc3BvbnNlIG9iamVjdFxuICAgIGNvbnN0IHNuaXBwZXRSZXNwb25zZSA9IHtcbiAgICAgIHNuaXBwZXRfaWQ6IG5ld1BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgbmFtZTogbmV3UGFja2FnZS5uYW1lLFxuICAgICAgdW5zY29wZWRfbmFtZTogbmV3UGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgICAgb3duZXJfbmFtZTogY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgY29kZSxcbiAgICAgIGR0cyxcbiAgICAgIGNvbXBpbGVkX2pzLFxuICAgICAgc3Rhcl9jb3VudDogMCxcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgdXBkYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXRfdHlwZSxcbiAgICAgIGNpcmN1aXRfanNvbjogY2lyY3VpdF9qc29uIHx8IFtdLFxuICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgICAgaXNfc3RhcnJlZDogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgICBpc19wcml2YXRlOiBpc19wcml2YXRlIHx8IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiBpc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiBpc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICB9XG5cbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgb2s6IHRydWUsXG4gICAgICBzbmlwcGV0OiBzbmlwcGV0UmVzcG9uc2UsXG4gICAgfSlcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X2NyZWF0aW9uX2ZhaWxlZFwiLFxuICAgICAgbWVzc2FnZTogYEZhaWxlZCB0byBjcmVhdGUgc25pcHBldDogJHtlcnJvcn1gLFxuICAgIH0pXG4gIH1cbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc25pcHBldF9pZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3Qgc25pcHBldEluZGV4ID0gY3R4LmRiLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAocykgPT4gcy5wYWNrYWdlX2lkID09PSBzbmlwcGV0X2lkLFxuICApXG5cbiAgaWYgKHNuaXBwZXRJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLnBhY2thZ2VzW3NuaXBwZXRJbmRleF1cblxuICBpZiAoc25pcHBldC5jcmVhdG9yX2FjY291bnRfaWQgIT09IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGlzIHNuaXBwZXRcIixcbiAgICB9KVxuICB9XG5cbiAgY3R4LmRiLnBhY2thZ2VzLnNwbGljZShzbmlwcGV0SW5kZXgsIDEpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAganNkZWxpdnJfcmVzb2x2ZTogelxuICAgICAgLmVudW0oW1widHJ1ZVwiLCBcImZhbHNlXCJdKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC50cmFuc2Zvcm0oKHYpID0+IHYgPT09IFwidHJ1ZVwiKSxcbiAgICBqc2RlbGl2cl9wYXRoOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6LmFueSgpLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsganNkZWxpdnJfcGF0aCwganNkZWxpdnJfcmVzb2x2ZSB9ID0gcmVxLnF1ZXJ5XG5cbiAgLy8gUGFyc2UgdGhlIGZpbGUgcGF0aFxuICBjb25zdCBbb3duZXIsIHBhY2thZ2VXaXRoVmVyc2lvbiwgLi4ucmVzdF0gPSBqc2RlbGl2cl9wYXRoLnNwbGl0KFwiL1wiKVxuICBjb25zdCBbcGFja2FnZU5hbWUsIHZlcnNpb25dID0gcGFja2FnZVdpdGhWZXJzaW9uLnNwbGl0KFwiQFwiKVxuICBjb25zdCBmaWxlTmFtZSA9IHJlc3Quam9pbihcIi9cIilcblxuICAvLyBGaW5kIHRoZSBzbmlwcGV0XG4gIGNvbnN0IF9wYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHMpID0+IHMub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBvd25lciAmJiBzLnVuc2NvcGVkX25hbWUgPT09IHBhY2thZ2VOYW1lLFxuICApXG5cbiAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHApID0+IHAucGFja2FnZV9pZCA9PT0gX3BhY2thZ2U/LnBhY2thZ2VfaWQsXG4gIClcblxuICBjb25zdCBwYWNrYWdlRmlsZXMgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAocCkgPT4gcC5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlPy5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gIClcblxuICBpZiAoIV9wYWNrYWdlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKCFmaWxlTmFtZSAmJiAhanNkZWxpdnJfcmVzb2x2ZSkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBsYXRlc3Q6IFwiMC4wLjFcIixcbiAgICAgICAgfSxcbiAgICAgICAgdmVyc2lvbnM6IFtcIjAuMC4xXCJdLFxuICAgICAgfSksXG4gICAgICB7XG4gICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICB9LFxuICAgIClcbiAgfSBlbHNlIGlmICghZmlsZU5hbWUgJiYganNkZWxpdnJfcmVzb2x2ZSkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIH0pLFxuICAgICAge1xuICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICAvLyBJZiBubyBmaWxlTmFtZSBpcyBwcm92aWRlZCwgcmV0dXJuIHRoZSBkaXJlY3RvcnkgbGlzdGluZ1xuICBpZiAoIWZpbGVOYW1lIHx8IGZpbGVOYW1lID09PSBcImZsYXRcIikge1xuICAgIGNvbnN0IGZpbGVzID0gW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgbmFtZTogXCJpbmRleC50c1wiLFxuICAgICAgICBoYXNoOiBcInBsYWNlaG9sZGVyX2hhc2hcIixcbiAgICAgICAgdGltZTogcGFja2FnZVJlbGVhc2U/LmNyZWF0ZWRfYXQsXG4gICAgICAgIHNpemU6IHBhY2thZ2VGaWxlcy5maW5kKChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiKT8uY29udGVudF90ZXh0XG4gICAgICAgICAgPy5sZW5ndGgsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgbmFtZTogXCJpbmRleC5kLnRzXCIsXG4gICAgICAgIGhhc2g6IFwicGxhY2Vob2xkZXJfaGFzaFwiLFxuICAgICAgICB0aW1lOiBwYWNrYWdlUmVsZWFzZT8uY3JlYXRlZF9hdCxcbiAgICAgICAgc2l6ZTogcGFja2FnZUZpbGVzLmZpbmQoKGYpID0+IGYuZmlsZV9wYXRoID09PSBcImluZGV4LmQudHNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dD8ubGVuZ3RoLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgIG5hbWU6IFwicGFja2FnZS5qc29uXCIsXG4gICAgICAgIGhhc2g6IFwicGxhY2Vob2xkZXJfaGFzaFwiLFxuICAgICAgICB0aW1lOiBwYWNrYWdlUmVsZWFzZT8uY3JlYXRlZF9hdCxcbiAgICAgICAgc2l6ZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIG5hbWU6IGBAdHNjaS8ke293bmVyfS4ke3BhY2thZ2VOYW1lfWAsXG4gICAgICAgICAgdmVyc2lvbjogdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgICAgbWFpbjogXCJpbmRleC50c1wiLFxuICAgICAgICAgIHR5cGVzOiBcImluZGV4LmQudHNcIixcbiAgICAgICAgfSkubGVuZ3RoLFxuICAgICAgfSxcbiAgICBdXG5cbiAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgIGRlZmF1bHQ6IFwiL2luZGV4LnRzXCIsXG4gICAgICBmaWxlczpcbiAgICAgICAgZmlsZU5hbWUgPT09IFwiZmxhdFwiXG4gICAgICAgICAgPyBmaWxlcy5tYXAoKGYpID0+ICh7XG4gICAgICAgICAgICAgIG5hbWU6IGAvJHtmLm5hbWV9YCxcbiAgICAgICAgICAgICAgaGFzaDogZi5oYXNoLFxuICAgICAgICAgICAgICB0aW1lOiBmLnRpbWUsXG4gICAgICAgICAgICAgIHNpemU6IGYuc2l6ZSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIDogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJkaXJlY3RvcnlcIixcbiAgICAgICAgICAgICAgICBuYW1lOiBcIi5cIixcbiAgICAgICAgICAgICAgICBmaWxlczogZmlsZXMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgIH1cblxuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UsIG51bGwsIDIpLCB7XG4gICAgICBzdGF0dXM6IDIwMCxcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICB9KVxuICB9XG5cbiAgLy8gSGFuZGxlIGZpbGUgZG93bmxvYWRzXG4gIGxldCBjb250ZW50OiBzdHJpbmdcbiAgc3dpdGNoIChmaWxlTmFtZSkge1xuICAgIGNhc2UgXCJpbmRleC50c1wiOlxuICAgICAgY29udGVudCA9XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIik/LmNvbnRlbnRfdGV4dCB8fFxuICAgICAgICBcIlwiXG4gICAgICBicmVha1xuICAgIGNhc2UgXCJpbmRleC5kLnRzXCI6XG4gICAgICBjb250ZW50ID1cbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGYpID0+IGYuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiXG4gICAgICBicmVha1xuICAgIGNhc2UgXCJwYWNrYWdlLmpzb25cIjpcbiAgICAgIGNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IGBAdHNjaS8ke293bmVyfS4ke3BhY2thZ2VOYW1lfWAsXG4gICAgICAgICAgdmVyc2lvbjogdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgICAgbWFpbjogXCJpbmRleC50c1wiLFxuICAgICAgICAgIHR5cGVzOiBcImluZGV4LmQudHNcIixcbiAgICAgICAgfSxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgMixcbiAgICAgIClcbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwiZmlsZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJSZXF1ZXN0ZWQgZmlsZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKGNvbnRlbnQsIHtcbiAgICBzdGF0dXM6IDIwMCxcbiAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwidGV4dC9wbGFpblwiIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgZmV0Y2hFYXN5RURBQ29tcG9uZW50LCBjb252ZXJ0UmF3RWFzeUVkYVRvVHMgfSBmcm9tIFwiZWFzeWVkYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBqbGNwY2JfcGFydF9udW1iZXI6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0OiBzbmlwcGV0U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGpsY3BjYl9wYXJ0X251bWJlciB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgdHJ5IHtcbiAgICAvLyBGZXRjaCB0aGUgRWFzeUVEQSBjb21wb25lbnQgZGF0YVxuICAgIGNvbnN0IHJhd0Vhc3lKc29uID0gYXdhaXQgZmV0Y2hFYXN5RURBQ29tcG9uZW50KGpsY3BjYl9wYXJ0X251bWJlcilcblxuICAgIC8vIENvbnZlcnQgdG8gVHlwZVNjcmlwdCBSZWFjdCBjb21wb25lbnRcbiAgICBjb25zdCB0c3hDb21wb25lbnQgPSBhd2FpdCBjb252ZXJ0UmF3RWFzeUVkYVRvVHMocmF3RWFzeUpzb24pXG5cbiAgICAvLyBDcmVhdGUgYSBuZXcgc25pcHBldFxuICAgIGNvbnN0IG5ld1NuaXBwZXQgPSB7XG4gICAgICBuYW1lOiBgJHtjdHguYXV0aC5naXRodWJfdXNlcm5hbWV9LyR7amxjcGNiX3BhcnRfbnVtYmVyfWAsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBqbGNwY2JfcGFydF9udW1iZXIsXG4gICAgICBvd25lcl9uYW1lOiBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUsXG4gICAgICBjb2RlOiB0c3hDb21wb25lbnQsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBzbmlwcGV0X3R5cGU6IFwicGFja2FnZVwiLFxuICAgICAgZGVzY3JpcHRpb246IGBHZW5lcmF0ZWQgZnJvbSBKTENQQ0IgcGFydCBudW1iZXIgJHtqbGNwY2JfcGFydF9udW1iZXJ9YCxcbiAgICB9XG5cbiAgICBjb25zdCBjcmVhdGVkUGFja2FnZSA9IGN0eC5kYi5hZGRTbmlwcGV0KG5ld1NuaXBwZXQgYXMgYW55KVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIHNuaXBwZXQ6IGNyZWF0ZWRQYWNrYWdlIGFzIGFueSxcbiAgICB9KVxuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiamxjcGNiX2dlbmVyYXRpb25fZmFpbGVkXCIsXG4gICAgICBtZXNzYWdlOiBgRmFpbGVkIHRvIGdlbmVyYXRlIHBhY2thZ2UgZnJvbSBKTENQQ0IgcGFydDogJHtlcnJvci5tZXNzYWdlfWAsXG4gICAgfSlcbiAgfVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHtcbiAgY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmcsXG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnLFxufSBmcm9tIFwiY2lyY3VpdC10by1zdmdcIlxuaW1wb3J0IHsgQW55Q2lyY3VpdEVsZW1lbnQgfSBmcm9tIFwiY2lyY3VpdC1qc29uXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgc25pcHBldElkOiB6LnN0cmluZygpLFxuICAgIGltYWdlX29mOiB6LmVudW0oW1wic2NoZW1hdGljXCIsIFwicGNiXCJdKSxcbiAgICBmb3JtYXQ6IHouZW51bShbXCJzdmdcIl0pLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHN2Zzogei5zdHJpbmcoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBzbmlwcGV0SWQsIGltYWdlX29mLCBmb3JtYXQgfSA9IHJlcS5xdWVyeVxuXG4gIGNvbnN0IHNuaXBwZXQgPSBjdHguZGIuZ2V0U25pcHBldEJ5SWQoc25pcHBldElkKVxuXG4gIC8vIGNoZWNrIGlmIHRoZSBzbmlwcGV0IGV4aXN0c1xuICBpZiAoIXNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgZm9ybWF0IGlzIHZhbGlkXG4gIGlmIChmb3JtYXQgIT09IFwic3ZnXCIpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgbWVzc2FnZTogXCJGb3JtYXQgbXVzdCBiZSAnc3ZnJ1wiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoaW1hZ2Vfb2YgPT09IFwic2NoZW1hdGljXCIpIHtcbiAgICBjb25zdCBjaXJjdWl0SnNvbiA9IHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W11cbiAgICBjb25zdCBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyhjaXJjdWl0SnNvbilcbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgb2s6IHRydWUsXG4gICAgICBzdmcsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChpbWFnZV9vZiA9PT0gXCJwY2JcIikge1xuICAgIGNvbnN0IHN2ZyA9IGNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnKFxuICAgICAgc25pcHBldC5jaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXSxcbiAgICApXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgc3ZnLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgIGVycm9yX2NvZGU6IFwiSU5WQUxJRF9SRVFVRVNUX1RZUEVcIixcbiAgICBtZXNzYWdlOiBcIlJlcXVlc3QgdHlwZSBtdXN0IGJlIGVpdGhlciAnc2NoZW1hdGljJyBvciAncGNiJ1wiLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwib3B0aW9uYWxfc2Vzc2lvblwiLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG93bmVyX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uQm9keTogei5hbnkoKS5vcHRpb25hbCgpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgc25pcHBldDogc25pcHBldFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBzbmlwcGV0X2lkLCBuYW1lLCBvd25lcl9uYW1lLCB1bnNjb3BlZF9uYW1lIH0gPSByZXEuY29tbW9uUGFyYW1zXG5cbiAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQgYnkgc25pcHBldF9pZFxuICBpZiAoc25pcHBldF9pZCkge1xuICAgIGNvbnN0IGZvdW5kU25pcHBldCA9IGN0eC5kYi5nZXRTbmlwcGV0QnlJZChzbmlwcGV0X2lkLCBjdHguYXV0aClcbiAgICBpZiAoZm91bmRTbmlwcGV0KSB7XG4gICAgICBpZiAoY3R4LmF1dGgpIHtcbiAgICAgICAgZm91bmRTbmlwcGV0LmlzX3N0YXJyZWQgPSBjdHguZGIuaGFzU3RhcnJlZChcbiAgICAgICAgICBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgICAgIGZvdW5kU25pcHBldC5zbmlwcGV0X2lkLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgICBvazogdHJ1ZSxcbiAgICAgICAgc25pcHBldDogZm91bmRTbmlwcGV0LFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvLyBJZiBub3QgZm91bmQgYnkgSUQsIHRyeSB0byBmaW5kIGJ5IG90aGVyIHBhcmFtZXRlcnNcbiAgY29uc3QgZm91bmRQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4ge1xuICAgIGlmICghcGtnLmlzX3NuaXBwZXQpIHJldHVybiBmYWxzZVxuICAgIGlmIChuYW1lICYmIHBrZy5uYW1lLnRvTG93ZXJDYXNlKCkgIT09IG5hbWUudG9Mb3dlckNhc2UoKSkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKFxuICAgICAgb3duZXJfbmFtZSAmJlxuICAgICAgcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZT8udG9Mb3dlckNhc2UoKSAhPT0gb3duZXJfbmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgaWYgKFxuICAgICAgdW5zY29wZWRfbmFtZSAmJlxuICAgICAgcGtnLnVuc2NvcGVkX25hbWUudG9Mb3dlckNhc2UoKSAhPT0gdW5zY29wZWRfbmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgcmV0dXJuIHRydWVcbiAgfSlcblxuICBpZiAoIWZvdW5kUGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBgU25pcHBldCBub3QgZm91bmQgKHNlYXJjaGVkIHVzaW5nICR7SlNPTi5zdHJpbmdpZnkocmVxLmNvbW1vblBhcmFtcyl9KWAsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENvbnZlcnQgcGFja2FnZSB0byBzbmlwcGV0IGZvcm1hdFxuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLmdldFNuaXBwZXRCeUlkKGZvdW5kUGFja2FnZS5wYWNrYWdlX2lkKVxuICBpZiAoIXNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogYFNuaXBwZXQgbm90IGZvdW5kIChzZWFyY2hlZCB1c2luZyAke0pTT04uc3RyaW5naWZ5KHJlcS5jb21tb25QYXJhbXMpfSlgLFxuICAgIH0pXG4gIH1cblxuICBpZiAoY3R4LmF1dGgpIHtcbiAgICBzbmlwcGV0LmlzX3N0YXJyZWQgPSBjdHguZGIuaGFzU3RhcnJlZChcbiAgICAgIGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgICBzbmlwcGV0LnNuaXBwZXRfaWQsXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBzbmlwcGV0LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBBbnlDaXJjdWl0RWxlbWVudCB9IGZyb20gXCJjaXJjdWl0LWpzb25cIlxuaW1wb3J0IHtcbiAgY29udmVydENpcmN1aXRKc29uVG9Bc3NlbWJseVN2ZyxcbiAgY29udmVydENpcmN1aXRKc29uVG9QY2JTdmcsXG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnLFxufSBmcm9tIFwiY2lyY3VpdC10by1zdmdcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHJvdXRlUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgYXV0aG9yOiB6LnN0cmluZygpLFxuICAgIHNuaXBwZXRfbmFtZTogei5zdHJpbmcoKSxcbiAgICB0eXBlRm9ybWF0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgcmF3UmVzcG9uc2U6IHRydWUsXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBhdXRob3IsIHNuaXBwZXRfbmFtZSwgdHlwZUZvcm1hdCB9ID0gcmVxLnJvdXRlUGFyYW1zXG5cbiAgLy8gR2V0IHRoZSBzbmlwcGV0XG4gIGNvbnN0IG5hbWUgPSBhdXRob3IgKyBcIi9cIiArIHNuaXBwZXRfbmFtZVxuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLmdldFNuaXBwZXRCeUF1dGhvckFuZE5hbWUoYXV0aG9yLCBuYW1lKVxuXG4gIC8vIElmIHNuaXBwZXQgaXMgbm90IGZvdW5kLCByZXR1cm4gNDA0XG4gIGlmICghc25pcHBldCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBmb3JtYXQgaXMgdmFsaWRcbiAgY29uc3QgZm9ybWF0ID0gdHlwZUZvcm1hdC5zcGxpdChcIi5cIilbMV1cbiAgaWYgKGZvcm1hdCAhPT0gXCJzdmdcIikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICBtZXNzYWdlOiBcIkZvcm1hdCBtdXN0IGJlICdzdmcnXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSB0eXBlIGlzIHZhbGlkXG4gIGNvbnN0IHR5cGUgPSB0eXBlRm9ybWF0LnNwbGl0KFwiLlwiKVswXVxuICBjb25zdCB0eXBlc1ZhbGlkID0gW1wic2NoZW1hdGljXCIsIFwicGNiXCIsIFwiYXNzZW1ibHlcIl1cbiAgaWYgKCF0eXBlc1ZhbGlkLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICBtZXNzYWdlOiBgVHlwZSBtdXN0IGJlICcke3R5cGVzVmFsaWQuam9pbihcIicgb3IgJ1wiKX0nYCxcbiAgICB9KVxuICB9XG5cbiAgLy8gQ29udmVydCBjaXJjdWl0IGpzb24gdG8gc3ZnXG4gIGxldCBzdmc6IHN0cmluZ1xuICBpZiAodHlwZSA9PT0gXCJzY2hlbWF0aWNcIikge1xuICAgIHN2ZyA9IGNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnKFxuICAgICAgc25pcHBldC5jaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXSxcbiAgICApXG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJwY2JcIikge1xuICAgIHN2ZyA9IGNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnKFxuICAgICAgc25pcHBldC5jaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXSxcbiAgICApXG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJhc3NlbWJseVwiKSB7XG4gICAgc3ZnID0gY29udmVydENpcmN1aXRKc29uVG9Bc3NlbWJseVN2ZyhcbiAgICAgIHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10sXG4gICAgKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInVua25vd25fZXJyb3JcIixcbiAgICAgIG1lc3NhZ2U6IFwiVW5rbm93biBlcnJvclwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKHN2Zywge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiaW1hZ2Uvc3ZnK3htbFwiLFxuICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwicHVibGljLCBtYXgtYWdlPTMxNTM2MDAwXCIsXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRzOiB6LmFycmF5KHNuaXBwZXRTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBsYXRlc3RTbmlwcGV0cyA9IGN0eC5kYi5nZXRMYXRlc3RTbmlwcGV0cygyMClcbiAgcmV0dXJuIGN0eC5qc29uKHsgc25pcHBldHM6IGxhdGVzdFNuaXBwZXRzIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgc25pcHBldHM6IHouYXJyYXkoc25pcHBldFNjaGVtYSksXG4gIH0pLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIHRpbWVfcGVyaW9kOiB6LmVudW0oW1wiN2RheXNcIiwgXCIzMGRheXNcIiwgXCJhbGxcIl0pLm9wdGlvbmFsKCkuZGVmYXVsdChcImFsbFwiKSxcbiAgICB0YWc6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyB0aW1lX3BlcmlvZCwgdGFnIH0gPSByZXEucXVlcnlcblxuICBsZXQgc2luY2VEYXRlID0gbmV3IERhdGUoKVxuICBpZiAodGltZV9wZXJpb2QgPT09IFwiN2RheXNcIikge1xuICAgIHNpbmNlRGF0ZS5zZXREYXRlKHNpbmNlRGF0ZS5nZXREYXRlKCkgLSA3KVxuICB9IGVsc2UgaWYgKHRpbWVfcGVyaW9kID09PSBcIjMwZGF5c1wiKSB7XG4gICAgc2luY2VEYXRlLnNldERhdGUoc2luY2VEYXRlLmdldERhdGUoKSAtIDMwKVxuICB9IGVsc2Uge1xuICAgIHNpbmNlRGF0ZSA9IG5ldyBEYXRlKDApIC8vIEZvciBcImFsbFwiLCB1c2UgZWFybGllc3QgcG9zc2libGUgZGF0ZVxuICB9XG5cbiAgY29uc3QgdHJlbmRpbmdTbmlwcGV0cyA9IGN0eC5kYi5nZXRUcmVuZGluZ1NuaXBwZXRzKFxuICAgIDIwLFxuICAgIHNpbmNlRGF0ZS50b0lTT1N0cmluZygpLFxuICApXG5cbiAgLy8gRmlsdGVyIGJ5IHRhZyBpZiBwcm92aWRlZFxuICBjb25zdCBmaWx0ZXJlZFNuaXBwZXRzID0gdGFnXG4gICAgPyB0cmVuZGluZ1NuaXBwZXRzLmZpbHRlcigoc25pcHBldCkgPT4gc25pcHBldC5zbmlwcGV0X3R5cGUgPT09IHRhZylcbiAgICA6IHRyZW5kaW5nU25pcHBldHNcblxuICByZXR1cm4gY3R4Lmpzb24oeyBzbmlwcGV0czogZmlsdGVyZWRTbmlwcGV0cyB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc25pcHBldFNjaGVtYSwgdHlwZSBBY2NvdW50IH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJvcHRpb25hbF9zZXNzaW9uXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIG93bmVyX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgc3RhcnJlZF9ieTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvbkJvZHk6IHouYW55KCkub3B0aW9uYWwoKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHNuaXBwZXRzOiB6LmFycmF5KHNuaXBwZXRTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG93bmVyX25hbWUsIHVuc2NvcGVkX25hbWUsIHN0YXJyZWRfYnkgfSA9IHJlcS5jb21tb25QYXJhbXNcbiAgbGV0IHN0YXJyZWRCeUFjY291bnQ6IEFjY291bnQgfCBudWxsID0gbnVsbFxuICAvLyBHZXQgYWxsIHBhY2thZ2VzIHRoYXQgYXJlIHNuaXBwZXRzXG4gIGxldCBwYWNrYWdlcyA9IGN0eC5kYi5wYWNrYWdlcy5maWx0ZXIoKHBrZykgPT4gcGtnLmlzX3NuaXBwZXQgPT09IHRydWUpXG5cbiAgLy8gRmlsdGVyIGJ5IG93bmVyX25hbWUgaWYgcHJvdmlkZWRcbiAgaWYgKG93bmVyX25hbWUpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwa2cpID0+XG4gICAgICAgIHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IG93bmVyX25hbWUudG9Mb3dlckNhc2UoKSxcbiAgICApXG4gIH1cblxuICAvLyBGaWx0ZXIgYnkgdW5zY29wZWRfbmFtZSBpZiBwcm92aWRlZFxuICBpZiAodW5zY29wZWRfbmFtZSkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHBrZykgPT4gcGtnLnVuc2NvcGVkX25hbWUudG9Mb3dlckNhc2UoKSA9PT0gdW5zY29wZWRfbmFtZS50b0xvd2VyQ2FzZSgpLFxuICAgIClcbiAgfVxuXG4gIC8vIEZpbHRlciBieSBzdGFycmVkX2J5IGlmIHByb3ZpZGVkXG4gIGlmIChzdGFycmVkX2J5KSB7XG4gICAgc3RhcnJlZEJ5QWNjb3VudCA9XG4gICAgICBjdHguZGIuYWNjb3VudHMuZmluZChcbiAgICAgICAgKGFjYykgPT4gYWNjLmdpdGh1Yl91c2VybmFtZS50b0xvd2VyQ2FzZSgpID09PSBzdGFycmVkX2J5LnRvTG93ZXJDYXNlKCksXG4gICAgICApIHx8IG51bGxcblxuICAgIGlmIChzdGFycmVkQnlBY2NvdW50KSB7XG4gICAgICBjb25zdCBhY2NvdW50UGFja2FnZXMgPSBjdHguZGIuYWNjb3VudFBhY2thZ2VzLmZpbHRlcihcbiAgICAgICAgKGFwKSA9PiBhcC5hY2NvdW50X2lkID09PSBzdGFycmVkQnlBY2NvdW50Py5hY2NvdW50X2lkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgICApXG5cbiAgICAgIGNvbnN0IHN0YXJUaW1lc3RhbXBzID0gbmV3IE1hcChcbiAgICAgICAgYWNjb3VudFBhY2thZ2VzLm1hcCgoYXApID0+IFthcC5wYWNrYWdlX2lkLCBhcC51cGRhdGVkX2F0XSksXG4gICAgICApXG5cbiAgICAgIC8vIEZpbHRlciBwYWNrYWdlcyB0byBvbmx5IGluY2x1ZGUgc3RhcnJlZCBvbmVzXG4gICAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcigocGtnKSA9PiBzdGFyVGltZXN0YW1wcy5oYXMocGtnLnBhY2thZ2VfaWQpKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYWNrYWdlcyA9IFtdXG4gICAgfVxuICB9XG5cbiAgLy8gQ29udmVydCBwYWNrYWdlcyB0byBzbmlwcGV0c1xuICBjb25zdCBzbmlwcGV0cyA9IHBhY2thZ2VzLm1hcCgocGtnKSA9PiB7XG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIuZ2V0UGFja2FnZVJlbGVhc2VCeUlkKFxuICAgICAgcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICApXG5cbiAgICBsZXQgc3RhclRpbWVzdGFtcFxuICAgIGlmIChzdGFycmVkX2J5ICYmIHN0YXJyZWRCeUFjY291bnQpIHtcbiAgICAgIGNvbnN0IGFjY291bnRQYWNrYWdlID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maW5kKFxuICAgICAgICAoYXApID0+XG4gICAgICAgICAgYXAuYWNjb3VudF9pZCA9PT0gc3RhcnJlZEJ5QWNjb3VudC5hY2NvdW50X2lkICYmXG4gICAgICAgICAgYXAucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiZcbiAgICAgICAgICBhcC5pc19zdGFycmVkLFxuICAgICAgKVxuICAgICAgc3RhclRpbWVzdGFtcCA9IGFjY291bnRQYWNrYWdlPy51cGRhdGVkX2F0XG4gICAgfVxuXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgICAgdW5zY29wZWRfbmFtZTogcGtnLnVuc2NvcGVkX25hbWUsXG4gICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICBvd25lcl9uYW1lOiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBwa2cuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgICAgY29kZTogXCJcIixcbiAgICAgICAgZHRzOiBcIlwiLFxuICAgICAgICBjb21waWxlZF9qczogXCJcIixcbiAgICAgICAgY3JlYXRlZF9hdDogcGtnLmNyZWF0ZWRfYXQsXG4gICAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgICBzdGFycmVkX2F0OiBzdGFyVGltZXN0YW1wLCAvLyBBZGQgc3RhciB0aW1lc3RhbXBcbiAgICAgICAgc3Rhcl9jb3VudDogY3R4LmRiLmdldFN0YXJDb3VudChwa2cucGFja2FnZV9pZCksXG4gICAgICAgIGlzX3N0YXJyZWQ6IGN0eC5hdXRoXG4gICAgICAgICAgPyBjdHguZGIuaGFzU3RhcnJlZChjdHguYXV0aC5hY2NvdW50X2lkLCBwa2cucGFja2FnZV9pZClcbiAgICAgICAgICA6IGZhbHNlLFxuICAgICAgICB2ZXJzaW9uOiBwa2cubGF0ZXN0X3ZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgICBpc19wcml2YXRlOiBwa2cuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgICAgaXNfcHVibGljOiBwa2cuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICAgIGlzX3VubGlzdGVkOiBwa2cuaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcGFja2FnZUZpbGVzID0gY3R4LmRiLmdldFBhY2thZ2VGaWxlc0J5UmVsZWFzZUlkKFxuICAgICAgcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcbiAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGU6IHsgZmlsZV9wYXRoOiBzdHJpbmcgfSkgPT5cbiAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICApXG5cbiAgICBjb25zdCBzbmlwcGV0ID0ge1xuICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBrZy5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IFwiXCIsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBwa2cudW5zY29wZWRfbmFtZSxcbiAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgb3duZXJfbmFtZTogcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSB8fCBcIlwiLFxuICAgICAgZGVzY3JpcHRpb246IHBrZy5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgIGNvZGU6IGNvZGVGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGR0czpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAgICAgKGZpbGU6IHsgZmlsZV9wYXRoOiBzdHJpbmcgfSkgPT5cbiAgICAgICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgICAgKT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjb21waWxlZF9qczpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAgICAgKGZpbGU6IHsgZmlsZV9wYXRoOiBzdHJpbmcgfSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIixcbiAgICAgICAgKT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjcmVhdGVkX2F0OiBwa2cuY3JlYXRlZF9hdCxcbiAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgc3RhcnJlZF9hdDogc3RhclRpbWVzdGFtcCwgLy8gQWRkIHN0YXIgdGltZXN0YW1wXG4gICAgICBzdGFyX2NvdW50OiBjdHguZGIuZ2V0U3RhckNvdW50KHBrZy5wYWNrYWdlX2lkKSxcbiAgICAgIGlzX3N0YXJyZWQ6IGN0eC5hdXRoXG4gICAgICAgID8gY3R4LmRiLmhhc1N0YXJyZWQoY3R4LmF1dGguYWNjb3VudF9pZCwgcGtnLnBhY2thZ2VfaWQpXG4gICAgICAgIDogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiBwa2cubGF0ZXN0X3ZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgaXNfcHJpdmF0ZTogcGtnLmlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IHBrZy5pc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiBwa2cuaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgfVxuXG4gICAgcmV0dXJuIHNuaXBwZXRcbiAgfSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHNuaXBwZXRzLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBhY2NvdW50U25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIGlzX3N0YXJyZWQ6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHNuaXBwZXRfaWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIC8vIENoZWNrIGlmIHNuaXBwZXQgZXhpc3RzXG4gIGNvbnN0IHNuaXBwZXQgPSBjdHguZGIuZ2V0U25pcHBldEJ5SWQoc25pcHBldF9pZClcbiAgaWYgKCFzbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gY2hlY2sgaWYgbm90IGFscmVhZHkgc3RhcnJlZFxuICBpZiAoIWN0eC5kYi5oYXNTdGFycmVkKGN0eC5hdXRoLmFjY291bnRfaWQsIHNuaXBwZXRfaWQpKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibm90X3N0YXJyZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGhhdmUgbm90IHN0YXJyZWQgdGhpcyBzbmlwcGV0XCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFJlbW92ZSBzdGFyXG4gIGN0eC5kYi5yZW1vdmVTdGFyKGN0eC5hdXRoLmFjY291bnRfaWQsIHNuaXBwZXRfaWQpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBpc19zdGFycmVkOiBmYWxzZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIHE6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0czogei5hcnJheShzbmlwcGV0U2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBxIH0gPSByZXEucXVlcnlcbiAgY29uc3Qgc25pcHBldHMgPSBjdHguZGIuc2VhcmNoU25pcHBldHMocSlcbiAgcmV0dXJuIGN0eC5qc29uKHsgc25pcHBldHMgfSlcbn0pXG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCIuLi8uLi8uLi9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiLi4vLi4vLi4vbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICAgIGNvZGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHVuc2NvcGVkX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBkdHM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjb21waWxlZF9qczogei5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gICAgY2lyY3VpdF9qc29uOiB6LmFycmF5KHoucmVjb3JkKHouYW55KCkpKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gICAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudDogei5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gICAgc25pcHBldF90eXBlOiB6LmVudW0oW1wiYm9hcmRcIiwgXCJwYWNrYWdlXCIsIFwibW9kZWxcIiwgXCJmb290cHJpbnRcIl0pLm9wdGlvbmFsKCksXG4gICAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBpc191bmxpc3RlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBzbmlwcGV0OiBzbmlwcGV0U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgc25pcHBldF9pZCxcbiAgICBjb2RlLFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIHVuc2NvcGVkX25hbWUsXG4gICAgZHRzLFxuICAgIGNvbXBpbGVkX2pzLFxuICAgIGNpcmN1aXRfanNvbixcbiAgICBzbmlwcGV0X3R5cGUsXG4gICAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudCxcbiAgICBpc19wcml2YXRlLFxuICAgIGlzX3VubGlzdGVkLFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgcGFja2FnZUluZGV4ID0gY3R4LmRiLnBhY2thZ2VzLmZpbmRJbmRleChcbiAgICAocykgPT4gcy5wYWNrYWdlX2lkID09PSBzbmlwcGV0X2lkLFxuICApXG5cbiAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBfcGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlc1twYWNrYWdlSW5kZXhdXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChyKSA9PiByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gX3BhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCxcbiAgKVxuICBjb25zdCBwYWNrYWdlRmlsZXMgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAoZikgPT4gZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlPy5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gIClcbiAgY29uc3QgY29kZUZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAoZikgPT4gZi5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIgfHwgZi5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIixcbiAgKVxuICBjb25zdCBkdHNGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoKGYpID0+IGYuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgY29uc3QgY29tcGlsZWRKc0ZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAoZikgPT4gZi5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIixcbiAgKVxuICBjb25zdCBtYW51YWxFZGl0c0pzb25GaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKGYpID0+IGYuZmlsZV9wYXRoID09PSBcIm1hbnVhbC1lZGl0cy5qc29uXCIsXG4gIClcbiAgY29uc3QgY2lyY3VpdEpzb25GaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKGYpID0+IGYuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiLFxuICApXG5cbiAgaWYgKF9wYWNrYWdlLm93bmVyX2dpdGh1Yl91c2VybmFtZSAhPT0gY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdXBkYXRlIHRoaXMgc25pcHBldFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCB1cGRhdGVkU25pcHBldCA9IGN0eC5kYi51cGRhdGVTbmlwcGV0KHNuaXBwZXRfaWQsIHtcbiAgICBjb2RlOiBjb2RlID8/IGNvZGVGaWxlPy5jb250ZW50X3RleHQgPz8gXCJcIixcbiAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gPz8gX3BhY2thZ2UuZGVzY3JpcHRpb24gPz8gXCJcIixcbiAgICB1bnNjb3BlZF9uYW1lOiB1bnNjb3BlZF9uYW1lID8/IF9wYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgbmFtZTogdW5zY29wZWRfbmFtZVxuICAgICAgPyBgJHtjdHguYXV0aC5naXRodWJfdXNlcm5hbWV9LyR7dW5zY29wZWRfbmFtZX1gXG4gICAgICA6IF9wYWNrYWdlLm5hbWUsXG4gICAgZHRzOiBkdHMgPz8gZHRzRmlsZT8uY29udGVudF90ZXh0ID8/IFwiXCIsXG4gICAgY29tcGlsZWRfanM6IGNvbXBpbGVkX2pzID8/IGNvbXBpbGVkSnNGaWxlPy5jb250ZW50X3RleHQgPz8gXCJcIixcbiAgICBtYW51YWxfZWRpdHNfanNvbl9jb250ZW50OlxuICAgICAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudCAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gbWFudWFsX2VkaXRzX2pzb25fY29udGVudFxuICAgICAgICA6IChtYW51YWxFZGl0c0pzb25GaWxlPy5jb250ZW50X3RleHQgPz8gXCJcIiksXG4gICAgY2lyY3VpdF9qc29uOlxuICAgICAgY2lyY3VpdF9qc29uID8/XG4gICAgICAoY2lyY3VpdEpzb25GaWxlPy5jb250ZW50X3RleHRcbiAgICAgICAgPyBKU09OLnBhcnNlKGNpcmN1aXRKc29uRmlsZS5jb250ZW50X3RleHQpXG4gICAgICAgIDogW10pLFxuICAgIHNuaXBwZXRfdHlwZTogc25pcHBldF90eXBlID8/IF9wYWNrYWdlLnNuaXBwZXRfdHlwZSxcbiAgICBpc19wcml2YXRlOiBpc19wcml2YXRlID8/IF9wYWNrYWdlLmlzX3ByaXZhdGUgPz8gZmFsc2UsXG4gICAgaXNfdW5saXN0ZWQ6IGlzX3VubGlzdGVkID8/IF9wYWNrYWdlLmlzX3VubGlzdGVkID8/IGZhbHNlLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgfSlcblxuICBpZiAoIXVwZGF0ZWRTbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwidXBkYXRlX2ZhaWxlZFwiLFxuICAgICAgbWVzc2FnZTogXCJGYWlsZWQgdG8gdXBkYXRlIHNuaXBwZXRcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBzbmlwcGV0OiB1cGRhdGVkU25pcHBldCxcbiAgfSlcbn0pXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQUEsU0FBUSx1QkFBc0I7QUFDOUIsU0FBUyxvQ0FBb0M7OztBQ0Q3QyxTQUFTLDRCQUE0Qjs7O0FDQ3JDLFNBQVMsYUFBYTtBQUN0QixTQUFTLG1CQUFtQjtBQUU1QixTQUFTLGVBQWU7OztBQ0p4QixTQUFTLFNBQVM7QUFFWCxJQUFNLGNBQWMsRUFDeEIsT0FBTztBQUFBLEVBQ04sWUFBWSxFQUFFLE9BQU87QUFBQSxFQUNyQixTQUFTLEVBQUUsT0FBTztBQUNwQixDQUFDLEVBQ0EsWUFBWTtBQUVSLElBQU0sc0JBQXNCLEVBQUUsT0FBTztBQUFBLEVBQzFDLE9BQU87QUFDVCxDQUFDO0FBRU0sSUFBTSxnQkFBZ0IsRUFBRSxPQUFPO0FBQUEsRUFDcEMsWUFBWSxFQUFFLE9BQU87QUFBQSxFQUNyQixvQkFBb0IsRUFBRSxPQUFPO0FBQUEsRUFDN0IsTUFBTSxFQUFFLE9BQU87QUFBQSxFQUNmLGVBQWUsRUFBRSxPQUFP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Q3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04scUJBQXFCO0FBQUEsUUFDckIsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLFFBQ04sdUJBQXVCLENBQUM7QUFBQSxNQUMxQjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLHdCQUF3QjtBQUFBLFFBQ3hCLFFBQVE7QUFBQSxVQUNOLEdBQUc7QUFBQSxVQUNILEdBQUc7QUFBQSxRQUNMO0FBQUEsUUFDQSxVQUFV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O0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FB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QUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFD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USwrQkFBZ0RDO0FBQUEsRUFBUSxzQkFBdUNSO0FBQUEsRUFBUSw2QkFBOENTO0FBQUEsRUFBUSx3QkFBeUNOO0FBQUEsRUFBUSx3QkFBeUNGO0FBQ2w5SDtBQUVBLElBQU0sYUFBYTtBQUFBLEVBQ2pCLGNBQWMsZ0JBQWdCLE9BQU8sS0FBSyxvQkFBb0IsQ0FBQztBQUFBLEVBQy9EO0FBQUEsRUFDQSxhQUFhLE9BQU8sS0FBSyxZQUFZLDZCQUE2QixZQUFZLE9BQU8sRUFBRSxHQUFHO0FBQzVGO0FBRUEsSUFBTyxnQkFBUTsiLAogICJuYW1lcyI6IFsic2VlZCIsICJzdGF0ZSIsICJwYWNrYWdlUmVsZWFzZSIsICJwYWNrYWdlRmlsZXMiLCAicGtnIiwgImtsZXVyIiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAiZ2V0X2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAiYW55cm91dGVfZGVmYXVsdCIsICJ6IiwgIm9wZW5haSIsICJ6IiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAiZ2V0X2RlZmF1bHQiLCAieiIsICJsaXN0X2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAieiIsICJsaXN0X2RlZmF1bHQiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAieiIsICJsaXN0X2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAicm91dGVTcGVjIiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInJvdXRlU3BlYyIsICJ6IiwgInJvdXRlU3BlYyIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAicm91dGVTcGVjIiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAiY3JlYXRlX2RlZmF1bHQiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgImxpc3RfZGVmYXVsdCIsICJ6IiwgInoiLCAidXBkYXRlX2RlZmF1bHQiLCAicmVsZWFzZSIsICJ6IiwgInBrZyIsICJ6IiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAiZGVsZXRlX2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAicGtnIiwgInoiLCAic2VhcmNoX2RlZmF1bHQiLCAieiIsICJ6IiwgInVwZGF0ZV9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgImFkZF9zdGFyX2RlZmF1bHQiLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImRlbGV0ZV9kZWZhdWx0IiwgInoiLCAiZG93bmxvYWRfZGVmYXVsdCIsICJ6IiwgImZldGNoRWFzeUVEQUNvbXBvbmVudCIsICJjb252ZXJ0UmF3RWFzeUVkYVRvVHMiLCAiZ2VuZXJhdGVfZnJvbV9qbGNwY2JfZGVmYXVsdCIsICJ6IiwgInoiLCAiY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmciLCAiY29udmVydENpcmN1aXRKc29uVG9QY2JTdmciLCAieiIsICJnZXRfZGVmYXVsdCIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub0Fzc2VtYmx5U3ZnIiwgImNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnIiwgImNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnIiwgInoiLCAiY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmciLCAiY29udmVydENpcmN1aXRKc29uVG9QY2JTdmciLCAiY29udmVydENpcmN1aXRKc29uVG9Bc3NlbWJseVN2ZyIsICJ6IiwgImxpc3RfbGF0ZXN0X2RlZmF1bHQiLCAieiIsICJ6IiwgImxpc3RfdHJlbmRpbmdfZGVmYXVsdCIsICJ6IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAieiIsICJyZW1vdmVfc3Rhcl9kZWZhdWx0IiwgInoiLCAic2VhcmNoX2RlZmF1bHQiLCAieiIsICJ6IiwgInVwZGF0ZV9kZWZhdWx0IiwgInoiLCAiZ2V0X2RlZmF1bHQiLCAiYW55cm91dGVfZGVmYXVsdCIsICJjcmVhdGVfZGVmYXVsdCIsICJsaXN0X2RlZmF1bHQiLCAidXBkYXRlX2RlZmF1bHQiLCAiZGVsZXRlX2RlZmF1bHQiLCAic2VhcmNoX2RlZmF1bHQiLCAiYWRkX3N0YXJfZGVmYXVsdCIsICJkb3dubG9hZF9kZWZhdWx0IiwgImdlbmVyYXRlX2Zyb21famxjcGNiX2RlZmF1bHQiLCAibGlzdF9sYXRlc3RfZGVmYXVsdCIsICJsaXN0X3RyZW5kaW5nX2RlZmF1bHQiLCAicmVtb3ZlX3N0YXJfZGVmYXVsdCJdCn0K
8198
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiPHN0ZGluPiIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9kYi1jbGllbnQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvYXV0b2xvYWQtZGV2LXBhY2thZ2VzLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zZWVkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX2ZpbGUvZ2VuZXJhdGUtZnMtc2hhLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtZGIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1jdHgtZXJyb3IudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1zZXNzaW9uLWF1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1vcHRpb25hbC1zZXNzaW9uLWF1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC1lcnJvci1oYW5kbGluZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXJlcXVlc3QtbG9nZ2luZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL2FpX3Jldmlld3MvcHJvY2Vzc19yZXZpZXcudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9kYXRhc2hlZXRzL3Byb2Nlc3NfYWxsX2RhdGFzaGVldHMudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9kYi50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL21vdmVfb3JkZXJzX2ZvcndhcmQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvdXRpbHMvb3JkZXItc3RlcHMudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9yZWNlaXZlZF9xdW90ZXMudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9ydW5fYXN5bmNfdGFza3MudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9zZWVkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvZ2V0X2FjY291bnRfYmFsYW5jZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL3NlYXJjaC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL3VwZGF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FpX3Jldmlld3MvY3JlYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWlfcmV2aWV3cy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haV9yZXZpZXdzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haS9bLi4uYW55cm91dGVdLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWkudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haXN0cmVhbS9bLi4uYW55cm91dGVdLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYXV0b2NvbXBsZXRlL2NyZWF0ZV9hdXRvY29tcGxldGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9kYXRhc2hlZXRzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2RhdGFzaGVldHMvZ2V0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvZGF0YXNoZWV0cy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvZ2l0aHViL2luc3RhbGxhdGlvbnMvY3JlYXRlX25ld19pbnN0YWxsYXRpb25fcmVkaXJlY3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9naXRodWIvcmVwb3MvbGlzdF9hdmFpbGFibGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9naXRodWIvcmVwb3MvcmVmcmVzaC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2hlYWx0aC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9maWxlcy91cGxvYWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9xdW90ZXMvY3JlYXRlX2FsbF92ZW5kb3JfcXVvdGVzLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfcXVvdGVzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX3F1b3Rlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcnMvY3JlYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVycy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9idWlsZHMvZ2V0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2UtYnVpbGQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2J1aWxkcy9saXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX3JlbGVhc2UvZmluZC1wYWNrYWdlLXJlbGVhc2UtaWQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2NyZWF0ZV9vcl91cGRhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvZGVsZXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX2ZpbGUvZ2V0LXBhY2thZ2UtZmlsZS1pZC1mcm9tLWZpbGUtZGVzY3JpcHRvci50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9ub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2Rvd25sb2FkLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9nZXQudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS1yZWxlYXNlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX3JlbGVhc2VzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvbGlzdC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvcmVidWlsZC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvdXBkYXRlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvYWRkX3N0YXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3B1YmxpYy1tYXBwaW5nL3B1YmxpYy1tYXAtcGFja2FnZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2NyZWF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2RlbGV0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2ZvcmsudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9nZW5lcmF0ZV9mcm9tX2psY3BjYi50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2dldC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2ltYWdlcy9bb3duZXJfZ2l0aHViX3VzZXJuYW1lXS9bdW5zY29wZWRfbmFtZV0vW3ZpZXdfZm9ybWF0XS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2xpc3RfbGF0ZXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvbGlzdF90cmVuZGluZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9yZW1vdmVfc3Rhci50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL3NlYXJjaC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL3VwZGF0ZS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3Byb3h5LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvYWRkX3N0YXIudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9jcmVhdGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9kZWxldGUudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9kb3dubG9hZC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2dlbmVyYXRlX2Zyb21famxjcGNiLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2V0X2ltYWdlLnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2V0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvaW1hZ2VzL1thdXRob3JdL1tzbmlwcGV0X25hbWVdL1t0eXBlRm9ybWF0XS50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2xpc3RfbGF0ZXN0LnRzIiwgImZha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdF90cmVuZGluZy50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2xpc3QudHMiLCAiZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9yZW1vdmVfc3Rhci50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3NlYXJjaC50cyIsICJmYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3VwZGF0ZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtnZXRSb3V0ZU1hdGNoZXJ9IGZyb20gXCJuZXh0LXJvdXRlLW1hdGNoZXJcIlxuaW1wb3J0IHsgbWFrZVJlcXVlc3RBZ2FpbnN0V2ludGVyU3BlYyB9IGZyb20gXCJ3aW50ZXJzcGVjXCJcblxuaW1wb3J0ICogYXMgZWl0am5reWlkcmxxa2tyYiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvX2Zha2UvYWlfcmV2aWV3cy9wcm9jZXNzX3Jldmlldy50c1wiXG5pbXBvcnQgKiBhcyBta3huZ2J6ZmhxZ3pzaXZmIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9kYXRhc2hlZXRzL3Byb2Nlc3NfYWxsX2RhdGFzaGVldHMudHNcIlxuaW1wb3J0ICogYXMgbWR4b3V0cGZpenp1Z256ZCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvX2Zha2UvZGIudHNcIlxuaW1wb3J0ICogYXMga2thZXllbWFudXZsY3JncCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvX2Zha2UvbW92ZV9vcmRlcnNfZm9yd2FyZC50c1wiXG5pbXBvcnQgKiBhcyB3c2h1aHJvY2NpdHp1cmJkIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9fZmFrZS9yZWNlaXZlZF9xdW90ZXMudHNcIlxuaW1wb3J0ICogYXMgaWl2am56ZmJxaXVxbnB3aCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvX2Zha2UvcnVuX2FzeW5jX3Rhc2tzLnRzXCJcbmltcG9ydCAqIGFzIHFxdWJodWR3amp5bWpnbWsgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL19mYWtlL3NlZWQudHNcIlxuaW1wb3J0ICogYXMgbHd4Znd6eGh4b2Via2dwcSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvZ2V0X2FjY291bnRfYmFsYW5jZS50c1wiXG5pbXBvcnQgKiBhcyBraG56bXVmb3ZoYnBudW5zIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9hY2NvdW50cy9nZXQudHNcIlxuaW1wb3J0ICogYXMgdmt1cHhla3JkZHZhdG10diBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWNjb3VudHMvc2VhcmNoLnRzXCJcbmltcG9ydCAqIGFzIHdha2R2aXZyd2tzaWtzZHUgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2FjY291bnRzL3VwZGF0ZS50c1wiXG5pbXBvcnQgKiBhcyBhbW15cmJvdW9pemZlbXpsIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haV9yZXZpZXdzL2NyZWF0ZS50c1wiXG5pbXBvcnQgKiBhcyB0bmRxenlia2dxZG9jYWVmIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haV9yZXZpZXdzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBvdm9lbnNqcmdpY3BibGN1IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haV9yZXZpZXdzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgZWVpd2NmZ2lvbWt4cHlnbyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWkudHNcIlxuaW1wb3J0ICogYXMgc2ZiZW9jZXRrbG9kb2hqdCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvYWkvWy4uLmFueXJvdXRlXS50c1wiXG5pbXBvcnQgKiBhcyB6emJlamJncXp1cGlta2FlIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9haXN0cmVhbS9bLi4uYW55cm91dGVdLnRzXCJcbmltcG9ydCAqIGFzIGx6dWpqcHZ3Y3lyb2ZlZGUgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2F1dG9jb21wbGV0ZS9jcmVhdGVfYXV0b2NvbXBsZXRlLnRzXCJcbmltcG9ydCAqIGFzIHh0dGpqbmVmeGd3enpiaXkgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2RhdGFzaGVldHMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIHFqaHlrYnhoeXlpZW54bmIgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2RhdGFzaGVldHMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIGloeHl6c3NzaW51YnJscWcgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2RhdGFzaGVldHMvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyBlYnF0aWZzbmRjY3B6b2lkIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9naXRodWIvaW5zdGFsbGF0aW9ucy9jcmVhdGVfbmV3X2luc3RhbGxhdGlvbl9yZWRpcmVjdC50c1wiXG5pbXBvcnQgKiBhcyBnd3pqZmJicWVka2FsbmxyIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9naXRodWIvcmVwb3MvbGlzdF9hdmFpbGFibGUudHNcIlxuaW1wb3J0ICogYXMgbWJ3ZndyaHRsbnFudG5ubiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvZ2l0aHViL3JlcG9zL3JlZnJlc2gudHNcIlxuaW1wb3J0ICogYXMgaW1tbG5kZ29udWpja2JwbiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvaGVhbHRoLnRzXCJcbmltcG9ydCAqIGFzIHBwemdpeGpqZ3FvY3pvaHogZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGgudHNcIlxuaW1wb3J0ICogYXMgbGdoZ25xbGRmd3V0dHZidSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfZmlsZXMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIHViZmtneXVlbmp0cXFhdW0gZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX2ZpbGVzL3VwbG9hZC50c1wiXG5pbXBvcnQgKiBhcyBlZGR3cm1ydXp6ZmJtdXViIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcl9xdW90ZXMvY3JlYXRlX2FsbF92ZW5kb3JfcXVvdGVzLnRzXCJcbmltcG9ydCAqIGFzIGx1aXFoenl0b3ZpZ2RqemIgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVyX3F1b3Rlcy9jcmVhdGUudHNcIlxuaW1wb3J0ICogYXMgcHd4ZWpkcnpjYXN5emViaiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJfcXVvdGVzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBoc2JjYnBoZWNjY2hjaGpoIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9vcmRlcnMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIGR3dHlwd255cWt5ZXdnbmkgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL29yZGVycy9nZXQudHNcIlxuaW1wb3J0ICogYXMgb2Nya3FzdWlvbHFtenJxbCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvb3JkZXJzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgcXN6d2VlZW50eW9jZnZ2YSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9idWlsZHMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIHhwdHBzanhobGF4cWt1Y3EgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfYnVpbGRzL2xpc3QudHNcIlxuaW1wb3J0ICogYXMgdWllcXR6YWhhbm1kaWhzbCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9jcmVhdGVfb3JfdXBkYXRlLnRzXCJcbmltcG9ydCAqIGFzIGNteWZ4YWVuenBtc2dsaXogZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIGlxdmlkY3ZuZnZxYmdvYWwgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvZGVsZXRlLnRzXCJcbmltcG9ydCAqIGFzIG51YnpsZnN3bGx4bGVlcXYgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfZmlsZXMvZG93bmxvYWQudHNcIlxuaW1wb3J0ICogYXMgZG13aGxranBxeGZrcGpqYyBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9nZXQudHNcIlxuaW1wb3J0ICogYXMgbmNheWVmbHd6aHdoc29ocSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9maWxlcy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIG9ycWRtaXVsZ3J0Y2F6YmUgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIHRpc3NyeHFrcHhqcG9lY2YgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIHF1ZXNoeWFwd3VoY3Vvb2QgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VfcmVsZWFzZXMvbGlzdC50c1wiXG5pbXBvcnQgKiBhcyBvcGhtZGZ6ZHdhdHh1cHVlIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlX3JlbGVhc2VzL3JlYnVpbGQudHNcIlxuaW1wb3J0ICogYXMganB0aHRwZmlueXB0c3RxcSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZV9yZWxlYXNlcy91cGRhdGUudHNcIlxuaW1wb3J0ICogYXMgdGt0dGtndG5kYW5tdmlseiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvYWRkX3N0YXIudHNcIlxuaW1wb3J0ICogYXMgbXRrd25qbnJ1bWt3dGZwdSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIHN2eGZieHZkd2tndm1xbXkgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2RlbGV0ZS50c1wiXG5pbXBvcnQgKiBhcyBocGF6dWNsbG11Y2xhbGJvIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9mb3JrLnRzXCJcbmltcG9ydCAqIGFzIHpkZ2NoYmJsdmpvaXdpY2sgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2dlbmVyYXRlX2Zyb21famxjcGNiLnRzXCJcbmltcG9ydCAqIGFzIHBsdHhmcXBnb3dicmlxemUgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL2dldC50c1wiXG5pbXBvcnQgKiBhcyBucm9qcGNyd2l4anBnem9hIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9pbWFnZXMvW293bmVyX2dpdGh1Yl91c2VybmFtZV0vW3Vuc2NvcGVkX25hbWVdL1t2aWV3X2Zvcm1hdF0udHNcIlxuaW1wb3J0ICogYXMgdmhmam9tbXdpaW9mamt4ayBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvbGlzdF9sYXRlc3QudHNcIlxuaW1wb3J0ICogYXMga3piaGhha3FtY2pyampveSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcGFja2FnZXMvbGlzdF90cmVuZGluZy50c1wiXG5pbXBvcnQgKiBhcyBsdWJpZ2tjbXBxZmpnZ3p1IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIGpkenFybW5pZWdtbW14b3UgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL3JlbW92ZV9zdGFyLnRzXCJcbmltcG9ydCAqIGFzIHVscHlvZ3hlZ3V0dGp5aGkgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3BhY2thZ2VzL3NlYXJjaC50c1wiXG5pbXBvcnQgKiBhcyBhcnJ2cGdyZWRrcWhhYWt0IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9wYWNrYWdlcy91cGRhdGUudHNcIlxuaW1wb3J0ICogYXMgam5veXptenRha2NxbWZ6YiBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvcHJveHkudHNcIlxuaW1wb3J0ICogYXMgZ25tY3l4d3B0dXJlY21lciBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvYWRkX3N0YXIudHNcIlxuaW1wb3J0ICogYXMgeHloYmh5Y3RobWNoZGVmciBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvY3JlYXRlLnRzXCJcbmltcG9ydCAqIGFzIGZvdGtrYXNmdHhpYm5mc2kgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2RlbGV0ZS50c1wiXG5pbXBvcnQgKiBhcyBqempnempwcHJhbXlzemd4IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9kb3dubG9hZC50c1wiXG5pbXBvcnQgKiBhcyBhb214a3ByamVjYWF4ZHp3IGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZW5lcmF0ZV9mcm9tX2psY3BjYi50c1wiXG5pbXBvcnQgKiBhcyBweWtsZG9qeWZjanlqd2xmIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9nZXRfaW1hZ2UudHNcIlxuaW1wb3J0ICogYXMgbW93Zmd1YmF1YnVkd2ZmcCBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvZ2V0LnRzXCJcbmltcG9ydCAqIGFzIHl1amRzYnR2YXZ0Z3JkanogZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL2ltYWdlcy9bYXV0aG9yXS9bc25pcHBldF9uYW1lXS9bdHlwZUZvcm1hdF0udHNcIlxuaW1wb3J0ICogYXMgaWVia3VvYm9zanpla3JjeSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdF9sYXRlc3QudHNcIlxuaW1wb3J0ICogYXMgYW14enNybWt6ZGd4cW1uYSBmcm9tIFwiL2hvbWUvcnVubmVyL3dvcmsvdHNjaXJjdWl0LmNvbS90c2NpcmN1aXQuY29tL2Zha2Utc25pcHBldHMtYXBpL3JvdXRlcy9hcGkvc25pcHBldHMvbGlzdF90cmVuZGluZy50c1wiXG5pbXBvcnQgKiBhcyBzbmhwbWN6bXNwZGp0dHVkIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy9saXN0LnRzXCJcbmltcG9ydCAqIGFzIHBkcndwaXpia2ZmcmFhZWYgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3JlbW92ZV9zdGFyLnRzXCJcbmltcG9ydCAqIGFzIGZsb2RsaW5qcWhrZHljb2sgZnJvbSBcIi9ob21lL3J1bm5lci93b3JrL3RzY2lyY3VpdC5jb20vdHNjaXJjdWl0LmNvbS9mYWtlLXNuaXBwZXRzLWFwaS9yb3V0ZXMvYXBpL3NuaXBwZXRzL3NlYXJjaC50c1wiXG5pbXBvcnQgKiBhcyBodGNxZHdtbXljenBpZG9oIGZyb20gXCIvaG9tZS9ydW5uZXIvd29yay90c2NpcmN1aXQuY29tL3RzY2lyY3VpdC5jb20vZmFrZS1zbmlwcGV0cy1hcGkvcm91dGVzL2FwaS9zbmlwcGV0cy91cGRhdGUudHNcIlxuXG5jb25zdCByb3V0ZU1hcFdpdGhIYW5kbGVycyA9IHtcbiAgXCIvYXBpL19mYWtlL2FpX3Jldmlld3MvcHJvY2Vzc19yZXZpZXdcIjogZWl0am5reWlkcmxxa2tyYi5kZWZhdWx0LFwiL2FwaS9fZmFrZS9kYXRhc2hlZXRzL3Byb2Nlc3NfYWxsX2RhdGFzaGVldHNcIjogbWt4bmdiemZocWd6c2l2Zi5kZWZhdWx0LFwiL2FwaS9fZmFrZS9kYlwiOiBtZHhvdXRwZml6enVnbnpkLmRlZmF1bHQsXCIvYXBpL19mYWtlL21vdmVfb3JkZXJzX2ZvcndhcmRcIjoga2thZXllbWFudXZsY3JncC5kZWZhdWx0LFwiL2FwaS9fZmFrZS9yZWNlaXZlZF9xdW90ZXNcIjogd3NodWhyb2NjaXR6dXJiZC5kZWZhdWx0LFwiL2FwaS9fZmFrZS9ydW5fYXN5bmNfdGFza3NcIjogaWl2am56ZmJxaXVxbnB3aC5kZWZhdWx0LFwiL2FwaS9fZmFrZS9zZWVkXCI6IHFxdWJodWR3amp5bWpnbWsuZGVmYXVsdCxcIi9hcGkvYWNjb3VudHMvZ2V0X2FjY291bnRfYmFsYW5jZVwiOiBsd3hmd3p4aHhvZWJrZ3BxLmRlZmF1bHQsXCIvYXBpL2FjY291bnRzL2dldFwiOiBraG56bXVmb3ZoYnBudW5zLmRlZmF1bHQsXCIvYXBpL2FjY291bnRzL3NlYXJjaFwiOiB2a3VweGVrcmRkdmF0bXR2LmRlZmF1bHQsXCIvYXBpL2FjY291bnRzL3VwZGF0ZVwiOiB3YWtkdml2cndrc2lrc2R1LmRlZmF1bHQsXCIvYXBpL2FpX3Jldmlld3MvY3JlYXRlXCI6IGFtbXlyYm91b2l6ZmVtemwuZGVmYXVsdCxcIi9hcGkvYWlfcmV2aWV3cy9nZXRcIjogdG5kcXp5YmtncWRvY2FlZi5kZWZhdWx0LFwiL2FwaS9haV9yZXZpZXdzL2xpc3RcIjogb3ZvZW5zanJnaWNwYmxjdS5kZWZhdWx0LFwiL2FwaS9haVwiOiBlZWl3Y2ZnaW9ta3hweWdvLmRlZmF1bHQsXCIvYXBpL2FpL1suLi5hbnlyb3V0ZV1cIjogc2ZiZW9jZXRrbG9kb2hqdC5kZWZhdWx0LFwiL2FwaS9haXN0cmVhbS9bLi4uYW55cm91dGVdXCI6IHp6YmVqYmdxenVwaW1rYWUuZGVmYXVsdCxcIi9hcGkvYXV0b2NvbXBsZXRlL2NyZWF0ZV9hdXRvY29tcGxldGVcIjogbHp1ampwdndjeXJvZmVkZS5kZWZhdWx0LFwiL2FwaS9kYXRhc2hlZXRzL2NyZWF0ZVwiOiB4dHRqam5lZnhnd3p6Yml5LmRlZmF1bHQsXCIvYXBpL2RhdGFzaGVldHMvZ2V0XCI6IHFqaHlrYnhoeXlpZW54bmIuZGVmYXVsdCxcIi9hcGkvZGF0YXNoZWV0cy9saXN0XCI6IGloeHl6c3NzaW51YnJscWcuZGVmYXVsdCxcIi9hcGkvZ2l0aHViL2luc3RhbGxhdGlvbnMvY3JlYXRlX25ld19pbnN0YWxsYXRpb25fcmVkaXJlY3RcIjogZWJxdGlmc25kY2Nwem9pZC5kZWZhdWx0LFwiL2FwaS9naXRodWIvcmVwb3MvbGlzdF9hdmFpbGFibGVcIjogZ3d6amZiYnFlZGthbG5sci5kZWZhdWx0LFwiL2FwaS9naXRodWIvcmVwb3MvcmVmcmVzaFwiOiBtYndmd3JodGxucW50bm5uLmRlZmF1bHQsXCIvYXBpL2hlYWx0aFwiOiBpbW1sbmRnb251amNrYnBuLmRlZmF1bHQsXCIvYXBpL2ludGVybmFsL3Nlc3Npb25zL2NyZWF0ZV93aXRob3V0X2F1dGhcIjogcHB6Z2l4ampncW9jem9oei5kZWZhdWx0LFwiL2FwaS9vcmRlcl9maWxlcy9nZXRcIjogbGdoZ25xbGRmd3V0dHZidS5kZWZhdWx0LFwiL2FwaS9vcmRlcl9maWxlcy91cGxvYWRcIjogdWJma2d5dWVuanRxcWF1bS5kZWZhdWx0LFwiL2FwaS9vcmRlcl9xdW90ZXMvY3JlYXRlX2FsbF92ZW5kb3JfcXVvdGVzXCI6IGVkZHdybXJ1enpmYm11dWIuZGVmYXVsdCxcIi9hcGkvb3JkZXJfcXVvdGVzL2NyZWF0ZVwiOiBsdWlxaHp5dG92aWdkanpiLmRlZmF1bHQsXCIvYXBpL29yZGVyX3F1b3Rlcy9nZXRcIjogcHd4ZWpkcnpjYXN5emViai5kZWZhdWx0LFwiL2FwaS9vcmRlcnMvY3JlYXRlXCI6IGhzYmNicGhlY2NjaGNoamguZGVmYXVsdCxcIi9hcGkvb3JkZXJzL2dldFwiOiBkd3R5cHdueXFreWV3Z25pLmRlZmF1bHQsXCIvYXBpL29yZGVycy9saXN0XCI6IG9jcmtxc3Vpb2xxbXpycWwuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9idWlsZHMvZ2V0XCI6IHFzendlZWVudHlvY2Z2dmEuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9idWlsZHMvbGlzdFwiOiB4cHRwc2p4aGxheHFrdWNxLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfZmlsZXMvY3JlYXRlX29yX3VwZGF0ZVwiOiB1aWVxdHphaGFubWRpaHNsLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfZmlsZXMvY3JlYXRlXCI6IGNteWZ4YWVuenBtc2dsaXouZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9maWxlcy9kZWxldGVcIjogaXF2aWRjdm5mdnFiZ29hbC5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX2ZpbGVzL2Rvd25sb2FkXCI6IG51YnpsZnN3bGx4bGVlcXYuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9maWxlcy9nZXRcIjogZG13aGxranBxeGZrcGpqYy5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX2ZpbGVzL2xpc3RcIjogbmNheWVmbHd6aHdoc29ocS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlX3JlbGVhc2VzL2NyZWF0ZVwiOiBvcnFkbWl1bGdydGNhemJlLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VfcmVsZWFzZXMvZ2V0XCI6IHRpc3NyeHFrcHhqcG9lY2YuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy9saXN0XCI6IHF1ZXNoeWFwd3VoY3Vvb2QuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy9yZWJ1aWxkXCI6IG9waG1kZnpkd2F0eHVwdWUuZGVmYXVsdCxcIi9hcGkvcGFja2FnZV9yZWxlYXNlcy91cGRhdGVcIjoganB0aHRwZmlueXB0c3RxcS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9hZGRfc3RhclwiOiB0a3R0a2d0bmRhbm12aWx6LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2NyZWF0ZVwiOiBtdGt3bmpucnVta3d0ZnB1LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2RlbGV0ZVwiOiBzdnhmYnh2ZHdrZ3ZtcW15LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2ZvcmtcIjogaHBhenVjbGxtdWNsYWxiby5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9nZW5lcmF0ZV9mcm9tX2psY3BjYlwiOiB6ZGdjaGJibHZqb2l3aWNrLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2dldFwiOiBwbHR4ZnFwZ293YnJpcXplLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2ltYWdlcy9bb3duZXJfZ2l0aHViX3VzZXJuYW1lXS9bdW5zY29wZWRfbmFtZV0vW3ZpZXdfZm9ybWF0XVwiOiBucm9qcGNyd2l4anBnem9hLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2xpc3RfbGF0ZXN0XCI6IHZoZmpvbW13aWlvZmpreGsuZGVmYXVsdCxcIi9hcGkvcGFja2FnZXMvbGlzdF90cmVuZGluZ1wiOiBremJoaGFrcW1janJqam95LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL2xpc3RcIjogbHViaWdrY21wcWZqZ2d6dS5kZWZhdWx0LFwiL2FwaS9wYWNrYWdlcy9yZW1vdmVfc3RhclwiOiBqZHpxcm1uaWVnbW1teG91LmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL3NlYXJjaFwiOiB1bHB5b2d4ZWd1dHRqeWhpLmRlZmF1bHQsXCIvYXBpL3BhY2thZ2VzL3VwZGF0ZVwiOiBhcnJ2cGdyZWRrcWhhYWt0LmRlZmF1bHQsXCIvYXBpL3Byb3h5XCI6IGpub3l6bXp0YWtjcW1memIuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvYWRkX3N0YXJcIjogZ25tY3l4d3B0dXJlY21lci5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9jcmVhdGVcIjogeHloYmh5Y3RobWNoZGVmci5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9kZWxldGVcIjogZm90a2thc2Z0eGlibmZzaS5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9kb3dubG9hZFwiOiBqempnempwcHJhbXlzemd4LmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2dlbmVyYXRlX2Zyb21famxjcGNiXCI6IGFvbXhrcHJqZWNhYXhkencuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvZ2V0X2ltYWdlXCI6IHB5a2xkb2p5ZmNqeWp3bGYuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvZ2V0XCI6IG1vd2ZndWJhdWJ1ZHdmZnAuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvaW1hZ2VzL1thdXRob3JdL1tzbmlwcGV0X25hbWVdL1t0eXBlRm9ybWF0XVwiOiB5dWpkc2J0dmF2dGdyZGp6LmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2xpc3RfbGF0ZXN0XCI6IGllYmt1b2Jvc2p6ZWtyY3kuZGVmYXVsdCxcIi9hcGkvc25pcHBldHMvbGlzdF90cmVuZGluZ1wiOiBhbXh6c3Jta3pkZ3hxbW5hLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL2xpc3RcIjogc25ocG1jem1zcGRqdHR1ZC5kZWZhdWx0LFwiL2FwaS9zbmlwcGV0cy9yZW1vdmVfc3RhclwiOiBwZHJ3cGl6YmtmZnJhYWVmLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL3NlYXJjaFwiOiBmbG9kbGluanFoa2R5Y29rLmRlZmF1bHQsXCIvYXBpL3NuaXBwZXRzL3VwZGF0ZVwiOiBodGNxZHdtbXljenBpZG9oLmRlZmF1bHRcbn1cblxuY29uc3Qgd2ludGVyU3BlYyA9IHtcbiAgcm91dGVNYXRjaGVyOiBnZXRSb3V0ZU1hdGNoZXIoT2JqZWN0LmtleXMocm91dGVNYXBXaXRoSGFuZGxlcnMpKSxcbiAgcm91dGVNYXBXaXRoSGFuZGxlcnMsXG4gIG1ha2VSZXF1ZXN0OiBhc3luYyAocmVxLCBvcHRpb25zKSA9PiBtYWtlUmVxdWVzdEFnYWluc3RXaW50ZXJTcGVjKHdpbnRlclNwZWMsIG9wdGlvbnMpKHJlcSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgd2ludGVyU3BlYyIsICJpbXBvcnQgeyBjcmVhdGVXaXRoV2ludGVyU3BlYyB9IGZyb20gXCJ3aW50ZXJzcGVjXCJcbmltcG9ydCB7IHdpdGhEYiB9IGZyb20gXCIuL3dpdGgtZGJcIlxuaW1wb3J0IHsgY3JlYXRlV2l0aERlZmF1bHRFeGNlcHRpb25IYW5kbGluZyB9IGZyb20gXCJ3aW50ZXJzcGVjL21pZGRsZXdhcmVcIlxuaW1wb3J0IHsgd2l0aEN0eEVycm9yIH0gZnJvbSBcIi4vd2l0aC1jdHgtZXJyb3JcIlxuaW1wb3J0IHsgd2l0aFNlc3Npb25BdXRoIH0gZnJvbSBcIi4vd2l0aC1zZXNzaW9uLWF1dGhcIlxuaW1wb3J0IHsgd2l0aE9wdGlvbmFsU2Vzc2lvbkF1dGggfSBmcm9tIFwiLi93aXRoLW9wdGlvbmFsLXNlc3Npb24tYXV0aFwiXG5pbXBvcnQgeyB3aXRoRXJyb3JIYW5kbGluZyB9IGZyb20gXCIuL3dpdGgtZXJyb3ItaGFuZGxpbmdcIlxuaW1wb3J0IHsgd2l0aFJlcXVlc3RMb2dnaW5nIH0gZnJvbSBcIi4vd2l0aC1yZXF1ZXN0LWxvZ2dpbmdcIlxuXG5leHBvcnQgY29uc3Qgd2l0aFJvdXRlU3BlYyA9IGNyZWF0ZVdpdGhXaW50ZXJTcGVjKHtcbiAgYXBpTmFtZTogXCJ0c2NpcmN1aXQgU25pcHBldHMgQVBJXCIsXG4gIHByb2R1Y3Rpb25TZXJ2ZXJVcmw6IFwiaHR0cHM6Ly9zbmlwcGV0cy50c2NpcmN1aXQuY29tL2FwaVwiLFxuICBiZWZvcmVBdXRoTWlkZGxld2FyZTogW3dpdGhSZXF1ZXN0TG9nZ2luZywgd2l0aEVycm9ySGFuZGxpbmcsIHdpdGhDdHhFcnJvcl0sXG4gIGF1dGhNaWRkbGV3YXJlOiB7XG4gICAgc2Vzc2lvbjogd2l0aFNlc3Npb25BdXRoLFxuICAgIG9wdGlvbmFsX3Nlc3Npb246IHdpdGhPcHRpb25hbFNlc3Npb25BdXRoLFxuICB9LFxuICBhZnRlckF1dGhNaWRkbGV3YXJlOiBbXG4gICAgd2l0aERiLFxuICAgIGNyZWF0ZVdpdGhEZWZhdWx0RXhjZXB0aW9uSGFuZGxpbmcoe1xuICAgICAgaW5jbHVkZVN0YWNrVHJhY2VJblJlc3BvbnNlOiB0cnVlLFxuICAgIH0pLFxuICBdLFxufSlcbiIsICJpbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IGhvaXN0IH0gZnJvbSBcInp1c3RhbmQtaG9pc3RcIlxuaW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBmcm9tIFwienVzdGFuZC92YW5pbGxhXCJcblxuaW1wb3J0IHsgY29tYmluZSB9IGZyb20gXCJ6dXN0YW5kL21pZGRsZXdhcmVcIlxuaW1wb3J0IHtcbiAgdHlwZSBBY2NvdW50LFxuICB0eXBlIEFjY291bnRQYWNrYWdlLFxuICB0eXBlIEpsY3BjYk9yZGVyU3RhdGUsXG4gIHR5cGUgSmxjcGNiT3JkZXJTdGVwUnVuLFxuICB0eXBlIExvZ2luUGFnZSxcbiAgdHlwZSBPcmRlcixcbiAgdHlwZSBPcmRlckZpbGUsXG4gIE9yZGVyUXVvdGUsXG4gIHR5cGUgUGFja2FnZSxcbiAgdHlwZSBQYWNrYWdlRmlsZSxcbiAgdHlwZSBQYWNrYWdlUmVsZWFzZSxcbiAgcGFja2FnZVJlbGVhc2VTY2hlbWEsXG4gIHR5cGUgUGFja2FnZUJ1aWxkLFxuICB0eXBlIEFpUmV2aWV3LFxuICBhaVJldmlld1NjaGVtYSxcbiAgdHlwZSBEYXRhc2hlZXQsXG4gIGRhdGFzaGVldFNjaGVtYSxcbiAgdHlwZSBTZXNzaW9uLFxuICB0eXBlIFNuaXBwZXQsXG4gIGRhdGFiYXNlU2NoZW1hLFxuICB0eXBlIHBhY2thZ2VTY2hlbWEsXG4gIHR5cGUgc25pcHBldFNjaGVtYSxcbn0gZnJvbSBcIi4vc2NoZW1hLnRzXCJcbmltcG9ydCB7IHNlZWQgYXMgc2VlZEZuIH0gZnJvbSBcIi4vc2VlZFwiXG5pbXBvcnQgeyBnZW5lcmF0ZUZzU2hhIH0gZnJvbSBcIi4uL3BhY2thZ2VfZmlsZS9nZW5lcmF0ZS1mcy1zaGFcIlxuXG5leHBvcnQgY29uc3QgY3JlYXRlRGF0YWJhc2UgPSAoeyBzZWVkIH06IHsgc2VlZD86IGJvb2xlYW4gfSA9IHt9KSA9PiB7XG4gIGNvbnN0IGRiID0gaG9pc3QoY3JlYXRlU3RvcmUoaW5pdGlhbGl6ZXIpKVxuICBpZiAoc2VlZCkge1xuICAgIHNlZWRGbihkYilcbiAgfVxuICByZXR1cm4gZGJcbn1cblxuZXhwb3J0IHR5cGUgRGJDbGllbnQgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVEYXRhYmFzZT5cblxuY29uc3QgaW5pdGlhbGl6ZXIgPSBjb21iaW5lKGRhdGFiYXNlU2NoZW1hLnBhcnNlKHt9KSwgKHNldCwgZ2V0KSA9PiAoe1xuICBhZGRPcmRlcjogKG9yZGVyOiBPbWl0PE9yZGVyLCBcIm9yZGVyX2lkXCI+KTogT3JkZXIgPT4ge1xuICAgIGNvbnN0IG5ld09yZGVyID0geyBvcmRlcl9pZDogYG9yZGVyXyR7Z2V0KCkuaWRDb3VudGVyICsgMX1gLCAuLi5vcmRlciB9XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3JkZXJzOiBbLi4uc3RhdGUub3JkZXJzLCBuZXdPcmRlcl0sXG4gICAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBuZXdPcmRlclxuICB9LFxuICBnZXRPcmRlckJ5SWQ6IChvcmRlcklkOiBzdHJpbmcpOiBPcmRlciB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmRlcnMuZmluZCgob3JkZXIpID0+IG9yZGVyLm9yZGVyX2lkID09PSBvcmRlcklkKVxuICB9LFxuICBnZXRPcmRlckZpbGVzQnlPcmRlcklkOiAob3JkZXJJZDogc3RyaW5nKTogT3JkZXJGaWxlW10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUub3JkZXJGaWxlcy5maWx0ZXIoKGZpbGUpID0+IGZpbGUub3JkZXJfaWQgPT09IG9yZGVySWQpXG4gIH0sXG4gIGFkZE9yZGVyUXVvdGU6ICh7XG4gICAgYWNjb3VudF9pZCxcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgdmVuZG9yX25hbWUsXG4gIH06IHtcbiAgICBhY2NvdW50X2lkOiBzdHJpbmdcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ/OiBzdHJpbmdcbiAgICB2ZW5kb3JfbmFtZTogc3RyaW5nXG4gIH0pOiBzdHJpbmcgPT4ge1xuICAgIC8vIERldGFpbHMgZm9yIHRoZSBvcmRlciBxdW90ZSB3aWxsIGJlIHVwZGF0ZWQgYnkgdGhlIGpvYiB3aXRoIHRoZSBjb3N0XG4gICAgY29uc3QgbmV3T3JkZXJRdW90ZSA9IHtcbiAgICAgIG9yZGVyX3F1b3RlX2lkOiBgb3JkZXJfcXVvdGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICBhY2NvdW50X2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlX3JlbGVhc2VfaWQgPz8gbnVsbCxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIGNvbXBsZXRlZF9hdDogbnVsbCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgaGFzX2Vycm9yOiBmYWxzZSxcbiAgICAgIGlzX2NvbXBsZXRlZDogZmFsc2UsXG4gICAgICBpc19wcm9jZXNzaW5nOiB0cnVlLFxuICAgICAgdmVuZG9yX25hbWUsXG4gICAgICBxdW90ZWRfY29tcG9uZW50czogW10sXG4gICAgICBiYXJlX3BjYl9jb3N0OiAwLFxuICAgICAgc2hpcHBpbmdfb3B0aW9uczogW10sXG4gICAgICB0b3RhbF9jb3N0X3dpdGhvdXRfc2hpcHBpbmc6IDAsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yZGVyUXVvdGVzOiBbLi4uc3RhdGUub3JkZXJRdW90ZXMsIG5ld09yZGVyUXVvdGVdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbmV3T3JkZXJRdW90ZS5vcmRlcl9xdW90ZV9pZFxuICB9LFxuICBnZXRPcmRlclF1b3RlQnlJZDogKG9yZGVyUXVvdGVJZDogc3RyaW5nKTogT3JkZXJRdW90ZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5vcmRlclF1b3Rlcy5maW5kKFxuICAgICAgKHF1b3RlKSA9PiBxdW90ZS5vcmRlcl9xdW90ZV9pZCA9PT0gb3JkZXJRdW90ZUlkLFxuICAgIClcbiAgfSxcbiAgZ2V0SmxjcGNiT3JkZXJTdGF0ZXNCeU9yZGVySWQ6IChcbiAgICBvcmRlcklkOiBzdHJpbmcsXG4gICk6IEpsY3BjYk9yZGVyU3RhdGUgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuamxjcGNiT3JkZXJTdGF0ZS5maW5kKChzdGF0ZSkgPT4gc3RhdGUub3JkZXJfaWQgPT09IG9yZGVySWQpXG4gIH0sXG4gIGdldEpsY3BjYk9yZGVyU3RlcFJ1bnNCeUpsY3BjYk9yZGVyU3RhdGVJZDogKFxuICAgIGpsY3BjYk9yZGVyU3RhdGVJZDogc3RyaW5nLFxuICApOiBKbGNwY2JPcmRlclN0ZXBSdW5bXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5qbGNwY2JPcmRlclN0ZXBSdW5zXG4gICAgICAuZmlsdGVyKChzdGVwUnVuKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZGVyU3RhdGUgPSBzdGF0ZS5qbGNwY2JPcmRlclN0YXRlLmZpbmQoXG4gICAgICAgICAgKHN0YXRlKSA9PlxuICAgICAgICAgICAgc3RhdGUuamxjcGNiX29yZGVyX3N0YXRlX2lkID09PSBzdGVwUnVuLmpsY3BjYl9vcmRlcl9zdGF0ZV9pZCxcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gb3JkZXJTdGF0ZT8ub3JkZXJfaWQgPT09IGpsY3BjYk9yZGVyU3RhdGVJZFxuICAgICAgfSlcbiAgICAgIC5zb3J0KFxuICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpLFxuICAgICAgKVxuICB9LFxuICB1cGRhdGVPcmRlcjogKG9yZGVySWQ6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxPcmRlcj4pID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgb3JkZXJzOiBzdGF0ZS5vcmRlcnMubWFwKChvcmRlcikgPT5cbiAgICAgICAgb3JkZXIub3JkZXJfaWQgPT09IG9yZGVySWQgPyB7IC4uLm9yZGVyLCAuLi51cGRhdGVzIH0gOiBvcmRlcixcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGFkZEpsY3BjYk9yZGVyU3RhdGU6IChcbiAgICBvcmRlclN0YXRlOiBPbWl0PEpsY3BjYk9yZGVyU3RhdGUsIFwiamxjcGNiX29yZGVyX3N0YXRlX2lkXCI+LFxuICApOiBKbGNwY2JPcmRlclN0YXRlID0+IHtcbiAgICBjb25zdCBuZXdPcmRlclN0YXRlID0ge1xuICAgICAgamxjcGNiX29yZGVyX3N0YXRlX2lkOiBgb3JkZXJfc3RhdGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5vcmRlclN0YXRlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBqbGNwY2JPcmRlclN0YXRlOiBbLi4uc3RhdGUuamxjcGNiT3JkZXJTdGF0ZSwgbmV3T3JkZXJTdGF0ZV0sXG4gICAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBuZXdPcmRlclN0YXRlXG4gIH0sXG4gIHVwZGF0ZUpsY3BjYk9yZGVyU3RhdGU6IChcbiAgICBvcmRlcklkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxKbGNwY2JPcmRlclN0YXRlPixcbiAgKSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGpsY3BjYk9yZGVyU3RhdGU6IHN0YXRlLmpsY3BjYk9yZGVyU3RhdGUubWFwKChvcmRlclN0YXRlKSA9PlxuICAgICAgICBvcmRlclN0YXRlLm9yZGVyX2lkID09PSBvcmRlcklkXG4gICAgICAgICAgPyB7IC4uLm9yZGVyU3RhdGUsIC4uLnVwZGF0ZXMgfVxuICAgICAgICAgIDogb3JkZXJTdGF0ZSxcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGFkZE9yZGVyRmlsZTogKG9yZGVyRmlsZTogT21pdDxPcmRlckZpbGUsIFwib3JkZXJfZmlsZV9pZFwiPik6IE9yZGVyRmlsZSA9PiB7XG4gICAgY29uc3QgbmV3T3JkZXJGaWxlID0ge1xuICAgICAgb3JkZXJfZmlsZV9pZDogYG9yZGVyX2ZpbGVfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5vcmRlckZpbGUsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yZGVyRmlsZXM6IFsuLi5zdGF0ZS5vcmRlckZpbGVzLCBuZXdPcmRlckZpbGVdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbmV3T3JkZXJGaWxlXG4gIH0sXG4gIGdldE9yZGVyRmlsZUJ5SWQ6IChvcmRlckZpbGVJZDogc3RyaW5nKTogT3JkZXJGaWxlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLm9yZGVyRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5vcmRlcl9maWxlX2lkID09PSBvcmRlckZpbGVJZClcbiAgfSxcbiAgYWRkQWNjb3VudDogKFxuICAgIGFjY291bnQ6IE9taXQ8QWNjb3VudCwgXCJhY2NvdW50X2lkXCI+ICYgUGFydGlhbDxQaWNrPEFjY291bnQsIFwiYWNjb3VudF9pZFwiPj4sXG4gICkgPT4ge1xuICAgIGNvbnN0IG5ld0FjY291bnQgPSB7XG4gICAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQgfHwgYGFjY291bnRfJHtnZXQoKS5pZENvdW50ZXIgKyAxfWAsXG4gICAgICAuLi5hY2NvdW50LFxuICAgIH1cblxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjY291bnRzOiBbLi4uc3RhdGUuYWNjb3VudHMsIG5ld0FjY291bnRdLFxuICAgICAgICBpZENvdW50ZXI6IHN0YXRlLmlkQ291bnRlciArIDEsXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBuZXdBY2NvdW50XG4gIH0sXG4gIGFkZEFjY291bnRQYWNrYWdlOiAoXG4gICAgYWNjb3VudFBhY2thZ2U6IE9taXQ8QWNjb3VudFBhY2thZ2UsIFwiYWNjb3VudF9wYWNrYWdlX2lkXCI+LFxuICApOiBBY2NvdW50UGFja2FnZSA9PiB7XG4gICAgY29uc3QgbmV3QWNjb3VudFBhY2thZ2UgPSB7XG4gICAgICBhY2NvdW50X3BhY2thZ2VfaWQ6IGBhcF8ke2dldCgpLmlkQ291bnRlciArIDF9YCxcbiAgICAgIC4uLmFjY291bnRQYWNrYWdlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50UGFja2FnZXM6IFsuLi5zdGF0ZS5hY2NvdW50UGFja2FnZXMsIG5ld0FjY291bnRQYWNrYWdlXSxcbiAgICAgICAgaWRDb3VudGVyOiBzdGF0ZS5pZENvdW50ZXIgKyAxLFxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIG5ld0FjY291bnRQYWNrYWdlXG4gIH0sXG4gIGdldEFjY291bnRQYWNrYWdlQnlJZDogKFxuICAgIGFjY291bnRQYWNrYWdlSWQ6IHN0cmluZyxcbiAgKTogQWNjb3VudFBhY2thZ2UgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWNjb3VudFBhY2thZ2VzLmZpbmQoXG4gICAgICAoYXApID0+IGFwLmFjY291bnRfcGFja2FnZV9pZCA9PT0gYWNjb3VudFBhY2thZ2VJZCxcbiAgICApXG4gIH0sXG4gIHVwZGF0ZUFjY291bnRQYWNrYWdlOiAoXG4gICAgYWNjb3VudFBhY2thZ2VJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8QWNjb3VudFBhY2thZ2U+LFxuICApOiB2b2lkID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgYWNjb3VudFBhY2thZ2VzOiBzdGF0ZS5hY2NvdW50UGFja2FnZXMubWFwKChhcCkgPT5cbiAgICAgICAgYXAuYWNjb3VudF9wYWNrYWdlX2lkID09PSBhY2NvdW50UGFja2FnZUlkID8geyAuLi5hcCwgLi4udXBkYXRlcyB9IDogYXAsXG4gICAgICApLFxuICAgIH0pKVxuICB9LFxuICBkZWxldGVBY2NvdW50UGFja2FnZTogKGFjY291bnRQYWNrYWdlSWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGxldCBkZWxldGVkID0gZmFsc2VcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgICAgIChhcCkgPT4gYXAuYWNjb3VudF9wYWNrYWdlX2lkID09PSBhY2NvdW50UGFja2FnZUlkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc3BsaWNlKGluZGV4LCAxKVxuICAgICAgICBkZWxldGVkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0YXRlXG4gICAgfSlcbiAgICByZXR1cm4gZGVsZXRlZFxuICB9LFxuICBhZGRTbmlwcGV0OiAoXG4gICAgc25pcHBldDogT21pdDxcbiAgICAgIHouaW5wdXQ8dHlwZW9mIHNuaXBwZXRTY2hlbWE+LFxuICAgICAgXCJzbmlwcGV0X2lkXCIgfCBcInBhY2thZ2VfcmVsZWFzZV9pZFwiXG4gICAgPiAmIHtcbiAgICAgIGNyZWF0b3JfYWNjb3VudF9pZD86IHN0cmluZ1xuICAgICAgZ2l0aHViX3JlcG9fZnVsbF9uYW1lPzogc3RyaW5nXG4gICAgICBicmFuY2hfbmFtZT86IHN0cmluZ1xuICAgICAgY29tbWl0X21lc3NhZ2U/OiBzdHJpbmdcbiAgICAgIGNvbW1pdF9hdXRob3I/OiBzdHJpbmdcbiAgICB9LFxuICApOiBTbmlwcGV0ID0+IHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpXG4gICAgY29uc3QgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApLnRvSVNPU3RyaW5nKClcblxuICAgIGNvbnN0IG5ld1N0YXRlID0gZ2V0KClcbiAgICBjb25zdCBuZXh0SWQgPSBuZXdTdGF0ZS5pZENvdW50ZXIgKyAxXG5cbiAgICAvLyBDcmVhdGUgdGhlIHBhY2thZ2UgdGhhdCB3aWxsIHNlcnZlIGFzIG91ciBzbmlwcGV0XG4gICAgY29uc3QgbmV3UGFja2FnZSA9IHtcbiAgICAgIHBhY2thZ2VfaWQ6IGBwa2dfJHtuZXh0SWR9YCxcbiAgICAgIGNyZWF0b3JfYWNjb3VudF9pZDogc25pcHBldC5jcmVhdG9yX2FjY291bnRfaWQgPz8gc25pcHBldC5vd25lcl9uYW1lLCAvLyBVc2luZyBvd25lcl9uYW1lIGFzIGFjY291bnRfaWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBjb250ZXh0XG4gICAgICBvd25lcl9vcmdfaWQ6IFwiXCIsIC8vIEVtcHR5IHN0cmluZyBpbnN0ZWFkIG9mIG51bGwgdG8gbWF0Y2ggdHlwZVxuICAgICAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiBzbmlwcGV0Lm93bmVyX25hbWUsXG4gICAgICBpc19zb3VyY2VfZnJvbV9naXRodWI6IGZhbHNlLFxuICAgICAgZGVzY3JpcHRpb246IHNuaXBwZXQuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIG5hbWU6IGAke3NuaXBwZXQub3duZXJfbmFtZX0vJHtzbmlwcGV0LnVuc2NvcGVkX25hbWV9YCxcbiAgICAgIHVuc2NvcGVkX25hbWU6IHNuaXBwZXQudW5zY29wZWRfbmFtZSxcbiAgICAgIGxhdGVzdF92ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgICBsaWNlbnNlOiBudWxsLFxuICAgICAgd2Vic2l0ZTogbnVsbCxcbiAgICAgIHN0YXJfY291bnQ6IDAsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHVwZGF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgZ2l0aHViX3JlcG9fZnVsbF9uYW1lOiBzbmlwcGV0LmdpdGh1Yl9yZXBvX2Z1bGxfbmFtZSB8fCBudWxsLFxuICAgICAgYWlfZGVzY3JpcHRpb246IFwicGxhY2Vob2xkZXIgYWkgZGVzY3JpcHRpb25cIixcbiAgICAgIGFpX3VzYWdlX2luc3RydWN0aW9uczogXCJwbGFjZWhvbGRlciBhaSB1c2FnZSBpbnN0cnVjdGlvbnNcIixcbiAgICAgIGlzX3NuaXBwZXQ6IHRydWUsXG4gICAgICBpc19ib2FyZDogc25pcHBldC5zbmlwcGV0X3R5cGUgPT09IFwiYm9hcmRcIixcbiAgICAgIGlzX3BhY2thZ2U6IHNuaXBwZXQuc25pcHBldF90eXBlID09PSBcInBhY2thZ2VcIixcbiAgICAgIGlzX21vZGVsOiBzbmlwcGV0LnNuaXBwZXRfdHlwZSA9PT0gXCJtb2RlbFwiLFxuICAgICAgaXNfZm9vdHByaW50OiBzbmlwcGV0LnNuaXBwZXRfdHlwZSA9PT0gXCJmb290cHJpbnRcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogc25pcHBldC5zbmlwcGV0X3R5cGUsXG4gICAgICBpc19wcml2YXRlOiBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiBmYWxzZSxcbiAgICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IGBwYWNrYWdlX3JlbGVhc2VfJHtuZXh0SWR9YCxcbiAgICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfZnNfc2hhOiBudWxsLFxuICAgIH1cblxuICAgIC8vIENyZWF0ZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBjb25zdCBuZXdQYWNrYWdlUmVsZWFzZSA9IHBhY2thZ2VSZWxlYXNlU2NoZW1hLnBhcnNlKHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogYHBhY2thZ2VfcmVsZWFzZV8ke25leHRJZH1gLFxuICAgICAgcGFja2FnZV9pZDogbmV3UGFja2FnZS5wYWNrYWdlX2lkLFxuICAgICAgdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgaXNfbGF0ZXN0OiB0cnVlLFxuICAgICAgaXNfbG9ja2VkOiBmYWxzZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgdXBkYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICBicmFuY2hfbmFtZTogc25pcHBldC5icmFuY2hfbmFtZSxcbiAgICAgIGNvbW1pdF9tZXNzYWdlOiBzbmlwcGV0LmNvbW1pdF9tZXNzYWdlLFxuICAgICAgY29tbWl0X2F1dGhvcjogc25pcHBldC5jb21taXRfYXV0aG9yLFxuICAgICAgaGFzX3RyYW5zcGlsZWQ6IHRydWUsXG4gICAgICB0cmFuc3BpbGF0aW9uX2Vycm9yOiBudWxsLFxuICAgICAgLi4uKHNuaXBwZXQubmFtZSA9PSBcInRlc3R1c2VyL215LXRlc3QtYm9hcmRcIlxuICAgICAgICA/IHsgaXNfcHJfcHJldmlldzogdHJ1ZSwgZ2l0aHViX3ByX251bWJlcjogNjkgfVxuICAgICAgICA6IHt9KSxcbiAgICB9KVxuXG4gICAgLy8gQWRkIGFsbCB0aGUgZmlsZXNcbiAgICBjb25zdCBwYWNrYWdlRmlsZXM6IFBhY2thZ2VGaWxlW10gPSBbXVxuICAgIGxldCBmaWxlSWRDb3VudGVyID0gbmV4dElkXG5cbiAgICAvLyBBZGQgbWFpbiBjb2RlIGZpbGVcbiAgICBwYWNrYWdlRmlsZXMucHVzaCh7XG4gICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtmaWxlSWRDb3VudGVyKyt9YCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgZmlsZV9wYXRoOiBcImluZGV4LnRzeFwiLFxuICAgICAgY29udGVudF90ZXh0OiBzbmlwcGV0LmNvZGUgfHwgXCJcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgIH0pXG5cbiAgICAvLyBBZGQgRFRTIGZpbGUgaWYgcHJvdmlkZWRcbiAgICBpZiAoc25pcHBldC5kdHMpIHtcbiAgICAgIHBhY2thZ2VGaWxlcy5wdXNoKHtcbiAgICAgICAgcGFja2FnZV9maWxlX2lkOiBgcGFja2FnZV9maWxlXyR7ZmlsZUlkQ291bnRlcisrfWAsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICBjb250ZW50X3RleHQ6IHNuaXBwZXQuZHRzLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQWRkIGNvbXBpbGVkIEpTIGlmIHByb3ZpZGVkXG4gICAgaWYgKHNuaXBwZXQuY29tcGlsZWRfanMpIHtcbiAgICAgIHBhY2thZ2VGaWxlcy5wdXNoKHtcbiAgICAgICAgcGFja2FnZV9maWxlX2lkOiBgcGFja2FnZV9maWxlXyR7ZmlsZUlkQ291bnRlcisrfWAsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvaW5kZXguanNcIixcbiAgICAgICAgY29udGVudF90ZXh0OiBzbmlwcGV0LmNvbXBpbGVkX2pzLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQWRkIGNpcmN1aXQgSlNPTiBpZiBwcm92aWRlZFxuICAgIGlmIChzbmlwcGV0LmNpcmN1aXRfanNvbiAmJiBzbmlwcGV0LmNpcmN1aXRfanNvbi5sZW5ndGggPiAwKSB7XG4gICAgICBwYWNrYWdlRmlsZXMucHVzaCh7XG4gICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke2ZpbGVJZENvdW50ZXIrK31gLFxuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2NpcmN1aXQuanNvblwiLFxuICAgICAgICBjb250ZW50X3RleHQ6IEpTT04uc3RyaW5naWZ5KHNuaXBwZXQuY2lyY3VpdF9qc29uKSxcbiAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgZGF0YWJhc2Ugc3RhdGUgYXRvbWljYWxseVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHBhY2thZ2VzOiBbLi4uc3RhdGUucGFja2FnZXMsIG5ld1BhY2thZ2VdLFxuICAgICAgcGFja2FnZVJlbGVhc2VzOiBbLi4uc3RhdGUucGFja2FnZVJlbGVhc2VzLCBuZXdQYWNrYWdlUmVsZWFzZV0sXG4gICAgICBwYWNrYWdlRmlsZXM6IFsuLi5zdGF0ZS5wYWNrYWdlRmlsZXMsIC4uLnBhY2thZ2VGaWxlc10sXG4gICAgICBpZENvdW50ZXI6IGZpbGVJZENvdW50ZXIsXG4gICAgfSkpXG5cbiAgICAvLyBVcGRhdGUgZnNfc2hhIGZvciB0aGUgbmV3IHBhY2thZ2UgcmVsZWFzZVxuICAgIGNvbnN0IGRiU3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IHJlbGVhc2VGaWxlcyA9IGRiU3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChwZikgPT4gcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuICAgIGNvbnN0IGZzU2hhID0gZ2VuZXJhdGVGc1NoYShyZWxlYXNlRmlsZXMpXG5cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBwYWNrYWdlUmVsZWFzZXM6IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5tYXAoKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZFxuICAgICAgICAgID8geyAuLi5wciwgZnNfc2hhOiBmc1NoYSB9XG4gICAgICAgICAgOiBwcixcbiAgICAgICksXG4gICAgICBwYWNrYWdlczogc3RhdGUucGFja2FnZXMubWFwKChwa2cpID0+XG4gICAgICAgIHBrZy5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkID09PSBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWRcbiAgICAgICAgICA/IHsgLi4ucGtnLCBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2ZzX3NoYTogZnNTaGEgfVxuICAgICAgICAgIDogcGtnLFxuICAgICAgKSxcbiAgICB9KSlcblxuICAgIC8vIFJldHVybiBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgY3JlYXRlIGVuZHBvaW50XG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IG5ld1BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgbmFtZTogbmV3UGFja2FnZS5uYW1lLFxuICAgICAgdW5zY29wZWRfbmFtZTogbmV3UGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgICAgb3duZXJfbmFtZTogc25pcHBldC5vd25lcl9uYW1lLFxuICAgICAgY29kZTogc25pcHBldC5jb2RlIHx8IFwiXCIsXG4gICAgICBkdHM6IHNuaXBwZXQuZHRzLFxuICAgICAgY29tcGlsZWRfanM6IHNuaXBwZXQuY29tcGlsZWRfanMsXG4gICAgICBzdGFyX2NvdW50OiAwLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHNuaXBwZXRfdHlwZTogc25pcHBldC5zbmlwcGV0X3R5cGUsXG4gICAgICBjaXJjdWl0X2pzb246IHNuaXBwZXQuY2lyY3VpdF9qc29uIHx8IFtdLFxuICAgICAgZGVzY3JpcHRpb246IHNuaXBwZXQuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIGlzX3N0YXJyZWQ6IGZhbHNlLFxuICAgICAgdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgaXNfcHJpdmF0ZTogZmFsc2UsXG4gICAgICBpc19wdWJsaWM6IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogZmFsc2UsXG4gICAgfVxuICB9LFxuICBnZXRMYXRlc3RTbmlwcGV0czogKGxpbWl0OiBudW1iZXIpOiBTbmlwcGV0W10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcblxuICAgIC8vIEdldCBhbGwgcGFja2FnZXMgdGhhdCBhcmUgc25pcHBldHNcbiAgICBjb25zdCBzbmlwcGV0UGFja2FnZXMgPSBzdGF0ZS5wYWNrYWdlc1xuICAgICAgLmZpbHRlcigocGtnKSA9PiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSlcbiAgICAgIC5tYXAoKHBrZykgPT4ge1xuICAgICAgICAvLyBHZXQgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT5cbiAgICAgICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgICAgIHByLmlzX2xhdGVzdCA9PT0gdHJ1ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIC8vIEdldCB0aGUgcGFja2FnZSBmaWxlc1xuICAgICAgICBjb25zdCBwYWNrYWdlRmlsZXMgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIEdldCB0aGUgY29kZSBmaWxlXG4gICAgICAgIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAgICAgKGZpbGUpID0+XG4gICAgICAgICAgICBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiIHx8IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiLFxuICAgICAgICApXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgc3RhcnJlZFxuICAgICAgICBjb25zdCBpc1N0YXJyZWQgPSBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc29tZShcbiAgICAgICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgICAgIClcblxuICAgICAgICAvLyBDb252ZXJ0IHRvIHNuaXBwZXQgZm9ybWF0XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcGtnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgICAgICBjb2RlOiBjb2RlRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgZHRzOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgICAgICBjb21waWxlZF9qczpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGNyZWF0ZWRfYXQ6IHBrZy5jcmVhdGVkX2F0LFxuICAgICAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgICAgIHN0YXJfY291bnQ6IHBrZy5zdGFyX2NvdW50IHx8IDAsXG4gICAgICAgICAgaXNfc3RhcnJlZDogaXNTdGFycmVkLFxuICAgICAgICAgIHZlcnNpb246IHBrZy5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgICAgY2lyY3VpdF9qc29uOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICAuZmxhdE1hcCgoZmlsZSkgPT4gSlNPTi5wYXJzZShmaWxlLmNvbnRlbnRfdGV4dCB8fCBcIltdXCIpKSB8fCBbXSxcbiAgICAgICAgICBpc19wcml2YXRlOiBwa2cuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgICAgICBpc19wdWJsaWM6IHBrZy5pc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgICAgICBpc191bmxpc3RlZDogcGtnLmlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHNuaXBwZXQpOiBzbmlwcGV0IGlzIE5vbk51bGxhYmxlPHR5cGVvZiBzbmlwcGV0PiA9PiBzbmlwcGV0ICE9PSBudWxsLFxuICAgICAgKVxuICAgICAgLm1hcCgoc25pcHBldCkgPT4gKHtcbiAgICAgICAgLi4uc25pcHBldCxcbiAgICAgICAgZGVzY3JpcHRpb246IHNuaXBwZXQuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIH0pKVxuICAgICAgLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKCksXG4gICAgICApXG4gICAgICAuc2xpY2UoMCwgbGltaXQpXG5cbiAgICByZXR1cm4gc25pcHBldFBhY2thZ2VzXG4gIH0sXG4gIGdldFRyZW5kaW5nU25pcHBldHM6IChsaW1pdDogbnVtYmVyLCBzaW5jZTogc3RyaW5nKTogU25pcHBldFtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3Qgc2luY2VEYXRlID0gbmV3IERhdGUoc2luY2UpLmdldFRpbWUoKVxuXG4gICAgLy8gR2V0IHN0YXIgY291bnRzIHdpdGhpbiB0aW1lIHBlcmlvZFxuICAgIGNvbnN0IHJlY2VudFN0YXJzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKVxuICAgIHN0YXRlLmFjY291bnRQYWNrYWdlcy5mb3JFYWNoKChhcCkgPT4ge1xuICAgICAgaWYgKGFwLmlzX3N0YXJyZWQgJiYgbmV3IERhdGUoYXAuY3JlYXRlZF9hdCkuZ2V0VGltZSgpID49IHNpbmNlRGF0ZSkge1xuICAgICAgICByZWNlbnRTdGFycy5zZXQoXG4gICAgICAgICAgYXAucGFja2FnZV9pZCxcbiAgICAgICAgICAocmVjZW50U3RhcnMuZ2V0KGFwLnBhY2thZ2VfaWQpIHx8IDApICsgMSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCBwYWNrYWdlc1dpdGhTdGFyQ291bnQgPSBbLi4uc3RhdGUucGFja2FnZXNdXG4gICAgICAubWFwKChwa2cpID0+ICh7XG4gICAgICAgIC4uLnBrZyxcbiAgICAgICAgc3Rhcl9jb3VudDogcmVjZW50U3RhcnMuZ2V0KHBrZy5wYWNrYWdlX2lkKSB8fCAwLFxuICAgICAgfSkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYi5zdGFyX2NvdW50IC0gYS5zdGFyX2NvdW50KVxuICAgICAgLnNsaWNlKDAsIGxpbWl0KVxuXG4gICAgY29uc3QgdHJlbmRpbmdTbmlwcGV0cyA9IHBhY2thZ2VzV2l0aFN0YXJDb3VudFxuICAgICAgLm1hcCgocGtnKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgICAgKHByKSA9PlxuICAgICAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgICAgICApXG4gICAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBudWxsXG5cbiAgICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgICAgICBjb2RlOiBjb2RlRmlsZSA/IGNvZGVGaWxlLmNvbnRlbnRfdGV4dCB8fCBcIlwiIDogXCJcIixcbiAgICAgICAgICBjcmVhdGVkX2F0OiBwa2cuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgICAgICBzbmlwcGV0X3R5cGU6IHBrZy5pc19zbmlwcGV0ID8gXCJib2FyZFwiIDogXCJwYWNrYWdlXCIsXG4gICAgICAgICAgc3Rhcl9jb3VudDogcGtnLnN0YXJfY291bnQsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChzbmlwcGV0KSA9PiBzbmlwcGV0ICE9PSBudWxsKVxuXG4gICAgcmV0dXJuIHRyZW5kaW5nU25pcHBldHMgYXMgU25pcHBldFtdXG4gIH0sXG4gIGdldFBhY2thZ2VzQnlBdXRob3I6IChhdXRob3JOYW1lPzogc3RyaW5nKTogUGFja2FnZVtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgcGFja2FnZXMgPSBhdXRob3JOYW1lXG4gICAgICA/IHN0YXRlLnBhY2thZ2VzLmZpbHRlcigocGtnKSA9PiBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBhdXRob3JOYW1lKVxuICAgICAgOiBzdGF0ZS5wYWNrYWdlc1xuICAgIHJldHVybiBwYWNrYWdlcy5tYXAoKHBrZykgPT4gKHtcbiAgICAgIC4uLnBrZyxcbiAgICAgIHN0YXJfY291bnQ6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgYXAuaXNfc3RhcnJlZCxcbiAgICAgICkubGVuZ3RoLFxuICAgIH0pKVxuICB9LFxuICBnZXRTbmlwcGV0QnlBdXRob3JBbmROYW1lOiAoXG4gICAgYXV0aG9yTmFtZTogc3RyaW5nLFxuICAgIHNuaXBwZXROYW1lOiBzdHJpbmcsXG4gICk6IFNuaXBwZXQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICAvLyBMb29rIGZvciB0aGUgcGFja2FnZSB0aGF0IHJlcHJlc2VudHMgdGhpcyBzbmlwcGV0IHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZ1xuICAgIGNvbnN0IF9wYWNrYWdlID0gc3RhdGUucGFja2FnZXMuZmluZChcbiAgICAgIChwa2cpID0+XG4gICAgICAgIHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IGF1dGhvck5hbWUudG9Mb3dlckNhc2UoKSAmJlxuICAgICAgICBwa2cubmFtZS50b0xvd2VyQ2FzZSgpID09PSBzbmlwcGV0TmFtZS50b0xvd2VyQ2FzZSgpICYmXG4gICAgICAgIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIV9wYWNrYWdlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHIpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gX3BhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBwci5pc19sYXRlc3QgPT09IHRydWUsXG4gICAgKVxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiB1bmRlZmluZWRcblxuICAgIC8vIEdldCB0aGUgcGFja2FnZSBmaWxlc1xuICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IHN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG5cbiAgICAvLyBHZXQgdGhlIGNvZGUgZmlsZSAoaW5kZXgudHMgb3IgaW5kZXgudHN4KVxuICAgIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICApXG5cbiAgICAvLyBNYXAgdGhlIHBhY2thZ2UgZGF0YSB0byBtYXRjaCB0aGUgU25pcHBldCBzdHJ1Y3R1cmVcbiAgICByZXR1cm4ge1xuICAgICAgc25pcHBldF9pZDogX3BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogX3BhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgdW5zY29wZWRfbmFtZTogX3BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICAgIG5hbWU6IF9wYWNrYWdlLm5hbWUsXG4gICAgICBvd25lcl9uYW1lOiBfcGFja2FnZS5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBfcGFja2FnZS5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgc25pcHBldF90eXBlOiBfcGFja2FnZS5zbmlwcGV0X3R5cGUgfHwgXCJib2FyZFwiLFxuICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgZHRzOlxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguZC50c1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjb21waWxlZF9qczpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIpXG4gICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNyZWF0ZWRfYXQ6IF9wYWNrYWdlLmNyZWF0ZWRfYXQsXG4gICAgICB1cGRhdGVkX2F0OiBfcGFja2FnZS51cGRhdGVkX2F0LFxuICAgICAgc3Rhcl9jb3VudDogX3BhY2thZ2Uuc3Rhcl9jb3VudCB8fCAwLFxuICAgICAgaXNfc3RhcnJlZDogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiBfcGFja2FnZS5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICBjaXJjdWl0X2pzb246IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICApPy5jb250ZW50X3RleHRcbiAgICAgICAgPyBKU09OLnBhcnNlKFxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIltdXCIsXG4gICAgICAgICAgKVxuICAgICAgICA6IFtdLFxuICAgICAgaXNfcHJpdmF0ZTogX3BhY2thZ2UuaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogX3BhY2thZ2UuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogX3BhY2thZ2UuaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgfVxuICB9LFxuICB1cGRhdGVTbmlwcGV0OiAoXG4gICAgc25pcHBldElkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxTbmlwcGV0PixcbiAgKTogU25pcHBldCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gc25pcHBldElkICYmIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICAgICAgKVxuICAgICAgaWYgKHBhY2thZ2VJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KClcbiAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpXG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgcGFja2FnZVxuICAgICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgY29uc3QgY3VycmVudFBhY2thZ2UgPSB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XVxuICAgICAgdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0gPSB7XG4gICAgICAgIC4uLmN1cnJlbnRQYWNrYWdlLFxuICAgICAgICBkZXNjcmlwdGlvbjogdXBkYXRlcy5kZXNjcmlwdGlvbiA/PyBjdXJyZW50UGFja2FnZS5kZXNjcmlwdGlvbixcbiAgICAgICAgaXNfcHJpdmF0ZTogdXBkYXRlcy5pc19wcml2YXRlID8/IGN1cnJlbnRQYWNrYWdlLmlzX3ByaXZhdGUsXG4gICAgICAgIGlzX3B1YmxpYzpcbiAgICAgICAgICB1cGRhdGVzLmlzX3ByaXZhdGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyAhdXBkYXRlcy5pc19wcml2YXRlXG4gICAgICAgICAgICA6IGN1cnJlbnRQYWNrYWdlLmlzX3B1YmxpYyxcbiAgICAgICAgaXNfdW5saXN0ZWQ6IHVwZGF0ZXMuaXNfcHJpdmF0ZVxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogKHVwZGF0ZXMuaXNfdW5saXN0ZWQgPz8gY3VycmVudFBhY2thZ2UuaXNfdW5saXN0ZWQpLFxuICAgICAgICB1cGRhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH1cblxuICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IHBhY2thZ2UgcmVsZWFzZVxuICAgICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gY3VycmVudFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIClcbiAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBzdGF0ZVxuXG4gICAgICAvLyBVcGRhdGUgcGFja2FnZSBmaWxlcyBpZiBjb2RlL2R0cy9qcyBjaGFuZ2VkXG4gICAgICBjb25zdCB1cGRhdGVkRmlsZXMgPSBbLi4uc3RhdGUucGFja2FnZUZpbGVzXVxuICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gdXBkYXRlZEZpbGVzLmZpbHRlcihcbiAgICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICApXG5cbiAgICAgIGlmICh1cGRhdGVzLmNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBjb2RlRmlsZUluZGV4ID0gcGFja2FnZUZpbGVzLmZpbmRJbmRleChcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiIHx8IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIsXG4gICAgICAgIClcbiAgICAgICAgaWYgKGNvZGVGaWxlSW5kZXggPj0gMCkge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlc1tjb2RlRmlsZUluZGV4XSA9IHtcbiAgICAgICAgICAgIC4uLnBhY2thZ2VGaWxlc1tjb2RlRmlsZUluZGV4XSxcbiAgICAgICAgICAgIGNvbnRlbnRfdGV4dDogdXBkYXRlcy5jb2RlLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlcy5wdXNoKHtcbiAgICAgICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke3RpbWVzdGFtcH1gLFxuICAgICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgICAgICBmaWxlX3BhdGg6IFwiaW5kZXgudHN4XCIsXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuY29kZSxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHVwZGF0ZXMuZHRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgZHRzRmlsZUluZGV4ID0gcGFja2FnZUZpbGVzLmZpbmRJbmRleChcbiAgICAgICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICApXG4gICAgICAgIGlmIChkdHNGaWxlSW5kZXggPj0gMCkge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlc1tkdHNGaWxlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ucGFja2FnZUZpbGVzW2R0c0ZpbGVJbmRleF0sXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuZHRzLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVwZGF0ZWRGaWxlcy5wdXNoKHtcbiAgICAgICAgICAgIHBhY2thZ2VfZmlsZV9pZDogYHBhY2thZ2VfZmlsZV8ke3RpbWVzdGFtcH1gLFxuICAgICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiB1cGRhdGVzLmR0cyxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHVwZGF0ZXMuY29tcGlsZWRfanMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBqc0ZpbGVJbmRleCA9IHBhY2thZ2VGaWxlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgIClcbiAgICAgICAgaWYgKGpzRmlsZUluZGV4ID49IDApIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXNbanNGaWxlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ucGFja2FnZUZpbGVzW2pzRmlsZUluZGV4XSxcbiAgICAgICAgICAgIGNvbnRlbnRfdGV4dDogdXBkYXRlcy5jb21waWxlZF9qcyxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cGRhdGVkRmlsZXMucHVzaCh7XG4gICAgICAgICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHt0aW1lc3RhbXB9YCxcbiAgICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICAgICAgZmlsZV9wYXRoOiBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgICAgICBjb250ZW50X3RleHQ6IHVwZGF0ZXMuY29tcGlsZWRfanMsXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSBjaXJjdWl0IEpTT04gaWYgcHJvdmlkZWRcbiAgICAgIGlmICh1cGRhdGVzLmNpcmN1aXRfanNvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNpcmN1aXRGaWxlSW5kZXggPSBwYWNrYWdlRmlsZXMuZmluZEluZGV4KFxuICAgICAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICAgICAgKVxuICAgICAgICBpZiAoY2lyY3VpdEZpbGVJbmRleCA+PSAwKSB7XG4gICAgICAgICAgdXBkYXRlZEZpbGVzW2NpcmN1aXRGaWxlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ucGFja2FnZUZpbGVzW2NpcmN1aXRGaWxlSW5kZXhdLFxuICAgICAgICAgICAgY29udGVudF90ZXh0OiBKU09OLnN0cmluZ2lmeSh1cGRhdGVzLmNpcmN1aXRfanNvbiksXG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJldHVybiB1cGRhdGVkIHN0YXRlXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGFja2FnZXM6IHVwZGF0ZWRQYWNrYWdlcyxcbiAgICAgICAgcGFja2FnZUZpbGVzOiB1cGRhdGVkRmlsZXMsXG4gICAgICB9XG4gICAgfSlcblxuICAgIC8vIEdldCB0aGUgdXBkYXRlZCBzbmlwcGV0IHRvIHJldHVyblxuICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlID0gZ2V0KCkucGFja2FnZXMuZmluZChcbiAgICAgIChwa2cpID0+IHBrZy5wYWNrYWdlX2lkID09PSBzbmlwcGV0SWQsXG4gICAgKVxuICAgIGlmICghdXBkYXRlZFBhY2thZ2UpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gZ2V0KCkucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHIpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gdXBkYXRlZFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgcGFja2FnZUZpbGVzID0gZ2V0KCkucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChmaWxlKSA9PiBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcblxuICAgIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICApXG4gICAgY29uc3QgZHRzRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIixcbiAgICApXG4gICAgY29uc3QganNGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvaW5kZXguanNcIixcbiAgICApXG4gICAgY29uc3QgY2lyY3VpdEZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICApXG5cbiAgICAvLyBSZXR1cm4gaW4gc25pcHBldCBmb3JtYXRcbiAgICByZXR1cm4ge1xuICAgICAgc25pcHBldF9pZDogdXBkYXRlZFBhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogdXBkYXRlZFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgdW5zY29wZWRfbmFtZTogdXBkYXRlZFBhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICAgIG5hbWU6IHVwZGF0ZWRQYWNrYWdlLm5hbWUsXG4gICAgICBvd25lcl9uYW1lOiB1cGRhdGVkUGFja2FnZS5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiB1cGRhdGVkUGFja2FnZS5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgc25pcHBldF90eXBlOiB1cGRhdGVkUGFja2FnZS5zbmlwcGV0X3R5cGUgfHwgXCJib2FyZFwiLFxuICAgICAgY29kZTogY29kZUZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgZHRzOiBkdHNGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGNvbXBpbGVkX2pzOiBqc0ZpbGU/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY3JlYXRlZF9hdDogdXBkYXRlZFBhY2thZ2UuY3JlYXRlZF9hdCxcbiAgICAgIHVwZGF0ZWRfYXQ6IHVwZGF0ZWRQYWNrYWdlLnVwZGF0ZWRfYXQsXG4gICAgICBzdGFyX2NvdW50OiB1cGRhdGVkUGFja2FnZS5zdGFyX2NvdW50IHx8IDAsXG4gICAgICBpc19zdGFycmVkOiBmYWxzZSxcbiAgICAgIHZlcnNpb246IHVwZGF0ZWRQYWNrYWdlLmxhdGVzdF92ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgIGNpcmN1aXRfanNvbjogY2lyY3VpdEZpbGVcbiAgICAgICAgPyBKU09OLnBhcnNlKGNpcmN1aXRGaWxlLmNvbnRlbnRfdGV4dCB8fCBcIltdXCIpXG4gICAgICAgIDogW10sXG4gICAgICBpc19wcml2YXRlOiB1cGRhdGVkUGFja2FnZS5pc19wcml2YXRlID8/IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiB1cGRhdGVkUGFja2FnZS5pc19wdWJsaWMgPz8gdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiB1cGRhdGVkUGFja2FnZS5pc191bmxpc3RlZCA/PyBmYWxzZSxcbiAgICB9XG4gIH0sXG4gIGdldFNuaXBwZXRCeUlkOiAoXG4gICAgc25pcHBldElkOiBzdHJpbmcsXG4gICAgYXV0aD86IHsgZ2l0aHViX3VzZXJuYW1lOiBzdHJpbmcgfSxcbiAgKTogU25pcHBldCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIC8vIExvb2sgZm9yIHRoZSBwYWNrYWdlIHRoYXQgcmVwcmVzZW50cyB0aGlzIHNuaXBwZXRcbiAgICBjb25zdCBfcGFja2FnZSA9IHN0YXRlLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gc25pcHBldElkICYmIHBrZy5pc19zbmlwcGV0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIV9wYWNrYWdlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBIYW5kbGUgdmlzaWJpbGl0eSBiYXNlZCBvbiBhdXRoZW50aWNhdGlvblxuICAgIGlmICghYXV0aCkge1xuICAgICAgLy8gVW5hdXRoZW50aWNhdGVkIHVzZXJzIGNhbiBvbmx5IHNlZSBwdWJsaWMgYW5kIG5vbi11bmxpc3RlZCBwYWNrYWdlc1xuICAgICAgaWYgKCFfcGFja2FnZS5pc19wdWJsaWMgfHwgX3BhY2thZ2UuaXNfdW5saXN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBdXRoZW50aWNhdGVkIHVzZXJzIGNhbiBzZWU6XG4gICAgICAvLyAxLiBQdWJsaWMgYW5kIG5vbi11bmxpc3RlZCBwYWNrYWdlc1xuICAgICAgLy8gMi4gVGhlaXIgb3duIHVubGlzdGVkIHBhY2thZ2VzXG4gICAgICAvLyAzLiBUaGVpciBvd24gcHJpdmF0ZSBwYWNrYWdlc1xuICAgICAgY29uc3QgaXNPd25QYWNrYWdlID1cbiAgICAgICAgX3BhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBhdXRoPy5naXRodWJfdXNlcm5hbWVcbiAgICAgIGNvbnN0IGlzUHVibGljQW5kTm90VW5saXN0ZWQgPSBfcGFja2FnZS5pc19wdWJsaWMgJiYgIV9wYWNrYWdlLmlzX3VubGlzdGVkXG4gICAgICBjb25zdCBpc093blVubGlzdGVkID0gX3BhY2thZ2UuaXNfdW5saXN0ZWQgJiYgaXNPd25QYWNrYWdlXG4gICAgICBjb25zdCBpc093blByaXZhdGUgPSBfcGFja2FnZS5pc19wcml2YXRlICYmIGlzT3duUGFja2FnZVxuXG4gICAgICBpZiAoIWlzUHVibGljQW5kTm90VW5saXN0ZWQgJiYgIWlzT3duVW5saXN0ZWQgJiYgIWlzT3duUHJpdmF0ZSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgIClcbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2UgZmlsZXNcbiAgICBjb25zdCBwYWNrYWdlRmlsZXMgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuXG4gICAgLy8gR2V0IHRoZSBjb2RlIGZpbGUgKGluZGV4LnRzIG9yIGluZGV4LnRzeClcbiAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgKVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgc3RhcnJlZCB0aGlzIHNuaXBwZXRcbiAgICBjb25zdCBpc1N0YXJyZWQgPSBzdGF0ZS5hY2NvdW50UGFja2FnZXMuc29tZShcbiAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gc25pcHBldElkICYmIGFwLmlzX3N0YXJyZWQsXG4gICAgKVxuXG4gICAgLy8gTWFwIHRoZSBwYWNrYWdlIGRhdGEgdG8gbWF0Y2ggdGhlIFNuaXBwZXQgc3RydWN0dXJlXG4gICAgcmV0dXJuIHtcbiAgICAgIHNuaXBwZXRfaWQ6IF9wYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgXCJcIixcbiAgICAgIHVuc2NvcGVkX25hbWU6IF9wYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgICBuYW1lOiBfcGFja2FnZS5uYW1lLFxuICAgICAgb3duZXJfbmFtZTogX3BhY2thZ2Uub3duZXJfZ2l0aHViX3VzZXJuYW1lIHx8IFwiXCIsXG4gICAgICBkZXNjcmlwdGlvbjogX3BhY2thZ2UuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogX3BhY2thZ2Uuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgIGNvZGU6IGNvZGVGaWxlPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgIGR0czpcbiAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBjcmVhdGVkX2F0OiBfcGFja2FnZS5jcmVhdGVkX2F0LFxuICAgICAgdXBkYXRlZF9hdDogX3BhY2thZ2UudXBkYXRlZF9hdCxcbiAgICAgIHN0YXJfY291bnQ6IF9wYWNrYWdlLnN0YXJfY291bnQgfHwgMCxcbiAgICAgIGlzX3N0YXJyZWQ6IGlzU3RhcnJlZCxcbiAgICAgIHZlcnNpb246IF9wYWNrYWdlLmxhdGVzdF92ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgIGNpcmN1aXRfanNvbjogcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAgIChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgICAgICk/LmNvbnRlbnRfdGV4dFxuICAgICAgICA/IEpTT04ucGFyc2UoXG4gICAgICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5maWxlX3BhdGggPT09IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIpXG4gICAgICAgICAgICAgID8uY29udGVudF90ZXh0IHx8IFwiW11cIixcbiAgICAgICAgICApXG4gICAgICAgIDogW10sXG4gICAgICBpc19wcml2YXRlOiBfcGFja2FnZS5pc19wcml2YXRlIHx8IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiBfcGFja2FnZS5pc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiBfcGFja2FnZS5pc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICB9XG4gIH0sXG4gIHNlYXJjaFNuaXBwZXRzOiAocXVlcnk6IHN0cmluZyk6IFNuaXBwZXRbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IGxvd2VyY2FzZVF1ZXJ5ID0gcXVlcnkudG9Mb3dlckNhc2UoKVxuXG4gICAgLy8gR2V0IGFsbCBwYWNrYWdlcyB0aGF0IGFyZSBzbmlwcGV0c1xuICAgIGNvbnN0IHBhY2thZ2VzID0gc3RhdGUucGFja2FnZXMuZmlsdGVyKChwa2cpID0+IHBrZy5pc19zbmlwcGV0ID09PSB0cnVlKVxuXG4gICAgLy8gRmluZCBwYWNrYWdlcyB0aGF0IG1hdGNoIGJ5IG5hbWUgb3IgZGVzY3JpcHRpb25cbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzQnlNZXRhZGF0YSA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwa2cpID0+XG4gICAgICAgIHBrZy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJjYXNlUXVlcnkpIHx8XG4gICAgICAgIHBrZy5kZXNjcmlwdGlvbj8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlcmNhc2VRdWVyeSksXG4gICAgKVxuXG4gICAgLy8gRmluZCBwYWNrYWdlcyB0aGF0IG1hdGNoIGJ5IGNvZGUgY29udGVudCBpbiBhbnkgZmlsZVxuICAgIGNvbnN0IG1hdGNoaW5nRmlsZXNCeUNvbnRlbnQgPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+XG4gICAgICAgIGZpbGUuY29udGVudF90ZXh0Py50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVF1ZXJ5KSA/PyBmYWxzZSxcbiAgICApXG5cbiAgICAvLyBHZXQgdGhlIHBhY2thZ2VzIGZvciBtYXRjaGluZyBmaWxlc1xuICAgIGNvbnN0IG1hdGNoaW5nUGFja2FnZXNCeUNvbnRlbnQgPSBtYXRjaGluZ0ZpbGVzQnlDb250ZW50XG4gICAgICAubWFwKChmaWxlKSA9PiB7XG4gICAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgcmVsZWFzZSBmb3IgdGhpcyBmaWxlXG4gICAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IGZpbGUucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG4gICAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBudWxsXG5cbiAgICAgICAgLy8gRmluZCB0aGUgcGFja2FnZSBmb3IgdGhpcyByZWxlYXNlXG4gICAgICAgIHJldHVybiBwYWNrYWdlcy5maW5kKFxuICAgICAgICAgIChwa2cpID0+XG4gICAgICAgICAgICBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICApXG4gICAgICB9KVxuICAgICAgLmZpbHRlcigocGtnKTogcGtnIGlzIE5vbk51bGxhYmxlPHR5cGVvZiBwa2c+ID0+IHBrZyAhPT0gbnVsbClcblxuICAgIC8vIENvbWJpbmUgYm90aCBzZXRzIG9mIG1hdGNoaW5nIHBhY2thZ2VzIGFuZCByZW1vdmUgZHVwbGljYXRlc1xuICAgIGNvbnN0IG1hdGNoaW5nUGFja2FnZXMgPSBbXG4gICAgICAuLi5uZXcgU2V0KFsuLi5tYXRjaGluZ1BhY2thZ2VzQnlNZXRhZGF0YSwgLi4ubWF0Y2hpbmdQYWNrYWdlc0J5Q29udGVudF0pLFxuICAgIF1cblxuICAgIC8vIENvbnZlcnQgbWF0Y2hpbmcgcGFja2FnZXMgdG8gc25pcHBldCBmb3JtYXRcbiAgICByZXR1cm4gbWF0Y2hpbmdQYWNrYWdlc1xuICAgICAgLm1hcCgocGtnKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gc3RhdGUucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgICAgKHByKSA9PlxuICAgICAgICAgICAgcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICAgICAgcHIuaXNfbGF0ZXN0ID09PSB0cnVlLFxuICAgICAgICApXG4gICAgICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHJldHVybiBudWxsXG5cbiAgICAgICAgY29uc3QgcGFja2FnZUZpbGVzID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgICAgICAoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGUucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBjb2RlRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlKSA9PlxuICAgICAgICAgICAgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIiB8fCBmaWxlLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIixcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IGlzU3RhcnJlZCA9IHN0YXRlLmFjY291bnRQYWNrYWdlcy5zb21lKFxuICAgICAgICAgIChhcCkgPT4gYXAucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgYXAuaXNfc3RhcnJlZCxcbiAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc25pcHBldF9pZDogcGtnLnBhY2thZ2VfaWQsXG4gICAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgICAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcGtnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICAgICAgc25pcHBldF90eXBlOiBwa2cuc25pcHBldF90eXBlIHx8IFwiYm9hcmRcIixcbiAgICAgICAgICBjb2RlOiBjb2RlRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgZHRzOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmQudHNcIilcbiAgICAgICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIixcbiAgICAgICAgICBjb21waWxlZF9qczpcbiAgICAgICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmaWxlKSA9PiBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5qc1wiKVxuICAgICAgICAgICAgICA/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgICAgIGNyZWF0ZWRfYXQ6IHBrZy5jcmVhdGVkX2F0LFxuICAgICAgICAgIHVwZGF0ZWRfYXQ6IHBrZy51cGRhdGVkX2F0LFxuICAgICAgICAgIHN0YXJfY291bnQ6IHBrZy5zdGFyX2NvdW50IHx8IDAsXG4gICAgICAgICAgaXNfc3RhcnJlZDogaXNTdGFycmVkLFxuICAgICAgICAgIHZlcnNpb246IHBrZy5sYXRlc3RfdmVyc2lvbiB8fCBcIjAuMC4xXCIsXG4gICAgICAgICAgY2lyY3VpdF9qc29uOlxuICAgICAgICAgICAgcGFja2FnZUZpbGVzXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2NpcmN1aXQuanNvblwiKVxuICAgICAgICAgICAgICAuZmxhdE1hcCgoZmlsZSkgPT4gSlNPTi5wYXJzZShmaWxlLmNvbnRlbnRfdGV4dCB8fCBcIltdXCIpKSB8fCBbXSxcbiAgICAgICAgfSBhcyBTbmlwcGV0XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoc25pcHBldCk6IHNuaXBwZXQgaXMgU25pcHBldCA9PiBzbmlwcGV0ICE9PSBudWxsKVxuICB9LFxuICBzZWFyY2hQYWNrYWdlczogKHF1ZXJ5OiBzdHJpbmcpOiBQYWNrYWdlW10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICBjb25zdCBsb3dlcmNhc2VRdWVyeSA9IHF1ZXJ5LnRvTG93ZXJDYXNlKClcblxuICAgIC8vIEdldCBhbGwgcGFja2FnZXMgdGhhdCBhcmUgcHVibGljXG4gICAgY29uc3QgcGFja2FnZXMgPSBzdGF0ZS5wYWNrYWdlcy5maWx0ZXIoKHBrZykgPT4gcGtnLmlzX3B1YmxpYyA9PT0gdHJ1ZSlcblxuICAgIC8vIEZpbmQgcGFja2FnZXMgdGhhdCBtYXRjaCBieSBuYW1lIG9yIGRlc2NyaXB0aW9uXG4gICAgY29uc3QgbWF0Y2hpbmdQYWNrYWdlc0J5TWV0YWRhdGEgPSBwYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocGtnKSA9PlxuICAgICAgICBwa2cubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVF1ZXJ5KSB8fFxuICAgICAgICBwa2cuZGVzY3JpcHRpb24/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJjYXNlUXVlcnkpLFxuICAgIClcblxuICAgIC8vIEZpbmQgcGFja2FnZXMgdGhhdCBtYXRjaCBieSBjb2RlIGNvbnRlbnQgaW4gYW55IGZpbGVcbiAgICBjb25zdCBtYXRjaGluZ0ZpbGVzQnlDb250ZW50ID0gc3RhdGUucGFja2FnZUZpbGVzLmZpbHRlcihcbiAgICAgIChmaWxlKSA9PlxuICAgICAgICBmaWxlLmNvbnRlbnRfdGV4dD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlcmNhc2VRdWVyeSkgPz8gZmFsc2UsXG4gICAgKVxuXG4gICAgLy8gR2V0IHRoZSBwYWNrYWdlcyBmb3IgbWF0Y2hpbmcgZmlsZXNcbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzQnlDb250ZW50ID0gbWF0Y2hpbmdGaWxlc0J5Q29udGVudFxuICAgICAgLm1hcCgoZmlsZSkgPT4ge1xuICAgICAgICAvLyBGaW5kIHRoZSBwYWNrYWdlIHJlbGVhc2UgZm9yIHRoaXMgZmlsZVxuICAgICAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgZm9yIHRoaXMgcmVsZWFzZVxuICAgICAgICByZXR1cm4gcGFja2FnZXMuZmluZChcbiAgICAgICAgICAocGtnKSA9PlxuICAgICAgICAgICAgcGtnLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKHBrZyk6IHBrZyBpcyBOb25OdWxsYWJsZTx0eXBlb2YgcGtnPiA9PiBwa2cgIT09IG51bGwpXG5cbiAgICAvLyBDb21iaW5lIGJvdGggc2V0cyBvZiBtYXRjaGluZyBwYWNrYWdlcyBhbmQgcmVtb3ZlIGR1cGxpY2F0ZXNcbiAgICBjb25zdCBtYXRjaGluZ1BhY2thZ2VzID0gW1xuICAgICAgLi4ubmV3IFNldChbLi4ubWF0Y2hpbmdQYWNrYWdlc0J5TWV0YWRhdGEsIC4uLm1hdGNoaW5nUGFja2FnZXNCeUNvbnRlbnRdKSxcbiAgICBdXG5cbiAgICByZXR1cm4gbWF0Y2hpbmdQYWNrYWdlc1xuICB9LFxuICBzZWFyY2hBY2NvdW50czogKHF1ZXJ5OiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyKTogQWNjb3VudFtdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgY29uc3QgbG93ZXJjYXNlUXVlcnkgPSBxdWVyeS50b0xvd2VyQ2FzZSgpXG5cbiAgICBjb25zdCBhY2NvdW50c1dpdGhQdWJsaWNQYWNrYWdlcyA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gICAgc3RhdGUucGFja2FnZXNcbiAgICAgIC5maWx0ZXIoKHBrZykgPT4gcGtnLmlzX3B1YmxpYyA9PT0gdHJ1ZSlcbiAgICAgIC5mb3JFYWNoKChwa2cpID0+IHtcbiAgICAgICAgaWYgKHBrZy5jcmVhdG9yX2FjY291bnRfaWQpIHtcbiAgICAgICAgICBhY2NvdW50c1dpdGhQdWJsaWNQYWNrYWdlcy5hZGQocGtnLmNyZWF0b3JfYWNjb3VudF9pZClcbiAgICAgICAgfVxuICAgICAgICBpZiAocGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSkge1xuICAgICAgICAgIGNvbnN0IGFjY291bnQgPSBzdGF0ZS5hY2NvdW50cy5maW5kKFxuICAgICAgICAgICAgKGFjYykgPT4gYWNjLmdpdGh1Yl91c2VybmFtZSA9PT0gcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKGFjY291bnQpIHtcbiAgICAgICAgICAgIGFjY291bnRzV2l0aFB1YmxpY1BhY2thZ2VzLmFkZChhY2NvdW50LmFjY291bnRfaWQpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgY29uc3QgbWF0Y2hpbmdBY2NvdW50cyA9IHN0YXRlLmFjY291bnRzXG4gICAgICAuZmlsdGVyKChhY2NvdW50KSA9PiB7XG4gICAgICAgIGlmICghYWNjb3VudHNXaXRoUHVibGljUGFja2FnZXMuaGFzKGFjY291bnQuYWNjb3VudF9pZCkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjb3VudC5naXRodWJfdXNlcm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlcmNhc2VRdWVyeSlcbiAgICAgIH0pXG4gICAgICAuc2xpY2UoMCwgbGltaXQgfHwgNTApXG5cbiAgICByZXR1cm4gbWF0Y2hpbmdBY2NvdW50c1xuICB9LFxuICBkZWxldGVTbmlwcGV0OiAoc25pcHBldElkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5zbmlwcGV0cy5maW5kSW5kZXgoKHMpID0+IHMuc25pcHBldF9pZCA9PT0gc25pcHBldElkKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBzdGF0ZS5zbmlwcGV0cy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiBkZWxldGVkXG4gIH0sXG4gIGFkZFNlc3Npb246IChzZXNzaW9uOiBPbWl0PFNlc3Npb24sIFwic2Vzc2lvbl9pZFwiPik6IFNlc3Npb24gPT4ge1xuICAgIGNvbnN0IG5ld1Nlc3Npb24gPSB7IHNlc3Npb25faWQ6IGBzZXNzaW9uXyR7RGF0ZS5ub3coKX1gLCAuLi5zZXNzaW9uIH1cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgc2Vzc2lvbnM6IFsuLi5zdGF0ZS5zZXNzaW9ucywgbmV3U2Vzc2lvbl0sXG4gICAgfSkpXG4gICAgcmV0dXJuIG5ld1Nlc3Npb25cbiAgfSxcbiAgZ2V0U2Vzc2lvbnM6ICh7XG4gICAgYWNjb3VudF9pZCxcbiAgICBpc19jbGlfc2Vzc2lvbixcbiAgfTogeyBhY2NvdW50X2lkOiBzdHJpbmc7IGlzX2NsaV9zZXNzaW9uPzogYm9vbGVhbiB9KTogU2Vzc2lvbltdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnNlc3Npb25zLmZpbHRlcihcbiAgICAgIChzZXNzaW9uKSA9PlxuICAgICAgICBzZXNzaW9uLmFjY291bnRfaWQgPT09IGFjY291bnRfaWQgJiZcbiAgICAgICAgKGlzX2NsaV9zZXNzaW9uID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICBzZXNzaW9uLmlzX2NsaV9zZXNzaW9uID09PSBpc19jbGlfc2Vzc2lvbiksXG4gICAgKVxuICB9LFxuICBjcmVhdGVMb2dpblBhZ2U6ICgpOiBMb2dpblBhZ2UgPT4ge1xuICAgIGNvbnN0IG5ld0xvZ2luUGFnZTogTG9naW5QYWdlID0ge1xuICAgICAgbG9naW5fcGFnZV9pZDogYGxvZ2luX3BhZ2VfJHtEYXRlLm5vdygpfWAsXG4gICAgICBsb2dpbl9wYWdlX2F1dGhfdG9rZW46IGB0b2tlbl8ke0RhdGUubm93KCl9YCxcbiAgICAgIHdhc19sb2dpbl9zdWNjZXNzZnVsOiBmYWxzZSxcbiAgICAgIGhhc19iZWVuX3VzZWRfdG9fY3JlYXRlX3Nlc3Npb246IGZhbHNlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgZXhwaXJlc19hdDogbmV3IERhdGUoRGF0ZS5ub3coKSArIDMwICogNjAgKiAxMDAwKS50b0lTT1N0cmluZygpLCAvLyAzMCBtaW51dGVzIGV4cGlyYXRpb25cbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGxvZ2luUGFnZXM6IFsuLi5zdGF0ZS5sb2dpblBhZ2VzLCBuZXdMb2dpblBhZ2VdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdMb2dpblBhZ2VcbiAgfSxcbiAgZ2V0TG9naW5QYWdlOiAobG9naW5QYWdlSWQ6IHN0cmluZyk6IExvZ2luUGFnZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5sb2dpblBhZ2VzLmZpbmQoKGxwKSA9PiBscC5sb2dpbl9wYWdlX2lkID09PSBsb2dpblBhZ2VJZClcbiAgfSxcbiAgdXBkYXRlTG9naW5QYWdlOiAobG9naW5QYWdlSWQ6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxMb2dpblBhZ2U+KTogdm9pZCA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGxvZ2luUGFnZXM6IHN0YXRlLmxvZ2luUGFnZXMubWFwKChscCkgPT5cbiAgICAgICAgbHAubG9naW5fcGFnZV9pZCA9PT0gbG9naW5QYWdlSWQgPyB7IC4uLmxwLCAuLi51cGRhdGVzIH0gOiBscCxcbiAgICAgICksXG4gICAgfSkpXG4gIH0sXG4gIGdldEFjY291bnQ6IChhY2NvdW50SWQ6IHN0cmluZyk6IEFjY291bnQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWNjb3VudHMuZmluZCgoYWNjb3VudCkgPT4gYWNjb3VudC5hY2NvdW50X2lkID09PSBhY2NvdW50SWQpXG4gIH0sXG4gIHVwZGF0ZUFjY291bnQ6IChcbiAgICBhY2NvdW50SWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPEFjY291bnQ+LFxuICApOiBBY2NvdW50IHwgdW5kZWZpbmVkID0+IHtcbiAgICBsZXQgdXBkYXRlZEFjY291bnQ6IEFjY291bnQgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBhY2NvdW50SW5kZXggPSBzdGF0ZS5hY2NvdW50cy5maW5kSW5kZXgoXG4gICAgICAgIChhY2NvdW50KSA9PiBhY2NvdW50LmFjY291bnRfaWQgPT09IGFjY291bnRJZCxcbiAgICAgIClcbiAgICAgIGlmIChhY2NvdW50SW5kZXggIT09IC0xKSB7XG4gICAgICAgIHVwZGF0ZWRBY2NvdW50ID0geyAuLi5zdGF0ZS5hY2NvdW50c1thY2NvdW50SW5kZXhdIH1cbiAgICAgICAgaWYgKHVwZGF0ZXMuc2hpcHBpbmdJbmZvKSB7XG4gICAgICAgICAgdXBkYXRlZEFjY291bnQuc2hpcHBpbmdJbmZvID0ge1xuICAgICAgICAgICAgLi4udXBkYXRlZEFjY291bnQuc2hpcHBpbmdJbmZvLFxuICAgICAgICAgICAgLi4udXBkYXRlcy5zaGlwcGluZ0luZm8sXG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSB1cGRhdGVzLnNoaXBwaW5nSW5mb1xuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZWRBY2NvdW50ID0geyAuLi51cGRhdGVkQWNjb3VudCwgLi4udXBkYXRlcyB9XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRBY2NvdW50cyA9IFsuLi5zdGF0ZS5hY2NvdW50c11cbiAgICAgICAgdXBkYXRlZEFjY291bnRzW2FjY291bnRJbmRleF0gPSB1cGRhdGVkQWNjb3VudFxuICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYWNjb3VudHM6IHVwZGF0ZWRBY2NvdW50cyB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiB1cGRhdGVkQWNjb3VudFxuICB9LFxuICBjcmVhdGVTZXNzaW9uOiAoc2Vzc2lvbjogT21pdDxTZXNzaW9uLCBcInNlc3Npb25faWRcIj4pOiBTZXNzaW9uID0+IHtcbiAgICBjb25zdCBuZXdTZXNzaW9uID0geyBzZXNzaW9uX2lkOiBgc2Vzc2lvbl8ke0RhdGUubm93KCl9YCwgLi4uc2Vzc2lvbiB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHNlc3Npb25zOiBbLi4uc3RhdGUuc2Vzc2lvbnMsIG5ld1Nlc3Npb25dLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdTZXNzaW9uXG4gIH0sXG4gIGFkZFN0YXI6IChhY2NvdW50SWQ6IHN0cmluZywgcGFja2FnZUlkOiBzdHJpbmcpOiBBY2NvdW50UGFja2FnZSA9PiB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgY29uc3QgYWNjb3VudFBhY2thZ2UgPSB7XG4gICAgICBhY2NvdW50X3BhY2thZ2VfaWQ6IGBhcF8ke0RhdGUubm93KCl9YCxcbiAgICAgIGFjY291bnRfaWQ6IGFjY291bnRJZCxcbiAgICAgIHBhY2thZ2VfaWQ6IHBhY2thZ2VJZCxcbiAgICAgIGlzX3N0YXJyZWQ6IHRydWUsXG4gICAgICBjcmVhdGVkX2F0OiBub3csXG4gICAgICB1cGRhdGVkX2F0OiBub3csXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3Mgc3RhciBjb3VudFxuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgYW5kIGluY3JlbWVudCBpdHMgc3RhciBjb3VudFxuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICAgICAgKVxuICAgICAgaWYgKHBhY2thZ2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlcyA9IFsuLi5zdGF0ZS5wYWNrYWdlc11cbiAgICAgICAgdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0gPSB7XG4gICAgICAgICAgLi4udXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0sXG4gICAgICAgICAgc3Rhcl9jb3VudDogKHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdLnN0YXJfY291bnQgfHwgMCkgKyAxLFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYWNrYWdlczogdXBkYXRlZFBhY2thZ2VzLFxuICAgICAgICAgIGFjY291bnRQYWNrYWdlczogWy4uLnN0YXRlLmFjY291bnRQYWNrYWdlcywgYWNjb3VudFBhY2thZ2VdLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjY291bnRQYWNrYWdlczogWy4uLnN0YXRlLmFjY291bnRQYWNrYWdlcywgYWNjb3VudFBhY2thZ2VdLFxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gYWNjb3VudFBhY2thZ2VcbiAgfSxcbiAgcmVtb3ZlU3RhcjogKGFjY291bnRJZDogc3RyaW5nLCBwYWNrYWdlSWQ6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+IHtcbiAgICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgYW5kIGRlY3JlbWVudCBpdHMgc3RhciBjb3VudFxuICAgICAgY29uc3QgcGFja2FnZUluZGV4ID0gc3RhdGUucGFja2FnZXMuZmluZEluZGV4KFxuICAgICAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICAgICAgKVxuXG4gICAgICBpZiAocGFja2FnZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gWy4uLnN0YXRlLnBhY2thZ2VzXVxuICAgICAgICB1cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSA9IHtcbiAgICAgICAgICAuLi51cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSxcbiAgICAgICAgICBzdGFyX2NvdW50OiBNYXRoLm1heChcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAodXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF0uc3Rhcl9jb3VudCB8fCAwKSAtIDEsXG4gICAgICAgICAgKSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGFja2FnZXM6IHVwZGF0ZWRQYWNrYWdlcyxcbiAgICAgICAgICBhY2NvdW50UGFja2FnZXM6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgICAgICAoYXApID0+XG4gICAgICAgICAgICAgICEoYXAuYWNjb3VudF9pZCA9PT0gYWNjb3VudElkICYmIGFwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCksXG4gICAgICAgICAgKSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50UGFja2FnZXM6IHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgICAgKGFwKSA9PiAhKGFwLmFjY291bnRfaWQgPT09IGFjY291bnRJZCAmJiBhcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQpLFxuICAgICAgICApLFxuICAgICAgfVxuICAgIH0pXG4gIH0sXG4gIGhhc1N0YXJyZWQ6IChhY2NvdW50SWQ6IHN0cmluZywgcGFja2FnZUlkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRQYWNrYWdlcy5zb21lKFxuICAgICAgKGFwKSA9PlxuICAgICAgICBhcC5hY2NvdW50X2lkID09PSBhY2NvdW50SWQgJiZcbiAgICAgICAgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkICYmXG4gICAgICAgIGFwLmlzX3N0YXJyZWQsXG4gICAgKVxuICB9LFxuICBhZGRQYWNrYWdlOiAoXG4gICAgX3BhY2thZ2U6IE9taXQ8XG4gICAgICB6LmlucHV0PHR5cGVvZiBwYWNrYWdlU2NoZW1hPixcbiAgICAgIFwicGFja2FnZV9pZFwiIHwgXCJnaXRodWJfcmVwb19mdWxsX25hbWVcIlxuICAgID4sXG4gICk6IFBhY2thZ2UgPT4ge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KClcbiAgICBjb25zdCBuZXdQYWNrYWdlID0ge1xuICAgICAgcGFja2FnZV9pZDogYHBhY2thZ2VfJHt0aW1lc3RhbXB9YCxcbiAgICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZTogbnVsbCxcbiAgICAgIC4uLl9wYWNrYWdlLFxuICAgIH1cbiAgICBzZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgcGFja2FnZXM6IFsuLi5zdGF0ZS5wYWNrYWdlcywgbmV3UGFja2FnZSBhcyBQYWNrYWdlXSxcbiAgICB9KSlcbiAgICByZXR1cm4gbmV3UGFja2FnZSBhcyBQYWNrYWdlXG4gIH0sXG4gIHVwZGF0ZVBhY2thZ2U6IChcbiAgICBwYWNrYWdlSWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPFBhY2thZ2U+LFxuICApOiBQYWNrYWdlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBsZXQgdXBkYXRlZFBhY2thZ2U6IFBhY2thZ2UgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBwYWNrYWdlSW5kZXggPSBzdGF0ZS5wYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgICAgIChwa2cpID0+IHBrZy5wYWNrYWdlX2lkID09PSBwYWNrYWdlSWQsXG4gICAgICApXG4gICAgICBpZiAocGFja2FnZUluZGV4ID09PSAtMSkgcmV0dXJuIHN0YXRlXG5cbiAgICAgIGNvbnN0IHVwZGF0ZWRQYWNrYWdlcyA9IFsuLi5zdGF0ZS5wYWNrYWdlc11cbiAgICAgIHVwZGF0ZWRQYWNrYWdlc1twYWNrYWdlSW5kZXhdID0ge1xuICAgICAgICAuLi51cGRhdGVkUGFja2FnZXNbcGFja2FnZUluZGV4XSxcbiAgICAgICAgLi4udXBkYXRlcyxcbiAgICAgIH1cbiAgICAgIHVwZGF0ZWRQYWNrYWdlID0gdXBkYXRlZFBhY2thZ2VzW3BhY2thZ2VJbmRleF1cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBwYWNrYWdlczogdXBkYXRlZFBhY2thZ2VzIH1cbiAgICB9KVxuICAgIHJldHVybiB1cGRhdGVkUGFja2FnZVxuICB9LFxuICBnZXRQYWNrYWdlQnlJZDogKHBhY2thZ2VJZDogc3RyaW5nKTogUGFja2FnZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IHBrZyA9IHN0YXRlLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZClcbiAgICBpZiAoIXBrZykgcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB7XG4gICAgICAuLi5wa2csXG4gICAgfVxuICB9LFxuICBnZXRQYWNrYWdlUmVsZWFzZUJ5SWQ6IChcbiAgICBwYWNrYWdlUmVsZWFzZUlkOiBzdHJpbmcsXG4gICk6IFBhY2thZ2VSZWxlYXNlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gICAgKVxuICB9LFxuICBhZGRQYWNrYWdlUmVsZWFzZTogKFxuICAgIHBhY2thZ2VSZWxlYXNlOiBPbWl0PFxuICAgICAgei5pbnB1dDx0eXBlb2YgcGFja2FnZVJlbGVhc2VTY2hlbWE+LFxuICAgICAgXCJwYWNrYWdlX3JlbGVhc2VfaWRcIlxuICAgID4sXG4gICk6IFBhY2thZ2VSZWxlYXNlID0+IHtcbiAgICBjb25zdCBwYXJzZWQgPSBwYWNrYWdlUmVsZWFzZVNjaGVtYS5wYXJzZSh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IGBwYWNrYWdlX3JlbGVhc2VfJHtEYXRlLm5vdygpfWAsXG4gICAgICAuLi5wYWNrYWdlUmVsZWFzZSxcbiAgICB9KVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlUmVsZWFzZXM6IFsuLi5zdGF0ZS5wYWNrYWdlUmVsZWFzZXMsIHBhcnNlZF0sXG4gICAgfSkpXG4gICAgcmV0dXJuIHBhcnNlZFxuICB9LFxuICB1cGRhdGVQYWNrYWdlUmVsZWFzZTogKHBhY2thZ2VSZWxlYXNlOiBQYWNrYWdlUmVsZWFzZSk6IHZvaWQgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlUmVsZWFzZXM6IHN0YXRlLnBhY2thZ2VSZWxlYXNlcy5tYXAoKHByKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZFxuICAgICAgICAgID8gcGFja2FnZVJlbGVhc2VcbiAgICAgICAgICA6IHByLFxuICAgICAgKSxcbiAgICB9KSlcbiAgfSxcbiAgZGVsZXRlUGFja2FnZUZpbGU6IChwYWNrYWdlRmlsZUlkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBsZXQgZGVsZXRlZCA9IGZhbHNlXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5wYWNrYWdlRmlsZXMuZmluZEluZGV4KFxuICAgICAgICAoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX2ZpbGVfaWQgPT09IHBhY2thZ2VGaWxlSWQsXG4gICAgICApXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIHN0YXRlLnBhY2thZ2VGaWxlcy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgIGRlbGV0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9KVxuICAgIHJldHVybiBkZWxldGVkXG4gIH0sXG4gIGFkZFBhY2thZ2VGaWxlOiAoXG4gICAgcGFja2FnZUZpbGU6IE9taXQ8UGFja2FnZUZpbGUsIFwicGFja2FnZV9maWxlX2lkXCI+LFxuICApOiBQYWNrYWdlRmlsZSA9PiB7XG4gICAgY29uc3QgbmV3UGFja2FnZUZpbGUgPSB7XG4gICAgICBwYWNrYWdlX2ZpbGVfaWQ6IGBwYWNrYWdlX2ZpbGVfJHtEYXRlLm5vdygpfWAsXG4gICAgICAuLi5wYWNrYWdlRmlsZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIHBhY2thZ2VGaWxlczogWy4uLnN0YXRlLnBhY2thZ2VGaWxlcywgbmV3UGFja2FnZUZpbGVdLFxuICAgIH0pKVxuICAgIHJldHVybiBuZXdQYWNrYWdlRmlsZVxuICB9LFxuICB1cGRhdGVQYWNrYWdlRmlsZTogKFxuICAgIHBhY2thZ2VGaWxlSWQ6IHN0cmluZyxcbiAgICB1cGRhdGVzOiBQYXJ0aWFsPE9taXQ8UGFja2FnZUZpbGUsIFwicGFja2FnZV9maWxlX2lkXCI+PixcbiAgKTogUGFja2FnZUZpbGUgPT4ge1xuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlRmlsZXM6IHN0YXRlLnBhY2thZ2VGaWxlcy5tYXAoKGZpbGUpID0+XG4gICAgICAgIGZpbGUucGFja2FnZV9maWxlX2lkID09PSBwYWNrYWdlRmlsZUlkID8geyAuLi5maWxlLCAuLi51cGRhdGVzIH0gOiBmaWxlLFxuICAgICAgKSxcbiAgICB9KSlcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKGZpbGUpID0+IGZpbGUucGFja2FnZV9maWxlX2lkID09PSBwYWNrYWdlRmlsZUlkLFxuICAgICkhXG4gIH0sXG4gIGdldFN0YXJDb3VudDogKHBhY2thZ2VJZDogc3RyaW5nKTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAoYXApID0+IGFwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VJZCAmJiBhcC5pc19zdGFycmVkLFxuICAgICkubGVuZ3RoXG4gIH0sXG4gIGdldFBhY2thZ2VGaWxlc0J5UmVsZWFzZUlkOiAocGFja2FnZVJlbGVhc2VJZDogc3RyaW5nKTogUGFja2FnZUZpbGVbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5wYWNrYWdlRmlsZXMuZmlsdGVyKFxuICAgICAgKHBmKSA9PiBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gICAgKVxuICB9LFxuICAvKipcbiAgICogVXBkYXRlIGZzX3NoYSBmb3IgYSBwYWNrYWdlIHJlbGVhc2UgYmFzZWQgb24gaXRzIGZpbGVzXG4gICAqL1xuICB1cGRhdGVQYWNrYWdlUmVsZWFzZUZzU2hhOiAocGFja2FnZVJlbGVhc2VJZDogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IHN0YXRlLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgICAocGYpID0+IHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZCxcbiAgICApXG4gICAgY29uc3QgZnNTaGEgPSBnZW5lcmF0ZUZzU2hhKHBhY2thZ2VGaWxlcylcblxuICAgIHNldCgoY3VycmVudFN0YXRlKSA9PiAoe1xuICAgICAgLi4uY3VycmVudFN0YXRlLFxuICAgICAgcGFja2FnZVJlbGVhc2VzOiBjdXJyZW50U3RhdGUucGFja2FnZVJlbGVhc2VzLm1hcCgocHIpID0+XG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZFxuICAgICAgICAgID8geyAuLi5wciwgZnNfc2hhOiBmc1NoYSB9XG4gICAgICAgICAgOiBwcixcbiAgICAgICksXG4gICAgICBwYWNrYWdlczogY3VycmVudFN0YXRlLnBhY2thZ2VzLm1hcCgocGtnKSA9PlxuICAgICAgICBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZVJlbGVhc2VJZFxuICAgICAgICAgID8geyAuLi5wa2csIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfZnNfc2hhOiBmc1NoYSB9XG4gICAgICAgICAgOiBwa2csXG4gICAgICApLFxuICAgIH0pKVxuICB9LFxuXG4gIGFkZEFpUmV2aWV3OiAocmV2aWV3OiBPbWl0PEFpUmV2aWV3LCBcImFpX3Jldmlld19pZFwiPik6IEFpUmV2aWV3ID0+IHtcbiAgICBjb25zdCBiYXNlID0gYWlSZXZpZXdTY2hlbWEub21pdCh7IGFpX3Jldmlld19pZDogdHJ1ZSB9KS5wYXJzZShyZXZpZXcpXG4gICAgY29uc3QgbmV3UmV2aWV3ID0ge1xuICAgICAgYWlfcmV2aWV3X2lkOiBjcnlwdG8ucmFuZG9tVVVJRCgpLFxuICAgICAgLi4uYmFzZSxcbiAgICB9XG4gICAgc2V0KChzdGF0ZSkgPT4gKHtcbiAgICAgIGFpUmV2aWV3czogWy4uLnN0YXRlLmFpUmV2aWV3cywgbmV3UmV2aWV3XSxcbiAgICAgIGlkQ291bnRlcjogc3RhdGUuaWRDb3VudGVyICsgMSxcbiAgICB9KSlcbiAgICByZXR1cm4gbmV3UmV2aWV3XG4gIH0sXG4gIHVwZGF0ZUFpUmV2aWV3OiAoXG4gICAgYWlSZXZpZXdJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8QWlSZXZpZXc+LFxuICApOiBBaVJldmlldyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgbGV0IHVwZGF0ZWQ6IEFpUmV2aWV3IHwgdW5kZWZpbmVkXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5haVJldmlld3MuZmluZEluZGV4KFxuICAgICAgICAoYXIpID0+IGFyLmFpX3Jldmlld19pZCA9PT0gYWlSZXZpZXdJZCxcbiAgICAgIClcbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiBzdGF0ZVxuICAgICAgY29uc3QgYWlSZXZpZXdzID0gWy4uLnN0YXRlLmFpUmV2aWV3c11cbiAgICAgIGFpUmV2aWV3c1tpbmRleF0gPSB7IC4uLmFpUmV2aWV3c1tpbmRleF0sIC4uLnVwZGF0ZXMgfVxuICAgICAgdXBkYXRlZCA9IGFpUmV2aWV3c1tpbmRleF1cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhaVJldmlld3MgfVxuICAgIH0pXG4gICAgcmV0dXJuIHVwZGF0ZWRcbiAgfSxcbiAgZ2V0QWlSZXZpZXdCeUlkOiAoYWlSZXZpZXdJZDogc3RyaW5nKTogQWlSZXZpZXcgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICByZXR1cm4gc3RhdGUuYWlSZXZpZXdzLmZpbmQoKGFyKSA9PiBhci5haV9yZXZpZXdfaWQgPT09IGFpUmV2aWV3SWQpXG4gIH0sXG4gIGxpc3RBaVJldmlld3M6ICgpOiBBaVJldmlld1tdID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmFpUmV2aWV3c1xuICB9LFxuICBhZGREYXRhc2hlZXQ6ICh7IGNoaXBfbmFtZSB9OiB7IGNoaXBfbmFtZTogc3RyaW5nIH0pOiBEYXRhc2hlZXQgPT4ge1xuICAgIGNvbnN0IG5ld0RhdGFzaGVldCA9IGRhdGFzaGVldFNjaGVtYS5wYXJzZSh7XG4gICAgICBkYXRhc2hlZXRfaWQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICBjaGlwX25hbWUsXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBwaW5faW5mb3JtYXRpb246IG51bGwsXG4gICAgICBkYXRhc2hlZXRfcGRmX3VybHM6IG51bGwsXG4gICAgICBhaV9kZXNjcmlwdGlvbjogbnVsbCxcbiAgICB9KVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBkYXRhc2hlZXRzOiBbLi4uc3RhdGUuZGF0YXNoZWV0cywgbmV3RGF0YXNoZWV0XSxcbiAgICB9KSlcbiAgICByZXR1cm4gbmV3RGF0YXNoZWV0XG4gIH0sXG4gIGdldERhdGFzaGVldEJ5SWQ6IChkYXRhc2hlZXRJZDogc3RyaW5nKTogRGF0YXNoZWV0IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLmRhdGFzaGVldHMuZmluZCgoZCkgPT4gZC5kYXRhc2hlZXRfaWQgPT09IGRhdGFzaGVldElkKVxuICB9LFxuICBnZXREYXRhc2hlZXRCeUNoaXBOYW1lOiAoY2hpcE5hbWU6IHN0cmluZyk6IERhdGFzaGVldCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5kYXRhc2hlZXRzLmZpbmQoXG4gICAgICAoZCkgPT4gZC5jaGlwX25hbWUudG9Mb3dlckNhc2UoKSA9PT0gY2hpcE5hbWUudG9Mb3dlckNhc2UoKSxcbiAgICApXG4gIH0sXG4gIGxpc3REYXRhc2hlZXRzOiAoe1xuICAgIGNoaXBfbmFtZSxcbiAgICBpc19wb3B1bGFyLFxuICB9OiB7IGNoaXBfbmFtZT86IHN0cmluZzsgaXNfcG9wdWxhcj86IGJvb2xlYW4gfSA9IHt9KTogRGF0YXNoZWV0W10gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0KClcbiAgICBpZiAoaXNfcG9wdWxhcikge1xuICAgICAgcmV0dXJuIHN0YXRlLmRhdGFzaGVldHNcbiAgICB9XG5cbiAgICBpZiAoY2hpcF9uYW1lKSB7XG4gICAgICByZXR1cm4gc3RhdGUuZGF0YXNoZWV0cy5maWx0ZXIoXG4gICAgICAgIChkKSA9PiBkLmNoaXBfbmFtZS50b0xvd2VyQ2FzZSgpID09PSBjaGlwX25hbWUudG9Mb3dlckNhc2UoKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGUuZGF0YXNoZWV0c1xuICB9LFxuICB1cGRhdGVEYXRhc2hlZXQ6IChcbiAgICBkYXRhc2hlZXRJZDogc3RyaW5nLFxuICAgIHVwZGF0ZXM6IFBhcnRpYWw8RGF0YXNoZWV0PixcbiAgKTogRGF0YXNoZWV0IHwgdW5kZWZpbmVkID0+IHtcbiAgICBsZXQgdXBkYXRlZDogRGF0YXNoZWV0IHwgdW5kZWZpbmVkXG4gICAgc2V0KChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5kYXRhc2hlZXRzLmZpbmRJbmRleChcbiAgICAgICAgKGQpID0+IGQuZGF0YXNoZWV0X2lkID09PSBkYXRhc2hlZXRJZCxcbiAgICAgIClcbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiBzdGF0ZVxuICAgICAgY29uc3QgZGF0YXNoZWV0cyA9IFsuLi5zdGF0ZS5kYXRhc2hlZXRzXVxuICAgICAgZGF0YXNoZWV0c1tpbmRleF0gPSB7IC4uLmRhdGFzaGVldHNbaW5kZXhdLCAuLi51cGRhdGVzIH1cbiAgICAgIHVwZGF0ZWQgPSBkYXRhc2hlZXRzW2luZGV4XVxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGRhdGFzaGVldHMgfVxuICAgIH0pXG4gICAgcmV0dXJuIHVwZGF0ZWRcbiAgfSxcbiAgYWRkUGFja2FnZUJ1aWxkOiAoXG4gICAgcGFja2FnZUJ1aWxkOiBPbWl0PFBhY2thZ2VCdWlsZCwgXCJwYWNrYWdlX2J1aWxkX2lkXCI+LFxuICApOiBQYWNrYWdlQnVpbGQgPT4ge1xuICAgIGNvbnN0IG5ld1BhY2thZ2VCdWlsZCA9IHtcbiAgICAgIHBhY2thZ2VfYnVpbGRfaWQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICAuLi5wYWNrYWdlQnVpbGQsXG4gICAgfVxuICAgIHNldCgoc3RhdGUpID0+ICh7XG4gICAgICBwYWNrYWdlQnVpbGRzOiBbLi4uc3RhdGUucGFja2FnZUJ1aWxkcywgbmV3UGFja2FnZUJ1aWxkXSxcbiAgICAgIC8vIEF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSBwYWNrYWdlIHJlbGVhc2UgdG8gcmVmZXJlbmNlIHRoaXMgYXMgdGhlIGxhdGVzdCBidWlsZFxuICAgICAgcGFja2FnZVJlbGVhc2VzOiBzdGF0ZS5wYWNrYWdlUmVsZWFzZXMubWFwKChyZWxlYXNlKSA9PlxuICAgICAgICByZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZUJ1aWxkLnBhY2thZ2VfcmVsZWFzZV9pZFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5yZWxlYXNlLFxuICAgICAgICAgICAgICBsYXRlc3RfcGFja2FnZV9idWlsZF9pZDogbmV3UGFja2FnZUJ1aWxkLnBhY2thZ2VfYnVpbGRfaWQsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiByZWxlYXNlLFxuICAgICAgKSxcbiAgICB9KSlcbiAgICByZXR1cm4gbmV3UGFja2FnZUJ1aWxkXG4gIH0sXG4gIGdldFBhY2thZ2VCdWlsZEJ5SWQ6IChwYWNrYWdlQnVpbGRJZDogc3RyaW5nKTogUGFja2FnZUJ1aWxkIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldCgpXG4gICAgcmV0dXJuIHN0YXRlLnBhY2thZ2VCdWlsZHMuZmluZChcbiAgICAgIChwYikgPT4gcGIucGFja2FnZV9idWlsZF9pZCA9PT0gcGFja2FnZUJ1aWxkSWQsXG4gICAgKVxuICB9LFxuICBnZXRQYWNrYWdlQnVpbGRzQnlSZWxlYXNlSWQ6IChwYWNrYWdlUmVsZWFzZUlkOiBzdHJpbmcpOiBQYWNrYWdlQnVpbGRbXSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXQoKVxuICAgIHJldHVybiBzdGF0ZS5wYWNrYWdlQnVpbGRzXG4gICAgICAuZmlsdGVyKChwYikgPT4gcGIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkKVxuICAgICAgLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKCksXG4gICAgICApXG4gIH0sXG4gIHVwZGF0ZVBhY2thZ2VCdWlsZDogKFxuICAgIHBhY2thZ2VCdWlsZElkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxQYWNrYWdlQnVpbGQ+LFxuICApOiBQYWNrYWdlQnVpbGQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGxldCB1cGRhdGVkOiBQYWNrYWdlQnVpbGQgfCB1bmRlZmluZWRcbiAgICBzZXQoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLnBhY2thZ2VCdWlsZHMuZmluZEluZGV4KFxuICAgICAgICAocGIpID0+IHBiLnBhY2thZ2VfYnVpbGRfaWQgPT09IHBhY2thZ2VCdWlsZElkLFxuICAgICAgKVxuICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHN0YXRlXG4gICAgICBjb25zdCBwYWNrYWdlQnVpbGRzID0gWy4uLnN0YXRlLnBhY2thZ2VCdWlsZHNdXG4gICAgICBwYWNrYWdlQnVpbGRzW2luZGV4XSA9IHsgLi4ucGFja2FnZUJ1aWxkc1tpbmRleF0sIC4uLnVwZGF0ZXMgfVxuICAgICAgdXBkYXRlZCA9IHBhY2thZ2VCdWlsZHNbaW5kZXhdXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgcGFja2FnZUJ1aWxkcyB9XG4gICAgfSlcbiAgICByZXR1cm4gdXBkYXRlZFxuICB9LFxufSkpXG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgY29uc3QgZXJyb3JTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGVycm9yX2NvZGU6IHouc3RyaW5nKCksXG4gICAgbWVzc2FnZTogei5zdHJpbmcoKSxcbiAgfSlcbiAgLnBhc3N0aHJvdWdoKClcblxuZXhwb3J0IGNvbnN0IGVycm9yUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGVycm9yOiBlcnJvclNjaGVtYSxcbn0pXG5cbmV4cG9ydCBjb25zdCBzbmlwcGV0U2NoZW1hID0gei5vYmplY3Qoe1xuICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIHVuc2NvcGVkX25hbWU6IHouc3RyaW5nKCksXG4gIG93bmVyX25hbWU6IHouc3RyaW5nKCksXG4gIGlzX3N0YXJyZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBjb2RlOiB6LnN0cmluZygpLFxuICBkdHM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY29tcGlsZWRfanM6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICBjaXJjdWl0X2pzb246IHouYXJyYXkoei5yZWNvcmQoei5hbnkoKSkpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudDogei5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHN0YXJyZWRfYXQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgc25pcHBldF90eXBlOiB6LmVudW0oW1wiYm9hcmRcIiwgXCJwYWNrYWdlXCIsIFwibW9kZWxcIiwgXCJmb290cHJpbnRcIl0pLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB2ZXJzaW9uOiB6LnN0cmluZygpLmRlZmF1bHQoXCIwLjAuMVwiKSxcbiAgc3Rhcl9jb3VudDogei5udW1iZXIoKS5kZWZhdWx0KDApLFxuICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcHVibGljOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICBpc191bmxpc3RlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIHRhZ3M6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbn0pXG5leHBvcnQgdHlwZSBTbmlwcGV0ID0gei5pbmZlcjx0eXBlb2Ygc25pcHBldFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHNlc3Npb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHouc3RyaW5nKCksXG4gIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gIGV4cGlyZXNfYXQ6IHouc3RyaW5nKCksXG4gIGlzX2NsaV9zZXNzaW9uOiB6LmJvb2xlYW4oKSxcbn0pXG5leHBvcnQgdHlwZSBTZXNzaW9uID0gei5pbmZlcjx0eXBlb2Ygc2Vzc2lvblNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGxvZ2luUGFnZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgbG9naW5fcGFnZV9pZDogei5zdHJpbmcoKSxcbiAgbG9naW5fcGFnZV9hdXRoX3Rva2VuOiB6LnN0cmluZygpLFxuICB3YXNfbG9naW5fc3VjY2Vzc2Z1bDogei5ib29sZWFuKCksXG4gIGhhc19iZWVuX3VzZWRfdG9fY3JlYXRlX3Nlc3Npb246IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICBleHBpcmVzX2F0OiB6LnN0cmluZygpLFxufSlcbmV4cG9ydCB0eXBlIExvZ2luUGFnZSA9IHouaW5mZXI8dHlwZW9mIGxvZ2luUGFnZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IHNoaXBwaW5nSW5mb1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgZmlyc3ROYW1lOiB6LnN0cmluZygpLFxuICBsYXN0TmFtZTogei5zdHJpbmcoKSxcbiAgY29tcGFueU5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgYWRkcmVzczogei5zdHJpbmcoKSxcbiAgYXBhcnRtZW50OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGNpdHk6IHouc3RyaW5nKCksXG4gIHN0YXRlOiB6LnN0cmluZygpLFxuICB6aXBDb2RlOiB6LnN0cmluZygpLFxuICBjb3VudHJ5OiB6LnN0cmluZygpLFxuICBwaG9uZTogei5zdHJpbmcoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBhY2NvdW50U2NoZW1hID0gei5vYmplY3Qoe1xuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBnaXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCksXG4gIHNoaXBwaW5nSW5mbzogc2hpcHBpbmdJbmZvU2NoZW1hLm9wdGlvbmFsKCksXG59KVxuZXhwb3J0IHR5cGUgQWNjb3VudCA9IHouaW5mZXI8dHlwZW9mIGFjY291bnRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBvcmRlclNjaGVtYSA9IHoub2JqZWN0KHtcbiAgb3JkZXJfaWQ6IHouc3RyaW5nKCksXG4gIGFjY291bnRfaWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgaXNfcnVubmluZzogei5ib29sZWFuKCksXG4gIGlzX3N0YXJ0ZWQ6IHouYm9vbGVhbigpLFxuICBpc19maW5pc2hlZDogei5ib29sZWFuKCksXG4gIGVycm9yOiBlcnJvclNjaGVtYS5udWxsYWJsZSgpLFxuICBoYXNfZXJyb3I6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICBzdGFydGVkX2F0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGNvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBjaXJjdWl0X2pzb246IHouYW55KCksXG59KVxuZXhwb3J0IHR5cGUgT3JkZXIgPSB6LmluZmVyPHR5cGVvZiBvcmRlclNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IG9yZGVyRmlsZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgb3JkZXJfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgb3JkZXJfaWQ6IHouc3RyaW5nKCksXG4gIGlzX2dlcmJlcnNfemlwOiB6LmJvb2xlYW4oKSxcbiAgY29udGVudF90eXBlOiB6LnN0cmluZygpLFxuICBmb3JfcHJvdmlkZXI6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgdXBsb2FkZWRfYXQ6IHouc3RyaW5nKCksXG4gIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBjb250ZW50X2J5dGVzOiB6Lmluc3RhbmNlb2YoVWludDhBcnJheSkubnVsbGFibGUoKSxcbn0pXG5leHBvcnQgdHlwZSBPcmRlckZpbGUgPSB6LmluZmVyPHR5cGVvZiBvcmRlckZpbGVTY2hlbWE+XG5cbmNvbnN0IHNoaXBwaW5nT3B0aW9uU2NoZW1hID0gei5vYmplY3Qoe1xuICBjYXJyaWVyOiB6LnN0cmluZygpLFxuICBzZXJ2aWNlOiB6LnN0cmluZygpLFxuICBjb3N0OiB6Lm51bWJlcigpLFxufSlcbmV4cG9ydCB0eXBlIFNoaXBwaW5nT3B0aW9uID0gei5pbmZlcjx0eXBlb2Ygc2hpcHBpbmdPcHRpb25TY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBxdW90ZWRDb21wb25lbnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIG1hbnVmYWN0dXJlcl9wYXJ0X251bWJlcjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBzdXBwbGllcl9wYXJ0X251bWJlcjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBxdWFudGl0eTogei5udW1iZXIoKS5kZWZhdWx0KDApLFxuICB1bml0X3ByaWNlOiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIHRvdGFsX3ByaWNlOiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIGF2YWlsYWJsZTogei5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbn0pXG5leHBvcnQgdHlwZSBRdW90ZWRDb21wb25lbnQgPSB6LmluZmVyPHR5cGVvZiBxdW90ZWRDb21wb25lbnRTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBvcmRlclF1b3RlU2NoZW1hID0gei5vYmplY3Qoe1xuICBvcmRlcl9xdW90ZV9pZDogei5zdHJpbmcoKSxcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgaXNfY29tcGxldGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcHJvY2Vzc2luZzogei5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgdmVuZG9yX25hbWU6IHouc3RyaW5nKCksXG4gIGVycm9yOiBlcnJvclNjaGVtYS5udWxsYWJsZSgpLFxuICBoYXNfZXJyb3I6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICB1cGRhdGVkX2F0OiB6LnN0cmluZygpLFxuICBjb21wbGV0ZWRfYXQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgcXVvdGVkX2NvbXBvbmVudHM6IHouYXJyYXkocXVvdGVkQ29tcG9uZW50U2NoZW1hKS5udWxsYWJsZSgpLFxuICBiYXJlX3BjYl9jb3N0OiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIHNoaXBwaW5nX29wdGlvbnM6IHouYXJyYXkoc2hpcHBpbmdPcHRpb25TY2hlbWEpLFxuICB0b3RhbF9jb3N0X3dpdGhvdXRfc2hpcHBpbmc6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbn0pXG5leHBvcnQgdHlwZSBPcmRlclF1b3RlID0gei5pbmZlcjx0eXBlb2Ygb3JkZXJRdW90ZVNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGFpUmV2aWV3U2NoZW1hID0gei5vYmplY3Qoe1xuICBhaV9yZXZpZXdfaWQ6IHouc3RyaW5nKCkudXVpZCgpLFxuICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgYWlfcmV2aWV3X3RleHQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgc3RhcnRfcHJvY2Vzc2luZ19hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCksXG4gIGZpbmlzaGVkX3Byb2Nlc3NpbmdfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLFxuICBwcm9jZXNzaW5nX2Vycm9yOiB6LmFueSgpLm51bGxhYmxlKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgZGlzcGxheV9zdGF0dXM6IHouZW51bShbXCJwZW5kaW5nXCIsIFwiY29tcGxldGVkXCIsIFwiZmFpbGVkXCJdKSxcbn0pXG5leHBvcnQgdHlwZSBBaVJldmlldyA9IHouaW5mZXI8dHlwZW9mIGFpUmV2aWV3U2NoZW1hPlxuXG5leHBvcnQgY29uc3QgZGF0YXNoZWV0UGluSW5mb3JtYXRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBpbl9udW1iZXI6IHouc3RyaW5nKCksXG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLFxuICBjYXBhYmlsaXRpZXM6IHouYXJyYXkoei5zdHJpbmcoKSksXG59KVxuXG5leHBvcnQgY29uc3QgZGF0YXNoZWV0U2NoZW1hID0gei5vYmplY3Qoe1xuICBkYXRhc2hlZXRfaWQ6IHouc3RyaW5nKCksXG4gIGNoaXBfbmFtZTogei5zdHJpbmcoKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKSxcbiAgcGluX2luZm9ybWF0aW9uOiBkYXRhc2hlZXRQaW5JbmZvcm1hdGlvblNjaGVtYS5hcnJheSgpLm51bGxhYmxlKCksXG4gIGRhdGFzaGVldF9wZGZfdXJsczogei5hcnJheSh6LnN0cmluZygpKS5udWxsYWJsZSgpLFxuICBhaV9kZXNjcmlwdGlvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxufSlcbmV4cG9ydCB0eXBlIERhdGFzaGVldCA9IHouaW5mZXI8dHlwZW9mIGRhdGFzaGVldFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGdpdGh1Ykluc3RhbGxhdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgZ2l0aHViX2luc3RhbGxhdGlvbl9pZDogei5zdHJpbmcoKSxcbiAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgaW5zdGFsbGF0aW9uX2lkOiB6LnN0cmluZygpLCAvLyBHaXRIdWIgQXBwIGluc3RhbGxhdGlvbiBJRFxuICBnaXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgdXBkYXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLFxuICBpc19hY3RpdmU6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gIGFjY2Vzc190b2tlbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksIC8vIEZvciBzdG9yaW5nIEdpdEh1YiBhY2Nlc3MgdG9rZW5cbiAgYWNjZXNzX3Rva2VuX2V4cGlyZXNfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG59KVxuZXhwb3J0IHR5cGUgR2l0aHViSW5zdGFsbGF0aW9uID0gei5pbmZlcjx0eXBlb2YgZ2l0aHViSW5zdGFsbGF0aW9uU2NoZW1hPlxuXG4vLyBUT0RPOiBSZW1vdmUgdGhpcyBzY2hlbWEgYWZ0ZXIgbWlncmF0aW9uIHRvIGFjY291bnRQYWNrYWdlcyBpcyBjb21wbGV0ZVxuZXhwb3J0IGNvbnN0IGFjY291bnRTbmlwcGV0U2NoZW1hID0gei5vYmplY3Qoe1xuICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICBoYXNfc3RhcnJlZDogei5ib29sZWFuKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCksXG59KVxuZXhwb3J0IHR5cGUgQWNjb3VudFNuaXBwZXQgPSB6LmluZmVyPHR5cGVvZiBhY2NvdW50U25pcHBldFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGFjY291bnRQYWNrYWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBhY2NvdW50X3BhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gIGFjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gIGlzX3N0YXJyZWQ6IHouYm9vbGVhbigpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICB1cGRhdGVkX2F0OiB6LnN0cmluZygpLFxufSlcbmV4cG9ydCB0eXBlIEFjY291bnRQYWNrYWdlID0gei5pbmZlcjx0eXBlb2YgYWNjb3VudFBhY2thZ2VTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBwYWNrYWdlUmVsZWFzZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICB2ZXJzaW9uOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGlzX2xvY2tlZDogei5ib29sZWFuKCksXG4gIGlzX2xhdGVzdDogei5ib29sZWFuKCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgY29tbWl0X3NoYTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGxpY2Vuc2U6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3I6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0OiB6XG4gICAgLnN0cmluZygpXG4gICAgLmRhdGV0aW1lKClcbiAgICAubnVsbGFibGUoKVxuICAgIC5vcHRpb25hbCgpLFxuICBoYXNfdHJhbnNwaWxlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIHRyYW5zcGlsYXRpb25fZXJyb3I6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBmc19zaGE6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICAvLyBCdWlsZCBTdGF0dXMgYW5kIERpc3BsYXlcbiAgZGlzcGxheV9zdGF0dXM6IHpcbiAgICAuZW51bShbXCJwZW5kaW5nXCIsIFwiYnVpbGRpbmdcIiwgXCJjb21wbGV0ZVwiLCBcImVycm9yXCJdKVxuICAgIC5kZWZhdWx0KFwicGVuZGluZ1wiKSxcbiAgdG90YWxfYnVpbGRfZHVyYXRpb25fbXM6IHoubnVtYmVyKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuXG4gIC8vIFRyYW5zcGlsYXRpb24gUHJvY2Vzc1xuICB0cmFuc3BpbGF0aW9uX2Rpc3BsYXlfc3RhdHVzOiB6XG4gICAgLmVudW0oW1wicGVuZGluZ1wiLCBcImJ1aWxkaW5nXCIsIFwiY29tcGxldGVcIiwgXCJlcnJvclwiXSlcbiAgICAuZGVmYXVsdChcInBlbmRpbmdcIiksXG4gIHRyYW5zcGlsYXRpb25faW5fcHJvZ3Jlc3M6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICB0cmFuc3BpbGF0aW9uX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIHRyYW5zcGlsYXRpb25fY29tcGxldGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICB0cmFuc3BpbGF0aW9uX2xvZ3M6IHouYXJyYXkoei5hbnkoKSkuZGVmYXVsdChbXSksXG4gIHRyYW5zcGlsYXRpb25faXNfc3RhbGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuXG4gIC8vIENpcmN1aXQgSlNPTiBCdWlsZCBQcm9jZXNzXG4gIGNpcmN1aXRfanNvbl9idWlsZF9kaXNwbGF5X3N0YXR1czogelxuICAgIC5lbnVtKFtcInBlbmRpbmdcIiwgXCJidWlsZGluZ1wiLCBcImNvbXBsZXRlXCIsIFwiZXJyb3JcIl0pXG4gICAgLmRlZmF1bHQoXCJwZW5kaW5nXCIpLFxuICBjaXJjdWl0X2pzb25fYnVpbGRfaW5fcHJvZ3Jlc3M6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBjaXJjdWl0X2pzb25fYnVpbGRfc3RhcnRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2NvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IHouYXJyYXkoei5hbnkoKSkuZGVmYXVsdChbXSksXG4gIGNpcmN1aXRfanNvbl9idWlsZF9pc19zdGFsZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG5cbiAgLy8gQUkgUmV2aWV3XG4gIGFpX3Jldmlld190ZXh0OiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKS5vcHRpb25hbCgpLFxuICBhaV9yZXZpZXdfc3RhcnRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgYWlfcmV2aWV3X2NvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgYWlfcmV2aWV3X2Vycm9yOiB6LmFueSgpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgYWlfcmV2aWV3X2xvZ3M6IHouYXJyYXkoei5hbnkoKSkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICBhaV9yZXZpZXdfcmVxdWVzdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcblxuICAvLyBQcmV2aWV3XG4gIGlzX3ByX3ByZXZpZXc6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBnaXRodWJfcHJfbnVtYmVyOiB6Lm51bWJlcigpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcblxuICAvLyBMYXRlc3QgQnVpbGQgUmVmZXJlbmNlXG4gIGxhdGVzdF9wYWNrYWdlX2J1aWxkX2lkOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgYnJhbmNoX25hbWU6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBjb21taXRfbWVzc2FnZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGNvbW1pdF9hdXRob3I6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxufSlcbmV4cG9ydCB0eXBlIFBhY2thZ2VSZWxlYXNlID0gei5pbmZlcjx0eXBlb2YgcGFja2FnZVJlbGVhc2VTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBwYWNrYWdlRmlsZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgcGFja2FnZV9maWxlX2lkOiB6LnN0cmluZygpLFxuICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgY29udGVudF90ZXh0OiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY3JlYXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLFxuICBjb250ZW50X21pbWV0eXBlOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgaXNfcmVsZWFzZV90YXJiYWxsOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBucG1fcGFja19vdXRwdXQ6IHouYW55KCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxufSlcbmV4cG9ydCB0eXBlIFBhY2thZ2VGaWxlID0gei5pbmZlcjx0eXBlb2YgcGFja2FnZUZpbGVTY2hlbWE+XG5cbmV4cG9ydCBjb25zdCBwYWNrYWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICBjcmVhdG9yX2FjY291bnRfaWQ6IHouc3RyaW5nKCksXG4gIG93bmVyX29yZ19pZDogei5zdHJpbmcoKSxcbiAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBuYW1lOiB6LnN0cmluZygpLFxuICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIHVwZGF0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKSxcbiAgaXNfc25pcHBldDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2JvYXJkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcGFja2FnZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX21vZGVsOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfZm9vdHByaW50OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkubnVsbGFibGUoKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcHVibGljOiB6LmJvb2xlYW4oKS5udWxsYWJsZSgpLmRlZmF1bHQodHJ1ZSksXG4gIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5udWxsYWJsZSgpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19zb3VyY2VfZnJvbV9naXRodWI6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBzbmlwcGV0X3R5cGU6IHouZW51bShbXCJib2FyZFwiLCBcInBhY2thZ2VcIiwgXCJtb2RlbFwiLCBcImZvb3RwcmludFwiXSkub3B0aW9uYWwoKSxcbiAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBsYXRlc3RfdmVyc2lvbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBsaWNlbnNlOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHdlYnNpdGU6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBzdGFyX2NvdW50OiB6Lm51bWJlcigpLmRlZmF1bHQoMCksXG4gIGFpX2Rlc2NyaXB0aW9uOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGxhdGVzdF9saWNlbnNlOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfZnNfc2hhOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgZGVmYXVsdF92aWV3OiB6XG4gICAgLmVudW0oW1wiZmlsZXNcIiwgXCIzZFwiLCBcInBjYlwiLCBcInNjaGVtYXRpY1wiXSlcbiAgICAuZGVmYXVsdChcImZpbGVzXCIpXG4gICAgLm9wdGlvbmFsKCksXG4gIGFsbG93X3ByX3ByZXZpZXdzOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKS5vcHRpb25hbCgpLFxuICBpc19zdGFycmVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKS5vcHRpb25hbCgpLFxufSlcbmV4cG9ydCB0eXBlIFBhY2thZ2UgPSB6LmluZmVyPHR5cGVvZiBwYWNrYWdlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgamxjcGNiT3JkZXJTdGF0ZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgamxjcGNiX29yZGVyX3N0YXRlX2lkOiB6LnN0cmluZygpLFxuICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgYXJlX2dlcmJlcnNfdXBsb2FkZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19nZXJiZXJfYW5hbHl6ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBhcmVfaW5pdGlhbF9jb3N0c19jYWxjdWxhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfcGNiX2FkZGVkX3RvX2NhcnQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19ib21fdXBsb2FkZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wbnBfdXBsb2FkZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19ib21fcG5wX2FuYWx5emVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfYm9tX3BhcnNpbmdfY29tcGxldGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBhcmVfY29tcG9uZW50c19hdmFpbGFibGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19wYXRjaF9tYXBfZ2VuZXJhdGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19kZm1fcmVzdWx0X2dlbmVyYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGFyZV9maWxlc19kb3dubG9hZGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgYXJlX2ZpbmFsX2Nvc3RzX2NhbGN1bGF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpc19qc29uX21lcmdlX2ZpbGVfdXBkYXRlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGlzX2FkZGVkX3RvX2NhcnQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICB1cGxvYWRlZF9nZXJiZXJfbWV0YWRhdGE6IHouYW55KCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBnZXJiZXJfYW5hbHlzaXM6IHouYW55KCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLFxuICBhcmVfZ2VyYmVyc19nZW5lcmF0ZWQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBjdXJyZW50X3N0ZXA6IHouc3RyaW5nKCkubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxufSlcbmV4cG9ydCB0eXBlIEpsY3BjYk9yZGVyU3RhdGUgPSB6LmluZmVyPHR5cGVvZiBqbGNwY2JPcmRlclN0YXRlU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgamxjcGNiT3JkZXJTdGVwUnVuU2NoZW1hID0gei5vYmplY3Qoe1xuICBqbGNwY2Jfb3JkZXJfc3RlcF9ydW5faWQ6IHouc3RyaW5nKCksXG4gIGlzX3J1bm5pbmc6IHouYm9vbGVhbigpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgc3RlcF9mdW5jdGlvbl9uYW1lOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgamxjcGNiX29yZGVyX3N0YXRlX2lkOiB6LnN0cmluZygpLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbiAgZXJyb3JfbWVzc2FnZTogei5zdHJpbmcoKS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG4gIGNyZWF0ZWRfYXQ6IHouc3RyaW5nKCksXG59KVxuZXhwb3J0IHR5cGUgSmxjcGNiT3JkZXJTdGVwUnVuID0gei5pbmZlcjx0eXBlb2YgamxjcGNiT3JkZXJTdGVwUnVuU2NoZW1hPlxuXG5leHBvcnQgY29uc3QgcGFja2FnZUJ1aWxkU2NoZW1hID0gei5vYmplY3Qoe1xuICBwYWNrYWdlX2J1aWxkX2lkOiB6LnN0cmluZygpLnV1aWQoKSxcbiAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICBjcmVhdGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCksXG4gIHRyYW5zcGlsYXRpb25faW5fcHJvZ3Jlc3M6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICB0cmFuc3BpbGF0aW9uX3N0YXJ0ZWRfYXQ6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIHRyYW5zcGlsYXRpb25fY29tcGxldGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICB0cmFuc3BpbGF0aW9uX2xvZ3M6IHouYXJyYXkoei5hbnkoKSkuZGVmYXVsdChbXSksXG4gIHRyYW5zcGlsYXRpb25fZXJyb3I6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBjaXJjdWl0X2pzb25fYnVpbGRfaW5fcHJvZ3Jlc3M6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBjaXJjdWl0X2pzb25fYnVpbGRfc3RhcnRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2NvbXBsZXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IHouYXJyYXkoei5hbnkoKSkuZGVmYXVsdChbXSksXG4gIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcjogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGJ1aWxkX2luX3Byb2dyZXNzOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgYnVpbGRfc3RhcnRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgYnVpbGRfY29tcGxldGVkX2F0OiB6LnN0cmluZygpLmRhdGV0aW1lKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBidWlsZF9lcnJvcjogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGJ1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDogei5zdHJpbmcoKS5kYXRldGltZSgpLFxuICBwcmV2aWV3X3VybDogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGJ1aWxkX2xvZ3M6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxufSlcbmV4cG9ydCB0eXBlIFBhY2thZ2VCdWlsZCA9IHouaW5mZXI8dHlwZW9mIHBhY2thZ2VCdWlsZFNjaGVtYT5cblxuZXhwb3J0IGNvbnN0IGRhdGFiYXNlU2NoZW1hID0gei5vYmplY3Qoe1xuICBpZENvdW50ZXI6IHoubnVtYmVyKCkuZGVmYXVsdCgwKSxcbiAgc25pcHBldHM6IHouYXJyYXkoc25pcHBldFNjaGVtYSkuZGVmYXVsdChbXSksXG4gIHBhY2thZ2VSZWxlYXNlczogei5hcnJheShwYWNrYWdlUmVsZWFzZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIHBhY2thZ2VGaWxlczogei5hcnJheShwYWNrYWdlRmlsZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIHNlc3Npb25zOiB6LmFycmF5KHNlc3Npb25TY2hlbWEpLmRlZmF1bHQoW10pLFxuICBsb2dpblBhZ2VzOiB6LmFycmF5KGxvZ2luUGFnZVNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGFjY291bnRzOiB6LmFycmF5KGFjY291bnRTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBwYWNrYWdlczogei5hcnJheShwYWNrYWdlU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgb3JkZXJzOiB6LmFycmF5KG9yZGVyU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgb3JkZXJGaWxlczogei5hcnJheShvcmRlckZpbGVTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBhY2NvdW50U25pcHBldHM6IHouYXJyYXkoYWNjb3VudFNuaXBwZXRTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBhY2NvdW50UGFja2FnZXM6IHouYXJyYXkoYWNjb3VudFBhY2thZ2VTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBqbGNwY2JPcmRlclN0YXRlOiB6LmFycmF5KGpsY3BjYk9yZGVyU3RhdGVTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBqbGNwY2JPcmRlclN0ZXBSdW5zOiB6LmFycmF5KGpsY3BjYk9yZGVyU3RlcFJ1blNjaGVtYSkuZGVmYXVsdChbXSksXG4gIG9yZGVyUXVvdGVzOiB6LmFycmF5KG9yZGVyUXVvdGVTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBhaVJldmlld3M6IHouYXJyYXkoYWlSZXZpZXdTY2hlbWEpLmRlZmF1bHQoW10pLFxuICBkYXRhc2hlZXRzOiB6LmFycmF5KGRhdGFzaGVldFNjaGVtYSkuZGVmYXVsdChbXSksXG4gIGdpdGh1Ykluc3RhbGxhdGlvbnM6IHouYXJyYXkoZ2l0aHViSW5zdGFsbGF0aW9uU2NoZW1hKS5kZWZhdWx0KFtdKSxcbiAgcGFja2FnZUJ1aWxkczogei5hcnJheShwYWNrYWdlQnVpbGRTY2hlbWEpLmRlZmF1bHQoW10pLFxufSlcbmV4cG9ydCB0eXBlIERhdGFiYXNlU2NoZW1hID0gei5pbmZlcjx0eXBlb2YgZGF0YWJhc2VTY2hlbWE+XG4iLCAiaW1wb3J0IGZzIGZyb20gXCJmc1wiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgYXhpb3MgZnJvbSBcInJlZGF4aW9zXCJcbmltcG9ydCB0eXBlIHsgRGJDbGllbnQgfSBmcm9tIFwiLi9kYi1jbGllbnRcIlxuaW1wb3J0IHR5cGUgeyBQYWNrYWdlLCBQYWNrYWdlRmlsZSwgUGFja2FnZVJlbGVhc2UgfSBmcm9tIFwiLi9zY2hlbWFcIlxuXG5jb25zdCBleHRyYWN0VHNjaURlcGVuZGVuY2llcyA9IChcbiAgY29kZTogc3RyaW5nLFxuKTogQXJyYXk8eyBvd25lcjogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfT4gPT4ge1xuICBjb25zdCByZWdleCA9IC9AdHNjaVxcLyhbXi5dKylcXC4oW15cIidcXHNdKykvZ1xuICBjb25zdCBtYXRjaGVzID0gQXJyYXkuZnJvbShjb2RlLm1hdGNoQWxsKHJlZ2V4KSlcbiAgcmV0dXJuIG1hdGNoZXMubWFwKChtYXRjaCkgPT4gKHtcbiAgICBvd25lcjogbWF0Y2hbMV0sXG4gICAgbmFtZTogbWF0Y2hbMl0sXG4gIH0pKVxufVxuXG5jb25zdCByZWdpc3RyeUFwaSA9IGF4aW9zLmNyZWF0ZSh7XG4gIGJhc2VVUkw6IFwiaHR0cHM6Ly9yZWdpc3RyeS1hcGkudHNjaXJjdWl0LmNvbVwiLFxuICBoZWFkZXJzOiB7XG4gICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgfSxcbn0pXG5cbmNvbnN0IGZldGNoUGFja2FnZUZyb21SZWdpc3RyeSA9IGFzeW5jIChvd25lcjogc3RyaW5nLCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgZnVsbE5hbWUgPSBgJHtvd25lcn0vJHtuYW1lfWBcbiAgY29uc29sZS5sb2coYEZldGNoaW5nIHBhY2thZ2UgJHtmdWxsTmFtZX0uLi5gKVxuXG4gIGxldCBwYWNrYWdlRGF0YVxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVnaXN0cnlBcGkucG9zdChcIi9wYWNrYWdlcy9nZXRcIiwge1xuICAgICAgbmFtZTogZnVsbE5hbWUsXG4gICAgfSlcbiAgICBwYWNrYWdlRGF0YSA9IHJlc3BvbnNlLmRhdGFcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBwYWNrYWdlIGRhdGEgZm9yICR7ZnVsbE5hbWV9OmAsIGUpXG4gICAgdGhyb3cgZVxuICB9XG5cbiAgbGV0IHJlbGVhc2VEYXRhXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZWdpc3RyeUFwaS5wb3N0KFwiL3BhY2thZ2VfcmVsZWFzZXMvZ2V0XCIsIHtcbiAgICAgIHBhY2thZ2VfaWQ6IHBhY2thZ2VEYXRhLnBhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIGlzX2xhdGVzdDogdHJ1ZSxcbiAgICB9KVxuICAgIHJlbGVhc2VEYXRhID0gcmVzcG9uc2UuZGF0YVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGZldGNoIHJlbGVhc2UgZGF0YSBmb3IgJHtmdWxsTmFtZX06YCwgZSlcbiAgICB0aHJvdyBlXG4gIH1cblxuICBsZXQgZmlsZXNEYXRhXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZWdpc3RyeUFwaS5wb3N0KFwiL3BhY2thZ2VfZmlsZXMvbGlzdFwiLCB7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHJlbGVhc2VEYXRhLnBhY2thZ2VfcmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgfSlcbiAgICBmaWxlc0RhdGEgPSByZXNwb25zZS5kYXRhXG5cbiAgICAvLyBGZXRjaCBjb250ZW50X3RleHQgZm9yIGVhY2ggZmlsZSBpbmRpdmlkdWFsbHlcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXNEYXRhLnBhY2thZ2VfZmlsZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZpbGVSZXNwb25zZSA9IGF3YWl0IHJlZ2lzdHJ5QXBpLnBvc3QoXCIvcGFja2FnZV9maWxlcy9nZXRcIiwge1xuICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcmVsZWFzZURhdGEucGFja2FnZV9yZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgICAgICBmaWxlX3BhdGg6IGZpbGUuZmlsZV9wYXRoLFxuICAgICAgICB9KVxuICAgICAgICBmaWxlLmNvbnRlbnRfdGV4dCA9IGZpbGVSZXNwb25zZS5kYXRhLnBhY2thZ2VfZmlsZS5jb250ZW50X3RleHRcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBgRmFpbGVkIHRvIGZldGNoIGNvbnRlbnQgZm9yIGZpbGUgJHtmaWxlLmZpbGVfcGF0aH0gaW4gcGFja2FnZSAke2Z1bGxOYW1lfTpgLFxuICAgICAgICAgIGUsXG4gICAgICAgIClcbiAgICAgICAgdGhyb3cgZVxuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCBmaWxlcyBkYXRhIGZvciAke2Z1bGxOYW1lfTpgLCBlKVxuICAgIHRocm93IGVcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcGFja2FnZTogcGFja2FnZURhdGEucGFja2FnZSBhcyBQYWNrYWdlLFxuICAgIHJlbGVhc2U6IHJlbGVhc2VEYXRhLnBhY2thZ2VfcmVsZWFzZSBhcyBQYWNrYWdlUmVsZWFzZSxcbiAgICBmaWxlczogZmlsZXNEYXRhLnBhY2thZ2VfZmlsZXMgYXMgUGFja2FnZUZpbGVbXSxcbiAgfVxufVxuXG5jb25zdCBsb2FkUGFja2FnZVdpdGhEZXBlbmRlbmNpZXMgPSBhc3luYyAoXG4gIGRiOiBEYkNsaWVudCxcbiAgb3duZXI6IHN0cmluZyxcbiAgbmFtZTogc3RyaW5nLFxuICBsb2FkZWRQYWNrYWdlcyA9IG5ldyBTZXQ8c3RyaW5nPigpLFxuKSA9PiB7XG4gIGNvbnN0IHBhY2thZ2VLZXkgPSBgJHtvd25lcn0vJHtuYW1lfWBcbiAgaWYgKGxvYWRlZFBhY2thZ2VzLmhhcyhwYWNrYWdlS2V5KSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBsZXQgcmVzdWx0XG4gIHRyeSB7XG4gICAgcmVzdWx0ID0gYXdhaXQgZmV0Y2hQYWNrYWdlRnJvbVJlZ2lzdHJ5KG93bmVyLCBuYW1lKVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihgXHUyNzE3IEZhaWxlZCB0byBsb2FkICR7cGFja2FnZUtleX1gKVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3QgeyBwYWNrYWdlOiBwa2csIHJlbGVhc2UsIGZpbGVzIH0gPSByZXN1bHRcblxuICAvLyBDaGVjayBpZiBwYWNrYWdlIGFscmVhZHkgZXhpc3RzXG4gIGlmIChkYi5nZXRQYWNrYWdlQnlJZChwa2cucGFja2FnZV9pZCkpIHtcbiAgICBjb25zb2xlLmxvZyhgXHUyNzEzIFBhY2thZ2UgJHtwYWNrYWdlS2V5fSBhbHJlYWR5IGV4aXN0c2ApXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIEFkZCBwYWNrYWdlLCByZWxlYXNlLCBhbmQgZmlsZXMgdG8gZGJcbiAgZGIuYWRkUGFja2FnZSh7XG4gICAgLi4ucGtnLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogcmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgc3Rhcl9jb3VudDogTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTEpLFxuICB9KVxuXG4gIGRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICAuLi5yZWxlYXNlLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB0cmFuc3BpbGF0aW9uX2xvZ3M6IEFycmF5LmlzQXJyYXkocmVsZWFzZS50cmFuc3BpbGF0aW9uX2xvZ3MpXG4gICAgICA/IHJlbGVhc2UudHJhbnNwaWxhdGlvbl9sb2dzXG4gICAgICA6IFtdLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9sb2dzOiBBcnJheS5pc0FycmF5KHJlbGVhc2UuY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3MpXG4gICAgICA/IHJlbGVhc2UuY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3NcbiAgICAgIDogW10sXG4gICAgdHJhbnNwaWxhdGlvbl9kaXNwbGF5X3N0YXR1czpcbiAgICAgIHJlbGVhc2UudHJhbnNwaWxhdGlvbl9kaXNwbGF5X3N0YXR1cyA/PyBcInBlbmRpbmdcIixcbiAgfSlcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBkYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICAuLi5maWxlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH0pXG4gIH1cblxuICBsb2FkZWRQYWNrYWdlcy5hZGQocGFja2FnZUtleSlcbiAgY29uc29sZS5sb2coYFx1MjcxMyBMb2FkZWQgJHtwYWNrYWdlS2V5fWApXG5cbiAgLy8gTG9hZCBkZXBlbmRlbmNpZXNcbiAgY29uc3QgbWFpbkZpbGUgPSBmaWxlcy5maW5kKFxuICAgIChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c3hcIiB8fCBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC50c1wiLFxuICApXG4gIGlmICghbWFpbkZpbGU/LmNvbnRlbnRfdGV4dCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBjb25zdCBkZXBlbmRlbmNpZXMgPSBleHRyYWN0VHNjaURlcGVuZGVuY2llcyhtYWluRmlsZS5jb250ZW50X3RleHQpXG4gIGxldCBhbGxEZXBzTG9hZGVkID0gdHJ1ZVxuXG4gIGZvciAoY29uc3QgZGVwIG9mIGRlcGVuZGVuY2llcykge1xuICAgIGNvbnN0IGRlcExvYWRlZCA9IGF3YWl0IGxvYWRQYWNrYWdlV2l0aERlcGVuZGVuY2llcyhcbiAgICAgIGRiLFxuICAgICAgZGVwLm93bmVyLFxuICAgICAgZGVwLm5hbWUsXG4gICAgICBsb2FkZWRQYWNrYWdlcyxcbiAgICApXG4gICAgaWYgKCFkZXBMb2FkZWQpIHtcbiAgICAgIGFsbERlcHNMb2FkZWQgPSBmYWxzZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgXHUyNkEwXHVGRTBGIEZhaWxlZCB0byBsb2FkIGRlcGVuZGVuY3kgJHtkZXAub3duZXJ9LyR7ZGVwLm5hbWV9IGZvciAke3BhY2thZ2VLZXl9YCxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsRGVwc0xvYWRlZFxufVxuXG5leHBvcnQgY29uc3QgbG9hZEF1dG9sb2FkUGFja2FnZXMgPSBhc3luYyAoZGI6IERiQ2xpZW50KSA9PiB7XG4gIGNvbnN0IGF1dG9sb2FkUGF0aCA9IHBhdGguam9pbihcbiAgICBwYXRoLmRpcm5hbWUoX19kaXJuYW1lKSxcbiAgICBcImRiXCIsXG4gICAgXCJhdXRvbG9hZC1wYWNrYWdlcy5qc29uXCIsXG4gIClcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGF1dG9sb2FkUGF0aCkpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiTm8gYXV0b2xvYWQtcGFja2FnZXMuanNvbiBmb3VuZFwiKVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgYXV0b2xvYWRDb250ZW50ID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoYXV0b2xvYWRQYXRoLCBcInV0ZjhcIikpXG4gIGNvbnN0IGxvYWRlZFBhY2thZ2VzID0gbmV3IFNldDxzdHJpbmc+KClcbiAgbGV0IHN1Y2Nlc3NDb3VudCA9IDBcbiAgbGV0IGZhaWx1cmVDb3VudCA9IDBcblxuICBmb3IgKGNvbnN0IHBhY2thZ2VSZWYgb2YgYXV0b2xvYWRDb250ZW50LnBhY2thZ2VzKSB7XG4gICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGxvYWRQYWNrYWdlV2l0aERlcGVuZGVuY2llcyhcbiAgICAgIGRiLFxuICAgICAgcGFja2FnZVJlZi5vd25lcixcbiAgICAgIHBhY2thZ2VSZWYubmFtZSxcbiAgICAgIGxvYWRlZFBhY2thZ2VzLFxuICAgIClcbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgc3VjY2Vzc0NvdW50KytcbiAgICB9IGVsc2Uge1xuICAgICAgZmFpbHVyZUNvdW50KytcbiAgICB9XG4gIH1cblxuICBjb25zb2xlLmxvZyhgXFxuUGFja2FnZSBsb2FkaW5nIGNvbXBsZXRlOmApXG4gIGNvbnNvbGUubG9nKGBcdTI3MTMgU3VjY2Vzc2Z1bGx5IGxvYWRlZDogJHtzdWNjZXNzQ291bnR9IHBhY2thZ2VzYClcbiAgaWYgKGZhaWx1cmVDb3VudCA+IDApIHtcbiAgICBjb25zb2xlLmxvZyhgXHUyNzE3IEZhaWxlZCB0byBsb2FkOiAke2ZhaWx1cmVDb3VudH0gcGFja2FnZXNgKVxuICB9XG59XG4iLCAiaW1wb3J0IHsgRGJDbGllbnQgfSBmcm9tIFwiLi9kYi1jbGllbnRcIlxuaW1wb3J0IHsgbG9hZEF1dG9sb2FkUGFja2FnZXMgfSBmcm9tIFwiLi9hdXRvbG9hZC1kZXYtcGFja2FnZXNcIlxuXG5leHBvcnQgY29uc3Qgc2VlZCA9IChkYjogRGJDbGllbnQpID0+IHtcbiAgY29uc3QgeyBhY2NvdW50X2lkIH0gPSBkYi5hZGRBY2NvdW50KHtcbiAgICBhY2NvdW50X2lkOiBcImFjY291bnQtMTIzNFwiLFxuICAgIGdpdGh1Yl91c2VybmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIHNoaXBwaW5nSW5mbzoge1xuICAgICAgZmlyc3ROYW1lOiBcIlRlc3RcIixcbiAgICAgIGxhc3ROYW1lOiBcIlVzZXJcIixcbiAgICAgIGNvbXBhbnlOYW1lOiBcIlRlc3QgQ29tcGFueVwiLFxuICAgICAgYWRkcmVzczogXCIxMjMgVGVzdCBTdFwiLFxuICAgICAgYXBhcnRtZW50OiBcIkFwdCA0QlwiLFxuICAgICAgY2l0eTogXCJUZXN0dmlsbGVcIixcbiAgICAgIHN0YXRlOiBcIk5ZXCIsXG4gICAgICB6aXBDb2RlOiBcIjEwMDAxXCIsXG4gICAgICBjb3VudHJ5OiBcIlVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYVwiLFxuICAgICAgcGhvbmU6IFwiNTU1LTEyMy00NTY3XCIsXG4gICAgfSxcbiAgfSlcbiAgZGIuYWRkQWNjb3VudCh7XG4gICAgZ2l0aHViX3VzZXJuYW1lOiBcInNldmVpYmFyXCIsXG4gIH0pXG5cbiAgaWYgKHByb2Nlc3MuZW52LkFVVE9MT0FEX1BBQ0tBR0VTID09PSBcInRydWVcIikge1xuICAgIGxvYWRBdXRvbG9hZFBhY2thZ2VzKGRiKVxuICB9XG5cbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlSWQxIH0gPSBkYi5hZGRTbmlwcGV0KHtcbiAgICBuYW1lOiBcInRlc3R1c2VyL215LXRlc3QtYm9hcmRcIixcbiAgICB1bnNjb3BlZF9uYW1lOiBcIm15LXRlc3QtYm9hcmRcIixcbiAgICBnaXRodWJfcmVwb19mdWxsX25hbWU6IFwidGVzdHVzZXIvbXktdGVzdC1ib2FyZFwiLFxuICAgIG93bmVyX25hbWU6IFwidGVzdHVzZXJcIixcbiAgICBicmFuY2hfbmFtZTogXCJtYWluXCIsXG4gICAgY29tbWl0X21lc3NhZ2U6IFwiQXR0ZW1wdGVkIGJ1aWxkIG9mIGE1NTV0aW1lci1zcXVhcmUtd2F2ZSBwYWNrYWdlXCIsXG4gICAgY29tbWl0X2F1dGhvcjogXCJ0ZXN0dXNlclwiLFxuICAgIGNyZWF0b3JfYWNjb3VudF9pZDogYWNjb3VudF9pZCxcbiAgICBjb2RlOiBgXG5pbXBvcnQgeyBBNTU1VGltZXIgfSBmcm9tIFwiQHRzY2kvc2V2ZWliYXIuYTU1NXRpbWVyXCJcblxuZXhwb3J0IGRlZmF1bHQgKCkgPT4gKFxuICA8Ym9hcmQgd2lkdGg9XCIxMG1tXCIgaGVpZ2h0PVwiMTBtbVwiPlxuICAgIDxBNTU1VGltZXIgbmFtZT1cIlUxXCIgLz5cbiAgPC9ib2FyZD5cbilgLnRyaW0oKSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHNuaXBwZXRfdHlwZTogXCJib2FyZFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgc2ltcGxlIGJvYXJkIHdpdGggYW4gQTU1NSBUaW1lciBjb21wb25lbnRcIixcbiAgICBjaXJjdWl0X2pzb246IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIG5hbWU6IFwicGluMVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAxLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4xXCIsIFwiMVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgICBuYW1lOiBcInBpbjJcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluMlwiLCBcIjJcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgICAgbmFtZTogXCJwaW4zXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjNcIiwgXCIzXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICAgIG5hbWU6IFwicGluNFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW40XCIsIFwiNFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNFwiLFxuICAgICAgICBuYW1lOiBcInBpbjVcIixcbiAgICAgICAgcGluX251bWJlcjogNSxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNVwiLCBcIjVcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgICAgbmFtZTogXCJwaW42XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDYsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjZcIiwgXCI2XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICAgIG5hbWU6IFwicGluN1wiLFxuICAgICAgICBwaW5fbnVtYmVyOiA3LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW43XCIsIFwiN1wiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgICBuYW1lOiBcInBpbjhcIixcbiAgICAgICAgcGluX251bWJlcjogOCxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluOFwiLCBcIjhcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9jb21wb25lbnRcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgICAgZnR5cGU6IFwic2ltcGxlX2NoaXBcIixcbiAgICAgICAgbmFtZTogXCJVMVwiLFxuICAgICAgICBzdXBwbGllcl9wYXJ0X251bWJlcnM6IHt9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfY29tcG9uZW50XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcm90YXRpb246IDAsXG4gICAgICAgIHNpemU6IHtcbiAgICAgICAgICB3aWR0aDogMS4xLFxuICAgICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgfSxcbiAgICAgICAgcGluX3NwYWNpbmc6IDAuMixcbiAgICAgICAgcG9ydF9sYWJlbHM6IHt9LFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8wXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8xXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDIsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8yXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAzLFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfM1wiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAtMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogNCxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IC0wLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNVwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMTAwMDAwMDAwMDAwMDAwMDMsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDYsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA1LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF82XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjA5OTk5OTk5OTk5OTk5OTk4LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF82XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA3LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfN1wiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogMC4zMDAwMDAwMDAwMDAwMDAwNCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogOCxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9jb21wb25lbnRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDogOC44MixcbiAgICAgICAgaGVpZ2h0OiA4LjgyLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm90YXRpb246IDAsXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9ib2FyZFwiLFxuICAgICAgICBwY2JfYm9hcmRfaWQ6IFwicGNiX2JvYXJkXzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICB0aGlja25lc3M6IDEuNCxcbiAgICAgICAgbnVtX2xheWVyczogNCxcbiAgICAgICAgd2lkdGg6IDEwLFxuICAgICAgICBoZWlnaHQ6IDEwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjFcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8xXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIyXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMlwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiM1wiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfM1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI0XCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV80XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzRcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjVcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF81XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI2XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzZcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiN1wiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzdcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfN1wiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiOFwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhcIixcbiAgICAgICAgcGNiX3NpbGtzY3JlZW5fcGF0aF9pZDogXCJwY2Jfc2lsa3NjcmVlbl9wYXRoXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXI6IFwidG9wXCIsXG4gICAgICAgIHJvdXRlOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0xLjAwMzMzMzMzMzMzMzMzMzIsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuOTI2OTU5MTMwOTUyOTkwOSxcbiAgICAgICAgICAgIHk6IDQuMjI2MDQwOTU2MTkzNjkzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuNzA5NDYzODAzNzkwNTAyNixcbiAgICAgICAgICAgIHk6IDMuOTAwNTM2MTk2MjA5NDk3OCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0wLjM4Mzk1OTA0MzgwNjMwNjcsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiA2LjE0MzY0NDc3NTcyMjU1NmUtMTcsXG4gICAgICAgICAgICB5OiAzLjYwNjY2NjY2NjY2NjY2NzQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjM4Mzk1OTA0MzgwNjMwNjc0LFxuICAgICAgICAgICAgeTogMy42ODMwNDA4NjkwNDcwMDk2LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC43MDk0NjM4MDM3OTA1MDI3LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAxLjAwMzMzMzMzMzMzMzMzMzIsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogMy4wMSxcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHN0cm9rZV93aWR0aDogMC4xLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8wXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzJcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfM1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8zXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0zLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF81XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzZcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IDEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMy44MSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfN1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJjYWRfY29tcG9uZW50XCIsXG4gICAgICAgIGNhZF9jb21wb25lbnRfaWQ6IFwiY2FkX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHo6IDAuNyxcbiAgICAgICAgfSxcbiAgICAgICAgcm90YXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgICAgZm9vdHByaW50ZXJfc3RyaW5nOiBcImRpcDhcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSlcblxuICBjb25zdCBmaXJzdEJ1aWxkID0gZGIuYWRkUGFja2FnZUJ1aWxkKHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBhY2thZ2VSZWxlYXNlSWQxLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxNTAwMCkudG9JU09TdHJpbmcoKSwgLy8gMTUgc2Vjb25kcyBhZ29cbiAgICB0cmFuc3BpbGF0aW9uX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICB0cmFuc3BpbGF0aW9uX3N0YXJ0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxNTAwMCkudG9JU09TdHJpbmcoKSxcbiAgICB0cmFuc3BpbGF0aW9uX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDE0MDAwKS50b0lTT1N0cmluZygpLFxuICAgIHRyYW5zcGlsYXRpb25fbG9nczogW1xuICAgICAgXCJbSU5GT10gU3RhcnRpbmcgdHJhbnNwaWxhdGlvbi4uLlwiLFxuICAgICAgXCJbSU5GT10gUGFyc2luZyBwYWNrYWdlIGNvZGVcIixcbiAgICAgIFwiW0VSUk9SXSBGYWlsZWQgdG8gcGFyc2UgVHlwZVNjcmlwdCBkZWZpbml0aW9uc1wiLFxuICAgICAgXCJbRVJST1JdIEludmFsaWQgc3ludGF4IGluIGNvbXBvbmVudCBkZWNsYXJhdGlvblwiLFxuICAgIF0sXG4gICAgdHJhbnNwaWxhdGlvbl9lcnJvcjpcbiAgICAgIFwiVHlwZVNjcmlwdCBjb21waWxhdGlvbiBmYWlsZWQ6IFN5bnRheCBlcnJvciBpbiBjb21wb25lbnQgZGVjbGFyYXRpb25cIixcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfaW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9zdGFydGVkX2F0OiBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQ6IG51bGwsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IFtdLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcjogXCJCdWlsZCBjYW5jZWxsZWQgZHVlIHRvIHRyYW5zcGlsYXRpb24gZmFpbHVyZVwiLFxuICAgIGJ1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBidWlsZF9zdGFydGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTUwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgYnVpbGRfY29tcGxldGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTQwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgYnVpbGRfZXJyb3I6IFwiQnVpbGQgZmFpbGVkOiBVbmFibGUgdG8gY29tcGxldGUgdHJhbnNwaWxhdGlvbiBzdGVwXCIsXG4gICAgYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTQwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgcHJldmlld191cmw6IG51bGwsXG4gICAgYnVpbGRfbG9nczpcbiAgICAgIFwiQnVpbGQgcHJvY2VzczpcXG5cIiArXG4gICAgICBcIjEuIEVudmlyb25tZW50IHNldHVwIC0gT0tcXG5cIiArXG4gICAgICBcIjIuIERlcGVuZGVuY3kgcmVzb2x1dGlvbiAtIE9LXFxuXCIgK1xuICAgICAgXCIzLiBDb2RlIGNvbXBpbGF0aW9uIC0gRkFJTEVEXFxuXCIgK1xuICAgICAgXCJFcnJvcjogSW52YWxpZCBzeW50YXggaW4gY29tcG9uZW50IGRlY2xhcmF0aW9uXFxuXCIgK1xuICAgICAgXCJCdWlsZCB0ZXJtaW5hdGVkIHdpdGggZXJyb3JzXCIsXG4gIH0pXG5cbiAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlIHJlbGVhc2Ugd2l0aCB0aGUgbGF0ZXN0IGJ1aWxkIElEXG4gIGNvbnN0IHJlbGVhc2UxID0gZGIuZ2V0UGFja2FnZVJlbGVhc2VCeUlkKHBhY2thZ2VSZWxlYXNlSWQxKSFcbiAgZGIudXBkYXRlUGFja2FnZVJlbGVhc2Uoe1xuICAgIC4uLnJlbGVhc2UxLFxuICAgIGxhdGVzdF9wYWNrYWdlX2J1aWxkX2lkOiBmaXJzdEJ1aWxkLnBhY2thZ2VfYnVpbGRfaWQsXG4gIH0pXG4gIC8vIERlZmluZSB0aGUgQHRzY2kvc2V2ZWliYXIuYTU1NXRpbWVyIHBhY2thZ2VcbiAgZGIuYWRkU25pcHBldCh7XG4gICAgbmFtZTogXCJzZXZlaWJhci9hNTU1dGltZXJcIixcbiAgICB1bnNjb3BlZF9uYW1lOiBcImE1NTV0aW1lclwiLFxuICAgIG93bmVyX25hbWU6IFwic2V2ZWliYXJcIixcbiAgICBjb2RlOiBgXG5leHBvcnQgY29uc3QgQTU1NVRpbWVyID0gKHsgbmFtZSB9OiB7IG5hbWU6IHN0cmluZyB9KSA9PiAoXG4gIDxjaGlwIG5hbWU9e25hbWV9IGZvb3RwcmludD1cImRpcDhcIiAvPlxuKVxuYC50cmltKCksXG4gICAgZHRzOiBgXG5kZWNsYXJlIG1vZHVsZSBcIkB0c2NpL3NldmVpYmFyLmE1NTV0aW1lclwiIHtcbiAgZXhwb3J0IGNvbnN0IEE1NTVUaW1lcjogKHsgbmFtZSB9OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9KSA9PiBhbnk7XG59XG5gLnRyaW0oKSxcbiAgICBjb21waWxlZF9qczogYFxuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkE1NTVUaW1lciA9IHZvaWQgMDtcbmNvbnN0IEE1NTVUaW1lciA9ICh7XG4gIG5hbWVcbn0pID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiY2hpcFwiLCB7XG4gIG5hbWU6IG5hbWUsXG4gIGZvb3RwcmludDogXCJkaXA4XCJcbn0pO1xuZXhwb3J0cy5BNTU1VGltZXIgPSBBNTU1VGltZXI7XG4gICAgYC50cmltKCksXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBzbmlwcGV0X3R5cGU6IFwicGFja2FnZVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgc2ltcGxlIHBhY2thZ2Ugd2l0aCBhbiBBNTU1IFRpbWVyIGNvbXBvbmVudFwiLFxuICAgIGNpcmN1aXRfanNvbjogW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgbmFtZTogXCJwaW4xXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjFcIiwgXCIxXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIG5hbWU6IFwicGluMlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4yXCIsIFwiMlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBuYW1lOiBcInBpbjNcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluM1wiLCBcIjNcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgbmFtZTogXCJwaW40XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjRcIiwgXCI0XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIG5hbWU6IFwicGluNVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW41XCIsIFwiNVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBuYW1lOiBcInBpbjZcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNlwiLCBcIjZcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgbmFtZTogXCJwaW43XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjdcIiwgXCI3XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIG5hbWU6IFwicGluOFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW44XCIsIFwiOFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX2NvbXBvbmVudFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmdHlwZTogXCJzaW1wbGVfY2hpcFwiLFxuICAgICAgICBuYW1lOiBcIlUxXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19jb21wb25lbnRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc2l6ZToge1xuICAgICAgICAgIHdpZHRoOiAxLjEsXG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICB9LFxuICAgICAgICBwaW5fc3BhY2luZzogMC4yLFxuICAgICAgICBwb3J0X2xhYmVsczoge30sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzBcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzFcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzJcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8zXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF81XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzZcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA2LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF83XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2NvbXBvbmVudFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiA4LjgyLFxuICAgICAgICBoZWlnaHQ6IDguODIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2JvYXJkXCIsXG4gICAgICAgIHBjYl9ib2FyZF9pZDogXCJwY2JfYm9hcmRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaWNrbmVzczogMS40LFxuICAgICAgICBudW1fbGF5ZXJzOiA0LFxuICAgICAgICB3aWR0aDogNTAsXG4gICAgICAgIGhlaWdodDogNTAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjJcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIzXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjRcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjZcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI3XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI4XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3NpbGtzY3JlZW5fcGF0aFwiLFxuICAgICAgICBwY2Jfc2lsa3NjcmVlbl9wYXRoX2lkOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm91dGU6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC43MDk0NjM4MDM3OTA1MDI2LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuMzgzOTU5MDQzODA2MzA2NyxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDYuMTQzNjQ0Nzc1NzIyNTU2ZS0xNyxcbiAgICAgICAgICAgIHk6IDMuNjA2NjY2NjY2NjY2NjY3NCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuMzgzOTU5MDQzODA2MzA2NzQsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjcwOTQ2MzgwMzc5MDUwMjcsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc3Ryb2tlX3dpZHRoOiAwLjEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImNhZF9jb21wb25lbnRcIixcbiAgICAgICAgY2FkX2NvbXBvbmVudF9pZDogXCJjYWRfY29tcG9uZW50XzBcIixcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMC43LFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLFxuICAgICAgICB9LFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmb290cHJpbnRlcl9zdHJpbmc6IFwiZGlwOFwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9KVxuXG4gIC8vIEFkZCBhIHNuaXBwZXQgdGhhdCBvdXRwdXRzIGEgc3F1YXJlIHdhdmVmb3JtIHVzaW5nIHRoZSBhNTU1dGltZXJcblxuICBjb25zdCB7IHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2VJZDIgfSA9IGRiLmFkZFNuaXBwZXQoe1xuICAgIG5hbWU6IFwidGVzdHVzZXIvYTU1NXRpbWVyLXNxdWFyZS13YXZlXCIsXG4gICAgdW5zY29wZWRfbmFtZTogXCJhNTU1dGltZXItc3F1YXJlLXdhdmVcIixcbiAgICBvd25lcl9uYW1lOiBcInRlc3R1c2VyXCIsXG4gICAgYnJhbmNoX25hbWU6IFwibWFpblwiLFxuICAgIGNvbW1pdF9tZXNzYWdlOiBcIkF0dGVtcHRlZCBidWlsZCBvZiBhNTU1dGltZXItc3F1YXJlLXdhdmUgcGFja2FnZVwiLFxuICAgIGNvbW1pdF9hdXRob3I6IFwidGVzdHVzZXJcIixcbiAgICBjcmVhdG9yX2FjY291bnRfaWQ6IGFjY291bnRfaWQsXG4gICAgY29kZTogYFxuaW1wb3J0IHsgQTU1NVRpbWVyIH0gZnJvbSBcIkB0c2NpL3NldmVpYmFyLmE1NTV0aW1lclwiXG5cbmV4cG9ydCBjb25zdCBTcXVhcmVXYXZlTW9kdWxlID0gKCkgPT4gKFxuICA8QTU1NVRpbWVyIG5hbWU9XCJVMVwiIC8+XG4pXG5gLnRyaW0oKSxcbiAgICBkdHM6ICdleHBvcnQgZGVjbGFyZSBjb25zdCBTcXVhcmVXYXZlTW9kdWxlOiAoKSA9PiBpbXBvcnQoXCJyZWFjdC9qc3gtcnVudGltZVwiKS5KU1guRWxlbWVudDtcXG4nLFxuICAgIGNvbXBpbGVkX2pzOlxuICAgICAgJ1widXNlIHN0cmljdFwiO1xcblxcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xcbiAgdmFsdWU6IHRydWVcXG59KTtcXG5leHBvcnRzLlNxdWFyZVdhdmVNb2R1bGUgPSB2b2lkIDA7XFxudmFyIF9zZXZlaWJhciA9IHJlcXVpcmUoXCJAdHNjaS9zZXZlaWJhci5hNTU1dGltZXJcIik7XFxuY29uc3QgU3F1YXJlV2F2ZU1vZHVsZSA9ICgpID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KF9zZXZlaWJhci5BNTU1VGltZXIsIHtcXG4gIG5hbWU6IFwiVTFcIlxcbn0pO1xcbmV4cG9ydHMuU3F1YXJlV2F2ZU1vZHVsZSA9IFNxdWFyZVdhdmVNb2R1bGU7JyxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHNuaXBwZXRfdHlwZTogXCJwYWNrYWdlXCIsXG4gICAgZ2l0aHViX3JlcG9fZnVsbF9uYW1lOiBcInRlc3R1c2VyL3Rlc3RcIixcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiQSBzaW1wbGUgcGFja2FnZSB0aGF0IG91dHB1dHMgYSBzcXVhcmUgd2F2ZWZvcm0gdXNpbmcgdGhlIGE1NTV0aW1lclwiLFxuICAgIGNpcmN1aXRfanNvbjogW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzBcIixcbiAgICAgICAgbmFtZTogXCJwaW4xXCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDEsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjFcIiwgXCIxXCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIG5hbWU6IFwicGluMlwiLFxuICAgICAgICBwaW5fbnVtYmVyOiAyLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW4yXCIsIFwiMlwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBuYW1lOiBcInBpbjNcIixcbiAgICAgICAgcGluX251bWJlcjogMyxcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluM1wiLCBcIjNcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgbmFtZTogXCJwaW40XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDQsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjRcIiwgXCI0XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF80XCIsXG4gICAgICAgIG5hbWU6IFwicGluNVwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA1LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW41XCIsIFwiNVwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX3BvcnRcIixcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBuYW1lOiBcInBpbjZcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgcG9ydF9oaW50czogW1wicGluNlwiLCBcIjZcIl0sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNvdXJjZV9wb3J0XCIsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgbmFtZTogXCJwaW43XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHBvcnRfaGludHM6IFtcInBpbjdcIiwgXCI3XCJdLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzb3VyY2VfcG9ydFwiLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIG5hbWU6IFwicGluOFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCJwaW44XCIsIFwiOFwiXSxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX2NvbXBvbmVudFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmdHlwZTogXCJzaW1wbGVfY2hpcFwiLFxuICAgICAgICBuYW1lOiBcIlUxXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19jb21wb25lbnRcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc2l6ZToge1xuICAgICAgICAgIHdpZHRoOiAxLjEsXG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICB9LFxuICAgICAgICBwaW5fc3BhY2luZzogMC4yLFxuICAgICAgICBwb3J0X2xhYmVsczoge30sXG4gICAgICAgIHNvdXJjZV9jb21wb25lbnRfaWQ6IFwic291cmNlX2NvbXBvbmVudF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzBcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMSxcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzFcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjEwMDAwMDAwMDAwMDAwMDAzLFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwibGVmdFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcImxlZnRcIixcbiAgICAgICAgcGluX251bWJlcjogMixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzJcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogLTAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4wOTk5OTk5OTk5OTk5OTk5OCxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcImxlZnRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJsZWZ0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDMsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiAyLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF8zXCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IC0wLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJsZWZ0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwibGVmdFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA0LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogMyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic2NoZW1hdGljX3BvcnRcIixcbiAgICAgICAgc2NoZW1hdGljX3BvcnRfaWQ6IFwic2NoZW1hdGljX3BvcnRfNFwiLFxuICAgICAgICBzY2hlbWF0aWNfY29tcG9uZW50X2lkOiBcInNjaGVtYXRpY19jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLjk1MDAwMDAwMDAwMDAwMDEsXG4gICAgICAgICAgeTogLTAuMzAwMDAwMDAwMDAwMDAwMDQsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDUsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF81XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAtMC4xMDAwMDAwMDAwMDAwMDAwMyxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNVwiLFxuICAgICAgICBmYWNpbmdfZGlyZWN0aW9uOiBcInJpZ2h0XCIsXG4gICAgICAgIGRpc3RhbmNlX2Zyb21fY29tcG9uZW50X2VkZ2U6IDAuNCxcbiAgICAgICAgc2lkZV9vZl9jb21wb25lbnQ6IFwicmlnaHRcIixcbiAgICAgICAgcGluX251bWJlcjogNixcbiAgICAgICAgdHJ1ZV9jY3dfaW5kZXg6IDUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInNjaGVtYXRpY19wb3J0XCIsXG4gICAgICAgIHNjaGVtYXRpY19wb3J0X2lkOiBcInNjaGVtYXRpY19wb3J0XzZcIixcbiAgICAgICAgc2NoZW1hdGljX2NvbXBvbmVudF9pZDogXCJzY2hlbWF0aWNfY29tcG9uZW50XzBcIixcbiAgICAgICAgY2VudGVyOiB7XG4gICAgICAgICAgeDogMC45NTAwMDAwMDAwMDAwMDAxLFxuICAgICAgICAgIHk6IDAuMDk5OTk5OTk5OTk5OTk5OTgsXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzZcIixcbiAgICAgICAgZmFjaW5nX2RpcmVjdGlvbjogXCJyaWdodFwiLFxuICAgICAgICBkaXN0YW5jZV9mcm9tX2NvbXBvbmVudF9lZGdlOiAwLjQsXG4gICAgICAgIHNpZGVfb2ZfY29tcG9uZW50OiBcInJpZ2h0XCIsXG4gICAgICAgIHBpbl9udW1iZXI6IDcsXG4gICAgICAgIHRydWVfY2N3X2luZGV4OiA2LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzY2hlbWF0aWNfcG9ydFwiLFxuICAgICAgICBzY2hlbWF0aWNfcG9ydF9pZDogXCJzY2hlbWF0aWNfcG9ydF83XCIsXG4gICAgICAgIHNjaGVtYXRpY19jb21wb25lbnRfaWQ6IFwic2NoZW1hdGljX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgIHg6IDAuOTUwMDAwMDAwMDAwMDAwMSxcbiAgICAgICAgICB5OiAwLjMwMDAwMDAwMDAwMDAwMDA0LFxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICAgIGZhY2luZ19kaXJlY3Rpb246IFwicmlnaHRcIixcbiAgICAgICAgZGlzdGFuY2VfZnJvbV9jb21wb25lbnRfZWRnZTogMC40LFxuICAgICAgICBzaWRlX29mX2NvbXBvbmVudDogXCJyaWdodFwiLFxuICAgICAgICBwaW5fbnVtYmVyOiA4LFxuICAgICAgICB0cnVlX2Njd19pbmRleDogNyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2NvbXBvbmVudFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiA4LjgyLFxuICAgICAgICBoZWlnaHQ6IDguODIsXG4gICAgICAgIGxheWVyOiBcInRvcFwiLFxuICAgICAgICByb3RhdGlvbjogMCxcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzBcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX2JvYXJkXCIsXG4gICAgICAgIHBjYl9ib2FyZF9pZDogXCJwY2JfYm9hcmRfMFwiLFxuICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaWNrbmVzczogMS40LFxuICAgICAgICBudW1fbGF5ZXJzOiA0LFxuICAgICAgICB3aWR0aDogNTAsXG4gICAgICAgIGhlaWdodDogNTAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfMFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiMVwiXSxcbiAgICAgICAgeDogLTMuODEsXG4gICAgICAgIHk6IDMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8xXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjJcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfMlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8yXCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCIzXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzNcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjRcIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMy44MSxcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJib3R0b21cIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wbGF0ZWRfaG9sZVwiLFxuICAgICAgICBwY2JfcGxhdGVkX2hvbGVfaWQ6IFwicGNiX3BsYXRlZF9ob2xlXzRcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBvdXRlcl9kaWFtZXRlcjogMS4yLFxuICAgICAgICBob2xlX2RpYW1ldGVyOiAxLFxuICAgICAgICBzaGFwZTogXCJjaXJjbGVcIixcbiAgICAgICAgcG9ydF9oaW50czogW1wiNVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiYm90dG9tXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcGxhdGVkX2hvbGVcIixcbiAgICAgICAgcGNiX3BsYXRlZF9ob2xlX2lkOiBcInBjYl9wbGF0ZWRfaG9sZV81XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzVcIixcbiAgICAgICAgb3V0ZXJfZGlhbWV0ZXI6IDEuMixcbiAgICAgICAgaG9sZV9kaWFtZXRlcjogMSxcbiAgICAgICAgc2hhcGU6IFwiY2lyY2xlXCIsXG4gICAgICAgIHBvcnRfaGludHM6IFtcIjZcIl0sXG4gICAgICAgIHg6IDMuODEsXG4gICAgICAgIHk6IC0xLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF82XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI3XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BsYXRlZF9ob2xlXCIsXG4gICAgICAgIHBjYl9wbGF0ZWRfaG9sZV9pZDogXCJwY2JfcGxhdGVkX2hvbGVfN1wiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIG91dGVyX2RpYW1ldGVyOiAxLjIsXG4gICAgICAgIGhvbGVfZGlhbWV0ZXI6IDEsXG4gICAgICAgIHNoYXBlOiBcImNpcmNsZVwiLFxuICAgICAgICBwb3J0X2hpbnRzOiBbXCI4XCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImJvdHRvbVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3NpbGtzY3JlZW5fcGF0aFwiLFxuICAgICAgICBwY2Jfc2lsa3NjcmVlbl9wYXRoX2lkOiBcInBjYl9zaWxrc2NyZWVuX3BhdGhfMFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcjogXCJ0b3BcIixcbiAgICAgICAgcm91dGU6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMy4wMSxcbiAgICAgICAgICAgIHk6IC00LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTMuMDEsXG4gICAgICAgICAgICB5OiA0LjYxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC45MjY5NTkxMzA5NTI5OTA5LFxuICAgICAgICAgICAgeTogNC4yMjYwNDA5NTYxOTM2OTMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAtMC43MDk0NjM4MDM3OTA1MDI2LFxuICAgICAgICAgICAgeTogMy45MDA1MzYxOTYyMDk0OTc4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeDogLTAuMzgzOTU5MDQzODA2MzA2NyxcbiAgICAgICAgICAgIHk6IDMuNjgzMDQwODY5MDQ3MDA5NixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDYuMTQzNjQ0Nzc1NzIyNTU2ZS0xNyxcbiAgICAgICAgICAgIHk6IDMuNjA2NjY2NjY2NjY2NjY3NCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDAuMzgzOTU5MDQzODA2MzA2NzQsXG4gICAgICAgICAgICB5OiAzLjY4MzA0MDg2OTA0NzAwOTYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjcwOTQ2MzgwMzc5MDUwMjcsXG4gICAgICAgICAgICB5OiAzLjkwMDUzNjE5NjIwOTQ5NzgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAwLjkyNjk1OTEzMDk1Mjk5MDksXG4gICAgICAgICAgICB5OiA0LjIyNjA0MDk1NjE5MzY5MyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDEuMDAzMzMzMzMzMzMzMzMzMixcbiAgICAgICAgICAgIHk6IDQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4OiAzLjAxLFxuICAgICAgICAgICAgeTogNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IDMuMDEsXG4gICAgICAgICAgICB5OiAtNC42MSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHg6IC0zLjAxLFxuICAgICAgICAgICAgeTogLTQuNjEsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc3Ryb2tlX3dpZHRoOiAwLjEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzBcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8wXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzFcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAxLjI3LFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF8xXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInBjYl9wb3J0XCIsXG4gICAgICAgIHBjYl9wb3J0X2lkOiBcInBjYl9wb3J0XzJcIixcbiAgICAgICAgcGNiX2NvbXBvbmVudF9pZDogXCJwY2JfY29tcG9uZW50XzBcIixcbiAgICAgICAgbGF5ZXJzOiBbXCJ0b3BcIiwgXCJpbm5lcjFcIiwgXCJpbm5lcjJcIiwgXCJib3R0b21cIl0sXG4gICAgICAgIHg6IC0zLjgxLFxuICAgICAgICB5OiAtMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfMlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF8zXCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAtMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNFwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTMuODEsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNVwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogLTEuMjcsXG4gICAgICAgIHNvdXJjZV9wb3J0X2lkOiBcInNvdXJjZV9wb3J0XzVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicGNiX3BvcnRcIixcbiAgICAgICAgcGNiX3BvcnRfaWQ6IFwicGNiX3BvcnRfNlwiLFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBsYXllcnM6IFtcInRvcFwiLCBcImlubmVyMVwiLCBcImlubmVyMlwiLCBcImJvdHRvbVwiXSxcbiAgICAgICAgeDogMy44MSxcbiAgICAgICAgeTogMS4yNyxcbiAgICAgICAgc291cmNlX3BvcnRfaWQ6IFwic291cmNlX3BvcnRfNlwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJwY2JfcG9ydFwiLFxuICAgICAgICBwY2JfcG9ydF9pZDogXCJwY2JfcG9ydF83XCIsXG4gICAgICAgIHBjYl9jb21wb25lbnRfaWQ6IFwicGNiX2NvbXBvbmVudF8wXCIsXG4gICAgICAgIGxheWVyczogW1widG9wXCIsIFwiaW5uZXIxXCIsIFwiaW5uZXIyXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICB4OiAzLjgxLFxuICAgICAgICB5OiAzLjgxLFxuICAgICAgICBzb3VyY2VfcG9ydF9pZDogXCJzb3VyY2VfcG9ydF83XCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImNhZF9jb21wb25lbnRcIixcbiAgICAgICAgY2FkX2NvbXBvbmVudF9pZDogXCJjYWRfY29tcG9uZW50XzBcIixcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgejogMC43LFxuICAgICAgICB9LFxuICAgICAgICByb3RhdGlvbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB6OiAwLFxuICAgICAgICB9LFxuICAgICAgICBwY2JfY29tcG9uZW50X2lkOiBcInBjYl9jb21wb25lbnRfMFwiLFxuICAgICAgICBzb3VyY2VfY29tcG9uZW50X2lkOiBcInNvdXJjZV9jb21wb25lbnRfMFwiLFxuICAgICAgICBmb290cHJpbnRlcl9zdHJpbmc6IFwiZGlwOFwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9KVxuXG4gIC8vIEFkZCBmYWlsZWQgYnVpbGQgZmlyc3RcbiAgY29uc3QgZmFpbGVkQnVpbGQgPSBkYi5hZGRQYWNrYWdlQnVpbGQoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2VJZDIsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDE1MDAwKS50b0lTT1N0cmluZygpLCAvLyAxNSBzZWNvbmRzIGFnb1xuICAgIHRyYW5zcGlsYXRpb25faW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIHRyYW5zcGlsYXRpb25fc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDE1MDAwKS50b0lTT1N0cmluZygpLFxuICAgIHRyYW5zcGlsYXRpb25fY29tcGxldGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMTQwMDApLnRvSVNPU3RyaW5nKCksXG4gICAgdHJhbnNwaWxhdGlvbl9sb2dzOiBbXG4gICAgICBcIltJTkZPXSBTdGFydGluZyB0cmFuc3BpbGF0aW9uLi4uXCIsXG4gICAgICBcIltJTkZPXSBQYXJzaW5nIHBhY2thZ2UgY29kZVwiLFxuICAgICAgXCJbRVJST1JdIEZhaWxlZCB0byBwYXJzZSBUeXBlU2NyaXB0IGRlZmluaXRpb25zXCIsXG4gICAgICBcIltFUlJPUl0gSW52YWxpZCBzeW50YXggaW4gY29tcG9uZW50IGRlY2xhcmF0aW9uXCIsXG4gICAgXSxcbiAgICB0cmFuc3BpbGF0aW9uX2Vycm9yOlxuICAgICAgXCJUeXBlU2NyaXB0IGNvbXBpbGF0aW9uIGZhaWxlZDogU3ludGF4IGVycm9yIGluIGNvbXBvbmVudCBkZWNsYXJhdGlvblwiLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9pbl9wcm9ncmVzczogZmFsc2UsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX3N0YXJ0ZWRfYXQ6IG51bGwsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2NvbXBsZXRlZF9hdDogbnVsbCxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfbG9nczogW10sXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yOiBcIkJ1aWxkIGNhbmNlbGxlZCBkdWUgdG8gdHJhbnNwaWxhdGlvbiBmYWlsdXJlXCIsXG4gICAgYnVpbGRfaW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIGJ1aWxkX3N0YXJ0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxNTAwMCkudG9JU09TdHJpbmcoKSxcbiAgICBidWlsZF9jb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxNDAwMCkudG9JU09TdHJpbmcoKSxcbiAgICBidWlsZF9lcnJvcjogXCJCdWlsZCBmYWlsZWQ6IFVuYWJsZSB0byBjb21wbGV0ZSB0cmFuc3BpbGF0aW9uIHN0ZXBcIixcbiAgICBidWlsZF9lcnJvcl9sYXN0X3VwZGF0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxNDAwMCkudG9JU09TdHJpbmcoKSxcbiAgICBwcmV2aWV3X3VybDogbnVsbCxcbiAgICBidWlsZF9sb2dzOlxuICAgICAgXCJCdWlsZCBwcm9jZXNzOlxcblwiICtcbiAgICAgIFwiMS4gRW52aXJvbm1lbnQgc2V0dXAgLSBPS1xcblwiICtcbiAgICAgIFwiMi4gRGVwZW5kZW5jeSByZXNvbHV0aW9uIC0gT0tcXG5cIiArXG4gICAgICBcIjMuIENvZGUgY29tcGlsYXRpb24gLSBGQUlMRURcXG5cIiArXG4gICAgICBcIkVycm9yOiBJbnZhbGlkIHN5bnRheCBpbiBjb21wb25lbnQgZGVjbGFyYXRpb25cXG5cIiArXG4gICAgICBcIkJ1aWxkIHRlcm1pbmF0ZWQgd2l0aCBlcnJvcnNcIixcbiAgfSlcblxuICAvLyBBZGQgc3VjY2Vzc2Z1bCBidWlsZFxuICBjb25zdCBzdWNjZXNzZnVsQnVpbGQgPSBkYi5hZGRQYWNrYWdlQnVpbGQoe1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2VJZDIsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHRyYW5zcGlsYXRpb25faW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIHRyYW5zcGlsYXRpb25fc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDUwMDApLnRvSVNPU3RyaW5nKCksIC8vIFN0YXJ0ZWQgNSBzZWNvbmRzIGFnb1xuICAgIHRyYW5zcGlsYXRpb25fY29tcGxldGVkX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpIC0gMzAwMCkudG9JU09TdHJpbmcoKSwgLy8gQ29tcGxldGVkIDMgc2Vjb25kcyBhZ29cbiAgICB0cmFuc3BpbGF0aW9uX2xvZ3M6IFtcbiAgICAgIFwiW0lORk9dIFN0YXJ0aW5nIHRyYW5zcGlsYXRpb24uLi5cIixcbiAgICAgIFwiW0lORk9dIFBhcnNpbmcgcGFja2FnZSBjb2RlXCIsXG4gICAgICBcIltJTkZPXSBHZW5lcmF0aW5nIFR5cGVTY3JpcHQgZGVmaW5pdGlvbnNcIixcbiAgICAgIFwiW0lORk9dIENvbXBpbGluZyB0byBKYXZhU2NyaXB0XCIsXG4gICAgICBcIltTVUNDRVNTXSBUcmFuc3BpbGF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgICBdLFxuICAgIHRyYW5zcGlsYXRpb25fZXJyb3I6IG51bGwsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2luX3Byb2dyZXNzOiBmYWxzZSxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfc3RhcnRlZF9hdDogbmV3IERhdGUoRGF0ZS5ub3coKSAtIDMwMDApLnRvSVNPU3RyaW5nKCksIC8vIFN0YXJ0ZWQgYWZ0ZXIgdHJhbnNwaWxhdGlvblxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxMDAwKS50b0lTT1N0cmluZygpLCAvLyBDb21wbGV0ZWQgMSBzZWNvbmQgYWdvXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IFtcbiAgICAgIFwiW0lORk9dIFN0YXJ0aW5nIGNpcmN1aXQgSlNPTiBidWlsZC4uLlwiLFxuICAgICAgXCJbSU5GT10gQW5hbHl6aW5nIGNvbXBvbmVudCBzdHJ1Y3R1cmVcIixcbiAgICAgIFwiW0lORk9dIEdlbmVyYXRpbmcgcG9ydCBjb25maWd1cmF0aW9uc1wiLFxuICAgICAgXCJbSU5GT10gVmFsaWRhdGluZyBjaXJjdWl0IGNvbm5lY3Rpb25zXCIsXG4gICAgICBcIltTVUNDRVNTXSBDaXJjdWl0IEpTT04gYnVpbGQgY29tcGxldGVkXCIsXG4gICAgXSxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3I6IG51bGwsXG4gICAgYnVpbGRfaW5fcHJvZ3Jlc3M6IGZhbHNlLFxuICAgIGJ1aWxkX3N0YXJ0ZWRfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgLSAxMDAwMCkudG9JU09TdHJpbmcoKSwgLy8gU3RhcnRlZCAxMCBzZWNvbmRzIGFnb1xuICAgIGJ1aWxkX2NvbXBsZXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLCAvLyBKdXN0IGNvbXBsZXRlZFxuICAgIGJ1aWxkX2Vycm9yOiBudWxsLFxuICAgIGJ1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHByZXZpZXdfdXJsOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9wcmV2aWV3L3BhY2thZ2VfYnVpbGRfMVwiLFxuICAgIGJ1aWxkX2xvZ3M6XG4gICAgICBcIkJ1aWxkIHByb2Nlc3M6XFxuXCIgK1xuICAgICAgXCIxLiBFbnZpcm9ubWVudCBzZXR1cCAtIE9LXFxuXCIgK1xuICAgICAgXCIyLiBEZXBlbmRlbmN5IHJlc29sdXRpb24gLSBPS1xcblwiICtcbiAgICAgIFwiMy4gQ29kZSBjb21waWxhdGlvbiAtIE9LXFxuXCIgK1xuICAgICAgXCI0LiBDaXJjdWl0IHZhbGlkYXRpb24gLSBPS1xcblwiICtcbiAgICAgIFwiNS4gUGFja2FnZSBhc3NlbWJseSAtIE9LXFxuXCIgK1xuICAgICAgXCJCdWlsZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIsXG4gIH0pXG5cbiAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlIHJlbGVhc2Ugd2l0aCB0aGUgbGF0ZXN0IChzdWNjZXNzZnVsKSBidWlsZCBJRFxuICBjb25zdCByZWxlYXNlMiA9IGRiLmdldFBhY2thZ2VSZWxlYXNlQnlJZChwYWNrYWdlUmVsZWFzZUlkMikhXG4gIGRiLnVwZGF0ZVBhY2thZ2VSZWxlYXNlKHtcbiAgICAuLi5yZWxlYXNlMixcbiAgICBsYXRlc3RfcGFja2FnZV9idWlsZF9pZDogc3VjY2Vzc2Z1bEJ1aWxkLnBhY2thZ2VfYnVpbGRfaWQsXG4gIH0pXG5cbiAgZGIuYWRkT3JkZXIoe1xuICAgIGFjY291bnRfaWQsXG4gICAgaXNfcnVubmluZzogZmFsc2UsXG4gICAgaXNfc3RhcnRlZDogZmFsc2UsXG4gICAgaXNfZmluaXNoZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBudWxsLFxuICAgIGhhc19lcnJvcjogZmFsc2UsXG4gICAgY2lyY3VpdF9qc29uOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwic291cmNlX2NvbXBvbmVudFwiLFxuICAgICAgICBmdHlwZTogXCJzaW1wbGVfcmVzaXN0b3JcIixcbiAgICAgICAgc291cmNlX2NvbXBvbmVudF9pZDogXCJzb3VyY2VfY29tcG9uZW50XzFcIixcbiAgICAgICAgbmFtZTogXCJSMVwiLFxuICAgICAgICByZXNpc3RhbmU6IFwiMWtcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc3RhcnRlZF9hdDogbnVsbCxcbiAgICBjb21wbGV0ZWRfYXQ6IG51bGwsXG4gIH0pXG59XG4iLCAiaW1wb3J0IG1kNSBmcm9tIFwibWQ1XCJcbmltcG9ydCB0eXBlIHsgUGFja2FnZUZpbGUgfSBmcm9tIFwiLi4vZGIvc2NoZW1hXCJcblxuLyoqXG4gKiBHZW5lcmF0ZSBhbiBNRDUgaGFzaCBmcm9tIHBhY2thZ2UgZmlsZXMgY29udGVudFxuICogVXNlcyB0aGUgc2FtZSBmb3JtYXQgYXMgZXhpc3RpbmcgdGVzdHM6IGNyZWF0ZXMgYSBtYXAgb2YgZmlsZV9wYXRoIC0+IGNvbnRlbnRfdGV4dFxuICogYW5kIGdlbmVyYXRlcyBhbiBNRDUgaGFzaCBvZiB0aGUgSlNPTiBzdHJpbmdpZmllZCBtYXBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRnNTaGEocGFja2FnZUZpbGVzOiBQYWNrYWdlRmlsZVtdKTogc3RyaW5nIHtcbiAgY29uc3QgZnNNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fVxuXG4gIHBhY2thZ2VGaWxlc1xuICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuY29udGVudF90ZXh0KSAvLyBPbmx5IGluY2x1ZGUgZmlsZXMgd2l0aCBjb250ZW50XG4gICAgLmZvckVhY2goKGZpbGUpID0+IHtcbiAgICAgIGZzTWFwW2ZpbGUuZmlsZV9wYXRoXSA9IGZpbGUuY29udGVudF90ZXh0IHx8IFwiXCJcbiAgICB9KVxuXG4gIGNvbnN0IGhhc2ggPSBtZDUoSlNPTi5zdHJpbmdpZnkoZnNNYXApKVxuICByZXR1cm4gYG1kNS0ke2hhc2h9YFxufVxuIiwgImltcG9ydCB0eXBlIHsgRGJDbGllbnQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL2RiLWNsaWVudFwiXG5pbXBvcnQgeyBjcmVhdGVEYXRhYmFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvZGItY2xpZW50XCJcbmltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gXCJ3aW50ZXJzcGVjXCJcblxuZXhwb3J0IGNvbnN0IHdpdGhEYjogTWlkZGxld2FyZTxcbiAge30sXG4gIHtcbiAgICBkYjogRGJDbGllbnRcbiAgfVxuPiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICBpZiAoIWN0eC5kYikge1xuICAgIGN0eC5kYiA9IGNyZWF0ZURhdGFiYXNlKClcbiAgfVxuICByZXR1cm4gbmV4dChyZXEsIGN0eClcbn1cbiIsICJpbXBvcnQgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5cbmV4cG9ydCB0eXBlIEN0eEVycm9yRm4gPSAoXG4gIHN0YXR1czogbnVtYmVyLFxuICBlcnJvcl9wYXlsb2FkOiB7XG4gICAgZXJyb3JfY29kZTogc3RyaW5nXG4gICAgbWVzc2FnZTogc3RyaW5nXG4gIH0sXG4pID0+IFJlc3BvbnNlXG5cbmV4cG9ydCBjb25zdCB3aXRoQ3R4RXJyb3I6IE1pZGRsZXdhcmU8XG4gIHt9LFxuICB7XG4gICAgZXJyb3I6IEN0eEVycm9yRm5cbiAgfVxuPiA9IGFzeW5jIChyZXEsIGN0eCwgbmV4dCkgPT4ge1xuICBjdHguZXJyb3IgPSAoc3RhdHVzLCBlcnJvcl9wYXlsb2FkKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IGVycm9yOiBlcnJvcl9wYXlsb2FkIH0pLCB7XG4gICAgICBzdGF0dXMsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgfSxcbiAgICB9KVxuICB9XG4gIHJldHVybiBuZXh0KHJlcSwgY3R4KVxufVxuIiwgImltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gXCJ3aW50ZXJzcGVjL21pZGRsZXdhcmVcIlxuaW1wb3J0IHR5cGUgeyBDdHhFcnJvckZuIH0gZnJvbSBcIi4vd2l0aC1jdHgtZXJyb3JcIlxuXG5leHBvcnQgY29uc3Qgd2l0aFNlc3Npb25BdXRoOiBNaWRkbGV3YXJlPFxuICB7XG4gICAgZXJyb3I6IEN0eEVycm9yRm5cbiAgICBkYjogYW55XG4gIH0sXG4gIHtcbiAgICBhdXRoOiB7XG4gICAgICB0eXBlOiBcInNlc3Npb25cIlxuICAgICAgYWNjb3VudF9pZDogc3RyaW5nXG4gICAgICBwZXJzb25hbF9vcmdfaWQ6IHN0cmluZ1xuICAgICAgZ2l0aHViX3VzZXJuYW1lOiBzdHJpbmdcbiAgICAgIHNlc3Npb25faWQ6IHN0cmluZ1xuICAgIH1cbiAgfSxcbiAge31cbj4gPSBhc3luYyAocmVxLCBjdHgsIG5leHQpID0+IHtcbiAgaWYgKHJlcS5tZXRob2QgPT09IFwiT1BUSU9OU1wiKSByZXR1cm4gbmV4dChyZXEsIGN0eClcblxuICBjb25zdCB0b2tlbiA9IHJlcS5oZWFkZXJzLmdldChcImF1dGhvcml6YXRpb25cIik/LnNwbGl0KFwiQmVhcmVyIFwiKT8uWzFdXG5cbiAgLy8gT25seSBjaGVjayBkYXRhYmFzZSBhY2NvdW50cyB3aGVuIHdlJ3JlIGluIGEgQnVuIHRlc3QgZW52aXJvbm1lbnRcbiAgaWYgKHByb2Nlc3MuZW52LkJVTl9URVNUID09PSBcInRydWVcIiAmJiBjdHguZGI/LmFjY291bnRzKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKChhY2M6IGFueSkgPT4gYWNjLmFjY291bnRfaWQgPT09IHRva2VuKVxuXG4gICAgaWYgKGFjY291bnQpIHtcbiAgICAgIGN0eC5hdXRoID0ge1xuICAgICAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICAgICAgYWNjb3VudF9pZDogYWNjb3VudC5hY2NvdW50X2lkLFxuICAgICAgICBwZXJzb25hbF9vcmdfaWQ6IGBvcmctJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgICAgZ2l0aHViX3VzZXJuYW1lOiBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSxcbiAgICAgICAgc2Vzc2lvbl9pZDogYHNlc3Npb24tJHthY2NvdW50LmFjY291bnRfaWR9YCxcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0KHJlcSwgY3R4KVxuICAgIH1cbiAgfVxuXG4gIC8vIEZvciBhbGwgb3RoZXIgZW52aXJvbm1lbnRzIG9yIGlmIGFjY291bnQgbm90IGZvdW5kIGluIHRlc3QsIHVzZSBoYXJkY29kZWQgYXV0aFxuICBjdHguYXV0aCA9IHtcbiAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICBhY2NvdW50X2lkOiBcImFjY291bnQtMTIzNFwiLFxuICAgIHBlcnNvbmFsX29yZ19pZDogXCJvcmctMTIzNFwiLFxuICAgIGdpdGh1Yl91c2VybmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIHNlc3Npb25faWQ6IFwic2Vzc2lvbi0xMjM0XCIsXG4gIH1cblxuICByZXR1cm4gbmV4dChyZXEsIGN0eClcbn1cbiIsICJpbXBvcnQgdHlwZSB7IE1pZGRsZXdhcmUgfSBmcm9tIFwid2ludGVyc3BlYy9taWRkbGV3YXJlXCJcbmltcG9ydCB0eXBlIHsgQ3R4RXJyb3JGbiB9IGZyb20gXCIuL3dpdGgtY3R4LWVycm9yXCJcblxuZXhwb3J0IGNvbnN0IHdpdGhPcHRpb25hbFNlc3Npb25BdXRoOiBNaWRkbGV3YXJlPFxuICB7XG4gICAgZXJyb3I6IEN0eEVycm9yRm5cbiAgICBkYjogYW55XG4gIH0sXG4gIHtcbiAgICBhdXRoPzoge1xuICAgICAgdHlwZTogXCJzZXNzaW9uXCJcbiAgICAgIGFjY291bnRfaWQ6IHN0cmluZ1xuICAgICAgcGVyc29uYWxfb3JnX2lkOiBzdHJpbmdcbiAgICAgIGdpdGh1Yl91c2VybmFtZTogc3RyaW5nXG4gICAgICBzZXNzaW9uX2lkOiBzdHJpbmdcbiAgICB9XG4gIH0sXG4gIHt9XG4+ID0gYXN5bmMgKHJlcSwgY3R4LCBuZXh0KSA9PiB7XG4gIGlmIChyZXEubWV0aG9kID09PSBcIk9QVElPTlNcIikgcmV0dXJuIG5leHQocmVxLCBjdHgpXG5cbiAgY29uc3QgdG9rZW4gPSByZXEuaGVhZGVycy5nZXQoXCJhdXRob3JpemF0aW9uXCIpPy5zcGxpdChcIkJlYXJlciBcIik/LlsxXVxuXG4gIGlmICghdG9rZW4pIHtcbiAgICByZXR1cm4gbmV4dChyZXEsIGN0eClcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5CVU5fVEVTVCA9PT0gXCJ0cnVlXCIgJiYgY3R4LmRiPy5hY2NvdW50cykge1xuICAgIGNvbnN0IGFjY291bnQgPSBjdHguZGIuYWNjb3VudHMuZmluZCgoYWNjOiBhbnkpID0+IGFjYy5hY2NvdW50X2lkID09PSB0b2tlbilcblxuICAgIGlmIChhY2NvdW50KSB7XG4gICAgICBjdHguYXV0aCA9IHtcbiAgICAgICAgdHlwZTogXCJzZXNzaW9uXCIsXG4gICAgICAgIGFjY291bnRfaWQ6IGFjY291bnQuYWNjb3VudF9pZCxcbiAgICAgICAgcGVyc29uYWxfb3JnX2lkOiBgb3JnLSR7YWNjb3VudC5hY2NvdW50X2lkfWAsXG4gICAgICAgIGdpdGh1Yl91c2VybmFtZTogYWNjb3VudC5naXRodWJfdXNlcm5hbWUsXG4gICAgICAgIHNlc3Npb25faWQ6IGBzZXNzaW9uLSR7YWNjb3VudC5hY2NvdW50X2lkfWAsXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHQocmVxLCBjdHgpXG4gIH1cblxuICBjdHguYXV0aCA9IHtcbiAgICB0eXBlOiBcInNlc3Npb25cIixcbiAgICBhY2NvdW50X2lkOiBcImFjY291bnQtMTIzNFwiLFxuICAgIHBlcnNvbmFsX29yZ19pZDogXCJvcmctMTIzNFwiLFxuICAgIGdpdGh1Yl91c2VybmFtZTogXCJ0ZXN0dXNlclwiLFxuICAgIHNlc3Npb25faWQ6IFwic2Vzc2lvbi0xMjM0XCIsXG4gIH1cblxuICByZXR1cm4gbmV4dChyZXEsIGN0eClcbn1cbiIsICJpbXBvcnQgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQga2xldXIgZnJvbSBcImtsZXVyXCJcblxuZXhwb3J0IGNvbnN0IHdpdGhFcnJvckhhbmRsaW5nOiBNaWRkbGV3YXJlPHt9LCB7fT4gPSBhc3luYyAocmVxLCBjdHgsIG5leHQpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgbmV4dChyZXEsIGN0eClcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGNvbnNvbGUuZXJyb3Ioa2xldXIucmVkKFwiSW50ZXJjZXB0ZWQgZXJyb3I6XCIpLCBlcnJvcilcbiAgICAvLyBJZiBlcnJvciBpcyBhIFJlc3BvbnNlLCByZXR1cm4gaXRcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBSZXNwb25zZSkge1xuICAgICAgcmV0dXJuIGVycm9yXG4gICAgfVxuICAgIHJldHVybiAoY3R4IGFzIGFueSkuanNvbihcbiAgICAgIHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICBlcnJvcjoge1xuICAgICAgICAgIG1lc3NhZ2U6IGVycm9yPy5tZXNzYWdlLFxuICAgICAgICAgIGVycm9yX2NvZGU6IGVycm9yPy5lcnJvcl9jb2RlID8/IFwiaW50ZXJuYWxfc2VydmVyX2Vycm9yXCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgeyBzdGF0dXM6IGVycm9yPy5zdGF0dXMgfHwgNTAwIH0sXG4gICAgKVxuICB9XG59XG4iLCAiaW1wb3J0IHsgTWlkZGxld2FyZSB9IGZyb20gXCJ3aW50ZXJzcGVjL21pZGRsZXdhcmVcIlxuaW1wb3J0IGtsZXVyIGZyb20gXCJrbGV1clwiXG5cbi8vIEVOQUJMRSBDT0xPUlMgQUxXQVlTXG5rbGV1ci5lbmFibGVkID0gdHJ1ZVxuXG5jb25zdCBjb2xvclN0YXR1cyA9IChzdGF0dXM6IG51bWJlcikgPT4ge1xuICBpZiAoc3RhdHVzID49IDUwMCkge1xuICAgIHJldHVybiBrbGV1ci5yZWQoc3RhdHVzLnRvU3RyaW5nKCkpXG4gIH1cbiAgaWYgKHN0YXR1cyA+PSA0MDApIHtcbiAgICByZXR1cm4ga2xldXIueWVsbG93KHN0YXR1cy50b1N0cmluZygpKVxuICB9XG4gIHJldHVybiBrbGV1ci5ncmVlbihzdGF0dXMudG9TdHJpbmcoKSlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dnZXIge1xuICBlcnJvcjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkXG4gIGluZm86ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZFxuICB3YXJuOiAoLi4uYXJnczogYW55W10pID0+IHZvaWRcbiAgZGVidWc6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZFxufVxuXG5leHBvcnQgY29uc3Qgd2l0aFJlcXVlc3RMb2dnaW5nOiBNaWRkbGV3YXJlPFxuICB7fSxcbiAge1xuICAgIGxvZ2dlcjogTG9nZ2VyXG4gIH1cbj4gPSBhc3luYyAocmVxLCBjdHgsIG5leHQpID0+IHtcbiAgaWYgKCFjdHgubG9nZ2VyKSB7XG4gICAgY3R4LmxvZ2dlciA9IHtcbiAgICAgIGVycm9yOiAoLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUuZXJyb3IoLi4uYXJncyksXG4gICAgICBpbmZvOiAoLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUubG9nKC4uLmFyZ3MpLFxuICAgICAgd2FybjogKC4uLmFyZ3M6IGFueVtdKSA9PiBjb25zb2xlLndhcm4oLi4uYXJncyksXG4gICAgICBkZWJ1ZzogKC4uLmFyZ3M6IGFueVtdKSA9PiBjb25zb2xlLmxvZyguLi5hcmdzKSxcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICBjdHgubG9nZ2VyLmluZm8oa2xldXIuYmx1ZShgPiAke3JlcS5tZXRob2R9ICR7cmVxLnVybH1gKSlcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG5leHQocmVxLCBjdHgpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlQm9keSA9IGF3YWl0IHJlc3BvbnNlLmNsb25lKCkudGV4dCgpXG4gICAgICBjdHgubG9nZ2VyLmluZm8oXG4gICAgICAgIGA8ICR7Y29sb3JTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKX0gJHtrbGV1ci5ncmF5KHJlc3BvbnNlQm9keS5zbGljZSgwLCA0MCkucmVwbGFjZSgvKFxcclxcbnxcXG58XFxyKS9nbSwgXCJcIikpfWAsXG4gICAgICApXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY3R4LmxvZ2dlci5pbmZvKGA8ICR7Y29sb3JTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKX1gKVxuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2VcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgY3R4LmxvZ2dlci5pbmZvKGtsZXVyLnJlZChgPCBFUlJPUiAke2UudG9TdHJpbmcoKS5zbGljZSgwLCA1MCl9Li4uYCkpXG4gICAgdGhyb3cgZVxuICB9XG59XG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IGFpUmV2aWV3U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgYWlfcmV2aWV3X2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgYWlfcmV2aWV3OiBhaVJldmlld1NjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBhaV9yZXZpZXdfaWQgfSA9IHJlcS5qc29uQm9keVxuICBjb25zdCBleGlzdGluZyA9IGN0eC5kYi5nZXRBaVJldmlld0J5SWQoYWlfcmV2aWV3X2lkKVxuICBpZiAoIWV4aXN0aW5nKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWlfcmV2aWV3X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJBSSByZXZpZXcgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgY29uc3QgdXBkYXRlZCA9IGN0eC5kYi51cGRhdGVBaVJldmlldyhhaV9yZXZpZXdfaWQsIHtcbiAgICBhaV9yZXZpZXdfdGV4dDogXCJQbGFjZWhvbGRlciBBSSBSZXZpZXdcIixcbiAgICBzdGFydF9wcm9jZXNzaW5nX2F0OiBleGlzdGluZy5zdGFydF9wcm9jZXNzaW5nX2F0ID8/IG5vdyxcbiAgICBmaW5pc2hlZF9wcm9jZXNzaW5nX2F0OiBub3csXG4gICAgZGlzcGxheV9zdGF0dXM6IFwiY29tcGxldGVkXCIsXG4gIH0pIVxuICByZXR1cm4gY3R4Lmpzb24oeyBhaV9yZXZpZXc6IHVwZGF0ZWQgfSlcbn0pXG4iLCAiaW1wb3J0IHsgZGF0YXNoZWV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGNvbnN0IHByb2Nlc3NBbGxEYXRhc2hlZXRzID0gKGN0eDogYW55KSA9PiB7XG4gIGNvbnN0IHByb2Nlc3NlZCA9IFtdIGFzIHouaW5mZXI8dHlwZW9mIGRhdGFzaGVldFNjaGVtYT5bXVxuICBjdHguZGIuZGF0YXNoZWV0cy5mb3JFYWNoKChkczogYW55KSA9PiB7XG4gICAgaWYgKCFkcy5waW5faW5mb3JtYXRpb24gfHwgIWRzLmRhdGFzaGVldF9wZGZfdXJscyB8fCAhZHMuYWlfZGVzY3JpcHRpb24pIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBjdHguZGIudXBkYXRlRGF0YXNoZWV0KGRzLmRhdGFzaGVldF9pZCwge1xuICAgICAgICBwaW5faW5mb3JtYXRpb246IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwaW5fbnVtYmVyOiBcIjFcIixcbiAgICAgICAgICAgIG5hbWU6IFwiUElOMVwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiUGxhY2Vob2xkZXIgcGluXCIsXG4gICAgICAgICAgICBjYXBhYmlsaXRpZXM6IFtcImRpZ2l0YWxcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZGF0YXNoZWV0X3BkZl91cmxzOiBbXCJodHRwczovL2V4YW1wbGUuY29tL2RhdGFzaGVldC5wZGZcIl0sXG4gICAgICAgIGFpX2Rlc2NyaXB0aW9uOiBcIlBsYWNlaG9sZGVyIGFpIGRlc2NyaXB0aW9uXCIsXG4gICAgICB9KVxuICAgICAgcHJvY2Vzc2VkLnB1c2godXBkYXRlZCEpXG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2Nlc3NlZC5wdXNoKGRzKVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIHByb2Nlc3NlZFxufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGRhdGFzaGVldHM6IGRhdGFzaGVldFNjaGVtYS5hcnJheSgpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBkYXRhc2hlZXRzID0gcHJvY2Vzc0FsbERhdGFzaGVldHMoY3R4KVxuICByZXR1cm4gY3R4Lmpzb24oeyBkYXRhc2hlZXRzIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzZWVkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zZWVkXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25SZXNwb25zZTogei5hbnkoKSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICByZXR1cm4gY3R4Lmpzb24oY3R4LmRiLmdldFN0YXRlKCkpXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlclN0ZXBzIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL3V0aWxzL29yZGVyLXN0ZXBzXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHN1Y2Nlc3M6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICAvLyBHZXQgYWxsIG9yZGVycyB0aGF0IGFyZW4ndCBmaW5pc2hlZFxuICBjb25zdCBvcmRlcnMgPSBjdHguZGIub3JkZXJzLmZpbHRlcigob3JkZXIpID0+ICFvcmRlci5pc19maW5pc2hlZClcbiAgY29uc3QgdXBkYXRlZE9yZGVycyA9IFtdXG5cbiAgZm9yIChjb25zdCBvcmRlciBvZiBvcmRlcnMpIHtcbiAgICBjb25zdCBvcmRlclN0YXRlID0gY3R4LmRiLmdldEpsY3BjYk9yZGVyU3RhdGVzQnlPcmRlcklkKG9yZGVyLm9yZGVyX2lkKVxuICAgIGlmICghb3JkZXJTdGF0ZSkgY29udGludWVcblxuICAgIC8vIEZpbmQgdGhlIG5leHQgc3RlcCB0byBjb21wbGV0ZVxuICAgIGxldCBuZXh0U3RlcEluZGV4ID0gLTFcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9yZGVyU3RlcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHN0ZXAgPSBvcmRlclN0ZXBzW2ldXG4gICAgICBpZiAoIW9yZGVyU3RhdGVbc3RlcF0pIHtcbiAgICAgICAgbmV4dFN0ZXBJbmRleCA9IGlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBhbGwgc3RlcHMgYXJlIGNvbXBsZXRlZCBvciBubyBuZXh0IHN0ZXAgZm91bmRcbiAgICBpZiAobmV4dFN0ZXBJbmRleCA9PT0gLTEpIHtcbiAgICAgIHVwZGF0ZWRPcmRlcnMucHVzaCh7XG4gICAgICAgIG9yZGVyX2lkOiBvcmRlci5vcmRlcl9pZCxcbiAgICAgICAgY3VycmVudF9zdGVwOiBudWxsLFxuICAgICAgfSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBuZXh0IHN0ZXAgdG8gdHJ1ZVxuICAgIGNvbnN0IG5leHRTdGVwID0gb3JkZXJTdGVwc1tuZXh0U3RlcEluZGV4XVxuICAgIGNvbnN0IHVwZGF0ZXMgPSB7XG4gICAgICBbbmV4dFN0ZXBdOiB0cnVlLFxuICAgICAgY3VycmVudF9zdGVwOiBuZXh0U3RlcCxcbiAgICB9XG5cbiAgICAvLyBJZiB0aGlzIGlzIHRoZSBsYXN0IHN0ZXAsIGFsc28gdXBkYXRlIHRoZSBvcmRlciBzdGF0dXNcbiAgICBpZiAobmV4dFN0ZXBJbmRleCA9PT0gb3JkZXJTdGVwcy5sZW5ndGggLSAxKSB7XG4gICAgICBjdHguZGIudXBkYXRlT3JkZXIob3JkZXIub3JkZXJfaWQsIHtcbiAgICAgICAgaXNfZmluaXNoZWQ6IHRydWUsXG4gICAgICAgIGNvbXBsZXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjdHguZGIudXBkYXRlSmxjcGNiT3JkZXJTdGF0ZShvcmRlci5vcmRlcl9pZCwgdXBkYXRlcylcblxuICAgIHVwZGF0ZWRPcmRlcnMucHVzaCh7XG4gICAgICBvcmRlcl9pZDogb3JkZXIub3JkZXJfaWQsXG4gICAgICBjdXJyZW50X3N0ZXA6IG5leHRTdGVwLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gIH0pXG59KVxuIiwgImV4cG9ydCBjb25zdCBvcmRlclN0ZXBzID0gW1xuICBcImFyZV9nZXJiZXJzX2dlbmVyYXRlZFwiLFxuICBcImFyZV9nZXJiZXJzX3VwbG9hZGVkXCIsXG4gIFwiaXNfZ2VyYmVyX2FuYWx5emVkXCIsXG4gIFwiYXJlX2luaXRpYWxfY29zdHNfY2FsY3VsYXRlZFwiLFxuICBcImlzX3BjYl9hZGRlZF90b19jYXJ0XCIsXG4gIFwiaXNfYm9tX3VwbG9hZGVkXCIsXG4gIFwiaXNfcG5wX3VwbG9hZGVkXCIsXG4gIFwiaXNfYm9tX3BucF9hbmFseXplZFwiLFxuICBcImlzX2JvbV9wYXJzaW5nX2NvbXBsZXRlXCIsXG4gIFwiYXJlX2NvbXBvbmVudHNfYXZhaWxhYmxlXCIsXG4gIFwiaXNfcGF0Y2hfbWFwX2dlbmVyYXRlZFwiLFxuICBcImlzX2pzb25fbWVyZ2VfZmlsZV9jcmVhdGVkXCIsXG4gIFwiaXNfZGZtX3Jlc3VsdF9nZW5lcmF0ZWRcIixcbiAgXCJhcmVfZmlsZXNfZG93bmxvYWRlZFwiLFxuICBcImFyZV9wcm9kdWN0X2NhdGVnb3JpZXNfZmV0Y2hlZFwiLFxuICBcImFyZV9maW5hbF9jb3N0c19jYWxjdWxhdGVkXCIsXG4gIFwiaXNfanNvbl9tZXJnZV9maWxlX3VwZGF0ZWRcIixcbiAgXCJpc19hZGRlZF90b19jYXJ0XCIsXG5dIGFzIGNvbnN0XG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyUXVvdGVTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZV9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyX3F1b3Rlczogb3JkZXJRdW90ZVNjaGVtYS5hcnJheSgpLm9wdGlvbmFsKCksXG4gICAgZXJyb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmRlcl9xdW90ZV9pZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcl9xdW90ZXM6IFtcbiAgICAgIHtcbiAgICAgICAgb3JkZXJfcXVvdGVfaWQsXG4gICAgICAgIGFjY291bnRfaWQ6IFwiMTIzXCIsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogXCIxMjNcIixcbiAgICAgICAgaXNfY29tcGxldGVkOiB0cnVlLFxuICAgICAgICBpc19wcm9jZXNzaW5nOiBmYWxzZSxcbiAgICAgICAgdmVuZG9yX25hbWU6IFwiSkxDUENCXCIsXG4gICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICBoYXNfZXJyb3I6IGZhbHNlLFxuICAgICAgICBjcmVhdGVkX2F0OiBcIjIwMjUtMDQtMjFcIixcbiAgICAgICAgdXBkYXRlZF9hdDogXCIyMDI1LTA0LTIxXCIsXG4gICAgICAgIGNvbXBsZXRlZF9hdDogXCIyMDI1LTA0LTIxXCIsXG4gICAgICAgIHF1b3RlZF9jb21wb25lbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWFudWZhY3R1cmVyX3BhcnRfbnVtYmVyOiBcIjEyM1wiLFxuICAgICAgICAgICAgc3VwcGxpZXJfcGFydF9udW1iZXI6IFwiMTIzXCIsXG4gICAgICAgICAgICBxdWFudGl0eTogMSxcbiAgICAgICAgICAgIHVuaXRfcHJpY2U6IDEwMCxcbiAgICAgICAgICAgIHRvdGFsX3ByaWNlOiAxMDAsXG4gICAgICAgICAgICBhdmFpbGFibGU6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtYW51ZmFjdHVyZXJfcGFydF9udW1iZXI6IFwiMTIzNFwiLFxuICAgICAgICAgICAgc3VwcGxpZXJfcGFydF9udW1iZXI6IFwiMTIzNFwiLFxuICAgICAgICAgICAgcXVhbnRpdHk6IDEsXG4gICAgICAgICAgICB1bml0X3ByaWNlOiAyMDAsXG4gICAgICAgICAgICB0b3RhbF9wcmljZTogMjAwLFxuICAgICAgICAgICAgYXZhaWxhYmxlOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGJhcmVfcGNiX2Nvc3Q6IDMwMCxcbiAgICAgICAgc2hpcHBpbmdfb3B0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNhcnJpZXI6IFwiREhMXCIsXG4gICAgICAgICAgICBzZXJ2aWNlOiBcIkV4cHJlc3NcIixcbiAgICAgICAgICAgIGNvc3Q6IDEwMCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNhcnJpZXI6IFwiRmVkRXhcIixcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiRXhwcmVzc1wiLFxuICAgICAgICAgICAgY29zdDogMjAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHRvdGFsX2Nvc3Rfd2l0aG91dF9zaGlwcGluZzogMTAwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb3JkZXJfcXVvdGVfaWQsXG4gICAgICAgIGFjY291bnRfaWQ6IFwiMTIzXCIsXG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogXCIxMjNcIixcbiAgICAgICAgaXNfY29tcGxldGVkOiB0cnVlLFxuICAgICAgICBpc19wcm9jZXNzaW5nOiBmYWxzZSxcbiAgICAgICAgdmVuZG9yX25hbWU6IFwiREtSZWRcIixcbiAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgIGhhc19lcnJvcjogZmFsc2UsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IFwiMjAyNS0wNC0yMVwiLFxuICAgICAgICB1cGRhdGVkX2F0OiBcIjIwMjUtMDQtMjFcIixcbiAgICAgICAgY29tcGxldGVkX2F0OiBcIjIwMjUtMDQtMjFcIixcbiAgICAgICAgcXVvdGVkX2NvbXBvbmVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtYW51ZmFjdHVyZXJfcGFydF9udW1iZXI6IFwiMTIzXCIsXG4gICAgICAgICAgICBzdXBwbGllcl9wYXJ0X251bWJlcjogXCIxMjNcIixcbiAgICAgICAgICAgIHF1YW50aXR5OiAxLFxuICAgICAgICAgICAgdW5pdF9wcmljZTogMTAwLFxuICAgICAgICAgICAgdG90YWxfcHJpY2U6IDEwMCxcbiAgICAgICAgICAgIGF2YWlsYWJsZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1hbnVmYWN0dXJlcl9wYXJ0X251bWJlcjogXCIxMjM0XCIsXG4gICAgICAgICAgICBzdXBwbGllcl9wYXJ0X251bWJlcjogXCIxMjM0XCIsXG4gICAgICAgICAgICBxdWFudGl0eTogMSxcbiAgICAgICAgICAgIHVuaXRfcHJpY2U6IDIwMCxcbiAgICAgICAgICAgIHRvdGFsX3ByaWNlOiAyMDAsXG4gICAgICAgICAgICBhdmFpbGFibGU6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYmFyZV9wY2JfY29zdDogMzAwLFxuICAgICAgICBzaGlwcGluZ19vcHRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2FycmllcjogXCJESExcIixcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiRXhwcmVzc1wiLFxuICAgICAgICAgICAgY29zdDogMTAwLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2FycmllcjogXCJGZWRFeFwiLFxuICAgICAgICAgICAgc2VydmljZTogXCJFeHByZXNzXCIsXG4gICAgICAgICAgICBjb3N0OiAyMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdG90YWxfY29zdF93aXRob3V0X3NoaXBwaW5nOiAxMDAsXG4gICAgICB9LFxuICAgIF0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBwcm9jZXNzQWxsRGF0YXNoZWV0cyB9IGZyb20gXCIuL2RhdGFzaGVldHMvcHJvY2Vzc19hbGxfZGF0YXNoZWV0c1wiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHsgb2s6IHouYm9vbGVhbigpIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIHByb2Nlc3NBbGxEYXRhc2hlZXRzKGN0eClcbiAgcmV0dXJuIGN0eC5qc29uKHsgb2s6IHRydWUgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNlZWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NlZWRcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3QoeyBvazogei5ib29sZWFuKCkgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgc2VlZChjdHguZGIpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHsgb2s6IHRydWUgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGFjY291bnRfYmFsYW5jZTogei5vYmplY3Qoe1xuICAgICAgbW9udGhseV9haV9idWRnZXRfdXNlZF91c2Q6IHoubnVtYmVyKCksXG4gICAgfSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIC8vIEZvciB0aGlzIGV4YW1wbGUsIHdlJ2xsIHJldHVybiBhIG1vY2sgYmFsYW5jZVxuICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHlvdSB3b3VsZCBmZXRjaCB0aGlzIGZyb20gYSBkYXRhYmFzZSBvciBleHRlcm5hbCBzZXJ2aWNlXG4gIGNvbnN0IG1vY2tCYWxhbmNlID0ge1xuICAgIG1vbnRobHlfYWlfYnVkZ2V0X3VzZWRfdXNkOiAyLjUsXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIGFjY291bnRfYmFsYW5jZTogbW9ja0JhbGFuY2UsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBBY2NvdW50LCBhY2NvdW50U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgZ2l0aHViX3VzZXJuYW1lOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgYWNjb3VudDogYWNjb3VudFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IGFjY291bnQ6IEFjY291bnQgfCB1bmRlZmluZWRcblxuICBpZiAocmVxLm1ldGhvZCA9PT0gXCJQT1NUXCIpIHtcbiAgICBjb25zdCB7IGdpdGh1Yl91c2VybmFtZSB9ID0gcmVxLmpzb25Cb2R5XG4gICAgYWNjb3VudCA9IGN0eC5kYi5hY2NvdW50cy5maW5kKFxuICAgICAgKGFjYzogQWNjb3VudCkgPT5cbiAgICAgICAgYWNjLmdpdGh1Yl91c2VybmFtZS50b0xvd2VyQ2FzZSgpID09PSBnaXRodWJfdXNlcm5hbWUudG9Mb3dlckNhc2UoKSxcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KGN0eC5hdXRoLmFjY291bnRfaWQpXG4gIH1cblxuICBpZiAoIWFjY291bnQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhY2NvdW50X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJBY2NvdW50IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oeyBhY2NvdW50IH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBhY2NvdW50U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcXVlcnk6IHouc3RyaW5nKCksXG4gICAgbGltaXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZWZhdWx0KDUwKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBhY2NvdW50czogei5hcnJheShhY2NvdW50U2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBxdWVyeSwgbGltaXQgfSA9IHJlcS5qc29uQm9keVxuICBjb25zdCBhY2NvdW50cyA9IGN0eC5kYi5zZWFyY2hBY2NvdW50cyhxdWVyeSwgbGltaXQpXG4gIHJldHVybiBjdHguanNvbih7IGFjY291bnRzLCBvazogdHJ1ZSB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHtcbiAgYWNjb3VudFNjaGVtYSxcbiAgc2hpcHBpbmdJbmZvU2NoZW1hLFxufSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBzaGlwcGluZ0luZm86IHNoaXBwaW5nSW5mb1NjaGVtYSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGFjY291bnQ6IGFjY291bnRTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc2hpcHBpbmdJbmZvIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCB1cGRhdGVkQWNjb3VudCA9IGN0eC5kYi51cGRhdGVBY2NvdW50KGN0eC5hdXRoLmFjY291bnRfaWQsIHtcbiAgICBzaGlwcGluZ0luZm8sXG4gIH0pXG5cbiAgaWYgKCF1cGRhdGVkQWNjb3VudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFjY291bnRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkFjY291bnQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7IGFjY291bnQ6IHVwZGF0ZWRBY2NvdW50IH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBhaVJldmlld1NjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAub3B0aW9uYWwoKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgYWlfcmV2aWV3OiBhaVJldmlld1NjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQgfSA9IHJlcS5qc29uQm9keSA/PyB7fVxuXG4gIGlmIChwYWNrYWdlX3JlbGVhc2VfaWQpIHtcbiAgICBjb25zdCByZWxlYXNlID0gY3R4LmRiLmdldFBhY2thZ2VSZWxlYXNlQnlJZChwYWNrYWdlX3JlbGVhc2VfaWQpXG4gICAgaWYgKCFyZWxlYXNlKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cbiAgICBjdHguZGIudXBkYXRlUGFja2FnZVJlbGVhc2Uoe1xuICAgICAgLi4ucmVsZWFzZSxcbiAgICAgIGFpX3Jldmlld19yZXF1ZXN0ZWQ6IHRydWUsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGFpX3JldmlldyA9IGN0eC5kYi5hZGRBaVJldmlldyh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgYWlfcmV2aWV3X3RleHQ6IG51bGwsXG4gICAgc3RhcnRfcHJvY2Vzc2luZ19hdDogbnVsbCxcbiAgICBmaW5pc2hlZF9wcm9jZXNzaW5nX2F0OiBudWxsLFxuICAgIHByb2Nlc3NpbmdfZXJyb3I6IG51bGwsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGRpc3BsYXlfc3RhdHVzOiBcInBlbmRpbmdcIixcbiAgfSlcblxuICByZXR1cm4gY3R4Lmpzb24oeyBhaV9yZXZpZXcgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IGFpUmV2aWV3U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBhaV9yZXZpZXdfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBhaV9yZXZpZXc6IGFpUmV2aWV3U2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGFpX3Jldmlld19pZCB9ID0gcmVxLnF1ZXJ5XG4gIGNvbnN0IGFpX3JldmlldyA9IGN0eC5kYi5nZXRBaVJldmlld0J5SWQoYWlfcmV2aWV3X2lkKVxuICBpZiAoIWFpX3Jldmlldykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFpX3Jldmlld19ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQUkgcmV2aWV3IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cbiAgcmV0dXJuIGN0eC5qc29uKHsgYWlfcmV2aWV3IH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBhaVJldmlld1NjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIGFpX3Jldmlld3M6IHouYXJyYXkoYWlSZXZpZXdTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBhaV9yZXZpZXdzID0gY3R4LmRiLmxpc3RBaVJldmlld3MoKVxuICByZXR1cm4gY3R4Lmpzb24oeyBhaV9yZXZpZXdzIH0pXG59KVxuIiwgIi8qKlxuICogRm9yd2FyZCByZXF1ZXN0IHRvIGFudGhyb3BpY1xuICovXG5leHBvcnQgZGVmYXVsdCBhc3luYyAocmVxOiBSZXF1ZXN0KSA9PiB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwocmVxLnVybClcbiAgY29uc3QgYW50aHJvcGljQXBpS2V5ID0gcHJvY2Vzcy5lbnYuQU5USFJPUElDX0FQSV9LRVlcblxuICBpZiAoIWFudGhyb3BpY0FwaUtleSkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXCJBbnRocm9waWMgQVBJIGtleSBpcyBub3Qgc2V0XCIsIHsgc3RhdHVzOiA1MDAgfSlcbiAgfVxuXG4gIGNvbnN0IGFudGhyb3BpY1VybCA9XG4gICAgXCJodHRwczovL2FwaS5hbnRocm9waWMuY29tXCIgKyB1cmwucGF0aG5hbWUucmVwbGFjZSgvXlxcL2FwaVxcL2FpLywgXCJcIilcblxuICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMocmVxLmhlYWRlcnMpXG4gIGhlYWRlcnMuc2V0KFwieC1hcGkta2V5XCIsIGAke2FudGhyb3BpY0FwaUtleX1gKVxuXG4gIGNvbnNvbGUubG9nKFwic2VuZGluZyByZXF1ZXN0IHRvIGFudGhyb3BpY1wiKVxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGFudGhyb3BpY1VybCwge1xuICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgIGJvZHk6IHJlcS5ib2R5LFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBkdXBsZXg6IFwiaGFsZlwiLFxuICB9KS50aGVuKChyKSA9PiByLmpzb24oKSlcblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlKSwge1xuICAgIHN0YXR1czogMjAwLFxuICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgfSlcbn1cbiIsICJpbXBvcnQgYWkgZnJvbSBcIi4vYWkvWy4uLmFueXJvdXRlXVwiXG5leHBvcnQgZGVmYXVsdCBhaVxuIiwgImltcG9ydCB7IFJlYWRhYmxlU3RyZWFtIH0gZnJvbSBcInN0cmVhbS93ZWJcIlxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyAocmVxOiBSZXF1ZXN0KSA9PiB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwocmVxLnVybClcbiAgY29uc3QgYW50aHJvcGljQXBpS2V5ID0gcHJvY2Vzcy5lbnYuQU5USFJPUElDX0FQSV9LRVlcblxuICBpZiAoIWFudGhyb3BpY0FwaUtleSkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXCJBbnRocm9waWMgQVBJIGtleSBpcyBub3Qgc2V0XCIsIHsgc3RhdHVzOiA1MDAgfSlcbiAgfVxuXG4gIGNvbnN0IGFudGhyb3BpY1VybCA9XG4gICAgXCJodHRwczovL2FwaS5hbnRocm9waWMuY29tXCIgKyB1cmwucGF0aG5hbWUucmVwbGFjZSgvXlxcL2FwaVxcL2FpLywgXCJcIilcblxuICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMocmVxLmhlYWRlcnMpXG4gIGhlYWRlcnMuc2V0KFwieC1hcGkta2V5XCIsIGAke2FudGhyb3BpY0FwaUtleX1gKVxuICBoZWFkZXJzLnNldChcIkFjY2VwdFwiLCBcInRleHQvZXZlbnQtc3RyZWFtXCIpXG4gIGhlYWRlcnMuc2V0KFwiQ2FjaGUtQ29udHJvbFwiLCBcIm5vLWNhY2hlXCIpXG4gIGhlYWRlcnMuc2V0KFwiQ29ubmVjdGlvblwiLCBcImtlZXAtYWxpdmVcIilcblxuICBjb25zb2xlLmxvZyhcInNlbmRpbmcgcmVxdWVzdCB0byBhbnRocm9waWNcIilcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChhbnRocm9waWNVcmwsIHtcbiAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgaGVhZGVyczogaGVhZGVycyxcbiAgICBib2R5OiByZXEuYm9keSxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZHVwbGV4OiBcImhhbGZcIixcbiAgfSlcblxuICAvLyBDaGVjayBpZiB0aGUgcmVzcG9uc2UgaXMgc3VjY2Vzc2Z1bFxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShcbiAgICAgIGBBbnRocm9waWMgQVBJIHJldHVybmVkIGFuIGVycm9yOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWAsXG4gICAgICB7XG4gICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICAvLyBDcmVhdGUgYSBSZWFkYWJsZVN0cmVhbSB0byBwcm9jZXNzIHRoZSByZXNwb25zZVxuICBjb25zdCBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgIGFzeW5jIHN0YXJ0KGNvbnRyb2xsZXIpIHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHkhLmdldFJlYWRlcigpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgICAgICAgIGlmIChkb25lKSBicmVha1xuICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKClcbiAgICAgICAgY29udHJvbGxlci5jbG9zZSgpXG4gICAgICB9XG4gICAgfSxcbiAgfSlcblxuICAvLyBSZXR1cm4gYSBzdHJlYW1pbmcgcmVzcG9uc2VcbiAgcmV0dXJuIG5ldyBSZXNwb25zZShzdHJlYW0gYXMgYW55LCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJ0ZXh0L2V2ZW50LXN0cmVhbVwiLFxuICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwibm8tY2FjaGVcIixcbiAgICAgIENvbm5lY3Rpb246IFwia2VlcC1hbGl2ZVwiLFxuICAgIH0sXG4gIH0pXG59XG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCBPcGVuQUkgZnJvbSBcIm9wZW5haVwiXG5cbi8vIExhenktbG9hZGVkIGNsaWVudCBpbnN0YW5jZVxubGV0IG9wZW5haTogT3BlbkFJIHwgbnVsbCA9IG51bGxcbmxldCBjYWNoZWRSZWFkbWU6IHN0cmluZyB8IG51bGwgPSBudWxsXG5cbmZ1bmN0aW9uIGdldE9wZW5BSUNsaWVudCgpIHtcbiAgY29uc3QgYXBpS2V5ID0gcHJvY2Vzcy5lbnYuVklURV9PUEVOUk9VVEVSX0FQSV9LRVlcbiAgaWYgKCFhcGlLZXkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIEFwaSBLZXkgaW4gZW52XCIpXG4gIH1cblxuICBpZiAoIW9wZW5haSkge1xuICAgIG9wZW5haSA9IG5ldyBPcGVuQUkoe1xuICAgICAgYXBpS2V5LFxuICAgICAgYmFzZVVSTDogXCJodHRwczovL29wZW5yb3V0ZXIuYWkvYXBpL3YxXCIsXG4gICAgICBkZWZhdWx0SGVhZGVyczoge1xuICAgICAgICBcIkhUVFAtUmVmZXJlclwiOiBcImh0dHBzOi8vdHNjaXJjdWl0LmNvbVwiLFxuICAgICAgICBcIlgtVGl0bGVcIjogXCJUU0NpcmN1aXQgRWRpdG9yXCIsXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gb3BlbmFpXG59XG5cbi8vIENhY2hlIFJFQURNRVxuYXN5bmMgZnVuY3Rpb24gZ2V0Q2FjaGVkUmVhZG1lKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGlmIChjYWNoZWRSZWFkbWUgIT09IG51bGwpIHJldHVybiBjYWNoZWRSZWFkbWVcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goXG4gICAgXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdHNjaXJjdWl0L3Byb3BzL21haW4vUkVBRE1FLm1kXCIsXG4gIClcbiAgaWYgKCFyZXMub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCBSRUFETUU6ICR7cmVzLnN0YXR1c31gKVxuICB9XG4gIGNhY2hlZFJlYWRtZSA9IGF3YWl0IHJlcy50ZXh0KClcbiAgcmV0dXJuIGNhY2hlZFJlYWRtZVxufVxuXG5hc3luYyBmdW5jdGlvbiBjb21wbGV0aW9uKFxuICBvcGVuYWk6IE9wZW5BSSxcbiAgcmVhZG1lQ29udGVudDogc3RyaW5nLFxuICBwcmVmaXg6IHN0cmluZyxcbiAgc3VmZml4OiBzdHJpbmcsXG4gIG1vZGVsID0gXCJvcGVuYWkvZ3B0LTQuMS1taW5pXCIsXG4gIGxhbmd1YWdlPzogc3RyaW5nLFxuKSB7XG4gIGNvbnN0IHN5c3RlbU1lc3NhZ2UgPSBgWW91IGFyZSBhbiBleHBlcnQgJHtsYW5ndWFnZSA/IGxhbmd1YWdlICsgXCIgXCIgOiBcIlwifXByb2dyYW1tZXIgd29ya2luZyBpbiBhIFRTWCAoVHlwZVNjcmlwdCArIFJlYWN0IEpTWCkgZW52aXJvbm1lbnQuXG5cbkJlbG93IGlzIHRoZSBSRUFETUUubWQgZm9yIHRoZSBhdmFpbGFibGUgY29tcG9uZW50cy4gWW91IE1VU1QgdXNlIHRoaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGNvbXBvbmVudHMgYW5kIHByb3BzIGFyZSB2YWxpZC4gXG5Pbmx5IHVzZSBjb21wb25lbnRzIGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1bmRlciBBdmFpbGFibGUgQ29tcG9uZW50cyBpbiB0aGUgUkVBRE1FLiBOZXZlciBpbnZlbnQgb3IgZ3Vlc3MgbmV3IGNvbXBvbmVudHMuIElmIHRoZSB1c2VyIHBhcnRpYWxseSB0eXBlcyBhIGNvbXBvbmVudCB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBSRUFETUUsIGRvIE5PVCB0cnkgdG8gY29tcGxldGUgaXQuXG5cbj09PT09IFJFQURNRS5tZCBTVEFSVCA9PT09PVxuJHtyZWFkbWVDb250ZW50fVxuPT09PT0gUkVBRE1FLm1kIEVORCA9PT09PVxuXG5TcGVjaWFsIGluc3RydWN0aW9uIGZvciB0aGUgPGNoaXA+IGNvbXBvbmVudDpcbi0gRG8gTk9UIGFkZCBjaGlwIGFzIGEgcHJvcCAoZS5nLiwgPGNoaXAgY2hpcD1cIi4uLlwiPiBpcyBpbnZhbGlkKS5cbi0gQWx3YXlzIHVzZSB0aGlzIGZvcm1hdDogXG4gIDxjaGlwIG5hbWU9XCJVPG51bWJlcj5cIiBmb290cHJpbnQ9XCI8dmFsaWQgZm9vdHByaW50PlwiIHBpbkxhYmVscz17e319IHBjYlg9ezB9IHBjYlk9ezB9IHNjaFg9ezB9IHNjaFk9ezB9IC8+XG4tIERldGVybWluZSB0aGUgbmV4dCBzZXF1ZW50aWFsIG5hbWUgYXV0b21hdGljYWxseTogZS5nLiBVMSwgVTIsIFUzLlxuLSBPbmx5IHVzZSB2YWxpZCBmb290cHJpbnRzIGFuZCBwaW5MYWJlbHMgZnJvbSB0aGUgUkVBRE1FLlxuLSBTb21lIGNvbXBvbmVudHMgbGlrZSA8bmV0bGFiZWw+IGRvIG5vdCBoYXZlIGEgJ25hbWUnIHByb3AgXHUyMDE0IGRvIG5vdCBhZGQgaXQgZm9yIHRob3NlLlxuXG5TVFJJQ1QgcnVsZXM6XG4tIElmIHBhcnRpYWwgbGlrZSBcIjxjYXBhXCIsIG9ubHkgYXBwZW5kIHJlbWFpbmluZyBcImNpdG9yXCIuIE5ldmVyIHJlcGVhdCBsZXR0ZXJzLiBcbi0gSWYgaW5wdXQgaXMgXCI8Y2FwYWNpdG9yXCIsIGFkZCBvbmx5IHByb3BzLCBuZXZlciByZXBlYXQgdGFnLiBcbi0gQWx3YXlzIHByb2R1Y2UgZXhhY3RseSBvbmUgSlNYIGNvbXBvbmVudCwgc3RhcnRpbmcgd2l0aCBcIjxcIiBpZiBuZWVkZWQuIFxuLSBJZiBwYXJ0aWFsIGRvZXNuXHUyMDE5dCBtYXRjaCBhbnkgdmFsaWQgY29tcG9uZW50LCBvdXRwdXQgbm90aGluZy4gXG4tIE5ldmVyIG91dHB1dCB0d28gSlNYIGVsZW1lbnRzLiBBbHdheXMgZW5kIHdpdGggZXhhY3RseSBvbmUgXCIvPlwiLiBcbi0gTmV2ZXIgYWRkIGR1cGxpY2F0ZSBjbG9zaW5nIFwiLz5cIi4gXG4tIE5ldmVyIG91dHB1dCB0aGUgY29tcG9uZW50IG5hbWUgYXMgYSBwcm9wLiBcbi0gTmV2ZXIgYWRkIHdoaXRlc3BhY2UgYmVmb3JlIHlvdXIgY29tcGxldGlvbi5cbi0gSWYgdGhlIGlucHV0IGlzIGV4YWN0bHkgXCI8XCIsIHRoZW4gc3RhcnQgd2l0aCB0aGUgY29tcG9uZW50IG5hbWUgZGlyZWN0bHkgKGxpa2UgXCJyZXNpc3RvciAuLi4gLz5cIikgd2l0aG91dCBhZGRpbmcgYW5vdGhlciBcIjxcIi5cbi0gU28gdGhhdCB0aGUgZmluYWwgcmVzdWx0IGlzIFwiPHJlc2lzdG9yIC4uLiAvPlwiLCBub3QgXCI8PHJlc2lzdG9yIC4uLiAvPlwiLlxuLSBOZXZlciBwcm9kdWNlIGEgZG91YmxlIFwiPFwiLlxuXG5FeGFtcGxlczpcbi0gSW5wdXQ6IFwiPEZJTExfTUU+XCJcbiAgT3V0cHV0OiA8cmVzaXN0b3IgbmFtZT1cIlIxXCIgZm9vdHByaW50PVwiMDYwM1wiIHBjYlg9ezV9IHBjYlk9ezd9IHNjaFg9ezF9IHNjaFk9ezJ9IHJlc2lzdGFuY2U9ezEwMDB9IC8+XG4tIElucHV0OiBcIjxjYTxGSUxMX01FPlwiXG4gIE91dHB1dDogcGFjaXRvciBuYW1lPVwiQzFcIiBmb290cHJpbnQ9XCIwODA1XCIgcGNiWD17MTB9IHBjYlk9ezE1fSBzY2hYPXszfSBzY2hZPXs0fSAvPlxuLSBJbnB1dDogXCI8Y2hpcDxGSUxMX01FPlwiXG4gIE91dHB1dDogbmFtZT1cIlUxXCIgZm9vdHByaW50PVwiU09JQy04XCIgcGluTGFiZWxzPXt7fX0gcGNiWD17MH0gcGNiWT17MH0gc2NoWD17MH0gc2NoWT17MH0gLz5cbi0gSW5wdXQ6IFwiPG5ldGw8RklMTF9NRT5cIlxuICBPdXRwdXQ6IGFiZWwgbmFtZT1cIk4xXCIgLz5cbi0gTkVWRVIgb3V0cHV0OiA8Y2FwYWNpdG9yIGNhcGFjaXRvciAuLi4gLz4gb3IgPG5ldG5ldCAuLi4gLz5cbi0gSW5wdXQ6IFwiPFwiXG4gIE91dHB1dDogcmVzaXN0b3IgbmFtZT1cIlIxXCIgZm9vdHByaW50PVwiMDYwM1wiIHBjYlg9ezV9IHBjYlk9ezd9IHNjaFg9ezF9IHNjaFk9ezJ9IHJlc2lzdGFuY2U9ezEwMDB9IC8+XG4tIElucHV0OiBcIjxjYVwiXG4gIE91dHB1dDogcGFjaXRvciBuYW1lPVwiQzFcIiBmb290cHJpbnQ9XCIwODA1XCIgcGNiWD17MTB9IHBjYlk9ezE1fSBzY2hYPXszfSBzY2hZPXs0fSAvPlxuLSBJbnB1dDogXCI8Y2FwYWNpdG9yXCJcbiAgT3V0cHV0OiAgY2FwYWNpdGFuY2U9XCIxMDAwcEZcIiBmb290cHJpbnQ9XCIwODA1XCIgbmFtZT1cIkMxXCIgcGNiWD17MTB9IHBjYlk9ezE1fSBzY2hYPXszfSBzY2hZPXs0fSAvPmBcblxuICBjb25zdCBjaGF0Q29tcGxldGlvbiA9IGF3YWl0IG9wZW5haS5jaGF0LmNvbXBsZXRpb25zLmNyZWF0ZSh7XG4gICAgbWVzc2FnZXM6IFtcbiAgICAgIHsgcm9sZTogXCJzeXN0ZW1cIiwgY29udGVudDogc3lzdGVtTWVzc2FnZSB9LFxuICAgICAgeyByb2xlOiBcInVzZXJcIiwgY29udGVudDogYCR7cHJlZml4fTxGSUxMX01FPiR7c3VmZml4fWAgfSxcbiAgICBdLFxuICAgIG1vZGVsLFxuICB9KVxuXG4gIHJldHVybiBjaGF0Q29tcGxldGlvbi5jaG9pY2VzWzBdLm1lc3NhZ2U/LmNvbnRlbnQgPz8gXCJcIlxufVxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLCAvLyBcdTI3MDUgUmVxdWlyZSB1c2VyIHRvIGJlIHNpZ25lZCBpblxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHByZWZpeDogei5zdHJpbmcoKSxcbiAgICBzdWZmaXg6IHouc3RyaW5nKCksXG4gICAgbW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBsYW5ndWFnZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgcHJlZGljdGlvbjogei5zdHJpbmcoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qgb3BlbmFpID0gZ2V0T3BlbkFJQ2xpZW50KClcbiAgY29uc3QgeyBwcmVmaXgsIHN1ZmZpeCwgbW9kZWwsIGxhbmd1YWdlIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCByZWFkbWVDb250ZW50ID0gYXdhaXQgZ2V0Q2FjaGVkUmVhZG1lKClcbiAgY29uc3QgcHJlZGljdGlvblJlc3VsdCA9IGF3YWl0IGNvbXBsZXRpb24oXG4gICAgb3BlbmFpLFxuICAgIHJlYWRtZUNvbnRlbnQsXG4gICAgcHJlZml4LFxuICAgIHN1ZmZpeCxcbiAgICBtb2RlbCxcbiAgICBsYW5ndWFnZSxcbiAgKVxuICByZXR1cm4gY3R4Lmpzb24oeyBwcmVkaWN0aW9uOiBwcmVkaWN0aW9uUmVzdWx0IH0pXG59KVxuIiwgImltcG9ydCB7IGRhdGFzaGVldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBjaGlwX25hbWU6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBkYXRhc2hlZXQ6IGRhdGFzaGVldFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBjaGlwX25hbWUgfSA9IHJlcS5qc29uQm9keVxuICBjb25zdCBkYXRhc2hlZXQgPSBjdHguZGIuYWRkRGF0YXNoZWV0KHsgY2hpcF9uYW1lIH0pXG4gIHJldHVybiBjdHguanNvbih7IGRhdGFzaGVldCB9KVxufSlcbiIsICJpbXBvcnQgeyBkYXRhc2hlZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBkYXRhc2hlZXRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGNoaXBfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLnJlZmluZSgodmFsKSA9PiB2YWwuZGF0YXNoZWV0X2lkIHx8IHZhbC5jaGlwX25hbWUsIHtcbiAgICAgIG1lc3NhZ2U6IFwiZGF0YXNoZWV0X2lkIG9yIGNoaXBfbmFtZSByZXF1aXJlZFwiLFxuICAgIH0pLFxuICBqc29uQm9keTogei5hbnkoKS5vcHRpb25hbCgpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBkYXRhc2hlZXQ6IGRhdGFzaGVldFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBkYXRhc2hlZXRfaWQsIGNoaXBfbmFtZSB9ID0gcmVxLnF1ZXJ5XG4gIGxldCBkYXRhc2hlZXRcbiAgaWYgKGRhdGFzaGVldF9pZCkge1xuICAgIGRhdGFzaGVldCA9IGN0eC5kYi5nZXREYXRhc2hlZXRCeUlkKGRhdGFzaGVldF9pZClcbiAgfSBlbHNlIGlmIChjaGlwX25hbWUpIHtcbiAgICBkYXRhc2hlZXQgPSBjdHguZGIuZ2V0RGF0YXNoZWV0QnlDaGlwTmFtZShjaGlwX25hbWUpXG4gIH1cbiAgaWYgKCFkYXRhc2hlZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJkYXRhc2hlZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkRhdGFzaGVldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG4gIHJldHVybiBjdHguanNvbih7IGRhdGFzaGVldCB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIGNoaXBfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX3BvcHVsYXI6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBkYXRhc2hlZXRzOiB6LmFycmF5KFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBkYXRhc2hlZXRfaWQ6IHouc3RyaW5nKCkudXVpZCgpLFxuICAgICAgICBjaGlwX25hbWU6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGNoaXBfbmFtZSwgaXNfcG9wdWxhciB9ID0gcmVxLmNvbW1vblBhcmFtc1xuICBjb25zdCBkYXRhc2hlZXRzID0gY3R4LmRiXG4gICAgLmxpc3REYXRhc2hlZXRzKHsgY2hpcF9uYW1lLCBpc19wb3B1bGFyIH0pXG4gICAgLm1hcCgoZHMpID0+ICh7XG4gICAgICBkYXRhc2hlZXRfaWQ6IGRzLmRhdGFzaGVldF9pZCxcbiAgICAgIGNoaXBfbmFtZTogZHMuY2hpcF9uYW1lLFxuICAgIH0pKVxuXG4gIHJldHVybiBjdHguanNvbih7IGRhdGFzaGVldHMgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KGN0eC5hdXRoLmFjY291bnRfaWQpXG5cbiAgaWYgKCFhY2NvdW50KSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShcIkFjY291bnQgbm90IGZvdW5kXCIsIHsgc3RhdHVzOiA0MDEgfSlcbiAgfVxuXG4gIC8vIEdldCByZXR1cm5fdG9fcGFnZSBmcm9tIHF1ZXJ5IHBhcmFtc1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlcS51cmwpXG4gIGNvbnN0IHJldHVyblRvUGFnZSA9IHVybC5zZWFyY2hQYXJhbXMuZ2V0KFwicmV0dXJuX3RvX3BhZ2VcIikgfHwgXCIvXCJcblxuICAvLyBDaGVjayBpZiB1c2VyIGFscmVhZHkgaGFzIGFuIGFjdGl2ZSBHaXRIdWIgaW5zdGFsbGF0aW9uXG4gIGNvbnN0IGV4aXN0aW5nSW5zdGFsbGF0aW9uID0gY3R4LmRiLmdpdGh1Ykluc3RhbGxhdGlvbnMuZmluZChcbiAgICAoaW5zdGFsbGF0aW9uKSA9PlxuICAgICAgaW5zdGFsbGF0aW9uLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgaW5zdGFsbGF0aW9uLmlzX2FjdGl2ZSxcbiAgKVxuXG4gIGlmIChleGlzdGluZ0luc3RhbGxhdGlvbikge1xuICAgIC8vIElmIGluc3RhbGxhdGlvbiBhbHJlYWR5IGV4aXN0cywgcmVkaXJlY3QgYmFja1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXCJcIiwge1xuICAgICAgc3RhdHVzOiAzMDIsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIExvY2F0aW9uOiByZXR1cm5Ub1BhZ2UsXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICAvLyBDcmVhdGUgYSBuZXcgR2l0SHViIGluc3RhbGxhdGlvbiAoc2ltdWxhdGluZyB0aGUgdXNlciBjb21wbGV0aW5nIHRoZSBHaXRIdWIgQXBwIGluc3RhbGxhdGlvbilcbiAgY29uc3QgZ2l0aHViSW5zdGFsbGF0aW9uSWQgPSBgZmFrZV9naF9pbnN0YWxsYXRpb25fJHtEYXRlLm5vdygpfWBcbiAgY29uc3QgbW9ja0luc3RhbGxhdGlvbklkID0gYCR7RGF0ZS5ub3coKX1gIC8vIE1vY2sgR2l0SHViIEFwcCBpbnN0YWxsYXRpb24gSURcblxuICBjb25zdCBuZXdJbnN0YWxsYXRpb24gPSB7XG4gICAgZ2l0aHViX2luc3RhbGxhdGlvbl9pZDogZ2l0aHViSW5zdGFsbGF0aW9uSWQsXG4gICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBpbnN0YWxsYXRpb25faWQ6IG1vY2tJbnN0YWxsYXRpb25JZCxcbiAgICBnaXRodWJfdXNlcm5hbWU6IGFjY291bnQuZ2l0aHViX3VzZXJuYW1lLFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgaXNfYWN0aXZlOiB0cnVlLFxuICAgIGFjY2Vzc190b2tlbjogYGdoc19tb2NrX3Rva2VuXyR7RGF0ZS5ub3coKX1gLCAvLyBNb2NrIGFjY2VzcyB0b2tlblxuICAgIGFjY2Vzc190b2tlbl9leHBpcmVzX2F0OiBuZXcgRGF0ZShEYXRlLm5vdygpICsgMzYwMDAwMCkudG9JU09TdHJpbmcoKSwgLy8gMSBob3VyIGZyb20gbm93XG4gIH1cblxuICBjdHguZGIuZ2l0aHViSW5zdGFsbGF0aW9ucy5wdXNoKG5ld0luc3RhbGxhdGlvbilcblxuICAvLyBSZXR1cm4gSFRNTCBwYWdlIHRoYXQgc2hvd3MgaW5zdGFsbGF0aW9uIHN1Y2Nlc3MgYW5kIHJlZGlyZWN0cyBiYWNrXG4gIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgYFxuICAgIDxodG1sPlxuICAgICAgPGhlYWQ+XG4gICAgICAgIDx0aXRsZT5HaXRIdWIgSW5zdGFsbGF0aW9uIENvbXBsZXRlPC90aXRsZT5cbiAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj1cInJlZnJlc2hcIiBjb250ZW50PVwiMzt1cmw9JHtyZXR1cm5Ub1BhZ2V9XCI+XG4gICAgICA8L2hlYWQ+XG4gICAgICA8Ym9keSBzdHlsZT1cImZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsgcGFkZGluZzogNDBweDsgdGV4dC1hbGlnbjogY2VudGVyO1wiPlxuICAgICAgICA8aDE+XHUyNzA1IEdpdEh1YiBJbnN0YWxsYXRpb24gQ29tcGxldGUhPC9oMT5cbiAgICAgICAgPHA+WW91ciBHaXRIdWIgYWNjb3VudCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgY29ubmVjdGVkIHRvIHRzY2lyY3VpdC48L3A+XG4gICAgICAgIDxwPllvdSBjYW4gbm93IGFjY2VzcyB5b3VyIHJlcG9zaXRvcmllcyBpbiB0aGUgcGFja2FnZSBzZXR0aW5ncy48L3A+XG4gICAgICAgIDxwPlJlZGlyZWN0aW5nIHlvdSBiYWNrIGluIDMgc2Vjb25kcy4uLjwvcD5cbiAgICAgICAgPGEgaHJlZj1cIiR7cmV0dXJuVG9QYWdlfVwiIHN0eWxlPVwiY29sb3I6ICMwMDY2Y2M7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC13ZWlnaHQ6IGJvbGQ7XCI+Q2xpY2sgaGVyZSBpZiB5b3UncmUgbm90IHJlZGlyZWN0ZWQgYXV0b21hdGljYWxseTwvYT5cbiAgICAgIDwvYm9keT5cbiAgICA8L2h0bWw+XG4gICAgYCxcbiAgICB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XCIsXG4gICAgICB9LFxuICAgIH0sXG4gIClcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHJlcG9zOiB6LmFycmF5KFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLFxuICAgICAgICBmdWxsX25hbWU6IHouc3RyaW5nKCksXG4gICAgICAgIHByaXZhdGU6IHouYm9vbGVhbigpLFxuICAgICAgICBvd25lcjogei5vYmplY3Qoe1xuICAgICAgICAgIGxvZ2luOiB6LnN0cmluZygpLFxuICAgICAgICB9KSxcbiAgICAgICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICAgICAgZGVmYXVsdF9icmFuY2g6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICB9KSxcbn0pKGFzeW5jIChfcmVxLCBjdHgpID0+IHtcbiAgY29uc3QgYWNjb3VudCA9IGN0eC5kYi5nZXRBY2NvdW50KGN0eC5hdXRoLmFjY291bnRfaWQpXG5cbiAgaWYgKCFhY2NvdW50KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDEsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWNjb3VudF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiQWNjb3VudCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgR2l0SHViIGFjY291bnQgY29ubmVjdGVkXG4gIGlmICghYWNjb3VudC5naXRodWJfdXNlcm5hbWUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJnaXRodWJfbm90X2Nvbm5lY3RlZFwiLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgXCJHaXRIdWIgYWNjb3VudCBub3QgY29ubmVjdGVkLiBQbGVhc2UgY29ubmVjdCB5b3VyIEdpdEh1YiBhY2NvdW50IGZpcnN0LlwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB1c2VyIGhhcyBhIEdpdEh1YiBpbnN0YWxsYXRpb25cbiAgY29uc3QgZ2l0aHViSW5zdGFsbGF0aW9uID0gY3R4LmRiLmdpdGh1Ykluc3RhbGxhdGlvbnMuZmluZChcbiAgICAoaW5zdGFsbGF0aW9uKSA9PlxuICAgICAgaW5zdGFsbGF0aW9uLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgaW5zdGFsbGF0aW9uLmlzX2FjdGl2ZSxcbiAgKVxuXG4gIGlmICghZ2l0aHViSW5zdGFsbGF0aW9uKSB7XG4gICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5IGlmIG5vIEdpdEh1YiBpbnN0YWxsYXRpb24gZm91bmRcbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgcmVwb3M6IFtdLFxuICAgIH0pXG4gIH1cblxuICAvLyBNb2NrIHJlcG9zaXRvcmllcyBmb3IgZGVtb25zdHJhdGlvblxuICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoaXMgd291bGQgZmV0Y2ggZnJvbSBHaXRIdWIgQVBJIHVzaW5nIHRoZSBpbnN0YWxsYXRpb24gYWNjZXNzIHRva2VuXG4gIGNvbnN0IG1vY2tSZXBvcyA9IFtcbiAgICB7XG4gICAgICB1bnNjb3BlZF9uYW1lOiBcIm15LWVsZWN0cm9uaWNzLXByb2plY3RcIixcbiAgICAgIGZ1bGxfbmFtZTogYCR7YWNjb3VudC5naXRodWJfdXNlcm5hbWV9L215LWVsZWN0cm9uaWNzLXByb2plY3RgLFxuICAgICAgb3duZXI6IHtcbiAgICAgICAgbG9naW46IGFjY291bnQuZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFyZHVpbm8tYmFzZWQgc2Vuc29yIG1vbml0b3Jpbmcgc3lzdGVtXCIsXG4gICAgICBwcml2YXRlOiBmYWxzZSxcbiAgICAgIGRlZmF1bHRfYnJhbmNoOiBcIm1haW5cIixcbiAgICB9LFxuICAgIHtcbiAgICAgIHVuc2NvcGVkX25hbWU6IFwicGNiLWRlc2lnbnNcIixcbiAgICAgIGZ1bGxfbmFtZTogYCR7YWNjb3VudC5naXRodWJfdXNlcm5hbWV9L3BjYi1kZXNpZ25zYCxcbiAgICAgIG93bmVyOiB7XG4gICAgICAgIGxvZ2luOiBhY2NvdW50LmdpdGh1Yl91c2VybmFtZSxcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogXCJDb2xsZWN0aW9uIG9mIFBDQiBkZXNpZ25zIGZvciB2YXJpb3VzIHByb2plY3RzXCIsXG4gICAgICBwcml2YXRlOiB0cnVlLFxuICAgICAgZGVmYXVsdF9icmFuY2g6IFwibWFpblwiLFxuICAgIH0sXG4gICAge1xuICAgICAgdW5zY29wZWRfbmFtZTogXCJ0c2NpcmN1aXQtZXhhbXBsZXNcIixcbiAgICAgIGZ1bGxfbmFtZTogYCR7YWNjb3VudC5naXRodWJfdXNlcm5hbWV9L3RzY2lyY3VpdC1leGFtcGxlc2AsXG4gICAgICBvd25lcjoge1xuICAgICAgICBsb2dpbjogYWNjb3VudC5naXRodWJfdXNlcm5hbWUsXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246IFwiRXhhbXBsZXMgYW5kIHR1dG9yaWFscyBmb3IgdHNjaXJjdWl0XCIsXG4gICAgICBwcml2YXRlOiBmYWxzZSxcbiAgICAgIGRlZmF1bHRfYnJhbmNoOiBcIm1haW5cIixcbiAgICB9LFxuICBdXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICByZXBvczogbW9ja1JlcG9zLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHN1Y2Nlc3M6IHouYm9vbGVhbigpLFxuICAgIG1lc3NhZ2U6IHouc3RyaW5nKCksXG4gICAgcmVwb3NfcmVmcmVzaGVkOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IGFjY291bnQgPSBjdHguZGIuZ2V0QWNjb3VudChjdHguYXV0aC5hY2NvdW50X2lkKVxuXG4gIGlmICghYWNjb3VudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAxLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFjY291bnRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkFjY291bnQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIEdpdEh1YiBpbnN0YWxsYXRpb25cbiAgY29uc3QgZ2l0aHViSW5zdGFsbGF0aW9uID0gY3R4LmRiLmdpdGh1Ykluc3RhbGxhdGlvbnMuZmluZChcbiAgICAoaW5zdGFsbGF0aW9uKSA9PlxuICAgICAgaW5zdGFsbGF0aW9uLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgaW5zdGFsbGF0aW9uLmlzX2FjdGl2ZSxcbiAgKVxuXG4gIGlmICghZ2l0aHViSW5zdGFsbGF0aW9uKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZ2l0aHViX25vdF9jb25uZWN0ZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiR2l0SHViIGFjY291bnQgbm90IGNvbm5lY3RlZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoaXMgd291bGQgcmVmcmVzaCByZXBvcyBmcm9tIEdpdEh1YiBBUElcbiAgLy8gRm9yIGZha2UgQVBJLCBzaW11bGF0ZSByZWZyZXNoaW5nIGJ5IHVwZGF0aW5nIHRoZSBpbnN0YWxsYXRpb24gdGltZXN0YW1wXG4gIGdpdGh1Ykluc3RhbGxhdGlvbi51cGRhdGVkX2F0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICAgIG1lc3NhZ2U6IFwiR2l0SHViIHJlcG9zaXRvcmllcyByZWZyZXNoZWQgc3VjY2Vzc2Z1bGx5XCIsXG4gICAgcmVwb3NfcmVmcmVzaGVkOiAzLCAvLyBNb2NrIG51bWJlclxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHsgb2s6IHouYm9vbGVhbigpIH0pLFxufSkoYXN5bmMgKHJlcTogYW55LCBjdHg6IGFueSkgPT4ge1xuICByZXR1cm4gY3R4Lmpzb24oeyBvazogdHJ1ZSB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IG1zIGZyb20gXCJtc1wiXG5pbXBvcnQgeyBTaWduSldUIH0gZnJvbSBcImpvc2VcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBhY2NvdW50X2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBnaXRodWJfdXNlcm5hbWU6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzZXNzaW9uOiB6Lm9iamVjdCh7XG4gICAgICBzZXNzaW9uX2lkOiB6LnN0cmluZygpLFxuICAgICAgYWNjb3VudF9pZDogei5zdHJpbmcoKSxcbiAgICAgIGV4cGlyZXNfYXQ6IHouc3RyaW5nKCksXG4gICAgICBpc19jbGlfc2Vzc2lvbjogei5ib29sZWFuKCksXG4gICAgICB0b2tlbjogei5zdHJpbmcoKSxcbiAgICB9KSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IGFjY291bnRcbiAgaWYgKFwiYWNjb3VudF9pZFwiIGluIHJlcS5qc29uQm9keSkge1xuICAgIGFjY291bnQgPSBjdHguZGIuZ2V0QWNjb3VudChyZXEuanNvbkJvZHkuYWNjb3VudF9pZClcbiAgfSBlbHNlIHtcbiAgICBhY2NvdW50ID0gY3R4LmRiLmdldEFjY291bnQocmVxLmpzb25Cb2R5LmdpdGh1Yl91c2VybmFtZSlcbiAgfVxuXG4gIGlmICghYWNjb3VudCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImFjY291bnRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkFjY291bnQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IG5ld19zZXNzaW9uID0gY3R4LmRiLmNyZWF0ZVNlc3Npb24oe1xuICAgIGV4cGlyZXNfYXQ6IG5ldyBEYXRlKERhdGUubm93KCkgKyBtcyhcIjYwIGRheVwiKSkudG9JU09TdHJpbmcoKSxcbiAgICBhY2NvdW50X2lkOiBhY2NvdW50LmFjY291bnRfaWQsXG4gICAgaXNfY2xpX3Nlc3Npb246IGZhbHNlLFxuICB9KVxuXG4gIGNvbnN0IHRva2VuID0gYXdhaXQgbmV3IFNpZ25KV1Qoe1xuICAgIGFjY291bnRfaWQ6IGFjY291bnQuYWNjb3VudF9pZCxcbiAgICBzZXNzaW9uX2lkOiBuZXdfc2Vzc2lvbi5zZXNzaW9uX2lkLFxuICAgIGdpdGh1Yl91c2VybmFtZTogYWNjb3VudC5naXRodWJfdXNlcm5hbWUsXG4gIH0pXG4gICAgLnNldFByb3RlY3RlZEhlYWRlcih7IGFsZzogXCJIUzI1NlwiIH0pXG4gICAgLnNldEV4cGlyYXRpb25UaW1lKG5ldyBEYXRlKERhdGUubm93KCkgKyBtcyhcIjYwIGRheVwiKSkudG9JU09TdHJpbmcoKSlcbiAgICAuc2lnbihuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUocHJvY2Vzcy5lbnYuSldUX1NFQ1JFVCB8fCBcIlwiKSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIHNlc3Npb246IHtcbiAgICAgIC4uLm5ld19zZXNzaW9uLFxuICAgICAgdG9rZW4sXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyRmlsZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfZmlsZV9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyX2ZpbGU6IG9yZGVyRmlsZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmRlcl9maWxlX2lkIH0gPSByZXEucXVlcnlcblxuICBjb25zdCBvcmRlckZpbGUgPSBjdHguZGIuZ2V0T3JkZXJGaWxlQnlJZChvcmRlcl9maWxlX2lkKVxuICBpZiAoIW9yZGVyRmlsZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZGVyX2ZpbGVfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZGVyIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfZmlsZTogb3JkZXJGaWxlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgb3JkZXJGaWxlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfaWQ6IHouc3RyaW5nKCksXG4gICAgY29udGVudF9iYXNlNjQ6IHouc3RyaW5nKCksXG4gICAgaXNfZ2VyYmVyc196aXA6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgZm9yX3Byb3ZpZGVyOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9maWxlOiBvcmRlckZpbGVTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3JkZXJfaWQsIGNvbnRlbnRfYmFzZTY0LCBpc19nZXJiZXJzX3ppcCwgZm9yX3Byb3ZpZGVyIH0gPVxuICAgIHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IG9yZGVyID0gY3R4LmRiLmdldE9yZGVyQnlJZChvcmRlcl9pZClcbiAgaWYgKCFvcmRlcikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZGVyX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmRlciBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgbmV3T3JkZXJGaWxlID0ge1xuICAgIG9yZGVyX2lkLFxuICAgIGlzX2dlcmJlcnNfemlwOiBpc19nZXJiZXJzX3ppcCB8fCBmYWxzZSxcbiAgICBjb250ZW50X3R5cGU6IFwiYmFzZTY0XCIsXG4gICAgZm9yX3Byb3ZpZGVyOiBmb3JfcHJvdmlkZXIgfHwgbnVsbCxcbiAgICB1cGxvYWRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGNvbnRlbnRfdGV4dDogQnVmZmVyLmZyb20oY29udGVudF9iYXNlNjQsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKFwidXRmLThcIiksXG4gICAgY29udGVudF9ieXRlczogVWludDhBcnJheS5mcm9tKGF0b2IoY29udGVudF9iYXNlNjQpLCAoYykgPT5cbiAgICAgIGMuY2hhckNvZGVBdCgwKSxcbiAgICApLFxuICB9XG5cbiAgY29uc3Qgb3JkZXJGaWxlID0gY3R4LmRiLmFkZE9yZGVyRmlsZShuZXdPcmRlckZpbGUpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvcmRlcl9maWxlOiBvcmRlckZpbGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZV9pZHM6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9yZWxlYXNlX2lkIH0gPSByZXEuanNvbkJvZHlcbiAgY29uc3QgdmVuZG9yTmFtZXMgPSBbXCJKTENQQ0JcIiwgXCJNYWNyb0ZhYlwiXVxuXG4gIGxldCBvcmRlclF1b3RlSWRzID0gW11cbiAgZm9yIChjb25zdCB2ZW5kb3JOYW1lIG9mIHZlbmRvck5hbWVzKSB7XG4gICAgY29uc3Qgb3JkZXJRdW90ZUlkID0gY3R4LmRiLmFkZE9yZGVyUXVvdGUoe1xuICAgICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIHZlbmRvcl9uYW1lOiB2ZW5kb3JOYW1lLFxuICAgIH0pXG4gICAgb3JkZXJRdW90ZUlkcy5wdXNoKG9yZGVyUXVvdGVJZClcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfcXVvdGVfaWRzOiBvcmRlclF1b3RlSWRzLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLFxuICAgIHZlbmRvcl9uYW1lOiB6LmxpdGVyYWwoXCJqbGNwY2JcIiksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGVycm9yOiB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgZXJyb3JfY29kZTogei5zdHJpbmcoKSxcbiAgICAgICAgbWVzc2FnZTogei5zdHJpbmcoKSxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uYWwoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQsIHZlbmRvcl9uYW1lIH0gPSByZXEuanNvbkJvZHlcblxuICAvLyBjaGVjayBwYWNrYWdlIHJlbGVhc2UgZXhpc3RzXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLmdldFBhY2thZ2VSZWxlYXNlQnlJZChwYWNrYWdlX3JlbGVhc2VfaWQpXG4gIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4Lmpzb24oXG4gICAgICB7XG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgeyBzdGF0dXM6IDQwNCB9LFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlRmlsZXMgPVxuICAgIGN0eC5kYi5nZXRQYWNrYWdlRmlsZXNCeVJlbGVhc2VJZChwYWNrYWdlX3JlbGVhc2VfaWQpXG4gIGlmIChwYWNrYWdlUmVsZWFzZUZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjdHguanNvbihcbiAgICAgIHtcbiAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9maWxlc19ub3RfZm91bmRcIixcbiAgICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBmaWxlcyBub3QgZm91bmRcIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7IHN0YXR1czogNDA0IH0sXG4gICAgKVxuICB9XG5cbiAgY29uc3Qgb3JkZXJRdW90ZUlkID0gY3R4LmRiLmFkZE9yZGVyUXVvdGUoe1xuICAgIGFjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIHZlbmRvcl9uYW1lLFxuICB9KVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJfcXVvdGVfaWQ6IG9yZGVyUXVvdGVJZCxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IG9yZGVyUXVvdGVTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgb3JkZXJfcXVvdGVfaWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9xdW90ZTogb3JkZXJRdW90ZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvcmRlcl9xdW90ZV9pZCB9ID0gcmVxLmNvbW1vblBhcmFtc1xuXG4gIGNvbnN0IG9yZGVyUXVvdGUgPSBjdHguZGIuZ2V0T3JkZXJRdW90ZUJ5SWQob3JkZXJfcXVvdGVfaWQpXG5cbiAgaWYgKCFvcmRlclF1b3RlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwib3JkZXJfcXVvdGVfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIk9yZGVyIHF1b3RlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZGVyX3F1b3RlOiBvcmRlclF1b3RlLFxuICB9KVxufSlcbiIsICJpbXBvcnQge1xuICBKbGNwY2JPcmRlclN0YXRlLFxuICB0eXBlIE9yZGVyLFxuICBvcmRlclNjaGVtYSxcbn0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLnV1aWQoKS5vcHRpb25hbCgpLFxuICAgICAgY2lyY3VpdF9qc29uOiB6LmFycmF5KHoucmVjb3JkKHouYW55KCkpKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoKGRhdGEpID0+IGRhdGEucGFja2FnZV9yZWxlYXNlX2lkIHx8IGRhdGEuY2lyY3VpdF9qc29uLCB7XG4gICAgICBtZXNzYWdlOiBcIkVpdGhlciBwYWNrYWdlX3JlbGVhc2VfaWQgb3IgY2lyY3VpdF9qc29uIG11c3QgYmUgcHJvdmlkZWRcIixcbiAgICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb3JkZXI6IG9yZGVyU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGNpcmN1aXRfanNvbiB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgY29uc3QgbmV3T3JkZXIgPSB7XG4gICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICBpc19ydW5uaW5nOiBmYWxzZSxcbiAgICBpc19zdGFydGVkOiBmYWxzZSxcbiAgICBpc19maW5pc2hlZDogZmFsc2UsXG4gICAgZXJyb3I6IG51bGwsXG4gICAgaGFzX2Vycm9yOiBmYWxzZSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgc3RhcnRlZF9hdDogbnVsbCxcbiAgICBjb21wbGV0ZWRfYXQ6IG51bGwsXG4gICAgY2lyY3VpdF9qc29uLFxuICB9XG5cbiAgY29uc3Qgb3JkZXIgPSBjdHguZGIuYWRkT3JkZXIobmV3T3JkZXIpXG5cbiAgY29uc3QgbmV3SmxjcGNiT3JkZXJTdGF0ZSA9IHtcbiAgICBvcmRlcl9pZDogb3JkZXIub3JkZXJfaWQsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGFyZV9nZXJiZXJzX3VwbG9hZGVkOiBmYWxzZSxcbiAgICBpc19nZXJiZXJfYW5hbHl6ZWQ6IGZhbHNlLFxuICAgIGFyZV9pbml0aWFsX2Nvc3RzX2NhbGN1bGF0ZWQ6IGZhbHNlLFxuICAgIGlzX3BjYl9hZGRlZF90b19jYXJ0OiBmYWxzZSxcbiAgICBpc19ib21fdXBsb2FkZWQ6IGZhbHNlLFxuICAgIGlzX3BucF91cGxvYWRlZDogZmFsc2UsXG4gICAgaXNfYm9tX3BucF9hbmFseXplZDogZmFsc2UsXG4gICAgaXNfYm9tX3BhcnNpbmdfY29tcGxldGU6IGZhbHNlLFxuICAgIGFyZV9jb21wb25lbnRzX2F2YWlsYWJsZTogZmFsc2UsXG4gICAgaXNfcGF0Y2hfbWFwX2dlbmVyYXRlZDogZmFsc2UsXG4gICAgaXNfanNvbl9tZXJnZV9maWxlX2NyZWF0ZWQ6IGZhbHNlLFxuICAgIGlzX2RmbV9yZXN1bHRfZ2VuZXJhdGVkOiBmYWxzZSxcbiAgICBhcmVfZmlsZXNfZG93bmxvYWRlZDogZmFsc2UsXG4gICAgYXJlX3Byb2R1Y3RfY2F0ZWdvcmllc19mZXRjaGVkOiBmYWxzZSxcbiAgICBhcmVfZmluYWxfY29zdHNfY2FsY3VsYXRlZDogZmFsc2UsXG4gICAgaXNfanNvbl9tZXJnZV9maWxlX3VwZGF0ZWQ6IGZhbHNlLFxuICAgIGlzX2FkZGVkX3RvX2NhcnQ6IGZhbHNlLFxuICAgIGFyZV9nZXJiZXJzX2dlbmVyYXRlZDogZmFsc2UsXG4gICAgY3VycmVudF9zdGVwOiBudWxsLFxuICB9XG5cbiAgY3R4LmRiLmFkZEpsY3BjYk9yZGVyU3RhdGUobmV3SmxjcGNiT3JkZXJTdGF0ZSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZGVyLFxuICB9KVxufSlcbiIsICJpbXBvcnQge1xuICBlcnJvclNjaGVtYSxcbiAgamxjcGNiT3JkZXJTdGF0ZVNjaGVtYSxcbiAgb3JkZXJTY2hlbWEsXG59IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlclN0ZXBzIGFzIHNpbXVsYXRlU2NlbmFyaW9zIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL3V0aWxzL29yZGVyLXN0ZXBzXCJcblxuY29uc3QgZGVmYXVsdE9yZGVyU3RhdGUgPSB7XG4gIGFyZV9nZXJiZXJzX3VwbG9hZGVkOiBmYWxzZSxcbiAgaXNfZ2VyYmVyX2FuYWx5emVkOiBmYWxzZSxcbiAgYXJlX2luaXRpYWxfY29zdHNfY2FsY3VsYXRlZDogZmFsc2UsXG4gIGlzX3BjYl9hZGRlZF90b19jYXJ0OiBmYWxzZSxcbiAgaXNfYm9tX3VwbG9hZGVkOiBmYWxzZSxcbiAgaXNfcG5wX3VwbG9hZGVkOiBmYWxzZSxcbiAgaXNfYm9tX3BucF9hbmFseXplZDogZmFsc2UsXG4gIGlzX2JvbV9wYXJzaW5nX2NvbXBsZXRlOiBmYWxzZSxcbiAgYXJlX2NvbXBvbmVudHNfYXZhaWxhYmxlOiBmYWxzZSxcbiAgaXNfcGF0Y2hfbWFwX2dlbmVyYXRlZDogZmFsc2UsXG4gIGlzX2pzb25fbWVyZ2VfZmlsZV9jcmVhdGVkOiBmYWxzZSxcbiAgaXNfZGZtX3Jlc3VsdF9nZW5lcmF0ZWQ6IGZhbHNlLFxuICBhcmVfZmlsZXNfZG93bmxvYWRlZDogZmFsc2UsXG4gIGFyZV9wcm9kdWN0X2NhdGVnb3JpZXNfZmV0Y2hlZDogZmFsc2UsXG4gIGFyZV9maW5hbF9jb3N0c19jYWxjdWxhdGVkOiBmYWxzZSxcbiAgaXNfanNvbl9tZXJnZV9maWxlX3VwZGF0ZWQ6IGZhbHNlLFxuICBpc19hZGRlZF90b19jYXJ0OiBmYWxzZSxcbiAgdXBsb2FkZWRfZ2VyYmVyX21ldGFkYXRhOiBudWxsLFxuICBnZXJiZXJfYW5hbHlzaXM6IG51bGwsXG4gIGFyZV9nZXJiZXJzX2dlbmVyYXRlZDogZmFsc2UsXG4gIGN1cnJlbnRfc3RlcDogbnVsbCBhcyBudWxsIHwgKHR5cGVvZiBzaW11bGF0ZVNjZW5hcmlvcylbbnVtYmVyXSxcbn1cblxuY29uc3QgZXJyb3JNYXAgPSB7XG4gIGFyZV9nZXJiZXJzX2dlbmVyYXRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiR0VSQkVSX0dFTkVSQVRJT05fRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJHZXJiZXIgZ2VuZXJhdGlvbiBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX2dlcmJlcnNfdXBsb2FkZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkdFUkJFUl9VUExPQURfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJHZXJiZXIgdXBsb2FkIGZhaWxlZFwiLFxuICB9LFxuICBpc19nZXJiZXJfYW5hbHl6ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkFOQUxZWkVfR0VSQkVSX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiQW5hbHl6ZSBnZXJiZXIgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2JvbV91cGxvYWRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiQk9NX1VQTE9BRF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkJvbSB1cGxvYWQgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX3BucF91cGxvYWRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiUE5QX1VQTE9BRF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIlBucCB1cGxvYWQgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2JvbV9wbnBfYW5hbHl6ZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkFOQUxZWkVfQk9NX0FORF9QTlBfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJBbmFseXplIGJvbSBhbmQgcG5wIGZhaWxlZFwiLFxuICB9LFxuICBpc19ib21fcGFyc2luZ19jb21wbGV0ZToge1xuICAgIGVycm9yX2NvZGU6IFwiQk9NX1BBUlNJTkdfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJCb20gcGFyc2luZyBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX2NvbXBvbmVudHNfYXZhaWxhYmxlOiB7XG4gICAgZXJyb3JfY29kZTogXCJDT01QT05FTlRTX0FWQUlMQUJJTElUWV9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkNvbXBvbmVudHMgYXZhaWxhYmlsaXR5IGZhaWxlZFwiLFxuICB9LFxuICBpc19wYXRjaF9tYXBfZ2VuZXJhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJHRU5FUkFURV9QQVRDSF9NQVBfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJHZW5lcmF0ZSBwYXRjaCBtYXAgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2pzb25fbWVyZ2VfZmlsZV9jcmVhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJDUkVBVElPTl9KU09OX01FUkdFX0ZJTEVfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJDcmVhdGlvbiBqc29uIG1lcmdlIGZpbGUgZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2RmbV9yZXN1bHRfZ2VuZXJhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJHRU5FUkFURV9ERk1fUkVTVUxUX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiR2VuZXJhdGUgZGZtIHJlc3VsdCBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX2ZpbGVzX2Rvd25sb2FkZWQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkRPV05MT0FEX0ZJTEVTX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiRG93bmxvYWQgZmlsZXMgZmFpbGVkXCIsXG4gIH0sXG4gIGFyZV9wcm9kdWN0X2NhdGVnb3JpZXNfZmV0Y2hlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiRkVUQ0hfUFJPRFVDVF9DQVRFR09SSUVTX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiRmV0Y2ggcHJvZHVjdCBjYXRlZ29yaWVzIGZhaWxlZFwiLFxuICB9LFxuICBhcmVfZmluYWxfY29zdHNfY2FsY3VsYXRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiRklOQUxfQ09TVF9DQUxDVUxBVElPTl9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkZpbmFsIGNvc3QgY2FsY3VsYXRpb24gZmFpbGVkXCIsXG4gIH0sXG4gIGlzX2pzb25fbWVyZ2VfZmlsZV91cGRhdGVkOiB7XG4gICAgZXJyb3JfY29kZTogXCJVUERBVEVfSlNPTl9NRVJHRV9GSUxFX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiVXBkYXRlIGpzb24gbWVyZ2UgZmlsZSBmYWlsZWRcIixcbiAgfSxcbiAgaXNfcGNiX2FkZGVkX3RvX2NhcnQ6IHtcbiAgICBlcnJvcl9jb2RlOiBcIkFERF9QQ0JfVE9fQ0FSVF9GQUlMRURcIixcbiAgICBtZXNzYWdlOiBcIkFkZCBwY2IgdG8gY2FydCBmYWlsZWRcIixcbiAgfSxcbiAgaXNfYWRkZWRfdG9fY2FydDoge1xuICAgIGVycm9yX2NvZGU6IFwiQUREX1RPX0NBUlRfRkFJTEVEXCIsXG4gICAgbWVzc2FnZTogXCJBZGQgdG8gY2FydCBmYWlsZWRcIixcbiAgfSxcbiAgYXJlX2luaXRpYWxfY29zdHNfY2FsY3VsYXRlZDoge1xuICAgIGVycm9yX2NvZGU6IFwiSU5JVElBTF9DT1NUX0NBTENVTEFUSU9OX0ZBSUxFRFwiLFxuICAgIG1lc3NhZ2U6IFwiSW5pdGlhbCBjb3N0IGNhbGN1bGF0aW9uIGZhaWxlZFwiLFxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvcmRlcl9pZDogei5zdHJpbmcoKSxcbiAgICBfc2ltdWxhdGVfc2NlbmFyaW86IHouZW51bShzaW11bGF0ZVNjZW5hcmlvcykub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyOiBvcmRlclNjaGVtYSxcbiAgICBvcmRlclN0YXRlOiBqbGNwY2JPcmRlclN0YXRlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IG9yZGVyX2lkLCBfc2ltdWxhdGVfc2NlbmFyaW8gfSA9IHJlcS5xdWVyeVxuXG4gIGNvbnN0IG9yZGVyID0gY3R4LmRiLmdldE9yZGVyQnlJZChvcmRlcl9pZClcbiAgaWYgKCFvcmRlcikge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm9yZGVyX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJPcmRlciBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgdXBkYXRlZE9yZGVyU3RhdGUgPSB7XG4gICAgLi4uZGVmYXVsdE9yZGVyU3RhdGUsXG4gICAgb3JkZXJfaWQsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICB9XG5cbiAgaWYgKF9zaW11bGF0ZV9zY2VuYXJpbykge1xuICAgIGNvbnN0IGVycm9yID0gZXJyb3JNYXBbX3NpbXVsYXRlX3NjZW5hcmlvXVxuICAgIGlmIChlcnJvcikge1xuICAgICAgb3JkZXIuZXJyb3IgPSBlcnJvclNjaGVtYS5wYXJzZShlcnJvcilcbiAgICAgIG9yZGVyLmhhc19lcnJvciA9IHRydWVcbiAgICAgIGN0eC5kYi51cGRhdGVPcmRlcihvcmRlcl9pZCwgeyBlcnJvcjogb3JkZXIuZXJyb3IsIGhhc19lcnJvcjogdHJ1ZSB9KVxuXG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBzaW11bGF0ZVNjZW5hcmlvcy5pbmRleE9mKF9zaW11bGF0ZV9zY2VuYXJpbylcbiAgICAgIHNpbXVsYXRlU2NlbmFyaW9zLnNsaWNlKDAsIGN1cnJlbnRJbmRleCkuZm9yRWFjaCgoc2NlbmFyaW8pID0+IHtcbiAgICAgICAgdXBkYXRlZE9yZGVyU3RhdGVbc2NlbmFyaW9dID0gdHJ1ZVxuICAgICAgfSlcbiAgICAgIHVwZGF0ZWRPcmRlclN0YXRlLmN1cnJlbnRfc3RlcCA9IHNpbXVsYXRlU2NlbmFyaW9zW2N1cnJlbnRJbmRleF1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZXhpc3RpbmdTdGF0ZSA9IGN0eC5kYi5nZXRKbGNwY2JPcmRlclN0YXRlc0J5T3JkZXJJZChvcmRlcl9pZClcbiAgICBpZiAoZXhpc3RpbmdTdGF0ZSkge1xuICAgICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgICAgb3JkZXIsXG4gICAgICAgIG9yZGVyU3RhdGU6IGV4aXN0aW5nU3RhdGUsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGN0eC5kYi51cGRhdGVKbGNwY2JPcmRlclN0YXRlKG9yZGVyX2lkLCB1cGRhdGVkT3JkZXJTdGF0ZSlcblxuICBjb25zdCBvcmRlclN0YXRlID0gY3R4LmRiLmdldEpsY3BjYk9yZGVyU3RhdGVzQnlPcmRlcklkKG9yZGVyX2lkKSFcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9yZGVyLFxuICAgIG9yZGVyU3RhdGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBvcmRlclNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9yZGVyczogei5hcnJheShvcmRlclNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb3JkZXJzOiBjdHguZGIub3JkZXJzLmZpbHRlcigobykgPT4gby5hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHB1YmxpY01hcFBhY2thZ2VCdWlsZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlLWJ1aWxkXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9idWlsZF9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfYnVpbGQ6IHouYW55KCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9idWlsZF9pZCB9ID0gcmVxLnF1ZXJ5XG5cbiAgaWYgKCFwYWNrYWdlX2J1aWxkX2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9yZXF1ZXN0XCIsXG4gICAgICBtZXNzYWdlOiBcInBhY2thZ2VfYnVpbGRfaWQgaXMgcmVxdWlyZWRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcGFja2FnZUJ1aWxkID0gY3R4LmRiLnBhY2thZ2VCdWlsZHMuZmluZChcbiAgICAoYnVpbGQpID0+IGJ1aWxkLnBhY2thZ2VfYnVpbGRfaWQgPT09IHBhY2thZ2VfYnVpbGRfaWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VCdWlsZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfYnVpbGRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgYnVpbGQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlQnVpbGQucGFja2FnZV9yZWxlYXNlX2lkLFxuICApXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX2lkLFxuICApXG4gIGlmICghcGtnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKHBrZy5jcmVhdG9yX2FjY291bnRfaWQgIT09IGN0eC5hdXRoLmFjY291bnRfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJ1bmF1dGhvcml6ZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBhY2Nlc3MgdGhpcyBwYWNrYWdlIGJ1aWxkXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHB1YmxpY0J1aWxkID0gcHVibGljTWFwUGFja2FnZUJ1aWxkKHBhY2thZ2VCdWlsZCwge1xuICAgIGluY2x1ZGVfbG9nczogdHJ1ZSxcbiAgfSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIHBhY2thZ2VfYnVpbGQ6IHB1YmxpY0J1aWxkLFxuICB9KVxufSlcbiIsICJpbXBvcnQgKiBhcyBaVCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBjb25zdCBwdWJsaWNNYXBQYWNrYWdlQnVpbGQgPSAoXG4gIGludGVybmFsUGFja2FnZUJ1aWxkOiBaVC5QYWNrYWdlQnVpbGQsXG4gIG9wdGlvbnM6IHtcbiAgICBpbmNsdWRlX2xvZ3M/OiBib29sZWFuXG4gIH0gPSB7XG4gICAgaW5jbHVkZV9sb2dzOiBmYWxzZSxcbiAgfSxcbik6IFpULlBhY2thZ2VCdWlsZCA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAuLi5pbnRlcm5hbFBhY2thZ2VCdWlsZCxcbiAgICBjcmVhdGVkX2F0OiBpbnRlcm5hbFBhY2thZ2VCdWlsZC5jcmVhdGVkX2F0LFxuICAgIHRyYW5zcGlsYXRpb25fc3RhcnRlZF9hdDogaW50ZXJuYWxQYWNrYWdlQnVpbGQudHJhbnNwaWxhdGlvbl9zdGFydGVkX2F0LFxuICAgIHRyYW5zcGlsYXRpb25fY29tcGxldGVkX2F0OiBpbnRlcm5hbFBhY2thZ2VCdWlsZC50cmFuc3BpbGF0aW9uX2NvbXBsZXRlZF9hdCxcbiAgICB0cmFuc3BpbGF0aW9uX2xvZ3M6IG9wdGlvbnMuaW5jbHVkZV9sb2dzXG4gICAgICA/IGludGVybmFsUGFja2FnZUJ1aWxkLnRyYW5zcGlsYXRpb25fbG9nc1xuICAgICAgOiBbXSxcbiAgICB0cmFuc3BpbGF0aW9uX2Vycm9yOiBpbnRlcm5hbFBhY2thZ2VCdWlsZC50cmFuc3BpbGF0aW9uX2Vycm9yLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9zdGFydGVkX2F0OlxuICAgICAgaW50ZXJuYWxQYWNrYWdlQnVpbGQuY2lyY3VpdF9qc29uX2J1aWxkX3N0YXJ0ZWRfYXQsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2NvbXBsZXRlZF9hdDpcbiAgICAgIGludGVybmFsUGFja2FnZUJ1aWxkLmNpcmN1aXRfanNvbl9idWlsZF9jb21wbGV0ZWRfYXQsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IG9wdGlvbnMuaW5jbHVkZV9sb2dzXG4gICAgICA/IGludGVybmFsUGFja2FnZUJ1aWxkLmNpcmN1aXRfanNvbl9idWlsZF9sb2dzXG4gICAgICA6IFtdLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcjogaW50ZXJuYWxQYWNrYWdlQnVpbGQuY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yLFxuICAgIGJ1aWxkX3N0YXJ0ZWRfYXQ6IGludGVybmFsUGFja2FnZUJ1aWxkLmJ1aWxkX3N0YXJ0ZWRfYXQsXG4gICAgYnVpbGRfY29tcGxldGVkX2F0OiBpbnRlcm5hbFBhY2thZ2VCdWlsZC5idWlsZF9jb21wbGV0ZWRfYXQsXG4gICAgYnVpbGRfZXJyb3I6IGludGVybmFsUGFja2FnZUJ1aWxkLmJ1aWxkX2Vycm9yLFxuICAgIGJ1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDpcbiAgICAgIGludGVybmFsUGFja2FnZUJ1aWxkLmJ1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdCxcbiAgICBwcmV2aWV3X3VybDogaW50ZXJuYWxQYWNrYWdlQnVpbGQucHJldmlld191cmwsXG4gICAgYnVpbGRfbG9nczogb3B0aW9ucy5pbmNsdWRlX2xvZ3MgPyBpbnRlcm5hbFBhY2thZ2VCdWlsZC5idWlsZF9sb2dzIDogbnVsbCxcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgcHVibGljTWFwUGFja2FnZUJ1aWxkIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2UtYnVpbGRcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX2J1aWxkczogei5hcnJheSh6LmFueSgpKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX2lkLCBwYWNrYWdlX3JlbGVhc2VfaWQgfSA9IHJlcS5xdWVyeVxuICBpZiAoIXBhY2thZ2VfaWQgJiYgIXBhY2thZ2VfcmVsZWFzZV9pZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfcmVxdWVzdFwiLFxuICAgICAgbWVzc2FnZTogXCJFaXRoZXIgcGFja2FnZV9pZCBvciBwYWNrYWdlX3JlbGVhc2VfaWQgbXVzdCBiZSBwcm92aWRlZFwiLFxuICAgIH0pXG4gIH1cblxuICBsZXQgdGFyZ2V0UGFja2FnZUlkID0gcGFja2FnZV9pZFxuXG4gIGlmIChwYWNrYWdlX3JlbGVhc2VfaWQpIHtcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuICAgIHRhcmdldFBhY2thZ2VJZCA9IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfaWRcbiAgfVxuXG4gIGlmICh0YXJnZXRQYWNrYWdlSWQpIHtcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5wYWNrYWdlX2lkID09PSB0YXJnZXRQYWNrYWdlSWQpXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHBrZy5jcmVhdG9yX2FjY291bnRfaWQgIT09IGN0eC5hdXRoLmFjY291bnRfaWQpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwidW5hdXRob3JpemVkXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBhY2Nlc3MgdGhpcyBwYWNrYWdlXCIsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGxldCBidWlsZHMgPSBjdHguZGIucGFja2FnZUJ1aWxkc1xuXG4gIGlmIChwYWNrYWdlX2lkKSB7XG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2VzID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maWx0ZXIoXG4gICAgICAoeCkgPT4geC5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkLFxuICAgIClcbiAgICBpZiAocGFja2FnZVJlbGVhc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlSWRzID0gcGFja2FnZVJlbGVhc2VzXG4gICAgICAuZmlsdGVyKChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZClcbiAgICAgIC5tYXAoKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQpXG5cbiAgICBidWlsZHMgPSBidWlsZHMuZmlsdGVyKChidWlsZCkgPT5cbiAgICAgIHBhY2thZ2VSZWxlYXNlSWRzLmluY2x1ZGVzKGJ1aWxkLnBhY2thZ2VfcmVsZWFzZV9pZCksXG4gICAgKVxuICB9XG5cbiAgaWYgKHBhY2thZ2VfcmVsZWFzZV9pZCkge1xuICAgIGJ1aWxkcyA9IGJ1aWxkcy5maWx0ZXIoXG4gICAgICAoYnVpbGQpID0+IGJ1aWxkLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIClcbiAgfVxuXG4gIGJ1aWxkcyA9IGJ1aWxkcy5zb3J0KFxuICAgIChhLCBiKSA9PlxuICAgICAgbmV3IERhdGUoYi5jcmVhdGVkX2F0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSxcbiAgKVxuXG4gIGNvbnN0IHB1YmxpY0J1aWxkcyA9IGJ1aWxkcy5tYXAoKGJ1aWxkKSA9PlxuICAgIHB1YmxpY01hcFBhY2thZ2VCdWlsZChidWlsZCwge1xuICAgICAgaW5jbHVkZV9sb2dzOiBmYWxzZSxcbiAgICB9KSxcbiAgKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgcGFja2FnZV9idWlsZHM6IHB1YmxpY0J1aWxkcyxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgUGFja2FnZSwgUGFja2FnZVJlbGVhc2UgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBjb25zdCBmaW5kUGFja2FnZVJlbGVhc2VJZCA9IGFzeW5jIChcbiAgcGFyYW1zOlxuICAgIHwgc3RyaW5nXG4gICAgfCB7XG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogc3RyaW5nXG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHBhY2thZ2VfbmFtZTogc3RyaW5nXG4gICAgICAgIHVzZV9sYXRlc3RfdmVyc2lvbjogdHJ1ZVxuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiBzdHJpbmdcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkPzogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24/OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICAgIH0sXG4gIGN0eDogeyBkYjogYW55IH0sXG4pOiBQcm9taXNlPHN0cmluZyB8IG51bGw+ID0+IHtcbiAgaWYgKHR5cGVvZiBwYXJhbXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gZmluZFBhY2thZ2VSZWxlYXNlSWRGcm9tUGFja2FnZU5hbWVXaXRoVmVyc2lvbihwYXJhbXMsIGN0eC5kYilcbiAgfVxuXG4gIGlmIChcbiAgICBcInBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIiBpbiBwYXJhbXMgJiZcbiAgICBwYXJhbXMucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblxuICApIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24gfSA9IHBhcmFtc1xuXG4gICAgaWYgKHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uZW5kc1dpdGgoXCJAbGF0ZXN0XCIpKSB7XG4gICAgICBjb25zdCBbcGFja2FnZU5hbWVdID0gcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5zcGxpdChcIkBcIilcbiAgICAgIHJldHVybiBmaW5kUGFja2FnZVJlbGVhc2VJZChcbiAgICAgICAge1xuICAgICAgICAgIHBhY2thZ2VfbmFtZTogcGFja2FnZU5hbWUhLFxuICAgICAgICAgIHVzZV9sYXRlc3RfdmVyc2lvbjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY3R4LFxuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gZmluZFBhY2thZ2VSZWxlYXNlSWRGcm9tUGFja2FnZU5hbWVXaXRoVmVyc2lvbihcbiAgICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24hLFxuICAgICAgY3R4LmRiLFxuICAgIClcbiAgfVxuXG4gIGlmIChcInBhY2thZ2VfcmVsZWFzZV9pZFwiIGluIHBhcmFtcyAmJiBwYXJhbXMucGFja2FnZV9yZWxlYXNlX2lkKSB7XG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHI6IFBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhcmFtcy5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgKVxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBwYXJhbXMucGFja2FnZV9yZWxlYXNlX2lkXG4gIH1cblxuICBpZiAoXCJwYWNrYWdlX25hbWVcIiBpbiBwYXJhbXMpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfbmFtZSwgdXNlX2xhdGVzdF92ZXJzaW9uIH0gPSBwYXJhbXNcblxuICAgIGlmICghdXNlX2xhdGVzdF92ZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VfbGF0ZXN0X3ZlcnNpb24gbXVzdCBiZSB0cnVlXCIpXG4gICAgfVxuXG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocDogUGFja2FnZSkgPT4gcC5uYW1lID09PSBwYWNrYWdlX25hbWUucmVwbGFjZSgvXkAvLCBcIlwiKSxcbiAgICApXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAocHI6IFBhY2thZ2VSZWxlYXNlKSA9PiBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci5pc19sYXRlc3QsXG4gICAgKVxuXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkXG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgY29uc3QgZmluZFBhY2thZ2VSZWxlYXNlSWRGcm9tUGFja2FnZU5hbWVXaXRoVmVyc2lvbiA9IChcbiAgcGFja2FnZU5hbWVXaXRoVmVyc2lvbjogc3RyaW5nLFxuICBkYjogYW55LFxuKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIGlmICghcGFja2FnZU5hbWVXaXRoVmVyc2lvbikgcmV0dXJuIG51bGxcblxuICBjb25zdCBbcGFja2FnZU5hbWUsIHZlcnNpb25dID0gcGFja2FnZU5hbWVXaXRoVmVyc2lvblxuICAgIC5yZXBsYWNlKC9eQC8sIFwiXCIpXG4gICAgLnNwbGl0KFwiQFwiKVxuXG4gIGNvbnN0IHBrZyA9IGRiLnBhY2thZ2VzLmZpbmQoKHA6IFBhY2thZ2UpID0+IHAubmFtZSA9PT0gcGFja2FnZU5hbWUpXG4gIGlmICghcGtnKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGxldCBwYWNrYWdlUmVsZWFzZVxuXG4gIGlmICghdmVyc2lvbiB8fCB2ZXJzaW9uID09PSBcImxhdGVzdFwiKSB7XG4gICAgcGFja2FnZVJlbGVhc2UgPSBkYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcjogUGFja2FnZVJlbGVhc2UpID0+IHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdCxcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgcGFja2FnZVJlbGVhc2UgPSBkYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgIChwcjogUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gICAgKVxuICB9XG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICByZXR1cm4gcGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkXG59XG4iLCAiaW1wb3J0ICogYXMgenQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgZmluZFBhY2thZ2VSZWxlYXNlSWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfcmVsZWFzZS9maW5kLXBhY2thZ2UtcmVsZWFzZS1pZFwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3Qgcm91dGVTcGVjID0ge1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGZpbGVfcGF0aDogei5zdHJpbmcoKSxcbiAgICAgIGlzX3JlbGVhc2VfdGFyYmFsbDogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgICAgIGNvbnRlbnRfbWltZXR5cGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGNvbnRlbnRfdGV4dDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY29udGVudF9iYXNlNjQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgbnBtX3BhY2tfb3V0cHV0OiB6LmFueSgpLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQpIHJldHVybiB0cnVlXG4gICAgICBpZiAodi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gdHJ1ZVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgXCJNdXN0IHNwZWNpZnkgZWl0aGVyIHBhY2thZ2VfcmVsZWFzZV9pZCBvciBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIpXG4gICAgLnJlZmluZSgodikgPT4ge1xuICAgICAgaWYgKHYucGFja2FnZV9yZWxlYXNlX2lkICYmIHYucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwiQ2Fubm90IHNwZWNpZnkgYm90aCBwYWNrYWdlX3JlbGVhc2VfaWQgYW5kIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIilcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5jb250ZW50X2Jhc2U2NCAmJiB2LmNvbnRlbnRfdGV4dCkgcmV0dXJuIGZhbHNlXG4gICAgICBpZiAoIXYuY29udGVudF9iYXNlNjQgJiYgdi5jb250ZW50X3RleHQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwiRWl0aGVyIGNvbnRlbnRfYmFzZTY0IG9yIGNvbnRlbnRfdGV4dCBpcyByZXF1aXJlZFwiKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2VfZmlsZTogenQucGFja2FnZUZpbGVTY2hlbWEsXG4gIH0pLFxufSBhcyBjb25zdFxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHJvdXRlU3BlYykoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWxlX3BhdGgsXG4gICAgY29udGVudF9taW1ldHlwZTogcHJvdmlkZWRDb250ZW50TWltZXR5cGUsXG4gICAgY29udGVudF9iYXNlNjQsXG4gICAgY29udGVudF90ZXh0LFxuICAgIGlzX3JlbGVhc2VfdGFyYmFsbCxcbiAgICBucG1fcGFja19vdXRwdXQsXG4gIH0gPSByZXEuanNvbkJvZHlcblxuICBpZiAoaXNfcmVsZWFzZV90YXJiYWxsICYmICFucG1fcGFja19vdXRwdXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJtaXNzaW5nX29wdGlvbnNcIixcbiAgICAgIG1lc3NhZ2U6IFwibnBtX3BhY2tfb3V0cHV0IGlzIHJlcXVpcmVkIGZvciByZWxlYXNlIHRhcmJhbGxzXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmICghaXNfcmVsZWFzZV90YXJiYWxsICYmIG5wbV9wYWNrX291dHB1dCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfb3B0aW9uc1wiLFxuICAgICAgbWVzc2FnZTogXCJucG1fcGFja19vdXRwdXQgaXMgb25seSB2YWxpZCBmb3IgcmVsZWFzZSB0YXJiYWxsc1wiLFxuICAgIH0pXG4gIH1cblxuICBsZXQgcGFja2FnZVJlbGVhc2VJZCA9IHJlcS5qc29uQm9keS5wYWNrYWdlX3JlbGVhc2VfaWRcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQgJiYgcmVxLmpzb25Cb2R5LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHtcbiAgICBjb25zdCBmb3VuZFBhY2thZ2VSZWxlYXNlSWQgPSBhd2FpdCBmaW5kUGFja2FnZVJlbGVhc2VJZChcbiAgICAgIHsgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogcmVxLmpzb25Cb2R5LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24gfSxcbiAgICAgIGN0eCxcbiAgICApXG4gICAgaWYgKGZvdW5kUGFja2FnZVJlbGVhc2VJZCkge1xuICAgICAgcGFja2FnZVJlbGVhc2VJZCA9IGZvdW5kUGFja2FnZVJlbGVhc2VJZFxuICAgIH1cbiAgfVxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBWZXJpZnkgdGhlIHBhY2thZ2UgcmVsZWFzZSBleGlzdHNcbiAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEdldCB0aGUgcGFja2FnZSB0byBjaGVjayBwZXJtaXNzaW9uc1xuICBjb25zdCBleGlzdGluZ1BhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX2lkLFxuICApXG5cbiAgaWYgKCFleGlzdGluZ1BhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGNyZWF0ZS91cGRhdGUgdGhlIGZpbGVcbiAgaWYgKGV4aXN0aW5nUGFja2FnZS5jcmVhdG9yX2FjY291bnRfaWQgIT09IGN0eC5hdXRoLmFjY291bnRfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBtb2RpZnkgZmlsZXMgaW4gdGhpcyBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGZpbGUgZXhpc3RzXG4gIGNvbnN0IGV4aXNpdGluZ0ZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKHBmKSA9PlxuICAgICAgcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZUlkICYmIHBmLmZpbGVfcGF0aCA9PT0gZmlsZV9wYXRoLFxuICApXG5cbiAgLy8gRGV0ZXJtaW5lIGNvbnRlbnQgbWltZXR5cGVcbiAgY29uc3QgY29udGVudE1pbWV0eXBlID1cbiAgICBwcm92aWRlZENvbnRlbnRNaW1ldHlwZSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIudHNcIikgfHwgZmlsZV9wYXRoLmVuZHNXaXRoKFwiLnRzeFwiKVxuICAgICAgPyBcInRleHQvdHlwZXNjcmlwdFwiXG4gICAgICA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5qc1wiKSA/IFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLmpzb25cIikgPyBcImFwcGxpY2F0aW9uL2pzb25cIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5tZFwiKSA/IFwidGV4dC9tYXJrZG93blwiIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLmh0bWxcIikgPyBcInRleHQvaHRtbFwiIDogbnVsbCkgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLmNzc1wiKSA/IFwidGV4dC9jc3NcIiA6IG51bGwpIHx8XG4gICAgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIlxuXG4gIGlmIChleGlzaXRpbmdGaWxlKSB7XG4gICAgY29uc3QgcGFja2FnZV9maWxlID0gY3R4LmRiLnVwZGF0ZVBhY2thZ2VGaWxlKFxuICAgICAgZXhpc2l0aW5nRmlsZS5wYWNrYWdlX2ZpbGVfaWQsXG4gICAgICB7XG4gICAgICAgIGNvbnRlbnRfdGV4dDpcbiAgICAgICAgICBjb250ZW50X3RleHQgPz9cbiAgICAgICAgICAoY29udGVudF9iYXNlNjRcbiAgICAgICAgICAgID8gQnVmZmVyLmZyb20oY29udGVudF9iYXNlNjQsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKClcbiAgICAgICAgICAgIDogbnVsbCksXG4gICAgICAgIGNvbnRlbnRfbWltZXR5cGU6IGNvbnRlbnRNaW1ldHlwZSxcbiAgICAgICAgaXNfcmVsZWFzZV90YXJiYWxsOiBpc19yZWxlYXNlX3RhcmJhbGwgfHwgZmFsc2UsXG4gICAgICAgIG5wbV9wYWNrX291dHB1dDogbnBtX3BhY2tfb3V0cHV0IHx8IG51bGwsXG4gICAgICB9LFxuICAgIClcblxuICAgIC8vIFVwZGF0ZSBmc19zaGEgZm9yIHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgICBjdHguZGIudXBkYXRlUGFja2FnZVJlbGVhc2VGc1NoYShwYWNrYWdlUmVsZWFzZUlkKVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgcGFja2FnZV9maWxlLFxuICAgIH0pXG4gIH1cblxuICBpZiAoXG4gICAgIXJlcS5qc29uQm9keS5wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAhcmVxLmpzb25Cb2R5LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cbiAgKVxuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm1pc3Npbmdfb3B0aW9uc1wiLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgXCJNdXN0IHNwZWNpZnkgZWl0aGVyIHBhY2thZ2VfcmVsZWFzZV9pZCBvciBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIsXG4gICAgfSlcbiAgLy8gQ3JlYXRlIHRoZSBwYWNrYWdlIGZpbGVcbiAgY29uc3QgbmV3UGFja2FnZUZpbGUgPSB7XG4gICAgcGFja2FnZV9maWxlX2lkOiBjcnlwdG8ucmFuZG9tVVVJRCgpLFxuICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2VJZCxcbiAgICBmaWxlX3BhdGgsXG4gICAgY29udGVudF90ZXh0OlxuICAgICAgY29udGVudF90ZXh0ID8/XG4gICAgICAoY29udGVudF9iYXNlNjRcbiAgICAgICAgPyBCdWZmZXIuZnJvbShjb250ZW50X2Jhc2U2NCwgXCJiYXNlNjRcIikudG9TdHJpbmcoKVxuICAgICAgICA6IG51bGwpLFxuICAgIGNvbnRlbnRfbWltZXR5cGU6IGNvbnRlbnRNaW1ldHlwZSxcbiAgICBpc19kaXJlY3Rvcnk6IGZhbHNlLFxuICAgIGlzX3JlbGVhc2VfdGFyYmFsbDogaXNfcmVsZWFzZV90YXJiYWxsIHx8IGZhbHNlLFxuICAgIG5wbV9wYWNrX291dHB1dDogbnBtX3BhY2tfb3V0cHV0IHx8IG51bGwsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICB9XG5cbiAgLy8gQWRkIHRvIHRoZSB0ZXN0IGRhdGFiYXNlXG4gIGN0eC5kYi5hZGRQYWNrYWdlRmlsZShuZXdQYWNrYWdlRmlsZSlcblxuICAvLyBVcGRhdGUgZnNfc2hhIGZvciB0aGUgcGFja2FnZSByZWxlYXNlXG4gIGN0eC5kYi51cGRhdGVQYWNrYWdlUmVsZWFzZUZzU2hhKHBhY2thZ2VSZWxlYXNlSWQpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX2ZpbGU6IG5ld1BhY2thZ2VGaWxlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgKiBhcyB6dCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBmaW5kUGFja2FnZVJlbGVhc2VJZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5jb25zdCByb3V0ZVNwZWMgPSB7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgICAgaXNfcmVsZWFzZV90YXJiYWxsOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgICAgY29udGVudF9taW1ldHlwZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY29udGVudF90ZXh0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBjb250ZW50X2Jhc2U2NDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBucG1fcGFja19vdXRwdXQ6IHouYW55KCkub3B0aW9uYWwoKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LnBhY2thZ2VfcmVsZWFzZV9pZCkgcmV0dXJuIHRydWVcbiAgICAgIGlmICh2LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHJldHVybiB0cnVlXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9LCBcIk11c3Qgc3BlY2lmeSBlaXRoZXIgcGFja2FnZV9yZWxlYXNlX2lkIG9yIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIilcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQgJiYgdi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSwgXCJDYW5ub3Qgc3BlY2lmeSBib3RoIHBhY2thZ2VfcmVsZWFzZV9pZCBhbmQgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiKVxuICAgIC5yZWZpbmUoKHYpID0+IHtcbiAgICAgIGlmICh2LmNvbnRlbnRfYmFzZTY0ICYmIHYuY29udGVudF90ZXh0KSByZXR1cm4gZmFsc2VcbiAgICAgIGlmICghdi5jb250ZW50X2Jhc2U2NCAmJiAhdi5jb250ZW50X3RleHQpIHJldHVybiBmYWxzZVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBcIkVpdGhlciBjb250ZW50X2Jhc2U2NCBvciBjb250ZW50X3RleHQgaXMgcmVxdWlyZWRcIiksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX2ZpbGU6IHp0LnBhY2thZ2VGaWxlU2NoZW1hLFxuICB9KSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyhyb3V0ZVNwZWMpKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsZV9wYXRoLFxuICAgIGNvbnRlbnRfbWltZXR5cGU6IHByb3ZpZGVkQ29udGVudE1pbWV0eXBlLFxuICAgIGNvbnRlbnRfYmFzZTY0LFxuICAgIGNvbnRlbnRfdGV4dCxcbiAgICBpc19yZWxlYXNlX3RhcmJhbGwsXG4gICAgbnBtX3BhY2tfb3V0cHV0LFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgaWYgKGlzX3JlbGVhc2VfdGFyYmFsbCAmJiAhbnBtX3BhY2tfb3V0cHV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibWlzc2luZ19vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOiBcIm5wbV9wYWNrX291dHB1dCBpcyByZXF1aXJlZCBmb3IgcmVsZWFzZSB0YXJiYWxsc1wiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoIWlzX3JlbGVhc2VfdGFyYmFsbCAmJiBucG1fcGFja19vdXRwdXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX29wdGlvbnNcIixcbiAgICAgIG1lc3NhZ2U6IFwibnBtX3BhY2tfb3V0cHV0IGlzIG9ubHkgdmFsaWQgZm9yIHJlbGVhc2UgdGFyYmFsbHNcIixcbiAgICB9KVxuICB9XG5cbiAgbGV0IHBhY2thZ2VSZWxlYXNlSWQgPSByZXEuanNvbkJvZHkucGFja2FnZV9yZWxlYXNlX2lkXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkICYmIHJlcS5qc29uQm9keS5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSB7XG4gICAgY29uc3QgZm91bmRQYWNrYWdlUmVsZWFzZUlkID0gYXdhaXQgZmluZFBhY2thZ2VSZWxlYXNlSWQoXG4gICAgICByZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbixcbiAgICAgIGN0eCxcbiAgICApXG4gICAgaWYgKGZvdW5kUGFja2FnZVJlbGVhc2VJZCkge1xuICAgICAgcGFja2FnZVJlbGVhc2VJZCA9IGZvdW5kUGFja2FnZVJlbGVhc2VJZFxuICAgIH1cbiAgfVxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBWZXJpZnkgdGhlIHBhY2thZ2UgcmVsZWFzZSBleGlzdHNcbiAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIERldGVybWluZSBjb250ZW50IG1pbWV0eXBlXG4gIGNvbnN0IGNvbnRlbnRNaW1ldHlwZSA9XG4gICAgcHJvdmlkZWRDb250ZW50TWltZXR5cGUgfHxcbiAgICAoZmlsZV9wYXRoLmVuZHNXaXRoKFwiLnRzXCIpIHx8IGZpbGVfcGF0aC5lbmRzV2l0aChcIi50c3hcIilcbiAgICAgID8gXCJ0ZXh0L3R5cGVzY3JpcHRcIlxuICAgICAgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIuanNcIikgPyBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5qc29uXCIpID8gXCJhcHBsaWNhdGlvbi9qc29uXCIgOiBudWxsKSB8fFxuICAgIChmaWxlX3BhdGguZW5kc1dpdGgoXCIubWRcIikgPyBcInRleHQvbWFya2Rvd25cIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5odG1sXCIpID8gXCJ0ZXh0L2h0bWxcIiA6IG51bGwpIHx8XG4gICAgKGZpbGVfcGF0aC5lbmRzV2l0aChcIi5jc3NcIikgPyBcInRleHQvY3NzXCIgOiBudWxsKSB8fFxuICAgIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCJcblxuICAvLyBDcmVhdGUgdGhlIHBhY2thZ2UgZmlsZVxuICBjb25zdCBuZXdQYWNrYWdlRmlsZSA9IHtcbiAgICBwYWNrYWdlX2ZpbGVfaWQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwYWNrYWdlUmVsZWFzZUlkLFxuICAgIGZpbGVfcGF0aCxcbiAgICBjb250ZW50X3RleHQ6XG4gICAgICBjb250ZW50X3RleHQgfHxcbiAgICAgIChjb250ZW50X2Jhc2U2NFxuICAgICAgICA/IEJ1ZmZlci5mcm9tKGNvbnRlbnRfYmFzZTY0LCBcImJhc2U2NFwiKS50b1N0cmluZygpXG4gICAgICAgIDogbnVsbCksXG4gICAgY29udGVudF9taW1ldHlwZTogY29udGVudE1pbWV0eXBlLFxuICAgIGlzX2RpcmVjdG9yeTogZmFsc2UsXG4gICAgaXNfcmVsZWFzZV90YXJiYWxsOiBpc19yZWxlYXNlX3RhcmJhbGwgfHwgZmFsc2UsXG4gICAgbnBtX3BhY2tfb3V0cHV0OiBucG1fcGFja19vdXRwdXQgfHwgbnVsbCxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIH1cblxuICAvLyBBZGQgdG8gdGhlIHRlc3QgZGF0YWJhc2VcbiAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKG5ld1BhY2thZ2VGaWxlKVxuXG4gIC8vIFVwZGF0ZSBmc19zaGEgZm9yIHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgY3R4LmRiLnVwZGF0ZVBhY2thZ2VSZWxlYXNlRnNTaGEocGFja2FnZVJlbGVhc2VJZClcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VfZmlsZTogbmV3UGFja2FnZUZpbGUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBmaW5kUGFja2FnZVJlbGVhc2VJZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAucmVmaW5lKCh2KSA9PiB7XG4gICAgICBpZiAodi5wYWNrYWdlX3JlbGVhc2VfaWQpIHJldHVybiB0cnVlXG4gICAgICBpZiAodi5wYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uKSByZXR1cm4gdHJ1ZVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgXCJNdXN0IHNwZWNpZnkgZWl0aGVyIHBhY2thZ2VfcmVsZWFzZV9pZCBvciBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uXCIpXG4gICAgLnJlZmluZSgodikgPT4ge1xuICAgICAgaWYgKHYucGFja2FnZV9yZWxlYXNlX2lkICYmIHYucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikgcmV0dXJuIGZhbHNlXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwiQ2Fubm90IHNwZWNpZnkgYm90aCBwYWNrYWdlX3JlbGVhc2VfaWQgYW5kIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIiksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBmaWxlX3BhdGggfSA9IHJlcS5qc29uQm9keVxuXG4gIGxldCBwYWNrYWdlUmVsZWFzZUlkID0gcmVxLmpzb25Cb2R5LnBhY2thZ2VfcmVsZWFzZV9pZFxuXG4gIGlmICghcGFja2FnZVJlbGVhc2VJZCAmJiByZXEuanNvbkJvZHkucGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbikge1xuICAgIGNvbnN0IGZvdW5kUGFja2FnZVJlbGVhc2VJZCA9IGF3YWl0IGZpbmRQYWNrYWdlUmVsZWFzZUlkKFxuICAgICAgcmVxLmpzb25Cb2R5LnBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgICBjdHgsXG4gICAgKVxuICAgIGlmIChmb3VuZFBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlSWQgPSBmb3VuZFBhY2thZ2VSZWxlYXNlSWRcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlSWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2UgdG8gY2hlY2sgcGVybWlzc2lvbnNcbiAgY29uc3QgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHByKSA9PiBwci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEdldCB0aGUgcGFja2FnZSB0byBjaGVjayBwZXJtaXNzaW9uc1xuICBjb25zdCBleGlzdGluZ3BhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocCkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX2lkLFxuICApXG5cbiAgaWYgKCFleGlzdGluZ3BhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGUgZmlsZVxuICBpZiAoZXhpc3RpbmdwYWNrYWdlLmNyZWF0b3JfYWNjb3VudF9pZCAhPT0gY3R4LmF1dGguYWNjb3VudF9pZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGRlbGV0ZSBmaWxlcyBpbiB0aGlzIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gRmluZCB0aGUgZmlsZVxuICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAoZikgPT5cbiAgICAgIGYuZmlsZV9wYXRoID09PSBmaWxlX3BhdGggJiYgZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZmlsZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBmaWxlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBEZWxldGUgdGhlIGZpbGUgdXNpbmcgZGVsZXRlUGFja2FnZUZpbGUgbWV0aG9kXG4gIGNvbnN0IGRlbGV0ZWQgPSBjdHguZGIuZGVsZXRlUGFja2FnZUZpbGUocGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkKVxuXG4gIGlmICghZGVsZXRlZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZpbGVfZGVsZXRpb25fZmFpbGVkXCIsXG4gICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byBkZWxldGUgcGFja2FnZSBmaWxlXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFVwZGF0ZSBmc19zaGEgZm9yIHRoZSBwYWNrYWdlIHJlbGVhc2VcbiAgY3R4LmRiLnVwZGF0ZVBhY2thZ2VSZWxlYXNlRnNTaGEocGFja2FnZVJlbGVhc2VJZClcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBOb3RGb3VuZEVycm9yIH0gZnJvbSBcIndpbnRlcnNwZWMvbWlkZGxld2FyZVwiXG5pbXBvcnQgKiBhcyBaVCBmcm9tIFwiLi4vZGIvc2NoZW1hXCJcbmltcG9ydCB7IG5vcm1hbGl6ZVByb2plY3RGaWxlUGF0aCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS91dGlscy9ub3JtYWxpemVQcm9qZWN0RmlsZVBhdGhcIlxuZXhwb3J0IGNvbnN0IGdldFBhY2thZ2VGaWxlSWRGcm9tRmlsZURlc2NyaXB0b3IgPSBhc3luYyAoXG4gIGRlc2NyaXB0b3I6XG4gICAgfCB7IHBhY2thZ2VfZmlsZV9pZDogc3RyaW5nIH1cbiAgICB8IHsgcGFja2FnZV9yZWxlYXNlX2lkOiBzdHJpbmc7IGZpbGVfcGF0aDogc3RyaW5nIH1cbiAgICB8IHsgcGFja2FnZV9pZDogc3RyaW5nOyB2ZXJzaW9uPzogc3RyaW5nOyBmaWxlX3BhdGg6IHN0cmluZyB9XG4gICAgfCB7IHBhY2thZ2VfbmFtZTogc3RyaW5nOyB2ZXJzaW9uPzogc3RyaW5nOyBmaWxlX3BhdGg6IHN0cmluZyB9XG4gICAgfCB7IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHN0cmluZzsgZmlsZV9wYXRoOiBzdHJpbmcgfSxcbiAgY3R4OiB7IGRiOiBhbnkgfSxcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGlmIChcInBhY2thZ2VfZmlsZV9pZFwiIGluIGRlc2NyaXB0b3IpIHtcbiAgICBjb25zdCBwYWNrYWdlRmlsZSA9IGN0eC5kYi5wYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChwZjogWlQuUGFja2FnZUZpbGUpID0+IHBmLnBhY2thZ2VfZmlsZV9pZCA9PT0gZGVzY3JpcHRvci5wYWNrYWdlX2ZpbGVfaWQsXG4gICAgKVxuXG4gICAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc2NyaXB0b3IucGFja2FnZV9maWxlX2lkXG4gIH1cblxuICBpZiAoXCJwYWNrYWdlX3JlbGVhc2VfaWRcIiBpbiBkZXNjcmlwdG9yKSB7XG4gICAgY29uc3QgeyBwYWNrYWdlX3JlbGVhc2VfaWQsIGZpbGVfcGF0aCB9ID0gZGVzY3JpcHRvclxuICAgIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKHBmOiBaVC5QYWNrYWdlRmlsZSkgPT5cbiAgICAgICAgcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKHBmLmZpbGVfcGF0aCkgPT09XG4gICAgICAgICAgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKGZpbGVfcGF0aCksXG4gICAgKVxuXG4gICAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhY2thZ2VGaWxlLnBhY2thZ2VfZmlsZV9pZFxuICB9XG5cbiAgaWYgKFwicGFja2FnZV9pZFwiIGluIGRlc2NyaXB0b3IpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfaWQsIHZlcnNpb24sIGZpbGVfcGF0aCB9ID0gZGVzY3JpcHRvclxuXG4gICAgLy8gVmVyaWZ5IHBhY2thZ2UgZXhpc3RzXG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocDogWlQuUGFja2FnZSkgPT4gcC5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkLFxuICAgIClcbiAgICBpZiAoIXBrZykge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJQYWNrYWdlIG5vdCBmb3VuZFwiKVxuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgIGxldCBwYWNrYWdlUmVsZWFzZVxuICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByOiBaVC5QYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgICBwci5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PiBwci5wYWNrYWdlX2lkID09PSBwYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdCxcbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBmaWxlXG4gICAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgICAocGY6IFpULlBhY2thZ2VGaWxlKSA9PlxuICAgICAgICBwZi5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCAmJlxuICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgocGYuZmlsZV9wYXRoKSA9PT1cbiAgICAgICAgICBub3JtYWxpemVQcm9qZWN0RmlsZVBhdGgoZmlsZV9wYXRoKSxcbiAgICApXG5cbiAgICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIilcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZUZpbGUucGFja2FnZV9maWxlX2lkXG4gIH1cblxuICBpZiAoXCJwYWNrYWdlX25hbWVcIiBpbiBkZXNjcmlwdG9yKSB7XG4gICAgY29uc3QgeyBwYWNrYWdlX25hbWUsIHZlcnNpb24sIGZpbGVfcGF0aCB9ID0gZGVzY3JpcHRvclxuXG4gICAgLy8gRmluZCB0aGUgcGFja2FnZSBmaXJzdFxuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwOiBaVC5QYWNrYWdlKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VfbmFtZSlcbiAgICBpZiAoIXBrZykge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYFBhY2thZ2Ugbm90IGZvdW5kOiAke3BhY2thZ2VfbmFtZX1gKVxuICAgIH1cblxuICAgIC8vIEZpbmQgdGhlIHBhY2thZ2UgcmVsZWFzZVxuICAgIGxldCBwYWNrYWdlUmVsZWFzZVxuICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByOiBaVC5QYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgICBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci52ZXJzaW9uID09PSB2ZXJzaW9uLFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAgICAgKHByOiBaVC5QYWNrYWdlUmVsZWFzZSkgPT5cbiAgICAgICAgICBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBwci5pc19sYXRlc3QsXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKCFwYWNrYWdlUmVsZWFzZSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIpXG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgZmlsZVxuICAgIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKHBmOiBaVC5QYWNrYWdlRmlsZSkgPT5cbiAgICAgICAgcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKHBmLmZpbGVfcGF0aCkgPT09XG4gICAgICAgICAgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKGZpbGVfcGF0aCksXG4gICAgKVxuXG4gICAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJQYWNrYWdlIGZpbGUgbm90IGZvdW5kXCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhY2thZ2VGaWxlLnBhY2thZ2VfZmlsZV9pZFxuICB9XG5cbiAgaWYgKFwicGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvblwiIGluIGRlc2NyaXB0b3IpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sIGZpbGVfcGF0aCB9ID0gZGVzY3JpcHRvclxuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5zcGxpdChcIkBcIilbMV1cbiAgICBjb25zdCB2ZXJzaW9uID0gcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5zcGxpdChcIkBcIilbMl1cblxuICAgIC8vIEZpbmQgdGhlIHBhY2thZ2VcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocDogWlQuUGFja2FnZSkgPT4gcC5uYW1lID09PSBwYWNrYWdlTmFtZSlcbiAgICBpZiAoIXBrZykge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYFBhY2thZ2Ugbm90IGZvdW5kOiAke3BhY2thZ2VOYW1lfWApXG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgcGFja2FnZSByZWxlYXNlXG4gICAgbGV0IHBhY2thZ2VSZWxlYXNlXG4gICAgaWYgKCF2ZXJzaW9uIHx8IHZlcnNpb24gPT09IFwibGF0ZXN0XCIpIHtcbiAgICAgIHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHI6IFpULlBhY2thZ2VSZWxlYXNlKSA9PlxuICAgICAgICAgIHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLmlzX2xhdGVzdCxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgcGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgICAgIChwcjogWlQuUGFja2FnZVJlbGVhc2UpID0+XG4gICAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcGtnLnBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoIXBhY2thZ2VSZWxlYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihcbiAgICAgICAgYFBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmQgZm9yIHZlcnNpb246ICR7dmVyc2lvbiB8fCBcImxhdGVzdFwifWAsXG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgZmlsZVxuICAgIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgKHBmOiBaVC5QYWNrYWdlRmlsZSkgPT5cbiAgICAgICAgcGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQgJiZcbiAgICAgICAgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKHBmLmZpbGVfcGF0aCkgPT09XG4gICAgICAgICAgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKGZpbGVfcGF0aCksXG4gICAgKVxuXG4gICAgaWYgKCFwYWNrYWdlRmlsZSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYFBhY2thZ2UgZmlsZSBub3QgZm91bmQ6ICR7ZmlsZV9wYXRofWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhY2thZ2VGaWxlLnBhY2thZ2VfZmlsZV9pZFxuICB9XG5cbiAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJJbnZhbGlkIHBhY2thZ2UgZmlsZSBkZXNjcmlwdG9yXCIpXG59XG4iLCAiY29uc3QgUkVTVFJJQ1RFRF9ESVJTID0gW1wiL25vZGVfbW9kdWxlcy9cIiwgXCIvZGlzdC9cIiwgXCIvLmdpdC9cIl1cblxuLyoqXG4gKiBBIG5vcm1hbGl6ZWQgcHJvamVjdCBwYXRoIGFsd2F5cyBzdGFydHMgd2l0aCBcIi4vXCIgYW5kIG5ldmVyIGVuZHMgd2l0aCBhIHNsYXNoLlxuICogSXQgaGFzIG5vIGJhY2t3YXJkcyBzbGFzaGVzIGFuZCBubyBkb3VibGUgc2xhc2hlcy4gSXQgZG9lcyBub3QgZ28gdG8gcGFyZW50XG4gKiBkaXJlY3Rvcmllcy4gSXQgaXMgbm90IGEgZGlyZWN0b3J5IChtdXN0IGhhdmUgYSBmaWxlIGV4dGVuc2lvbilcbiAqXG4gKiBHT09EOlxuICogIC0gc3JjL2luZGV4LnRzXG4gKiAgLSBSRUFETUUubWRcbiAqXG4gKiBCQUQ6XG4gKiAtIC4vUkVBRE1FLm1kXG4gKiAtIC4vc3JjL2luZGV4LnRzXG4gKiAtIHNyY1xcaW5kZXgudHNcbiAqIC0gLi4vUkVBRE1FLm1kXG4gKiAtIC4vc3JjL1xuICogLSAuL3NyY1xuICpcbiAqIEFkZGl0aW9uYWxseSwgdGhyb3cgb24gZGlyZWN0b3JpZXMgdGhhdCBzaG91bGQgbmV2ZXIgYmUgaW5jbHVkZWQsIGUuZy5cbiAqIC0gbm9kZV9tb2R1bGVzXG4gKiAtIGRpc3RcbiAqIC0gLmdpdFxuICovXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoQW5kVmFsaWRhdGUgPSAocmF3UGF0aDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoKHJhd1BhdGgpXG5cbiAgaWYgKG5vcm1hbGl6ZWRQYXRoLmluY2x1ZGVzKFwiLi4vXCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJJbnZhbGlkIHByb2plY3QgZmlsZSBwYXRoLiBQYXJlbnQgZGlyZWN0b3JpZXMgYXJlIG5vdCBhbGxvd2VkLlwiLFxuICAgIClcbiAgfVxuXG4gIGlmIChSRVNUUklDVEVEX0RJUlMuc29tZSgoZGlyKSA9PiBub3JtYWxpemVkUGF0aC5pbmNsdWRlcyhkaXIpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBJbnZhbGlkIHByb2plY3QgZmlsZSBwYXRoLiBSZXN0cmljdGVkIGRpcmVjdG9yaWVzICgke1JFU1RSSUNURURfRElSUy5tYXAoXG4gICAgICAgIChyZCkgPT4gcmQuc2xpY2UoMSwgLTEpLFxuICAgICAgKS5qb2luKFwiLCBcIil9KSBhcmUgbm90IGFsbG93ZWQuYCxcbiAgICApXG4gIH1cblxuICBpZiAoIW5vcm1hbGl6ZWRQYXRoLmluY2x1ZGVzKFwiLlwiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBJbnZhbGlkIHByb2plY3QgZmlsZSBwYXRoLiBNdXN0IGhhdmUgYSBmaWxlIGV4dGVuc2lvbi4gR2l2ZW4gXCIke3Jhd1BhdGh9XCJgLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkUGF0aFxufVxuXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplUHJvamVjdEZpbGVQYXRoID0gKHJhd1BhdGg6IHN0cmluZykgPT4ge1xuICBsZXQgbm9ybWFsaXplZFBhdGggPSByYXdQYXRoLnRyaW0oKSAvLyBSZW1vdmUgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlXG4gIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGgucmVwbGFjZSgvXFwvKy9nLCBcIi9cIikgLy8gUmVwbGFjZSBtdWx0aXBsZSBjb25zZWN1dGl2ZSBzbGFzaGVzIHdpdGggYSBzaW5nbGUgc2xhc2hcbiAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aC5yZXBsYWNlKC9eXFwuXFwvLywgXCJcIikgLy8gUmVtb3ZlIGxlYWRpbmcgXCIuL1wiXG4gIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGgucmVwbGFjZSgvXFwvJC8sIFwiXCIpIC8vIFJlbW92ZSB0cmFpbGluZyBzbGFzaFxuICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpIC8vIFJlcGxhY2UgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkIHNsYXNoZXNcbiAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aC5yZXBsYWNlKC9eXFwvLywgXCJcIikgLy8gUmVtb3ZlIGxlYWRpbmcgXCIvXCJcblxuICByZXR1cm4gbm9ybWFsaXplZFBhdGhcbn1cbiIsICJpbXBvcnQgeyBnZXRQYWNrYWdlRmlsZUlkRnJvbUZpbGVEZXNjcmlwdG9yIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX2ZpbGUvZ2V0LXBhY2thZ2UtZmlsZS1pZC1mcm9tLWZpbGUtZGVzY3JpcHRvclwiXG5pbXBvcnQgeyBmaW5kUGFja2FnZVJlbGVhc2VJZCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcGFja2FnZV9yZWxlYXNlL2ZpbmQtcGFja2FnZS1yZWxlYXNlLWlkXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5jb25zdCByb3V0ZVNwZWMgPSB7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBxdWVyeVBhcmFtczogelxuICAgIC5vYmplY3Qoe1xuICAgICAgcGFja2FnZV9maWxlX2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLFxuICAgICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApLFxuICBqc29uUmVzcG9uc2U6IHouYW55KCksIC8vIFVzaW5nIGFueSBiZWNhdXNlIHdlJ3JlIHJldHVybmluZyBiaW5hcnkgZGF0YVxufSBhcyBjb25zdFxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHJvdXRlU3BlYykoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGxldCBwYWNrYWdlRmlsZUlkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgY29uc3QgcGFyYW1zID0gcmVxLnF1ZXJ5XG5cbiAgaWYgKFwicGFja2FnZV9maWxlX2lkXCIgaW4gcGFyYW1zKSB7XG4gICAgcGFja2FnZUZpbGVJZCA9IHBhcmFtcy5wYWNrYWdlX2ZpbGVfaWRcbiAgfSBlbHNlIGlmIChcInBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb25cIiBpbiBwYXJhbXMpIHtcbiAgICBjb25zdCB7IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sIGZpbGVfcGF0aCB9ID0gcGFyYW1zXG5cbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZUlkID0gYXdhaXQgZmluZFBhY2thZ2VSZWxlYXNlSWQoXG4gICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLFxuICAgICAgY3R4LFxuICAgIClcblxuICAgIGlmICghcGFja2FnZVJlbGVhc2VJZCkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBwYWNrYWdlRmlsZUlkID0gYXdhaXQgZ2V0UGFja2FnZUZpbGVJZEZyb21GaWxlRGVzY3JpcHRvcihcbiAgICAgICAge1xuICAgICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogcGFja2FnZVJlbGVhc2VJZCxcbiAgICAgICAgICBmaWxlX3BhdGg6IGZpbGVfcGF0aCxcbiAgICAgICAgfSxcbiAgICAgICAgY3R4LFxuICAgICAgKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcIm5vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgaWYgKCFwYWNrYWdlRmlsZUlkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYmFkX3JlcXVlc3RcIixcbiAgICAgIG1lc3NhZ2U6IFwiQ291bGQgbm90IGRldGVybWluZSBwYWNrYWdlX2ZpbGVfaWRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcGFja2FnZUZpbGUgPSBjdHguZGIucGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKHBmKSA9PiBwZi5wYWNrYWdlX2ZpbGVfaWQgPT09IHBhY2thZ2VGaWxlSWQsXG4gIClcblxuICBpZiAoIXBhY2thZ2VGaWxlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgY29udGVudFR5cGUgPSBcInRleHQvcGxhaW5cIlxuXG4gIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgXCJDb250ZW50LVR5cGVcIjogY29udGVudFR5cGUsXG4gICAgXCJDb250ZW50LURpc3Bvc2l0aW9uXCI6IGBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiR7cGFja2FnZUZpbGUuZmlsZV9wYXRoLnNwbGl0KFwiL1wiKS5wb3AoKX1cImAsXG4gICAgXCJDYWNoZS1Db250cm9sXCI6IFwicHVibGljLCBtYXgtYWdlPTg2NDAwLCBzdGFsZS13aGlsZS1yZXZhbGlkYXRlPTYwNDgwMFwiLFxuICAgIEV4cGlyZXM6IG5ldyBEYXRlKERhdGUubm93KCkgKyA4NjQwMDAwMCkudG9VVENTdHJpbmcoKSxcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UocGFja2FnZUZpbGUuY29udGVudF90ZXh0LCB7IGhlYWRlcnMgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgKiBhcyBaVCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBnZXRQYWNrYWdlRmlsZUlkRnJvbUZpbGVEZXNjcmlwdG9yIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wYWNrYWdlX2ZpbGUvZ2V0LXBhY2thZ2UtZmlsZS1pZC1mcm9tLWZpbGUtZGVzY3JpcHRvclwiXG5cbmNvbnN0IHJvdXRlU3BlYyA9IHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2ZpbGVfaWQ6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogei5zdHJpbmcoKSxcbiAgICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgICAgfSksXG4gICAgKVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgICAgICAgdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICBmaWxlX3BhdGg6IHouc3RyaW5nKCksXG4gICAgICB9KSxcbiAgICApXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX25hbWU6IHouc3RyaW5nKCksXG4gICAgICAgIHZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgICAgfSksXG4gICAgKVxuICAgIC5vcihcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbjogei5zdHJpbmcoKSxcbiAgICAgICAgZmlsZV9wYXRoOiB6LnN0cmluZygpLFxuICAgICAgfSksXG4gICAgKSxcbiAganNvblJlc3BvbnNlOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBvazogei5ib29sZWFuKCksXG4gICAgICBwYWNrYWdlX2ZpbGU6IFpULnBhY2thZ2VGaWxlU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAub3IoWlQuZXJyb3JSZXNwb25zZVNjaGVtYSksXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMocm91dGVTcGVjKShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgcGFja2FnZUZpbGVJZCA9IGF3YWl0IGdldFBhY2thZ2VGaWxlSWRGcm9tRmlsZURlc2NyaXB0b3IoXG4gICAgcmVxLmpzb25Cb2R5LFxuICAgIGN0eCxcbiAgKVxuXG4gIGNvbnN0IHBhY2thZ2VGaWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChwZjogWlQuUGFja2FnZUZpbGUpID0+IHBmLnBhY2thZ2VfZmlsZV9pZCA9PT0gcGFja2FnZUZpbGVJZCxcbiAgKVxuXG4gIGlmICghcGFja2FnZUZpbGUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX2ZpbGVfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgZmlsZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX2ZpbGU6IHtcbiAgICAgIC4uLnBhY2thZ2VGaWxlLFxuICAgICAgY3JlYXRlZF9hdDogcGFja2FnZUZpbGUuY3JlYXRlZF9hdC50b1N0cmluZygpLFxuICAgIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0ICogYXMgWlQgZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgZmluZFBhY2thZ2VSZWxlYXNlSWQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL3BhY2thZ2VfcmVsZWFzZS9maW5kLXBhY2thZ2UtcmVsZWFzZS1pZFwiXG5cbmNvbnN0IHJvdXRlU3BlYyA9IHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAub3IoXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKSxcbiAgICAgICAgdXNlX2xhdGVzdF92ZXJzaW9uOiB6LmxpdGVyYWwodHJ1ZSksXG4gICAgICB9KSxcbiAgICApXG4gICAgLm9yKFxuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLFxuICAgICAgfSksXG4gICAgKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2VfZmlsZXM6IHouYXJyYXkoWlQucGFja2FnZUZpbGVTY2hlbWEpLFxuICB9KSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyhyb3V0ZVNwZWMpKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCBwYWNrYWdlUmVsZWFzZUlkID0gYXdhaXQgZmluZFBhY2thZ2VSZWxlYXNlSWQocmVxLmpzb25Cb2R5LCBjdHgpXG5cbiAgaWYgKCFwYWNrYWdlUmVsZWFzZUlkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIE9taXQgdGhlIGNvbnRlbnRfdGV4dCBmaWVsZFxuICBjb25zdCBwYWNrYWdlRmlsZXMgPSBjdHguZGIucGFja2FnZUZpbGVzXG4gICAgLmZpbHRlcigoZmlsZSkgPT4gZmlsZS5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IHBhY2thZ2VSZWxlYXNlSWQpXG4gICAgLm1hcCgoeyBjb250ZW50X3RleHQsIC4uLmZpbGUgfSkgPT4gKHtcbiAgICAgIC4uLmZpbGUsXG4gICAgfSkpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX2ZpbGVzOiBwYWNrYWdlRmlsZXMsXG4gIH0pXG59KVxuIiwgImltcG9ydCAqIGFzIFpUIGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB0eXBlIHsgRGJDbGllbnQgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL2RiLWNsaWVudFwiXG5cbmV4cG9ydCBjb25zdCBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZSA9IChcbiAgaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlOiBaVC5QYWNrYWdlUmVsZWFzZSxcbiAgb3B0aW9uczoge1xuICAgIGluY2x1ZGVfbG9ncz86IGJvb2xlYW5cbiAgICBpbmNsdWRlX2FpX3Jldmlldz86IGJvb2xlYW5cbiAgICBkYj86IERiQ2xpZW50XG4gIH0gPSB7XG4gICAgaW5jbHVkZV9sb2dzOiBmYWxzZSxcbiAgICBpbmNsdWRlX2FpX3JldmlldzogZmFsc2UsXG4gIH0sXG4pOiBaVC5QYWNrYWdlUmVsZWFzZSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAuLi5pbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UsXG4gICAgY3JlYXRlZF9hdDogaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLmNyZWF0ZWRfYXQsXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2Vycm9yX2xhc3RfdXBkYXRlZF9hdDpcbiAgICAgIGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5jaXJjdWl0X2pzb25fYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0LFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcjogaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLmNpcmN1aXRfanNvbl9idWlsZF9lcnJvcixcbiAgICB0cmFuc3BpbGF0aW9uX2xvZ3M6IG9wdGlvbnMuaW5jbHVkZV9sb2dzXG4gICAgICA/IGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS50cmFuc3BpbGF0aW9uX2xvZ3NcbiAgICAgIDogW10sXG4gICAgY2lyY3VpdF9qc29uX2J1aWxkX2xvZ3M6IG9wdGlvbnMuaW5jbHVkZV9sb2dzXG4gICAgICA/IGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5jaXJjdWl0X2pzb25fYnVpbGRfbG9nc1xuICAgICAgOiBbXSxcbiAgICBpc19wcl9wcmV2aWV3OiBCb29sZWFuKGludGVybmFsX3BhY2thZ2VfcmVsZWFzZS5pc19wcl9wcmV2aWV3KSxcbiAgICBnaXRodWJfcHJfbnVtYmVyOiBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuZ2l0aHViX3ByX251bWJlcixcbiAgICBicmFuY2hfbmFtZTogaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLmJyYW5jaF9uYW1lLFxuICAgIGNvbW1pdF9tZXNzYWdlOiBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuY29tbWl0X21lc3NhZ2UgPz8gbnVsbCxcbiAgICBjb21taXRfYXV0aG9yOiBpbnRlcm5hbF9wYWNrYWdlX3JlbGVhc2UuY29tbWl0X2F1dGhvciA/PyBudWxsLFxuICB9XG5cbiAgaWYgKG9wdGlvbnMuaW5jbHVkZV9haV9yZXZpZXcgJiYgb3B0aW9ucy5kYikge1xuICAgIGNvbnN0IHJldmlld3MgPSBvcHRpb25zLmRiXG4gICAgICAubGlzdEFpUmV2aWV3cygpXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAocikgPT5cbiAgICAgICAgICByLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gaW50ZXJuYWxfcGFja2FnZV9yZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIClcbiAgICAgIC5zb3J0KFxuICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICBuZXcgRGF0ZShiLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEuY3JlYXRlZF9hdCkuZ2V0VGltZSgpLFxuICAgICAgKVxuXG4gICAgaWYgKHJldmlld3MubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbGF0ZXN0ID0gcmV2aWV3c1swXVxuICAgICAgcmVzdWx0LmFpX3Jldmlld190ZXh0ID0gbGF0ZXN0LmFpX3Jldmlld190ZXh0ID8/IG51bGxcbiAgICAgIHJlc3VsdC5haV9yZXZpZXdfc3RhcnRlZF9hdCA9IGxhdGVzdC5zdGFydF9wcm9jZXNzaW5nX2F0ID8/IG51bGxcbiAgICAgIHJlc3VsdC5haV9yZXZpZXdfY29tcGxldGVkX2F0ID0gbGF0ZXN0LmZpbmlzaGVkX3Byb2Nlc3NpbmdfYXQgPz8gbnVsbFxuICAgICAgcmVzdWx0LmFpX3Jldmlld19lcnJvciA9IGxhdGVzdC5wcm9jZXNzaW5nX2Vycm9yID8/IG51bGxcbiAgICB9XG4gIH1cblxuICAvLyBPbmx5IGluY2x1ZGUgQUkgcmV2aWV3IGZpZWxkcyB3aGVuIGluY2x1ZGVfYWlfcmV2aWV3IGlzIHRydWVcbiAgaWYgKCFvcHRpb25zLmluY2x1ZGVfYWlfcmV2aWV3KSB7XG4gICAgZGVsZXRlIHJlc3VsdC5haV9yZXZpZXdfdGV4dFxuICAgIGRlbGV0ZSByZXN1bHQuYWlfcmV2aWV3X3N0YXJ0ZWRfYXRcbiAgICBkZWxldGUgcmVzdWx0LmFpX3Jldmlld19jb21wbGV0ZWRfYXRcbiAgICBkZWxldGUgcmVzdWx0LmFpX3Jldmlld19lcnJvclxuICAgIGRlbGV0ZSByZXN1bHQuYWlfcmV2aWV3X2xvZ3NcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiIsICJpbXBvcnQgeyBwYWNrYWdlUmVsZWFzZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlLXJlbGVhc2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc19sYXRlc3Q6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgY29tbWl0X3NoYTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX3JlbGVhc2U6IHBhY2thZ2VSZWxlYXNlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBsZXQge1xuICAgIHBhY2thZ2VfaWQsXG4gICAgcGFja2FnZV9uYW1lLFxuICAgIGlzX2xhdGVzdCA9IHRydWUsXG4gICAgdmVyc2lvbixcbiAgICBjb21taXRfc2hhLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gIH0gPSByZXEuanNvbkJvZHlcblxuICBpZiAocGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiAmJiAhcGFja2FnZV9pZCkge1xuICAgIGNvbnN0IFtwYWNrYWdlTmFtZSwgcGFyc2VkVmVyc2lvbl0gPSBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLnNwbGl0KFwiQFwiKVxuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IHBhY2thZ2VOYW1lKVxuXG4gICAgaWYgKCFwa2cpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogYFBhY2thZ2Ugbm90IGZvdW5kOiAke3BhY2thZ2VOYW1lfWAsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHBhY2thZ2VfaWQgPSBwa2cucGFja2FnZV9pZFxuICAgIHZlcnNpb24gPSBwYXJzZWRWZXJzaW9uXG4gIH1cblxuICBpZiAoIXBhY2thZ2VfaWQgJiYgcGFja2FnZV9uYW1lKSB7XG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gcGFja2FnZV9uYW1lKVxuICAgIGlmICghcGtnKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IGBQYWNrYWdlIG5vdCBmb3VuZDogJHtwYWNrYWdlX25hbWV9YCxcbiAgICAgIH0pXG4gICAgfVxuICAgIHBhY2thZ2VfaWQgPSBwa2cucGFja2FnZV9pZFxuICB9XG5cbiAgaWYgKCFwYWNrYWdlX2lkIHx8ICF2ZXJzaW9uKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwibWlzc2luZ19vcHRpb25zXCIsXG4gICAgICBtZXNzYWdlOiBcInBhY2thZ2VfaWQgb3IgcGFja2FnZV9uYW1lIGFuZCB2ZXJzaW9uIGFyZSByZXF1aXJlZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB2ZXJzaW9uIGFscmVhZHkgZXhpc3RzXG4gIGNvbnN0IGV4aXN0aW5nUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQgJiYgcHIudmVyc2lvbiA9PT0gdmVyc2lvbixcbiAgKVxuXG4gIGlmIChleGlzdGluZ1JlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJ2ZXJzaW9uX2FscmVhZHlfZXhpc3RzXCIsXG4gICAgICBtZXNzYWdlOiBgVmVyc2lvbiAke3ZlcnNpb259IGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIHBhY2thZ2VgLFxuICAgIH0pXG4gIH1cblxuICAvLyBVcGRhdGUgcHJldmlvdXMgbGF0ZXN0IGlmIG5lZWRlZFxuICBpZiAoaXNfbGF0ZXN0KSB7XG4gICAgY3R4LmRiLnBhY2thZ2VSZWxlYXNlc1xuICAgICAgLmZpbHRlcigocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQgJiYgcHIuaXNfbGF0ZXN0KVxuICAgICAgLmZvckVhY2goKHByKSA9PiAocHIuaXNfbGF0ZXN0ID0gZmFsc2UpKVxuICB9XG5cbiAgY29uc3QgbmV3UGFja2FnZVJlbGVhc2UgPSBjdHguZGIuYWRkUGFja2FnZVJlbGVhc2Uoe1xuICAgIHBhY2thZ2VfaWQsXG4gICAgaXNfbGF0ZXN0LFxuICAgIHZlcnNpb24sXG4gICAgaXNfbG9ja2VkOiBmYWxzZSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgY29tbWl0X3NoYTogY29tbWl0X3NoYSA/PyBudWxsLFxuICAgIGNpcmN1aXRfanNvbl9idWlsZF9lcnJvcjogbnVsbCxcbiAgICBjaXJjdWl0X2pzb25fYnVpbGRfZXJyb3JfbGFzdF91cGRhdGVkX2F0OiBudWxsLFxuICAgIC8vIFNldHRpbmcgdGhlIHRyYW5zcGlsZWQgYXMgdHJ1ZSBvbiBjcmVhdGlvblxuICAgIGhhc190cmFuc3BpbGVkOiB0cnVlLFxuICAgIHRyYW5zcGlsYXRpb25fZXJyb3I6IG51bGwsXG4gIH0pXG5cbiAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3MgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCBpZiB0aGlzIGlzIHRoZSBsYXRlc3QgcmVsZWFzZVxuICBpZiAoaXNfbGF0ZXN0KSB7XG4gICAgY3R4LmRiLnVwZGF0ZVBhY2thZ2UocGFja2FnZV9pZCwge1xuICAgICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgbGF0ZXN0X3ZlcnNpb246IHZlcnNpb24sXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZV9yZWxlYXNlOiBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZShuZXdQYWNrYWdlUmVsZWFzZSwgeyBkYjogY3R4LmRiIH0pLFxuICB9KVxufSlcbiIsICJpbXBvcnQgKiBhcyB6dCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlLXJlbGVhc2VcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgaW5jbHVkZV9sb2dzOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGluY2x1ZGVfYWlfcmV2aWV3OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICB9KSxcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcGFja2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX2xhdGVzdDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX3JlbGVhc2U6IHp0LnBhY2thZ2VSZWxlYXNlU2NoZW1hLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7XG4gICAgcGFja2FnZV9yZWxlYXNlX2lkLFxuICAgIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24sXG4gICAgcGFja2FnZV9uYW1lLFxuICAgIHBhY2thZ2VfaWQsXG4gICAgaXNfbGF0ZXN0LFxuICB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgLy8gSGFuZGxlIHBhY2thZ2VfbmFtZSB3aXRoIGlzX2xhdGVzdFxuICBpZiAocGFja2FnZV9uYW1lICYmIGlzX2xhdGVzdCA9PT0gdHJ1ZSkge1xuICAgIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKCh4KSA9PiB4Lm5hbWUgPT09IHBhY2thZ2VfbmFtZSlcblxuICAgIGlmICghcGtnKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gU29ydCByZWxlYXNlcyBieSB2ZXJzaW9uIHRvIGZpbmQgdGhlIGxhdGVzdCBvbmVcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZXMgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4LnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBuZXcgRGF0ZShiLmNyZWF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEuY3JlYXRlZF9hdCkuZ2V0VGltZSgpXG4gICAgICAgIClcbiAgICAgIH0pXG5cbiAgICBpZiAocGFja2FnZVJlbGVhc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiTm8gcmVsZWFzZXMgZm91bmQgZm9yIHRoaXMgcGFja2FnZVwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgb2s6IHRydWUsXG4gICAgICBwYWNrYWdlX3JlbGVhc2U6IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlKHBhY2thZ2VSZWxlYXNlc1swXSwge1xuICAgICAgICBpbmNsdWRlX2FpX3JldmlldzogcmVxLmNvbW1vblBhcmFtcz8uaW5jbHVkZV9haV9yZXZpZXcsXG4gICAgICAgIGRiOiBjdHguZGIsXG4gICAgICB9KSxcbiAgICB9KVxuICB9XG5cbiAgLy8gSGFuZGxlIHBhY2thZ2VfaWQgd2l0aCBpc19sYXRlc3RcbiAgaWYgKHBhY2thZ2VfaWQgJiYgaXNfbGF0ZXN0ID09PSB0cnVlKSB7XG4gICAgLy8gU29ydCByZWxlYXNlcyBieSB2ZXJzaW9uIHRvIGZpbmQgdGhlIGxhdGVzdCBvbmVcbiAgICBjb25zdCBwYWNrYWdlUmVsZWFzZXMgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4LnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQpXG4gICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKClcbiAgICAgICAgKVxuICAgICAgfSlcblxuICAgIGlmIChwYWNrYWdlUmVsZWFzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJObyByZWxlYXNlcyBmb3VuZCBmb3IgdGhpcyBwYWNrYWdlXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZTogcHVibGljTWFwUGFja2FnZVJlbGVhc2UocGFja2FnZVJlbGVhc2VzWzBdLCB7XG4gICAgICAgIGluY2x1ZGVfYWlfcmV2aWV3OiByZXEuY29tbW9uUGFyYW1zPy5pbmNsdWRlX2FpX3JldmlldyxcbiAgICAgICAgZGI6IGN0eC5kYixcbiAgICAgIH0pLFxuICAgIH0pXG4gIH1cblxuICBpZiAocGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbiAmJiAhcGFja2FnZV9yZWxlYXNlX2lkKSB7XG4gICAgY29uc3QgW3BhY2thZ2VOYW1lLCBwYXJzZWRWZXJzaW9uXSA9IHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24uc3BsaXQoXCJAXCIpXG4gICAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHgpID0+IHgubmFtZSA9PT0gcGFja2FnZU5hbWUpXG4gICAgY29uc3QgcGtnUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHgudmVyc2lvbiA9PSBwYXJzZWRWZXJzaW9uICYmIHgucGFja2FnZV9pZCA9PSBwa2c/LnBhY2thZ2VfaWRcbiAgICB9KVxuXG4gICAgaWYgKCFwa2dSZWxlYXNlKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBhY2thZ2VfcmVsZWFzZTogcHVibGljTWFwUGFja2FnZVJlbGVhc2UocGtnUmVsZWFzZSwge1xuICAgICAgICBpbmNsdWRlX2FpX3JldmlldzogcmVxLmNvbW1vblBhcmFtcz8uaW5jbHVkZV9haV9yZXZpZXcsXG4gICAgICAgIGRiOiBjdHguZGIsXG4gICAgICB9KSxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgZm91bmRSZWxlYXNlID1cbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQgJiYgY3R4LmRiLmdldFBhY2thZ2VSZWxlYXNlQnlJZChwYWNrYWdlX3JlbGVhc2VfaWQpXG5cbiAgaWYgKCFmb3VuZFJlbGVhc2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX3JlbGVhc2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2UgcmVsZWFzZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX3JlbGVhc2U6IHB1YmxpY01hcFBhY2thZ2VSZWxlYXNlKGZvdW5kUmVsZWFzZSwge1xuICAgICAgaW5jbHVkZV9sb2dzOiByZXEuY29tbW9uUGFyYW1zPy5pbmNsdWRlX2xvZ3MsXG4gICAgICBpbmNsdWRlX2FpX3JldmlldzogcmVxLmNvbW1vblBhcmFtcz8uaW5jbHVkZV9haV9yZXZpZXcsXG4gICAgICBkYjogY3R4LmRiLFxuICAgIH0pLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBwYWNrYWdlUmVsZWFzZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlUmVsZWFzZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlLXJlbGVhc2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIGluY2x1ZGVfYWlfcmV2aWV3OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlZmF1bHQoZmFsc2UpLFxuICB9KSxcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIHBhY2thZ2VfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgaXNfbGF0ZXN0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgICAgdmVyc2lvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgY29tbWl0X3NoYTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLnJlZmluZSgoeyBwYWNrYWdlX2lkLCBwYWNrYWdlX25hbWUgfSkgPT4ge1xuICAgICAgaWYgKHBhY2thZ2VfaWQgJiYgcGFja2FnZV9uYW1lKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LCBcInBhY2thZ2VfaWQgYW5kIHBhY2thZ2VfbmFtZSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlXCIpXG4gICAgLnJlZmluZSgoeyBwYWNrYWdlX2lkLCBwYWNrYWdlX25hbWUgfSkgPT4ge1xuICAgICAgaWYgKCFwYWNrYWdlX2lkICYmICFwYWNrYWdlX25hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sIFwicGFja2FnZV9pZCBvciBwYWNrYWdlX25hbWUgaXMgcmVxdWlyZWRcIiksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlX3JlbGVhc2VzOiB6LmFycmF5KHBhY2thZ2VSZWxlYXNlU2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX2lkLCBwYWNrYWdlX25hbWUsIGlzX2xhdGVzdCwgdmVyc2lvbiwgY29tbWl0X3NoYSB9ID1cbiAgICByZXEuanNvbkJvZHlcblxuICBpZiAoIXBhY2thZ2VfaWQgJiYgIXBhY2thZ2VfbmFtZSAmJiAhaXNfbGF0ZXN0ICYmICF2ZXJzaW9uICYmICFjb21taXRfc2hhKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9xdWVyeVwiLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgXCJBdCBsZWFzdCBvbmUgb2YgcGFja2FnZV9pZCwgcGFja2FnZV9uYW1lLCBpc19sYXRlc3QsIHZlcnNpb24gb3IgY29tbWl0X3NoYSBpcyByZXF1aXJlZFwiLFxuICAgIH0pXG4gIH1cblxuICBsZXQgcmVsZWFzZXMgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzXG5cbiAgLy8gQXBwbHkgZmlsdGVyc1xuICBpZiAocGFja2FnZV9pZCkge1xuICAgIHJlbGVhc2VzID0gcmVsZWFzZXMuZmlsdGVyKChwcikgPT4gcHIucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZClcbiAgfVxuXG4gIGlmIChwYWNrYWdlX25hbWUpIHtcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5uYW1lID09PSBwYWNrYWdlX25hbWUpXG4gICAgaWYgKHBrZykge1xuICAgICAgcmVsZWFzZXMgPSByZWxlYXNlcy5maWx0ZXIoKHByKSA9PiBwci5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZClcbiAgICB9IGVsc2Uge1xuICAgICAgcmVsZWFzZXMgPSBbXVxuICAgIH1cbiAgfVxuXG4gIGlmIChpc19sYXRlc3QgIT09IHVuZGVmaW5lZCkge1xuICAgIHJlbGVhc2VzID0gcmVsZWFzZXMuZmlsdGVyKChwcikgPT4gcHIuaXNfbGF0ZXN0ID09PSBpc19sYXRlc3QpXG4gIH1cblxuICBpZiAodmVyc2lvbikge1xuICAgIHJlbGVhc2VzID0gcmVsZWFzZXMuZmlsdGVyKChwcikgPT4gcHIudmVyc2lvbiA9PT0gdmVyc2lvbilcbiAgfVxuXG4gIGlmIChjb21taXRfc2hhKSB7XG4gICAgcmVsZWFzZXMgPSByZWxlYXNlcy5maWx0ZXIoKHByKSA9PiBwci5jb21taXRfc2hhID09PSBjb21taXRfc2hhKVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBwYWNrYWdlX3JlbGVhc2VzOiByZWxlYXNlcy5tYXAoKHByKSA9PlxuICAgICAgcHVibGljTWFwUGFja2FnZVJlbGVhc2UocHIsIHtcbiAgICAgICAgaW5jbHVkZV9haV9yZXZpZXc6IHJlcS5jb21tb25QYXJhbXM/LmluY2x1ZGVfYWlfcmV2aWV3LFxuICAgICAgICBkYjogY3R4LmRiLFxuICAgICAgfSksXG4gICAgKSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCBEZWJ1ZyBmcm9tIFwiZGVidWdcIlxuXG5jb25zdCBkZWJ1ZyA9IERlYnVnKFwiZmFrZS1zbmlwcGV0cy1hcGk6cmVidWlsZC1wYWNrYWdlXCIpXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCksXG4gICAgcmVidWlsZF90cmFuc3BpbGF0aW9uOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICAgIHJlYnVpbGRfY2lyY3VpdF9qc29uOiB6LmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfcmVsZWFzZV9pZCwgcmVidWlsZF90cmFuc3BpbGF0aW9uLCByZWJ1aWxkX2NpcmN1aXRfanNvbiB9ID1cbiAgICByZXEuanNvbkJvZHlcblxuICBkZWJ1ZyhcImpzb25Cb2R5XCIsIHJlcS5qc29uQm9keSlcbiAgLy8gR2V0IHRoZSBwYWNrYWdlIHJlbGVhc2UgaW5mbyBmb3IgbG9nZ2luZ1xuICBjb25zdCByZWxlYXNlID0gY3R4LmRiLmdldFBhY2thZ2VSZWxlYXNlQnlJZChwYWNrYWdlX3JlbGVhc2VfaWQpXG5cbiAgaWYgKCFyZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VJbmZvID0gY3R4LmRiLmdldFBhY2thZ2VCeUlkKHJlbGVhc2UucGFja2FnZV9pZClcblxuICBpZiAoIXBhY2thZ2VJbmZvKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKHBhY2thZ2VJbmZvLm93bmVyX29yZ19pZCAhPT0gY3R4LmF1dGgucGVyc29uYWxfb3JnX2lkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHJlYnVpbGQgdGhpcyBwYWNrYWdlIHJlbGVhc2VcIixcbiAgICB9KVxuICB9XG5cbiAgZGVidWcoXG4gICAgYFJlYnVpbGRpbmcgcGFja2FnZSByZWxlYXNlICR7cGFja2FnZV9yZWxlYXNlX2lkfSBmb3IgJHtwYWNrYWdlSW5mby5uYW1lfUAke3JlbGVhc2UudmVyc2lvbn1gLFxuICApXG5cbiAgLy8gVHJpZ2dlciB0cmFuc3BpbGF0aW9uIGlmIHJlcXVlc3RlZFxuICBpZiAocmVidWlsZF90cmFuc3BpbGF0aW9uKSB7XG4gICAgZGVidWcoXCJSZXNldHRpbmcgdHJhbnNwaWxhdGlvbiBzdGF0ZVwiKVxuICB9XG5cbiAgLy8gU2V0IGNpcmN1aXQgSlNPTiBidWlsZCBzdGF0ZSB0byBwZW5kaW5nIGZvciB3b3JrZXIgcGlja3VwIGlmIHJlcXVlc3RlZFxuICBpZiAocmVidWlsZF9jaXJjdWl0X2pzb24pIHtcbiAgICBkZWJ1ZyhcIlJlc2V0dGluZyBjaXJjdWl0IEpTT04gYnVpbGQgc3RhdGVcIilcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaXNfbG9ja2VkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGlzX2xhdGVzdDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBsaWNlbnNlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZnNfc2hhOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcmVhZHlfdG9fYnVpbGQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgYWlfcmV2aWV3X3JlcXVlc3RlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIHBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICBwYWNrYWdlX25hbWVfd2l0aF92ZXJzaW9uLFxuICAgIGlzX2xvY2tlZCxcbiAgICBpc19sYXRlc3QsXG4gICAgbGljZW5zZSxcbiAgICBmc19zaGEsXG4gICAgcmVhZHlfdG9fYnVpbGQsXG4gICAgYWlfcmV2aWV3X3JlcXVlc3RlZCxcbiAgfSA9IHJlcS5qc29uQm9keVxuICBsZXQgcmVsZWFzZUlkID0gcGFja2FnZV9yZWxlYXNlX2lkXG5cbiAgLy8gSGFuZGxlIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24gbG9va3VwXG4gIGlmICghcmVsZWFzZUlkICYmIHBhY2thZ2VfbmFtZV93aXRoX3ZlcnNpb24pIHtcbiAgICBjb25zdCBbcGFja2FnZU5hbWUsIHZlcnNpb25dID0gcGFja2FnZV9uYW1lX3dpdGhfdmVyc2lvbi5zcGxpdChcIkBcIilcbiAgICBjb25zdCBwa2cgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5uYW1lID09PSBwYWNrYWdlTmFtZSlcbiAgICBpZiAocGtnKSB7XG4gICAgICBjb25zdCByZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgICAgICAocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLnZlcnNpb24gPT09IHZlcnNpb24sXG4gICAgICApXG4gICAgICBpZiAocmVsZWFzZSkge1xuICAgICAgICByZWxlYXNlSWQgPSByZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICghcmVsZWFzZUlkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGRlbHRhID0ge1xuICAgIGlzX2xvY2tlZCxcbiAgICBpc19sYXRlc3QsXG4gICAgbGljZW5zZSxcbiAgICBmc19zaGEsXG4gICAgcmVhZHlfdG9fYnVpbGQsXG4gICAgYWlfcmV2aWV3X3JlcXVlc3RlZCxcbiAgfVxuICBpZiAoXG4gICAgT2JqZWN0LmtleXMoZGVsdGEpLmZpbHRlcihcbiAgICAgIChrKSA9PiBkZWx0YVtrIGFzIGtleW9mIHR5cGVvZiBkZWx0YV0gIT09IHVuZGVmaW5lZCxcbiAgICApLmxlbmd0aCA9PT0gMFxuICApIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJub19maWVsZHNfcHJvdmlkZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiTm8gZmllbGRzIHByb3ZpZGVkIHRvIHVwZGF0ZVwiLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCByZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwcikgPT4gcHIucGFja2FnZV9yZWxlYXNlX2lkID09PSByZWxlYXNlSWQsXG4gIClcbiAgaWYgKCFyZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9yZWxlYXNlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIHJlbGVhc2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENyZWF0ZSB1cGRhdGVkIHJlbGVhc2Ugb2JqZWN0XG4gIGNvbnN0IHVwZGF0ZWRSZWxlYXNlID0ge1xuICAgIC4uLnJlbGVhc2UsXG4gICAgLi4uKGlzX2xvY2tlZCAhPT0gdW5kZWZpbmVkICYmIHsgaXNfbG9ja2VkIH0pLFxuICAgIC4uLihpc19sYXRlc3QgIT09IHVuZGVmaW5lZCAmJiB7IGlzX2xhdGVzdCB9KSxcbiAgICAuLi4obGljZW5zZSAhPT0gdW5kZWZpbmVkICYmIHsgbGljZW5zZSB9KSxcbiAgICAuLi4oZnNfc2hhICE9PSB1bmRlZmluZWQgJiYgeyBmc19zaGEgfSksXG4gICAgLi4uKHJlYWR5X3RvX2J1aWxkICE9PSB1bmRlZmluZWQgJiYgeyByZWFkeV90b19idWlsZCB9KSxcbiAgICAuLi4oYWlfcmV2aWV3X3JlcXVlc3RlZCAhPT0gdW5kZWZpbmVkICYmIHsgYWlfcmV2aWV3X3JlcXVlc3RlZCB9KSxcbiAgICAuLi4oYWlfcmV2aWV3X3JlcXVlc3RlZCA9PT0gdHJ1ZSAmJiB7XG4gICAgICBhaV9yZXZpZXdfdGV4dDogXCJQbGFjZWhvbGRlciBBSSBSZXZpZXcgVGV4dFwiLFxuICAgIH0pLFxuICB9XG5cbiAgLy8gSGFuZGxlIGlzX2xhdGVzdCB1cGRhdGVzIGF0b21pY2FsbHlcbiAgaWYgKGlzX2xhdGVzdCAhPT0gdW5kZWZpbmVkICYmIGlzX2xhdGVzdCkge1xuICAgIC8vIEdldCBhbGwgcmVsZWFzZXMgZm9yIHRoaXMgcGFja2FnZSB0aGF0IGFyZSBjdXJyZW50bHkgbWFya2VkIGFzIGxhdGVzdFxuICAgIGNvbnN0IG90aGVyTGF0ZXN0UmVsZWFzZXMgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbHRlcihcbiAgICAgIChwcikgPT5cbiAgICAgICAgcHIucGFja2FnZV9pZCA9PT0gcmVsZWFzZS5wYWNrYWdlX2lkICYmXG4gICAgICAgIHByLnBhY2thZ2VfcmVsZWFzZV9pZCAhPT0gcmVsZWFzZUlkICYmXG4gICAgICAgIHByLmlzX2xhdGVzdCxcbiAgICApXG5cbiAgICAvLyBVcGRhdGUgYWxsIHJlbGVhc2VzIGluIGEgc2luZ2xlIG9wZXJhdGlvblxuICAgIGZvciAoY29uc3QgbGF0ZXN0UmVsZWFzZSBvZiBvdGhlckxhdGVzdFJlbGVhc2VzKSB7XG4gICAgICBjdHguZGIudXBkYXRlUGFja2FnZVJlbGVhc2Uoe1xuICAgICAgICAuLi5sYXRlc3RSZWxlYXNlLFxuICAgICAgICBpc19sYXRlc3Q6IGZhbHNlLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIHRhcmdldCByZWxlYXNlXG4gIGN0eC5kYi51cGRhdGVQYWNrYWdlUmVsZWFzZSh1cGRhdGVkUmVsZWFzZSlcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKHoub2JqZWN0KHsgbmFtZTogei5zdHJpbmcoKSB9KSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHBhY2thZ2VJZDogc3RyaW5nXG5cbiAgLy8gR2V0IHBhY2thZ2UgSUQgZWl0aGVyIGRpcmVjdGx5IG9yIGJ5IG5hbWVcbiAgaWYgKFwicGFja2FnZV9pZFwiIGluIHJlcS5qc29uQm9keSkge1xuICAgIGNvbnN0IGJvZHkgPSByZXEuanNvbkJvZHlcbiAgICBwYWNrYWdlSWQgPSBib2R5LnBhY2thZ2VfaWRcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiBuYW1lIGlzIHByb3ZpZGVkLCBsb29rIHVwIHRoZSBwYWNrYWdlX2lkXG4gICAgY29uc3QgYm9keSA9IHJlcS5qc29uQm9keVxuICAgIGNvbnN0IHBhY2thZ2VEYXRhID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLm5hbWUgPT09IGJvZHkubmFtZSlcblxuICAgIGlmICghcGFja2FnZURhdGEpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBwYWNrYWdlSWQgPSBwYWNrYWdlRGF0YS5wYWNrYWdlX2lkXG4gIH1cblxuICAvLyBDaGVjayBpZiBwYWNrYWdlIGV4aXN0cyAoZXh0cmEgY2hlY2sgZm9yIElELWJhc2VkIGxvb2t1cClcbiAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkKVxuXG4gIGlmICghcGtnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBzdGFycmVkXG4gIGNvbnN0IGV4aXN0aW5nID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maW5kKFxuICAgIChhcCkgPT5cbiAgICAgIGFwLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICApXG5cbiAgaWYgKGV4aXN0aW5nPy5pc19zdGFycmVkKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiYWxyZWFkeV9zdGFycmVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIGFscmVhZHkgc3RhcnJlZCB0aGlzIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gVXBkYXRlIHRoZSBwYWNrYWdlJ3Mgc3RhciBjb3VudFxuICBwa2cuc3Rhcl9jb3VudCA9IChwa2cuc3Rhcl9jb3VudCB8fCAwKSArIDFcblxuICBpZiAoZXhpc3RpbmcpIHtcbiAgICAvLyBJZiByZWNvcmQgZXhpc3RzIGJ1dCBpc19zdGFycmVkIGlzIGZhbHNlLCB1cGRhdGUgdG8gaXNfc3RhcnJlZD10cnVlXG4gICAgZXhpc3RpbmcuaXNfc3RhcnJlZCA9IHRydWVcbiAgICBleGlzdGluZy51cGRhdGVkX2F0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gIH0gZWxzZSB7XG4gICAgLy8gQWRkIHN0YXIgYnkgY3JlYXRpbmcgYSBuZXcgYWNjb3VudF9wYWNrYWdlIHJlY29yZFxuICAgIGNvbnN0IG5ld1RpbWVzdGFtcCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgIGNvbnN0IG5ld0FjY291bnRQYWNrYWdlID0ge1xuICAgICAgYWNjb3VudF9wYWNrYWdlX2lkOiBgYXBfJHtEYXRlLm5vdygpfWAsXG4gICAgICBhY2NvdW50X2lkOiBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgcGFja2FnZV9pZDogcGFja2FnZUlkLFxuICAgICAgaXNfc3RhcnJlZDogdHJ1ZSxcbiAgICAgIGNyZWF0ZWRfYXQ6IG5ld1RpbWVzdGFtcCxcbiAgICAgIHVwZGF0ZWRfYXQ6IG5ld1RpbWVzdGFtcCxcbiAgICB9XG4gICAgY3R4LmRiLmFkZEFjY291bnRQYWNrYWdlKG5ld0FjY291bnRQYWNrYWdlKVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHR5cGUgKiBhcyB6dCBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBjb25zdCBwdWJsaWNNYXBQYWNrYWdlID0gKGludGVybmFsUGFja2FnZToge1xuICBwYWNrYWdlX2lkOiBzdHJpbmdcbiAgY3JlYXRvcl9hY2NvdW50X2lkOiBzdHJpbmdcbiAgb3duZXJfb3JnX2lkOiBzdHJpbmdcbiAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiBzdHJpbmcgfCBudWxsXG4gIGlzX3NvdXJjZV9mcm9tX2dpdGh1YjogYm9vbGVhblxuICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbFxuICBsYXRlc3RfdmVyc2lvbj86IHN0cmluZyB8IG51bGxcbiAgbGF0ZXN0X2xpY2Vuc2U/OiBzdHJpbmcgfCBudWxsXG4gIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ/OiBzdHJpbmcgfCBudWxsXG4gIHN0YXJfY291bnQ/OiBudW1iZXIgfCBudWxsXG4gIG5hbWU6IHN0cmluZ1xuICB3ZWJzaXRlOiBzdHJpbmcgfCBudWxsXG4gIHVuc2NvcGVkX25hbWU6IHN0cmluZ1xuICB1cGRhdGVkX2F0OiBzdHJpbmdcbiAgY3JlYXRlZF9hdDogc3RyaW5nXG4gIGFpX2Rlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsXG4gIGFpX3VzYWdlX2luc3RydWN0aW9uczogc3RyaW5nIHwgbnVsbFxuICBpc19zbmlwcGV0OiBib29sZWFuXG4gIGlzX2JvYXJkOiBib29sZWFuXG4gIGlzX3BhY2thZ2U6IGJvb2xlYW5cbiAgaXNfbW9kZWw6IGJvb2xlYW5cbiAgaXNfZm9vdHByaW50OiBib29sZWFuXG4gIGlzX3ByaXZhdGU6IGJvb2xlYW4gfCBudWxsXG4gIGlzX3VubGlzdGVkOiBib29sZWFuIHwgbnVsbFxuICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2ZzX3NoYTogc3RyaW5nIHwgbnVsbFxuICBnaXRodWJfcmVwb19mdWxsX25hbWU/OiBzdHJpbmcgfCBudWxsXG4gIGFsbG93X3ByX3ByZXZpZXdzPzogYm9vbGVhblxufSk6IHp0LlBhY2thZ2UgPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLmludGVybmFsUGFja2FnZSxcbiAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOlxuICAgICAgaW50ZXJuYWxQYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgPz8gbnVsbCxcbiAgICBsYXRlc3RfdmVyc2lvbjogaW50ZXJuYWxQYWNrYWdlLmxhdGVzdF92ZXJzaW9uID8/IG51bGwsXG4gICAgbGljZW5zZTogaW50ZXJuYWxQYWNrYWdlLmxhdGVzdF9saWNlbnNlID8/IG51bGwsXG4gICAgd2Vic2l0ZTogaW50ZXJuYWxQYWNrYWdlLndlYnNpdGUgPz8gbnVsbCxcbiAgICBzdGFyX2NvdW50OiBpbnRlcm5hbFBhY2thZ2Uuc3Rhcl9jb3VudCA/PyAwLFxuICAgIGNyZWF0ZWRfYXQ6IGludGVybmFsUGFja2FnZS5jcmVhdGVkX2F0LFxuICAgIHVwZGF0ZWRfYXQ6IGludGVybmFsUGFja2FnZS51cGRhdGVkX2F0LFxuICAgIGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZTogaW50ZXJuYWxQYWNrYWdlLmdpdGh1Yl9yZXBvX2Z1bGxfbmFtZSA/PyBudWxsLFxuICAgIGlzX3ByaXZhdGU6IGludGVybmFsUGFja2FnZS5pc19wcml2YXRlID8/IGZhbHNlLFxuICAgIGlzX3B1YmxpYzogaW50ZXJuYWxQYWNrYWdlLmlzX3ByaXZhdGUgPT09IHRydWUgPyBmYWxzZSA6IHRydWUsXG4gICAgaXNfdW5saXN0ZWQ6XG4gICAgICBpbnRlcm5hbFBhY2thZ2UuaXNfcHJpdmF0ZSA9PT0gdHJ1ZVxuICAgICAgICA/IHRydWVcbiAgICAgICAgOiAoaW50ZXJuYWxQYWNrYWdlLmlzX3VubGlzdGVkID8/IGZhbHNlKSxcbiAgICBhbGxvd19wcl9wcmV2aWV3czogQm9vbGVhbihpbnRlcm5hbFBhY2thZ2UuYWxsb3dfcHJfcHJldmlld3MpLFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgbmFtZTogelxuICAgICAgLnN0cmluZygpXG4gICAgICAucmVnZXgoXG4gICAgICAgIC9eW0BhLXpBLVowLTktX1xcL10rJC8sXG4gICAgICAgIFwiUGFja2FnZSBuYW1lIGNhbiBvbmx5IGNvbnRhaW4gbGV0dGVycywgbnVtYmVycywgaHlwaGVucywgdW5kZXJzY29yZXMsIGFuZCBmb3J3YXJkIHNsYXNoZXNcIixcbiAgICAgIClcbiAgICAgIC50cmFuc2Zvcm0oKG5hbWUpID0+IG5hbWUucmVwbGFjZSgvXkAvLCBcIlwiKSlcbiAgICAgIC5vcHRpb25hbCgpLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBpc191bmxpc3RlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2U6IHBhY2thZ2VTY2hlbWEub3B0aW9uYWwoKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBuYW1lLCBkZXNjcmlwdGlvbiwgaXNfcHJpdmF0ZSwgaXNfdW5saXN0ZWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IGV4aXN0aW5nUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwa2cpID0+IHBrZy5uYW1lID09PSBuYW1lKVxuXG4gIGlmIChleGlzdGluZ1BhY2thZ2UpIHtcbiAgICB0aHJvdyBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfYWxyZWFkeV9leGlzdHNcIixcbiAgICAgIG1lc3NhZ2U6IFwiQSBwYWNrYWdlIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzXCIsXG4gICAgfSlcbiAgfVxuXG4gIGxldCB1bnNjb3BlZF9uYW1lID0gbmFtZT8uaW5jbHVkZXMoXCIvXCIpID8gbmFtZT8uc3BsaXQoXCIvXCIpWzFdIDogbmFtZVxuICBpZiAoIXVuc2NvcGVkX25hbWUpIHtcbiAgICBjb25zdCBzdGF0ZSA9IGN0eC5kYi5nZXRTdGF0ZSgpXG4gICAgY29uc3QgY291bnQgPSBzdGF0ZS5wYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocGtnKSA9PiBwa2cuY3JlYXRvcl9hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICkubGVuZ3RoXG5cbiAgICB1bnNjb3BlZF9uYW1lID0gYHVudGl0bGVkLXBhY2thZ2UtJHtjb3VudH1gXG4gIH1cblxuICBjb25zdCBuZXdQYWNrYWdlID0gY3R4LmRiLmFkZFBhY2thZ2Uoe1xuICAgIG5hbWU6IG5hbWU/LmluY2x1ZGVzKFwiL1wiKVxuICAgICAgPyBuYW1lXG4gICAgICA6IGAke2N0eC5hdXRoLmdpdGh1Yl91c2VybmFtZX0vJHtTdHJpbmcodW5zY29wZWRfbmFtZSl9YCxcbiAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gPz8gbnVsbCxcbiAgICBjcmVhdG9yX2FjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgb3duZXJfb3JnX2lkOiBjdHguYXV0aC5wZXJzb25hbF9vcmdfaWQsXG4gICAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUsXG4gICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogbnVsbCxcbiAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2ZzX3NoYTogbnVsbCxcbiAgICBsYXRlc3RfdmVyc2lvbjogbnVsbCxcbiAgICBsaWNlbnNlOiBudWxsLFxuICAgIHdlYnNpdGU6IG51bGwsXG4gICAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBmYWxzZSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVuc2NvcGVkX25hbWUsXG4gICAgc3Rhcl9jb3VudDogMCxcbiAgICBhaV9kZXNjcmlwdGlvbjogXCJwbGFjZWhvbGRlciBhaSBkZXNjcmlwdGlvblwiLFxuICAgIGlzX3ByaXZhdGU6IGlzX3ByaXZhdGUgPz8gZmFsc2UsXG4gICAgaXNfcHVibGljOiBpc19wcml2YXRlID09PSB0cnVlID8gZmFsc2UgOiB0cnVlLFxuICAgIGlzX3VubGlzdGVkOiBpc19wcml2YXRlID09PSB0cnVlID8gdHJ1ZSA6IChpc191bmxpc3RlZCA/PyBmYWxzZSksXG4gICAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiBcInBsYWNlaG9sZGVyIGFpIHVzYWdlIGluc3RydWN0aW9uc1wiLFxuICAgIGRlZmF1bHRfdmlldzogXCJmaWxlc1wiLFxuICB9KVxuXG4gIGlmICghbmV3UGFja2FnZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBjcmVhdGUgcGFja2FnZVwiKVxuICB9XG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBwYWNrYWdlOiBwdWJsaWNNYXBQYWNrYWdlKG5ld1BhY2thZ2UpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgcGFja2FnZV9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBwYWNrYWdlX2lkIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCBwYWNrYWdlSW5kZXggPSBjdHguZGIucGFja2FnZXMuZmluZEluZGV4KFxuICAgIChwKSA9PiBwLnBhY2thZ2VfaWQgPT09IHBhY2thZ2VfaWQsXG4gIClcblxuICBpZiAocGFja2FnZUluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHBrZyA9IGN0eC5kYi5wYWNrYWdlc1twYWNrYWdlSW5kZXhdXG5cbiAgaWYgKHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgIT09IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGlzIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgY3R4LmRiLnBhY2thZ2VzLnNwbGljZShwYWNrYWdlSW5kZXgsIDEpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICAvLyBBY2NlcHQgZWl0aGVyIHBhY2thZ2VfaWQgb3IgcGFja2FnZV9uYW1lIHRvIGZpbmQgdGhlIHBhY2thZ2UgdG8gZm9ya1xuICAgICAgcGFja2FnZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgcGFja2FnZV9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAvLyBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIGN1c3RvbWl6ZSB0aGUgZm9ya2VkIHBhY2thZ2VcbiAgICAgIGlzX3ByaXZhdGU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVmYXVsdChmYWxzZSksXG4gICAgICBpc191bmxpc3RlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZWZhdWx0KGZhbHNlKSxcbiAgICB9KVxuICAgIC5yZWZpbmUoXG4gICAgICAoZGF0YSkgPT5cbiAgICAgICAgZGF0YS5wYWNrYWdlX2lkICE9PSB1bmRlZmluZWQgfHwgZGF0YS5wYWNrYWdlX25hbWUgIT09IHVuZGVmaW5lZCxcbiAgICAgIHtcbiAgICAgICAgbWVzc2FnZTogXCJFaXRoZXIgcGFja2FnZV9pZCBvciBwYWNrYWdlX25hbWUgbXVzdCBiZSBwcm92aWRlZFwiLFxuICAgICAgfSxcbiAgICApXG4gICAgLnRyYW5zZm9ybSgoZGF0YSkgPT4gKHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICAvLyBJZiB0aGUgcGFja2FnZSBpcyBwcml2YXRlLCBpdCBzaG91bGQgYmUgdW5saXN0ZWRcbiAgICAgIGlzX3VubGlzdGVkOiBkYXRhLmlzX3ByaXZhdGUgPyB0cnVlIDogZGF0YS5pc191bmxpc3RlZCxcbiAgICB9KSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHBhY2thZ2U6IHBhY2thZ2VTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcGFja2FnZV9pZCwgcGFja2FnZV9uYW1lLCBpc19wcml2YXRlLCBpc191bmxpc3RlZCB9ID0gcmVxLmpzb25Cb2R5XG5cbiAgLy8gRmluZCB0aGUgcGFja2FnZSB0byBmb3JrXG4gIGxldCBzb3VyY2VQYWNrYWdlID0gbnVsbFxuICBpZiAocGFja2FnZV9pZCkge1xuICAgIHNvdXJjZVBhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZClcbiAgfSBlbHNlIGlmIChwYWNrYWdlX25hbWUpIHtcbiAgICBzb3VyY2VQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLm5hbWUgPT09IHBhY2thZ2VfbmFtZSlcbiAgfVxuXG4gIGlmICghc291cmNlUGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlRoZSBwYWNrYWdlIHRvIGZvcmsgd2FzIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICBpZiAoc291cmNlUGFja2FnZS5jcmVhdG9yX2FjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJjYW5ub3RfZm9ya19vd25fcGFja2FnZVwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgY2Fubm90IGZvcmsgeW91ciBvd24gcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiBmb3JrIGFscmVhZHkgZXhpc3RzICh1c2VyIGFscmVhZHkgaGFzIGEgcGFja2FnZSB3aXRoIHRoZSBzYW1lIG5hbWUpXG4gIGNvbnN0IGZvcmtOYW1lID0gYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke3NvdXJjZVBhY2thZ2UudW5zY29wZWRfbmFtZX1gXG4gIGNvbnN0IGV4aXN0aW5nRm9yayA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgIChwa2cpID0+XG4gICAgICBwa2cuY3JlYXRvcl9hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkICYmIHBrZy5uYW1lID09PSBmb3JrTmFtZSxcbiAgKVxuXG4gIGlmIChleGlzdGluZ0ZvcmspIHtcbiAgICByZXR1cm4gY3R4Lmpzb24oe1xuICAgICAgcGFja2FnZTogcHVibGljTWFwUGFja2FnZShleGlzdGluZ0ZvcmspLFxuICAgIH0pXG4gIH1cblxuICAvLyBGaW5kIHRoZSBsYXRlc3QgcmVsZWFzZSBvZiB0aGUgc291cmNlIHBhY2thZ2VcbiAgY29uc3Qgc291cmNlUGFja2FnZVJlbGVhc2UgPSBjdHguZGIucGFja2FnZVJlbGVhc2VzLmZpbmQoXG4gICAgKHJlbGVhc2UpID0+XG4gICAgICByZWxlYXNlLnBhY2thZ2VfaWQgPT09IHNvdXJjZVBhY2thZ2UucGFja2FnZV9pZCAmJlxuICAgICAgcmVsZWFzZS5pc19sYXRlc3QgPT09IHRydWUsXG4gIClcblxuICBpZiAoIXNvdXJjZVBhY2thZ2VSZWxlYXNlKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic291cmNlX3BhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiVGhlIHNvdXJjZSBwYWNrYWdlIGRvZXMgbm90IGhhdmUgYW55IHJlbGVhc2VzIHRvIGZvcmtcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gR2V0IHRoZSBmaWxlcyBmcm9tIHRoZSBzb3VyY2UgcGFja2FnZSByZWxlYXNlXG4gIGNvbnN0IHNvdXJjZUZpbGVzID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgKGZpbGUpID0+XG4gICAgICBmaWxlLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gc291cmNlUGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICApXG5cbiAgaWYgKHNvdXJjZUZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNvdXJjZV9wYWNrYWdlX2ZpbGVzX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJUaGUgc291cmNlIHBhY2thZ2UgcmVsZWFzZSBkb2VzIG5vdCBoYXZlIGFueSBmaWxlcyB0byBmb3JrXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENyZWF0ZSB0aGUgZm9ya2VkIHBhY2thZ2VcbiAgY29uc3QgZm9ya2VkUGFja2FnZSA9IGN0eC5kYi5hZGRQYWNrYWdlKHtcbiAgICBuYW1lOiBmb3JrTmFtZSxcbiAgICBkZXNjcmlwdGlvbjogc291cmNlUGFja2FnZS5kZXNjcmlwdGlvbixcbiAgICBjcmVhdG9yX2FjY291bnRfaWQ6IGN0eC5hdXRoLmFjY291bnRfaWQsXG4gICAgb3duZXJfb3JnX2lkOiBjdHguYXV0aC5wZXJzb25hbF9vcmdfaWQsXG4gICAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUsXG4gICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogbnVsbCxcbiAgICBsYXRlc3RfdmVyc2lvbjogbnVsbCxcbiAgICBsaWNlbnNlOiBudWxsLFxuICAgIHdlYnNpdGU6IG51bGwsXG4gICAgaXNfc291cmNlX2Zyb21fZ2l0aHViOiBmYWxzZSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIHVuc2NvcGVkX25hbWU6IHNvdXJjZVBhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICBzdGFyX2NvdW50OiAwLFxuICAgIGFpX2Rlc2NyaXB0aW9uOiBzb3VyY2VQYWNrYWdlLmFpX2Rlc2NyaXB0aW9uIHx8IFwiZm9ya2VkIHBhY2thZ2VcIixcbiAgICBpc19wcml2YXRlOiBpc19wcml2YXRlLFxuICAgIGlzX3B1YmxpYzogIWlzX3ByaXZhdGUsXG4gICAgaXNfdW5saXN0ZWQsXG4gICAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiBcImZvcmtlZCBwYWNrYWdlIHVzYWdlXCIsXG4gICAgaXNfYm9hcmQ6IEJvb2xlYW4oc291cmNlUGFja2FnZS5pc19ib2FyZCksXG4gICAgaXNfcGFja2FnZTogdHJ1ZSxcbiAgICBpc19tb2RlbDogQm9vbGVhbihzb3VyY2VQYWNrYWdlLmlzX21vZGVsKSxcbiAgICBpc19mb290cHJpbnQ6IEJvb2xlYW4oc291cmNlUGFja2FnZS5pc19mb290cHJpbnQpLFxuICAgIGlzX3NuaXBwZXQ6IEJvb2xlYW4oc291cmNlUGFja2FnZS5pc19zbmlwcGV0KSxcbiAgfSlcblxuICBpZiAoIWZvcmtlZFBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJmYWlsZWRfdG9fY3JlYXRlX2ZvcmtlZF9wYWNrYWdlXCIsXG4gICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byBjcmVhdGUgZm9ya2VkIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ3JlYXRlIGEgbmV3IHBhY2thZ2UgcmVsZWFzZSBmb3IgdGhlIGZvcmtlZCBwYWNrYWdlXG4gIGNvbnN0IGZvcmtlZFBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICBwYWNrYWdlX2lkOiBmb3JrZWRQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgdmVyc2lvbjogc291cmNlUGFja2FnZVJlbGVhc2UudmVyc2lvbixcbiAgICBpc19sb2NrZWQ6IGZhbHNlLFxuICAgIGlzX2xhdGVzdDogdHJ1ZSxcbiAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgY29tbWl0X3NoYTogbnVsbCxcbiAgICBsaWNlbnNlOiBzb3VyY2VQYWNrYWdlUmVsZWFzZS5saWNlbnNlIHx8IG51bGwsXG4gICAgLy8gU2V0dGluZyB0aGUgdHJhbnNwaWxlZCBhcyB0cnVlIG9uIGNyZWF0aW9uXG4gICAgaGFzX3RyYW5zcGlsZWQ6IHRydWUsXG4gICAgdHJhbnNwaWxhdGlvbl9lcnJvcjogbnVsbCxcbiAgfSlcblxuICAvLyBVcGRhdGUgdGhlIGZvcmtlZCBwYWNrYWdlIHdpdGggcmVsZWFzZSBpbmZvXG4gIGZvcmtlZFBhY2thZ2UubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCA9XG4gICAgZm9ya2VkUGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkXG4gIGZvcmtlZFBhY2thZ2UubGF0ZXN0X3ZlcnNpb24gPSBmb3JrZWRQYWNrYWdlUmVsZWFzZS52ZXJzaW9uIHx8IG51bGxcblxuICAvLyBDb3B5IGFsbCBmaWxlcyBmcm9tIHRoZSBzb3VyY2UgcGFja2FnZSByZWxlYXNlIHRvIHRoZSBmb3JrZWQgcGFja2FnZSByZWxlYXNlXG4gIGZvciAoY29uc3Qgc291cmNlRmlsZSBvZiBzb3VyY2VGaWxlcykge1xuICAgIGN0eC5kYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IGZvcmtlZFBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIGZpbGVfcGF0aDogc291cmNlRmlsZS5maWxlX3BhdGgsXG4gICAgICBjb250ZW50X3RleHQ6IHNvdXJjZUZpbGUuY29udGVudF90ZXh0LFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIHBhY2thZ2U6IHB1YmxpY01hcFBhY2thZ2UoZm9ya2VkUGFja2FnZSksXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBwYWNrYWdlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHtcbiAgZmV0Y2hFYXN5RURBQ29tcG9uZW50LFxuICBjb252ZXJ0UmF3RWFzeUVkYVRvVHMsXG4gIG5vcm1hbGl6ZU1hbnVmYWN0dXJlclBhcnROdW1iZXIsXG4gIEVhc3lFZGFKc29uU2NoZW1hLFxufSBmcm9tIFwiZWFzeWVkYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBqbGNwY2JfcGFydF9udW1iZXI6IHouc3RyaW5nKCkubWluKDEsIFwiSkxDUENCIHBhcnQgbnVtYmVyIGlzIHJlcXVpcmVkXCIpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2U6IHBhY2thZ2VTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgamxjcGNiX3BhcnRfbnVtYmVyIH0gPSByZXEuanNvbkJvZHlcblxuICB0cnkge1xuICAgIGNvbnN0IHJhd0Vhc3lKc29uID0gYXdhaXQgZmV0Y2hFYXN5RURBQ29tcG9uZW50KGpsY3BjYl9wYXJ0X251bWJlcilcblxuICAgIGlmICghcmF3RWFzeUpzb24pIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwiY29tcG9uZW50X25vdF9mb3VuZFwiLFxuICAgICAgICBtZXNzYWdlOiBgQ29tcG9uZW50IHdpdGggSkxDUENCIHBhcnQgbnVtYmVyICR7amxjcGNiX3BhcnRfbnVtYmVyfSBub3QgZm91bmRgLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBiZXR0ZXJFYXN5ID0gYXdhaXQgRWFzeUVkYUpzb25TY2hlbWEucGFyc2UocmF3RWFzeUpzb24pXG5cbiAgICBjb25zdCB0c3hDb21wb25lbnQgPSBhd2FpdCBjb252ZXJ0UmF3RWFzeUVkYVRvVHMocmF3RWFzeUpzb24pXG5cbiAgICBjb25zdCBjb21wb25lbnROYW1lID0gbm9ybWFsaXplTWFudWZhY3R1cmVyUGFydE51bWJlcihcbiAgICAgIGJldHRlckVhc3kuZGF0YVN0ci5oZWFkLmNfcGFyYVtcIk1hbnVmYWN0dXJlciBQYXJ0XCJdID8/IFwiXCIsXG4gICAgKVxuICAgICAgLnJlcGxhY2UoL1teYS16QS1aMC05LV9dL2csIFwiLVwiKVxuICAgICAgLnJlcGxhY2UoLy0tL2csIFwiLVwiKVxuXG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSBgJHtjdHguYXV0aC5naXRodWJfdXNlcm5hbWV9LyR7Y29tcG9uZW50TmFtZX1gXG5cbiAgICBjb25zdCBleGlzdGluZ1BhY2thZ2UgPSBjdHguZGIucGFja2FnZXMuZmluZCgocCkgPT4gcC5uYW1lID09PSBwYWNrYWdlTmFtZSlcblxuICAgIGlmIChleGlzdGluZ1BhY2thZ2UpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA5LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9hbHJlYWR5X2V4aXN0c1wiLFxuICAgICAgICBtZXNzYWdlOiBjb21wb25lbnROYW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBuZXdQYWNrYWdlID0ge1xuICAgICAgbmFtZTogcGFja2FnZU5hbWUsXG4gICAgICB1bnNjb3BlZF9uYW1lOiBjb21wb25lbnROYW1lLFxuICAgICAgb3duZXJfbmFtZTogY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgY29kZTogdHN4Q29tcG9uZW50LFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgZGVzY3JpcHRpb246IGBHZW5lcmF0ZWQgZnJvbSBKTENQQ0IgcGFydCBudW1iZXIgJHtqbGNwY2JfcGFydF9udW1iZXJ9YCxcbiAgICAgIGNyZWF0b3JfYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgIG93bmVyX29yZ19pZDogY3R4LmF1dGgucGVyc29uYWxfb3JnX2lkLFxuICAgICAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBudWxsLFxuICAgICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9mc19zaGE6IG51bGwsXG4gICAgICBsYXRlc3RfdmVyc2lvbjogbnVsbCxcbiAgICAgIGxpY2Vuc2U6IG51bGwsXG4gICAgICBhaV9kZXNjcmlwdGlvbjogXCJwbGFjZWhvbGRlciBhaSBkZXNjcmlwdGlvblwiLFxuICAgICAgYWlfdXNhZ2VfaW5zdHJ1Y3Rpb25zOiBcInBsYWNlaG9sZGVyIGFpIHVzYWdlIGluc3RydWN0aW9uc1wiLFxuICAgIH1cblxuICAgIGNvbnN0IGNyZWF0ZWRQYWNrYWdlID0gY3R4LmRiLmFkZFBhY2thZ2UobmV3UGFja2FnZSlcblxuICAgIGNvbnN0IGNyZWF0ZWRQYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5hZGRQYWNrYWdlUmVsZWFzZSh7XG4gICAgICBwYWNrYWdlX2lkOiBjcmVhdGVkUGFja2FnZS5wYWNrYWdlX2lkLFxuICAgICAgdmVyc2lvbjogXCIxLjAuMFwiLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgaXNfbGF0ZXN0OiB0cnVlLFxuICAgICAgaXNfbG9ja2VkOiBmYWxzZSxcbiAgICB9KVxuXG4gICAgY3R4LmRiLnVwZGF0ZVBhY2thZ2UoY3JlYXRlZFBhY2thZ2UucGFja2FnZV9pZCwge1xuICAgICAgbGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZDogY3JlYXRlZFBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICB9KVxuXG4gICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogY3JlYXRlZFBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIGZpbGVfcGF0aDogXCJpbmRleC50c3hcIixcbiAgICAgIGNvbnRlbnRfdGV4dDogU3RyaW5nKHRzeENvbXBvbmVudCksXG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfSlcblxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBhY2thZ2U6IGNyZWF0ZWRQYWNrYWdlIGFzIGFueSxcbiAgICB9KVxuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgaWYgKFN0cmluZyhlcnJvcikuaW5jbHVkZXMoXCJDb21wb25lbnQgbm90IGZvdW5kXCIpKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcImNvbXBvbmVudF9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogYENvbXBvbmVudCB3aXRoIEpMQ1BDQiBwYXJ0IG51bWJlciAke2psY3BjYl9wYXJ0X251bWJlcn0gbm90IGZvdW5kYCxcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfZ2VuZXJhdGlvbl9mYWlsZWRcIixcbiAgICAgIG1lc3NhZ2U6IGBGYWlsZWQgdG8gZ2VuZXJhdGUgcGFja2FnZSBmcm9tIEpMQ1BDQiBwYXJ0OiAke2Vycm9yLm1lc3NhZ2UgfHwgU3RyaW5nKGVycm9yKX1gLFxuICAgIH0pXG4gIH1cbn0pXG4iLCAiaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyBwdWJsaWNNYXBQYWNrYWdlIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9wdWJsaWMtbWFwcGluZy9wdWJsaWMtbWFwLXBhY2thZ2VcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJvcHRpb25hbF9zZXNzaW9uXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uQm9keTogei5hbnkoKS5vcHRpb25hbCgpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZTogcGFja2FnZVNjaGVtYVxuICAgICAgLmV4dGVuZCh7XG4gICAgICAgIGlzX3N0YXJyZWQ6IHouYm9vbGVhbigpLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25hbCgpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHBhY2thZ2VfaWQsIG5hbWUgfSA9IHJlcS5jb21tb25QYXJhbXNcbiAgY29uc3QgYXV0aCA9IFwiYXV0aFwiIGluIGN0eCAmJiBjdHguYXV0aCA/IGN0eC5hdXRoIDogbnVsbFxuXG4gIGNvbnN0IGZvdW5kUGFja2FnZSA9XG4gICAgKHBhY2thZ2VfaWQgJiYgY3R4LmRiLmdldFBhY2thZ2VCeUlkKHBhY2thZ2VfaWQpKSB8fFxuICAgIGN0eC5kYi5wYWNrYWdlcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IG5hbWUpXG5cbiAgaWYgKCFmb3VuZFBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJwYWNrYWdlX25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogYFBhY2thZ2Ugbm90IGZvdW5kIChzZWFyY2hlZCB1c2luZyAke0pTT04uc3RyaW5naWZ5KHJlcS5jb21tb25QYXJhbXMpfSlgLFxuICAgIH0pXG4gIH1cblxuICBpZiAoXG4gICAgZm91bmRQYWNrYWdlLmlzX3ByaXZhdGUgJiZcbiAgICBhdXRoPy5naXRodWJfdXNlcm5hbWUgIT09IGZvdW5kUGFja2FnZS5vd25lcl9naXRodWJfdXNlcm5hbWVcbiAgKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IGBQYWNrYWdlIG5vdCBmb3VuZCAoc2VhcmNoZWQgdXNpbmcgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgcmVxLmNvbW1vblBhcmFtcyxcbiAgICAgICl9KWAsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZToge1xuICAgICAgLi4ucHVibGljTWFwUGFja2FnZShmb3VuZFBhY2thZ2UpLFxuICAgICAgaXNfc3RhcnJlZDogYXV0aFxuICAgICAgICA/IGN0eC5kYi5oYXNTdGFycmVkKGF1dGguYWNjb3VudF9pZCwgZm91bmRQYWNrYWdlLnBhY2thZ2VfaWQpXG4gICAgICAgIDogZmFsc2UsXG4gICAgfSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgQW55Q2lyY3VpdEVsZW1lbnQgfSBmcm9tIFwiY2lyY3VpdC1qc29uXCJcbmltcG9ydCB7XG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvQXNzZW1ibHlTdmcsXG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnLFxuICBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2Zyxcbn0gZnJvbSBcImNpcmN1aXQtdG8tc3ZnXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbi8vIERlZmluZSB0aGUgdmlldyB0eXBlcyBhbmQgZXh0ZW5zaW9uc1xuY29uc3QgVklFV19UWVBFUyA9IFtcInNjaGVtYXRpY1wiLCBcInBjYlwiLCBcImFzc2VtYmx5XCIsIFwiM2RcIl0gYXMgY29uc3RcbmNvbnN0IEVYVEVOU0lPTlMgPSBbXCJzdmdcIiwgXCJwbmdcIl0gYXMgY29uc3RcblxuLy8gQ3JlYXRlIGEgcmVnZXggcGF0dGVybiBmb3IgdGhlIHZpZXcgZm9ybWF0IHRoYXQgaW5jbHVkZXMgb3B0aW9uYWwgd2lkdGggc3VmZml4XG5jb25zdCB2aWV3Rm9ybWF0UGF0dGVybiA9IG5ldyBSZWdFeHAoXG4gIGBeKCR7VklFV19UWVBFUy5qb2luKFwifFwiKX0pLT8oXFxcXGQrdyk/XFxcXC4oJHtFWFRFTlNJT05TLmpvaW4oXCJ8XCIpfSkkYCxcbilcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHJvdXRlUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiB6LnN0cmluZygpLFxuICAgIHVuc2NvcGVkX25hbWU6IHouc3RyaW5nKCksXG4gICAgdmlld19mb3JtYXQ6IHouc3RyaW5nKCkucmVnZXgodmlld0Zvcm1hdFBhdHRlcm4sIHtcbiAgICAgIG1lc3NhZ2U6IGBJbnZhbGlkIHZpZXcgZm9ybWF0LiBNdXN0IGJlIG9uZSBvZjogJHtWSUVXX1RZUEVTLmpvaW4oXCIsIFwiKX0gd2l0aCBvcHRpb25hbCB3aWR0aCBzdWZmaXggKGUuZy4gLTgwMHcpLiR7RVhURU5TSU9OUy5qb2luKFwiIG9yIFwiKX1gLFxuICAgIH0pLFxuICB9KSxcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBmc19zaGE6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIHJhd1Jlc3BvbnNlOiB0cnVlLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgb3duZXJfZ2l0aHViX3VzZXJuYW1lLCB1bnNjb3BlZF9uYW1lLCB2aWV3X2Zvcm1hdCB9ID0gcmVxLnJvdXRlUGFyYW1zXG4gIGNvbnN0IHsgZnNfc2hhIH0gPSByZXEucXVlcnlcblxuICAvLyBQYXJzZSB0aGUgdmlldyBmb3JtYXRcbiAgY29uc3QgW291dHB1dFR5cGUsIGZvcm1hdF0gPSB2aWV3X2Zvcm1hdC5zcGxpdChcIi5cIilcblxuICAvLyBHZXQgdGhlIHBhY2thZ2VcbiAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgKHApID0+XG4gICAgICBwLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gb3duZXJfZ2l0aHViX3VzZXJuYW1lICYmXG4gICAgICBwLnVuc2NvcGVkX25hbWUgPT09IHVuc2NvcGVkX25hbWUsXG4gIClcblxuICAvLyBJZiBwYWNrYWdlIGlzIG5vdCBmb3VuZCwgcmV0dXJuIDQwNFxuICBpZiAoIXBrZykge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2Vfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlBhY2thZ2Ugbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEdldCB0aGUgcGFja2FnZSByZWxlYXNlIGZvciB0aGUgZ2l2ZW4gaGFzaCB2YWx1ZVxuICBjb25zdCBwa2dfcmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocHIpID0+IHByLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmIHByLmZzX3NoYSA9PT0gZnNfc2hhLFxuICApXG5cbiAgaWYgKCFwa2dfcmVsZWFzZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfcmVsZWFzZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSByZWxlYXNlIG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBHZXQgdGhlIGNpcmN1aXQgSlNPTiBmcm9tIHRoZSBwYWNrYWdlIGZpbGVzXG4gIGNvbnN0IGNpcmN1aXRfanNvbl9maWxlID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChwZikgPT5cbiAgICAgIHBmLnBhY2thZ2VfcmVsZWFzZV9pZCA9PT0gcGtnX3JlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkICYmXG4gICAgICBwZi5maWxlX3BhdGggPT09IFwiY2lyY3VpdC5qc29uXCIsXG4gIClcblxuICBpZiAoIWNpcmN1aXRfanNvbl9maWxlPy5jb250ZW50X3RleHQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJjaXJjdWl0X2pzb25fbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIkNpcmN1aXQgSlNPTiBub3QgZm91bmQgZm9yIHBhY2thZ2VcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgY2lyY3VpdF9qc29uID0gSlNPTi5wYXJzZShjaXJjdWl0X2pzb25fZmlsZS5jb250ZW50X3RleHQpXG5cbiAgLy8gQ29udmVydCBjaXJjdWl0IGpzb24gdG8gc3ZnXG4gIGxldCBzdmcgPSBcIlwiXG5cbiAgaWYgKG91dHB1dFR5cGUgPT09IFwic2NoZW1hdGljXCIpIHtcbiAgICBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyhjaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXSlcbiAgfSBlbHNlIGlmIChvdXRwdXRUeXBlID09PSBcInBjYlwiKSB7XG4gICAgc3ZnID0gY29udmVydENpcmN1aXRKc29uVG9QY2JTdmcoY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10pXG4gIH0gZWxzZSBpZiAob3V0cHV0VHlwZSA9PT0gXCJhc3NlbWJseVwiKSB7XG4gICAgc3ZnID0gY29udmVydENpcmN1aXRKc29uVG9Bc3NlbWJseVN2ZyhjaXJjdWl0X2pzb24gYXMgQW55Q2lyY3VpdEVsZW1lbnRbXSlcbiAgfSBlbHNlIGlmIChvdXRwdXRUeXBlID09PSBcIjNkXCIpIHtcbiAgICAvLyBGb3IgM0Qgdmlldywgd2UnbGwgcmV0dXJuIGEgc2ltcGxlIFNWRyBwbGFjZWhvbGRlclxuICAgIHN2ZyA9IGA8c3ZnIHdpZHRoPVwiNDAwXCIgaGVpZ2h0PVwiMzAwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgPHJlY3Qgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIGZpbGw9XCIjZjBmMGYwXCIvPlxuICAgICAgPHRleHQgeD1cIjUwJVwiIHk9XCI1MCVcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGZpbGw9XCIjNjY2XCI+M0QgUHJldmlldzwvdGV4dD5cbiAgICA8L3N2Zz5gXG4gIH1cblxuICBpZiAoZm9ybWF0ID09PSBcInN2Z1wiKSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShzdmcsIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJpbWFnZS9zdmcreG1sXCIsXG4gICAgICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcInB1YmxpYywgbWF4LWFnZT04NjQwMCwgcy1tYXhhZ2U9ODY0MDBcIixcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8vIEZvciBQTkcgZm9ybWF0LCB3ZSdsbCByZXR1cm4gdGhlIFNWRyBhcyBQTkdcbiAgLy8gSW4gYSByZWFsIGltcGxlbWVudGF0aW9uLCB0aGlzIHdvdWxkIHVzZSBAcmVzdmcvcmVzdmctanNcbiAgcmV0dXJuIG5ldyBSZXNwb25zZShzdmcsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImltYWdlL3BuZ1wiLFxuICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwicHVibGljLCBtYXgtYWdlPTg2NDAwLCBzLW1heGFnZT04NjQwMFwiLFxuICAgIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBwYWNrYWdlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgcHVibGljTWFwUGFja2FnZSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvcHVibGljLW1hcHBpbmcvcHVibGljLW1hcC1wYWNrYWdlXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIHF1ZXJ5UGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgbGltaXQ6IHouc3RyaW5nKCkucmVnZXgoL15cXGQrJC8pLnRyYW5zZm9ybShOdW1iZXIpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBwYWNrYWdlczogei5hcnJheShwYWNrYWdlU2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgbGltaXQgPSByZXEucXVlcnkubGltaXQgfHwgNTBcblxuICAvLyBHZXQgYWxsIHBhY2thZ2VzIHRoYXQgYXJlIG5vdCBzbmlwcGV0c1xuICBjb25zdCBwYWNrYWdlcyA9IGN0eC5kYi5wYWNrYWdlc1xuICAgIC5maWx0ZXIoKHBrZykgPT4gIXBrZy5pc19zbmlwcGV0KVxuICAgIC5zb3J0KFxuICAgICAgKGEsIGIpID0+XG4gICAgICAgIG5ldyBEYXRlKGIuY3JlYXRlZF9hdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGVkX2F0KS5nZXRUaW1lKCksXG4gICAgKVxuICAgIC5zbGljZSgwLCBsaW1pdClcbiAgICAubWFwKChwa2cpID0+IHB1YmxpY01hcFBhY2thZ2UocGtnKSlcblxuICByZXR1cm4gY3R4Lmpzb24oeyBwYWNrYWdlcyB9KVxufSlcbiIsICJpbXBvcnQgeyBwYWNrYWdlU2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHt9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHBhY2thZ2VzOiB6LmFycmF5KHBhY2thZ2VTY2hlbWEpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICAvLyBHZXQgYWxsIHBhY2thZ2VzIGFuZCB0aGVpciBzdGFyIGNvdW50c1xuICBjb25zdCBwYWNrYWdlc1dpdGhTdGFycyA9IGN0eC5kYi5wYWNrYWdlcy5tYXAoKHBrZykgPT4ge1xuICAgIGNvbnN0IHN0YXJDb3VudCA9IGN0eC5kYi5hY2NvdW50UGFja2FnZXMuZmlsdGVyKFxuICAgICAgKGFwKSA9PiBhcC5wYWNrYWdlX2lkID09PSBwa2cucGFja2FnZV9pZCAmJiBhcC5pc19zdGFycmVkLFxuICAgICkubGVuZ3RoXG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucGtnLFxuICAgICAgc3Rhcl9jb3VudDogc3RhckNvdW50LFxuICAgIH1cbiAgfSlcblxuICAvLyBGaWx0ZXIgb3V0IHBhY2thZ2VzIHdpdGggbm8gc3RhcnMgYW5kIHNvcnQgYnkgc3RhciBjb3VudFxuICBjb25zdCB0cmVuZGluZ1BhY2thZ2VzID0gY3R4LmRiLnBhY2thZ2VzXG4gICAgLmZpbHRlcigocCkgPT4gcC5zdGFyX2NvdW50ID4gMClcbiAgICAuc29ydCgoYSwgYikgPT4gYi5zdGFyX2NvdW50IC0gYS5zdGFyX2NvdW50KVxuICAgIC5zbGljZSgwLCA1MClcblxuICAvLyBSYW5kb21pemUgdGhlIG9yZGVyIG9mIHRoZSBwYWNrYWdlcywgdGhlbiBwaWNrIHRoZSBmaXJzdCAxMFxuICBjb25zdCByYW5kb21pemVkUGFja2FnZXMgPSB0cmVuZGluZ1BhY2thZ2VzLnNvcnQoKCkgPT4gTWF0aC5yYW5kb20oKSAtIDAuNSlcbiAgY29uc3Qgc2VsZWN0ZWRQYWNrYWdlcyA9IHJhbmRvbWl6ZWRQYWNrYWdlcy5zbGljZSgwLCAxMClcblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICAgIHBhY2thZ2VzOiBzZWxlY3RlZFBhY2thZ2VzLm1hcCgocCkgPT4gKHtcbiAgICAgIC4uLnAsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBwLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgbnVsbCxcbiAgICB9KSksXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCIsIFwiUE9TVFwiXSxcbiAgYXV0aDogXCJvcHRpb25hbF9zZXNzaW9uXCIsXG4gIGNvbW1vblBhcmFtczogei5vYmplY3Qoe1xuICAgIGNyZWF0b3JfYWNjb3VudF9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG93bmVyX2dpdGh1Yl91c2VybmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlzX3dyaXRhYmxlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIG5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlczogei5hcnJheShwYWNrYWdlU2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBjcmVhdG9yX2FjY291bnRfaWQsIG93bmVyX2dpdGh1Yl91c2VybmFtZSwgbmFtZSwgaXNfd3JpdGFibGUgfSA9XG4gICAgcmVxLmNvbW1vblBhcmFtc1xuXG4gIGNvbnN0IGF1dGggPSBcImF1dGhcIiBpbiBjdHggJiYgY3R4LmF1dGggPyBjdHguYXV0aCA6IG51bGxcblxuICBpZiAoIWF1dGggJiYgIWlzX3dyaXRhYmxlICYmICFjcmVhdG9yX2FjY291bnRfaWQgJiYgIW93bmVyX2dpdGh1Yl91c2VybmFtZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfcmVxdWVzdFwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgbXVzdCBwcm92aWRlIHNvbWUgZmlsdGVyaW5nIHBhcmFtZXRlcnMgb3IgYmUgbG9nZ2VkIGluXCIsXG4gICAgfSlcbiAgfVxuXG4gIGxldCBwYWNrYWdlcyA9IGN0eC5kYi5wYWNrYWdlc1xuXG4gIC8vIEFwcGx5IGZpbHRlcnNcbiAgaWYgKGNyZWF0b3JfYWNjb3VudF9pZCkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHApID0+IHAuY3JlYXRvcl9hY2NvdW50X2lkID09PSBjcmVhdG9yX2FjY291bnRfaWQsXG4gICAgKVxuICB9XG4gIGlmIChvd25lcl9naXRodWJfdXNlcm5hbWUpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwKSA9PiBwLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gb3duZXJfZ2l0aHViX3VzZXJuYW1lLFxuICAgIClcbiAgfVxuICBpZiAobmFtZSkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKChwKSA9PiBwLm5hbWUgPT09IG5hbWUpXG4gIH1cblxuICBpZiAoaXNfd3JpdGFibGUgJiYgYXV0aCkge1xuICAgIHBhY2thZ2VzID0gcGFja2FnZXMuZmlsdGVyKChwKSA9PiBwLm93bmVyX29yZ19pZCA9PT0gYXV0aC5wZXJzb25hbF9vcmdfaWQpXG4gIH1cblxuICAvLyBHZXQgc3RhciB0aW1lc3RhbXBzIGZvciBhdXRoZW50aWNhdGVkIHVzZXJcbiAgY29uc3Qgc3RhclRpbWVzdGFtcHMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpXG4gIGlmIChhdXRoKSB7XG4gICAgY3R4LmRiLmFjY291bnRQYWNrYWdlc1xuICAgICAgLmZpbHRlcigoYXApID0+IGFwLmFjY291bnRfaWQgPT09IGF1dGguYWNjb3VudF9pZCAmJiBhcC5pc19zdGFycmVkKVxuICAgICAgLmZvckVhY2goKGFwKSA9PiB7XG4gICAgICAgIHN0YXJUaW1lc3RhbXBzLnNldChhcC5wYWNrYWdlX2lkLCBhcC51cGRhdGVkX2F0KVxuICAgICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZXM6IHBhY2thZ2VzLm1hcCgocCkgPT4gKHtcbiAgICAgIC4uLnAsXG4gICAgICBsYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkOiBwLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQgfHwgbnVsbCxcbiAgICAgIHN0YXJyZWRfYXQ6IHN0YXJUaW1lc3RhbXBzLmdldChwLnBhY2thZ2VfaWQpIHx8IG51bGwsXG4gICAgfSkpLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYWNrYWdlX2lkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLm9yKHoub2JqZWN0KHsgbmFtZTogei5zdHJpbmcoKSB9KSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgbGV0IHBhY2thZ2VJZDogc3RyaW5nXG5cbiAgLy8gR2V0IHBhY2thZ2UgSUQgZWl0aGVyIGRpcmVjdGx5IG9yIGJ5IG5hbWVcbiAgaWYgKFwicGFja2FnZV9pZFwiIGluIHJlcS5qc29uQm9keSkge1xuICAgIGNvbnN0IGJvZHkgPSByZXEuanNvbkJvZHlcbiAgICBwYWNrYWdlSWQgPSBib2R5LnBhY2thZ2VfaWRcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiBuYW1lIGlzIHByb3ZpZGVkLCBsb29rIHVwIHRoZSBwYWNrYWdlX2lkXG4gICAgY29uc3QgYm9keSA9IHJlcS5qc29uQm9keVxuICAgIGNvbnN0IHBhY2thZ2VEYXRhID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHBrZykgPT4gcGtnLm5hbWUgPT09IGJvZHkubmFtZSlcblxuICAgIGlmICghcGFja2FnZURhdGEpIHtcbiAgICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgICAgbWVzc2FnZTogXCJQYWNrYWdlIG5vdCBmb3VuZFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBwYWNrYWdlSWQgPSBwYWNrYWdlRGF0YS5wYWNrYWdlX2lkXG4gIH1cblxuICAvLyBDaGVjayBpZiBwYWNrYWdlIGV4aXN0cyAoZXh0cmEgY2hlY2sgZm9yIElELWJhc2VkIGxvb2t1cClcbiAgY29uc3QgcGtnID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkKVxuXG4gIGlmICghcGtnKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBzdGFycmVkXG4gIGNvbnN0IGV4aXN0aW5nID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maW5kKFxuICAgIChhcCkgPT5cbiAgICAgIGFwLmFjY291bnRfaWQgPT09IGN0eC5hdXRoLmFjY291bnRfaWQgJiYgYXAucGFja2FnZV9pZCA9PT0gcGFja2FnZUlkLFxuICApXG5cbiAgaWYgKCFleGlzdGluZz8uaXNfc3RhcnJlZCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9zdGFycmVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIG5vdCBzdGFycmVkIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UncyBzdGFyIGNvdW50XG4gIHBrZy5zdGFyX2NvdW50ID0gTWF0aC5tYXgoMCwgKHBrZy5zdGFyX2NvdW50IHx8IDApIC0gMSlcblxuICAvLyBSZW1vdmUgc3RhciBieSB1cGRhdGluZyBpc19zdGFycmVkIHRvIGZhbHNlXG4gIGV4aXN0aW5nLmlzX3N0YXJyZWQgPSBmYWxzZVxuICBleGlzdGluZy51cGRhdGVkX2F0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHBhY2thZ2VTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBxdWVyeTogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBwYWNrYWdlczogei5hcnJheShwYWNrYWdlU2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBxdWVyeSB9ID0gcmVxLmpzb25Cb2R5XG4gIGNvbnN0IHBhY2thZ2VzID0gY3R4LmRiLnNlYXJjaFBhY2thZ2VzKHF1ZXJ5KVxuICByZXR1cm4gY3R4Lmpzb24oeyBwYWNrYWdlcywgb2s6IHRydWUgfSlcbn0pXG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgcGFja2FnZVNjaGVtYSB9IGZyb20gXCIuLi8uLi8uLi9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiLi4vLi4vLi4vbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhY2thZ2VfaWQ6IHouc3RyaW5nKCksXG4gICAgICBuYW1lOiB6XG4gICAgICAgIC5zdHJpbmcoKVxuICAgICAgICAucmVnZXgoXG4gICAgICAgICAgL15bQGEtekEtWjAtOS1fXFwvXSskLyxcbiAgICAgICAgICBcIlBhY2thZ2UgbmFtZSBjYW4gb25seSBjb250YWluIGxldHRlcnMsIG51bWJlcnMsIGh5cGhlbnMsIHVuZGVyc2NvcmVzLCBhbmQgZm9yd2FyZCBzbGFzaGVzXCIsXG4gICAgICAgIClcbiAgICAgICAgLnRyYW5zZm9ybSgobmFtZSkgPT4gbmFtZS5yZXBsYWNlKC9eQC8sIFwiXCIpKVxuICAgICAgICAub3B0aW9uYWwoKSxcbiAgICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICB3ZWJzaXRlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBnaXRodWJfcmVwb19mdWxsX25hbWU6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICAgICAgaXNfcHJpdmF0ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICAgIGlzX3VubGlzdGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgICAgZGVmYXVsdF92aWV3OiB6LmVudW0oW1wiZmlsZXNcIiwgXCIzZFwiLCBcInBjYlwiLCBcInNjaGVtYXRpY1wiXSkub3B0aW9uYWwoKSxcbiAgICAgIGFsbG93X3ByX3ByZXZpZXdzOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIH0pXG4gICAgLnRyYW5zZm9ybSgoZGF0YSkgPT4gKHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICBpc191bmxpc3RlZDogZGF0YS5pc19wcml2YXRlID8gdHJ1ZSA6IGRhdGEuaXNfdW5saXN0ZWQsXG4gICAgfSkpLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgcGFja2FnZTogcGFja2FnZVNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIHBhY2thZ2VfaWQsXG4gICAgbmFtZSxcbiAgICBkZXNjcmlwdGlvbixcbiAgICB3ZWJzaXRlLFxuICAgIGlzX3ByaXZhdGUsXG4gICAgaXNfdW5saXN0ZWQsXG4gICAgZ2l0aHViX3JlcG9fZnVsbF9uYW1lLFxuICAgIGRlZmF1bHRfdmlldyxcbiAgICBhbGxvd19wcl9wcmV2aWV3cyxcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IHBhY2thZ2VJbmRleCA9IGN0eC5kYi5wYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgKHApID0+IHAucGFja2FnZV9pZCA9PT0gcGFja2FnZV9pZCxcbiAgKVxuXG4gIGlmIChwYWNrYWdlSW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwicGFja2FnZV9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiUGFja2FnZSBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgZXhpc3RpbmdQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzW3BhY2thZ2VJbmRleF1cblxuICAvLyBDaGVjayBpZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGUgcGFja2FnZVxuICBpZiAoZXhpc3RpbmdQYWNrYWdlLm93bmVyX2dpdGh1Yl91c2VybmFtZSAhPT0gY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDMsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiZm9yYmlkZGVuXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdXBkYXRlIHRoaXMgcGFja2FnZVwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIHBhY2thZ2UgbmFtZSBpZiBuYW1lIGlzIGJlaW5nIHVwZGF0ZWRcbiAgaWYgKG5hbWUpIHtcbiAgICBjb25zdCBuZXdGdWxsTmFtZSA9IGAke2N0eC5hdXRoLmdpdGh1Yl91c2VybmFtZX0vJHtuYW1lfWBcbiAgICBjb25zdCBkdXBsaWNhdGVQYWNrYWdlID0gY3R4LmRiLnBhY2thZ2VzLmZpbmQoXG4gICAgICAocCkgPT4gcC5uYW1lID09PSBuZXdGdWxsTmFtZSAmJiBwLnBhY2thZ2VfaWQgIT09IHBhY2thZ2VfaWQsXG4gICAgKVxuICAgIGlmIChkdXBsaWNhdGVQYWNrYWdlKSB7XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcInBhY2thZ2VfYWxyZWFkeV9leGlzdHNcIixcbiAgICAgICAgbWVzc2FnZTogXCJBIHBhY2thZ2Ugd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHNcIixcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgdXBkYXRlZFBhY2thZ2UgPSBjdHguZGIudXBkYXRlUGFja2FnZShwYWNrYWdlX2lkLCB7XG4gICAgbmFtZTogbmFtZSA/IGAke2N0eC5hdXRoLmdpdGh1Yl91c2VybmFtZX0vJHtuYW1lfWAgOiBleGlzdGluZ1BhY2thZ2UubmFtZSxcbiAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gPz8gZXhpc3RpbmdQYWNrYWdlLmRlc2NyaXB0aW9uLFxuICAgIHVuc2NvcGVkX25hbWU6IG5hbWUgPz8gZXhpc3RpbmdQYWNrYWdlLnVuc2NvcGVkX25hbWUsXG4gICAgd2Vic2l0ZTogd2Vic2l0ZSA/PyBleGlzdGluZ1BhY2thZ2Uud2Vic2l0ZSxcbiAgICBnaXRodWJfcmVwb19mdWxsX25hbWU6XG4gICAgICBnaXRodWJfcmVwb19mdWxsX25hbWUgPT09IG51bGxcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogKGdpdGh1Yl9yZXBvX2Z1bGxfbmFtZSA/PyBleGlzdGluZ1BhY2thZ2UuZ2l0aHViX3JlcG9fZnVsbF9uYW1lKSxcbiAgICBpc19wcml2YXRlOiBpc19wcml2YXRlID8/IGV4aXN0aW5nUGFja2FnZS5pc19wcml2YXRlLFxuICAgIGlzX3B1YmxpYzpcbiAgICAgIGlzX3ByaXZhdGUgIT09IHVuZGVmaW5lZCA/ICFpc19wcml2YXRlIDogZXhpc3RpbmdQYWNrYWdlLmlzX3B1YmxpYyxcbiAgICBpc191bmxpc3RlZDogaXNfdW5saXN0ZWQgPz8gZXhpc3RpbmdQYWNrYWdlLmlzX3VubGlzdGVkLFxuICAgIGRlZmF1bHRfdmlldzogZGVmYXVsdF92aWV3ID8/IGV4aXN0aW5nUGFja2FnZS5kZWZhdWx0X3ZpZXcsXG4gICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIGFsbG93X3ByX3ByZXZpZXdzOiBhbGxvd19wcl9wcmV2aWV3cyA/PyBleGlzdGluZ1BhY2thZ2UuYWxsb3dfcHJfcHJldmlld3MsXG4gIH0pXG5cbiAgaWYgKCF1cGRhdGVkUGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInVwZGF0ZV9mYWlsZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIHVwZGF0ZSBwYWNrYWdlXCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgcGFja2FnZTogdXBkYXRlZFBhY2thZ2UsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmNvbnN0IFBST1hZX0hFQURFUlMgPSBbXG4gIFwiWC1UYXJnZXQtVXJsXCIsXG4gIFwiWC1TZW5kZXItT3JpZ2luXCIsXG4gIFwiWC1TZW5kZXItSG9zdFwiLFxuICBcIlgtU2VuZGVyLVJlZmVyZXJcIixcbiAgXCJYLVNlbmRlci1Vc2VyLUFnZW50XCIsXG4gIFwiWC1TZW5kZXItQ29va2llXCIsXG5dXG5cbmNvbnN0IEFMTE9XRURfRE9NQUlOUzogQXJyYXk8eyBkb21haW46IHN0cmluZzsgcm91dGVzPzogc3RyaW5nW10gfT4gPSBbXG4gIHsgZG9tYWluOiBcImVhc3llZGEuY29tXCIgfSxcbl1cblxuZnVuY3Rpb24gaXNBbGxvd2VkRG9tYWluKHVybDogc3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgeyBob3N0bmFtZSwgcGF0aG5hbWUsIHBvcnQgfSA9IG5ldyBVUkwodXJsKVxuICAgIGNvbnN0IGFsbG93ZWREb21haW4gPSBBTExPV0VEX0RPTUFJTlMuZmluZChcbiAgICAgIChkb21haW4pID0+IGRvbWFpbi5kb21haW4gPT09IGhvc3RuYW1lLFxuICAgIClcblxuICAgIGlmIChhbGxvd2VkRG9tYWluKSB7XG4gICAgICBpZiAoXG4gICAgICAgICFhbGxvd2VkRG9tYWluLnJvdXRlcyB8fFxuICAgICAgICBhbGxvd2VkRG9tYWluLnJvdXRlcy5zb21lKChyb3V0ZSkgPT4gcGF0aG5hbWUuc3RhcnRzV2l0aChyb3V0ZSkpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaG9zdG5hbWUgPT09IFwibG9jYWxob3N0XCIgfHwgKGhvc3RuYW1lID09PSBcIjEyNy4wLjAuMVwiICYmIHBvcnQpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCIsIFwiUFVUXCIsIFwiREVMRVRFXCIsIFwiUEFUQ0hcIiwgXCJIRUFEXCIsIFwiT1BUSU9OU1wiXSxcbiAganNvblJlc3BvbnNlOiB6LmFueSgpLFxuICBhdXRoOiBcInNlc3Npb25cIixcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBpZiAocmVxLmhlYWRlcnMuZ2V0KFwiWC1wcm94aWVkXCIpKSB7XG4gICAgcmV0dXJuIGN0eC5qc29uKFxuICAgICAgeyBlcnJvcjogXCJSZWN1cnNpdmUgcHJveHkgY2FsbHMgYXJlIG5vdCBhbGxvd2VkXCIgfSxcbiAgICAgIHsgc3RhdHVzOiA0MDMgfSxcbiAgICApXG4gIH1cblxuICBjb25zdCB0YXJnZXRVcmwgPSByZXEuaGVhZGVycy5nZXQoXCJYLVRhcmdldC1VcmxcIilcblxuICBpZiAoIXRhcmdldFVybCkge1xuICAgIHJldHVybiBjdHguanNvbihcbiAgICAgIHsgZXJyb3I6IFwiWC1UYXJnZXQtVXJsIGhlYWRlciBpcyByZXF1aXJlZFwiIH0sXG4gICAgICB7IHN0YXR1czogNDAwIH0sXG4gICAgKVxuICB9XG5cbiAgaWYgKCFpc0FsbG93ZWREb21haW4odGFyZ2V0VXJsKSkge1xuICAgIHJldHVybiBjdHguanNvbih7IGVycm9yOiBcIkRvbWFpbiBub3QgYWxsb3dlZFwiIH0sIHsgc3RhdHVzOiA0MDMgfSlcbiAgfVxuXG4gIGxldCBib2R5OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgaWYgKFtcIlBPU1RcIiwgXCJQVVRcIiwgXCJQQVRDSFwiXS5pbmNsdWRlcyhyZXEubWV0aG9kKSkge1xuICAgIGJvZHkgPSBhd2FpdCByZXEuY2xvbmUoKS50ZXh0KClcbiAgfVxuXG4gIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhyZXEuaGVhZGVycylcblxuICBjb25zdCBzZW5kZXJPcmlnaW4gPSByZXEuaGVhZGVycy5nZXQoXCJYLVNlbmRlci1PcmlnaW5cIilcbiAgaWYgKHNlbmRlck9yaWdpbikge1xuICAgIGhlYWRlcnMuc2V0KFwiT3JpZ2luXCIsIHNlbmRlck9yaWdpbilcbiAgfVxuXG4gIGNvbnN0IHNlbmRlckhvc3QgPSByZXEuaGVhZGVycy5nZXQoXCJYLVNlbmRlci1Ib3N0XCIpXG4gIGlmIChzZW5kZXJIb3N0KSB7XG4gICAgY29uc3QgaG9zdFZhbHVlID0gc2VuZGVySG9zdC5yZXBsYWNlKC9eaHR0cHM/OlxcL1xcLy8sIFwiXCIpXG4gICAgaGVhZGVycy5zZXQoXCJIb3N0XCIsIGhvc3RWYWx1ZSlcbiAgICBoZWFkZXJzLnNldChcImF1dGhvcml0eVwiLCBob3N0VmFsdWUpXG4gIH1cblxuICBjb25zdCBzZW5kZXJSZWZlcmVyID0gcmVxLmhlYWRlcnMuZ2V0KFwiWC1TZW5kZXItUmVmZXJlclwiKVxuICBpZiAoc2VuZGVyUmVmZXJlcikge1xuICAgIGhlYWRlcnMuc2V0KFwiUmVmZXJlclwiLCBzZW5kZXJSZWZlcmVyKVxuICB9XG5cbiAgY29uc3Qgc2VuZGVyVXNlckFnZW50ID0gcmVxLmhlYWRlcnMuZ2V0KFwiWC1TZW5kZXItVXNlci1BZ2VudFwiKVxuICBpZiAoc2VuZGVyVXNlckFnZW50KSB7XG4gICAgaGVhZGVycy5zZXQoXCJVc2VyLUFnZW50XCIsIHNlbmRlclVzZXJBZ2VudClcbiAgfVxuXG4gIGNvbnN0IHNlbmRlckNvb2tpZSA9IHJlcS5oZWFkZXJzLmdldChcIlgtU2VuZGVyLUNvb2tpZVwiKVxuICBpZiAoc2VuZGVyQ29va2llKSB7XG4gICAgaGVhZGVycy5zZXQoXCJDb29raWVcIiwgc2VuZGVyQ29va2llKVxuICB9XG5cbiAgZm9yIChjb25zdCBoZWFkZXIgb2YgUFJPWFlfSEVBREVSUykge1xuICAgIGhlYWRlcnMuZGVsZXRlKGhlYWRlcilcbiAgfVxuXG4gIGhlYWRlcnMuZGVsZXRlKFwiY29udGVudC1lbmNvZGluZ1wiKVxuICBoZWFkZXJzLmRlbGV0ZShcImFjY2VwdC1lbmNvZGluZ1wiKVxuICBoZWFkZXJzLnNldChcIlgtcHJveGllZFwiLCBcInRydWVcIilcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godGFyZ2V0VXJsLCB7XG4gICAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgYm9keTogW1wiR0VUXCIsIFwiSEVBRFwiXS5pbmNsdWRlcyhyZXEubWV0aG9kKSA/IHVuZGVmaW5lZCA6IGJvZHksXG4gICAgfSlcblxuICAgIGNvbnN0IHJlc3BvbnNlSGVhZGVycyA9IG5ldyBIZWFkZXJzKHJlc3BvbnNlLmhlYWRlcnMpXG4gICAgcmVzcG9uc2VIZWFkZXJzLmRlbGV0ZShcImNvbnRlbnQtZW5jb2RpbmdcIilcblxuICAgIHJldHVybiBuZXcgUmVzcG9uc2UocmVzcG9uc2UuYm9keSwge1xuICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICBzdGF0dXNUZXh0OiByZXNwb25zZS5zdGF0dXNUZXh0LFxuICAgICAgaGVhZGVyczogcmVzcG9uc2VIZWFkZXJzLFxuICAgIH0pXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcIlByb3h5IGVycm9yOlwiLCBlcnJvcilcbiAgICByZXR1cm4gY3R4Lmpzb24oXG4gICAgICB7IGVycm9yOiB7IG1lc3NhZ2U6IFwiRmFpbGVkIHRvIHByb3h5IHJlcXVlc3RcIiB9IH0sXG4gICAgICB7IHN0YXR1czogNTAyIH0sXG4gICAgKVxuICB9XG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHNuaXBwZXRfaWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIC8vIENoZWNrIGlmIHNuaXBwZXQgZXhpc3RzIChhcyBhIHBhY2thZ2UpXG4gIGNvbnN0IHNuaXBwZXQgPSBjdHguZGIucGFja2FnZXMuZmluZChcbiAgICAocGtnKSA9PiBwa2cucGFja2FnZV9pZCA9PT0gc25pcHBldF9pZCAmJiBwa2cuaXNfc25pcHBldCA9PT0gdHJ1ZSxcbiAgKVxuXG4gIGlmICghc25pcHBldCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGFscmVhZHkgc3RhcnJlZFxuICBjb25zdCBleGlzdGluZyA9IGN0eC5kYi5hY2NvdW50UGFja2FnZXMuZmluZChcbiAgICAoYXApID0+XG4gICAgICBhcC5hY2NvdW50X2lkID09PSBjdHguYXV0aC5hY2NvdW50X2lkICYmIGFwLnBhY2thZ2VfaWQgPT09IHNuaXBwZXRfaWQsXG4gIClcblxuICBpZiAoZXhpc3Rpbmc/LmlzX3N0YXJyZWQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJhbHJlYWR5X3N0YXJyZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGhhdmUgYWxyZWFkeSBzdGFycmVkIHRoaXMgc25pcHBldFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBVcGRhdGUgdGhlIHBhY2thZ2UncyBzdGFyIGNvdW50XG4gIHNuaXBwZXQuc3Rhcl9jb3VudCA9IChzbmlwcGV0LnN0YXJfY291bnQgfHwgMCkgKyAxXG5cbiAgaWYgKGV4aXN0aW5nKSB7XG4gICAgLy8gSWYgcmVjb3JkIGV4aXN0cyBidXQgaXNfc3RhcnJlZCBpcyBmYWxzZSwgdXBkYXRlIHRvIGlzX3N0YXJyZWQ9dHJ1ZVxuICAgIGV4aXN0aW5nLmlzX3N0YXJyZWQgPSB0cnVlXG4gICAgZXhpc3RpbmcudXBkYXRlZF9hdCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICB9IGVsc2Uge1xuICAgIC8vIEFkZCBzdGFyIGJ5IGNyZWF0aW5nIGEgbmV3IGFjY291bnRfcGFja2FnZSByZWNvcmRcbiAgICBjdHguZGIuYWRkQWNjb3VudFBhY2thZ2Uoe1xuICAgICAgYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgIHBhY2thZ2VfaWQ6IHNuaXBwZXRfaWQsXG4gICAgICBpc19zdGFycmVkOiB0cnVlLFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gY3R4Lmpzb24oe1xuICAgIG9rOiB0cnVlLFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIlBPU1RcIl0sXG4gIGF1dGg6IFwic2Vzc2lvblwiLFxuICBqc29uQm9keTogei5vYmplY3Qoe1xuICAgIHVuc2NvcGVkX25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjb2RlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgc25pcHBldF90eXBlOiB6LmVudW0oW1wiYm9hcmRcIiwgXCJwYWNrYWdlXCIsIFwibW9kZWxcIiwgXCJmb290cHJpbnRcIl0pLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY29tcGlsZWRfanM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjaXJjdWl0X2pzb246IHouYXJyYXkoei5yZWNvcmQoei5hbnkoKSkpLm9wdGlvbmFsKCkubnVsbGFibGUoKSxcbiAgICBkdHM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBpc19wcml2YXRlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIGlzX3B1YmxpYzogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBpc191bmxpc3RlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBzbmlwcGV0OiBzbmlwcGV0U2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGxldCB7XG4gICAgdW5zY29wZWRfbmFtZSxcbiAgICBjb2RlID0gXCJcIixcbiAgICBzbmlwcGV0X3R5cGUsXG4gICAgZGVzY3JpcHRpb24gPSBcIlwiLFxuICAgIGNvbXBpbGVkX2pzLFxuICAgIGNpcmN1aXRfanNvbixcbiAgICBkdHMsXG4gICAgaXNfcHJpdmF0ZSxcbiAgICBpc19wdWJsaWMsXG4gICAgaXNfdW5saXN0ZWQsXG4gIH0gPSByZXEuanNvbkJvZHlcblxuICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpXG4gIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpXG5cbiAgaWYgKCF1bnNjb3BlZF9uYW1lKSB7XG4gICAgLy8gQ291bnQgc25pcHBldHMgb2YgdGhpcyB0eXBlIGZvciB0aGlzIHVzZXJcbiAgICBjb25zdCB1c2VyU25pcHBldHMgPSBjdHguZGIucGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHApID0+XG4gICAgICAgIHAub3duZXJfZ2l0aHViX3VzZXJuYW1lID09PSBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUgJiZcbiAgICAgICAgcC5pc19zbmlwcGV0ID09PSB0cnVlICYmXG4gICAgICAgICgocC5pc19ib2FyZCAmJiBzbmlwcGV0X3R5cGUgPT09IFwiYm9hcmRcIikgfHxcbiAgICAgICAgICAocC5pc19wYWNrYWdlICYmIHNuaXBwZXRfdHlwZSA9PT0gXCJwYWNrYWdlXCIpIHx8XG4gICAgICAgICAgKHAuaXNfbW9kZWwgJiYgc25pcHBldF90eXBlID09PSBcIm1vZGVsXCIpIHx8XG4gICAgICAgICAgKHAuaXNfZm9vdHByaW50ICYmIHNuaXBwZXRfdHlwZSA9PT0gXCJmb290cHJpbnRcIikpLFxuICAgIClcbiAgICB1bnNjb3BlZF9uYW1lID0gYHVudGl0bGVkLSR7c25pcHBldF90eXBlfS0ke3VzZXJTbmlwcGV0cy5sZW5ndGggKyAxfWBcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgIChwa2cpID0+XG4gICAgICBwa2cudW5zY29wZWRfbmFtZSA9PT0gdW5zY29wZWRfbmFtZSAmJlxuICAgICAgcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICApXG5cbiAgaWYgKGV4aXN0aW5nUGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfYWxyZWFkeV9leGlzdHNcIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGhhdmUgYWxyZWFkeSBmb3JrZWQgdGhpcyBzbmlwcGV0IGluIHlvdXIgYWNjb3VudC5cIixcbiAgICB9KVxuICB9XG5cbiAgdHJ5IHtcbiAgICAvLyBDcmVhdGUgdGhlIHBhY2thZ2UgZGlyZWN0bHkgKHdoaWNoIHdpbGwgc2VydmUgYXMgb3VyIHNuaXBwZXQpXG4gICAgY29uc3QgbmV3UGFja2FnZSA9IGN0eC5kYi5hZGRQYWNrYWdlKHtcbiAgICAgIGNyZWF0b3JfYWNjb3VudF9pZDogY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgIG93bmVyX29yZ19pZDogY3R4LmF1dGgucGVyc29uYWxfb3JnX2lkLFxuICAgICAgb3duZXJfZ2l0aHViX3VzZXJuYW1lOiBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUsXG4gICAgICBpc19zb3VyY2VfZnJvbV9naXRodWI6IGZhbHNlLFxuICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgICAgbmFtZTogYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke3Vuc2NvcGVkX25hbWV9YCxcbiAgICAgIHVuc2NvcGVkX25hbWU6IHVuc2NvcGVkX25hbWUsXG4gICAgICBsYXRlc3RfdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgbGljZW5zZTogbnVsbCxcbiAgICAgIHN0YXJfY291bnQ6IDAsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHVwZGF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgYWlfZGVzY3JpcHRpb246IG51bGwsXG4gICAgICBpc19zbmlwcGV0OiB0cnVlLFxuICAgICAgaXNfYm9hcmQ6IHNuaXBwZXRfdHlwZSA9PT0gXCJib2FyZFwiLFxuICAgICAgaXNfcGFja2FnZTogc25pcHBldF90eXBlID09PSBcInBhY2thZ2VcIixcbiAgICAgIGlzX21vZGVsOiBzbmlwcGV0X3R5cGUgPT09IFwibW9kZWxcIixcbiAgICAgIGlzX2Zvb3RwcmludDogc25pcHBldF90eXBlID09PSBcImZvb3RwcmludFwiLFxuICAgICAgc25pcHBldF90eXBlOiBzbmlwcGV0X3R5cGUsXG4gICAgICBpc19wcml2YXRlOiBpc19wcml2YXRlIHx8IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiBpc19wdWJsaWMgfHwgdHJ1ZSxcbiAgICAgIGlzX3VubGlzdGVkOiBpc191bmxpc3RlZCB8fCBmYWxzZSxcbiAgICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG51bGwsXG4gICAgICBhaV91c2FnZV9pbnN0cnVjdGlvbnM6IFwicGxhY2Vob2xkZXIgYWkgdXNhZ2UgaW5zdHJ1Y3Rpb25zXCIsXG4gICAgfSlcblxuICAgIGNvbnN0IG5ld1BhY2thZ2VSZWxlYXNlID0gY3R4LmRiLmFkZFBhY2thZ2VSZWxlYXNlKHtcbiAgICAgIHBhY2thZ2VfaWQ6IG5ld1BhY2thZ2UucGFja2FnZV9pZCxcbiAgICAgIHZlcnNpb246IFwiMC4wLjFcIixcbiAgICAgIGlzX2xhdGVzdDogdHJ1ZSxcbiAgICAgIGlzX2xvY2tlZDogZmFsc2UsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIC8vIFNldHRpbmcgdGhlIHRyYW5zcGlsZWQgYXMgdHJ1ZSBvbiBjcmVhdGlvblxuICAgICAgaGFzX3RyYW5zcGlsZWQ6IHRydWUsXG4gICAgICB0cmFuc3BpbGF0aW9uX2Vycm9yOiBudWxsLFxuICAgIH0pXG5cbiAgICBjdHguZGIudXBkYXRlUGFja2FnZShuZXdQYWNrYWdlLnBhY2thZ2VfaWQsIHtcbiAgICAgIGxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICB9KVxuXG4gICAgLy8gQWRkIHBhY2thZ2UgZmlsZXNcbiAgICAvLyBBZGQgaW5kZXgudHN4IGZpbGUgd2l0aCB0aGUgY29kZSBjb250ZW50XG4gICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgZmlsZV9wYXRoOiBcImluZGV4LnRzeFwiLFxuICAgICAgY29udGVudF90ZXh0OiBjb2RlLFxuICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgfSlcblxuICAgIC8vIEFkZCBEVFMgZmlsZSBpZiBwcm92aWRlZFxuICAgIGlmIChkdHMpIHtcbiAgICAgIGN0eC5kYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgICBjb250ZW50X3RleHQ6IGR0cyxcbiAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIEFkZCBjb21waWxlZCBKUyBpZiBwcm92aWRlZFxuICAgIGlmIChjb21waWxlZF9qcykge1xuICAgICAgY3R4LmRiLmFkZFBhY2thZ2VGaWxlKHtcbiAgICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBuZXdQYWNrYWdlUmVsZWFzZS5wYWNrYWdlX3JlbGVhc2VfaWQsXG4gICAgICAgIGZpbGVfcGF0aDogXCIvZGlzdC9pbmRleC5qc1wiLFxuICAgICAgICBjb250ZW50X3RleHQ6IGNvbXBpbGVkX2pzLFxuICAgICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQWRkIGNpcmN1aXQgSlNPTiBpZiBwcm92aWRlZFxuICAgIGlmIChjaXJjdWl0X2pzb24pIHtcbiAgICAgIGN0eC5kYi5hZGRQYWNrYWdlRmlsZSh7XG4gICAgICAgIHBhY2thZ2VfcmVsZWFzZV9pZDogbmV3UGFja2FnZVJlbGVhc2UucGFja2FnZV9yZWxlYXNlX2lkLFxuICAgICAgICBmaWxlX3BhdGg6IFwiL2Rpc3QvY2lyY3VpdC5qc29uXCIsXG4gICAgICAgIGNvbnRlbnRfdGV4dDogSlNPTi5zdHJpbmdpZnkoY2lyY3VpdF9qc29uKSxcbiAgICAgICAgY3JlYXRlZF9hdDogY3VycmVudFRpbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgc25pcHBldCByZXNwb25zZSBvYmplY3RcbiAgICBjb25zdCBzbmlwcGV0UmVzcG9uc2UgPSB7XG4gICAgICBzbmlwcGV0X2lkOiBuZXdQYWNrYWdlLnBhY2thZ2VfaWQsXG4gICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IG5ld1BhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICAgIG5hbWU6IG5ld1BhY2thZ2UubmFtZSxcbiAgICAgIHVuc2NvcGVkX25hbWU6IG5ld1BhY2thZ2UudW5zY29wZWRfbmFtZSxcbiAgICAgIG93bmVyX25hbWU6IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSxcbiAgICAgIGNvZGUsXG4gICAgICBkdHMsXG4gICAgICBjb21waWxlZF9qcyxcbiAgICAgIHN0YXJfY291bnQ6IDAsXG4gICAgICBjcmVhdGVkX2F0OiBjdXJyZW50VGltZSxcbiAgICAgIHVwZGF0ZWRfYXQ6IGN1cnJlbnRUaW1lLFxuICAgICAgc25pcHBldF90eXBlOiBzbmlwcGV0X3R5cGUsXG4gICAgICBjaXJjdWl0X2pzb246IGNpcmN1aXRfanNvbiB8fCBbXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgIGlzX3N0YXJyZWQ6IGZhbHNlLFxuICAgICAgdmVyc2lvbjogXCIwLjAuMVwiLFxuICAgICAgaXNfcHJpdmF0ZTogaXNfcHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgIGlzX3B1YmxpYzogaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogaXNfdW5saXN0ZWQgfHwgZmFsc2UsXG4gICAgfVxuXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgc25pcHBldDogc25pcHBldFJlc3BvbnNlLFxuICAgIH0pXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig1MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9jcmVhdGlvbl9mYWlsZWRcIixcbiAgICAgIG1lc3NhZ2U6IGBGYWlsZWQgdG8gY3JlYXRlIHNuaXBwZXQ6ICR7ZXJyb3J9YCxcbiAgICB9KVxuICB9XG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJQT1NUXCJdLFxuICBhdXRoOiBcInNlc3Npb25cIixcbiAganNvbkJvZHk6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0X2lkOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICB9KSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IHNuaXBwZXRfaWQgfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IHNuaXBwZXRJbmRleCA9IGN0eC5kYi5wYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgKHMpID0+IHMucGFja2FnZV9pZCA9PT0gc25pcHBldF9pZCxcbiAgKVxuXG4gIGlmIChzbmlwcGV0SW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3Qgc25pcHBldCA9IGN0eC5kYi5wYWNrYWdlc1tzbmlwcGV0SW5kZXhdXG5cbiAgaWYgKHNuaXBwZXQuY3JlYXRvcl9hY2NvdW50X2lkICE9PSBjdHguYXV0aC5naXRodWJfdXNlcm5hbWUpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMywge1xuICAgICAgZXJyb3JfY29kZTogXCJmb3JiaWRkZW5cIixcbiAgICAgIG1lc3NhZ2U6IFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBkZWxldGUgdGhpcyBzbmlwcGV0XCIsXG4gICAgfSlcbiAgfVxuXG4gIGN0eC5kYi5wYWNrYWdlcy5zcGxpY2Uoc25pcHBldEluZGV4LCAxKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIGpzZGVsaXZyX3Jlc29sdmU6IHpcbiAgICAgIC5lbnVtKFtcInRydWVcIiwgXCJmYWxzZVwiXSlcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAudHJhbnNmb3JtKCh2KSA9PiB2ID09PSBcInRydWVcIiksXG4gICAganNkZWxpdnJfcGF0aDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5hbnkoKSxcbn0pKGFzeW5jIChyZXEsIGN0eCkgPT4ge1xuICBjb25zdCB7IGpzZGVsaXZyX3BhdGgsIGpzZGVsaXZyX3Jlc29sdmUgfSA9IHJlcS5xdWVyeVxuXG4gIC8vIFBhcnNlIHRoZSBmaWxlIHBhdGhcbiAgY29uc3QgW293bmVyLCBwYWNrYWdlV2l0aFZlcnNpb24sIC4uLnJlc3RdID0ganNkZWxpdnJfcGF0aC5zcGxpdChcIi9cIilcbiAgY29uc3QgW3BhY2thZ2VOYW1lLCB2ZXJzaW9uXSA9IHBhY2thZ2VXaXRoVmVyc2lvbi5zcGxpdChcIkBcIilcbiAgY29uc3QgZmlsZU5hbWUgPSByZXN0LmpvaW4oXCIvXCIpXG5cbiAgLy8gRmluZCB0aGUgc25pcHBldFxuICBjb25zdCBfcGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKFxuICAgIChzKSA9PiBzLm93bmVyX2dpdGh1Yl91c2VybmFtZSA9PT0gb3duZXIgJiYgcy51bnNjb3BlZF9uYW1lID09PSBwYWNrYWdlTmFtZSxcbiAgKVxuXG4gIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLnBhY2thZ2VSZWxlYXNlcy5maW5kKFxuICAgIChwKSA9PiBwLnBhY2thZ2VfaWQgPT09IF9wYWNrYWdlPy5wYWNrYWdlX2lkLFxuICApXG5cbiAgY29uc3QgcGFja2FnZUZpbGVzID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgKHApID0+IHAucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZT8ucGFja2FnZV9yZWxlYXNlX2lkLFxuICApXG5cbiAgaWYgKCFfcGFja2FnZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIGlmICghZmlsZU5hbWUgJiYgIWpzZGVsaXZyX3Jlc29sdmUpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgbGF0ZXN0OiBcIjAuMC4xXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnNpb25zOiBbXCIwLjAuMVwiXSxcbiAgICAgIH0pLFxuICAgICAge1xuICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgfSxcbiAgICApXG4gIH0gZWxzZSBpZiAoIWZpbGVOYW1lICYmIGpzZGVsaXZyX3Jlc29sdmUpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICB2ZXJzaW9uOiBcIjAuMC4xXCIsXG4gICAgICB9KSxcbiAgICAgIHtcbiAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgLy8gSWYgbm8gZmlsZU5hbWUgaXMgcHJvdmlkZWQsIHJldHVybiB0aGUgZGlyZWN0b3J5IGxpc3RpbmdcbiAgaWYgKCFmaWxlTmFtZSB8fCBmaWxlTmFtZSA9PT0gXCJmbGF0XCIpIHtcbiAgICBjb25zdCBmaWxlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgIG5hbWU6IFwiaW5kZXgudHNcIixcbiAgICAgICAgaGFzaDogXCJwbGFjZWhvbGRlcl9oYXNoXCIsXG4gICAgICAgIHRpbWU6IHBhY2thZ2VSZWxlYXNlPy5jcmVhdGVkX2F0LFxuICAgICAgICBzaXplOiBwYWNrYWdlRmlsZXMuZmluZCgoZikgPT4gZi5maWxlX3BhdGggPT09IFwiaW5kZXgudHNcIik/LmNvbnRlbnRfdGV4dFxuICAgICAgICAgID8ubGVuZ3RoLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgIG5hbWU6IFwiaW5kZXguZC50c1wiLFxuICAgICAgICBoYXNoOiBcInBsYWNlaG9sZGVyX2hhc2hcIixcbiAgICAgICAgdGltZTogcGFja2FnZVJlbGVhc2U/LmNyZWF0ZWRfYXQsXG4gICAgICAgIHNpemU6IHBhY2thZ2VGaWxlcy5maW5kKChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJpbmRleC5kLnRzXCIpXG4gICAgICAgICAgPy5jb250ZW50X3RleHQ/Lmxlbmd0aCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICBuYW1lOiBcInBhY2thZ2UuanNvblwiLFxuICAgICAgICBoYXNoOiBcInBsYWNlaG9sZGVyX2hhc2hcIixcbiAgICAgICAgdGltZTogcGFja2FnZVJlbGVhc2U/LmNyZWF0ZWRfYXQsXG4gICAgICAgIHNpemU6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBuYW1lOiBgQHRzY2kvJHtvd25lcn0uJHtwYWNrYWdlTmFtZX1gLFxuICAgICAgICAgIHZlcnNpb246IHZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgICAgIG1haW46IFwiaW5kZXgudHNcIixcbiAgICAgICAgICB0eXBlczogXCJpbmRleC5kLnRzXCIsXG4gICAgICAgIH0pLmxlbmd0aCxcbiAgICAgIH0sXG4gICAgXVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICBkZWZhdWx0OiBcIi9pbmRleC50c1wiLFxuICAgICAgZmlsZXM6XG4gICAgICAgIGZpbGVOYW1lID09PSBcImZsYXRcIlxuICAgICAgICAgID8gZmlsZXMubWFwKChmKSA9PiAoe1xuICAgICAgICAgICAgICBuYW1lOiBgLyR7Zi5uYW1lfWAsXG4gICAgICAgICAgICAgIGhhc2g6IGYuaGFzaCxcbiAgICAgICAgICAgICAgdGltZTogZi50aW1lLFxuICAgICAgICAgICAgICBzaXplOiBmLnNpemUsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiZGlyZWN0b3J5XCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCIuXCIsXG4gICAgICAgICAgICAgICAgZmlsZXM6IGZpbGVzLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLCBudWxsLCAyKSwge1xuICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8vIEhhbmRsZSBmaWxlIGRvd25sb2Fkc1xuICBsZXQgY29udGVudDogc3RyaW5nXG4gIHN3aXRjaCAoZmlsZU5hbWUpIHtcbiAgICBjYXNlIFwiaW5kZXgudHNcIjpcbiAgICAgIGNvbnRlbnQgPVxuICAgICAgICBwYWNrYWdlRmlsZXMuZmluZCgoZikgPT4gZi5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIpPy5jb250ZW50X3RleHQgfHxcbiAgICAgICAgXCJcIlxuICAgICAgYnJlYWtcbiAgICBjYXNlIFwiaW5kZXguZC50c1wiOlxuICAgICAgY29udGVudCA9XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIpXG4gICAgICAgICAgPy5jb250ZW50X3RleHQgfHwgXCJcIlxuICAgICAgYnJlYWtcbiAgICBjYXNlIFwicGFja2FnZS5qc29uXCI6XG4gICAgICBjb250ZW50ID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBgQHRzY2kvJHtvd25lcn0uJHtwYWNrYWdlTmFtZX1gLFxuICAgICAgICAgIHZlcnNpb246IHZlcnNpb24gfHwgXCIwLjAuMVwiLFxuICAgICAgICAgIG1haW46IFwiaW5kZXgudHNcIixcbiAgICAgICAgICB0eXBlczogXCJpbmRleC5kLnRzXCIsXG4gICAgICAgIH0sXG4gICAgICAgIG51bGwsXG4gICAgICAgIDIsXG4gICAgICApXG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgICBlcnJvcl9jb2RlOiBcImZpbGVfbm90X2ZvdW5kXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiUmVxdWVzdGVkIGZpbGUgbm90IGZvdW5kXCIsXG4gICAgICB9KVxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShjb250ZW50LCB7XG4gICAgc3RhdHVzOiAyMDAsXG4gICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcInRleHQvcGxhaW5cIiB9LFxuICB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IGZldGNoRWFzeUVEQUNvbXBvbmVudCwgY29udmVydFJhd0Vhc3lFZGFUb1RzIH0gZnJvbSBcImVhc3llZGFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgamxjcGNiX3BhcnRfbnVtYmVyOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgc25pcHBldDogc25pcHBldFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBqbGNwY2JfcGFydF9udW1iZXIgfSA9IHJlcS5qc29uQm9keVxuXG4gIHRyeSB7XG4gICAgLy8gRmV0Y2ggdGhlIEVhc3lFREEgY29tcG9uZW50IGRhdGFcbiAgICBjb25zdCByYXdFYXN5SnNvbiA9IGF3YWl0IGZldGNoRWFzeUVEQUNvbXBvbmVudChqbGNwY2JfcGFydF9udW1iZXIpXG5cbiAgICAvLyBDb252ZXJ0IHRvIFR5cGVTY3JpcHQgUmVhY3QgY29tcG9uZW50XG4gICAgY29uc3QgdHN4Q29tcG9uZW50ID0gYXdhaXQgY29udmVydFJhd0Vhc3lFZGFUb1RzKHJhd0Vhc3lKc29uKVxuXG4gICAgLy8gQ3JlYXRlIGEgbmV3IHNuaXBwZXRcbiAgICBjb25zdCBuZXdTbmlwcGV0ID0ge1xuICAgICAgbmFtZTogYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke2psY3BjYl9wYXJ0X251bWJlcn1gLFxuICAgICAgdW5zY29wZWRfbmFtZTogamxjcGNiX3BhcnRfbnVtYmVyLFxuICAgICAgb3duZXJfbmFtZTogY3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lLFxuICAgICAgY29kZTogdHN4Q29tcG9uZW50LFxuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgc25pcHBldF90eXBlOiBcInBhY2thZ2VcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBgR2VuZXJhdGVkIGZyb20gSkxDUENCIHBhcnQgbnVtYmVyICR7amxjcGNiX3BhcnRfbnVtYmVyfWAsXG4gICAgfVxuXG4gICAgY29uc3QgY3JlYXRlZFBhY2thZ2UgPSBjdHguZGIuYWRkU25pcHBldChuZXdTbmlwcGV0IGFzIGFueSlcblxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBzbmlwcGV0OiBjcmVhdGVkUGFja2FnZSBhcyBhbnksXG4gICAgfSlcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImpsY3BjYl9nZW5lcmF0aW9uX2ZhaWxlZFwiLFxuICAgICAgbWVzc2FnZTogYEZhaWxlZCB0byBnZW5lcmF0ZSBwYWNrYWdlIGZyb20gSkxDUENCIHBhcnQ6ICR7ZXJyb3IubWVzc2FnZX1gLFxuICAgIH0pXG4gIH1cbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7XG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvU2NoZW1hdGljU3ZnLFxuICBjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2Zyxcbn0gZnJvbSBcImNpcmN1aXQtdG8tc3ZnXCJcbmltcG9ydCB7IEFueUNpcmN1aXRFbGVtZW50IH0gZnJvbSBcImNpcmN1aXQtanNvblwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICBxdWVyeVBhcmFtczogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRJZDogei5zdHJpbmcoKSxcbiAgICBpbWFnZV9vZjogei5lbnVtKFtcInNjaGVtYXRpY1wiLCBcInBjYlwiXSksXG4gICAgZm9ybWF0OiB6LmVudW0oW1wic3ZnXCJdKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBzdmc6IHouc3RyaW5nKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc25pcHBldElkLCBpbWFnZV9vZiwgZm9ybWF0IH0gPSByZXEucXVlcnlcblxuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLmdldFNuaXBwZXRCeUlkKHNuaXBwZXRJZClcblxuICAvLyBjaGVjayBpZiB0aGUgc25pcHBldCBleGlzdHNcbiAgaWYgKCFzbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIGZvcm1hdCBpcyB2YWxpZFxuICBpZiAoZm9ybWF0ICE9PSBcInN2Z1wiKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgIG1lc3NhZ2U6IFwiRm9ybWF0IG11c3QgYmUgJ3N2ZydcIixcbiAgICB9KVxuICB9XG5cbiAgaWYgKGltYWdlX29mID09PSBcInNjaGVtYXRpY1wiKSB7XG4gICAgY29uc3QgY2lyY3VpdEpzb24gPSBzbmlwcGV0LmNpcmN1aXRfanNvbiBhcyBBbnlDaXJjdWl0RWxlbWVudFtdXG4gICAgY29uc3Qgc3ZnID0gY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmcoY2lyY3VpdEpzb24pXG4gICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgc3ZnLFxuICAgIH0pXG4gIH1cblxuICBpZiAoaW1hZ2Vfb2YgPT09IFwicGNiXCIpIHtcbiAgICBjb25zdCBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyhcbiAgICAgIHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10sXG4gICAgKVxuICAgIHJldHVybiBjdHguanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHN2ZyxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN0eC5lcnJvcig0MDAsIHtcbiAgICBlcnJvcl9jb2RlOiBcIklOVkFMSURfUkVRVUVTVF9UWVBFXCIsXG4gICAgbWVzc2FnZTogXCJSZXF1ZXN0IHR5cGUgbXVzdCBiZSBlaXRoZXIgJ3NjaGVtYXRpYycgb3IgJ3BjYidcIixcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIiwgXCJQT1NUXCJdLFxuICBhdXRoOiBcIm9wdGlvbmFsX3Nlc3Npb25cIixcbiAgY29tbW9uUGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgc25pcHBldF9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBvd25lcl9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAganNvbkJvZHk6IHouYW55KCkub3B0aW9uYWwoKSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgb2s6IHouYm9vbGVhbigpLFxuICAgIHNuaXBwZXQ6IHNuaXBwZXRTY2hlbWEsXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgc25pcHBldF9pZCwgbmFtZSwgb3duZXJfbmFtZSwgdW5zY29wZWRfbmFtZSB9ID0gcmVxLmNvbW1vblBhcmFtc1xuXG4gIC8vIEZpcnN0IHRyeSB0byBmaW5kIGJ5IHNuaXBwZXRfaWRcbiAgaWYgKHNuaXBwZXRfaWQpIHtcbiAgICBjb25zdCBmb3VuZFNuaXBwZXQgPSBjdHguZGIuZ2V0U25pcHBldEJ5SWQoc25pcHBldF9pZCwgY3R4LmF1dGgpXG4gICAgaWYgKGZvdW5kU25pcHBldCkge1xuICAgICAgaWYgKGN0eC5hdXRoKSB7XG4gICAgICAgIGZvdW5kU25pcHBldC5pc19zdGFycmVkID0gY3R4LmRiLmhhc1N0YXJyZWQoXG4gICAgICAgICAgY3R4LmF1dGguYWNjb3VudF9pZCxcbiAgICAgICAgICBmb3VuZFNuaXBwZXQuc25pcHBldF9pZCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICAgICAgb2s6IHRydWUsXG4gICAgICAgIHNuaXBwZXQ6IGZvdW5kU25pcHBldCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLy8gSWYgbm90IGZvdW5kIGJ5IElELCB0cnkgdG8gZmluZCBieSBvdGhlciBwYXJhbWV0ZXJzXG4gIGNvbnN0IGZvdW5kUGFja2FnZSA9IGN0eC5kYi5wYWNrYWdlcy5maW5kKChwa2cpID0+IHtcbiAgICBpZiAoIXBrZy5pc19zbmlwcGV0KSByZXR1cm4gZmFsc2VcbiAgICBpZiAobmFtZSAmJiBwa2cubmFtZS50b0xvd2VyQ2FzZSgpICE9PSBuYW1lLnRvTG93ZXJDYXNlKCkpIHJldHVybiBmYWxzZVxuICAgIGlmIChcbiAgICAgIG93bmVyX25hbWUgJiZcbiAgICAgIHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWU/LnRvTG93ZXJDYXNlKCkgIT09IG93bmVyX25hbWUudG9Mb3dlckNhc2UoKVxuICAgIClcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIGlmIChcbiAgICAgIHVuc2NvcGVkX25hbWUgJiZcbiAgICAgIHBrZy51bnNjb3BlZF9uYW1lLnRvTG93ZXJDYXNlKCkgIT09IHVuc2NvcGVkX25hbWUudG9Mb3dlckNhc2UoKVxuICAgIClcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIHJldHVybiB0cnVlXG4gIH0pXG5cbiAgaWYgKCFmb3VuZFBhY2thZ2UpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogYFNuaXBwZXQgbm90IGZvdW5kIChzZWFyY2hlZCB1c2luZyAke0pTT04uc3RyaW5naWZ5KHJlcS5jb21tb25QYXJhbXMpfSlgLFxuICAgIH0pXG4gIH1cblxuICAvLyBDb252ZXJ0IHBhY2thZ2UgdG8gc25pcHBldCBmb3JtYXRcbiAgY29uc3Qgc25pcHBldCA9IGN0eC5kYi5nZXRTbmlwcGV0QnlJZChmb3VuZFBhY2thZ2UucGFja2FnZV9pZClcbiAgaWYgKCFzbmlwcGV0KSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IGBTbmlwcGV0IG5vdCBmb3VuZCAoc2VhcmNoZWQgdXNpbmcgJHtKU09OLnN0cmluZ2lmeShyZXEuY29tbW9uUGFyYW1zKX0pYCxcbiAgICB9KVxuICB9XG5cbiAgaWYgKGN0eC5hdXRoKSB7XG4gICAgc25pcHBldC5pc19zdGFycmVkID0gY3R4LmRiLmhhc1N0YXJyZWQoXG4gICAgICBjdHguYXV0aC5hY2NvdW50X2lkLFxuICAgICAgc25pcHBldC5zbmlwcGV0X2lkLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgc25pcHBldCxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgQW55Q2lyY3VpdEVsZW1lbnQgfSBmcm9tIFwiY2lyY3VpdC1qc29uXCJcbmltcG9ydCB7XG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvQXNzZW1ibHlTdmcsXG4gIGNvbnZlcnRDaXJjdWl0SnNvblRvUGNiU3ZnLFxuICBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2Zyxcbn0gZnJvbSBcImNpcmN1aXQtdG8tc3ZnXCJcbmltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhSb3V0ZVNwZWMoe1xuICBtZXRob2RzOiBbXCJHRVRcIl0sXG4gIGF1dGg6IFwibm9uZVwiLFxuICByb3V0ZVBhcmFtczogei5vYmplY3Qoe1xuICAgIGF1dGhvcjogei5zdHJpbmcoKSxcbiAgICBzbmlwcGV0X25hbWU6IHouc3RyaW5nKCksXG4gICAgdHlwZUZvcm1hdDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHJhd1Jlc3BvbnNlOiB0cnVlLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgYXV0aG9yLCBzbmlwcGV0X25hbWUsIHR5cGVGb3JtYXQgfSA9IHJlcS5yb3V0ZVBhcmFtc1xuXG4gIC8vIEdldCB0aGUgc25pcHBldFxuICBjb25zdCBuYW1lID0gYXV0aG9yICsgXCIvXCIgKyBzbmlwcGV0X25hbWVcbiAgY29uc3Qgc25pcHBldCA9IGN0eC5kYi5nZXRTbmlwcGV0QnlBdXRob3JBbmROYW1lKGF1dGhvciwgbmFtZSlcblxuICAvLyBJZiBzbmlwcGV0IGlzIG5vdCBmb3VuZCwgcmV0dXJuIDQwNFxuICBpZiAoIXNuaXBwZXQpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwNCwge1xuICAgICAgZXJyb3JfY29kZTogXCJzbmlwcGV0X25vdF9mb3VuZFwiLFxuICAgICAgbWVzc2FnZTogXCJTbmlwcGV0IG5vdCBmb3VuZFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgZm9ybWF0IGlzIHZhbGlkXG4gIGNvbnN0IGZvcm1hdCA9IHR5cGVGb3JtYXQuc3BsaXQoXCIuXCIpWzFdXG4gIGlmIChmb3JtYXQgIT09IFwic3ZnXCIpIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDQwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgbWVzc2FnZTogXCJGb3JtYXQgbXVzdCBiZSAnc3ZnJ1wiLFxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgdHlwZSBpcyB2YWxpZFxuICBjb25zdCB0eXBlID0gdHlwZUZvcm1hdC5zcGxpdChcIi5cIilbMF1cbiAgY29uc3QgdHlwZXNWYWxpZCA9IFtcInNjaGVtYXRpY1wiLCBcInBjYlwiLCBcImFzc2VtYmx5XCJdXG4gIGlmICghdHlwZXNWYWxpZC5pbmNsdWRlcyh0eXBlKSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgbWVzc2FnZTogYFR5cGUgbXVzdCBiZSAnJHt0eXBlc1ZhbGlkLmpvaW4oXCInIG9yICdcIil9J2AsXG4gICAgfSlcbiAgfVxuXG4gIC8vIENvbnZlcnQgY2lyY3VpdCBqc29uIHRvIHN2Z1xuICBsZXQgc3ZnOiBzdHJpbmdcbiAgaWYgKHR5cGUgPT09IFwic2NoZW1hdGljXCIpIHtcbiAgICBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyhcbiAgICAgIHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10sXG4gICAgKVxuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwicGNiXCIpIHtcbiAgICBzdmcgPSBjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyhcbiAgICAgIHNuaXBwZXQuY2lyY3VpdF9qc29uIGFzIEFueUNpcmN1aXRFbGVtZW50W10sXG4gICAgKVxuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiYXNzZW1ibHlcIikge1xuICAgIHN2ZyA9IGNvbnZlcnRDaXJjdWl0SnNvblRvQXNzZW1ibHlTdmcoXG4gICAgICBzbmlwcGV0LmNpcmN1aXRfanNvbiBhcyBBbnlDaXJjdWl0RWxlbWVudFtdLFxuICAgIClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3R4LmVycm9yKDUwMCwge1xuICAgICAgZXJyb3JfY29kZTogXCJ1bmtub3duX2Vycm9yXCIsXG4gICAgICBtZXNzYWdlOiBcIlVua25vd24gZXJyb3JcIixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShzdmcsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImltYWdlL3N2Zyt4bWxcIixcbiAgICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcInB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMFwiLFxuICAgIH0sXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBzbmlwcGV0czogei5hcnJheShzbmlwcGV0U2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgbGF0ZXN0U25pcHBldHMgPSBjdHguZGIuZ2V0TGF0ZXN0U25pcHBldHMoMjApXG4gIHJldHVybiBjdHguanNvbih7IHNuaXBwZXRzOiBsYXRlc3RTbmlwcGV0cyB9KVxufSlcbiIsICJpbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgc25pcHBldFNjaGVtYSB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiXSxcbiAgYXV0aDogXCJub25lXCIsXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIHNuaXBwZXRzOiB6LmFycmF5KHNuaXBwZXRTY2hlbWEpLFxuICB9KSxcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICB0aW1lX3BlcmlvZDogei5lbnVtKFtcIjdkYXlzXCIsIFwiMzBkYXlzXCIsIFwiYWxsXCJdKS5vcHRpb25hbCgpLmRlZmF1bHQoXCJhbGxcIiksXG4gICAgdGFnOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgdGltZV9wZXJpb2QsIHRhZyB9ID0gcmVxLnF1ZXJ5XG5cbiAgbGV0IHNpbmNlRGF0ZSA9IG5ldyBEYXRlKClcbiAgaWYgKHRpbWVfcGVyaW9kID09PSBcIjdkYXlzXCIpIHtcbiAgICBzaW5jZURhdGUuc2V0RGF0ZShzaW5jZURhdGUuZ2V0RGF0ZSgpIC0gNylcbiAgfSBlbHNlIGlmICh0aW1lX3BlcmlvZCA9PT0gXCIzMGRheXNcIikge1xuICAgIHNpbmNlRGF0ZS5zZXREYXRlKHNpbmNlRGF0ZS5nZXREYXRlKCkgLSAzMClcbiAgfSBlbHNlIHtcbiAgICBzaW5jZURhdGUgPSBuZXcgRGF0ZSgwKSAvLyBGb3IgXCJhbGxcIiwgdXNlIGVhcmxpZXN0IHBvc3NpYmxlIGRhdGVcbiAgfVxuXG4gIGNvbnN0IHRyZW5kaW5nU25pcHBldHMgPSBjdHguZGIuZ2V0VHJlbmRpbmdTbmlwcGV0cyhcbiAgICAyMCxcbiAgICBzaW5jZURhdGUudG9JU09TdHJpbmcoKSxcbiAgKVxuXG4gIC8vIEZpbHRlciBieSB0YWcgaWYgcHJvdmlkZWRcbiAgY29uc3QgZmlsdGVyZWRTbmlwcGV0cyA9IHRhZ1xuICAgID8gdHJlbmRpbmdTbmlwcGV0cy5maWx0ZXIoKHNuaXBwZXQpID0+IHNuaXBwZXQuc25pcHBldF90eXBlID09PSB0YWcpXG4gICAgOiB0cmVuZGluZ1NuaXBwZXRzXG5cbiAgcmV0dXJuIGN0eC5qc29uKHsgc25pcHBldHM6IGZpbHRlcmVkU25pcHBldHMgfSlcbn0pXG4iLCAiaW1wb3J0IHsgd2l0aFJvdXRlU3BlYyB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvbWlkZGxld2FyZS93aXRoLXdpbnRlci1zcGVjXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNuaXBwZXRTY2hlbWEsIHR5cGUgQWNjb3VudCB9IGZyb20gXCJmYWtlLXNuaXBwZXRzLWFwaS9saWIvZGIvc2NoZW1hXCJcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFJvdXRlU3BlYyh7XG4gIG1ldGhvZHM6IFtcIkdFVFwiLCBcIlBPU1RcIl0sXG4gIGF1dGg6IFwib3B0aW9uYWxfc2Vzc2lvblwiLFxuICBjb21tb25QYXJhbXM6IHoub2JqZWN0KHtcbiAgICBvd25lcl9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdW5zY29wZWRfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHN0YXJyZWRfYnk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIGpzb25Cb2R5OiB6LmFueSgpLm9wdGlvbmFsKCksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBzbmlwcGV0czogei5hcnJheShzbmlwcGV0U2NoZW1hKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBvd25lcl9uYW1lLCB1bnNjb3BlZF9uYW1lLCBzdGFycmVkX2J5IH0gPSByZXEuY29tbW9uUGFyYW1zXG4gIGxldCBzdGFycmVkQnlBY2NvdW50OiBBY2NvdW50IHwgbnVsbCA9IG51bGxcbiAgLy8gR2V0IGFsbCBwYWNrYWdlcyB0aGF0IGFyZSBzbmlwcGV0c1xuICBsZXQgcGFja2FnZXMgPSBjdHguZGIucGFja2FnZXMuZmlsdGVyKChwa2cpID0+IHBrZy5pc19zbmlwcGV0ID09PSB0cnVlKVxuXG4gIC8vIEZpbHRlciBieSBvd25lcl9uYW1lIGlmIHByb3ZpZGVkXG4gIGlmIChvd25lcl9uYW1lKSB7XG4gICAgcGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocGtnKSA9PlxuICAgICAgICBwa2cub3duZXJfZ2l0aHViX3VzZXJuYW1lPy50b0xvd2VyQ2FzZSgpID09PSBvd25lcl9uYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgKVxuICB9XG5cbiAgLy8gRmlsdGVyIGJ5IHVuc2NvcGVkX25hbWUgaWYgcHJvdmlkZWRcbiAgaWYgKHVuc2NvcGVkX25hbWUpIHtcbiAgICBwYWNrYWdlcyA9IHBhY2thZ2VzLmZpbHRlcihcbiAgICAgIChwa2cpID0+IHBrZy51bnNjb3BlZF9uYW1lLnRvTG93ZXJDYXNlKCkgPT09IHVuc2NvcGVkX25hbWUudG9Mb3dlckNhc2UoKSxcbiAgICApXG4gIH1cblxuICAvLyBGaWx0ZXIgYnkgc3RhcnJlZF9ieSBpZiBwcm92aWRlZFxuICBpZiAoc3RhcnJlZF9ieSkge1xuICAgIHN0YXJyZWRCeUFjY291bnQgPVxuICAgICAgY3R4LmRiLmFjY291bnRzLmZpbmQoXG4gICAgICAgIChhY2MpID0+IGFjYy5naXRodWJfdXNlcm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gc3RhcnJlZF9ieS50b0xvd2VyQ2FzZSgpLFxuICAgICAgKSB8fCBudWxsXG5cbiAgICBpZiAoc3RhcnJlZEJ5QWNjb3VudCkge1xuICAgICAgY29uc3QgYWNjb3VudFBhY2thZ2VzID0gY3R4LmRiLmFjY291bnRQYWNrYWdlcy5maWx0ZXIoXG4gICAgICAgIChhcCkgPT4gYXAuYWNjb3VudF9pZCA9PT0gc3RhcnJlZEJ5QWNjb3VudD8uYWNjb3VudF9pZCAmJiBhcC5pc19zdGFycmVkLFxuICAgICAgKVxuXG4gICAgICBjb25zdCBzdGFyVGltZXN0YW1wcyA9IG5ldyBNYXAoXG4gICAgICAgIGFjY291bnRQYWNrYWdlcy5tYXAoKGFwKSA9PiBbYXAucGFja2FnZV9pZCwgYXAudXBkYXRlZF9hdF0pLFxuICAgICAgKVxuXG4gICAgICAvLyBGaWx0ZXIgcGFja2FnZXMgdG8gb25seSBpbmNsdWRlIHN0YXJyZWQgb25lc1xuICAgICAgcGFja2FnZXMgPSBwYWNrYWdlcy5maWx0ZXIoKHBrZykgPT4gc3RhclRpbWVzdGFtcHMuaGFzKHBrZy5wYWNrYWdlX2lkKSlcbiAgICB9IGVsc2Uge1xuICAgICAgcGFja2FnZXMgPSBbXVxuICAgIH1cbiAgfVxuXG4gIC8vIENvbnZlcnQgcGFja2FnZXMgdG8gc25pcHBldHNcbiAgY29uc3Qgc25pcHBldHMgPSBwYWNrYWdlcy5tYXAoKHBrZykgPT4ge1xuICAgIGNvbnN0IHBhY2thZ2VSZWxlYXNlID0gY3R4LmRiLmdldFBhY2thZ2VSZWxlYXNlQnlJZChcbiAgICAgIHBrZy5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IFwiXCIsXG4gICAgKVxuXG4gICAgbGV0IHN0YXJUaW1lc3RhbXBcbiAgICBpZiAoc3RhcnJlZF9ieSAmJiBzdGFycmVkQnlBY2NvdW50KSB7XG4gICAgICBjb25zdCBhY2NvdW50UGFja2FnZSA9IGN0eC5kYi5hY2NvdW50UGFja2FnZXMuZmluZChcbiAgICAgICAgKGFwKSA9PlxuICAgICAgICAgIGFwLmFjY291bnRfaWQgPT09IHN0YXJyZWRCeUFjY291bnQuYWNjb3VudF9pZCAmJlxuICAgICAgICAgIGFwLnBhY2thZ2VfaWQgPT09IHBrZy5wYWNrYWdlX2lkICYmXG4gICAgICAgICAgYXAuaXNfc3RhcnJlZCxcbiAgICAgIClcbiAgICAgIHN0YXJUaW1lc3RhbXAgPSBhY2NvdW50UGFja2FnZT8udXBkYXRlZF9hdFxuICAgIH1cblxuICAgIGlmICghcGFja2FnZVJlbGVhc2UpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNuaXBwZXRfaWQ6IHBrZy5wYWNrYWdlX2lkLFxuICAgICAgICBwYWNrYWdlX3JlbGVhc2VfaWQ6IHBrZy5sYXRlc3RfcGFja2FnZV9yZWxlYXNlX2lkIHx8IFwiXCIsXG4gICAgICAgIHVuc2NvcGVkX25hbWU6IHBrZy51bnNjb3BlZF9uYW1lLFxuICAgICAgICBuYW1lOiBwa2cubmFtZSxcbiAgICAgICAgb3duZXJfbmFtZTogcGtnLm93bmVyX2dpdGh1Yl91c2VybmFtZSB8fCBcIlwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogcGtnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICAgIHNuaXBwZXRfdHlwZTogcGtnLnNuaXBwZXRfdHlwZSB8fCBcImJvYXJkXCIsXG4gICAgICAgIGNvZGU6IFwiXCIsXG4gICAgICAgIGR0czogXCJcIixcbiAgICAgICAgY29tcGlsZWRfanM6IFwiXCIsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IHBrZy5jcmVhdGVkX2F0LFxuICAgICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgICAgc3RhcnJlZF9hdDogc3RhclRpbWVzdGFtcCwgLy8gQWRkIHN0YXIgdGltZXN0YW1wXG4gICAgICAgIHN0YXJfY291bnQ6IGN0eC5kYi5nZXRTdGFyQ291bnQocGtnLnBhY2thZ2VfaWQpLFxuICAgICAgICBpc19zdGFycmVkOiBjdHguYXV0aFxuICAgICAgICAgID8gY3R4LmRiLmhhc1N0YXJyZWQoY3R4LmF1dGguYWNjb3VudF9pZCwgcGtnLnBhY2thZ2VfaWQpXG4gICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgdmVyc2lvbjogcGtnLmxhdGVzdF92ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgICAgaXNfcHJpdmF0ZTogcGtnLmlzX3ByaXZhdGUgfHwgZmFsc2UsXG4gICAgICAgIGlzX3B1YmxpYzogcGtnLmlzX3B1YmxpYyB8fCB0cnVlLFxuICAgICAgICBpc191bmxpc3RlZDogcGtnLmlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHBhY2thZ2VGaWxlcyA9IGN0eC5kYi5nZXRQYWNrYWdlRmlsZXNCeVJlbGVhc2VJZChcbiAgICAgIHBhY2thZ2VSZWxlYXNlLnBhY2thZ2VfcmVsZWFzZV9pZCxcbiAgICApXG4gICAgY29uc3QgY29kZUZpbGUgPSBwYWNrYWdlRmlsZXMuZmluZChcbiAgICAgIChmaWxlOiB7IGZpbGVfcGF0aDogc3RyaW5nIH0pID0+XG4gICAgICAgIGZpbGUuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIgfHwgZmlsZS5maWxlX3BhdGggPT09IFwiaW5kZXgudHN4XCIsXG4gICAgKVxuXG4gICAgY29uc3Qgc25pcHBldCA9IHtcbiAgICAgIHNuaXBwZXRfaWQ6IHBrZy5wYWNrYWdlX2lkLFxuICAgICAgcGFja2FnZV9yZWxlYXNlX2lkOiBwa2cubGF0ZXN0X3BhY2thZ2VfcmVsZWFzZV9pZCB8fCBcIlwiLFxuICAgICAgdW5zY29wZWRfbmFtZTogcGtnLnVuc2NvcGVkX25hbWUsXG4gICAgICBuYW1lOiBwa2cubmFtZSxcbiAgICAgIG93bmVyX25hbWU6IHBrZy5vd25lcl9naXRodWJfdXNlcm5hbWUgfHwgXCJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBwa2cuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIHNuaXBwZXRfdHlwZTogcGtnLnNuaXBwZXRfdHlwZSB8fCBcImJvYXJkXCIsXG4gICAgICBjb2RlOiBjb2RlRmlsZT8uY29udGVudF90ZXh0IHx8IFwiXCIsXG4gICAgICBkdHM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlOiB7IGZpbGVfcGF0aDogc3RyaW5nIH0pID0+XG4gICAgICAgICAgICBmaWxlLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIsXG4gICAgICAgICk/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY29tcGlsZWRfanM6XG4gICAgICAgIHBhY2thZ2VGaWxlcy5maW5kKFxuICAgICAgICAgIChmaWxlOiB7IGZpbGVfcGF0aDogc3RyaW5nIH0pID0+IGZpbGUuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIsXG4gICAgICAgICk/LmNvbnRlbnRfdGV4dCB8fCBcIlwiLFxuICAgICAgY3JlYXRlZF9hdDogcGtnLmNyZWF0ZWRfYXQsXG4gICAgICB1cGRhdGVkX2F0OiBwa2cudXBkYXRlZF9hdCxcbiAgICAgIHN0YXJyZWRfYXQ6IHN0YXJUaW1lc3RhbXAsIC8vIEFkZCBzdGFyIHRpbWVzdGFtcFxuICAgICAgc3Rhcl9jb3VudDogY3R4LmRiLmdldFN0YXJDb3VudChwa2cucGFja2FnZV9pZCksXG4gICAgICBpc19zdGFycmVkOiBjdHguYXV0aFxuICAgICAgICA/IGN0eC5kYi5oYXNTdGFycmVkKGN0eC5hdXRoLmFjY291bnRfaWQsIHBrZy5wYWNrYWdlX2lkKVxuICAgICAgICA6IGZhbHNlLFxuICAgICAgdmVyc2lvbjogcGtnLmxhdGVzdF92ZXJzaW9uIHx8IFwiMC4wLjFcIixcbiAgICAgIGlzX3ByaXZhdGU6IHBrZy5pc19wcml2YXRlIHx8IGZhbHNlLFxuICAgICAgaXNfcHVibGljOiBwa2cuaXNfcHVibGljIHx8IHRydWUsXG4gICAgICBpc191bmxpc3RlZDogcGtnLmlzX3VubGlzdGVkIHx8IGZhbHNlLFxuICAgIH1cblxuICAgIHJldHVybiBzbmlwcGV0XG4gIH0pXG5cbiAgcmV0dXJuIGN0eC5qc29uKHtcbiAgICBvazogdHJ1ZSxcbiAgICBzbmlwcGV0cyxcbiAgfSlcbn0pXG4iLCAiaW1wb3J0IHsgYWNjb3VudFNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGpzb25SZXNwb25zZTogei5vYmplY3Qoe1xuICAgIG9rOiB6LmJvb2xlYW4oKSxcbiAgICBpc19zdGFycmVkOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3QgeyBzbmlwcGV0X2lkIH0gPSByZXEuanNvbkJvZHlcblxuICAvLyBDaGVjayBpZiBzbmlwcGV0IGV4aXN0c1xuICBjb25zdCBzbmlwcGV0ID0gY3R4LmRiLmdldFNuaXBwZXRCeUlkKHNuaXBwZXRfaWQpXG4gIGlmICghc25pcHBldCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDA0LCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInNuaXBwZXRfbm90X2ZvdW5kXCIsXG4gICAgICBtZXNzYWdlOiBcIlNuaXBwZXQgbm90IGZvdW5kXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8vIGNoZWNrIGlmIG5vdCBhbHJlYWR5IHN0YXJyZWRcbiAgaWYgKCFjdHguZGIuaGFzU3RhcnJlZChjdHguYXV0aC5hY2NvdW50X2lkLCBzbmlwcGV0X2lkKSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcIm5vdF9zdGFycmVkXCIsXG4gICAgICBtZXNzYWdlOiBcIllvdSBoYXZlIG5vdCBzdGFycmVkIHRoaXMgc25pcHBldFwiLFxuICAgIH0pXG4gIH1cblxuICAvLyBSZW1vdmUgc3RhclxuICBjdHguZGIucmVtb3ZlU3RhcihjdHguYXV0aC5hY2NvdW50X2lkLCBzbmlwcGV0X2lkKVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgaXNfc3RhcnJlZDogZmFsc2UsXG4gIH0pXG59KVxuIiwgImltcG9ydCB7IHdpdGhSb3V0ZVNwZWMgfSBmcm9tIFwiZmFrZS1zbmlwcGV0cy1hcGkvbGliL21pZGRsZXdhcmUvd2l0aC13aW50ZXItc3BlY1wiXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiXG5pbXBvcnQgeyBzbmlwcGV0U2NoZW1hIH0gZnJvbSBcImZha2Utc25pcHBldHMtYXBpL2xpYi9kYi9zY2hlbWFcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiR0VUXCJdLFxuICBhdXRoOiBcIm5vbmVcIixcbiAgcXVlcnlQYXJhbXM6IHoub2JqZWN0KHtcbiAgICBxOiB6LnN0cmluZygpLFxuICB9KSxcbiAganNvblJlc3BvbnNlOiB6Lm9iamVjdCh7XG4gICAgc25pcHBldHM6IHouYXJyYXkoc25pcHBldFNjaGVtYSksXG4gIH0pLFxufSkoYXN5bmMgKHJlcSwgY3R4KSA9PiB7XG4gIGNvbnN0IHsgcSB9ID0gcmVxLnF1ZXJ5XG4gIGNvbnN0IHNuaXBwZXRzID0gY3R4LmRiLnNlYXJjaFNuaXBwZXRzKHEpXG4gIHJldHVybiBjdHguanNvbih7IHNuaXBwZXRzIH0pXG59KVxuIiwgImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcbmltcG9ydCB7IHNuaXBwZXRTY2hlbWEgfSBmcm9tIFwiLi4vLi4vLi4vbGliL2RiL3NjaGVtYVwiXG5pbXBvcnQgeyB3aXRoUm91dGVTcGVjIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9taWRkbGV3YXJlL3dpdGgtd2ludGVyLXNwZWNcIlxuXG5leHBvcnQgZGVmYXVsdCB3aXRoUm91dGVTcGVjKHtcbiAgbWV0aG9kczogW1wiUE9TVFwiXSxcbiAgYXV0aDogXCJzZXNzaW9uXCIsXG4gIGpzb25Cb2R5OiB6Lm9iamVjdCh7XG4gICAgc25pcHBldF9pZDogei5zdHJpbmcoKSxcbiAgICBjb2RlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB1bnNjb3BlZF9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZHRzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY29tcGlsZWRfanM6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICAgIGNpcmN1aXRfanNvbjogei5hcnJheSh6LnJlY29yZCh6LmFueSgpKSkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICAgIG1hbnVhbF9lZGl0c19qc29uX2NvbnRlbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICAgIHNuaXBwZXRfdHlwZTogei5lbnVtKFtcImJvYXJkXCIsIFwicGFja2FnZVwiLCBcIm1vZGVsXCIsIFwiZm9vdHByaW50XCJdKS5vcHRpb25hbCgpLFxuICAgIGlzX3ByaXZhdGU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgaXNfdW5saXN0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBqc29uUmVzcG9uc2U6IHoub2JqZWN0KHtcbiAgICBvazogei5ib29sZWFuKCksXG4gICAgc25pcHBldDogc25pcHBldFNjaGVtYSxcbiAgfSksXG59KShhc3luYyAocmVxLCBjdHgpID0+IHtcbiAgY29uc3Qge1xuICAgIHNuaXBwZXRfaWQsXG4gICAgY29kZSxcbiAgICBkZXNjcmlwdGlvbixcbiAgICB1bnNjb3BlZF9uYW1lLFxuICAgIGR0cyxcbiAgICBjb21waWxlZF9qcyxcbiAgICBjaXJjdWl0X2pzb24sXG4gICAgc25pcHBldF90eXBlLFxuICAgIG1hbnVhbF9lZGl0c19qc29uX2NvbnRlbnQsXG4gICAgaXNfcHJpdmF0ZSxcbiAgICBpc191bmxpc3RlZCxcbiAgfSA9IHJlcS5qc29uQm9keVxuXG4gIGNvbnN0IHBhY2thZ2VJbmRleCA9IGN0eC5kYi5wYWNrYWdlcy5maW5kSW5kZXgoXG4gICAgKHMpID0+IHMucGFja2FnZV9pZCA9PT0gc25pcHBldF9pZCxcbiAgKVxuXG4gIGlmIChwYWNrYWdlSW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIGN0eC5lcnJvcig0MDQsIHtcbiAgICAgIGVycm9yX2NvZGU6IFwic25pcHBldF9ub3RfZm91bmRcIixcbiAgICAgIG1lc3NhZ2U6IFwiU25pcHBldCBub3QgZm91bmRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgX3BhY2thZ2UgPSBjdHguZGIucGFja2FnZXNbcGFja2FnZUluZGV4XVxuICBjb25zdCBwYWNrYWdlUmVsZWFzZSA9IGN0eC5kYi5wYWNrYWdlUmVsZWFzZXMuZmluZChcbiAgICAocikgPT4gci5wYWNrYWdlX3JlbGVhc2VfaWQgPT09IF9wYWNrYWdlLmxhdGVzdF9wYWNrYWdlX3JlbGVhc2VfaWQsXG4gIClcbiAgY29uc3QgcGFja2FnZUZpbGVzID0gY3R4LmRiLnBhY2thZ2VGaWxlcy5maWx0ZXIoXG4gICAgKGYpID0+IGYucGFja2FnZV9yZWxlYXNlX2lkID09PSBwYWNrYWdlUmVsZWFzZT8ucGFja2FnZV9yZWxlYXNlX2lkLFxuICApXG4gIGNvbnN0IGNvZGVGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKGYpID0+IGYuZmlsZV9wYXRoID09PSBcImluZGV4LnRzeFwiIHx8IGYuZmlsZV9wYXRoID09PSBcImluZGV4LnRzXCIsXG4gIClcbiAgY29uc3QgZHRzRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9pbmRleC5kLnRzXCIpXG4gIGNvbnN0IGNvbXBpbGVkSnNGaWxlID0gcGFja2FnZUZpbGVzLmZpbmQoXG4gICAgKGYpID0+IGYuZmlsZV9wYXRoID09PSBcIi9kaXN0L2luZGV4LmpzXCIsXG4gIClcbiAgY29uc3QgbWFudWFsRWRpdHNKc29uRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCJtYW51YWwtZWRpdHMuanNvblwiLFxuICApXG4gIGNvbnN0IGNpcmN1aXRKc29uRmlsZSA9IHBhY2thZ2VGaWxlcy5maW5kKFxuICAgIChmKSA9PiBmLmZpbGVfcGF0aCA9PT0gXCIvZGlzdC9jaXJjdWl0Lmpzb25cIixcbiAgKVxuXG4gIGlmIChfcGFja2FnZS5vd25lcl9naXRodWJfdXNlcm5hbWUgIT09IGN0eC5hdXRoLmdpdGh1Yl91c2VybmFtZSkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNDAzLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcImZvcmJpZGRlblwiLFxuICAgICAgbWVzc2FnZTogXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGlzIHNuaXBwZXRcIixcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgdXBkYXRlZFNuaXBwZXQgPSBjdHguZGIudXBkYXRlU25pcHBldChzbmlwcGV0X2lkLCB7XG4gICAgY29kZTogY29kZSA/PyBjb2RlRmlsZT8uY29udGVudF90ZXh0ID8/IFwiXCIsXG4gICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uID8/IF9wYWNrYWdlLmRlc2NyaXB0aW9uID8/IFwiXCIsXG4gICAgdW5zY29wZWRfbmFtZTogdW5zY29wZWRfbmFtZSA/PyBfcGFja2FnZS51bnNjb3BlZF9uYW1lLFxuICAgIG5hbWU6IHVuc2NvcGVkX25hbWVcbiAgICAgID8gYCR7Y3R4LmF1dGguZ2l0aHViX3VzZXJuYW1lfS8ke3Vuc2NvcGVkX25hbWV9YFxuICAgICAgOiBfcGFja2FnZS5uYW1lLFxuICAgIGR0czogZHRzID8/IGR0c0ZpbGU/LmNvbnRlbnRfdGV4dCA/PyBcIlwiLFxuICAgIGNvbXBpbGVkX2pzOiBjb21waWxlZF9qcyA/PyBjb21waWxlZEpzRmlsZT8uY29udGVudF90ZXh0ID8/IFwiXCIsXG4gICAgbWFudWFsX2VkaXRzX2pzb25fY29udGVudDpcbiAgICAgIG1hbnVhbF9lZGl0c19qc29uX2NvbnRlbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IG1hbnVhbF9lZGl0c19qc29uX2NvbnRlbnRcbiAgICAgICAgOiAobWFudWFsRWRpdHNKc29uRmlsZT8uY29udGVudF90ZXh0ID8/IFwiXCIpLFxuICAgIGNpcmN1aXRfanNvbjpcbiAgICAgIGNpcmN1aXRfanNvbiA/P1xuICAgICAgKGNpcmN1aXRKc29uRmlsZT8uY29udGVudF90ZXh0XG4gICAgICAgID8gSlNPTi5wYXJzZShjaXJjdWl0SnNvbkZpbGUuY29udGVudF90ZXh0KVxuICAgICAgICA6IFtdKSxcbiAgICBzbmlwcGV0X3R5cGU6IHNuaXBwZXRfdHlwZSA/PyBfcGFja2FnZS5zbmlwcGV0X3R5cGUsXG4gICAgaXNfcHJpdmF0ZTogaXNfcHJpdmF0ZSA/PyBfcGFja2FnZS5pc19wcml2YXRlID8/IGZhbHNlLFxuICAgIGlzX3VubGlzdGVkOiBpc191bmxpc3RlZCA/PyBfcGFja2FnZS5pc191bmxpc3RlZCA/PyBmYWxzZSxcbiAgICB1cGRhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIH0pXG5cbiAgaWYgKCF1cGRhdGVkU25pcHBldCkge1xuICAgIHJldHVybiBjdHguZXJyb3IoNTAwLCB7XG4gICAgICBlcnJvcl9jb2RlOiBcInVwZGF0ZV9mYWlsZWRcIixcbiAgICAgIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIHVwZGF0ZSBzbmlwcGV0XCIsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBjdHguanNvbih7XG4gICAgb2s6IHRydWUsXG4gICAgc25pcHBldDogdXBkYXRlZFNuaXBwZXQsXG4gIH0pXG59KVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFBLFNBQVEsdUJBQXNCO0FBQzlCLFNBQVMsb0NBQW9DOzs7QUNEN0MsU0FBUyw0QkFBNEI7OztBQ0NyQyxTQUFTLGFBQWE7QUFDdEIsU0FBUyxtQkFBbUI7QUFFNUIsU0FBUyxlQUFlOzs7QUNKeEIsU0FBUyxTQUFTO0FBRVgsSUFBTSxjQUFjLEVBQ3hCLE9BQU87QUFBQSxFQUNOLFlBQVksRUFBRSxPQUFPO0FBQUEsRUFDckIsU0FBUyxFQUFFLE9BQU87QUFDcEIsQ0FBQyxFQUNBLFlB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Q0FBQyxRQUFRLEdBQUc7QUFBQSxRQUN4QixxQkFBcUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGdCQUFnQjtBQUFBLFFBQ2hCLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxRQUNaLFlBQVksQ0FBQyxRQUFRLEdBQUc7QUFBQSxRQUN4QixxQkFBcUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGdCQUFnQjtBQUFBLFFBQ2hCLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxRQUNaLFlBQVksQ0FBQyxRQUFRLEdBQUc7QUFBQSxRQUN4QixxQkFBcUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGdCQUFnQjtBQUFBLFFBQ2hCLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxRQUNaLFlBQVksQ0FBQyxRQUFRLEdBQUc7QUFBQSxRQUN4QixxQkFBcUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGdCQUFnQjtBQUFBLFFBQ2hCLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxRQUNaLFlBQVksQ0FBQyxRQUFRLEdBQUc7QUFBQSxRQUN4QixxQkFBcUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGdCQUFnQjtBQUFBLFFBQ2hCLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxRQUNaLFlBQVksQ0FBQyxRQUFRLEdBQUc7QUFBQSxRQUN4QixxQkFBcUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGdCQUFnQjtBQUFBLFFBQ2hCLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxRQUNaLFlBQVksQ0FBQyxRQUFRLEdBQUc7QUFBQSxRQUN4QixxQkFBcUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLGdCQUFnQjtBQUFBLFFBQ2hCLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxRQUNaLFlBQVksQ0FBQyxRQUFRLEdBQUc7QUFBQSxRQUN4QixxQkFBcUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0E7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLHFCQUFxQjtBQUFBLFFBQ3JCLE9BQU87QUFBQSxRQUNQLE1BQU07QUFBQSxRQUNOLHVCQUF1QixDQUFDO0FBQUEsTUFDMUI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFVBQ0osT0FBTztBQUFBLFVBQ1AsUUFBUTtBQUFBLFFBQ1Y7QUFBQSxRQUNBLGFBQWE7QUFBQSxRQUNiLGFBQWEsQ0FBQztBQUFBLFFBQ2QscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNB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QUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04scUJBQXFCO0FBQUEsUUFDckIsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLE1BQ1I7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFVBQ0osT0FBTztBQUFBLFVBQ1AsUUFBUTtBQUFBLFFBQ1Y7QUFBQSxRQUNBLGFBQWE7QUFBQSxRQUNiLGFBQWEsQ0FBQztBQUFBLFFBQ2QscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJB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QjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04sZ0JBQWdCO0FBQUEsUUFDaEIsTUFBTTtBQUFBLFFBQ04sWUFBWTtBQUFBLFFBQ1osWUFBWSxDQUFDLFFBQVEsR0FBRztBQUFBLFFBQ3hCLHFCQUFxQjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0UsTUFBTTtBQUFBLFFBQ04scUJBQXFCO0FBQUEsUUFDckIsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLE1BQ1I7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsVUFBVTtBQUFBLFFBQ1YsTUFBTTtBQUFBLFVBQ0osT0FBTztBQUFBLFVBQ1AsUUFBUTtBQUFBLFFBQ1Y7QUFBQSxRQUNBLGFBQWE7QUFBQSxRQUNiLGFBQWEsQ0FBQztBQUFBLFFBQ2QscUJBQXFCO0FBQUEsTUFDdkI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFDbkIsWUFBWTtBQUFBLFFBQ1osZ0JBQWdCO0FBQUEsTUFDbEI7QUFBQSxNQUNBO0FBQUEsUUFDRSxNQUFNO0FBQUEsUUFDTixtQkFBbUI7QUFBQSxRQUNuQix3QkFBd0I7QUFBQSxRQUN4QixRQUFRO0FBQUEsVUFDTixHQUFHO0FBQUEsVUFDSCxHQUFHO0FBQUEsUUFDTDtBQUFBLFFBQ0EsZ0JBQWdCO0FBQUEsUUFDaEIsa0JBQWtCO0FBQUEsUUFDbEIsOEJBQThCO0FBQUEsUUFDOUIsbUJBQW1CO0FBQUEsUUFD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QUFRLCtCQUFnRDtBQUFBLEVBQVEsc0JBQXVDRztBQUFBLEVBQVEsNkJBQThDO0FBQUEsRUFBUSx3QkFBeUNHO0FBQUEsRUFBUSx3QkFBeUNGO0FBQUEsRUFBUSxjQUErQjtBQUFBLEVBQVEsMEJBQTJDRztBQUFBLEVBQVEsd0JBQXlDTDtBQUFBLEVBQVEsd0JBQXlDRztBQUFBLEVBQVEsMEJBQTJDRztBQUFBLEVBQVEsc0NBQXVEQztBQUFBLEVBQVEsMkJBQTRDO0FBQUEsRUFBUSxxQkFBc0NUO0FBQUEsRUFBUSw2REFBOEU7QUFBQSxFQUFRLDZCQUE4Q1U7QUFBQSxFQUFRLCtCQUFnREM7QUFBQSxFQUFRLHNCQUF1Q1I7QUFBQSxFQUFRLDZCQUE4Q1M7QUFBQSxFQUFRLHdCQUF5Q047QUFBQSxFQUFRLHdCQUF5Q0Y7QUFDbDlIO0FBRUEsSUFBTSxhQUFhO0FBQUEsRUFDakIsY0FBYyxnQkFBZ0IsT0FBTyxLQUFLLG9CQUFvQixDQUFDO0FBQUEsRUFDL0Q7QUFBQSxFQUNBLGFBQWEsT0FBTyxLQUFLLFlBQVksNkJBQTZCLFlBQVksT0FBTyxFQUFFLEdBQUc7QUFDNUY7QUFFQSxJQUFPLGdCQUFROyIsCiAgIm5hbWVzIjogWyJzZWVkIiwgInN0YXRlIiwgInBhY2thZ2VSZWxlYXNlIiwgInBhY2thZ2VGaWxlcyIsICJwa2ciLCAia2xldXIiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJhbnlyb3V0ZV9kZWZhdWx0IiwgInoiLCAib3BlbmFpIiwgInoiLCAiY3JlYXRlX2RlZmF1bHQiLCAieiIsICJnZXRfZGVmYXVsdCIsICJ6IiwgImxpc3RfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJ6IiwgInoiLCAiZ2V0X2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAieiIsICJ6IiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAiZ2V0X2RlZmF1bHQiLCAieiIsICJ6IiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAiZ2V0X2RlZmF1bHQiLCAieiIsICJ6IiwgImxpc3RfZGVmYXVsdCIsICJ6IiwgInoiLCAiZ2V0X2RlZmF1bHQiLCAieiIsICJ6IiwgImxpc3RfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJyb3V0ZVNwZWMiLCAiY3JlYXRlX2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAicm91dGVTcGVjIiwgInoiLCAicm91dGVTcGVjIiwgInoiLCAiZ2V0X2RlZmF1bHQiLCAieiIsICJyb3V0ZVNwZWMiLCAieiIsICJsaXN0X2RlZmF1bHQiLCAieiIsICJjcmVhdGVfZGVmYXVsdCIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAibGlzdF9kZWZhdWx0IiwgInoiLCAieiIsICJ1cGRhdGVfZGVmYXVsdCIsICJyZWxlYXNlIiwgInoiLCAicGtnIiwgInoiLCAiY3JlYXRlX2RlZmF1bHQiLCAieiIsICJkZWxldGVfZGVmYXVsdCIsICJ6IiwgInoiLCAieiIsICJ6IiwgImdldF9kZWZhdWx0IiwgInoiLCAieiIsICJ6IiwgInoiLCAieiIsICJsaXN0X2RlZmF1bHQiLCAieiIsICJwa2ciLCAieiIsICJzZWFyY2hfZGVmYXVsdCIsICJ6IiwgInoiLCAidXBkYXRlX2RlZmF1bHQiLCAieiIsICJ6IiwgInoiLCAiYWRkX3N0YXJfZGVmYXVsdCIsICJ6IiwgImNyZWF0ZV9kZWZhdWx0IiwgInoiLCAiZGVsZXRlX2RlZmF1bHQiLCAieiIsICJkb3dubG9hZF9kZWZhdWx0IiwgInoiLCAiZmV0Y2hFYXN5RURBQ29tcG9uZW50IiwgImNvbnZlcnRSYXdFYXN5RWRhVG9UcyIsICJnZW5lcmF0ZV9mcm9tX2psY3BjYl9kZWZhdWx0IiwgInoiLCAieiIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyIsICJ6IiwgImdldF9kZWZhdWx0IiwgImNvbnZlcnRDaXJjdWl0SnNvblRvQXNzZW1ibHlTdmciLCAiY29udmVydENpcmN1aXRKc29uVG9QY2JTdmciLCAiY29udmVydENpcmN1aXRKc29uVG9TY2hlbWF0aWNTdmciLCAieiIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub1NjaGVtYXRpY1N2ZyIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub1BjYlN2ZyIsICJjb252ZXJ0Q2lyY3VpdEpzb25Ub0Fzc2VtYmx5U3ZnIiwgInoiLCAibGlzdF9sYXRlc3RfZGVmYXVsdCIsICJ6IiwgInoiLCAibGlzdF90cmVuZGluZ19kZWZhdWx0IiwgInoiLCAieiIsICJsaXN0X2RlZmF1bHQiLCAieiIsICJ6IiwgInJlbW92ZV9zdGFyX2RlZmF1bHQiLCAieiIsICJzZWFyY2hfZGVmYXVsdCIsICJ6IiwgInoiLCAidXBkYXRlX2RlZmF1bHQiLCAieiIsICJnZXRfZGVmYXVsdCIsICJhbnlyb3V0ZV9kZWZhdWx0IiwgImNyZWF0ZV9kZWZhdWx0IiwgImxpc3RfZGVmYXVsdCIsICJ1cGRhdGVfZGVmYXVsdCIsICJkZWxldGVfZGVmYXVsdCIsICJzZWFyY2hfZGVmYXVsdCIsICJhZGRfc3Rhcl9kZWZhdWx0IiwgImRvd25sb2FkX2RlZmF1bHQiLCAiZ2VuZXJhdGVfZnJvbV9qbGNwY2JfZGVmYXVsdCIsICJsaXN0X2xhdGVzdF9kZWZhdWx0IiwgImxpc3RfdHJlbmRpbmdfZGVmYXVsdCIsICJyZW1vdmVfc3Rhcl9kZWZhdWx0Il0KfQo=