@cartanova/qgrid-cli 2.7.0 → 2.7.1

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 (126) hide show
  1. package/bundle/dist/_virtual/_rolldown/runtime.js +20 -1
  2. package/bundle/dist/application/qgrid/qgrid.dispatcher.js +17 -6
  3. package/bundle/dist/application/qgrid/qgrid.frame.js +1 -1
  4. package/bundle/dist/application/qgrid/schema-prompt.js +240 -0
  5. package/bundle/dist/application/qgrid/tool-emulation.js +7 -5
  6. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/2020.js +112 -0
  7. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/code.js +140 -0
  8. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/index.js +676 -0
  9. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
  10. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/errors.js +104 -0
  11. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/index.js +225 -0
  12. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/names.js +30 -0
  13. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/ref_error.js +20 -0
  14. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/resolve.js +135 -0
  15. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/rules.js +63 -0
  16. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/util.js +148 -0
  17. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/applicability.js +25 -0
  18. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
  19. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/dataType.js +174 -0
  20. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/defaults.js +33 -0
  21. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/index.js +435 -0
  22. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/keyword.js +115 -0
  23. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/subschema.js +74 -0
  24. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/core.js +585 -0
  25. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/data.js +20 -0
  26. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/index.js +44 -0
  27. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.js +52 -0
  28. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.js +22 -0
  29. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.js +53 -0
  30. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.js +18 -0
  31. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.js +38 -0
  32. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.js +21 -0
  33. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.js +87 -0
  34. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/schema.js +61 -0
  35. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/equal.js +14 -0
  36. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/ucs2length.js +27 -0
  37. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/uri.js +14 -0
  38. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/validation_error.js +18 -0
  39. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +59 -0
  40. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +98 -0
  41. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/allOf.js +31 -0
  42. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +18 -0
  43. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/contains.js +91 -0
  44. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +89 -0
  45. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js +18 -0
  46. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/if.js +64 -0
  47. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/index.js +62 -0
  48. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items.js +61 -0
  49. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items2020.js +36 -0
  50. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/not.js +33 -0
  51. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +53 -0
  52. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +63 -0
  53. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +19 -0
  54. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
  55. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +43 -0
  56. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +19 -0
  57. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/code.js +132 -0
  58. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/id.js +16 -0
  59. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/index.js +24 -0
  60. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/ref.js +114 -0
  61. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/index.js +103 -0
  62. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/types.js +16 -0
  63. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/draft2020.js +37 -0
  64. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js +48 -0
  65. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js +47 -0
  66. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/index.js +24 -0
  67. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js +22 -0
  68. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js +17 -0
  69. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/format.js +94 -0
  70. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/index.js +12 -0
  71. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/metadata.js +25 -0
  72. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/next.js +21 -0
  73. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/index.js +15 -0
  74. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js +48 -0
  75. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js +61 -0
  76. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/const.js +29 -0
  77. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js +19 -0
  78. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/enum.js +51 -0
  79. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/index.js +50 -0
  80. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitContains.js +20 -0
  81. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitItems.js +30 -0
  82. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitLength.js +35 -0
  83. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +49 -0
  84. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +30 -0
  85. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +29 -0
  86. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/pattern.js +40 -0
  87. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/required.js +74 -0
  88. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +72 -0
  89. package/bundle/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js +35 -0
  90. package/bundle/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/index.js +238 -0
  91. package/bundle/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/schemes.js +189 -0
  92. package/bundle/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/utils.js +284 -0
  93. package/bundle/dist/node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js +80 -0
  94. package/bundle/dist/testing/schema-bench.js +0 -0
  95. package/bundle/dist/utils/providers/anthropic/fence-strip.js +83 -0
  96. package/bundle/dist/utils/providers/anthropic/stream-json-adapter.js +3 -5
  97. package/bundle/src/application/qgrid/qgrid.dispatcher.test.ts +250 -34
  98. package/bundle/src/application/qgrid/qgrid.dispatcher.ts +36 -5
  99. package/bundle/src/application/qgrid/qgrid.frame.test.ts +120 -153
  100. package/bundle/src/application/qgrid/qgrid.frame.ts +2 -0
  101. package/bundle/src/application/qgrid/schema-prompt.test.ts +166 -0
  102. package/bundle/src/application/qgrid/schema-prompt.ts +293 -0
  103. package/bundle/src/application/qgrid/tool-emulation.test.ts +36 -0
  104. package/bundle/src/application/qgrid/tool-emulation.ts +19 -7
  105. package/bundle/src/testing/schema-bench.test.ts +358 -0
  106. package/bundle/src/testing/schema-bench.ts +352 -0
  107. package/bundle/src/utils/providers/anthropic/fence-strip.test.ts +122 -0
  108. package/bundle/src/utils/providers/anthropic/fence-strip.ts +105 -0
  109. package/bundle/src/utils/providers/anthropic/stream-json-adapter.ts +2 -8
  110. package/bundle/web-dist/client/assets/{index-C24D5PiN.js → index-C0594sjh.js} +3 -3
  111. package/bundle/web-dist/client/assets/{logs-CIlZG6A3.js → logs-BotUcOEB.js} +1 -1
  112. package/bundle/web-dist/client/assets/{monit-DZFBMxKl.js → monit-kk3vnGvu.js} +1 -1
  113. package/bundle/web-dist/client/assets/{routes-C3wlSNBL.js → routes-J4bnHVfl.js} +1 -1
  114. package/bundle/web-dist/client/assets/{settings-ClRDWO-8.js → settings-CAAQSIyg.js} +1 -1
  115. package/bundle/web-dist/client/assets/{show-BP7U8yyJ.js → show-BryNvjUT.js} +1 -1
  116. package/bundle/web-dist/client/assets/{tokens-DfQeULnJ.js → tokens-DDrATjGA.js} +1 -1
  117. package/bundle/web-dist/client/assets/{use-oauth-login-flow-CY-ASCfL.js → use-oauth-login-flow-CptleCFM.js} +1 -1
  118. package/bundle/web-dist/client/index.html +1 -1
  119. package/bundle/web-dist/server/entry-server.generated.js +1 -1
  120. package/package.json +1 -1
  121. package/skills/qgrid/references/ai-sdk-provider-contract.md +20 -15
  122. package/skills/qgrid/references/anthropic-claude-code-runtime.md +31 -14
  123. package/skills/qgrid/references/decision-rationale.md +13 -3
  124. package/skills/qgrid/references/prompt-cache-and-usage.md +4 -1
  125. package/skills/qgrid/references/provider-runtime-differences.md +3 -3
  126. package/skills/qgrid/references/tool-calling-and-multiturn.md +16 -6
@@ -0,0 +1,140 @@
1
+ import { __commonJSMin } from "../../../../../../../../_virtual/_rolldown/runtime.js";
2
+ //#region ../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/code.js
3
+ var require_code = /* @__PURE__ */ __commonJSMin(((exports) => {
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0;
6
+ var _CodeOrName = class {};
7
+ exports._CodeOrName = _CodeOrName;
8
+ exports.IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;
9
+ var Name = class extends _CodeOrName {
10
+ constructor(s) {
11
+ super();
12
+ if (!exports.IDENTIFIER.test(s)) throw new Error("CodeGen: name must be a valid identifier");
13
+ this.str = s;
14
+ }
15
+ toString() {
16
+ return this.str;
17
+ }
18
+ emptyStr() {
19
+ return false;
20
+ }
21
+ get names() {
22
+ return { [this.str]: 1 };
23
+ }
24
+ };
25
+ exports.Name = Name;
26
+ var _Code = class extends _CodeOrName {
27
+ constructor(code) {
28
+ super();
29
+ this._items = typeof code === "string" ? [code] : code;
30
+ }
31
+ toString() {
32
+ return this.str;
33
+ }
34
+ emptyStr() {
35
+ if (this._items.length > 1) return false;
36
+ const item = this._items[0];
37
+ return item === "" || item === "\"\"";
38
+ }
39
+ get str() {
40
+ var _a;
41
+ return (_a = this._str) !== null && _a !== void 0 ? _a : this._str = this._items.reduce((s, c) => `${s}${c}`, "");
42
+ }
43
+ get names() {
44
+ var _a;
45
+ return (_a = this._names) !== null && _a !== void 0 ? _a : this._names = this._items.reduce((names, c) => {
46
+ if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1;
47
+ return names;
48
+ }, {});
49
+ }
50
+ };
51
+ exports._Code = _Code;
52
+ exports.nil = new _Code("");
53
+ function _(strs, ...args) {
54
+ const code = [strs[0]];
55
+ let i = 0;
56
+ while (i < args.length) {
57
+ addCodeArg(code, args[i]);
58
+ code.push(strs[++i]);
59
+ }
60
+ return new _Code(code);
61
+ }
62
+ exports._ = _;
63
+ const plus = new _Code("+");
64
+ function str(strs, ...args) {
65
+ const expr = [safeStringify(strs[0])];
66
+ let i = 0;
67
+ while (i < args.length) {
68
+ expr.push(plus);
69
+ addCodeArg(expr, args[i]);
70
+ expr.push(plus, safeStringify(strs[++i]));
71
+ }
72
+ optimize(expr);
73
+ return new _Code(expr);
74
+ }
75
+ exports.str = str;
76
+ function addCodeArg(code, arg) {
77
+ if (arg instanceof _Code) code.push(...arg._items);
78
+ else if (arg instanceof Name) code.push(arg);
79
+ else code.push(interpolate(arg));
80
+ }
81
+ exports.addCodeArg = addCodeArg;
82
+ function optimize(expr) {
83
+ let i = 1;
84
+ while (i < expr.length - 1) {
85
+ if (expr[i] === plus) {
86
+ const res = mergeExprItems(expr[i - 1], expr[i + 1]);
87
+ if (res !== void 0) {
88
+ expr.splice(i - 1, 3, res);
89
+ continue;
90
+ }
91
+ expr[i++] = "+";
92
+ }
93
+ i++;
94
+ }
95
+ }
96
+ function mergeExprItems(a, b) {
97
+ if (b === "\"\"") return a;
98
+ if (a === "\"\"") return b;
99
+ if (typeof a == "string") {
100
+ if (b instanceof Name || a[a.length - 1] !== "\"") return;
101
+ if (typeof b != "string") return `${a.slice(0, -1)}${b}"`;
102
+ if (b[0] === "\"") return a.slice(0, -1) + b.slice(1);
103
+ return;
104
+ }
105
+ if (typeof b == "string" && b[0] === "\"" && !(a instanceof Name)) return `"${a}${b.slice(1)}`;
106
+ }
107
+ function strConcat(c1, c2) {
108
+ return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`;
109
+ }
110
+ exports.strConcat = strConcat;
111
+ function interpolate(x) {
112
+ return typeof x == "number" || typeof x == "boolean" || x === null ? x : safeStringify(Array.isArray(x) ? x.join(",") : x);
113
+ }
114
+ function stringify(x) {
115
+ return new _Code(safeStringify(x));
116
+ }
117
+ exports.stringify = stringify;
118
+ function safeStringify(x) {
119
+ return JSON.stringify(x).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
120
+ }
121
+ exports.safeStringify = safeStringify;
122
+ function getProperty(key) {
123
+ return typeof key == "string" && exports.IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`;
124
+ }
125
+ exports.getProperty = getProperty;
126
+ function getEsmExportName(key) {
127
+ if (typeof key == "string" && exports.IDENTIFIER.test(key)) return new _Code(`${key}`);
128
+ throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`);
129
+ }
130
+ exports.getEsmExportName = getEsmExportName;
131
+ function regexpCode(rx) {
132
+ return new _Code(rx.toString());
133
+ }
134
+ exports.regexpCode = regexpCode;
135
+ }));
136
+ //#endregion
137
+ export default require_code();
138
+ export { require_code };
139
+
140
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMjAuMC9ub2RlX21vZHVsZXMvYWp2L2Rpc3QvY29tcGlsZS9jb2RlZ2VuL2NvZGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnJlZ2V4cENvZGUgPSBleHBvcnRzLmdldEVzbUV4cG9ydE5hbWUgPSBleHBvcnRzLmdldFByb3BlcnR5ID0gZXhwb3J0cy5zYWZlU3RyaW5naWZ5ID0gZXhwb3J0cy5zdHJpbmdpZnkgPSBleHBvcnRzLnN0ckNvbmNhdCA9IGV4cG9ydHMuYWRkQ29kZUFyZyA9IGV4cG9ydHMuc3RyID0gZXhwb3J0cy5fID0gZXhwb3J0cy5uaWwgPSBleHBvcnRzLl9Db2RlID0gZXhwb3J0cy5OYW1lID0gZXhwb3J0cy5JREVOVElGSUVSID0gZXhwb3J0cy5fQ29kZU9yTmFtZSA9IHZvaWQgMDtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXh0cmFuZW91cy1jbGFzc1xuY2xhc3MgX0NvZGVPck5hbWUge1xufVxuZXhwb3J0cy5fQ29kZU9yTmFtZSA9IF9Db2RlT3JOYW1lO1xuZXhwb3J0cy5JREVOVElGSUVSID0gL15bYS16JF9dW2EteiRfMC05XSokL2k7XG5jbGFzcyBOYW1lIGV4dGVuZHMgX0NvZGVPck5hbWUge1xuICAgIGNvbnN0cnVjdG9yKHMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgaWYgKCFleHBvcnRzLklERU5USUZJRVIudGVzdChzKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvZGVHZW46IG5hbWUgbXVzdCBiZSBhIHZhbGlkIGlkZW50aWZpZXJcIik7XG4gICAgICAgIHRoaXMuc3RyID0gcztcbiAgICB9XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cjtcbiAgICB9XG4gICAgZW1wdHlTdHIoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZ2V0IG5hbWVzKCkge1xuICAgICAgICByZXR1cm4geyBbdGhpcy5zdHJdOiAxIH07XG4gICAgfVxufVxuZXhwb3J0cy5OYW1lID0gTmFtZTtcbmNsYXNzIF9Db2RlIGV4dGVuZHMgX0NvZGVPck5hbWUge1xuICAgIGNvbnN0cnVjdG9yKGNvZGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5faXRlbXMgPSB0eXBlb2YgY29kZSA9PT0gXCJzdHJpbmdcIiA/IFtjb2RlXSA6IGNvZGU7XG4gICAgfVxuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdHI7XG4gICAgfVxuICAgIGVtcHR5U3RyKCkge1xuICAgICAgICBpZiAodGhpcy5faXRlbXMubGVuZ3RoID4gMSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuX2l0ZW1zWzBdO1xuICAgICAgICByZXR1cm4gaXRlbSA9PT0gXCJcIiB8fCBpdGVtID09PSAnXCJcIic7XG4gICAgfVxuICAgIGdldCBzdHIoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuICgoX2EgPSB0aGlzLl9zdHIpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICh0aGlzLl9zdHIgPSB0aGlzLl9pdGVtcy5yZWR1Y2UoKHMsIGMpID0+IGAke3N9JHtjfWAsIFwiXCIpKSk7XG4gICAgfVxuICAgIGdldCBuYW1lcygpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gKChfYSA9IHRoaXMuX25hbWVzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAodGhpcy5fbmFtZXMgPSB0aGlzLl9pdGVtcy5yZWR1Y2UoKG5hbWVzLCBjKSA9PiB7XG4gICAgICAgICAgICBpZiAoYyBpbnN0YW5jZW9mIE5hbWUpXG4gICAgICAgICAgICAgICAgbmFtZXNbYy5zdHJdID0gKG5hbWVzW2Muc3RyXSB8fCAwKSArIDE7XG4gICAgICAgICAgICByZXR1cm4gbmFtZXM7XG4gICAgICAgIH0sIHt9KSkpO1xuICAgIH1cbn1cbmV4cG9ydHMuX0NvZGUgPSBfQ29kZTtcbmV4cG9ydHMubmlsID0gbmV3IF9Db2RlKFwiXCIpO1xuZnVuY3Rpb24gXyhzdHJzLCAuLi5hcmdzKSB7XG4gICAgY29uc3QgY29kZSA9IFtzdHJzWzBdXTtcbiAgICBsZXQgaSA9IDA7XG4gICAgd2hpbGUgKGkgPCBhcmdzLmxlbmd0aCkge1xuICAgICAgICBhZGRDb2RlQXJnKGNvZGUsIGFyZ3NbaV0pO1xuICAgICAgICBjb2RlLnB1c2goc3Ryc1srK2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBfQ29kZShjb2RlKTtcbn1cbmV4cG9ydHMuXyA9IF87XG5jb25zdCBwbHVzID0gbmV3IF9Db2RlKFwiK1wiKTtcbmZ1bmN0aW9uIHN0cihzdHJzLCAuLi5hcmdzKSB7XG4gICAgY29uc3QgZXhwciA9IFtzYWZlU3RyaW5naWZ5KHN0cnNbMF0pXTtcbiAgICBsZXQgaSA9IDA7XG4gICAgd2hpbGUgKGkgPCBhcmdzLmxlbmd0aCkge1xuICAgICAgICBleHByLnB1c2gocGx1cyk7XG4gICAgICAgIGFkZENvZGVBcmcoZXhwciwgYXJnc1tpXSk7XG4gICAgICAgIGV4cHIucHVzaChwbHVzLCBzYWZlU3RyaW5naWZ5KHN0cnNbKytpXSkpO1xuICAgIH1cbiAgICBvcHRpbWl6ZShleHByKTtcbiAgICByZXR1cm4gbmV3IF9Db2RlKGV4cHIpO1xufVxuZXhwb3J0cy5zdHIgPSBzdHI7XG5mdW5jdGlvbiBhZGRDb2RlQXJnKGNvZGUsIGFyZykge1xuICAgIGlmIChhcmcgaW5zdGFuY2VvZiBfQ29kZSlcbiAgICAgICAgY29kZS5wdXNoKC4uLmFyZy5faXRlbXMpO1xuICAgIGVsc2UgaWYgKGFyZyBpbnN0YW5jZW9mIE5hbWUpXG4gICAgICAgIGNvZGUucHVzaChhcmcpO1xuICAgIGVsc2VcbiAgICAgICAgY29kZS5wdXNoKGludGVycG9sYXRlKGFyZykpO1xufVxuZXhwb3J0cy5hZGRDb2RlQXJnID0gYWRkQ29kZUFyZztcbmZ1bmN0aW9uIG9wdGltaXplKGV4cHIpIHtcbiAgICBsZXQgaSA9IDE7XG4gICAgd2hpbGUgKGkgPCBleHByLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgaWYgKGV4cHJbaV0gPT09IHBsdXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IG1lcmdlRXhwckl0ZW1zKGV4cHJbaSAtIDFdLCBleHByW2kgKyAxXSk7XG4gICAgICAgICAgICBpZiAocmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBleHByLnNwbGljZShpIC0gMSwgMywgcmVzKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV4cHJbaSsrXSA9IFwiK1wiO1xuICAgICAgICB9XG4gICAgICAgIGkrKztcbiAgICB9XG59XG5mdW5jdGlvbiBtZXJnZUV4cHJJdGVtcyhhLCBiKSB7XG4gICAgaWYgKGIgPT09ICdcIlwiJylcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgaWYgKGEgPT09ICdcIlwiJylcbiAgICAgICAgcmV0dXJuIGI7XG4gICAgaWYgKHR5cGVvZiBhID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKGIgaW5zdGFuY2VvZiBOYW1lIHx8IGFbYS5sZW5ndGggLSAxXSAhPT0gJ1wiJylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHR5cGVvZiBiICE9IFwic3RyaW5nXCIpXG4gICAgICAgICAgICByZXR1cm4gYCR7YS5zbGljZSgwLCAtMSl9JHtifVwiYDtcbiAgICAgICAgaWYgKGJbMF0gPT09ICdcIicpXG4gICAgICAgICAgICByZXR1cm4gYS5zbGljZSgwLCAtMSkgKyBiLnNsaWNlKDEpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYiA9PSBcInN0cmluZ1wiICYmIGJbMF0gPT09ICdcIicgJiYgIShhIGluc3RhbmNlb2YgTmFtZSkpXG4gICAgICAgIHJldHVybiBgXCIke2F9JHtiLnNsaWNlKDEpfWA7XG4gICAgcmV0dXJuO1xufVxuZnVuY3Rpb24gc3RyQ29uY2F0KGMxLCBjMikge1xuICAgIHJldHVybiBjMi5lbXB0eVN0cigpID8gYzEgOiBjMS5lbXB0eVN0cigpID8gYzIgOiBzdHIgYCR7YzF9JHtjMn1gO1xufVxuZXhwb3J0cy5zdHJDb25jYXQgPSBzdHJDb25jYXQ7XG4vLyBUT0RPIGRvIG5vdCBhbGxvdyBhcnJheXMgaGVyZVxuZnVuY3Rpb24gaW50ZXJwb2xhdGUoeCkge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PSBcIm51bWJlclwiIHx8IHR5cGVvZiB4ID09IFwiYm9vbGVhblwiIHx8IHggPT09IG51bGxcbiAgICAgICAgPyB4XG4gICAgICAgIDogc2FmZVN0cmluZ2lmeShBcnJheS5pc0FycmF5KHgpID8geC5qb2luKFwiLFwiKSA6IHgpO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5KHgpIHtcbiAgICByZXR1cm4gbmV3IF9Db2RlKHNhZmVTdHJpbmdpZnkoeCkpO1xufVxuZXhwb3J0cy5zdHJpbmdpZnkgPSBzdHJpbmdpZnk7XG5mdW5jdGlvbiBzYWZlU3RyaW5naWZ5KHgpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeClcbiAgICAgICAgLnJlcGxhY2UoL1xcdTIwMjgvZywgXCJcXFxcdTIwMjhcIilcbiAgICAgICAgLnJlcGxhY2UoL1xcdTIwMjkvZywgXCJcXFxcdTIwMjlcIik7XG59XG5leHBvcnRzLnNhZmVTdHJpbmdpZnkgPSBzYWZlU3RyaW5naWZ5O1xuZnVuY3Rpb24gZ2V0UHJvcGVydHkoa2V5KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBrZXkgPT0gXCJzdHJpbmdcIiAmJiBleHBvcnRzLklERU5USUZJRVIudGVzdChrZXkpID8gbmV3IF9Db2RlKGAuJHtrZXl9YCkgOiBfIGBbJHtrZXl9XWA7XG59XG5leHBvcnRzLmdldFByb3BlcnR5ID0gZ2V0UHJvcGVydHk7XG4vL0RvZXMgYmVzdCBlZmZvcnQgdG8gZm9ybWF0IHRoZSBuYW1lIHByb3Blcmx5XG5mdW5jdGlvbiBnZXRFc21FeHBvcnROYW1lKGtleSkge1xuICAgIGlmICh0eXBlb2Yga2V5ID09IFwic3RyaW5nXCIgJiYgZXhwb3J0cy5JREVOVElGSUVSLnRlc3Qoa2V5KSkge1xuICAgICAgICByZXR1cm4gbmV3IF9Db2RlKGAke2tleX1gKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb2RlR2VuOiBpbnZhbGlkIGV4cG9ydCBuYW1lOiAke2tleX0sIHVzZSBleHBsaWNpdCAkaWQgbmFtZSBtYXBwaW5nYCk7XG59XG5leHBvcnRzLmdldEVzbUV4cG9ydE5hbWUgPSBnZXRFc21FeHBvcnROYW1lO1xuZnVuY3Rpb24gcmVnZXhwQ29kZShyeCkge1xuICAgIHJldHVybiBuZXcgX0NvZGUocngudG9TdHJpbmcoKSk7XG59XG5leHBvcnRzLnJlZ2V4cENvZGUgPSByZWdleHBDb2RlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29kZS5qcy5tYXAiXSwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdLCJtYXBwaW5ncyI6Ijs7O0NBQ0EsT0FBTyxlQUFlLFNBQVMsY0FBYyxFQUFFLE9BQU8sS0FBSyxDQUFDO0NBQzVELFFBQVEsYUFBYSxRQUFRLG1CQUFtQixRQUFRLGNBQWMsUUFBUSxnQkFBZ0IsUUFBUSxZQUFZLFFBQVEsWUFBWSxRQUFRLGFBQWEsUUFBUSxNQUFNLFFBQVEsSUFBSSxRQUFRLE1BQU0sUUFBUSxRQUFRLFFBQVEsT0FBTyxRQUFRLGFBQWEsUUFBUSxjQUFjLEtBQUs7Q0FFbFIsSUFBTSxjQUFOLE1BQWtCLENBQ2xCO0NBQ0EsUUFBUSxjQUFjO0NBQ3RCLFFBQVEsYUFBYTtDQUNyQixJQUFNLE9BQU4sY0FBbUIsWUFBWTtF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