studiograph 1.3.48-next.48 → 1.3.48-next.49

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 (193) hide show
  1. package/dist/agent/followups.d.ts +34 -0
  2. package/dist/agent/followups.js +52 -0
  3. package/dist/agent/followups.js.map +1 -0
  4. package/dist/agent/orchestrator.js +1 -1
  5. package/dist/agent/orchestrator.js.map +1 -1
  6. package/dist/agent/skill-loader.js +3 -1
  7. package/dist/agent/skill-loader.js.map +1 -1
  8. package/dist/agent/tools/graph-tools.js +35 -9
  9. package/dist/agent/tools/graph-tools.js.map +1 -1
  10. package/dist/agent/tools/message-tools.d.ts +2 -1
  11. package/dist/agent/tools/message-tools.js +8 -6
  12. package/dist/agent/tools/message-tools.js.map +1 -1
  13. package/dist/cli/commands/start.js +122 -45
  14. package/dist/cli/commands/start.js.map +1 -1
  15. package/dist/core/graph.js +14 -4
  16. package/dist/core/graph.js.map +1 -1
  17. package/dist/mcp/tools.js +11 -11
  18. package/dist/mcp/tools.js.map +1 -1
  19. package/dist/server/chrome/chrome.js +17 -1
  20. package/dist/server/index.js +2 -2
  21. package/dist/server/index.js.map +1 -1
  22. package/dist/server/routes/asset-api.js +46 -34
  23. package/dist/server/routes/asset-api.js.map +1 -1
  24. package/dist/server/routes/auth-api.js +91 -2
  25. package/dist/server/routes/auth-api.js.map +1 -1
  26. package/dist/server/routes/chat.js +4 -12
  27. package/dist/server/routes/chat.js.map +1 -1
  28. package/dist/server/routes/git-http.js +10 -16
  29. package/dist/server/routes/git-http.js.map +1 -1
  30. package/dist/server/routes/graph-api.js +80 -28
  31. package/dist/server/routes/graph-api.js.map +1 -1
  32. package/dist/server/routes/insights-api.js +6 -4
  33. package/dist/server/routes/insights-api.js.map +1 -1
  34. package/dist/server/routes/meeting-ingest-api.js +14 -1
  35. package/dist/server/routes/meeting-ingest-api.js.map +1 -1
  36. package/dist/server/routes/messages-api.js +15 -13
  37. package/dist/server/routes/messages-api.js.map +1 -1
  38. package/dist/server/routes/permissions-api.d.ts +5 -4
  39. package/dist/server/routes/permissions-api.js +14 -14
  40. package/dist/server/routes/permissions-api.js.map +1 -1
  41. package/dist/server/routes/workspace-api.d.ts +2 -1
  42. package/dist/server/routes/workspace-api.js +17 -1
  43. package/dist/server/routes/workspace-api.js.map +1 -1
  44. package/dist/server/routes/ws.d.ts +2 -1
  45. package/dist/server/routes/ws.js +52 -9
  46. package/dist/server/routes/ws.js.map +1 -1
  47. package/dist/server/yjs-manager.js +37 -0
  48. package/dist/server/yjs-manager.js.map +1 -1
  49. package/dist/services/access-control.d.ts +7 -3
  50. package/dist/services/access-control.js +30 -3
  51. package/dist/services/access-control.js.map +1 -1
  52. package/dist/services/auth-service.d.ts +16 -0
  53. package/dist/services/auth-service.js +45 -5
  54. package/dist/services/auth-service.js.map +1 -1
  55. package/dist/services/personal-folder.d.ts +25 -0
  56. package/dist/services/personal-folder.js +70 -0
  57. package/dist/services/personal-folder.js.map +1 -1
  58. package/dist/web/_app/immutable/assets/0.D03EHRDg.css +1 -0
  59. package/dist/web/_app/immutable/assets/11.VuZ0yuu4.css +1 -0
  60. package/dist/web/_app/immutable/assets/12.CBEP3aNg.css +1 -0
  61. package/dist/web/_app/immutable/assets/2.aJMJyx3M.css +1 -0
  62. package/dist/web/_app/immutable/assets/3.BbA-zR0F.css +1 -0
  63. package/dist/web/_app/immutable/assets/{4.Bw-eH9Xv.css → 4.BsFe8Ecx.css} +1 -1
  64. package/dist/web/_app/immutable/assets/ChevronLeft.DJHXltBB.css +1 -0
  65. package/dist/web/_app/immutable/assets/StopFilledAlt.kEJgOmBk.css +1 -0
  66. package/dist/web/_app/immutable/assets/ViewToolbar.CV6Us0fJ.css +1 -0
  67. package/dist/web/_app/immutable/assets/WorkspaceView.CFKNfZSY.css +1 -0
  68. package/dist/web/_app/immutable/chunks/{BJVJpWzz.js → 24nU6DRU.js} +1 -1
  69. package/dist/web/_app/immutable/chunks/B24A6jAy.js +6 -0
  70. package/dist/web/_app/immutable/chunks/B8CgkcYZ.js +1 -0
  71. package/dist/web/_app/immutable/chunks/{Bw_Pp-Pz.js → B9qwNmSf.js} +1 -1
  72. package/dist/web/_app/immutable/chunks/BXIcKgYy.js +1 -0
  73. package/dist/web/_app/immutable/chunks/{C7PgRgxX.js → BiMb3uU3.js} +1 -1
  74. package/dist/web/_app/immutable/chunks/C-KRPd1f.js +1 -0
  75. package/dist/web/_app/immutable/chunks/{Ckiai0LF.js → C3QX_pgn.js} +2 -2
  76. package/dist/web/_app/immutable/chunks/C3rmQoP5.js +4 -0
  77. package/dist/web/_app/immutable/chunks/C6NT3aAi.js +2 -0
  78. package/dist/web/_app/immutable/chunks/CBFBKav7.js +1 -0
  79. package/dist/web/_app/immutable/chunks/CH1XwVFs.js +5 -0
  80. package/dist/web/_app/immutable/chunks/{BCJtO6Up.js → CKD7VXBr.js} +1 -1
  81. package/dist/web/_app/immutable/chunks/CLJcKDW0.js +1 -0
  82. package/dist/web/_app/immutable/chunks/CS21N7mS.js +2 -0
  83. package/dist/web/_app/immutable/chunks/CawK5k-Y.js +13 -0
  84. package/dist/web/_app/immutable/chunks/CbhBH-Pr.js +1 -0
  85. package/dist/web/_app/immutable/chunks/CdRP-PQd.js +1 -0
  86. package/dist/web/_app/immutable/chunks/CgtGEUwG.js +1 -0
  87. package/dist/web/_app/immutable/chunks/{Bz0ZjVQE.js → ChqmDGF0.js} +1 -1
  88. package/dist/web/_app/immutable/chunks/CjyOT5ru.js +1 -0
  89. package/dist/web/_app/immutable/chunks/Cm3t5Lw_.js +1 -0
  90. package/dist/web/_app/immutable/chunks/Cq78Q8ao.js +1 -0
  91. package/dist/web/_app/immutable/chunks/CqJvlJ5e.js +1 -0
  92. package/dist/web/_app/immutable/chunks/D-eQH68P.js +1 -0
  93. package/dist/web/_app/immutable/chunks/D6uxAoMD.js +1 -0
  94. package/dist/web/_app/immutable/chunks/{UPEqhJHW.js → D78L3NHT.js} +1 -1
  95. package/dist/web/_app/immutable/chunks/D8l98jpc.js +1 -0
  96. package/dist/web/_app/immutable/chunks/D98nKNS8.js +5 -0
  97. package/dist/web/_app/immutable/chunks/{oIb8yPFh.js → DBrWPzSo.js} +4 -4
  98. package/dist/web/_app/immutable/chunks/DHBDhuM5.js +1 -0
  99. package/dist/web/_app/immutable/chunks/DHZ8iEPd.js +1 -0
  100. package/dist/web/_app/immutable/chunks/DODkJf9W.js +1 -0
  101. package/dist/web/_app/immutable/chunks/DZynkbIh.js +1 -0
  102. package/dist/web/_app/immutable/chunks/Dc-pYwK_.js +1 -0
  103. package/dist/web/_app/immutable/chunks/DiVMY2ie.js +1 -0
  104. package/dist/web/_app/immutable/chunks/DjYhk3V-.js +1 -0
  105. package/dist/web/_app/immutable/chunks/Dk4o-8uR.js +1 -0
  106. package/dist/web/_app/immutable/chunks/QvIJHVST.js +1 -0
  107. package/dist/web/_app/immutable/chunks/VHoDNwgF.js +1 -0
  108. package/dist/web/_app/immutable/chunks/{gZfO0DkI.js → _LqPzIoq.js} +1 -1
  109. package/dist/web/_app/immutable/chunks/{BDtxhI5r.js → _rGNAZ2T.js} +1 -1
  110. package/dist/web/_app/immutable/chunks/bBh4-vdc.js +1 -0
  111. package/dist/web/_app/immutable/chunks/iRhbt-db.js +2 -0
  112. package/dist/web/_app/immutable/chunks/ouoe_5n-.js +3 -0
  113. package/dist/web/_app/immutable/chunks/xUpz_Ego.js +1 -0
  114. package/dist/web/_app/immutable/entry/app.tgSpN2zy.js +2 -0
  115. package/dist/web/_app/immutable/entry/start.CYDu1-na.js +1 -0
  116. package/dist/web/_app/immutable/nodes/0.O_BpuEVv.js +2 -0
  117. package/dist/web/_app/immutable/nodes/1.BCH0rc1N.js +1 -0
  118. package/dist/web/_app/immutable/nodes/10.BdAZrtUP.js +1 -0
  119. package/dist/web/_app/immutable/nodes/11.Dh4nuff7.js +1 -0
  120. package/dist/web/_app/immutable/nodes/12.DRrTb8yT.js +1 -0
  121. package/dist/web/_app/immutable/nodes/2.DhSERXR4.js +268 -0
  122. package/dist/web/_app/immutable/nodes/3.CEgK5MQt.js +5 -0
  123. package/dist/web/_app/immutable/nodes/4.BKj4xQOT.js +11 -0
  124. package/dist/web/_app/immutable/nodes/5.Be1XlKLD.js +1 -0
  125. package/dist/web/_app/immutable/nodes/6.Cen-Be5t.js +1 -0
  126. package/dist/web/_app/immutable/nodes/7.BiEGRqIm.js +1 -0
  127. package/dist/web/_app/immutable/nodes/8.Be00K7Ga.js +1 -0
  128. package/dist/web/_app/immutable/nodes/9.CnZz8P2s.js +1 -0
  129. package/dist/web/_app/version.json +1 -1
  130. package/dist/web/favicon.png +0 -0
  131. package/dist/web/index.html +12 -12
  132. package/package.json +1 -1
  133. package/dist/web/_app/immutable/assets/0.C5UfMb0y.css +0 -1
  134. package/dist/web/_app/immutable/assets/11.BysgAqqA.css +0 -1
  135. package/dist/web/_app/immutable/assets/12.Cv7_3lm3.css +0 -1
  136. package/dist/web/_app/immutable/assets/2.DF2alPoJ.css +0 -1
  137. package/dist/web/_app/immutable/assets/3.K3A_7PML.css +0 -1
  138. package/dist/web/_app/immutable/assets/ChevronLeft.DkKx6zzU.css +0 -1
  139. package/dist/web/_app/immutable/assets/ViewToolbar.SyuJrtFp.css +0 -1
  140. package/dist/web/_app/immutable/assets/WorkspaceView.CFCGULVf.css +0 -1
  141. package/dist/web/_app/immutable/chunks/B-8WiidI.js +0 -1
  142. package/dist/web/_app/immutable/chunks/B0UhiMeL.js +0 -1
  143. package/dist/web/_app/immutable/chunks/B1f42VKu.js +0 -1
  144. package/dist/web/_app/immutable/chunks/B584Plw_.js +0 -2
  145. package/dist/web/_app/immutable/chunks/B9rnDSMy.js +0 -1
  146. package/dist/web/_app/immutable/chunks/BK42PcDI.js +0 -1
  147. package/dist/web/_app/immutable/chunks/BMB60CtO.js +0 -1
  148. package/dist/web/_app/immutable/chunks/BQiOMhgK.js +0 -1
  149. package/dist/web/_app/immutable/chunks/BT1EtT-T.js +0 -4
  150. package/dist/web/_app/immutable/chunks/BUzEKAuP.js +0 -1
  151. package/dist/web/_app/immutable/chunks/BVXp0xQD.js +0 -1
  152. package/dist/web/_app/immutable/chunks/BaMdMBD6.js +0 -1
  153. package/dist/web/_app/immutable/chunks/Bjbdko8J.js +0 -1
  154. package/dist/web/_app/immutable/chunks/BvVwTRB5.js +0 -1
  155. package/dist/web/_app/immutable/chunks/CBiBLuiK.js +0 -1
  156. package/dist/web/_app/immutable/chunks/CH2ArZqX.js +0 -18
  157. package/dist/web/_app/immutable/chunks/COSWCWJc.js +0 -1
  158. package/dist/web/_app/immutable/chunks/CTh3LGxI.js +0 -1
  159. package/dist/web/_app/immutable/chunks/CVWN0my4.js +0 -5
  160. package/dist/web/_app/immutable/chunks/CXKVCl01.js +0 -2
  161. package/dist/web/_app/immutable/chunks/Ca1DAtQh.js +0 -2
  162. package/dist/web/_app/immutable/chunks/CcmvIPLE.js +0 -1
  163. package/dist/web/_app/immutable/chunks/CdbeIqEu.js +0 -1
  164. package/dist/web/_app/immutable/chunks/ChL9MLYT.js +0 -1
  165. package/dist/web/_app/immutable/chunks/CmQUXR-Q.js +0 -1
  166. package/dist/web/_app/immutable/chunks/D3dgfs75.js +0 -1
  167. package/dist/web/_app/immutable/chunks/D4zk90z_.js +0 -1
  168. package/dist/web/_app/immutable/chunks/DFYOFE3o.js +0 -1
  169. package/dist/web/_app/immutable/chunks/DGvzULxd.js +0 -2
  170. package/dist/web/_app/immutable/chunks/DXlELvfC.js +0 -1
  171. package/dist/web/_app/immutable/chunks/DckX78C-.js +0 -1
  172. package/dist/web/_app/immutable/chunks/Derf2KR0.js +0 -1
  173. package/dist/web/_app/immutable/chunks/IWO0A1w9.js +0 -1
  174. package/dist/web/_app/immutable/chunks/PHw7Ht7D.js +0 -1
  175. package/dist/web/_app/immutable/chunks/QtcHHeRi.js +0 -1
  176. package/dist/web/_app/immutable/chunks/_FGjjD9P.js +0 -1
  177. package/dist/web/_app/immutable/chunks/hXfpX92g.js +0 -1
  178. package/dist/web/_app/immutable/chunks/xNAOqGHi.js +0 -3
  179. package/dist/web/_app/immutable/entry/app.DZZk9FhL.js +0 -2
  180. package/dist/web/_app/immutable/entry/start.7xpU_KlK.js +0 -1
  181. package/dist/web/_app/immutable/nodes/0.BoP7EznM.js +0 -2
  182. package/dist/web/_app/immutable/nodes/1.D88C7B3J.js +0 -1
  183. package/dist/web/_app/immutable/nodes/10.-ZvCdP8I.js +0 -1
  184. package/dist/web/_app/immutable/nodes/11.BykVkP_y.js +0 -1
  185. package/dist/web/_app/immutable/nodes/12.D3wEsz-7.js +0 -1
  186. package/dist/web/_app/immutable/nodes/2.CIsXawC1.js +0 -266
  187. package/dist/web/_app/immutable/nodes/3.gLLCp7pi.js +0 -5
  188. package/dist/web/_app/immutable/nodes/4.DBRtBuw0.js +0 -11
  189. package/dist/web/_app/immutable/nodes/5.Cl_maDlW.js +0 -1
  190. package/dist/web/_app/immutable/nodes/6.BcAq3XZ9.js +0 -1
  191. package/dist/web/_app/immutable/nodes/7.BkUvTb7i.js +0 -1
  192. package/dist/web/_app/immutable/nodes/8.C1Hsaxzw.js +0 -1
  193. package/dist/web/_app/immutable/nodes/9.SeWvoOCo.js +0 -1
@@ -16,6 +16,10 @@
16
16
  * (shared folders are visible to owners, solo folders stay private).
17
17
  * - A user can write to a folder if they are a folder member (role = admin|editor),
18
18
  * or if they are the workspace owner on a shared folder.
19
+ * - A folder with `personal: true` is only visible/writable to its owner,
20
+ * regardless of folder_access grants or workspace ownership. Stale grants
21
+ * (from an older sharing attempt or test setup) cannot leak a user's
22
+ * private notes to another account.
19
23
  */
20
24
  import type { WorkspaceManager } from '../core/workspace-manager.js';
21
25
  import type { RepoConfig } from '../core/types.js';
@@ -27,18 +31,18 @@ import { type AuthService, type AuthUser } from './auth-service.js';
27
31
  */
28
32
  export declare function getAccessibleRepos(user: AuthUser | undefined, workspaceManager: WorkspaceManager, authService: AuthService): RepoConfig[];
29
33
  /** True if the user may read the given folder's contents. */
30
- export declare function hasRepoAccess(user: AuthUser | undefined, repoName: string, authService: AuthService): boolean;
34
+ export declare function hasRepoAccess(user: AuthUser | undefined, repoName: string, workspaceManager: WorkspaceManager, authService: AuthService): boolean;
31
35
  /** True if the user is a folder admin on the given repo, OR a workspace
32
36
  * owner on a shared folder (>1 member). Solo/private folders require
33
37
  * actual folder-admin membership — workspace ownership alone does not
34
38
  * let owners rename, delete, or push members into a private folder. */
35
- export declare function isFolderAdminOrOwner(user: AuthUser | undefined, repoName: string, authService: AuthService): boolean;
39
+ export declare function isFolderAdminOrOwner(user: AuthUser | undefined, repoName: string, workspaceManager: WorkspaceManager, authService: AuthService): boolean;
36
40
  /**
37
41
  * True if the user may write (create/update/delete entities) in the given folder.
38
42
  * Membership grants write access regardless of role (both 'admin' and 'editor'
39
43
  * can edit), and workspace owners can write to shared folders.
40
44
  */
41
- export declare function canWriteRepo(user: AuthUser | undefined, repoName: string, authService: AuthService): boolean;
45
+ export declare function canWriteRepo(user: AuthUser | undefined, repoName: string, workspaceManager: WorkspaceManager, authService: AuthService): boolean;
42
46
  /**
43
47
  * Build a set of all entity IDs visible to the user across their accessible
44
48
  * folders. Returns null when the caller is unidentified (no filtering needed —
@@ -16,8 +16,26 @@
16
16
  * (shared folders are visible to owners, solo folders stay private).
17
17
  * - A user can write to a folder if they are a folder member (role = admin|editor),
18
18
  * or if they are the workspace owner on a shared folder.
19
+ * - A folder with `personal: true` is only visible/writable to its owner,
20
+ * regardless of folder_access grants or workspace ownership. Stale grants
21
+ * (from an older sharing attempt or test setup) cannot leak a user's
22
+ * private notes to another account.
19
23
  */
20
24
  import { isWorkspaceOwner } from './auth-service.js';
25
+ /** True if the folder is `personal: true` and the caller is not its owner.
26
+ * The personal flag is an owner-private invariant: it overrides folder_access
27
+ * rows and workspace ownership. Unidentified callers (open mode / API key)
28
+ * are never restricted — `undefined` user means full access. */
29
+ function isRestrictedPersonalFolder(user, repoName, workspaceManager) {
30
+ if (!user)
31
+ return false;
32
+ const repo = workspaceManager.getRepoConfig(repoName);
33
+ if (!repo?.personal)
34
+ return false;
35
+ // Missing owner_id on a personal folder would be a config bug; err on
36
+ // the side of deny to avoid leaking content.
37
+ return repo.owner_id === undefined || repo.owner_id !== user.id;
38
+ }
21
39
  /**
22
40
  * Return the list of repos the user can access (content visibility).
23
41
  * Unidentified caller (undefined) → full access, preserves legacy
@@ -30,6 +48,9 @@ export function getAccessibleRepos(user, workspaceManager, authService) {
30
48
  const allowed = new Set(authService.getUserFolders(user.id));
31
49
  const isOwner = isWorkspaceOwner(user.role);
32
50
  return allRepos.filter(r => {
51
+ // Personal folders are owner-only, regardless of grants.
52
+ if (r.personal && r.owner_id !== user.id)
53
+ return false;
33
54
  if (allowed.has(r.name))
34
55
  return true;
35
56
  if (isOwner && authService.getFolderMembers(r.name).length > 1)
@@ -38,9 +59,11 @@ export function getAccessibleRepos(user, workspaceManager, authService) {
38
59
  });
39
60
  }
40
61
  /** True if the user may read the given folder's contents. */
41
- export function hasRepoAccess(user, repoName, authService) {
62
+ export function hasRepoAccess(user, repoName, workspaceManager, authService) {
42
63
  if (!user)
43
64
  return true;
65
+ if (isRestrictedPersonalFolder(user, repoName, workspaceManager))
66
+ return false;
44
67
  if (authService.getUserFolders(user.id).includes(repoName))
45
68
  return true;
46
69
  if (isWorkspaceOwner(user.role) && authService.getFolderMembers(repoName).length > 1)
@@ -51,9 +74,11 @@ export function hasRepoAccess(user, repoName, authService) {
51
74
  * owner on a shared folder (>1 member). Solo/private folders require
52
75
  * actual folder-admin membership — workspace ownership alone does not
53
76
  * let owners rename, delete, or push members into a private folder. */
54
- export function isFolderAdminOrOwner(user, repoName, authService) {
77
+ export function isFolderAdminOrOwner(user, repoName, workspaceManager, authService) {
55
78
  if (!user)
56
79
  return true;
80
+ if (isRestrictedPersonalFolder(user, repoName, workspaceManager))
81
+ return false;
57
82
  if (authService.isFolderAdmin(user.id, repoName))
58
83
  return true;
59
84
  if (isWorkspaceOwner(user.role) && authService.getFolderMembers(repoName).length > 1)
@@ -65,9 +90,11 @@ export function isFolderAdminOrOwner(user, repoName, authService) {
65
90
  * Membership grants write access regardless of role (both 'admin' and 'editor'
66
91
  * can edit), and workspace owners can write to shared folders.
67
92
  */
68
- export function canWriteRepo(user, repoName, authService) {
93
+ export function canWriteRepo(user, repoName, workspaceManager, authService) {
69
94
  if (!user)
70
95
  return true;
96
+ if (isRestrictedPersonalFolder(user, repoName, workspaceManager))
97
+ return false;
71
98
  const role = authService.getFolderRole(user.id, repoName);
72
99
  if (role === 'admin' || role === 'editor')
73
100
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"access-control.js","sourceRoot":"","sources":["../../src/services/access-control.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"access-control.js","sourceRoot":"","sources":["../../src/services/access-control.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,EAAE,gBAAgB,EAAmC,MAAM,mBAAmB,CAAC;AAEtF;;;iEAGiE;AACjE,SAAS,0BAA0B,CACjC,IAA0B,EAC1B,QAAgB,EAChB,gBAAkC;IAElC,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,IAAI,GAAG,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI,EAAE,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClC,sEAAsE;IACtE,6CAA6C;IAC7C,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAA0B,EAC1B,gBAAkC,EAClC,WAAwB;IAExB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,iBAAiB,EAAE,CAAC;IACtD,IAAI,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACzB,yDAAyD;QACzD,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QACvD,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,OAAO,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,aAAa,CAC3B,IAA0B,EAC1B,QAAgB,EAChB,gBAAkC,EAClC,WAAwB;IAExB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,0BAA0B,CAAC,IAAI,EAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,IAAI,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACxE,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClG,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;wEAGwE;AACxE,MAAM,UAAU,oBAAoB,CAClC,IAA0B,EAC1B,QAAgB,EAChB,gBAAkC,EAClC,WAAwB;IAExB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,0BAA0B,CAAC,IAAI,EAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,IAAI,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9D,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClG,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,IAA0B,EAC1B,QAAgB,EAChB,gBAAkC,EAClC,WAAwB;IAExB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,0BAA0B,CAAC,IAAI,EAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,MAAM,IAAI,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1D,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClG,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAA0B,EAC1B,gBAAkC,EAClC,WAAwB;IAExB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;gBACjC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,eAAe,CAAC,SAAmB,EAAE,aAAiC;IACpF,IAAI,CAAC,aAAa;QAAE,OAAO,SAAS,CAAC;IACrC,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,CAAC"}
@@ -14,6 +14,13 @@ export type FolderRole = 'admin' | 'editor';
14
14
  export interface AuthUser {
15
15
  id: number;
16
16
  email: string;
17
+ /**
18
+ * Stable, human-readable identifier used for `created_by` / `updated_by`
19
+ * audit fields in entity frontmatter and as the git author identity on
20
+ * workspace commits. Email-free so the workspace git history doesn't carry
21
+ * PII. Generated at user creation, immutable thereafter.
22
+ */
23
+ handle: string;
17
24
  displayName: string;
18
25
  role: UserRole;
19
26
  createdAt: string;
@@ -37,6 +44,7 @@ export interface AuthSeed {
37
44
  apiKey?: string;
38
45
  users: Array<{
39
46
  email: string;
47
+ handle: string;
40
48
  password_hash: string;
41
49
  display_name: string;
42
50
  role: string;
@@ -54,6 +62,14 @@ export declare class AuthService {
54
62
  private sgDir;
55
63
  constructor(workspacePath: string);
56
64
  createUser(email: string, password: string, displayName: string, role?: UserRole): AuthUser;
65
+ /**
66
+ * Pick a unique handle by slugifying the display name (or email local-part
67
+ * fallback) and appending `-2`, `-3`, … on collision. Handles are immutable
68
+ * once assigned, so we don't have to worry about two parallel inserts
69
+ * racing — SQLite's UNIQUE constraint will reject the loser and the caller
70
+ * can retry.
71
+ */
72
+ private allocateHandle;
57
73
  authenticate(email: string, password: string): {
58
74
  user: AuthUser;
59
75
  token: string;
@@ -26,6 +26,21 @@ const JWT_EXPIRY = '7d';
26
26
  function hashToken(token) {
27
27
  return createHash('sha256').update(token).digest('hex');
28
28
  }
29
+ /**
30
+ * Slug-ify a name into a handle candidate. Lowercases, strips combining
31
+ * diacritics, replaces non-alphanumerics with hyphens, trims edge hyphens.
32
+ * Falls back to 'user' if the input has nothing usable (emoji-only, etc.) —
33
+ * the caller is responsible for ensuring uniqueness via collision suffix.
34
+ */
35
+ function slugifyHandle(name) {
36
+ const cleaned = name
37
+ .normalize('NFKD')
38
+ .replace(/[̀-ͯ]/g, '')
39
+ .toLowerCase()
40
+ .replace(/[^a-z0-9]+/g, '-')
41
+ .replace(/^-+|-+$/g, '');
42
+ return cleaned || 'user';
43
+ }
29
44
  export class AuthService {
30
45
  db;
31
46
  jwtSecret;
@@ -46,6 +61,7 @@ export class AuthService {
46
61
  CREATE TABLE IF NOT EXISTS users (
47
62
  id INTEGER PRIMARY KEY AUTOINCREMENT,
48
63
  email TEXT UNIQUE NOT NULL,
64
+ handle TEXT UNIQUE NOT NULL,
49
65
  password_hash TEXT NOT NULL,
50
66
  display_name TEXT NOT NULL,
51
67
  role TEXT NOT NULL DEFAULT 'member' CHECK(role IN ('owner', 'admin', 'member')),
@@ -167,8 +183,9 @@ export class AuthService {
167
183
  throw new Error('Password must be at least 8 characters');
168
184
  }
169
185
  const hash = bcrypt.hashSync(password, BCRYPT_ROUNDS);
170
- const stmt = this.db.prepare('INSERT INTO users (email, password_hash, display_name, role) VALUES (?, ?, ?, ?)');
171
- const result = stmt.run(normalized, hash, displayName.trim(), role);
186
+ const handle = this.allocateHandle(displayName);
187
+ const stmt = this.db.prepare('INSERT INTO users (email, handle, password_hash, display_name, role) VALUES (?, ?, ?, ?, ?)');
188
+ const result = stmt.run(normalized, handle, hash, displayName.trim(), role);
172
189
  const userId = result.lastInsertRowid;
173
190
  // Assign a default avatar accent color so the user shows up distinct
174
191
  // across presence / member lists immediately, without having to open
@@ -178,11 +195,33 @@ export class AuthService {
178
195
  return {
179
196
  id: userId,
180
197
  email: normalized,
198
+ handle,
181
199
  displayName: displayName.trim(),
182
200
  role,
183
201
  createdAt: new Date().toISOString(),
184
202
  };
185
203
  }
204
+ /**
205
+ * Pick a unique handle by slugifying the display name (or email local-part
206
+ * fallback) and appending `-2`, `-3`, … on collision. Handles are immutable
207
+ * once assigned, so we don't have to worry about two parallel inserts
208
+ * racing — SQLite's UNIQUE constraint will reject the loser and the caller
209
+ * can retry.
210
+ */
211
+ allocateHandle(displayName) {
212
+ const base = slugifyHandle(displayName.trim());
213
+ const exists = this.db.prepare('SELECT 1 FROM users WHERE handle = ? LIMIT 1');
214
+ if (!exists.get(base))
215
+ return base;
216
+ for (let suffix = 2; suffix < 1000; suffix++) {
217
+ const candidate = `${base}-${suffix}`;
218
+ if (!exists.get(candidate))
219
+ return candidate;
220
+ }
221
+ // Pathological: 1000 collisions on the same slug. Fall back to a random
222
+ // tail so we don't block account creation.
223
+ return `${base}-${randomBytes(3).toString('hex')}`;
224
+ }
186
225
  authenticate(email, password) {
187
226
  const normalized = email.toLowerCase().trim();
188
227
  const row = this.db.prepare('SELECT * FROM users WHERE email = ?').get(normalized);
@@ -491,7 +530,7 @@ export class AuthService {
491
530
  * Does not write to disk — use exportSeed() for that.
492
531
  */
493
532
  getSeedData() {
494
- const rows = this.db.prepare('SELECT email, password_hash, display_name, role, created_at FROM users ORDER BY id ASC').all();
533
+ const rows = this.db.prepare('SELECT email, handle, password_hash, display_name, role, created_at FROM users ORDER BY id ASC').all();
495
534
  const accessRows = this.db.prepare(`
496
535
  SELECT u.email AS user_email, fa.folder_name AS folder_name, fa.role
497
536
  FROM folder_access fa JOIN users u ON u.id = fa.user_id
@@ -583,9 +622,9 @@ export class AuthService {
583
622
  writeFileSync(secretPath, seed.jwtSecret, { mode: 0o600 });
584
623
  }
585
624
  // Restore users with their original password hashes (no re-hashing needed)
586
- const stmt = this.db.prepare('INSERT OR IGNORE INTO users (email, password_hash, display_name, role, created_at) VALUES (?, ?, ?, ?, ?)');
625
+ const stmt = this.db.prepare('INSERT OR IGNORE INTO users (email, handle, password_hash, display_name, role, created_at) VALUES (?, ?, ?, ?, ?, ?)');
587
626
  for (const u of seed.users) {
588
- stmt.run(u.email, u.password_hash, u.display_name, u.role, u.created_at);
627
+ stmt.run(u.email, u.handle, u.password_hash, u.display_name, u.role, u.created_at);
589
628
  }
590
629
  // Restore folder access grants (uses email as portable key).
591
630
  const accessRows = seed.folder_access ?? [];
@@ -815,6 +854,7 @@ export class AuthService {
815
854
  return {
816
855
  id: row.id,
817
856
  email: row.email,
857
+ handle: row.handle,
818
858
  displayName: row.display_name,
819
859
  role: row.role,
820
860
  createdAt: row.created_at,
@@ -1 +1 @@
1
- {"version":3,"file":"auth-service.js","sourceRoot":"","sources":["../../src/services/auth-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAanE,sDAAsD;AACtD,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI,KAAK,OAAO,CAAC;AAC1B,CAAC;AAqCD,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,UAAU,GAAG,IAAI,CAAC;AAoBxB,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,OAAO,WAAW;IACd,EAAE,CAAoB;IACtB,SAAS,CAAS;IAClB,KAAK,CAAS;IAEtB,YAAY,aAAqB;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,8BAA8B;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAErC,sEAAsE;QACtE,sEAAsE;QACtE,0BAA0B;QAC1B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;KAUZ,CAAC,CAAC;QAEH,gFAAgF;QAChF,2EAA2E;QAC3E,4EAA4E;QAC5E,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;KAQZ,CAAC,CAAC;QAEH,2CAA2C;QAC3C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;KAQZ,CAAC,CAAC;QAEH,qEAAqE;QACrE,wEAAwE;QACxE,wEAAwE;QACxE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;KASZ,CAAC,CAAC;QAEH,uBAAuB;QACvB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;KAaZ,CAAC,CAAC;QACH,yDAAyD;QACzD,IAAI,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAC9G,IAAI,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAExF,mEAAmE;QACnE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;KASZ,CAAC,CAAC;QAEH,wDAAwD;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,EAAwB,CAAC;QAChG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,wBAAwB,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QACtF,CAAC;QACD,oGAAoG;QACpG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;QACnG,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAEpC,qFAAqF;QACrF,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,wEAAwE;QACxE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;QAED,4DAA4D;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACnD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACjD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,QAAgB,EAAE,WAAmB,EAAE,OAAiB,QAAQ;QACxF,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAEtD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,kFAAkF,CACnF,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAyB,CAAC;QAEhD,qEAAqE;QACrE,qEAAqE;QACrE,iBAAiB;QACjB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;QAE5D,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,OAAO;YACL,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE;YAC/B,IAAI;YACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,KAAa,EAAE,QAAgB;QAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAwB,CAAC;QAE1G,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CACpB,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EACvD,IAAI,CAAC,SAAS,EACd,EAAE,SAAS,EAAE,UAAU,EAAE,CAC1B,CAAC;QAEF,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAoD,CAAC;YACrG,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAwB,CAAC;YAC3G,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAwB,CAAC;QACnG,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAED,SAAS;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,EAAe,CAAC;QAC/F,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpF,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC;YAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;OAUG;IACH,uBAAuB,CAAC,YAAoB,EAAE,WAAmB;QAC/D,IAAI,YAAY,KAAK,WAAW;YAAE,OAAO,EAAE,CAAC;QAC5C,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACxC,4EAA4E,CAC7E,CAAC,GAAG,CAAC,YAAY,CAAmC,CAAC;QAEtD,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACrC,sFAAsF,CACvF,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAIlC,CAAC,CAAC;QAEH,KAAK,MAAM,EAAE,WAAW,EAAE,IAAI,kBAAkB,EAAE,CAAC;YACjD,MAAM,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAsB,CAAC;YACxE,IAAI,KAAK,GAAG,CAAC;gBAAE,SAAS,CAAC,6CAA6C;YACtE,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACzC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9C,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,aAAa,CAAC,MAAc,EAAE,MAAgD;QAC5E,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAU,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAAC,CAAC;QAC5G,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QAC9G,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QACtF,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,cAAc,CAAC,KAAa,EAAE,WAAmB;QAC/C,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC5B,kFAAkF,CACnF,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACxB,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC;YAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC,GAAG,EAAyB,CAAC;QAC7G,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,cAAsB,EAAE,UAAkB;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAwB,CAAC;QAC1G,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAEtD,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAwB,CAAC;QAC/G,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAE3F,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACxC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6EAA6E,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACnH,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,4EAA4E,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;QACH,QAAQ,EAAE,CAAC;QACX,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,iCAAiC;IAEjC,gGAAgG;IAChG,iBAAiB,CAAC,MAAc,EAAE,MAAc,EAAE,OAAmB,QAAQ;QAC3E,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAGf,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,kBAAkB,CAAC,MAAc,EAAE,MAAc;QAC/C,IAAI,CAAC,EAAE,CAAC,OAAO,CACb,iEAAiE,CAClE,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,4CAA4C;IAC5C,cAAc,CAAC,MAAc;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,8EAA8E,CAC/E,CAAC,GAAG,CAAC,MAAM,CAAmC,CAAC;QAChD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAED,2CAA2C;IAC3C,cAAc,CAAC,MAAc;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAc,CAAC;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,uDAAuD;IACvD,gBAAgB,CAAC,MAAc;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAiD,CAAC;QAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,wEAAwE;IACxE,aAAa,CAAC,MAAc,EAAE,MAAc;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACzB,sEAAsE,CACvE,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAqC,CAAC;QAC1D,OAAO,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC;IAC3B,CAAC;IAED,yDAAyD;IACzD,aAAa,CAAC,MAAc,EAAE,MAAc;QAC1C,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC;IACxD,CAAC;IAED,oDAAoD;IACpD,eAAe,CAAC,MAAc;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAc,CAAC;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,MAAc,EAAE,UAAkB,EAAE,QAAgB;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACxC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,iEAAiE,CAAC;iBAC/E,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAGf,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,QAAQ,EAAE,CAAC;QACX,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,yDAAyD;IACzD,YAAY,CAAC,OAAe,EAAE,OAAe;QAC3C,IAAI,CAAC,EAAE,CAAC,OAAO,CACb,gEAAgE,CACjE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,+BAA+B;IAE/B,qFAAqF;IACrF,YAAY,CAAC,MAAc,EAAE,aAAqB;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACzB,6EAA6E,CAC9E,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAsC,CAAC;QAClE,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,IAAI,CAAC;YAAC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;IAClE,CAAC;IAED,gCAAgC;IAChC,aAAa,CAAC,MAAc,EAAE,aAAqB,EAAE,IAAyB;QAC5E,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAKf,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,gDAAgD;IAChD,0BAA0B,CAAC,MAAc;QACvC,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CACpB,2DAA2D,CAC5D,CAAC,GAAG,CAAC,MAAM,CAAsC,CAAC;IACrD,CAAC;IAED,6CAA6C;IAC7C,cAAc,CAAC,MAAc,EAAE,aAAqB;QAClD,IAAI,CAAC,EAAE,CAAC,OAAO,CACb,mEAAmE,CACpE,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC/B,CAAC;IAED,wDAAwD;IACxD,cAAc,CAAC,MAAc,EAAE,aAAqB;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACtD,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,EAAuB,CAAC;QAC9F,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,YAAY;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,EAAuB,CAAC;QAC9F,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,sDAAsD;IAEtD;;;;OAIG;IACH,cAAc,CAAC,MAAc,EAAE,IAAY;QACzC,MAAM,SAAS,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC5B,qEAAqE,CACtE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,eAAyB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC1E,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,KAAa;QAC1B,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACzB,qDAAqD,CACtD,CAAC,GAAG,CAAC,IAAI,CAAoC,CAAC;QAC/C,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6EAA6E,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzG,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,6EAA6E;IAC7E,aAAa,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CACpB,sGAAsG,CACvG,CAAC,GAAG,CAAC,MAAM,CAAyF,CAAC;IACxG,CAAC;IAED,gFAAgF;IAChF,cAAc,CAAC,OAAe,EAAE,MAAc;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC5B,qDAAqD,CACtD,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACK,eAAe;QACrB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;QAEzG,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9B,OAAO,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,8DAA8D;gBAC9D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAC5B,aAAa,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,WAAW;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,wFAAwF,CACzF,CAAC,GAAG,EAA6G,CAAC;QAEnH,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAIlC,CAAC,CAAC,GAAG,EAA0E,CAAC;QAEjF,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI;YACX,aAAa,EAAE,UAAU;SAC1B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QACpD,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAEhE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED;;;OAGG;IACK,QAAQ;QACd,IAAI,CAAC;YACH,uCAAuC;YACvC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE;gBAC1D,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;aAClD,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEhC,uCAAuC;YACvC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE;gBAC7C,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;aAClD,CAAC,CAAC;YACH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE;gBAAE,OAAO;YAE/D,yEAAyE;YACzE,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,YAAY,CAAC,EAAE;gBACxD,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;aAClD,CAAC,CAAC;YAEH,sCAAsC;YACtC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE;gBAC7D,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;aAClD,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,CAAC,iBAAiB;YAEhD,sEAAsE;YACtE,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE;gBAC9B,IAAI,EAAE,uBAAuB;gBAC7B,IAAI,EAAE,sCAAsC;gBAC5C,QAAQ,EAAE,IAAI,EAAE,mBAAmB;aACpC,EAAE;gBACD,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;aAClD,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC9E,OAAO;YACT,CAAC;YAED,OAAO;YACP,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;gBACtC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;aACnE,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO;QAElC,IAAI,CAAC;YACH,MAAM,IAAI,GAAa,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YAEnE,qDAAqD;YACrD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;gBACnD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,CAAC;YAED,2EAA2E;YAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,2GAA2G,CAC5G,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;YAC3E,CAAC;YAED,6DAA6D;YAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;YAC5C,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;SAIlC,CAAC,CAAC;gBACH,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;oBAC5B,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,IAAI,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAC,MAAM,oBAAoB,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,iCAAiC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,cAAc;IAEd,YAAY,CAAC,MAAc;QACzB,yEAAyE;QACzE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,gGAAgG,CACjG,CAAC,GAAG,CAAC,MAAM,CAAkB,CAAC;QAC/B,8DAA8D;QAC9D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3H,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,IAAY,EAAE,WAAmB,MAAM,EAAE,SAA8B,EAAE,EAAE,aAAsB;QAC9H,MAAM,QAAQ,GAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CAC/B,uEAAuE,CACxE,CAAC,GAAG,CAAC,MAAM,CAAS,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC;QAEvC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC5B,uHAAuH,CACxH,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,aAAa,IAAI,IAAI,CAAC,CAAC;QAE3F,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,MAAM,CAAE,CAAC;IACnE,CAAC;IAED,iBAAiB,CAAC,MAAc,EAAE,MAAc,EAAE,UAAmC;QACnF,IAAI,CAAC,EAAE,CAAC,OAAO,CACb,iGAAiG,CAClG,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,WAAW,CAAC,MAAc,EAAE,MAAc;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACzB,uDAAuD,CACxD,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAA4B,CAAC;QACjD,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,MAAc,EAAE,MAA2E;QACxH,MAAM,IAAI,GAAa,CAAC,gCAAgC,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAU,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QACnF,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAAC,CAAC;QAC9G,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAAC,CAAC;QACnG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yBAAyB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAC1G,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,MAAc;QAC3C,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7F,CAAC;IAEO,kBAAkB,GAAG,KAAK,CAAC;IAEnC;;;;;;;OAOG;IACH,kBAAkB,CAAC,MAAc,EAAE,UAAkC;QACnE,oEAAoE;QACpE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YACjC,4DAA4D;YAC5D,MAAM,cAAc,GAAG,aAAa,CAAC;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC9B,8FAA8F,CAC/F,CAAC,GAAG,EAA8F,CAAC;YACpG,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,IAAI,GAAG,CAAC,eAAe,KAAK,cAAc;oBAAE,SAAS,CAAC,2CAA2C;gBACjG,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;oBACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC5F,IAAI,QAAQ,EAAE,CAAC;wBACb,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACrE,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;QACD,CAAC,CAAC,sBAAsB;QAExB,MAAM,aAAa,GAAG,IAAI,GAAG,CAC1B,IAAI,CAAC,EAAE,CAAC,OAAO,CACd,4DAA4D,CAC7D,CAAC,GAAG,EAA8B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACrD,CAAC;QAEF,0BAA0B;QAC1B,MAAM,KAAK,GAA2E;YACpF,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;SACtK,CAAC;QAEF,sCAAsC;QACtC,MAAM,WAAW,GAA2B;YAC1C,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW;YAC3E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO;YACjE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc;YACjE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW;YAC1E,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO;YAClE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU;SACvD,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAElG,oEAAoE;QACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;aACxC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;aAChC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;aAC7B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAEzB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAC;YACvG,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YACxD,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI;gBACJ,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;aAC3G,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YAClG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,GAAgB;QACjC,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;YACnC,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,UAAU,EAAG,GAAG,CAAC,UAAsC,IAAI,SAAS;YACpE,aAAa,EAAE,GAAG,CAAC,eAAe,IAAI,IAAI;YAC1C,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,SAAS,EAAE,GAAG,CAAC,UAAU;SAC1B,CAAC;IACJ,CAAC;IAED,oBAAoB;IAEpB,cAAc,CAAC,MAAc;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC,GAAG,CAAC,MAAM,CAAgD,CAAC;QACtJ,OAAO,GAAG,EAAE,YAAY,IAAI,IAAI,CAAC;IACnC,CAAC;IAED,6FAA6F;IAC7F,kBAAkB;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,mFAAmF,CACpF,CAAC,GAAG,EAAsD,CAAC;QAC5D,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;QACzD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,KAAoB;QACjD,IAAI,CAAC,EAAE,CAAC,OAAO,CACb;iHAC2G,CAC5G,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC,GAAG,CAAC,MAAM,CAAsC,CAAC;QACzI,OAAO,GAAG,EAAE,SAAS,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,YAAY,CAAC,MAAc,EAAE,KAAc;QACzC,IAAI,CAAC,EAAE,CAAC,OAAO,CACb;2GACqG,CACtG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,CAAC,MAAM,CAAuC,CAAC;QAC3I,OAAO,GAAG,EAAE,UAAU,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,YAAY,CAAC,MAAc,EAAE,KAAa;QACxC,IAAI,CAAC,EAAE,CAAC,OAAO,CACb;6GACuG,CACxG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,oFAAoF;IAEpF,eAAe,CAAC,MAAc;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAC,GAAG,CAAC,MAAM,CAA0C,CAAC;QACjJ,IAAI,CAAC,GAAG,EAAE,aAAa;YAAE,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC;YAAC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;IACpE,CAAC;IAED,eAAe,CAAC,MAAc,EAAE,QAA6B;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,OAAO,CACb;mHAC6G,CAC9G,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,GAAW;QACxC,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IACnD,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,GAAW,EAAE,KAAU;QACpD,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;IAGD,qDAAqD;IAErD,iBAAiB,CAAC,MAAc;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CACzB,6GAA6G,CAC9G,CAAC,GAAG,CAAC,MAAM,CAA8H,CAAC;QAC3I,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACvF,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,aAAa,EAAE,oBAAoB,EAAE,GAAG,CAAC,sBAAsB,EAAE,WAAW,EAAE,GAAG,CAAC,qBAAqB,EAAE,CAAC;IACvI,CAAC;IAED,iBAAiB,CAAC,MAAc,EAAE,YAAoB;QACpD,IAAI,CAAC,EAAE,CAAC,OAAO,CACb;;;;;;0CAMoC,CACrC,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,oBAAoB,CAAC,MAAc;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,sEAAsE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAyD,CAAC;QACxK,IAAI,CAAC,GAAG,EAAE,qBAAqB;YAAE,OAAO,IAAI,CAAC;QAC7C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,OAAO,EAAE,CAAC;IACpE,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAEO,UAAU,CAAC,GAAY;QAC7B,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,IAAI,EAAE,GAAG,CAAC,IAAgB;YAC1B,SAAS,EAAE,GAAG,CAAC,UAAU;SAC1B,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"auth-service.js","sourceRoot":"","sources":["../../src/services/auth-service.ts"],"names":[],"mappings":"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"}
@@ -13,3 +13,28 @@ import type { AuthService, AuthUser } from './auth-service.js';
13
13
  * filters by folder_access.
14
14
  */
15
15
  export declare function ensurePersonalFolder(workspace: Workspace, authService: AuthService, user: AuthUser): Promise<void>;
16
+ /**
17
+ * Convert a departed user's personal folder into a normal (non-personal)
18
+ * archive folder owned by the actor who deleted them. Matches Google
19
+ * Drive's inherit-on-delete model: the content survives, the owner is
20
+ * reassigned, and the "personal" semantics fall away so the folder
21
+ * doesn't clash with the one-personal-folder-per-user invariant.
22
+ *
23
+ * Mutations applied (in order, best-effort non-atomic):
24
+ * 1. Pick a collision-free new name: `archive-{slug}-{YYYY-MM-DD}`,
25
+ * escalating to `-2`, `-3`, … if needed.
26
+ * 2. Rename the folder directory on disk.
27
+ * 3. Update workspace.json: new name/path, display_name, clear the
28
+ * personal/owner_id flags, and write the new `.studiograph` marker.
29
+ * 4. Update folder_access rows to the new name so the actor's inherited
30
+ * admin row keeps working.
31
+ * 5. Push the updated workspace.json to the config remote (non-fatal).
32
+ *
33
+ * Returns the new folder name and display name so the caller can report
34
+ * them to the UI. The caller should `workspaceManager.reloadConfig()`
35
+ * after this completes to surface the change to in-memory graph state.
36
+ */
37
+ export declare function archivePersonalFolder(workspace: Workspace, oldName: string, targetDisplayName: string, authService: AuthService): Promise<{
38
+ newName: string;
39
+ newDisplayName: string;
40
+ }>;
@@ -1,3 +1,5 @@
1
+ import { existsSync, renameSync, writeFileSync } from 'fs';
2
+ import { join } from 'path';
1
3
  /**
2
4
  * Register the user's personal "My Entries" folder and grant them admin
3
5
  * folder_access. Idempotent — safe to call repeatedly and on existing
@@ -28,4 +30,72 @@ export async function ensurePersonalFolder(workspace, authService, user) {
28
30
  authService.grantFolderAccess(user.id, folderName, 'admin');
29
31
  }
30
32
  }
33
+ /**
34
+ * Convert a departed user's personal folder into a normal (non-personal)
35
+ * archive folder owned by the actor who deleted them. Matches Google
36
+ * Drive's inherit-on-delete model: the content survives, the owner is
37
+ * reassigned, and the "personal" semantics fall away so the folder
38
+ * doesn't clash with the one-personal-folder-per-user invariant.
39
+ *
40
+ * Mutations applied (in order, best-effort non-atomic):
41
+ * 1. Pick a collision-free new name: `archive-{slug}-{YYYY-MM-DD}`,
42
+ * escalating to `-2`, `-3`, … if needed.
43
+ * 2. Rename the folder directory on disk.
44
+ * 3. Update workspace.json: new name/path, display_name, clear the
45
+ * personal/owner_id flags, and write the new `.studiograph` marker.
46
+ * 4. Update folder_access rows to the new name so the actor's inherited
47
+ * admin row keeps working.
48
+ * 5. Push the updated workspace.json to the config remote (non-fatal).
49
+ *
50
+ * Returns the new folder name and display name so the caller can report
51
+ * them to the UI. The caller should `workspaceManager.reloadConfig()`
52
+ * after this completes to surface the change to in-memory graph state.
53
+ */
54
+ export async function archivePersonalFolder(workspace, oldName, targetDisplayName, authService) {
55
+ const config = await workspace.loadConfig();
56
+ const repo = config.repos.find(r => r.name === oldName);
57
+ if (!repo) {
58
+ throw new Error(`Cannot archive '${oldName}' — folder not found in workspace config`);
59
+ }
60
+ if (!repo.personal) {
61
+ throw new Error(`Cannot archive '${oldName}' — not a personal folder`);
62
+ }
63
+ const slug = slugify(targetDisplayName);
64
+ const date = new Date().toISOString().slice(0, 10); // YYYY-MM-DD
65
+ const baseName = `archive-${slug}-${date}`;
66
+ let newName = baseName;
67
+ let suffix = 2;
68
+ while (config.repos.some(r => r.name === newName)) {
69
+ newName = `${baseName}-${suffix}`;
70
+ suffix += 1;
71
+ }
72
+ const wsPath = workspace.workspacePath;
73
+ const oldPath = join(wsPath, repo.path);
74
+ const newPath = join(wsPath, newName);
75
+ if (existsSync(oldPath)) {
76
+ renameSync(oldPath, newPath);
77
+ }
78
+ repo.name = newName;
79
+ repo.path = newName;
80
+ repo.display_name = `Archive: ${targetDisplayName} (${date})`;
81
+ delete repo.personal;
82
+ delete repo.owner_id;
83
+ const markerPath = join(newPath, '.studiograph');
84
+ if (existsSync(markerPath)) {
85
+ writeFileSync(markerPath, JSON.stringify({ repo_name: newName }, null, 2), 'utf-8');
86
+ }
87
+ workspace.writeConfig(config);
88
+ authService.renameFolder(oldName, newName);
89
+ workspace.pushWorkspaceConfig(`Archive personal folder on user delete: ${oldName} → ${newName}`);
90
+ return { newName, newDisplayName: repo.display_name };
91
+ }
92
+ function slugify(name) {
93
+ const cleaned = name
94
+ .normalize('NFKD')
95
+ .replace(/[̀-ͯ]/g, '') // strip combining diacritics
96
+ .toLowerCase()
97
+ .replace(/[^a-z0-9]+/g, '-')
98
+ .replace(/^-+|-+$/g, '');
99
+ return cleaned || 'user';
100
+ }
31
101
  //# sourceMappingURL=personal-folder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"personal-folder.js","sourceRoot":"","sources":["../../src/services/personal-folder.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,SAAoB,EACpB,WAAwB,EACxB,IAAc;IAEd,MAAM,UAAU,GAAG,WAAW,IAAI,CAAC,EAAE,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;IAC5C,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IAExE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,SAAS,CAAC,YAAY,CAAC;YAC3B,IAAI,EAAE,UAAU;YAChB,YAAY,EAAE,YAAY;YAC1B,WAAW,EAAE,wBAAwB,IAAI,CAAC,WAAW,EAAE;YACvD,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI,CAAC,EAAE;SAClB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC3E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"personal-folder.js","sourceRoot":"","sources":["../../src/services/personal-folder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:"IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--color-black:#000;--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:10px;--radius-xl:14px;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--menu-font-size:13px;--menu-item-padding:8px 10px;--menu-item-radius:var(--radius-md);--menu-item-height:32px;--menu-min-width:140px;--btn-height:28px;--btn-height-lg:32px;--btn-height-sm:24px;--btn-font-size:13px;--icon-btn-height:var(--btn-height);--input-height:32px;--control-height:40px;--row-height:44px;--col-padding:28px}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{box-sizing:border-box;margin:0;padding:0}:focus{outline:none}html,body{width:100%;height:100%;overflow:hidden}body{font-family:var(--font-sans);color:var(--color-text-primary);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:22px}@media(max-width:1023px){body{font-size:16px;line-height:25px}input,textarea,select,[contenteditable=true],[contenteditable=plaintext-only]{font-size:16px}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-tertiary)}@media(max-width:1023px){.app-frame.mobile-sidebar-open .main-content,.app-frame.mobile-sidebar-open .main-content *,.app-frame.mobile-chat-open .main-content,.app-frame.mobile-chat-open .main-content *{scrollbar-width:none}.app-frame.mobile-sidebar-open .main-content::-webkit-scrollbar{width:0;height:0;display:none}.app-frame.mobile-sidebar-open .main-content ::-webkit-scrollbar{width:0;height:0;display:none}.app-frame.mobile-chat-open .main-content::-webkit-scrollbar{width:0;height:0;display:none}.app-frame.mobile-chat-open .main-content ::-webkit-scrollbar{width:0;height:0;display:none}}}@layer components;@layer utilities{.\@container{container-type:inline-size}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.start-0{inset-inline-start:calc(var(--spacing) * 0)}.end{inset-inline-end:var(--spacing)}.end-0{inset-inline-end:calc(var(--spacing) * 0)}.top-0{top:calc(var(--spacing) * 0)}.top-\[50\%\]{top:50%}.bottom-0{bottom:calc(var(--spacing) * 0)}.left-\[50\%\]{left:50%}.z-50{z-index:50}.z-\[1000\]{z-index:1000}.z-\[1001\]{z-index:1001}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.my-0{margin-block:calc(var(--spacing) * 0)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-auto{margin-top:auto}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.aspect-square{aspect-ratio:1}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-\[22px\]{width:22px;height:22px}.size-\[var\(--icon-btn-height\,28px\)\]{width:var(--icon-btn-height,28px);height:var(--icon-btn-height,28px)}.size-full{width:100%;height:100%}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-\[var\(--btn-height\,28px\)\]{height:var(--btn-height,28px)}.h-\[var\(--btn-height-lg\,32px\)\]{height:var(--btn-height-lg,32px)}.h-\[var\(--btn-height-sm\,24px\)\]{height:var(--btn-height-sm,24px)}.h-\[var\(--input-height\,32px\)\]{height:var(--input-height,32px)}.h-auto{height:auto}.h-full{height:100%}.w-3\/4{width:75%}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-8{min-width:calc(var(--spacing) * 8)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-10{min-width:calc(var(--spacing) * 10)}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-y{resize:vertical}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-\[--spacing\(var\(--gap\)\)\]{gap:calc(var(--spacing) * var(--gap))}.gap-\[11px\]{gap:11px}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded-\[var\(--radius-md\)\]{border-radius:var(--radius-md)}.rounded-\[var\(--radius-sm\)\]{border-radius:var(--radius-sm)}.rounded-\[var\(--radius-xs\)\]{border-radius:var(--radius-xs)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-\[color-mix\(in_srgb\,var\(--color-accent-fg\)_30\%\,transparent\)\]{border-color:var(--color-accent-fg)}@supports (color:color-mix(in lab,red,red)){.border-\[color-mix\(in_srgb\,var\(--color-accent-fg\)_30\%\,transparent\)\]{border-color:color-mix(in srgb,var(--color-accent-fg) 30%,transparent)}}.border-\[var\(--color-border\)\]{border-color:var(--color-border)}.border-\[var\(--color-text-tertiary\)\]{border-color:var(--color-text-tertiary)}.border-transparent{border-color:#0000}.bg-\[color-mix\(in_srgb\,var\(--color-accent-fg\)_10\%\,transparent\)\]{background-color:var(--color-accent-fg)}@supports (color:color-mix(in lab,red,red)){.bg-\[color-mix\(in_srgb\,var\(--color-accent-fg\)_10\%\,transparent\)\]{background-color:color-mix(in srgb,var(--color-accent-fg) 10%,transparent)}}.bg-\[var\(--color-accent\)\]{background-color:var(--color-accent)}.bg-\[var\(--color-badge-bg\)\]{background-color:var(--color-badge-bg)}.bg-\[var\(--color-bg\)\]{background-color:var(--color-bg)}.bg-\[var\(--color-bg-elevated\)\]{background-color:var(--color-bg-elevated)}.bg-\[var\(--color-bg-surface\)\]{background-color:var(--color-bg-surface)}.bg-\[var\(--color-destructive\)\]{background-color:var(--color-destructive)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-transparent{background-color:#0000}.bg-clip-padding{background-clip:padding-box}.p-0{padding:calc(var(--spacing) * 0)}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-\[3px\]{padding:3px}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pl-\[19px\]{padding-left:19px}.text-center{text-align:center}.text-start{text-align:start}.align-baseline{vertical-align:baseline}.align-middle{vertical-align:middle}.font-\[inherit\]{font-family:inherit}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-wrap{text-wrap:wrap}.whitespace-nowrap{white-space:nowrap}.text-\[var\(--btn-font-size\,13px\)\]{color:var(--btn-font-size,13px)}.text-\[var\(--color-accent-fg\)\]{color:var(--color-accent-fg)}.text-\[var\(--color-accent-text\,\#ededef\)\]{color:var(--color-accent-text,#ededef)}.text-\[var\(--color-badge-text\)\]{color:var(--color-badge-text)}.text-\[var\(--color-text-primary\)\]{color:var(--color-text-primary)}.text-\[var\(--color-text-secondary\)\]{color:var(--color-text-secondary)}.text-\[var\(--color-text-tertiary\)\]{color:var(--color-text-tertiary)}.text-current{color:currentColor}.italic{font-style:italic}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,background\]{transition-property:color,background;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.placeholder\:text-\[var\(--color-text-tertiary\)\]::placeholder{color:var(--color-text-tertiary)}@media(hover:hover){.hover\:border-\[var\(--color-accent\)\]:hover{border-color:var(--color-accent)}.hover\:bg-\[var\(--color-accent-hover\)\]:hover{background-color:var(--color-accent-hover)}.hover\:bg-\[var\(--color-bg-hover\)\]:hover{background-color:var(--color-bg-hover)}.hover\:text-\[var\(--color-text-primary\)\]:hover{color:var(--color-text-primary)}.hover\:text-\[var\(--color-text-secondary\)\]:hover{color:var(--color-text-secondary)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:z-10:focus{z-index:10}.focus\:border-\[var\(--color-accent\,\#f04e4e\)\]:focus{border-color:var(--color-accent,#f04e4e)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[var\(--color-accent\)\]:focus-visible{--tw-ring-color:var(--color-accent)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-\[var\(--color-bg-primary\)\]:focus-visible{--tw-ring-offset-color:var(--color-bg-primary)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-\[var\(--color-bg-hover\)\]:disabled{background-color:var(--color-bg-hover)}.disabled\:text-\[var\(--color-accent-text-disabled\)\]:disabled{color:var(--color-accent-text-disabled)}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-100:disabled{opacity:1}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:min-h-full[data-orientation=vertical]{min-height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[spacing\=0\]\:rounded-none[data-spacing="0"]{border-radius:0}.data-\[spacing\=0\]\:shadow-none[data-spacing="0"]{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[spacing\=0\]\:first\:rounded-l-md[data-spacing="0"]:first-child{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.data-\[spacing\=0\]\:last\:rounded-r-md[data-spacing="0"]:last-child{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.data-\[state\=active\]\:bg-\[var\(--color-bg-hover\)\][data-state=active]{background-color:var(--color-bg-hover)}.data-\[state\=active\]\:font-medium[data-state=active]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[state\=active\]\:text-\[var\(--color-text-primary\)\][data-state=active]{color:var(--color-text-primary)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:border-\[var\(--color-accent\)\][data-state=checked]{border-color:var(--color-accent)}.data-\[state\=checked\]\:bg-\[var\(--color-accent\)\][data-state=checked]{background-color:var(--color-accent)}.data-\[state\=checked\]\:text-\[var\(--color-accent-text\)\][data-state=checked]{color:var(--color-accent-text)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[spacing\=0\]\:data-\[variant\=outline\]\:border-l-0[data-spacing="0"][data-variant=outline]{border-left-style:var(--tw-border-style);border-left-width:0}.data-\[spacing\=0\]\:data-\[variant\=outline\]\:first\:border-l[data-spacing="0"][data-variant=outline]:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[spacing\=default\]\:data-\[variant\=outline\]\:shadow-xs[data-spacing=default][data-variant=outline]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media not all and (min-width:48rem){.max-md\:rounded-\[var\(--radius-xl\)\]{border-radius:var(--radius-xl)}}@media(min-width:40rem){.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:text-start{text-align:start}}@media(min-width:48rem){.md\:hidden{display:none}.md\:size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.md\:size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}}.\[\&_img\]\:size-full img{width:100%;height:100%}.\[\&_img\]\:object-cover img{object-fit:cover}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\+\[data-slot\=item-content\]\]\:flex-none+[data-slot=item-content]{flex:none}.\[\&\:has\(\[role\=checkbox\]\)\]\:pe-0:has([role=checkbox]){padding-inline-end:calc(var(--spacing) * 0)}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:mt-0\.5>svg{margin-top:calc(var(--spacing) * .5)}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-\[var\(--color-accent-fg\)\]>svg{color:var(--color-accent-fg)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}@media(max-width:1023px){:root{--row-height:60px;--menu-item-height:36px;--input-height:36px;--control-height:36px;--icon-btn-height:44px;--menu-font-size:15px;--radius-xl:12px}}:root{--color-accent:#fe3c3c;--color-accent-hover:#e63939;--color-accent-text:#ededef;--color-destructive:var(--color-accent);--color-destructive-fg:var(--color-accent-fg);--color-destructive-hover:var(--color-accent-hover);--color-link:var(--color-accent-fg,#fe8a8a);--color-agent:#7c7cd9}:root,[data-theme=dark]{--color-bg:#09090b;--color-bg-elevated:#0f0f12;--color-bg-surface:#121216;--color-bg-hover:#1a1a1f;--color-bg-selected:#1a1a1f;--color-border:#1e1e24;--color-border-strong:#2a2a32;--color-text-primary:#ededef;--color-text-secondary:#a0a0a6;--color-text-tertiary:#5c5c66;--color-accent-fg:var(--color-accent-fg-dark,var(--color-accent));--color-accent-bg:var(--color-accent);--color-accent-text-disabled:#5c5c66;--color-accent-muted:#fe535314;--color-badge-bg:#1a1a22;--color-badge-text:#8b8b94}[data-theme=light]{--color-bg:#f8f8fa;--color-bg-elevated:#f0f0f3;--color-bg-surface:#f0f0f3;--color-bg-hover:#e2e2e8;--color-bg-selected:#e2e2e8;--color-border:#dadadf;--color-border-strong:#c9c9d0;--color-text-primary:#1a1a1f;--color-text-secondary:#63636b;--color-text-tertiary:#9898a0;--color-accent-fg:var(--color-accent-fg-light,var(--color-accent));--color-accent-bg:var(--color-accent);--color-accent-text-disabled:#9898a0;--color-accent-muted:#fe535314;--color-accent-text:#1a1a1f;--color-badge-bg:#e0e0e5;--color-badge-text:#63636b}.sg-mobile-sheet{background:var(--color-bg-elevated);border-top:1px solid var(--color-border-strong);border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl);max-height:85vh;color:var(--color-text-primary);flex-direction:column;gap:0;padding:0;display:flex;z-index:1001!important}.sg-mobile-sheet[data-state=open]{animation:.28s ease-out sg-sheet-slide-in}.sg-mobile-sheet[data-state=closed]{animation:.22s ease-in sg-sheet-slide-out}@keyframes sg-sheet-slide-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes sg-sheet-slide-out{0%{transform:translateY(0)}to{transform:translateY(100%)}}.sg-sheet-header{justify-content:space-between;align-items:center;gap:8px;flex-direction:row!important;padding:16px!important;display:flex!important}.sg-sheet-title{color:var(--color-text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:15px;font-weight:600;overflow:hidden}.sg-sheet-title:first-child{margin-left:12px}.sg-sheet-body{flex:1;min-height:0;padding:0 8px 8px;overflow-y:auto}.sg-sheet-row{border-radius:var(--radius-md);width:100%;height:48px;color:var(--color-text-primary);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:0 8px 0 20px;font-family:inherit;font-size:15px;display:flex}.sg-sheet-row:active{background:var(--color-bg-hover)}.sg-sheet-row:has(>.sg-sheet-row-lead){padding-left:8px}.sg-sheet-row-lead{width:44px;height:44px;color:var(--color-accent-fg);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.sg-sheet-row-lead :global(svg){width:20px;height:20px}.sg-sheet-row-trail{width:44px;height:44px;color:var(--color-text-tertiary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.sg-sheet-row-trail :global(svg){width:20px;height:20px}.sg-sheet-row-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.sg-sheet-row-value{color:var(--color-text-tertiary);flex-shrink:0;font-size:14px}.sg-sheet-search{height:var(--input-height);background:var(--color-bg-surface);border-radius:var(--radius-md);color:var(--color-text-secondary);align-items:center;gap:8px;margin:8px;padding:0;display:flex}.sg-sheet-search-lead{color:var(--color-text-secondary)}.sg-sheet-search:focus-within{outline:1px solid var(--color-accent-fg);outline-offset:2px}.sg-sheet-search input{min-width:0;color:var(--color-text-primary);background:0 0;border:none;outline:none;flex:1;font-family:inherit;font-size:15px}.sg-sheet-empty{text-align:center;color:var(--color-text-tertiary);padding:24px 12px;font-size:14px}.sg-sheet-footer{padding:12px 16px calc(env(safe-area-inset-bottom,0px) + 16px);justify-content:flex-end;gap:8px;flex-direction:row!important;display:flex!important}.sg-sheet-btn:disabled{opacity:.4;cursor:not-allowed}@media(max-width:1023px){.sg-sheet-btn{border-radius:var(--radius-xl);flex:1}.sg-sheet-row{border-radius:var(--radius-xl)}}.sg-sheet-btn{border-radius:var(--radius-md);cursor:pointer;border:none;height:40px;padding:0 20px;font-family:inherit;font-size:14px;font-weight:500}.sg-sheet-btn-ghost{color:var(--color-text-secondary);background:0 0}.sg-sheet-btn-ghost:active{background:var(--color-bg-hover);color:var(--color-text-primary)}.sg-sheet-btn-primary{background:var(--color-accent);color:var(--color-accent-text)}.toolbar-icon-btn{appearance:none;border-radius:var(--radius-sm);width:28px;height:28px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-family:inherit;transition:background .15s,color .15s;display:inline-flex;position:relative}.toolbar-icon-btn:hover,.toolbar-icon-btn:active{background:var(--color-bg-hover);color:var(--color-text-secondary)}.toolbar-icon-btn.active,.toolbar-icon-btn[data-state=open]{background:var(--color-bg-hover);color:var(--color-text-primary)}.dialog-close-btn{width:28px;height:28px;color:var(--color-text-tertiary);cursor:pointer;border-radius:var(--radius-md);background:0 0;border:none;justify-content:center;align-items:center;line-height:1;transition:color .15s,background .15s;display:flex}.dialog-close-btn:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}@media(max-width:1023px){.toolbar-icon-btn,.dialog-close-btn{border-radius:var(--radius-xl);width:44px;height:44px}.mobile-top-bar>button svg,.toolbar-icon-btn>svg,.nav-btn>svg,.view-toggle-compact>svg,.tag-filter-chevron,.tag-filter-trigger>svg,.dialog-close-btn>svg{width:20px;height:20px}.sg-menu-item>svg{width:18px;height:18px}}.text-input{min-height:var(--row-height);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:0 0;align-items:center;max-height:140px;padding:0 0 0 13px;transition:border-color .15s;display:flex}.text-input:focus-within{border-color:var(--color-accent)}.input-field{color:var(--color-text-primary);resize:none;white-space:pre-wrap;word-wrap:break-word;field-sizing:content;background:0 0;border:none;outline:none;flex:1;min-height:20px;max-height:120px;padding:7px 0;font-family:inherit;font-size:14px;line-height:20px;overflow-y:auto}.input-field[data-placeholder]:empty:before{content:attr(data-placeholder);color:var(--color-text-tertiary);pointer-events:none}.input-field::placeholder{color:var(--color-text-tertiary)}.input-field:disabled{opacity:.5}.send-btn{color:var(--color-text-tertiary);pointer-events:none;flex-shrink:0;align-self:flex-end;margin:8px}.send-btn.send-active,.stop-btn{pointer-events:auto;color:var(--color-accent-text,#ededef);background:var(--color-accent);border-radius:var(--radius-md)}@media(max-width:1023px){.input-field{font-size:16px;line-height:22px}}@media(pointer:coarse){.tap-target,.tap-target-y{position:relative}.tap-target:before{content:"";inset:var(--tap-expand,-6px);position:absolute}.tap-target-y:before{content:"";inset-block:var(--tap-expand,-6px);position:absolute;inset-inline:0}}@media(prefers-reduced-motion:reduce){.sg-mobile-sheet[data-state=open],.sg-mobile-sheet[data-state=closed],.sg-mobile-sheet-overlay[data-state=open],.sg-mobile-sheet-overlay[data-state=closed]{animation:none!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}[data-sonner-toast]{background:var(--color-bg-elevated)!important;backdrop-filter:blur(12px)!important;-webkit-backdrop-filter:blur(12px)!important;border:1px solid var(--color-border)!important;color:var(--color-text-primary)!important}.app-boot-loader.svelte-12qhfyh{width:100%;height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg)}.app-boot-spinner.svelte-12qhfyh{width:20px;height:20px;border:2px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:svelte-12qhfyh-app-boot-spin .8s linear infinite}@keyframes svelte-12qhfyh-app-boot-spin{to{transform:rotate(360deg)}}.sr-only.svelte-12qhfyh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@@ -0,0 +1 @@
1
+ .login-page.svelte-1x05zx6{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg);font-family:var(--font-sans, "IBM Plex Sans", ui-sans-serif, system-ui, sans-serif)}.login-card.svelte-1x05zx6{width:100%;max-width:360px;padding:40px 32px}.logo.svelte-1x05zx6{display:flex;align-items:center;gap:12px;margin-bottom:36px;justify-content:center}.logo-icon.svelte-1x05zx6{width:32px;height:32px;border-radius:50%;background:var(--color-accent, #FE5353);color:var(--color-accent-text, #ededef);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px}.logo-text.svelte-1x05zx6{font-size:20px;font-weight:600;color:var(--color-text-primary)}form.svelte-1x05zx6{display:flex;flex-direction:column;gap:20px}.field.svelte-1x05zx6{display:flex;flex-direction:column;gap:6px}.field-label.svelte-1x05zx6{font-size:14px;font-weight:500;color:var(--color-text-secondary)}.field.svelte-1x05zx6 .field-input{height:40px;border-radius:var(--radius-lg);font-size:15px}.error-msg.svelte-1x05zx6{margin:0;font-size:14px;color:var(--color-destructive-fg, #FE5353);text-align:center}form.svelte-1x05zx6 .submit-btn{height:40px;border-radius:var(--radius-lg);font-size:15px;font-weight:600;margin-top:4px;width:100%}
@@ -0,0 +1 @@
1
+ .setup-page.svelte-g40i6i{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg);font-family:var(--font-sans, "IBM Plex Sans", ui-sans-serif, system-ui, sans-serif)}.setup-card.svelte-g40i6i{width:100%;max-width:360px;padding:40px 32px}.logo.svelte-g40i6i{display:flex;align-items:center;gap:12px;margin-bottom:12px;justify-content:center}.logo-icon.svelte-g40i6i{width:32px;height:32px;border-radius:50%;background:var(--color-accent, #FE5353);color:var(--color-accent-text, #ededef);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px}.logo-text.svelte-g40i6i{font-size:20px;font-weight:600;color:var(--color-text-primary)}.subtitle.svelte-g40i6i{text-align:center;color:var(--color-text-secondary);font-size:15px;margin:0 0 28px}form.svelte-g40i6i{display:flex;flex-direction:column;gap:20px}.field.svelte-g40i6i{display:flex;flex-direction:column;gap:6px}.field-label.svelte-g40i6i{font-size:14px;font-weight:500;color:var(--color-text-secondary)}.field-hint.svelte-g40i6i{font-size:13px;color:var(--color-text-tertiary, var(--color-text-secondary));opacity:.7}.field.svelte-g40i6i .field-input{height:40px;border-radius:var(--radius-lg);font-size:15px}.error-msg.svelte-g40i6i{margin:0;font-size:14px;color:var(--color-destructive-fg, #FE5353);text-align:center}form.svelte-g40i6i .submit-btn{height:40px;border-radius:var(--radius-lg);font-size:15px;font-weight:600;margin-top:4px;width:100%}