@may-db/core 0.1.0 → 0.1.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.
package/README.md ADDED
@@ -0,0 +1,98 @@
1
+ # @may-db/core
2
+
3
+ Build collaborative apps on Matrix.
4
+ Bring your own server. No app backend.
5
+
6
+ ## Install
7
+
8
+ ```bash
9
+ pnpm add @may-db/core @may-db/react
10
+ ```
11
+
12
+ ## Tiny React example
13
+
14
+ One shared value (`Y.Text`), manual Yjs subscription.
15
+
16
+ ```tsx
17
+ import { useEffect, useMemo, useState } from "react";
18
+ import type { MayDb } from "@may-db/core";
19
+ import { useMayDb, useRoom } from "@may-db/react";
20
+
21
+ export function TinyNoteApp() {
22
+ const { status, db, login, userId } = useMayDb({ namespace: "com.may-db.tiny-note" });
23
+ const [roomId, setRoomId] = useState<string | null>(null);
24
+
25
+ if (status === "signed_out") {
26
+ return <button onClick={login}>Log in with Matrix</button>;
27
+ }
28
+
29
+ if (status !== "ready" || !db) {
30
+ return <p>Loading...</p>;
31
+ }
32
+
33
+ if (!roomId) {
34
+ return (
35
+ <main>
36
+ <p>Connected as {userId}</p>
37
+ <button
38
+ onClick={async () => {
39
+ const room = await db.rooms.create({ name: "Tiny Note" });
40
+ setRoomId(room.id);
41
+ }}
42
+ >
43
+ Create note room
44
+ </button>
45
+ </main>
46
+ );
47
+ }
48
+
49
+ return <TinyNoteRoom db={db} roomId={roomId} />;
50
+ }
51
+
52
+ function TinyNoteRoom({ db, roomId }: { db: MayDb; roomId: string }) {
53
+ const { doc, ready, canEdit } = useRoom({ db, roomId });
54
+ const note = useMemo(() => doc.getText("note"), [doc]);
55
+ const [, invalidate] = useState(0);
56
+
57
+ // Minimal Yjs -> React subscription to illustrate. Libraries exist to handle this.
58
+ useEffect(() => {
59
+ const onChange = () => invalidate((n) => n + 1);
60
+ note.observe(onChange);
61
+ return () => note.unobserve(onChange);
62
+ }, [note]);
63
+
64
+ if (!ready) {
65
+ return <p>Syncing room...</p>;
66
+ }
67
+
68
+ return (
69
+ <textarea
70
+ value={note.toString()}
71
+ onChange={(e) => {
72
+ const next = e.target.value;
73
+ note.doc?.transact(() => {
74
+ note.delete(0, note.length);
75
+ note.insert(0, next);
76
+ });
77
+ }}
78
+ disabled={!canEdit}
79
+ />
80
+ );
81
+ }
82
+ ```
83
+
84
+ ## API surface (app-facing)
85
+
86
+ - `useMayDb({ namespace })` -> Matrix auth/session + `db`
87
+ - `db.rooms.create/open/getOrCreateSingleton(...)`
88
+ - `useRoom({ db, roomId })` -> `doc`, `ready`, `canEdit`, `name`
89
+ - `room.members.*` to share a room with users
90
+ - `room.delegates.*` to share a room with the members of other rooms
91
+ - `db.invites.monitor(...)` to subscribe to newly-shared rooms
92
+ - `useRoomPresence(...)` to exchange presence/cursor with other users
93
+
94
+ ## Mental model
95
+
96
+ 1. Pick a stable `namespace` for your app.
97
+ 2. Create/open a Matrix room.
98
+ 3. Store collaborative data in `room.doc` (Yjs).
package/dist/MayDb.d.ts CHANGED
@@ -1,20 +1,37 @@
1
1
  import { Room } from "./Room";
2
- import type { AuthData, MatrixClient, InviteInfo, InviteMonitorOptions } from "./types";
2
+ import type { Session, MatrixClient, InviteInfo, InviteMonitorOptions } from "./types";
3
3
  export declare class MayDb {
4
- readonly auth: AuthData;
4
+ readonly session: Session;
5
5
  readonly userId: string;
6
6
  readonly namespace: string;
7
7
  /** @internal */
8
8
  readonly matrixClient: MatrixClient;
9
9
  private readonly roomCache;
10
- constructor(auth: AuthData, namespace: string);
11
- getRoom(roomId: string): Room;
12
- createRoom(title: string): Promise<Room>;
13
- createMatrixRoom(title: string): Promise<string>;
14
- fetchPendingInvites(): Promise<InviteInfo[]>;
15
- startInviteMonitor(options: InviteMonitorOptions): () => void;
16
- hasMarkerEvent(roomId: string): Promise<boolean>;
10
+ constructor(options: {
11
+ session: Session;
12
+ namespace: string;
13
+ });
14
+ readonly rooms: {
15
+ open: (roomId: string) => Room;
16
+ create: (options: {
17
+ name: string;
18
+ kind?: "room" | "space";
19
+ }) => Promise<Room>;
20
+ getOrCreateSingleton: (options: {
21
+ key: string;
22
+ name: string;
23
+ kind?: "room" | "space";
24
+ }) => Promise<Room>;
25
+ };
26
+ readonly invites: {
27
+ listPending: () => Promise<InviteInfo[]>;
28
+ monitor: (options: InviteMonitorOptions) => (() => void);
29
+ };
17
30
  disposeAll(): void;
18
31
  logout(): Promise<void>;
32
+ private openRoom;
33
+ private createMatrixRoom;
34
+ private getOrCreateSingletonRoomId;
35
+ private fetchPendingInvites;
19
36
  }
20
37
  //# sourceMappingURL=MayDb.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MayDb.d.ts","sourceRoot":"","sources":["../src/MayDb.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,oBAAoB,EAErB,MAAM,SAAS,CAAC;AAEjB,qBAAa,KAAK;IAChB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gBAAgB;IAChB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;gBAEzC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;IAY7C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAavB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2BhD,mBAAmB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAwElD,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAuCvD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAStD,UAAU,IAAI,IAAI;IAOZ,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAY9B"}
1
+ {"version":3,"file":"MayDb.d.ts","sourceRoot":"","sources":["../src/MayDb.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,UAAU,EACV,oBAAoB,EAErB,MAAM,SAAS,CAAC;AAEjB,qBAAa,KAAK;IAChB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gBAAgB;IAChB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;gBAEzC,OAAO,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAa5D,QAAQ,CAAC,KAAK;uBACG,MAAM,KAAG,IAAI;0BAEJ;YACtB,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;SACzB,KAAG,OAAO,CAAC,IAAI,CAAC;wCAKqB;YACpC,GAAG,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;SACzB,KAAG,OAAO,CAAC,IAAI,CAAC;MAIjB;IAEF,QAAQ,CAAC,OAAO;2BACS,OAAO,CAAC,UAAU,EAAE,CAAC;2BAEzB,oBAAoB,KAAG,CAAC,MAAM,IAAI,CAAC;MAwCtD;IAEF,UAAU,IAAI,IAAI;IAOZ,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAa7B,OAAO,CAAC,QAAQ;YAaF,gBAAgB;YA2BhB,0BAA0B;YAwD1B,mBAAmB;CAuElC"}
package/dist/MayDb.js CHANGED
@@ -1,25 +1,89 @@
1
1
  import * as sdk from "matrix-js-sdk";
2
2
  import { Room } from "./Room";
3
- import { removeAuth } from "./authStorage";
3
+ import { clearStoredSession } from "./authStorage";
4
4
  export class MayDb {
5
- auth;
5
+ session;
6
6
  userId;
7
7
  namespace;
8
8
  /** @internal */
9
9
  matrixClient;
10
10
  roomCache = new Map();
11
- constructor(auth, namespace) {
12
- this.auth = auth;
13
- this.userId = auth.userId;
11
+ constructor(options) {
12
+ const { session, namespace } = options;
13
+ this.session = session;
14
+ this.userId = session.userId;
14
15
  this.namespace = namespace;
15
16
  this.matrixClient = sdk.createClient({
16
- baseUrl: auth.homeserver,
17
- accessToken: auth.accessToken,
18
- userId: auth.userId,
19
- deviceId: auth.deviceId,
17
+ baseUrl: session.homeserver,
18
+ accessToken: session.accessToken,
19
+ userId: session.userId,
20
+ deviceId: session.deviceId,
20
21
  });
21
22
  }
22
- getRoom(roomId) {
23
+ rooms = {
24
+ open: (roomId) => this.openRoom(roomId),
25
+ create: async (options) => {
26
+ const roomId = await this.createMatrixRoom(options);
27
+ return this.openRoom(roomId);
28
+ },
29
+ getOrCreateSingleton: async (options) => {
30
+ const roomId = await this.getOrCreateSingletonRoomId(options);
31
+ return this.openRoom(roomId);
32
+ },
33
+ };
34
+ invites = {
35
+ listPending: async () => this.fetchPendingInvites(),
36
+ monitor: (options) => {
37
+ const { shouldJoin = (invite) => invite.alias?.startsWith(`#${this.namespace}-`) ?? false, onJoined, pollIntervalMs = 30000, } = options;
38
+ let stopped = false;
39
+ const checkInvites = async () => {
40
+ if (stopped)
41
+ return;
42
+ try {
43
+ const invites = await this.fetchPendingInvites();
44
+ for (const invite of invites) {
45
+ if (!shouldJoin(invite))
46
+ continue;
47
+ if (this.matrixClient.getRoom(invite.roomId))
48
+ continue;
49
+ await this.matrixClient.joinRoom(invite.roomId);
50
+ await onJoined(invite);
51
+ }
52
+ }
53
+ catch (err) {
54
+ console.error("Invite monitor error:", err);
55
+ }
56
+ };
57
+ void checkInvites();
58
+ const interval = setInterval(() => {
59
+ if (!stopped) {
60
+ void checkInvites();
61
+ }
62
+ }, pollIntervalMs);
63
+ return () => {
64
+ stopped = true;
65
+ clearInterval(interval);
66
+ };
67
+ },
68
+ };
69
+ disposeAll() {
70
+ for (const room of this.roomCache.values()) {
71
+ room.dispose();
72
+ }
73
+ this.roomCache.clear();
74
+ }
75
+ async logout() {
76
+ this.disposeAll();
77
+ try {
78
+ await this.matrixClient.logout();
79
+ }
80
+ catch {
81
+ // Ignore logout errors (e.g. network issues during logout)
82
+ }
83
+ this.matrixClient.stopClient();
84
+ clearStoredSession();
85
+ }
86
+ openRoom(roomId) {
23
87
  let room = this.roomCache.get(roomId);
24
88
  if (!room) {
25
89
  const services = {
@@ -31,20 +95,16 @@ export class MayDb {
31
95
  }
32
96
  return room;
33
97
  }
34
- async createRoom(title) {
35
- const roomId = await this.createMatrixRoom(title);
36
- return this.getRoom(roomId);
37
- }
38
- async createMatrixRoom(title) {
98
+ async createMatrixRoom(options) {
99
+ const { name } = options;
39
100
  const timestamp = Date.now();
40
101
  const randomSuffix = Math.random().toString(36).substring(2, 8);
41
102
  const localAlias = `${this.namespace}-${timestamp}-${randomSuffix}`;
42
103
  const response = await this.matrixClient.createRoom({
43
- name: title,
104
+ name,
44
105
  room_alias_name: localAlias,
45
106
  visibility: sdk.Visibility.Private,
46
107
  preset: sdk.Preset.PrivateChat,
47
- creation_content: { type: "m.space" },
48
108
  initial_state: [
49
109
  {
50
110
  type: "m.room.history_visibility",
@@ -59,6 +119,43 @@ export class MayDb {
59
119
  });
60
120
  return response.room_id;
61
121
  }
122
+ async getOrCreateSingletonRoomId(options) {
123
+ const { key, name } = options;
124
+ const userId = this.matrixClient.getUserId();
125
+ if (!userId)
126
+ throw new Error("Not logged in");
127
+ let roomId = null;
128
+ try {
129
+ const accountData = (await this.matrixClient.getAccountDataFromServer(this.namespace));
130
+ roomId = accountData?.[key] ?? null;
131
+ }
132
+ catch {
133
+ // No account data yet
134
+ }
135
+ if (roomId) {
136
+ try {
137
+ if (!this.matrixClient.getRoom(roomId)) {
138
+ await this.matrixClient.joinRoom(roomId);
139
+ }
140
+ }
141
+ catch {
142
+ roomId = null;
143
+ }
144
+ }
145
+ if (!roomId) {
146
+ roomId = await this.createMatrixRoom({ name });
147
+ let existingData = {};
148
+ try {
149
+ existingData =
150
+ (await this.matrixClient.getAccountDataFromServer(this.namespace)) || {};
151
+ }
152
+ catch {
153
+ // No existing data
154
+ }
155
+ await this.matrixClient.setAccountData(this.namespace, { ...existingData, [key]: roomId });
156
+ }
157
+ return roomId;
158
+ }
62
159
  async fetchPendingInvites() {
63
160
  const filter = {
64
161
  room: {
@@ -101,62 +198,5 @@ export class MayDb {
101
198
  }
102
199
  return invites;
103
200
  }
104
- startInviteMonitor(options) {
105
- const { shouldJoin = (invite) => invite.alias?.startsWith(`#${this.namespace}-`) ?? false, onJoined, pollIntervalMs = 30000, } = options;
106
- let stopped = false;
107
- const checkInvites = async () => {
108
- if (stopped)
109
- return;
110
- try {
111
- const invites = await this.fetchPendingInvites();
112
- for (const invite of invites) {
113
- if (!shouldJoin(invite))
114
- continue;
115
- if (this.matrixClient.getRoom(invite.roomId))
116
- continue;
117
- await this.matrixClient.joinRoom(invite.roomId);
118
- await onJoined(invite);
119
- }
120
- }
121
- catch (err) {
122
- console.error("Invite monitor error:", err);
123
- }
124
- };
125
- checkInvites();
126
- const interval = setInterval(() => {
127
- if (!stopped)
128
- checkInvites();
129
- }, pollIntervalMs);
130
- return () => {
131
- stopped = true;
132
- clearInterval(interval);
133
- };
134
- }
135
- async hasMarkerEvent(roomId) {
136
- try {
137
- const state = await this.matrixClient.roomState(roomId);
138
- return state.some((e) => e.type === this.namespace);
139
- }
140
- catch {
141
- return false;
142
- }
143
- }
144
- disposeAll() {
145
- for (const room of this.roomCache.values()) {
146
- room.dispose();
147
- }
148
- this.roomCache.clear();
149
- }
150
- async logout() {
151
- this.disposeAll();
152
- try {
153
- await this.matrixClient.logout();
154
- }
155
- catch {
156
- // Ignore logout errors (e.g. network issues during logout)
157
- }
158
- this.matrixClient.stopClient();
159
- removeAuth();
160
- }
161
201
  }
162
202
  //# sourceMappingURL=MayDb.js.map
package/dist/MayDb.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"MayDb.js","sourceRoot":"","sources":["../src/MayDb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MayDb.js","sourceRoot":"","sources":["../src/MayDb.ts"],"names":[],"mappings":"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"}
package/dist/Room.d.ts CHANGED
@@ -1,81 +1,64 @@
1
1
  import { Doc } from "yjs";
2
- import type { RoomStatus, RoomMetadata, RoomMember, AccessLevel, RoomServices } from "./types";
2
+ import type { RoomStatus, RoomMember, AccessLevel, RoomServices, RoomState } from "./types";
3
3
  import type { ToDeviceEvent } from "./presence";
4
- export interface RoomEvents {
5
- onStatusChange: (status: RoomStatus) => void;
6
- onMetadataChange: (metadata: RoomMetadata) => void;
7
- onCanWriteChange: (canWrite: boolean) => void;
4
+ export interface RoomDelegate {
5
+ roomId: string;
6
+ name: string;
8
7
  }
9
8
  export declare class Room {
10
- readonly roomId: string;
9
+ readonly id: string;
11
10
  readonly doc: Doc;
12
- services: RoomServices;
11
+ private readonly services;
13
12
  private provider;
14
13
  private connectPromise;
15
- private _status;
16
- private _canWrite;
17
- private _metadata;
14
+ private _state;
18
15
  private listeners;
19
16
  constructor(services: RoomServices, roomId: string);
17
+ get state(): RoomState;
20
18
  get status(): RoomStatus;
21
- get canWrite(): boolean;
19
+ get canEdit(): boolean;
22
20
  get isConnected(): boolean;
23
- get metadata(): RoomMetadata | null;
21
+ get name(): string | null;
24
22
  get userId(): string | null;
25
23
  get userDisplayName(): string | null;
26
- subscribe(listener: Partial<RoomEvents>): () => void;
27
- getRoomName(roomId?: string): Promise<string>;
28
- getMembers(): Promise<RoomMember[]>;
29
- isMember(): Promise<boolean>;
30
- getRoomMemberIds(): Promise<string[]>;
31
- /**
32
- * Resolve delegate rooms currently allowed via restricted join rules.
33
- */
34
- getDelegateRoomIds(): Promise<string[]>;
35
- /**
36
- * Poll for to-device events using a minimal Matrix sync.
37
- * Returns new events and the next sync token for incremental polling.
38
- */
39
- pollToDeviceEvents(sinceToken: string | null): Promise<{
40
- events: ToDeviceEvent[];
41
- nextBatch: string;
42
- }>;
43
- /**
44
- * Connect the Y.js store to Matrix for this room.
45
- * Safe to call multiple times - will no-op if already connected.
46
- * Resolves when the Y.js document is available (synced from Matrix).
47
- */
24
+ subscribe(listener: (state: RoomState) => void): () => void;
25
+ readonly members: {
26
+ list: () => Promise<RoomMember[]>;
27
+ invite: (userId: string, access: AccessLevel) => Promise<void>;
28
+ setAccess: (userId: string, access: AccessLevel) => Promise<void>;
29
+ remove: (userId: string) => Promise<void>;
30
+ };
31
+ readonly delegates: {
32
+ list: () => Promise<RoomDelegate[]>;
33
+ add: (delegateRoomId: string) => Promise<void>;
34
+ remove: (delegateRoomId: string) => Promise<void>;
35
+ };
36
+ readonly toDevice: {
37
+ send: (eventType: string, content: unknown) => Promise<void>;
38
+ poll: (sinceToken: string | null) => Promise<{
39
+ events: ToDeviceEvent[];
40
+ nextBatch: string;
41
+ }>;
42
+ };
48
43
  connect(): Promise<void>;
49
44
  disconnect(): void;
50
- /**
51
- * Fully dispose this room instance (disconnects and removes from cache).
52
- */
53
45
  dispose(): void;
54
- refreshMetadata(): Promise<RoomMetadata>;
55
- setRoomName(title: string): Promise<void>;
56
- invite(userId: string, access: AccessLevel): Promise<void>;
57
- setAccess(userId: string, access: AccessLevel): Promise<void>;
58
- kick(userId: string): Promise<void>;
59
- join(): Promise<boolean>;
60
- /**
61
- * Ensure the current user is a member of this room.
62
- * No-op if already joined. Attempts to join otherwise.
63
- * Throws if the join fails.
64
- */
46
+ refresh(): Promise<RoomState>;
47
+ rename(name: string): Promise<void>;
65
48
  ensureJoined(): Promise<void>;
66
- addDelegateRoom(delegateRoomId: string): Promise<void>;
67
- removeDelegateRoom(delegateRoomId: string): Promise<void>;
68
- sendToDevice(eventType: string, content: unknown): Promise<void>;
69
- /**
70
- * Internal/private implementation details.
71
- */
72
49
  private get matrixClient();
50
+ private emitState;
51
+ private setStatus;
73
52
  private doConnect;
74
- private canEdit;
53
+ private getRoomName;
54
+ private getMembers;
55
+ private isMember;
56
+ private getRoomMemberIds;
57
+ private getDelegateRoomIds;
58
+ private pollToDeviceEvents;
59
+ private canUserEdit;
75
60
  private accessToPowerLevel;
76
61
  private powerLevelToAccess;
77
62
  private setUserPowerLevel;
78
- private emit;
79
- private setStatus;
80
63
  }
81
64
  //# sourceMappingURL=Room.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Room.d.ts","sourceRoot":"","sources":["../src/Room.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Room.d.ts","sourceRoot":"","sources":["../src/Room.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,SAAS,EACV,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,IAAI;IACf,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IAExC,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,MAAM,CAIZ;IACF,OAAO,CAAC,SAAS,CAAyC;gBAE9C,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAMlD,IAAI,KAAK,IAAI,SAAS,CAErB;IAED,IAAI,MAAM,IAAI,UAAU,CAEvB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,CAExB;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED,IAAI,eAAe,IAAI,MAAM,GAAG,IAAI,CAInC;IAED,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,MAAM,IAAI;IAK3D,QAAQ,CAAC,OAAO;oBACE,OAAO,CAAC,UAAU,EAAE,CAAC;yBAEd,MAAM,UAAU,WAAW,KAAG,OAAO,CAAC,IAAI,CAAC;4BAMxC,MAAM,UAAU,WAAW,KAAG,OAAO,CAAC,IAAI,CAAC;yBAK9C,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;MAG7C;IAEF,QAAQ,CAAC,SAAS;oBACA,OAAO,CAAC,YAAY,EAAE,CAAC;8BAUX,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;iCAoBnB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;MAsBrD;IAEF,QAAQ,CAAC,QAAQ;0BACS,MAAM,WAAW,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;2BAmBvC,MAAM,GAAG,IAAI,KAAG,OAAO,CAAC;YAC/C,MAAM,EAAE,aAAa,EAAE,CAAC;YACxB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;MACF;IAEI,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B,UAAU,IAAI,IAAI;IAalB,OAAO,IAAI,IAAI;IAMT,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;IAc7B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,SAAS;YAUH,SAAS;YAkDT,WAAW;YAYX,UAAU;YAwBV,QAAQ;YAaR,gBAAgB;YAQhB,kBAAkB;YAsBlB,kBAAkB;YAmClB,WAAW;IAkBzB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,kBAAkB;YAMZ,iBAAiB;CAyBhC"}