@workflow/builders 5.0.0-beta.0 → 5.0.0-beta.10

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 (88) hide show
  1. package/dist/apply-swc-transform.d.ts +1 -1
  2. package/dist/apply-swc-transform.d.ts.map +1 -1
  3. package/dist/apply-swc-transform.js +1 -1
  4. package/dist/base-builder.d.ts +79 -5
  5. package/dist/base-builder.d.ts.map +1 -1
  6. package/dist/base-builder.js +424 -44
  7. package/dist/build-queue.js +1 -1
  8. package/dist/config-helpers.d.ts +2 -1
  9. package/dist/config-helpers.d.ts.map +1 -1
  10. package/dist/config-helpers.js +2 -1
  11. package/dist/constants.d.ts +3 -13
  12. package/dist/constants.d.ts.map +1 -1
  13. package/dist/constants.js +4 -14
  14. package/dist/discover-entries-esbuild-plugin.d.ts.map +1 -1
  15. package/dist/discover-entries-esbuild-plugin.js +27 -10
  16. package/dist/discover-entries-esbuild-plugin.test.js +42 -2
  17. package/dist/esbuild-tsconfig.js +1 -1
  18. package/dist/esbuild-tsconfig.test.js +1 -1
  19. package/dist/external-package-warning.test.d.ts +2 -0
  20. package/dist/external-package-warning.test.d.ts.map +1 -0
  21. package/dist/external-package-warning.test.js +219 -0
  22. package/dist/get-input-files.test.js +49 -2
  23. package/dist/index.d.ts +2 -2
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +3 -3
  26. package/dist/module-specifier.d.ts.map +1 -1
  27. package/dist/module-specifier.js +48 -10
  28. package/dist/module-specifier.test.js +21 -1
  29. package/dist/node-module-esbuild-plugin.d.ts.map +1 -1
  30. package/dist/node-module-esbuild-plugin.js +73 -23
  31. package/dist/node-module-esbuild-plugin.test.js +97 -1
  32. package/dist/pseudo-package-esbuild-plugin.js +1 -1
  33. package/dist/pseudo-package-esbuild-plugin.test.js +1 -1
  34. package/dist/request-converter.js +1 -1
  35. package/dist/resolve-sourcemap.test.d.ts +2 -0
  36. package/dist/resolve-sourcemap.test.d.ts.map +1 -0
  37. package/dist/resolve-sourcemap.test.js +126 -0
  38. package/dist/serde-checker.js +1 -1
  39. package/dist/standalone.d.ts +0 -3
  40. package/dist/standalone.d.ts.map +1 -1
  41. package/dist/standalone.js +11 -40
  42. package/dist/swc-esbuild-plugin.d.ts +10 -1
  43. package/dist/swc-esbuild-plugin.d.ts.map +1 -1
  44. package/dist/swc-esbuild-plugin.js +73 -9
  45. package/dist/swc-esbuild-plugin.test.js +280 -4
  46. package/dist/transform-utils.d.ts +3 -9
  47. package/dist/transform-utils.d.ts.map +1 -1
  48. package/dist/transform-utils.js +5 -30
  49. package/dist/transform-utils.test.js +37 -17
  50. package/dist/types.d.ts +31 -0
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/types.js +1 -1
  53. package/dist/vercel-build-output-api.d.ts +0 -2
  54. package/dist/vercel-build-output-api.d.ts.map +1 -1
  55. package/dist/vercel-build-output-api.js +32 -57
  56. package/dist/workflow-alias.js +1 -1
  57. package/dist/workflow-alias.test.js +1 -1
  58. package/dist/workflows-extractor.js +1 -1
  59. package/package.json +5 -5
  60. package/dist/apply-swc-transform.js.map +0 -1
  61. package/dist/base-builder.js.map +0 -1
  62. package/dist/build-queue.js.map +0 -1
  63. package/dist/config-helpers.js.map +0 -1
  64. package/dist/constants.js.map +0 -1
  65. package/dist/discover-entries-esbuild-plugin.js.map +0 -1
  66. package/dist/discover-entries-esbuild-plugin.test.js.map +0 -1
  67. package/dist/esbuild-tsconfig.js.map +0 -1
  68. package/dist/esbuild-tsconfig.test.js.map +0 -1
  69. package/dist/get-input-files.test.js.map +0 -1
  70. package/dist/index.js.map +0 -1
  71. package/dist/module-specifier.js.map +0 -1
  72. package/dist/module-specifier.test.js.map +0 -1
  73. package/dist/node-module-esbuild-plugin.js.map +0 -1
  74. package/dist/node-module-esbuild-plugin.test.js.map +0 -1
  75. package/dist/pseudo-package-esbuild-plugin.js.map +0 -1
  76. package/dist/pseudo-package-esbuild-plugin.test.js.map +0 -1
  77. package/dist/request-converter.js.map +0 -1
  78. package/dist/serde-checker.js.map +0 -1
  79. package/dist/standalone.js.map +0 -1
  80. package/dist/swc-esbuild-plugin.js.map +0 -1
  81. package/dist/swc-esbuild-plugin.test.js.map +0 -1
  82. package/dist/transform-utils.js.map +0 -1
  83. package/dist/transform-utils.test.js.map +0 -1
  84. package/dist/types.js.map +0 -1
  85. package/dist/vercel-build-output-api.js.map +0 -1
  86. package/dist/workflow-alias.js.map +0 -1
  87. package/dist/workflow-alias.test.js.map +0 -1
  88. package/dist/workflows-extractor.js.map +0 -1
@@ -305,6 +305,102 @@ describe('workflow-node-module-error plugin', () => {
305
305
  rmSync(tempDir, { recursive: true, force: true });
306
306
  }
307
307
  });
308
+ it('should not error when a shared module exposes a workflow-safe export alongside an unused Node.js-using export', async () => {
309
+ // Repro for https://github.com/vercel/workflow/issues/1817
310
+ //
311
+ // When a shared module has both a workflow-safe export and a Node.js-using
312
+ // export, and the workflow bundle only uses the workflow-safe one, esbuild
313
+ // should be able to tree-shake the Node.js-using export (and its imports)
314
+ // and the plugin should not emit a false-positive violation.
315
+ const tempDir = mkdtempSync(join(realTmpdir, 'node-module-plugin-test-'));
316
+ const sharedFile = join(tempDir, 'shared.ts');
317
+ const entryFile = join(tempDir, 'workflow.ts');
318
+ writeFileSync(sharedFile, `
319
+ import { readFile } from "node:fs/promises";
320
+ import path from "node:path";
321
+
322
+ export const isSupportedValue = (value) => value === "ok";
323
+
324
+ export async function readFixtureFile() {
325
+ return readFile(path.join(process.cwd(), "fixture.txt"), "utf8");
326
+ }
327
+ `);
328
+ writeFileSync(entryFile, `
329
+ import { isSupportedValue } from "./shared.js";
330
+ export function workflow() {
331
+ return isSupportedValue("ok");
332
+ }
333
+ `);
334
+ try {
335
+ const result = await esbuild.build({
336
+ entryPoints: [entryFile],
337
+ bundle: true,
338
+ write: false,
339
+ platform: 'neutral',
340
+ logLevel: 'silent',
341
+ plugins: [createNodeModuleErrorPlugin()],
342
+ });
343
+ expect(result.errors).toHaveLength(0);
344
+ }
345
+ finally {
346
+ rmSync(tempDir, { recursive: true, force: true });
347
+ }
348
+ });
349
+ it("should still error when a shared module's Node.js-using export is actually referenced", async () => {
350
+ // Counterpart to the previous test: when the workflow really does pull in
351
+ // the Node.js-using export (directly or transitively), the plugin must
352
+ // still emit the violation.
353
+ const tempDir = mkdtempSync(join(realTmpdir, 'node-module-plugin-test-'));
354
+ const sharedFile = join(tempDir, 'shared.ts');
355
+ const entryFile = join(tempDir, 'workflow.ts');
356
+ const relativeShared = relative(process.cwd(), sharedFile);
357
+ writeFileSync(sharedFile, `
358
+ import { readFile } from "node:fs/promises";
359
+ import path from "node:path";
360
+
361
+ export const isSupportedValue = (value) => value === "ok";
362
+
363
+ export async function readFixtureFile() {
364
+ return readFile(path.join(process.cwd(), "fixture.txt"), "utf8");
365
+ }
366
+ `);
367
+ writeFileSync(entryFile, `
368
+ import { isSupportedValue, readFixtureFile } from "./shared.js";
369
+ export async function workflow() {
370
+ if (!isSupportedValue("ok")) throw new Error("nope");
371
+ return readFixtureFile();
372
+ }
373
+ `);
374
+ try {
375
+ await esbuild.build({
376
+ entryPoints: [entryFile],
377
+ bundle: true,
378
+ write: false,
379
+ platform: 'neutral',
380
+ logLevel: 'silent',
381
+ plugins: [createNodeModuleErrorPlugin()],
382
+ });
383
+ throw new Error('Expected build to fail');
384
+ }
385
+ catch (error) {
386
+ if (error && typeof error === 'object' && 'errors' in error) {
387
+ const failure = error;
388
+ const paths = failure.errors.map((e) => e.text);
389
+ expect(paths.some((t) => t.includes('"node:fs/promises"'))).toBe(true);
390
+ expect(paths.some((t) => t.includes('"node:path"'))).toBe(true);
391
+ // Violations should be attributed to the shared module, not the entry.
392
+ for (const err of failure.errors) {
393
+ expect(err.location?.file).toBe(relativeShared);
394
+ }
395
+ }
396
+ else {
397
+ throw error;
398
+ }
399
+ }
400
+ finally {
401
+ rmSync(tempDir, { recursive: true, force: true });
402
+ }
403
+ });
308
404
  it('should not point to JSDoc comments when finding usage', async () => {
309
405
  const testCode = `
310
406
  import { Writable } from "stream";
@@ -510,4 +606,4 @@ describe('workflow-node-module-error helper functions', () => {
510
606
  });
511
607
  });
512
608
  });
513
- //# sourceMappingURL=node-module-esbuild-plugin.test.js.map
609
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1tb2R1bGUtZXNidWlsZC1wbHVnaW4udGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ub2RlLW1vZHVsZS1lc2J1aWxkLXBsdWdpbi50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sYUFBYSxHQUNkLE1BQU0sU0FBUyxDQUFDO0FBSWpCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBELHdFQUF3RTtBQUN4RSxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUUxQyxPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUMsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixZQUFZLEVBQ1oscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCxvQkFBb0IsR0FDckIsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6QyxLQUFLLFVBQVUsMEJBQTBCLENBQ3ZDLE1BQWMsRUFDZCxZQUEyQyxFQUFFO0lBRTdDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLDBCQUEwQixDQUFDLENBQUMsQ0FBQztJQUMxRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQy9DLGFBQWEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUV6RCxJQUFJLENBQUM7UUFDSCxN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ZW1wU3luYyxcbiAgcmVhZEZpbGVTeW5jLFxuICByZWFscGF0aFN5bmMsXG4gIHJtU3luYyxcbiAgd3JpdGVGaWxlU3luYyxcbn0gZnJvbSAnbm9kZTpmcyc7XG4vLyBAdHMtZXhwZWN0LWVycm9yIC0gSW50ZW50aW9uYWxseSB1bnVzZWQgaW1wb3J0IGZvciB0ZXN0aW5nIGdldFZpb2xhdGlvbkxvY2F0aW9uXG4vLyB3aXRoIGFuIGltcG9ydCB0aGF0IGV4aXN0cyBidXQgaXMgbmV2ZXIgcmVmZXJlbmNlZCBpbiBjb2RlXG5pbXBvcnQgaHR0cCBmcm9tICdub2RlOmh0dHAnO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSAnbm9kZTpvcyc7XG5pbXBvcnQgeyBqb2luLCByZWxhdGl2ZSwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbi8vIFJlc29sdmUgc3ltbGlua3MgaW4gdG1wZGlyIHRvIGF2b2lkIG1hY09TIC92YXIgLT4gL3ByaXZhdGUvdmFyIGlzc3Vlc1xuY29uc3QgcmVhbFRtcGRpciA9IHJlYWxwYXRoU3luYyh0bXBkaXIoKSk7XG5cbmltcG9ydCAqIGFzIGVzYnVpbGQgZnJvbSAnZXNidWlsZCc7XG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gJ3ZpdGVzdCc7XG5pbXBvcnQge1xuICBjcmVhdGVOb2RlTW9kdWxlRXJyb3JQbHVnaW4sXG4gIGVzY2FwZVJlZ0V4cCxcbiAgZ2V0SW1wb3J0ZWRJZGVudGlmaWVyLFxuICBnZXRQYWNrYWdlTmFtZSxcbiAgZ2V0VmlvbGF0aW9uTG9jYXRpb24sXG59IGZyb20gJy4vbm9kZS1tb2R1bGUtZXNidWlsZC1wbHVnaW4uanMnO1xuXG5hc3luYyBmdW5jdGlvbiBidWlsZFdvcmtmbG93V2l0aFZpb2xhdGlvbihcbiAgc291cmNlOiBzdHJpbmcsXG4gIG92ZXJyaWRlczogUGFydGlhbDxlc2J1aWxkLkJ1aWxkT3B0aW9ucz4gPSB7fVxuKSB7XG4gIGNvbnN0IHRlbXBEaXIgPSBta2R0ZW1wU3luYyhqb2luKHJlYWxUbXBkaXIsICdub2RlLW1vZHVsZS1wbHVnaW4tdGVzdC0nKSk7XG4gIGNvbnN0IGVudHJ5RmlsZSA9IGpvaW4odGVtcERpciwgJ3dvcmtmbG93LnRzJyk7XG4gIHdyaXRlRmlsZVN5bmMoZW50cnlGaWxlLCBzb3VyY2UpO1xuICBjb25zdCByZWxhdGl2ZUVudHJ5ID0gcmVsYXRpdmUocHJvY2Vzcy5jd2QoKSwgZW50cnlGaWxlKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtlbnRyeUZpbGVdLFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgcGxhdGZvcm06ICduZXV0cmFsJyxcbiAgICAgIGxvZ0xldmVsOiAnc2lsZW50JyxcbiAgICAgIHBsdWdpbnM6IFtjcmVhdGVOb2RlTW9kdWxlRXJyb3JQbHVnaW4oKSwgLi4uKG92ZXJyaWRlcy5wbHVnaW5zID8/IFtdKV0sXG4gICAgICAuLi5vdmVycmlkZXMsXG4gICAgfSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBidWlsZCB0byBmYWlsJyk7XG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICBpZiAoZXJyb3IgJiYgdHlwZW9mIGVycm9yID09PSAnb2JqZWN0JyAmJiAnZXJyb3JzJyBpbiBlcnJvcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZmFpbHVyZTogZXJyb3IgYXMgZXNidWlsZC5CdWlsZEZhaWx1cmUsXG4gICAgICAgIHJlbGF0aXZlRW50cnksXG4gICAgICB9O1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfSBmaW5hbGx5IHtcbiAgICBybVN5bmModGVtcERpciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICB9XG59XG5cbmRlc2NyaWJlKCd3b3JrZmxvdy1ub2RlLW1vZHVsZS1lcnJvciBwbHVnaW4nLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgZXJyb3Igb24gZnMgaW1wb3J0JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRlc3RDb2RlID0gYFxuICAgICAgaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tIFwiZnNcIjtcbiAgICAgIGV4cG9ydCBmdW5jdGlvbiB3b3JrZmxvdygpIHtcbiAgICAgICAgcmV0dXJuIHJlYWRGaWxlKFwidGVzdC50eHRcIik7XG4gICAgICB9XG4gICAgYDtcblxuICAgIGNvbnN0IHsgZmFpbHVyZSwgcmVsYXRpdmVFbnRyeSB9ID1cbiAgICAgIGF3YWl0IGJ1aWxkV29ya2Zsb3dXaXRoVmlvbGF0aW9uKHRlc3RDb2RlKTtcblxuICAgIGV4cGVjdChmYWlsdXJlLmVycm9ycykudG9IYXZlTGVuZ3RoKDEpO1xuICAgIGNvbnN0IHZpb2xhdGlvbiA9IGZhaWx1cmUuZXJyb3JzWzBdO1xuICAgIGV4cGVjdCh2aW9sYXRpb24udGV4dCkudG9Db250YWluKFxuICAgICAgJ1lvdSBhcmUgYXR0ZW1wdGluZyB0byB1c2UgXCJmc1wiIHdoaWNoIGlzIGEgTm9kZS5qcyBtb2R1bGUnXG4gICAgKTtcbiAgICBleHBlY3QodmlvbGF0aW9uLmxvY2F0aW9uKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIGZpbGU6IHJlbGF0aXZlRW50cnksXG4gICAgICBzdWdnZXN0aW9uOiAnTW92ZSB0aGlzIGZ1bmN0aW9uIGludG8gYSBzdGVwIGZ1bmN0aW9uLicsXG4gICAgfSk7XG4gICAgZXhwZWN0KHZpb2xhdGlvbi5sb2NhdGlvbj8ubGluZSkudG9CZUdyZWF0ZXJUaGFuKDApO1xuICAgIGV4cGVjdCh2aW9sYXRpb24ubG9jYXRpb24/LmNvbHVtbikudG9CZUdyZWF0ZXJUaGFuT3JFcXVhbCgwKTtcbiAgICBleHBlY3QodmlvbGF0aW9uLmxvY2F0aW9uPy5saW5lVGV4dCkudG9Db250YWluKCdyZWFkRmlsZScpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGVycm9yIG9uIG5vZGU6IHByZWZpeGVkIGltcG9ydHMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGVzdENvZGUgPSBgXG4gICAgICBpbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gXCJub2RlOmZzXCI7XG4gICAgICBleHBvcnQgZnVuY3Rpb24gd29ya2Zsb3coKSB7XG4gICAgICAgIHJldHVybiByZWFkRmlsZTtcbiAgICAgIH1cbiAgICBgO1xuXG4gICAgY29uc3QgeyBmYWlsdXJlLCByZWxhdGl2ZUVudHJ5IH0gPSBhd2FpdCBidWlsZFdvcmtmbG93V2l0aFZpb2xhdGlvbihcbiAgICAgIHRlc3RDb2RlLFxuICAgICAgeyBmb3JtYXQ6ICdjanMnIH1cbiAgICApO1xuXG4gICAgZXhwZWN0KGZhaWx1cmUuZXJyb3JzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgY29uc3QgdmlvbGF0aW9uID0gZmFpbHVyZS5lcnJvcnNbMF07XG4gICAgZXhwZWN0KHZpb2xhdGlvbi50ZXh0KS50b0NvbnRhaW4oXG4gICAgICAnWW91IGFyZSBhdHRlbXB0aW5nIHRvIHVzZSBcIm5vZGU6ZnNcIiB3aGljaCBpcyBhIE5vZGUuanMgbW9kdWxlJ1xuICAgICk7XG4gICAgZXhwZWN0KHZpb2xhdGlvbi5sb2NhdGlvbikudG9NYXRjaE9iamVjdCh7XG4gICAgICBmaWxlOiByZWxhdGl2ZUVudHJ5LFxuICAgICAgc3VnZ2VzdGlvbjogJ01vdmUgdGhpcyBmdW5jdGlvbiBpbnRvIGEgc3RlcCBmdW5jdGlvbi4nLFxuICAgIH0pO1xuICAgIGV4cGVjdCh2aW9sYXRpb24ubG9jYXRpb24/LmxpbmVUZXh0KS50b0NvbnRhaW4oJ3JlYWRGaWxlJyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXJyb3Igb24gbXVsdGlwbGUgTm9kZS5qcyBpbXBvcnRzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRlc3RDb2RlID0gYFxuICAgICAgaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tIFwiZnNcIjtcbiAgICAgIGltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuICAgICAgZXhwb3J0IGZ1bmN0aW9uIHdvcmtmbG93KCkge1xuICAgICAgICByZXR1cm4gcmVhZEZpbGUoam9pbihcImFcIiwgXCJiXCIpKTtcbiAgICAgIH1cbiAgICBgO1xuXG4gICAgY29uc3QgeyBmYWlsdXJlLCByZWxhdGl2ZUVudHJ5IH0gPSBhd2FpdCBidWlsZFdvcmtmbG93V2l0aFZpb2xhdGlvbihcbiAgICAgIHRlc3RDb2RlLFxuICAgICAgeyBmb3JtYXQ6ICdjanMnIH1cbiAgICApO1xuXG4gICAgZXhwZWN0KGZhaWx1cmUuZXJyb3JzKS50b0hhdmVMZW5ndGgoMik7XG5cbiAgICBjb25zdCBwYWNrYWdlcyA9IGZhaWx1cmUuZXJyb3JzLm1hcCgoZXJyb3IpID0+ICh7XG4gICAgICB0ZXh0OiBlcnJvci50ZXh0LFxuICAgICAgbG9jYXRpb246IGVycm9yLmxvY2F0aW9uLFxuICAgIH0pKTtcblxuICAgIGNvbnN0IGZzVmlvbGF0aW9uID0gcGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cudGV4dC5pbmNsdWRlcygnXCJmc1wiJykpO1xuICAgIGNvbnN0IHBhdGhWaW9sYXRpb24gPSBwYWNrYWdlcy5maW5kKChwa2cpID0+IHBrZy50ZXh0LmluY2x1ZGVzKCdcInBhdGhcIicpKTtcblxuICAgIGV4cGVjdChmc1Zpb2xhdGlvbj8udGV4dCkudG9Db250YWluKCd3aGljaCBpcyBhIE5vZGUuanMgbW9kdWxlJyk7XG4gICAgZXhwZWN0KHBhdGhWaW9sYXRpb24/LnRleHQpLnRvQ29udGFpbignd2hpY2ggaXMgYSBOb2RlLmpzIG1vZHVsZScpO1xuXG4gICAgZXhwZWN0KGZzVmlvbGF0aW9uPy5sb2NhdGlvbikudG9NYXRjaE9iamVjdCh7XG4gICAgICBmaWxlOiByZWxhdGl2ZUVudHJ5LFxuICAgICAgc3VnZ2VzdGlvbjogJ01vdmUgdGhpcyBmdW5jdGlvbiBpbnRvIGEgc3RlcCBmdW5jdGlvbi4nLFxuICAgIH0pO1xuICAgIGV4cGVjdChmc1Zpb2xhdGlvbj8ubG9jYXRpb24/LmxpbmVUZXh0KS50b0NvbnRhaW4oJ3JlYWRGaWxlJyk7XG4gICAgZXhwZWN0KHBhdGhWaW9sYXRpb24/LmxvY2F0aW9uKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIGZpbGU6IHJlbGF0aXZlRW50cnksXG4gICAgICBzdWdnZXN0aW9uOiAnTW92ZSB0aGlzIGZ1bmN0aW9uIGludG8gYSBzdGVwIGZ1bmN0aW9uLicsXG4gICAgfSk7XG4gICAgZXhwZWN0KHBhdGhWaW9sYXRpb24/LmxvY2F0aW9uPy5saW5lVGV4dCkudG9Db250YWluKCdqb2luJyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc2hvdyB0b3AtbGV2ZWwgcGFja2FnZSBuYW1lIGZvciBuZXN0ZWQgTm9kZS5qcyBpbXBvcnRzJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIFRoaXMgdGVzdCB2YWxpZGF0ZXMgdGhhdCB3aGVuIGEgcGFja2FnZSBpbiBub2RlX21vZHVsZXMgaW50ZXJuYWxseSB1c2VzXG4gICAgLy8gTm9kZS5qcyBidWlsdC1pbiBtb2R1bGVzLCB0aGUgZXJyb3IgbWVzc2FnZSBzaG93cyB0aGUgdG9wLWxldmVsIHBhY2thZ2UgbmFtZVxuICAgIC8vIChlLmcuLCBcImZha2UtcGFja2FnZVwiKSBpbnN0ZWFkIG9mIHRoZSBpbnRlcm5hbCBidWlsdC1pbiAoZS5nLiwgXCJzdHJlYW1cIikuXG4gICAgLy9cbiAgICAvLyBXZSBjcmVhdGUgYSByZWFsIG5vZGVfbW9kdWxlcyBkaXJlY3Rvcnkgc3RydWN0dXJlIHRvIHNpbXVsYXRlIHRoaXMgc2NlbmFyaW8uXG4gICAgY29uc3QgdGVtcERpciA9IG1rZHRlbXBTeW5jKGpvaW4ocmVhbFRtcGRpciwgJ25vZGUtbW9kdWxlLXBsdWdpbi10ZXN0LScpKTtcbiAgICBjb25zdCBub2RlTW9kdWxlc0RpciA9IGpvaW4odGVtcERpciwgJ25vZGVfbW9kdWxlcycsICdmYWtlLXBhY2thZ2UnKTtcbiAgICBjb25zdCB7IG1rZGlyU3luYyB9ID0gYXdhaXQgaW1wb3J0KCdub2RlOmZzJyk7XG4gICAgbWtkaXJTeW5jKG5vZGVNb2R1bGVzRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgIGNvbnN0IGZha2VQYWNrYWdlQ29kZSA9IGBcbiAgICAgIGltcG9ydCB7IFN0cmVhbSB9IGZyb20gXCJzdHJlYW1cIjtcbiAgICAgIGV4cG9ydCBmdW5jdGlvbiBmYWtlUGFja2FnZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW0oKTtcbiAgICAgIH1cbiAgICBgO1xuICAgIHdyaXRlRmlsZVN5bmMoam9pbihub2RlTW9kdWxlc0RpciwgJ2luZGV4LmpzJyksIGZha2VQYWNrYWdlQ29kZSk7XG4gICAgd3JpdGVGaWxlU3luYyhcbiAgICAgIGpvaW4obm9kZU1vZHVsZXNEaXIsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHsgbmFtZTogJ2Zha2UtcGFja2FnZScsIG1haW46ICdpbmRleC5qcycgfSlcbiAgICApO1xuXG4gICAgY29uc3QgdGVzdENvZGUgPSBgXG4gICAgICBpbXBvcnQgeyBmYWtlUGFja2FnZSB9IGZyb20gXCJmYWtlLXBhY2thZ2VcIjtcbiAgICAgIGV4cG9ydCBmdW5jdGlvbiB3b3JrZmxvdygpIHtcbiAgICAgICAgcmV0dXJuIGZha2VQYWNrYWdlKCk7XG4gICAgICB9XG4gICAgYDtcbiAgICBjb25zdCBlbnRyeUZpbGUgPSBqb2luKHRlbXBEaXIsICd3b3JrZmxvdy50cycpO1xuICAgIHdyaXRlRmlsZVN5bmMoZW50cnlGaWxlLCB0ZXN0Q29kZSk7XG4gICAgY29uc3QgcmVsYXRpdmVFbnRyeSA9IHJlbGF0aXZlKHByb2Nlc3MuY3dkKCksIGVudHJ5RmlsZSk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICAgIGVudHJ5UG9pbnRzOiBbZW50cnlGaWxlXSxcbiAgICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgICB3cml0ZTogZmFsc2UsXG4gICAgICAgIHBsYXRmb3JtOiAnbmV1dHJhbCcsXG4gICAgICAgIGxvZ0xldmVsOiAnc2lsZW50JyxcbiAgICAgICAgcGx1Z2luczogW2NyZWF0ZU5vZGVNb2R1bGVFcnJvclBsdWdpbigpXSxcbiAgICAgIH0pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBidWlsZCB0byBmYWlsJyk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgaWYgKGVycm9yICYmIHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgJiYgJ2Vycm9ycycgaW4gZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZmFpbHVyZSA9IGVycm9yIGFzIGVzYnVpbGQuQnVpbGRGYWlsdXJlO1xuICAgICAgICBleHBlY3QoZmFpbHVyZS5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICAgICAgY29uc3QgdmlvbGF0aW9uID0gZmFpbHVyZS5lcnJvcnNbMF07XG4gICAgICAgIC8vIFNob3VsZCBtZW50aW9uIHRoZSB0b3AtbGV2ZWwgcGFja2FnZSBcImZha2UtcGFja2FnZVwiLCBub3QgdGhlIGludGVybmFsIFwic3RyZWFtXCIgbW9kdWxlXG4gICAgICAgIGV4cGVjdCh2aW9sYXRpb24udGV4dCkudG9Db250YWluKCdcImZha2UtcGFja2FnZVwiJyk7XG4gICAgICAgIGV4cGVjdCh2aW9sYXRpb24udGV4dCkudG9Db250YWluKCd3aGljaCBkZXBlbmRzIG9uIE5vZGUuanMgbW9kdWxlcycpO1xuICAgICAgICBleHBlY3QodmlvbGF0aW9uLnRleHQpLm5vdC50b0NvbnRhaW4oJ1wic3RyZWFtXCInKTtcbiAgICAgICAgZXhwZWN0KHZpb2xhdGlvbi5sb2NhdGlvbikudG9NYXRjaE9iamVjdCh7XG4gICAgICAgICAgZmlsZTogcmVsYXRpdmVFbnRyeSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgcm1TeW5jKHRlbXBEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGV0ZWN0IHBhY2thZ2VzIHdoZW4gZXNidWlsZCBhbmQgcmVzb2x2ZXIgY2hvb3NlIGRpZmZlcmVudCBlbnRyeSBmaWVsZHMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGVtcERpciA9IG1rZHRlbXBTeW5jKGpvaW4ocmVhbFRtcGRpciwgJ25vZGUtbW9kdWxlLXBsdWdpbi10ZXN0LScpKTtcbiAgICBjb25zdCBub2RlTW9kdWxlc0RpciA9IGpvaW4odGVtcERpciwgJ25vZGVfbW9kdWxlcycsICdkdWFsLWVudHJ5LXBhY2thZ2UnKTtcbiAgICBjb25zdCBlc21EaXIgPSBqb2luKG5vZGVNb2R1bGVzRGlyLCAnZXNtJyk7XG4gICAgY29uc3QgY2pzRGlyID0gam9pbihub2RlTW9kdWxlc0RpciwgJ2NqcycpO1xuICAgIGNvbnN0IHsgbWtkaXJTeW5jIH0gPSBhd2FpdCBpbXBvcnQoJ25vZGU6ZnMnKTtcbiAgICBta2RpclN5bmMoZXNtRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBta2RpclN5bmMoY2pzRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgIHdyaXRlRmlsZVN5bmMoXG4gICAgICBqb2luKGVzbURpciwgJ2luZGV4LmpzJyksXG4gICAgICBgXG4gICAgICBpbXBvcnQgb3MgZnJvbSBcIm9zXCI7XG4gICAgICBleHBvcnQgZnVuY3Rpb24gZ2V0UGxhdGZvcm0oKSB7XG4gICAgICAgIHJldHVybiBvcy5wbGF0Zm9ybSgpO1xuICAgICAgfVxuICAgIGBcbiAgICApO1xuICAgIHdyaXRlRmlsZVN5bmMoXG4gICAgICBqb2luKGNqc0RpciwgJ2luZGV4LmNqcycpLFxuICAgICAgYFxuICAgICAgbW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgICAgIGdldFBsYXRmb3JtKCkge1xuICAgICAgICAgIHJldHVybiBcImNqc1wiO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIGBcbiAgICApO1xuICAgIHdyaXRlRmlsZVN5bmMoXG4gICAgICBqb2luKG5vZGVNb2R1bGVzRGlyLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIG5hbWU6ICdkdWFsLWVudHJ5LXBhY2thZ2UnLFxuICAgICAgICBtYWluOiAnY2pzL2luZGV4LmNqcycsXG4gICAgICAgIG1vZHVsZTogJ2VzbS9pbmRleC5qcycsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCB0ZXN0Q29kZSA9IGBcbiAgICAgIGltcG9ydCB7IGdldFBsYXRmb3JtIH0gZnJvbSBcImR1YWwtZW50cnktcGFja2FnZVwiO1xuICAgICAgZXhwb3J0IGZ1bmN0aW9uIHdvcmtmbG93KCkge1xuICAgICAgICByZXR1cm4gZ2V0UGxhdGZvcm0oKTtcbiAgICAgIH1cbiAgICBgO1xuICAgIGNvbnN0IGVudHJ5RmlsZSA9IGpvaW4odGVtcERpciwgJ3dvcmtmbG93LnRzJyk7XG4gICAgd3JpdGVGaWxlU3luYyhlbnRyeUZpbGUsIHRlc3RDb2RlKTtcbiAgICBjb25zdCByZWxhdGl2ZUVudHJ5ID0gcmVsYXRpdmUocHJvY2Vzcy5jd2QoKSwgZW50cnlGaWxlKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBlc2J1aWxkLmJ1aWxkKHtcbiAgICAgICAgZW50cnlQb2ludHM6IFtlbnRyeUZpbGVdLFxuICAgICAgICBidW5kbGU6IHRydWUsXG4gICAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgICAgcGxhdGZvcm06ICduZXV0cmFsJyxcbiAgICAgICAgZm9ybWF0OiAnY2pzJyxcbiAgICAgICAgbWFpbkZpZWxkczogWydtb2R1bGUnLCAnbWFpbiddLFxuICAgICAgICBsb2dMZXZlbDogJ3NpbGVudCcsXG4gICAgICAgIHBsdWdpbnM6IFtjcmVhdGVOb2RlTW9kdWxlRXJyb3JQbHVnaW4oKV0sXG4gICAgICB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgYnVpbGQgdG8gZmFpbCcpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGlmIChlcnJvciAmJiB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmICdlcnJvcnMnIGluIGVycm9yKSB7XG4gICAgICAgIGNvbnN0IGZhaWx1cmUgPSBlcnJvciBhcyBlc2J1aWxkLkJ1aWxkRmFpbHVyZTtcbiAgICAgICAgZXhwZWN0KGZhaWx1cmUuZXJyb3JzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgICAgIGNvbnN0IHZpb2xhdGlvbiA9IGZhaWx1cmUuZXJyb3JzWzBdO1xuICAgICAgICBleHBlY3QodmlvbGF0aW9uLnRleHQpLnRvQ29udGFpbignXCJkdWFsLWVudHJ5LXBhY2thZ2VcIicpO1xuICAgICAgICBleHBlY3QodmlvbGF0aW9uLnRleHQpLnRvQ29udGFpbignZGVwZW5kcyBvbiBOb2RlLmpzIG1vZHVsZXMnKTtcbiAgICAgICAgZXhwZWN0KHZpb2xhdGlvbi5sb2NhdGlvbikudG9NYXRjaE9iamVjdCh7XG4gICAgICAgICAgZmlsZTogcmVsYXRpdmVFbnRyeSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgcm1TeW5jKHRlbXBEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmluZCB1c2FnZSBvZiBuYW1lc3BhY2UgaW1wb3J0cycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0ZXN0Q29kZSA9IGBcbiAgICAgIGltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuICAgICAgZXhwb3J0IGZ1bmN0aW9uIHdvcmtmbG93KCkge1xuICAgICAgICByZXR1cm4gZnMucmVhZEZpbGUoXCJ0ZXN0LnR4dFwiKTtcbiAgICAgIH1cbiAgICBgO1xuXG4gICAgY29uc3QgeyBmYWlsdXJlLCByZWxhdGl2ZUVudHJ5IH0gPVxuICAgICAgYXdhaXQgYnVpbGRXb3JrZmxvd1dpdGhWaW9sYXRpb24odGVzdENvZGUpO1xuXG4gICAgZXhwZWN0KGZhaWx1cmUuZXJyb3JzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgY29uc3QgdmlvbGF0aW9uID0gZmFpbHVyZS5lcnJvcnNbMF07XG4gICAgZXhwZWN0KHZpb2xhdGlvbi50ZXh0KS50b0NvbnRhaW4oJ1wiZnNcIiB3aGljaCBpcyBhIE5vZGUuanMgbW9kdWxlJyk7XG4gICAgZXhwZWN0KHZpb2xhdGlvbi5sb2NhdGlvbikudG9NYXRjaE9iamVjdCh7XG4gICAgICBmaWxlOiByZWxhdGl2ZUVudHJ5LFxuICAgIH0pO1xuICAgIGV4cGVjdCh2aW9sYXRpb24ubG9jYXRpb24/LmxpbmVUZXh0KS50b0NvbnRhaW4oJ2ZzLnJlYWRGaWxlJyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmluZCB1c2FnZSBvZiBkZWZhdWx0IGltcG9ydHMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGVzdENvZGUgPSBgXG4gICAgICBpbXBvcnQgZnMgZnJvbSBcImZzXCI7XG4gICAgICBleHBvcnQgZnVuY3Rpb24gd29ya2Zsb3coKSB7XG4gICAgICAgIHJldHVybiBmcy5yZWFkRmlsZShcInRlc3QudHh0XCIpO1xuICAgICAgfVxuICAgIGA7XG5cbiAgICBjb25zdCB7IGZhaWx1cmUsIHJlbGF0aXZlRW50cnkgfSA9XG4gICAgICBhd2FpdCBidWlsZFdvcmtmbG93V2l0aFZpb2xhdGlvbih0ZXN0Q29kZSk7XG5cbiAgICBleHBlY3QoZmFpbHVyZS5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICBjb25zdCB2aW9sYXRpb24gPSBmYWlsdXJlLmVycm9yc1swXTtcbiAgICBleHBlY3QodmlvbGF0aW9uLnRleHQpLnRvQ29udGFpbignXCJmc1wiIHdoaWNoIGlzIGEgTm9kZS5qcyBtb2R1bGUnKTtcbiAgICBleHBlY3QodmlvbGF0aW9uLmxvY2F0aW9uKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIGZpbGU6IHJlbGF0aXZlRW50cnksXG4gICAgfSk7XG4gICAgZXhwZWN0KHZpb2xhdGlvbi5sb2NhdGlvbj8ubGluZVRleHQpLnRvQ29udGFpbignZnMucmVhZEZpbGUnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmaW5kIHVzYWdlIG9mIGFsaWFzZWQgaW1wb3J0cycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0ZXN0Q29kZSA9IGBcbiAgICAgIGltcG9ydCB7IHJlYWRGaWxlIGFzIHJlYWQgfSBmcm9tIFwiZnNcIjtcbiAgICAgIGV4cG9ydCBmdW5jdGlvbiB3b3JrZmxvdygpIHtcbiAgICAgICAgcmV0dXJuIHJlYWQoXCJ0ZXN0LnR4dFwiKTtcbiAgICAgIH1cbiAgICBgO1xuXG4gICAgY29uc3QgeyBmYWlsdXJlLCByZWxhdGl2ZUVudHJ5IH0gPVxuICAgICAgYXdhaXQgYnVpbGRXb3JrZmxvd1dpdGhWaW9sYXRpb24odGVzdENvZGUpO1xuXG4gICAgZXhwZWN0KGZhaWx1cmUuZXJyb3JzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgY29uc3QgdmlvbGF0aW9uID0gZmFpbHVyZS5lcnJvcnNbMF07XG4gICAgZXhwZWN0KHZpb2xhdGlvbi50ZXh0KS50b0NvbnRhaW4oJ1wiZnNcIiB3aGljaCBpcyBhIE5vZGUuanMgbW9kdWxlJyk7XG4gICAgZXhwZWN0KHZpb2xhdGlvbi5sb2NhdGlvbikudG9NYXRjaE9iamVjdCh7XG4gICAgICBmaWxlOiByZWxhdGl2ZUVudHJ5LFxuICAgIH0pO1xuICAgIC8vIFNob3VsZCBwb2ludCB0byB0aGUgYWxpYXNlZCBpZGVudGlmaWVyIFwicmVhZFwiLCBub3QgXCJyZWFkRmlsZVwiXG4gICAgZXhwZWN0KHZpb2xhdGlvbi5sb2NhdGlvbj8ubGluZVRleHQpLnRvQ29udGFpbigncmVhZCgnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgZXJyb3Igd2hlbiBpbXBvcnQgaXMgdW51c2VkICh0cmVlLXNoYWtlbiknLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gTm90ZTogZXNidWlsZCB0cmVlLXNoYWtlcyB1bnVzZWQgaW1wb3J0cywgc28gdGhleSBuZXZlciB0cmlnZ2VyIHJlc29sdXRpb24uXG4gICAgLy8gVGhpcyBpcyBleHBlY3RlZCBiZWhhdmlvciAtIGlmIHRoZSBpbXBvcnQgaXNuJ3QgdXNlZCwgdGhlIG1vZHVsZSB3b24ndCBiZSBidW5kbGVkLlxuICAgIGNvbnN0IHRlc3RDb2RlID0gYFxuICAgICAgaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tIFwiZnNcIjtcbiAgICAgIGV4cG9ydCBmdW5jdGlvbiB3b3JrZmxvdygpIHtcbiAgICAgICAgcmV0dXJuIFwibm8gZnMgdXNhZ2VcIjtcbiAgICAgIH1cbiAgICBgO1xuXG4gICAgY29uc3QgdGVtcERpciA9IG1rZHRlbXBTeW5jKGpvaW4ocmVhbFRtcGRpciwgJ25vZGUtbW9kdWxlLXBsdWdpbi10ZXN0LScpKTtcbiAgICBjb25zdCBlbnRyeUZpbGUgPSBqb2luKHRlbXBEaXIsICd3b3JrZmxvdy50cycpO1xuICAgIHdyaXRlRmlsZVN5bmMoZW50cnlGaWxlLCB0ZXN0Q29kZSk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gQnVpbGQgc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB1bnVzZWQgaW1wb3J0cyBhcmUgdHJlZS1zaGFrZW5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgICBlbnRyeVBvaW50czogW2VudHJ5RmlsZV0sXG4gICAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgICBwbGF0Zm9ybTogJ25ldXRyYWwnLFxuICAgICAgICBsb2dMZXZlbDogJ3NpbGVudCcsXG4gICAgICAgIHBsdWdpbnM6IFtjcmVhdGVOb2RlTW9kdWxlRXJyb3JQbHVnaW4oKV0sXG4gICAgICB9KTtcbiAgICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHJtU3luYyh0ZW1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBlcnJvciB3aGVuIGEgc2hhcmVkIG1vZHVsZSBleHBvc2VzIGEgd29ya2Zsb3ctc2FmZSBleHBvcnQgYWxvbmdzaWRlIGFuIHVudXNlZCBOb2RlLmpzLXVzaW5nIGV4cG9ydCcsIGFzeW5jICgpID0+IHtcbiAgICAvLyBSZXBybyBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC93b3JrZmxvdy9pc3N1ZXMvMTgxN1xuICAgIC8vXG4gICAgLy8gV2hlbiBhIHNoYXJlZCBtb2R1bGUgaGFzIGJvdGggYSB3b3JrZmxvdy1zYWZlIGV4cG9ydCBhbmQgYSBOb2RlLmpzLXVzaW5nXG4gICAgLy8gZXhwb3J0LCBhbmQgdGhlIHdvcmtmbG93IGJ1bmRsZSBvbmx5IHVzZXMgdGhlIHdvcmtmbG93LXNhZmUgb25lLCBlc2J1aWxkXG4gICAgLy8gc2hvdWxkIGJlIGFibGUgdG8gdHJlZS1zaGFrZSB0aGUgTm9kZS5qcy11c2luZyBleHBvcnQgKGFuZCBpdHMgaW1wb3J0cylcbiAgICAvLyBhbmQgdGhlIHBsdWdpbiBzaG91bGQgbm90IGVtaXQgYSBmYWxzZS1wb3NpdGl2ZSB2aW9sYXRpb24uXG4gICAgY29uc3QgdGVtcERpciA9IG1rZHRlbXBTeW5jKGpvaW4ocmVhbFRtcGRpciwgJ25vZGUtbW9kdWxlLXBsdWdpbi10ZXN0LScpKTtcbiAgICBjb25zdCBzaGFyZWRGaWxlID0gam9pbih0ZW1wRGlyLCAnc2hhcmVkLnRzJyk7XG4gICAgY29uc3QgZW50cnlGaWxlID0gam9pbih0ZW1wRGlyLCAnd29ya2Zsb3cudHMnKTtcblxuICAgIHdyaXRlRmlsZVN5bmMoXG4gICAgICBzaGFyZWRGaWxlLFxuICAgICAgYFxuICAgICAgaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuICAgICAgaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuXG4gICAgICBleHBvcnQgY29uc3QgaXNTdXBwb3J0ZWRWYWx1ZSA9ICh2YWx1ZSkgPT4gdmFsdWUgPT09IFwib2tcIjtcblxuICAgICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRGaXh0dXJlRmlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHJlYWRGaWxlKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcImZpeHR1cmUudHh0XCIpLCBcInV0ZjhcIik7XG4gICAgICB9XG4gICAgICBgXG4gICAgKTtcbiAgICB3cml0ZUZpbGVTeW5jKFxuICAgICAgZW50cnlGaWxlLFxuICAgICAgYFxuICAgICAgaW1wb3J0IHsgaXNTdXBwb3J0ZWRWYWx1ZSB9IGZyb20gXCIuL3NoYXJlZC5qc1wiO1xuICAgICAgZXhwb3J0IGZ1bmN0aW9uIHdvcmtmbG93KCkge1xuICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWRWYWx1ZShcIm9rXCIpO1xuICAgICAgfVxuICAgICAgYFxuICAgICk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICAgIGVudHJ5UG9pbnRzOiBbZW50cnlGaWxlXSxcbiAgICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgICB3cml0ZTogZmFsc2UsXG4gICAgICAgIHBsYXRmb3JtOiAnbmV1dHJhbCcsXG4gICAgICAgIGxvZ0xldmVsOiAnc2lsZW50JyxcbiAgICAgICAgcGx1Z2luczogW2NyZWF0ZU5vZGVNb2R1bGVFcnJvclBsdWdpbigpXSxcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgcm1TeW5jKHRlbXBEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHN0aWxsIGVycm9yIHdoZW4gYSBzaGFyZWQgbW9kdWxlJ3MgTm9kZS5qcy11c2luZyBleHBvcnQgaXMgYWN0dWFsbHkgcmVmZXJlbmNlZFwiLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gQ291bnRlcnBhcnQgdG8gdGhlIHByZXZpb3VzIHRlc3Q6IHdoZW4gdGhlIHdvcmtmbG93IHJlYWxseSBkb2VzIHB1bGwgaW5cbiAgICAvLyB0aGUgTm9kZS5qcy11c2luZyBleHBvcnQgKGRpcmVjdGx5IG9yIHRyYW5zaXRpdmVseSksIHRoZSBwbHVnaW4gbXVzdFxuICAgIC8vIHN0aWxsIGVtaXQgdGhlIHZpb2xhdGlvbi5cbiAgICBjb25zdCB0ZW1wRGlyID0gbWtkdGVtcFN5bmMoam9pbihyZWFsVG1wZGlyLCAnbm9kZS1tb2R1bGUtcGx1Z2luLXRlc3QtJykpO1xuICAgIGNvbnN0IHNoYXJlZEZpbGUgPSBqb2luKHRlbXBEaXIsICdzaGFyZWQudHMnKTtcbiAgICBjb25zdCBlbnRyeUZpbGUgPSBqb2luKHRlbXBEaXIsICd3b3JrZmxvdy50cycpO1xuICAgIGNvbnN0IHJlbGF0aXZlU2hhcmVkID0gcmVsYXRpdmUocHJvY2Vzcy5jd2QoKSwgc2hhcmVkRmlsZSk7XG5cbiAgICB3cml0ZUZpbGVTeW5jKFxuICAgICAgc2hhcmVkRmlsZSxcbiAgICAgIGBcbiAgICAgIGltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbiAgICAgIGltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcblxuICAgICAgZXhwb3J0IGNvbnN0IGlzU3VwcG9ydGVkVmFsdWUgPSAodmFsdWUpID0+IHZhbHVlID09PSBcIm9rXCI7XG5cbiAgICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkRml4dHVyZUZpbGUoKSB7XG4gICAgICAgIHJldHVybiByZWFkRmlsZShwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJmaXh0dXJlLnR4dFwiKSwgXCJ1dGY4XCIpO1xuICAgICAgfVxuICAgICAgYFxuICAgICk7XG4gICAgd3JpdGVGaWxlU3luYyhcbiAgICAgIGVudHJ5RmlsZSxcbiAgICAgIGBcbiAgICAgIGltcG9ydCB7IGlzU3VwcG9ydGVkVmFsdWUsIHJlYWRGaXh0dXJlRmlsZSB9IGZyb20gXCIuL3NoYXJlZC5qc1wiO1xuICAgICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdvcmtmbG93KCkge1xuICAgICAgICBpZiAoIWlzU3VwcG9ydGVkVmFsdWUoXCJva1wiKSkgdGhyb3cgbmV3IEVycm9yKFwibm9wZVwiKTtcbiAgICAgICAgcmV0dXJuIHJlYWRGaXh0dXJlRmlsZSgpO1xuICAgICAgfVxuICAgICAgYFxuICAgICk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICAgIGVudHJ5UG9pbnRzOiBbZW50cnlGaWxlXSxcbiAgICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgICB3cml0ZTogZmFsc2UsXG4gICAgICAgIHBsYXRmb3JtOiAnbmV1dHJhbCcsXG4gICAgICAgIGxvZ0xldmVsOiAnc2lsZW50JyxcbiAgICAgICAgcGx1Z2luczogW2NyZWF0ZU5vZGVNb2R1bGVFcnJvclBsdWdpbigpXSxcbiAgICAgIH0pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBidWlsZCB0byBmYWlsJyk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgaWYgKGVycm9yICYmIHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgJiYgJ2Vycm9ycycgaW4gZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZmFpbHVyZSA9IGVycm9yIGFzIGVzYnVpbGQuQnVpbGRGYWlsdXJlO1xuICAgICAgICBjb25zdCBwYXRocyA9IGZhaWx1cmUuZXJyb3JzLm1hcCgoZSkgPT4gZS50ZXh0KTtcbiAgICAgICAgZXhwZWN0KHBhdGhzLnNvbWUoKHQpID0+IHQuaW5jbHVkZXMoJ1wibm9kZTpmcy9wcm9taXNlc1wiJykpKS50b0JlKHRydWUpO1xuICAgICAgICBleHBlY3QocGF0aHMuc29tZSgodCkgPT4gdC5pbmNsdWRlcygnXCJub2RlOnBhdGhcIicpKSkudG9CZSh0cnVlKTtcbiAgICAgICAgLy8gVmlvbGF0aW9ucyBzaG91bGQgYmUgYXR0cmlidXRlZCB0byB0aGUgc2hhcmVkIG1vZHVsZSwgbm90IHRoZSBlbnRyeS5cbiAgICAgICAgZm9yIChjb25zdCBlcnIgb2YgZmFpbHVyZS5lcnJvcnMpIHtcbiAgICAgICAgICBleHBlY3QoZXJyLmxvY2F0aW9uPy5maWxlKS50b0JlKHJlbGF0aXZlU2hhcmVkKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHJtU3luYyh0ZW1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBwb2ludCB0byBKU0RvYyBjb21tZW50cyB3aGVuIGZpbmRpbmcgdXNhZ2UnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGVzdENvZGUgPSBgXG4gICAgICBpbXBvcnQgeyBXcml0YWJsZSB9IGZyb20gXCJzdHJlYW1cIjtcbiAgICAgIC8qKlxuICAgICAgICogQ29udmVydCBhIFdlYiBXcml0YWJsZVN0cmVhbTxzdHJpbmc+IGludG8gYSBOb2RlLmpzIFdyaXRhYmxlIHN0cmVhbVxuICAgICAgICovXG4gICAgICBleHBvcnQgZnVuY3Rpb24gd29ya2Zsb3coKSB7XG4gICAgICAgIHJldHVybiBuZXcgV3JpdGFibGUoKTtcbiAgICAgIH1cbiAgICBgO1xuXG4gICAgY29uc3QgeyBmYWlsdXJlIH0gPSBhd2FpdCBidWlsZFdvcmtmbG93V2l0aFZpb2xhdGlvbih0ZXN0Q29kZSk7XG5cbiAgICBleHBlY3QoZmFpbHVyZS5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICBjb25zdCB2aW9sYXRpb24gPSBmYWlsdXJlLmVycm9yc1swXTtcbiAgICBleHBlY3QodmlvbGF0aW9uLnRleHQpLnRvQ29udGFpbignXCJzdHJlYW1cIiB3aGljaCBpcyBhIE5vZGUuanMgbW9kdWxlJyk7XG4gICAgLy8gU2hvdWxkIHBvaW50IHRvIHRoZSBhY3R1YWwgY29kZSB1c2FnZSwgbm90IHRoZSBKU0RvYyBjb21tZW50XG4gICAgZXhwZWN0KHZpb2xhdGlvbi5sb2NhdGlvbj8ubGluZVRleHQpLnRvQ29udGFpbignbmV3IFdyaXRhYmxlKCknKTtcbiAgICBleHBlY3QodmlvbGF0aW9uLmxvY2F0aW9uPy5saW5lVGV4dCkubm90LnRvQ29udGFpbignKicpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBwb2ludCB0byBzaW5nbGUtbGluZSBibG9jayBjb21tZW50cyB3aGVuIGZpbmRpbmcgdXNhZ2UnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGVzdENvZGUgPSBgXG4gICAgICBpbXBvcnQgeyBXcml0YWJsZSB9IGZyb20gXCJzdHJlYW1cIjtcbiAgICAgIC8qIFdyaXRhYmxlIGlzIHVzZWQgYmVsb3cgKi9cbiAgICAgIGV4cG9ydCBmdW5jdGlvbiB3b3JrZmxvdygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBXcml0YWJsZSgpO1xuICAgICAgfVxuICAgIGA7XG5cbiAgICBjb25zdCB7IGZhaWx1cmUgfSA9IGF3YWl0IGJ1aWxkV29ya2Zsb3dXaXRoVmlvbGF0aW9uKHRlc3RDb2RlKTtcblxuICAgIGV4cGVjdChmYWlsdXJlLmVycm9ycykudG9IYXZlTGVuZ3RoKDEpO1xuICAgIGNvbnN0IHZpb2xhdGlvbiA9IGZhaWx1cmUuZXJyb3JzWzBdO1xuICAgIC8vIFNob3VsZCBwb2ludCB0byB0aGUgYWN0dWFsIGNvZGUgdXNhZ2UsIG5vdCB0aGUgY29tbWVudFxuICAgIGV4cGVjdCh2aW9sYXRpb24ubG9jYXRpb24/LmxpbmVUZXh0KS50b0NvbnRhaW4oJ25ldyBXcml0YWJsZSgpJyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IHRyZWF0IGNvbW1lbnQgZGVsaW1pdGVycyBpbnNpZGUgc3RyaW5ncyBhcyBjb21tZW50cycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0ZXN0Q29kZSA9IGBcbiAgICAgIGltcG9ydCB7IFdyaXRhYmxlIH0gZnJvbSBcInN0cmVhbVwiO1xuICAgICAgY29uc3QgcGF0dGVybiA9IFwiLyogV3JpdGFibGUgKi9cIjtcbiAgICAgIGV4cG9ydCBmdW5jdGlvbiB3b3JrZmxvdygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBXcml0YWJsZSgpO1xuICAgICAgfVxuICAgIGA7XG5cbiAgICBjb25zdCB7IGZhaWx1cmUgfSA9IGF3YWl0IGJ1aWxkV29ya2Zsb3dXaXRoVmlvbGF0aW9uKHRlc3RDb2RlKTtcblxuICAgIGV4cGVjdChmYWlsdXJlLmVycm9ycykudG9IYXZlTGVuZ3RoKDEpO1xuICAgIGNvbnN0IHZpb2xhdGlvbiA9IGZhaWx1cmUuZXJyb3JzWzBdO1xuICAgIGV4cGVjdCh2aW9sYXRpb24udGV4dCkudG9Db250YWluKCdcInN0cmVhbVwiIHdoaWNoIGlzIGEgTm9kZS5qcyBtb2R1bGUnKTtcbiAgICAvLyBTaG91bGQgcG9pbnQgdG8gYWN0dWFsIGNvZGUsIG5vdCB0aGUgc3RyaW5nIGNvbnRhaW5pbmcgXCJXcml0YWJsZVwiXG4gICAgZXhwZWN0KHZpb2xhdGlvbi5sb2NhdGlvbj8ubGluZVRleHQpLnRvQ29udGFpbignbmV3IFdyaXRhYmxlKCknKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBlcnJvciBvbiBCdW4gbW9kdWxlIGltcG9ydHMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGVzdENvZGUgPSBgXG4gICAgICBpbXBvcnQgeyBzZXJ2ZSB9IGZyb20gXCJidW5cIjtcbiAgICAgIGV4cG9ydCBmdW5jdGlvbiB3b3JrZmxvdygpIHtcbiAgICAgICAgcmV0dXJuIHNlcnZlKHsgcG9ydDogMzAwMCB9KTtcbiAgICAgIH1cbiAgICBgO1xuXG4gICAgY29uc3QgeyBmYWlsdXJlLCByZWxhdGl2ZUVudHJ5IH0gPVxuICAgICAgYXdhaXQgYnVpbGRXb3JrZmxvd1dpdGhWaW9sYXRpb24odGVzdENvZGUpO1xuXG4gICAgZXhwZWN0KGZhaWx1cmUuZXJyb3JzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgY29uc3QgdmlvbGF0aW9uID0gZmFpbHVyZS5lcnJvcnNbMF07XG4gICAgZXhwZWN0KHZpb2xhdGlvbi50ZXh0KS50b0NvbnRhaW4oJ1wiYnVuXCIgd2hpY2ggaXMgYSBCdW4gbW9kdWxlJyk7XG4gICAgZXhwZWN0KHZpb2xhdGlvbi50ZXh0KS50b0NvbnRhaW4oJ0J1biBtb2R1bGVzIGFyZSBub3QgYXZhaWxhYmxlJyk7XG4gICAgZXhwZWN0KHZpb2xhdGlvbi5sb2NhdGlvbikudG9NYXRjaE9iamVjdCh7XG4gICAgICBmaWxlOiByZWxhdGl2ZUVudHJ5LFxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGVycm9yIG9uIEJ1biBzdWJwYXRoIGltcG9ydHMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGVzdENvZGUgPSBgXG4gICAgICBpbXBvcnQgeyBEYXRhYmFzZSB9IGZyb20gXCJidW46c3FsaXRlXCI7XG4gICAgICBleHBvcnQgZnVuY3Rpb24gd29ya2Zsb3coKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0YWJhc2UoXCJ0ZXN0LmRiXCIpO1xuICAgICAgfVxuICAgIGA7XG5cbiAgICBjb25zdCB7IGZhaWx1cmUsIHJlbGF0aXZlRW50cnkgfSA9XG4gICAgICBhd2FpdCBidWlsZFdvcmtmbG93V2l0aFZpb2xhdGlvbih0ZXN0Q29kZSk7XG5cbiAgICBleHBlY3QoZmFpbHVyZS5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICBjb25zdCB2aW9sYXRpb24gPSBmYWlsdXJlLmVycm9yc1swXTtcbiAgICBleHBlY3QodmlvbGF0aW9uLnRleHQpLnRvQ29udGFpbignXCJidW46c3FsaXRlXCIgd2hpY2ggaXMgYSBCdW4gbW9kdWxlJyk7XG4gICAgZXhwZWN0KHZpb2xhdGlvbi50ZXh0KS50b0NvbnRhaW4oJ0J1biBtb2R1bGVzIGFyZSBub3QgYXZhaWxhYmxlJyk7XG4gICAgZXhwZWN0KHZpb2xhdGlvbi5sb2NhdGlvbikudG9NYXRjaE9iamVjdCh7XG4gICAgICBmaWxlOiByZWxhdGl2ZUVudHJ5LFxuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnd29ya2Zsb3ctbm9kZS1tb2R1bGUtZXJyb3IgaGVscGVyIGZ1bmN0aW9ucycsICgpID0+IHtcbiAgZGVzY3JpYmUoJ2dldFBhY2thZ2VOYW1lJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZ2V0IHRoZSBwYWNrYWdlIG5hbWUgZnJvbSBzaW1wbGUgbm9kZV9tb2R1bGVzIHBhdGgnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwYWNrYWdlTmFtZSA9IGdldFBhY2thZ2VOYW1lKFxuICAgICAgICAnL1VzZXJzL2FkcmlhbmxhbS9HaXRIdWIvd29ya2Zsb3cvbm9kZV9tb2R1bGVzL25vZGUtZmV0Y2gvc3JjL2luZGV4LmpzJ1xuICAgICAgKTtcbiAgICAgIGV4cGVjdChwYWNrYWdlTmFtZSkudG9CZSgnbm9kZS1mZXRjaCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZXQgdGhlIHBhY2thZ2UgbmFtZSBmcm9tIHBucG0gbmVzdGVkIHBhdGgnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwYWNrYWdlTmFtZSA9IGdldFBhY2thZ2VOYW1lKFxuICAgICAgICAnL1VzZXJzL2FkcmlhbmxhbS9HaXRIdWIvd29ya2Zsb3cvbm9kZV9tb2R1bGVzLy5wbnBtL25vZGUtZmV0Y2hAMy4zLjIvbm9kZV9tb2R1bGVzL25vZGUtZmV0Y2gvc3JjL2luZGV4LmpzJ1xuICAgICAgKTtcbiAgICAgIGV4cGVjdChwYWNrYWdlTmFtZSkudG9CZSgnbm9kZS1mZXRjaCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZXQgc2NvcGVkIHBhY2thZ2UgbmFtZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gZ2V0UGFja2FnZU5hbWUoXG4gICAgICAgICcvcHJvamVjdC9ub2RlX21vZHVsZXMvQHN1cGFiYXNlL3N1cGFiYXNlLWpzL2Rpc3QvaW5kZXguanMnXG4gICAgICApO1xuICAgICAgZXhwZWN0KHBhY2thZ2VOYW1lKS50b0JlKCdAc3VwYWJhc2Uvc3VwYWJhc2UtanMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIG51bGwgZm9yIHBhdGhzIHdpdGhvdXQgbm9kZV9tb2R1bGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgcGFja2FnZU5hbWUgPSBnZXRQYWNrYWdlTmFtZShcbiAgICAgICAgJy9Vc2Vycy9hZHJpYW5sYW0vR2l0SHViL3dvcmtmbG93L3NyYy9pbmRleC5qcydcbiAgICAgICk7XG4gICAgICBleHBlY3QocGFja2FnZU5hbWUpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdlc2NhcGVSZWdFeHAnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBlc2NhcGUgcmVnZXggc3BlY2lhbCBjaGFyYWN0ZXJzJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGVzY2FwZVJlZ0V4cCgndGVzdC5maWxlJykpLnRvQmUoJ3Rlc3RcXFxcLmZpbGUnKTtcbiAgICAgIGV4cGVjdChlc2NhcGVSZWdFeHAoJ3Rlc3QqZmlsZScpKS50b0JlKCd0ZXN0XFxcXCpmaWxlJyk7XG4gICAgICBleHBlY3QoZXNjYXBlUmVnRXhwKCd0ZXN0K2ZpbGUnKSkudG9CZSgndGVzdFxcXFwrZmlsZScpO1xuICAgICAgZXhwZWN0KGVzY2FwZVJlZ0V4cCgndGVzdD9maWxlJykpLnRvQmUoJ3Rlc3RcXFxcP2ZpbGUnKTtcbiAgICAgIGV4cGVjdChlc2NhcGVSZWdFeHAoJ3Rlc3ReZmlsZScpKS50b0JlKCd0ZXN0XFxcXF5maWxlJyk7XG4gICAgICBleHBlY3QoZXNjYXBlUmVnRXhwKCd0ZXN0JGZpbGUnKSkudG9CZSgndGVzdFxcXFwkZmlsZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBlc2NhcGUgYnJhY2tldHMgYW5kIGJyYWNlcycsICgpID0+IHtcbiAgICAgIGV4cGVjdChlc2NhcGVSZWdFeHAoJ3Rlc3R7ZmlsZX0nKSkudG9CZSgndGVzdFxcXFx7ZmlsZVxcXFx9Jyk7XG4gICAgICBleHBlY3QoZXNjYXBlUmVnRXhwKCd0ZXN0W2ZpbGVdJykpLnRvQmUoJ3Rlc3RcXFxcW2ZpbGVcXFxcXScpO1xuICAgICAgZXhwZWN0KGVzY2FwZVJlZ0V4cCgndGVzdChmaWxlKScpKS50b0JlKCd0ZXN0XFxcXChmaWxlXFxcXCknKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXNjYXBlIHBpcGVzIGFuZCBiYWNrc2xhc2hlcycsICgpID0+IHtcbiAgICAgIGV4cGVjdChlc2NhcGVSZWdFeHAoJ3Rlc3R8ZmlsZScpKS50b0JlKCd0ZXN0XFxcXHxmaWxlJyk7XG4gICAgICBleHBlY3QoZXNjYXBlUmVnRXhwKCd0ZXN0XFxcXGZpbGUnKSkudG9CZSgndGVzdFxcXFxcXFxcZmlsZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgc3RyaW5ncyB3aXRob3V0IHNwZWNpYWwgY2hhcmFjdGVycycsICgpID0+IHtcbiAgICAgIGV4cGVjdChlc2NhcGVSZWdFeHAoJ3Rlc3RmaWxlJykpLnRvQmUoJ3Rlc3RmaWxlJyk7XG4gICAgICBleHBlY3QoZXNjYXBlUmVnRXhwKCd0ZXN0LWZpbGUnKSkudG9CZSgndGVzdC1maWxlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBwYWNrYWdlIG5hbWVzIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGVzY2FwZVJlZ0V4cCgnQHN1cGFiYXNlL3N1cGFiYXNlLWpzJykpLnRvQmUoXG4gICAgICAgICdAc3VwYWJhc2Uvc3VwYWJhc2UtanMnXG4gICAgICApO1xuICAgICAgZXhwZWN0KGVzY2FwZVJlZ0V4cCgncGFja2FnZS5uYW1lJykpLnRvQmUoJ3BhY2thZ2VcXFxcLm5hbWUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldEltcG9ydGVkSWRlbnRpZmllcicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGV4dHJhY3QgbmFtZXNwYWNlIGltcG9ydCBpZGVudGlmaWVyJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGdldEltcG9ydGVkSWRlbnRpZmllcignKiBhcyBmcycpKS50b0JlKCdmcycpO1xuICAgICAgZXhwZWN0KGdldEltcG9ydGVkSWRlbnRpZmllcignKiAgIGFzICAgcGF0aCcpKS50b0JlKCdwYXRoJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4dHJhY3QgZmlyc3QgbmFtZWQgaW1wb3J0JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGdldEltcG9ydGVkSWRlbnRpZmllcigneyByZWFkRmlsZSB9JykpLnRvQmUoJ3JlYWRGaWxlJyk7XG4gICAgICBleHBlY3QoZ2V0SW1wb3J0ZWRJZGVudGlmaWVyKCd7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfScpKS50b0JlKCdyZWFkRmlsZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHRyYWN0IGFsaWFzZWQgbmFtZWQgaW1wb3J0JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGdldEltcG9ydGVkSWRlbnRpZmllcigneyByZWFkRmlsZSBhcyByZWFkIH0nKSkudG9CZSgncmVhZCcpO1xuICAgICAgZXhwZWN0KGdldEltcG9ydGVkSWRlbnRpZmllcigneyByZWFkRmlsZSBhcyByZWFkLCB3cml0ZUZpbGUgfScpKS50b0JlKFxuICAgICAgICAncmVhZCdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4dHJhY3QgZGVmYXVsdCBpbXBvcnQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoZ2V0SW1wb3J0ZWRJZGVudGlmaWVyKCdmcycpKS50b0JlKCdmcycpO1xuICAgICAgZXhwZWN0KGdldEltcG9ydGVkSWRlbnRpZmllcignbXlEZWZhdWx0JykpLnRvQmUoJ215RGVmYXVsdCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHRyYWN0IGZpcnN0IGlkZW50aWZpZXIgZnJvbSBtaXhlZCBpbXBvcnRzJywgKCkgPT4ge1xuICAgICAgLy8gVGhlIGZ1bmN0aW9uIGNoZWNrcyBmb3IgYnJhY2VzIGZpcnN0LCBzbyBpdCBleHRyYWN0cyBmcm9tIG5hbWVkIGltcG9ydHNcbiAgICAgIGV4cGVjdChnZXRJbXBvcnRlZElkZW50aWZpZXIoJ2ZzLCB7IHJlYWRGaWxlIH0nKSkudG9CZSgncmVhZEZpbGUnKTtcbiAgICAgIGV4cGVjdChnZXRJbXBvcnRlZElkZW50aWZpZXIoJ2RlZmF1bHRFeHBvcnQsIHsgbmFtZWQgfScpKS50b0JlKCduYW1lZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgd2hpdGVzcGFjZSB2YXJpYXRpb25zJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGdldEltcG9ydGVkSWRlbnRpZmllcignICB7IHJlYWRGaWxlIH0gICcpKS50b0JlKCdyZWFkRmlsZScpO1xuICAgICAgZXhwZWN0KGdldEltcG9ydGVkSWRlbnRpZmllcigne3JlYWRGaWxlfScpKS50b0JlKCdyZWFkRmlsZScpO1xuICAgICAgZXhwZWN0KGdldEltcG9ydGVkSWRlbnRpZmllcigneyByZWFkRmlsZSAsIHdyaXRlRmlsZSB9JykpLnRvQmUoXG4gICAgICAgICdyZWFkRmlsZSdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBjb21wbGV4IG5hbWVkIGltcG9ydHMnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoZ2V0SW1wb3J0ZWRJZGVudGlmaWVyKCd0eXBlIHsgUmVhZFN0cmVhbSB9JykpLnRvQmUoJ1JlYWRTdHJlYW0nKTtcbiAgICAgIGV4cGVjdChnZXRJbXBvcnRlZElkZW50aWZpZXIoJ3sgZGVmYXVsdCBhcyBmcyB9JykpLnRvQmUoJ2ZzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB1bmRlZmluZWQgZm9yIGVkZ2UgY2FzZXMnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoZ2V0SW1wb3J0ZWRJZGVudGlmaWVyKCcqJykpLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGV4cGVjdChnZXRJbXBvcnRlZElkZW50aWZpZXIoJycpKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgICAvLyBFbXB0eSBicmFjZXMgc2hvdWxkIHJldHVybiB1bmRlZmluZWQgc2luY2UgdGhlcmUncyBubyB2YWxpZCBpZGVudGlmaWVyXG4gICAgICBleHBlY3QoZ2V0SW1wb3J0ZWRJZGVudGlmaWVyKCd7fScpKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRWaW9sYXRpb25Mb2NhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGZpbmQgdmlvbGF0aW9uIGxvY2F0aW9uIGZvciBwYWNrYWdlIG5hbWUgdGhhdCBhcHBlYXJzIGluIGZpbGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBVc2UgdGhlIGFjdHVhbCBtb25vcmVwbyByb290IGFzIGN3ZFxuICAgICAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKTtcbiAgICAgIGNvbnN0IHRlc3RGaWxlID0gJ3NyYy9ub2RlLW1vZHVsZS1lc2J1aWxkLXBsdWdpbi50ZXN0LnRzJztcblxuICAgICAgLy8gVGVzdCB3aXRoICd2aXRlc3QnIHdoaWNoIGlzIGFjdHVhbGx5IGltcG9ydGVkIGluIHRoaXMgZmlsZVxuICAgICAgY29uc3QgbG9jYXRpb24gPSBhd2FpdCBnZXRWaW9sYXRpb25Mb2NhdGlvbihjd2QsIHRlc3RGaWxlLCAndml0ZXN0Jyk7XG5cbiAgICAgIC8vIFRoZSBmdW5jdGlvbiBzaG91bGQgZmluZCAndml0ZXN0JyBpbiB0aGUgaW1wb3J0IHN0YXRlbWVudFxuICAgICAgZXhwZWN0KGxvY2F0aW9uKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGxvY2F0aW9uPy5maWxlKS50b0JlKHRlc3RGaWxlKTtcblxuICAgICAgY29uc3QgY29udGVudHMgPSByZWFkRmlsZVN5bmMocmVzb2x2ZShjd2QsIHRlc3RGaWxlKSwgJ3V0ZjgnKTtcbiAgICAgIGNvbnN0IGxpbmVzID0gY29udGVudHMuc3BsaXQoL1xccj9cXG4vKTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkTGluZSA9XG4gICAgICAgIGxpbmVzLmZpbmRJbmRleCgobGluZSkgPT4gbGluZS5pbmNsdWRlcyhgZGVzY3JpYmUoYCkpICsgMTtcblxuICAgICAgZXhwZWN0KGxvY2F0aW9uPy5saW5lKS50b0JlKGV4cGVjdGVkTGluZSk7XG4gICAgICBleHBlY3QobG9jYXRpb24/LmNvbHVtbikudG9CZSgwKTtcbiAgICAgIGV4cGVjdChsb2NhdGlvbj8ubGluZVRleHQpLnRvQ29udGFpbihgZGVzY3JpYmUoYCk7XG4gICAgICBleHBlY3QobG9jYXRpb24/Lmxlbmd0aCkudG9CZSg4KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBmb3Igbm9uLWV4aXN0ZW50IGZpbGVzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKTtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gYXdhaXQgZ2V0VmlvbGF0aW9uTG9jYXRpb24oXG4gICAgICAgIGN3ZCxcbiAgICAgICAgJ25vbi1leGlzdGVudC1maWxlLnRzJyxcbiAgICAgICAgJ3NvbWUtcGFja2FnZSdcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChsb2NhdGlvbikudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdW5kZWZpbmVkIGZvciBmaWxlcyB3aXRob3V0IHRoZSBwYWNrYWdlIGltcG9ydCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGN3ZCA9IHByb2Nlc3MuY3dkKCk7XG4gICAgICBjb25zdCB0ZXN0RmlsZSA9ICdzcmMvbm9kZS1tb2R1bGUtZXNidWlsZC1wbHVnaW4udGVzdC50cyc7XG5cbiAgICAgIC8vIFRoaXMgcGFja2FnZSBpcyBub3QgaW1wb3J0ZWQgaW4gdGhlIHRlc3QgZmlsZVxuICAgICAgY29uc3QgbG9jYXRpb24gPSBhd2FpdCBnZXRWaW9sYXRpb25Mb2NhdGlvbihcbiAgICAgICAgY3dkLFxuICAgICAgICB0ZXN0RmlsZSxcbiAgICAgICAgJ25vbi1leGlzdGVudC1wYWNrYWdlJ1xuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGxvY2F0aW9uKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB1bmRlZmluZWQgd2hlbiBpbXBvcnQgaXMgdW51c2VkIGV2ZW4gaWYgaXQgY2FuIGJlIHBhcnNlZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGN3ZCA9IHByb2Nlc3MuY3dkKCk7XG4gICAgICBjb25zdCB0ZXN0RmlsZSA9ICdzcmMvbm9kZS1tb2R1bGUtZXNidWlsZC1wbHVnaW4udGVzdC50cyc7XG5cbiAgICAgIC8vIFRlc3Qgd2l0aCAnbm9kZTpodHRwJyB3aGljaCBpcyBpbXBvcnRlZCBpbiB0aGlzIGZpbGUgYnV0IG5ldmVyIHVzZWRcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gYXdhaXQgZ2V0VmlvbGF0aW9uTG9jYXRpb24oY3dkLCB0ZXN0RmlsZSwgJ25vZGU6aHR0cCcpO1xuXG4gICAgICAvLyBTaW5jZSB0aGUgaWRlbnRpZmllciBpcyBuZXZlciByZWZlcmVuY2VkIChvbmx5IGltcG9ydGVkKSwgd2Ugc2hvdWxkXG4gICAgICAvLyBub3QgcHJvZHVjZSBhIGxvY2F0aW9uIHByZXZpZXcuXG4gICAgICBleHBlY3QobG9jYXRpb24pLnRvQmVVbmRlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -44,4 +44,4 @@ export function createPseudoPackagePlugin() {
44
44
  },
45
45
  };
46
46
  }
47
- //# sourceMappingURL=pseudo-package-esbuild-plugin.js.map
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHNldWRvLXBhY2thZ2UtZXNidWlsZC1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHNldWRvLXBhY2thZ2UtZXNidWlsZC1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNyQyxhQUFhO0lBQ2IsYUFBYTtJQUNiLGdDQUFnQztJQUNoQyxnQ0FBZ0M7Q0FDakMsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSx5QkFBeUI7SUFDdkMsT0FBTztRQUNMLElBQUksRUFBRSwwQkFBMEI7UUFDaEMsS0FBSyxDQUFDLEtBQTBCO1lBQzlCLHFFQUFxRTtZQUNyRSxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBMkIsRUFBRSxFQUFFO2dCQUNoRSxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ25DLE9BQU87d0JBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO3dCQUNmLFNBQVMsRUFBRSxnQkFBZ0I7cUJBQzVCLENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1lBRUgsbURBQW1EO1lBQ25ELEtBQUssQ0FBQyxNQUFNLENBQ1YsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxFQUM3QyxDQUFDLElBQXdCLEVBQUUsRUFBRTtnQkFDM0IsT0FBTztvQkFDTCxRQUFRLEVBQUUsc0JBQXNCLElBQUksQ0FBQyxJQUFJLGlDQUFpQztvQkFDMUUsTUFBTSxFQUFFLElBQUk7aUJBQ2IsQ0FBQztZQUNKLENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBlc2J1aWxkIGZyb20gJ2VzYnVpbGQnO1xuXG4vKipcbiAqIFBzZXVkby1wYWNrYWdlcyBhcmUgbWFya2VyIHBhY2thZ2VzIHdpdGggbm8gYWN0dWFsIGZ1bmN0aW9uYWxpdHkgLSB0aGV5IG9ubHlcbiAqIHRocm93IGVycm9ycyB3aGVuIGltcG9ydGVkIGluIHRoZSB3cm9uZyBjb250ZXh0IChlLmcuLCBjbGllbnQtc2lkZSB2cyBzZXJ2ZXItc2lkZSkuXG4gKiBJbiB0aGUgd29ya2Zsb3cgVk0gY29udGV4dCwgd2UgZG9uJ3QgbmVlZCB0aGVpciBiZWhhdmlvciwgc28gd2UgcHJvdmlkZSBlbXB0eSBtb2R1bGVzLlxuICovXG5leHBvcnQgY29uc3QgUFNFVURPX1BBQ0tBR0VTID0gbmV3IFNldChbXG4gICdzZXJ2ZXItb25seScsXG4gICdjbGllbnQtb25seScsXG4gICduZXh0L2Rpc3QvY29tcGlsZWQvc2VydmVyLW9ubHknLFxuICAnbmV4dC9kaXN0L2NvbXBpbGVkL2NsaWVudC1vbmx5Jyxcbl0pO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gZXNidWlsZCBwbHVnaW4gdGhhdCBoYW5kbGVzIHBzZXVkby1wYWNrYWdlcyBsaWtlICdzZXJ2ZXItb25seScgYW5kICdjbGllbnQtb25seScuXG4gKlxuICogVGhlc2UgcGFja2FnZXMgbmVlZCBzcGVjaWFsIGhhbmRsaW5nIGJlY2F1c2U6XG4gKiAxLiBUaGV5IGhhdmUgZXhwb3J0cyBkZWZpbmVkIGluIHBhY2thZ2UuanNvbiB0aGF0IGVzYnVpbGQgbmVlZHMgdG8gcmVzb2x2ZVxuICogMi4gV2l0aG91dCB0aGlzIHBsdWdpbiwgZXNidWlsZCBtYXkgZmFpbCB0byByZXNvbHZlIHRoZW0gZHVyaW5nIGJ1bmRsaW5nXG4gKiAzLiBNYXJraW5nIHRoZW0gYXMgZXh0ZXJuYWwgd291bGQgZ2VuZXJhdGUgcmVxdWlyZSgpIGNhbGxzIHRoYXQgZG9uJ3Qgd29yayBpbiB0aGUgd29ya2Zsb3cgVk1cbiAqXG4gKiBUaGlzIHBsdWdpbiBpbnRlcmNlcHRzIGltcG9ydHMgb2YgdGhlc2UgcGFja2FnZXMgYW5kIHByb3ZpZGVzIGVtcHR5IG1vZHVsZXMsXG4gKiB3aGljaCBpcyBzYWZlIGJlY2F1c2UgdGhleSBhcmUgbWFya2VyIHBhY2thZ2VzIHdpdGggbm8gYWN0dWFsIGZ1bmN0aW9uYWxpdHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQc2V1ZG9QYWNrYWdlUGx1Z2luKCk6IGVzYnVpbGQuUGx1Z2luIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnd29ya2Zsb3ctcHNldWRvLXBhY2thZ2VzJyxcbiAgICBzZXR1cChidWlsZDogZXNidWlsZC5QbHVnaW5CdWlsZCkge1xuICAgICAgLy8gSW50ZXJjZXB0IGltcG9ydHMgb2YgcHNldWRvIHBhY2thZ2VzIGFuZCByZWRpcmVjdCB0byBvdXIgbmFtZXNwYWNlXG4gICAgICBidWlsZC5vblJlc29sdmUoeyBmaWx0ZXI6IC8uKi8gfSwgKGFyZ3M6IGVzYnVpbGQuT25SZXNvbHZlQXJncykgPT4ge1xuICAgICAgICBpZiAoUFNFVURPX1BBQ0tBR0VTLmhhcyhhcmdzLnBhdGgpKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhdGg6IGFyZ3MucGF0aCxcbiAgICAgICAgICAgIG5hbWVzcGFjZTogJ3BzZXVkby1wYWNrYWdlJyxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFByb3ZpZGUgZW1wdHkgbW9kdWxlIGNvbnRlbnQgZm9yIHBzZXVkbyBwYWNrYWdlc1xuICAgICAgYnVpbGQub25Mb2FkKFxuICAgICAgICB7IGZpbHRlcjogLy4qLywgbmFtZXNwYWNlOiAncHNldWRvLXBhY2thZ2UnIH0sXG4gICAgICAgIChhcmdzOiBlc2J1aWxkLk9uTG9hZEFyZ3MpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29udGVudHM6IGAvKiBQc2V1ZG8tcGFja2FnZTogJHthcmdzLnBhdGh9IC0gbm8tb3AgaW4gd29ya2Zsb3cgY29udGV4dCAqL2AsXG4gICAgICAgICAgICBsb2FkZXI6ICdqcycsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9LFxuICB9O1xufVxuIl19
@@ -312,4 +312,4 @@ describe('workflow bundle dynamic imports', () => {
312
312
  }
313
313
  });
314
314
  });
315
- //# sourceMappingURL=pseudo-package-esbuild-plugin.test.js.map
315
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHNldWRvLXBhY2thZ2UtZXNidWlsZC1wbHVnaW4udGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wc2V1ZG8tcGFja2FnZS1lc2J1aWxkLXBsdWdpbi50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sYUFBYSxHQUNkLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqQyxPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUMsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sb0NBQW9DLENBQUM7QUFFNUMsd0VBQXdFO0FBQ3hFLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRTFDLEtBQUssVUFBVSxlQUFlLENBQzVCLE1BQWMsRUFDZCxVQUE0QixDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFFekQsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsNkJBQTZCLENBQUMsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDL0MsYUFBYSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVqQyxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDakMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3hCLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLEtBQUs7UUFDWixRQUFR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QUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBta2RpclN5bmMsXG4gIG1rZHRlbXBTeW5jLFxuICByZWFscGF0aFN5bmMsXG4gIHJtU3luYyxcbiAgd3JpdGVGaWxlU3luYyxcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyB0bXBkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnO1xuXG5pbXBvcnQgKiBhcyBlc2J1aWxkIGZyb20gJ2VzYnVpbGQnO1xuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHtcbiAgY3JlYXRlUHNldWRvUGFja2FnZVBsdWdpbixcbiAgUFNFVURPX1BBQ0tBR0VTLFxufSBmcm9tICcuL3BzZXVkby1wYWNrYWdlLWVzYnVpbGQtcGx1Z2luLmpzJztcblxuLy8gUmVzb2x2ZSBzeW1saW5rcyBpbiB0bXBkaXIgdG8gYXZvaWQgbWFjT1MgL3ZhciAtPiAvcHJpdmF0ZS92YXIgaXNzdWVzXG5jb25zdCByZWFsVG1wZGlyID0gcmVhbHBhdGhTeW5jKHRtcGRpcigpKTtcblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRXaXRoUGx1Z2luKFxuICBzb3VyY2U6IHN0cmluZyxcbiAgcGx1Z2luczogZXNidWlsZC5QbHVnaW5bXSA9IFtjcmVhdGVQc2V1ZG9QYWNrYWdlUGx1Z2luKCldXG4pOiBQcm9taXNlPHsgcmVzdWx0OiBlc2J1aWxkLkJ1aWxkUmVzdWx0OyB0ZW1wRGlyOiBzdHJpbmcgfT4ge1xuICBjb25zdCB0ZW1wRGlyID0gbWtkdGVtcFN5bmMoam9pbihyZWFsVG1wZGlyLCAncHNldWRvLXBhY2thZ2UtcGx1Z2luLXRlc3QtJykpO1xuICBjb25zdCBlbnRyeUZpbGUgPSBqb2luKHRlbXBEaXIsICd3b3JrZmxvdy50cycpO1xuICB3cml0ZUZpbGVTeW5jKGVudHJ5RmlsZSwgc291cmNlKTtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBlc2J1aWxkLmJ1aWxkKHtcbiAgICBlbnRyeVBvaW50czogW2VudHJ5RmlsZV0sXG4gICAgYnVuZGxlOiB0cnVlLFxuICAgIHdyaXRlOiBmYWxzZSxcbiAgICBwbGF0Zm9ybTogJ25ldXRyYWwnLFxuICAgIGZvcm1hdDogJ2NqcycsXG4gICAgbG9nTGV2ZWw6ICdzaWxlbnQnLFxuICAgIHBsdWdpbnMsXG4gIH0pO1xuXG4gIHJldHVybiB7IHJlc3VsdCwgdGVtcERpciB9O1xufVxuXG5kZXNjcmliZSgnY3JlYXRlUHNldWRvUGFja2FnZVBsdWdpbicsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3NlcnZlci1vbmx5IHBhY2thZ2UnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXBsYWNlIHNlcnZlci1vbmx5IGltcG9ydCB3aXRoIGVtcHR5IG1vZHVsZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRlc3RDb2RlID0gYFxuICAgICAgICBpbXBvcnQgJ3NlcnZlci1vbmx5JztcbiAgICAgICAgZXhwb3J0IGZ1bmN0aW9uIHdvcmtmbG93KCkge1xuICAgICAgICAgIHJldHVybiBcImhlbGxvXCI7XG4gICAgICAgIH1cbiAgICAgIGA7XG5cbiAgICAgIGNvbnN0IHsgcmVzdWx0LCB0ZW1wRGlyIH0gPSBhd2FpdCBidWlsZFdpdGhQbHVnaW4odGVzdENvZGUpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXM/LlswXS50ZXh0O1xuICAgICAgICBleHBlY3Qob3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAvLyBTaG91bGQgbm90IGNvbnRhaW4gcmVxdWlyZSgnc2VydmVyLW9ubHknKSBzaW5jZSBpdCdzIHJlcGxhY2VkIHdpdGggZW1wdHkgbW9kdWxlXG4gICAgICAgIC8vIChlc2J1aWxkIHRyZWUtc2hha2VzIHVudXNlZCBpbXBvcnRzLCBzbyB0aGUgbW9kdWxlIGNvbnRlbnQgbWF5IG5vdCBhcHBlYXIsXG4gICAgICAgIC8vIGJ1dCBpbXBvcnRhbnRseSBubyByZXF1aXJlKCkgY2FsbCBpcyBnZW5lcmF0ZWQpXG4gICAgICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oXCJyZXF1aXJlKCdzZXJ2ZXItb25seScpXCIpO1xuICAgICAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9Db250YWluKCdyZXF1aXJlKFwic2VydmVyLW9ubHlcIiknKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHJtU3luYyh0ZW1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBzZXJ2ZXItb25seSBhbG9uZ3NpZGUgb3RoZXIgaW1wb3J0cycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRlc3RDb2RlID0gYFxuICAgICAgICBpbXBvcnQgJ3NlcnZlci1vbmx5JztcbiAgICAgICAgY29uc3QgeCA9IDQyO1xuICAgICAgICBleHBvcnQgZnVuY3Rpb24gd29ya2Zsb3coKSB7XG4gICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgIH1cbiAgICAgIGA7XG5cbiAgICAgIGNvbnN0IHsgcmVzdWx0LCB0ZW1wRGlyIH0gPSBhd2FpdCBidWlsZFdpdGhQbHVnaW4odGVzdENvZGUpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXM/LlswXS50ZXh0O1xuICAgICAgICBleHBlY3Qob3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAvLyBObyByZXF1aXJlKCkgY2FsbCBzaG91bGQgYmUgZ2VuZXJhdGVkXG4gICAgICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oXCJyZXF1aXJlKCdzZXJ2ZXItb25seScpXCIpO1xuICAgICAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9Db250YWluKCdyZXF1aXJlKFwic2VydmVyLW9ubHlcIiknKTtcbiAgICAgICAgLy8gVGhlIGFjdHVhbCBjb2RlIHNob3VsZCBzdGlsbCB3b3JrXG4gICAgICAgIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbignNDInKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHJtU3luYyh0ZW1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjbGllbnQtb25seSBwYWNrYWdlJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVwbGFjZSBjbGllbnQtb25seSBpbXBvcnQgd2l0aCBlbXB0eSBtb2R1bGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0ZXN0Q29kZSA9IGBcbiAgICAgICAgaW1wb3J0ICdjbGllbnQtb25seSc7XG4gICAgICAgIGV4cG9ydCBjb25zdCB4ID0gMTtcbiAgICAgIGA7XG5cbiAgICAgIGNvbnN0IHsgcmVzdWx0LCB0ZW1wRGlyIH0gPSBhd2FpdCBidWlsZFdpdGhQbHVnaW4odGVzdENvZGUpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXM/LlswXS50ZXh0O1xuICAgICAgICBleHBlY3Qob3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAvLyBObyByZXF1aXJlKCkgY2FsbCBzaG91bGQgYmUgZ2VuZXJhdGVkXG4gICAgICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oXCJyZXF1aXJlKCdjbGllbnQtb25seScpXCIpO1xuICAgICAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9Db250YWluKCdyZXF1aXJlKFwiY2xpZW50LW9ubHlcIiknKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHJtU3luYyh0ZW1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb21waWxlZCBwc2V1ZG8tcGFja2FnZXMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXBsYWNlIG5leHQvZGlzdC9jb21waWxlZC9zZXJ2ZXItb25seSBpbXBvcnQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0ZXN0Q29kZSA9IGBcbiAgICAgICAgaW1wb3J0ICduZXh0L2Rpc3QvY29tcGlsZWQvc2VydmVyLW9ubHknO1xuICAgICAgICBleHBvcnQgY29uc3QgeCA9IDE7XG4gICAgICBgO1xuXG4gICAgICBjb25zdCB7IHJlc3VsdCwgdGVtcERpciB9ID0gYXdhaXQgYnVpbGRXaXRoUGx1Z2luKHRlc3RDb2RlKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0Lm91dHB1dEZpbGVzPy5bMF0udGV4dDtcbiAgICAgICAgZXhwZWN0KG91dHB1dCkudG9CZURlZmluZWQoKTtcbiAgICAgICAgZXhwZWN0KG91dHB1dCkubm90LnRvQ29udGFpbihcbiAgICAgICAgICBcInJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9zZXJ2ZXItb25seScpXCJcbiAgICAgICAgKTtcbiAgICAgICAgZXhwZWN0KG91dHB1dCkubm90LnRvQ29udGFpbihcbiAgICAgICAgICAncmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9zZXJ2ZXItb25seVwiKSdcbiAgICAgICAgKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHJtU3luYyh0ZW1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlcGxhY2UgbmV4dC9kaXN0L2NvbXBpbGVkL2NsaWVudC1vbmx5IGltcG9ydCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRlc3RDb2RlID0gYFxuICAgICAgICBpbXBvcnQgJ25leHQvZGlzdC9jb21waWxlZC9jbGllbnQtb25seSc7XG4gICAgICAgIGV4cG9ydCBjb25zdCB4ID0gMTtcbiAgICAgIGA7XG5cbiAgICAgIGNvbnN0IHsgcmVzdWx0LCB0ZW1wRGlyIH0gPSBhd2FpdCBidWlsZFdpdGhQbHVnaW4odGVzdENvZGUpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXM/LlswXS50ZXh0O1xuICAgICAgICBleHBlY3Qob3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9Db250YWluKFxuICAgICAgICAgIFwicmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL2NsaWVudC1vbmx5JylcIlxuICAgICAgICApO1xuICAgICAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9Db250YWluKFxuICAgICAgICAgICdyZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL2NsaWVudC1vbmx5XCIpJ1xuICAgICAgICApO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgcm1TeW5jKHRlbXBEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2JvdGggcHNldWRvLXBhY2thZ2VzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgaGFuZGxlIGJvdGggc2VydmVyLW9ubHkgYW5kIGNsaWVudC1vbmx5IGluIHNhbWUgZmlsZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRlc3RDb2RlID0gYFxuICAgICAgICBpbXBvcnQgJ3NlcnZlci1vbmx5JztcbiAgICAgICAgaW1wb3J0ICdjbGllbnQtb25seSc7XG4gICAgICAgIGV4cG9ydCBmdW5jdGlvbiB3b3JrZmxvdygpIHtcbiAgICAgICAgICByZXR1cm4gXCJtaXhlZFwiO1xuICAgICAgICB9XG4gICAgICBgO1xuXG4gICAgICBjb25zdCB7IHJlc3VsdCwgdGVtcERpciB9ID0gYXdhaXQgYnVpbGRXaXRoUGx1Z2luKHRlc3RDb2RlKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0Lm91dHB1dEZpbGVzPy5bMF0udGV4dDtcbiAgICAgICAgZXhwZWN0KG91dHB1dCkudG9CZURlZmluZWQoKTtcbiAgICAgICAgLy8gTm8gcmVxdWlyZSgpIGNhbGxzIHNob3VsZCBiZSBnZW5lcmF0ZWQgZm9yIGVpdGhlciBwYWNrYWdlXG4gICAgICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oXCJyZXF1aXJlKCdzZXJ2ZXItb25seScpXCIpO1xuICAgICAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9Db250YWluKCdyZXF1aXJlKFwic2VydmVyLW9ubHlcIiknKTtcbiAgICAgICAgZXhwZWN0KG91dHB1dCkubm90LnRvQ29udGFpbihcInJlcXVpcmUoJ2NsaWVudC1vbmx5JylcIik7XG4gICAgICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ3JlcXVpcmUoXCJjbGllbnQtb25seVwiKScpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgcm1TeW5jKHRlbXBEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3dpdGhvdXQgcGx1Z2luJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZmFpbCB0byByZXNvbHZlIHNlcnZlci1vbmx5IHdpdGhvdXQgdGhlIHBsdWdpbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRlc3RDb2RlID0gYFxuICAgICAgICBpbXBvcnQgJ3NlcnZlci1vbmx5JztcbiAgICAgICAgZXhwb3J0IGNvbnN0IHggPSAxO1xuICAgICAgYDtcblxuICAgICAgY29uc3QgdGVtcERpciA9IG1rZHRlbXBTeW5jKFxuICAgICAgICBqb2luKHJlYWxUbXBkaXIsICdwc2V1ZG8tcGFja2FnZS1wbHVnaW4tdGVzdC0nKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGVudHJ5RmlsZSA9IGpvaW4odGVtcERpciwgJ3dvcmtmbG93LnRzJyk7XG4gICAgICB3cml0ZUZpbGVTeW5jKGVudHJ5RmlsZSwgdGVzdENvZGUpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBlc2J1aWxkLmJ1aWxkKHtcbiAgICAgICAgICBlbnRyeVBvaW50czogW2VudHJ5RmlsZV0sXG4gICAgICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgICAgICBwbGF0Zm9ybTogJ25ldXRyYWwnLFxuICAgICAgICAgIGZvcm1hdDogJ2NqcycsXG4gICAgICAgICAgbG9nTGV2ZWw6ICdzaWxlbnQnLFxuICAgICAgICAgIC8vIE5vIHBsdWdpbnMgLSBzaG91bGQgZmFpbCB0byByZXNvbHZlXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgdGhlIGJ1aWxkIHN1Y2NlZWRlZCAoc2VydmVyLW9ubHkgbWlnaHQgYmUgaW5zdGFsbGVkKVxuICAgICAgICAvLyBUaGlzIGlzIG9rYXkgLSB3ZSBqdXN0IHdhbnQgdG8gdmVyaWZ5IHRoZSBwbHVnaW4gd29ya3Mgd2hlbiB0aGUgcGFja2FnZSBpc24ndCB0aGVyZVxuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAvLyBFeHBlY3RlZDogZXNidWlsZCBjYW4ndCByZXNvbHZlIHNlcnZlci1vbmx5XG4gICAgICAgIGV4cGVjdChlcnJvci5lcnJvcnM/LlswXT8udGV4dCkudG9NYXRjaChcbiAgICAgICAgICAvQ291bGQgbm90IHJlc29sdmUgXCJzZXJ2ZXItb25seVwiL1xuICAgICAgICApO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgcm1TeW5jKHRlbXBEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1BTRVVET19QQUNLQUdFUyBjb25zdGFudCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNvbnRhaW4gbmV4dCBtYXJrZXIgcGFja2FnZXMnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoUFNFVURPX1BBQ0tBR0VTLmhhcygnc2VydmVyLW9ubHknKSkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdChQU0VVRE9fUEFDS0FHRVMuaGFzKCdjbGllbnQtb25seScpKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KFBTRVVET19QQUNLQUdFUy5oYXMoJ25leHQvZGlzdC9jb21waWxlZC9zZXJ2ZXItb25seScpKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KFBTRVVET19QQUNLQUdFUy5oYXMoJ25leHQvZGlzdC9jb21waWxlZC9jbGllbnQtb25seScpKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KFBTRVVET19QQUNLQUdFUy5zaXplKS50b0JlKDQpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnd29ya2Zsb3cgYnVuZGxlIGR5bmFtaWMgaW1wb3J0cycsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCBpbmxpbmUgZHluYW1pYyBpbXBvcnRzIHdoZW4gYnVuZGxpbmcgd2l0aG91dCBleHRlcm5hbCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0ZW1wRGlyID0gbWtkdGVtcFN5bmMoam9pbihyZWFsVG1wZGlyLCAnZHluYW1pYy1pbXBvcnQtdGVzdC0nKSk7XG4gICAgY29uc3Qgbm9kZU1vZHVsZXNEaXIgPSBqb2luKHRlbXBEaXIsICdub2RlX21vZHVsZXMnLCAnbXktdGVzdC1wYWNrYWdlJyk7XG4gICAgbWtkaXJTeW5jKG5vZGVNb2R1bGVzRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgIC8vIENyZWF0ZSBhIHNpbXBsZSBwYWNrYWdlIHRvIGR5bmFtaWNhbGx5IGltcG9ydFxuICAgIHdyaXRlRmlsZVN5bmMoXG4gICAgICBqb2luKG5vZGVNb2R1bGVzRGlyLCAnaW5kZXguanMnKSxcbiAgICAgICdleHBvcnQgY29uc3QgdGVzdFZhbHVlID0gNDI7J1xuICAgICk7XG4gICAgd3JpdGVGaWxlU3luYyhcbiAgICAgIGpvaW4obm9kZU1vZHVsZXNEaXIsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHsgbmFtZTogJ215LXRlc3QtcGFja2FnZScsIG1haW46ICdpbmRleC5qcycgfSlcbiAgICApO1xuXG4gICAgY29uc3QgdGVzdENvZGUgPSBgXG4gICAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gd29ya2Zsb3coKSB7XG4gICAgICAgIGNvbnN0IHBrZyA9IGF3YWl0IGltcG9ydCgnbXktdGVzdC1wYWNrYWdlJyk7XG4gICAgICAgIHJldHVybiBwa2cudGVzdFZhbHVlO1xuICAgICAgfVxuICAgIGA7XG4gICAgY29uc3QgZW50cnlGaWxlID0gam9pbih0ZW1wRGlyLCAnd29ya2Zsb3cudHMnKTtcbiAgICB3cml0ZUZpbGVTeW5jKGVudHJ5RmlsZSwgdGVzdENvZGUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgICBlbnRyeVBvaW50czogW2VudHJ5RmlsZV0sXG4gICAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgICBwbGF0Zm9ybTogJ25ldXRyYWwnLFxuICAgICAgICBmb3JtYXQ6ICdjanMnLFxuICAgICAgICBsb2dMZXZlbDogJ3NpbGVudCcsXG4gICAgICAgIC8vIE5vIGV4dGVybmFsIG9wdGlvbiAtIHNob3VsZCBpbmxpbmUgdGhlIGR5bmFtaWMgaW1wb3J0XG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICAgIGNvbnN0IG91dHB1dCA9IHJlc3VsdC5vdXRwdXRGaWxlcz8uWzBdLnRleHQ7XG4gICAgICBleHBlY3Qob3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuXG4gICAgICAvLyBUaGUgZHluYW1pYyBpbXBvcnQgc2hvdWxkIGJlIHJlc29sdmVkIGFuZCB0aGUgdmFsdWUgaW5saW5lZFxuICAgICAgLy8gZXNidWlsZCBjb252ZXJ0cyBkeW5hbWljIGltcG9ydHMgdG8gZWl0aGVyIFByb21pc2UucmVzb2x2ZShyZXF1aXJlKC4uLikpXG4gICAgICAvLyBvciBpbmxpbmVzIHRoZSBjb2RlIGRpcmVjdGx5XG4gICAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJzQyJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHJtU3luYyh0ZW1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGxlYXZlIGR5bmFtaWMgaW1wb3J0IGFzIGltcG9ydCgpIHdoZW4gbWFya2VkIGV4dGVybmFsJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRlbXBEaXIgPSBta2R0ZW1wU3luYyhqb2luKHJlYWxUbXBkaXIsICdkeW5hbWljLWltcG9ydC10ZXN0LScpKTtcbiAgICBjb25zdCBub2RlTW9kdWxlc0RpciA9IGpvaW4odGVtcERpciwgJ25vZGVfbW9kdWxlcycsICdleHRlcm5hbC1wYWNrYWdlJyk7XG4gICAgbWtkaXJTeW5jKG5vZGVNb2R1bGVzRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgIHdyaXRlRmlsZVN5bmMoXG4gICAgICBqb2luKG5vZGVNb2R1bGVzRGlyLCAnaW5kZXguanMnKSxcbiAgICAgICdleHBvcnQgY29uc3QgdmFsdWUgPSAxMDA7J1xuICAgICk7XG4gICAgd3JpdGVGaWxlU3luYyhcbiAgICAgIGpvaW4obm9kZU1vZHVsZXNEaXIsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHsgbmFtZTogJ2V4dGVybmFsLXBhY2thZ2UnLCBtYWluOiAnaW5kZXguanMnIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IHRlc3RDb2RlID0gYFxuICAgICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdvcmtmbG93KCkge1xuICAgICAgICBjb25zdCBwa2cgPSBhd2FpdCBpbXBvcnQoJ2V4dGVybmFsLXBhY2thZ2UnKTtcbiAgICAgICAgcmV0dXJuIHBrZy52YWx1ZTtcbiAgICAgIH1cbiAgICBgO1xuICAgIGNvbnN0IGVudHJ5RmlsZSA9IGpvaW4odGVtcERpciwgJ3dvcmtmbG93LnRzJyk7XG4gICAgd3JpdGVGaWxlU3luYyhlbnRyeUZpbGUsIHRlc3RDb2RlKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBlc2J1aWxkLmJ1aWxkKHtcbiAgICAgICAgZW50cnlQb2ludHM6IFtlbnRyeUZpbGVdLFxuICAgICAgICBidW5kbGU6IHRydWUsXG4gICAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgICAgcGxhdGZvcm06ICduZXV0cmFsJyxcbiAgICAgICAgZm9ybWF0OiAnY2pzJyxcbiAgICAgICAgbG9nTGV2ZWw6ICdzaWxlbnQnLFxuICAgICAgICBleHRlcm5hbDogWydleHRlcm5hbC1wYWNrYWdlJ10sIC8vIE1hcmsgYXMgZXh0ZXJuYWxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0Lm91dHB1dEZpbGVzPy5bMF0udGV4dDtcbiAgICAgIGV4cGVjdChvdXRwdXQpLnRvQmVEZWZpbmVkKCk7XG5cbiAgICAgIC8vIFdoZW4gZXh0ZXJuYWwsIGVzYnVpbGQgbGVhdmVzIGEgZHluYW1pYyBpbXBvcnQoKSBjYWxsIHRoYXQgd291bGQgZmFpbCBpbiB0aGUgVk1cbiAgICAgIC8vICh0aGUgVk0gZG9lc24ndCBoYXZlIGltcG9ydCgpIGF2YWlsYWJsZSlcbiAgICAgIC8vIFRoaXMgZGVtb25zdHJhdGVzIHdoeSB3ZSBET04nVCB1c2UgZXh0ZXJuYWwgZm9yIHdvcmtmbG93IGJ1bmRsZXNcbiAgICAgIGV4cGVjdChvdXRwdXQpLnRvTWF0Y2goL2ltcG9ydFxcKFtcIiddZXh0ZXJuYWwtcGFja2FnZVtcIiddXFwpLyk7XG4gICAgICAvLyBUaGUgYWN0dWFsIHZhbHVlIHNob3VsZCBOT1QgYmUgaW5saW5lZFxuICAgICAgZXhwZWN0KG91dHB1dCkubm90LnRvQ29udGFpbignMTAwJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHJtU3luYyh0ZW1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGlubGluZSBuZXN0ZWQgZHluYW1pYyBpbXBvcnRzIGZyb20gZGVwZW5kZW5jaWVzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRlbXBEaXIgPSBta2R0ZW1wU3luYyhqb2luKHJlYWxUbXBkaXIsICdkeW5hbWljLWltcG9ydC10ZXN0LScpKTtcblxuICAgIC8vIENyZWF0ZSBhIHBhY2thZ2UgdGhhdCBpdHNlbGYgdXNlcyBkeW5hbWljIGltcG9ydFxuICAgIGNvbnN0IG91dGVyUGFja2FnZURpciA9IGpvaW4odGVtcERpciwgJ25vZGVfbW9kdWxlcycsICdvdXRlci1wYWNrYWdlJyk7XG4gICAgY29uc3QgaW5uZXJQYWNrYWdlRGlyID0gam9pbih0ZW1wRGlyLCAnbm9kZV9tb2R1bGVzJywgJ2lubmVyLXBhY2thZ2UnKTtcbiAgICBta2RpclN5bmMob3V0ZXJQYWNrYWdlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBta2RpclN5bmMoaW5uZXJQYWNrYWdlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgIHdyaXRlRmlsZVN5bmMoXG4gICAgICBqb2luKGlubmVyUGFja2FnZURpciwgJ2luZGV4LmpzJyksXG4gICAgICAnZXhwb3J0IGNvbnN0IGlubmVyVmFsdWUgPSA5OTk7J1xuICAgICk7XG4gICAgd3JpdGVGaWxlU3luYyhcbiAgICAgIGpvaW4oaW5uZXJQYWNrYWdlRGlyLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7IG5hbWU6ICdpbm5lci1wYWNrYWdlJywgbWFpbjogJ2luZGV4LmpzJyB9KVxuICAgICk7XG5cbiAgICB3cml0ZUZpbGVTeW5jKFxuICAgICAgam9pbihvdXRlclBhY2thZ2VEaXIsICdpbmRleC5qcycpLFxuICAgICAgYFxuICAgICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRJbm5lcigpIHtcbiAgICAgICAgY29uc3QgaW5uZXIgPSBhd2FpdCBpbXBvcnQoJ2lubmVyLXBhY2thZ2UnKTtcbiAgICAgICAgcmV0dXJuIGlubmVyLmlubmVyVmFsdWU7XG4gICAgICB9XG4gICAgYFxuICAgICk7XG4gICAgd3JpdGVGaWxlU3luYyhcbiAgICAgIGpvaW4ob3V0ZXJQYWNrYWdlRGlyLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7IG5hbWU6ICdvdXRlci1wYWNrYWdlJywgbWFpbjogJ2luZGV4LmpzJyB9KVxuICAgICk7XG5cbiAgICBjb25zdCB0ZXN0Q29kZSA9IGBcbiAgICAgIGltcG9ydCB7IGxvYWRJbm5lciB9IGZyb20gJ291dGVyLXBhY2thZ2UnO1xuICAgICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdvcmtmbG93KCkge1xuICAgICAgICByZXR1cm4gbG9hZElubmVyKCk7XG4gICAgICB9XG4gICAgYDtcbiAgICBjb25zdCBlbnRyeUZpbGUgPSBqb2luKHRlbXBEaXIsICd3b3JrZmxvdy50cycpO1xuICAgIHdyaXRlRmlsZVN5bmMoZW50cnlGaWxlLCB0ZXN0Q29kZSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICAgIGVudHJ5UG9pbnRzOiBbZW50cnlGaWxlXSxcbiAgICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgICB3cml0ZTogZmFsc2UsXG4gICAgICAgIHBsYXRmb3JtOiAnbmV1dHJhbCcsXG4gICAgICAgIGZvcm1hdDogJ2NqcycsXG4gICAgICAgIGxvZ0xldmVsOiAnc2lsZW50JyxcbiAgICAgICAgLy8gTm8gZXh0ZXJuYWwgLSBldmVyeXRoaW5nIHNob3VsZCBiZSBpbmxpbmVkXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICAgIGNvbnN0IG91dHB1dCA9IHJlc3VsdC5vdXRwdXRGaWxlcz8uWzBdLnRleHQ7XG4gICAgICBleHBlY3Qob3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuXG4gICAgICAvLyBCb3RoIHRoZSBvdXRlciBhbmQgaW5uZXIgcGFja2FnZSBjb2RlIHNob3VsZCBiZSBpbmxpbmVkXG4gICAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJzk5OScpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBybVN5bmModGVtcERpciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgIH1cbiAgfSk7XG59KTtcbiJdfQ==
@@ -11,4 +11,4 @@ async function normalizeRequest(request) {
11
11
  }
12
12
  `;
13
13
  export { NORMALIZE_REQUEST_CODE };
14
- //# sourceMappingURL=request-converter.js.map
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVxdWVzdC1jb252ZXJ0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxzQkFBc0IsR0FBRzs7Ozs7Ozs7Ozs7Q0FXOUIsQ0FBQztBQUVGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTk9STUFMSVpFX1JFUVVFU1RfQ09ERSA9IGBcbmFzeW5jIGZ1bmN0aW9uIG5vcm1hbGl6ZVJlcXVlc3QocmVxdWVzdCkge1xuICBjb25zdCBvcHRpb25zID0ge1xuICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgaGVhZGVyczogbmV3IEhlYWRlcnMocmVxdWVzdC5oZWFkZXJzKVxuICB9O1xuICBpZiAoIVsnR0VUJywgJ0hFQUQnLCAnT1BUSU9OUycsICdUUkFDRScsICdDT05ORUNUJ10uaW5jbHVkZXMocmVxdWVzdC5tZXRob2QpKSB7XG4gICAgb3B0aW9ucy5ib2R5ID0gYXdhaXQgcmVxdWVzdC5hcnJheUJ1ZmZlcigpO1xuICB9XG4gIHJldHVybiBuZXcgUmVxdWVzdChyZXF1ZXN0LnVybCwgb3B0aW9ucyk7XG59XG5gO1xuXG5leHBvcnQgeyBOT1JNQUxJWkVfUkVRVUVTVF9DT0RFIH07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=resolve-sourcemap.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-sourcemap.test.d.ts","sourceRoot":"","sources":["../src/resolve-sourcemap.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,126 @@
1
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
2
+ import { BaseBuilder } from './base-builder.js';
3
+ /**
4
+ * Minimal subclass that exposes the protected `resolveSourcemap()` and
5
+ * `sourcemapsEnabled` members for testing.
6
+ */
7
+ class TestBuilder extends BaseBuilder {
8
+ async build() {
9
+ // no-op
10
+ }
11
+ callResolveSourcemap(defaultMode) {
12
+ return this.resolveSourcemap(defaultMode);
13
+ }
14
+ get publicSourcemapsEnabled() {
15
+ return this.sourcemapsEnabled;
16
+ }
17
+ }
18
+ function createBuilder(sourcemap) {
19
+ const config = {
20
+ buildTarget: 'standalone',
21
+ workingDir: '/tmp/workflow-test',
22
+ dirs: ['.'],
23
+ stepsBundlePath: '',
24
+ workflowsBundlePath: '',
25
+ webhookBundlePath: '',
26
+ sourcemap,
27
+ };
28
+ return new TestBuilder(config);
29
+ }
30
+ describe('resolveSourcemap', () => {
31
+ const originalEnv = process.env.WORKFLOW_SOURCEMAP;
32
+ beforeEach(() => {
33
+ delete process.env.WORKFLOW_SOURCEMAP;
34
+ });
35
+ afterEach(() => {
36
+ if (originalEnv === undefined) {
37
+ delete process.env.WORKFLOW_SOURCEMAP;
38
+ }
39
+ else {
40
+ process.env.WORKFLOW_SOURCEMAP = originalEnv;
41
+ }
42
+ });
43
+ it('returns the default when no config or env var is set', () => {
44
+ const builder = createBuilder();
45
+ expect(builder.callResolveSourcemap('inline')).toBe('inline');
46
+ expect(builder.callResolveSourcemap(false)).toBe(false);
47
+ expect(builder.callResolveSourcemap(true)).toBe(true);
48
+ });
49
+ it('prefers explicit config over the default', () => {
50
+ expect(createBuilder(false).callResolveSourcemap('inline')).toBe(false);
51
+ expect(createBuilder('external').callResolveSourcemap('inline')).toBe('external');
52
+ expect(createBuilder('linked').callResolveSourcemap(false)).toBe('linked');
53
+ expect(createBuilder(true).callResolveSourcemap('inline')).toBe(true);
54
+ });
55
+ it('prefers explicit config over environment variable', () => {
56
+ process.env.WORKFLOW_SOURCEMAP = 'inline';
57
+ expect(createBuilder(false).callResolveSourcemap('inline')).toBe(false);
58
+ expect(createBuilder('external').callResolveSourcemap('inline')).toBe('external');
59
+ });
60
+ it('uses environment variable when config is not set', () => {
61
+ process.env.WORKFLOW_SOURCEMAP = 'false';
62
+ expect(createBuilder().callResolveSourcemap('inline')).toBe(false);
63
+ process.env.WORKFLOW_SOURCEMAP = 'true';
64
+ expect(createBuilder().callResolveSourcemap(false)).toBe(true);
65
+ for (const mode of ['inline', 'linked', 'external', 'both']) {
66
+ process.env.WORKFLOW_SOURCEMAP = mode;
67
+ expect(createBuilder().callResolveSourcemap('inline')).toBe(mode);
68
+ }
69
+ });
70
+ it('accepts "0" / "1" as environment variable aliases for false / true', () => {
71
+ process.env.WORKFLOW_SOURCEMAP = '0';
72
+ expect(createBuilder().callResolveSourcemap('inline')).toBe(false);
73
+ process.env.WORKFLOW_SOURCEMAP = '1';
74
+ expect(createBuilder().callResolveSourcemap(false)).toBe(true);
75
+ });
76
+ it('falls back to default when env var is empty or unrecognized', () => {
77
+ process.env.WORKFLOW_SOURCEMAP = '';
78
+ expect(createBuilder().callResolveSourcemap('inline')).toBe('inline');
79
+ // Suppress the expected warning
80
+ const originalWarn = console.warn;
81
+ console.warn = () => { };
82
+ try {
83
+ process.env.WORKFLOW_SOURCEMAP = 'nonsense';
84
+ expect(createBuilder().callResolveSourcemap('inline')).toBe('inline');
85
+ }
86
+ finally {
87
+ console.warn = originalWarn;
88
+ }
89
+ });
90
+ });
91
+ describe('sourcemapsEnabled', () => {
92
+ const originalEnv = process.env.WORKFLOW_SOURCEMAP;
93
+ beforeEach(() => {
94
+ delete process.env.WORKFLOW_SOURCEMAP;
95
+ });
96
+ afterEach(() => {
97
+ if (originalEnv === undefined) {
98
+ delete process.env.WORKFLOW_SOURCEMAP;
99
+ }
100
+ else {
101
+ process.env.WORKFLOW_SOURCEMAP = originalEnv;
102
+ }
103
+ });
104
+ it('is true by default', () => {
105
+ expect(createBuilder().publicSourcemapsEnabled).toBe(true);
106
+ });
107
+ it('is false when config sourcemap is false', () => {
108
+ expect(createBuilder(false).publicSourcemapsEnabled).toBe(false);
109
+ });
110
+ it('is true for any non-false config value', () => {
111
+ for (const mode of [
112
+ true,
113
+ 'inline',
114
+ 'linked',
115
+ 'external',
116
+ 'both',
117
+ ]) {
118
+ expect(createBuilder(mode).publicSourcemapsEnabled).toBe(true);
119
+ }
120
+ });
121
+ it('is false when WORKFLOW_SOURCEMAP env is false', () => {
122
+ process.env.WORKFLOW_SOURCEMAP = 'false';
123
+ expect(createBuilder().publicSourcemapsEnabled).toBe(false);
124
+ });
125
+ });
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1zb3VyY2VtYXAudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXNvbHZlLXNvdXJjZW1hcC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdoRDs7O0dBR0c7QUFDSCxNQUFNLFdBQVksU0FBUSxXQUFXO0lBQ25DLEtBQUssQ0FBQyxLQUFLO1FBQ1QsUUFBUTtJQUNWLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxXQUEwQjtRQUNwRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBVyx1QkFBdUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBRUQsU0FBUyxhQUFhLENBQUMsU0FBeUI7SUFDOUMsTUFBTSxNQUFNLEdBQXFCO1FBQy9CLFdBQVcsRUFBRSxZQUFZO1FBQ3pCLFVBQVUsRUFBRSxvQkFBb0I7UUFDaEMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDO1FBQ1gsZUFBZSxFQUFFLEVBQUU7UUFDbkIsbUJBQW1CLEVBQUUsRUFBRTtRQUN2QixpQkFBaUIsRUFBRSxFQUFFO1FBQ3JCLFNBQVM7S0FDVixDQUFDO0lBQ0YsT0FBTyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtJQUNoQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDO0lBRW5ELFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENB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QUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLCtDQUErQyxFQUFFLEdBQUcsRUFBRTtRQUN2RCxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztRQUN6QyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFmdGVyRWFjaCwgYmVmb3JlRWFjaCwgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHsgQmFzZUJ1aWxkZXIgfSBmcm9tICcuL2Jhc2UtYnVpbGRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNvdXJjZW1hcE1vZGUsIFN0YW5kYWxvbmVDb25maWcgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqXG4gKiBNaW5pbWFsIHN1YmNsYXNzIHRoYXQgZXhwb3NlcyB0aGUgcHJvdGVjdGVkIGByZXNvbHZlU291cmNlbWFwKClgIGFuZFxuICogYHNvdXJjZW1hcHNFbmFibGVkYCBtZW1iZXJzIGZvciB0ZXN0aW5nLlxuICovXG5jbGFzcyBUZXN0QnVpbGRlciBleHRlbmRzIEJhc2VCdWlsZGVyIHtcbiAgYXN5bmMgYnVpbGQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gbm8tb3BcbiAgfVxuXG4gIHB1YmxpYyBjYWxsUmVzb2x2ZVNvdXJjZW1hcChkZWZhdWx0TW9kZTogU291cmNlbWFwTW9kZSk6IFNvdXJjZW1hcE1vZGUge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVTb3VyY2VtYXAoZGVmYXVsdE1vZGUpO1xuICB9XG5cbiAgcHVibGljIGdldCBwdWJsaWNTb3VyY2VtYXBzRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2VtYXBzRW5hYmxlZDtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVCdWlsZGVyKHNvdXJjZW1hcD86IFNvdXJjZW1hcE1vZGUpOiBUZXN0QnVpbGRlciB7XG4gIGNvbnN0IGNvbmZpZzogU3RhbmRhbG9uZUNvbmZpZyA9IHtcbiAgICBidWlsZFRhcmdldDogJ3N0YW5kYWxvbmUnLFxuICAgIHdvcmtpbmdEaXI6ICcvdG1wL3dvcmtmbG93LXRlc3QnLFxuICAgIGRpcnM6IFsnLiddLFxuICAgIHN0ZXBzQnVuZGxlUGF0aDogJycsXG4gICAgd29ya2Zsb3dzQnVuZGxlUGF0aDogJycsXG4gICAgd2ViaG9va0J1bmRsZVBhdGg6ICcnLFxuICAgIHNvdXJjZW1hcCxcbiAgfTtcbiAgcmV0dXJuIG5ldyBUZXN0QnVpbGRlcihjb25maWcpO1xufVxuXG5kZXNjcmliZSgncmVzb2x2ZVNvdXJjZW1hcCcsICgpID0+IHtcbiAgY29uc3Qgb3JpZ2luYWxFbnYgPSBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVA7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgZGVsZXRlIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUDtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBpZiAob3JpZ2luYWxFbnYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVsZXRlIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUDtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQID0gb3JpZ2luYWxFbnY7XG4gICAgfVxuICB9KTtcblxuICBpdCgncmV0dXJucyB0aGUgZGVmYXVsdCB3aGVuIG5vIGNvbmZpZyBvciBlbnYgdmFyIGlzIHNldCcsICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQnVpbGRlcigpO1xuICAgIGV4cGVjdChidWlsZGVyLmNhbGxSZXNvbHZlU291cmNlbWFwKCdpbmxpbmUnKSkudG9CZSgnaW5saW5lJyk7XG4gICAgZXhwZWN0KGJ1aWxkZXIuY2FsbFJlc29sdmVTb3VyY2VtYXAoZmFsc2UpKS50b0JlKGZhbHNlKTtcbiAgICBleHBlY3QoYnVpbGRlci5jYWxsUmVzb2x2ZVNvdXJjZW1hcCh0cnVlKSkudG9CZSh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ3ByZWZlcnMgZXhwbGljaXQgY29uZmlnIG92ZXIgdGhlIGRlZmF1bHQnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoZmFsc2UpLmNhbGxSZXNvbHZlU291cmNlbWFwKCdpbmxpbmUnKSkudG9CZShmYWxzZSk7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoJ2V4dGVybmFsJykuY2FsbFJlc29sdmVTb3VyY2VtYXAoJ2lubGluZScpKS50b0JlKFxuICAgICAgJ2V4dGVybmFsJ1xuICAgICk7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoJ2xpbmtlZCcpLmNhbGxSZXNvbHZlU291cmNlbWFwKGZhbHNlKSkudG9CZSgnbGlua2VkJyk7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIodHJ1ZSkuY2FsbFJlc29sdmVTb3VyY2VtYXAoJ2lubGluZScpKS50b0JlKHRydWUpO1xuICB9KTtcblxuICBpdCgncHJlZmVycyBleHBsaWNpdCBjb25maWcgb3ZlciBlbnZpcm9ubWVudCB2YXJpYWJsZScsICgpID0+IHtcbiAgICBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVAgPSAnaW5saW5lJztcbiAgICBleHBlY3QoY3JlYXRlQnVpbGRlcihmYWxzZSkuY2FsbFJlc29sdmVTb3VyY2VtYXAoJ2lubGluZScpKS50b0JlKGZhbHNlKTtcbiAgICBleHBlY3QoY3JlYXRlQnVpbGRlcignZXh0ZXJuYWwnKS5jYWxsUmVzb2x2ZVNvdXJjZW1hcCgnaW5saW5lJykpLnRvQmUoXG4gICAgICAnZXh0ZXJuYWwnXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3VzZXMgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBjb25maWcgaXMgbm90IHNldCcsICgpID0+IHtcbiAgICBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVAgPSAnZmFsc2UnO1xuICAgIGV4cGVjdChjcmVhdGVCdWlsZGVyKCkuY2FsbFJlc29sdmVTb3VyY2VtYXAoJ2lubGluZScpKS50b0JlKGZhbHNlKTtcblxuICAgIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUCA9ICd0cnVlJztcbiAgICBleHBlY3QoY3JlYXRlQnVpbGRlcigpLmNhbGxSZXNvbHZlU291cmNlbWFwKGZhbHNlKSkudG9CZSh0cnVlKTtcblxuICAgIGZvciAoY29uc3QgbW9kZSBvZiBbJ2lubGluZScsICdsaW5rZWQnLCAnZXh0ZXJuYWwnLCAnYm90aCddIGFzIGNvbnN0KSB7XG4gICAgICBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVAgPSBtb2RlO1xuICAgICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoKS5jYWxsUmVzb2x2ZVNvdXJjZW1hcCgnaW5saW5lJykpLnRvQmUobW9kZSk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnYWNjZXB0cyBcIjBcIiAvIFwiMVwiIGFzIGVudmlyb25tZW50IHZhcmlhYmxlIGFsaWFzZXMgZm9yIGZhbHNlIC8gdHJ1ZScsICgpID0+IHtcbiAgICBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVAgPSAnMCc7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoKS5jYWxsUmVzb2x2ZVNvdXJjZW1hcCgnaW5saW5lJykpLnRvQmUoZmFsc2UpO1xuXG4gICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQID0gJzEnO1xuICAgIGV4cGVjdChjcmVhdGVCdWlsZGVyKCkuY2FsbFJlc29sdmVTb3VyY2VtYXAoZmFsc2UpKS50b0JlKHRydWUpO1xuICB9KTtcblxuICBpdCgnZmFsbHMgYmFjayB0byBkZWZhdWx0IHdoZW4gZW52IHZhciBpcyBlbXB0eSBvciB1bnJlY29nbml6ZWQnLCAoKSA9PiB7XG4gICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQID0gJyc7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoKS5jYWxsUmVzb2x2ZVNvdXJjZW1hcCgnaW5saW5lJykpLnRvQmUoJ2lubGluZScpO1xuXG4gICAgLy8gU3VwcHJlc3MgdGhlIGV4cGVjdGVkIHdhcm5pbmdcbiAgICBjb25zdCBvcmlnaW5hbFdhcm4gPSBjb25zb2xlLndhcm47XG4gICAgY29uc29sZS53YXJuID0gKCkgPT4ge307XG4gICAgdHJ5IHtcbiAgICAgIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUCA9ICdub25zZW5zZSc7XG4gICAgICBleHBlY3QoY3JlYXRlQnVpbGRlcigpLmNhbGxSZXNvbHZlU291cmNlbWFwKCdpbmxpbmUnKSkudG9CZSgnaW5saW5lJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGNvbnNvbGUud2FybiA9IG9yaWdpbmFsV2FybjtcbiAgICB9XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdzb3VyY2VtYXBzRW5hYmxlZCcsICgpID0+IHtcbiAgY29uc3Qgb3JpZ2luYWxFbnYgPSBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVA7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgZGVsZXRlIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUDtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBpZiAob3JpZ2luYWxFbnYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVsZXRlIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUDtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQID0gb3JpZ2luYWxFbnY7XG4gICAgfVxuICB9KTtcblxuICBpdCgnaXMgdHJ1ZSBieSBkZWZhdWx0JywgKCkgPT4ge1xuICAgIGV4cGVjdChjcmVhdGVCdWlsZGVyKCkucHVibGljU291cmNlbWFwc0VuYWJsZWQpLnRvQmUodHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdpcyBmYWxzZSB3aGVuIGNvbmZpZyBzb3VyY2VtYXAgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoZmFsc2UpLnB1YmxpY1NvdXJjZW1hcHNFbmFibGVkKS50b0JlKGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoJ2lzIHRydWUgZm9yIGFueSBub24tZmFsc2UgY29uZmlnIHZhbHVlJywgKCkgPT4ge1xuICAgIGZvciAoY29uc3QgbW9kZSBvZiBbXG4gICAgICB0cnVlLFxuICAgICAgJ2lubGluZScsXG4gICAgICAnbGlua2VkJyxcbiAgICAgICdleHRlcm5hbCcsXG4gICAgICAnYm90aCcsXG4gICAgXSBhcyBjb25zdCkge1xuICAgICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIobW9kZSkucHVibGljU291cmNlbWFwc0VuYWJsZWQpLnRvQmUodHJ1ZSk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnaXMgZmFsc2Ugd2hlbiBXT1JLRkxPV19TT1VSQ0VNQVAgZW52IGlzIGZhbHNlJywgKCkgPT4ge1xuICAgIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUCA9ICdmYWxzZSc7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoKS5wdWJsaWNTb3VyY2VtYXBzRW5hYmxlZCkudG9CZShmYWxzZSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -115,4 +115,4 @@ export function extractClassEntries(manifest) {
115
115
  }
116
116
  return entries;
117
117
  }
118
- //# sourceMappingURL=serde-checker.js.map
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyZGUtY2hlY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJkZS1jaGVja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBRUgsT0FBTyxjQUFjLE1BQU0saUJBQWlCLENBQUM7QUFHN0Msa0ZBQWtGO0FBQ2xGLDZFQUE2RTtBQUM3RSxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRTlDLHdFQUF3RTtBQUN4RSxNQUFNLHNCQUFzQixHQUFHLElBQUksTUFBTSxDQUN2QyxnQ0FBZ0MsWUFBWSxvQkFBb0I7SUFDOUQsd0NBQXdDLFlBQVksNEJBQTRCLEVBQ2xGLEdBQUcsQ0FDSixDQUFDO0FBRUYsdUVBQXVFO0FBQ3ZFLE1BQU0scUJBQXFCLEdBQ3pCLHlEQUF5RCxDQUFDO0FBdUM1RDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLE9BT3RDO0lBQ0MsTUFBTSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXZELG1FQUFtRTtJQUNuRSxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRTNELGlFQUFpRTtJQUNqRSxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVoRCw4REFBOEQ7SUFDOUQsTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRWpFLHdCQUF3QjtJQUN4QixNQUFNLE9BQU8sR0FBNEIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2xFLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztRQUU1QixzRUFBc0U7UUFDdEUsSUFBSSxp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QVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQy9ELE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZXJkZSBjb21wbGlhbmNlIGNoZWNrZXIgZm9yIHdvcmtmbG93IGN1c3RvbSBjbGFzcyBzZXJpYWxpemF0aW9uLlxuICpcbiAqIEFuYWx5emVzIHNvdXJjZSBjb2RlIHRvIGRldGVybWluZSBpZiBjbGFzc2VzIHdpdGggV09SS0ZMT1dfU0VSSUFMSVpFIC9cbiAqIFdPUktGTE9XX0RFU0VSSUFMSVpFIGFyZSBjb3JyZWN0bHkgc2V0IHVwIGZvciB0aGUgd29ya2Zsb3cgc2FuZGJveC5cbiAqXG4gKiBVc2VkIGJ5OlxuICogLSBDTEkgYHZhbGlkYXRlYCBjb21tYW5kXG4gKiAtIENMSSBgdHJhbnNmb3JtYCBjb21tYW5kICgtLWNoZWNrLXNlcmRlKVxuICogLSBTV0MgcGxheWdyb3VuZCBzZXJkZSBhbmFseXNpcyBwYW5lbFxuICogLSBCdWlsZC10aW1lIHdhcm5pbmdzIGluIEJhc2VCdWlsZGVyXG4gKi9cblxuaW1wb3J0IGJ1aWx0aW5Nb2R1bGVzIGZyb20gJ2J1aWx0aW4tbW9kdWxlcyc7XG5pbXBvcnQgdHlwZSB7IFdvcmtmbG93TWFuaWZlc3QgfSBmcm9tICcuL2FwcGx5LXN3Yy10cmFuc2Zvcm0uanMnO1xuXG4vLyBCdWlsZCBhIHJlZ2V4IHRoYXQgbWF0Y2hlcyBOb2RlLmpzIGJ1aWx0LWluIG1vZHVsZSBpbXBvcnRzIGluIHRyYW5zZm9ybWVkIGNvZGUuXG4vLyBIYW5kbGVzIGJvdGggRVNNIChgZnJvbSAnZnMnYCwgYGZyb20gJ25vZGU6ZnMnYCkgYW5kIENKUyAoYHJlcXVpcmUoJ2ZzJylgKVxuY29uc3Qgbm9kZUJ1aWx0aW5zID0gYnVpbHRpbk1vZHVsZXMuam9pbignfCcpO1xuXG4vLyBSZWdleCB0byBleHRyYWN0IHNwZWNpZmljIG1vZHVsZSBuYW1lcyBmcm9tIGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHNcbmNvbnN0IG5vZGVJbXBvcnRFeHRyYWN0UmVnZXggPSBuZXcgUmVnRXhwKFxuICBgKD86ZnJvbVxcXFxzK1snXCJdKD86bm9kZTopPygoPzoke25vZGVCdWlsdGluc30pKD86L1teJ1wiXSopPylbJ1wiXWAgK1xuICAgIGB8cmVxdWlyZVxcXFxzKlxcXFwoXFxcXHMqWydcIl0oPzpub2RlOik/KCg/OiR7bm9kZUJ1aWx0aW5zfSkoPzovW14nXCJdKik/KVsnXCJdXFxcXHMqXFxcXCkpYCxcbiAgJ2cnXG4pO1xuXG4vLyBSZWdleCB0byBkZXRlY3QgY2xhc3MgcmVnaXN0cmF0aW9uIElJRkVzIGdlbmVyYXRlZCBieSB0aGUgU1dDIHBsdWdpblxuY29uc3QgcmVnaXN0cmF0aW9uSWlmZVJlZ2V4ID1cbiAgL1N5bWJvbFxcLmZvclxccypcXChcXHMqW1wiJ113b3JrZmxvdy1jbGFzcy1yZWdpc3RyeVtcIiddXFxzKlxcKS87XG5cbi8qKlxuICogUmVzdWx0IG9mIGNoZWNraW5nIGEgc2luZ2xlIGNsYXNzIGZvciBzZXJkZSBjb21wbGlhbmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcmRlQ2xhc3NDaGVja1Jlc3VsdCB7XG4gIC8qKiBUaGUgY2xhc3MgbmFtZSBhcyBkZXRlY3RlZCBpbiB0aGUgc291cmNlICovXG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICAvKiogVGhlIGNsYXNzSWQgYXNzaWduZWQgYnkgdGhlIFNXQyBwbHVnaW4gKGZyb20gdGhlIG1hbmlmZXN0KSAqL1xuICBjbGFzc0lkOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBTV0MgcGx1Z2luIGRldGVjdGVkIHNlcmRlIHN5bWJvbHMgb24gdGhpcyBjbGFzcyAqL1xuICBkZXRlY3RlZDogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgYSByZWdpc3RyYXRpb24gSUlGRSB3YXMgZ2VuZXJhdGVkIGluIHRoZSBvdXRwdXQgKi9cbiAgcmVnaXN0ZXJlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE5vZGUuanMgYnVpbHQtaW4gbW9kdWxlIGltcG9ydHMgcmVtYWluaW5nIGluIHRoZSB3b3JrZmxvdy1tb2RlIG91dHB1dC5cbiAgICogSWYgbm9uLWVtcHR5LCB0aGUgY2xhc3MgaXMgTk9UIHdvcmtmbG93LXNhbmRib3ggY29tcGxpYW50LlxuICAgKi9cbiAgbm9kZUltcG9ydHM6IHN0cmluZ1tdO1xuICAvKiogV2hldGhlciB0aGUgY2xhc3MgcGFzc2VzIGFsbCBjb21wbGlhbmNlIGNoZWNrcyAqL1xuICBjb21wbGlhbnQ6IGJvb2xlYW47XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbnMgb2YgYW55IGlzc3VlcyBmb3VuZCAqL1xuICBpc3N1ZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEZ1bGwgcmVzdWx0IG9mIHNlcmRlIGNvbXBsaWFuY2UgYW5hbHlzaXMgZm9yIGEgc291cmNlIGZpbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VyZGVDaGVja1Jlc3VsdCB7XG4gIC8qKiBQZXItY2xhc3MgYW5hbHlzaXMgcmVzdWx0cyAqL1xuICBjbGFzc2VzOiBTZXJkZUNsYXNzQ2hlY2tSZXN1bHRbXTtcbiAgLyoqIEFsbCBOb2RlLmpzIGJ1aWx0LWluIGltcG9ydHMgZm91bmQgaW4gdGhlIHdvcmtmbG93LW1vZGUgb3V0cHV0ICovXG4gIGdsb2JhbE5vZGVJbXBvcnRzOiBzdHJpbmdbXTtcbiAgLyoqIFdoZXRoZXIgdGhlIHdvcmtmbG93LW1vZGUgb3V0cHV0IGNvbnRhaW5zIGFueSBzZXJkZS1yZWxhdGVkIGNsYXNzZXMgKi9cbiAgaGFzU2VyZGVDbGFzc2VzOiBib29sZWFuO1xuICAvKiogVGhlIHJhdyB3b3JrZmxvdyBtYW5pZmVzdCBleHRyYWN0ZWQgZnJvbSB0aGUgU1dDIHRyYW5zZm9ybSAqL1xuICBtYW5pZmVzdDogV29ya2Zsb3dNYW5pZmVzdDtcbn1cblxuLyoqXG4gKiBMaWdodHdlaWdodCBzZXJkZSBjb21wbGlhbmNlIGNoZWNrZXIgdGhhdCB3b3JrcyB3aXRoIHByZS1jb21wdXRlZFxuICogU1dDIHRyYW5zZm9ybSByZXN1bHRzLiBUaGlzIGF2b2lkcyByZS1ydW5uaW5nIHRoZSBTV0MgdHJhbnNmb3JtXG4gKiB3aGVuIHRoZSBjYWxsZXIgYWxyZWFkeSBoYXMgdGhlIG91dHB1dHMgKGUuZy4sIHRoZSBwbGF5Z3JvdW5kIG9yIGJ1aWxkZXIpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYW5hbHl6ZVNlcmRlQ29tcGxpYW5jZShvcHRpb25zOiB7XG4gIC8qKiBTb3VyY2UgY29kZSAodXNlZCBmb3IgcGF0dGVybiBkZXRlY3Rpb24pICovXG4gIHNvdXJjZUNvZGU6IHN0cmluZztcbiAgLyoqIFdvcmtmbG93LW1vZGUgdHJhbnNmb3JtZWQgb3V0cHV0ICovXG4gIHdvcmtmbG93Q29kZTogc3RyaW5nO1xuICAvKiogTWFuaWZlc3QgZXh0cmFjdGVkIGZyb20gdGhlIFNXQyB0cmFuc2Zvcm0gKi9cbiAgbWFuaWZlc3Q6IFdvcmtmbG93TWFuaWZlc3Q7XG59KTogU2VyZGVDaGVja1Jlc3VsdCB7XG4gIGNvbnN0IHsgc291cmNlQ29kZSwgd29ya2Zsb3dDb2RlLCBtYW5pZmVzdCB9ID0gb3B0aW9ucztcblxuICAvLyAxLiBFeHRyYWN0IGFsbCBOb2RlLmpzIGJ1aWx0LWluIGltcG9ydHMgZnJvbSB0aGUgd29ya2Zsb3cgb3V0cHV0XG4gIGNvbnN0IGdsb2JhbE5vZGVJbXBvcnRzID0gZXh0cmFjdE5vZGVJbXBvcnRzKHdvcmtmbG93Q29kZSk7XG5cbiAgLy8gMi4gQ2hlY2sgaWYgdGhlIG1hbmlmZXN0IGNvbnRhaW5zIGFueSBzZXJkZS1yZWdpc3RlcmVkIGNsYXNzZXNcbiAgY29uc3QgY2xhc3NFbnRyaWVzID0gZXh0cmFjdENsYXNzRW50cmllcyhtYW5pZmVzdCk7XG4gIGNvbnN0IGhhc1NlcmRlQ2xhc3NlcyA9IGNsYXNzRW50cmllcy5sZW5ndGggPiAwO1xuXG4gIC8vIDMuIENoZWNrIGlmIHRoZSB3b3JrZmxvdyBvdXRwdXQgY29udGFpbnMgcmVnaXN0cmF0aW9uIElJRkVzXG4gIGNvbnN0IGhhc1JlZ2lzdHJhdGlvbiA9IHJlZ2lzdHJhdGlvbklpZmVSZWdleC50ZXN0KHdvcmtmbG93Q29kZSk7XG5cbiAgLy8gNC4gQW5hbHl6ZSBlYWNoIGNsYXNzXG4gIGNvbnN0IGNsYXNzZXM6IFNlcmRlQ2xhc3NDaGVja1Jlc3VsdFtdID0gY2xhc3NFbnRyaWVzLm1hcCgoZW50cnkpID0+IHtcbiAgICBjb25zdCBpc3N1ZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBDaGVjayBmb3IgTm9kZS5qcyBpbXBvcnRzICh0aGVzZSB3aWxsIGZhaWwgaW4gdGhlIHdvcmtmbG93IHNhbmRib3gpXG4gICAgaWYgKGdsb2JhbE5vZGVJbXBvcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlzc3Vlcy5wdXNoKFxuICAgICAgICBgV29ya2Zsb3cgYnVuZGxlIGNvbnRhaW5zIE5vZGUuanMgYnVpbHQtaW4gaW1wb3J0czogJHtnbG9iYWxOb2RlSW1wb3J0cy5qb2luKCcsICcpfS4gYCArXG4gICAgICAgICAgYFRoZXNlIHdpbGwgZmFpbCBhdCBydW50aW1lIGluIHRoZSB3b3JrZmxvdyBzYW5kYm94LiBgICtcbiAgICAgICAgICBgQWRkIFwidXNlIHN0ZXBcIiB0byBtZXRob2RzIHRoYXQgZGVwZW5kIG9uIE5vZGUuanMgQVBJcyBzbyB0aGV5IGFyZSBzdHJpcHBlZCBmcm9tIHRoZSB3b3JrZmxvdyBidW5kbGUuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgcmVnaXN0cmF0aW9uXG4gICAgaWYgKCFoYXNSZWdpc3RyYXRpb24pIHtcbiAgICAgIGlzc3Vlcy5wdXNoKFxuICAgICAgICBgTm8gY2xhc3MgcmVnaXN0cmF0aW9uIElJRkUgd2FzIGdlbmVyYXRlZC4gYCArXG4gICAgICAgICAgYEVuc3VyZSBXT1JLRkxPV19TRVJJQUxJWkUgYW5kIFdPUktGTE9XX0RFU0VSSUFMSVpFIGFyZSBkZWZpbmVkIGFzIHN0YXRpYyBtZXRob2RzIGAgK1xuICAgICAgICAgIGBpbnNpZGUgdGhlIGNsYXNzIGJvZHkgdXNpbmcgY29tcHV0ZWQgcHJvcGVydHkgc3ludGF4OiBzdGF0aWMgW1dPUktGTE9XX1NFUklBTElaRV0oLi4uKSB7IC4uLiB9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2xhc3NOYW1lOiBlbnRyeS5jbGFzc05hbWUsXG4gICAgICBjbGFzc0lkOiBlbnRyeS5jbGFzc0lkLFxuICAgICAgZGV0ZWN0ZWQ6IHRydWUsXG4gICAgICByZWdpc3RlcmVkOiBoYXNSZWdpc3RyYXRpb24sXG4gICAgICBub2RlSW1wb3J0czogZ2xvYmFsTm9kZUltcG9ydHMsXG4gICAgICBjb21wbGlhbnQ6IGdsb2JhbE5vZGVJbXBvcnRzLmxlbmd0aCA9PT0gMCAmJiBoYXNSZWdpc3RyYXRpb24sXG4gICAgICBpc3N1ZXMsXG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gNS4gQ2hlY2sgZm9yIGNsYXNzZXMgdGhhdCBoYXZlIHNlcmRlIHBhdHRlcm5zIGluIHNvdXJjZSBidXQgd2VyZW4ndCBkZXRlY3RlZCBieSBTV0NcbiAgY29uc3Qgc291cmNlSGFzU2VyZGVQYXR0ZXJucyA9XG4gICAgL1xcW1xccypXT1JLRkxPV18oPzpTRVJJQUxJWkV8REVTRVJJQUxJWkUpXFxzKlxcXS8udGVzdChzb3VyY2VDb2RlKSB8fFxuICAgIC9TeW1ib2xcXC5mb3JcXHMqXFwoXFxzKlsnXCJdd29ya2Zsb3ctKD86c2VyaWFsaXplfGRlc2VyaWFsaXplKVsnXCJdXFxzKlxcKS8udGVzdChcbiAgICAgIHNvdXJjZUNvZGVcbiAgICApO1xuXG4gIGlmIChzb3VyY2VIYXNTZXJkZVBhdHRlcm5zICYmIGNsYXNzRW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICBjbGFzc2VzLnB1c2goe1xuICAgICAgY2xhc3NOYW1lOiAnPHVua25vd24+JyxcbiAgICAgIGNsYXNzSWQ6ICcnLFxuICAgICAgZGV0ZWN0ZWQ6IGZhbHNlLFxuICAgICAgcmVnaXN0ZXJlZDogZmFsc2UsXG4gICAgICBub2RlSW1wb3J0czogZ2xvYmFsTm9kZUltcG9ydHMsXG4gICAgICBjb21wbGlhbnQ6IGZhbHNlLFxuICAgICAgaXNzdWVzOiBbXG4gICAgICAgIGBTb3VyY2UgY29kZSBjb250YWlucyBXT1JLRkxPV19TRVJJQUxJWkUvV09SS0ZMT1dfREVTRVJJQUxJWkUgcGF0dGVybnMgYnV0IGAgK1xuICAgICAgICAgIGB0aGUgU1dDIHBsdWdpbiBkaWQgbm90IGRldGVjdCBhbnkgc2VyZGUtZW5hYmxlZCBjbGFzc2VzLiBgICtcbiAgICAgICAgICBgRW5zdXJlIHRoZSBzeW1ib2xzIGFyZSBkZWZpbmVkIGFzIHN0YXRpYyBtZXRob2RzIElOU0lERSB0aGUgY2xhc3MgYm9keSwgYCArXG4gICAgICAgICAgYG5vdCBhc3NpZ25lZCBleHRlcm5hbGx5IChlLmcuLCAoTXlDbGFzcyBhcyBhbnkpW1dPUktGTE9XX1NFUklBTElaRV0gPSAuLi4pLmAsXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjbGFzc2VzLFxuICAgIGdsb2JhbE5vZGVJbXBvcnRzLFxuICAgIGhhc1NlcmRlQ2xhc3NlcyxcbiAgICBtYW5pZmVzdCxcbiAgfTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IE5vZGUuanMgYnVpbHQtaW4gbW9kdWxlIG5hbWVzIGZyb20gdHJhbnNmb3JtZWQgY29kZS5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdE5vZGVJbXBvcnRzKGNvZGU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgaW1wb3J0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAvLyBSZXNldCByZWdleCBzdGF0ZVxuICBub2RlSW1wb3J0RXh0cmFjdFJlZ2V4Lmxhc3RJbmRleCA9IDA7XG4gIGZvciAoXG4gICAgbGV0IG1hdGNoID0gbm9kZUltcG9ydEV4dHJhY3RSZWdleC5leGVjKGNvZGUpO1xuICAgIG1hdGNoICE9PSBudWxsO1xuICAgIG1hdGNoID0gbm9kZUltcG9ydEV4dHJhY3RSZWdleC5leGVjKGNvZGUpXG4gICkge1xuICAgIC8vIG1hdGNoWzFdIGlzIGZyb20gdGhlIEVTTSBwYXR0ZXJuLCBtYXRjaFsyXSBpcyBmcm9tIHRoZSBDSlMgcGF0dGVyblxuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSBtYXRjaFsxXSB8fCBtYXRjaFsyXTtcbiAgICBpZiAobW9kdWxlTmFtZSkge1xuICAgICAgLy8gTm9ybWFsaXplIHRvIGJhc2UgbW9kdWxlIG5hbWUgKGUuZy4sICdmcy9wcm9taXNlcycgLT4gJ2ZzJylcbiAgICAgIGltcG9ydHMuYWRkKG1vZHVsZU5hbWUuc3BsaXQoJy8nKVswXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbLi4uaW1wb3J0c10uc29ydCgpO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgY2xhc3MgZW50cmllcyBmcm9tIGEgV29ya2Zsb3dNYW5pZmVzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RDbGFzc0VudHJpZXMoXG4gIG1hbmlmZXN0OiBXb3JrZmxvd01hbmlmZXN0XG4pOiBBcnJheTx7IGNsYXNzTmFtZTogc3RyaW5nOyBjbGFzc0lkOiBzdHJpbmc7IGZpbGVOYW1lOiBzdHJpbmcgfT4ge1xuICBjb25zdCBlbnRyaWVzOiBBcnJheTx7XG4gICAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgY2xhc3NJZDogc3RyaW5nO1xuICAgIGZpbGVOYW1lOiBzdHJpbmc7XG4gIH0+ID0gW107XG4gIGlmICghbWFuaWZlc3QuY2xhc3NlcykgcmV0dXJuIGVudHJpZXM7XG5cbiAgZm9yIChjb25zdCBbZmlsZU5hbWUsIGNsYXNzZXNdIG9mIE9iamVjdC5lbnRyaWVzKG1hbmlmZXN0LmNsYXNzZXMpKSB7XG4gICAgZm9yIChjb25zdCBbY2xhc3NOYW1lLCB7IGNsYXNzSWQgfV0gb2YgT2JqZWN0LmVudHJpZXMoY2xhc3NlcykpIHtcbiAgICAgIGVudHJpZXMucHVzaCh7IGNsYXNzTmFtZSwgY2xhc3NJZCwgZmlsZU5hbWUgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBlbnRyaWVzO1xufVxuIl19
@@ -3,9 +3,6 @@ import type { WorkflowConfig } from './types.js';
3
3
  export declare class StandaloneBuilder extends BaseBuilder {
4
4
  constructor(config: WorkflowConfig);
5
5
  build(): Promise<void>;
6
- private mergeManifests;
7
- private buildStepsBundle;
8
- private buildWorkflowsBundle;
9
6
  private buildWebhookFunction;
10
7
  }
11
8
  //# sourceMappingURL=standalone.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../src/standalone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qBAAa,iBAAkB,SAAQ,WAAW;gBACpC,MAAM,EAAE,cAAc;IAO5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B5B,OAAO,CAAC,cAAc;YAuBR,gBAAgB;YAqBhB,oBAAoB;YA0BpB,oBAAoB;CAUnC"}
1
+ {"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../src/standalone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qBAAa,iBAAkB,SAAQ,WAAW;gBACpC,MAAM,EAAE,cAAc;IAO5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAiCd,oBAAoB;CAUnC"}