@ibgib/web-gib 0.0.11 → 0.0.13
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/dist/agent-texts/common-agent-texts.d.mts +0 -6
- package/dist/agent-texts/common-agent-texts.d.mts.map +1 -1
- package/dist/agent-texts/common-agent-texts.mjs +34 -35
- package/dist/agent-texts/common-agent-texts.mjs.map +1 -1
- package/dist/agent-texts/primary-agent-texts.d.mts +1 -15
- package/dist/agent-texts/primary-agent-texts.d.mts.map +1 -1
- package/dist/agent-texts/primary-agent-texts.mjs +21 -26
- package/dist/agent-texts/primary-agent-texts.mjs.map +1 -1
- package/dist/agent-texts/project-agent-texts.d.mts +1 -7
- package/dist/agent-texts/project-agent-texts.d.mts.map +1 -1
- package/dist/agent-texts/project-agent-texts.mjs +28 -28
- package/dist/agent-texts/project-agent-texts.mjs.map +1 -1
- package/dist/agent-texts/project-child-text-agent-texts.d.mts +1 -4
- package/dist/agent-texts/project-child-text-agent-texts.d.mts.map +1 -1
- package/dist/agent-texts/project-child-text-agent-texts.mjs +30 -25
- package/dist/agent-texts/project-child-text-agent-texts.mjs.map +1 -1
- package/dist/agent-texts/projects-agent-texts.d.mts +1 -3
- package/dist/agent-texts/projects-agent-texts.d.mts.map +1 -1
- package/dist/agent-texts/projects-agent-texts.mjs +15 -14
- package/dist/agent-texts/projects-agent-texts.mjs.map +1 -1
- package/dist/agent-texts/raw-agent-texts.d.mts +1 -3
- package/dist/agent-texts/raw-agent-texts.d.mts.map +1 -1
- package/dist/agent-texts/raw-agent-texts.mjs +17 -16
- package/dist/agent-texts/raw-agent-texts.mjs.map +1 -1
- package/dist/agent-texts/text-editor-agent-texts.d.mts +1 -5
- package/dist/agent-texts/text-editor-agent-texts.d.mts.map +1 -1
- package/dist/agent-texts/text-editor-agent-texts.mjs +19 -18
- package/dist/agent-texts/text-editor-agent-texts.mjs.map +1 -1
- package/dist/common/project/project-constants.d.mts +1 -0
- package/dist/common/project/project-constants.d.mts.map +1 -1
- package/dist/common/project/project-constants.mjs +1 -0
- package/dist/common/project/project-constants.mjs.map +1 -1
- package/dist/common/project/project-helper.d.mts.map +1 -1
- package/dist/common/project/project-helper.mjs +1 -2
- package/dist/common/project/project-helper.mjs.map +1 -1
- package/dist/keystone/keystone-config-builder.d.mts +77 -0
- package/dist/keystone/keystone-config-builder.d.mts.map +1 -0
- package/dist/keystone/keystone-config-builder.mjs +156 -0
- package/dist/keystone/keystone-config-builder.mjs.map +1 -0
- package/dist/keystone/keystone-constants.d.mts +15 -0
- package/dist/keystone/keystone-constants.d.mts.map +1 -0
- package/dist/keystone/keystone-constants.mjs +15 -0
- package/dist/keystone/keystone-constants.mjs.map +1 -0
- package/dist/keystone/keystone-helpers.d.mts +54 -0
- package/dist/keystone/keystone-helpers.d.mts.map +1 -0
- package/dist/keystone/keystone-helpers.mjs +155 -0
- package/dist/keystone/keystone-helpers.mjs.map +1 -0
- package/dist/keystone/keystone-service-v1.d.mts +81 -0
- package/dist/keystone/keystone-service-v1.d.mts.map +1 -0
- package/dist/keystone/keystone-service-v1.mjs +606 -0
- package/dist/keystone/keystone-service-v1.mjs.map +1 -0
- package/dist/keystone/keystone-service-v1.respec.d.mts +2 -0
- package/dist/keystone/keystone-service-v1.respec.d.mts.map +1 -0
- package/dist/keystone/keystone-service-v1.respec.mjs +443 -0
- package/dist/keystone/keystone-service-v1.respec.mjs.map +1 -0
- package/dist/keystone/keystone-types.d.mts +231 -0
- package/dist/keystone/keystone-types.d.mts.map +1 -0
- package/dist/keystone/keystone-types.mjs +50 -0
- package/dist/keystone/keystone-types.mjs.map +1 -0
- package/dist/keystone/strategy/hash-reveal-v1/hash-reveal-v1.d.mts +35 -0
- package/dist/keystone/strategy/hash-reveal-v1/hash-reveal-v1.d.mts.map +1 -0
- package/dist/keystone/strategy/hash-reveal-v1/hash-reveal-v1.mjs +106 -0
- package/dist/keystone/strategy/hash-reveal-v1/hash-reveal-v1.mjs.map +1 -0
- package/dist/keystone/strategy/keystone-strategy-factory.d.mts +15 -0
- package/dist/keystone/strategy/keystone-strategy-factory.d.mts.map +1 -0
- package/dist/keystone/strategy/keystone-strategy-factory.mjs +26 -0
- package/dist/keystone/strategy/keystone-strategy-factory.mjs.map +1 -0
- package/dist/keystone/strategy/keystone-strategy.d.mts +48 -0
- package/dist/keystone/strategy/keystone-strategy.d.mts.map +1 -0
- package/dist/keystone/strategy/keystone-strategy.mjs +14 -0
- package/dist/keystone/strategy/keystone-strategy.mjs.map +1 -0
- package/dist/witness/agent/agent-constants.d.mts +9 -0
- package/dist/witness/agent/agent-constants.d.mts.map +1 -1
- package/dist/witness/agent/agent-constants.mjs +9 -0
- package/dist/witness/agent/agent-constants.mjs.map +1 -1
- package/dist/witness/agent/agent-one-file.d.mts.map +1 -1
- package/dist/witness/agent/agent-one-file.mjs.map +1 -1
- package/dist/witness/agent/agent-types.d.mts +4 -4
- package/dist/witness/agent/agent-types.d.mts.map +1 -1
- package/dist/witness/agent/agent-types.mjs +2 -3
- package/dist/witness/agent/agent-types.mjs.map +1 -1
- package/package.json +1 -1
- package/src/agent-texts/common-agent-texts.mts +35 -37
- package/src/agent-texts/primary-agent-texts.mts +20 -29
- package/src/agent-texts/project-agent-texts.mts +27 -28
- package/src/agent-texts/project-child-text-agent-texts.mts +29 -29
- package/src/agent-texts/projects-agent-texts.mts +14 -14
- package/src/agent-texts/raw-agent-texts.mts +16 -16
- package/src/agent-texts/text-editor-agent-texts.mts +18 -18
- package/src/common/project/project-constants.mts +2 -0
- package/src/common/project/project-helper.mts +2 -3
- package/src/keystone/keystone-config-builder.mts +186 -0
- package/src/keystone/keystone-constants.mts +16 -0
- package/src/keystone/keystone-helpers.mts +207 -0
- package/src/keystone/keystone-service-v1.mts +725 -0
- package/src/keystone/keystone-service-v1.respec.mts +540 -0
- package/src/keystone/keystone-types.mts +295 -0
- package/src/keystone/strategy/hash-reveal-v1/hash-reveal-v1.mts +145 -0
- package/src/keystone/strategy/keystone-strategy-factory.mts +35 -0
- package/src/keystone/strategy/keystone-strategy.mts +71 -0
- package/src/witness/agent/agent-constants.mts +10 -0
- package/src/witness/agent/agent-one-file.mts +0 -1
- package/src/witness/agent/agent-types.mts +9 -7
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { extractErrorMsg } from "@ibgib/helper-gib/dist/helpers/utils-helper.mjs";
|
|
2
|
+
import { getIbAndGib } from "@ibgib/ts-gib/dist/helper.mjs";
|
|
3
|
+
import { GLOBAL_LOG_A_LOT } from "../constants.mjs";
|
|
4
|
+
import { KEYSTONE_ATOM } from "./keystone-constants.mjs";
|
|
5
|
+
const logalot = GLOBAL_LOG_A_LOT;
|
|
6
|
+
/**
|
|
7
|
+
* space-delimited keystone ib containing select keystone metadata.
|
|
8
|
+
*
|
|
9
|
+
* NOTE: This must match {@link parseKeystoneIb}
|
|
10
|
+
* @see {@link KeystoneIbInfo_V1}
|
|
11
|
+
*/
|
|
12
|
+
export async function getKeystoneIb({ keystoneData, }) {
|
|
13
|
+
const lc = `[${getKeystoneIb.name}]`;
|
|
14
|
+
try {
|
|
15
|
+
if (logalot) {
|
|
16
|
+
console.log(`${lc} starting... (I: c3022a146faac9730154f34d1439a225)`);
|
|
17
|
+
}
|
|
18
|
+
const atom = KEYSTONE_ATOM;
|
|
19
|
+
const ib = [
|
|
20
|
+
atom,
|
|
21
|
+
].join(' ');
|
|
22
|
+
return ib;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
26
|
+
throw error;
|
|
27
|
+
}
|
|
28
|
+
finally {
|
|
29
|
+
if (logalot) {
|
|
30
|
+
console.log(`${lc} complete.`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* NOTE: This must match {@link getKeystoneIb}
|
|
36
|
+
* @see {@link KeystoneIbInfo_V1}
|
|
37
|
+
*/
|
|
38
|
+
export async function parseKeystoneIb({ ib, }) {
|
|
39
|
+
const lc = `[${parseKeystoneIb.name}]`;
|
|
40
|
+
try {
|
|
41
|
+
if (logalot) {
|
|
42
|
+
console.log(`${lc} starting... (I: 73cb6832984255ed48b2f44db6a21e25)`);
|
|
43
|
+
}
|
|
44
|
+
const [atom] = ib.split(' ');
|
|
45
|
+
if (atom !== KEYSTONE_ATOM) {
|
|
46
|
+
throw new Error(`invalid keystone ib. atom found in ib (${atom}) does not match keystone atom (${KEYSTONE_ATOM}) (E: 79b3d587824c4271b6e60acc76e0c825)`);
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
atom,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
if (logalot) {
|
|
58
|
+
console.log(`${lc} complete.`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The Policy Engine.
|
|
64
|
+
* Calculates exactly which challenges MUST be consumed based on config and demands.
|
|
65
|
+
* Enforces STRICT DISTINCTNESS (No double-dipping).
|
|
66
|
+
*/
|
|
67
|
+
export function getDeterministicRequirements({ pool, requiredChallengeIds, targetAddr }) {
|
|
68
|
+
const behavior = pool.config.behavior;
|
|
69
|
+
const mandatory = new Set();
|
|
70
|
+
// Start with all available IDs.
|
|
71
|
+
// We assume Object.keys respects insertion order (ES2015+), crucial for FIFO.
|
|
72
|
+
let available = Object.keys(pool.challenges);
|
|
73
|
+
// ---------------------------------------------------------
|
|
74
|
+
// 1. Alice's Demands (Explicit Requirements)
|
|
75
|
+
// ---------------------------------------------------------
|
|
76
|
+
if (requiredChallengeIds && requiredChallengeIds.length > 0) {
|
|
77
|
+
for (const id of requiredChallengeIds) {
|
|
78
|
+
if (!pool.challenges[id]) {
|
|
79
|
+
throw new Error(`(UNEXPECTED) Required challenge ID not found in pool: ${id} (E: 2c9f8...)`);
|
|
80
|
+
}
|
|
81
|
+
// Strict: Consume it.
|
|
82
|
+
if (!available.includes(id)) {
|
|
83
|
+
// Should be caught by check above, but handles duplicates in 'demands'
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
mandatory.add(id);
|
|
87
|
+
}
|
|
88
|
+
// Remove from available pool
|
|
89
|
+
available = available.filter(id => !mandatory.has(id));
|
|
90
|
+
}
|
|
91
|
+
// ---------------------------------------------------------
|
|
92
|
+
// 2. Target Binding (Explicit Buckets)
|
|
93
|
+
// ---------------------------------------------------------
|
|
94
|
+
if (behavior.targetBindingChars > 0 && targetAddr) {
|
|
95
|
+
const { gib } = getIbAndGib({ ibGibAddr: targetAddr });
|
|
96
|
+
if (gib) {
|
|
97
|
+
// Get required hex prefixes (e.g. 'a', 'b', 'c', '1')
|
|
98
|
+
const prefixes = gib.substring(0, behavior.targetBindingChars).toLowerCase();
|
|
99
|
+
for (const char of prefixes) {
|
|
100
|
+
// Look in the Explicit Bucket
|
|
101
|
+
const bucket = pool.bindingMap[char] || [];
|
|
102
|
+
// Find the first ID in this bucket that is still in 'available'
|
|
103
|
+
const match = bucket.find(id => available.includes(id));
|
|
104
|
+
if (!match) {
|
|
105
|
+
throw new Error(`Entropy Exhaustion. Cannot satisfy binding for char '${char}'. (E: 8d3a1...)`);
|
|
106
|
+
}
|
|
107
|
+
// Strict: Consume it.
|
|
108
|
+
mandatory.add(match);
|
|
109
|
+
available = available.filter(id => id !== match);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// ---------------------------------------------------------
|
|
114
|
+
// 3. FIFO (Sequential)
|
|
115
|
+
// ---------------------------------------------------------
|
|
116
|
+
if (behavior.selectSequentially > 0) {
|
|
117
|
+
// Take the first N from the remaining available list
|
|
118
|
+
if (available.length < behavior.selectSequentially) {
|
|
119
|
+
throw new Error(`Entropy Exhaustion. Insufficient challenges for FIFO requirement. (E: 9c2b4...)`);
|
|
120
|
+
}
|
|
121
|
+
const fifoIds = available.slice(0, behavior.selectSequentially);
|
|
122
|
+
fifoIds.forEach(id => mandatory.add(id));
|
|
123
|
+
// Remove from available
|
|
124
|
+
available = available.slice(behavior.selectSequentially);
|
|
125
|
+
}
|
|
126
|
+
return { mandatoryIds: mandatory, availableIds: available };
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Helper to update the Binding Map when adding new Challenge IDs.
|
|
130
|
+
* Uses "Implicit Bucketing" (ID start char) but can be extended for full coverage.
|
|
131
|
+
*/
|
|
132
|
+
export function addToBindingMap(map, challengeId) {
|
|
133
|
+
const firstChar = challengeId.charAt(0).toLowerCase();
|
|
134
|
+
// Validate it is hex
|
|
135
|
+
if (/[0-9a-f]/.test(firstChar)) {
|
|
136
|
+
if (!map[firstChar])
|
|
137
|
+
map[firstChar] = [];
|
|
138
|
+
map[firstChar].push(challengeId);
|
|
139
|
+
// OPTIONAL: Implement Full Coverage Strategy here?
|
|
140
|
+
// e.g. map[challengeId[1]].push(challengeId) ...
|
|
141
|
+
// For V1, we stick to Native/Implicit bucket (Index 0).
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Helper to clean up Binding Map when removing IDs.
|
|
146
|
+
*/
|
|
147
|
+
export function removeFromBindingMap(map, challengeId) {
|
|
148
|
+
// Since we don't know exactly which buckets an ID is in (if we did multi-bucket),
|
|
149
|
+
// we strictly should scan all. For V1 Native, we check first char.
|
|
150
|
+
// SAFE IMPLEMENTATION: Scan all buckets.
|
|
151
|
+
for (const key of Object.keys(map)) {
|
|
152
|
+
map[key] = map[key].filter(id => id !== challengeId);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=keystone-helpers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystone-helpers.mjs","sourceRoot":"","sources":["../../src/keystone/keystone-helpers.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { IbGibSpaceAny } from '@ibgib/core-gib/dist/witness/space/space-base-v1.mjs';
|
|
2
|
+
import { MetaspaceService } from '@ibgib/core-gib/dist/witness/space/metaspace/metaspace-types.mjs';
|
|
3
|
+
import { KeystoneIbGib_V1, KeystonePoolConfig, KeystoneClaim } from './keystone-types.mjs';
|
|
4
|
+
/**
|
|
5
|
+
* Facade for managing Keystone Identities.
|
|
6
|
+
*
|
|
7
|
+
* Handles Genesis, Authorized Evolution (Signing), and Validation.
|
|
8
|
+
*/
|
|
9
|
+
export declare class KeystoneService_V1 {
|
|
10
|
+
protected lc: string;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a brand new Keystone Identity Timeline.
|
|
13
|
+
*/
|
|
14
|
+
genesis({ masterSecret, configs, metaspace, space, }: {
|
|
15
|
+
masterSecret: string;
|
|
16
|
+
configs: KeystonePoolConfig[];
|
|
17
|
+
metaspace: MetaspaceService;
|
|
18
|
+
space: IbGibSpaceAny;
|
|
19
|
+
}): Promise<KeystoneIbGib_V1>;
|
|
20
|
+
/**
|
|
21
|
+
* Signs a claim using a hybrid selection strategy.
|
|
22
|
+
* Supports: Mandatory IDs (Alice) + Sequential (FIFO) + Random (Stochastic).
|
|
23
|
+
*/
|
|
24
|
+
sign({ latestKeystone, masterSecret, claim, poolId, requiredChallengeIds, frameDetails, metaspace, space, }: {
|
|
25
|
+
latestKeystone: KeystoneIbGib_V1;
|
|
26
|
+
masterSecret: string;
|
|
27
|
+
claim: Partial<KeystoneClaim>;
|
|
28
|
+
poolId?: string;
|
|
29
|
+
requiredChallengeIds?: string[];
|
|
30
|
+
frameDetails?: any;
|
|
31
|
+
metaspace: MetaspaceService;
|
|
32
|
+
space: IbGibSpaceAny;
|
|
33
|
+
}): Promise<KeystoneIbGib_V1>;
|
|
34
|
+
/**
|
|
35
|
+
* Validates the transition from Prev -> Curr.
|
|
36
|
+
* Enforces Cryptography AND Behavioral Policy.
|
|
37
|
+
*
|
|
38
|
+
* @returns Array of validation error strings. Empty array means Valid.
|
|
39
|
+
*/
|
|
40
|
+
validate({ currentIbGib, prevIbGib, }: {
|
|
41
|
+
currentIbGib: KeystoneIbGib_V1;
|
|
42
|
+
prevIbGib: KeystoneIbGib_V1;
|
|
43
|
+
metaspace: MetaspaceService;
|
|
44
|
+
space: IbGibSpaceAny;
|
|
45
|
+
}): Promise<string[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Permanently revokes the Identity.
|
|
48
|
+
*
|
|
49
|
+
* Logic:
|
|
50
|
+
* 1. Locates the 'revoke' pool.
|
|
51
|
+
* 2. Consumes ALL available challenges in that pool (Scorched Earth).
|
|
52
|
+
* 3. Sets the revocationInfo on the new frame.
|
|
53
|
+
*/
|
|
54
|
+
revoke({ latestKeystone, masterSecret, reason, frameDetails, metaspace, space, }: {
|
|
55
|
+
latestKeystone: KeystoneIbGib_V1;
|
|
56
|
+
masterSecret: string;
|
|
57
|
+
reason?: string;
|
|
58
|
+
frameDetails?: any;
|
|
59
|
+
metaspace: MetaspaceService;
|
|
60
|
+
space?: IbGibSpaceAny;
|
|
61
|
+
}): Promise<KeystoneIbGib_V1>;
|
|
62
|
+
/**
|
|
63
|
+
* Generates an opaque, collision-resistant ID for a challenge.
|
|
64
|
+
* Hash(Salt + Timestamp + Index)
|
|
65
|
+
*/
|
|
66
|
+
private generateOpaqueChallengeId;
|
|
67
|
+
private applyReplenishmentStrategy;
|
|
68
|
+
/**
|
|
69
|
+
* Creates a new keystone ibgib that has no dna and no past.
|
|
70
|
+
*/
|
|
71
|
+
private createKeystoneIbGibImpl;
|
|
72
|
+
/**
|
|
73
|
+
* for signing/revoking, the newData is entirely new per frame, i.e., we
|
|
74
|
+
* replace all relevant keystone information. IOW we are not just patching
|
|
75
|
+
* the data by adding or replacing keys, we are providing all pools, claim,
|
|
76
|
+
* solutions, required, and frameDetails. So this implementation is required
|
|
77
|
+
* to remove each of the old keys in the call to {@link mut8}.
|
|
78
|
+
*/
|
|
79
|
+
private evolveKeystoneIbGibImpl;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=keystone-service-v1.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystone-service-v1.d.mts","sourceRoot":"","sources":["../../src/keystone/keystone-service-v1.mts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kEAAkE,CAAC;AAGpG,OAAO,EAEH,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EAOhB,MAAM,sBAAsB,CAAC;AAW9B;;;;GAIG;AACH,qBAAa,kBAAkB;IAC3B,SAAS,CAAC,EAAE,EAAE,MAAM,CAAkC;IAEtD;;OAEG;IACG,OAAO,CAAC,EACV,YAAY,EACZ,OAAO,EACP,SAAS,EACT,KAAK,GACR,EAAE;QACC,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAC9B,SAAS,EAAE,gBAAgB,CAAC;QAC5B,KAAK,EAAE,aAAa,CAAC;KACxB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqD7B;;;OAGG;IACG,IAAI,CAAC,EACP,cAAc,EACd,YAAY,EACZ,KAAK,EACL,MAAM,EACN,oBAAyB,EACzB,YAAY,EACZ,SAAS,EACT,KAAK,GACR,EAAE;QACC,cAAc,EAAE,gBAAgB,CAAC;QACjC,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;QAChC,YAAY,CAAC,EAAE,GAAG,CAAC;QACnB,SAAS,EAAE,gBAAgB,CAAC;QAC5B,KAAK,EAAE,aAAa,CAAC;KACxB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmH7B;;;;;OAKG;IACG,QAAQ,CAAC,EACX,YAAY,EACZ,SAAS,GACZ,EAAE;QACC,YAAY,EAAE,gBAAgB,CAAC;QAC/B,SAAS,EAAE,gBAAgB,CAAC;QAC5B,SAAS,EAAE,gBAAgB,CAAC;QAC5B,KAAK,EAAE,aAAa,CAAC;KACxB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmGrB;;;;;;;OAOG;IACG,MAAM,CAAC,EACT,cAAc,EACd,YAAY,EACZ,MAAoC,EACpC,YAAY,EACZ,SAAS,EACT,KAAK,GACR,EAAE;QACC,cAAc,EAAE,gBAAgB,CAAC;QACjC,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,GAAG,CAAC;QACnB,SAAS,EAAE,gBAAgB,CAAC;QAC5B,KAAK,CAAC,EAAE,aAAa,CAAC;KACzB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA2F7B;;;OAGG;YACW,yBAAyB;YAgBzB,0BAA0B;IA+ExC;;OAEG;YACW,uBAAuB;IA0ErC;;;;;;OAMG;YACW,uBAAuB;CAuExC"}
|