@dbx-tools/cli 0.9.154 → 0.9.158

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 (123) hide show
  1. package/bin/dbx-genie.ts +3 -2
  2. package/index.appkit.ts +9 -0
  3. package/index.auth.ts +9 -0
  4. package/index.brand.ts +18 -0
  5. package/index.genie-code.ts +18 -0
  6. package/index.graphiti.ts +7 -0
  7. package/index.lakebase-proxy.ts +18 -0
  8. package/index.model-gateway.ts +9 -0
  9. package/index.ts +5 -61
  10. package/index.tunnel.ts +14 -0
  11. package/lib/bin/dbx-genie.js +4 -3
  12. package/lib/index.appkit.d.ts +5 -0
  13. package/lib/index.appkit.js +8 -0
  14. package/lib/index.auth.d.ts +5 -0
  15. package/lib/index.auth.js +8 -0
  16. package/lib/index.brand.d.ts +14 -0
  17. package/lib/index.brand.js +14 -0
  18. package/lib/index.d.ts +5 -61
  19. package/lib/index.genie-code.d.ts +14 -0
  20. package/lib/index.genie-code.js +14 -0
  21. package/lib/index.graphiti.d.ts +3 -0
  22. package/lib/index.graphiti.js +6 -0
  23. package/lib/index.js +6 -43
  24. package/lib/index.lakebase-proxy.d.ts +14 -0
  25. package/lib/index.lakebase-proxy.js +14 -0
  26. package/lib/index.model-gateway.d.ts +5 -0
  27. package/lib/index.model-gateway.js +8 -0
  28. package/lib/index.tunnel.d.ts +10 -0
  29. package/lib/index.tunnel.js +12 -0
  30. package/lib/src/appkit/cli.d.ts +1 -2
  31. package/lib/src/appkit/cli.js +4 -5
  32. package/lib/src/auth/cli.d.ts +2 -2
  33. package/lib/src/auth/cli.js +2 -3
  34. package/lib/src/auth/options.d.ts +2 -2
  35. package/lib/src/auth/options.js +4 -6
  36. package/lib/src/bootstrap.js +10 -14
  37. package/lib/src/brand/options.js +2 -2
  38. package/lib/src/brand/run.js +6 -8
  39. package/lib/src/brand/showcase.js +5 -5
  40. package/lib/src/bun.js +6 -6
  41. package/lib/src/genie-code/cli.d.ts +2 -2
  42. package/lib/src/genie-code/cli.js +4 -4
  43. package/lib/src/genie-code/config.d.ts +1 -1
  44. package/lib/src/genie-code/config.js +7 -7
  45. package/lib/src/genie-code/install.d.ts +2 -2
  46. package/lib/src/genie-code/install.js +4 -4
  47. package/lib/src/genie-code/runner.d.ts +2 -3
  48. package/lib/src/genie-code/runner.js +13 -11
  49. package/lib/src/genie-code/runtime.d.ts +3 -3
  50. package/lib/src/genie-code/runtime.js +10 -9
  51. package/lib/src/graphiti/cli.d.ts +2 -3
  52. package/lib/src/graphiti/cli.js +7 -8
  53. package/lib/src/lakebase-proxy/cli.d.ts +1 -2
  54. package/lib/src/lakebase-proxy/cli.js +3 -4
  55. package/lib/src/lakebase-proxy/options.js +7 -9
  56. package/lib/src/lakebase-proxy/proxy.js +8 -8
  57. package/lib/src/model-gateway/cli.d.ts +2 -3
  58. package/lib/src/model-gateway/cli.js +3 -4
  59. package/lib/src/model-gateway/server.d.ts +1 -1
  60. package/lib/src/model-gateway/server.js +5 -6
  61. package/lib/src/root.js +3 -3
  62. package/lib/src/tunnel/app.js +7 -9
  63. package/lib/src/tunnel/cli.d.ts +1 -2
  64. package/lib/src/tunnel/cli.js +13 -14
  65. package/lib/src/tunnel/options.d.ts +5 -5
  66. package/lib/src/tunnel/options.js +11 -11
  67. package/lib/src/tunnel/proxy.js +18 -17
  68. package/lib/tsconfig.tsbuildinfo +1 -1
  69. package/package.json +58 -177
  70. package/src/appkit/cli.ts +2 -4
  71. package/src/auth/cli.ts +2 -4
  72. package/src/auth/options.ts +3 -5
  73. package/src/bootstrap.ts +9 -13
  74. package/src/brand/options.ts +1 -1
  75. package/src/brand/run.ts +7 -7
  76. package/src/brand/showcase.ts +4 -4
  77. package/src/bun.ts +6 -6
  78. package/src/genie-code/cli.ts +4 -4
  79. package/src/genie-code/config.ts +6 -6
  80. package/src/genie-code/install.ts +5 -7
  81. package/src/genie-code/runner.ts +12 -11
  82. package/src/genie-code/runtime.ts +10 -10
  83. package/src/graphiti/cli.ts +13 -9
  84. package/src/lakebase-proxy/cli.ts +7 -3
  85. package/src/lakebase-proxy/options.ts +13 -8
  86. package/src/lakebase-proxy/proxy.ts +7 -7
  87. package/src/model-gateway/cli.ts +7 -3
  88. package/src/model-gateway/server.ts +9 -5
  89. package/src/root.ts +2 -2
  90. package/src/tunnel/app.ts +6 -8
  91. package/src/tunnel/cli.ts +21 -15
  92. package/src/tunnel/options.ts +23 -15
  93. package/src/tunnel/proxy.ts +29 -20
  94. package/lib/src/appkit/index.d.ts +0 -5
  95. package/lib/src/appkit/index.js +0 -8
  96. package/lib/src/auth/index.d.ts +0 -5
  97. package/lib/src/auth/index.js +0 -8
  98. package/lib/src/brand/index.d.ts +0 -10
  99. package/lib/src/brand/index.js +0 -10
  100. package/lib/src/genie-code/index.d.ts +0 -12
  101. package/lib/src/genie-code/index.js +0 -12
  102. package/lib/src/genie-code/options.d.ts +0 -7
  103. package/lib/src/genie-code/options.js +0 -7
  104. package/lib/src/graphiti/index.d.ts +0 -5
  105. package/lib/src/graphiti/index.js +0 -7
  106. package/lib/src/graphiti/options.d.ts +0 -117
  107. package/lib/src/graphiti/options.js +0 -26
  108. package/lib/src/lakebase-proxy/index.d.ts +0 -13
  109. package/lib/src/lakebase-proxy/index.js +0 -13
  110. package/lib/src/model-gateway/index.d.ts +0 -3
  111. package/lib/src/model-gateway/index.js +0 -6
  112. package/lib/src/tunnel/index.d.ts +0 -8
  113. package/lib/src/tunnel/index.js +0 -10
  114. package/src/appkit/index.ts +0 -9
  115. package/src/auth/index.ts +0 -9
  116. package/src/brand/index.ts +0 -14
  117. package/src/genie-code/index.ts +0 -16
  118. package/src/genie-code/options.ts +0 -14
  119. package/src/graphiti/index.ts +0 -9
  120. package/src/graphiti/options.ts +0 -40
  121. package/src/lakebase-proxy/index.ts +0 -17
  122. package/src/model-gateway/index.ts +0 -7
  123. package/src/tunnel/index.ts +0 -12
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- import { stringUtils } from "@dbx-tools/shared-core";
6
+ import { escapeHtml, dedent } from "@dbx-tools/shared-core";
7
7
  function safeAsset(value) {
8
8
  if (!value)
9
9
  return undefined;
@@ -18,12 +18,12 @@ function safeFontFamily(value) {
18
18
  return /^[\w\s'",.-]+$/.test(value) ? value : "ui-sans-serif, system-ui, sans-serif";
19
19
  }
20
20
  function listItems(values) {
21
- return values.map((value) => `<li>${stringUtils.escapeHtml(value)}</li>`).join("");
21
+ return values.map((value) => `<li>${escapeHtml(value)}</li>`).join("");
22
22
  }
23
23
  /** Render one responsive brand presentation with desktop and mobile mockups. */
24
24
  export function renderBrandShowcase(brandPackage) {
25
25
  const { brand, visualReferences } = brandPackage;
26
- const html = stringUtils.escapeHtml;
26
+ const html = escapeHtml;
27
27
  const logo = safeAsset(brand.assets.logo.light) ?? safeAsset(brand.assets.icon.light);
28
28
  const icon = safeAsset(brand.assets.icon.light);
29
29
  const website = safeWebsite(brand.links.website);
@@ -63,7 +63,7 @@ export function renderBrandShowcase(brandPackage) {
63
63
  : "";
64
64
  const headline = brand.tagline ?? brand.name;
65
65
  // prettier-ignore
66
- return stringUtils.dedent(
66
+ return dedent(
67
67
  // ============================================================================
68
68
  /*html*/ `
69
69
  <!doctype html>
@@ -330,4 +330,4 @@ export function renderBrandShowcase(brandPackage) {
330
330
  // ============================================================================
331
331
  );
332
332
  }
333
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvd2Nhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnJhbmQvc2hvd2Nhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUdyRCxTQUFTLFNBQVMsQ0FBQyxLQUF5QjtJQUMxQyxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzdCLElBQUksK0JBQStCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzlELE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDdEQsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEtBQXlCO0lBQzVDLE9BQU8sS0FBSyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxLQUFhO0lBQ25DLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHNDQUFzQyxDQUFDO0FBQ3ZGLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxNQUF5QjtJQUMxQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sV0FBVyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JGLENBQUM7QUFFRCxnRkFBZ0Y7QUFDaEYsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFlBQTBCO0lBQzVELE1BQU0sRUFBRSxLQUFLLEVBQUUs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S0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Ozs7Ozs7O2dDQVFuQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOzs7O29CQUk3QyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7Ozs7WUFJekMsT0FBTzs7OztLQUlkO0lBQ0QsK0VBQStFO0tBQ2hGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZWxmLWNvbnRhaW5lZCBIVE1MIHByZXNlbnRhdGlvbiBmb3IgYW4gZXhwb3J0ZWQgYnJhbmQgcGFja2FnZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgc3RyaW5nVXRpbHMgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBCcmFuZFBhY2thZ2UgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtZ2VuZXJhdG9yXCI7XG5cbmZ1bmN0aW9uIHNhZmVBc3NldCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKC9eKD86ZGF0YTppbWFnZVxcL3xodHRwczpcXC9cXC8pL2kudGVzdCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgcmV0dXJuIC9eXFwuezAsMn1cXC8vLnRlc3QodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHNhZmVXZWJzaXRlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdmFsdWUgJiYgL15odHRwczpcXC9cXC8vaS50ZXN0KHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBzYWZlRm9udEZhbWlseSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIC9eW1xcd1xccydcIiwuLV0rJC8udGVzdCh2YWx1ZSkgPyB2YWx1ZSA6IFwidWktc2Fucy1zZXJpZiwgc3lzdGVtLXVpLCBzYW5zLXNlcmlmXCI7XG59XG5cbmZ1bmN0aW9uIGxpc3RJdGVtcyh2YWx1ZXM6IHJlYWRvbmx5IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlcy5tYXAoKHZhbHVlKSA9PiBgPGxpPiR7c3RyaW5nVXRpbHMuZXNjYXBlSHRtbCh2YWx1ZSl9PC9saT5gKS5qb2luKFwiXCIpO1xufVxuXG4vKiogUmVuZGVyIG9uZSByZXNwb25zaXZlIGJyYW5kIHByZXNlbnRhdGlvbiB3aXRoIGRlc2t0b3AgYW5kIG1vYmlsZSBtb2NrdXBzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckJyYW5kU2hvd2Nhc2UoYnJhbmRQYWNrYWdlOiBCcmFuZFBhY2thZ2UpOiBzdHJpbmcge1xuICBjb25zdCB7IGJyYW5kLCB2aXN1YWxSZWZlcmVuY2VzIH0gPSBicmFuZFBhY2thZ2U7XG4gIGNvbnN0IGh0bWwgPSBzdHJpbmdVdGlscy5lc2NhcGVIdG1sO1xuICBjb25zdCBsb2dvID0gc2FmZUFzc2V0KGJyYW5kLmFzc2V0cy5sb2dvLmxpZ2h0KSA/PyBzYWZlQXNzZXQoYnJhbmQuYXNzZXRzLmljb24ubGlnaHQpO1xuICBjb25zdCBpY29uID0gc2FmZUFzc2V0KGJyYW5kLmFzc2V0cy5pY29uLmxpZ2h0KTtcbiAgY29uc3Qgd2Vic2l0ZSA9IHNhZmVXZWJzaXRlKGJyYW5kLmxpbmtzLndlYnNpdGUpO1xuICBjb25zdCBzY3JlZW5zaG90cyA9IHZpc3VhbFJlZmVyZW5jZXNcbiAgICAuZmxhdE1hcCgocmVmZXJlbmNlKSA9PlxuICAgICAgcmVmZXJlbmNlLmltYWdlcy5mbGF0TWFwKChpbWFnZSkgPT5cbiAgICAgICAgaW1hZ2UubG9jYWxQYXRoXG4gICAgICAgICAgPyBbeyBhcHBOYW1lOiByZWZlcmVuY2UuYXBwTmFtZSwgcGxhdGZvcm06IHJlZmVyZW5jZS5wbGF0Zm9ybSwgcGF0aDogaW1hZ2UubG9jYWxQYXRoIH1dXG4gICAgICAgICAgOiBbXSxcbiAgICAgICksXG4gICAgKVxuICAgIC5zbGljZSgwLCA0KTtcbiAgY29uc3QgaWRlbnRpdHlNYXJrID0gbG9nb1xuICAgID8gYDxpbWcgc3JjPVwiJHtodG1sKGxvZ28pfVwiIGFsdD1cIiR7aHRtbChicmFuZC5uYW1lKX0gbG9nb1wiPmBcbiAgICA6IGA8c3BhbiBjbGFzcz1cIndvcmRtYXJrXCI+JHtodG1sKGJyYW5kLnNob3J0TmFtZSl9PC9zcGFuPmA7XG4gIGNvbnN0IGNvbXBhY3RNYXJrID0gaWNvblxuICAgID8gYDxpbWcgc3JjPVwiJHtodG1sKGljb24pfVwiIGFsdD1cIlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPmBcbiAgICA6IGA8c3BhbiBjbGFzcz1cImNvbXBhY3Qtd29yZG1hcmtcIj4ke2h0bWwoYnJhbmQuc2hvcnROYW1lLnNsaWNlKDAsIDIpKX08L3NwYW4+YDtcbiAgY29uc3QgYWN0aW9uID0gd2Vic2l0ZVxuICAgID8gYDxhIGNsYXNzPVwiYnV0dG9uXCIgaHJlZj1cIiR7aHRtbCh3ZWJzaXRlKX1cIj5WaXNpdCB3ZWJzaXRlPC9hPmBcbiAgICA6IGA8c3BhbiBjbGFzcz1cImJ1dHRvblwiPkV4cGxvcmUgdGhlIGJyYW5kPC9zcGFuPmA7XG4gIGNvbnN0IGdhbGxlcnkgPSBzY3JlZW5zaG90cy5sZW5ndGhcbiAgICA/IGBcbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwicmVmZXJlbmNlc1wiIGFyaWEtbGFiZWxsZWRieT1cInJlZmVyZW5jZXMtdGl0bGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGluZ1wiPlxuICAgICAgICAgIDxoMiBpZD1cInJlZmVyZW5jZXMtdGl0bGVcIj5WaXN1YWwgcmVmZXJlbmNlczwvaDI+XG4gICAgICAgICAgPHA+U3VwcGxlbWVudGFsIG1vYmlsZSByZWZlcmVuY2VzIHVzZWQgZHVyaW5nIHJlc2VhcmNoLjwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWZlcmVuY2UtZ3JpZFwiPlxuICAgICAgICAgICR7c2NyZWVuc2hvdHNcbiAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICh7IGFwcE5hbWUsIHBhdGgsIHBsYXRmb3JtIH0pID0+IGBcbiAgICAgICAgICAgICAgICA8ZmlndXJlPlxuICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIke2h0bWwocGF0aCl9XCIgYWx0PVwiJHtodG1sKGFwcE5hbWUpfSAke2h0bWwocGxhdGZvcm0pfSByZWZlcmVuY2VcIj5cbiAgICAgICAgICAgICAgICAgIDxmaWdjYXB0aW9uPiR7aHRtbChhcHBOYW1lKX0gLyAke2h0bWwocGxhdGZvcm0pfTwvZmlnY2FwdGlvbj5cbiAgICAgICAgICAgICAgICA8L2ZpZ3VyZT5cbiAgICAgICAgICAgICAgYCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKFwiXCIpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICBgXG4gICAgOiBcIlwiO1xuICBjb25zdCBoZWFkbGluZSA9IGJyYW5kLnRhZ2xpbmUgPz8gYnJhbmQubmFtZTtcblxuICAvLyBwcmV0dGllci1pZ25vcmVcbiAgcmV0dXJuIHN0cmluZ1V0aWxzLmRlZGVudChcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLypodG1sKi9gXG4gICAgPCFkb2N0eXBlIGh0bWw+XG4gICAgPGh0bWwgbGFuZz1cImVuXCI+XG4gICAgICA8aGVhZD5cbiAgICAgICAgPG1ldGEgY2hhcnNldD1cInV0Zi04XCI+XG4gICAgICAgIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MVwiPlxuICAgICAgICA8dGl0bGU+JHtodG1sKGJyYW5kLm5hbWUpfSBicmFuZCBwcmVzZW50YXRpb248L3RpdGxlPlxuICAgICAgICA8c3R5bGU+XG4gICAgICAgICAgOnJvb3Qge1xuICAgICAgICAgICAgY29sb3Itc2NoZW1lOiBsaWdodDtcbiAgICAgICAgICAgIC0tcHJpbWFyeTogJHticmFuZC5jb2xvcnMucHJpbWFyeX07XG4gICAgICAgICAgICAtLXByaW1hcnktaG92ZXI6ICR7YnJhbmQuY29sb3JzLnByaW1hcnlIb3Zlcn07XG4gICAgICAgICAgICAtLWFjY2VudDogJHticmFuZC5jb2xvcnMuYWNjZW50fTtcbiAgICAgICAgICAgIC0tZm9yZWdyb3VuZDogJHticmFuZC5jb2xvcnMuZm9yZWdyb3VuZH07XG4gICAgICAgICAgICAtLWJhY2tncm91bmQ6ICR7YnJhbmQuY29sb3JzLmJhY2tncm91bmR9O1xuICAgICAgICAgICAgLS1zdXJmYWNlOiAke2JyYW5kLmNvbG9ycy5zdXJmYWNlfTtcbiAgICAgICAgICAgIC0tbXV0ZWQ6ICR7YnJhbmQuY29sb3JzLm11dGVkfTtcbiAgICAgICAgICAgIC0tYm9yZGVyOiAke2JyYW5kLmNvbG9ycy5ib3JkZXJ9O1xuICAgICAgICAgICAgLS1zYW5zOiAke3NhZmVGb250RmFtaWx5KGJyYW5kLnR5cG9ncmFwaHkuc2Fucyl9O1xuICAgICAgICAgICAgLS1tb25vOiAke3NhZmVGb250RmFtaWx5KGJyYW5kLnR5cG9ncmFwaHkubW9ubyl9O1xuICAgICAgICAgIH1cbiAgICAgICAgICAqIHsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuICAgICAgICAgIGJvZHkge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmFja2dyb3VuZCk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tZm9yZWdyb3VuZCk7XG4gICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc2Fucyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGEgeyBjb2xvcjogaW5oZXJpdDsgfVxuICAgICAgICAgIGltZyB7IGRpc3BsYXk6IGJsb2NrOyBtYXgtd2lkdGg6IDEwMCU7IH1cbiAgICAgICAgICBtYWluIHsgbWFyZ2luOiAwIGF1dG87IG1heC13aWR0aDogMTI0MHB4OyBwYWRkaW5nOiAwIDMycHggNzJweDsgfVxuICAgICAgICAgIC5tYXN0aGVhZCB7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgbWluLWhlaWdodDogODhweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLm1hc3RoZWFkIGltZyB7IG1heC1oZWlnaHQ6IDQycHg7IG1heC13aWR0aDogMjEwcHg7IH1cbiAgICAgICAgICAud29yZG1hcmsgeyBmb250LXNpemU6IDI0cHg7IGZvbnQtd2VpZ2h0OiA3NTA7IGxldHRlci1zcGFjaW5nOiAtMC4wNGVtOyB9XG4gICAgICAgICAgLm1ldGEgeyBjb2xvcjogdmFyKC0tbXV0ZWQpOyBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7IGZvbnQtc2l6ZTogMTJweDsgfVxuICAgICAgICAgIC5pZGVudGl0eSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgZ2FwOiA0OHB4O1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMS40ZnIpIG1pbm1heCgyNjBweCwgMC42ZnIpO1xuICAgICAgICAgICAgcGFkZGluZzogNzJweCAwIDY0cHg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5pZGVudGl0eSBoMSB7XG4gICAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDQ4cHgsIDh2dywgMTA0cHgpO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjA2NWVtO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDAuOTI7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDg1MHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAuaWRlbnRpdHktY29weSB7IGFsaWduLXNlbGY6IGVuZDsgfVxuICAgICAgICAgIC5pZGVudGl0eS1jb3B5IHAgeyBjb2xvcjogdmFyKC0tbXV0ZWQpOyBmb250LXNpemU6IDE3cHg7IGxpbmUtaGVpZ2h0OiAxLjY1OyBtYXJnaW46IDAgMCAyOHB4OyB9XG4gICAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLWJhY2tncm91bmQpO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgcGFkZGluZzogMTJweCAyMHB4O1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuc2hvd2Nhc2Uge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjhweDtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICBwYWRkaW5nOiAzOHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAuc2VjdGlvbi1oZWFkaW5nIHsgYWxpZ24taXRlbXM6IGVuZDsgZGlzcGxheTogZmxleDsgZ2FwOiAyNHB4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IG1hcmdpbi1ib3R0b206IDI4cHg7IH1cbiAgICAgICAgICAuc2VjdGlvbi1oZWFkaW5nIGgyIHsgZm9udC1zaXplOiAzMHB4OyBsZXR0ZXItc3BhY2luZzogLTAuMDM1ZW07IG1hcmdpbjogMDsgfVxuICAgICAgICAgIC5zZWN0aW9uLWhlYWRpbmcgcCB7IGNvbG9yOiB2YXIoLS1tdXRlZCk7IG1hcmdpbjogMDsgbWF4LXdpZHRoOiA0NjBweDsgdGV4dC1hbGlnbjogcmlnaHQ7IH1cbiAgICAgICAgICAuZGV2aWNlcyB7IGFsaWduLWl0ZW1zOiBlbmQ7IGRpc3BsYXk6IGdyaWQ7IGdhcDogMjhweDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSAyODBweDsgfVxuICAgICAgICAgIC5icm93c2VyLCAucGhvbmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmFja2dyb3VuZCk7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZm9yZWdyb3VuZCkgMTglLCB0cmFuc3BhcmVudCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDI0cHggNzBweCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZm9yZWdyb3VuZCkgMTMlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuYnJvd3NlciB7IGJvcmRlci1yYWRpdXM6IDE4cHg7IH1cbiAgICAgICAgICAuYnJvd3Nlci1iYXIgeyBhbGlnbi1pdGVtczogY2VudGVyOyBiYWNrZ3JvdW5kOiB2YXIoLS1mb3JlZ3JvdW5kKTsgZGlzcGxheTogZmxleDsgZ2FwOiA3cHg7IGhlaWdodDogMzhweDsgcGFkZGluZzogMCAxNnB4OyB9XG4gICAgICAgICAgLmJyb3dzZXItYmFyIGkgeyBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQpOyBib3JkZXItcmFkaXVzOiA1MCU7IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDdweDsgb3BhY2l0eTogMC44OyB3aWR0aDogN3B4OyB9XG4gICAgICAgICAgLmJyb3dzZXItbmF2LCAucGhvbmUtbmF2IHsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBwYWRkaW5nOiAyMHB4IDI0cHg7IH1cbiAgICAgICAgICAuYnJvd3Nlci1uYXYgaW1nIHsgbWF4LWhlaWdodDogMzBweDsgbWF4LXdpZHRoOiAxNTBweDsgfVxuICAgICAgICAgIC5uYXYtbGlua3MgeyBjb2xvcjogdmFyKC0tbXV0ZWQpOyBkaXNwbGF5OiBmbGV4OyBmb250LXNpemU6IDEycHg7IGdhcDogMjJweDsgfVxuICAgICAgICAgIC5tb2NrLWhlcm8geyBkaXNwbGF5OiBncmlkOyBnYXA6IDI4cHg7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMS4xZnIgMC45ZnI7IG1pbi1oZWlnaHQ6IDM1MHB4OyBwYWRkaW5nOiA0NHB4OyB9XG4gICAgICAgICAgLm1vY2stY29weSB7IGFsaWduLXNlbGY6IGNlbnRlcjsgfVxuICAgICAgICAgIC5tb2NrLWNvcHkgaDMgeyBmb250LXNpemU6IGNsYW1wKDM0cHgsIDV2dywgNjRweCk7IGxldHRlci1zcGFjaW5nOiAtMC4wNTVlbTsgbGluZS1oZWlnaHQ6IDAuOTg7IG1hcmdpbjogMCAwIDIycHg7IH1cbiAgICAgICAgICAubW9jay1jb3B5IHAgeyBjb2xvcjogdmFyKC0tbXV0ZWQpOyBsaW5lLWhlaWdodDogMS41NTsgbWFyZ2luOiAwIDAgMjRweDsgbWF4LXdpZHRoOiA1MjBweDsgfVxuICAgICAgICAgIC5tb2NrLXZpc3VhbCB7XG4gICAgICAgICAgICBhbGlnbi1jb250ZW50OiBlbmQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tYmFja2dyb3VuZCk7XG4gICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgbWluLWhlaWdodDogMjUwcHg7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgcGFkZGluZzogMjhweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLm1vY2stdmlzdWFsOjpiZWZvcmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50KTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBoZWlnaHQ6IDIxMHB4O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgcmlnaHQ6IC03MHB4O1xuICAgICAgICAgICAgdG9wOiAtODBweDtcbiAgICAgICAgICAgIHdpZHRoOiAyMTBweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLm1vY2stdmlzdWFsIHN0cm9uZyB7IGZvbnQtc2l6ZTogMjJweDsgbGluZS1oZWlnaHQ6IDEuMTU7IG1heC13aWR0aDogMjIwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICAgICAgICAgIC5waG9uZSB7IGJvcmRlcjogOHB4IHNvbGlkIHZhcigtLWZvcmVncm91bmQpOyBib3JkZXItcmFkaXVzOiAzNHB4OyB9XG4gICAgICAgICAgLnBob25lLXNjcmVlbiB7IG1pbi1oZWlnaHQ6IDU0MHB4OyB9XG4gICAgICAgICAgLnBob25lLW5hdiB7IHBhZGRpbmc6IDE4cHg7IH1cbiAgICAgICAgICAucGhvbmUtbmF2IGltZyB7IGhlaWdodDogMzBweDsgbWF4LXdpZHRoOiAxMTJweDsgb2JqZWN0LWZpdDogY29udGFpbjsgb2JqZWN0LXBvc2l0aW9uOiBsZWZ0IGNlbnRlcjsgfVxuICAgICAgICAgIC5waG9uZS1tYXJrIGltZyB7IGhlaWdodDogMzBweDsgd2lkdGg6IDMwcHg7IH1cbiAgICAgICAgICAuY29tcGFjdC13b3JkbWFyayB7IGZvbnQtd2VpZ2h0OiA4MDA7IH1cbiAgICAgICAgICAucGhvbmUtY29weSB7IHBhZGRpbmc6IDM0cHggMjJweCAyNHB4OyB9XG4gICAgICAgICAgLnBob25lLWNvcHkgaDMgeyBmb250LXNpemU6IDM4cHg7IGxldHRlci1zcGFjaW5nOiAtMC4wNWVtOyBsaW5lLWhlaWdodDogMC45ODsgbWFyZ2luOiAwIDAgMThweDsgfVxuICAgICAgICAgIC5waG9uZS1jb3B5IHAgeyBjb2xvcjogdmFyKC0tbXV0ZWQpOyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxLjU1OyBtYXJnaW46IDA7IH1cbiAgICAgICAgICAucGhvbmUtYWNjZW50IHsgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50KTsgaGVpZ2h0OiAxMjBweDsgbWFyZ2luOiAxOHB4IDIycHggMjJweDsgfVxuICAgICAgICAgIC5zeXN0ZW0ge1xuICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgIGdhcDogNDhweDtcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICAgICAgICAgIHBhZGRpbmc6IDcycHggMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLnBhbGV0dGUgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpOyBtaW4taGVpZ2h0OiAyNTBweDsgfVxuICAgICAgICAgIC5zd2F0Y2ggeyBhbGlnbi1pdGVtczogZW5kOyBkaXNwbGF5OiBmbGV4OyBwYWRkaW5nOiAxNnB4OyB9XG4gICAgICAgICAgLnN3YXRjaCBzcGFuIHsgYmFja2dyb3VuZDogdmFyKC0tYmFja2dyb3VuZCk7IGNvbG9yOiB2YXIoLS1mb3JlZ3JvdW5kKTsgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOyBmb250LXNpemU6IDExcHg7IHBhZGRpbmc6IDVweCA3cHg7IH1cbiAgICAgICAgICAudHlwZS1zcGVjaW1lbiB7IGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBwYWRkaW5nLXRvcDogMjRweDsgfVxuICAgICAgICAgIC50eXBlLXNwZWNpbWVuIHN0cm9uZyB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IGNsYW1wKDQ0cHgsIDZ2dywgNzZweCk7IGxldHRlci1zcGFjaW5nOiAtMC4wNWVtOyBsaW5lLWhlaWdodDogMC45NTsgfVxuICAgICAgICAgIC50eXBlLXNwZWNpbWVuIGNvZGUgeyBjb2xvcjogdmFyKC0tbXV0ZWQpOyBkaXNwbGF5OiBibG9jazsgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOyBtYXJnaW4tdG9wOiAyMHB4OyB9XG4gICAgICAgICAgLnZvaWNlIHsgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGRpc3BsYXk6IGdyaWQ7IGdhcDogMzJweDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOyBwYWRkaW5nOiAzNnB4IDA7IH1cbiAgICAgICAgICAudm9pY2UgaDIgeyBmb250LXNpemU6IDMwcHg7IGxldHRlci1zcGFjaW5nOiAtMC4wMzVlbTsgbWFyZ2luOiAwOyB9XG4gICAgICAgICAgLnZvaWNlIGgzIHsgZm9udC1zaXplOiAxNHB4OyBtYXJnaW46IDAgMCAxMnB4OyB9XG4gICAgICAgICAgLnZvaWNlIHVsIHsgY29sb3I6IHZhcigtLW11dGVkKTsgbGluZS1oZWlnaHQ6IDEuNjsgbWFyZ2luOiAwOyBwYWRkaW5nLWxlZnQ6IDE4cHg7IH1cbiAgICAgICAgICAucmVmZXJlbmNlcyB7IGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBwYWRkaW5nLXRvcDogNTZweDsgfVxuICAgICAgICAgIC5yZWZlcmVuY2UtZ3JpZCB7IGRpc3BsYXk6IGdyaWQ7IGdhcDogMThweDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTsgfVxuICAgICAgICAgIGZpZ3VyZSB7IG1hcmdpbjogMDsgfVxuICAgICAgICAgIGZpZ3VyZSBpbWcgeyBhc3BlY3QtcmF0aW86IDkgLyAxNjsgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IG9iamVjdC1maXQ6IGNvbnRhaW47IHdpZHRoOiAxMDAlOyB9XG4gICAgICAgICAgZmlnY2FwdGlvbiB7IGNvbG9yOiB2YXIoLS1tdXRlZCk7IGZvbnQtc2l6ZTogMTFweDsgbWFyZ2luLXRvcDogOHB4OyB9XG4gICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDg2MHB4KSB7XG4gICAgICAgICAgICBtYWluIHsgcGFkZGluZzogMCAxOHB4IDQ4cHg7IH1cbiAgICAgICAgICAgIC5pZGVudGl0eSwgLnN5c3RlbSB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9XG4gICAgICAgICAgICAuaWRlbnRpdHkgeyBnYXA6IDI4cHg7IHBhZGRpbmc6IDUycHggMCA0NHB4OyB9XG4gICAgICAgICAgICAuc2hvd2Nhc2UgeyBib3JkZXItcmFkaXVzOiAyMHB4OyBwYWRkaW5nOiAyMHB4OyB9XG4gICAgICAgICAgICAuZGV2aWNlcyB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9XG4gICAgICAgICAgICAucGhvbmUgeyBtYXJnaW46IDAgYXV0bzsgbWF4LXdpZHRoOiAzMjBweDsgd2lkdGg6IDEwMCU7IH1cbiAgICAgICAgICAgIC5yZWZlcmVuY2UtZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDU2MHB4KSB7XG4gICAgICAgICAgICAubWFzdGhlYWQgeyBtaW4taGVpZ2h0OiA3MnB4OyB9XG4gICAgICAgICAgICAuaWRlbnRpdHkgaDEgeyBmb250LXNpemU6IDUycHg7IH1cbiAgICAgICAgICAgIC5zZWN0aW9uLWhlYWRpbmcgeyBhbGlnbi1pdGVtczogc3RhcnQ7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH1cbiAgICAgICAgICAgIC5zZWN0aW9uLWhlYWRpbmcgcCB7IHRleHQtYWxpZ246IGxlZnQ7IH1cbiAgICAgICAgICAgIC5tb2NrLWhlcm8geyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgcGFkZGluZzogMjRweDsgfVxuICAgICAgICAgICAgLm1vY2stdmlzdWFsIHsgbWluLWhlaWdodDogMTkwcHg7IH1cbiAgICAgICAgICAgIC5uYXYtbGlua3MgeyBkaXNwbGF5OiBub25lOyB9XG4gICAgICAgICAgICAucGFsZXR0ZSB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsgfVxuICAgICAgICAgICAgLnZvaWNlIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiBuby1wcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAuYnV0dG9uIHsgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxNjBtcyBlYXNlLCB0cmFuc2Zvcm0gMTYwbXMgZWFzZTsgfVxuICAgICAgICAgICAgLmJ1dHRvbjpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnktaG92ZXIpOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLmJ1dHRvbjpmb2N1cy12aXNpYmxlIHsgb3V0bGluZTogM3B4IHNvbGlkIHZhcigtLWFjY2VudCk7IG91dGxpbmUtb2Zmc2V0OiAzcHg7IH1cbiAgICAgICAgPC9zdHlsZT5cbiAgICAgIDwvaGVhZD5cbiAgICAgIDxib2R5PlxuICAgICAgICA8bWFpbj5cbiAgICAgICAgICA8aGVhZGVyIGNsYXNzPVwibWFzdGhlYWRcIj5cbiAgICAgICAgICAgICR7aWRlbnRpdHlNYXJrfVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRhXCI+QnJhbmQgc3lzdGVtIC8gJHtodG1sKGJyYW5kLnNjaGVtYVZlcnNpb24pfTwvc3Bhbj5cbiAgICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiaWRlbnRpdHlcIiBhcmlhLWxhYmVsbGVkYnk9XCJicmFuZC1uYW1lXCI+XG4gICAgICAgICAgICA8aDEgaWQ9XCJicmFuZC1uYW1lXCI+JHtodG1sKGJyYW5kLm5hbWUpfTwvaDE+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWRlbnRpdHktY29weVwiPlxuICAgICAgICAgICAgICA8cD4ke2h0bWwoYnJhbmQuZGVzY3JpcHRpb24pfTwvcD5cbiAgICAgICAgICAgICAgJHthY3Rpb259XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNob3djYXNlXCIgYXJpYS1sYWJlbGxlZGJ5PVwibW9ja3VwLXRpdGxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgIDxoMiBpZD1cIm1vY2t1cC10aXRsZVwiPldlYnNpdGUgbW9ja3VwczwvaDI+XG4gICAgICAgICAgICAgIDxwPk9uZSByZXNwb25zaXZlIGRpcmVjdGlvbiBzaG93biBhdCBkZXNrdG9wIGFuZCBtb2JpbGUgc2l6ZXMuPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV2aWNlc1wiPlxuICAgICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImJyb3dzZXJcIiBhcmlhLWxhYmVsPVwiRGVza3RvcCB3ZWJzaXRlIG1vY2t1cFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicm93c2VyLWJhclwiPjxpPjwvaT48aT48L2k+PGk+PC9pPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicm93c2VyLW5hdlwiPlxuICAgICAgICAgICAgICAgICAgJHtpZGVudGl0eU1hcmt9XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWxpbmtzXCI+PHNwYW4+T3ZlcnZpZXc8L3NwYW4+PHNwYW4+UHJvZHVjdDwvc3Bhbj48c3Bhbj5SZXNvdXJjZXM8L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vY2staGVyb1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vY2stY29weVwiPlxuICAgICAgICAgICAgICAgICAgICA8aDM+JHtodG1sKGhlYWRsaW5lKX08L2gzPlxuICAgICAgICAgICAgICAgICAgICA8cD4ke2h0bWwoYnJhbmQuZGVzY3JpcHRpb24pfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgJHthY3Rpb259XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLXZpc3VhbFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPiR7aHRtbChicmFuZC52b2ljZS5wcmluY2lwbGVzWzBdID8/IGJyYW5kLm5hbWUpfTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cInBob25lXCIgYXJpYS1sYWJlbD1cIk1vYmlsZSB3ZWJzaXRlIG1vY2t1cFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaG9uZS1zY3JlZW5cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaG9uZS1uYXZcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwaG9uZS1tYXJrXCI+JHtjb21wYWN0TWFya308L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YVwiPk1lbnU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaG9uZS1jb3B5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMz4ke2h0bWwoaGVhZGxpbmUpfTwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDxwPiR7aHRtbChicmFuZC5kZXNjcmlwdGlvbil9PC9wPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGhvbmUtYWNjZW50XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic3lzdGVtXCIgYXJpYS1sYWJlbD1cIkJyYW5kIHN5c3RlbVwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGluZ1wiPjxoMj5Db3JlIHBhbGV0dGU8L2gyPjwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFsZXR0ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2F0Y2hcIiBzdHlsZT1cImJhY2tncm91bmQ6IHZhcigtLXByaW1hcnkpXCI+PHNwYW4+JHticmFuZC5jb2xvcnMucHJpbWFyeX08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN3YXRjaFwiIHN0eWxlPVwiYmFja2dyb3VuZDogdmFyKC0tYWNjZW50KVwiPjxzcGFuPiR7YnJhbmQuY29sb3JzLmFjY2VudH08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN3YXRjaFwiIHN0eWxlPVwiYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSlcIj48c3Bhbj4ke2JyYW5kLmNvbG9ycy5zdXJmYWNlfTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dhdGNoXCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiB2YXIoLS1mb3JlZ3JvdW5kKVwiPjxzcGFuPiR7YnJhbmQuY29sb3JzLmZvcmVncm91bmR9PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGluZ1wiPjxoMj5UeXBvZ3JhcGh5PC9oMj48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGUtc3BlY2ltZW5cIj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPkFhIDAxPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPGNvZGU+JHtodG1sKGJyYW5kLnR5cG9ncmFwaHkuc2Fucyl9PC9jb2RlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwidm9pY2VcIiBhcmlhLWxhYmVsbGVkYnk9XCJ2b2ljZS10aXRsZVwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGgyIGlkPVwidm9pY2UtdGl0bGVcIj5Wb2ljZTwvaDI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibWV0YVwiPiR7aHRtbChicmFuZC52b2ljZS50b25lLmpvaW4oXCIsIFwiKSl9PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8aDM+UHJpbmNpcGxlczwvaDM+XG4gICAgICAgICAgICAgIDx1bD4ke2xpc3RJdGVtcyhicmFuZC52b2ljZS5wcmluY2lwbGVzKX08L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgJHtnYWxsZXJ5fVxuICAgICAgICA8L21haW4+XG4gICAgICA8L2JvZHk+XG4gICAgPC9odG1sPlxuICAgIGBcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICk7XG59XG4iXX0=
333
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvd2Nhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnJhbmQvc2hvd2Nhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHNUQsU0FBUyxTQUFTLENBQUMsS0FBeUI7SUFDMUMsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM3QixJQUFJLCtCQUErQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM5RCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3RELENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxLQUF5QjtJQUM1QyxPQUFPLEtBQUssSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsS0FBYTtJQUNuQyxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxzQ0FBc0MsQ0FBQztBQUN2RixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsTUFBeUI7SUFDMUMsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRCxnRkFBZ0Y7QUFDaEYsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFlBQTBCO0lBQzVELE1BQU0sRUFBRSxLQUFLLEVBQUUs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QUFJLENBQUM7Ozs7Ozs7O2dDQVFuQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOzs7O29CQUk3QyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7Ozs7WUFJekMsT0FBTzs7OztLQUlkO0lBQ0QsK0VBQStFO0tBQ2hGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZWxmLWNvbnRhaW5lZCBIVE1MIHByZXNlbnRhdGlvbiBmb3IgYW4gZXhwb3J0ZWQgYnJhbmQgcGFja2FnZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgZXNjYXBlSHRtbCwgZGVkZW50IH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB0eXBlIHsgQnJhbmRQYWNrYWdlIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmVyYXRvclwiO1xuXG5mdW5jdGlvbiBzYWZlQXNzZXQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghdmFsdWUpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmICgvXig/OmRhdGE6aW1hZ2VcXC98aHR0cHM6XFwvXFwvKS9pLnRlc3QodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gIHJldHVybiAvXlxcLnswLDJ9XFwvLy50ZXN0KHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBzYWZlV2Vic2l0ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHZhbHVlICYmIC9eaHR0cHM6XFwvXFwvL2kudGVzdCh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gc2FmZUZvbnRGYW1pbHkodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiAvXltcXHdcXHMnXCIsLi1dKyQvLnRlc3QodmFsdWUpID8gdmFsdWUgOiBcInVpLXNhbnMtc2VyaWYsIHN5c3RlbS11aSwgc2Fucy1zZXJpZlwiO1xufVxuXG5mdW5jdGlvbiBsaXN0SXRlbXModmFsdWVzOiByZWFkb25seSBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZXMubWFwKCh2YWx1ZSkgPT4gYDxsaT4ke2VzY2FwZUh0bWwodmFsdWUpfTwvbGk+YCkuam9pbihcIlwiKTtcbn1cblxuLyoqIFJlbmRlciBvbmUgcmVzcG9uc2l2ZSBicmFuZCBwcmVzZW50YXRpb24gd2l0aCBkZXNrdG9wIGFuZCBtb2JpbGUgbW9ja3Vwcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJCcmFuZFNob3djYXNlKGJyYW5kUGFja2FnZTogQnJhbmRQYWNrYWdlKTogc3RyaW5nIHtcbiAgY29uc3QgeyBicmFuZCwgdmlzdWFsUmVmZXJlbmNlcyB9ID0gYnJhbmRQYWNrYWdlO1xuICBjb25zdCBodG1sID0gZXNjYXBlSHRtbDtcbiAgY29uc3QgbG9nbyA9IHNhZmVBc3NldChicmFuZC5hc3NldHMubG9nby5saWdodCkgPz8gc2FmZUFzc2V0KGJyYW5kLmFzc2V0cy5pY29uLmxpZ2h0KTtcbiAgY29uc3QgaWNvbiA9IHNhZmVBc3NldChicmFuZC5hc3NldHMuaWNvbi5saWdodCk7XG4gIGNvbnN0IHdlYnNpdGUgPSBzYWZlV2Vic2l0ZShicmFuZC5saW5rcy53ZWJzaXRlKTtcbiAgY29uc3Qgc2NyZWVuc2hvdHMgPSB2aXN1YWxSZWZlcmVuY2VzXG4gICAgLmZsYXRNYXAoKHJlZmVyZW5jZSkgPT5cbiAgICAgIHJlZmVyZW5jZS5pbWFnZXMuZmxhdE1hcCgoaW1hZ2UpID0+XG4gICAgICAgIGltYWdlLmxvY2FsUGF0aFxuICAgICAgICAgID8gW3sgYXBwTmFtZTogcmVmZXJlbmNlLmFwcE5hbWUsIHBsYXRmb3JtOiByZWZlcmVuY2UucGxhdGZvcm0sIHBhdGg6IGltYWdlLmxvY2FsUGF0aCB9XVxuICAgICAgICAgIDogW10sXG4gICAgICApLFxuICAgIClcbiAgICAuc2xpY2UoMCwgNCk7XG4gIGNvbnN0IGlkZW50aXR5TWFyayA9IGxvZ29cbiAgICA/IGA8aW1nIHNyYz1cIiR7aHRtbChsb2dvKX1cIiBhbHQ9XCIke2h0bWwoYnJhbmQubmFtZSl9IGxvZ29cIj5gXG4gICAgOiBgPHNwYW4gY2xhc3M9XCJ3b3JkbWFya1wiPiR7aHRtbChicmFuZC5zaG9ydE5hbWUpfTwvc3Bhbj5gO1xuICBjb25zdCBjb21wYWN0TWFyayA9IGljb25cbiAgICA/IGA8aW1nIHNyYz1cIiR7aHRtbChpY29uKX1cIiBhbHQ9XCJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5gXG4gICAgOiBgPHNwYW4gY2xhc3M9XCJjb21wYWN0LXdvcmRtYXJrXCI+JHtodG1sKGJyYW5kLnNob3J0TmFtZS5zbGljZSgwLCAyKSl9PC9zcGFuPmA7XG4gIGNvbnN0IGFjdGlvbiA9IHdlYnNpdGVcbiAgICA/IGA8YSBjbGFzcz1cImJ1dHRvblwiIGhyZWY9XCIke2h0bWwod2Vic2l0ZSl9XCI+VmlzaXQgd2Vic2l0ZTwvYT5gXG4gICAgOiBgPHNwYW4gY2xhc3M9XCJidXR0b25cIj5FeHBsb3JlIHRoZSBicmFuZDwvc3Bhbj5gO1xuICBjb25zdCBnYWxsZXJ5ID0gc2NyZWVuc2hvdHMubGVuZ3RoXG4gICAgPyBgXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInJlZmVyZW5jZXNcIiBhcmlhLWxhYmVsbGVkYnk9XCJyZWZlcmVuY2VzLXRpdGxlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRpbmdcIj5cbiAgICAgICAgICA8aDIgaWQ9XCJyZWZlcmVuY2VzLXRpdGxlXCI+VmlzdWFsIHJlZmVyZW5jZXM8L2gyPlxuICAgICAgICAgIDxwPlN1cHBsZW1lbnRhbCBtb2JpbGUgcmVmZXJlbmNlcyB1c2VkIGR1cmluZyByZXNlYXJjaC48L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVmZXJlbmNlLWdyaWRcIj5cbiAgICAgICAgICAke3NjcmVlbnNob3RzXG4gICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAoeyBhcHBOYW1lLCBwYXRoLCBwbGF0Zm9ybSB9KSA9PiBgXG4gICAgICAgICAgICAgICAgPGZpZ3VyZT5cbiAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiJHtodG1sKHBhdGgpfVwiIGFsdD1cIiR7aHRtbChhcHBOYW1lKX0gJHtodG1sKHBsYXRmb3JtKX0gcmVmZXJlbmNlXCI+XG4gICAgICAgICAgICAgICAgICA8ZmlnY2FwdGlvbj4ke2h0bWwoYXBwTmFtZSl9IC8gJHtodG1sKHBsYXRmb3JtKX08L2ZpZ2NhcHRpb24+XG4gICAgICAgICAgICAgICAgPC9maWd1cmU+XG4gICAgICAgICAgICAgIGAsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuam9pbihcIlwiKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgYFxuICAgIDogXCJcIjtcbiAgY29uc3QgaGVhZGxpbmUgPSBicmFuZC50YWdsaW5lID8/IGJyYW5kLm5hbWU7XG5cbiAgLy8gcHJldHRpZXItaWdub3JlXG4gIHJldHVybiBkZWRlbnQoXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8qaHRtbCovYFxuICAgIDwhZG9jdHlwZSBodG1sPlxuICAgIDxodG1sIGxhbmc9XCJlblwiPlxuICAgICAgPGhlYWQ+XG4gICAgICAgIDxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiPlxuICAgICAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTFcIj5cbiAgICAgICAgPHRpdGxlPiR7aHRtbChicmFuZC5uYW1lKX0gYnJhbmQgcHJlc2VudGF0aW9uPC90aXRsZT5cbiAgICAgICAgPHN0eWxlPlxuICAgICAgICAgIDpyb290IHtcbiAgICAgICAgICAgIGNvbG9yLXNjaGVtZTogbGlnaHQ7XG4gICAgICAgICAgICAtLXByaW1hcnk6ICR7YnJhbmQuY29sb3JzLnByaW1hcnl9O1xuICAgICAgICAgICAgLS1wcmltYXJ5LWhvdmVyOiAke2JyYW5kLmNvbG9ycy5wcmltYXJ5SG92ZXJ9O1xuICAgICAgICAgICAgLS1hY2NlbnQ6ICR7YnJhbmQuY29sb3JzLmFjY2VudH07XG4gICAgICAgICAgICAtLWZvcmVncm91bmQ6ICR7YnJhbmQuY29sb3JzLmZvcmVncm91bmR9O1xuICAgICAgICAgICAgLS1iYWNrZ3JvdW5kOiAke2JyYW5kLmNvbG9ycy5iYWNrZ3JvdW5kfTtcbiAgICAgICAgICAgIC0tc3VyZmFjZTogJHticmFuZC5jb2xvcnMuc3VyZmFjZX07XG4gICAgICAgICAgICAtLW11dGVkOiAke2JyYW5kLmNvbG9ycy5tdXRlZH07XG4gICAgICAgICAgICAtLWJvcmRlcjogJHticmFuZC5jb2xvcnMuYm9yZGVyfTtcbiAgICAgICAgICAgIC0tc2FuczogJHtzYWZlRm9udEZhbWlseShicmFuZC50eXBvZ3JhcGh5LnNhbnMpfTtcbiAgICAgICAgICAgIC0tbW9ubzogJHtzYWZlRm9udEZhbWlseShicmFuZC50eXBvZ3JhcGh5Lm1vbm8pfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgKiB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbiAgICAgICAgICBib2R5IHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJhY2tncm91bmQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLWZvcmVncm91bmQpO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXNhbnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhIHsgY29sb3I6IGluaGVyaXQ7IH1cbiAgICAgICAgICBpbWcgeyBkaXNwbGF5OiBibG9jazsgbWF4LXdpZHRoOiAxMDAlOyB9XG4gICAgICAgICAgbWFpbiB7IG1hcmdpbjogMCBhdXRvOyBtYXgtd2lkdGg6IDEyNDBweDsgcGFkZGluZzogMCAzMnB4IDcycHg7IH1cbiAgICAgICAgICAubWFzdGhlYWQge1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDg4cHg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5tYXN0aGVhZCBpbWcgeyBtYXgtaGVpZ2h0OiA0MnB4OyBtYXgtd2lkdGg6IDIxMHB4OyB9XG4gICAgICAgICAgLndvcmRtYXJrIHsgZm9udC1zaXplOiAyNHB4OyBmb250LXdlaWdodDogNzUwOyBsZXR0ZXItc3BhY2luZzogLTAuMDRlbTsgfVxuICAgICAgICAgIC5tZXRhIHsgY29sb3I6IHZhcigtLW11dGVkKTsgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOyBmb250LXNpemU6IDEycHg7IH1cbiAgICAgICAgICAuaWRlbnRpdHkge1xuICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgIGdhcDogNDhweDtcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDEuNGZyKSBtaW5tYXgoMjYwcHgsIDAuNmZyKTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDcycHggMCA2NHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAuaWRlbnRpdHkgaDEge1xuICAgICAgICAgICAgZm9udC1zaXplOiBjbGFtcCg0OHB4LCA4dncsIDEwNHB4KTtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wNjVlbTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAwLjkyO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA4NTBweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmlkZW50aXR5LWNvcHkgeyBhbGlnbi1zZWxmOiBlbmQ7IH1cbiAgICAgICAgICAuaWRlbnRpdHktY29weSBwIHsgY29sb3I6IHZhcigtLW11dGVkKTsgZm9udC1zaXplOiAxN3B4OyBsaW5lLWhlaWdodDogMS42NTsgbWFyZ2luOiAwIDAgMjhweDsgfVxuICAgICAgICAgIC5idXR0b24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kKTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEycHggMjBweDtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLnNob3djYXNlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDI4cHg7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgcGFkZGluZzogMzhweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLnNlY3Rpb24taGVhZGluZyB7IGFsaWduLWl0ZW1zOiBlbmQ7IGRpc3BsYXk6IGZsZXg7IGdhcDogMjRweDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBtYXJnaW4tYm90dG9tOiAyOHB4OyB9XG4gICAgICAgICAgLnNlY3Rpb24taGVhZGluZyBoMiB7IGZvbnQtc2l6ZTogMzBweDsgbGV0dGVyLXNwYWNpbmc6IC0wLjAzNWVtOyBtYXJnaW46IDA7IH1cbiAgICAgICAgICAuc2VjdGlvbi1oZWFkaW5nIHAgeyBjb2xvcjogdmFyKC0tbXV0ZWQpOyBtYXJnaW46IDA7IG1heC13aWR0aDogNDYwcHg7IHRleHQtYWxpZ246IHJpZ2h0OyB9XG4gICAgICAgICAgLmRldmljZXMgeyBhbGlnbi1pdGVtczogZW5kOyBkaXNwbGF5OiBncmlkOyBnYXA6IDI4cHg7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcikgMjgwcHg7IH1cbiAgICAgICAgICAuYnJvd3NlciwgLnBob25lIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJhY2tncm91bmQpO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWZvcmVncm91bmQpIDE4JSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAyNHB4IDcwcHggY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWZvcmVncm91bmQpIDEzJSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmJyb3dzZXIgeyBib3JkZXItcmFkaXVzOiAxOHB4OyB9XG4gICAgICAgICAgLmJyb3dzZXItYmFyIHsgYWxpZ24taXRlbXM6IGNlbnRlcjsgYmFja2dyb3VuZDogdmFyKC0tZm9yZWdyb3VuZCk7IGRpc3BsYXk6IGZsZXg7IGdhcDogN3B4OyBoZWlnaHQ6IDM4cHg7IHBhZGRpbmc6IDAgMTZweDsgfVxuICAgICAgICAgIC5icm93c2VyLWJhciBpIHsgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50KTsgYm9yZGVyLXJhZGl1czogNTAlOyBkaXNwbGF5OiBibG9jazsgaGVpZ2h0OiA3cHg7IG9wYWNpdHk6IDAuODsgd2lkdGg6IDdweDsgfVxuICAgICAgICAgIC5icm93c2VyLW5hdiwgLnBob25lLW5hdiB7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgcGFkZGluZzogMjBweCAyNHB4OyB9XG4gICAgICAgICAgLmJyb3dzZXItbmF2IGltZyB7IG1heC1oZWlnaHQ6IDMwcHg7IG1heC13aWR0aDogMTUwcHg7IH1cbiAgICAgICAgICAubmF2LWxpbmtzIHsgY29sb3I6IHZhcigtLW11dGVkKTsgZGlzcGxheTogZmxleDsgZm9udC1zaXplOiAxMnB4OyBnYXA6IDIycHg7IH1cbiAgICAgICAgICAubW9jay1oZXJvIHsgZGlzcGxheTogZ3JpZDsgZ2FwOiAyOHB4OyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDEuMWZyIDAuOWZyOyBtaW4taGVpZ2h0OiAzNTBweDsgcGFkZGluZzogNDRweDsgfVxuICAgICAgICAgIC5tb2NrLWNvcHkgeyBhbGlnbi1zZWxmOiBjZW50ZXI7IH1cbiAgICAgICAgICAubW9jay1jb3B5IGgzIHsgZm9udC1zaXplOiBjbGFtcCgzNHB4LCA1dncsIDY0cHgpOyBsZXR0ZXItc3BhY2luZzogLTAuMDU1ZW07IGxpbmUtaGVpZ2h0OiAwLjk4OyBtYXJnaW46IDAgMCAyMnB4OyB9XG4gICAgICAgICAgLm1vY2stY29weSBwIHsgY29sb3I6IHZhcigtLW11dGVkKTsgbGluZS1oZWlnaHQ6IDEuNTU7IG1hcmdpbjogMCAwIDI0cHg7IG1heC13aWR0aDogNTIwcHg7IH1cbiAgICAgICAgICAubW9jay12aXN1YWwge1xuICAgICAgICAgICAgYWxpZ24tY29udGVudDogZW5kO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLWJhY2tncm91bmQpO1xuICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDI1MHB4O1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHBhZGRpbmc6IDI4cHg7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5tb2NrLXZpc3VhbDo6YmVmb3JlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudCk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgaGVpZ2h0OiAyMTBweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAtNzBweDtcbiAgICAgICAgICAgIHRvcDogLTgwcHg7XG4gICAgICAgICAgICB3aWR0aDogMjEwcHg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5tb2NrLXZpc3VhbCBzdHJvbmcgeyBmb250LXNpemU6IDIycHg7IGxpbmUtaGVpZ2h0OiAxLjE1OyBtYXgtd2lkdGg6IDIyMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgICAgICAgICAucGhvbmUgeyBib3JkZXI6IDhweCBzb2xpZCB2YXIoLS1mb3JlZ3JvdW5kKTsgYm9yZGVyLXJhZGl1czogMzRweDsgfVxuICAgICAgICAgIC5waG9uZS1zY3JlZW4geyBtaW4taGVpZ2h0OiA1NDBweDsgfVxuICAgICAgICAgIC5waG9uZS1uYXYgeyBwYWRkaW5nOiAxOHB4OyB9XG4gICAgICAgICAgLnBob25lLW5hdiBpbWcgeyBoZWlnaHQ6IDMwcHg7IG1heC13aWR0aDogMTEycHg7IG9iamVjdC1maXQ6IGNvbnRhaW47IG9iamVjdC1wb3NpdGlvbjogbGVmdCBjZW50ZXI7IH1cbiAgICAgICAgICAucGhvbmUtbWFyayBpbWcgeyBoZWlnaHQ6IDMwcHg7IHdpZHRoOiAzMHB4OyB9XG4gICAgICAgICAgLmNvbXBhY3Qtd29yZG1hcmsgeyBmb250LXdlaWdodDogODAwOyB9XG4gICAgICAgICAgLnBob25lLWNvcHkgeyBwYWRkaW5nOiAzNHB4IDIycHggMjRweDsgfVxuICAgICAgICAgIC5waG9uZS1jb3B5IGgzIHsgZm9udC1zaXplOiAzOHB4OyBsZXR0ZXItc3BhY2luZzogLTAuMDVlbTsgbGluZS1oZWlnaHQ6IDAuOTg7IG1hcmdpbjogMCAwIDE4cHg7IH1cbiAgICAgICAgICAucGhvbmUtY29weSBwIHsgY29sb3I6IHZhcigtLW11dGVkKTsgZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMS41NTsgbWFyZ2luOiAwOyB9XG4gICAgICAgICAgLnBob25lLWFjY2VudCB7IGJhY2tncm91bmQ6IHZhcigtLWFjY2VudCk7IGhlaWdodDogMTIwcHg7IG1hcmdpbjogMThweCAyMnB4IDIycHg7IH1cbiAgICAgICAgICAuc3lzdGVtIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICBnYXA6IDQ4cHg7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgICAgICAgICBwYWRkaW5nOiA3MnB4IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5wYWxldHRlIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTsgbWluLWhlaWdodDogMjUwcHg7IH1cbiAgICAgICAgICAuc3dhdGNoIHsgYWxpZ24taXRlbXM6IGVuZDsgZGlzcGxheTogZmxleDsgcGFkZGluZzogMTZweDsgfVxuICAgICAgICAgIC5zd2F0Y2ggc3BhbiB7IGJhY2tncm91bmQ6IHZhcigtLWJhY2tncm91bmQpOyBjb2xvcjogdmFyKC0tZm9yZWdyb3VuZCk7IGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsgZm9udC1zaXplOiAxMXB4OyBwYWRkaW5nOiA1cHggN3B4OyB9XG4gICAgICAgICAgLnR5cGUtc3BlY2ltZW4geyBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgcGFkZGluZy10b3A6IDI0cHg7IH1cbiAgICAgICAgICAudHlwZS1zcGVjaW1lbiBzdHJvbmcgeyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiBjbGFtcCg0NHB4LCA2dncsIDc2cHgpOyBsZXR0ZXItc3BhY2luZzogLTAuMDVlbTsgbGluZS1oZWlnaHQ6IDAuOTU7IH1cbiAgICAgICAgICAudHlwZS1zcGVjaW1lbiBjb2RlIHsgY29sb3I6IHZhcigtLW11dGVkKTsgZGlzcGxheTogYmxvY2s7IGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsgbWFyZ2luLXRvcDogMjBweDsgfVxuICAgICAgICAgIC52b2ljZSB7IGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBkaXNwbGF5OiBncmlkOyBnYXA6IDMycHg7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsgcGFkZGluZzogMzZweCAwOyB9XG4gICAgICAgICAgLnZvaWNlIGgyIHsgZm9udC1zaXplOiAzMHB4OyBsZXR0ZXItc3BhY2luZzogLTAuMDM1ZW07IG1hcmdpbjogMDsgfVxuICAgICAgICAgIC52b2ljZSBoMyB7IGZvbnQtc2l6ZTogMTRweDsgbWFyZ2luOiAwIDAgMTJweDsgfVxuICAgICAgICAgIC52b2ljZSB1bCB7IGNvbG9yOiB2YXIoLS1tdXRlZCk7IGxpbmUtaGVpZ2h0OiAxLjY7IG1hcmdpbjogMDsgcGFkZGluZy1sZWZ0OiAxOHB4OyB9XG4gICAgICAgICAgLnJlZmVyZW5jZXMgeyBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgcGFkZGluZy10b3A6IDU2cHg7IH1cbiAgICAgICAgICAucmVmZXJlbmNlLWdyaWQgeyBkaXNwbGF5OiBncmlkOyBnYXA6IDE4cHg7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcik7IH1cbiAgICAgICAgICBmaWd1cmUgeyBtYXJnaW46IDA7IH1cbiAgICAgICAgICBmaWd1cmUgaW1nIHsgYXNwZWN0LXJhdGlvOiA5IC8gMTY7IGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpOyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBvYmplY3QtZml0OiBjb250YWluOyB3aWR0aDogMTAwJTsgfVxuICAgICAgICAgIGZpZ2NhcHRpb24geyBjb2xvcjogdmFyKC0tbXV0ZWQpOyBmb250LXNpemU6IDExcHg7IG1hcmdpbi10b3A6IDhweDsgfVxuICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA4NjBweCkge1xuICAgICAgICAgICAgbWFpbiB7IHBhZGRpbmc6IDAgMThweCA0OHB4OyB9XG4gICAgICAgICAgICAuaWRlbnRpdHksIC5zeXN0ZW0geyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgfVxuICAgICAgICAgICAgLmlkZW50aXR5IHsgZ2FwOiAyOHB4OyBwYWRkaW5nOiA1MnB4IDAgNDRweDsgfVxuICAgICAgICAgICAgLnNob3djYXNlIHsgYm9yZGVyLXJhZGl1czogMjBweDsgcGFkZGluZzogMjBweDsgfVxuICAgICAgICAgICAgLmRldmljZXMgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgfVxuICAgICAgICAgICAgLnBob25lIHsgbWFyZ2luOiAwIGF1dG87IG1heC13aWR0aDogMzIwcHg7IHdpZHRoOiAxMDAlOyB9XG4gICAgICAgICAgICAucmVmZXJlbmNlLWdyaWQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1NjBweCkge1xuICAgICAgICAgICAgLm1hc3RoZWFkIHsgbWluLWhlaWdodDogNzJweDsgfVxuICAgICAgICAgICAgLmlkZW50aXR5IGgxIHsgZm9udC1zaXplOiA1MnB4OyB9XG4gICAgICAgICAgICAuc2VjdGlvbi1oZWFkaW5nIHsgYWxpZ24taXRlbXM6IHN0YXJ0OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9XG4gICAgICAgICAgICAuc2VjdGlvbi1oZWFkaW5nIHAgeyB0ZXh0LWFsaWduOiBsZWZ0OyB9XG4gICAgICAgICAgICAubW9jay1oZXJvIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IHBhZGRpbmc6IDI0cHg7IH1cbiAgICAgICAgICAgIC5tb2NrLXZpc3VhbCB7IG1pbi1oZWlnaHQ6IDE5MHB4OyB9XG4gICAgICAgICAgICAubmF2LWxpbmtzIHsgZGlzcGxheTogbm9uZTsgfVxuICAgICAgICAgICAgLnBhbGV0dGUgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7IH1cbiAgICAgICAgICAgIC52b2ljZSB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogbm8tcHJlZmVyZW5jZSkge1xuICAgICAgICAgICAgLmJ1dHRvbiB7IHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMTYwbXMgZWFzZSwgdHJhbnNmb3JtIDE2MG1zIGVhc2U7IH1cbiAgICAgICAgICAgIC5idXR0b246aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5LWhvdmVyKTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC5idXR0b246Zm9jdXMtdmlzaWJsZSB7IG91dGxpbmU6IDNweCBzb2xpZCB2YXIoLS1hY2NlbnQpOyBvdXRsaW5lLW9mZnNldDogM3B4OyB9XG4gICAgICAgIDwvc3R5bGU+XG4gICAgICA8L2hlYWQ+XG4gICAgICA8Ym9keT5cbiAgICAgICAgPG1haW4+XG4gICAgICAgICAgPGhlYWRlciBjbGFzcz1cIm1hc3RoZWFkXCI+XG4gICAgICAgICAgICAke2lkZW50aXR5TWFya31cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YVwiPkJyYW5kIHN5c3RlbSAvICR7aHRtbChicmFuZC5zY2hlbWFWZXJzaW9uKX08L3NwYW4+XG4gICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImlkZW50aXR5XCIgYXJpYS1sYWJlbGxlZGJ5PVwiYnJhbmQtbmFtZVwiPlxuICAgICAgICAgICAgPGgxIGlkPVwiYnJhbmQtbmFtZVwiPiR7aHRtbChicmFuZC5uYW1lKX08L2gxPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlkZW50aXR5LWNvcHlcIj5cbiAgICAgICAgICAgICAgPHA+JHtodG1sKGJyYW5kLmRlc2NyaXB0aW9uKX08L3A+XG4gICAgICAgICAgICAgICR7YWN0aW9ufVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzaG93Y2FzZVwiIGFyaWEtbGFiZWxsZWRieT1cIm1vY2t1cC10aXRsZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGluZ1wiPlxuICAgICAgICAgICAgICA8aDIgaWQ9XCJtb2NrdXAtdGl0bGVcIj5XZWJzaXRlIG1vY2t1cHM8L2gyPlxuICAgICAgICAgICAgICA8cD5PbmUgcmVzcG9uc2l2ZSBkaXJlY3Rpb24gc2hvd24gYXQgZGVza3RvcCBhbmQgbW9iaWxlIHNpemVzLjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldmljZXNcIj5cbiAgICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJicm93c2VyXCIgYXJpYS1sYWJlbD1cIkRlc2t0b3Agd2Vic2l0ZSBtb2NrdXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJvd3Nlci1iYXJcIj48aT48L2k+PGk+PC9pPjxpPjwvaT48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJvd3Nlci1uYXZcIj5cbiAgICAgICAgICAgICAgICAgICR7aWRlbnRpdHlNYXJrfVxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1saW5rc1wiPjxzcGFuPk92ZXJ2aWV3PC9zcGFuPjxzcGFuPlByb2R1Y3Q8L3NwYW4+PHNwYW4+UmVzb3VyY2VzPC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWhlcm9cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2NrLWNvcHlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzPiR7aHRtbChoZWFkbGluZSl9PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPHA+JHtodG1sKGJyYW5kLmRlc2NyaXB0aW9uKX08L3A+XG4gICAgICAgICAgICAgICAgICAgICR7YWN0aW9ufVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9jay12aXN1YWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4ke2h0bWwoYnJhbmQudm9pY2UucHJpbmNpcGxlc1swXSA/PyBicmFuZC5uYW1lKX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJwaG9uZVwiIGFyaWEtbGFiZWw9XCJNb2JpbGUgd2Vic2l0ZSBtb2NrdXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGhvbmUtc2NyZWVuXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGhvbmUtbmF2XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGhvbmUtbWFya1wiPiR7Y29tcGFjdE1hcmt9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGFcIj5NZW51PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGhvbmUtY29weVwiPlxuICAgICAgICAgICAgICAgICAgICA8aDM+JHtodG1sKGhlYWRsaW5lKX08L2gzPlxuICAgICAgICAgICAgICAgICAgICA8cD4ke2h0bWwoYnJhbmQuZGVzY3JpcHRpb24pfTwvcD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBob25lLWFjY2VudFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInN5c3RlbVwiIGFyaWEtbGFiZWw9XCJCcmFuZCBzeXN0ZW1cIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRpbmdcIj48aDI+Q29yZSBwYWxldHRlPC9oMj48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhbGV0dGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dhdGNoXCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5KVwiPjxzcGFuPiR7YnJhbmQuY29sb3JzLnByaW1hcnl9PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2F0Y2hcIiBzdHlsZT1cImJhY2tncm91bmQ6IHZhcigtLWFjY2VudClcIj48c3Bhbj4ke2JyYW5kLmNvbG9ycy5hY2NlbnR9PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2F0Y2hcIiBzdHlsZT1cImJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpXCI+PHNwYW4+JHticmFuZC5jb2xvcnMuc3VyZmFjZX08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN3YXRjaFwiIHN0eWxlPVwiYmFja2dyb3VuZDogdmFyKC0tZm9yZWdyb3VuZClcIj48c3Bhbj4ke2JyYW5kLmNvbG9ycy5mb3JlZ3JvdW5kfTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRpbmdcIj48aDI+VHlwb2dyYXBoeTwvaDI+PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0eXBlLXNwZWNpbWVuXCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz5BYSAwMTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxjb2RlPiR7aHRtbChicmFuZC50eXBvZ3JhcGh5LnNhbnMpfTwvY29kZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInZvaWNlXCIgYXJpYS1sYWJlbGxlZGJ5PVwidm9pY2UtdGl0bGVcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxoMiBpZD1cInZvaWNlLXRpdGxlXCI+Vm9pY2U8L2gyPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1ldGFcIj4ke2h0bWwoYnJhbmQudm9pY2UudG9uZS5qb2luKFwiLCBcIikpfTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGgzPlByaW5jaXBsZXM8L2gzPlxuICAgICAgICAgICAgICA8dWw+JHtsaXN0SXRlbXMoYnJhbmQudm9pY2UucHJpbmNpcGxlcyl9PC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICR7Z2FsbGVyeX1cbiAgICAgICAgPC9tYWluPlxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgICBgXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICApO1xufVxuIl19
package/lib/src/bun.js CHANGED
@@ -22,8 +22,8 @@
22
22
  */
23
23
  import { existsSync } from "node:fs";
24
24
  import { delimiter, dirname, join } from "node:path";
25
- import { exec, projectUtils } from "@dbx-tools/core";
26
- import { functionUtils, log } from "@dbx-tools/shared-core";
25
+ import { spawnSync, npmRegistry } from "@dbx-tools/core";
26
+ import { log, memoize } from "@dbx-tools/shared-core";
27
27
  import { needsInstall } from "./root.js";
28
28
  const logger = log.logger("dbx-tools:bun");
29
29
  /**
@@ -40,7 +40,7 @@ const REGISTRY_SUBCOMMANDS = new Set(["add", "install", "i", "update", "up"]);
40
40
  * container may export it without any `.npmrc` for lookup. Memoized: resolution
41
41
  * shells out.
42
42
  */
43
- const registryOverride = functionUtils.memoize(() => projectUtils.npmRegistry(null, { overrideOnly: true, envVars: true })?.toString());
43
+ const registryOverride = memoize(() => npmRegistry(null, { overrideOnly: true, envVars: true })?.toString());
44
44
  /** `--registry <url>` for a bun invocation, or `[]` when the subcommand doesn't resolve. */
45
45
  export function bunRegistryArgs(args) {
46
46
  const url = registryOverride();
@@ -90,7 +90,7 @@ function resolveBunArgvImpl() {
90
90
  return ["bun"];
91
91
  }
92
92
  /** Memoized `[command, ...prefix]` argv prefix to run bun. */
93
- export const resolveBunArgv = functionUtils.memoize(resolveBunArgvImpl);
93
+ export const resolveBunArgv = memoize(resolveBunArgvImpl);
94
94
  /** Run bun with inherited stdio from `cwd`, forcing the resolved registry. */
95
95
  export function runBun(args, cwd) {
96
96
  const [command, ...prefix] = resolveBunArgv();
@@ -98,7 +98,7 @@ export function runBun(args, cwd) {
98
98
  if (registryArgs.length > 0) {
99
99
  logger.info(`running bun with registry: ${registryArgs[1]}`);
100
100
  }
101
- exec.spawnSync(command, [...prefix, ...args, ...registryArgs], {
101
+ spawnSync(command, [...prefix, ...args, ...registryArgs], {
102
102
  cwd,
103
103
  check: true,
104
104
  env: childEnv(),
@@ -123,4 +123,4 @@ export function runProjen(args, root) {
123
123
  // Fallback: resolve projen through bun's package runner.
124
124
  runBun(["x", "projen", ...args], root);
125
125
  }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFekMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUUzQzs7OztHQUlHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBRTlFOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBdUIsRUFBRSxDQUN0RSxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQ2xGLENBQUM7QUFFRiw0RkFBNEY7QUFDNUYsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUF1QjtJQUNyRCxNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQy9CLElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDcEIsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFD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QUM7QUFDSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFjLEVBQUUsSUFBWTtJQUNwRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0QsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUMxQixNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuQyxPQUFPO0lBQ1QsQ0FBQztJQUNELHlEQUF5RDtJQUN6RCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDekMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogYnVuIGRpc2NvdmVyeSwgd29ya3NwYWNlIGluc3RhbGwsIGFuZCBwcm9qZW4gZm9yd2FyZGluZyBmb3IgdGhlIGBkYngtdG9vbHNgIENMSS5cbiAqXG4gKiAjIyBGb3JjaW5nIGEgY3VzdG9tIHJlZ2lzdHJ5XG4gKlxuICogYnVuIGhvbm9ycyBhIGAtLXJlZ2lzdHJ5IDx1cmw+YCBmbGFnIG9uIGBidW4gaW5zdGFsbGAvYGJ1biBhZGRgIGFuZCBhIHByb2plY3RcbiAqIGAubnBtcmNgLCBidXQgKGxpa2UgcG5wbSkgaWdub3JlcyB0aGUgYG5wbV9jb25maWdfcmVnaXN0cnlgIGVudiB2YXIgZm9yIGl0cyBvd25cbiAqIHJlc29sdXRpb24uIFNvIGEgY3VzdG9tIHJlZ2lzdHJ5IGlzIGZvcmNlZCB0aHJvdWdoIFRXTyBjaGFubmVscywgZWFjaCB3aGVyZSBpdFxuICogYXBwbGllczpcbiAqXG4gKiAgLSB7QGxpbmsgYnVuUmVnaXN0cnlBcmdzfSBwYXNzZXMgYC0tcmVnaXN0cnlgIHRvIHRoZSBwYWNrYWdlLXJlc29sdmluZ1xuICogICAgc3ViY29tbWFuZHMgKGBpbnN0YWxsYC9gYWRkYC9gdXBkYXRlYCksIG5ldmVyIHRvIGBidW4gcnVuYC9gYnVueGAsIHdob3NlXG4gKiAgICB0cmFpbGluZyBhcmdzIGJlbG9uZyB0byB0aGUgc2NyaXB0LlxuICogIC0ge0BsaW5rIGNoaWxkRW52fSBrZWVwcyBgLm5wbXJjYC1zdHlsZSBlbnYgYWxpYXNlcyBzZXQgZm9yIGFueSBuZXN0ZWRcbiAqICAgIG5wbS1iYXNlZCB0b29sLCBhbmQgKGNyaXRpY2FsbHkpIHB1dHMgdGhlIGJ1bi9ub2RlIGV4ZWN1dGFibGUgZGlyIG9uIFBBVEggc29cbiAqICAgIGEgbGlmZWN5Y2xlIHNjcmlwdCBjYW4gaW52b2tlIHRoZSBydW50aW1lIGJ5IGJhcmUgbmFtZS5cbiAqXG4gKiBgQGRieC10b29scy9jb3JlYCdzIGBucG1SZWdpc3RyeSh7IG92ZXJyaWRlT25seTogdHJ1ZSB9KWAgcmV0dXJucyBub3RoaW5nIHdoZW5cbiAqIHRoZSBlZmZlY3RpdmUgcmVnaXN0cnkgSVMgbnBtanMsIHNvIG5vbmUgb2YgdGhpcyB0b3VjaGVzIGEgZGVmYXVsdCBpbnN0YWxsLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBkZWxpbWl0ZXIsIGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBleGVjLCBwcm9qZWN0VXRpbHMgfSBmcm9tIFwiQGRieC10b29scy9jb3JlXCI7XG5pbXBvcnQgeyBmdW5jdGlvblV0aWxzLCBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgbmVlZHNJbnN0YWxsIH0gZnJvbSBcIi4vcm9vdC50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiZGJ4LXRvb2xzOmJ1blwiKTtcblxuLyoqXG4gKiBidW4gc3ViY29tbWFuZHMgdGhhdCByZXNvbHZlIHBhY2thZ2VzIGZyb20gYSByZWdpc3RyeSwgYW5kIHRoZXJlZm9yZSBhY2NlcHQgYVxuICogbWVhbmluZ2Z1bCBgLS1yZWdpc3RyeWAuIEV2ZXJ5dGhpbmcgZWxzZSAoYHJ1bmAsIGB4YCwgYHBtYCwgLi4uKSBpcyBsZWZ0IGFsb25lOlxuICogYHJ1bmAvYHhgIGZvcndhcmQgdHJhaWxpbmcgYXJndW1lbnRzIHRvIHRoZSBzY3JpcHQgdGhleSBydW4uXG4gKi9cbmNvbnN0IFJFR0lTVFJZX1NVQkNPTU1BTkRTID0gbmV3IFNldChbXCJhZGRcIiwgXCJpbnN0YWxsXCIsIFwiaVwiLCBcInVwZGF0ZVwiLCBcInVwXCJdKTtcblxuLyoqXG4gKiBUaGUgcmVnaXN0cnkgdG8gZm9yY2Ugb250byBjaGlsZCBpbnN0YWxscywgb3IgYHVuZGVmaW5lZGAgd2hlbiB0aGUgZWZmZWN0aXZlXG4gKiBvbmUgaXMgYWxyZWFkeSB0aGUgcHVibGljIGRlZmF1bHQuXG4gKlxuICogYGVudlZhcnM6IHRydWVgIGFsc28gY29uc3VsdHMgYG5wbV9jb25maWdfcmVnaXN0cnlgIGRpcmVjdGx5LCBiZWNhdXNlIGFcbiAqIGNvbnRhaW5lciBtYXkgZXhwb3J0IGl0IHdpdGhvdXQgYW55IGAubnBtcmNgIGZvciBsb29rdXAuIE1lbW9pemVkOiByZXNvbHV0aW9uXG4gKiBzaGVsbHMgb3V0LlxuICovXG5jb25zdCByZWdpc3RyeU92ZXJyaWRlID0gZnVuY3Rpb25VdGlscy5tZW1vaXplKCgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT5cbiAgcHJvamVjdFV0aWxzLm5wbVJlZ2lzdHJ5KG51bGwsIHsgb3ZlcnJpZGVPbmx5OiB0cnVlLCBlbnZWYXJzOiB0cnVlIH0pPy50b1N0cmluZygpLFxuKTtcblxuLyoqIGAtLXJlZ2lzdHJ5IDx1cmw+YCBmb3IgYSBidW4gaW52b2NhdGlvbiwgb3IgYFtdYCB3aGVuIHRoZSBzdWJjb21tYW5kIGRvZXNuJ3QgcmVzb2x2ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidW5SZWdpc3RyeUFyZ3MoYXJnczogcmVhZG9ubHkgc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHVybCA9IHJlZ2lzdHJ5T3ZlcnJpZGUoKTtcbiAgaWYgKCF1cmwpIHJldHVybiBbXTtcbiAgcmV0dXJuIGJ1blVzZXNSZWdpc3RyeShhcmdzKSA/IFtcIi0tcmVnaXN0cnlcIiwgdXJsXSA6IFtdO1xufVxuXG4vKiogV2hldGhlciB0aGUgZmlyc3QgYnVuIHN1YmNvbW1hbmQgcmVzb2x2ZXMgcGFja2FnZXMgYW5kIGFjY2VwdHMgYC0tcmVnaXN0cnlgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1blVzZXNSZWdpc3RyeShhcmdzOiByZWFkb25seSBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICBjb25zdCBzdWJjb21tYW5kID0gYXJncy5maW5kKChhcmcpID0+ICFhcmcuc3RhcnRzV2l0aChcIi1cIikpO1xuICByZXR1cm4gc3ViY29tbWFuZCAhPT0gdW5kZWZpbmVkICYmIFJFR0lTVFJZX1NVQkNPTU1BTkRTLmhhcyhzdWJjb21tYW5kKTtcbn1cblxuLyoqXG4gKiBgcHJvY2Vzcy5lbnZgIHBsdXMgdGhlIHJ1bnRpbWUgZXhlY3V0YWJsZSBkaXJlY3RvcnkgYW5kIHJlZ2lzdHJ5IGFsaWFzZXMuXG4gKlxuICogVGhlIGV4ZWN1dGFibGUgZGlyZWN0b3J5IG1hdHRlcnMgd2hlbiB0aGlzIENMSSB3YXMgbGF1bmNoZWQgYnkgYWJzb2x1dGUgcGF0aDpcbiAqIGJ1biBydW5zLCBidXQgYSBsaWZlY3ljbGUgc2NyaXB0IHRoYXQgaW52b2tlcyBgYnVuYC9gbm9kZWAgYnkgYmFyZSBuYW1lIHdvdWxkXG4gKiBvdGhlcndpc2UgZmFpbCB3aXRoIGBjb21tYW5kIG5vdCBmb3VuZGAuIFByZXBlbmRpbmcgYGRpcm5hbWUocHJvY2Vzcy5leGVjUGF0aClgXG4gKiAodGhlIHJ1bm5pbmcgYnVuIGJpbmFyeSdzIGRpcikgcHV0cyB0aGUgcnVudGltZSBiYWNrIG9uIFBBVEguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGlsZEVudihleHRyYT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBOb2RlSlMuUHJvY2Vzc0VudiB7XG4gIGNvbnN0IGVudjogTm9kZUpTLlByb2Nlc3NFbnYgPSB7IC4uLnByb2Nlc3MuZW52LCAuLi5leHRyYSB9O1xuICBjb25zdCBydW50aW1lQmluID0gZGlybmFtZShwcm9jZXNzLmV4ZWNQYXRoKTtcbiAgY29uc3QgcGF0aEVudHJpZXMgPSAoZW52LlBBVEggPz8gXCJcIikuc3BsaXQoZGVsaW1pdGVyKS5maWx0ZXIoQm9vbGVhbik7XG4gIGlmICghcGF0aEVudHJpZXMuaW5jbHVkZXMocnVudGltZUJpbikpIHtcbiAgICBlbnYuUEFUSCA9IFtydW50aW1lQmluLCAuLi5wYXRoRW50cmllc10uam9pbihkZWxpbWl0ZXIpO1xuICB9XG4gIGNvbnN0IHVybCA9IHJlZ2lzdHJ5T3ZlcnJpZGUoKTtcbiAgaWYgKHVybCkge1xuICAgIC8vIEJvdGggY2FzZXM6IGVudiBpcyBjYXNlLXNlbnNpdGl2ZSBvbiBQT1NJWCwgYW5kIG5wbSBsb3dlcmNhc2VzIHdoZW4gcmVhZGluZy5cbiAgICBlbnYubnBtX2NvbmZpZ19yZWdpc3RyeSA9IHVybDtcbiAgICBlbnYuTlBNX0NPTkZJR19SRUdJU1RSWSA9IHVybDtcbiAgfVxuICByZXR1cm4gZW52O1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIGFyZ3YgcHJlZml4IHRvIHJ1biBidW46IHRoZSBgYnVuYCBwYWNrYWdlJ3Mgb3duIGJpbiB3aGVuIHRoaXMgQ0xJXG4gKiBpcyBpdHNlbGYgcnVubmluZyB1bmRlciBidW4gKGBwcm9jZXNzLmV4ZWNQYXRoYCBpcyB0aGUgYnVuIGJpbmFyeSksIGVsc2UgYSBiYXJlXG4gKiBgYnVuYCBvbiBQQVRILiBObyBjb3JlcGFjay9ucHggZmFsbGJhY2sgLSBidW4gaXMgdGhlIGFtYmllbnQgcnVudGltZSB0aGlzXG4gKiB0b29sY2hhaW4gcmVxdWlyZXMuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVCdW5Bcmd2SW1wbCgpOiBzdHJpbmdbXSB7XG4gIC8vIFRoZSBydW5uaW5nIHByb2Nlc3MgSVMgYnVuIGluIGV2ZXJ5IHN1cHBvcnRlZCBwYXRoICh0aGUgYmluIGlzIGBidW4gPGZpbGU+YCksXG4gIC8vIHNvIHJldXNlIGl0IGRpcmVjdGx5IC0gbm8gUEFUSCBsb29rdXAsIG5vIHBhY2thZ2UtbWFuYWdlciBzaGltLlxuICBpZiAoL1xcYmJ1blxcYi8udGVzdChwcm9jZXNzLmV4ZWNQYXRoKSkgcmV0dXJuIFtwcm9jZXNzLmV4ZWNQYXRoXTtcbiAgcmV0dXJuIFtcImJ1blwiXTtcbn1cblxuLyoqIE1lbW9pemVkIGBbY29tbWFuZCwgLi4ucHJlZml4XWAgYXJndiBwcmVmaXggdG8gcnVuIGJ1bi4gKi9cbmV4cG9ydCBjb25zdCByZXNvbHZlQnVuQXJndiA9IGZ1bmN0aW9uVXRpbHMubWVtb2l6ZShyZXNvbHZlQnVuQXJndkltcGwpO1xuXG4vKiogUnVuIGJ1biB3aXRoIGluaGVyaXRlZCBzdGRpbyBmcm9tIGBjd2RgLCBmb3JjaW5nIHRoZSByZXNvbHZlZCByZWdpc3RyeS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5CdW4oYXJnczogc3RyaW5nW10sIGN3ZDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IFtjb21tYW5kLCAuLi5wcmVmaXhdID0gcmVzb2x2ZUJ1bkFyZ3YoKTtcbiAgY29uc3QgcmVnaXN0cnlBcmdzID0gYnVuUmVnaXN0cnlBcmdzKGFyZ3MpO1xuICBpZiAocmVnaXN0cnlBcmdzLmxlbmd0aCA+IDApIHtcbiAgICBsb2dnZXIuaW5mbyhgcnVubmluZyBidW4gd2l0aCByZWdpc3RyeTogJHtyZWdpc3RyeUFyZ3NbMV19YCk7XG4gIH1cbiAgZXhlYy5zcGF3blN5bmMoY29tbWFuZCwgWy4uLnByZWZpeCwgLi4uYXJncywgLi4ucmVnaXN0cnlBcmdzXSwge1xuICAgIGN3ZCxcbiAgICBjaGVjazogdHJ1ZSxcbiAgICBlbnY6IGNoaWxkRW52KCksXG4gIH0pO1xufVxuXG4vKiogSW5zdGFsbCB3b3Jrc3BhY2UgZGVwZW5kZW5jaWVzIHdoZW4gYG5vZGVfbW9kdWxlc2Agb3IgcHJvamVuIGlzIG1pc3NpbmcuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlV29ya3NwYWNlUmVhZHkocm9vdDogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChuZWVkc0luc3RhbGwocm9vdCkpIHtcbiAgICBydW5CdW4oW1wiaW5zdGFsbFwiXSwgcm9vdCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSdW4gcHJvamVuIHdpdGggdGhlIGdpdmVuIGFyZ3MgZnJvbSBgcm9vdGAuIFByZWZlcnMgdGhlIGluc3RhbGxlZCBgcHJvamVuYCBiaW5cbiAqIHZpYSBgYnVuIHJ1bmAsIHNvIHRoZSB3b3Jrc3BhY2UncyBvd24gZW5naW5lICsgdGFza3MgYXJlIHVzZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5Qcm9qZW4oYXJnczogc3RyaW5nW10sIHJvb3Q6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBwcm9qZW5CaW4gPSBqb2luKHJvb3QsIFwibm9kZV9tb2R1bGVzXCIsIFwiLmJpblwiLCBcInByb2plblwiKTtcbiAgaWYgKGV4aXN0c1N5bmMocHJvamVuQmluKSkge1xuICAgIHJ1bkJ1bihbcHJvamVuQmluLCAuLi5hcmdzXSwgcm9vdCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIEZhbGxiYWNrOiByZXNvbHZlIHByb2plbiB0aHJvdWdoIGJ1bidzIHBhY2thZ2UgcnVubmVyLlxuICBydW5CdW4oW1wieFwiLCBcInByb2plblwiLCAuLi5hcmdzXSwgcm9vdCk7XG59XG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFekMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUUzQzs7OztHQUlHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBRTlFOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxHQUF1QixFQUFFLENBQ3hELFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUNyRSxDQUFDO0FBRUYsNEZBQTRGO0FBQzVGLE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBdUI7SUFDckQsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUMvQixJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxHQUFH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U0FBUyxDQUFDLElBQWMsRUFBRSxJQUFZO0lBQ3BELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMvRCxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25DLE9BQU87SUFDVCxDQUFDO0lBQ0QseURBQXlEO0lBQ3pELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBidW4gZGlzY292ZXJ5LCB3b3Jrc3BhY2UgaW5zdGFsbCwgYW5kIHByb2plbiBmb3J3YXJkaW5nIGZvciB0aGUgYGRieC10b29sc2AgQ0xJLlxuICpcbiAqICMjIEZvcmNpbmcgYSBjdXN0b20gcmVnaXN0cnlcbiAqXG4gKiBidW4gaG9ub3JzIGEgYC0tcmVnaXN0cnkgPHVybD5gIGZsYWcgb24gYGJ1biBpbnN0YWxsYC9gYnVuIGFkZGAgYW5kIGEgcHJvamVjdFxuICogYC5ucG1yY2AsIGJ1dCAobGlrZSBwbnBtKSBpZ25vcmVzIHRoZSBgbnBtX2NvbmZpZ19yZWdpc3RyeWAgZW52IHZhciBmb3IgaXRzIG93blxuICogcmVzb2x1dGlvbi4gU28gYSBjdXN0b20gcmVnaXN0cnkgaXMgZm9yY2VkIHRocm91Z2ggVFdPIGNoYW5uZWxzLCBlYWNoIHdoZXJlIGl0XG4gKiBhcHBsaWVzOlxuICpcbiAqICAtIHtAbGluayBidW5SZWdpc3RyeUFyZ3N9IHBhc3NlcyBgLS1yZWdpc3RyeWAgdG8gdGhlIHBhY2thZ2UtcmVzb2x2aW5nXG4gKiAgICBzdWJjb21tYW5kcyAoYGluc3RhbGxgL2BhZGRgL2B1cGRhdGVgKSwgbmV2ZXIgdG8gYGJ1biBydW5gL2BidW54YCwgd2hvc2VcbiAqICAgIHRyYWlsaW5nIGFyZ3MgYmVsb25nIHRvIHRoZSBzY3JpcHQuXG4gKiAgLSB7QGxpbmsgY2hpbGRFbnZ9IGtlZXBzIGAubnBtcmNgLXN0eWxlIGVudiBhbGlhc2VzIHNldCBmb3IgYW55IG5lc3RlZFxuICogICAgbnBtLWJhc2VkIHRvb2wsIGFuZCAoY3JpdGljYWxseSkgcHV0cyB0aGUgYnVuL25vZGUgZXhlY3V0YWJsZSBkaXIgb24gUEFUSCBzb1xuICogICAgYSBsaWZlY3ljbGUgc2NyaXB0IGNhbiBpbnZva2UgdGhlIHJ1bnRpbWUgYnkgYmFyZSBuYW1lLlxuICpcbiAqIGBAZGJ4LXRvb2xzL2NvcmVgJ3MgYG5wbVJlZ2lzdHJ5KHsgb3ZlcnJpZGVPbmx5OiB0cnVlIH0pYCByZXR1cm5zIG5vdGhpbmcgd2hlblxuICogdGhlIGVmZmVjdGl2ZSByZWdpc3RyeSBJUyBucG1qcywgc28gbm9uZSBvZiB0aGlzIHRvdWNoZXMgYSBkZWZhdWx0IGluc3RhbGwuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGRlbGltaXRlciwgZGlybmFtZSwgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHNwYXduU3luYywgbnBtUmVnaXN0cnkgfSBmcm9tIFwiQGRieC10b29scy9jb3JlXCI7XG5pbXBvcnQgeyBsb2csIG1lbW9pemUgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgbmVlZHNJbnN0YWxsIH0gZnJvbSBcIi4vcm9vdC50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiZGJ4LXRvb2xzOmJ1blwiKTtcblxuLyoqXG4gKiBidW4gc3ViY29tbWFuZHMgdGhhdCByZXNvbHZlIHBhY2thZ2VzIGZyb20gYSByZWdpc3RyeSwgYW5kIHRoZXJlZm9yZSBhY2NlcHQgYVxuICogbWVhbmluZ2Z1bCBgLS1yZWdpc3RyeWAuIEV2ZXJ5dGhpbmcgZWxzZSAoYHJ1bmAsIGB4YCwgYHBtYCwgLi4uKSBpcyBsZWZ0IGFsb25lOlxuICogYHJ1bmAvYHhgIGZvcndhcmQgdHJhaWxpbmcgYXJndW1lbnRzIHRvIHRoZSBzY3JpcHQgdGhleSBydW4uXG4gKi9cbmNvbnN0IFJFR0lTVFJZX1NVQkNPTU1BTkRTID0gbmV3IFNldChbXCJhZGRcIiwgXCJpbnN0YWxsXCIsIFwiaVwiLCBcInVwZGF0ZVwiLCBcInVwXCJdKTtcblxuLyoqXG4gKiBUaGUgcmVnaXN0cnkgdG8gZm9yY2Ugb250byBjaGlsZCBpbnN0YWxscywgb3IgYHVuZGVmaW5lZGAgd2hlbiB0aGUgZWZmZWN0aXZlXG4gKiBvbmUgaXMgYWxyZWFkeSB0aGUgcHVibGljIGRlZmF1bHQuXG4gKlxuICogYGVudlZhcnM6IHRydWVgIGFsc28gY29uc3VsdHMgYG5wbV9jb25maWdfcmVnaXN0cnlgIGRpcmVjdGx5LCBiZWNhdXNlIGFcbiAqIGNvbnRhaW5lciBtYXkgZXhwb3J0IGl0IHdpdGhvdXQgYW55IGAubnBtcmNgIGZvciBsb29rdXAuIE1lbW9pemVkOiByZXNvbHV0aW9uXG4gKiBzaGVsbHMgb3V0LlxuICovXG5jb25zdCByZWdpc3RyeU92ZXJyaWRlID0gbWVtb2l6ZSgoKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+XG4gIG5wbVJlZ2lzdHJ5KG51bGwsIHsgb3ZlcnJpZGVPbmx5OiB0cnVlLCBlbnZWYXJzOiB0cnVlIH0pPy50b1N0cmluZygpLFxuKTtcblxuLyoqIGAtLXJlZ2lzdHJ5IDx1cmw+YCBmb3IgYSBidW4gaW52b2NhdGlvbiwgb3IgYFtdYCB3aGVuIHRoZSBzdWJjb21tYW5kIGRvZXNuJ3QgcmVzb2x2ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidW5SZWdpc3RyeUFyZ3MoYXJnczogcmVhZG9ubHkgc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHVybCA9IHJlZ2lzdHJ5T3ZlcnJpZGUoKTtcbiAgaWYgKCF1cmwpIHJldHVybiBbXTtcbiAgcmV0dXJuIGJ1blVzZXNSZWdpc3RyeShhcmdzKSA/IFtcIi0tcmVnaXN0cnlcIiwgdXJsXSA6IFtdO1xufVxuXG4vKiogV2hldGhlciB0aGUgZmlyc3QgYnVuIHN1YmNvbW1hbmQgcmVzb2x2ZXMgcGFja2FnZXMgYW5kIGFjY2VwdHMgYC0tcmVnaXN0cnlgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1blVzZXNSZWdpc3RyeShhcmdzOiByZWFkb25seSBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICBjb25zdCBzdWJjb21tYW5kID0gYXJncy5maW5kKChhcmcpID0+ICFhcmcuc3RhcnRzV2l0aChcIi1cIikpO1xuICByZXR1cm4gc3ViY29tbWFuZCAhPT0gdW5kZWZpbmVkICYmIFJFR0lTVFJZX1NVQkNPTU1BTkRTLmhhcyhzdWJjb21tYW5kKTtcbn1cblxuLyoqXG4gKiBgcHJvY2Vzcy5lbnZgIHBsdXMgdGhlIHJ1bnRpbWUgZXhlY3V0YWJsZSBkaXJlY3RvcnkgYW5kIHJlZ2lzdHJ5IGFsaWFzZXMuXG4gKlxuICogVGhlIGV4ZWN1dGFibGUgZGlyZWN0b3J5IG1hdHRlcnMgd2hlbiB0aGlzIENMSSB3YXMgbGF1bmNoZWQgYnkgYWJzb2x1dGUgcGF0aDpcbiAqIGJ1biBydW5zLCBidXQgYSBsaWZlY3ljbGUgc2NyaXB0IHRoYXQgaW52b2tlcyBgYnVuYC9gbm9kZWAgYnkgYmFyZSBuYW1lIHdvdWxkXG4gKiBvdGhlcndpc2UgZmFpbCB3aXRoIGBjb21tYW5kIG5vdCBmb3VuZGAuIFByZXBlbmRpbmcgYGRpcm5hbWUocHJvY2Vzcy5leGVjUGF0aClgXG4gKiAodGhlIHJ1bm5pbmcgYnVuIGJpbmFyeSdzIGRpcikgcHV0cyB0aGUgcnVudGltZSBiYWNrIG9uIFBBVEguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGlsZEVudihleHRyYT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBOb2RlSlMuUHJvY2Vzc0VudiB7XG4gIGNvbnN0IGVudjogTm9kZUpTLlByb2Nlc3NFbnYgPSB7IC4uLnByb2Nlc3MuZW52LCAuLi5leHRyYSB9O1xuICBjb25zdCBydW50aW1lQmluID0gZGlybmFtZShwcm9jZXNzLmV4ZWNQYXRoKTtcbiAgY29uc3QgcGF0aEVudHJpZXMgPSAoZW52LlBBVEggPz8gXCJcIikuc3BsaXQoZGVsaW1pdGVyKS5maWx0ZXIoQm9vbGVhbik7XG4gIGlmICghcGF0aEVudHJpZXMuaW5jbHVkZXMocnVudGltZUJpbikpIHtcbiAgICBlbnYuUEFUSCA9IFtydW50aW1lQmluLCAuLi5wYXRoRW50cmllc10uam9pbihkZWxpbWl0ZXIpO1xuICB9XG4gIGNvbnN0IHVybCA9IHJlZ2lzdHJ5T3ZlcnJpZGUoKTtcbiAgaWYgKHVybCkge1xuICAgIC8vIEJvdGggY2FzZXM6IGVudiBpcyBjYXNlLXNlbnNpdGl2ZSBvbiBQT1NJWCwgYW5kIG5wbSBsb3dlcmNhc2VzIHdoZW4gcmVhZGluZy5cbiAgICBlbnYubnBtX2NvbmZpZ19yZWdpc3RyeSA9IHVybDtcbiAgICBlbnYuTlBNX0NPTkZJR19SRUdJU1RSWSA9IHVybDtcbiAgfVxuICByZXR1cm4gZW52O1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIGFyZ3YgcHJlZml4IHRvIHJ1biBidW46IHRoZSBgYnVuYCBwYWNrYWdlJ3Mgb3duIGJpbiB3aGVuIHRoaXMgQ0xJXG4gKiBpcyBpdHNlbGYgcnVubmluZyB1bmRlciBidW4gKGBwcm9jZXNzLmV4ZWNQYXRoYCBpcyB0aGUgYnVuIGJpbmFyeSksIGVsc2UgYSBiYXJlXG4gKiBgYnVuYCBvbiBQQVRILiBObyBjb3JlcGFjay9ucHggZmFsbGJhY2sgLSBidW4gaXMgdGhlIGFtYmllbnQgcnVudGltZSB0aGlzXG4gKiB0b29sY2hhaW4gcmVxdWlyZXMuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVCdW5Bcmd2SW1wbCgpOiBzdHJpbmdbXSB7XG4gIC8vIFRoZSBydW5uaW5nIHByb2Nlc3MgSVMgYnVuIGluIGV2ZXJ5IHN1cHBvcnRlZCBwYXRoICh0aGUgYmluIGlzIGBidW4gPGZpbGU+YCksXG4gIC8vIHNvIHJldXNlIGl0IGRpcmVjdGx5IC0gbm8gUEFUSCBsb29rdXAsIG5vIHBhY2thZ2UtbWFuYWdlciBzaGltLlxuICBpZiAoL1xcYmJ1blxcYi8udGVzdChwcm9jZXNzLmV4ZWNQYXRoKSkgcmV0dXJuIFtwcm9jZXNzLmV4ZWNQYXRoXTtcbiAgcmV0dXJuIFtcImJ1blwiXTtcbn1cblxuLyoqIE1lbW9pemVkIGBbY29tbWFuZCwgLi4ucHJlZml4XWAgYXJndiBwcmVmaXggdG8gcnVuIGJ1bi4gKi9cbmV4cG9ydCBjb25zdCByZXNvbHZlQnVuQXJndiA9IG1lbW9pemUocmVzb2x2ZUJ1bkFyZ3ZJbXBsKTtcblxuLyoqIFJ1biBidW4gd2l0aCBpbmhlcml0ZWQgc3RkaW8gZnJvbSBgY3dkYCwgZm9yY2luZyB0aGUgcmVzb2x2ZWQgcmVnaXN0cnkuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuQnVuKGFyZ3M6IHN0cmluZ1tdLCBjd2Q6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBbY29tbWFuZCwgLi4ucHJlZml4XSA9IHJlc29sdmVCdW5Bcmd2KCk7XG4gIGNvbnN0IHJlZ2lzdHJ5QXJncyA9IGJ1blJlZ2lzdHJ5QXJncyhhcmdzKTtcbiAgaWYgKHJlZ2lzdHJ5QXJncy5sZW5ndGggPiAwKSB7XG4gICAgbG9nZ2VyLmluZm8oYHJ1bm5pbmcgYnVuIHdpdGggcmVnaXN0cnk6ICR7cmVnaXN0cnlBcmdzWzFdfWApO1xuICB9XG4gIHNwYXduU3luYyhjb21tYW5kLCBbLi4ucHJlZml4LCAuLi5hcmdzLCAuLi5yZWdpc3RyeUFyZ3NdLCB7XG4gICAgY3dkLFxuICAgIGNoZWNrOiB0cnVlLFxuICAgIGVudjogY2hpbGRFbnYoKSxcbiAgfSk7XG59XG5cbi8qKiBJbnN0YWxsIHdvcmtzcGFjZSBkZXBlbmRlbmNpZXMgd2hlbiBgbm9kZV9tb2R1bGVzYCBvciBwcm9qZW4gaXMgbWlzc2luZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVXb3Jrc3BhY2VSZWFkeShyb290OiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKG5lZWRzSW5zdGFsbChyb290KSkge1xuICAgIHJ1bkJ1bihbXCJpbnN0YWxsXCJdLCByb290KTtcbiAgfVxufVxuXG4vKipcbiAqIFJ1biBwcm9qZW4gd2l0aCB0aGUgZ2l2ZW4gYXJncyBmcm9tIGByb290YC4gUHJlZmVycyB0aGUgaW5zdGFsbGVkIGBwcm9qZW5gIGJpblxuICogdmlhIGBidW4gcnVuYCwgc28gdGhlIHdvcmtzcGFjZSdzIG93biBlbmdpbmUgKyB0YXNrcyBhcmUgdXNlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1blByb2plbihhcmdzOiBzdHJpbmdbXSwgcm9vdDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHByb2plbkJpbiA9IGpvaW4ocm9vdCwgXCJub2RlX21vZHVsZXNcIiwgXCIuYmluXCIsIFwicHJvamVuXCIpO1xuICBpZiAoZXhpc3RzU3luYyhwcm9qZW5CaW4pKSB7XG4gICAgcnVuQnVuKFtwcm9qZW5CaW4sIC4uLmFyZ3NdLCByb290KTtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gRmFsbGJhY2s6IHJlc29sdmUgcHJvamVuIHRocm91Z2ggYnVuJ3MgcGFja2FnZSBydW5uZXIuXG4gIHJ1bkJ1bihbXCJ4XCIsIFwicHJvamVuXCIsIC4uLmFyZ3NdLCByb290KTtcbn1cbiJdfQ==
@@ -3,14 +3,14 @@
3
3
  *
4
4
  * @module
5
5
  */
6
+ import { type GenieCodeOptions } from "@dbx-tools/shared-genie-code";
6
7
  import { Command } from "commander";
7
- import { type GenieCodeCliOptions } from "./options.ts";
8
8
  /** Injectable managed Genie execution boundary for parser tests and embedding. */
9
9
  export interface GenieCodeCliDependencies {
10
10
  run(input: {
11
11
  cwd: string;
12
12
  genieArgs: readonly string[];
13
- options: GenieCodeCliOptions;
13
+ options: GenieCodeOptions;
14
14
  }): Promise<void>;
15
15
  }
16
16
  /** Build the managed Genie Code command without executing it. */
@@ -4,8 +4,8 @@
4
4
  * @module
5
5
  */
6
6
  import { addArgs, parseArgs } from "@dbx-tools/cli-args";
7
+ import { GenieCodeOptionsSchema } from "@dbx-tools/shared-genie-code";
7
8
  import { Command } from "commander";
8
- import { GenieCodeCliOptionsSchema } from "./options.js";
9
9
  import { runGenieCode } from "./runtime.js";
10
10
  const DEFAULT_DEPENDENCIES = {
11
11
  run: runGenieCode,
@@ -19,12 +19,12 @@ export function buildProgram(name = "dbx genie", dependencies = DEFAULT_DEPENDEN
19
19
  .allowUnknownOption()
20
20
  .passThroughOptions()
21
21
  .allowExcessArguments()
22
- .showHelpAfterError(), GenieCodeCliOptionsSchema);
22
+ .showHelpAfterError(), GenieCodeOptionsSchema);
23
23
  program.action(async (genieArgs) => {
24
24
  await dependencies.run({
25
25
  cwd: process.cwd(),
26
26
  genieArgs,
27
- options: parseArgs(program, GenieCodeCliOptionsSchema),
27
+ options: parseArgs(program, GenieCodeOptionsSchema),
28
28
  });
29
29
  });
30
30
  return program;
@@ -33,4 +33,4 @@ export function buildProgram(name = "dbx genie", dependencies = DEFAULT_DEPENDEN
33
33
  export async function runCli(argv) {
34
34
  await buildProgram().parseAsync(argv);
35
35
  }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmllLWNvZGUvY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEMsT0FBTyxFQUFFLHlCQUF5QixFQUE0QixNQUFNLGNBQWMsQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBVzVDLE1BQU0sb0JBQW9CLEdBQTZCO0lBQ3JELEdBQUcsRUFBRSxZQUFZO0NBQ2xCLENBQUM7QUFFRixpRUFBaUU7QUFDakUsTUFBTSxVQUFVLFlBQVksQ0FDMUIsSUFBSSxHQUFHLFdBQVcsRUFDbEIsZUFBeUMsb0JBQW9CO0lBRTdELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FDckIsSUFBSSxPQUFPLEVBQUU7U0FDVixJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ1YsV0FBVyxDQUFDLHdFQUF3RSxDQUFDO1NBQ3JGLFFBQVEsQ0FDUCxnQkFBZ0IsRUFDaEIsdUZBQXVGLENBQ3hGO1NBQ0Esa0JBQWtCLEVBQUU7U0FDcEIsa0JBQWtCLEVBQUU7U0FDcEIsb0JBQW9CLEVBQUU7U0FDdEIsa0JBQWtCLEVBQUUsRUFDdkIseUJBQXlCLENBQzFCLENBQUM7SUFDRixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFtQixFQUFFLEVBQUU7UUFDM0MsTUFBTSxZQUFZLENBQUMsR0FBRyxDQUFDO1lBQ3JCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ2xCLFNBQVM7WUFDVCxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSx5QkFBeUIsQ0FBQztTQUN2RCxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCw2Q0FBNkM7QUFDN0MsTUFBTSxDQUFDLEtBQUssVUFBVSxNQUFNLENBQUMsSUFBYztJQUN6QyxNQUFNLFlBQVksRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNYW5hZ2VkIGBkYnggZ2VuaWVgIGNvbW1hbmQuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGFkZEFyZ3MsIHBhcnNlQXJncyB9IGZyb20gXCJAZGJ4LXRvb2xzL2NsaS1hcmdzXCI7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuXG5pbXBvcnQgeyBHZW5pZUNvZGVDbGlPcHRpb25zU2NoZW1hLCB0eXBlIEdlbmllQ29kZUNsaU9wdGlvbnMgfSBmcm9tIFwiLi9vcHRpb25zLnRzXCI7XG5pbXBvcnQgeyBydW5HZW5pZUNvZGUgfSBmcm9tIFwiLi9ydW50aW1lLnRzXCI7XG5cbi8qKiBJbmplY3RhYmxlIG1hbmFnZWQgR2VuaWUgZXhlY3V0aW9uIGJvdW5kYXJ5IGZvciBwYXJzZXIgdGVzdHMgYW5kIGVtYmVkZGluZy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuaWVDb2RlQ2xpRGVwZW5kZW5jaWVzIHtcbiAgcnVuKGlucHV0OiB7XG4gICAgY3dkOiBzdHJpbmc7XG4gICAgZ2VuaWVBcmdzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgICBvcHRpb25zOiBHZW5pZUNvZGVDbGlPcHRpb25zO1xuICB9KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuY29uc3QgREVGQVVMVF9ERVBFTkRFTkNJRVM6IEdlbmllQ29kZUNsaURlcGVuZGVuY2llcyA9IHtcbiAgcnVuOiBydW5HZW5pZUNvZGUsXG59O1xuXG4vKiogQnVpbGQgdGhlIG1hbmFnZWQgR2VuaWUgQ29kZSBjb21tYW5kIHdpdGhvdXQgZXhlY3V0aW5nIGl0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUHJvZ3JhbShcbiAgbmFtZSA9IFwiZGJ4IGdlbmllXCIsXG4gIGRlcGVuZGVuY2llczogR2VuaWVDb2RlQ2xpRGVwZW5kZW5jaWVzID0gREVGQVVMVF9ERVBFTkRFTkNJRVMsXG4pOiBDb21tYW5kIHtcbiAgY29uc3QgcHJvZ3JhbSA9IGFkZEFyZ3MoXG4gICAgbmV3IENvbW1hbmQoKVxuICAgICAgLm5hbWUobmFtZSlcbiAgICAgIC5kZXNjcmlwdGlvbihcIlJ1biBHZW5pZSBDb2RlIHRocm91Z2ggYW4gYXV0aGVudGljYXRlZCBsb2NhbCBEYXRhYnJpY2tzIG1vZGVsIGdhdGV3YXlcIilcbiAgICAgIC5hcmd1bWVudChcbiAgICAgICAgXCJbZ2VuaWVBcmdzLi4uXVwiLFxuICAgICAgICBcIkFyZ3VtZW50cyBhbmQgdW5rbm93biBmbGFncyBmb3J3YXJkZWQgdG8gR2VuaWUgQ29kZS4gU2VwYXJhdGUgd3JhcHBlciBvcHRpb25zIHdpdGggLS1cIixcbiAgICAgIClcbiAgICAgIC5hbGxvd1Vua25vd25PcHRpb24oKVxuICAgICAgLnBhc3NUaHJvdWdoT3B0aW9ucygpXG4gICAgICAuYWxsb3dFeGNlc3NBcmd1bWVudHMoKVxuICAgICAgLnNob3dIZWxwQWZ0ZXJFcnJvcigpLFxuICAgIEdlbmllQ29kZUNsaU9wdGlvbnNTY2hlbWEsXG4gICk7XG4gIHByb2dyYW0uYWN0aW9uKGFzeW5jIChnZW5pZUFyZ3M6IHN0cmluZ1tdKSA9PiB7XG4gICAgYXdhaXQgZGVwZW5kZW5jaWVzLnJ1bih7XG4gICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgICBnZW5pZUFyZ3MsXG4gICAgICBvcHRpb25zOiBwYXJzZUFyZ3MocHJvZ3JhbSwgR2VuaWVDb2RlQ2xpT3B0aW9uc1NjaGVtYSksXG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gcHJvZ3JhbTtcbn1cblxuLyoqIFBhcnNlIGFyZ3YgYW5kIHJ1biBtYW5hZ2VkIEdlbmllIENvZGUuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQ2xpKGFyZ3Y6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGJ1aWxkUHJvZ3JhbSgpLnBhcnNlQXN5bmMoYXJndik7XG59XG4iXX0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmllLWNvZGUvY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBeUIsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFXNUMsTUFBTSxvQkFBb0IsR0FBNkI7SUFDckQsR0FBRyxFQUFFLFlBQVk7Q0FDbEIsQ0FBQztBQUVGLGlFQUFpRTtBQUNqRSxNQUFNLFVBQVUsWUFBWSxDQUMxQixJQUFJLEdBQUcsV0FBVyxFQUNsQixlQUF5QyxvQkFBb0I7SUFFN0QsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUNyQixJQUFJLE9BQU8sRUFBRTtTQUNWLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDVixXQUFXLENBQUMsd0VBQXdFLENBQUM7U0FDckYsUUFBUSxDQUNQLGdCQUFnQixFQUNoQix1RkFBdUYsQ0FDeEY7U0FDQSxrQkFBa0IsRUFBRTtTQUNwQixrQkFBa0IsRUFBRTtTQUNwQixvQkFBb0IsRUFBRTtTQUN0QixrQkFBa0IsRUFBRSxFQUN2QixzQkFBc0IsQ0FDdkIsQ0FBQztJQUNGLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFNBQW1CLEVBQUUsRUFBRTtRQUMzQyxNQUFNLFlBQVksQ0FBQyxHQUFHLENBQUM7WUFDckIsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDbEIsU0FBUztZQUNULE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLHNCQUFzQixDQUFDO1NBQ3BELENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELDZDQUE2QztBQUM3QyxNQUFNLENBQUMsS0FBSyxVQUFVLE1BQU0sQ0FBQyxJQUFjO0lBQ3pDLE1BQU0sWUFBWSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1hbmFnZWQgYGRieCBnZW5pZWAgY29tbWFuZC5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgYWRkQXJncywgcGFyc2VBcmdzIH0gZnJvbSBcIkBkYngtdG9vbHMvY2xpLWFyZ3NcIjtcbmltcG9ydCB7IEdlbmllQ29kZU9wdGlvbnNTY2hlbWEsIHR5cGUgR2VuaWVDb2RlT3B0aW9ucyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1nZW5pZS1jb2RlXCI7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuXG5pbXBvcnQgeyBydW5HZW5pZUNvZGUgfSBmcm9tIFwiLi9ydW50aW1lLnRzXCI7XG5cbi8qKiBJbmplY3RhYmxlIG1hbmFnZWQgR2VuaWUgZXhlY3V0aW9uIGJvdW5kYXJ5IGZvciBwYXJzZXIgdGVzdHMgYW5kIGVtYmVkZGluZy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuaWVDb2RlQ2xpRGVwZW5kZW5jaWVzIHtcbiAgcnVuKGlucHV0OiB7XG4gICAgY3dkOiBzdHJpbmc7XG4gICAgZ2VuaWVBcmdzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgICBvcHRpb25zOiBHZW5pZUNvZGVPcHRpb25zO1xuICB9KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuY29uc3QgREVGQVVMVF9ERVBFTkRFTkNJRVM6IEdlbmllQ29kZUNsaURlcGVuZGVuY2llcyA9IHtcbiAgcnVuOiBydW5HZW5pZUNvZGUsXG59O1xuXG4vKiogQnVpbGQgdGhlIG1hbmFnZWQgR2VuaWUgQ29kZSBjb21tYW5kIHdpdGhvdXQgZXhlY3V0aW5nIGl0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUHJvZ3JhbShcbiAgbmFtZSA9IFwiZGJ4IGdlbmllXCIsXG4gIGRlcGVuZGVuY2llczogR2VuaWVDb2RlQ2xpRGVwZW5kZW5jaWVzID0gREVGQVVMVF9ERVBFTkRFTkNJRVMsXG4pOiBDb21tYW5kIHtcbiAgY29uc3QgcHJvZ3JhbSA9IGFkZEFyZ3MoXG4gICAgbmV3IENvbW1hbmQoKVxuICAgICAgLm5hbWUobmFtZSlcbiAgICAgIC5kZXNjcmlwdGlvbihcIlJ1biBHZW5pZSBDb2RlIHRocm91Z2ggYW4gYXV0aGVudGljYXRlZCBsb2NhbCBEYXRhYnJpY2tzIG1vZGVsIGdhdGV3YXlcIilcbiAgICAgIC5hcmd1bWVudChcbiAgICAgICAgXCJbZ2VuaWVBcmdzLi4uXVwiLFxuICAgICAgICBcIkFyZ3VtZW50cyBhbmQgdW5rbm93biBmbGFncyBmb3J3YXJkZWQgdG8gR2VuaWUgQ29kZS4gU2VwYXJhdGUgd3JhcHBlciBvcHRpb25zIHdpdGggLS1cIixcbiAgICAgIClcbiAgICAgIC5hbGxvd1Vua25vd25PcHRpb24oKVxuICAgICAgLnBhc3NUaHJvdWdoT3B0aW9ucygpXG4gICAgICAuYWxsb3dFeGNlc3NBcmd1bWVudHMoKVxuICAgICAgLnNob3dIZWxwQWZ0ZXJFcnJvcigpLFxuICAgIEdlbmllQ29kZU9wdGlvbnNTY2hlbWEsXG4gICk7XG4gIHByb2dyYW0uYWN0aW9uKGFzeW5jIChnZW5pZUFyZ3M6IHN0cmluZ1tdKSA9PiB7XG4gICAgYXdhaXQgZGVwZW5kZW5jaWVzLnJ1bih7XG4gICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgICBnZW5pZUFyZ3MsXG4gICAgICBvcHRpb25zOiBwYXJzZUFyZ3MocHJvZ3JhbSwgR2VuaWVDb2RlT3B0aW9uc1NjaGVtYSksXG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gcHJvZ3JhbTtcbn1cblxuLyoqIFBhcnNlIGFyZ3YgYW5kIHJ1biBtYW5hZ2VkIEdlbmllIENvZGUuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQ2xpKGFyZ3Y6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGJ1aWxkUHJvZ3JhbSgpLnBhcnNlQXN5bmMoYXJndik7XG59XG4iXX0=
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- import { type GenieCodeBaseConfig, type GenieCodeConfig, type GenieCodeProviderOverlay } from "@dbx-tools/shared-genie-code/config";
6
+ import { type GenieCodeBaseConfig, type GenieCodeConfig, type GenieCodeProviderOverlay } from "@dbx-tools/shared-genie-code";
7
7
  /** Provider identifier written to the base and invocation overlay configurations. */
8
8
  export declare const GENIE_CODE_GATEWAY_PROVIDER = "dbx_tools_model_gateway";
9
9
  /** Inputs used to update a persistent home and create one invocation overlay. */
@@ -7,10 +7,10 @@ import { createHash, randomUUID } from "node:crypto";
7
7
  import { chmod, mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
8
8
  import { homedir } from "node:os";
9
9
  import { dirname, join, resolve } from "node:path";
10
- import { withFileLock } from "@dbx-tools/core/file-lock";
11
- import { object } from "@dbx-tools/shared-core";
12
- import { GenieCodeBaseConfigSchema, GenieCodeConfigSchema, GenieCodeProviderOverlaySchema, } from "@dbx-tools/shared-genie-code/config";
13
- import { genieCodeHomeName } from "@dbx-tools/shared-genie-code/options";
10
+ import { withFileLock } from "@dbx-tools/core";
11
+ import { isRecord } from "@dbx-tools/shared-core";
12
+ import { GenieCodeBaseConfigSchema, GenieCodeConfigSchema, GenieCodeProviderOverlaySchema, } from "@dbx-tools/shared-genie-code";
13
+ import { genieCodeHomeName } from "@dbx-tools/shared-genie-code";
14
14
  import { parse, stringify } from "smol-toml";
15
15
  /** Provider identifier written to the base and invocation overlay configurations. */
16
16
  export const GENIE_CODE_GATEWAY_PROVIDER = "dbx_tools_model_gateway";
@@ -23,7 +23,7 @@ export function genieCodeHome(profile, homeDirectory = homedir()) {
23
23
  }
24
24
  /** Render the persistent profile-model configuration. */
25
25
  export function genieCodeBaseConfig(options, existingProjects = {}) {
26
- const projects = Object.fromEntries(Object.entries(existingProjects).filter(([, value]) => object.isRecord(value) && value.trust_level === "trusted"));
26
+ const projects = Object.fromEntries(Object.entries(existingProjects).filter(([, value]) => isRecord(value) && value.trust_level === "trusted"));
27
27
  return GenieCodeBaseConfigSchema.parse({
28
28
  databricks_profile: options.profile,
29
29
  projects: {
@@ -69,7 +69,7 @@ export function genieCodeConfig(options) {
69
69
  async function existingProjects(path) {
70
70
  try {
71
71
  const value = parse(await readFile(path, "utf8"));
72
- return object.isRecord(value.projects) ? value.projects : {};
72
+ return isRecord(value.projects) ? value.projects : {};
73
73
  }
74
74
  catch (error) {
75
75
  if (error instanceof Error && "code" in error && error.code === "ENOENT")
@@ -105,4 +105,4 @@ export async function writeGenieCodeConfig(options) {
105
105
  await writePrivateToml(destination.overlayPath, genieCodeProviderOverlay(options));
106
106
  return destination;
107
107
  }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmllLWNvZGUvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFDTCx5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLDhCQUE4QixHQUkvQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTdDLHFGQUFxRjtBQUNyRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyx5QkFBeUIsQ0FBQztBQXlCckUsK0RBQStEO0FBQy9ELE1BQU0sVUFBVSxhQUFhLENBQzNCLE9BQWUsRUFDZixnQkFBd0IsT0FBTyxFQUFFO0lBRWpDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0UsTUFBTSxJ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QUFFLEtBQUssSUFBSSxFQUFFO1FBQzNFLE1BQU0sUUFBUSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ25GLE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlIG9uZSBwZXJzaXN0ZW50IEdlbmllIENvZGUgaG9tZSBwZXIgZXhhY3QgcHJvZmlsZS1tb2RlbCBwYWlyaW5nLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVIYXNoLCByYW5kb21VVUlEIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgeyBjaG1vZCwgbWtkaXIsIHJlYWRGaWxlLCByZW5hbWUsIHJtLCB3cml0ZUZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgd2l0aEZpbGVMb2NrIH0gZnJvbSBcIkBkYngtdG9vbHMvY29yZS9maWxlLWxvY2tcIjtcbmltcG9ydCB7IG9iamVjdCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQge1xuICBHZW5pZUNvZGVCYXNlQ29uZmlnU2NoZW1hLFxuICBHZW5pZUNvZGVDb25maWdTY2hlbWEsXG4gIEdlbmllQ29kZVByb3ZpZGVyT3ZlcmxheVNjaGVtYSxcbiAgdHlwZSBHZW5pZUNvZGVCYXNlQ29uZmlnLFxuICB0eXBlIEdlbmllQ29kZUNvbmZpZyxcbiAgdHlwZSBHZW5pZUNvZGVQcm92aWRlck92ZXJsYXksXG59IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1nZW5pZS1jb2RlL2NvbmZpZ1wiO1xuaW1wb3J0IHsgZ2VuaWVDb2RlSG9tZU5hbWUgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtZ2VuaWUtY29kZS9vcHRpb25zXCI7XG5pbXBvcnQgeyBwYXJzZSwgc3RyaW5naWZ5IH0gZnJvbSBcInNtb2wtdG9tbFwiO1xuXG4vKiogUHJvdmlkZXIgaWRlbnRpZmllciB3cml0dGVuIHRvIHRoZSBiYXNlIGFuZCBpbnZvY2F0aW9uIG92ZXJsYXkgY29uZmlndXJhdGlvbnMuICovXG5leHBvcnQgY29uc3QgR0VOSUVfQ09ERV9HQVRFV0FZX1BST1ZJREVSID0gXCJkYnhfdG9vbHNfbW9kZWxfZ2F0ZXdheVwiO1xuXG4vKiogSW5wdXRzIHVzZWQgdG8gdXBkYXRlIGEgcGVyc2lzdGVudCBob21lIGFuZCBjcmVhdGUgb25lIGludm9jYXRpb24gb3ZlcmxheS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV3JpdGVHZW5pZUNvZGVDb25maWdPcHRpb25zIHtcbiAgYmVhcmVyVG9rZW46IHN0cmluZztcbiAgZ2F0ZXdheUJhc2VVcmw6IHN0cmluZztcbiAgaG9tZURpcmVjdG9yeT86IHN0cmluZztcbiAgbW9kZWw6IHN0cmluZztcbiAgcHJvZmlsZTogc3RyaW5nO1xuICBwcm9qZWN0RGlyZWN0b3J5OiBzdHJpbmc7XG59XG5cbi8qKiBTdGFibGUgcGVyc2lzdGVudCBob21lIGZvciBvbmUgZXhhY3QgRGF0YWJyaWNrcyBwcm9maWxlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW5pZUNvZGVQcm9maWxlSG9tZSB7XG4gIGNvbmZpZ1BhdGg6IHN0cmluZztcbiAgaG9tZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKiBQZXJzaXN0ZW50IHByb2ZpbGUgaG9tZSBhbmQgaW52b2NhdGlvbi1zcGVjaWZpYyBtb2RlbC1wcm92aWRlciBvdmVybGF5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW5pZUNvZGVIb21lIGV4dGVuZHMgR2VuaWVDb2RlUHJvZmlsZUhvbWUge1xuICBvdmVybGF5TmFtZTogc3RyaW5nO1xuICBvdmVybGF5UGF0aDogc3RyaW5nO1xufVxuXG4vKiogRGVyaXZlIHRoZSBzdGFibGUgaG9tZSBmb3Igb25lIGV4YWN0IERhdGFicmlja3MgcHJvZmlsZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5pZUNvZGVIb21lKFxuICBwcm9maWxlOiBzdHJpbmcsXG4gIGhvbWVEaXJlY3Rvcnk6IHN0cmluZyA9IGhvbWVkaXIoKSxcbik6IEdlbmllQ29kZVByb2ZpbGVIb21lIHtcbiAgY29uc3QgZGlnZXN0ID0gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUocHJvZmlsZSkuZGlnZXN0KFwiaGV4XCIpLnNsaWNlKDAsIDEyKTtcbiAgY29uc3QgbmFtZSA9IGdlbmllQ29kZUhvbWVOYW1lKHsgcHJvZmlsZSwgZGlnZXN0IH0pO1xuICBjb25zdCBob21lID0gam9pbihob21lRGlyZWN0b3J5LCBcIi5kYngtdG9vbHNcIiwgXCJnZW5pZVwiLCBcInByb2ZpbGVzXCIsIG5hbWUpO1xuICByZXR1cm4geyBuYW1lLCBob21lLCBjb25maWdQYXRoOiBqb2luKGhvbWUsIFwiY29uZmlnLnRvbWxcIikgfTtcbn1cblxuLyoqIFJlbmRlciB0aGUgcGVyc2lzdGVudCBwcm9maWxlLW1vZGVsIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuaWVDb2RlQmFzZUNvbmZpZyhcbiAgb3B0aW9uczogV3JpdGVHZW5pZUNvZGVDb25maWdPcHRpb25zLFxuICBleGlzdGluZ1Byb2plY3RzOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPSB7fSxcbik6IEdlbmllQ29kZUJhc2VDb25maWcge1xuICBjb25zdCBwcm9qZWN0cyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhleGlzdGluZ1Byb2plY3RzKS5maWx0ZXIoXG4gICAgICAoWywgdmFsdWVdKSA9PiBvYmplY3QuaXNSZWNvcmQodmFsdWUpICYmIHZhbHVlLnRydXN0X2xldmVsID09PSBcInRydXN0ZWRcIixcbiAgICApLFxuICApO1xuICByZXR1cm4gR2VuaWVDb2RlQmFzZUNvbmZpZ1NjaGVtYS5wYXJzZSh7XG4gICAgZGF0YWJyaWNrc19wcm9maWxlOiBvcHRpb25zLnByb2ZpbGUsXG4gICAgcHJvamVjdHM6IHtcbiAgICAgIC4uLnByb2plY3RzLFxuICAgICAgW3Jlc29sdmUob3B0aW9ucy5wcm9qZWN0RGlyZWN0b3J5KV06IHtcbiAgICAgICAgdHJ1c3RfbGV2ZWw6IFwidHJ1c3RlZFwiLFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqIFJlbmRlciB0aGUgaW52b2NhdGlvbi1zcGVjaWZpYyBndWFyZGVkIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuaWVDb2RlUHJvdmlkZXJPdmVybGF5KFxuICBvcHRpb25zOiBXcml0ZUdlbmllQ29kZUNvbmZpZ09wdGlvbnMsXG4pOiBHZW5pZUNvZGVQcm92aWRlck92ZXJsYXkge1xuICByZXR1cm4gR2VuaWVDb2RlUHJvdmlkZXJPdmVybGF5U2NoZW1hLnBhcnNlKHtcbiAgICBtb2RlbF9wcm92aWRlcjogR0VOSUVfQ09ERV9HQVRFV0FZX1BST1ZJREVSLFxuICAgIG1vZGVsOiBvcHRpb25zLm1vZGVsLFxuICAgIG1vZGVsX3Byb3ZpZGVyczoge1xuICAgICAgW0dFTklFX0NPREVfR0FURVdBWV9QUk9WSURFUl06IHtcbiAgICAgICAgbmFtZTogXCJkYngtdG9vbHMgbW9kZWwgZ2F0ZXdheVwiLFxuICAgICAgICBiYXNlX3VybDogb3B0aW9ucy5nYXRld2F5QmFzZVVybCxcbiAgICAgICAgd2lyZV9hcGk6IFwicmVzcG9uc2VzXCIsXG4gICAgICAgIHJlcXVpcmVzX29wZW5haV9hdXRoOiBmYWxzZSxcbiAgICAgICAgc3VwcG9ydHNfd2Vic29ja2V0czogZmFsc2UsXG4gICAgICAgIGh0dHBfaGVhZGVyczoge1xuICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtvcHRpb25zLmJlYXJlclRva2VufWAsXG4gICAgICAgICAgT3JpZ2luYXRvcjogXCJjb2RleFwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHR1aToge1xuICAgICAgbW9kZWxfYXZhaWxhYmlsaXR5X251eDoge1xuICAgICAgICBbb3B0aW9ucy5tb2RlbF06IDEsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xufVxuXG4vKiogUmVuZGVyIHRoZSBtZXJnZWQgY29uZmlndXJhdGlvbiB1c2VkIGJ5IHZhbGlkYXRpb24gYW5kIHRlc3RzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmllQ29kZUNvbmZpZyhvcHRpb25zOiBXcml0ZUdlbmllQ29kZUNvbmZpZ09wdGlvbnMpOiBHZW5pZUNvZGVDb25maWcge1xuICByZXR1cm4gR2VuaWVDb2RlQ29uZmlnU2NoZW1hLnBhcnNlKHtcbiAgICAuLi5nZW5pZUNvZGVCYXNlQ29uZmlnKG9wdGlvbnMpLFxuICAgIC4uLmdlbmllQ29kZVByb3ZpZGVyT3ZlcmxheShvcHRpb25zKSxcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4aXN0aW5nUHJvamVjdHMocGF0aDogc3RyaW5nKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICB0cnkge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyc2UoYXdhaXQgcmVhZEZpbGUocGF0aCwgXCJ1dGY4XCIpKTtcbiAgICByZXR1cm4gb2JqZWN0LmlzUmVjb3JkKHZhbHVlLnByb2plY3RzKSA/IHZhbHVlLnByb2plY3RzIDoge307XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgXCJjb2RlXCIgaW4gZXJyb3IgJiYgZXJyb3IuY29kZSA9PT0gXCJFTk9FTlRcIikgcmV0dXJuIHt9O1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlUHJpdmF0ZVRvbWwocGF0aDogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBzdGFnZWQgPSBqb2luKGRpcm5hbWUocGF0aCksIGAuJHtyYW5kb21VVUlEKCl9LnRvbWxgKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB3cml0ZUZpbGUoc3RhZ2VkLCBzdHJpbmdpZnkodmFsdWUpLCB7IG1vZGU6IDBvNjAwIH0pO1xuICAgIGF3YWl0IGNobW9kKHN0YWdlZCwgMG82MDApO1xuICAgIGF3YWl0IHJlbmFtZShzdGFnZWQsIHBhdGgpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHJtKHN0YWdlZCwgeyBmb3JjZTogdHJ1ZSB9KTtcbiAgfVxufVxuXG4vKiogVXBkYXRlIHRoZSBwZXJzaXN0ZW50IGJhc2UgY29uZmlnIGFuZCB3cml0ZSBvbmUgcHJpdmF0ZSBpbnZvY2F0aW9uIG92ZXJsYXkuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVHZW5pZUNvZGVDb25maWcoXG4gIG9wdGlvbnM6IFdyaXRlR2VuaWVDb2RlQ29uZmlnT3B0aW9ucyxcbik6IFByb21pc2U8R2VuaWVDb2RlSG9tZT4ge1xuICBjb25zdCBiYXNlID0gZ2VuaWVDb2RlSG9tZShvcHRpb25zLnByb2ZpbGUsIG9wdGlvbnMuaG9tZURpcmVjdG9yeSk7XG4gIGNvbnN0IG92ZXJsYXlOYW1lID0gYGRieC0ke3JhbmRvbVVVSUQoKS5yZXBsYWNlQWxsKFwiLVwiLCBcIlwiKX1gO1xuICBjb25zdCBkZXN0aW5hdGlvbiA9IHtcbiAgICAuLi5iYXNlLFxuICAgIG92ZXJsYXlOYW1lLFxuICAgIG92ZXJsYXlQYXRoOiBqb2luKGJhc2UuaG9tZSwgYCR7b3ZlcmxheU5hbWV9LmNvbmZpZy50b21sYCksXG4gIH07XG4gIGF3YWl0IG1rZGlyKGRlc3RpbmF0aW9uLmhvbWUsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBhd2FpdCB3aXRoRmlsZUxvY2soW1wiZ2VuaWUtY29kZS1jb25maWdcIiwgZGVzdGluYXRpb24uY29uZmlnUGF0aF0sIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwcm9qZWN0cyA9IGF3YWl0IGV4aXN0aW5nUHJvamVjdHMoZGVzdGluYXRpb24uY29uZmlnUGF0aCk7XG4gICAgYXdhaXQgd3JpdGVQcml2YXRlVG9tbChkZXN0aW5hdGlvbi5jb25maWdQYXRoLCBnZW5pZUNvZGVCYXNlQ29uZmlnKG9wdGlvbnMsIHByb2plY3RzKSk7XG4gIH0pO1xuICBhd2FpdCB3cml0ZVByaXZhdGVUb21sKGRlc3RpbmF0aW9uLm92ZXJsYXlQYXRoLCBnZW5pZUNvZGVQcm92aWRlck92ZXJsYXkob3B0aW9ucykpO1xuICByZXR1cm4gZGVzdGluYXRpb247XG59XG4iXX0=
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmllLWNvZGUvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFDTCx5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLDhCQUE4QixHQUkvQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTdDLHFGQUFxRjtBQUNyRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyx5QkFBeUIsQ0FBQztBQXlCckUsK0RBQStEO0FBQy9ELE1BQU0sVUFBVSxhQUFhLENBQzNCLE9BQWUsRUFDZixnQkFBd0IsT0FBTyxFQUFFO0lBRWpDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0UsTUFBTSxJ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QUMzRSxNQUFNLFFBQVEsR0FBRyxNQUFNLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRSxNQUFNLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNuRixPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZSBvbmUgcGVyc2lzdGVudCBHZW5pZSBDb2RlIGhvbWUgcGVyIGV4YWN0IHByb2ZpbGUtbW9kZWwgcGFpcmluZy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlSGFzaCwgcmFuZG9tVVVJRCB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuaW1wb3J0IHsgY2htb2QsIG1rZGlyLCByZWFkRmlsZSwgcmVuYW1lLCBybSwgd3JpdGVGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHdpdGhGaWxlTG9jayB9IGZyb20gXCJAZGJ4LXRvb2xzL2NvcmVcIjtcbmltcG9ydCB7IGlzUmVjb3JkIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7XG4gIEdlbmllQ29kZUJhc2VDb25maWdTY2hlbWEsXG4gIEdlbmllQ29kZUNvbmZpZ1NjaGVtYSxcbiAgR2VuaWVDb2RlUHJvdmlkZXJPdmVybGF5U2NoZW1hLFxuICB0eXBlIEdlbmllQ29kZUJhc2VDb25maWcsXG4gIHR5cGUgR2VuaWVDb2RlQ29uZmlnLFxuICB0eXBlIEdlbmllQ29kZVByb3ZpZGVyT3ZlcmxheSxcbn0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmllLWNvZGVcIjtcbmltcG9ydCB7IGdlbmllQ29kZUhvbWVOYW1lIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmllLWNvZGVcIjtcbmltcG9ydCB7IHBhcnNlLCBzdHJpbmdpZnkgfSBmcm9tIFwic21vbC10b21sXCI7XG5cbi8qKiBQcm92aWRlciBpZGVudGlmaWVyIHdyaXR0ZW4gdG8gdGhlIGJhc2UgYW5kIGludm9jYXRpb24gb3ZlcmxheSBjb25maWd1cmF0aW9ucy4gKi9cbmV4cG9ydCBjb25zdCBHRU5JRV9DT0RFX0dBVEVXQVlfUFJPVklERVIgPSBcImRieF90b29sc19tb2RlbF9nYXRld2F5XCI7XG5cbi8qKiBJbnB1dHMgdXNlZCB0byB1cGRhdGUgYSBwZXJzaXN0ZW50IGhvbWUgYW5kIGNyZWF0ZSBvbmUgaW52b2NhdGlvbiBvdmVybGF5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBXcml0ZUdlbmllQ29kZUNvbmZpZ09wdGlvbnMge1xuICBiZWFyZXJUb2tlbjogc3RyaW5nO1xuICBnYXRld2F5QmFzZVVybDogc3RyaW5nO1xuICBob21lRGlyZWN0b3J5Pzogc3RyaW5nO1xuICBtb2RlbDogc3RyaW5nO1xuICBwcm9maWxlOiBzdHJpbmc7XG4gIHByb2plY3REaXJlY3Rvcnk6IHN0cmluZztcbn1cblxuLyoqIFN0YWJsZSBwZXJzaXN0ZW50IGhvbWUgZm9yIG9uZSBleGFjdCBEYXRhYnJpY2tzIHByb2ZpbGUuICovXG5leHBvcnQgaW50ZXJmYWNlIEdlbmllQ29kZVByb2ZpbGVIb21lIHtcbiAgY29uZmlnUGF0aDogc3RyaW5nO1xuICBob21lOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuLyoqIFBlcnNpc3RlbnQgcHJvZmlsZSBob21lIGFuZCBpbnZvY2F0aW9uLXNwZWNpZmljIG1vZGVsLXByb3ZpZGVyIG92ZXJsYXkuICovXG5leHBvcnQgaW50ZXJmYWNlIEdlbmllQ29kZUhvbWUgZXh0ZW5kcyBHZW5pZUNvZGVQcm9maWxlSG9tZSB7XG4gIG92ZXJsYXlOYW1lOiBzdHJpbmc7XG4gIG92ZXJsYXlQYXRoOiBzdHJpbmc7XG59XG5cbi8qKiBEZXJpdmUgdGhlIHN0YWJsZSBob21lIGZvciBvbmUgZXhhY3QgRGF0YWJyaWNrcyBwcm9maWxlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmllQ29kZUhvbWUoXG4gIHByb2ZpbGU6IHN0cmluZyxcbiAgaG9tZURpcmVjdG9yeTogc3RyaW5nID0gaG9tZWRpcigpLFxuKTogR2VuaWVDb2RlUHJvZmlsZUhvbWUge1xuICBjb25zdCBkaWdlc3QgPSBjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShwcm9maWxlKS5kaWdlc3QoXCJoZXhcIikuc2xpY2UoMCwgMTIpO1xuICBjb25zdCBuYW1lID0gZ2VuaWVDb2RlSG9tZU5hbWUoeyBwcm9maWxlLCBkaWdlc3QgfSk7XG4gIGNvbnN0IGhvbWUgPSBqb2luKGhvbWVEaXJlY3RvcnksIFwiLmRieC10b29sc1wiLCBcImdlbmllXCIsIFwicHJvZmlsZXNcIiwgbmFtZSk7XG4gIHJldHVybiB7IG5hbWUsIGhvbWUsIGNvbmZpZ1BhdGg6IGpvaW4oaG9tZSwgXCJjb25maWcudG9tbFwiKSB9O1xufVxuXG4vKiogUmVuZGVyIHRoZSBwZXJzaXN0ZW50IHByb2ZpbGUtbW9kZWwgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5pZUNvZGVCYXNlQ29uZmlnKFxuICBvcHRpb25zOiBXcml0ZUdlbmllQ29kZUNvbmZpZ09wdGlvbnMsXG4gIGV4aXN0aW5nUHJvamVjdHM6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IHt9LFxuKTogR2VuaWVDb2RlQmFzZUNvbmZpZyB7XG4gIGNvbnN0IHByb2plY3RzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKGV4aXN0aW5nUHJvamVjdHMpLmZpbHRlcihcbiAgICAgIChbLCB2YWx1ZV0pID0+IGlzUmVjb3JkKHZhbHVlKSAmJiB2YWx1ZS50cnVzdF9sZXZlbCA9PT0gXCJ0cnVzdGVkXCIsXG4gICAgKSxcbiAgKTtcbiAgcmV0dXJuIEdlbmllQ29kZUJhc2VDb25maWdTY2hlbWEucGFyc2Uoe1xuICAgIGRhdGFicmlja3NfcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlLFxuICAgIHByb2plY3RzOiB7XG4gICAgICAuLi5wcm9qZWN0cyxcbiAgICAgIFtyZXNvbHZlKG9wdGlvbnMucHJvamVjdERpcmVjdG9yeSldOiB7XG4gICAgICAgIHRydXN0X2xldmVsOiBcInRydXN0ZWRcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKiBSZW5kZXIgdGhlIGludm9jYXRpb24tc3BlY2lmaWMgZ3VhcmRlZCBwcm92aWRlciBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmllQ29kZVByb3ZpZGVyT3ZlcmxheShcbiAgb3B0aW9uczogV3JpdGVHZW5pZUNvZGVDb25maWdPcHRpb25zLFxuKTogR2VuaWVDb2RlUHJvdmlkZXJPdmVybGF5IHtcbiAgcmV0dXJuIEdlbmllQ29kZVByb3ZpZGVyT3ZlcmxheVNjaGVtYS5wYXJzZSh7XG4gICAgbW9kZWxfcHJvdmlkZXI6IEdFTklFX0NPREVfR0FURVdBWV9QUk9WSURFUixcbiAgICBtb2RlbDogb3B0aW9ucy5tb2RlbCxcbiAgICBtb2RlbF9wcm92aWRlcnM6IHtcbiAgICAgIFtHRU5JRV9DT0RFX0dBVEVXQVlfUFJPVklERVJdOiB7XG4gICAgICAgIG5hbWU6IFwiZGJ4LXRvb2xzIG1vZGVsIGdhdGV3YXlcIixcbiAgICAgICAgYmFzZV91cmw6IG9wdGlvbnMuZ2F0ZXdheUJhc2VVcmwsXG4gICAgICAgIHdpcmVfYXBpOiBcInJlc3BvbnNlc1wiLFxuICAgICAgICByZXF1aXJlc19vcGVuYWlfYXV0aDogZmFsc2UsXG4gICAgICAgIHN1cHBvcnRzX3dlYnNvY2tldHM6IGZhbHNlLFxuICAgICAgICBodHRwX2hlYWRlcnM6IHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7b3B0aW9ucy5iZWFyZXJUb2tlbn1gLFxuICAgICAgICAgIE9yaWdpbmF0b3I6IFwiY29kZXhcIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB0dWk6IHtcbiAgICAgIG1vZGVsX2F2YWlsYWJpbGl0eV9udXg6IHtcbiAgICAgICAgW29wdGlvbnMubW9kZWxdOiAxLFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqIFJlbmRlciB0aGUgbWVyZ2VkIGNvbmZpZ3VyYXRpb24gdXNlZCBieSB2YWxpZGF0aW9uIGFuZCB0ZXN0cy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5pZUNvZGVDb25maWcob3B0aW9uczogV3JpdGVHZW5pZUNvZGVDb25maWdPcHRpb25zKTogR2VuaWVDb2RlQ29uZmlnIHtcbiAgcmV0dXJuIEdlbmllQ29kZUNvbmZpZ1NjaGVtYS5wYXJzZSh7XG4gICAgLi4uZ2VuaWVDb2RlQmFzZUNvbmZpZyhvcHRpb25zKSxcbiAgICAuLi5nZW5pZUNvZGVQcm92aWRlck92ZXJsYXkob3B0aW9ucyksXG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleGlzdGluZ1Byb2plY3RzKHBhdGg6IHN0cmluZyk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcnNlKGF3YWl0IHJlYWRGaWxlKHBhdGgsIFwidXRmOFwiKSk7XG4gICAgcmV0dXJuIGlzUmVjb3JkKHZhbHVlLnByb2plY3RzKSA/IHZhbHVlLnByb2plY3RzIDoge307XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgXCJjb2RlXCIgaW4gZXJyb3IgJiYgZXJyb3IuY29kZSA9PT0gXCJFTk9FTlRcIikgcmV0dXJuIHt9O1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlUHJpdmF0ZVRvbWwocGF0aDogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBzdGFnZWQgPSBqb2luKGRpcm5hbWUocGF0aCksIGAuJHtyYW5kb21VVUlEKCl9LnRvbWxgKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB3cml0ZUZpbGUoc3RhZ2VkLCBzdHJpbmdpZnkodmFsdWUpLCB7IG1vZGU6IDBvNjAwIH0pO1xuICAgIGF3YWl0IGNobW9kKHN0YWdlZCwgMG82MDApO1xuICAgIGF3YWl0IHJlbmFtZShzdGFnZWQsIHBhdGgpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHJtKHN0YWdlZCwgeyBmb3JjZTogdHJ1ZSB9KTtcbiAgfVxufVxuXG4vKiogVXBkYXRlIHRoZSBwZXJzaXN0ZW50IGJhc2UgY29uZmlnIGFuZCB3cml0ZSBvbmUgcHJpdmF0ZSBpbnZvY2F0aW9uIG92ZXJsYXkuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVHZW5pZUNvZGVDb25maWcoXG4gIG9wdGlvbnM6IFdyaXRlR2VuaWVDb2RlQ29uZmlnT3B0aW9ucyxcbik6IFByb21pc2U8R2VuaWVDb2RlSG9tZT4ge1xuICBjb25zdCBiYXNlID0gZ2VuaWVDb2RlSG9tZShvcHRpb25zLnByb2ZpbGUsIG9wdGlvbnMuaG9tZURpcmVjdG9yeSk7XG4gIGNvbnN0IG92ZXJsYXlOYW1lID0gYGRieC0ke3JhbmRvbVVVSUQoKS5yZXBsYWNlQWxsKFwiLVwiLCBcIlwiKX1gO1xuICBjb25zdCBkZXN0aW5hdGlvbiA9IHtcbiAgICAuLi5iYXNlLFxuICAgIG92ZXJsYXlOYW1lLFxuICAgIG92ZXJsYXlQYXRoOiBqb2luKGJhc2UuaG9tZSwgYCR7b3ZlcmxheU5hbWV9LmNvbmZpZy50b21sYCksXG4gIH07XG4gIGF3YWl0IG1rZGlyKGRlc3RpbmF0aW9uLmhvbWUsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBhd2FpdCB3aXRoRmlsZUxvY2soW1wiZ2VuaWUtY29kZS1jb25maWdcIiwgZGVzdGluYXRpb24uY29uZmlnUGF0aF0sIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwcm9qZWN0cyA9IGF3YWl0IGV4aXN0aW5nUHJvamVjdHMoZGVzdGluYXRpb24uY29uZmlnUGF0aCk7XG4gICAgYXdhaXQgd3JpdGVQcml2YXRlVG9tbChkZXN0aW5hdGlvbi5jb25maWdQYXRoLCBnZW5pZUNvZGVCYXNlQ29uZmlnKG9wdGlvbnMsIHByb2plY3RzKSk7XG4gIH0pO1xuICBhd2FpdCB3cml0ZVByaXZhdGVUb21sKGRlc3RpbmF0aW9uLm92ZXJsYXlQYXRoLCBnZW5pZUNvZGVQcm92aWRlck92ZXJsYXkob3B0aW9ucykpO1xuICByZXR1cm4gZGVzdGluYXRpb247XG59XG4iXX0=
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- import { bin } from "@dbx-tools/core";
6
+ import { type BinContext } from "@dbx-tools/core";
7
7
  interface GenieCodeAsset {
8
8
  target: string;
9
9
  sha256: string;
@@ -17,5 +17,5 @@ export interface InstallGenieCodeOptions {
17
17
  /** Resolve the pinned release asset for one supported host. */
18
18
  export declare function genieCodeAsset(platform?: NodeJS.Platform, architecture?: NodeJS.Architecture): GenieCodeAsset;
19
19
  /** Install and return the shared Genie Code package entrypoint. */
20
- export declare function installGenieCode(options?: InstallGenieCodeOptions): Promise<bin.BinContext>;
20
+ export declare function installGenieCode(options?: InstallGenieCodeOptions): Promise<BinContext>;
21
21
  export {};
@@ -5,8 +5,8 @@
5
5
  */
6
6
  import { homedir } from "node:os";
7
7
  import { dirname, join } from "node:path";
8
- import { bin } from "@dbx-tools/core";
9
- import { GENIE_CODE_VERSION } from "@dbx-tools/shared-genie-code/options";
8
+ import { ensure } from "@dbx-tools/core";
9
+ import { GENIE_CODE_VERSION } from "@dbx-tools/shared-genie-code";
10
10
  const GENIE_CODE_ASSETS = {
11
11
  "darwin:arm64": {
12
12
  target: "aarch64-apple-darwin",
@@ -56,7 +56,7 @@ export async function installGenieCode(options = {}) {
56
56
  };
57
57
  const url = `https://github.com/databricks/genie-code-cli/releases/download/v${GENIE_CODE_VERSION}/` +
58
58
  `genie-package-${asset.target}.tar.gz`;
59
- return bin.ensure("genie", { url, sha256: asset.sha256 }, {
59
+ return ensure("genie", { url, sha256: asset.sha256 }, {
60
60
  destination,
61
61
  minVersion: "0.1.0",
62
62
  versionParser: ({ stdout }) => stdout.trim() === `genie ${GENIE_CODE_VERSION}` ? "0.1.0" : undefined,
@@ -66,4 +66,4 @@ export async function installGenieCode(options = {}) {
66
66
  },
67
67
  });
68
68
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nZW5pZS1jb2RlL2luc3RhbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBTzFFLE1BQU0saUJBQWlCLEdBQUc7SUFDeEIsY0FBYyxFQUFFO1FBQ2QsTUFBTSxFQUFFLHNCQUFzQjtRQUM5QixNQUFNLEVBQUUsa0VBQWtFO0tBQzNFO0lBQ0QsWUFBWSxFQUFFO1FBQ1osTUFBTSxFQUFFLHFCQUFxQjtRQUM3QixNQUFNLEVBQUUsa0VBQWtFO0tBQzNFO0lBQ0QsYUFBYSxFQUFFO1FBQ2IsTUFBTSxFQUFFLDRCQUE0QjtRQUNwQyxNQUFNLEVBQUUsa0VBQWtFO0tBQzNFO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsTUFBTSxFQUFFLDJCQUEyQjtRQUNuQyxNQUFNLEVBQUUsa0VBQWtFO0tBQzNFO0lBQ0QsYUFBYSxFQUFFO1FBQ2IsTUFBTSxFQUFFLHlCQUF5QjtRQUNqQyxNQUFNLEVBQUUsa0VBQWtFO0tBQzNFO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsTUFBTSxFQUFFLHdCQUF3QjtRQUNoQyxNQUFNLEVBQUUsa0VBQWtFO0tBQzNFO0NBQ2dELENBQUM7QUFTcEQsK0RBQStEO0FBQy9ELE1BQU0sVUFBVSxjQUFjLENBQzVCLFdBQTRCLE9BQU8sQ0FBQyxRQUFRLEVBQzVDLGVBQW9DLE9BQU8sQ0FBQyxJQUFJO0lBRWhELE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsUUFBUSxJQUFJLFlBQVksRUFBb0MsQ0FBQyxDQUFDO0lBQ2pHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQ2IsY0FBYyxrQkFBa0IscUJBQXFCLFFBQVEsSUFBSSxZQUFZLEVBQUUsQ0FDaEYsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxtRUFBbUU7QUFDbkUsTUFBTSxDQUFDLEtBQUssVUFBVSxnQkFBZ0IsQ0FDcEMsVUFBbUMsRUFBRTtJQUVyQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDdEQsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RSxNQUFNLFVBQVUsR0FBRyxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNoRSxNQUFNLE1BQU0sR0FBRyxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUM7SUFDMUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMzQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQ2YsT0FBTyxDQUFDLGFBQWEsSUFBSSxPQUFPLEVBQUUsRUFDbEMsWUFBWSxFQUNaLE9BQU8sRUFDUCxVQUFVLEVBQ1YsR0FBRyxrQkFBa0IsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQ3hDLENBQUM7SUFDRixNQUFNLFdBQVcsR0FBbUI7UUFDbEMsSUFBSTtRQUNKLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2QyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7S0FDN0IsQ0FBQztJQUNGLE1BQU0sR0FBRyxHQUNQLG1FQUFtRSxrQkFBa0IsR0FBRztRQUN4RixpQkFBaUIsS0FBSyxDQUFDLE1BQU0sU0FBUyxDQUFDO0lBQ3pDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FDZixPQUFPLEVBQ1AsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFDN0I7UUFDRSxXQUFXO1FBQ1gsVUFBVSxFQUFFLE9BQU87UUFDbkIsYUFBYSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQzVCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxTQUFTLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUztRQUN2RSxPQUFPLEVBQUU7WUFDUCxVQUFVO1lBQ1YsYUFBYSxFQUFFLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLENBQUM7U0FDNUY7S0FDRixDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBJbnN0YWxsIHRoZSBwaW5uZWQgbXVsdGktZmlsZSBHZW5pZSBDb2RlIHJ1bnRpbWUgdW5kZXIgZGJ4LXRvb2xzIG93bmVyc2hpcC5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgYmluIH0gZnJvbSBcIkBkYngtdG9vbHMvY29yZVwiO1xuaW1wb3J0IHsgR0VOSUVfQ09ERV9WRVJTSU9OIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmllLWNvZGUvb3B0aW9uc1wiO1xuXG5pbnRlcmZhY2UgR2VuaWVDb2RlQXNzZXQge1xuICB0YXJnZXQ6IHN0cmluZztcbiAgc2hhMjU2OiBzdHJpbmc7XG59XG5cbmNvbnN0IEdFTklFX0NPREVfQVNTRVRTID0ge1xuICBcImRhcndpbjphcm02NFwiOiB7XG4gICAgdGFyZ2V0OiBcImFhcmNoNjQtYXBwbGUtZGFyd2luXCIsXG4gICAgc2hhMjU2OiBcIjc4Y2M3ZTM1OGM4YmZjNjJkNmRhMjYzNjRjNzYyYmUzN2ZjMmUyYTEwYjdlODNmMjFhM2IxNjZmOTAxZjUyOGVcIixcbiAgfSxcbiAgXCJkYXJ3aW46eDY0XCI6IHtcbiAgICB0YXJnZXQ6IFwieDg2XzY0LWFwcGxlLWRhcndpblwiLFxuICAgIHNoYTI1NjogXCIyMDIxYjhiMjdlYzMxMTZmYzAxNWMxNjc2YjVmNjVjM2NlMTFkNTdmMWRmZjljMzAyYWFlMTM1ZjZlNGYxYTVmXCIsXG4gIH0sXG4gIFwibGludXg6YXJtNjRcIjoge1xuICAgIHRhcmdldDogXCJhYXJjaDY0LXVua25vd24tbGludXgtbXVzbFwiLFxuICAgIHNoYTI1NjogXCJkZmQyNzhjMjY3ZGRlNDNlMWZlN2U3ZDdhMGRhOGQ3YTFhMTQ4Y2RmM2QyMDA0YmQzMGIzNTE2NDVjNGZlMGE3XCIsXG4gIH0sXG4gIFwibGludXg6eDY0XCI6IHtcbiAgICB0YXJnZXQ6IFwieDg2XzY0LXVua25vd24tbGludXgtbXVzbFwiLFxuICAgIHNoYTI1NjogXCJlM2Q5YTU1ZjZkNTFiZGM3NDVlZGE0NzQ0ZmI4MjdiYTFkZjZkYWNmMTA2OTUxOGY3MzQ3YTU5ZjQ4Yzg5NDMwXCIsXG4gIH0sXG4gIFwid2luMzI6YXJtNjRcIjoge1xuICAgIHRhcmdldDogXCJhYXJjaDY0LXBjLXdpbmRvd3MtbXN2Y1wiLFxuICAgIHNoYTI1NjogXCJhZWFjOTViZDAxNDhmOTQyMTk0MjcwYmE5MzIyNDVjZWMzMmU5OGRhNjcyOTJiYTdiMDA4YmNhYjY3NWJhN2Y4XCIsXG4gIH0sXG4gIFwid2luMzI6eDY0XCI6IHtcbiAgICB0YXJnZXQ6IFwieDg2XzY0LXBjLXdpbmRvd3MtbXN2Y1wiLFxuICAgIHNoYTI1NjogXCJjOWY5MmM4ZDYwMjczMjUwMjYyNTI3YmNhNTI1NDUxNTAxYzRlODM1MWU1OTkyN2ExNjg2YzMwNWJlMjlhOTIyXCIsXG4gIH0sXG59IGFzIGNvbnN0IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBHZW5pZUNvZGVBc3NldD47XG5cbi8qKiBIb3N0IG92ZXJyaWRlcyB1c2VkIGJ5IGluc3RhbGxhdGlvbiB0ZXN0cyBhbmQgZW1iZWRkZWQgY2FsbGVycy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFsbEdlbmllQ29kZU9wdGlvbnMge1xuICBob21lRGlyZWN0b3J5Pzogc3RyaW5nO1xuICBwbGF0Zm9ybT86IE5vZGVKUy5QbGF0Zm9ybTtcbiAgYXJjaGl0ZWN0dXJlPzogTm9kZUpTLkFyY2hpdGVjdHVyZTtcbn1cblxuLyoqIFJlc29sdmUgdGhlIHBpbm5lZCByZWxlYXNlIGFzc2V0IGZvciBvbmUgc3VwcG9ydGVkIGhvc3QuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuaWVDb2RlQXNzZXQoXG4gIHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm0gPSBwcm9jZXNzLnBsYXRmb3JtLFxuICBhcmNoaXRlY3R1cmU6IE5vZGVKUy5BcmNoaXRlY3R1cmUgPSBwcm9jZXNzLmFyY2gsXG4pOiBHZW5pZUNvZGVBc3NldCB7XG4gIGNvbnN0IGFzc2V0ID0gR0VOSUVfQ09ERV9BU1NFVFNbYCR7cGxhdGZvcm19OiR7YXJjaGl0ZWN0dXJlfWAgYXMga2V5b2YgdHlwZW9mIEdFTklFX0NPREVfQVNTRVRTXTtcbiAgaWYgKCFhc3NldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBHZW5pZSBDb2RlICR7R0VOSUVfQ09ERV9WRVJTSU9OfSBkb2VzIG5vdCBzdXBwb3J0ICR7cGxhdGZvcm19LyR7YXJjaGl0ZWN0dXJlfWAsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gYXNzZXQ7XG59XG5cbi8qKiBJbnN0YWxsIGFuZCByZXR1cm4gdGhlIHNoYXJlZCBHZW5pZSBDb2RlIHBhY2thZ2UgZW50cnlwb2ludC4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnN0YWxsR2VuaWVDb2RlKFxuICBvcHRpb25zOiBJbnN0YWxsR2VuaWVDb2RlT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxiaW4uQmluQ29udGV4dD4ge1xuICBjb25zdCBwbGF0Zm9ybSA9IG9wdGlvbnMucGxhdGZvcm0gPz8gcHJvY2Vzcy5wbGF0Zm9ybTtcbiAgY29uc3QgYXNzZXQgPSBnZW5pZUNvZGVBc3NldChwbGF0Zm9ybSwgb3B0aW9ucy5hcmNoaXRlY3R1cmUgPz8gcHJvY2Vzcy5hcmNoKTtcbiAgY29uc3QgZXhlY3V0YWJsZSA9IHBsYXRmb3JtID09PSBcIndpbjMyXCIgPyBcImdlbmllLmV4ZVwiIDogXCJnZW5pZVwiO1xuICBjb25zdCBoZWxwZXIgPSBwbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiID8gXCJnZW5pZS1jb2RlLW1vZGUtaG9zdC5leGVcIiA6IFwiZ2VuaWUtY29kZS1tb2RlLWhvc3RcIjtcbiAgY29uc3QgZW50cnlwb2ludCA9IGpvaW4oXCJiaW5cIiwgZXhlY3V0YWJsZSk7XG4gIGNvbnN0IHJvb3QgPSBqb2luKFxuICAgIG9wdGlvbnMuaG9tZURpcmVjdG9yeSA/PyBob21lZGlyKCksXG4gICAgXCIuZGJ4LXRvb2xzXCIsXG4gICAgXCJnZW5pZVwiLFxuICAgIFwicmVsZWFzZXNcIixcbiAgICBgJHtHRU5JRV9DT0RFX1ZFUlNJT059LSR7YXNzZXQudGFyZ2V0fWAsXG4gICk7XG4gIGNvbnN0IGRlc3RpbmF0aW9uOiBiaW4uQmluQ29udGV4dCA9IHtcbiAgICByb290LFxuICAgIGJpbkRpcjogam9pbihyb290LCBkaXJuYW1lKGVudHJ5cG9pbnQpKSxcbiAgICBwYXRoOiBqb2luKHJvb3QsIGVudHJ5cG9pbnQpLFxuICB9O1xuICBjb25zdCB1cmwgPVxuICAgIGBodHRwczovL2dpdGh1Yi5jb20vZGF0YWJyaWNrcy9nZW5pZS1jb2RlLWNsaS9yZWxlYXNlcy9kb3dubG9hZC92JHtHRU5JRV9DT0RFX1ZFUlNJT059L2AgK1xuICAgIGBnZW5pZS1wYWNrYWdlLSR7YXNzZXQudGFyZ2V0fS50YXIuZ3pgO1xuICByZXR1cm4gYmluLmVuc3VyZShcbiAgICBcImdlbmllXCIsXG4gICAgeyB1cmwsIHNoYTI1NjogYXNzZXQuc2hhMjU2IH0sXG4gICAge1xuICAgICAgZGVzdGluYXRpb24sXG4gICAgICBtaW5WZXJzaW9uOiBcIjAuMS4wXCIsXG4gICAgICB2ZXJzaW9uUGFyc2VyOiAoeyBzdGRvdXQgfSkgPT5cbiAgICAgICAgc3Rkb3V0LnRyaW0oKSA9PT0gYGdlbmllICR7R0VOSUVfQ09ERV9WRVJTSU9OfWAgPyBcIjAuMS4wXCIgOiB1bmRlZmluZWQsXG4gICAgICBwYWNrYWdlOiB7XG4gICAgICAgIGVudHJ5cG9pbnQsXG4gICAgICAgIHJlcXVpcmVkUGF0aHM6IFtcImdlbmllLXBhY2thZ2UuanNvblwiLCBqb2luKFwiYmluXCIsIGhlbHBlciksIFwiZ2VuaWUtcGF0aFwiLCBcImdlbmllLXJlc291cmNlc1wiXSxcbiAgICAgIH0sXG4gICAgfSxcbiAgKTtcbn1cbiJdfQ==
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nZW5pZS1jb2RlL2luc3RhbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFtQixNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQU9sRSxNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLGNBQWMsRUFBRTtRQUNkLE1BQU0sRUFBRSxzQkFBc0I7UUFDOUIsTUFBTSxFQUFFLGtFQUFrRTtLQUMzRTtJQUNELFlBQVksRUFBRTtRQUNaLE1BQU0sRUFBRSxxQkFBcUI7UUFDN0IsTUFBTSxFQUFFLGtFQUFrRTtLQUMzRTtJQUNELGFBQWEsRUFBRTtRQUNiLE1BQU0sRUFBRSw0QkFBNEI7UUFDcEMsTUFBTSxFQUFFLGtFQUFrRTtLQUMzRTtJQUNELFdBQVcsRUFBRTtRQUNYLE1BQU0sRUFBRSwyQkFBMkI7UUFDbkMsTUFBTSxFQUFFLGtFQUFrRTtLQUMzRTtJQUNELGFBQWEsRUFBRTtRQUNiLE1BQU0sRUFBRSx5QkFBeUI7UUFDakMsTUFBTSxFQUFFLGtFQUFrRTtLQUMzRTtJQUNELFdBQVcsRUFBRTtRQUNYLE1BQU0sRUFBRSx3QkFBd0I7UUFDaEMsTUFBTSxFQUFFLGtFQUFrRTtLQUMzRTtDQUNnRCxDQUFDO0FBU3BELCtEQUErRDtBQUMvRCxNQUFNLFVBQVUsY0FBYyxDQUM1QixXQUE0QixPQUFPLENBQUMsUUFBUSxFQUM1QyxlQUFvQyxPQUFPLENBQUMsSUFBSTtJQUVoRCxNQUFNLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLFFBQVEsSUFBSSxZQUFZLEVBQW9DLENBQUMsQ0FBQztJQUNqRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksS0FBSyxDQUNiLGNBQWMsa0JBQWtCLHFCQUFxQixRQUFRLElBQUksWUFBWSxFQUFFLENBQ2hGLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsbUVBQW1FO0FBQ25FLE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsVUFBbUMsRUFBRTtJQUMxRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDdEQsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RSxNQUFNLFVBQVUsR0FBRyxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNoRSxNQUFNLE1BQU0sR0FBRyxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUM7SUFDMUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMzQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQ2YsT0FBTyxDQUFDLGFBQWEsSUFBSSxPQUFPLEVBQUUsRUFDbEMsWUFBWSxFQUNaLE9BQU8sRUFDUCxVQUFVLEVBQ1YsR0FBRyxrQkFBa0IsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQ3hDLENBQUM7SUFDRixNQUFNLFdBQVcsR0FBZTtRQUM5QixJQUFJO1FBQ0osTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztLQUM3QixDQUFDO0lBQ0YsTUFBTSxHQUFHLEdBQ1AsbUVBQW1FLGtCQUFrQixHQUFHO1FBQ3hGLGlCQUFpQixLQUFLLENBQUMsTUFBTSxTQUFTLENBQUM7SUFDekMsT0FBTyxNQUFNLENBQ1gsT0FBTyxFQUNQLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQzdCO1FBQ0UsV0FBVztRQUNYLFVBQVUsRUFBRSxPQUFPO1FBQ25CLGFBQWEsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUM1QixNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssU0FBUyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDdkUsT0FBTyxFQUFFO1lBQ1AsVUFBVTtZQUNWLGFBQWEsRUFBRSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixDQUFDO1NBQzVGO0tBQ0YsQ0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW5zdGFsbCB0aGUgcGlubmVkIG11bHRpLWZpbGUgR2VuaWUgQ29kZSBydW50aW1lIHVuZGVyIGRieC10b29scyBvd25lcnNoaXAuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHR5cGUgQmluQ29udGV4dCwgZW5zdXJlIH0gZnJvbSBcIkBkYngtdG9vbHMvY29yZVwiO1xuaW1wb3J0IHsgR0VOSUVfQ09ERV9WRVJTSU9OIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmllLWNvZGVcIjtcblxuaW50ZXJmYWNlIEdlbmllQ29kZUFzc2V0IHtcbiAgdGFyZ2V0OiBzdHJpbmc7XG4gIHNoYTI1Njogc3RyaW5nO1xufVxuXG5jb25zdCBHRU5JRV9DT0RFX0FTU0VUUyA9IHtcbiAgXCJkYXJ3aW46YXJtNjRcIjoge1xuICAgIHRhcmdldDogXCJhYXJjaDY0LWFwcGxlLWRhcndpblwiLFxuICAgIHNoYTI1NjogXCI3OGNjN2UzNThjOGJmYzYyZDZkYTI2MzY0Yzc2MmJlMzdmYzJlMmExMGI3ZTgzZjIxYTNiMTY2ZjkwMWY1MjhlXCIsXG4gIH0sXG4gIFwiZGFyd2luOng2NFwiOiB7XG4gICAgdGFyZ2V0OiBcIng4Nl82NC1hcHBsZS1kYXJ3aW5cIixcbiAgICBzaGEyNTY6IFwiMjAyMWI4YjI3ZWMzMTE2ZmMwMTVjMTY3NmI1ZjY1YzNjZTExZDU3ZjFkZmY5YzMwMmFhZTEzNWY2ZTRmMWE1ZlwiLFxuICB9LFxuICBcImxpbnV4OmFybTY0XCI6IHtcbiAgICB0YXJnZXQ6IFwiYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2xcIixcbiAgICBzaGEyNTY6IFwiZGZkMjc4YzI2N2RkZTQzZTFmZTdlN2Q3YTBkYThkN2ExYTE0OGNkZjNkMjAwNGJkMzBiMzUxNjQ1YzRmZTBhN1wiLFxuICB9LFxuICBcImxpbnV4Ong2NFwiOiB7XG4gICAgdGFyZ2V0OiBcIng4Nl82NC11bmtub3duLWxpbnV4LW11c2xcIixcbiAgICBzaGEyNTY6IFwiZTNkOWE1NWY2ZDUxYmRjNzQ1ZWRhNDc0NGZiODI3YmExZGY2ZGFjZjEwNjk1MThmNzM0N2E1OWY0OGM4OTQzMFwiLFxuICB9LFxuICBcIndpbjMyOmFybTY0XCI6IHtcbiAgICB0YXJnZXQ6IFwiYWFyY2g2NC1wYy13aW5kb3dzLW1zdmNcIixcbiAgICBzaGEyNTY6IFwiYWVhYzk1YmQwMTQ4Zjk0MjE5NDI3MGJhOTMyMjQ1Y2VjMzJlOThkYTY3MjkyYmE3YjAwOGJjYWI2NzViYTdmOFwiLFxuICB9LFxuICBcIndpbjMyOng2NFwiOiB7XG4gICAgdGFyZ2V0OiBcIng4Nl82NC1wYy13aW5kb3dzLW1zdmNcIixcbiAgICBzaGEyNTY6IFwiYzlmOTJjOGQ2MDI3MzI1MDI2MjUyN2JjYTUyNTQ1MTUwMWM0ZTgzNTFlNTk5MjdhMTY4NmMzMDViZTI5YTkyMlwiLFxuICB9LFxufSBhcyBjb25zdCBzYXRpc2ZpZXMgUmVjb3JkPHN0cmluZywgR2VuaWVDb2RlQXNzZXQ+O1xuXG4vKiogSG9zdCBvdmVycmlkZXMgdXNlZCBieSBpbnN0YWxsYXRpb24gdGVzdHMgYW5kIGVtYmVkZGVkIGNhbGxlcnMuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbGxHZW5pZUNvZGVPcHRpb25zIHtcbiAgaG9tZURpcmVjdG9yeT86IHN0cmluZztcbiAgcGxhdGZvcm0/OiBOb2RlSlMuUGxhdGZvcm07XG4gIGFyY2hpdGVjdHVyZT86IE5vZGVKUy5BcmNoaXRlY3R1cmU7XG59XG5cbi8qKiBSZXNvbHZlIHRoZSBwaW5uZWQgcmVsZWFzZSBhc3NldCBmb3Igb25lIHN1cHBvcnRlZCBob3N0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmllQ29kZUFzc2V0KFxuICBwbGF0Zm9ybTogTm9kZUpTLlBsYXRmb3JtID0gcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgYXJjaGl0ZWN0dXJlOiBOb2RlSlMuQXJjaGl0ZWN0dXJlID0gcHJvY2Vzcy5hcmNoLFxuKTogR2VuaWVDb2RlQXNzZXQge1xuICBjb25zdCBhc3NldCA9IEdFTklFX0NPREVfQVNTRVRTW2Ake3BsYXRmb3JtfToke2FyY2hpdGVjdHVyZX1gIGFzIGtleW9mIHR5cGVvZiBHRU5JRV9DT0RFX0FTU0VUU107XG4gIGlmICghYXNzZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgR2VuaWUgQ29kZSAke0dFTklFX0NPREVfVkVSU0lPTn0gZG9lcyBub3Qgc3VwcG9ydCAke3BsYXRmb3JtfS8ke2FyY2hpdGVjdHVyZX1gLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGFzc2V0O1xufVxuXG4vKiogSW5zdGFsbCBhbmQgcmV0dXJuIHRoZSBzaGFyZWQgR2VuaWUgQ29kZSBwYWNrYWdlIGVudHJ5cG9pbnQuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5zdGFsbEdlbmllQ29kZShvcHRpb25zOiBJbnN0YWxsR2VuaWVDb2RlT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxCaW5Db250ZXh0PiB7XG4gIGNvbnN0IHBsYXRmb3JtID0gb3B0aW9ucy5wbGF0Zm9ybSA/PyBwcm9jZXNzLnBsYXRmb3JtO1xuICBjb25zdCBhc3NldCA9IGdlbmllQ29kZUFzc2V0KHBsYXRmb3JtLCBvcHRpb25zLmFyY2hpdGVjdHVyZSA/PyBwcm9jZXNzLmFyY2gpO1xuICBjb25zdCBleGVjdXRhYmxlID0gcGxhdGZvcm0gPT09IFwid2luMzJcIiA/IFwiZ2VuaWUuZXhlXCIgOiBcImdlbmllXCI7XG4gIGNvbnN0IGhlbHBlciA9IHBsYXRmb3JtID09PSBcIndpbjMyXCIgPyBcImdlbmllLWNvZGUtbW9kZS1ob3N0LmV4ZVwiIDogXCJnZW5pZS1jb2RlLW1vZGUtaG9zdFwiO1xuICBjb25zdCBlbnRyeXBvaW50ID0gam9pbihcImJpblwiLCBleGVjdXRhYmxlKTtcbiAgY29uc3Qgcm9vdCA9IGpvaW4oXG4gICAgb3B0aW9ucy5ob21lRGlyZWN0b3J5ID8/IGhvbWVkaXIoKSxcbiAgICBcIi5kYngtdG9vbHNcIixcbiAgICBcImdlbmllXCIsXG4gICAgXCJyZWxlYXNlc1wiLFxuICAgIGAke0dFTklFX0NPREVfVkVSU0lPTn0tJHthc3NldC50YXJnZXR9YCxcbiAgKTtcbiAgY29uc3QgZGVzdGluYXRpb246IEJpbkNvbnRleHQgPSB7XG4gICAgcm9vdCxcbiAgICBiaW5EaXI6IGpvaW4ocm9vdCwgZGlybmFtZShlbnRyeXBvaW50KSksXG4gICAgcGF0aDogam9pbihyb290LCBlbnRyeXBvaW50KSxcbiAgfTtcbiAgY29uc3QgdXJsID1cbiAgICBgaHR0cHM6Ly9naXRodWIuY29tL2RhdGFicmlja3MvZ2VuaWUtY29kZS1jbGkvcmVsZWFzZXMvZG93bmxvYWQvdiR7R0VOSUVfQ09ERV9WRVJTSU9OfS9gICtcbiAgICBgZ2VuaWUtcGFja2FnZS0ke2Fzc2V0LnRhcmdldH0udGFyLmd6YDtcbiAgcmV0dXJuIGVuc3VyZShcbiAgICBcImdlbmllXCIsXG4gICAgeyB1cmwsIHNoYTI1NjogYXNzZXQuc2hhMjU2IH0sXG4gICAge1xuICAgICAgZGVzdGluYXRpb24sXG4gICAgICBtaW5WZXJzaW9uOiBcIjAuMS4wXCIsXG4gICAgICB2ZXJzaW9uUGFyc2VyOiAoeyBzdGRvdXQgfSkgPT5cbiAgICAgICAgc3Rkb3V0LnRyaW0oKSA9PT0gYGdlbmllICR7R0VOSUVfQ09ERV9WRVJTSU9OfWAgPyBcIjAuMS4wXCIgOiB1bmRlZmluZWQsXG4gICAgICBwYWNrYWdlOiB7XG4gICAgICAgIGVudHJ5cG9pbnQsXG4gICAgICAgIHJlcXVpcmVkUGF0aHM6IFtcImdlbmllLXBhY2thZ2UuanNvblwiLCBqb2luKFwiYmluXCIsIGhlbHBlciksIFwiZ2VuaWUtcGF0aFwiLCBcImdlbmllLXJlc291cmNlc1wiXSxcbiAgICAgIH0sXG4gICAgfSxcbiAgKTtcbn1cbiJdfQ==
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- /** Private environment field carrying serialized runner options. */
7
- declare const RUNNER_OPTIONS_ENV = "DBX_TOOLS_GENIE_RUNNER_OPTIONS";
6
+ /** Logical configuration key carrying serialized runner options. */
7
+ export declare const RUNNER_OPTIONS_KEY = "GENIE_RUNNER_OPTIONS";
8
8
  /** Parse the serialized runner boundary from its private environment field. */
9
9
  export declare function genieCodeRunnerOptions(environment?: NodeJS.ProcessEnv): {
10
10
  executable: string;
@@ -18,4 +18,3 @@ export declare function genieCodeRunnerOptions(environment?: NodeJS.ProcessEnv):
18
18
  export declare function waitForGenieCodeGateway(healthUrl: string, bearerToken: string, timeoutMs: number): Promise<void>;
19
19
  /** Run Genie Code with inherited terminal streams after its gateway is ready. */
20
20
  export declare function runGenieCodeChild(environment?: NodeJS.ProcessEnv): Promise<void>;
21
- export { RUNNER_OPTIONS_ENV };
@@ -3,22 +3,25 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- import { exec } from "@dbx-tools/core";
7
- import { asyncUtils, log } from "@dbx-tools/shared-core";
8
- import { GenieCodeRunnerOptionsSchema } from "@dbx-tools/shared-genie-code/options";
9
- /** Private environment field carrying serialized runner options. */
10
- const RUNNER_OPTIONS_ENV = "DBX_TOOLS_GENIE_RUNNER_OPTIONS";
6
+ import { configUtils, spawn } from "@dbx-tools/core";
7
+ import { log, poll } from "@dbx-tools/shared-core";
8
+ import { GenieCodeRunnerOptionsSchema } from "@dbx-tools/shared-genie-code";
9
+ /** Logical configuration key carrying serialized runner options. */
10
+ export const RUNNER_OPTIONS_KEY = "GENIE_RUNNER_OPTIONS";
11
11
  const logger = log.logger("genie-code:runner");
12
12
  /** Parse the serialized runner boundary from its private environment field. */
13
13
  export function genieCodeRunnerOptions(environment = process.env) {
14
- const serialized = environment[RUNNER_OPTIONS_ENV];
14
+ const serialized = configUtils.resolveValue(RUNNER_OPTIONS_KEY, {
15
+ data: environment,
16
+ sources: "config",
17
+ });
15
18
  if (!serialized)
16
- throw new Error(`${RUNNER_OPTIONS_ENV} is required`);
19
+ throw new Error(`${configUtils.name(RUNNER_OPTIONS_KEY)} is required`);
17
20
  return GenieCodeRunnerOptionsSchema.parse(JSON.parse(serialized));
18
21
  }
19
22
  /** Wait until the guarded model-gateway health route accepts the runner token. */
20
23
  export async function waitForGenieCodeGateway(healthUrl, bearerToken, timeoutMs) {
21
- for await (const ready of asyncUtils.poll(async ({ signal }) => {
24
+ for await (const ready of poll(async ({ signal }) => {
22
25
  try {
23
26
  const response = await fetch(healthUrl, {
24
27
  headers: { authorization: `Bearer ${bearerToken}` },
@@ -50,7 +53,7 @@ export async function runGenieCodeChild(environment = process.env) {
50
53
  executable: options.executable,
51
54
  home: options.home,
52
55
  });
53
- const child = exec.spawn(options.executable, [...options.arguments], {
56
+ const child = spawn(options.executable, [...options.arguments], {
54
57
  cwd: process.cwd(),
55
58
  env: {
56
59
  ...environment,
@@ -66,5 +69,4 @@ export async function runGenieCodeChild(environment = process.env) {
66
69
  if (result.exitCode !== 0)
67
70
  process.exitCode = result.exitCode;
68
71
  }
69
- export { RUNNER_OPTIONS_ENV };
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmllLWNvZGUvcnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUVwRixvRUFBb0U7QUFDcEUsTUFBTSxrQkFBa0IsR0FBRyxnQ0FBZ0MsQ0FBQztBQUM1RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFFL0MsK0VBQStFO0FBQy9FLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxjQUFpQyxPQUFPLENBQUMsR0FBRztJQUNqRixNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNuRCxJQUFJLENBQUMsVUFBVTtRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxrQkFBa0IsY0FBYyxDQUFDLENBQUM7SUFDdEUsT0FBTyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRCxrRkFBa0Y7QUFDbEYsTUFBTSxDQUFDLEtBQUssVUFBVSx1QkFBdUIsQ0FDM0MsU0FBaUIsRUFDakIsV0FBbUIsRUFDbkIsU0FBaUI7SUFFakIsSUFBSSxLQUFLLEVBQUUsTUFBTSxLQUFLLElBQUksVUFBVSxDQUFDLElBQUksQ0FDdkMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtRQUNuQixJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxTQUFTLEVBQUU7Z0JBQ3RDLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxVQUFVLFdBQVcsRUFBRSxFQUFFO2dCQUNuRCxNQUFNO2FBQ1AsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3JCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDLEVBQ0Q7UUFDRSxVQUFVLEVBQUUsR0FBRztRQUNmLFNBQVM7UUFDVCxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSztLQUM3QixDQUNGLEVBQUUsQ0FBQztRQUNGLElBQUksS0FBSztZQUFFLE9BQU87SUFDcEIsQ0FBQztBQUNILENBQUM7QUFFRCxpRkFBaUY7QUFDakYsTUFBTSxDQUFDLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsY0FBaUMsT0FBTyxDQUFDLEdBQUc7SUFFNUMsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRTtRQUN2QyxPQUFPLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtRQUNqQyxTQUFTLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtLQUNwQyxDQUFDLENBQUM7SUFDSCxNQUFNLHVCQUF1QixDQUMzQixPQUFPLENBQUMsZ0JBQWdCLEVBQ3hCLE9BQU8sQ0FBQyxXQUFXLEVBQ25CLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDekIsQ0FBQztJQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsMENBQTBDLEVBQUU7UUFDdEQsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQzlCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtLQUNuQixDQUFDLENBQUM7SUFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUNuRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUNsQixHQUFHLEVBQUU7WUFDSCxHQUFHLFdBQVc7WUFDZCxVQUFVLEVBQUUsT0FBTyxDQUFDLElBQUk7U0FDekI7UUFDRCxLQUFLLEVBQUUsU0FBUztRQUNoQixNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsU0FBUztRQUNqQixnQkFBZ0IsRUFBRSxLQUFLO1FBQ3ZCLFdBQVcsRUFBRSxLQUFLO0tBQ25CLENBQUMsQ0FBQztJQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDO0lBQzNCLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxDQUFDO1FBQUUsT0FBTyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQ2hFLENBQUM7QUFFRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50ZXJuYWwgcmVhZGluZXNzIGdhdGUgYW5kIGludGVyYWN0aXZlIEdlbmllIENvZGUgY2hpbGQgcHJvY2Vzcy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgZXhlYyB9IGZyb20gXCJAZGJ4LXRvb2xzL2NvcmVcIjtcbmltcG9ydCB7IGFzeW5jVXRpbHMsIGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBHZW5pZUNvZGVSdW5uZXJPcHRpb25zU2NoZW1hIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmllLWNvZGUvb3B0aW9uc1wiO1xuXG4vKiogUHJpdmF0ZSBlbnZpcm9ubWVudCBmaWVsZCBjYXJyeWluZyBzZXJpYWxpemVkIHJ1bm5lciBvcHRpb25zLiAqL1xuY29uc3QgUlVOTkVSX09QVElPTlNfRU5WID0gXCJEQlhfVE9PTFNfR0VOSUVfUlVOTkVSX09QVElPTlNcIjtcbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJnZW5pZS1jb2RlOnJ1bm5lclwiKTtcblxuLyoqIFBhcnNlIHRoZSBzZXJpYWxpemVkIHJ1bm5lciBib3VuZGFyeSBmcm9tIGl0cyBwcml2YXRlIGVudmlyb25tZW50IGZpZWxkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmllQ29kZVJ1bm5lck9wdGlvbnMoZW52aXJvbm1lbnQ6IE5vZGVKUy5Qcm9jZXNzRW52ID0gcHJvY2Vzcy5lbnYpIHtcbiAgY29uc3Qgc2VyaWFsaXplZCA9IGVudmlyb25tZW50W1JVTk5FUl9PUFRJT05TX0VOVl07XG4gIGlmICghc2VyaWFsaXplZCkgdGhyb3cgbmV3IEVycm9yKGAke1JVTk5FUl9PUFRJT05TX0VOVn0gaXMgcmVxdWlyZWRgKTtcbiAgcmV0dXJuIEdlbmllQ29kZVJ1bm5lck9wdGlvbnNTY2hlbWEucGFyc2UoSlNPTi5wYXJzZShzZXJpYWxpemVkKSk7XG59XG5cbi8qKiBXYWl0IHVudGlsIHRoZSBndWFyZGVkIG1vZGVsLWdhdGV3YXkgaGVhbHRoIHJvdXRlIGFjY2VwdHMgdGhlIHJ1bm5lciB0b2tlbi4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yR2VuaWVDb2RlR2F0ZXdheShcbiAgaGVhbHRoVXJsOiBzdHJpbmcsXG4gIGJlYXJlclRva2VuOiBzdHJpbmcsXG4gIHRpbWVvdXRNczogbnVtYmVyLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGZvciBhd2FpdCAoY29uc3QgcmVhZHkgb2YgYXN5bmNVdGlscy5wb2xsKFxuICAgIGFzeW5jICh7IHNpZ25hbCB9KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGhlYWx0aFVybCwge1xuICAgICAgICAgIGhlYWRlcnM6IHsgYXV0aG9yaXphdGlvbjogYEJlYXJlciAke2JlYXJlclRva2VufWAgfSxcbiAgICAgICAgICBzaWduYWwsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2Uub2s7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgaW50ZXJ2YWxNczogMjAwLFxuICAgICAgdGltZW91dE1zLFxuICAgICAgcHJlZGljYXRlOiAocmVhZHkpID0+ICFyZWFkeSxcbiAgICB9LFxuICApKSB7XG4gICAgaWYgKHJlYWR5KSByZXR1cm47XG4gIH1cbn1cblxuLyoqIFJ1biBHZW5pZSBDb2RlIHdpdGggaW5oZXJpdGVkIHRlcm1pbmFsIHN0cmVhbXMgYWZ0ZXIgaXRzIGdhdGV3YXkgaXMgcmVhZHkuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuR2VuaWVDb2RlQ2hpbGQoXG4gIGVudmlyb25tZW50OiBOb2RlSlMuUHJvY2Vzc0VudiA9IHByb2Nlc3MuZW52LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZW5pZUNvZGVSdW5uZXJPcHRpb25zKGVudmlyb25tZW50KTtcbiAgbG9nZ2VyLmluZm8oXCJ3YWl0aW5nIGZvciBtb2RlbCBnYXRld2F5XCIsIHtcbiAgICBnYXRld2F5OiBvcHRpb25zLmdhdGV3YXlIZWFsdGhVcmwsXG4gICAgdGltZW91dE1zOiBvcHRpb25zLnN0YXJ0dXBUaW1lb3V0TXMsXG4gIH0pO1xuICBhd2FpdCB3YWl0Rm9yR2VuaWVDb2RlR2F0ZXdheShcbiAgICBvcHRpb25zLmdhdGV3YXlIZWFsdGhVcmwsXG4gICAgb3B0aW9ucy5iZWFyZXJUb2tlbixcbiAgICBvcHRpb25zLnN0YXJ0dXBUaW1lb3V0TXMsXG4gICk7XG4gIGxvZ2dlci5pbmZvKFwibW9kZWwgZ2F0ZXdheSByZWFkeTsgc3RhcnRpbmcgR2VuaWUgQ29kZVwiLCB7XG4gICAgZXhlY3V0YWJsZTogb3B0aW9ucy5leGVjdXRhYmxlLFxuICAgIGhvbWU6IG9wdGlvbnMuaG9tZSxcbiAgfSk7XG4gIGNvbnN0IGNoaWxkID0gZXhlYy5zcGF3bihvcHRpb25zLmV4ZWN1dGFibGUsIFsuLi5vcHRpb25zLmFyZ3VtZW50c10sIHtcbiAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgZW52OiB7XG4gICAgICAuLi5lbnZpcm9ubWVudCxcbiAgICAgIEdFTklFX0hPTUU6IG9wdGlvbnMuaG9tZSxcbiAgICB9LFxuICAgIHN0ZGluOiBcImluaGVyaXRcIixcbiAgICBzdGRvdXQ6IFwiaW5oZXJpdFwiLFxuICAgIHN0ZGVycjogXCJpbmhlcml0XCIsXG4gICAgdGVybWluYXRlVGltZW91dDogNV8wMDAsXG4gICAga2lsbFRpbWVvdXQ6IDFfMDAwLFxuICB9KTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2hpbGQ7XG4gIGlmIChyZXN1bHQuZXhpdENvZGUgIT09IDApIHByb2Nlc3MuZXhpdENvZGUgPSByZXN1bHQuZXhpdENvZGU7XG59XG5cbmV4cG9ydCB7IFJVTk5FUl9PUFRJT05TX0VOViB9O1xuIl19
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmllLWNvZGUvcnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFNUUsb0VBQW9FO0FBQ3BFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLHNCQUFzQixDQUFDO0FBQ3pELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUUvQywrRUFBK0U7QUFDL0UsTUFBTSxVQUFVLHNCQUFzQixDQUFDLGNBQWlDLE9BQU8sQ0FBQyxHQUFHO0lBQ2pGLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUU7UUFDOUQsSUFBSSxFQUFFLFdBQVc7UUFDakIsT0FBTyxFQUFFLFFBQVE7S0FDbEIsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLFVBQVU7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4RixPQUFPLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVELGtGQUFrRjtBQUNsRixNQUFNLENBQUMsS0FBSyxVQUFVLHVCQUF1QixDQUMzQyxTQUFpQixFQUNqQixXQUFtQixFQUNuQixTQUFpQjtJQUVqQixJQUFJLEtBQUssRUFBRSxNQUFNLEtBQUssSUFBSSxJQUFJLENBQzVCLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7UUFDbkIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsU0FBUyxFQUFFO2dCQUN0QyxPQUFPLEVBQUUsRUFBRSxhQUFhLEVBQUUsVUFBVSxXQUFXLEVBQUUsRUFBRTtnQkFDbkQsTUFBTTthQUNQLENBQUMsQ0FBQztZQUNILE9BQU8sUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNyQixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQyxFQUNEO1FBQ0UsVUFBVSxFQUFFLEdBQUc7UUFDZixTQUFTO1FBQ1QsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUs7S0FDN0IsQ0FDRixFQUFFLENBQUM7UUFDRixJQUFJLEtBQUs7WUFBRSxPQUFPO0lBQ3BCLENBQUM7QUFDSCxDQUFDO0FBRUQsaUZBQWlGO0FBQ2pGLE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLGNBQWlDLE9BQU8sQ0FBQyxHQUFHO0lBRTVDLE1BQU0sT0FBTyxHQUFHLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUU7UUFDdkMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7UUFDakMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7S0FDcEMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSx1QkFBdUIsQ0FDM0IsT0FBTyxDQUFDLGdCQUFnQixFQUN4QixPQUFPLENBQUMsV0FBVyxFQUNuQixPQUFPLENBQUMsZ0JBQWdCLENBQ3pCLENBQUM7SUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxFQUFFO1FBQ3RELFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtRQUM5QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7S0FDbkIsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUM5RCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUNsQixHQUFHLEVBQUU7WUFDSCxHQUFHLFdBQVc7WUFDZCxVQUFVLEVBQUUsT0FBTyxDQUFDLElBQUk7U0FDekI7UUFDRCxLQUFLLEVBQUUsU0FBUztRQUNoQixNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsU0FBUztRQUNqQixnQkFBZ0IsRUFBRSxLQUFLO1FBQ3ZCLFdBQVcsRUFBRSxLQUFLO0tBQ25CLENBQUMsQ0FBQztJQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDO0lBQzNCLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxDQUFDO1FBQUUsT0FBTyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEludGVybmFsIHJlYWRpbmVzcyBnYXRlIGFuZCBpbnRlcmFjdGl2ZSBHZW5pZSBDb2RlIGNoaWxkIHByb2Nlc3MuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGNvbmZpZ1V0aWxzLCBzcGF3biB9IGZyb20gXCJAZGJ4LXRvb2xzL2NvcmVcIjtcbmltcG9ydCB7IGxvZywgcG9sbCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBHZW5pZUNvZGVSdW5uZXJPcHRpb25zU2NoZW1hIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmllLWNvZGVcIjtcblxuLyoqIExvZ2ljYWwgY29uZmlndXJhdGlvbiBrZXkgY2Fycnlpbmcgc2VyaWFsaXplZCBydW5uZXIgb3B0aW9ucy4gKi9cbmV4cG9ydCBjb25zdCBSVU5ORVJfT1BUSU9OU19LRVkgPSBcIkdFTklFX1JVTk5FUl9PUFRJT05TXCI7XG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiZ2VuaWUtY29kZTpydW5uZXJcIik7XG5cbi8qKiBQYXJzZSB0aGUgc2VyaWFsaXplZCBydW5uZXIgYm91bmRhcnkgZnJvbSBpdHMgcHJpdmF0ZSBlbnZpcm9ubWVudCBmaWVsZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5pZUNvZGVSdW5uZXJPcHRpb25zKGVudmlyb25tZW50OiBOb2RlSlMuUHJvY2Vzc0VudiA9IHByb2Nlc3MuZW52KSB7XG4gIGNvbnN0IHNlcmlhbGl6ZWQgPSBjb25maWdVdGlscy5yZXNvbHZlVmFsdWUoUlVOTkVSX09QVElPTlNfS0VZLCB7XG4gICAgZGF0YTogZW52aXJvbm1lbnQsXG4gICAgc291cmNlczogXCJjb25maWdcIixcbiAgfSk7XG4gIGlmICghc2VyaWFsaXplZCkgdGhyb3cgbmV3IEVycm9yKGAke2NvbmZpZ1V0aWxzLm5hbWUoUlVOTkVSX09QVElPTlNfS0VZKX0gaXMgcmVxdWlyZWRgKTtcbiAgcmV0dXJuIEdlbmllQ29kZVJ1bm5lck9wdGlvbnNTY2hlbWEucGFyc2UoSlNPTi5wYXJzZShzZXJpYWxpemVkKSk7XG59XG5cbi8qKiBXYWl0IHVudGlsIHRoZSBndWFyZGVkIG1vZGVsLWdhdGV3YXkgaGVhbHRoIHJvdXRlIGFjY2VwdHMgdGhlIHJ1bm5lciB0b2tlbi4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yR2VuaWVDb2RlR2F0ZXdheShcbiAgaGVhbHRoVXJsOiBzdHJpbmcsXG4gIGJlYXJlclRva2VuOiBzdHJpbmcsXG4gIHRpbWVvdXRNczogbnVtYmVyLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGZvciBhd2FpdCAoY29uc3QgcmVhZHkgb2YgcG9sbChcbiAgICBhc3luYyAoeyBzaWduYWwgfSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChoZWFsdGhVcmwsIHtcbiAgICAgICAgICBoZWFkZXJzOiB7IGF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtiZWFyZXJUb2tlbn1gIH0sXG4gICAgICAgICAgc2lnbmFsLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLm9rO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGludGVydmFsTXM6IDIwMCxcbiAgICAgIHRpbWVvdXRNcyxcbiAgICAgIHByZWRpY2F0ZTogKHJlYWR5KSA9PiAhcmVhZHksXG4gICAgfSxcbiAgKSkge1xuICAgIGlmIChyZWFkeSkgcmV0dXJuO1xuICB9XG59XG5cbi8qKiBSdW4gR2VuaWUgQ29kZSB3aXRoIGluaGVyaXRlZCB0ZXJtaW5hbCBzdHJlYW1zIGFmdGVyIGl0cyBnYXRld2F5IGlzIHJlYWR5LiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkdlbmllQ29kZUNoaWxkKFxuICBlbnZpcm9ubWVudDogTm9kZUpTLlByb2Nlc3NFbnYgPSBwcm9jZXNzLmVudixcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBvcHRpb25zID0gZ2VuaWVDb2RlUnVubmVyT3B0aW9ucyhlbnZpcm9ubWVudCk7XG4gIGxvZ2dlci5pbmZvKFwid2FpdGluZyBmb3IgbW9kZWwgZ2F0ZXdheVwiLCB7XG4gICAgZ2F0ZXdheTogb3B0aW9ucy5nYXRld2F5SGVhbHRoVXJsLFxuICAgIHRpbWVvdXRNczogb3B0aW9ucy5zdGFydHVwVGltZW91dE1zLFxuICB9KTtcbiAgYXdhaXQgd2FpdEZvckdlbmllQ29kZUdhdGV3YXkoXG4gICAgb3B0aW9ucy5nYXRld2F5SGVhbHRoVXJsLFxuICAgIG9wdGlvbnMuYmVhcmVyVG9rZW4sXG4gICAgb3B0aW9ucy5zdGFydHVwVGltZW91dE1zLFxuICApO1xuICBsb2dnZXIuaW5mbyhcIm1vZGVsIGdhdGV3YXkgcmVhZHk7IHN0YXJ0aW5nIEdlbmllIENvZGVcIiwge1xuICAgIGV4ZWN1dGFibGU6IG9wdGlvbnMuZXhlY3V0YWJsZSxcbiAgICBob21lOiBvcHRpb25zLmhvbWUsXG4gIH0pO1xuICBjb25zdCBjaGlsZCA9IHNwYXduKG9wdGlvbnMuZXhlY3V0YWJsZSwgWy4uLm9wdGlvbnMuYXJndW1lbnRzXSwge1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBlbnY6IHtcbiAgICAgIC4uLmVudmlyb25tZW50LFxuICAgICAgR0VOSUVfSE9NRTogb3B0aW9ucy5ob21lLFxuICAgIH0sXG4gICAgc3RkaW46IFwiaW5oZXJpdFwiLFxuICAgIHN0ZG91dDogXCJpbmhlcml0XCIsXG4gICAgc3RkZXJyOiBcImluaGVyaXRcIixcbiAgICB0ZXJtaW5hdGVUaW1lb3V0OiA1XzAwMCxcbiAgICBraWxsVGltZW91dDogMV8wMDAsXG4gIH0pO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBjaGlsZDtcbiAgaWYgKHJlc3VsdC5leGl0Q29kZSAhPT0gMCkgcHJvY2Vzcy5leGl0Q29kZSA9IHJlc3VsdC5leGl0Q29kZTtcbn1cbiJdfQ==
@@ -4,9 +4,9 @@
4
4
  * @module
5
5
  */
6
6
  import * as auth from "@dbx-tools/auth";
7
- import type { BinContext } from "@dbx-tools/core/bin";
8
- import { type GenieCodeOptions } from "@dbx-tools/shared-genie-code/options";
9
- import type { ModelClass } from "@dbx-tools/shared-model/contracts";
7
+ import { type BinContext } from "@dbx-tools/core";
8
+ import { type GenieCodeOptions } from "@dbx-tools/shared-genie-code";
9
+ import type { ModelClass } from "@dbx-tools/shared-model";
10
10
  import concurrently from "concurrently";
11
11
  import { writeGenieCodeConfig, type GenieCodeHome } from "./config.ts";
12
12
  import { installGenieCode } from "./install.ts";