@logixjs/sandbox 0.0.1 → 0.0.2
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.
- package/LICENSE +201 -0
- package/package.json +3 -1
- package/public/sandbox/chunks/chunk-2AUQRESB.js +1114 -0
- package/public/sandbox/chunks/chunk-2F72LQKW.js +194 -0
- package/public/sandbox/chunks/chunk-2PYDGDD3.js +4071 -0
- package/public/sandbox/chunks/chunk-2UGKSXDZ.js +16 -0
- package/public/sandbox/chunks/chunk-2XVE7F26.js +153 -0
- package/public/sandbox/chunks/chunk-3A7TFNZN.js +219 -0
- package/public/sandbox/chunks/chunk-3BHC6JAV.js +1070 -0
- package/public/sandbox/chunks/chunk-3U4CAKCX.js +61 -0
- package/public/sandbox/chunks/chunk-3VU3JLZO.js +272 -0
- package/public/sandbox/chunks/chunk-4CPONKWY.js +1170 -0
- package/public/sandbox/chunks/chunk-4GMUQTWH.js +850 -0
- package/public/sandbox/chunks/chunk-4KIYG5E4.js +749 -0
- package/public/sandbox/chunks/chunk-4MY35XR3.js +175 -0
- package/public/sandbox/chunks/chunk-5DNHJMHA.js +69 -0
- package/public/sandbox/chunks/chunk-5EC4S7X6.js +42 -0
- package/public/sandbox/chunks/chunk-5FB7QFSH.js +227 -0
- package/public/sandbox/chunks/chunk-5GEYCJW2.js +206 -0
- package/public/sandbox/chunks/chunk-5PT7Q5SS.js +373 -0
- package/public/sandbox/chunks/chunk-5WN5IGKA.js +166 -0
- package/public/sandbox/chunks/chunk-5XOBKSOT.js +213 -0
- package/public/sandbox/chunks/chunk-67RVISUC.js +313 -0
- package/public/sandbox/chunks/chunk-6ELJEKZS.js +12 -0
- package/public/sandbox/chunks/chunk-6FKWRVP4.js +85 -0
- package/public/sandbox/chunks/chunk-6JRP52YT.js +34 -0
- package/public/sandbox/chunks/chunk-6JYAC3G6.js +42 -0
- package/public/sandbox/chunks/chunk-6TUOP63Q.js +86 -0
- package/public/sandbox/chunks/{chunk-A6JFUNQQ.js → chunk-74C5VW7Z.js} +2 -2
- package/public/sandbox/chunks/chunk-75DQFC5M.js +16 -0
- package/public/sandbox/chunks/{chunk-UCFEP3BH.js → chunk-7GPAF2UK.js} +1 -1
- package/public/sandbox/chunks/chunk-7KQFTS2Y.js +135 -0
- package/public/sandbox/chunks/chunk-7POKWYE3.js +112 -0
- package/public/sandbox/chunks/chunk-7VUEF5F3.js +395 -0
- package/public/sandbox/chunks/chunk-7W5APZS2.js +77 -0
- package/public/sandbox/chunks/chunk-A6OFCXDQ.js +397 -0
- package/public/sandbox/chunks/chunk-A7HLOSO6.js +216 -0
- package/public/sandbox/chunks/chunk-AGF4RRCB.js +408 -0
- package/public/sandbox/chunks/chunk-ASJSJAAL.js +122 -0
- package/public/sandbox/chunks/chunk-ASVMK364.js +283 -0
- package/public/sandbox/chunks/chunk-AUDTI2BQ.js +895 -0
- package/public/sandbox/chunks/chunk-B2SZTA3M.js +16 -0
- package/public/sandbox/chunks/chunk-B6YS2UMV.js +372 -0
- package/public/sandbox/chunks/chunk-BCEO3MGD.js +244 -0
- package/public/sandbox/chunks/chunk-BCOO65D4.js +373 -0
- package/public/sandbox/chunks/chunk-BJOWSSEL.js +38 -0
- package/public/sandbox/chunks/chunk-BS2WBFW4.js +373 -0
- package/public/sandbox/chunks/chunk-BUVHG3NJ.js +439 -0
- package/public/sandbox/chunks/chunk-BVE33AN6.js +42 -0
- package/public/sandbox/chunks/chunk-BWTGJZVP.js +19 -0
- package/public/sandbox/chunks/chunk-BXD7GZC3.js +1025 -0
- package/public/sandbox/chunks/chunk-BZH4EUUD.js +164 -0
- package/public/sandbox/chunks/{chunk-HFV5GJPK.js → chunk-C2MYMMO4.js} +3 -3
- package/public/sandbox/chunks/chunk-CRE4NJJ6.js +271 -0
- package/public/sandbox/chunks/chunk-CVZPRIDB.js +706 -0
- package/public/sandbox/chunks/chunk-CWOXD5NG.js +991 -0
- package/public/sandbox/chunks/chunk-D6DOC3BJ.js +373 -0
- package/public/sandbox/chunks/chunk-DEPSGFSY.js +1698 -0
- package/public/sandbox/chunks/chunk-DM7C5NP5.js +819 -0
- package/public/sandbox/chunks/chunk-DN33LMOF.js +1112 -0
- package/public/sandbox/chunks/{chunk-S46P7MC6.js → chunk-DT7YIIWE.js} +2 -2
- package/public/sandbox/chunks/chunk-DVB5WRCI.js +260 -0
- package/public/sandbox/chunks/{chunk-TOHCFMQS.js → chunk-E3EVW7NR.js} +11 -18
- package/public/sandbox/chunks/chunk-E5BV567Q.js +417 -0
- package/public/sandbox/chunks/chunk-E7BIWMQQ.js +203 -0
- package/public/sandbox/chunks/chunk-EAKGPSOQ.js +83 -0
- package/public/sandbox/chunks/chunk-EGUYL2ER.js +75 -0
- package/public/sandbox/chunks/chunk-EP5GQYZ5.js +85 -0
- package/public/sandbox/chunks/chunk-ET6CJEHC.js +221 -0
- package/public/sandbox/chunks/chunk-EU67YZHZ.js +1070 -0
- package/public/sandbox/chunks/{chunk-PTSJJANP.js → chunk-EYNDQLSB.js} +1 -1
- package/public/sandbox/chunks/{chunk-CEGSWZ5S.js → chunk-EZTMVCJF.js} +1 -1
- package/public/sandbox/chunks/chunk-F5CLVIS6.js +907 -0
- package/public/sandbox/chunks/chunk-F743SKYD.js +85 -0
- package/public/sandbox/chunks/chunk-FEGFZ5OX.js +86 -0
- package/public/sandbox/chunks/chunk-FG5B7ZX3.js +373 -0
- package/public/sandbox/chunks/chunk-FKZPYMDG.js +373 -0
- package/public/sandbox/chunks/chunk-FNLXHWIU.js +220 -0
- package/public/sandbox/chunks/chunk-FQRUTYAD.js +1991 -0
- package/public/sandbox/chunks/{chunk-VLYP4WUS.js → chunk-FY5A73NK.js} +5 -5
- package/public/sandbox/chunks/chunk-G7FAOG3O.js +221 -0
- package/public/sandbox/chunks/chunk-GFXHUC7Y.js +73 -0
- package/public/sandbox/chunks/chunk-GIPXUIZQ.js +534 -0
- package/public/sandbox/chunks/chunk-GP37MEGJ.js +52 -0
- package/public/sandbox/chunks/chunk-GXL5QCMF.js +4511 -0
- package/public/sandbox/chunks/chunk-GZ2NSE6A.js +177 -0
- package/public/sandbox/chunks/chunk-GZATW4YD.js +69 -0
- package/public/sandbox/chunks/chunk-H4EBXROQ.js +166 -0
- package/public/sandbox/chunks/chunk-HETCPK6Z.js +153 -0
- package/public/sandbox/chunks/chunk-HGUFQ2QC.js +4431 -0
- package/public/sandbox/chunks/chunk-HGV3VNH3.js +255 -0
- package/public/sandbox/chunks/chunk-HIJ67QWR.js +5397 -0
- package/public/sandbox/chunks/chunk-IDHERBKW.js +1114 -0
- package/public/sandbox/chunks/chunk-IDTK4FIY.js +102 -0
- package/public/sandbox/chunks/chunk-ILFVY7H5.js +164 -0
- package/public/sandbox/chunks/chunk-ISGSRYGO.js +57 -0
- package/public/sandbox/chunks/chunk-J45VPU24.js +408 -0
- package/public/sandbox/chunks/chunk-JAUIM3O5.js +42 -0
- package/public/sandbox/chunks/chunk-JB7OQEM6.js +373 -0
- package/public/sandbox/chunks/chunk-JCKW6NHD.js +15 -0
- package/public/sandbox/chunks/chunk-JMA7GY7Z.js +221 -0
- package/public/sandbox/chunks/chunk-JY46J6IL.js +836 -0
- package/public/sandbox/chunks/{chunk-X72PZOFA.js → chunk-K2MQ66O7.js} +1 -1
- package/public/sandbox/chunks/chunk-KA7PZA6F.js +464 -0
- package/public/sandbox/chunks/chunk-KDEQTUID.js +102 -0
- package/public/sandbox/chunks/chunk-KDJR27JV.js +1696 -0
- package/public/sandbox/chunks/chunk-KFE3JO6N.js +77 -0
- package/public/sandbox/chunks/chunk-KLDSYWT5.js +536 -0
- package/public/sandbox/chunks/chunk-KQWWFYBF.js +203 -0
- package/public/sandbox/chunks/chunk-KTFZSXOW.js +6473 -0
- package/public/sandbox/chunks/chunk-KXVIC55U.js +108 -0
- package/public/sandbox/chunks/{chunk-HNEDTEGQ.js → chunk-L4PNO2H6.js} +1 -1
- package/public/sandbox/chunks/{chunk-WE4STGO2.js → chunk-L4ZNW5DI.js} +2 -2
- package/public/sandbox/chunks/chunk-LBUINGZ4.js +836 -0
- package/public/sandbox/chunks/chunk-LIYPPU6I.js +112 -0
- package/public/sandbox/chunks/chunk-LJHTOJXW.js +221 -0
- package/public/sandbox/chunks/{chunk-BWSNPKO5.js → chunk-LQL23SWJ.js} +2 -2
- package/public/sandbox/chunks/chunk-LTFCYZQ6.js +46 -0
- package/public/sandbox/chunks/chunk-LTWLVCKQ.js +166 -0
- package/public/sandbox/chunks/chunk-LWI7BXFN.js +395 -0
- package/public/sandbox/chunks/chunk-LYBBX6WM.js +225 -0
- package/public/sandbox/chunks/chunk-MXE7HIBM.js +474 -0
- package/public/sandbox/chunks/chunk-MYBDYNK4.js +6004 -0
- package/public/sandbox/chunks/chunk-NC2MIWZX.js +732 -0
- package/public/sandbox/chunks/chunk-NE447XAF.js +597 -0
- package/public/sandbox/chunks/chunk-NEAYV5C2.js +255 -0
- package/public/sandbox/chunks/chunk-NMGFJZ4I.js +26 -0
- package/public/sandbox/chunks/chunk-NWCJJZNQ.js +71 -0
- package/public/sandbox/chunks/chunk-O57OZBDR.js +214 -0
- package/public/sandbox/chunks/chunk-OJJT664Q.js +731 -0
- package/public/sandbox/chunks/chunk-OKTBUTCH.js +1175 -0
- package/public/sandbox/chunks/chunk-OQ4SYV5D.js +534 -0
- package/public/sandbox/chunks/chunk-OTVVIHJD.js +219 -0
- package/public/sandbox/chunks/chunk-OWTMSCF7.js +1052 -0
- package/public/sandbox/chunks/chunk-P5ZQNFC3.js +122 -0
- package/public/sandbox/chunks/chunk-PBPT2U2N.js +1698 -0
- package/public/sandbox/chunks/chunk-PHBJLCP3.js +836 -0
- package/public/sandbox/chunks/chunk-PHV4HYHB.js +397 -0
- package/public/sandbox/chunks/chunk-PIXQ6SOX.js +4071 -0
- package/public/sandbox/chunks/chunk-PKJL6YLK.js +73 -0
- package/public/sandbox/chunks/chunk-PKPOITIU.js +221 -0
- package/public/sandbox/chunks/{chunk-NQW73ACJ.js → chunk-PMXBOYQI.js} +1 -1
- package/public/sandbox/chunks/chunk-PQLZD7NR.js +836 -0
- package/public/sandbox/chunks/chunk-QEESVOZU.js +16 -0
- package/public/sandbox/chunks/chunk-QGIM3FQK.js +159 -0
- package/public/sandbox/chunks/chunk-QL5JNEDO.js +69 -0
- package/public/sandbox/chunks/chunk-QQOZ3RMH.js +867 -0
- package/public/sandbox/chunks/chunk-QUMEVT2F.js +194 -0
- package/public/sandbox/chunks/chunk-QVZBXYVY.js +102 -0
- package/public/sandbox/chunks/chunk-R5HQS6RB.js +135 -0
- package/public/sandbox/chunks/chunk-R75Q2CTT.js +900 -0
- package/public/sandbox/chunks/chunk-RBB6SHW2.js +253 -0
- package/public/sandbox/chunks/chunk-RDHNRWQP.js +383 -0
- package/public/sandbox/chunks/chunk-RIWOEI3T.js +1101 -0
- package/public/sandbox/chunks/chunk-RS5FFPUV.js +103 -0
- package/public/sandbox/chunks/chunk-RYSSJBGX.js +203 -0
- package/public/sandbox/chunks/chunk-S3KBAE5Z.js +1114 -0
- package/public/sandbox/chunks/chunk-S6ZZHV6G.js +244 -0
- package/public/sandbox/chunks/chunk-SFXJ24HY.js +499 -0
- package/public/sandbox/chunks/chunk-SH7TP5CJ.js +1109 -0
- package/public/sandbox/chunks/chunk-SI5OKFFY.js +317 -0
- package/public/sandbox/chunks/chunk-SIXNQNIR.js +86 -0
- package/public/sandbox/chunks/chunk-ST353BOX.js +42 -0
- package/public/sandbox/chunks/chunk-SYEHKMLP.js +1140 -0
- package/public/sandbox/chunks/chunk-SZ4KQUJU.js +69 -0
- package/public/sandbox/chunks/{chunk-5SOP6EKV.js → chunk-SZI65PSP.js} +5 -10
- package/public/sandbox/chunks/chunk-T7RLTSMX.js +78 -0
- package/public/sandbox/chunks/chunk-TJ2RLUTW.js +57 -0
- package/public/sandbox/chunks/chunk-TJB73XPN.js +4071 -0
- package/public/sandbox/chunks/chunk-TXJCYO56.js +4046 -0
- package/public/sandbox/chunks/chunk-U5J3LCYI.js +731 -0
- package/public/sandbox/chunks/chunk-UABFN3NH.js +208 -0
- package/public/sandbox/chunks/chunk-UBMUY7WO.js +13 -0
- package/public/sandbox/chunks/chunk-UC27CE32.js +69 -0
- package/public/sandbox/chunks/chunk-UJGVDFZN.js +147 -0
- package/public/sandbox/chunks/chunk-UNVLTK4N.js +122 -0
- package/public/sandbox/chunks/chunk-UQKQ6V3V.js +208 -0
- package/public/sandbox/chunks/chunk-UZZBHWIO.js +703 -0
- package/public/sandbox/chunks/chunk-VKZIJERL.js +1114 -0
- package/public/sandbox/chunks/chunk-VQQEAGID.js +372 -0
- package/public/sandbox/chunks/{chunk-3LX3KIQQ.js → chunk-W365QUZ5.js} +3 -5
- package/public/sandbox/chunks/chunk-WJY2LSWG.js +1052 -0
- package/public/sandbox/chunks/chunk-WNOBN3DX.js +391 -0
- package/public/sandbox/chunks/chunk-X2Z5VYG3.js +245 -0
- package/public/sandbox/chunks/chunk-X74KU74D.js +959 -0
- package/public/sandbox/chunks/chunk-XE7ULSGQ.js +46 -0
- package/public/sandbox/chunks/chunk-XRXUJZ3X.js +431 -0
- package/public/sandbox/chunks/chunk-XWHIN7CC.js +85 -0
- package/public/sandbox/chunks/chunk-Y2TVGGVL.js +527 -0
- package/public/sandbox/chunks/chunk-YMVMZA3U.js +1395 -0
- package/public/sandbox/chunks/chunk-YOBLFWDV.js +431 -0
- package/public/sandbox/chunks/chunk-YR2RFEZA.js +11 -0
- package/public/sandbox/chunks/chunk-YTD6A35P.js +836 -0
- package/public/sandbox/chunks/chunk-Z5L7EZXS.js +81 -0
- package/public/sandbox/chunks/chunk-Z65I5ET2.js +108 -0
- package/public/sandbox/chunks/chunk-Z6LV34RO.js +390 -0
- package/public/sandbox/chunks/chunk-ZAKUP6QG.js +1634 -0
- package/public/sandbox/chunks/chunk-ZHNYE2YH.js +731 -0
- package/public/sandbox/chunks/chunk-ZHQX3B3Y.js +867 -0
- package/public/sandbox/chunks/chunk-ZIXDFRHJ.js +731 -0
- package/public/sandbox/chunks/chunk-ZPZ2MZ4D.js +528 -0
- package/public/sandbox/chunks/chunk-ZQD6NZXB.js +373 -0
- package/public/sandbox/chunks/chunk-ZVVBP7ON.js +16 -0
- package/public/sandbox/chunks/chunk-ZWE3P6X2.js +11 -0
- package/public/sandbox/logix-core/Bound.js +14 -14
- package/public/sandbox/logix-core/Debug.js +12 -10
- package/public/sandbox/logix-core/EffectOp.js +3 -4
- package/public/sandbox/logix-core/Env.js +5 -2
- package/public/sandbox/logix-core/ExternalStore.js +239 -0
- package/public/sandbox/logix-core/Flow.js +7 -8
- package/public/sandbox/logix-core/Kernel.js +7 -4
- package/public/sandbox/logix-core/Link.js +33 -25
- package/public/sandbox/logix-core/Middleware.js +13 -11
- package/public/sandbox/logix-core/Module.js +93 -30
- package/public/sandbox/logix-core/ModuleTag.js +28 -25
- package/public/sandbox/logix-core/Observability.js +21 -19
- package/public/sandbox/logix-core/Process.js +27 -22
- package/public/sandbox/logix-core/ReadQuery.js +7 -11
- package/public/sandbox/logix-core/Reflection.js +173 -53
- package/public/sandbox/logix-core/Resource.js +6 -3
- package/public/sandbox/logix-core/Root.js +7 -3
- package/public/sandbox/logix-core/Runtime.js +54 -40
- package/public/sandbox/logix-core/ScopeRegistry.js +6 -3
- package/public/sandbox/logix-core/StateTrait.js +17 -14
- package/public/sandbox/logix-core/TraitLifecycle.js +8 -8
- package/public/sandbox/logix-core/Workflow.js +332 -0
- package/public/sandbox/logix-core.js +11133 -6622
- package/public/sandbox/logix-core.manifest.json +4 -2
- package/public/sandbox/worker.js +3 -3
- package/public/sandbox/chunks/chunk-4LRLOTMA.js +0 -1698
- package/public/sandbox/chunks/chunk-CDLXJHXY.js +0 -120
- package/public/sandbox/chunks/chunk-CZRI7MHA.js +0 -46
- package/public/sandbox/chunks/chunk-EJDFUZ4B.js +0 -408
- package/public/sandbox/chunks/chunk-IP63FME6.js +0 -282
- package/public/sandbox/chunks/chunk-JIXTOQXJ.js +0 -1103
- package/public/sandbox/chunks/chunk-MPUSOFJ3.js +0 -1928
- package/public/sandbox/chunks/chunk-ON2LY6HJ.js +0 -135
- package/public/sandbox/chunks/chunk-POIBXAH5.js +0 -995
- package/public/sandbox/chunks/chunk-PQ652ULI.js +0 -6359
- package/public/sandbox/chunks/chunk-RJQ4PG2F.js +0 -77
- package/public/sandbox/chunks/chunk-S4EXG3OS.js +0 -533
- package/public/sandbox/chunks/chunk-SUXDGXVE.js +0 -390
- package/public/sandbox/chunks/chunk-TOQ6SJ6O.js +0 -244
- package/public/sandbox/chunks/chunk-UKYAF3NL.js +0 -1036
- package/public/sandbox/chunks/chunk-UMVN3AWO.js +0 -395
- package/public/sandbox/chunks/chunk-WFV5PPWJ.js +0 -194
- package/public/sandbox/chunks/chunk-YF6IO732.js +0 -206
- package/public/sandbox/chunks/chunk-ZUBABAAO.js +0 -86
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// @logix/core subpath bundles for @logix/sandbox
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
isDevEnv
|
|
5
|
+
} from "./chunk-LTFCYZQ6.js";
|
|
6
|
+
|
|
7
|
+
// ../logix-core/src/internal/runtime/core/runtimeInternalsAccessor.ts
|
|
8
|
+
var RUNTIME_INTERNALS = /* @__PURE__ */ Symbol.for("@logix/core/runtimeInternals");
|
|
9
|
+
var BOUND_INTERNALS = /* @__PURE__ */ Symbol.for("@logix/core/boundInternals");
|
|
10
|
+
var MODULE_TRAITS_PROGRAM = /* @__PURE__ */ Symbol.for("@logix/core/moduleTraitsProgram");
|
|
11
|
+
var defineHidden = (target, key, value) => {
|
|
12
|
+
Object.defineProperty(target, key, {
|
|
13
|
+
value,
|
|
14
|
+
enumerable: false,
|
|
15
|
+
configurable: true,
|
|
16
|
+
writable: false
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
var setRuntimeInternals = (runtime, internals) => {
|
|
20
|
+
defineHidden(runtime, RUNTIME_INTERNALS, internals);
|
|
21
|
+
};
|
|
22
|
+
var setBoundInternals = (bound, internals) => {
|
|
23
|
+
defineHidden(bound, BOUND_INTERNALS, internals);
|
|
24
|
+
};
|
|
25
|
+
var setModuleTraitsProgram = (module, program) => {
|
|
26
|
+
defineHidden(module, MODULE_TRAITS_PROGRAM, program);
|
|
27
|
+
};
|
|
28
|
+
var getModuleTraitsProgram = (module) => {
|
|
29
|
+
if (!module) return void 0;
|
|
30
|
+
if (typeof module !== "object" && typeof module !== "function") return void 0;
|
|
31
|
+
return module[MODULE_TRAITS_PROGRAM];
|
|
32
|
+
};
|
|
33
|
+
var formatScope = (moduleId, instanceId) => {
|
|
34
|
+
const m = typeof moduleId === "string" && moduleId.length > 0 ? moduleId : "unknown";
|
|
35
|
+
const i = typeof instanceId === "string" && instanceId.length > 0 ? instanceId : "unknown";
|
|
36
|
+
return `moduleId=${m}, instanceId=${i}`;
|
|
37
|
+
};
|
|
38
|
+
var getRuntimeInternals = (runtime) => {
|
|
39
|
+
const scope = runtime;
|
|
40
|
+
const internals = runtime[RUNTIME_INTERNALS];
|
|
41
|
+
if (!internals) {
|
|
42
|
+
const msg = isDevEnv() ? [
|
|
43
|
+
"[MissingRuntimeInternals] Runtime internals not installed on ModuleRuntime instance.",
|
|
44
|
+
`scope: ${formatScope(scope.moduleId, scope.instanceId)}`,
|
|
45
|
+
"fix:",
|
|
46
|
+
"- Ensure ModuleRuntime.make calls internalHooks.installInternalHooks (020 foundation).",
|
|
47
|
+
"- If you created a mock runtime for tests, attach internals or avoid calling internal-only APIs."
|
|
48
|
+
].join("\n") : "Runtime internals not installed";
|
|
49
|
+
throw new Error(msg);
|
|
50
|
+
}
|
|
51
|
+
const runtimeInstanceId = scope.instanceId;
|
|
52
|
+
if (typeof runtimeInstanceId === "string" && runtimeInstanceId.length > 0 && runtimeInstanceId !== internals.instanceId) {
|
|
53
|
+
throw new Error(
|
|
54
|
+
isDevEnv() ? [
|
|
55
|
+
"[InconsistentRuntimeInternals] Runtime internals instanceId mismatch.",
|
|
56
|
+
`runtime: ${formatScope(scope.moduleId, runtimeInstanceId)}`,
|
|
57
|
+
`internals: ${formatScope(internals.moduleId, internals.instanceId)}`
|
|
58
|
+
].join("\n") : "Runtime internals mismatch"
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
return internals;
|
|
62
|
+
};
|
|
63
|
+
var getBoundInternals = (bound) => {
|
|
64
|
+
const internals = bound[BOUND_INTERNALS];
|
|
65
|
+
if (!internals) {
|
|
66
|
+
const msg = isDevEnv() ? [
|
|
67
|
+
"[MissingBoundInternals] Bound internals not installed on Bound API instance.",
|
|
68
|
+
"fix:",
|
|
69
|
+
"- Ensure BoundApiRuntime attaches internals (020 foundation).",
|
|
70
|
+
"- If you created a mock bound for tests, attach internals or avoid calling internal-only APIs."
|
|
71
|
+
].join("\n") : "Bound internals not installed";
|
|
72
|
+
throw new Error(msg);
|
|
73
|
+
}
|
|
74
|
+
return internals;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export {
|
|
78
|
+
setRuntimeInternals,
|
|
79
|
+
setBoundInternals,
|
|
80
|
+
setModuleTraitsProgram,
|
|
81
|
+
getModuleTraitsProgram,
|
|
82
|
+
getRuntimeInternals,
|
|
83
|
+
getBoundInternals
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvcnVudGltZS9jb3JlL3J1bnRpbWVJbnRlcm5hbHNBY2Nlc3Nvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgaXNEZXZFbnYgfSBmcm9tICcuL2Vudi5qcydcbmltcG9ydCB0eXBlIHsgUnVudGltZUludGVybmFscyB9IGZyb20gJy4vUnVudGltZUludGVybmFscy5qcydcblxuY29uc3QgUlVOVElNRV9JTlRFUk5BTFMgPSBTeW1ib2wuZm9yKCdAbG9naXgvY29yZS9ydW50aW1lSW50ZXJuYWxzJylcbmNvbnN0IEJPVU5EX0lOVEVSTkFMUyA9IFN5bWJvbC5mb3IoJ0Bsb2dpeC9jb3JlL2JvdW5kSW50ZXJuYWxzJylcbmNvbnN0IE1PRFVMRV9UUkFJVFNfUFJPR1JBTSA9IFN5bWJvbC5mb3IoJ0Bsb2dpeC9jb3JlL21vZHVsZVRyYWl0c1Byb2dyYW0nKVxuXG5jb25zdCBkZWZpbmVIaWRkZW4gPSAodGFyZ2V0OiBvYmplY3QsIGtleTogc3ltYm9sLCB2YWx1ZTogdW5rbm93bik6IHZvaWQgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICB2YWx1ZSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgd3JpdGFibGU6IGZhbHNlLFxuICB9KVxufVxuXG5leHBvcnQgY29uc3Qgc2V0UnVudGltZUludGVybmFscyA9IChydW50aW1lOiBvYmplY3QsIGludGVybmFsczogUnVudGltZUludGVybmFscyk6IHZvaWQgPT4ge1xuICBkZWZpbmVIaWRkZW4ocnVudGltZSwgUlVOVElNRV9JTlRFUk5BTFMsIGludGVybmFscylcbn1cblxuZXhwb3J0IGNvbnN0IHNldEJvdW5kSW50ZXJuYWxzID0gKGJvdW5kOiBvYmplY3QsIGludGVybmFsczogUnVudGltZUludGVybmFscyk6IHZvaWQgPT4ge1xuICBkZWZpbmVIaWRkZW4oYm91bmQsIEJPVU5EX0lOVEVSTkFMUywgaW50ZXJuYWxzKVxufVxuXG4vKipcbiAqIE1vZHVsZVRyYWl0c1Byb2dyYW1cdUZGMDhTdGF0ZVRyYWl0UHJvZ3JhbVx1RkYwOVx1RkYxQVxuICogLSBcdTc1MjhcdTRFOEVcdTU3MjggTW9kdWxlIFx1NUI5QVx1NEU0OVx1NUJGOVx1OEM2MVx1NEUwQVx1NjMwMlx1OEY3RCB0cmFpdHMgUHJvZ3JhbVx1RkYwOFx1NEY5QiBUcmFpdExpZmVjeWNsZS9EZWJ1ZyBcdTRGN0ZcdTc1MjhcdUZGMDlcdUZGMUJcbiAqIC0gXHU0RjdGXHU3NTI4IFN5bWJvbCArIG5vbi1lbnVtZXJhYmxlIHByb3BlcnR5XHVGRjBDXHU5MDdGXHU1MTREIGAuX18qYCBtYWdpYyBmaWVsZCBcdTYyNjlcdTY1NjNcdTMwMDJcbiAqXG4gKiBcdTZDRThcdTYxMEZcdUZGMUFcdThGRDlcdTY2MkZcdTIwMUNcdTZBMjFcdTU3NTdcdTVCOUFcdTRFNDlcdTRGQTdcdTIwMURcdTc2ODRcdTUxODVcdTkwRThcdTY5RkRcdTRGNERcdUZGMENcdTRFMERcdTVDNUVcdTRFOEUgUnVudGltZUludGVybmFsc1x1RkYwOFx1NUI5RVx1NEY4Qlx1N0VBN1x1RkYwOVx1RkYxQlx1NEUyNFx1ODAwNVx1OEJFRFx1NEU0OVx1NEUwRFx1NTQwQ1x1MzAwMlxuICovXG5leHBvcnQgY29uc3Qgc2V0TW9kdWxlVHJhaXRzUHJvZ3JhbSA9IChtb2R1bGU6IG9iamVjdCwgcHJvZ3JhbTogdW5rbm93bik6IHZvaWQgPT4ge1xuICBkZWZpbmVIaWRkZW4obW9kdWxlLCBNT0RVTEVfVFJBSVRTX1BST0dSQU0sIHByb2dyYW0pXG59XG5cbmV4cG9ydCBjb25zdCBnZXRNb2R1bGVUcmFpdHNQcm9ncmFtID0gKG1vZHVsZTogdW5rbm93bik6IHVua25vd24gfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoIW1vZHVsZSkgcmV0dXJuIHVuZGVmaW5lZFxuICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHVuZGVmaW5lZFxuICByZXR1cm4gKG1vZHVsZSBhcyBhbnkpW01PRFVMRV9UUkFJVFNfUFJPR1JBTV0gYXMgdW5rbm93biB8IHVuZGVmaW5lZFxufVxuXG5jb25zdCBmb3JtYXRTY29wZSA9IChtb2R1bGVJZDogdW5rbm93biwgaW5zdGFuY2VJZDogdW5rbm93bik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG0gPSB0eXBlb2YgbW9kdWxlSWQgPT09ICdzdHJpbmcnICYmIG1vZHVsZUlkLmxlbmd0aCA+IDAgPyBtb2R1bGVJZCA6ICd1bmtub3duJ1xuICBjb25zdCBpID0gdHlwZW9mIGluc3RhbmNlSWQgPT09ICdzdHJpbmcnICYmIGluc3RhbmNlSWQubGVuZ3RoID4gMCA/IGluc3RhbmNlSWQgOiAndW5rbm93bidcbiAgcmV0dXJuIGBtb2R1bGVJZD0ke219LCBpbnN0YW5jZUlkPSR7aX1gXG59XG5cbmV4cG9ydCBjb25zdCBnZXRSdW50aW1lSW50ZXJuYWxzID0gKHJ1bnRpbWU6IG9iamVjdCk6IFJ1bnRpbWVJbnRlcm5hbHMgPT4ge1xuICBjb25zdCBzY29wZSA9IHJ1bnRpbWUgYXMgeyByZWFkb25seSBtb2R1bGVJZD86IHVua25vd247IHJlYWRvbmx5IGluc3RhbmNlSWQ/OiB1bmtub3duIH1cbiAgY29uc3QgaW50ZXJuYWxzID0gKHJ1bnRpbWUgYXMgYW55KVtSVU5USU1FX0lOVEVSTkFMU10gYXMgUnVudGltZUludGVybmFscyB8IHVuZGVmaW5lZFxuICBpZiAoIWludGVybmFscykge1xuICAgIGNvbnN0IG1zZyA9IGlzRGV2RW52KClcbiAgICAgID8gW1xuICAgICAgICAgICdbTWlzc2luZ1J1bnRpbWVJbnRlcm5hbHNdIFJ1bnRpbWUgaW50ZXJuYWxzIG5vdCBpbnN0YWxsZWQgb24gTW9kdWxlUnVudGltZSBpbnN0YW5jZS4nLFxuICAgICAgICAgIGBzY29wZTogJHtmb3JtYXRTY29wZShzY29wZS5tb2R1bGVJZCwgc2NvcGUuaW5zdGFuY2VJZCl9YCxcbiAgICAgICAgICAnZml4OicsXG4gICAgICAgICAgJy0gRW5zdXJlIE1vZHVsZVJ1bnRpbWUubWFrZSBjYWxscyBpbnRlcm5hbEhvb2tzLmluc3RhbGxJbnRlcm5hbEhvb2tzICgwMjAgZm91bmRhdGlvbikuJyxcbiAgICAgICAgICAnLSBJZiB5b3UgY3JlYXRlZCBhIG1vY2sgcnVudGltZSBmb3IgdGVzdHMsIGF0dGFjaCBpbnRlcm5hbHMgb3IgYXZvaWQgY2FsbGluZyBpbnRlcm5hbC1vbmx5IEFQSXMuJyxcbiAgICAgICAgXS5qb2luKCdcXG4nKVxuICAgICAgOiAnUnVudGltZSBpbnRlcm5hbHMgbm90IGluc3RhbGxlZCdcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnKVxuICB9XG5cbiAgY29uc3QgcnVudGltZUluc3RhbmNlSWQgPSBzY29wZS5pbnN0YW5jZUlkXG4gIGlmIChcbiAgICB0eXBlb2YgcnVudGltZUluc3RhbmNlSWQgPT09ICdzdHJpbmcnICYmXG4gICAgcnVudGltZUluc3RhbmNlSWQubGVuZ3RoID4gMCAmJlxuICAgIHJ1bnRpbWVJbnN0YW5jZUlkICE9PSBpbnRlcm5hbHMuaW5zdGFuY2VJZFxuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBpc0RldkVudigpXG4gICAgICAgID8gW1xuICAgICAgICAgICAgJ1tJbmNvbnNpc3RlbnRSdW50aW1lSW50ZXJuYWxzXSBSdW50aW1lIGludGVybmFscyBpbnN0YW5jZUlkIG1pc21hdGNoLicsXG4gICAgICAgICAgICBgcnVudGltZTogJHtmb3JtYXRTY29wZShzY29wZS5tb2R1bGVJZCwgcnVudGltZUluc3RhbmNlSWQpfWAsXG4gICAgICAgICAgICBgaW50ZXJuYWxzOiAke2Zvcm1hdFNjb3BlKGludGVybmFscy5tb2R1bGVJZCwgaW50ZXJuYWxzLmluc3RhbmNlSWQpfWAsXG4gICAgICAgICAgXS5qb2luKCdcXG4nKVxuICAgICAgICA6ICdSdW50aW1lIGludGVybmFscyBtaXNtYXRjaCcsXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGludGVybmFsc1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Qm91bmRJbnRlcm5hbHMgPSAoYm91bmQ6IG9iamVjdCk6IFJ1bnRpbWVJbnRlcm5hbHMgPT4ge1xuICBjb25zdCBpbnRlcm5hbHMgPSAoYm91bmQgYXMgYW55KVtCT1VORF9JTlRFUk5BTFNdIGFzIFJ1bnRpbWVJbnRlcm5hbHMgfCB1bmRlZmluZWRcbiAgaWYgKCFpbnRlcm5hbHMpIHtcbiAgICBjb25zdCBtc2cgPSBpc0RldkVudigpXG4gICAgICA/IFtcbiAgICAgICAgICAnW01pc3NpbmdCb3VuZEludGVybmFsc10gQm91bmQgaW50ZXJuYWxzIG5vdCBpbnN0YWxsZWQgb24gQm91bmQgQVBJIGluc3RhbmNlLicsXG4gICAgICAgICAgJ2ZpeDonLFxuICAgICAgICAgICctIEVuc3VyZSBCb3VuZEFwaVJ1bnRpbWUgYXR0YWNoZXMgaW50ZXJuYWxzICgwMjAgZm91bmRhdGlvbikuJyxcbiAgICAgICAgICAnLSBJZiB5b3UgY3JlYXRlZCBhIG1vY2sgYm91bmQgZm9yIHRlc3RzLCBhdHRhY2ggaW50ZXJuYWxzIG9yIGF2b2lkIGNhbGxpbmcgaW50ZXJuYWwtb25seSBBUElzLicsXG4gICAgICAgIF0uam9pbignXFxuJylcbiAgICAgIDogJ0JvdW5kIGludGVybmFscyBub3QgaW5zdGFsbGVkJ1xuICAgIHRocm93IG5ldyBFcnJvcihtc2cpXG4gIH1cblxuICByZXR1cm4gaW50ZXJuYWxzXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBR0EsSUFBTSxvQkFBb0IsdUJBQU8sSUFBSSw4QkFBOEI7QUFDbkUsSUFBTSxrQkFBa0IsdUJBQU8sSUFBSSw0QkFBNEI7QUFDL0QsSUFBTSx3QkFBd0IsdUJBQU8sSUFBSSxpQ0FBaUM7QUFFMUUsSUFBTSxlQUFlLENBQUMsUUFBZ0IsS0FBYSxVQUF5QjtBQUMxRSxTQUFPLGVBQWUsUUFBUSxLQUFLO0FBQUEsSUFDakM7QUFBQSxJQUNBLFlBQVk7QUFBQSxJQUNaLGNBQWM7QUFBQSxJQUNkLFVBQVU7QUFBQSxFQUNaLENBQUM7QUFDSDtBQUVPLElBQU0sc0JBQXNCLENBQUMsU0FBaUIsY0FBc0M7QUFDekYsZUFBYSxTQUFTLG1CQUFtQixTQUFTO0FBQ3BEO0FBRU8sSUFBTSxvQkFBb0IsQ0FBQyxPQUFlLGNBQXNDO0FBQ3JGLGVBQWEsT0FBTyxpQkFBaUIsU0FBUztBQUNoRDtBQVNPLElBQU0seUJBQXlCLENBQUMsUUFBZ0IsWUFBMkI7QUFDaEYsZUFBYSxRQUFRLHVCQUF1QixPQUFPO0FBQ3JEO0FBRU8sSUFBTSx5QkFBeUIsQ0FBQyxXQUF5QztBQUM5RSxNQUFJLENBQUMsT0FBUSxRQUFPO0FBQ3BCLE1BQUksT0FBTyxXQUFXLFlBQVksT0FBTyxXQUFXLFdBQVksUUFBTztBQUN2RSxTQUFRLE9BQWUscUJBQXFCO0FBQzlDO0FBRUEsSUFBTSxjQUFjLENBQUMsVUFBbUIsZUFBZ0M7QUFDdEUsUUFBTSxJQUFJLE9BQU8sYUFBYSxZQUFZLFNBQVMsU0FBUyxJQUFJLFdBQVc7QUFDM0UsUUFBTSxJQUFJLE9BQU8sZUFBZSxZQUFZLFdBQVcsU0FBUyxJQUFJLGFBQWE7QUFDakYsU0FBTyxZQUFZLENBQUMsZ0JBQWdCLENBQUM7QUFDdkM7QUFFTyxJQUFNLHNCQUFzQixDQUFDLFlBQXNDO0FBQ3hFLFFBQU0sUUFBUTtBQUNkLFFBQU0sWUFBYSxRQUFnQixpQkFBaUI7QUFDcEQsTUFBSSxDQUFDLFdBQVc7QUFDZCxVQUFNLE1BQU0sU0FBUyxJQUNqQjtBQUFBLE1BQ0U7QUFBQSxNQUNBLFVBQVUsWUFBWSxNQUFNLFVBQVUsTUFBTSxVQUFVLENBQUM7QUFBQSxNQUN2RDtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixFQUFFLEtBQUssSUFBSSxJQUNYO0FBQ0osVUFBTSxJQUFJLE1BQU0sR0FBRztBQUFBLEVBQ3JCO0FBRUEsUUFBTSxvQkFBb0IsTUFBTTtBQUNoQyxNQUNFLE9BQU8sc0JBQXNCLFlBQzdCLGtCQUFrQixTQUFTLEtBQzNCLHNCQUFzQixVQUFVLFlBQ2hDO0FBQ0EsVUFBTSxJQUFJO0FBQUEsTUFDUixTQUFTLElBQ0w7QUFBQSxRQUNFO0FBQUEsUUFDQSxZQUFZLFlBQVksTUFBTSxVQUFVLGlCQUFpQixDQUFDO0FBQUEsUUFDMUQsY0FBYyxZQUFZLFVBQVUsVUFBVSxVQUFVLFVBQVUsQ0FBQztBQUFBLE1BQ3JFLEVBQUUsS0FBSyxJQUFJLElBQ1g7QUFBQSxJQUNOO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQUVPLElBQU0sb0JBQW9CLENBQUMsVUFBb0M7QUFDcEUsUUFBTSxZQUFhLE1BQWMsZUFBZTtBQUNoRCxNQUFJLENBQUMsV0FBVztBQUNkLFVBQU0sTUFBTSxTQUFTLElBQ2pCO0FBQUEsTUFDRTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0YsRUFBRSxLQUFLLElBQUksSUFDWDtBQUNKLFVBQU0sSUFBSSxNQUFNLEdBQUc7QUFBQSxFQUNyQjtBQUVBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// @logix/core subpath bundles for @logix/sandbox
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
// ../logix-core/src/internal/runtime/core/FullCutoverGate.ts
|
|
5
|
+
var CutoverCoverageMatrix = {
|
|
6
|
+
version: "v1",
|
|
7
|
+
requiredServiceIds: ["txnQueue", "operationRunner", "transaction", "dispatch"]
|
|
8
|
+
};
|
|
9
|
+
var expectedImplIdForKernel = (kernelId) => kernelId === "core" ? "builtin" : kernelId;
|
|
10
|
+
var parseFallbackServiceIds = (overridesApplied) => {
|
|
11
|
+
const out = /* @__PURE__ */ new Set();
|
|
12
|
+
for (const entry of overridesApplied) {
|
|
13
|
+
if (!entry.includes("(fallback=")) continue;
|
|
14
|
+
const colon = entry.indexOf(":");
|
|
15
|
+
if (colon < 0) continue;
|
|
16
|
+
const eq = entry.indexOf("=", colon + 1);
|
|
17
|
+
if (eq < 0) continue;
|
|
18
|
+
const serviceId = entry.slice(colon + 1, eq);
|
|
19
|
+
if (serviceId.length > 0) out.add(serviceId);
|
|
20
|
+
}
|
|
21
|
+
return Array.from(out).sort((a, b) => a.localeCompare(b));
|
|
22
|
+
};
|
|
23
|
+
var collectMissingServiceIds = (args) => {
|
|
24
|
+
const bindingByServiceId = /* @__PURE__ */ new Map();
|
|
25
|
+
for (const b of args.bindings) {
|
|
26
|
+
bindingByServiceId.set(b.serviceId, b);
|
|
27
|
+
}
|
|
28
|
+
const missing = [];
|
|
29
|
+
for (const serviceId of args.requiredServiceIds) {
|
|
30
|
+
const binding = bindingByServiceId.get(serviceId);
|
|
31
|
+
const implId = binding?.implId;
|
|
32
|
+
if (!implId || implId !== args.expectedImplId) {
|
|
33
|
+
missing.push(serviceId);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return missing;
|
|
37
|
+
};
|
|
38
|
+
var evaluateFullCutoverGate = (args) => {
|
|
39
|
+
const expectedImplId = expectedImplIdForKernel(args.requestedKernelId);
|
|
40
|
+
const matrix = args.coverageMatrix ?? CutoverCoverageMatrix;
|
|
41
|
+
const fallbackServiceIds = parseFallbackServiceIds(args.runtimeServicesEvidence.overridesApplied);
|
|
42
|
+
const missingServiceIds = collectMissingServiceIds({
|
|
43
|
+
expectedImplId,
|
|
44
|
+
requiredServiceIds: matrix.requiredServiceIds,
|
|
45
|
+
bindings: args.runtimeServicesEvidence.bindings
|
|
46
|
+
});
|
|
47
|
+
const fullyActivated = missingServiceIds.length === 0 && fallbackServiceIds.length === 0;
|
|
48
|
+
const verdict = args.mode === "fullCutover" ? fullyActivated ? "PASS" : "FAIL" : "PASS";
|
|
49
|
+
const moduleIdRaw = args.runtimeServicesEvidence.moduleId;
|
|
50
|
+
const moduleId = typeof moduleIdRaw === "string" && moduleIdRaw.length > 0 ? moduleIdRaw : "unknown";
|
|
51
|
+
const anchor = {
|
|
52
|
+
moduleId,
|
|
53
|
+
instanceId: args.runtimeServicesEvidence.instanceId,
|
|
54
|
+
txnSeq: 0
|
|
55
|
+
};
|
|
56
|
+
const level = args.diagnosticsLevel ?? "off";
|
|
57
|
+
return {
|
|
58
|
+
version: "v1",
|
|
59
|
+
mode: args.mode,
|
|
60
|
+
requestedKernelId: args.requestedKernelId,
|
|
61
|
+
verdict,
|
|
62
|
+
fullyActivated,
|
|
63
|
+
missingServiceIds,
|
|
64
|
+
fallbackServiceIds,
|
|
65
|
+
anchor,
|
|
66
|
+
...level === "off" ? {} : {
|
|
67
|
+
details: {
|
|
68
|
+
expectedImplId,
|
|
69
|
+
bindings: args.runtimeServicesEvidence.bindings,
|
|
70
|
+
overridesApplied: args.runtimeServicesEvidence.overridesApplied
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
// ../logix-core/src/internal/runtime/core/RuntimeServiceBuiltins.ts
|
|
77
|
+
import { Context } from "../effect.js";
|
|
78
|
+
var RuntimeServiceBuiltinsTag = class extends Context.Tag("@logix/core/RuntimeServiceBuiltins")() {
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export {
|
|
82
|
+
CutoverCoverageMatrix,
|
|
83
|
+
evaluateFullCutoverGate,
|
|
84
|
+
RuntimeServiceBuiltinsTag
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvcnVudGltZS9jb3JlL0Z1bGxDdXRvdmVyR2F0ZS50cyIsICIuLi8uLi8uLi8uLi9sb2dpeC1jb3JlL3NyYy9pbnRlcm5hbC9ydW50aW1lL2NvcmUvUnVudGltZVNlcnZpY2VCdWlsdGlucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHR5cGUgeyBLZXJuZWxJZCB9IGZyb20gJy4vS2VybmVsUmVmLmpzJ1xuaW1wb3J0IHR5cGUgeyBSdW50aW1lU2VydmljZUJpbmRpbmcsIFJ1bnRpbWVTZXJ2aWNlc0V2aWRlbmNlIH0gZnJvbSAnLi9SdW50aW1lS2VybmVsLmpzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEN1dG92ZXJDb3ZlcmFnZU1hdHJpeCB7XG4gIHJlYWRvbmx5IHZlcnNpb246ICd2MSdcbiAgcmVhZG9ubHkgcmVxdWlyZWRTZXJ2aWNlSWRzOiBSZWFkb25seUFycmF5PHN0cmluZz5cbn1cblxuZXhwb3J0IGNvbnN0IEN1dG92ZXJDb3ZlcmFnZU1hdHJpeCA9IHtcbiAgdmVyc2lvbjogJ3YxJyxcbiAgcmVxdWlyZWRTZXJ2aWNlSWRzOiBbJ3R4blF1ZXVlJywgJ29wZXJhdGlvblJ1bm5lcicsICd0cmFuc2FjdGlvbicsICdkaXNwYXRjaCddLFxufSBhcyBjb25zdCBzYXRpc2ZpZXMgQ3V0b3ZlckNvdmVyYWdlTWF0cml4XG5cbmV4cG9ydCB0eXBlIEZ1bGxDdXRvdmVyR2F0ZU1vZGUgPSAndHJpYWwnIHwgJ2Z1bGxDdXRvdmVyJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bGxDdXRvdmVyR2F0ZUFuY2hvciB7XG4gIHJlYWRvbmx5IG1vZHVsZUlkOiBzdHJpbmdcbiAgcmVhZG9ubHkgaW5zdGFuY2VJZDogc3RyaW5nXG4gIC8qKlxuICAgKiBcdTdFQTZcdTVCOUFcdUZGMUF0eG5TZXE9MCBcdTRFRTNcdTg4NjggYXNzZW1ibHlcdUZGMDhcdTg4QzVcdTkxNERcdTY3MUZcdTU5MzFcdThEMjVcdTk1MUFcdTcwQjlcdUZGMDlcdTMwMDJcbiAgICogRnVsbCBDdXRvdmVyIEdhdGUgXHU5RUQ4XHU4QkE0XHU1NzI4XHU4OEM1XHU5MTREXHU2NzFGXHU1MjI0XHU1QjlBXHVGRjBDXHU1NkUwXHU2QjY0XHU0RTBEXHU0RjFBXHU0RjlEXHU4RDU2XHU3NzFGXHU1QjlFIHR4blx1MzAwMlxuICAgKi9cbiAgcmVhZG9ubHkgdHhuU2VxOiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgRnVsbEN1dG92ZXJHYXRlVmVyZGljdCA9ICdQQVNTJyB8ICdGQUlMJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bGxDdXRvdmVyR2F0ZVJlc3VsdCB7XG4gIHJlYWRvbmx5IHZlcnNpb246ICd2MSdcbiAgcmVhZG9ubHkgbW9kZTogRnVsbEN1dG92ZXJHYXRlTW9kZVxuICByZWFkb25seSByZXF1ZXN0ZWRLZXJuZWxJZDogS2VybmVsSWRcbiAgcmVhZG9ubHkgdmVyZGljdDogRnVsbEN1dG92ZXJHYXRlVmVyZGljdFxuICAvKipcbiAgICogZnVsbHlBY3RpdmF0ZWRcdUZGMUFcdTY2RjRcdTRFMjVcdTY4M0NcdTc2ODRcdTIwMUNcdTUxNjhcdTU5NTdcdTUyMDdcdTYzNjJcdTIwMURcdTc3MUZcdTUwM0NcdTMwMDJcbiAgICogLSBcdTg5ODFcdTZDNDIgY292ZXJhZ2UgbWF0cml4IFx1NTE4NVx1NzY4NFx1NjI0MFx1NjcwOSBzZXJ2aWNlSWQgXHU5MEZEXHU3RUQxXHU1QjlBXHU1MjMwXHU2NzFGXHU2NzFCIGltcGxJZFx1RkYxQlxuICAgKiAtIFx1NEUxNFx1NkNBMVx1NjcwOSBmYWxsYmFja1x1RkYwOG92ZXJyaWRlc0FwcGxpZWQgXHU0RTJEXHU1MzA1XHU1NDJCIGZhbGxiYWNrPSBcdTg5QzZcdTRFM0FcdTY3MkFcdThGQkVcdTY4MDdcdUZGMDlcdTMwMDJcbiAgICpcbiAgICogXHU2Q0U4XHU2MTBGXHVGRjFBdHJpYWwgXHU2QTIxXHU1RjBGXHU0RTBCIHZlcmRpY3QgXHU1MTQxXHU4QkI4IFBBU1NcdUZGMENcdTRGNDYgZnVsbHlBY3RpdmF0ZWQgXHU0RUNEXHU1M0VGXHU0RTNBIGZhbHNlXHUzMDAyXG4gICAqL1xuICByZWFkb25seSBmdWxseUFjdGl2YXRlZDogYm9vbGVhblxuICByZWFkb25seSBtaXNzaW5nU2VydmljZUlkczogUmVhZG9ubHlBcnJheTxzdHJpbmc+XG4gIHJlYWRvbmx5IGZhbGxiYWNrU2VydmljZUlkczogUmVhZG9ubHlBcnJheTxzdHJpbmc+XG4gIHJlYWRvbmx5IGFuY2hvcjogRnVsbEN1dG92ZXJHYXRlQW5jaG9yXG4gIC8qKlxuICAgKiBkaWFnbm9zdGljcz1vZmYgXHU2NUY2XHU1RkM1XHU5ODdCXHU0RkREXHU2MzAxIFNsaW1cdUZGMDhcdTkwN0ZcdTUxNERcdTVFMzhcdTlBN0JcdTYyMTBcdTY3MkNcdUZGMDlcdTMwMDJcbiAgICogbGlnaHQvZnVsbCBcdTRFMEJcdTUxNDFcdThCQjhcdTg4NjVcdTUxNDVcdTUzRUZcdTg5RTNcdTkxQ0FcdTRGRTFcdTYwNkZcdUZGMDhcdTRFQ0RcdTVGQzVcdTk4N0JcdTUzRUZcdTVFOEZcdTUyMTdcdTUzMTZcdUZGMDlcdTMwMDJcbiAgICovXG4gIHJlYWRvbmx5IGRldGFpbHM/OiB7XG4gICAgcmVhZG9ubHkgZXhwZWN0ZWRJbXBsSWQ6IHN0cmluZ1xuICAgIHJlYWRvbmx5IGJpbmRpbmdzOiBSZWFkb25seUFycmF5PFJ1bnRpbWVTZXJ2aWNlQmluZGluZz5cbiAgICByZWFkb25seSBvdmVycmlkZXNBcHBsaWVkOiBSZWFkb25seUFycmF5PHN0cmluZz5cbiAgfVxufVxuXG5jb25zdCBleHBlY3RlZEltcGxJZEZvcktlcm5lbCA9IChrZXJuZWxJZDogS2VybmVsSWQpOiBzdHJpbmcgPT4gKGtlcm5lbElkID09PSAnY29yZScgPyAnYnVpbHRpbicgOiBrZXJuZWxJZClcblxuY29uc3QgcGFyc2VGYWxsYmFja1NlcnZpY2VJZHMgPSAob3ZlcnJpZGVzQXBwbGllZDogUmVhZG9ubHlBcnJheTxzdHJpbmc+KTogUmVhZG9ubHlBcnJheTxzdHJpbmc+ID0+IHtcbiAgY29uc3Qgb3V0ID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBvdmVycmlkZXNBcHBsaWVkKSB7XG4gICAgaWYgKCFlbnRyeS5pbmNsdWRlcygnKGZhbGxiYWNrPScpKSBjb250aW51ZVxuICAgIGNvbnN0IGNvbG9uID0gZW50cnkuaW5kZXhPZignOicpXG4gICAgaWYgKGNvbG9uIDwgMCkgY29udGludWVcbiAgICBjb25zdCBlcSA9IGVudHJ5LmluZGV4T2YoJz0nLCBjb2xvbiArIDEpXG4gICAgaWYgKGVxIDwgMCkgY29udGludWVcbiAgICBjb25zdCBzZXJ2aWNlSWQgPSBlbnRyeS5zbGljZShjb2xvbiArIDEsIGVxKVxuICAgIGlmIChzZXJ2aWNlSWQubGVuZ3RoID4gMCkgb3V0LmFkZChzZXJ2aWNlSWQpXG4gIH1cbiAgcmV0dXJuIEFycmF5LmZyb20ob3V0KS5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpXG59XG5cbmNvbnN0IGNvbGxlY3RNaXNzaW5nU2VydmljZUlkcyA9IChhcmdzOiB7XG4gIHJlYWRvbmx5IGV4cGVjdGVkSW1wbElkOiBzdHJpbmdcbiAgcmVhZG9ubHkgcmVxdWlyZWRTZXJ2aWNlSWRzOiBSZWFkb25seUFycmF5PHN0cmluZz5cbiAgcmVhZG9ubHkgYmluZGluZ3M6IFJlYWRvbmx5QXJyYXk8UnVudGltZVNlcnZpY2VCaW5kaW5nPlxufSk6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IGJpbmRpbmdCeVNlcnZpY2VJZCA9IG5ldyBNYXA8c3RyaW5nLCBSdW50aW1lU2VydmljZUJpbmRpbmc+KClcbiAgZm9yIChjb25zdCBiIG9mIGFyZ3MuYmluZGluZ3MpIHtcbiAgICBiaW5kaW5nQnlTZXJ2aWNlSWQuc2V0KGIuc2VydmljZUlkLCBiKVxuICB9XG5cbiAgY29uc3QgbWlzc2luZzogc3RyaW5nW10gPSBbXVxuICBmb3IgKGNvbnN0IHNlcnZpY2VJZCBvZiBhcmdzLnJlcXVpcmVkU2VydmljZUlkcykge1xuICAgIGNvbnN0IGJpbmRpbmcgPSBiaW5kaW5nQnlTZXJ2aWNlSWQuZ2V0KHNlcnZpY2VJZClcbiAgICBjb25zdCBpbXBsSWQgPSBiaW5kaW5nPy5pbXBsSWRcbiAgICBpZiAoIWltcGxJZCB8fCBpbXBsSWQgIT09IGFyZ3MuZXhwZWN0ZWRJbXBsSWQpIHtcbiAgICAgIG1pc3NpbmcucHVzaChzZXJ2aWNlSWQpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1pc3Npbmdcbn1cblxuZXhwb3J0IGNvbnN0IGV2YWx1YXRlRnVsbEN1dG92ZXJHYXRlID0gKGFyZ3M6IHtcbiAgcmVhZG9ubHkgbW9kZTogRnVsbEN1dG92ZXJHYXRlTW9kZVxuICByZWFkb25seSByZXF1ZXN0ZWRLZXJuZWxJZDogS2VybmVsSWRcbiAgcmVhZG9ubHkgcnVudGltZVNlcnZpY2VzRXZpZGVuY2U6IFJ1bnRpbWVTZXJ2aWNlc0V2aWRlbmNlXG4gIHJlYWRvbmx5IGNvdmVyYWdlTWF0cml4PzogQ3V0b3ZlckNvdmVyYWdlTWF0cml4XG4gIHJlYWRvbmx5IGRpYWdub3N0aWNzTGV2ZWw/OiAnb2ZmJyB8ICdsaWdodCcgfCAnZnVsbCcgfCAnc2FtcGxlZCdcbn0pOiBGdWxsQ3V0b3ZlckdhdGVSZXN1bHQgPT4ge1xuICBjb25zdCBleHBlY3RlZEltcGxJZCA9IGV4cGVjdGVkSW1wbElkRm9yS2VybmVsKGFyZ3MucmVxdWVzdGVkS2VybmVsSWQpXG4gIGNvbnN0IG1hdHJpeCA9IGFyZ3MuY292ZXJhZ2VNYXRyaXggPz8gQ3V0b3ZlckNvdmVyYWdlTWF0cml4XG5cbiAgY29uc3QgZmFsbGJhY2tTZXJ2aWNlSWRzID0gcGFyc2VGYWxsYmFja1NlcnZpY2VJZHMoYXJncy5ydW50aW1lU2VydmljZXNFdmlkZW5jZS5vdmVycmlkZXNBcHBsaWVkKVxuICBjb25zdCBtaXNzaW5nU2VydmljZUlkcyA9IGNvbGxlY3RNaXNzaW5nU2VydmljZUlkcyh7XG4gICAgZXhwZWN0ZWRJbXBsSWQsXG4gICAgcmVxdWlyZWRTZXJ2aWNlSWRzOiBtYXRyaXgucmVxdWlyZWRTZXJ2aWNlSWRzLFxuICAgIGJpbmRpbmdzOiBhcmdzLnJ1bnRpbWVTZXJ2aWNlc0V2aWRlbmNlLmJpbmRpbmdzLFxuICB9KVxuXG4gIGNvbnN0IGZ1bGx5QWN0aXZhdGVkID0gbWlzc2luZ1NlcnZpY2VJZHMubGVuZ3RoID09PSAwICYmIGZhbGxiYWNrU2VydmljZUlkcy5sZW5ndGggPT09IDBcblxuICBjb25zdCB2ZXJkaWN0OiBGdWxsQ3V0b3ZlckdhdGVWZXJkaWN0ID0gYXJncy5tb2RlID09PSAnZnVsbEN1dG92ZXInID8gKGZ1bGx5QWN0aXZhdGVkID8gJ1BBU1MnIDogJ0ZBSUwnKSA6ICdQQVNTJ1xuXG4gIGNvbnN0IG1vZHVsZUlkUmF3ID0gYXJncy5ydW50aW1lU2VydmljZXNFdmlkZW5jZS5tb2R1bGVJZFxuICBjb25zdCBtb2R1bGVJZCA9IHR5cGVvZiBtb2R1bGVJZFJhdyA9PT0gJ3N0cmluZycgJiYgbW9kdWxlSWRSYXcubGVuZ3RoID4gMCA/IG1vZHVsZUlkUmF3IDogJ3Vua25vd24nXG5cbiAgY29uc3QgYW5jaG9yOiBGdWxsQ3V0b3ZlckdhdGVBbmNob3IgPSB7XG4gICAgbW9kdWxlSWQsXG4gICAgaW5zdGFuY2VJZDogYXJncy5ydW50aW1lU2VydmljZXNFdmlkZW5jZS5pbnN0YW5jZUlkLFxuICAgIHR4blNlcTogMCxcbiAgfVxuXG4gIGNvbnN0IGxldmVsID0gYXJncy5kaWFnbm9zdGljc0xldmVsID8/ICdvZmYnXG5cbiAgcmV0dXJuIHtcbiAgICB2ZXJzaW9uOiAndjEnLFxuICAgIG1vZGU6IGFyZ3MubW9kZSxcbiAgICByZXF1ZXN0ZWRLZXJuZWxJZDogYXJncy5yZXF1ZXN0ZWRLZXJuZWxJZCxcbiAgICB2ZXJkaWN0LFxuICAgIGZ1bGx5QWN0aXZhdGVkLFxuICAgIG1pc3NpbmdTZXJ2aWNlSWRzLFxuICAgIGZhbGxiYWNrU2VydmljZUlkcyxcbiAgICBhbmNob3IsXG4gICAgLi4uKGxldmVsID09PSAnb2ZmJ1xuICAgICAgPyB7fVxuICAgICAgOiB7XG4gICAgICAgICAgZGV0YWlsczoge1xuICAgICAgICAgICAgZXhwZWN0ZWRJbXBsSWQsXG4gICAgICAgICAgICBiaW5kaW5nczogYXJncy5ydW50aW1lU2VydmljZXNFdmlkZW5jZS5iaW5kaW5ncyxcbiAgICAgICAgICAgIG92ZXJyaWRlc0FwcGxpZWQ6IGFyZ3MucnVudGltZVNlcnZpY2VzRXZpZGVuY2Uub3ZlcnJpZGVzQXBwbGllZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgfVxufVxuIiwgImltcG9ydCB7IENvbnRleHQsIEVmZmVjdCB9IGZyb20gJ2VmZmVjdCdcblxuZXhwb3J0IGludGVyZmFjZSBSdW50aW1lU2VydmljZUJ1aWx0aW5zIHtcbiAgLyoqXG4gICAqIFx1OEZENFx1NTZERSBidWlsdGluIFx1NUI5RVx1NzNCMFx1NzY4NCBtYWtlIEVmZmVjdFx1RkYwOFx1NzUzMSBNb2R1bGVSdW50aW1lIFx1NTcyOFx1ODhDNVx1OTE0RFx1NjcxRlx1NjNEMFx1NEY5Qlx1RkYwQ1x1OTA3Rlx1NTE0RFx1NTkxNlx1OTBFOFx1NUI5RVx1NzNCMFx1NjM1NVx1ODNCN1x1NTE4NVx1OTBFOFx1OTVFRFx1NTMwNS9cdTcyQjZcdTYwMDFcdUZGMDlcdTMwMDJcbiAgICogLSBcdTRFQzVcdTc1MjhcdTRFOEUga2VybmVsIGltcGxlbWVudG9yXHVGRjA4XHU0RjhCXHU1OTgyIGNvcmUtbmdcdUZGMDlcdTVCOUVcdTczQjBcdTIwMUNcdTg4NENcdTRFM0FcdTdCNDlcdTRFRjdcdTc2ODRcdTY2RkZcdTYzNjJcdTIwMURcdTYyMTZcdTg1ODRcdTVDMDFcdTg4QzVcdUZGMUJcbiAgICogLSBcdTRFMERcdTRGNUNcdTRFM0FcdTRFMUFcdTUyQTFcdTRGQTdcdTU5NTFcdTdFQTZcdUZGMUJcdTRFMERcdTVGOTdcdTU3MjhcdTRFMUFcdTUyQTEgRmxvdy9Mb2dpYyBcdTRFMkRcdTRGOURcdThENTZcdTMwMDJcbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1aWx0aW5NYWtlOiAoc2VydmljZUlkOiBzdHJpbmcpID0+IEVmZmVjdC5FZmZlY3Q8dW5rbm93biwgbmV2ZXIsIGFueT5cbn1cblxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVTZXJ2aWNlQnVpbHRpbnNUYWcgZXh0ZW5kcyBDb250ZXh0LlRhZygnQGxvZ2l4L2NvcmUvUnVudGltZVNlcnZpY2VCdWlsdGlucycpPFxuICBSdW50aW1lU2VydmljZUJ1aWx0aW5zVGFnLFxuICBSdW50aW1lU2VydmljZUJ1aWx0aW5zXG4+KCkge31cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7QUFRTyxJQUFNLHdCQUF3QjtBQUFBLEVBQ25DLFNBQVM7QUFBQSxFQUNULG9CQUFvQixDQUFDLFlBQVksbUJBQW1CLGVBQWUsVUFBVTtBQUMvRTtBQTJDQSxJQUFNLDBCQUEwQixDQUFDLGFBQWdDLGFBQWEsU0FBUyxZQUFZO0FBRW5HLElBQU0sMEJBQTBCLENBQUMscUJBQW1FO0FBQ2xHLFFBQU0sTUFBTSxvQkFBSSxJQUFZO0FBQzVCLGFBQVcsU0FBUyxrQkFBa0I7QUFDcEMsUUFBSSxDQUFDLE1BQU0sU0FBUyxZQUFZLEVBQUc7QUFDbkMsVUFBTSxRQUFRLE1BQU0sUUFBUSxHQUFHO0FBQy9CLFFBQUksUUFBUSxFQUFHO0FBQ2YsVUFBTSxLQUFLLE1BQU0sUUFBUSxLQUFLLFFBQVEsQ0FBQztBQUN2QyxRQUFJLEtBQUssRUFBRztBQUNaLFVBQU0sWUFBWSxNQUFNLE1BQU0sUUFBUSxHQUFHLEVBQUU7QUFDM0MsUUFBSSxVQUFVLFNBQVMsRUFBRyxLQUFJLElBQUksU0FBUztBQUFBLEVBQzdDO0FBQ0EsU0FBTyxNQUFNLEtBQUssR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztBQUMxRDtBQUVBLElBQU0sMkJBQTJCLENBQUMsU0FJTDtBQUMzQixRQUFNLHFCQUFxQixvQkFBSSxJQUFtQztBQUNsRSxhQUFXLEtBQUssS0FBSyxVQUFVO0FBQzdCLHVCQUFtQixJQUFJLEVBQUUsV0FBVyxDQUFDO0FBQUEsRUFDdkM7QUFFQSxRQUFNLFVBQW9CLENBQUM7QUFDM0IsYUFBVyxhQUFhLEtBQUssb0JBQW9CO0FBQy9DLFVBQU0sVUFBVSxtQkFBbUIsSUFBSSxTQUFTO0FBQ2hELFVBQU0sU0FBUyxTQUFTO0FBQ3hCLFFBQUksQ0FBQyxVQUFVLFdBQVcsS0FBSyxnQkFBZ0I7QUFDN0MsY0FBUSxLQUFLLFNBQVM7QUFBQSxJQUN4QjtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFFTyxJQUFNLDBCQUEwQixDQUFDLFNBTVg7QUFDM0IsUUFBTSxpQkFBaUIsd0JBQXdCLEtBQUssaUJBQWlCO0FBQ3JFLFFBQU0sU0FBUyxLQUFLLGtCQUFrQjtBQUV0QyxRQUFNLHFCQUFxQix3QkFBd0IsS0FBSyx3QkFBd0IsZ0JBQWdCO0FBQ2hHLFFBQU0sb0JBQW9CLHlCQUF5QjtBQUFBLElBQ2pEO0FBQUEsSUFDQSxvQkFBb0IsT0FBTztBQUFBLElBQzNCLFVBQVUsS0FBSyx3QkFBd0I7QUFBQSxFQUN6QyxDQUFDO0FBRUQsUUFBTSxpQkFBaUIsa0JBQWtCLFdBQVcsS0FBSyxtQkFBbUIsV0FBVztBQUV2RixRQUFNLFVBQWtDLEtBQUssU0FBUyxnQkFBaUIsaUJBQWlCLFNBQVMsU0FBVTtBQUUzRyxRQUFNLGNBQWMsS0FBSyx3QkFBd0I7QUFDakQsUUFBTSxXQUFXLE9BQU8sZ0JBQWdCLFlBQVksWUFBWSxTQUFTLElBQUksY0FBYztBQUUzRixRQUFNLFNBQWdDO0FBQUEsSUFDcEM7QUFBQSxJQUNBLFlBQVksS0FBSyx3QkFBd0I7QUFBQSxJQUN6QyxRQUFRO0FBQUEsRUFDVjtBQUVBLFFBQU0sUUFBUSxLQUFLLG9CQUFvQjtBQUV2QyxTQUFPO0FBQUEsSUFDTCxTQUFTO0FBQUEsSUFDVCxNQUFNLEtBQUs7QUFBQSxJQUNYLG1CQUFtQixLQUFLO0FBQUEsSUFDeEI7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSxHQUFJLFVBQVUsUUFDVixDQUFDLElBQ0Q7QUFBQSxNQUNFLFNBQVM7QUFBQSxRQUNQO0FBQUEsUUFDQSxVQUFVLEtBQUssd0JBQXdCO0FBQUEsUUFDdkMsa0JBQWtCLEtBQUssd0JBQXdCO0FBQUEsTUFDakQ7QUFBQSxJQUNGO0FBQUEsRUFDTjtBQUNGOzs7QUMvSUEsU0FBUyxlQUF1QjtBQVd6QixJQUFNLDRCQUFOLGNBQXdDLFFBQVEsSUFBSSxvQ0FBb0MsRUFHN0YsRUFBRTtBQUFDOyIsCiAgIm5hbWVzIjogW10KfQo=
|