@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,115 @@
1
+ import { __commonJSMin } from "../../../../../../../../_virtual/_rolldown/runtime.js";
2
+ import { require_codegen } from "../codegen/index.js";
3
+ import { require_names } from "../names.js";
4
+ import { require_errors } from "../errors.js";
5
+ import { require_code } from "../../vocabularies/code.js";
6
+ //#region ../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/keyword.js
7
+ var require_keyword = /* @__PURE__ */ __commonJSMin(((exports) => {
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.validateKeywordUsage = exports.validSchemaType = exports.funcKeywordCode = exports.macroKeywordCode = void 0;
10
+ const codegen_1 = require_codegen();
11
+ const names_1 = require_names();
12
+ const code_1 = require_code();
13
+ const errors_1 = require_errors();
14
+ function macroKeywordCode(cxt, def) {
15
+ const { gen, keyword, schema, parentSchema, it } = cxt;
16
+ const macroSchema = def.macro.call(it.self, schema, parentSchema, it);
17
+ const schemaRef = useKeyword(gen, keyword, macroSchema);
18
+ if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true);
19
+ const valid = gen.name("valid");
20
+ cxt.subschema({
21
+ schema: macroSchema,
22
+ schemaPath: codegen_1.nil,
23
+ errSchemaPath: `${it.errSchemaPath}/${keyword}`,
24
+ topSchemaRef: schemaRef,
25
+ compositeRule: true
26
+ }, valid);
27
+ cxt.pass(valid, () => cxt.error(true));
28
+ }
29
+ exports.macroKeywordCode = macroKeywordCode;
30
+ function funcKeywordCode(cxt, def) {
31
+ var _a;
32
+ const { gen, keyword, schema, parentSchema, $data, it } = cxt;
33
+ checkAsyncKeyword(it, def);
34
+ const validateRef = useKeyword(gen, keyword, !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate);
35
+ const valid = gen.let("valid");
36
+ cxt.block$data(valid, validateKeyword);
37
+ cxt.ok((_a = def.valid) !== null && _a !== void 0 ? _a : valid);
38
+ function validateKeyword() {
39
+ if (def.errors === false) {
40
+ assignValid();
41
+ if (def.modifying) modifyData(cxt);
42
+ reportErrs(() => cxt.error());
43
+ } else {
44
+ const ruleErrs = def.async ? validateAsync() : validateSync();
45
+ if (def.modifying) modifyData(cxt);
46
+ reportErrs(() => addErrs(cxt, ruleErrs));
47
+ }
48
+ }
49
+ function validateAsync() {
50
+ const ruleErrs = gen.let("ruleErrs", null);
51
+ gen.try(() => assignValid((0, codegen_1._)`await `), (e) => gen.assign(valid, false).if((0, codegen_1._)`${e} instanceof ${it.ValidationError}`, () => gen.assign(ruleErrs, (0, codegen_1._)`${e}.errors`), () => gen.throw(e)));
52
+ return ruleErrs;
53
+ }
54
+ function validateSync() {
55
+ const validateErrs = (0, codegen_1._)`${validateRef}.errors`;
56
+ gen.assign(validateErrs, null);
57
+ assignValid(codegen_1.nil);
58
+ return validateErrs;
59
+ }
60
+ function assignValid(_await = def.async ? (0, codegen_1._)`await ` : codegen_1.nil) {
61
+ const passCxt = it.opts.passContext ? names_1.default.this : names_1.default.self;
62
+ const passSchema = !("compile" in def && !$data || def.schema === false);
63
+ gen.assign(valid, (0, codegen_1._)`${_await}${(0, code_1.callValidateCode)(cxt, validateRef, passCxt, passSchema)}`, def.modifying);
64
+ }
65
+ function reportErrs(errors) {
66
+ var _a;
67
+ gen.if((0, codegen_1.not)((_a = def.valid) !== null && _a !== void 0 ? _a : valid), errors);
68
+ }
69
+ }
70
+ exports.funcKeywordCode = funcKeywordCode;
71
+ function modifyData(cxt) {
72
+ const { gen, data, it } = cxt;
73
+ gen.if(it.parentData, () => gen.assign(data, (0, codegen_1._)`${it.parentData}[${it.parentDataProperty}]`));
74
+ }
75
+ function addErrs(cxt, errs) {
76
+ const { gen } = cxt;
77
+ gen.if((0, codegen_1._)`Array.isArray(${errs})`, () => {
78
+ gen.assign(names_1.default.vErrors, (0, codegen_1._)`${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`).assign(names_1.default.errors, (0, codegen_1._)`${names_1.default.vErrors}.length`);
79
+ (0, errors_1.extendErrors)(cxt);
80
+ }, () => cxt.error());
81
+ }
82
+ function checkAsyncKeyword({ schemaEnv }, def) {
83
+ if (def.async && !schemaEnv.$async) throw new Error("async keyword in sync schema");
84
+ }
85
+ function useKeyword(gen, keyword, result) {
86
+ if (result === void 0) throw new Error(`keyword "${keyword}" failed to compile`);
87
+ return gen.scopeValue("keyword", typeof result == "function" ? { ref: result } : {
88
+ ref: result,
89
+ code: (0, codegen_1.stringify)(result)
90
+ });
91
+ }
92
+ function validSchemaType(schema, schemaType, allowUndefined = false) {
93
+ return !schemaType.length || schemaType.some((st) => st === "array" ? Array.isArray(schema) : st === "object" ? schema && typeof schema == "object" && !Array.isArray(schema) : typeof schema == st || allowUndefined && typeof schema == "undefined");
94
+ }
95
+ exports.validSchemaType = validSchemaType;
96
+ function validateKeywordUsage({ schema, opts, self, errSchemaPath }, def, keyword) {
97
+ /* istanbul ignore if */
98
+ if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) throw new Error("ajv implementation error");
99
+ const deps = def.dependencies;
100
+ if (deps === null || deps === void 0 ? void 0 : deps.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(",")}`);
101
+ if (def.validateSchema) {
102
+ if (!def.validateSchema(schema[keyword])) {
103
+ const msg = `keyword "${keyword}" value is invalid at path "${errSchemaPath}": ` + self.errorsText(def.validateSchema.errors);
104
+ if (opts.validateSchema === "log") self.logger.error(msg);
105
+ else throw new Error(msg);
106
+ }
107
+ }
108
+ }
109
+ exports.validateKeywordUsage = validateKeywordUsage;
110
+ }));
111
+ //#endregion
112
+ export default require_keyword();
113
+ export { require_keyword };
114
+
115
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5d29yZC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vYWp2QDguMjAuMC9ub2RlX21vZHVsZXMvYWp2L2Rpc3QvY29tcGlsZS92YWxpZGF0ZS9rZXl3b3JkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy52YWxpZGF0ZUtleXdvcmRVc2FnZSA9IGV4cG9ydHMudmFsaWRTY2hlbWFUeXBlID0gZXhwb3J0cy5mdW5jS2V5d29yZENvZGUgPSBleHBvcnRzLm1hY3JvS2V5d29yZENvZGUgPSB2b2lkIDA7XG5jb25zdCBjb2RlZ2VuXzEgPSByZXF1aXJlKFwiLi4vY29kZWdlblwiKTtcbmNvbnN0IG5hbWVzXzEgPSByZXF1aXJlKFwiLi4vbmFtZXNcIik7XG5jb25zdCBjb2RlXzEgPSByZXF1aXJlKFwiLi4vLi4vdm9jYWJ1bGFyaWVzL2NvZGVcIik7XG5jb25zdCBlcnJvcnNfMSA9IHJlcXVpcmUoXCIuLi9lcnJvcnNcIik7XG5mdW5jdGlvbiBtYWNyb0tleXdvcmRDb2RlKGN4dCwgZGVmKSB7XG4gICAgY29uc3QgeyBnZW4sIGtleXdvcmQsIHNjaGVtYSwgcGFyZW50U2NoZW1hLCBpdCB9ID0gY3h0O1xuICAgIGNvbnN0IG1hY3JvU2NoZW1hID0gZGVmLm1hY3JvLmNhbGwoaXQuc2VsZiwgc2NoZW1hLCBwYXJlbnRTY2hlbWEsIGl0KTtcbiAgICBjb25zdCBzY2hlbWFSZWYgPSB1c2VLZXl3b3JkKGdlbiwga2V5d29yZCwgbWFjcm9TY2hlbWEpO1xuICAgIGlmIChpdC5vcHRzLnZhbGlkYXRlU2NoZW1hICE9PSBmYWxzZSlcbiAgICAgICAgaXQuc2VsZi52YWxpZGF0ZVNjaGVtYShtYWNyb1NjaGVtYSwgdHJ1ZSk7XG4gICAgY29uc3QgdmFsaWQgPSBnZW4ubmFtZShcInZhbGlkXCIpO1xuICAgIGN4dC5zdWJzY2hlbWEoe1xuICAgICAgICBzY2hlbWE6IG1hY3JvU2NoZW1hLFxuICAgICAgICBzY2hlbWFQYXRoOiBjb2RlZ2VuXzEubmlsLFxuICAgICAgICBlcnJTY2hlbWFQYXRoOiBgJHtpdC5lcnJTY2hlbWFQYXRofS8ke2tleXdvcmR9YCxcbiAgICAgICAgdG9wU2NoZW1hUmVmOiBzY2hlbWFSZWYsXG4gICAgICAgIGNvbXBvc2l0ZVJ1bGU6IHRydWUsXG4gICAgfSwgdmFsaWQpO1xuICAgIGN4dC5wYXNzKHZhbGlkLCAoKSA9PiBjeHQuZXJyb3IodHJ1ZSkpO1xufVxuZXhwb3J0cy5tYWNyb0tleXdvcmRDb2RlID0gbWFjcm9LZXl3b3JkQ29kZTtcbmZ1bmN0aW9uIGZ1bmNLZXl3b3JkQ29kZShjeHQsIGRlZikge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCB7IGdlbiwga2V5d29yZCwgc2NoZW1hLCBwYXJlbnRTY2hlbWEsICRkYXRhLCBpdCB9ID0gY3h0O1xuICAgIGNoZWNrQXN5bmNLZXl3b3JkKGl0LCBkZWYpO1xuICAgIGNvbnN0IHZhbGlkYXRlID0gISRkYXRhICYmIGRlZi5jb21waWxlID8gZGVmLmNvbXBpbGUuY2FsbChpdC5zZWxmLCBzY2hlbWEsIHBhcmVudFNjaGVtYSwgaXQpIDogZGVmLnZhbGlkYXRlO1xuICAgIGNvbnN0IHZhbGlkYXRlUmVmID0gdXNlS2V5d29yZChnZW4sIGtleXdvcmQsIHZhbGlkYXRlKTtcbiAgICBjb25zdCB2YWxpZCA9IGdlbi5sZXQoXCJ2YWxpZFwiKTtcbiAgICBjeHQuYmxvY2skZGF0YSh2YWxpZCwgdmFsaWRhdGVLZXl3b3JkKTtcbiAgICBjeHQub2soKF9hID0gZGVmLnZhbGlkKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB2YWxpZCk7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGVLZXl3b3JkKCkge1xuICAgICAgICBpZiAoZGVmLmVycm9ycyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGFzc2lnblZhbGlkKCk7XG4gICAgICAgICAgICBpZiAoZGVmLm1vZGlmeWluZylcbiAgICAgICAgICAgICAgICBtb2RpZnlEYXRhKGN4dCk7XG4gICAgICAgICAgICByZXBvcnRFcnJzKCgpID0+IGN4dC5lcnJvcigpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVFcnJzID0gZGVmLmFzeW5jID8gdmFsaWRhdGVBc3luYygpIDogdmFsaWRhdGVTeW5jKCk7XG4gICAgICAgICAgICBpZiAoZGVmLm1vZGlmeWluZylcbiAgICAgICAgICAgICAgICBtb2RpZnlEYXRhKGN4dCk7XG4gICAgICAgICAgICByZXBvcnRFcnJzKCgpID0+IGFkZEVycnMoY3h0LCBydWxlRXJycykpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlQXN5bmMoKSB7XG4gICAgICAgIGNvbnN0IHJ1bGVFcnJzID0gZ2VuLmxldChcInJ1bGVFcnJzXCIsIG51bGwpO1xuICAgICAgICBnZW4udHJ5KCgpID0+IGFzc2lnblZhbGlkKCgwLCBjb2RlZ2VuXzEuXykgYGF3YWl0IGApLCAoZSkgPT4gZ2VuLmFzc2lnbih2YWxpZCwgZmFsc2UpLmlmKCgwLCBjb2RlZ2VuXzEuXykgYCR7ZX0gaW5zdGFuY2VvZiAke2l0LlZhbGlkYXRpb25FcnJvcn1gLCAoKSA9PiBnZW4uYXNzaWduKHJ1bGVFcnJzLCAoMCwgY29kZWdlbl8xLl8pIGAke2V9LmVycm9yc2ApLCAoKSA9PiBnZW4udGhyb3coZSkpKTtcbiAgICAgICAgcmV0dXJuIHJ1bGVFcnJzO1xuICAgIH1cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZVN5bmMoKSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlRXJycyA9ICgwLCBjb2RlZ2VuXzEuXykgYCR7dmFsaWRhdGVSZWZ9LmVycm9yc2A7XG4gICAgICAgIGdlbi5hc3NpZ24odmFsaWRhdGVFcnJzLCBudWxsKTtcbiAgICAgICAgYXNzaWduVmFsaWQoY29kZWdlbl8xLm5pbCk7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZUVycnM7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFzc2lnblZhbGlkKF9hd2FpdCA9IGRlZi5hc3luYyA/ICgwLCBjb2RlZ2VuXzEuXykgYGF3YWl0IGAgOiBjb2RlZ2VuXzEubmlsKSB7XG4gICAgICAgIGNvbnN0IHBhc3NDeHQgPSBpdC5vcHRzLnBhc3NDb250ZXh0ID8gbmFtZXNfMS5kZWZhdWx0LnRoaXMgOiBuYW1lc18xLmRlZmF1bHQuc2VsZjtcbiAgICAgICAgY29uc3QgcGFzc1NjaGVtYSA9ICEoKFwiY29tcGlsZVwiIGluIGRlZiAmJiAhJGRhdGEpIHx8IGRlZi5zY2hlbWEgPT09IGZhbHNlKTtcbiAgICAgICAgZ2VuLmFzc2lnbih2YWxpZCwgKDAsIGNvZGVnZW5fMS5fKSBgJHtfYXdhaXR9JHsoMCwgY29kZV8xLmNhbGxWYWxpZGF0ZUNvZGUpKGN4dCwgdmFsaWRhdGVSZWYsIHBhc3NDeHQsIHBhc3NTY2hlbWEpfWAsIGRlZi5tb2RpZnlpbmcpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZXBvcnRFcnJzKGVycm9ycykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGdlbi5pZigoMCwgY29kZWdlbl8xLm5vdCkoKF9hID0gZGVmLnZhbGlkKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB2YWxpZCksIGVycm9ycyk7XG4gICAgfVxufVxuZXhwb3J0cy5mdW5jS2V5d29yZENvZGUgPSBmdW5jS2V5d29yZENvZGU7XG5mdW5jdGlvbiBtb2RpZnlEYXRhKGN4dCkge1xuICAgIGNvbnN0IHsgZ2VuLCBkYXRhLCBpdCB9ID0gY3h0O1xuICAgIGdlbi5pZihpdC5wYXJlbnREYXRhLCAoKSA9PiBnZW4uYXNzaWduKGRhdGEsICgwLCBjb2RlZ2VuXzEuXykgYCR7aXQucGFyZW50RGF0YX1bJHtpdC5wYXJlbnREYXRhUHJvcGVydHl9XWApKTtcbn1cbmZ1bmN0aW9uIGFkZEVycnMoY3h0LCBlcnJzKSB7XG4gICAgY29uc3QgeyBnZW4gfSA9IGN4dDtcbiAgICBnZW4uaWYoKDAsIGNvZGVnZW5fMS5fKSBgQXJyYXkuaXNBcnJheSgke2VycnN9KWAsICgpID0+IHtcbiAgICAgICAgZ2VuXG4gICAgICAgICAgICAuYXNzaWduKG5hbWVzXzEuZGVmYXVsdC52RXJyb3JzLCAoMCwgY29kZWdlbl8xLl8pIGAke25hbWVzXzEuZGVmYXVsdC52RXJyb3JzfSA9PT0gbnVsbCA/ICR7ZXJyc30gOiAke25hbWVzXzEuZGVmYXVsdC52RXJyb3JzfS5jb25jYXQoJHtlcnJzfSlgKVxuICAgICAgICAgICAgLmFzc2lnbihuYW1lc18xLmRlZmF1bHQuZXJyb3JzLCAoMCwgY29kZWdlbl8xLl8pIGAke25hbWVzXzEuZGVmYXVsdC52RXJyb3JzfS5sZW5ndGhgKTtcbiAgICAgICAgKDAsIGVycm9yc18xLmV4dGVuZEVycm9ycykoY3h0KTtcbiAgICB9LCAoKSA9PiBjeHQuZXJyb3IoKSk7XG59XG5mdW5jdGlvbiBjaGVja0FzeW5jS2V5d29yZCh7IHNjaGVtYUVudiB9LCBkZWYpIHtcbiAgICBpZiAoZGVmLmFzeW5jICYmICFzY2hlbWFFbnYuJGFzeW5jKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJhc3luYyBrZXl3b3JkIGluIHN5bmMgc2NoZW1hXCIpO1xufVxuZnVuY3Rpb24gdXNlS2V5d29yZChnZW4sIGtleXdvcmQsIHJlc3VsdCkge1xuICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBrZXl3b3JkIFwiJHtrZXl3b3JkfVwiIGZhaWxlZCB0byBjb21waWxlYCk7XG4gICAgcmV0dXJuIGdlbi5zY29wZVZhbHVlKFwia2V5d29yZFwiLCB0eXBlb2YgcmVzdWx0ID09IFwiZnVuY3Rpb25cIiA/IHsgcmVmOiByZXN1bHQgfSA6IHsgcmVmOiByZXN1bHQsIGNvZGU6ICgwLCBjb2RlZ2VuXzEuc3RyaW5naWZ5KShyZXN1bHQpIH0pO1xufVxuZnVuY3Rpb24gdmFsaWRTY2hlbWFUeXBlKHNjaGVtYSwgc2NoZW1hVHlwZSwgYWxsb3dVbmRlZmluZWQgPSBmYWxzZSkge1xuICAgIC8vIFRPRE8gYWRkIHRlc3RzXG4gICAgcmV0dXJuICghc2NoZW1hVHlwZS5sZW5ndGggfHxcbiAgICAgICAgc2NoZW1hVHlwZS5zb21lKChzdCkgPT4gc3QgPT09IFwiYXJyYXlcIlxuICAgICAgICAgICAgPyBBcnJheS5pc0FycmF5KHNjaGVtYSlcbiAgICAgICAgICAgIDogc3QgPT09IFwib2JqZWN0XCJcbiAgICAgICAgICAgICAgICA/IHNjaGVtYSAmJiB0eXBlb2Ygc2NoZW1hID09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkoc2NoZW1hKVxuICAgICAgICAgICAgICAgIDogdHlwZW9mIHNjaGVtYSA9PSBzdCB8fCAoYWxsb3dVbmRlZmluZWQgJiYgdHlwZW9mIHNjaGVtYSA9PSBcInVuZGVmaW5lZFwiKSkpO1xufVxuZXhwb3J0cy52YWxpZFNjaGVtYVR5cGUgPSB2YWxpZFNjaGVtYVR5cGU7XG5mdW5jdGlvbiB2YWxpZGF0ZUtleXdvcmRVc2FnZSh7IHNjaGVtYSwgb3B0cywgc2VsZiwgZXJyU2NoZW1hUGF0aCB9LCBkZWYsIGtleXdvcmQpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoQXJyYXkuaXNBcnJheShkZWYua2V5d29yZCkgPyAhZGVmLmtleXdvcmQuaW5jbHVkZXMoa2V5d29yZCkgOiBkZWYua2V5d29yZCAhPT0ga2V5d29yZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJhanYgaW1wbGVtZW50YXRpb24gZXJyb3JcIik7XG4gICAgfVxuICAgIGNvbnN0IGRlcHMgPSBkZWYuZGVwZW5kZW5jaWVzO1xuICAgIGlmIChkZXBzID09PSBudWxsIHx8IGRlcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRlcHMuc29tZSgoa3dkKSA9PiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNjaGVtYSwga3dkKSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBwYXJlbnQgc2NoZW1hIG11c3QgaGF2ZSBkZXBlbmRlbmNpZXMgb2YgJHtrZXl3b3JkfTogJHtkZXBzLmpvaW4oXCIsXCIpfWApO1xuICAgIH1cbiAgICBpZiAoZGVmLnZhbGlkYXRlU2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IHZhbGlkID0gZGVmLnZhbGlkYXRlU2NoZW1hKHNjaGVtYVtrZXl3b3JkXSk7XG4gICAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGBrZXl3b3JkIFwiJHtrZXl3b3JkfVwiIHZhbHVlIGlzIGludmFsaWQgYXQgcGF0aCBcIiR7ZXJyU2NoZW1hUGF0aH1cIjogYCArXG4gICAgICAgICAgICAgICAgc2VsZi5lcnJvcnNUZXh0KGRlZi52YWxpZGF0ZVNjaGVtYS5lcnJvcnMpO1xuICAgICAgICAgICAgaWYgKG9wdHMudmFsaWRhdGVTY2hlbWEgPT09IFwibG9nXCIpXG4gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IobXNnKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydHMudmFsaWRhdGVLZXl3b3JkVXNhZ2UgPSB2YWxpZGF0ZUtleXdvcmRVc2FnZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWtleXdvcmQuanMubWFwIl0sInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Q0FDQSxPQUFPLGVBQWUsU0FBUyxjQUFjLEVBQUUsT0FBTyxLQUFLLENBQUM7Q0FDNUQsUUFBUSx1QkFBdUIsUUFBUSxrQkFBa0IsUUFBUSxrQkFBa0IsUUFBUSxtQkFBbUIsS0FBSztDQUNuSCxNQUFNLFlBQUEsZ0JBQUE7Q0FDTixNQUFNLFVBQUEsY0FBQTtDQUNOLE1BQU0sU0FBQSxhQUFBO0NBQ04sTUFBTSxXQUFBLGVBQUE7Q0FDTixTQUFTLGlC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
@@ -0,0 +1,74 @@
1
+ import { __commonJSMin } from "../../../../../../../../_virtual/_rolldown/runtime.js";
2
+ import { require_codegen } from "../codegen/index.js";
3
+ import { require_util } from "../util.js";
4
+ //#region ../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/subschema.js
5
+ var require_subschema = /* @__PURE__ */ __commonJSMin(((exports) => {
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.extendSubschemaMode = exports.extendSubschemaData = exports.getSubschema = void 0;
8
+ const codegen_1 = require_codegen();
9
+ const util_1 = require_util();
10
+ function getSubschema(it, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }) {
11
+ if (keyword !== void 0 && schema !== void 0) throw new Error("both \"keyword\" and \"schema\" passed, only one allowed");
12
+ if (keyword !== void 0) {
13
+ const sch = it.schema[keyword];
14
+ return schemaProp === void 0 ? {
15
+ schema: sch,
16
+ schemaPath: (0, codegen_1._)`${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}`,
17
+ errSchemaPath: `${it.errSchemaPath}/${keyword}`
18
+ } : {
19
+ schema: sch[schemaProp],
20
+ schemaPath: (0, codegen_1._)`${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}${(0, codegen_1.getProperty)(schemaProp)}`,
21
+ errSchemaPath: `${it.errSchemaPath}/${keyword}/${(0, util_1.escapeFragment)(schemaProp)}`
22
+ };
23
+ }
24
+ if (schema !== void 0) {
25
+ if (schemaPath === void 0 || errSchemaPath === void 0 || topSchemaRef === void 0) throw new Error("\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"");
26
+ return {
27
+ schema,
28
+ schemaPath,
29
+ topSchemaRef,
30
+ errSchemaPath
31
+ };
32
+ }
33
+ throw new Error("either \"keyword\" or \"schema\" must be passed");
34
+ }
35
+ exports.getSubschema = getSubschema;
36
+ function extendSubschemaData(subschema, it, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }) {
37
+ if (data !== void 0 && dataProp !== void 0) throw new Error("both \"data\" and \"dataProp\" passed, only one allowed");
38
+ const { gen } = it;
39
+ if (dataProp !== void 0) {
40
+ const { errorPath, dataPathArr, opts } = it;
41
+ dataContextProps(gen.let("data", (0, codegen_1._)`${it.data}${(0, codegen_1.getProperty)(dataProp)}`, true));
42
+ subschema.errorPath = (0, codegen_1.str)`${errorPath}${(0, util_1.getErrorPath)(dataProp, dpType, opts.jsPropertySyntax)}`;
43
+ subschema.parentDataProperty = (0, codegen_1._)`${dataProp}`;
44
+ subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty];
45
+ }
46
+ if (data !== void 0) {
47
+ dataContextProps(data instanceof codegen_1.Name ? data : gen.let("data", data, true));
48
+ if (propertyName !== void 0) subschema.propertyName = propertyName;
49
+ }
50
+ if (dataTypes) subschema.dataTypes = dataTypes;
51
+ function dataContextProps(_nextData) {
52
+ subschema.data = _nextData;
53
+ subschema.dataLevel = it.dataLevel + 1;
54
+ subschema.dataTypes = [];
55
+ it.definedProperties = /* @__PURE__ */ new Set();
56
+ subschema.parentData = it.data;
57
+ subschema.dataNames = [...it.dataNames, _nextData];
58
+ }
59
+ }
60
+ exports.extendSubschemaData = extendSubschemaData;
61
+ function extendSubschemaMode(subschema, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }) {
62
+ if (compositeRule !== void 0) subschema.compositeRule = compositeRule;
63
+ if (createErrors !== void 0) subschema.createErrors = createErrors;
64
+ if (allErrors !== void 0) subschema.allErrors = allErrors;
65
+ subschema.jtdDiscriminator = jtdDiscriminator;
66
+ subschema.jtdMetadata = jtdMetadata;
67
+ }
68
+ exports.extendSubschemaMode = extendSubschemaMode;
69
+ }));
70
+ //#endregion
71
+ export default require_subschema();
72
+ export { require_subschema };
73
+
74
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NoZW1hLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9hanZAOC4yMC4wL25vZGVfbW9kdWxlcy9hanYvZGlzdC9jb21waWxlL3ZhbGlkYXRlL3N1YnNjaGVtYS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZXh0ZW5kU3Vic2NoZW1hTW9kZSA9IGV4cG9ydHMuZXh0ZW5kU3Vic2NoZW1hRGF0YSA9IGV4cG9ydHMuZ2V0U3Vic2NoZW1hID0gdm9pZCAwO1xuY29uc3QgY29kZWdlbl8xID0gcmVxdWlyZShcIi4uL2NvZGVnZW5cIik7XG5jb25zdCB1dGlsXzEgPSByZXF1aXJlKFwiLi4vdXRpbFwiKTtcbmZ1bmN0aW9uIGdldFN1YnNjaGVtYShpdCwgeyBrZXl3b3JkLCBzY2hlbWFQcm9wLCBzY2hlbWEsIHNjaGVtYVBhdGgsIGVyclNjaGVtYVBhdGgsIHRvcFNjaGVtYVJlZiB9KSB7XG4gICAgaWYgKGtleXdvcmQgIT09IHVuZGVmaW5lZCAmJiBzY2hlbWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JvdGggXCJrZXl3b3JkXCIgYW5kIFwic2NoZW1hXCIgcGFzc2VkLCBvbmx5IG9uZSBhbGxvd2VkJyk7XG4gICAgfVxuICAgIGlmIChrZXl3b3JkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgc2NoID0gaXQuc2NoZW1hW2tleXdvcmRdO1xuICAgICAgICByZXR1cm4gc2NoZW1hUHJvcCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHNjaCxcbiAgICAgICAgICAgICAgICBzY2hlbWFQYXRoOiAoMCwgY29kZWdlbl8xLl8pIGAke2l0LnNjaGVtYVBhdGh9JHsoMCwgY29kZWdlbl8xLmdldFByb3BlcnR5KShrZXl3b3JkKX1gLFxuICAgICAgICAgICAgICAgIGVyclNjaGVtYVBhdGg6IGAke2l0LmVyclNjaGVtYVBhdGh9LyR7a2V5d29yZH1gLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgc2NoZW1hOiBzY2hbc2NoZW1hUHJvcF0sXG4gICAgICAgICAgICAgICAgc2NoZW1hUGF0aDogKDAsIGNvZGVnZW5fMS5fKSBgJHtpdC5zY2hlbWFQYXRofSR7KDAsIGNvZGVnZW5fMS5nZXRQcm9wZXJ0eSkoa2V5d29yZCl9JHsoMCwgY29kZWdlbl8xLmdldFByb3BlcnR5KShzY2hlbWFQcm9wKX1gLFxuICAgICAgICAgICAgICAgIGVyclNjaGVtYVBhdGg6IGAke2l0LmVyclNjaGVtYVBhdGh9LyR7a2V5d29yZH0vJHsoMCwgdXRpbF8xLmVzY2FwZUZyYWdtZW50KShzY2hlbWFQcm9wKX1gLFxuICAgICAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKHNjaGVtYSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChzY2hlbWFQYXRoID09PSB1bmRlZmluZWQgfHwgZXJyU2NoZW1hUGF0aCA9PT0gdW5kZWZpbmVkIHx8IHRvcFNjaGVtYVJlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wic2NoZW1hUGF0aFwiLCBcImVyclNjaGVtYVBhdGhcIiBhbmQgXCJ0b3BTY2hlbWFSZWZcIiBhcmUgcmVxdWlyZWQgd2l0aCBcInNjaGVtYVwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNjaGVtYSxcbiAgICAgICAgICAgIHNjaGVtYVBhdGgsXG4gICAgICAgICAgICB0b3BTY2hlbWFSZWYsXG4gICAgICAgICAgICBlcnJTY2hlbWFQYXRoLFxuICAgICAgICB9O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2VpdGhlciBcImtleXdvcmRcIiBvciBcInNjaGVtYVwiIG11c3QgYmUgcGFzc2VkJyk7XG59XG5leHBvcnRzLmdldFN1YnNjaGVtYSA9IGdldFN1YnNjaGVtYTtcbmZ1bmN0aW9uIGV4dGVuZFN1YnNjaGVtYURhdGEoc3Vic2NoZW1hLCBpdCwgeyBkYXRhUHJvcCwgZGF0YVByb3BUeXBlOiBkcFR5cGUsIGRhdGEsIGRhdGFUeXBlcywgcHJvcGVydHlOYW1lIH0pIHtcbiAgICBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkICYmIGRhdGFQcm9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdib3RoIFwiZGF0YVwiIGFuZCBcImRhdGFQcm9wXCIgcGFzc2VkLCBvbmx5IG9uZSBhbGxvd2VkJyk7XG4gICAgfVxuICAgIGNvbnN0IHsgZ2VuIH0gPSBpdDtcbiAgICBpZiAoZGF0YVByb3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCB7IGVycm9yUGF0aCwgZGF0YVBhdGhBcnIsIG9wdHMgfSA9IGl0O1xuICAgICAgICBjb25zdCBuZXh0RGF0YSA9IGdlbi5sZXQoXCJkYXRhXCIsICgwLCBjb2RlZ2VuXzEuXykgYCR7aXQuZGF0YX0keygwLCBjb2RlZ2VuXzEuZ2V0UHJvcGVydHkpKGRhdGFQcm9wKX1gLCB0cnVlKTtcbiAgICAgICAgZGF0YUNvbnRleHRQcm9wcyhuZXh0RGF0YSk7XG4gICAgICAgIHN1YnNjaGVtYS5lcnJvclBhdGggPSAoMCwgY29kZWdlbl8xLnN0cikgYCR7ZXJyb3JQYXRofSR7KDAsIHV0aWxfMS5nZXRFcnJvclBhdGgpKGRhdGFQcm9wLCBkcFR5cGUsIG9wdHMuanNQcm9wZXJ0eVN5bnRheCl9YDtcbiAgICAgICAgc3Vic2NoZW1hLnBhcmVudERhdGFQcm9wZXJ0eSA9ICgwLCBjb2RlZ2VuXzEuXykgYCR7ZGF0YVByb3B9YDtcbiAgICAgICAgc3Vic2NoZW1hLmRhdGFQYXRoQXJyID0gWy4uLmRhdGFQYXRoQXJyLCBzdWJzY2hlbWEucGFyZW50RGF0YVByb3BlcnR5XTtcbiAgICB9XG4gICAgaWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBuZXh0RGF0YSA9IGRhdGEgaW5zdGFuY2VvZiBjb2RlZ2VuXzEuTmFtZSA/IGRhdGEgOiBnZW4ubGV0KFwiZGF0YVwiLCBkYXRhLCB0cnVlKTsgLy8gcmVwbGFjZWFibGUgaWYgdXNlZCBvbmNlP1xuICAgICAgICBkYXRhQ29udGV4dFByb3BzKG5leHREYXRhKTtcbiAgICAgICAgaWYgKHByb3BlcnR5TmFtZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgc3Vic2NoZW1hLnByb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZTtcbiAgICAgICAgLy8gVE9ETyBzb21ldGhpbmcgaXMgcG9zc2libHkgd3JvbmcgaGVyZSB3aXRoIG5vdCBjaGFuZ2luZyBwYXJlbnREYXRhUHJvcGVydHkgYW5kIG5vdCBhcHBlbmRpbmcgZGF0YVBhdGhBcnJcbiAgICB9XG4gICAgaWYgKGRhdGFUeXBlcylcbiAgICAgICAgc3Vic2NoZW1hLmRhdGFUeXBlcyA9IGRhdGFUeXBlcztcbiAgICBmdW5jdGlvbiBkYXRhQ29udGV4dFByb3BzKF9uZXh0RGF0YSkge1xuICAgICAgICBzdWJzY2hlbWEuZGF0YSA9IF9uZXh0RGF0YTtcbiAgICAgICAgc3Vic2NoZW1hLmRhdGFMZXZlbCA9IGl0LmRhdGFMZXZlbCArIDE7XG4gICAgICAgIHN1YnNjaGVtYS5kYXRhVHlwZXMgPSBbXTtcbiAgICAgICAgaXQuZGVmaW5lZFByb3BlcnRpZXMgPSBuZXcgU2V0KCk7XG4gICAgICAgIHN1YnNjaGVtYS5wYXJlbnREYXRhID0gaXQuZGF0YTtcbiAgICAgICAgc3Vic2NoZW1hLmRhdGFOYW1lcyA9IFsuLi5pdC5kYXRhTmFtZXMsIF9uZXh0RGF0YV07XG4gICAgfVxufVxuZXhwb3J0cy5leHRlbmRTdWJzY2hlbWFEYXRhID0gZXh0ZW5kU3Vic2NoZW1hRGF0YTtcbmZ1bmN0aW9uIGV4dGVuZFN1YnNjaGVtYU1vZGUoc3Vic2NoZW1hLCB7IGp0ZERpc2NyaW1pbmF0b3IsIGp0ZE1ldGFkYXRhLCBjb21wb3NpdGVSdWxlLCBjcmVhdGVFcnJvcnMsIGFsbEVycm9ycyB9KSB7XG4gICAgaWYgKGNvbXBvc2l0ZVJ1bGUgIT09IHVuZGVmaW5lZClcbiAgICAgICAgc3Vic2NoZW1hLmNvbXBvc2l0ZVJ1bGUgPSBjb21wb3NpdGVSdWxlO1xuICAgIGlmIChjcmVhdGVFcnJvcnMgIT09IHVuZGVmaW5lZClcbiAgICAgICAgc3Vic2NoZW1hLmNyZWF0ZUVycm9ycyA9IGNyZWF0ZUVycm9ycztcbiAgICBpZiAoYWxsRXJyb3JzICE9PSB1bmRlZmluZWQpXG4gICAgICAgIHN1YnNjaGVtYS5hbGxFcnJvcnMgPSBhbGxFcnJvcnM7XG4gICAgc3Vic2NoZW1hLmp0ZERpc2NyaW1pbmF0b3IgPSBqdGREaXNjcmltaW5hdG9yOyAvLyBub3QgaW5oZXJpdGVkXG4gICAgc3Vic2NoZW1hLmp0ZE1ldGFkYXRhID0ganRkTWV0YWRhdGE7IC8vIG5vdCBpbmhlcml0ZWRcbn1cbmV4cG9ydHMuZXh0ZW5kU3Vic2NoZW1hTW9kZSA9IGV4dGVuZFN1YnNjaGVtYU1vZGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zdWJzY2hlbWEuanMubWFwIl0sInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswXSwibWFwcGluZ3MiOiI7Ozs7O0NBQ0EsT0FBTyxlQUFlLFNBQVMsY0FBYyxFQUFFLE9BQU8sS0FBSyxDQUFDO0NBQzVELFFBQVEsc0JBQXNCLFFBQVEsc0JBQXNCLFFBQVEsZUFBZSxLQUFLO0NBQ3hGLE1BQU0sWUFBQSxnQkFBQTtDQUNOLE1BQU0sU0FBQSxhQUFBO0NBQ04sU0FBUyxhQUFhLElBQUksRUFBRSxTQUFTLFlBQVksUUFBUSxZQUFZLGVBQWUsZ0JBQWdCO0VBQ2hHLElBQUksWUFBWSxVQUFhLFdBQVcsUUFDcEMsTUFBTSxJQUFJLE1BQU0sMERBQXNEO0VBRTFFLElBQUksWUFBWSxRQUFXO0dBQ3ZCLE1BQU0sTUFBTSxHQUFHLE9BQU87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