@zipbul/gildash 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -1,28 +1,8 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var
|
|
3
|
-
`)t.push(e+1);return t}function An(n,t){let e=0,i=n.length-1;while(e<i){let r=e+i+1>>1;if(n[r]<=t)e=r;else i=r-1}return{line:e+1,column:t-n[e]}}import{err as St}from"@zipbul/result";import{parse as Nt}from"comment-parser";function Qn(n){try{let t=n.trim();if(t.startsWith("/**"))t=t.slice(3);if(t.endsWith("*/"))t=t.slice(0,-2);let i=Nt(`/** ${t} */`)[0]??{description:"",tags:[]};return{description:(i.description??"").trim(),tags:(i.tags??[]).map((r)=>({tag:r.tag??"",name:r.name??"",type:r.type??"",description:r.description??"",optional:r.optional??!1,...r.default!==void 0?{default:r.default}:{}}))}}catch(t){return St(d("parse","Failed to parse JSDoc comment",t))}}import{isErr as Ot}from"@zipbul/result";function ln(n){let{program:t,sourceText:e,comments:i}=n,r=Vn(e);function s(l,g){return{start:An(r,l),end:An(r,g)}}function u(l){let g=null;for(let o of i){if(o.type!=="Block")continue;if(o.end>l)continue;if(!o.value.startsWith("*"))continue;if(!g||o.end>g.end)g={value:`/*${o.value}*/`,end:o.end}}if(!g)return;for(let o of t.body){let c=o.start??0;if(c===l)continue;if(c>g.end&&c<l)return}return g.value}function m(l){if(!l)return;let g=l.typeAnnotation??l;return e.slice(g.start,g.end)}function a(l){if(!l||l.length===0)return[];return l.map((g)=>{let o=g.expression;if(!o)return{name:"unknown"};if(o.type==="CallExpression"){let c=o.callee?.name??o.callee?.property?.name??"unknown",f=(o.arguments??[]).map((N)=>e.slice(N.start,N.end));return{name:c,arguments:f.length>0?f:void 0}}if(o.type==="Identifier")return{name:o.name??"unknown"};return{name:e.slice(o.start,o.end)}})}function x(l){let g=l.type==="TSParameterProperty"?l.parameter:l;if(g?.type==="RestElement"){let k=`...${g.argument?.name??"unknown"}`,C=g.typeAnnotation,R=C?m(C):void 0,M={name:k,isOptional:!1};if(R)M.type=R;return M}if(g?.type==="AssignmentPattern"){let{left:D,right:k}=g,C=D?.name??"unknown",R=D?.typeAnnotation,M=R?m(R):void 0,z=e.slice(k.start,k.end),rn=a(D?.decorators??[]),X={name:C,isOptional:!0,defaultValue:z};if(M)X.type=M;if(rn.length>0)X.decorators=rn;return X}let o=g?.name??g?.pattern?.name??"unknown",c=!!g?.optional,f=g?.typeAnnotation,N=f?m(f):void 0,A=a(g?.decorators??[]),T={name:o,isOptional:c};if(N)T.type=N;if(A.length>0)T.decorators=A;return T}function p(l,g){let o=[];if(g?.async)o.push("async");if(l.static)o.push("static");if(l.abstract)o.push("abstract");if(l.readonly)o.push("readonly");if(l.override)o.push("override");if(l.declare)o.push("declare");if(l.const)o.push("const");let c=l.accessibility;if(c==="private")o.push("private");else if(c==="protected")o.push("protected");else if(c==="public")o.push("public");return o}function y(l){let g=[];if(l.superClass){let c=e.slice(l.superClass.start,l.superClass.end);g.push({kind:"extends",name:c})}let o=l.implements??[];for(let c of o){let f=c.expression??c,N=e.slice(f.start,f.end);g.push({kind:"implements",name:N})}return g}function w(l){let g=[];for(let o of l.extends??[]){let c=o.expression??o,f=e.slice(c.start,c.end);g.push({kind:"extends",name:f})}return g}function O(l){let g=[];for(let o of l)if(o.type==="MethodDefinition"){let c=o.key?.name??"unknown",f=o.value,N=o.kind??"method",A=N==="constructor"?"constructor":N==="get"?"getter":N==="set"?"setter":"method",T=p(o,f),D=(f?.params??[]).map(x),k=m(f?.returnType),C={kind:"method",name:c,span:s(o.start,o.end),isExported:!1,methodKind:A,modifiers:T,parameters:D.length>0?D:void 0,returnType:k};g.push(C)}else if(o.type==="PropertyDefinition"){let c=o.key?.name??"unknown",f=p(o),N={kind:"property",name:c,span:s(o.start,o.end),isExported:!1,modifiers:f};g.push(N)}return g}function F(l){let g=[];for(let o of l)if(o.type==="TSMethodSignature"){let c=o.key?.name??"unknown",f=(o.params??[]).map(x),N=m(o.returnType);g.push({kind:"method",name:c,span:s(o.start,o.end),isExported:!1,modifiers:[],methodKind:"method",parameters:f.length>0?f:void 0,returnType:N})}else if(o.type==="TSPropertySignature"){let c=o.key?.name??"unknown",f=m(o.typeAnnotation),N={kind:"property",name:c,span:s(o.start,o.end),isExported:!1,modifiers:o.readonly?["readonly"]:[],returnType:f};g.push(N)}return g}function h(l,g){let o=l.type??"";if(o==="FunctionDeclaration"){let c=l.id?.name??"default",f=(l.params??[]).map(x),N=m(l.returnType),A=p(l,l),T=a(l.decorators??[]),D=l.typeParameters?.params?.map((C)=>C.name?.name).filter(Boolean)||void 0,k={kind:"function",name:c,span:s(l.start,l.end),isExported:g,modifiers:A,parameters:f.length>0?f:void 0,returnType:N,decorators:T.length>0?T:void 0};if(D&&D.length>0)k.typeParameters=D;return k}if(o==="ClassDeclaration"||o==="ClassExpression"){let c=l.id?.name??"default",f=y(l),N=O(l.body?.body??[]),A=a(l.decorators??[]),T=p(l,l),D=l.typeParameters?.params?.map((C)=>C.name?.name).filter(Boolean)||void 0,k={kind:"class",name:c,span:s(l.start,l.end),isExported:g,modifiers:T,heritage:f.length>0?f:void 0,members:N.length>0?N:void 0,decorators:A.length>0?A:void 0};if(D&&D.length>0)k.typeParameters=D;return k}if(o==="VariableDeclaration"){let c=[];for(let f of l.declarations??[]){let{id:N,init:A}=f;if(N?.type==="ObjectPattern"){for(let M of N.properties??[]){let z=M.value?.name??M.key?.name??"unknown";c.push({kind:"variable",name:z,span:s(M.start??f.start,M.end??f.end),isExported:g,modifiers:[]})}continue}if(N?.type==="ArrayPattern"){for(let M of N.elements??[]){if(!M||M.type!=="Identifier")continue;let z=M.name??"unknown";c.push({kind:"variable",name:z,span:s(M.start??f.start,M.end??f.end),isExported:g,modifiers:[]})}continue}let T=N?.name??"unknown",D="variable",k,C;if(A?.type==="FunctionExpression"||A?.type==="ArrowFunctionExpression")D="function",k=(A.params??[]).map(x),C=m(A.returnType);let R=[];c.push({kind:D,name:T,span:s(f.start,f.end),isExported:g,modifiers:R,parameters:k,returnType:C})}if(c.length===0)return null;if(c.length===1)return c[0];return c}if(o==="TSTypeAliasDeclaration")return{kind:"type",name:l.id?.name??"unknown",span:s(l.start,l.end),isExported:g,modifiers:[]};if(o==="TSInterfaceDeclaration"){let c=l.id?.name??"unknown",f=w(l),N=F(l.body?.body??[]),A=l.typeParameters?.params?.map((D)=>D.name?.name).filter(Boolean)||void 0,T={kind:"interface",name:c,span:s(l.start,l.end),isExported:g,modifiers:[],heritage:f.length>0?f:void 0,members:N.length>0?N:void 0};if(A&&A.length>0)T.typeParameters=A;return T}if(o==="TSEnumDeclaration"){let c=l.id?.name??"unknown",f=p(l),A=(l.body?.members??[]).map((T)=>({kind:"property",name:T.id?.name??T.id?.value??"unknown",span:s(T.start,T.end),isExported:!1,modifiers:[]}));return{kind:"enum",name:c,span:s(l.start,l.end),isExported:g,modifiers:f,members:A.length>0?A:void 0}}return null}let I=[];for(let l of t.body){let g=null,o=l,c=typeof o.type==="string"?o.type:"";if(c==="ExportNamedDeclaration"){let N=l;if(N.declaration){if(g=h(N.declaration,!0),g&&!Array.isArray(g))g.span=s(N.start,N.end);else if(Array.isArray(g))for(let A of g)A.span=s(N.start,N.end)}}else if(c==="ExportDefaultDeclaration"){let N=l,A=N.declaration;if(A){if(g=h(A,!0),g&&!Array.isArray(g))g.name=A.id?.name??"default",g.isExported=!0,g.span=s(N.start,N.end)}}else g=h(l,!1);let f=Array.isArray(g)?g:g?[g]:[];for(let N of f){let A=l.start??0,T=u(A);if(T){let D=Qn(T);if(!Ot(D))N.jsDoc=D}I.push(N)}}return I}import{resolve as hn,dirname as kt,extname as At}from"path";function Dn(n,t,e){let i=(r)=>{let s=At(r);if(s==="")return[r+".ts",r+"/index.ts",r+".mts",r+"/index.mts",r+".cts",r+"/index.cts"];if(s===".js")return[r.slice(0,-3)+".ts"];if(s===".mjs")return[r.slice(0,-4)+".mts"];if(s===".cjs")return[r.slice(0,-4)+".cts"];return[r]};if(t.startsWith(".")){let r=hn(kt(n),t);return i(r)}if(e)for(let[r,s]of e.paths){if(s.length===0)continue;let u=r.indexOf("*");if(u===-1){if(t===r){let m=[];for(let a of s)m.push(...i(hn(e.baseUrl,a)));return m}}else{let m=r.slice(0,u),a=r.slice(u+1);if(t.startsWith(m)&&(a===""||t.endsWith(a))){let x=t.slice(m.length,a===""?void 0:t.length-a.length),p=[];for(let y of s)p.push(...i(hn(e.baseUrl,y.replace("*",x))));return p}}}return[]}function En(n,t,e,i=Dn){let r=new Map,s=n.body??[];for(let u of s){if(u.type!=="ImportDeclaration")continue;let m=u.source?.value??"",a=i(t,m,e);if(a.length===0)continue;let x=a[0],p=u.specifiers??[];for(let y of p)switch(y.type){case"ImportSpecifier":r.set(y.local.name,{path:x,importedName:y.imported.name});break;case"ImportDefaultSpecifier":r.set(y.local.name,{path:x,importedName:"default"});break;case"ImportNamespaceSpecifier":r.set(y.local.name,{path:x,importedName:"*"});break}}return r}var ht=new Set(["loc","start","end","scope"]);function sn(n,t){if(!n||typeof n!=="object")return;if(Array.isArray(n)){for(let i of n)sn(i,t);return}let e=n;t(e);for(let i of Object.keys(e)){if(ht.has(i))continue;let r=e[i];if(r&&typeof r==="object")sn(r,t)}}function Xn(n){if(!n||typeof n!=="object"||Array.isArray(n))return null;let t=n;if((t.type==="StringLiteral"||t.type==="Literal")&&typeof t.value==="string")return t.value;return null}function q(n){if(!n||typeof n!=="object"||Array.isArray(n))return null;let t=n;if(t.type==="Identifier"){let e=t.name;return{root:e,parts:[],full:e}}if(t.type==="ThisExpression")return{root:"this",parts:[],full:"this"};if(t.type==="Super")return{root:"super",parts:[],full:"super"};if(t.type==="MemberExpression"){let e=[],i=t;while(i.type==="MemberExpression"){let u=i.property;if(!u||typeof u.name!=="string")return null;e.unshift(u.name),i=i.object}let r;if(i.type==="Identifier")r=i.name;else if(i.type==="ThisExpression")r="this";else if(i.type==="Super")r="super";else return null;let s=[r,...e].join(".");return{root:r,parts:e,full:s}}return null}function Yn(n,t,e,i=Dn){let r=[],s=n.body??[];for(let u of s){if(u.type==="ImportDeclaration"){let m=u.source?.value??"",a=i(t,m,e);if(a.length===0)continue;let x=a[0],p=u.importKind==="type",y=u.specifiers??[];if(y.length===0){let w={};if(p)w.isType=!0;r.push({type:p?"type-references":"imports",srcFilePath:t,srcSymbolName:null,dstFilePath:x,dstSymbolName:null,...Object.keys(w).length>0?{metaJson:JSON.stringify(w)}:{}})}else for(let w of y){let O=w.type,F=p||w.importKind==="type",h={};if(F)h.isType=!0;let I,l;if(O==="ImportDefaultSpecifier")I="default",l=w.local.name;else if(O==="ImportNamespaceSpecifier")I="*",l=w.local.name,h.importKind="namespace";else I=w.imported.name,l=w.local.name;r.push({type:F?"type-references":"imports",srcFilePath:t,srcSymbolName:l,dstFilePath:x,dstSymbolName:I,...Object.keys(h).length>0?{metaJson:JSON.stringify(h)}:{}})}continue}if(u.type==="ExportAllDeclaration"&&u.source){let m=u.source?.value??"",a=i(t,m,e);if(a.length===0)continue;let x=a[0],p=u.exportKind==="type",y={isReExport:!0};if(p)y.isType=!0;r.push({type:p?"type-references":"re-exports",srcFilePath:t,srcSymbolName:null,dstFilePath:x,dstSymbolName:null,metaJson:JSON.stringify(y)});continue}if(u.type==="ExportNamedDeclaration"&&u.source){let m=u.source?.value??"",a=i(t,m,e);if(a.length===0)continue;let x=a[0],p=u.exportKind==="type",O={isReExport:!0,specifiers:(u.specifiers??[]).map((F)=>({local:F.local.name,exported:F.exported.name}))};if(p)O.isType=!0;r.push({type:p?"type-references":"re-exports",srcFilePath:t,srcSymbolName:null,dstFilePath:x,dstSymbolName:null,metaJson:JSON.stringify(O)})}}return sn(n,(u)=>{if(u.type!=="ImportExpression")return;let m=Xn(u.source);if(!m)return;let a=i(t,m,e);if(a.length===0)return;let x=a[0];r.push({type:"imports",srcFilePath:t,srcSymbolName:null,dstFilePath:x,dstSymbolName:null,metaJson:JSON.stringify({isDynamic:!0})})}),r}function Zn(n,t,e){let i=[],r=[],s=[];function u(){if(r.length>0)return r[r.length-1]??null;return null}function m(x){if(!x)return null;let p=e.get(x.root);if(x.parts.length===0){if(p)return{dstFilePath:p.path,dstSymbolName:p.importedName,resolution:"import"};return{dstFilePath:t,dstSymbolName:x.root,resolution:"local"}}else{if(p&&p.importedName==="*"){let y=x.parts[x.parts.length-1];return{dstFilePath:p.path,dstSymbolName:y,resolution:"namespace"}}return{dstFilePath:t,dstSymbolName:x.full,resolution:"local-member"}}}function a(x){if(!x||typeof x!=="object")return;if(Array.isArray(x)){for(let w of x)a(w);return}let p=x,y=typeof p.type==="string"?p.type:"";if(y==="ClassDeclaration"||y==="ClassExpression"){let w=p,O=w.id?.name??"AnonymousClass";s.push(O),a(w.body),s.pop();return}if(y==="FunctionDeclaration"){let w=p,O=w.id?.name??"anonymous";r.push(O),a(w.body),r.pop();return}if(y==="VariableDeclarator"&&p.init&&(p.init?.type==="FunctionExpression"||p.init?.type==="ArrowFunctionExpression")){let w=p,O=w.id?.name??"anonymous";r.push(O),a(w.init?.body??w.init),r.pop();return}if(y==="MethodDefinition"&&p.value){let w=p,O=s[s.length-1]??"",F=w.key?.name??"anonymous",h=O?`${O}.${F}`:F;r.push(h),a(w.value?.body),r.pop();return}if(y==="FunctionExpression"||y==="ArrowFunctionExpression"){let w=u(),O=w?`${w}.<anonymous>`:"<anonymous>";r.push(O),a(p.body),r.pop();return}if(y==="CallExpression"){let w=p,O=q(w.callee),F=m(O);if(F){let h=u(),I={};if(h===null)I.scope="module";i.push({type:"calls",srcFilePath:t,srcSymbolName:h,dstFilePath:F.dstFilePath,dstSymbolName:F.dstSymbolName,...Object.keys(I).length>0?{metaJson:JSON.stringify(I)}:{}})}a(w.callee);for(let h of w.arguments??[])a(h);return}if(y==="NewExpression"){let w=p,O=q(w.callee),F=m(O);if(F){let h=u(),I={isNew:!0};if(h===null)I.scope="module";i.push({type:"calls",srcFilePath:t,srcSymbolName:h,dstFilePath:F.dstFilePath,dstSymbolName:F.dstSymbolName,metaJson:JSON.stringify(I)})}for(let h of w.arguments??[])a(h);return}for(let w of Object.keys(p)){if(w==="loc"||w==="start"||w==="end"||w==="scope")continue;let O=p[w];if(O&&typeof O==="object")a(O)}}return a(n),i}function vn(n,t,e){let i=[];return sn(n,(r)=>{if(r.type==="TSInterfaceDeclaration"){let m=r.id?.name??"AnonymousInterface",a=r.extends??[];for(let x of a){let p=x.expression??x,y=q(p);if(!y)continue;let w=_n(y,t,e);i.push({type:"extends",srcFilePath:t,srcSymbolName:m,...w})}return}if(r.type!=="ClassDeclaration"&&r.type!=="ClassExpression")return;let s=r.id?.name??"AnonymousClass";if(r.superClass){let m=q(r.superClass);if(m){let a=_n(m,t,e);i.push({type:"extends",srcFilePath:t,srcSymbolName:s,...a})}}let u=r.implements??[];for(let m of u){let a=m.expression??m,x=q(a);if(!x)continue;let p=_n(x,t,e);i.push({type:"implements",srcFilePath:t,srcSymbolName:s,...p})}}),i}function _n(n,t,e){let i=e.get(n.root);if(i){if(i.importedName==="*"){let r=n.parts[n.parts.length-1]??n.root;return{dstFilePath:i.path,dstSymbolName:r,metaJson:JSON.stringify({isNamespaceImport:!0})}}return{dstFilePath:i.path,dstSymbolName:n.parts.length>0?n.full:i.importedName}}return{dstFilePath:t,dstSymbolName:n.full,metaJson:JSON.stringify({isLocal:!0})}}function pn(n,t,e){let i=En(n,t,e),r=Yn(n,t,e),s=Zn(n,t,i),u=vn(n,t,i);return[...r,...s,...u]}import{err as Pn,isErr as Ct}from"@zipbul/result";import{Database as Rt}from"bun:sqlite";import{mkdirSync as Mt,unlinkSync as jn,existsSync as qn}from"fs";import{dirname as Jt,join as nt}from"path";import{drizzle as Lt}from"drizzle-orm/bun-sqlite";import{migrate as Gt}from"drizzle-orm/bun-sqlite/migrator";var In={};yt(In,{watcherOwner:()=>It,symbols:()=>_,relations:()=>b,files:()=>K,FTS_SETUP_SQL:()=>Tn});import{sql as Dt}from"drizzle-orm";import{sqliteTable as fn,text as G,integer as W,real as _t,index as nn,primaryKey as Ft,foreignKey as Fn,check as Tt}from"drizzle-orm/sqlite-core";var K=fn("files",{project:G("project").notNull(),filePath:G("file_path").notNull(),mtimeMs:_t("mtime_ms").notNull(),size:W("size").notNull(),contentHash:G("content_hash").notNull(),updatedAt:G("updated_at").notNull(),lineCount:W("line_count")},(n)=>[Ft({columns:[n.project,n.filePath]})]),_=fn("symbols",{id:W("id").primaryKey({autoIncrement:!0}),project:G("project").notNull(),filePath:G("file_path").notNull(),kind:G("kind").notNull(),name:G("name").notNull(),startLine:W("start_line").notNull(),startColumn:W("start_column").notNull(),endLine:W("end_line").notNull(),endColumn:W("end_column").notNull(),isExported:W("is_exported").notNull().default(0),signature:G("signature"),fingerprint:G("fingerprint"),detailJson:G("detail_json"),contentHash:G("content_hash").notNull(),indexedAt:G("indexed_at").notNull()},(n)=>[nn("idx_symbols_project_file").on(n.project,n.filePath),nn("idx_symbols_project_kind").on(n.project,n.kind),nn("idx_symbols_project_name").on(n.project,n.name),nn("idx_symbols_fingerprint").on(n.project,n.fingerprint),Fn({columns:[n.project,n.filePath],foreignColumns:[K.project,K.filePath]}).onDelete("cascade")]),b=fn("relations",{id:W("id").primaryKey({autoIncrement:!0}),project:G("project").notNull(),type:G("type").notNull(),srcFilePath:G("src_file_path").notNull(),srcSymbolName:G("src_symbol_name"),dstFilePath:G("dst_file_path").notNull(),dstSymbolName:G("dst_symbol_name"),metaJson:G("meta_json")},(n)=>[nn("idx_relations_src").on(n.project,n.srcFilePath),nn("idx_relations_dst").on(n.project,n.dstFilePath),nn("idx_relations_type").on(n.project,n.type),Fn({columns:[n.project,n.srcFilePath],foreignColumns:[K.project,K.filePath]}).onDelete("cascade"),Fn({columns:[n.project,n.dstFilePath],foreignColumns:[K.project,K.filePath]}).onDelete("cascade")]),It=fn("watcher_owner",{id:W("id").primaryKey(),pid:W("pid").notNull(),startedAt:G("started_at").notNull(),heartbeatAt:G("heartbeat_at").notNull()},(n)=>[Tt("watcher_owner_singleton",Dt`${n.id} = 1`)]),Tn=[`CREATE VIRTUAL TABLE IF NOT EXISTS symbols_fts USING fts5(
|
|
4
|
-
|
|
5
|
-
file_path,
|
|
6
|
-
kind,
|
|
7
|
-
content=symbols,
|
|
8
|
-
content_rowid=id
|
|
9
|
-
)`,`CREATE TRIGGER IF NOT EXISTS symbols_ai
|
|
10
|
-
AFTER INSERT ON symbols BEGIN
|
|
11
|
-
INSERT INTO symbols_fts(rowid, name, file_path, kind)
|
|
12
|
-
VALUES (new.id, new.name, new.file_path, new.kind);
|
|
13
|
-
END`,`CREATE TRIGGER IF NOT EXISTS symbols_ad
|
|
14
|
-
AFTER DELETE ON symbols BEGIN
|
|
15
|
-
INSERT INTO symbols_fts(symbols_fts, rowid, name, file_path, kind)
|
|
16
|
-
VALUES ('delete', old.id, old.name, old.file_path, old.kind);
|
|
17
|
-
END`,`CREATE TRIGGER IF NOT EXISTS symbols_au
|
|
18
|
-
AFTER UPDATE ON symbols BEGIN
|
|
19
|
-
INSERT INTO symbols_fts(symbols_fts, rowid, name, file_path, kind)
|
|
20
|
-
VALUES ('delete', old.id, old.name, old.file_path, old.kind);
|
|
21
|
-
INSERT INTO symbols_fts(rowid, name, file_path, kind)
|
|
22
|
-
VALUES (new.id, new.name, new.file_path, new.kind);
|
|
23
|
-
END`];class Cn{client=null;drizzle=null;dbPath;txDepth=0;constructor(n){this.dbPath=nt(n.projectRoot,".zipbul","gildash.db")}get drizzleDb(){if(!this.drizzle)throw Error("Database is not open. Call open() first.");return this.drizzle}open(){try{Mt(Jt(this.dbPath),{recursive:!0}),this.client=new Rt(this.dbPath),this.client.run("PRAGMA journal_mode = WAL"),this.client.run("PRAGMA foreign_keys = ON"),this.client.run("PRAGMA busy_timeout = 5000"),this.drizzle=Lt(this.client,{schema:In}),Gt(this.drizzle,{migrationsFolder:nt(import.meta.dirname,"migrations")});for(let t of Tn)this.client.run(t);let n=this.client;if(typeof n.function==="function")n.function.call(this.client,"regexp",(t,e)=>{try{return new RegExp(t).test(e)?1:0}catch{return 0}})}catch(n){if(this.isCorruptionError(n)&&qn(this.dbPath)){this.closeClient(),jn(this.dbPath);for(let e of["-wal","-shm"]){let i=this.dbPath+e;if(qn(i))jn(i)}let t=this.open();if(Ct(t))return Pn(d("store",`Failed to recover database at ${this.dbPath}`,t.data));return t}return Pn(d("store",`Failed to open database at ${this.dbPath}`,n))}}close(){this.closeClient(),this.drizzle=null}transaction(n){let t=this.requireClient();if(this.txDepth===0){this.txDepth++;try{return t.transaction(()=>n(this))()}finally{this.txDepth--}}let e=`sp_${this.txDepth++}`;t.run(`SAVEPOINT "${e}"`);try{let i=n(this);return t.run(`RELEASE SAVEPOINT "${e}"`),i}catch(i){throw t.run(`ROLLBACK TO SAVEPOINT "${e}"`),t.run(`RELEASE SAVEPOINT "${e}"`),i}finally{this.txDepth--}}immediateTransaction(n){let t=this.requireClient();this.txDepth++,t.run("BEGIN IMMEDIATE");try{let e=n();return t.run("COMMIT"),e}catch(e){throw t.run("ROLLBACK"),e}finally{this.txDepth--}}query(n){let t=this.requireClient().prepare(n).get();if(!t)return null;return Object.values(t)[0]}getTableNames(){return this.requireClient().query("SELECT name FROM sqlite_master WHERE type = 'table'").all().map((t)=>t.name)}selectOwner(){return this.requireClient().prepare("SELECT pid, heartbeat_at FROM watcher_owner WHERE id = 1").get()??void 0}insertOwner(n){let t=new Date().toISOString();this.requireClient().prepare("INSERT INTO watcher_owner (id, pid, started_at, heartbeat_at) VALUES (1, ?, ?, ?)").run(n,t,t)}replaceOwner(n){let t=new Date().toISOString();this.requireClient().prepare("INSERT OR REPLACE INTO watcher_owner (id, pid, started_at, heartbeat_at) VALUES (1, ?, ?, ?)").run(n,t,t)}touchOwner(n){let t=new Date().toISOString();this.requireClient().prepare("UPDATE watcher_owner SET heartbeat_at = ? WHERE id = 1 AND pid = ?").run(t,n)}deleteOwner(n){this.requireClient().prepare("DELETE FROM watcher_owner WHERE id = 1 AND pid = ?").run(n)}requireClient(){if(!this.client)throw Error("Database is not open. Call open() first.");return this.client}closeClient(){if(this.client)this.client.close(),this.client=null}isCorruptionError(n){if(!(n instanceof Error))return!1;let t=n.message.toLowerCase();return t.includes("malformed")||t.includes("corrupt")||t.includes("not a database")||t.includes("disk i/o error")||t.includes("sqlite_corrupt")}}import{eq as un,and as tt}from"drizzle-orm";class Rn{db;constructor(n){this.db=n}getFile(n,t){return this.db.drizzleDb.select().from(K).where(tt(un(K.project,n),un(K.filePath,t))).get()??null}upsertFile(n){this.db.drizzleDb.insert(K).values({project:n.project,filePath:n.filePath,mtimeMs:n.mtimeMs,size:n.size,contentHash:n.contentHash,updatedAt:n.updatedAt,lineCount:n.lineCount??null}).onConflictDoUpdate({target:[K.project,K.filePath],set:{mtimeMs:n.mtimeMs,size:n.size,contentHash:n.contentHash,updatedAt:n.updatedAt,lineCount:n.lineCount??null}}).run()}getAllFiles(n){return this.db.drizzleDb.select().from(K).where(un(K.project,n)).all()}getFilesMap(n){let t=this.getAllFiles(n),e=new Map;for(let i of t)e.set(i.filePath,i);return e}deleteFile(n,t){this.db.drizzleDb.delete(K).where(tt(un(K.project,n),un(K.filePath,t))).run()}}import{eq as B,and as tn,sql as dn,count as Kt}from"drizzle-orm";function gn(n){return n.trim().split(/\s+/).map((t)=>t.trim()).filter((t)=>t.length>0).map((t)=>`"${t.replaceAll('"','""')}"*`).join(" ")}class Mn{db;constructor(n){this.db=n}replaceFileSymbols(n,t,e,i){if(this.db.drizzleDb.delete(_).where(tn(B(_.project,n),B(_.filePath,t))).run(),!i.length)return;let r=new Date().toISOString();for(let s of i)this.db.drizzleDb.insert(_).values({project:n,filePath:t,kind:s.kind??"unknown",name:s.name??"",startLine:s.startLine??0,startColumn:s.startColumn??0,endLine:s.endLine??0,endColumn:s.endColumn??0,isExported:s.isExported??0,signature:s.signature??null,fingerprint:s.fingerprint??null,detailJson:s.detailJson??null,contentHash:e,indexedAt:s.indexedAt??r}).run()}getFileSymbols(n,t){return this.db.drizzleDb.select().from(_).where(tn(B(_.project,n),B(_.filePath,t))).all()}searchByName(n,t,e={}){let i=e.limit??50,r=gn(t);if(!r)return[];return this.db.drizzleDb.select().from(_).where(tn(dn`${_.id} IN (SELECT rowid FROM symbols_fts WHERE symbols_fts MATCH ${r})`,B(_.project,n),e.kind?B(_.kind,e.kind):void 0)).orderBy(_.name).limit(i).all()}searchByKind(n,t){return this.db.drizzleDb.select().from(_).where(tn(B(_.project,n),B(_.kind,t))).orderBy(_.name).all()}getStats(n){let t=this.db.drizzleDb.select({symbolCount:Kt(),fileCount:dn`COUNT(DISTINCT ${_.filePath})`}).from(_).where(B(_.project,n)).get();return{symbolCount:t?.symbolCount??0,fileCount:t?.fileCount??0}}getByFingerprint(n,t){return this.db.drizzleDb.select().from(_).where(tn(B(_.project,n),B(_.fingerprint,t))).all()}deleteFileSymbols(n,t){this.db.drizzleDb.delete(_).where(tn(B(_.project,n),B(_.filePath,t))).run()}searchByQuery(n){let t=this.db.drizzleDb.select().from(_).where(tn(n.ftsQuery?dn`${_.id} IN (SELECT rowid FROM symbols_fts WHERE symbols_fts MATCH ${n.ftsQuery})`:void 0,n.exactName?B(_.name,n.exactName):void 0,n.project!==void 0?B(_.project,n.project):void 0,n.kind?B(_.kind,n.kind):void 0,n.filePath!==void 0?B(_.filePath,n.filePath):void 0,n.isExported!==void 0?B(_.isExported,n.isExported?1:0):void 0,n.decorator?dn`${_.id} IN (SELECT s.id FROM symbols s, json_each(s.detail_json, '$.decorators') je WHERE json_extract(je.value, '$.name') = ${n.decorator})`:void 0)).orderBy(_.name).limit(n.regex?Math.max(n.limit*50,5000):n.limit).all();if(!n.regex)return t;try{let e=new RegExp(n.regex);return t.filter((i)=>e.test(i.name)).slice(0,n.limit)}catch{return[]}}}import{eq as L,and as Q,isNull as et,or as zt}from"drizzle-orm";class Jn{db;constructor(n){this.db=n}replaceFileRelations(n,t,e){if(this.db.drizzleDb.delete(b).where(Q(L(b.project,n),L(b.srcFilePath,t))).run(),!e.length)return;for(let i of e)this.db.drizzleDb.insert(b).values({project:n,type:i.type??"unknown",srcFilePath:i.srcFilePath??t,srcSymbolName:i.srcSymbolName??null,dstFilePath:i.dstFilePath??"",dstSymbolName:i.dstSymbolName??null,metaJson:i.metaJson??null}).run()}getOutgoing(n,t,e){if(e!==void 0)return this.db.drizzleDb.select({project:b.project,type:b.type,srcFilePath:b.srcFilePath,srcSymbolName:b.srcSymbolName,dstFilePath:b.dstFilePath,dstSymbolName:b.dstSymbolName,metaJson:b.metaJson}).from(b).where(Q(L(b.project,n),L(b.srcFilePath,t),zt(L(b.srcSymbolName,e),et(b.srcSymbolName)))).all();return this.db.drizzleDb.select({project:b.project,type:b.type,srcFilePath:b.srcFilePath,srcSymbolName:b.srcSymbolName,dstFilePath:b.dstFilePath,dstSymbolName:b.dstSymbolName,metaJson:b.metaJson}).from(b).where(Q(L(b.project,n),L(b.srcFilePath,t))).all()}getIncoming(n,t){return this.db.drizzleDb.select({project:b.project,type:b.type,srcFilePath:b.srcFilePath,srcSymbolName:b.srcSymbolName,dstFilePath:b.dstFilePath,dstSymbolName:b.dstSymbolName,metaJson:b.metaJson}).from(b).where(Q(L(b.project,n),L(b.dstFilePath,t))).all()}getByType(n,t){return this.db.drizzleDb.select({project:b.project,type:b.type,srcFilePath:b.srcFilePath,srcSymbolName:b.srcSymbolName,dstFilePath:b.dstFilePath,dstSymbolName:b.dstSymbolName,metaJson:b.metaJson}).from(b).where(Q(L(b.project,n),L(b.type,t))).all()}deleteFileRelations(n,t){this.db.drizzleDb.delete(b).where(Q(L(b.project,n),L(b.srcFilePath,t))).run()}searchRelations(n){return this.db.drizzleDb.select({project:b.project,type:b.type,srcFilePath:b.srcFilePath,srcSymbolName:b.srcSymbolName,dstFilePath:b.dstFilePath,dstSymbolName:b.dstSymbolName,metaJson:b.metaJson}).from(b).where(Q(n.project!==void 0?L(b.project,n.project):void 0,n.srcFilePath!==void 0?L(b.srcFilePath,n.srcFilePath):void 0,n.srcSymbolName!==void 0?L(b.srcSymbolName,n.srcSymbolName):void 0,n.dstFilePath!==void 0?L(b.dstFilePath,n.dstFilePath):void 0,n.dstSymbolName!==void 0?L(b.dstSymbolName,n.dstSymbolName):void 0,n.type!==void 0?L(b.type,n.type):void 0)).limit(n.limit).all()}retargetRelations(n,t,e,i,r){let s=e===null?Q(L(b.project,n),L(b.dstFilePath,t),et(b.dstSymbolName)):Q(L(b.project,n),L(b.dstFilePath,t),L(b.dstSymbolName,e));this.db.drizzleDb.update(b).set({dstFilePath:i,dstSymbolName:r}).where(s).run()}}import{err as it}from"@zipbul/result";import{subscribe as Bt}from"@parcel/watcher";import Ln from"path";var $t=["**/.git/**","**/.zipbul/**","**/dist/**","**/node_modules/**"],Ut=new Set(["package.json","tsconfig.json"]);function Wt(n){return n.replaceAll("\\","/")}function Ht(n){if(n==="update")return"change";if(n==="create")return"create";return"delete"}class xn{#t;#n;#i;#r;#s;#e;constructor(n,t=Bt,e=console){this.#n=n.projectRoot,this.#i=[...$t,...n.ignorePatterns??[]],this.#r=new Set((n.extensions??[".ts",".mts",".cts"]).map((i)=>i.toLowerCase())),this.#s=t,this.#e=e}async start(n){try{this.#t=await this.#s(this.#n,(t,e)=>{if(t){this.#e.error(d("watcher","Callback error",t));return}try{for(let i of e){let r=Wt(Ln.relative(this.#n,i.path));if(r.startsWith(".."))continue;let s=Ln.basename(r),u=Ln.extname(r).toLowerCase();if(!Ut.has(s)&&!this.#r.has(u))continue;if(r.endsWith(".d.ts"))continue;n({eventType:Ht(i.type),filePath:r})}}catch(i){this.#e.error(d("watcher","Callback error",i))}},{ignore:this.#i})}catch(t){return it(d("watcher","Failed to subscribe watcher",t))}}async close(){if(!this.#t)return;try{await this.#t.unsubscribe(),this.#t=void 0}catch(n){return it(d("watcher","Failed to close watcher",n))}}}import Gn from"path";import{promises as Vt}from"fs";var Qt=["**/node_modules/**","**/.git/**","**/.zipbul/**","**/dist/**"];async function yn(n){let t=[];for await(let e of Vt.glob("**/package.json",{cwd:n,exclude:Qt})){let i=Gn.dirname(e).replaceAll("\\","/"),r=Gn.join(n,e),s=await Bun.file(r).json(),u=typeof s?.name==="string"&&s.name.length>0?s.name:Gn.basename(i==="."?n:i);t.push({dir:i,project:u})}return t.sort((e,i)=>i.dir.length-e.dir.length),t}function E(n,t,e="default"){let i=n.replaceAll("\\","/");for(let r of t){if(r.dir===".")return r.project;if(i===r.dir||i.startsWith(`${r.dir}/`))return r.project}return e}import rt from"path";var Z=new Map;async function Et(n){let t=Bun.file(n);if(!await t.exists())return null;let e=await t.json();return typeof e==="object"&&e!==null?e:null}async function mn(n){if(Z.has(n))return Z.get(n)??null;let t=rt.join(n,"tsconfig.json"),e=await Et(t);if(!e)return Z.set(n,null),null;let i=typeof e.compilerOptions==="object"&&e.compilerOptions!==null?e.compilerOptions:null;if(!i)return Z.set(n,null),null;let r=typeof i.baseUrl==="string"?i.baseUrl:null,s=typeof i.paths==="object"&&i.paths!==null?i.paths:null;if(!r&&!s)return Z.set(n,null),null;let u=r?rt.resolve(n,r):n,m=new Map;if(s)for(let[x,p]of Object.entries(s)){if(!Array.isArray(p))continue;let y=p.filter((w)=>typeof w==="string");m.set(x,y)}let a={baseUrl:u,paths:m};return Z.set(n,a),a}function bn(n){if(n){Z.delete(n);return}Z.clear()}import st from"path";function Kn(n,t){return st.relative(n,t).replaceAll("\\","/")}function on(n,t){return st.resolve(n,t)}function v(n){let t=Bun.hash.xxHash64(n);return BigInt.asUintN(64,BigInt(t)).toString(16).padStart(16,"0")}import{isErr as ut}from"@zipbul/result";import{promises as Xt}from"fs";import{join as Yt}from"path";async function ot(n){let{projectRoot:t,extensions:e,ignorePatterns:i,fileRepo:r}=n,s=r.getFilesMap(),u=new Set,m=[],a=[],x=i.map((y)=>new Bun.Glob(y));for await(let y of Xt.glob("**/*",{cwd:t})){if(!e.some((o)=>y.endsWith(o)))continue;if(x.some((o)=>o.match(y)))continue;u.add(y);let w=Yt(t,y),O=Bun.file(w),{size:F,lastModified:h}=O,I=s.get(y);if(!I){let o=await O.text(),c=v(o);m.push({filePath:y,contentHash:c,mtimeMs:h,size:F});continue}if(I.mtimeMs===h&&I.size===F){a.push({filePath:y,contentHash:I.contentHash,mtimeMs:h,size:F});continue}let l=await O.text(),g=v(l);if(g===I.contentHash)a.push({filePath:y,contentHash:g,mtimeMs:h,size:F});else m.push({filePath:y,contentHash:g,mtimeMs:h,size:F})}let p=[];for(let y of s.keys())if(!u.has(y))p.push(y);return{changed:m,unchanged:a,deleted:p}}function Zt(n){if(n.kind==="function"||n.kind==="method"){let t=n.parameters?.length??0,e=n.modifiers.includes("async")?1:0;return`params:${t}|async:${e}`}return null}function vt(n){let t={};if(n.jsDoc)t.jsDoc=n.jsDoc;if(n.kind==="function"||n.kind==="method"){if(n.parameters!==void 0)t.parameters=n.parameters;if(n.returnType!==void 0)t.returnType=n.returnType}if(n.heritage?.length)t.heritage=n.heritage;if(n.decorators?.length)t.decorators=n.decorators;if(n.typeParameters?.length)t.typeParameters=n.typeParameters;if(n.modifiers?.length)t.modifiers=n.modifiers;if(n.members?.length)t.members=n.members.map((e)=>{let i=e.modifiers.find((r)=>r==="private"||r==="protected"||r==="public");return{name:e.name,kind:e.methodKind??e.kind,type:e.returnType,visibility:i,isStatic:e.modifiers.includes("static")||void 0,isReadonly:e.modifiers.includes("readonly")||void 0}});return Object.keys(t).length>0?JSON.stringify(t):null}function at(n,t,e,i,r){let s=Zt(n),u=v(`${t}|${n.kind}|${s??""}`);return{project:e,filePath:i,kind:n.kind,name:t,startLine:n.span.start.line,startColumn:n.span.start.column,endLine:n.span.end.line,endColumn:n.span.end.column,isExported:n.isExported?1:0,signature:s,fingerprint:u,detailJson:vt(n),contentHash:r,indexedAt:new Date().toISOString()}}function zn(n){let{parsed:t,project:e,filePath:i,contentHash:r,symbolRepo:s}=n,u=ln(t),m=[];for(let a of u){m.push(at(a,a.name,e,i,r));for(let x of a.members??[])m.push(at(x,`${a.name}.${x.name}`,e,i,r))}s.replaceFileSymbols(e,i,r,m)}function Bn(n){let{ast:t,project:e,filePath:i,relationRepo:r,projectRoot:s,tsconfigPaths:u}=n,m=on(s,i),a=pn(t,m,u),x=[];for(let p of a){let y=Kn(s,p.dstFilePath);if(y.startsWith(".."))continue;let w=Kn(s,p.srcFilePath);x.push({project:e,type:p.type,srcFilePath:w,srcSymbolName:p.srcSymbolName??null,dstFilePath:y,dstSymbolName:p.dstSymbolName??null,metaJson:p.metaJson??null})}return r.replaceFileRelations(e,i,x),x.length}var Pt=100;class cn{opts;logger;callbacks=new Set;indexingLock=!1;pendingEvents=[];debounceTimer=null;currentIndexing=null;pendingFullIndex=!1;pendingFullIndexWaiters=[];tsconfigPathsRaw;boundariesRefresh=null;constructor(n){this.opts=n,this.logger=n.logger??console,this.tsconfigPathsRaw=mn(n.projectRoot)}get tsconfigPaths(){return this.tsconfigPathsRaw}fullIndex(){return this.startIndex(void 0,!0)}incrementalIndex(n){return this.startIndex(n,!1)}onIndexed(n){return this.callbacks.add(n),()=>this.callbacks.delete(n)}handleWatcherEvent(n){if(n.filePath.endsWith("tsconfig.json")){bn(this.opts.projectRoot),this.tsconfigPathsRaw=mn(this.opts.projectRoot),this.fullIndex().catch((t)=>{this.logger.error("[IndexCoordinator] fullIndex failed after tsconfig change:",t)});return}if(n.filePath.endsWith("package.json")){let t=this.opts.discoverProjectsFn??yn;this.boundariesRefresh=t(this.opts.projectRoot).then((e)=>{this.opts.boundaries=e})}if(this.pendingEvents.push(n),this.debounceTimer===null)this.debounceTimer=setTimeout(()=>{this.debounceTimer=null,this.flushPending()},Pt)}async shutdown(){if(this.debounceTimer!==null)clearTimeout(this.debounceTimer),this.debounceTimer=null;if(this.currentIndexing)await this.currentIndexing}startIndex(n,t){if(this.indexingLock){if(t)return this.pendingFullIndex=!0,new Promise((i,r)=>{this.pendingFullIndexWaiters.push({resolve:i,reject:r})});return this.currentIndexing}this.indexingLock=!0;let e=this.doIndex(n,t).then((i)=>{return this.fireCallbacks(i),i}).finally(()=>{if(this.indexingLock=!1,this.currentIndexing=null,this.pendingFullIndex){this.pendingFullIndex=!1;let i=this.pendingFullIndexWaiters.splice(0);this.startIndex(void 0,!0).then((r)=>{for(let s of i)s.resolve(r)}).catch((r)=>{for(let s of i)s.reject(r)})}else if(this.pendingEvents.length>0){let i=this.pendingEvents.splice(0);this.startIndex(i,!1).catch((r)=>this.logger.error("[IndexCoordinator] incremental drain error",r))}});return this.currentIndexing=e,e}async doIndex(n,t){let e=Date.now(),{fileRepo:i,symbolRepo:r,relationRepo:s,dbConnection:u}=this.opts;if(this.boundariesRefresh)await this.boundariesRefresh,this.boundariesRefresh=null;let m,a;if(n!==void 0)m=n.filter((o)=>o.eventType==="create"||o.eventType==="change").map((o)=>({filePath:o.filePath,contentHash:"",mtimeMs:0,size:0})),a=n.filter((o)=>o.eventType==="delete").map((o)=>o.filePath);else{let o=new Map;for(let f of this.opts.boundaries)for(let[N,A]of i.getFilesMap(f.project))o.set(N,A);let c=await ot({projectRoot:this.opts.projectRoot,extensions:this.opts.extensions,ignorePatterns:this.opts.ignorePatterns,fileRepo:{getFilesMap:()=>o}});m=c.changed,a=c.deleted}let x=await this.tsconfigPathsRaw??void 0,p=new Map;for(let o of a){let c=E(o,this.opts.boundaries),f=r.getFileSymbols(c,o);p.set(o,f)}let y=new Map,w=new Map;if(t)for(let o of this.opts.boundaries)for(let c of i.getAllFiles(o.project))for(let f of r.getFileSymbols(o.project,c.filePath))y.set(`${f.filePath}::${f.name}`,{name:f.name,filePath:f.filePath,kind:f.kind,fingerprint:f.fingerprint});else{for(let o of m){let c=E(o.filePath,this.opts.boundaries);for(let f of r.getFileSymbols(c,o.filePath))y.set(`${f.filePath}::${f.name}`,{name:f.name,filePath:f.filePath,kind:f.kind,fingerprint:f.fingerprint})}for(let[,o]of p)for(let c of o)y.set(`${c.filePath}::${c.name}`,{name:c.name,filePath:c.filePath,kind:c.kind,fingerprint:c.fingerprint})}let O=()=>{for(let o of a){let c=E(o,this.opts.boundaries);r.deleteFileSymbols(c,o),s.deleteFileRelations(c,o),i.deleteFile(c,o)}},F=async()=>{let o=0,c=0,f=[];for(let N of m)try{let A=await this.processFile(N.filePath,N.contentHash||void 0,x);o+=A.symbolCount,c+=A.relCount}catch(A){this.logger.error(`[IndexCoordinator] Failed to index ${N.filePath}:`,A),f.push(N.filePath)}return{symbols:o,relations:c,failedFiles:f}},h=0,I=0,l=[];if(t){let{projectRoot:o,boundaries:c}=this.opts,{parseCache:f}=this.opts,N=await Promise.allSettled(m.map(async(D)=>{let k=on(o,D.filePath),C=Bun.file(k),R=await C.text(),M=D.contentHash||v(R);return{filePath:D.filePath,text:R,contentHash:M,mtimeMs:C.lastModified,size:C.size}})),A=N.filter((D)=>D.status==="fulfilled").map((D)=>D.value);for(let D of N)if(D.status==="rejected")this.logger.error("[IndexCoordinator] Failed to pre-read file:",D.reason);let T=[];u.transaction(()=>{for(let k of c){let C=i.getAllFiles(k.project);for(let R of C)i.deleteFile(R.project,R.filePath)}for(let k of A){let C=E(k.filePath,c);i.upsertFile({project:C,filePath:k.filePath,mtimeMs:k.mtimeMs,size:k.size,contentHash:k.contentHash,updatedAt:new Date().toISOString(),lineCount:k.text.split(`
|
|
24
|
-
`).length})}let D=this.opts.parseSourceFn??an;for(let k of A){let C=E(k.filePath,c),R=D(on(o,k.filePath),k.text);if(ut(R))throw R.data;let M=R;T.push({filePath:k.filePath,parsed:M}),zn({parsed:M,project:C,filePath:k.filePath,contentHash:k.contentHash,symbolRepo:r}),I+=Bn({ast:M.program,project:C,filePath:k.filePath,relationRepo:s,projectRoot:o,tsconfigPaths:x}),h+=r.getFileSymbols(C,k.filePath).length}});for(let D of T)f.set(D.filePath,D.parsed)}else{O();let o=await F();h=o.symbols,I=o.relations,l=o.failedFiles}for(let o of m){let c=E(o.filePath,this.opts.boundaries);for(let f of r.getFileSymbols(c,o.filePath))w.set(`${f.filePath}::${f.name}`,{name:f.name,filePath:f.filePath,kind:f.kind,fingerprint:f.fingerprint})}let g={added:[],modified:[],removed:[]};for(let[o,c]of w){let f=y.get(o);if(!f)g.added.push({name:c.name,filePath:c.filePath,kind:c.kind});else if(f.fingerprint!==c.fingerprint)g.modified.push({name:c.name,filePath:c.filePath,kind:c.kind})}for(let[o,c]of y)if(!w.has(o))g.removed.push({name:c.name,filePath:c.filePath,kind:c.kind});if(!t)for(let[o,c]of p)for(let f of c){if(!f.fingerprint)continue;let N=E(o,this.opts.boundaries),A=r.getByFingerprint(N,f.fingerprint);if(A.length===1){let T=A[0];s.retargetRelations(N,o,f.name,T.filePath,T.name)}}return{indexedFiles:m.length,removedFiles:a.length,totalSymbols:h,totalRelations:I,durationMs:Date.now()-e,changedFiles:m.map((o)=>o.filePath),deletedFiles:[...a],failedFiles:l,changedSymbols:g}}async processFile(n,t,e){let{projectRoot:i,boundaries:r}=this.opts,{fileRepo:s,symbolRepo:u,relationRepo:m,parseCache:a}=this.opts,x=on(i,n),p=Bun.file(x),y=await p.text(),w=t||v(y),O=E(n,r),h=(this.opts.parseSourceFn??an)(x,y);if(ut(h))throw h.data;let I=h;a.set(n,I),s.upsertFile({project:O,filePath:n,mtimeMs:p.lastModified,size:p.size,contentHash:w,updatedAt:new Date().toISOString(),lineCount:y.split(`
|
|
25
|
-
`).length}),zn({parsed:I,project:O,filePath:n,contentHash:w,symbolRepo:u});let l=Bn({ast:I.program,project:O,filePath:n,relationRepo:m,projectRoot:i,tsconfigPaths:e});return{symbolCount:u.getFileSymbols(O,n).length,relCount:l}}fireCallbacks(n){for(let t of this.callbacks)try{t(n)}catch(e){this.logger.error("[IndexCoordinator] onIndexed callback threw:",e)}}flushPending(){if(this.indexingLock)return;if(this.pendingEvents.length>0){let n=this.pendingEvents.splice(0);this.startIndex(n,!1).catch((t)=>this.logger.error("[IndexCoordinator] flushPending startIndex error:",t))}}}function jt(n){try{return process.kill(n,0),!0}catch(t){if(typeof t==="object"&&t&&"code"in t)return t.code!=="ESRCH";return!0}}function qt(n){let t=new Date(n).getTime();return Number.isNaN(t)?0:t}function mt(n,t,e={}){let i=e.now??Date.now,r=e.isAlive??jt,s=e.staleAfterSeconds??90;return n.immediateTransaction(()=>{let u=n.selectOwner();if(!u)return n.insertOwner(t),"owner";let m=Math.floor((i()-qt(u.heartbeat_at))/1000);if(r(u.pid)&&m<s)return"reader";return n.replaceOwner(t),"owner"})}function ct(n,t){n.deleteOwner(t)}function lt(n,t){n.touchOwner(t)}function $n(n){let{symbolRepo:t,project:e,query:i}=n,r=i.project??e,s=i.limit??100,u={kind:i.kind,filePath:i.filePath,isExported:i.isExported,project:r,limit:s};if(i.text)if(i.exact)u.exactName=i.text;else{let a=gn(i.text);if(a)u.ftsQuery=a}if(i.decorator)u.decorator=i.decorator;if(i.regex)u.regex=i.regex;return t.searchByQuery(u).map((a)=>({id:a.id,filePath:a.filePath,kind:a.kind,name:a.name,span:{start:{line:a.startLine,column:a.startColumn},end:{line:a.endLine,column:a.endColumn}},isExported:a.isExported===1,signature:a.signature,fingerprint:a.fingerprint,detail:a.detailJson?(()=>{try{return JSON.parse(a.detailJson)}catch{return{}}})():{}}))}function Un(n){let{relationRepo:t,project:e,query:i}=n,r=i.project??e,s=i.limit??500;return t.searchRelations({srcFilePath:i.srcFilePath,srcSymbolName:i.srcSymbolName,dstFilePath:i.dstFilePath,dstSymbolName:i.dstSymbolName,type:i.type,project:r,limit:s}).map((m)=>{let a;if(m.metaJson)try{a=JSON.parse(m.metaJson)}catch{console.error("[relationSearch] malformed metaJson:",m.metaJson)}return{type:m.type,srcFilePath:m.srcFilePath,srcSymbolName:m.srcSymbolName,dstFilePath:m.dstFilePath,dstSymbolName:m.dstSymbolName,metaJson:m.metaJson??void 0,meta:a}})}class wn{options;adjacencyList=new Map;reverseAdjacencyList=new Map;constructor(n){this.options=n}build(){this.adjacencyList=new Map,this.reverseAdjacencyList=new Map;let n=[...this.options.relationRepo.getByType(this.options.project,"imports"),...this.options.relationRepo.getByType(this.options.project,"type-references"),...this.options.relationRepo.getByType(this.options.project,"re-exports")];for(let t of n){let{srcFilePath:e,dstFilePath:i}=t;if(!this.adjacencyList.has(e))this.adjacencyList.set(e,new Set);if(this.adjacencyList.get(e).add(i),!this.adjacencyList.has(i))this.adjacencyList.set(i,new Set);if(!this.reverseAdjacencyList.has(i))this.reverseAdjacencyList.set(i,new Set);this.reverseAdjacencyList.get(i).add(e)}}getDependencies(n){return Array.from(this.adjacencyList.get(n)??[])}getDependents(n){return Array.from(this.reverseAdjacencyList.get(n)??[])}getTransitiveDependents(n){let t=new Set,e=[n];while(e.length>0){let i=e.shift();for(let r of this.reverseAdjacencyList.get(i)??[])if(!t.has(r))t.add(r),e.push(r)}return Array.from(t)}hasCycle(){let n=new Set,t=new Set;for(let e of this.adjacencyList.keys()){if(n.has(e))continue;let i=[{node:e,entered:!1}];while(i.length>0){let r=i.pop();if(r.entered){t.delete(r.node);continue}if(t.has(r.node))return!0;if(n.has(r.node))continue;n.add(r.node),t.add(r.node),i.push({node:r.node,entered:!0});for(let s of this.adjacencyList.get(r.node)??[]){if(t.has(s))return!0;if(!n.has(s))i.push({node:s,entered:!1})}}}return!1}getAffectedByChange(n){let t=new Set;for(let e of n)for(let i of this.getTransitiveDependents(e))t.add(i);return Array.from(t)}getAdjacencyList(){let n=new Map;for(let[t,e]of this.adjacencyList)n.set(t,Array.from(e));return n}getTransitiveDependencies(n){let t=new Set,e=[n];while(e.length>0){let i=e.shift();for(let r of this.adjacencyList.get(i)??[])if(!t.has(r))t.add(r),e.push(r)}return Array.from(t)}getCyclePaths(){let n=new Set,t=[],e=new Set,i=new Map,r=[],s=(u)=>{if(e.has(u))return;if(i.has(u)){let m=i.get(u),a=r.slice(m),x=a.reduce((O,F)=>O<=F?O:F),p=a.indexOf(x),y=[...a.slice(p),...a.slice(0,p)],w=y.join("\x00");if(!n.has(w))n.add(w),t.push(y);return}i.set(u,r.length),r.push(u);for(let m of this.adjacencyList.get(u)??[])s(m);r.pop(),i.delete(u),e.add(u)};for(let u of this.adjacencyList.keys())s(u);return t}}import{findInFiles as ne,Lang as te}from"@ast-grep/napi";async function Wn(n){if(n.filePaths.length===0)return[];let t=[];return await ne(te.TypeScript,{paths:n.filePaths,matcher:{rule:{pattern:n.pattern}}},(e,i)=>{if(e)return;for(let r of i){let s=r.range();t.push({filePath:r.getRoot().filename(),startLine:s.start.line+1,endLine:s.end.line+1,matchedText:r.text()})}}),t}var pt=30000,ft=60000,ie=10;class Hn{projectRoot;db;symbolRepo;relationRepo;fileRepo;parseCache;coordinator;watcher;releaseWatcherRoleFn;parseSourceFn;extractSymbolsFn;extractRelationsFn;symbolSearchFn;relationSearchFn;patternSearchFn;readFileFn;unlinkFn;existsSyncFn;makeExternalCoordinatorFn;logger;defaultProject;role;timer=null;signalHandlers=[];closed=!1;tsconfigPaths=null;boundaries=[];onIndexedCallbacks=new Set;graphCache=null;graphCacheKey=null;constructor(n){this.projectRoot=n.projectRoot,this.db=n.db,this.symbolRepo=n.symbolRepo,this.relationRepo=n.relationRepo,this.fileRepo=n.fileRepo,this.parseCache=n.parseCache,this.coordinator=n.coordinator,this.watcher=n.watcher,this.releaseWatcherRoleFn=n.releaseWatcherRoleFn,this.parseSourceFn=n.parseSourceFn,this.extractSymbolsFn=n.extractSymbolsFn,this.extractRelationsFn=n.extractRelationsFn,this.symbolSearchFn=n.symbolSearchFn,this.relationSearchFn=n.relationSearchFn,this.patternSearchFn=n.patternSearchFn,this.readFileFn=n.readFileFn,this.unlinkFn=n.unlinkFn,this.existsSyncFn=n.existsSyncFn,this.makeExternalCoordinatorFn=n.makeExternalCoordinatorFn,this.logger=n.logger,this.defaultProject=n.defaultProject,this.role=n.role}static async open(n){let{projectRoot:t,extensions:e=[".ts",".mts",".cts"],ignorePatterns:i=[],parseCacheCapacity:r=500,logger:s=console,existsSyncFn:u=ee,dbConnectionFactory:m,watcherFactory:a,coordinatorFactory:x,repositoryFactory:p,acquireWatcherRoleFn:y=mt,releaseWatcherRoleFn:w=ct,updateHeartbeatFn:O=lt,discoverProjectsFn:F=yn,parseSourceFn:h=an,extractSymbolsFn:I=ln,extractRelationsFn:l=pn,symbolSearchFn:g=$n,relationSearchFn:o=Un,patternSearchFn:c=Wn,loadTsconfigPathsFn:f=mn,makeExternalCoordinatorFn:N,readFileFn:A=async(R)=>Bun.file(R).text(),unlinkFn:T=async(R)=>{await Bun.file(R).unlink()},watchMode:D}=n;if(!Sn.isAbsolute(t))return S(d("validation",`Gildash: projectRoot must be an absolute path, got: "${t}"`));if(!u(t))return S(d("validation",`Gildash: projectRoot does not exist: "${t}"`));let k=m?m():new Cn({projectRoot:t}),C=k.open();if(en(C))return C;try{let R=await F(t),M=R[0]?.project??Sn.basename(t),z=p?p():(()=>{let $=k;return{fileRepo:new Rn($),symbolRepo:new Mn($),relationRepo:new Jn($),parseCache:new kn(r)}})(),rn=D??!0,X;if(rn)X=await Promise.resolve(y(k,process.pid,{}));else X="owner";let gt=null,dt=null,J=new Hn({projectRoot:t,db:k,symbolRepo:z.symbolRepo,relationRepo:z.relationRepo,fileRepo:z.fileRepo,parseCache:z.parseCache,coordinator:gt,watcher:dt,releaseWatcherRoleFn:w,parseSourceFn:h,extractSymbolsFn:I,extractRelationsFn:l,symbolSearchFn:g,relationSearchFn:o,patternSearchFn:c,readFileFn:A,unlinkFn:T,existsSyncFn:u,makeExternalCoordinatorFn:N,logger:s,defaultProject:M,role:X});if(bn(t),J.tsconfigPaths=await f(t),J.boundaries=R,X==="owner"){let $=x?x():new cn({projectRoot:t,boundaries:R,extensions:e,ignorePatterns:i,dbConnection:k,parseCache:z.parseCache,fileRepo:z.fileRepo,symbolRepo:z.symbolRepo,relationRepo:z.relationRepo,logger:s});if(J.coordinator=$,$.onIndexed(()=>J.invalidateGraphCache()),rn){let H=a?a():new xn({projectRoot:t,ignorePatterns:i,extensions:e},void 0,s);J.watcher=H,await H.start((V)=>$.handleWatcherEvent?.(V)).then((V)=>{if(en(V))throw V.data});let P=setInterval(()=>{O(k,process.pid)},pt);J.timer=P}await $.fullIndex()}else{let $=0,H=async()=>{try{let V=await Promise.resolve(y(k,process.pid,{}));if($=0,V==="owner"){clearInterval(J.timer),J.timer=null;let j=null,Y=null;try{j=a?a():new xn({projectRoot:t,ignorePatterns:i,extensions:e},void 0,s),Y=x?x():new cn({projectRoot:t,boundaries:R,extensions:e,ignorePatterns:i,dbConnection:k,parseCache:z.parseCache,fileRepo:z.fileRepo,symbolRepo:z.symbolRepo,relationRepo:z.relationRepo,logger:s});for(let U of J.onIndexedCallbacks)Y.onIndexed(U);Y.onIndexed(()=>J.invalidateGraphCache()),await j.start((U)=>Y?.handleWatcherEvent?.(U)).then((U)=>{if(en(U))throw U.data});let Nn=setInterval(()=>{O(k,process.pid)},pt);J.timer=Nn,J.coordinator=Y,J.watcher=j,await Y.fullIndex()}catch(Nn){if(s.error("[Gildash] owner promotion failed, reverting to reader",Nn),j){let U=await j.close();if(en(U))s.error("[Gildash] watcher close error during promotion rollback",U.data);J.watcher=null}if(Y)await Y.shutdown().catch((U)=>s.error("[Gildash] coordinator shutdown error during promotion rollback",U)),J.coordinator=null;if(J.timer===null)J.timer=setInterval(H,ft)}}}catch(V){if($++,s.error("[Gildash] healthcheck error",V),$>=ie)s.error("[Gildash] healthcheck failed too many times, shutting down"),clearInterval(J.timer),J.timer=null,J.close().catch((j)=>s.error("[Gildash] close error during healthcheck shutdown",j))}},P=setInterval(H,ft);J.timer=P}if(rn){let $=["SIGTERM","SIGINT","beforeExit"];for(let H of $){let P=()=>{J.close().catch((V)=>s.error("[Gildash] close error during signal",H,V))};if(H==="beforeExit")process.on("beforeExit",P);else process.on(H,P);J.signalHandlers.push([H,P])}}return J}catch(R){return k.close(),S(d("store","Gildash: initialization failed",R))}}async close(n){if(this.closed)return;this.closed=!0;let t=[];for(let[e,i]of this.signalHandlers)if(e==="beforeExit")process.off("beforeExit",i);else process.off(e,i);if(this.signalHandlers=[],this.coordinator)try{await this.coordinator.shutdown()}catch(e){t.push(e instanceof Error?e:Error(String(e)))}if(this.watcher){let e=await this.watcher.close();if(en(e))t.push(e.data)}if(this.timer!==null)clearInterval(this.timer),this.timer=null;try{this.releaseWatcherRoleFn(this.db,process.pid)}catch(e){t.push(e instanceof Error?e:Error(String(e)))}try{this.db.close()}catch(e){t.push(e instanceof Error?e:Error(String(e)))}if(n?.cleanup)for(let e of["","-wal","-shm"])try{await this.unlinkFn(Sn.join(this.projectRoot,".zipbul","gildash.db"+e))}catch{}if(t.length>0)return S(d("close","Gildash: one or more errors occurred during close()",t))}onIndexed(n){if(this.onIndexedCallbacks.add(n),!this.coordinator)return()=>{this.onIndexedCallbacks.delete(n)};let t=this.coordinator.onIndexed(n);return()=>{this.onIndexedCallbacks.delete(n),t()}}parseSource(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));let e=this.parseSourceFn(n,t);if(en(e))return e;return this.parseCache.set(n,e),e}extractSymbols(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));return this.extractSymbolsFn(n)}extractRelations(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));return this.extractRelationsFn(n.program,n.filePath,this.tsconfigPaths??void 0)}invalidateGraphCache(){this.graphCache=null,this.graphCacheKey=null}getOrBuildGraph(n){let t=n??"__cross__";if(this.graphCache&&this.graphCacheKey===t)return this.graphCache;let e=new wn({relationRepo:this.relationRepo,project:n??this.defaultProject});return e.build(),this.graphCache=e,this.graphCacheKey=t,e}async reindex(){if(this.closed)return S(d("closed","Gildash: instance is closed"));if(!this.coordinator)return S(d("closed","Gildash: reindex() is not available for readers"));try{let n=await this.coordinator.fullIndex();return this.invalidateGraphCache(),n}catch(n){return S(d("index","Gildash: reindex failed",n))}}get projects(){return[...this.boundaries]}getStats(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.symbolRepo.getStats(n??this.defaultProject)}catch(t){return S(d("store","Gildash: getStats failed",t))}}searchSymbols(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.symbolSearchFn({symbolRepo:this.symbolRepo,project:this.defaultProject,query:n})}catch(t){return S(d("search","Gildash: searchSymbols failed",t))}}searchRelations(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.relationSearchFn({relationRepo:this.relationRepo,project:this.defaultProject,query:n})}catch(t){return S(d("search","Gildash: searchRelations failed",t))}}searchAllSymbols(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.symbolSearchFn({symbolRepo:this.symbolRepo,project:void 0,query:n})}catch(t){return S(d("search","Gildash: searchAllSymbols failed",t))}}searchAllRelations(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.relationSearchFn({relationRepo:this.relationRepo,project:void 0,query:n})}catch(t){return S(d("search","Gildash: searchAllRelations failed",t))}}listIndexedFiles(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.fileRepo.getAllFiles(n??this.defaultProject)}catch(t){return S(d("store","Gildash: listIndexedFiles failed",t))}}getInternalRelations(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.relationSearchFn({relationRepo:this.relationRepo,project:t??this.defaultProject,query:{srcFilePath:n,dstFilePath:n,limit:1e4}})}catch(e){return S(d("search","Gildash: getInternalRelations failed",e))}}diffSymbols(n,t){let e=new Map(n.map((m)=>[`${m.name}::${m.filePath}`,m])),i=new Map(t.map((m)=>[`${m.name}::${m.filePath}`,m])),r=[],s=[],u=[];for(let[m,a]of i){let x=e.get(m);if(!x)r.push(a);else if(x.fingerprint!==a.fingerprint)u.push({before:x,after:a})}for(let[m,a]of e)if(!i.has(m))s.push(a);return{added:r,removed:s,modified:u}}getDependencies(n,t,e=1e4){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.relationSearchFn({relationRepo:this.relationRepo,project:t??this.defaultProject,query:{srcFilePath:n,type:"imports",project:t??this.defaultProject,limit:e}}).map((i)=>i.dstFilePath)}catch(i){return S(d("search","Gildash: getDependencies failed",i))}}getDependents(n,t,e=1e4){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.relationSearchFn({relationRepo:this.relationRepo,project:t??this.defaultProject,query:{dstFilePath:n,type:"imports",project:t??this.defaultProject,limit:e}}).map((i)=>i.srcFilePath)}catch(i){return S(d("search","Gildash: getDependents failed",i))}}async getAffected(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.getOrBuildGraph(t).getAffectedByChange(n)}catch(e){return S(d("search","Gildash: getAffected failed",e))}}async hasCycle(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.getOrBuildGraph(n).hasCycle()}catch(t){return S(d("search","Gildash: hasCycle failed",t))}}async getImportGraph(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.getOrBuildGraph(n).getAdjacencyList()}catch(t){return S(d("search","Gildash: getImportGraph failed",t))}}async getTransitiveDependencies(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.getOrBuildGraph(t).getTransitiveDependencies(n)}catch(e){return S(d("search","Gildash: getTransitiveDependencies failed",e))}}async getCyclePaths(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.getOrBuildGraph(n).getCyclePaths()}catch(t){return S(d("search","Gildash: getCyclePaths failed",t))}}getDeadExports(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{let e=n??this.defaultProject,i=this.symbolRepo.searchByQuery({project:e,isExported:!0,limit:1e5}),r=new Set;for(let a of["imports","re-exports"]){let x=this.relationRepo.getByType(e,a);for(let p of x)if(p.dstSymbolName!=null)r.add(`${p.dstFilePath}::${p.dstSymbolName}`)}let s=t?.entryPoints,u=["index.ts","index.mts","main.ts"];return i.filter((a)=>{if(r.has(`${a.filePath}::${a.name}`))return!1;if(s!==void 0)return!s.includes(a.filePath);let x=a.filePath.split("/").pop()??a.filePath;return!u.includes(x)}).map((a)=>({symbolName:a.name,filePath:a.filePath}))}catch(e){return S(d("store","Gildash: getDeadExports failed",e))}}getFullSymbol(n,t,e){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{let i=e??this.defaultProject,r=this.symbolSearchFn({symbolRepo:this.symbolRepo,project:i,query:{text:n,exact:!0,filePath:t,limit:1}});if(r.length===0)return S(d("search",`Gildash: symbol '${n}' not found in '${t}'`));let s=r[0],u=s.detail;return{...s,members:Array.isArray(u.members)?u.members:void 0,jsDoc:typeof u.jsDoc==="string"?u.jsDoc:void 0,parameters:typeof u.parameters==="string"?u.parameters:void 0,returnType:typeof u.returnType==="string"?u.returnType:void 0,heritage:Array.isArray(u.heritage)?u.heritage:void 0,decorators:Array.isArray(u.decorators)?u.decorators:void 0,typeParameters:typeof u.typeParameters==="string"?u.typeParameters:void 0}}catch(i){return S(d("search","Gildash: getFullSymbol failed",i))}}getFileStats(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{let e=t??this.defaultProject,i=this.fileRepo.getFile(e,n);if(!i)return S(d("search",`Gildash: file '${n}' is not in the index`));let r=this.symbolRepo.getFileSymbols(e,n),s=this.relationRepo.getOutgoing(e,n);return{filePath:i.filePath,lineCount:i.lineCount??0,size:i.size,symbolCount:r.length,exportedSymbolCount:r.filter((u)=>u.isExported).length,relationCount:s.length}}catch(e){return S(d("store","Gildash: getFileStats failed",e))}}async getFanMetrics(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{let e=this.getOrBuildGraph(t);return{filePath:n,fanIn:e.getDependents(n).length,fanOut:e.getDependencies(n).length}}catch(e){return S(d("search","Gildash: getFanMetrics failed",e))}}resolveSymbol(n,t,e){if(this.closed)return S(d("closed","Gildash: instance is closed"));let i=e??this.defaultProject,r=new Set,s=[],u=n,m=t;for(;;){let a=`${m}::${u}`;if(r.has(a))return S(d("search","Gildash: resolveSymbol detected circular re-export chain"));r.add(a);let x=this.relationSearchFn({relationRepo:this.relationRepo,project:i,query:{type:"re-exports",srcFilePath:m,limit:500}}),p,y;for(let w of x){let O;if(w.metaJson)try{let h=JSON.parse(w.metaJson);if(Array.isArray(h.specifiers))O=h.specifiers}catch{}if(!O)continue;let F=O.find((h)=>h.exported===u);if(!F)continue;p=w.dstFilePath,y=F.local;break}if(!p||!y)return{originalName:u,originalFilePath:m,reExportChain:s};s.push({filePath:m,exportedAs:u}),m=p,u=y}}async findPattern(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{let e=t?.project??this.defaultProject,i=t?.filePaths?t.filePaths:this.fileRepo.getAllFiles(e).map((r)=>r.filePath);return await this.patternSearchFn({pattern:n,filePaths:i})}catch(e){return S(d("search","Gildash: findPattern failed",e))}}async indexExternalPackages(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));if(this.role!=="owner")return S(d("closed","Gildash: indexExternalPackages() is not available for readers"));try{let e=[];for(let i of n){let r=Sn.resolve(this.projectRoot,"node_modules",i);if(!this.existsSyncFn(r))return S(d("validation",`Gildash: package not found in node_modules: ${i}`));let s=`@external/${i}`,m=await(this.makeExternalCoordinatorFn?this.makeExternalCoordinatorFn(r,s):new cn({projectRoot:r,boundaries:[{dir:".",project:s}],extensions:[".d.ts"],ignorePatterns:[],dbConnection:this.db,parseCache:this.parseCache,fileRepo:this.fileRepo,symbolRepo:this.symbolRepo,relationRepo:this.relationRepo,logger:this.logger})).fullIndex();e.push(m)}return e}catch(e){return S(d("store","Gildash: indexExternalPackages failed",e))}}async batchParse(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));let t=new Map;return await Promise.all(n.map(async(e)=>{try{let i=await this.readFileFn(e),r=this.parseSourceFn(e,i);if(!en(r))t.set(e,r)}catch{}})),t}getModuleInterface(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{let i=this.symbolSearchFn({symbolRepo:this.symbolRepo,project:t??this.defaultProject,query:{filePath:n,isExported:!0}}).map((r)=>({name:r.name,kind:r.kind,parameters:r.detail.parameters??void 0,returnType:r.detail.returnType??void 0,jsDoc:r.detail.jsDoc??void 0}));return{filePath:n,exports:i}}catch(e){return S(d("search","Gildash: getModuleInterface failed",e))}}async getHeritageChain(n,t,e){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{let i=e??this.defaultProject,r=new Set,s=(u,m,a)=>{let x=`${u}::${m}`;if(r.has(x))return{symbolName:u,filePath:m,kind:a,children:[]};r.add(x);let w=this.relationSearchFn({relationRepo:this.relationRepo,project:i,query:{srcFilePath:m,srcSymbolName:u,limit:1000}}).filter((O)=>O.type==="extends"||O.type==="implements").filter((O)=>O.dstSymbolName!=null).map((O)=>s(O.dstSymbolName,O.dstFilePath,O.type));return{symbolName:u,filePath:m,kind:a,children:w}};return s(n,t)}catch(i){return S(d("search","Gildash: getHeritageChain failed",i))}}getParsedAst(n){if(this.closed)return;return this.parseCache.get(n)}getFileInfo(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.fileRepo.getFile(t??this.defaultProject,n)}catch(e){return S(d("store","Gildash: getFileInfo failed",e))}}getSymbolsByFile(n,t){return this.searchSymbols({filePath:n,project:t??void 0,limit:1e4})}}export{$n as symbolSearch,Un as relationSearch,Wn as patternSearch,d as gildashError,Hn as Gildash,wn as DependencyGraph};
|
|
2
|
+
var dt=Object.defineProperty;var xt=(n,t)=>{for(var e in t)dt(n,e,{get:t[e],enumerable:!0,configurable:!0,set:(i)=>t[e]=()=>i})};import{err as S,isErr as en}from"@zipbul/result";import Sn from"path";import{existsSync as te}from"fs";import{err as yt}from"@zipbul/result";import{parseSync as bt}from"oxc-parser";function d(n,t,e){return e!==void 0?{type:n,message:t,cause:e}:{type:n,message:t}}function an(n,t,e=bt){try{let{program:i,errors:r,comments:s}=e(n,t);return{filePath:n,program:i,errors:r,comments:s,sourceText:t}}catch(i){return yt(d("parse",`Failed to parse file: ${n}`,i))}}class Nn{#t;#n=new Map;constructor(n){this.#t=Math.max(1,n)}get size(){return this.#n.size}has(n){return this.#n.has(n)}get(n){if(!this.#n.has(n))return;let t=this.#n.get(n);return this.#n.delete(n),this.#n.set(n,t),t}set(n,t){if(this.#n.has(n))this.#n.delete(n);if(this.#n.set(n,t),this.#n.size>this.#t){let e=this.#n.keys().next().value;if(e!==void 0)this.#n.delete(e)}}delete(n){return this.#n.delete(n)}clear(){this.#n.clear()}}class kn{lru;constructor(n=500){this.lru=new Nn(n)}get(n){return this.lru.get(n)}set(n,t){this.lru.set(n,t)}invalidate(n){this.lru.delete(n)}invalidateAll(){this.lru.clear()}size(){return this.lru.size}}function Un(n){let t=[0];for(let e=0;e<n.length;e++)if(n[e]===`
|
|
3
|
+
`)t.push(e+1);return t}function An(n,t){let e=0,i=n.length-1;while(e<i){let r=e+i+1>>1;if(n[r]<=t)e=r;else i=r-1}return{line:e+1,column:t-n[e]}}import{err as wt}from"@zipbul/result";import{parse as St}from"comment-parser";function Qn(n){try{let t=n.trim();if(t.startsWith("/**"))t=t.slice(3);if(t.endsWith("*/"))t=t.slice(0,-2);let i=St(`/** ${t} */`)[0]??{description:"",tags:[]};return{description:(i.description??"").trim(),tags:(i.tags??[]).map((r)=>({tag:r.tag??"",name:r.name??"",type:r.type??"",description:r.description??"",optional:r.optional??!1,...r.default!==void 0?{default:r.default}:{}}))}}catch(t){return wt(d("parse","Failed to parse JSDoc comment",t))}}import{isErr as Ot}from"@zipbul/result";function ln(n){let{program:t,sourceText:e,comments:i}=n,r=Un(e);function s(l,g){return{start:An(r,l),end:An(r,g)}}function u(l){let g=null;for(let o of i){if(o.type!=="Block")continue;if(o.end>l)continue;if(!o.value.startsWith("*"))continue;if(!g||o.end>g.end)g={value:`/*${o.value}*/`,end:o.end}}if(!g)return;for(let o of t.body){let c=o.start??0;if(c===l)continue;if(c>g.end&&c<l)return}return g.value}function m(l){if(!l)return;let g=l.typeAnnotation??l;return e.slice(g.start,g.end)}function a(l){if(!l||l.length===0)return[];return l.map((g)=>{let o=g.expression;if(!o)return{name:"unknown"};if(o.type==="CallExpression"){let c=o.callee?.name??o.callee?.property?.name??"unknown",f=(o.arguments??[]).map((O)=>e.slice(O.start,O.end));return{name:c,arguments:f.length>0?f:void 0}}if(o.type==="Identifier")return{name:o.name??"unknown"};return{name:e.slice(o.start,o.end)}})}function x(l){let g=l.type==="TSParameterProperty"?l.parameter:l;if(g?.type==="RestElement"){let k=`...${g.argument?.name??"unknown"}`,J=g.typeAnnotation,K=J?m(J):void 0,I={name:k,isOptional:!1};if(K)I.type=K;return I}if(g?.type==="AssignmentPattern"){let{left:h,right:k}=g,J=h?.name??"unknown",K=h?.typeAnnotation,I=K?m(K):void 0,$=e.slice(k.start,k.end),rn=a(h?.decorators??[]),Z={name:J,isOptional:!0,defaultValue:$};if(I)Z.type=I;if(rn.length>0)Z.decorators=rn;return Z}let o=g?.name??g?.pattern?.name??"unknown",c=!!g?.optional,f=g?.typeAnnotation,O=f?m(f):void 0,A=a(g?.decorators??[]),C={name:o,isOptional:c};if(O)C.type=O;if(A.length>0)C.decorators=A;return C}function p(l,g){let o=[];if(g?.async)o.push("async");if(l.static)o.push("static");if(l.abstract)o.push("abstract");if(l.readonly)o.push("readonly");if(l.override)o.push("override");if(l.declare)o.push("declare");if(l.const)o.push("const");let c=l.accessibility;if(c==="private")o.push("private");else if(c==="protected")o.push("protected");else if(c==="public")o.push("public");return o}function y(l){let g=[];if(l.superClass){let c=e.slice(l.superClass.start,l.superClass.end);g.push({kind:"extends",name:c})}let o=l.implements??[];for(let c of o){let f=c.expression??c,O=e.slice(f.start,f.end);g.push({kind:"implements",name:O})}return g}function w(l){let g=[];for(let o of l.extends??[]){let c=o.expression??o,f=e.slice(c.start,c.end);g.push({kind:"extends",name:f})}return g}function N(l){let g=[];for(let o of l)if(o.type==="MethodDefinition"){let c=o.key?.name??"unknown",f=o.value,O=o.kind??"method",A=O==="constructor"?"constructor":O==="get"?"getter":O==="set"?"setter":"method",C=p(o,f),h=(f?.params??[]).map(x),k=m(f?.returnType),J={kind:"method",name:c,span:s(o.start,o.end),isExported:!1,methodKind:A,modifiers:C,parameters:h.length>0?h:void 0,returnType:k};g.push(J)}else if(o.type==="PropertyDefinition"){let c=o.key?.name??"unknown",f=p(o),O={kind:"property",name:c,span:s(o.start,o.end),isExported:!1,modifiers:f};g.push(O)}return g}function _(l){let g=[];for(let o of l)if(o.type==="TSMethodSignature"){let c=o.key?.name??"unknown",f=(o.params??[]).map(x),O=m(o.returnType);g.push({kind:"method",name:c,span:s(o.start,o.end),isExported:!1,modifiers:[],methodKind:"method",parameters:f.length>0?f:void 0,returnType:O})}else if(o.type==="TSPropertySignature"){let c=o.key?.name??"unknown",f=m(o.typeAnnotation),O={kind:"property",name:c,span:s(o.start,o.end),isExported:!1,modifiers:o.readonly?["readonly"]:[],returnType:f};g.push(O)}return g}function D(l,g){let o=l.type??"";if(o==="FunctionDeclaration"){let c=l.id?.name??"default",f=(l.params??[]).map(x),O=m(l.returnType),A=p(l,l),C=a(l.decorators??[]),h=l.typeParameters?.params?.map((J)=>J.name?.name).filter(Boolean)||void 0,k={kind:"function",name:c,span:s(l.start,l.end),isExported:g,modifiers:A,parameters:f.length>0?f:void 0,returnType:O,decorators:C.length>0?C:void 0};if(h&&h.length>0)k.typeParameters=h;return k}if(o==="ClassDeclaration"||o==="ClassExpression"){let c=l.id?.name??"default",f=y(l),O=N(l.body?.body??[]),A=a(l.decorators??[]),C=p(l,l),h=l.typeParameters?.params?.map((J)=>J.name?.name).filter(Boolean)||void 0,k={kind:"class",name:c,span:s(l.start,l.end),isExported:g,modifiers:C,heritage:f.length>0?f:void 0,members:O.length>0?O:void 0,decorators:A.length>0?A:void 0};if(h&&h.length>0)k.typeParameters=h;return k}if(o==="VariableDeclaration"){let c=[];for(let f of l.declarations??[]){let{id:O,init:A}=f;if(O?.type==="ObjectPattern"){for(let I of O.properties??[]){let $=I.value?.name??I.key?.name??"unknown";c.push({kind:"variable",name:$,span:s(I.start??f.start,I.end??f.end),isExported:g,modifiers:[]})}continue}if(O?.type==="ArrayPattern"){for(let I of O.elements??[]){if(!I||I.type!=="Identifier")continue;let $=I.name??"unknown";c.push({kind:"variable",name:$,span:s(I.start??f.start,I.end??f.end),isExported:g,modifiers:[]})}continue}let C=O?.name??"unknown",h="variable",k,J;if(A?.type==="FunctionExpression"||A?.type==="ArrowFunctionExpression")h="function",k=(A.params??[]).map(x),J=m(A.returnType);let K=[];c.push({kind:h,name:C,span:s(f.start,f.end),isExported:g,modifiers:K,parameters:k,returnType:J})}if(c.length===0)return null;if(c.length===1)return c[0];return c}if(o==="TSTypeAliasDeclaration")return{kind:"type",name:l.id?.name??"unknown",span:s(l.start,l.end),isExported:g,modifiers:[]};if(o==="TSInterfaceDeclaration"){let c=l.id?.name??"unknown",f=w(l),O=_(l.body?.body??[]),A=l.typeParameters?.params?.map((h)=>h.name?.name).filter(Boolean)||void 0,C={kind:"interface",name:c,span:s(l.start,l.end),isExported:g,modifiers:[],heritage:f.length>0?f:void 0,members:O.length>0?O:void 0};if(A&&A.length>0)C.typeParameters=A;return C}if(o==="TSEnumDeclaration"){let c=l.id?.name??"unknown",f=p(l),A=(l.body?.members??[]).map((C)=>({kind:"property",name:C.id?.name??C.id?.value??"unknown",span:s(C.start,C.end),isExported:!1,modifiers:[]}));return{kind:"enum",name:c,span:s(l.start,l.end),isExported:g,modifiers:f,members:A.length>0?A:void 0}}return null}let M=[];for(let l of t.body){let g=null,o=l,c=typeof o.type==="string"?o.type:"";if(c==="ExportNamedDeclaration"){let O=l;if(O.declaration){if(g=D(O.declaration,!0),g&&!Array.isArray(g))g.span=s(O.start,O.end);else if(Array.isArray(g))for(let A of g)A.span=s(O.start,O.end)}}else if(c==="ExportDefaultDeclaration"){let O=l,A=O.declaration;if(A){if(g=D(A,!0),g&&!Array.isArray(g))g.name=A.id?.name??"default",g.isExported=!0,g.span=s(O.start,O.end)}}else g=D(l,!1);let f=Array.isArray(g)?g:g?[g]:[];for(let O of f){let A=l.start??0,C=u(A);if(C){let h=Qn(C);if(!Ot(h))O.jsDoc=h}M.push(O)}}return M}import{resolve as Dn,dirname as Nt,extname as kt}from"path";function hn(n,t,e){let i=(r)=>{let s=kt(r);if(s==="")return[r+".ts",r+"/index.ts",r+".mts",r+"/index.mts",r+".cts",r+"/index.cts"];if(s===".js")return[r.slice(0,-3)+".ts"];if(s===".mjs")return[r.slice(0,-4)+".mts"];if(s===".cjs")return[r.slice(0,-4)+".cts"];return[r]};if(t.startsWith(".")){let r=Dn(Nt(n),t);return i(r)}if(e)for(let[r,s]of e.paths){if(s.length===0)continue;let u=r.indexOf("*");if(u===-1){if(t===r){let m=[];for(let a of s)m.push(...i(Dn(e.baseUrl,a)));return m}}else{let m=r.slice(0,u),a=r.slice(u+1);if(t.startsWith(m)&&(a===""||t.endsWith(a))){let x=t.slice(m.length,a===""?void 0:t.length-a.length),p=[];for(let y of s)p.push(...i(Dn(e.baseUrl,y.replace("*",x))));return p}}}return[]}function Vn(n,t,e,i=hn){let r=new Map,s=n.body??[];for(let u of s){if(u.type!=="ImportDeclaration")continue;let m=u.source?.value??"",a=i(t,m,e);if(a.length===0)continue;let x=a[0],p=u.specifiers??[];for(let y of p)switch(y.type){case"ImportSpecifier":r.set(y.local.name,{path:x,importedName:y.imported.name});break;case"ImportDefaultSpecifier":r.set(y.local.name,{path:x,importedName:"default"});break;case"ImportNamespaceSpecifier":r.set(y.local.name,{path:x,importedName:"*"});break}}return r}var At=new Set(["loc","start","end","scope"]);function sn(n,t){if(!n||typeof n!=="object")return;if(Array.isArray(n)){for(let i of n)sn(i,t);return}let e=n;t(e);for(let i of Object.keys(e)){if(At.has(i))continue;let r=e[i];if(r&&typeof r==="object")sn(r,t)}}function Yn(n){if(!n||typeof n!=="object"||Array.isArray(n))return null;let t=n;if((t.type==="StringLiteral"||t.type==="Literal")&&typeof t.value==="string")return t.value;return null}function q(n){if(!n||typeof n!=="object"||Array.isArray(n))return null;let t=n;if(t.type==="Identifier"){let e=t.name;return{root:e,parts:[],full:e}}if(t.type==="ThisExpression")return{root:"this",parts:[],full:"this"};if(t.type==="Super")return{root:"super",parts:[],full:"super"};if(t.type==="MemberExpression"){let e=[],i=t;while(i.type==="MemberExpression"){let u=i.property;if(!u||typeof u.name!=="string")return null;e.unshift(u.name),i=i.object}let r;if(i.type==="Identifier")r=i.name;else if(i.type==="ThisExpression")r="this";else if(i.type==="Super")r="super";else return null;let s=[r,...e].join(".");return{root:r,parts:e,full:s}}return null}function Zn(n,t,e,i=hn){let r=[],s=n.body??[];for(let u of s){if(u.type==="ImportDeclaration"){let m=u.source?.value??"",a=i(t,m,e);if(a.length===0)continue;let x=a[0],p=u.importKind==="type",y=u.specifiers??[];if(y.length===0){let w={};if(p)w.isType=!0;r.push({type:p?"type-references":"imports",srcFilePath:t,srcSymbolName:null,dstFilePath:x,dstSymbolName:null,...Object.keys(w).length>0?{metaJson:JSON.stringify(w)}:{}})}else for(let w of y){let N=w.type,_=p||w.importKind==="type",D={};if(_)D.isType=!0;let M,l;if(N==="ImportDefaultSpecifier")M="default",l=w.local.name;else if(N==="ImportNamespaceSpecifier")M="*",l=w.local.name,D.importKind="namespace";else M=w.imported.name,l=w.local.name;r.push({type:_?"type-references":"imports",srcFilePath:t,srcSymbolName:l,dstFilePath:x,dstSymbolName:M,...Object.keys(D).length>0?{metaJson:JSON.stringify(D)}:{}})}continue}if(u.type==="ExportAllDeclaration"&&u.source){let m=u.source?.value??"",a=i(t,m,e);if(a.length===0)continue;let x=a[0],p=u.exportKind==="type",y={isReExport:!0};if(p)y.isType=!0;r.push({type:p?"type-references":"re-exports",srcFilePath:t,srcSymbolName:null,dstFilePath:x,dstSymbolName:null,metaJson:JSON.stringify(y)});continue}if(u.type==="ExportNamedDeclaration"&&u.source){let m=u.source?.value??"",a=i(t,m,e);if(a.length===0)continue;let x=a[0],p=u.exportKind==="type",N={isReExport:!0,specifiers:(u.specifiers??[]).map((_)=>({local:_.local.name,exported:_.exported.name}))};if(p)N.isType=!0;r.push({type:p?"type-references":"re-exports",srcFilePath:t,srcSymbolName:null,dstFilePath:x,dstSymbolName:null,metaJson:JSON.stringify(N)})}}return sn(n,(u)=>{if(u.type!=="ImportExpression")return;let m=Yn(u.source);if(!m)return;let a=i(t,m,e);if(a.length===0)return;let x=a[0];r.push({type:"imports",srcFilePath:t,srcSymbolName:null,dstFilePath:x,dstSymbolName:null,metaJson:JSON.stringify({isDynamic:!0})})}),r}function vn(n,t,e){let i=[],r=[],s=[];function u(){if(r.length>0)return r[r.length-1]??null;return null}function m(x){if(!x)return null;let p=e.get(x.root);if(x.parts.length===0){if(p)return{dstFilePath:p.path,dstSymbolName:p.importedName,resolution:"import"};return{dstFilePath:t,dstSymbolName:x.root,resolution:"local"}}else{if(p&&p.importedName==="*"){let y=x.parts[x.parts.length-1];return{dstFilePath:p.path,dstSymbolName:y,resolution:"namespace"}}return{dstFilePath:t,dstSymbolName:x.full,resolution:"local-member"}}}function a(x){if(!x||typeof x!=="object")return;if(Array.isArray(x)){for(let w of x)a(w);return}let p=x,y=typeof p.type==="string"?p.type:"";if(y==="ClassDeclaration"||y==="ClassExpression"){let w=p,N=w.id?.name??"AnonymousClass";s.push(N),a(w.body),s.pop();return}if(y==="FunctionDeclaration"){let w=p,N=w.id?.name??"anonymous";r.push(N),a(w.body),r.pop();return}if(y==="VariableDeclarator"&&p.init&&(p.init?.type==="FunctionExpression"||p.init?.type==="ArrowFunctionExpression")){let w=p,N=w.id?.name??"anonymous";r.push(N),a(w.init?.body??w.init),r.pop();return}if(y==="MethodDefinition"&&p.value){let w=p,N=s[s.length-1]??"",_=w.key?.name??"anonymous",D=N?`${N}.${_}`:_;r.push(D),a(w.value?.body),r.pop();return}if(y==="FunctionExpression"||y==="ArrowFunctionExpression"){let w=u(),N=w?`${w}.<anonymous>`:"<anonymous>";r.push(N),a(p.body),r.pop();return}if(y==="CallExpression"){let w=p,N=q(w.callee),_=m(N);if(_){let D=u(),M={};if(D===null)M.scope="module";i.push({type:"calls",srcFilePath:t,srcSymbolName:D,dstFilePath:_.dstFilePath,dstSymbolName:_.dstSymbolName,...Object.keys(M).length>0?{metaJson:JSON.stringify(M)}:{}})}a(w.callee);for(let D of w.arguments??[])a(D);return}if(y==="NewExpression"){let w=p,N=q(w.callee),_=m(N);if(_){let D=u(),M={isNew:!0};if(D===null)M.scope="module";i.push({type:"calls",srcFilePath:t,srcSymbolName:D,dstFilePath:_.dstFilePath,dstSymbolName:_.dstSymbolName,metaJson:JSON.stringify(M)})}for(let D of w.arguments??[])a(D);return}for(let w of Object.keys(p)){if(w==="loc"||w==="start"||w==="end"||w==="scope")continue;let N=p[w];if(N&&typeof N==="object")a(N)}}return a(n),i}function Xn(n,t,e){let i=[];return sn(n,(r)=>{if(r.type==="TSInterfaceDeclaration"){let m=r.id?.name??"AnonymousInterface",a=r.extends??[];for(let x of a){let p=x.expression??x,y=q(p);if(!y)continue;let w=Fn(y,t,e);i.push({type:"extends",srcFilePath:t,srcSymbolName:m,...w})}return}if(r.type!=="ClassDeclaration"&&r.type!=="ClassExpression")return;let s=r.id?.name??"AnonymousClass";if(r.superClass){let m=q(r.superClass);if(m){let a=Fn(m,t,e);i.push({type:"extends",srcFilePath:t,srcSymbolName:s,...a})}}let u=r.implements??[];for(let m of u){let a=m.expression??m,x=q(a);if(!x)continue;let p=Fn(x,t,e);i.push({type:"implements",srcFilePath:t,srcSymbolName:s,...p})}}),i}function Fn(n,t,e){let i=e.get(n.root);if(i){if(i.importedName==="*"){let r=n.parts[n.parts.length-1]??n.root;return{dstFilePath:i.path,dstSymbolName:r,metaJson:JSON.stringify({isNamespaceImport:!0})}}return{dstFilePath:i.path,dstSymbolName:n.parts.length>0?n.full:i.importedName}}return{dstFilePath:t,dstSymbolName:n.full,metaJson:JSON.stringify({isLocal:!0})}}function pn(n,t,e){let i=Vn(n,t,e),r=Zn(n,t,e),s=vn(n,t,i),u=Xn(n,t,i);return[...r,...s,...u]}import{err as Pn,isErr as Mt}from"@zipbul/result";import{Database as Jt}from"bun:sqlite";import{mkdirSync as Kt,unlinkSync as En,existsSync as jn}from"fs";import{dirname as It,join as qn}from"path";import{drizzle as Rt}from"drizzle-orm/bun-sqlite";import{migrate as zt}from"drizzle-orm/bun-sqlite/migrator";var Cn={};xt(Cn,{watcherOwner:()=>Ct,symbols:()=>F,relations:()=>b,files:()=>L});import{sql as Dt}from"drizzle-orm";import{sqliteTable as fn,text as T,integer as H,real as ht,index as nn,primaryKey as Ft,foreignKey as _n,check as _t}from"drizzle-orm/sqlite-core";var L=fn("files",{project:T("project").notNull(),filePath:T("file_path").notNull(),mtimeMs:ht("mtime_ms").notNull(),size:H("size").notNull(),contentHash:T("content_hash").notNull(),updatedAt:T("updated_at").notNull(),lineCount:H("line_count")},(n)=>[Ft({columns:[n.project,n.filePath]})]),F=fn("symbols",{id:H("id").primaryKey({autoIncrement:!0}),project:T("project").notNull(),filePath:T("file_path").notNull(),kind:T("kind").notNull(),name:T("name").notNull(),startLine:H("start_line").notNull(),startColumn:H("start_column").notNull(),endLine:H("end_line").notNull(),endColumn:H("end_column").notNull(),isExported:H("is_exported").notNull().default(0),signature:T("signature"),fingerprint:T("fingerprint"),detailJson:T("detail_json"),contentHash:T("content_hash").notNull(),indexedAt:T("indexed_at").notNull()},(n)=>[nn("idx_symbols_project_file").on(n.project,n.filePath),nn("idx_symbols_project_kind").on(n.project,n.kind),nn("idx_symbols_project_name").on(n.project,n.name),nn("idx_symbols_fingerprint").on(n.project,n.fingerprint),_n({columns:[n.project,n.filePath],foreignColumns:[L.project,L.filePath]}).onDelete("cascade")]),b=fn("relations",{id:H("id").primaryKey({autoIncrement:!0}),project:T("project").notNull(),type:T("type").notNull(),srcFilePath:T("src_file_path").notNull(),srcSymbolName:T("src_symbol_name"),dstFilePath:T("dst_file_path").notNull(),dstSymbolName:T("dst_symbol_name"),metaJson:T("meta_json")},(n)=>[nn("idx_relations_src").on(n.project,n.srcFilePath),nn("idx_relations_dst").on(n.project,n.dstFilePath),nn("idx_relations_type").on(n.project,n.type),_n({columns:[n.project,n.srcFilePath],foreignColumns:[L.project,L.filePath]}).onDelete("cascade"),_n({columns:[n.project,n.dstFilePath],foreignColumns:[L.project,L.filePath]}).onDelete("cascade")]),Ct=fn("watcher_owner",{id:H("id").primaryKey(),pid:H("pid").notNull(),startedAt:T("started_at").notNull(),heartbeatAt:T("heartbeat_at").notNull()},(n)=>[_t("watcher_owner_singleton",Dt`${n.id} = 1`)]);class Mn{client=null;drizzle=null;dbPath;txDepth=0;constructor(n){this.dbPath=qn(n.projectRoot,".zipbul","gildash.db")}get drizzleDb(){if(!this.drizzle)throw Error("Database is not open. Call open() first.");return this.drizzle}open(){try{Kt(It(this.dbPath),{recursive:!0}),this.client=new Jt(this.dbPath),this.client.run("PRAGMA journal_mode = WAL"),this.client.run("PRAGMA foreign_keys = ON"),this.client.run("PRAGMA busy_timeout = 5000"),this.drizzle=Rt(this.client,{schema:Cn}),zt(this.drizzle,{migrationsFolder:qn(import.meta.dirname,"migrations")});let n=this.client;if(typeof n.function==="function")n.function.call(this.client,"regexp",(t,e)=>{try{return new RegExp(t).test(e)?1:0}catch{return 0}})}catch(n){if(this.isCorruptionError(n)&&jn(this.dbPath)){this.closeClient(),En(this.dbPath);for(let e of["-wal","-shm"]){let i=this.dbPath+e;if(jn(i))En(i)}let t=this.open();if(Mt(t))return Pn(d("store",`Failed to recover database at ${this.dbPath}`,t.data));return t}return Pn(d("store",`Failed to open database at ${this.dbPath}`,n))}}close(){this.closeClient(),this.drizzle=null}transaction(n){let t=this.requireClient();if(this.txDepth===0){this.txDepth++;try{return t.transaction(()=>n(this))()}finally{this.txDepth--}}let e=`sp_${this.txDepth++}`;t.run(`SAVEPOINT "${e}"`);try{let i=n(this);return t.run(`RELEASE SAVEPOINT "${e}"`),i}catch(i){throw t.run(`ROLLBACK TO SAVEPOINT "${e}"`),t.run(`RELEASE SAVEPOINT "${e}"`),i}finally{this.txDepth--}}immediateTransaction(n){let t=this.requireClient();this.txDepth++,t.run("BEGIN IMMEDIATE");try{let e=n();return t.run("COMMIT"),e}catch(e){throw t.run("ROLLBACK"),e}finally{this.txDepth--}}query(n){let t=this.requireClient().prepare(n).get();if(!t)return null;return Object.values(t)[0]}getTableNames(){return this.requireClient().query("SELECT name FROM sqlite_master WHERE type = 'table'").all().map((t)=>t.name)}selectOwner(){return this.requireClient().prepare("SELECT pid, heartbeat_at FROM watcher_owner WHERE id = 1").get()??void 0}insertOwner(n){let t=new Date().toISOString();this.requireClient().prepare("INSERT INTO watcher_owner (id, pid, started_at, heartbeat_at) VALUES (1, ?, ?, ?)").run(n,t,t)}replaceOwner(n){let t=new Date().toISOString();this.requireClient().prepare("INSERT OR REPLACE INTO watcher_owner (id, pid, started_at, heartbeat_at) VALUES (1, ?, ?, ?)").run(n,t,t)}touchOwner(n){let t=new Date().toISOString();this.requireClient().prepare("UPDATE watcher_owner SET heartbeat_at = ? WHERE id = 1 AND pid = ?").run(t,n)}deleteOwner(n){this.requireClient().prepare("DELETE FROM watcher_owner WHERE id = 1 AND pid = ?").run(n)}requireClient(){if(!this.client)throw Error("Database is not open. Call open() first.");return this.client}closeClient(){if(this.client)this.client.close(),this.client=null}isCorruptionError(n){if(!(n instanceof Error))return!1;let t=n.message.toLowerCase();return t.includes("malformed")||t.includes("corrupt")||t.includes("not a database")||t.includes("disk i/o error")||t.includes("sqlite_corrupt")}}import{eq as un,and as nt}from"drizzle-orm";class Jn{db;constructor(n){this.db=n}getFile(n,t){return this.db.drizzleDb.select().from(L).where(nt(un(L.project,n),un(L.filePath,t))).get()??null}upsertFile(n){this.db.drizzleDb.insert(L).values({project:n.project,filePath:n.filePath,mtimeMs:n.mtimeMs,size:n.size,contentHash:n.contentHash,updatedAt:n.updatedAt,lineCount:n.lineCount??null}).onConflictDoUpdate({target:[L.project,L.filePath],set:{mtimeMs:n.mtimeMs,size:n.size,contentHash:n.contentHash,updatedAt:n.updatedAt,lineCount:n.lineCount??null}}).run()}getAllFiles(n){return this.db.drizzleDb.select().from(L).where(un(L.project,n)).all()}getFilesMap(n){let t=this.getAllFiles(n),e=new Map;for(let i of t)e.set(i.filePath,i);return e}deleteFile(n,t){this.db.drizzleDb.delete(L).where(nt(un(L.project,n),un(L.filePath,t))).run()}}import{eq as B,and as tn,sql as dn,count as Tt}from"drizzle-orm";function gn(n){return n.trim().split(/\s+/).map((t)=>t.trim()).filter((t)=>t.length>0).map((t)=>`"${t.replaceAll('"','""')}"*`).join(" ")}class Kn{db;constructor(n){this.db=n}replaceFileSymbols(n,t,e,i){if(this.db.drizzleDb.delete(F).where(tn(B(F.project,n),B(F.filePath,t))).run(),!i.length)return;let r=new Date().toISOString();for(let s of i)this.db.drizzleDb.insert(F).values({project:n,filePath:t,kind:s.kind??"unknown",name:s.name??"",startLine:s.startLine??0,startColumn:s.startColumn??0,endLine:s.endLine??0,endColumn:s.endColumn??0,isExported:s.isExported??0,signature:s.signature??null,fingerprint:s.fingerprint??null,detailJson:s.detailJson??null,contentHash:e,indexedAt:s.indexedAt??r}).run()}getFileSymbols(n,t){return this.db.drizzleDb.select().from(F).where(tn(B(F.project,n),B(F.filePath,t))).all()}searchByName(n,t,e={}){let i=e.limit??50,r=gn(t);if(!r)return[];return this.db.drizzleDb.select().from(F).where(tn(dn`${F.id} IN (SELECT rowid FROM symbols_fts WHERE symbols_fts MATCH ${r})`,B(F.project,n),e.kind?B(F.kind,e.kind):void 0)).orderBy(F.name).limit(i).all()}searchByKind(n,t){return this.db.drizzleDb.select().from(F).where(tn(B(F.project,n),B(F.kind,t))).orderBy(F.name).all()}getStats(n){let t=this.db.drizzleDb.select({symbolCount:Tt(),fileCount:dn`COUNT(DISTINCT ${F.filePath})`}).from(F).where(B(F.project,n)).get();return{symbolCount:t?.symbolCount??0,fileCount:t?.fileCount??0}}getByFingerprint(n,t){return this.db.drizzleDb.select().from(F).where(tn(B(F.project,n),B(F.fingerprint,t))).all()}deleteFileSymbols(n,t){this.db.drizzleDb.delete(F).where(tn(B(F.project,n),B(F.filePath,t))).run()}searchByQuery(n){let t=this.db.drizzleDb.select().from(F).where(tn(n.ftsQuery?dn`${F.id} IN (SELECT rowid FROM symbols_fts WHERE symbols_fts MATCH ${n.ftsQuery})`:void 0,n.exactName?B(F.name,n.exactName):void 0,n.project!==void 0?B(F.project,n.project):void 0,n.kind?B(F.kind,n.kind):void 0,n.filePath!==void 0?B(F.filePath,n.filePath):void 0,n.isExported!==void 0?B(F.isExported,n.isExported?1:0):void 0,n.decorator?dn`${F.id} IN (SELECT s.id FROM symbols s, json_each(s.detail_json, '$.decorators') je WHERE json_extract(je.value, '$.name') = ${n.decorator})`:void 0)).orderBy(F.name).limit(n.regex?Math.max(n.limit*50,5000):n.limit).all();if(!n.regex)return t;try{let e=new RegExp(n.regex);return t.filter((i)=>e.test(i.name)).slice(0,n.limit)}catch{return[]}}}import{eq as z,and as V,isNull as tt,or as Lt}from"drizzle-orm";class In{db;constructor(n){this.db=n}replaceFileRelations(n,t,e){if(this.db.drizzleDb.delete(b).where(V(z(b.project,n),z(b.srcFilePath,t))).run(),!e.length)return;for(let i of e)this.db.drizzleDb.insert(b).values({project:n,type:i.type??"unknown",srcFilePath:i.srcFilePath??t,srcSymbolName:i.srcSymbolName??null,dstFilePath:i.dstFilePath??"",dstSymbolName:i.dstSymbolName??null,metaJson:i.metaJson??null}).run()}getOutgoing(n,t,e){if(e!==void 0)return this.db.drizzleDb.select({project:b.project,type:b.type,srcFilePath:b.srcFilePath,srcSymbolName:b.srcSymbolName,dstFilePath:b.dstFilePath,dstSymbolName:b.dstSymbolName,metaJson:b.metaJson}).from(b).where(V(z(b.project,n),z(b.srcFilePath,t),Lt(z(b.srcSymbolName,e),tt(b.srcSymbolName)))).all();return this.db.drizzleDb.select({project:b.project,type:b.type,srcFilePath:b.srcFilePath,srcSymbolName:b.srcSymbolName,dstFilePath:b.dstFilePath,dstSymbolName:b.dstSymbolName,metaJson:b.metaJson}).from(b).where(V(z(b.project,n),z(b.srcFilePath,t))).all()}getIncoming(n,t){return this.db.drizzleDb.select({project:b.project,type:b.type,srcFilePath:b.srcFilePath,srcSymbolName:b.srcSymbolName,dstFilePath:b.dstFilePath,dstSymbolName:b.dstSymbolName,metaJson:b.metaJson}).from(b).where(V(z(b.project,n),z(b.dstFilePath,t))).all()}getByType(n,t){return this.db.drizzleDb.select({project:b.project,type:b.type,srcFilePath:b.srcFilePath,srcSymbolName:b.srcSymbolName,dstFilePath:b.dstFilePath,dstSymbolName:b.dstSymbolName,metaJson:b.metaJson}).from(b).where(V(z(b.project,n),z(b.type,t))).all()}deleteFileRelations(n,t){this.db.drizzleDb.delete(b).where(V(z(b.project,n),z(b.srcFilePath,t))).run()}searchRelations(n){return this.db.drizzleDb.select({project:b.project,type:b.type,srcFilePath:b.srcFilePath,srcSymbolName:b.srcSymbolName,dstFilePath:b.dstFilePath,dstSymbolName:b.dstSymbolName,metaJson:b.metaJson}).from(b).where(V(n.project!==void 0?z(b.project,n.project):void 0,n.srcFilePath!==void 0?z(b.srcFilePath,n.srcFilePath):void 0,n.srcSymbolName!==void 0?z(b.srcSymbolName,n.srcSymbolName):void 0,n.dstFilePath!==void 0?z(b.dstFilePath,n.dstFilePath):void 0,n.dstSymbolName!==void 0?z(b.dstSymbolName,n.dstSymbolName):void 0,n.type!==void 0?z(b.type,n.type):void 0)).limit(n.limit).all()}retargetRelations(n,t,e,i,r){let s=e===null?V(z(b.project,n),z(b.dstFilePath,t),tt(b.dstSymbolName)):V(z(b.project,n),z(b.dstFilePath,t),z(b.dstSymbolName,e));this.db.drizzleDb.update(b).set({dstFilePath:i,dstSymbolName:r}).where(s).run()}}import{err as et}from"@zipbul/result";import{subscribe as $t}from"@parcel/watcher";import Rn from"path";var Bt=["**/.git/**","**/.zipbul/**","**/dist/**","**/node_modules/**"],Gt=new Set(["package.json","tsconfig.json"]);function Wt(n){return n.replaceAll("\\","/")}function Ht(n){if(n==="update")return"change";if(n==="create")return"create";return"delete"}class xn{#t;#n;#i;#r;#s;#e;constructor(n,t=$t,e=console){this.#n=n.projectRoot,this.#i=[...Bt,...n.ignorePatterns??[]],this.#r=new Set((n.extensions??[".ts",".mts",".cts"]).map((i)=>i.toLowerCase())),this.#s=t,this.#e=e}async start(n){try{this.#t=await this.#s(this.#n,(t,e)=>{if(t){this.#e.error(d("watcher","Callback error",t));return}try{for(let i of e){let r=Wt(Rn.relative(this.#n,i.path));if(r.startsWith(".."))continue;let s=Rn.basename(r),u=Rn.extname(r).toLowerCase();if(!Gt.has(s)&&!this.#r.has(u))continue;if(r.endsWith(".d.ts"))continue;n({eventType:Ht(i.type),filePath:r})}}catch(i){this.#e.error(d("watcher","Callback error",i))}},{ignore:this.#i})}catch(t){return et(d("watcher","Failed to subscribe watcher",t))}}async close(){if(!this.#t)return;try{await this.#t.unsubscribe(),this.#t=void 0}catch(n){return et(d("watcher","Failed to close watcher",n))}}}import zn from"path";import{promises as Ut}from"fs";var Qt=["**/node_modules/**","**/.git/**","**/.zipbul/**","**/dist/**"];async function yn(n){let t=[];for await(let e of Ut.glob("**/package.json",{cwd:n,exclude:Qt})){let i=zn.dirname(e).replaceAll("\\","/"),r=zn.join(n,e),s=await Bun.file(r).json(),u=typeof s?.name==="string"&&s.name.length>0?s.name:zn.basename(i==="."?n:i);t.push({dir:i,project:u})}return t.sort((e,i)=>i.dir.length-e.dir.length),t}function Y(n,t,e="default"){let i=n.replaceAll("\\","/");for(let r of t){if(r.dir===".")return r.project;if(i===r.dir||i.startsWith(`${r.dir}/`))return r.project}return e}import it from"path";var X=new Map;async function Vt(n){let t=Bun.file(n);if(!await t.exists())return null;let e=await t.json();return typeof e==="object"&&e!==null?e:null}async function mn(n){if(X.has(n))return X.get(n)??null;let t=it.join(n,"tsconfig.json"),e=await Vt(t);if(!e)return X.set(n,null),null;let i=typeof e.compilerOptions==="object"&&e.compilerOptions!==null?e.compilerOptions:null;if(!i)return X.set(n,null),null;let r=typeof i.baseUrl==="string"?i.baseUrl:null,s=typeof i.paths==="object"&&i.paths!==null?i.paths:null;if(!r&&!s)return X.set(n,null),null;let u=r?it.resolve(n,r):n,m=new Map;if(s)for(let[x,p]of Object.entries(s)){if(!Array.isArray(p))continue;let y=p.filter((w)=>typeof w==="string");m.set(x,y)}let a={baseUrl:u,paths:m};return X.set(n,a),a}function bn(n){if(n){X.delete(n);return}X.clear()}import rt from"path";function Tn(n,t){return rt.relative(n,t).replaceAll("\\","/")}function on(n,t){return rt.resolve(n,t)}function P(n){let t=Bun.hash.xxHash64(n);return BigInt.asUintN(64,BigInt(t)).toString(16).padStart(16,"0")}import{isErr as at}from"@zipbul/result";import{promises as Yt}from"fs";import{join as Zt}from"path";async function st(n){let{projectRoot:t,extensions:e,ignorePatterns:i,fileRepo:r}=n,s=r.getFilesMap(),u=new Set,m=[],a=[],x=i.map((y)=>new Bun.Glob(y));for await(let y of Yt.glob("**/*",{cwd:t})){if(!e.some((o)=>y.endsWith(o)))continue;if(x.some((o)=>o.match(y)))continue;u.add(y);let w=Zt(t,y),N=Bun.file(w),{size:_,lastModified:D}=N,M=s.get(y);if(!M){let o=await N.text(),c=P(o);m.push({filePath:y,contentHash:c,mtimeMs:D,size:_});continue}if(M.mtimeMs===D&&M.size===_){a.push({filePath:y,contentHash:M.contentHash,mtimeMs:D,size:_});continue}let l=await N.text(),g=P(l);if(g===M.contentHash)a.push({filePath:y,contentHash:g,mtimeMs:D,size:_});else m.push({filePath:y,contentHash:g,mtimeMs:D,size:_})}let p=[];for(let y of s.keys())if(!u.has(y))p.push(y);return{changed:m,unchanged:a,deleted:p}}function vt(n){if(n.kind==="function"||n.kind==="method"){let t=n.parameters?.length??0,e=n.modifiers.includes("async")?1:0;return`params:${t}|async:${e}`}return null}function Xt(n){let t={};if(n.jsDoc)t.jsDoc=n.jsDoc;if(n.kind==="function"||n.kind==="method"){if(n.parameters!==void 0)t.parameters=n.parameters;if(n.returnType!==void 0)t.returnType=n.returnType}if(n.heritage?.length)t.heritage=n.heritage;if(n.decorators?.length)t.decorators=n.decorators;if(n.typeParameters?.length)t.typeParameters=n.typeParameters;if(n.modifiers?.length)t.modifiers=n.modifiers;if(n.members?.length)t.members=n.members.map((e)=>{let i=e.modifiers.find((r)=>r==="private"||r==="protected"||r==="public");return{name:e.name,kind:e.methodKind??e.kind,type:e.returnType,visibility:i,isStatic:e.modifiers.includes("static")||void 0,isReadonly:e.modifiers.includes("readonly")||void 0}});return Object.keys(t).length>0?JSON.stringify(t):null}function ot(n,t,e,i,r){let s=vt(n),u=P(`${t}|${n.kind}|${s??""}`);return{project:e,filePath:i,kind:n.kind,name:t,startLine:n.span.start.line,startColumn:n.span.start.column,endLine:n.span.end.line,endColumn:n.span.end.column,isExported:n.isExported?1:0,signature:s,fingerprint:u,detailJson:Xt(n),contentHash:r,indexedAt:new Date().toISOString()}}function Ln(n){let{parsed:t,project:e,filePath:i,contentHash:r,symbolRepo:s}=n,u=ln(t),m=[];for(let a of u){m.push(ot(a,a.name,e,i,r));for(let x of a.members??[])m.push(ot(x,`${a.name}.${x.name}`,e,i,r))}s.replaceFileSymbols(e,i,r,m)}function $n(n){let{ast:t,project:e,filePath:i,relationRepo:r,projectRoot:s,tsconfigPaths:u}=n,m=on(s,i),a=pn(t,m,u),x=[];for(let p of a){let y=Tn(s,p.dstFilePath);if(y.startsWith(".."))continue;let w=Tn(s,p.srcFilePath);x.push({project:e,type:p.type,srcFilePath:w,srcSymbolName:p.srcSymbolName??null,dstFilePath:y,dstSymbolName:p.dstSymbolName??null,metaJson:p.metaJson??null})}return r.replaceFileRelations(e,i,x),x.length}var Pt=100;class cn{opts;logger;callbacks=new Set;indexingLock=!1;pendingEvents=[];debounceTimer=null;currentIndexing=null;pendingFullIndex=!1;pendingFullIndexWaiters=[];tsconfigPathsRaw;boundariesRefresh=null;constructor(n){this.opts=n,this.logger=n.logger??console,this.tsconfigPathsRaw=mn(n.projectRoot)}get tsconfigPaths(){return this.tsconfigPathsRaw}fullIndex(){return this.startIndex(void 0,!0)}incrementalIndex(n){return this.startIndex(n,!1)}onIndexed(n){return this.callbacks.add(n),()=>this.callbacks.delete(n)}handleWatcherEvent(n){if(n.filePath.endsWith("tsconfig.json")){bn(this.opts.projectRoot),this.tsconfigPathsRaw=mn(this.opts.projectRoot),this.fullIndex().catch((t)=>{this.logger.error("[IndexCoordinator] fullIndex failed after tsconfig change:",t)});return}if(n.filePath.endsWith("package.json")){let t=this.opts.discoverProjectsFn??yn;this.boundariesRefresh=t(this.opts.projectRoot).then((e)=>{this.opts.boundaries=e})}if(this.pendingEvents.push(n),this.debounceTimer===null)this.debounceTimer=setTimeout(()=>{this.debounceTimer=null,this.flushPending()},Pt)}async shutdown(){if(this.debounceTimer!==null)clearTimeout(this.debounceTimer),this.debounceTimer=null;if(this.currentIndexing)await this.currentIndexing}startIndex(n,t){if(this.indexingLock){if(t)return this.pendingFullIndex=!0,new Promise((i,r)=>{this.pendingFullIndexWaiters.push({resolve:i,reject:r})});return this.currentIndexing}this.indexingLock=!0;let e=this.doIndex(n,t).then((i)=>{return this.fireCallbacks(i),i}).finally(()=>{if(this.indexingLock=!1,this.currentIndexing=null,this.pendingFullIndex){this.pendingFullIndex=!1;let i=this.pendingFullIndexWaiters.splice(0);this.startIndex(void 0,!0).then((r)=>{for(let s of i)s.resolve(r)}).catch((r)=>{for(let s of i)s.reject(r)})}else if(this.pendingEvents.length>0){let i=this.pendingEvents.splice(0);this.startIndex(i,!1).catch((r)=>this.logger.error("[IndexCoordinator] incremental drain error",r))}});return this.currentIndexing=e,e}async doIndex(n,t){let e=Date.now(),{fileRepo:i,symbolRepo:r,relationRepo:s,dbConnection:u}=this.opts;if(this.boundariesRefresh)await this.boundariesRefresh,this.boundariesRefresh=null;let m,a;if(n!==void 0)m=n.filter((o)=>o.eventType==="create"||o.eventType==="change").map((o)=>({filePath:o.filePath,contentHash:"",mtimeMs:0,size:0})),a=n.filter((o)=>o.eventType==="delete").map((o)=>o.filePath);else{let o=new Map;for(let f of this.opts.boundaries)for(let[O,A]of i.getFilesMap(f.project))o.set(O,A);let c=await st({projectRoot:this.opts.projectRoot,extensions:this.opts.extensions,ignorePatterns:this.opts.ignorePatterns,fileRepo:{getFilesMap:()=>o}});m=c.changed,a=c.deleted}let x=await this.tsconfigPathsRaw??void 0,p=new Map;for(let o of a){let c=Y(o,this.opts.boundaries),f=r.getFileSymbols(c,o);p.set(o,f)}let y=new Map,w=new Map;if(t)for(let o of this.opts.boundaries)for(let c of i.getAllFiles(o.project))for(let f of r.getFileSymbols(o.project,c.filePath))y.set(`${f.filePath}::${f.name}`,{name:f.name,filePath:f.filePath,kind:f.kind,fingerprint:f.fingerprint});else{for(let o of m){let c=Y(o.filePath,this.opts.boundaries);for(let f of r.getFileSymbols(c,o.filePath))y.set(`${f.filePath}::${f.name}`,{name:f.name,filePath:f.filePath,kind:f.kind,fingerprint:f.fingerprint})}for(let[,o]of p)for(let c of o)y.set(`${c.filePath}::${c.name}`,{name:c.name,filePath:c.filePath,kind:c.kind,fingerprint:c.fingerprint})}let N=()=>{for(let o of a){let c=Y(o,this.opts.boundaries);r.deleteFileSymbols(c,o),s.deleteFileRelations(c,o),i.deleteFile(c,o)}},_=async()=>{let o=0,c=0,f=[];for(let O of m)try{let A=await this.processFile(O.filePath,O.contentHash||void 0,x);o+=A.symbolCount,c+=A.relCount}catch(A){this.logger.error(`[IndexCoordinator] Failed to index ${O.filePath}:`,A),f.push(O.filePath)}return{symbols:o,relations:c,failedFiles:f}},D=0,M=0,l=[];if(t){let{projectRoot:o,boundaries:c}=this.opts,{parseCache:f}=this.opts,O=await Promise.allSettled(m.map(async(h)=>{let k=on(o,h.filePath),J=Bun.file(k),K=await J.text(),I=h.contentHash||P(K);return{filePath:h.filePath,text:K,contentHash:I,mtimeMs:J.lastModified,size:J.size}})),A=O.filter((h)=>h.status==="fulfilled").map((h)=>h.value);for(let h of O)if(h.status==="rejected")this.logger.error("[IndexCoordinator] Failed to pre-read file:",h.reason);let C=[];u.transaction(()=>{for(let k of c){let J=i.getAllFiles(k.project);for(let K of J)i.deleteFile(K.project,K.filePath)}for(let k of A){let J=Y(k.filePath,c);i.upsertFile({project:J,filePath:k.filePath,mtimeMs:k.mtimeMs,size:k.size,contentHash:k.contentHash,updatedAt:new Date().toISOString(),lineCount:k.text.split(`
|
|
4
|
+
`).length})}let h=this.opts.parseSourceFn??an;for(let k of A){let J=Y(k.filePath,c),K=h(on(o,k.filePath),k.text);if(at(K))throw K.data;let I=K;C.push({filePath:k.filePath,parsed:I}),Ln({parsed:I,project:J,filePath:k.filePath,contentHash:k.contentHash,symbolRepo:r}),M+=$n({ast:I.program,project:J,filePath:k.filePath,relationRepo:s,projectRoot:o,tsconfigPaths:x}),D+=r.getFileSymbols(J,k.filePath).length}});for(let h of C)f.set(h.filePath,h.parsed)}else{N();let o=await _();D=o.symbols,M=o.relations,l=o.failedFiles}for(let o of m){let c=Y(o.filePath,this.opts.boundaries);for(let f of r.getFileSymbols(c,o.filePath))w.set(`${f.filePath}::${f.name}`,{name:f.name,filePath:f.filePath,kind:f.kind,fingerprint:f.fingerprint})}let g={added:[],modified:[],removed:[]};for(let[o,c]of w){let f=y.get(o);if(!f)g.added.push({name:c.name,filePath:c.filePath,kind:c.kind});else if(f.fingerprint!==c.fingerprint)g.modified.push({name:c.name,filePath:c.filePath,kind:c.kind})}for(let[o,c]of y)if(!w.has(o))g.removed.push({name:c.name,filePath:c.filePath,kind:c.kind});if(!t)for(let[o,c]of p)for(let f of c){if(!f.fingerprint)continue;let O=Y(o,this.opts.boundaries),A=r.getByFingerprint(O,f.fingerprint);if(A.length===1){let C=A[0];s.retargetRelations(O,o,f.name,C.filePath,C.name)}}return{indexedFiles:m.length,removedFiles:a.length,totalSymbols:D,totalRelations:M,durationMs:Date.now()-e,changedFiles:m.map((o)=>o.filePath),deletedFiles:[...a],failedFiles:l,changedSymbols:g}}async processFile(n,t,e){let{projectRoot:i,boundaries:r}=this.opts,{fileRepo:s,symbolRepo:u,relationRepo:m,parseCache:a}=this.opts,x=on(i,n),p=Bun.file(x),y=await p.text(),w=t||P(y),N=Y(n,r),D=(this.opts.parseSourceFn??an)(x,y);if(at(D))throw D.data;let M=D;a.set(n,M),s.upsertFile({project:N,filePath:n,mtimeMs:p.lastModified,size:p.size,contentHash:w,updatedAt:new Date().toISOString(),lineCount:y.split(`
|
|
5
|
+
`).length}),Ln({parsed:M,project:N,filePath:n,contentHash:w,symbolRepo:u});let l=$n({ast:M.program,project:N,filePath:n,relationRepo:m,projectRoot:i,tsconfigPaths:e});return{symbolCount:u.getFileSymbols(N,n).length,relCount:l}}fireCallbacks(n){for(let t of this.callbacks)try{t(n)}catch(e){this.logger.error("[IndexCoordinator] onIndexed callback threw:",e)}}flushPending(){if(this.indexingLock)return;if(this.pendingEvents.length>0){let n=this.pendingEvents.splice(0);this.startIndex(n,!1).catch((t)=>this.logger.error("[IndexCoordinator] flushPending startIndex error:",t))}}}function Et(n){try{return process.kill(n,0),!0}catch(t){if(typeof t==="object"&&t&&"code"in t)return t.code!=="ESRCH";return!0}}function jt(n){let t=new Date(n).getTime();return Number.isNaN(t)?0:t}function ut(n,t,e={}){let i=e.now??Date.now,r=e.isAlive??Et,s=e.staleAfterSeconds??90;return n.immediateTransaction(()=>{let u=n.selectOwner();if(!u)return n.insertOwner(t),"owner";let m=Math.floor((i()-jt(u.heartbeat_at))/1000);if(r(u.pid)&&m<s)return"reader";return n.replaceOwner(t),"owner"})}function mt(n,t){n.deleteOwner(t)}function ct(n,t){n.touchOwner(t)}function Bn(n){let{symbolRepo:t,project:e,query:i}=n,r=i.project??e,s=i.limit??100,u={kind:i.kind,filePath:i.filePath,isExported:i.isExported,project:r,limit:s};if(i.text)if(i.exact)u.exactName=i.text;else{let a=gn(i.text);if(a)u.ftsQuery=a}if(i.decorator)u.decorator=i.decorator;if(i.regex)u.regex=i.regex;return t.searchByQuery(u).map((a)=>({id:a.id,filePath:a.filePath,kind:a.kind,name:a.name,span:{start:{line:a.startLine,column:a.startColumn},end:{line:a.endLine,column:a.endColumn}},isExported:a.isExported===1,signature:a.signature,fingerprint:a.fingerprint,detail:a.detailJson?(()=>{try{return JSON.parse(a.detailJson)}catch{return{}}})():{}}))}function Gn(n){let{relationRepo:t,project:e,query:i}=n,r=i.project??e,s=i.limit??500;return t.searchRelations({srcFilePath:i.srcFilePath,srcSymbolName:i.srcSymbolName,dstFilePath:i.dstFilePath,dstSymbolName:i.dstSymbolName,type:i.type,project:r,limit:s}).map((m)=>{let a;if(m.metaJson)try{a=JSON.parse(m.metaJson)}catch{console.error("[relationSearch] malformed metaJson:",m.metaJson)}return{type:m.type,srcFilePath:m.srcFilePath,srcSymbolName:m.srcSymbolName,dstFilePath:m.dstFilePath,dstSymbolName:m.dstSymbolName,metaJson:m.metaJson??void 0,meta:a}})}class wn{options;adjacencyList=new Map;reverseAdjacencyList=new Map;constructor(n){this.options=n}build(){this.adjacencyList=new Map,this.reverseAdjacencyList=new Map;let n=[...this.options.relationRepo.getByType(this.options.project,"imports"),...this.options.relationRepo.getByType(this.options.project,"type-references"),...this.options.relationRepo.getByType(this.options.project,"re-exports")];for(let t of n){let{srcFilePath:e,dstFilePath:i}=t;if(!this.adjacencyList.has(e))this.adjacencyList.set(e,new Set);if(this.adjacencyList.get(e).add(i),!this.adjacencyList.has(i))this.adjacencyList.set(i,new Set);if(!this.reverseAdjacencyList.has(i))this.reverseAdjacencyList.set(i,new Set);this.reverseAdjacencyList.get(i).add(e)}}getDependencies(n){return Array.from(this.adjacencyList.get(n)??[])}getDependents(n){return Array.from(this.reverseAdjacencyList.get(n)??[])}getTransitiveDependents(n){let t=new Set,e=[n];while(e.length>0){let i=e.shift();for(let r of this.reverseAdjacencyList.get(i)??[])if(!t.has(r))t.add(r),e.push(r)}return Array.from(t)}hasCycle(){let n=new Set,t=new Set;for(let e of this.adjacencyList.keys()){if(n.has(e))continue;let i=[{node:e,entered:!1}];while(i.length>0){let r=i.pop();if(r.entered){t.delete(r.node);continue}if(t.has(r.node))return!0;if(n.has(r.node))continue;n.add(r.node),t.add(r.node),i.push({node:r.node,entered:!0});for(let s of this.adjacencyList.get(r.node)??[]){if(t.has(s))return!0;if(!n.has(s))i.push({node:s,entered:!1})}}}return!1}getAffectedByChange(n){let t=new Set;for(let e of n)for(let i of this.getTransitiveDependents(e))t.add(i);return Array.from(t)}getAdjacencyList(){let n=new Map;for(let[t,e]of this.adjacencyList)n.set(t,Array.from(e));return n}getTransitiveDependencies(n){let t=new Set,e=[n];while(e.length>0){let i=e.shift();for(let r of this.adjacencyList.get(i)??[])if(!t.has(r))t.add(r),e.push(r)}return Array.from(t)}getCyclePaths(){let n=new Set,t=[],e=new Set,i=new Map,r=[],s=(u)=>{if(e.has(u))return;if(i.has(u)){let m=i.get(u),a=r.slice(m),x=a.reduce((N,_)=>N<=_?N:_),p=a.indexOf(x),y=[...a.slice(p),...a.slice(0,p)],w=y.join("\x00");if(!n.has(w))n.add(w),t.push(y);return}i.set(u,r.length),r.push(u);for(let m of this.adjacencyList.get(u)??[])s(m);r.pop(),i.delete(u),e.add(u)};for(let u of this.adjacencyList.keys())s(u);return t}}import{findInFiles as qt,Lang as ne}from"@ast-grep/napi";async function Wn(n){if(n.filePaths.length===0)return[];let t=[];return await qt(ne.TypeScript,{paths:n.filePaths,matcher:{rule:{pattern:n.pattern}}},(e,i)=>{if(e)return;for(let r of i){let s=r.range();t.push({filePath:r.getRoot().filename(),startLine:s.start.line+1,endLine:s.end.line+1,matchedText:r.text()})}}),t}var lt=30000,pt=60000,ee=10;class Hn{projectRoot;db;symbolRepo;relationRepo;fileRepo;parseCache;coordinator;watcher;releaseWatcherRoleFn;parseSourceFn;extractSymbolsFn;extractRelationsFn;symbolSearchFn;relationSearchFn;patternSearchFn;readFileFn;unlinkFn;existsSyncFn;makeExternalCoordinatorFn;logger;defaultProject;role;timer=null;signalHandlers=[];closed=!1;tsconfigPaths=null;boundaries=[];onIndexedCallbacks=new Set;graphCache=null;graphCacheKey=null;constructor(n){this.projectRoot=n.projectRoot,this.db=n.db,this.symbolRepo=n.symbolRepo,this.relationRepo=n.relationRepo,this.fileRepo=n.fileRepo,this.parseCache=n.parseCache,this.coordinator=n.coordinator,this.watcher=n.watcher,this.releaseWatcherRoleFn=n.releaseWatcherRoleFn,this.parseSourceFn=n.parseSourceFn,this.extractSymbolsFn=n.extractSymbolsFn,this.extractRelationsFn=n.extractRelationsFn,this.symbolSearchFn=n.symbolSearchFn,this.relationSearchFn=n.relationSearchFn,this.patternSearchFn=n.patternSearchFn,this.readFileFn=n.readFileFn,this.unlinkFn=n.unlinkFn,this.existsSyncFn=n.existsSyncFn,this.makeExternalCoordinatorFn=n.makeExternalCoordinatorFn,this.logger=n.logger,this.defaultProject=n.defaultProject,this.role=n.role}static async open(n){let{projectRoot:t,extensions:e=[".ts",".mts",".cts"],ignorePatterns:i=[],parseCacheCapacity:r=500,logger:s=console,existsSyncFn:u=te,dbConnectionFactory:m,watcherFactory:a,coordinatorFactory:x,repositoryFactory:p,acquireWatcherRoleFn:y=ut,releaseWatcherRoleFn:w=mt,updateHeartbeatFn:N=ct,discoverProjectsFn:_=yn,parseSourceFn:D=an,extractSymbolsFn:M=ln,extractRelationsFn:l=pn,symbolSearchFn:g=Bn,relationSearchFn:o=Gn,patternSearchFn:c=Wn,loadTsconfigPathsFn:f=mn,makeExternalCoordinatorFn:O,readFileFn:A=async(K)=>Bun.file(K).text(),unlinkFn:C=async(K)=>{await Bun.file(K).unlink()},watchMode:h}=n;if(!Sn.isAbsolute(t))return S(d("validation",`Gildash: projectRoot must be an absolute path, got: "${t}"`));if(!u(t))return S(d("validation",`Gildash: projectRoot does not exist: "${t}"`));let k=m?m():new Mn({projectRoot:t}),J=k.open();if(en(J))return J;try{let K=await _(t),I=K[0]?.project??Sn.basename(t),$=p?p():(()=>{let G=k;return{fileRepo:new Jn(G),symbolRepo:new Kn(G),relationRepo:new In(G),parseCache:new kn(r)}})(),rn=h??!0,Z;if(rn)Z=await Promise.resolve(y(k,process.pid,{}));else Z="owner";let ft=null,gt=null,R=new Hn({projectRoot:t,db:k,symbolRepo:$.symbolRepo,relationRepo:$.relationRepo,fileRepo:$.fileRepo,parseCache:$.parseCache,coordinator:ft,watcher:gt,releaseWatcherRoleFn:w,parseSourceFn:D,extractSymbolsFn:M,extractRelationsFn:l,symbolSearchFn:g,relationSearchFn:o,patternSearchFn:c,readFileFn:A,unlinkFn:C,existsSyncFn:u,makeExternalCoordinatorFn:O,logger:s,defaultProject:I,role:Z});if(bn(t),R.tsconfigPaths=await f(t),R.boundaries=K,Z==="owner"){let G=x?x():new cn({projectRoot:t,boundaries:K,extensions:e,ignorePatterns:i,dbConnection:k,parseCache:$.parseCache,fileRepo:$.fileRepo,symbolRepo:$.symbolRepo,relationRepo:$.relationRepo,logger:s});if(R.coordinator=G,G.onIndexed(()=>R.invalidateGraphCache()),rn){let U=a?a():new xn({projectRoot:t,ignorePatterns:i,extensions:e},void 0,s);R.watcher=U,await U.start((Q)=>G.handleWatcherEvent?.(Q)).then((Q)=>{if(en(Q))throw Q.data});let E=setInterval(()=>{N(k,process.pid)},lt);R.timer=E}await G.fullIndex()}else{let G=0,U=async()=>{try{let Q=await Promise.resolve(y(k,process.pid,{}));if(G=0,Q==="owner"){clearInterval(R.timer),R.timer=null;let j=null,v=null;try{j=a?a():new xn({projectRoot:t,ignorePatterns:i,extensions:e},void 0,s),v=x?x():new cn({projectRoot:t,boundaries:K,extensions:e,ignorePatterns:i,dbConnection:k,parseCache:$.parseCache,fileRepo:$.fileRepo,symbolRepo:$.symbolRepo,relationRepo:$.relationRepo,logger:s});for(let W of R.onIndexedCallbacks)v.onIndexed(W);v.onIndexed(()=>R.invalidateGraphCache()),await j.start((W)=>v?.handleWatcherEvent?.(W)).then((W)=>{if(en(W))throw W.data});let On=setInterval(()=>{N(k,process.pid)},lt);R.timer=On,R.coordinator=v,R.watcher=j,await v.fullIndex()}catch(On){if(s.error("[Gildash] owner promotion failed, reverting to reader",On),j){let W=await j.close();if(en(W))s.error("[Gildash] watcher close error during promotion rollback",W.data);R.watcher=null}if(v)await v.shutdown().catch((W)=>s.error("[Gildash] coordinator shutdown error during promotion rollback",W)),R.coordinator=null;if(R.timer===null)R.timer=setInterval(U,pt)}}}catch(Q){if(G++,s.error("[Gildash] healthcheck error",Q),G>=ee)s.error("[Gildash] healthcheck failed too many times, shutting down"),clearInterval(R.timer),R.timer=null,R.close().catch((j)=>s.error("[Gildash] close error during healthcheck shutdown",j))}},E=setInterval(U,pt);R.timer=E}if(rn){let G=["SIGTERM","SIGINT","beforeExit"];for(let U of G){let E=()=>{R.close().catch((Q)=>s.error("[Gildash] close error during signal",U,Q))};if(U==="beforeExit")process.on("beforeExit",E);else process.on(U,E);R.signalHandlers.push([U,E])}}return R}catch(K){return k.close(),S(d("store","Gildash: initialization failed",K))}}async close(n){if(this.closed)return;this.closed=!0;let t=[];for(let[e,i]of this.signalHandlers)if(e==="beforeExit")process.off("beforeExit",i);else process.off(e,i);if(this.signalHandlers=[],this.coordinator)try{await this.coordinator.shutdown()}catch(e){t.push(e instanceof Error?e:Error(String(e)))}if(this.watcher){let e=await this.watcher.close();if(en(e))t.push(e.data)}if(this.timer!==null)clearInterval(this.timer),this.timer=null;try{this.releaseWatcherRoleFn(this.db,process.pid)}catch(e){t.push(e instanceof Error?e:Error(String(e)))}try{this.db.close()}catch(e){t.push(e instanceof Error?e:Error(String(e)))}if(n?.cleanup)for(let e of["","-wal","-shm"])try{await this.unlinkFn(Sn.join(this.projectRoot,".zipbul","gildash.db"+e))}catch{}if(t.length>0)return S(d("close","Gildash: one or more errors occurred during close()",t))}onIndexed(n){if(this.onIndexedCallbacks.add(n),!this.coordinator)return()=>{this.onIndexedCallbacks.delete(n)};let t=this.coordinator.onIndexed(n);return()=>{this.onIndexedCallbacks.delete(n),t()}}parseSource(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));let e=this.parseSourceFn(n,t);if(en(e))return e;return this.parseCache.set(n,e),e}extractSymbols(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));return this.extractSymbolsFn(n)}extractRelations(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));return this.extractRelationsFn(n.program,n.filePath,this.tsconfigPaths??void 0)}invalidateGraphCache(){this.graphCache=null,this.graphCacheKey=null}getOrBuildGraph(n){let t=n??"__cross__";if(this.graphCache&&this.graphCacheKey===t)return this.graphCache;let e=new wn({relationRepo:this.relationRepo,project:n??this.defaultProject});return e.build(),this.graphCache=e,this.graphCacheKey=t,e}async reindex(){if(this.closed)return S(d("closed","Gildash: instance is closed"));if(!this.coordinator)return S(d("closed","Gildash: reindex() is not available for readers"));try{let n=await this.coordinator.fullIndex();return this.invalidateGraphCache(),n}catch(n){return S(d("index","Gildash: reindex failed",n))}}get projects(){return[...this.boundaries]}getStats(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.symbolRepo.getStats(n??this.defaultProject)}catch(t){return S(d("store","Gildash: getStats failed",t))}}searchSymbols(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.symbolSearchFn({symbolRepo:this.symbolRepo,project:this.defaultProject,query:n})}catch(t){return S(d("search","Gildash: searchSymbols failed",t))}}searchRelations(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.relationSearchFn({relationRepo:this.relationRepo,project:this.defaultProject,query:n})}catch(t){return S(d("search","Gildash: searchRelations failed",t))}}searchAllSymbols(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.symbolSearchFn({symbolRepo:this.symbolRepo,project:void 0,query:n})}catch(t){return S(d("search","Gildash: searchAllSymbols failed",t))}}searchAllRelations(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.relationSearchFn({relationRepo:this.relationRepo,project:void 0,query:n})}catch(t){return S(d("search","Gildash: searchAllRelations failed",t))}}listIndexedFiles(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.fileRepo.getAllFiles(n??this.defaultProject)}catch(t){return S(d("store","Gildash: listIndexedFiles failed",t))}}getInternalRelations(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.relationSearchFn({relationRepo:this.relationRepo,project:t??this.defaultProject,query:{srcFilePath:n,dstFilePath:n,limit:1e4}})}catch(e){return S(d("search","Gildash: getInternalRelations failed",e))}}diffSymbols(n,t){let e=new Map(n.map((m)=>[`${m.name}::${m.filePath}`,m])),i=new Map(t.map((m)=>[`${m.name}::${m.filePath}`,m])),r=[],s=[],u=[];for(let[m,a]of i){let x=e.get(m);if(!x)r.push(a);else if(x.fingerprint!==a.fingerprint)u.push({before:x,after:a})}for(let[m,a]of e)if(!i.has(m))s.push(a);return{added:r,removed:s,modified:u}}getDependencies(n,t,e=1e4){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.relationSearchFn({relationRepo:this.relationRepo,project:t??this.defaultProject,query:{srcFilePath:n,type:"imports",project:t??this.defaultProject,limit:e}}).map((i)=>i.dstFilePath)}catch(i){return S(d("search","Gildash: getDependencies failed",i))}}getDependents(n,t,e=1e4){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.relationSearchFn({relationRepo:this.relationRepo,project:t??this.defaultProject,query:{dstFilePath:n,type:"imports",project:t??this.defaultProject,limit:e}}).map((i)=>i.srcFilePath)}catch(i){return S(d("search","Gildash: getDependents failed",i))}}async getAffected(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.getOrBuildGraph(t).getAffectedByChange(n)}catch(e){return S(d("search","Gildash: getAffected failed",e))}}async hasCycle(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.getOrBuildGraph(n).hasCycle()}catch(t){return S(d("search","Gildash: hasCycle failed",t))}}async getImportGraph(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.getOrBuildGraph(n).getAdjacencyList()}catch(t){return S(d("search","Gildash: getImportGraph failed",t))}}async getTransitiveDependencies(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.getOrBuildGraph(t).getTransitiveDependencies(n)}catch(e){return S(d("search","Gildash: getTransitiveDependencies failed",e))}}async getCyclePaths(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.getOrBuildGraph(n).getCyclePaths()}catch(t){return S(d("search","Gildash: getCyclePaths failed",t))}}getDeadExports(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{let e=n??this.defaultProject,i=this.symbolRepo.searchByQuery({project:e,isExported:!0,limit:1e5}),r=new Set;for(let a of["imports","re-exports"]){let x=this.relationRepo.getByType(e,a);for(let p of x)if(p.dstSymbolName!=null)r.add(`${p.dstFilePath}::${p.dstSymbolName}`)}let s=t?.entryPoints,u=["index.ts","index.mts","main.ts"];return i.filter((a)=>{if(r.has(`${a.filePath}::${a.name}`))return!1;if(s!==void 0)return!s.includes(a.filePath);let x=a.filePath.split("/").pop()??a.filePath;return!u.includes(x)}).map((a)=>({symbolName:a.name,filePath:a.filePath}))}catch(e){return S(d("store","Gildash: getDeadExports failed",e))}}getFullSymbol(n,t,e){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{let i=e??this.defaultProject,r=this.symbolSearchFn({symbolRepo:this.symbolRepo,project:i,query:{text:n,exact:!0,filePath:t,limit:1}});if(r.length===0)return S(d("search",`Gildash: symbol '${n}' not found in '${t}'`));let s=r[0],u=s.detail;return{...s,members:Array.isArray(u.members)?u.members:void 0,jsDoc:typeof u.jsDoc==="string"?u.jsDoc:void 0,parameters:typeof u.parameters==="string"?u.parameters:void 0,returnType:typeof u.returnType==="string"?u.returnType:void 0,heritage:Array.isArray(u.heritage)?u.heritage:void 0,decorators:Array.isArray(u.decorators)?u.decorators:void 0,typeParameters:typeof u.typeParameters==="string"?u.typeParameters:void 0}}catch(i){return S(d("search","Gildash: getFullSymbol failed",i))}}getFileStats(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{let e=t??this.defaultProject,i=this.fileRepo.getFile(e,n);if(!i)return S(d("search",`Gildash: file '${n}' is not in the index`));let r=this.symbolRepo.getFileSymbols(e,n),s=this.relationRepo.getOutgoing(e,n);return{filePath:i.filePath,lineCount:i.lineCount??0,size:i.size,symbolCount:r.length,exportedSymbolCount:r.filter((u)=>u.isExported).length,relationCount:s.length}}catch(e){return S(d("store","Gildash: getFileStats failed",e))}}async getFanMetrics(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{let e=this.getOrBuildGraph(t);return{filePath:n,fanIn:e.getDependents(n).length,fanOut:e.getDependencies(n).length}}catch(e){return S(d("search","Gildash: getFanMetrics failed",e))}}resolveSymbol(n,t,e){if(this.closed)return S(d("closed","Gildash: instance is closed"));let i=e??this.defaultProject,r=new Set,s=[],u=n,m=t;for(;;){let a=`${m}::${u}`;if(r.has(a))return S(d("search","Gildash: resolveSymbol detected circular re-export chain"));r.add(a);let x=this.relationSearchFn({relationRepo:this.relationRepo,project:i,query:{type:"re-exports",srcFilePath:m,limit:500}}),p,y;for(let w of x){let N;if(w.metaJson)try{let D=JSON.parse(w.metaJson);if(Array.isArray(D.specifiers))N=D.specifiers}catch{}if(!N)continue;let _=N.find((D)=>D.exported===u);if(!_)continue;p=w.dstFilePath,y=_.local;break}if(!p||!y)return{originalName:u,originalFilePath:m,reExportChain:s};s.push({filePath:m,exportedAs:u}),m=p,u=y}}async findPattern(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{let e=t?.project??this.defaultProject,i=t?.filePaths?t.filePaths:this.fileRepo.getAllFiles(e).map((r)=>r.filePath);return await this.patternSearchFn({pattern:n,filePaths:i})}catch(e){return S(d("search","Gildash: findPattern failed",e))}}async indexExternalPackages(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));if(this.role!=="owner")return S(d("closed","Gildash: indexExternalPackages() is not available for readers"));try{let e=[];for(let i of n){let r=Sn.resolve(this.projectRoot,"node_modules",i);if(!this.existsSyncFn(r))return S(d("validation",`Gildash: package not found in node_modules: ${i}`));let s=`@external/${i}`,m=await(this.makeExternalCoordinatorFn?this.makeExternalCoordinatorFn(r,s):new cn({projectRoot:r,boundaries:[{dir:".",project:s}],extensions:[".d.ts"],ignorePatterns:[],dbConnection:this.db,parseCache:this.parseCache,fileRepo:this.fileRepo,symbolRepo:this.symbolRepo,relationRepo:this.relationRepo,logger:this.logger})).fullIndex();e.push(m)}return e}catch(e){return S(d("store","Gildash: indexExternalPackages failed",e))}}async batchParse(n){if(this.closed)return S(d("closed","Gildash: instance is closed"));let t=new Map;return await Promise.all(n.map(async(e)=>{try{let i=await this.readFileFn(e),r=this.parseSourceFn(e,i);if(!en(r))t.set(e,r)}catch{}})),t}getModuleInterface(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{let i=this.symbolSearchFn({symbolRepo:this.symbolRepo,project:t??this.defaultProject,query:{filePath:n,isExported:!0}}).map((r)=>({name:r.name,kind:r.kind,parameters:r.detail.parameters??void 0,returnType:r.detail.returnType??void 0,jsDoc:r.detail.jsDoc??void 0}));return{filePath:n,exports:i}}catch(e){return S(d("search","Gildash: getModuleInterface failed",e))}}async getHeritageChain(n,t,e){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{let i=e??this.defaultProject,r=new Set,s=(u,m,a)=>{let x=`${u}::${m}`;if(r.has(x))return{symbolName:u,filePath:m,kind:a,children:[]};r.add(x);let w=this.relationSearchFn({relationRepo:this.relationRepo,project:i,query:{srcFilePath:m,srcSymbolName:u,limit:1000}}).filter((N)=>N.type==="extends"||N.type==="implements").filter((N)=>N.dstSymbolName!=null).map((N)=>s(N.dstSymbolName,N.dstFilePath,N.type));return{symbolName:u,filePath:m,kind:a,children:w}};return s(n,t)}catch(i){return S(d("search","Gildash: getHeritageChain failed",i))}}getParsedAst(n){if(this.closed)return;return this.parseCache.get(n)}getFileInfo(n,t){if(this.closed)return S(d("closed","Gildash: instance is closed"));try{return this.fileRepo.getFile(t??this.defaultProject,n)}catch(e){return S(d("store","Gildash: getFileInfo failed",e))}}getSymbolsByFile(n,t){return this.searchSymbols({filePath:n,project:t??void 0,limit:1e4})}}export{Bn as symbolSearch,Gn as relationSearch,Wn as patternSearch,d as gildashError,Hn as Gildash,wn as DependencyGraph};
|
|
26
6
|
|
|
27
|
-
//# debugId=
|
|
7
|
+
//# debugId=2A1CE56202A9E9A664756E2164756E21
|
|
28
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"import type { Program } from 'oxc-parser';\nimport type { ImportReference, CodeRelation } from './types';\nimport { getQualifiedName } from '../parser/ast-utils';\n\nexport function extractCalls(\n ast: Program,\n filePath: string,\n importMap: Map<string, ImportReference>,\n): CodeRelation[] {\n const relations: CodeRelation[] = [];\n const functionStack: string[] = [];\n const classStack: string[] = [];\n\n function currentCaller(): string | null {\n if (functionStack.length > 0) return functionStack[functionStack.length - 1] ?? null;\n return null;\n }\n\n function resolveCallee(\n qn: { root: string; parts: string[]; full: string } | null,\n ): { dstFilePath: string; dstSymbolName: string; resolution: string } | null {\n if (!qn) return null;\n\n const ref = importMap.get(qn.root);\n\n if (qn.parts.length === 0) {\n if (ref) {\n return { dstFilePath: ref.path, dstSymbolName: ref.importedName, resolution: 'import' };\n }\n return { dstFilePath: filePath, dstSymbolName: qn.root, resolution: 'local' };\n } else {\n if (ref && ref.importedName === '*') {\n const dstSymbolName = qn.parts[qn.parts.length - 1]!;\n return { dstFilePath: ref.path, dstSymbolName, resolution: 'namespace' };\n }\n return { dstFilePath: filePath, dstSymbolName: qn.full, resolution: 'local-member' };\n }\n }\n\n function walk(node: unknown): void {\n if (!node || typeof node !== 'object') return;\n\n if (Array.isArray(node)) {\n for (const item of node) walk(item);\n return;\n }\n\n const record = node as Record<string, unknown>;\n const type: string = typeof record.type === 'string' ? record.type : '';\n\n if (type === 'ClassDeclaration' || type === 'ClassExpression') {\n const classNode = record as { id?: { name?: string }; body?: unknown };\n const className: string = classNode.id?.name ?? 'AnonymousClass';\n classStack.push(className);\n walk(classNode.body);\n classStack.pop();\n return;\n }\n\n if (type === 'FunctionDeclaration') {\n const functionNode = record as { id?: { name?: string }; body?: unknown };\n const name: string = functionNode.id?.name ?? 'anonymous';\n functionStack.push(name);\n walk(functionNode.body);\n functionStack.pop();\n return;\n }\n\n if (type === 'VariableDeclarator' && (record as { init?: { type?: string } }).init && (\n (record as { init?: { type?: string } }).init?.type === 'FunctionExpression' ||\n (record as { init?: { type?: string } }).init?.type === 'ArrowFunctionExpression'\n )) {\n const declarator = record as { id?: { name?: string }; init?: { body?: unknown } };\n const name: string = declarator.id?.name ?? 'anonymous';\n functionStack.push(name);\n walk(declarator.init?.body ?? declarator.init);\n functionStack.pop();\n return;\n }\n\n if (type === 'MethodDefinition' && (record as { value?: unknown }).value) {\n const method = record as { key?: { name?: string }; value?: { body?: unknown } };\n const className = classStack[classStack.length - 1] ?? '';\n const methodName: string = method.key?.name ?? 'anonymous';\n const fullName = className ? `${className}.${methodName}` : methodName;\n functionStack.push(fullName);\n walk(method.value?.body);\n functionStack.pop();\n return;\n }\n\n if (type === 'FunctionExpression' || type === 'ArrowFunctionExpression') {\n const parentCaller = currentCaller();\n const anonymousName = parentCaller ? `${parentCaller}.<anonymous>` : '<anonymous>';\n functionStack.push(anonymousName);\n walk((record as { body?: unknown }).body);\n functionStack.pop();\n return;\n }\n\n if (type === 'CallExpression') {\n const call = record as { callee?: unknown; arguments?: unknown[] };\n const qn = getQualifiedName(call.callee);\n const dst = resolveCallee(qn);\n if (dst) {\n const srcSymbolName = currentCaller();\n const meta: Record<string, unknown> = {};\n if (srcSymbolName === null) meta.scope = 'module';\n\n relations.push({\n type: 'calls',\n srcFilePath: filePath,\n srcSymbolName,\n dstFilePath: dst.dstFilePath,\n dstSymbolName: dst.dstSymbolName,\n ...(Object.keys(meta).length > 0 ? { metaJson: JSON.stringify(meta) } : {}),\n });\n }\n walk(call.callee);\n for (const arg of call.arguments ?? []) walk(arg);\n return;\n }\n\n if (type === 'NewExpression') {\n const ctorCall = record as { callee?: unknown; arguments?: unknown[] };\n const qn = getQualifiedName(ctorCall.callee);\n const dst = resolveCallee(qn);\n if (dst) {\n const srcSymbolName = currentCaller();\n const meta: Record<string, unknown> = { isNew: true };\n if (srcSymbolName === null) meta.scope = 'module';\n\n relations.push({\n type: 'calls',\n srcFilePath: filePath,\n srcSymbolName,\n dstFilePath: dst.dstFilePath,\n dstSymbolName: dst.dstSymbolName,\n metaJson: JSON.stringify(meta),\n });\n }\n for (const arg of ctorCall.arguments ?? []) walk(arg);\n return;\n }\n\n for (const key of Object.keys(record)) {\n if (key === 'loc' || key === 'start' || key === 'end' || key === 'scope') continue;\n const child = record[key];\n if (child && typeof child === 'object') {\n walk(child);\n }\n }\n }\n\n walk(ast);\n return relations;\n}\n",
|
|
17
17
|
"import type { Program } from 'oxc-parser';\nimport type { ImportReference, CodeRelation } from './types';\nimport { visit, getQualifiedName } from '../parser/ast-utils';\n\nexport function extractHeritage(\n ast: Program,\n filePath: string,\n importMap: Map<string, ImportReference>,\n): CodeRelation[] {\n const relations: CodeRelation[] = [];\n\n visit(ast, (node) => {\n if (node.type === 'TSInterfaceDeclaration') {\n const interfaceName: string = ((node.id as { name?: string } | undefined)?.name) ?? 'AnonymousInterface';\n const interfaces = (node.extends as unknown[] | undefined) ?? [];\n for (const item of interfaces) {\n const expr = (item as { expression?: unknown }).expression ?? item;\n const qn = getQualifiedName(expr);\n if (!qn) continue;\n const rel = resolveHeritageDst(qn, filePath, importMap);\n relations.push({\n type: 'extends',\n srcFilePath: filePath,\n srcSymbolName: interfaceName,\n ...rel,\n });\n }\n return;\n }\n\n if (node.type !== 'ClassDeclaration' && node.type !== 'ClassExpression') return;\n\n const className: string =\n ((node.id as { name?: string } | undefined)?.name) ?? 'AnonymousClass';\n\n if (node.superClass) {\n const qn = getQualifiedName(node.superClass);\n if (qn) {\n const rel = resolveHeritageDst(qn, filePath, importMap);\n relations.push({\n type: 'extends',\n srcFilePath: filePath,\n srcSymbolName: className,\n ...rel,\n });\n }\n }\n\n const impls = (node.implements as unknown[] | undefined) ?? [];\n for (const impl of impls) {\n const expr = (impl as { expression?: unknown }).expression ?? impl;\n const qn = getQualifiedName(expr);\n if (!qn) continue;\n const rel = resolveHeritageDst(qn, filePath, importMap);\n relations.push({\n type: 'implements',\n srcFilePath: filePath,\n srcSymbolName: className,\n ...rel,\n });\n }\n });\n\n return relations;\n}\n\nfunction resolveHeritageDst(\n qn: { root: string; parts: string[]; full: string },\n currentFilePath: string,\n importMap: Map<string, ImportReference>,\n): { dstFilePath: string; dstSymbolName: string; metaJson?: string } {\n const ref = importMap.get(qn.root);\n\n if (ref) {\n if (ref.importedName === '*') {\n const dstSymbolName = qn.parts[qn.parts.length - 1] ?? qn.root;\n return {\n dstFilePath: ref.path,\n dstSymbolName,\n metaJson: JSON.stringify({ isNamespaceImport: true }),\n };\n }\n return {\n dstFilePath: ref.path,\n dstSymbolName: qn.parts.length > 0 ? qn.full : ref.importedName,\n };\n }\n\n return {\n dstFilePath: currentFilePath,\n dstSymbolName: qn.full,\n metaJson: JSON.stringify({ isLocal: true }),\n };\n}\n",
|
|
18
18
|
"import type { Program } from 'oxc-parser';\nimport type { TsconfigPaths } from '../common/tsconfig-resolver';\nimport type { CodeRelation } from './types';\nimport { buildImportMap } from './extractor-utils';\nimport { extractImports } from './imports-extractor';\nimport { extractCalls } from './calls-extractor';\nimport { extractHeritage } from './heritage-extractor';\n\nexport function extractRelations(\n ast: Program,\n filePath: string,\n tsconfigPaths?: TsconfigPaths,\n): CodeRelation[] {\n const importMap = buildImportMap(ast, filePath, tsconfigPaths);\n\n const imports = extractImports(ast, filePath, tsconfigPaths);\n const calls = extractCalls(ast, filePath, importMap);\n const heritage = extractHeritage(ast, filePath, importMap);\n\n return [...imports, ...calls, ...heritage];\n}\n",
|
|
19
|
-
"import { err, isErr, type Result } from '@zipbul/result';\nimport { Database } from 'bun:sqlite';\nimport { mkdirSync, unlinkSync, existsSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { drizzle, type BunSQLiteDatabase } from 'drizzle-orm/bun-sqlite';\nimport { migrate } from 'drizzle-orm/bun-sqlite/migrator';\nimport { gildashError, type GildashError } from '../errors';\nimport * as schema from './schema';\
|
|
20
|
-
"import { sql } from 'drizzle-orm';\nimport {\n sqliteTable,\n text,\n integer,\n real,\n index,\n primaryKey,\n foreignKey,\n check,\n} from 'drizzle-orm/sqlite-core';\n\nexport const files = sqliteTable(\n 'files',\n {\n project: text('project').notNull(),\n filePath: text('file_path').notNull(),\n mtimeMs: real('mtime_ms').notNull(),\n size: integer('size').notNull(),\n contentHash: text('content_hash').notNull(),\n updatedAt: text('updated_at').notNull(),\n lineCount: integer('line_count'),\n },\n (table) => [primaryKey({ columns: [table.project, table.filePath] })],\n);\n\nexport const symbols = sqliteTable(\n 'symbols',\n {\n id: integer('id').primaryKey({ autoIncrement: true }),\n project: text('project').notNull(),\n filePath: text('file_path').notNull(),\n kind: text('kind').notNull(),\n name: text('name').notNull(),\n startLine: integer('start_line').notNull(),\n startColumn: integer('start_column').notNull(),\n endLine: integer('end_line').notNull(),\n endColumn: integer('end_column').notNull(),\n isExported: integer('is_exported').notNull().default(0),\n signature: text('signature'),\n fingerprint: text('fingerprint'),\n detailJson: text('detail_json'),\n contentHash: text('content_hash').notNull(),\n indexedAt: text('indexed_at').notNull(),\n },\n (table) => [\n index('idx_symbols_project_file').on(table.project, table.filePath),\n index('idx_symbols_project_kind').on(table.project, table.kind),\n index('idx_symbols_project_name').on(table.project, table.name),\n index('idx_symbols_fingerprint').on(table.project, table.fingerprint),\n foreignKey({\n columns: [table.project, table.filePath],\n foreignColumns: [files.project, files.filePath],\n }).onDelete('cascade'),\n ],\n);\n\nexport const relations = sqliteTable(\n 'relations',\n {\n id: integer('id').primaryKey({ autoIncrement: true }),\n project: text('project').notNull(),\n type: text('type').notNull(),\n srcFilePath: text('src_file_path').notNull(),\n srcSymbolName: text('src_symbol_name'),\n dstFilePath: text('dst_file_path').notNull(),\n dstSymbolName: text('dst_symbol_name'),\n metaJson: text('meta_json'),\n },\n (table) => [\n index('idx_relations_src').on(table.project, table.srcFilePath),\n index('idx_relations_dst').on(table.project, table.dstFilePath),\n index('idx_relations_type').on(table.project, table.type),\n foreignKey({\n columns: [table.project, table.srcFilePath],\n foreignColumns: [files.project, files.filePath],\n }).onDelete('cascade'),\n foreignKey({\n columns: [table.project, table.dstFilePath],\n foreignColumns: [files.project, files.filePath],\n }).onDelete('cascade'),\n ],\n);\n\nexport const watcherOwner = sqliteTable(\n 'watcher_owner',\n {\n id: integer('id').primaryKey(),\n pid: integer('pid').notNull(),\n startedAt: text('started_at').notNull(),\n heartbeatAt: text('heartbeat_at').notNull(),\n },\n (table) => [check('watcher_owner_singleton', sql`${table.id} = 1`)],\n);\n\
|
|
19
|
+
"import { err, isErr, type Result } from '@zipbul/result';\nimport { Database } from 'bun:sqlite';\nimport { mkdirSync, unlinkSync, existsSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { drizzle, type BunSQLiteDatabase } from 'drizzle-orm/bun-sqlite';\nimport { migrate } from 'drizzle-orm/bun-sqlite/migrator';\nimport { gildashError, type GildashError } from '../errors';\nimport * as schema from './schema';\n\n\nexport interface DbConnectionOptions {\n projectRoot: string;\n}\n\nexport class DbConnection {\n private client: Database | null = null;\n private drizzle: BunSQLiteDatabase<typeof schema> | null = null;\n private readonly dbPath: string;\n private txDepth = 0;\n\n constructor(opts: DbConnectionOptions) {\n this.dbPath = join(opts.projectRoot, '.zipbul', 'gildash.db');\n }\n\n get drizzleDb(): BunSQLiteDatabase<typeof schema> {\n if (!this.drizzle) throw new Error('Database is not open. Call open() first.');\n return this.drizzle;\n }\n\n open(): Result<void, GildashError> {\n try {\n mkdirSync(dirname(this.dbPath), { recursive: true });\n this.client = new Database(this.dbPath);\n\n this.client.run('PRAGMA journal_mode = WAL');\n this.client.run('PRAGMA foreign_keys = ON');\n this.client.run('PRAGMA busy_timeout = 5000');\n\n this.drizzle = drizzle(this.client, { schema });\n\n migrate(this.drizzle, {\n migrationsFolder: join(import.meta.dirname, 'migrations'),\n });\n\n // bun:sqlite Database.function() is not available in all Bun versions.\n // Regex filtering falls back to JS-layer post-processing when this is absent.\n const clientAny = this.client as unknown as Record<string, unknown>;\n if (typeof clientAny['function'] === 'function') {\n (clientAny['function'] as Function).call(\n this.client,\n 'regexp',\n (pattern: string, value: string): number => {\n try {\n return new RegExp(pattern).test(value) ? 1 : 0;\n } catch {\n return 0;\n }\n },\n );\n }\n } catch (e) {\n if (this.isCorruptionError(e) && existsSync(this.dbPath)) {\n this.closeClient();\n unlinkSync(this.dbPath);\n for (const ext of ['-wal', '-shm']) {\n const p = this.dbPath + ext;\n if (existsSync(p)) unlinkSync(p);\n }\n const retryResult = this.open();\n if (isErr(retryResult)) {\n return err(gildashError('store', `Failed to recover database at ${this.dbPath}`, retryResult.data));\n }\n return retryResult;\n }\n return err(gildashError('store', `Failed to open database at ${this.dbPath}`, e));\n }\n }\n\n close(): void {\n this.closeClient();\n this.drizzle = null;\n }\n\n transaction<T>(fn: (tx: DbConnection) => T): T {\n const db = this.requireClient();\n\n if (this.txDepth === 0) {\n this.txDepth++;\n try {\n return db.transaction(() => fn(this))();\n } finally {\n this.txDepth--;\n }\n }\n\n const sp = `sp_${this.txDepth++}`;\n db.run(`SAVEPOINT \"${sp}\"`);\n try {\n const result = fn(this);\n db.run(`RELEASE SAVEPOINT \"${sp}\"`);\n return result;\n } catch (err) {\n db.run(`ROLLBACK TO SAVEPOINT \"${sp}\"`);\n db.run(`RELEASE SAVEPOINT \"${sp}\"`);\n throw err;\n } finally {\n this.txDepth--;\n }\n }\n\n immediateTransaction<T>(fn: () => T): T {\n const db = this.requireClient();\n this.txDepth++;\n db.run('BEGIN IMMEDIATE');\n try {\n const result = fn();\n db.run('COMMIT');\n return result;\n } catch (err) {\n db.run('ROLLBACK');\n throw err;\n } finally {\n this.txDepth--;\n }\n }\n\n query(sql: string): unknown {\n const row = this.requireClient().prepare(sql).get() as Record<string, unknown> | null;\n if (!row) return null;\n return Object.values(row)[0];\n }\n\n getTableNames(): string[] {\n const rows = this.requireClient()\n .query(\"SELECT name FROM sqlite_master WHERE type = 'table'\")\n .all() as Array<{ name: string }>;\n return rows.map((r) => r.name);\n }\n\n selectOwner(): { pid: number; heartbeat_at: string } | undefined {\n const row = this.requireClient()\n .prepare('SELECT pid, heartbeat_at FROM watcher_owner WHERE id = 1')\n .get() as { pid: number; heartbeat_at: string } | null;\n return row ?? undefined;\n }\n\n insertOwner(pid: number): void {\n const now = new Date().toISOString();\n this.requireClient()\n .prepare('INSERT INTO watcher_owner (id, pid, started_at, heartbeat_at) VALUES (1, ?, ?, ?)')\n .run(pid, now, now);\n }\n\n replaceOwner(pid: number): void {\n const now = new Date().toISOString();\n this.requireClient()\n .prepare('INSERT OR REPLACE INTO watcher_owner (id, pid, started_at, heartbeat_at) VALUES (1, ?, ?, ?)')\n .run(pid, now, now);\n }\n\n touchOwner(pid: number): void {\n const now = new Date().toISOString();\n this.requireClient()\n .prepare('UPDATE watcher_owner SET heartbeat_at = ? WHERE id = 1 AND pid = ?')\n .run(now, pid);\n }\n\n deleteOwner(pid: number): void {\n this.requireClient()\n .prepare('DELETE FROM watcher_owner WHERE id = 1 AND pid = ?')\n .run(pid);\n }\n\n private requireClient(): Database {\n if (!this.client) throw new Error('Database is not open. Call open() first.');\n return this.client;\n }\n\n private closeClient(): void {\n if (this.client) {\n this.client.close();\n this.client = null;\n }\n }\n\n private isCorruptionError(err: unknown): boolean {\n if (!(err instanceof Error)) return false;\n const msg = err.message.toLowerCase();\n return (\n msg.includes('malformed') ||\n msg.includes('corrupt') ||\n msg.includes('not a database') ||\n msg.includes('disk i/o error') ||\n msg.includes('sqlite_corrupt')\n );\n }\n}\n",
|
|
20
|
+
"import { sql } from 'drizzle-orm';\nimport {\n sqliteTable,\n text,\n integer,\n real,\n index,\n primaryKey,\n foreignKey,\n check,\n} from 'drizzle-orm/sqlite-core';\n\nexport const files = sqliteTable(\n 'files',\n {\n project: text('project').notNull(),\n filePath: text('file_path').notNull(),\n mtimeMs: real('mtime_ms').notNull(),\n size: integer('size').notNull(),\n contentHash: text('content_hash').notNull(),\n updatedAt: text('updated_at').notNull(),\n lineCount: integer('line_count'),\n },\n (table) => [primaryKey({ columns: [table.project, table.filePath] })],\n);\n\nexport const symbols = sqliteTable(\n 'symbols',\n {\n id: integer('id').primaryKey({ autoIncrement: true }),\n project: text('project').notNull(),\n filePath: text('file_path').notNull(),\n kind: text('kind').notNull(),\n name: text('name').notNull(),\n startLine: integer('start_line').notNull(),\n startColumn: integer('start_column').notNull(),\n endLine: integer('end_line').notNull(),\n endColumn: integer('end_column').notNull(),\n isExported: integer('is_exported').notNull().default(0),\n signature: text('signature'),\n fingerprint: text('fingerprint'),\n detailJson: text('detail_json'),\n contentHash: text('content_hash').notNull(),\n indexedAt: text('indexed_at').notNull(),\n },\n (table) => [\n index('idx_symbols_project_file').on(table.project, table.filePath),\n index('idx_symbols_project_kind').on(table.project, table.kind),\n index('idx_symbols_project_name').on(table.project, table.name),\n index('idx_symbols_fingerprint').on(table.project, table.fingerprint),\n foreignKey({\n columns: [table.project, table.filePath],\n foreignColumns: [files.project, files.filePath],\n }).onDelete('cascade'),\n ],\n);\n\nexport const relations = sqliteTable(\n 'relations',\n {\n id: integer('id').primaryKey({ autoIncrement: true }),\n project: text('project').notNull(),\n type: text('type').notNull(),\n srcFilePath: text('src_file_path').notNull(),\n srcSymbolName: text('src_symbol_name'),\n dstFilePath: text('dst_file_path').notNull(),\n dstSymbolName: text('dst_symbol_name'),\n metaJson: text('meta_json'),\n },\n (table) => [\n index('idx_relations_src').on(table.project, table.srcFilePath),\n index('idx_relations_dst').on(table.project, table.dstFilePath),\n index('idx_relations_type').on(table.project, table.type),\n foreignKey({\n columns: [table.project, table.srcFilePath],\n foreignColumns: [files.project, files.filePath],\n }).onDelete('cascade'),\n foreignKey({\n columns: [table.project, table.dstFilePath],\n foreignColumns: [files.project, files.filePath],\n }).onDelete('cascade'),\n ],\n);\n\nexport const watcherOwner = sqliteTable(\n 'watcher_owner',\n {\n id: integer('id').primaryKey(),\n pid: integer('pid').notNull(),\n startedAt: text('started_at').notNull(),\n heartbeatAt: text('heartbeat_at').notNull(),\n },\n (table) => [check('watcher_owner_singleton', sql`${table.id} = 1`)],\n);\n\n\n",
|
|
21
21
|
"import { eq, and } from 'drizzle-orm';\nimport { files } from '../schema';\nimport type { DbConnection } from '../connection';\n\n/**\n * Metadata record for an indexed source file.\n *\n * Stored and retrieved by {@link FileRepository}.\n * Exposed via {@link Gildash.getFileInfo}.\n */\nexport interface FileRecord {\n /** Project name this file belongs to. */\n project: string;\n /** File path relative to the project root. */\n filePath: string;\n /** Last-modified timestamp in milliseconds since epoch. */\n mtimeMs: number;\n /** File size in bytes at the time of indexing. */\n size: number;\n /** SHA-256 content hash of the file at the time of indexing. */\n contentHash: string;\n /** ISO 8601 timestamp of the last index update. */\n updatedAt: string;\n /** Number of lines in the file at the time of indexing. */\n lineCount?: number | null;\n}\n\nexport class FileRepository {\n constructor(private readonly db: DbConnection) {}\n\n getFile(project: string, filePath: string): FileRecord | null {\n return this.db.drizzleDb\n .select()\n .from(files)\n .where(and(eq(files.project, project), eq(files.filePath, filePath)))\n .get() ?? null;\n }\n\n upsertFile(record: FileRecord): void {\n this.db.drizzleDb\n .insert(files)\n .values({\n project: record.project,\n filePath: record.filePath,\n mtimeMs: record.mtimeMs,\n size: record.size,\n contentHash: record.contentHash,\n updatedAt: record.updatedAt,\n lineCount: record.lineCount ?? null,\n })\n .onConflictDoUpdate({\n target: [files.project, files.filePath],\n set: {\n mtimeMs: record.mtimeMs,\n size: record.size,\n contentHash: record.contentHash,\n updatedAt: record.updatedAt,\n lineCount: record.lineCount ?? null,\n },\n })\n .run();\n }\n\n getAllFiles(project: string): FileRecord[] {\n return this.db.drizzleDb\n .select()\n .from(files)\n .where(eq(files.project, project))\n .all();\n }\n\n getFilesMap(project: string): Map<string, FileRecord> {\n const rows = this.getAllFiles(project);\n const map = new Map<string, FileRecord>();\n for (const r of rows) map.set(r.filePath, r);\n return map;\n }\n\n deleteFile(project: string, filePath: string): void {\n this.db.drizzleDb\n .delete(files)\n .where(and(eq(files.project, project), eq(files.filePath, filePath)))\n .run();\n }\n}\n",
|
|
22
22
|
"import { eq, and, sql, count } from 'drizzle-orm';\nimport { symbols } from '../schema';\nimport type { DbConnection } from '../connection';\nimport { toFtsPrefixQuery } from './fts-utils';\n\nexport interface SymbolRecord {\n project: string;\n filePath: string;\n kind: string;\n name: string;\n startLine: number;\n startColumn: number;\n endLine: number;\n endColumn: number;\n isExported: number;\n signature: string | null;\n fingerprint: string | null;\n detailJson: string | null;\n contentHash: string;\n indexedAt: string;\n}\n\nexport interface SearchOptions {\n kind?: string;\n limit?: number;\n}\n\n/**\n * Aggregate symbol statistics for a project.\n *\n * Returned by {@link Gildash.getStats}.\n */\nexport interface SymbolStats {\n /** Total number of indexed symbols. */\n symbolCount: number;\n /** Total number of indexed source files. */\n fileCount: number;\n}\n\nexport class SymbolRepository {\n constructor(private readonly db: DbConnection) {}\n\n replaceFileSymbols(\n project: string,\n filePath: string,\n contentHash: string,\n syms: ReadonlyArray<Partial<SymbolRecord>>,\n ): void {\n this.db.drizzleDb\n .delete(symbols)\n .where(and(eq(symbols.project, project), eq(symbols.filePath, filePath)))\n .run();\n\n if (!syms.length) return;\n\n const now = new Date().toISOString();\n for (const sym of syms) {\n this.db.drizzleDb.insert(symbols).values({\n project,\n filePath,\n kind: sym.kind ?? 'unknown',\n name: sym.name ?? '',\n startLine: sym.startLine ?? 0,\n startColumn: sym.startColumn ?? 0,\n endLine: sym.endLine ?? 0,\n endColumn: sym.endColumn ?? 0,\n isExported: sym.isExported ?? 0,\n signature: sym.signature ?? null,\n fingerprint: sym.fingerprint ?? null,\n detailJson: sym.detailJson ?? null,\n contentHash,\n indexedAt: sym.indexedAt ?? now,\n }).run();\n }\n }\n\n getFileSymbols(project: string, filePath: string): SymbolRecord[] {\n return this.db.drizzleDb\n .select()\n .from(symbols)\n .where(and(eq(symbols.project, project), eq(symbols.filePath, filePath)))\n .all();\n }\n\n searchByName(project: string, query: string, opts: SearchOptions = {}): SymbolRecord[] {\n const limit = opts.limit ?? 50;\n const ftsQuery = toFtsPrefixQuery(query);\n\n if (!ftsQuery) return [];\n\n let builder = this.db.drizzleDb\n .select()\n .from(symbols)\n .where(\n and(\n sql`${symbols.id} IN (SELECT rowid FROM symbols_fts WHERE symbols_fts MATCH ${ftsQuery})`,\n eq(symbols.project, project),\n opts.kind ? eq(symbols.kind, opts.kind) : undefined,\n ),\n )\n .orderBy(symbols.name)\n .limit(limit);\n\n return builder.all();\n }\n\n searchByKind(project: string, kind: string): SymbolRecord[] {\n return this.db.drizzleDb\n .select()\n .from(symbols)\n .where(and(eq(symbols.project, project), eq(symbols.kind, kind)))\n .orderBy(symbols.name)\n .all();\n }\n\n getStats(project: string): SymbolStats {\n const row = this.db.drizzleDb\n .select({\n symbolCount: count(),\n fileCount: sql<number>`COUNT(DISTINCT ${symbols.filePath})`,\n })\n .from(symbols)\n .where(eq(symbols.project, project))\n .get();\n return {\n symbolCount: row?.symbolCount ?? 0,\n fileCount: row?.fileCount ?? 0,\n };\n }\n\n getByFingerprint(project: string, fingerprint: string): SymbolRecord[] {\n return this.db.drizzleDb\n .select()\n .from(symbols)\n .where(and(eq(symbols.project, project), eq(symbols.fingerprint, fingerprint)))\n .all();\n }\n\n deleteFileSymbols(project: string, filePath: string): void {\n this.db.drizzleDb\n .delete(symbols)\n .where(and(eq(symbols.project, project), eq(symbols.filePath, filePath)))\n .run();\n }\n\n searchByQuery(opts: {\n ftsQuery?: string;\n exactName?: string;\n kind?: string;\n filePath?: string;\n isExported?: boolean;\n project?: string;\n limit: number;\n decorator?: string;\n regex?: string;\n }): (SymbolRecord & { id: number })[] {\n const results = this.db.drizzleDb\n .select()\n .from(symbols)\n .where(\n and(\n opts.ftsQuery\n ? sql`${symbols.id} IN (SELECT rowid FROM symbols_fts WHERE symbols_fts MATCH ${opts.ftsQuery})`\n : undefined,\n opts.exactName ? eq(symbols.name, opts.exactName) : undefined,\n opts.project !== undefined ? eq(symbols.project, opts.project) : undefined,\n opts.kind ? eq(symbols.kind, opts.kind) : undefined,\n opts.filePath !== undefined ? eq(symbols.filePath, opts.filePath) : undefined,\n opts.isExported !== undefined\n ? eq(symbols.isExported, opts.isExported ? 1 : 0)\n : undefined,\n opts.decorator\n ? sql`${symbols.id} IN (SELECT s.id FROM symbols s, json_each(s.detail_json, '$.decorators') je WHERE json_extract(je.value, '$.name') = ${opts.decorator})`\n : undefined,\n // NOTE: regex is applied as a JS-layer post-filter below; no SQL condition here.\n ),\n )\n .orderBy(symbols.name)\n // Fetch a larger pool when regex filtering is needed, since JS filtering reduces the result set.\n .limit(opts.regex ? Math.max(opts.limit * 50, 5000) : opts.limit)\n .all() as (SymbolRecord & { id: number })[];\n\n if (!opts.regex) return results;\n\n // JS-layer regex post-filter (SQL REGEXP UDF not available in all Bun versions)\n try {\n const pattern = new RegExp(opts.regex);\n return results.filter(r => pattern.test(r.name)).slice(0, opts.limit) as (SymbolRecord & { id: number })[];\n } catch {\n return [];\n }\n }\n}\n",
|
|
23
23
|
"export function toFtsPrefixQuery(text: string): string {\n return text\n .trim()\n .split(/\\s+/)\n .map((token) => token.trim())\n .filter((token) => token.length > 0)\n .map((token) => `\"${token.replaceAll('\"', '\"\"')}\"*`)\n .join(' ');\n}\n",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"import type { RelationRecord } from '../store/repositories/relation.repository';\n\nexport interface IDependencyGraphRepo {\n getByType(project: string, type: string): RelationRecord[];\n}\n\n/**\n * Directed import graph for dependency analysis.\n *\n * Build the graph once with {@link DependencyGraph.build}, then query\n * dependencies, dependents, cycles, and change-impact.\n *\n * @example\n * ```ts\n * const graph = new DependencyGraph({ relationRepo, project: 'my-app' });\n * graph.build();\n * graph.getDependencies('/src/a.ts'); // files that a.ts imports\n * graph.getDependents('/src/a.ts'); // files that import a.ts\n * graph.hasCycle(); // true if a circular import exists\n * ```\n */\nexport class DependencyGraph {\n private adjacencyList = new Map<string, Set<string>>();\n private reverseAdjacencyList = new Map<string, Set<string>>();\n\n constructor(\n private readonly options: {\n relationRepo: IDependencyGraphRepo;\n project: string;\n },\n ) {}\n\n /**\n * Populate the graph by reading all `imports` relations from the store.\n *\n * Must be called before any query method.\n */\n build(): void {\n this.adjacencyList = new Map();\n this.reverseAdjacencyList = new Map();\n\n const relations = [\n ...this.options.relationRepo.getByType(this.options.project, 'imports'),\n ...this.options.relationRepo.getByType(this.options.project, 'type-references'),\n ...this.options.relationRepo.getByType(this.options.project, 're-exports'),\n ];\n\n for (const rel of relations) {\n const { srcFilePath, dstFilePath } = rel;\n\n if (!this.adjacencyList.has(srcFilePath)) {\n this.adjacencyList.set(srcFilePath, new Set());\n }\n this.adjacencyList.get(srcFilePath)!.add(dstFilePath);\n\n // ensure destination node also appears as a key (with no outgoing edges)\n if (!this.adjacencyList.has(dstFilePath)) {\n this.adjacencyList.set(dstFilePath, new Set());\n }\n\n if (!this.reverseAdjacencyList.has(dstFilePath)) {\n this.reverseAdjacencyList.set(dstFilePath, new Set());\n }\n this.reverseAdjacencyList.get(dstFilePath)!.add(srcFilePath);\n }\n }\n\n /**\n * Return the files that `filePath` directly imports.\n *\n * @param filePath - Absolute file path.\n */\n getDependencies(filePath: string): string[] {\n return Array.from(this.adjacencyList.get(filePath) ?? []);\n }\n\n /**\n * Return the files that directly import `filePath`.\n *\n * @param filePath - Absolute file path.\n */\n getDependents(filePath: string): string[] {\n return Array.from(this.reverseAdjacencyList.get(filePath) ?? []);\n }\n\n /**\n * Return all files that transitively depend on `filePath`\n * (breadth-first reverse walk).\n *\n * @param filePath - Absolute file path.\n */\n getTransitiveDependents(filePath: string): string[] {\n const visited = new Set<string>();\n const queue: string[] = [filePath];\n\n while (queue.length > 0) {\n const current = queue.shift()!;\n for (const dependent of this.reverseAdjacencyList.get(current) ?? []) {\n if (!visited.has(dependent)) {\n visited.add(dependent);\n queue.push(dependent);\n }\n }\n }\n\n return Array.from(visited);\n }\n\n /**\n * Detect whether the import graph contains at least one cycle.\n *\n * Uses iterative DFS with a path-tracking set.\n *\n * @returns `true` if a circular dependency exists.\n */\n hasCycle(): boolean {\n const visited = new Set<string>();\n const inPath = new Set<string>();\n\n for (const startNode of this.adjacencyList.keys()) {\n if (visited.has(startNode)) continue;\n\n const stack: Array<{ node: string; entered: boolean }> = [{ node: startNode, entered: false }];\n\n while (stack.length > 0) {\n const current = stack.pop()!;\n\n if (current.entered) {\n inPath.delete(current.node);\n continue;\n }\n\n if (inPath.has(current.node)) {\n return true;\n }\n\n if (visited.has(current.node)) {\n continue;\n }\n\n visited.add(current.node);\n inPath.add(current.node);\n stack.push({ node: current.node, entered: true });\n\n for (const neighbor of this.adjacencyList.get(current.node) ?? []) {\n if (inPath.has(neighbor)) {\n return true;\n }\n if (!visited.has(neighbor)) {\n stack.push({ node: neighbor, entered: false });\n }\n }\n }\n }\n\n return false;\n }\n\n /**\n * Compute all files transitively affected by a set of changed files.\n *\n * Combines {@link getTransitiveDependents} for every changed file\n * and de-duplicates the result.\n *\n * @param changedFiles - Absolute paths of files that changed.\n * @returns Paths of all transitively-dependent files.\n */\n getAffectedByChange(changedFiles: string[]): string[] {\n const allAffected = new Set<string>();\n\n for (const file of changedFiles) {\n for (const dep of this.getTransitiveDependents(file)) {\n allAffected.add(dep);\n }\n }\n\n return Array.from(allAffected);\n }\n\n /**\n * Return the full import graph as an adjacency list.\n *\n * Each key is a file path (both source and destination files are included as keys).\n * The associated value lists the files it directly imports.\n *\n * @returns A new `Map<filePath, importedFilePaths[]>`.\n */\n getAdjacencyList(): Map<string, string[]> {\n const result = new Map<string, string[]>();\n for (const [node, edges] of this.adjacencyList) {\n result.set(node, Array.from(edges));\n }\n return result;\n }\n\n /**\n * Return all files that `filePath` transitively imports\n * (breadth-first forward walk).\n *\n * @param filePath - Absolute file path.\n * @returns Paths of all transitively-imported files. Does not include `filePath` itself\n * unless a cycle exists.\n */\n getTransitiveDependencies(filePath: string): string[] {\n const visited = new Set<string>();\n const queue: string[] = [filePath];\n\n while (queue.length > 0) {\n const current = queue.shift()!;\n for (const dep of this.adjacencyList.get(current) ?? []) {\n if (!visited.has(dep)) {\n visited.add(dep);\n queue.push(dep);\n }\n }\n }\n\n return Array.from(visited);\n }\n\n /**\n * Return the distinct cycle paths in the import graph.\n *\n * Each cycle is represented as a list of file paths in canonical form\n * (rotated so the lexicographically smallest node comes first).\n * Duplicate cycles are deduplicated.\n *\n * @returns An array of cycles, where each cycle is a `string[]` of file paths.\n */\n getCyclePaths(): string[][] {\n const seenCycles = new Set<string>();\n const cycles: string[][] = [];\n const globalVisited = new Set<string>();\n const inPath = new Map<string, number>();\n const path: string[] = [];\n\n const dfs = (node: string): void => {\n if (globalVisited.has(node)) return;\n if (inPath.has(node)) {\n const cycleStart = inPath.get(node)!;\n const cycle = path.slice(cycleStart);\n const minNode = cycle.reduce((a, b) => (a <= b ? a : b));\n const idx = cycle.indexOf(minNode);\n const canonical = [...cycle.slice(idx), ...cycle.slice(0, idx)];\n const key = canonical.join('\\0');\n if (!seenCycles.has(key)) {\n seenCycles.add(key);\n cycles.push(canonical);\n }\n return;\n }\n inPath.set(node, path.length);\n path.push(node);\n for (const neighbor of this.adjacencyList.get(node) ?? []) {\n dfs(neighbor);\n }\n path.pop();\n inPath.delete(node);\n globalVisited.add(node);\n };\n\n for (const startNode of this.adjacencyList.keys()) {\n dfs(startNode);\n }\n\n return cycles;\n }\n}\n",
|
|
38
38
|
"import { findInFiles, Lang } from '@ast-grep/napi';\n\n/**\n * A single structural-pattern match found in a source file.\n */\nexport interface PatternMatch {\n /** Absolute path of the file containing the match. */\n filePath: string;\n /** 1-based start line number of the matched node. */\n startLine: number;\n /** 1-based end line number of the matched node. */\n endLine: number;\n /** Source text of the matched node. */\n matchedText: string;\n}\n\n/**\n * Options for {@link patternSearch}.\n */\nexport interface PatternSearchOptions {\n /** An ast-grep structural pattern string (e.g. `'console.log($$$)'`). */\n pattern: string;\n /** Absolute file paths (or directories) to search within. */\n filePaths: string[];\n}\n\n/**\n * Search for a structural AST pattern across a set of TypeScript/TSX files\n * using ast-grep's `findInFiles` API.\n *\n * @param opts - Pattern and file paths to search.\n * @returns An array of {@link PatternMatch} entries for all matching nodes.\n */\nexport async function patternSearch(opts: PatternSearchOptions): Promise<PatternMatch[]> {\n if (opts.filePaths.length === 0) return [];\n\n const matches: PatternMatch[] = [];\n\n await findInFiles(\n Lang.TypeScript,\n {\n paths: opts.filePaths,\n matcher: { rule: { pattern: opts.pattern } },\n },\n (err, nodes) => {\n if (err) return;\n for (const node of nodes) {\n const r = node.range();\n matches.push({\n filePath: node.getRoot().filename(),\n startLine: r.start.line + 1,\n endLine: r.end.line + 1,\n matchedText: node.text(),\n });\n }\n },\n );\n\n return matches;\n}\n"
|
|
39
39
|
],
|
|
40
|
-
"mappings": "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",
|
|
41
|
-
"debugId": "
|
|
40
|
+
"mappings": ";iIAAA,cAAS,WAAK,wBACd,qBACA,qBAAS,YCFT,cAAS,wBACT,oBAAS,oBC+BF,SAAS,CAAY,CAAC,EAAwB,EAAiB,EAA+B,CACnG,OAAO,IAAU,OACb,CAAE,OAAM,UAAS,OAAM,EACvB,CAAE,OAAM,SAAQ,ED9Bf,SAAS,EAAW,CACzB,EACA,EACA,EAAuC,GACL,CAClC,GAAI,CACF,IAAQ,UAAS,SAAQ,YAAa,EAAY,EAAU,CAAU,EACtE,MAAO,CAAE,WAAU,QAAS,EAAkC,SAAQ,WAAU,YAAW,EAC3F,MAAO,EAAG,CACV,OAAO,GAAI,EAAa,QAAS,yBAAyB,IAAY,CAAC,CAAC,GEdrE,MAAM,EAAe,CAC1B,GACA,GAAO,IAAI,IAEX,WAAW,CAAC,EAAkB,CAC5B,KAAK,GAAY,KAAK,IAAI,EAAG,CAAQ,KAGnC,KAAI,EAAW,CACjB,OAAO,KAAK,GAAK,KAGnB,GAAG,CAAC,EAAiB,CACnB,OAAO,KAAK,GAAK,IAAI,CAAG,EAG1B,GAAG,CAAC,EAAuB,CACzB,GAAI,CAAC,KAAK,GAAK,IAAI,CAAG,EACpB,OAEF,IAAM,EAAQ,KAAK,GAAK,IAAI,CAAG,EAG/B,OAFA,KAAK,GAAK,OAAO,CAAG,EACpB,KAAK,GAAK,IAAI,EAAK,CAAK,EACjB,EAGT,GAAG,CAAC,EAAQ,EAAgB,CAC1B,GAAI,KAAK,GAAK,IAAI,CAAG,EACnB,KAAK,GAAK,OAAO,CAAG,EAKtB,GAFA,KAAK,GAAK,IAAI,EAAK,CAAK,EAEpB,KAAK,GAAK,KAAO,KAAK,GAAW,CACnC,IAAM,EAAY,KAAK,GAAK,KAAK,EAAE,KAAK,EAAE,MAC1C,GAAI,IAAc,OAChB,KAAK,GAAK,OAAO,CAAS,GAKhC,MAAM,CAAC,EAAiB,CACtB,OAAO,KAAK,GAAK,OAAO,CAAG,EAG7B,KAAK,EAAS,CACZ,KAAK,GAAK,MAAM,EAEpB,CC7CO,MAAM,EAAW,CACL,IAEjB,WAAW,CAAC,EAAmB,IAAK,CAClC,KAAK,IAAM,IAAI,GAA6B,CAAQ,EAGtD,GAAG,CAAC,EAA0C,CAC5C,OAAO,KAAK,IAAI,IAAI,CAAQ,EAG9B,GAAG,CAAC,EAAkB,EAA0B,CAC9C,KAAK,IAAI,IAAI,EAAU,CAAM,EAG/B,UAAU,CAAC,EAAwB,CACjC,KAAK,IAAI,OAAO,CAAQ,EAG1B,aAAa,EAAS,CACpB,KAAK,IAAI,MAAM,EAGjB,IAAI,EAAW,CACb,OAAO,KAAK,IAAI,KAEpB,CC3BO,SAAS,EAAgB,CAAC,EAA8B,CAC7D,IAAM,EAAoB,CAAC,CAAC,EAC5B,QAAS,EAAI,EAAG,EAAI,EAAW,OAAQ,IACrC,GAAI,EAAW,KAAO;AAAA,EACpB,EAAQ,KAAK,EAAI,CAAC,EAGtB,OAAO,EAGF,SAAS,EAAa,CAAC,EAAmB,EAAgC,CAC/E,IAAI,EAAK,EACL,EAAK,EAAQ,OAAS,EAC1B,MAAO,EAAK,EAAI,CACd,IAAM,EAAO,EAAK,EAAK,GAAM,EAC7B,GAAI,EAAQ,IAAS,EACnB,EAAK,EAEL,OAAK,EAAM,EAGf,MAAO,CAAE,KAAM,EAAK,EAAG,OAAQ,EAAS,EAAQ,EAAK,ECvBvD,cAAS,wBACT,gBAAS,wBAIF,SAAS,EAAU,CAAC,EAAuD,CAChF,GAAI,CACF,IAAI,EAAW,EAAY,KAAK,EAChC,GAAI,EAAS,WAAW,KAAK,EAAG,EAAW,EAAS,MAAM,CAAC,EAC3D,GAAI,EAAS,SAAS,IAAI,EAAG,EAAW,EAAS,MAAM,EAAG,EAAE,EAG5D,IAAM,EADS,GAAM,OAAO,MAAa,EACpB,IAAM,CAAE,YAAa,GAAI,KAAM,CAAC,CAAE,EAEvD,MAAO,CACL,aAAc,EAAM,aAAe,IAAI,KAAK,EAC5C,MAAO,EAAM,MAAQ,CAAC,GAAG,IAAI,CAAC,KAAO,CACnC,IAAK,EAAE,KAAO,GACd,KAAM,EAAE,MAAQ,GAChB,KAAM,EAAE,MAAQ,GAChB,YAAa,EAAE,aAAe,GAC9B,SAAU,EAAE,UAAY,MACpB,EAAE,UAAY,OAAY,CAAE,QAAS,EAAE,OAAQ,EAAI,CAAC,CAC1D,EAAE,CACJ,EACA,MAAO,EAAG,CACV,OAAO,GAAI,EAAa,QAAS,gCAAiC,CAAC,CAAC,GCdxE,gBAAS,wBA0EF,SAAS,EAAc,CAAC,EAAuC,CACpE,IAAQ,UAAS,aAAY,YAAa,EACpC,EAAc,GAAiB,CAAU,EAE/C,SAAS,CAAI,CAAC,EAAe,EAAyB,CACpD,MAAO,CACL,MAAO,GAAc,EAAa,CAAK,EACvC,IAAK,GAAc,EAAa,CAAG,CACrC,EAGF,SAAS,CAAgB,CAAC,EAAuC,CAC/D,IAAI,EAA8C,KAClD,QAAW,KAAK,EAAU,CACxB,GAAI,EAAE,OAAS,QAAS,SACxB,GAAI,EAAE,IAAM,EAAW,SACvB,GAAI,CAAC,EAAE,MAAM,WAAW,GAAG,EAAG,SAC9B,GAAI,CAAC,GAAQ,EAAE,IAAM,EAAK,IACxB,EAAO,CAAE,MAAO,KAAK,EAAE,UAAW,IAAK,EAAE,GAAI,EAGjD,GAAI,CAAC,EAAM,OAEX,QAAW,KAAQ,EAAQ,KAAM,CAC/B,IAAM,EAAa,EAA4B,OAAS,EACxD,GAAI,IAAc,EAAW,SAC7B,GAAI,EAAY,EAAK,KAAO,EAAY,EACtC,OAIJ,OAAO,EAAK,MAGd,SAAS,CAAQ,CAAC,EAAmE,CACnF,GAAI,CAAC,EAAgB,OACrB,IAAM,EAAQ,EAAe,gBAAkB,EAC/C,OAAO,EAAW,MAAM,EAAM,MAAO,EAAM,GAAG,EAGhD,SAAS,CAAiB,CAAC,EAAoC,CAC7D,GAAI,CAAC,GAAc,EAAW,SAAW,EAAG,MAAO,CAAC,EACpD,OAAO,EAAW,IAAI,CAAC,IAAM,CAC3B,IAAM,EAAO,EAAE,WACf,GAAI,CAAC,EAAM,MAAO,CAAE,KAAM,SAAU,EACpC,GAAI,EAAK,OAAS,iBAAkB,CAClC,IAAM,EAAO,EAAK,QAAQ,MAAQ,EAAK,QAAQ,UAAU,MAAQ,UAC3D,GAAQ,EAAK,WAAa,CAAC,GAAG,IAAI,CAAC,IAAe,EAAW,MAAM,EAAE,MAAO,EAAE,GAAG,CAAC,EACxF,MAAO,CAAE,OAAM,UAAW,EAAK,OAAS,EAAI,EAAO,MAAU,EAE/D,GAAI,EAAK,OAAS,aAAc,MAAO,CAAE,KAAM,EAAK,MAAQ,SAAU,EACtE,MAAO,CAAE,KAAM,EAAW,MAAM,EAAK,MAAO,EAAK,GAAG,CAAE,EACvD,EAGH,SAAS,CAAY,CAAC,EAAwB,CAC5C,IAAM,EAAQ,EAAE,OAAS,sBAAwB,EAAE,UAAY,EAE/D,GAAI,GAAO,OAAS,cAAe,CAEjC,IAAM,EAAO,MADW,EAAM,UAAU,MAAQ,YAE1C,EAAU,EAAM,eAChB,EAAO,EAAU,EAAS,CAAO,EAAI,OACrC,EAAmB,CAAE,OAAM,WAAY,EAAM,EACnD,GAAI,EAAM,EAAM,KAAO,EACvB,OAAO,EAGT,GAAI,GAAO,OAAS,oBAAqB,CACvC,IAAmB,KAAb,EACc,MAAd,GAAQ,EACR,EAAe,GAAM,MAAQ,UAC7B,EAAU,GAAM,eAChB,EAAO,EAAU,EAAS,CAAO,EAAI,OACrC,EAAuB,EAAW,MAAM,EAAO,MAAO,EAAO,GAAG,EAChE,GAAQ,EAAkB,GAAM,YAAc,CAAC,CAAC,EAChD,EAAmB,CAAE,OAAM,WAAY,GAAM,cAAa,EAChE,GAAI,EAAM,EAAM,KAAO,EACvB,GAAI,GAAM,OAAS,EAAG,EAAM,WAAa,GACzC,OAAO,EAGT,IAAM,EAAe,GAAO,MAAQ,GAAO,SAAS,MAAQ,UACtD,EAAoB,CAAC,CAAE,GAAO,SAC9B,EAAU,GAAO,eACjB,EAAO,EAAU,EAAS,CAAO,EAAI,OACrC,EAAQ,EAAkB,GAAO,YAAc,CAAC,CAAC,EACjD,EAAmB,CAAE,OAAM,WAAY,CAAS,EACtD,GAAI,EAAM,EAAM,KAAO,EACvB,GAAI,EAAM,OAAS,EAAG,EAAM,WAAa,EACzC,OAAO,EAGT,SAAS,CAAgB,CAAC,EAAkB,EAA6B,CACvE,IAAM,EAAmB,CAAC,EAC1B,GAAI,GAAI,MAAO,EAAK,KAAK,OAAO,EAChC,GAAI,EAAK,OAAQ,EAAK,KAAK,QAAQ,EACnC,GAAI,EAAK,SAAU,EAAK,KAAK,UAAU,EACvC,GAAI,EAAK,SAAU,EAAK,KAAK,UAAU,EACvC,GAAI,EAAK,SAAU,EAAK,KAAK,UAAU,EACvC,GAAI,EAAK,QAAS,EAAK,KAAK,SAAS,EACrC,GAAI,EAAK,MAAO,EAAK,KAAK,OAAO,EACjC,IAAM,EAAM,EAAK,cACjB,GAAI,IAAQ,UAAW,EAAK,KAAK,SAAS,EACrC,QAAI,IAAQ,YAAa,EAAK,KAAK,WAAW,EAC9C,QAAI,IAAQ,SAAU,EAAK,KAAK,QAAQ,EAC7C,OAAO,EAGT,SAAS,CAAa,CAAC,EAA2B,CAChD,IAAM,EAAuB,CAAC,EAC9B,GAAI,EAAK,WAAY,CACnB,IAAM,EAAO,EAAW,MAAM,EAAK,WAAW,MAAO,EAAK,WAAW,GAAG,EACxE,EAAS,KAAK,CAAE,KAAM,UAAW,MAAK,CAAC,EAEzC,IAAM,EAAQ,EAAK,YAAc,CAAC,EAClC,QAAW,KAAQ,EAAO,CACxB,IAAM,EAAO,EAAK,YAAc,EAC1B,EAAO,EAAW,MAAM,EAAK,MAAO,EAAK,GAAG,EAClD,EAAS,KAAK,CAAE,KAAM,aAAc,MAAK,CAAC,EAE5C,OAAO,EAGT,SAAS,CAAiB,CAAC,EAA2B,CACpD,IAAM,EAAuB,CAAC,EAC9B,QAAW,KAAQ,EAAK,SAAW,CAAC,EAAI,CACtC,IAAM,EAAO,EAAI,YAAc,EACzB,EAAO,EAAW,MAAM,EAAK,MAAO,EAAK,GAAG,EAClD,EAAS,KAAK,CAAE,KAAM,UAAW,MAAK,CAAC,EAEzC,OAAO,EAGT,SAAS,CAAmB,CAAC,EAA2C,CACtE,IAAM,EAA6B,CAAC,EACpC,QAAW,KAAK,EACd,GAAI,EAAE,OAAS,mBAAoB,CACjC,IAAM,EAAe,EAAE,KAAK,MAAQ,UAC9B,EAAU,EAAE,MACZ,EAAkB,EAAE,MAAQ,SAC5B,EACJ,IAAY,cACR,cACA,IAAY,MACV,SACA,IAAY,MACV,SACA,SACJ,EAAO,EAAiB,EAAG,CAAO,EAClC,GAAU,GAAS,QAAU,CAAC,GAAG,IAAI,CAAY,EACjD,EAAa,EAAS,GAAS,UAAU,EACzC,EAAqB,CACzB,KAAM,SACN,OACA,KAAM,EAAK,EAAE,MAAO,EAAE,GAAG,EACzB,WAAY,GACZ,aACA,UAAW,EACX,WAAY,EAAO,OAAS,EAAI,EAAS,OACzC,YACF,EACA,EAAQ,KAAK,CAAC,EACT,QAAI,EAAE,OAAS,qBAAsB,CAC1C,IAAM,EAAe,EAAE,KAAK,MAAQ,UAC9B,EAAO,EAAiB,CAAC,EACzB,EAAqB,CACzB,KAAM,WACN,OACA,KAAM,EAAK,EAAE,MAAO,EAAE,GAAG,EACzB,WAAY,GACZ,UAAW,CACb,EACA,EAAQ,KAAK,CAAC,EAGlB,OAAO,EAGT,SAAS,CAAuB,CAAC,EAA2C,CAC1E,IAAM,EAA6B,CAAC,EACpC,QAAW,KAAK,EACd,GAAI,EAAE,OAAS,oBAAqB,CAClC,IAAM,EAAe,EAAE,KAAK,MAAQ,UAC9B,GAAU,EAAE,QAAU,CAAC,GAAG,IAAI,CAAY,EAC1C,EAAa,EAAS,EAAE,UAAU,EACxC,EAAQ,KAAK,CACX,KAAM,SACN,OACA,KAAM,EAAK,EAAE,MAAO,EAAE,GAAG,EACzB,WAAY,GACZ,UAAW,CAAC,EACZ,WAAY,SACZ,WAAY,EAAO,OAAS,EAAI,EAAS,OACzC,YACF,CAAC,EACI,QAAI,EAAE,OAAS,sBAAuB,CAC3C,IAAM,EAAe,EAAE,KAAK,MAAQ,UAC9B,EAAU,EAAS,EAAE,cAAc,EACnC,EAAqB,CACzB,KAAM,WACN,OACA,KAAM,EAAK,EAAE,MAAO,EAAE,GAAG,EACzB,WAAY,GACZ,UAAW,EAAE,SAAW,CAAC,UAAU,EAAI,CAAC,EACxC,WAAY,CACd,EACA,EAAQ,KAAK,CAAC,EAGlB,OAAO,EAGT,SAAS,CAAW,CAAC,EAAe,EAAiE,CACnG,IAAM,EAAe,EAAK,MAAQ,GAElC,GAAI,IAAS,sBAAuB,CAClC,IAAM,EAAe,EAAK,IAAI,MAAQ,UAChC,GAAU,EAAK,QAAU,CAAC,GAAG,IAAI,CAAY,EAC7C,EAAa,EAAS,EAAK,UAAU,EACrC,EAAO,EAAiB,EAAM,CAAI,EAClC,EAAQ,EAAkB,EAAK,YAAc,CAAC,CAAC,EAC/C,EACJ,EAAK,gBAAgB,QAAQ,IAAI,CAAC,IAAoC,EAAE,MAAM,IAAc,EAAE,OAAO,OAAO,GAAK,OAC7G,EAAuB,CAC3B,KAAM,WACN,OACA,KAAM,EAAK,EAAK,MAAO,EAAK,GAAG,EAC/B,aACA,UAAW,EACX,WAAY,EAAO,OAAS,EAAI,EAAS,OACzC,aACA,WAAY,EAAM,OAAS,EAAI,EAAQ,MACzC,EACA,GAAI,GAAkB,EAAe,OAAS,EAAG,EAAI,eAAiB,EACtE,OAAO,EAGT,GAAI,IAAS,oBAAsB,IAAS,kBAAmB,CAC7D,IAAM,EAAe,EAAK,IAAI,MAAQ,UAChC,EAAW,EAAc,CAAI,EAC7B,EAAU,EAAoB,EAAK,MAAM,MAAQ,CAAC,CAAC,EACnD,EAAQ,EAAkB,EAAK,YAAc,CAAC,CAAC,EAC/C,EAAO,EAAiB,EAAM,CAAI,EAClC,EACJ,EAAK,gBAAgB,QAAQ,IAAI,CAAC,IAAoC,EAAE,MAAM,IAAc,EAAE,OAAO,OAAO,GAAK,OAC7G,EAAuB,CAC3B,KAAM,QACN,OACA,KAAM,EAAK,EAAK,MAAO,EAAK,GAAG,EAC/B,aACA,UAAW,EACX,SAAU,EAAS,OAAS,EAAI,EAAW,OAC3C,QAAS,EAAQ,OAAS,EAAI,EAAU,OACxC,WAAY,EAAM,OAAS,EAAI,EAAQ,MACzC,EACA,GAAI,GAAkB,EAAe,OAAS,EAAG,EAAI,eAAiB,EACtE,OAAO,EAGT,GAAI,IAAS,sBAAuB,CAClC,IAAM,EAA6B,CAAC,EACpC,QAAW,KAAQ,EAAK,cAAgB,CAAC,EAAG,CAC1C,IAAgB,GAAV,EACY,KAAZ,GAAO,EAEb,GAAI,GAAI,OAAS,gBAAiB,CAChC,QAAW,KAAQ,EAAG,YAAc,CAAC,EAAG,CACtC,IAAM,EAAmB,EAAK,OAAO,MAAQ,EAAK,KAAK,MAAQ,UAC/D,EAAQ,KAAK,CACX,KAAM,WACN,KAAM,EACN,KAAM,EAAK,EAAK,OAAS,EAAK,MAAO,EAAK,KAAO,EAAK,GAAG,EACzD,aACA,UAAW,CAAC,CACd,CAAC,EAEH,SAGF,GAAI,GAAI,OAAS,eAAgB,CAC/B,QAAW,KAAQ,EAAG,UAAY,CAAC,EAAG,CACpC,GAAI,CAAC,GAAQ,EAAK,OAAS,aAAc,SACzC,IAAM,EAAmB,EAAK,MAAQ,UACtC,EAAQ,KAAK,CACX,KAAM,WACN,KAAM,EACN,KAAM,EAAK,EAAK,OAAS,EAAK,MAAO,EAAK,KAAO,EAAK,GAAG,EACzD,aACA,UAAW,CAAC,CACd,CAAC,EAEH,SAGF,IAAM,EAAe,GAAI,MAAQ,UAC7B,EAAmB,WACnB,EACA,EAEJ,GACE,GAAM,OAAS,sBACf,GAAM,OAAS,0BAEf,EAAO,WAEP,GADkB,EAAK,QAAU,CAAC,GACf,IAAI,CAAY,EACnC,EAAa,EAAS,EAAK,UAAU,EAEvC,IAAM,EAAmB,CAAC,EAC1B,EAAQ,KAAK,CACX,OACA,OACA,KAAM,EAAK,EAAK,MAAO,EAAK,GAAG,EAC/B,aACA,UAAW,EACX,WAAY,EACZ,YACF,CAAC,EAEH,GAAI,EAAQ,SAAW,EAAG,OAAO,KACjC,GAAI,EAAQ,SAAW,EAAG,OAAO,EAAQ,GACzC,OAAO,EAGT,GAAI,IAAS,yBAEX,MAAO,CACL,KAAM,OACN,KAHmB,EAAK,IAAI,MAAQ,UAIpC,KAAM,EAAK,EAAK,MAAO,EAAK,GAAG,EAC/B,aACA,UAAW,CAAC,CACd,EAGF,GAAI,IAAS,yBAA0B,CACrC,IAAM,EAAe,EAAK,IAAI,MAAQ,UAChC,EAAW,EAAkB,CAAI,EACjC,EAAU,EAAwB,EAAK,MAAM,MAAQ,CAAC,CAAC,EACvD,EACJ,EAAK,gBAAgB,QAAQ,IAAI,CAAC,IAAoC,EAAE,MAAM,IAAc,EAAE,OAAO,OAAO,GAAK,OAC7G,EAAuB,CAC3B,KAAM,YACN,OACA,KAAM,EAAK,EAAK,MAAO,EAAK,GAAG,EAC/B,aACA,UAAW,CAAC,EACZ,SAAU,EAAS,OAAS,EAAI,EAAW,OAC3C,QAAS,EAAQ,OAAS,EAAI,EAAU,MAC1C,EACA,GAAI,GAAkB,EAAe,OAAS,EAAG,EAAI,eAAiB,EACtE,OAAO,EAGT,GAAI,IAAS,oBAAqB,CAChC,IAAM,EAAe,EAAK,IAAI,MAAQ,UAChC,EAAO,EAAiB,CAAI,EAE5B,GAD0E,EAAK,MAAM,SAAW,CAAC,GACzD,IAAI,CAAC,KAAO,CACxD,KAAM,WACN,KAAM,EAAE,IAAI,MAAQ,EAAE,IAAI,OAAS,UACnC,KAAM,EAAK,EAAE,MAAO,EAAE,GAAG,EACzB,WAAY,GACZ,UAAW,CAAC,CACd,EAAE,EACF,MAAO,CACL,KAAM,OACN,OACA,KAAM,EAAK,EAAK,MAAO,EAAK,GAAG,EAC/B,aACA,UAAW,EACX,QAAS,EAAQ,OAAS,EAAI,EAAU,MAC1C,EAGF,OAAO,KAGT,IAAM,EAA4B,CAAC,EAEnC,QAAW,KAAQ,EAAQ,KAAM,CAC/B,IAAI,EAAkD,KAChD,EAAS,EACT,EAAe,OAAO,EAAO,OAAS,SAAW,EAAO,KAAO,GAErE,GAAI,IAAS,yBAA0B,CACrC,IAAM,EAAI,EAKV,GAAI,EAAE,aAEJ,GADA,EAAM,EAAY,EAAE,YAAwB,EAAI,EAC5C,GAAO,CAAC,MAAM,QAAQ,CAAG,EAC3B,EAAI,KAAO,EAAK,EAAE,MAAO,EAAE,GAAG,EACzB,QAAI,MAAM,QAAQ,CAAG,EAC1B,QAAW,KAAK,EAAK,EAAE,KAAO,EAAK,EAAE,MAAO,EAAE,GAAG,GAGhD,QAAI,IAAS,2BAA4B,CAC9C,IAAM,EAAI,EAKJ,EAAO,EAAE,YACf,GAAI,GAEF,GADA,EAAM,EAAY,EAA4B,EAAI,EAC9C,GAAO,CAAC,MAAM,QAAQ,CAAG,EAC3B,EAAI,KAAO,EAAK,IAAI,MAAQ,UAC5B,EAAI,WAAa,GACjB,EAAI,KAAO,EAAK,EAAE,MAAO,EAAE,GAAG,GAIlC,OAAM,EAAY,EAA4B,EAAK,EAGrD,IAAM,EAA0B,MAAM,QAAQ,CAAG,EAAI,EAAM,EAAM,CAAC,CAAG,EAAI,CAAC,EAC1E,QAAW,KAAK,EAAM,CACpB,IAAM,EAAa,EAA4B,OAAS,EAClD,EAAY,EAAiB,CAAS,EAC5C,GAAI,EAAW,CACb,IAAM,EAAc,GAAW,CAAS,EACxC,GAAI,CAAC,GAAM,CAAW,EAAG,EAAE,MAAQ,EAErC,EAAO,KAAK,CAAC,GAIjB,OAAO,ECrgBT,kBAAS,cAAS,cAAS,cAKpB,SAAS,EAAa,CAC3B,EACA,EACA,EACU,CACV,IAAM,EAA2B,CAAC,IAA+B,CAC/D,IAAM,EAAY,GAAQ,CAAQ,EAClC,GAAI,IAAc,GAChB,MAAO,CACL,EAAW,MACX,EAAW,YACX,EAAW,OACX,EAAW,aACX,EAAW,OACX,EAAW,YACb,EAEF,GAAI,IAAc,MAAO,MAAO,CAAC,EAAS,MAAM,EAAG,EAAE,EAAI,KAAK,EAC9D,GAAI,IAAc,OAAQ,MAAO,CAAC,EAAS,MAAM,EAAG,EAAE,EAAI,MAAM,EAChE,GAAI,IAAc,OAAQ,MAAO,CAAC,EAAS,MAAM,EAAG,EAAE,EAAI,MAAM,EAChE,MAAO,CAAC,CAAQ,GAGlB,GAAI,EAAW,WAAW,GAAG,EAAG,CAC9B,IAAM,EAAW,GAAQ,GAAQ,CAAe,EAAG,CAAU,EAC7D,OAAO,EAAyB,CAAQ,EAG1C,GAAI,EACF,QAAY,EAAS,KAAY,EAAc,MAAO,CACpD,GAAI,EAAQ,SAAW,EAAG,SAE1B,IAAM,EAAU,EAAQ,QAAQ,GAAG,EAEnC,GAAI,IAAY,IACd,GAAI,IAAe,EAAS,CAC1B,IAAM,EAAuB,CAAC,EAC9B,QAAW,KAAK,EACd,EAAW,KAAK,GAAG,EAAyB,GAAQ,EAAc,QAAS,CAAC,CAAC,CAAC,EAEhF,OAAO,GAEJ,KACL,IAAM,EAAS,EAAQ,MAAM,EAAG,CAAO,EACjC,EAAS,EAAQ,MAAM,EAAU,CAAC,EACxC,GACE,EAAW,WAAW,CAAM,IAC3B,IAAW,IAAM,EAAW,SAAS,CAAM,GAC5C,CACA,IAAM,EAAW,EAAW,MAC1B,EAAO,OACP,IAAW,GAAK,OAAY,EAAW,OAAS,EAAO,MACzD,EACM,EAAuB,CAAC,EAC9B,QAAW,KAAK,EACd,EAAW,KAAK,GAAG,EAAyB,GAAQ,EAAc,QAAS,EAAE,QAAQ,IAAK,CAAQ,CAAC,CAAC,CAAC,EAEvG,OAAO,IAMf,MAAO,CAAC,EAGH,SAAS,EAAc,CAC5B,EACA,EACA,EACA,EAIgB,GACc,CAC9B,IAAM,EAAM,IAAI,IACV,EAAQ,EAA6D,MAAQ,CAAC,EAEpF,QAAW,KAAQ,EAAM,CACvB,GAAI,EAAK,OAAS,oBAAqB,SAEvC,IAAM,EAAuB,EAAK,QAA2C,OAAU,GACjF,EAAa,EAAgB,EAAiB,EAAY,CAAa,EAC7E,GAAI,EAAW,SAAW,EAAG,SAC7B,IAAM,EAAW,EAAW,GAEtB,EAAc,EAAK,YAA6D,CAAC,EACvF,QAAW,KAAQ,EACjB,OAAQ,EAAK,UACN,kBACH,EAAI,IAAK,EAAK,MAA2B,KAAM,CAC7C,KAAM,EACN,aAAe,EAAK,SAA8B,IACpD,CAAC,EACD,UACG,yBACH,EAAI,IAAK,EAAK,MAA2B,KAAM,CAC7C,KAAM,EACN,aAAc,SAChB,CAAC,EACD,UACG,2BACH,EAAI,IAAK,EAAK,MAA2B,KAAM,CAC7C,KAAM,EACN,aAAc,GAChB,CAAC,EACD,OAKR,OAAO,ECnHT,IAAM,GAAY,IAAI,IAAI,CAAC,MAAO,QAAS,MAAO,OAAO,CAAC,EAUnD,SAAS,EAAK,CACnB,EACA,EACM,CACN,GAAI,CAAC,GAAQ,OAAO,IAAS,SAAU,OAEvC,GAAI,MAAM,QAAQ,CAAI,EAAG,CACvB,QAAW,KAAQ,EAAM,GAAM,EAAM,CAAQ,EAC7C,OAGF,IAAM,EAAS,EACf,EAAS,CAAM,EAEf,QAAW,KAAO,OAAO,KAAK,CAAM,EAAG,CACrC,GAAI,GAAU,IAAI,CAAG,EAAG,SACxB,IAAM,EAAQ,EAAO,GACrB,GAAI,GAAS,OAAO,IAAU,SAC5B,GAAM,EAAO,CAAQ,GAqEpB,SAAS,EAAqB,CAAC,EAA8B,CAClE,GAAI,CAAC,GAAQ,OAAO,IAAS,UAAY,MAAM,QAAQ,CAAI,EAAG,OAAO,KACrE,IAAM,EAAS,EACf,IACG,EAAO,OAAS,iBAAmB,EAAO,OAAS,YACpD,OAAO,EAAO,QAAU,SAExB,OAAO,EAAO,MAEhB,OAAO,KAGF,SAAS,CAAgB,CAAC,EAAqC,CACpE,GAAI,CAAC,GAAQ,OAAO,IAAS,UAAY,MAAM,QAAQ,CAAI,EAAG,OAAO,KACrE,IAAM,EAAO,EAEb,GAAI,EAAK,OAAS,aAAc,CAC9B,IAAM,EAAO,EAAK,KAClB,MAAO,CAAE,KAAM,EAAM,MAAO,CAAC,EAAG,KAAM,CAAK,EAG7C,GAAI,EAAK,OAAS,iBAChB,MAAO,CAAE,KAAM,OAAQ,MAAO,CAAC,EAAG,KAAM,MAAO,EAGjD,GAAI,EAAK,OAAS,QAChB,MAAO,CAAE,KAAM,QAAS,MAAO,CAAC,EAAG,KAAM,OAAQ,EAGnD,GAAI,EAAK,OAAS,mBAAoB,CACpC,IAAM,EAAkB,CAAC,EACrB,EAAmC,EAEvC,MAAO,EAAQ,OAAS,mBAAoB,CAC1C,IAAM,EAAO,EAAQ,SACrB,GAAI,CAAC,GAAQ,OAAO,EAAK,OAAS,SAAU,OAAO,KACnD,EAAM,QAAQ,EAAK,IAAI,EACvB,EAAU,EAAQ,OAGpB,IAAI,EACJ,GAAI,EAAQ,OAAS,aACnB,EAAO,EAAQ,KACV,QAAI,EAAQ,OAAS,iBAC1B,EAAO,OACF,QAAI,EAAQ,OAAS,QAC1B,EAAO,QAEP,YAAO,KAGT,IAAM,EAAO,CAAC,EAAM,GAAG,CAAK,EAAE,KAAK,GAAG,EACtC,MAAO,CAAE,OAAM,QAAO,MAAK,EAG7B,OAAO,KCpJF,SAAS,EAAc,CAC5B,EACA,EACA,EACA,EAIgB,GACA,CAChB,IAAM,EAA4B,CAAC,EAC7B,EAAQ,EAA6D,MAAQ,CAAC,EAEpF,QAAW,KAAQ,EAAM,CACvB,GAAI,EAAK,OAAS,oBAAqB,CACrC,IAAM,EAAuB,EAAK,QAA2C,OAAU,GACjF,EAAa,EAAgB,EAAU,EAAY,CAAa,EACtE,GAAI,EAAW,SAAW,EAAG,SAC7B,IAAM,EAAW,EAAW,GAEtB,EAAS,EAAK,aAAe,OAC7B,EAAc,EAAK,YAA6D,CAAC,EAEvF,GAAI,EAAW,SAAW,EAAG,CAE3B,IAAM,EAAgC,CAAC,EACvC,GAAI,EAAQ,EAAK,OAAS,GAC1B,EAAU,KAAK,CACb,KAAM,EAAS,kBAAoB,UACnC,YAAa,EACb,cAAe,KACf,YAAa,EACb,cAAe,QACX,OAAO,KAAK,CAAI,EAAE,OAAS,EAAI,CAAE,SAAU,KAAK,UAAU,CAAI,CAAE,EAAI,CAAC,CAC3E,CAAC,EAED,aAAW,KAAQ,EAAY,CAC7B,IAAM,EAAW,EAAK,KAChB,EAAa,GAAW,EAAK,aAA0B,OACvD,EAAgC,CAAC,EACvC,GAAI,EAAY,EAAK,OAAS,GAE9B,IAAI,EACA,EAEJ,GAAI,IAAa,yBACf,EAAgB,UAChB,EAAiB,EAAK,MAA2B,KAC5C,QAAI,IAAa,2BACtB,EAAgB,IAChB,EAAiB,EAAK,MAA2B,KACjD,EAAK,WAAa,YAGlB,OAAiB,EAAK,SAA8B,KACpD,EAAiB,EAAK,MAA2B,KAGnD,EAAU,KAAK,CACb,KAAM,EAAa,kBAAoB,UACvC,YAAa,EACb,gBACA,YAAa,EACb,mBACI,OAAO,KAAK,CAAI,EAAE,OAAS,EAAI,CAAE,SAAU,KAAK,UAAU,CAAI,CAAE,EAAI,CAAC,CAC3E,CAAC,EAGL,SAGF,GAAI,EAAK,OAAS,wBAA0B,EAAK,OAAQ,CACvD,IAAM,EAAuB,EAAK,QAA2C,OAAU,GACjF,EAAa,EAAgB,EAAU,EAAY,CAAa,EACtE,GAAI,EAAW,SAAW,EAAG,SAC7B,IAAM,EAAW,EAAW,GAEtB,EAAS,EAAK,aAAe,OAC7B,EAAgC,CAAE,WAAY,EAAK,EACzD,GAAI,EAAQ,EAAK,OAAS,GAC1B,EAAU,KAAK,CACb,KAAM,EAAS,kBAAoB,aACnC,YAAa,EACb,cAAe,KACf,YAAa,EACb,cAAe,KACf,SAAU,KAAK,UAAU,CAAI,CAC/B,CAAC,EACD,SAGF,GAAI,EAAK,OAAS,0BAA4B,EAAK,OAAQ,CACzD,IAAM,EAAuB,EAAK,QAA2C,OAAU,GACjF,EAAa,EAAgB,EAAU,EAAY,CAAa,EACtE,GAAI,EAAW,SAAW,EAAG,SAC7B,IAAM,EAAW,EAAW,GAEtB,EAAS,EAAK,aAAe,OAO7B,EAAgC,CAAE,WAAY,GAAM,YANlC,EAAK,YAA6D,CAAC,GACzD,IAAI,CAAC,KAAO,CAC5C,MAAQ,EAAE,MAA2B,KACrC,SAAW,EAAE,SAA8B,IAC7C,EAAE,CAEmE,EACrE,GAAI,EAAQ,EAAK,OAAS,GAE1B,EAAU,KAAK,CACb,KAAM,EAAS,kBAAoB,aACnC,YAAa,EACb,cAAe,KACf,YAAa,EACb,cAAe,KACf,SAAU,KAAK,UAAU,CAAI,CAC/B,CAAC,GAsBL,OAlBA,GAAM,EAAK,CAAC,IAAS,CACnB,GAAI,EAAK,OAAS,mBAAoB,OACtC,IAAM,EAAc,GAAsB,EAAK,MAAM,EACrD,GAAI,CAAC,EAAa,OAClB,IAAM,EAAa,EAAgB,EAAU,EAAa,CAAa,EACvE,GAAI,EAAW,SAAW,EAAG,OAC7B,IAAM,EAAW,EAAW,GAE5B,EAAU,KAAK,CACb,KAAM,UACN,YAAa,EACb,cAAe,KACf,YAAa,EACb,cAAe,KACf,SAAU,KAAK,UAAU,CAAE,UAAW,EAAK,CAAC,CAC9C,CAAC,EACF,EAEM,EC1IF,SAAS,EAAY,CAC1B,EACA,EACA,EACgB,CAChB,IAAM,EAA4B,CAAC,EAC7B,EAA0B,CAAC,EAC3B,EAAuB,CAAC,EAE9B,SAAS,CAAa,EAAkB,CACtC,GAAI,EAAc,OAAS,EAAG,OAAO,EAAc,EAAc,OAAS,IAAM,KAChF,OAAO,KAGT,SAAS,CAAa,CACpB,EAC2E,CAC3E,GAAI,CAAC,EAAI,OAAO,KAEhB,IAAM,EAAM,EAAU,IAAI,EAAG,IAAI,EAEjC,GAAI,EAAG,MAAM,SAAW,EAAG,CACzB,GAAI,EACF,MAAO,CAAE,YAAa,EAAI,KAAM,cAAe,EAAI,aAAc,WAAY,QAAS,EAExF,MAAO,CAAE,YAAa,EAAU,cAAe,EAAG,KAAM,WAAY,OAAQ,EACvE,KACL,GAAI,GAAO,EAAI,eAAiB,IAAK,CACnC,IAAM,EAAgB,EAAG,MAAM,EAAG,MAAM,OAAS,GACjD,MAAO,CAAE,YAAa,EAAI,KAAM,gBAAe,WAAY,WAAY,EAEzE,MAAO,CAAE,YAAa,EAAU,cAAe,EAAG,KAAM,WAAY,cAAe,GAIvF,SAAS,CAAI,CAAC,EAAqB,CACjC,GAAI,CAAC,GAAQ,OAAO,IAAS,SAAU,OAEvC,GAAI,MAAM,QAAQ,CAAI,EAAG,CACvB,QAAW,KAAQ,EAAM,EAAK,CAAI,EAClC,OAGF,IAAM,EAAS,EACT,EAAe,OAAO,EAAO,OAAS,SAAW,EAAO,KAAO,GAErE,GAAI,IAAS,oBAAsB,IAAS,kBAAmB,CAC7D,IAAM,EAAY,EACZ,EAAoB,EAAU,IAAI,MAAQ,iBAChD,EAAW,KAAK,CAAS,EACzB,EAAK,EAAU,IAAI,EACnB,EAAW,IAAI,EACf,OAGF,GAAI,IAAS,sBAAuB,CAClC,IAAM,EAAe,EACf,EAAe,EAAa,IAAI,MAAQ,YAC9C,EAAc,KAAK,CAAI,EACvB,EAAK,EAAa,IAAI,EACtB,EAAc,IAAI,EAClB,OAGF,GAAI,IAAS,sBAAyB,EAAwC,OAC3E,EAAwC,MAAM,OAAS,sBACvD,EAAwC,MAAM,OAAS,2BACvD,CACD,IAAM,EAAa,EACb,EAAe,EAAW,IAAI,MAAQ,YAC5C,EAAc,KAAK,CAAI,EACvB,EAAK,EAAW,MAAM,MAAQ,EAAW,IAAI,EAC7C,EAAc,IAAI,EAClB,OAGF,GAAI,IAAS,oBAAuB,EAA+B,MAAO,CACxE,IAAM,EAAS,EACT,EAAY,EAAW,EAAW,OAAS,IAAM,GACjD,EAAqB,EAAO,KAAK,MAAQ,YACzC,EAAW,EAAY,GAAG,KAAa,IAAe,EAC5D,EAAc,KAAK,CAAQ,EAC3B,EAAK,EAAO,OAAO,IAAI,EACvB,EAAc,IAAI,EAClB,OAGF,GAAI,IAAS,sBAAwB,IAAS,0BAA2B,CACvE,IAAM,EAAe,EAAc,EAC7B,EAAgB,EAAe,GAAG,gBAA6B,cACrE,EAAc,KAAK,CAAa,EAChC,EAAM,EAA8B,IAAI,EACxC,EAAc,IAAI,EAClB,OAGF,GAAI,IAAS,iBAAkB,CAC7B,IAAM,EAAO,EACP,EAAK,EAAiB,EAAK,MAAM,EACjC,EAAM,EAAc,CAAE,EAC5B,GAAI,EAAK,CACP,IAAM,EAAgB,EAAc,EAC9B,EAAgC,CAAC,EACvC,GAAI,IAAkB,KAAM,EAAK,MAAQ,SAEzC,EAAU,KAAK,CACb,KAAM,QACN,YAAa,EACb,gBACA,YAAa,EAAI,YACjB,cAAe,EAAI,iBACf,OAAO,KAAK,CAAI,EAAE,OAAS,EAAI,CAAE,SAAU,KAAK,UAAU,CAAI,CAAE,EAAI,CAAC,CAC3E,CAAC,EAEH,EAAK,EAAK,MAAM,EAChB,QAAW,KAAO,EAAK,WAAa,CAAC,EAAG,EAAK,CAAG,EAChD,OAGF,GAAI,IAAS,gBAAiB,CAC5B,IAAM,EAAW,EACX,EAAK,EAAiB,EAAS,MAAM,EACrC,EAAM,EAAc,CAAE,EAC5B,GAAI,EAAK,CACP,IAAM,EAAgB,EAAc,EAC9B,EAAgC,CAAE,MAAO,EAAK,EACpD,GAAI,IAAkB,KAAM,EAAK,MAAQ,SAEzC,EAAU,KAAK,CACb,KAAM,QACN,YAAa,EACb,gBACA,YAAa,EAAI,YACjB,cAAe,EAAI,cACnB,SAAU,KAAK,UAAU,CAAI,CAC/B,CAAC,EAEH,QAAW,KAAO,EAAS,WAAa,CAAC,EAAG,EAAK,CAAG,EACpD,OAGF,QAAW,KAAO,OAAO,KAAK,CAAM,EAAG,CACrC,GAAI,IAAQ,OAAS,IAAQ,SAAW,IAAQ,OAAS,IAAQ,QAAS,SAC1E,IAAM,EAAQ,EAAO,GACrB,GAAI,GAAS,OAAO,IAAU,SAC5B,EAAK,CAAK,GAMhB,OADA,EAAK,CAAG,EACD,ECvJF,SAAS,EAAe,CAC7B,EACA,EACA,EACgB,CAChB,IAAM,EAA4B,CAAC,EAsDnC,OApDA,GAAM,EAAK,CAAC,IAAS,CACnB,GAAI,EAAK,OAAS,yBAA0B,CAC1C,IAAM,EAA0B,EAAK,IAAsC,MAAS,qBAC9E,EAAc,EAAK,SAAqC,CAAC,EAC/D,QAAW,KAAQ,EAAY,CAC7B,IAAM,EAAQ,EAAkC,YAAc,EACxD,EAAK,EAAiB,CAAI,EAChC,GAAI,CAAC,EAAI,SACT,IAAM,EAAM,GAAmB,EAAI,EAAU,CAAS,EACtD,EAAU,KAAK,CACb,KAAM,UACN,YAAa,EACb,cAAe,KACZ,CACL,CAAC,EAEH,OAGF,GAAI,EAAK,OAAS,oBAAsB,EAAK,OAAS,kBAAmB,OAEzE,IAAM,EACF,EAAK,IAAsC,MAAS,iBAExD,GAAI,EAAK,WAAY,CACnB,IAAM,EAAK,EAAiB,EAAK,UAAU,EAC3C,GAAI,EAAI,CACN,IAAM,EAAM,GAAmB,EAAI,EAAU,CAAS,EACtD,EAAU,KAAK,CACb,KAAM,UACN,YAAa,EACb,cAAe,KACZ,CACL,CAAC,GAIL,IAAM,EAAS,EAAK,YAAwC,CAAC,EAC7D,QAAW,KAAQ,EAAO,CACxB,IAAM,EAAQ,EAAkC,YAAc,EACxD,EAAK,EAAiB,CAAI,EAChC,GAAI,CAAC,EAAI,SACT,IAAM,EAAM,GAAmB,EAAI,EAAU,CAAS,EACtD,EAAU,KAAK,CACb,KAAM,aACN,YAAa,EACb,cAAe,KACZ,CACL,CAAC,GAEJ,EAEM,EAGT,SAAS,EAAkB,CACzB,EACA,EACA,EACmE,CACnE,IAAM,EAAM,EAAU,IAAI,EAAG,IAAI,EAEjC,GAAI,EAAK,CACP,GAAI,EAAI,eAAiB,IAAK,CAC5B,IAAM,EAAgB,EAAG,MAAM,EAAG,MAAM,OAAS,IAAM,EAAG,KAC1D,MAAO,CACL,YAAa,EAAI,KACjB,gBACA,SAAU,KAAK,UAAU,CAAE,kBAAmB,EAAK,CAAC,CACtD,EAEF,MAAO,CACL,YAAa,EAAI,KACjB,cAAe,EAAG,MAAM,OAAS,EAAI,EAAG,KAAO,EAAI,YACrD,EAGF,MAAO,CACL,YAAa,EACb,cAAe,EAAG,KAClB,SAAU,KAAK,UAAU,CAAE,QAAS,EAAK,CAAC,CAC5C,ECpFK,SAAS,EAAgB,CAC9B,EACA,EACA,EACgB,CAChB,IAAM,EAAY,GAAe,EAAK,EAAU,CAAa,EAEvD,EAAU,GAAe,EAAK,EAAU,CAAa,EACrD,EAAQ,GAAa,EAAK,EAAU,CAAS,EAC7C,EAAW,GAAgB,EAAK,EAAU,CAAS,EAEzD,MAAO,CAAC,GAAG,EAAS,GAAG,EAAO,GAAG,CAAQ,ECnB3C,cAAS,YAAK,wBACd,mBAAS,oBACT,oBAAS,iBAAW,iBAAY,YAChC,kBAAS,WAAS,cAClB,kBAAS,gCACT,kBAAS,0HCLT,cAAS,qBACT,sBACE,WACA,aACA,UACA,YACA,iBACA,iBACA,YACA,iCAGK,IAAM,EAAQ,GACnB,QACA,CACE,QAAS,EAAK,SAAS,EAAE,QAAQ,EACjC,SAAU,EAAK,WAAW,EAAE,QAAQ,EACpC,QAAS,GAAK,UAAU,EAAE,QAAQ,EAClC,KAAM,EAAQ,MAAM,EAAE,QAAQ,EAC9B,YAAa,EAAK,cAAc,EAAE,QAAQ,EAC1C,UAAW,EAAK,YAAY,EAAE,QAAQ,EACtC,UAAW,EAAQ,YAAY,CACjC,EACA,CAAC,IAAU,CAAC,GAAW,CAAE,QAAS,CAAC,EAAM,QAAS,EAAM,QAAQ,CAAE,CAAC,CAAC,CACtE,EAEa,EAAU,GACrB,UACA,CACE,GAAI,EAAQ,IAAI,EAAE,WAAW,CAAE,cAAe,EAAK,CAAC,EACpD,QAAS,EAAK,SAAS,EAAE,QAAQ,EACjC,SAAU,EAAK,WAAW,EAAE,QAAQ,EACpC,KAAM,EAAK,MAAM,EAAE,QAAQ,EAC3B,KAAM,EAAK,MAAM,EAAE,QAAQ,EAC3B,UAAW,EAAQ,YAAY,EAAE,QAAQ,EACzC,YAAa,EAAQ,cAAc,EAAE,QAAQ,EAC7C,QAAS,EAAQ,UAAU,EAAE,QAAQ,EACrC,UAAW,EAAQ,YAAY,EAAE,QAAQ,EACzC,WAAY,EAAQ,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,EACtD,UAAW,EAAK,WAAW,EAC3B,YAAa,EAAK,aAAa,EAC/B,WAAY,EAAK,aAAa,EAC9B,YAAa,EAAK,cAAc,EAAE,QAAQ,EAC1C,UAAW,EAAK,YAAY,EAAE,QAAQ,CACxC,EACA,CAAC,IAAU,CACT,GAAM,0BAA0B,EAAE,GAAG,EAAM,QAAS,EAAM,QAAQ,EAClE,GAAM,0BAA0B,EAAE,GAAG,EAAM,QAAS,EAAM,IAAI,EAC9D,GAAM,0BAA0B,EAAE,GAAG,EAAM,QAAS,EAAM,IAAI,EAC9D,GAAM,yBAAyB,EAAE,GAAG,EAAM,QAAS,EAAM,WAAW,EACpE,GAAW,CACT,QAAS,CAAC,EAAM,QAAS,EAAM,QAAQ,EACvC,eAAgB,CAAC,EAAM,QAAS,EAAM,QAAQ,CAChD,CAAC,EAAE,SAAS,SAAS,CACvB,CACF,EAEa,EAAY,GACvB,YACA,CACE,GAAI,EAAQ,IAAI,EAAE,WAAW,CAAE,cAAe,EAAK,CAAC,EACpD,QAAS,EAAK,SAAS,EAAE,QAAQ,EACjC,KAAM,EAAK,MAAM,EAAE,QAAQ,EAC3B,YAAa,EAAK,eAAe,EAAE,QAAQ,EAC3C,cAAe,EAAK,iBAAiB,EACrC,YAAa,EAAK,eAAe,EAAE,QAAQ,EAC3C,cAAe,EAAK,iBAAiB,EACrC,SAAU,EAAK,WAAW,CAC5B,EACA,CAAC,IAAU,CACT,GAAM,mBAAmB,EAAE,GAAG,EAAM,QAAS,EAAM,WAAW,EAC9D,GAAM,mBAAmB,EAAE,GAAG,EAAM,QAAS,EAAM,WAAW,EAC9D,GAAM,oBAAoB,EAAE,GAAG,EAAM,QAAS,EAAM,IAAI,EACxD,GAAW,CACT,QAAS,CAAC,EAAM,QAAS,EAAM,WAAW,EAC1C,eAAgB,CAAC,EAAM,QAAS,EAAM,QAAQ,CAChD,CAAC,EAAE,SAAS,SAAS,EACrB,GAAW,CACT,QAAS,CAAC,EAAM,QAAS,EAAM,WAAW,EAC1C,eAAgB,CAAC,EAAM,QAAS,EAAM,QAAQ,CAChD,CAAC,EAAE,SAAS,SAAS,CACvB,CACF,EAEa,GAAe,GAC1B,gBACA,CACE,GAAI,EAAQ,IAAI,EAAE,WAAW,EAC7B,IAAK,EAAQ,KAAK,EAAE,QAAQ,EAC5B,UAAW,EAAK,YAAY,EAAE,QAAQ,EACtC,YAAa,EAAK,cAAc,EAAE,QAAQ,CAC5C,EACA,CAAC,IAAU,CAAC,GAAM,0BAA2B,KAAM,EAAM,QAAQ,CAAC,CACpE,ED/EO,MAAM,EAAa,CAChB,OAA0B,KAC1B,QAAmD,KAC1C,OACT,QAAU,EAElB,WAAW,CAAC,EAA2B,CACrC,KAAK,OAAS,GAAK,EAAK,YAAa,UAAW,YAAY,KAG1D,UAAS,EAAqC,CAChD,GAAI,CAAC,KAAK,QAAS,MAAU,MAAM,0CAA0C,EAC7E,OAAO,KAAK,QAGd,IAAI,EAA+B,CACjC,GAAI,CACF,GAAU,GAAQ,KAAK,MAAM,EAAG,CAAE,UAAW,EAAK,CAAC,EACnD,KAAK,OAAS,IAAI,GAAS,KAAK,MAAM,EAEtC,KAAK,OAAO,IAAI,2BAA2B,EAC3C,KAAK,OAAO,IAAI,0BAA0B,EAC1C,KAAK,OAAO,IAAI,4BAA4B,EAE5C,KAAK,QAAU,GAAQ,KAAK,OAAQ,CAAE,SAAO,CAAC,EAE9C,GAAQ,KAAK,QAAS,CACpB,iBAAkB,GAAK,YAAY,QAAS,YAAY,CAC1D,CAAC,EAID,IAAM,EAAY,KAAK,OACvB,GAAI,OAAO,EAAU,WAAgB,WAClC,EAAU,SAAyB,KAClC,KAAK,OACL,SACA,CAAC,EAAiB,IAA0B,CAC1C,GAAI,CACF,OAAO,IAAI,OAAO,CAAO,EAAE,KAAK,CAAK,EAAI,EAAI,EAC7C,KAAM,CACN,MAAO,IAGb,EAEF,MAAO,EAAG,CACV,GAAI,KAAK,kBAAkB,CAAC,GAAK,GAAW,KAAK,MAAM,EAAG,CACxD,KAAK,YAAY,EACjB,GAAW,KAAK,MAAM,EACtB,QAAW,IAAO,CAAC,OAAQ,MAAM,EAAG,CAClC,IAAM,EAAI,KAAK,OAAS,EACxB,GAAI,GAAW,CAAC,EAAG,GAAW,CAAC,EAEjC,IAAM,EAAc,KAAK,KAAK,EAC9B,GAAI,GAAM,CAAW,EACnB,OAAO,GAAI,EAAa,QAAS,iCAAiC,KAAK,SAAU,EAAY,IAAI,CAAC,EAEpG,OAAO,EAET,OAAO,GAAI,EAAa,QAAS,8BAA8B,KAAK,SAAU,CAAC,CAAC,GAIpF,KAAK,EAAS,CACZ,KAAK,YAAY,EACjB,KAAK,QAAU,KAGjB,WAAc,CAAC,EAAgC,CAC7C,IAAM,EAAK,KAAK,cAAc,EAE9B,GAAI,KAAK,UAAY,EAAG,CACtB,KAAK,UACL,GAAI,CACF,OAAO,EAAG,YAAY,IAAM,EAAG,IAAI,CAAC,EAAE,SACtC,CACA,KAAK,WAIT,IAAM,EAAK,MAAM,KAAK,YACtB,EAAG,IAAI,cAAc,IAAK,EAC1B,GAAI,CACF,IAAM,EAAS,EAAG,IAAI,EAEtB,OADA,EAAG,IAAI,sBAAsB,IAAK,EAC3B,EACP,MAAO,EAAK,CAGZ,MAFA,EAAG,IAAI,0BAA0B,IAAK,EACtC,EAAG,IAAI,sBAAsB,IAAK,EAC5B,SACN,CACA,KAAK,WAIT,oBAAuB,CAAC,EAAgB,CACtC,IAAM,EAAK,KAAK,cAAc,EAC9B,KAAK,UACL,EAAG,IAAI,iBAAiB,EACxB,GAAI,CACF,IAAM,EAAS,EAAG,EAElB,OADA,EAAG,IAAI,QAAQ,EACR,EACP,MAAO,EAAK,CAEZ,MADA,EAAG,IAAI,UAAU,EACX,SACN,CACA,KAAK,WAIT,KAAK,CAAC,EAAsB,CAC1B,IAAM,EAAM,KAAK,cAAc,EAAE,QAAQ,CAAG,EAAE,IAAI,EAClD,GAAI,CAAC,EAAK,OAAO,KACjB,OAAO,OAAO,OAAO,CAAG,EAAE,GAG5B,aAAa,EAAa,CAIxB,OAHa,KAAK,cAAc,EAC7B,MAAM,qDAAqD,EAC3D,IAAI,EACK,IAAI,CAAC,IAAM,EAAE,IAAI,EAG/B,WAAW,EAAsD,CAI/D,OAHY,KAAK,cAAc,EAC5B,QAAQ,0DAA0D,EAClE,IAAI,GACO,OAGhB,WAAW,CAAC,EAAmB,CAC7B,IAAM,EAAM,IAAI,KAAK,EAAE,YAAY,EACnC,KAAK,cAAc,EAChB,QAAQ,mFAAmF,EAC3F,IAAI,EAAK,EAAK,CAAG,EAGtB,YAAY,CAAC,EAAmB,CAC9B,IAAM,EAAM,IAAI,KAAK,EAAE,YAAY,EACnC,KAAK,cAAc,EAChB,QAAQ,8FAA8F,EACtG,IAAI,EAAK,EAAK,CAAG,EAGtB,UAAU,CAAC,EAAmB,CAC5B,IAAM,EAAM,IAAI,KAAK,EAAE,YAAY,EACnC,KAAK,cAAc,EAChB,QAAQ,oEAAoE,EAC5E,IAAI,EAAK,CAAG,EAGjB,WAAW,CAAC,EAAmB,CAC7B,KAAK,cAAc,EAChB,QAAQ,oDAAoD,EAC5D,IAAI,CAAG,EAGJ,aAAa,EAAa,CAChC,GAAI,CAAC,KAAK,OAAQ,MAAU,MAAM,0CAA0C,EAC5E,OAAO,KAAK,OAGN,WAAW,EAAS,CAC1B,GAAI,KAAK,OACP,KAAK,OAAO,MAAM,EAClB,KAAK,OAAS,KAIV,iBAAiB,CAAC,EAAuB,CAC/C,GAAI,EAAE,aAAe,OAAQ,MAAO,GACpC,IAAM,EAAM,EAAI,QAAQ,YAAY,EACpC,OACE,EAAI,SAAS,WAAW,GACxB,EAAI,SAAS,SAAS,GACtB,EAAI,SAAS,gBAAgB,GAC7B,EAAI,SAAS,gBAAgB,GAC7B,EAAI,SAAS,gBAAgB,EAGnC,CEpMA,aAAS,UAAI,qBA2BN,MAAM,EAAe,CACG,GAA7B,WAAW,CAAkB,EAAkB,CAAlB,UAE7B,OAAO,CAAC,EAAiB,EAAqC,CAC5D,OAAO,KAAK,GAAG,UACZ,OAAO,EACP,KAAK,CAAK,EACV,MAAM,GAAI,GAAG,EAAM,QAAS,CAAO,EAAG,GAAG,EAAM,SAAU,CAAQ,CAAC,CAAC,EACnE,IAAI,GAAK,KAGd,UAAU,CAAC,EAA0B,CACnC,KAAK,GAAG,UACL,OAAO,CAAK,EACZ,OAAO,CACN,QAAS,EAAO,QAChB,SAAU,EAAO,SACjB,QAAS,EAAO,QAChB,KAAM,EAAO,KACb,YAAa,EAAO,YACpB,UAAW,EAAO,UAClB,UAAW,EAAO,WAAa,IACjC,CAAC,EACA,mBAAmB,CAClB,OAAQ,CAAC,EAAM,QAAS,EAAM,QAAQ,EACtC,IAAK,CACH,QAAS,EAAO,QAChB,KAAM,EAAO,KACb,YAAa,EAAO,YACpB,UAAW,EAAO,UAClB,UAAW,EAAO,WAAa,IACjC,CACF,CAAC,EACA,IAAI,EAGT,WAAW,CAAC,EAA+B,CACzC,OAAO,KAAK,GAAG,UACZ,OAAO,EACP,KAAK,CAAK,EACV,MAAM,GAAG,EAAM,QAAS,CAAO,CAAC,EAChC,IAAI,EAGT,WAAW,CAAC,EAA0C,CACpD,IAAM,EAAO,KAAK,YAAY,CAAO,EAC/B,EAAM,IAAI,IAChB,QAAW,KAAK,EAAM,EAAI,IAAI,EAAE,SAAU,CAAC,EAC3C,OAAO,EAGT,UAAU,CAAC,EAAiB,EAAwB,CAClD,KAAK,GAAG,UACL,OAAO,CAAK,EACZ,MAAM,GAAI,GAAG,EAAM,QAAS,CAAO,EAAG,GAAG,EAAM,SAAU,CAAQ,CAAC,CAAC,EACnE,IAAI,EAEX,CCpFA,aAAS,SAAI,UAAK,YAAK,qBCAhB,SAAS,EAAgB,CAAC,EAAsB,CACrD,OAAO,EACJ,KAAK,EACL,MAAM,KAAK,EACX,IAAI,CAAC,IAAU,EAAM,KAAK,CAAC,EAC3B,OAAO,CAAC,IAAU,EAAM,OAAS,CAAC,EAClC,IAAI,CAAC,IAAU,IAAI,EAAM,WAAW,IAAK,IAAI,KAAK,EAClD,KAAK,GAAG,EDgCN,MAAM,EAAiB,CACC,GAA7B,WAAW,CAAkB,EAAkB,CAAlB,UAE7B,kBAAkB,CAChB,EACA,EACA,EACA,EACM,CAMN,GALA,KAAK,GAAG,UACL,OAAO,CAAO,EACd,MAAM,GAAI,EAAG,EAAQ,QAAS,CAAO,EAAG,EAAG,EAAQ,SAAU,CAAQ,CAAC,CAAC,EACvE,IAAI,EAEH,CAAC,EAAK,OAAQ,OAElB,IAAM,EAAM,IAAI,KAAK,EAAE,YAAY,EACnC,QAAW,KAAO,EAChB,KAAK,GAAG,UAAU,OAAO,CAAO,EAAE,OAAO,CACvC,UACA,WACA,KAAM,EAAI,MAAQ,UAClB,KAAM,EAAI,MAAQ,GAClB,UAAW,EAAI,WAAa,EAC5B,YAAa,EAAI,aAAe,EAChC,QAAS,EAAI,SAAW,EACxB,UAAW,EAAI,WAAa,EAC5B,WAAY,EAAI,YAAc,EAC9B,UAAW,EAAI,WAAa,KAC5B,YAAa,EAAI,aAAe,KAChC,WAAY,EAAI,YAAc,KAC9B,cACA,UAAW,EAAI,WAAa,CAC9B,CAAC,EAAE,IAAI,EAIX,cAAc,CAAC,EAAiB,EAAkC,CAChE,OAAO,KAAK,GAAG,UACZ,OAAO,EACP,KAAK,CAAO,EACZ,MAAM,GAAI,EAAG,EAAQ,QAAS,CAAO,EAAG,EAAG,EAAQ,SAAU,CAAQ,CAAC,CAAC,EACvE,IAAI,EAGT,YAAY,CAAC,EAAiB,EAAe,EAAsB,CAAC,EAAmB,CACrF,IAAM,EAAQ,EAAK,OAAS,GACtB,EAAW,GAAiB,CAAK,EAEvC,GAAI,CAAC,EAAU,MAAO,CAAC,EAevB,OAbc,KAAK,GAAG,UACnB,OAAO,EACP,KAAK,CAAO,EACZ,MACC,GACE,KAAM,EAAQ,gEAAgE,KAC9E,EAAG,EAAQ,QAAS,CAAO,EAC3B,EAAK,KAAO,EAAG,EAAQ,KAAM,EAAK,IAAI,EAAI,MAC5C,CACF,EACC,QAAQ,EAAQ,IAAI,EACpB,MAAM,CAAK,EAEC,IAAI,EAGrB,YAAY,CAAC,EAAiB,EAA8B,CAC1D,OAAO,KAAK,GAAG,UACZ,OAAO,EACP,KAAK,CAAO,EACZ,MAAM,GAAI,EAAG,EAAQ,QAAS,CAAO,EAAG,EAAG,EAAQ,KAAM,CAAI,CAAC,CAAC,EAC/D,QAAQ,EAAQ,IAAI,EACpB,IAAI,EAGT,QAAQ,CAAC,EAA8B,CACrC,IAAM,EAAM,KAAK,GAAG,UACjB,OAAO,CACN,YAAa,GAAM,EACnB,UAAW,oBAA6B,EAAQ,WAClD,CAAC,EACA,KAAK,CAAO,EACZ,MAAM,EAAG,EAAQ,QAAS,CAAO,CAAC,EAClC,IAAI,EACP,MAAO,CACL,YAAa,GAAK,aAAe,EACjC,UAAW,GAAK,WAAa,CAC/B,EAGF,gBAAgB,CAAC,EAAiB,EAAqC,CACrE,OAAO,KAAK,GAAG,UACZ,OAAO,EACP,KAAK,CAAO,EACZ,MAAM,GAAI,EAAG,EAAQ,QAAS,CAAO,EAAG,EAAG,EAAQ,YAAa,CAAW,CAAC,CAAC,EAC7E,IAAI,EAGT,iBAAiB,CAAC,EAAiB,EAAwB,CACzD,KAAK,GAAG,UACL,OAAO,CAAO,EACd,MAAM,GAAI,EAAG,EAAQ,QAAS,CAAO,EAAG,EAAG,EAAQ,SAAU,CAAQ,CAAC,CAAC,EACvE,IAAI,EAGT,aAAa,CAAC,EAUwB,CACpC,IAAM,EAAU,KAAK,GAAG,UACrB,OAAO,EACP,KAAK,CAAO,EACZ,MACC,GACE,EAAK,SACD,KAAM,EAAQ,gEAAgE,EAAK,YACnF,OACJ,EAAK,UAAY,EAAG,EAAQ,KAAM,EAAK,SAAS,EAAI,OACpD,EAAK,UAAY,OAAY,EAAG,EAAQ,QAAS,EAAK,OAAO,EAAI,OACjE,EAAK,KAAO,EAAG,EAAQ,KAAM,EAAK,IAAI,EAAI,OAC1C,EAAK,WAAa,OAAY,EAAG,EAAQ,SAAU,EAAK,QAAQ,EAAI,OACpE,EAAK,aAAe,OAChB,EAAG,EAAQ,WAAY,EAAK,WAAa,EAAI,CAAC,EAC9C,OACJ,EAAK,UACD,KAAM,EAAQ,2HAA2H,EAAK,aAC9I,MAEN,CACF,EACC,QAAQ,EAAQ,IAAI,EAEpB,MAAM,EAAK,MAAQ,KAAK,IAAI,EAAK,MAAQ,GAAI,IAAI,EAAI,EAAK,KAAK,EAC/D,IAAI,EAEP,GAAI,CAAC,EAAK,MAAO,OAAO,EAGxB,GAAI,CACF,IAAM,EAAU,IAAI,OAAO,EAAK,KAAK,EACrC,OAAO,EAAQ,OAAO,KAAK,EAAQ,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,EAAG,EAAK,KAAK,EACpE,KAAM,CACN,MAAO,CAAC,GAGd,CEhMA,aAAS,SAAI,YAAK,SAAQ,qBAcnB,MAAM,EAAmB,CACD,GAA7B,WAAW,CAAkB,EAAkB,CAAlB,UAE7B,oBAAoB,CAClB,EACA,EACA,EACM,CAMN,GALA,KAAK,GAAG,UACL,OAAO,CAAc,EACrB,MAAM,EAAI,EAAG,EAAe,QAAS,CAAO,EAAG,EAAG,EAAe,YAAa,CAAW,CAAC,CAAC,EAC3F,IAAI,EAEH,CAAC,EAAK,OAAQ,OAElB,QAAW,KAAO,EAChB,KAAK,GAAG,UAAU,OAAO,CAAc,EAAE,OAAO,CAC9C,UACA,KAAM,EAAI,MAAQ,UAClB,YAAa,EAAI,aAAe,EAChC,cAAe,EAAI,eAAiB,KACpC,YAAa,EAAI,aAAe,GAChC,cAAe,EAAI,eAAiB,KACpC,SAAU,EAAI,UAAY,IAC5B,CAAC,EAAE,IAAI,EAIX,WAAW,CAAC,EAAiB,EAAqB,EAA0C,CAC1F,GAAI,IAAkB,OACpB,OAAO,KAAK,GAAG,UACZ,OAAO,CACN,QAAS,EAAe,QACxB,KAAM,EAAe,KACrB,YAAa,EAAe,YAC5B,cAAe,EAAe,cAC9B,YAAa,EAAe,YAC5B,cAAe,EAAe,cAC9B,SAAU,EAAe,QAC3B,CAAC,EACA,KAAK,CAAc,EACnB,MACC,EACE,EAAG,EAAe,QAAS,CAAO,EAClC,EAAG,EAAe,YAAa,CAAW,EAC1C,GACE,EAAG,EAAe,cAAe,CAAa,EAC9C,GAAO,EAAe,aAAa,CACrC,CACF,CACF,EACC,IAAI,EAGT,OAAO,KAAK,GAAG,UACZ,OAAO,CACN,QAAS,EAAe,QACxB,KAAM,EAAe,KACrB,YAAa,EAAe,YAC5B,cAAe,EAAe,cAC9B,YAAa,EAAe,YAC5B,cAAe,EAAe,cAC9B,SAAU,EAAe,QAC3B,CAAC,EACA,KAAK,CAAc,EACnB,MACC,EACE,EAAG,EAAe,QAAS,CAAO,EAClC,EAAG,EAAe,YAAa,CAAW,CAC5C,CACF,EACC,IAAI,EAGT,WAAW,CAAC,EAAiB,EAAuC,CAClE,OAAO,KAAK,GAAG,UACZ,OAAO,CACN,QAAS,EAAe,QACxB,KAAM,EAAe,KACrB,YAAa,EAAe,YAC5B,cAAe,EAAe,cAC9B,YAAa,EAAe,YAC5B,cAAe,EAAe,cAC9B,SAAU,EAAe,QAC3B,CAAC,EACA,KAAK,CAAc,EACnB,MACC,EACE,EAAG,EAAe,QAAS,CAAO,EAClC,EAAG,EAAe,YAAa,CAAW,CAC5C,CACF,EACC,IAAI,EAGT,SAAS,CAAC,EAAiB,EAAgC,CACzD,OAAO,KAAK,GAAG,UACZ,OAAO,CACN,QAAS,EAAe,QACxB,KAAM,EAAe,KACrB,YAAa,EAAe,YAC5B,cAAe,EAAe,cAC9B,YAAa,EAAe,YAC5B,cAAe,EAAe,cAC9B,SAAU,EAAe,QAC3B,CAAC,EACA,KAAK,CAAc,EACnB,MACC,EACE,EAAG,EAAe,QAAS,CAAO,EAClC,EAAG,EAAe,KAAM,CAAI,CAC9B,CACF,EACC,IAAI,EAGT,mBAAmB,CAAC,EAAiB,EAA2B,CAC9D,KAAK,GAAG,UACL,OAAO,CAAc,EACrB,MAAM,EAAI,EAAG,EAAe,QAAS,CAAO,EAAG,EAAG,EAAe,YAAa,CAAW,CAAC,CAAC,EAC3F,IAAI,EAGT,eAAe,CAAC,EAQK,CACnB,OAAO,KAAK,GAAG,UACZ,OAAO,CACN,QAAS,EAAe,QACxB,KAAM,EAAe,KACrB,YAAa,EAAe,YAC5B,cAAe,EAAe,cAC9B,YAAa,EAAe,YAC5B,cAAe,EAAe,cAC9B,SAAU,EAAe,QAC3B,CAAC,EACA,KAAK,CAAc,EACnB,MACC,EACE,EAAK,UAAY,OAAY,EAAG,EAAe,QAAS,EAAK,OAAO,EAAI,OACxE,EAAK,cAAgB,OACjB,EAAG,EAAe,YAAa,EAAK,WAAW,EAC/C,OACJ,EAAK,gBAAkB,OACnB,EAAG,EAAe,cAAe,EAAK,aAAa,EACnD,OACJ,EAAK,cAAgB,OACjB,EAAG,EAAe,YAAa,EAAK,WAAW,EAC/C,OACJ,EAAK,gBAAkB,OACnB,EAAG,EAAe,cAAe,EAAK,aAAa,EACnD,OACJ,EAAK,OAAS,OAAY,EAAG,EAAe,KAAM,EAAK,IAAI,EAAI,MACjE,CACF,EACC,MAAM,EAAK,KAAK,EAChB,IAAI,EAGT,iBAAiB,CACf,EACA,EACA,EACA,EACA,EACM,CACN,IAAM,EAAY,IAAc,KAC5B,EACE,EAAG,EAAe,QAAS,CAAO,EAClC,EAAG,EAAe,YAAa,CAAO,EACtC,GAAO,EAAe,aAAa,CACrC,EACA,EACE,EAAG,EAAe,QAAS,CAAO,EAClC,EAAG,EAAe,YAAa,CAAO,EACtC,EAAG,EAAe,cAAe,CAAS,CAC5C,EAEJ,KAAK,GAAG,UACL,OAAO,CAAc,EACrB,IAAI,CAAE,YAAa,EAAS,cAAe,CAAU,CAAC,EACtD,MAAM,CAAS,EACf,IAAI,EAEX,CC5MA,cAAS,wBAKT,oBAAS,yBAIT,qBAWA,IAAM,GAA0C,CAC9C,aACA,gBACA,aACA,oBACF,EAEM,GAAoB,IAAI,IAAI,CAAC,eAAgB,eAAe,CAAC,EAEnE,SAAS,EAAa,CAAC,EAAuB,CAC5C,OAAO,EAAM,WAAW,KAAM,GAAG,EAGnC,SAAS,EAAY,CAAC,EAA8C,CAClE,GAAI,IAAS,SACX,MAAO,SAGT,GAAI,IAAS,SACX,MAAO,SAGT,MAAO,SAGF,MAAM,EAAe,CAC1B,GACA,GACA,GACA,GACA,GACA,GAEA,WAAW,CAAC,EAAyB,EAA2B,GAAiB,EAAiB,QAAS,CACzG,KAAK,GAAY,EAAQ,YACzB,KAAK,GAAe,CAAC,GAAG,GAAsB,GAAI,EAAQ,gBAAkB,CAAC,CAAE,EAC/E,KAAK,GAAc,IAAI,KACpB,EAAQ,YAAc,CAAC,MAAO,OAAQ,MAAM,GAAG,IAAI,CAAC,IACnD,EAAI,YAAY,CAClB,CACF,EACA,KAAK,GAAa,EAClB,KAAK,GAAU,OAGX,MAAK,CAAC,EAAiF,CAC3F,GAAI,CACF,KAAK,GAAgB,MAAM,KAAK,GAC9B,KAAK,GACL,CAAC,EAAO,IAAW,CACjB,GAAI,EAAO,CACT,KAAK,GAAQ,MAAM,EAAa,UAAW,iBAAkB,CAAK,CAAC,EACnE,OAGF,GAAI,CACF,QAAW,KAAY,EAAQ,CAC7B,IAAM,EAAe,GAAc,GAAK,SAAS,KAAK,GAAW,EAAS,IAAI,CAAC,EAE/E,GAAI,EAAa,WAAW,IAAI,EAC9B,SAGF,IAAM,EAAW,GAAK,SAAS,CAAY,EACrC,EAAY,GAAK,QAAQ,CAAY,EAAE,YAAY,EAGzD,GAAI,CAFiB,GAAkB,IAAI,CAAQ,GAE9B,CAAC,KAAK,GAAY,IAAI,CAAS,EAClD,SAGF,GAAI,EAAa,SAAS,OAAO,EAC/B,SAGF,EAAS,CACP,UAAW,GAAa,EAAS,IAAI,EACrC,SAAU,CACZ,CAAC,GAEH,MAAO,EAAe,CACtB,KAAK,GAAQ,MAAM,EAAa,UAAW,iBAAkB,CAAa,CAAC,IAG/E,CACE,OAAQ,KAAK,EACf,CACF,EACA,MAAO,EAAO,CACd,OAAO,GAAI,EAAa,UAAW,8BAA+B,CAAK,CAAC,QAItE,MAAK,EAAwC,CACjD,GAAI,CAAC,KAAK,GACR,OAGF,GAAI,CACF,MAAM,KAAK,GAAc,YAAY,EACrC,KAAK,GAAgB,OACrB,MAAO,EAAO,CACd,OAAO,GAAI,EAAa,UAAW,0BAA2B,CAAK,CAAC,GAG1E,CC7HA,qBACA,mBAAS,YAcT,IAAM,GAAoB,CAAC,qBAAsB,aAAc,gBAAiB,YAAY,EAE5F,eAAsB,EAAgB,CAAC,EAAiD,CACtF,IAAM,EAAgC,CAAC,EAEvC,cAAiB,KAAuB,GAAG,KAAK,kBAAmB,CACjE,IAAK,EACL,QAAS,EACX,CAAC,EAAG,CACF,IAAM,EAAa,GAAK,QAAQ,CAAmB,EAAE,WAAW,KAAM,GAAG,EACnE,EAAc,GAAK,KAAK,EAAa,CAAmB,EACxD,EAAU,MAAM,IAAI,KAAK,CAAW,EAAE,KAAK,EAE3C,EACJ,OAAO,GAAS,OAAS,UAAY,EAAQ,KAAK,OAAS,EACvD,EAAQ,KACR,GAAK,SAAS,IAAe,IAAM,EAAc,CAAU,EAEjE,EAAW,KAAK,CACd,IAAK,EACL,QAAS,CACX,CAAC,EAIH,OADA,EAAW,KAAK,CAAC,EAAM,IAAU,EAAM,IAAI,OAAS,EAAK,IAAI,MAAM,EAC5D,EAGF,SAAS,CAAkB,CAChC,EACA,EACA,EAAc,UACN,CACR,IAAM,EAAqB,EAAS,WAAW,KAAM,GAAG,EACxD,QAAW,KAAY,EAAY,CACjC,GAAI,EAAS,MAAQ,IACnB,OAAO,EAAS,QAGlB,GACE,IAAuB,EAAS,KAChC,EAAmB,WAAW,GAAG,EAAS,MAAM,EAEhD,OAAO,EAAS,QAIpB,OAAO,EC9DT,qBAOA,IAAM,EAAQ,IAAI,IAElB,eAAe,EAAU,CAAC,EAA6D,CACrF,IAAM,EAAO,IAAI,KAAK,CAAU,EAChC,GAAI,CAAE,MAAM,EAAK,OAAO,EACtB,OAAO,KAGT,IAAM,EAAS,MAAM,EAAK,KAAK,EAC/B,OAAO,OAAO,IAAW,UAAY,IAAW,KAAQ,EAAqC,KAG/F,eAAsB,EAAiB,CAAC,EAAoD,CAC1F,GAAI,EAAM,IAAI,CAAW,EACvB,OAAO,EAAM,IAAI,CAAW,GAAK,KAGnC,IAAM,EAAe,GAAK,KAAK,EAAa,eAAe,EAErD,EAAS,MAAM,GAAW,CAAY,EAC5C,GAAI,CAAC,EAEH,OADA,EAAM,IAAI,EAAa,IAAI,EACpB,KAGT,IAAM,EACJ,OAAO,EAAO,kBAAoB,UAAY,EAAO,kBAAoB,KACpE,EAAO,gBACR,KAEN,GAAI,CAAC,EAEH,OADA,EAAM,IAAI,EAAa,IAAI,EACpB,KAGT,IAAM,EAAa,OAAO,EAAgB,UAAY,SAAW,EAAgB,QAAU,KACrF,EACJ,OAAO,EAAgB,QAAU,UAAY,EAAgB,QAAU,KAClE,EAAgB,MACjB,KAEN,GAAI,CAAC,GAAc,CAAC,EAElB,OADA,EAAM,IAAI,EAAa,IAAI,EACpB,KAGT,IAAM,EAAkB,EAAa,GAAK,QAAQ,EAAa,CAAU,EAAI,EACvE,EAAQ,IAAI,IAElB,GAAI,EACF,QAAY,EAAS,KAAY,OAAO,QAAQ,CAAQ,EAAG,CACzD,GAAI,CAAC,MAAM,QAAQ,CAAO,EACxB,SAGF,IAAM,EAAoB,EAAQ,OAAO,CAAC,IAA2B,OAAO,IAAU,QAAQ,EAC9F,EAAM,IAAI,EAAS,CAAiB,EAIxC,IAAM,EAAwB,CAC5B,QAAS,EACT,OACF,EAGA,OADA,EAAM,IAAI,EAAa,CAAM,EACtB,EAGF,SAAS,EAAuB,CAAC,EAA4B,CAClE,GAAI,EAAa,CACf,EAAM,OAAO,CAAW,EACxB,OAGF,EAAM,MAAM,EClFd,qBAEO,SAAS,EAAc,CAAC,EAAqB,EAA8B,CAChF,OAAO,GAAK,SAAS,EAAa,CAAY,EAAE,WAAW,KAAM,GAAG,EAG/D,SAAS,EAAc,CAAC,EAAqB,EAA8B,CAChF,OAAO,GAAK,QAAQ,EAAa,CAAY,ECPxC,SAAS,CAAU,CAAC,EAAuB,CAChD,IAAM,EAAM,IAAI,KAAK,SAAS,CAAK,EAEnC,OADiB,OAAO,QAAQ,GAAI,OAAO,CAAG,CAAC,EAC/B,SAAS,EAAE,EAAE,SAAS,GAAI,GAAG,ECI/C,gBAAS,wBCPT,mBAAS,YACT,eAAS,cA2BT,eAAsB,EAAa,CAAC,EAA0D,CAC5F,IAAQ,cAAa,aAAY,iBAAgB,YAAa,EAExD,EAAc,EAAS,YAAY,EACnC,EAAY,IAAI,IAChB,EAA8B,CAAC,EAC/B,EAAgC,CAAC,EAEjC,EAAc,EAAe,IAAI,CAAC,IAAM,IAAI,IAAI,KAAK,CAAC,CAAC,EAE7D,cAAiB,KAAgB,GAAW,KAAK,OAAQ,CAAE,IAAK,CAAY,CAAC,EAAG,CAC9E,GAAI,CAAC,EAAW,KAAK,CAAC,IAAQ,EAAa,SAAS,CAAG,CAAC,EAAG,SAE3D,GAAI,EAAY,KAAK,CAAC,IAAM,EAAE,MAAM,CAAY,CAAC,EAAG,SAEpD,EAAU,IAAI,CAAY,EAE1B,IAAM,EAAU,GAAK,EAAa,CAAY,EACxC,EAAU,IAAI,KAAK,CAAO,GACxB,OAAM,aAAc,GAAY,EAElC,EAAW,EAAY,IAAI,CAAY,EAE7C,GAAI,CAAC,EAAU,CACb,IAAM,EAAO,MAAM,EAAQ,KAAK,EAC1B,EAAc,EAAW,CAAI,EACnC,EAAQ,KAAK,CAAE,SAAU,EAAc,cAAa,UAAS,MAAK,CAAC,EACnE,SAGF,GAAI,EAAS,UAAY,GAAW,EAAS,OAAS,EAAM,CAC1D,EAAU,KAAK,CAAE,SAAU,EAAc,YAAa,EAAS,YAAa,UAAS,MAAK,CAAC,EAC3F,SAGF,IAAM,EAAO,MAAM,EAAQ,KAAK,EAC1B,EAAc,EAAW,CAAI,EACnC,GAAI,IAAgB,EAAS,YAC3B,EAAU,KAAK,CAAE,SAAU,EAAc,cAAa,UAAS,MAAK,CAAC,EAErE,OAAQ,KAAK,CAAE,SAAU,EAAc,cAAa,UAAS,MAAK,CAAC,EAIvE,IAAM,EAAoB,CAAC,EAC3B,QAAW,KAAY,EAAY,KAAK,EACtC,GAAI,CAAC,EAAU,IAAI,CAAQ,EACzB,EAAQ,KAAK,CAAQ,EAIzB,MAAO,CAAE,UAAS,YAAW,SAAQ,ECxCvC,SAAS,EAAc,CAAC,EAAqC,CAC3D,GAAI,EAAI,OAAS,YAAc,EAAI,OAAS,SAAU,CACpD,IAAM,EAAa,EAAI,YAAY,QAAU,EACvC,EAAU,EAAI,UAAU,SAAS,OAAO,EAAI,EAAI,EACtD,MAAO,UAAU,WAAoB,IAEvC,OAAO,KAGT,SAAS,EAAe,CAAC,EAAqC,CAC5D,IAAM,EAAkC,CAAC,EAEzC,GAAI,EAAI,MAAO,EAAO,MAAQ,EAAI,MAElC,GAAI,EAAI,OAAS,YAAc,EAAI,OAAS,SAAU,CACpD,GAAI,EAAI,aAAe,OAAW,EAAO,WAAa,EAAI,WAC1D,GAAI,EAAI,aAAe,OAAW,EAAO,WAAa,EAAI,WAG5D,GAAI,EAAI,UAAU,OAAQ,EAAO,SAAW,EAAI,SAChD,GAAI,EAAI,YAAY,OAAQ,EAAO,WAAa,EAAI,WACpD,GAAI,EAAI,gBAAgB,OAAQ,EAAO,eAAiB,EAAI,eAC5D,GAAI,EAAI,WAAW,OAAQ,EAAO,UAAY,EAAI,UAClD,GAAI,EAAI,SAAS,OACf,EAAO,QAAU,EAAI,QAAQ,IAAI,CAAC,IAAM,CACtC,IAAM,EAAa,EAAE,UAAU,KAC7B,CAAC,IAAgB,IAAQ,WAAa,IAAQ,aAAe,IAAQ,QACvE,EACA,MAAO,CACL,KAAM,EAAE,KACR,KAAM,EAAE,YAAc,EAAE,KACxB,KAAM,EAAE,WACR,aACA,SAAU,EAAE,UAAU,SAAS,QAAQ,GAAK,OAC5C,WAAY,EAAE,UAAU,SAAS,UAAU,GAAK,MAClD,EACD,EAGH,OAAO,OAAO,KAAK,CAAM,EAAE,OAAS,EAAI,KAAK,UAAU,CAAM,EAAI,KAGnE,SAAS,EAAQ,CACf,EACA,EACA,EACA,EACA,EACa,CACb,IAAM,EAAY,GAAe,CAAG,EAC9B,EAAc,EAAW,GAAG,KAAQ,EAAI,QAAQ,GAAa,IAAI,EAEvE,MAAO,CACL,UACA,WACA,KAAM,EAAI,KACV,OACA,UAAW,EAAI,KAAK,MAAM,KAC1B,YAAa,EAAI,KAAK,MAAM,OAC5B,QAAS,EAAI,KAAK,IAAI,KACtB,UAAW,EAAI,KAAK,IAAI,OACxB,WAAY,EAAI,WAAa,EAAI,EACjC,YACA,cACA,WAAY,GAAgB,CAAG,EAC/B,cACA,UAAW,IAAI,KAAK,EAAE,YAAY,CACpC,EAGK,SAAS,EAAgB,CAAC,EAAqC,CACpE,IAAQ,SAAQ,UAAS,WAAU,cAAa,cAAe,EAEzD,EAAY,GAAe,CAAM,EACjC,EAAsB,CAAC,EAE7B,QAAW,KAAO,EAAW,CAC3B,EAAK,KAAK,GAAS,EAAK,EAAI,KAAM,EAAS,EAAU,CAAW,CAAC,EAEjE,QAAW,KAAU,EAAI,SAAW,CAAC,EACnC,EAAK,KAAK,GAAS,EAAQ,GAAG,EAAI,QAAQ,EAAO,OAAQ,EAAS,EAAU,CAAW,CAAC,EAI5F,EAAW,mBAAmB,EAAS,EAAU,EAAa,CAAI,EC3F7D,SAAS,EAAkB,CAAC,EAAyC,CAC1E,IAAQ,MAAK,UAAS,WAAU,eAAc,cAAa,iBAAkB,EAEvE,EAAc,GAAe,EAAa,CAAQ,EAClD,EAAe,GAAiB,EAAK,EAAa,CAAa,EAE/D,EAAwB,CAAC,EAE/B,QAAW,KAAO,EAAc,CAC9B,IAAM,EAAS,GAAe,EAAa,EAAI,WAAW,EAE1D,GAAI,EAAO,WAAW,IAAI,EAAG,SAE7B,IAAM,EAAS,GAAe,EAAa,EAAI,WAAW,EAE1D,EAAK,KAAK,CACR,UACA,KAAM,EAAI,KACV,YAAa,EACb,cAAe,EAAI,eAAiB,KACpC,YAAa,EACb,cAAe,EAAI,eAAiB,KACpC,SAAU,EAAI,UAAY,IAC5B,CAAC,EAIH,OADA,EAAa,qBAAqB,EAAS,EAAU,CAAI,EAClD,EAAK,OHzCP,IAAM,GAAsB,IAoE5B,MAAM,EAAiB,CACX,KACA,OAEA,UAAY,IAAI,IAEzB,aAAe,GAEf,cAAmC,CAAC,EAEpC,cAAsD,KAEtD,gBAA+C,KAE/C,iBAAmB,GAEnB,wBAAsG,CAAC,EAEvG,iBAEA,kBAA0C,KAElD,WAAW,CAAC,EAA+B,CACzC,KAAK,KAAO,EACZ,KAAK,OAAS,EAAK,QAAU,QAC7B,KAAK,iBAAmB,GAAkB,EAAK,WAAW,KAGxD,cAAa,EAAkC,CACjD,OAAO,KAAK,iBAGd,SAAS,EAAyB,CAChC,OAAO,KAAK,WAAW,OAAW,EAAI,EAGxC,gBAAgB,CAAC,EAAkD,CACjE,OAAO,KAAK,WAAW,EAAQ,EAAK,EAGtC,SAAS,CAAC,EAA+C,CAEvD,OADA,KAAK,UAAU,IAAI,CAAE,EACd,IAAM,KAAK,UAAU,OAAO,CAAE,EAGvC,kBAAkB,CAAC,EAA8B,CAC/C,GAAI,EAAM,SAAS,SAAS,eAAe,EAAG,CAC5C,GAAwB,KAAK,KAAK,WAAW,EAC7C,KAAK,iBAAmB,GAAkB,KAAK,KAAK,WAAW,EAC/D,KAAK,UAAU,EAAE,MAAM,CAAC,IAAQ,CAC9B,KAAK,OAAO,MAAM,6DAA8D,CAAG,EACpF,EACD,OAGF,GAAI,EAAM,SAAS,SAAS,cAAc,EAAG,CAC3C,IAAM,EAAW,KAAK,KAAK,oBAAsB,GACjD,KAAK,kBAAoB,EAAS,KAAK,KAAK,WAAW,EAAE,KAAK,CAAC,IAAM,CACnE,KAAK,KAAK,WAAa,EACxB,EAKH,GAFA,KAAK,cAAc,KAAK,CAAK,EAEzB,KAAK,gBAAkB,KACzB,KAAK,cAAgB,WAAW,IAAM,CACpC,KAAK,cAAgB,KACrB,KAAK,aAAa,GACjB,EAAmB,OAIpB,SAAQ,EAAkB,CAC9B,GAAI,KAAK,gBAAkB,KACzB,aAAa,KAAK,aAAa,EAC/B,KAAK,cAAgB,KAEvB,GAAI,KAAK,gBACP,MAAM,KAAK,gBAIP,UAAU,CAAC,EAAuC,EAA+C,CACvG,GAAI,KAAK,aAAc,CACrB,GAAI,EAEF,OADA,KAAK,iBAAmB,GACjB,IAAI,QAAqB,CAAC,EAAS,IAAW,CACnD,KAAK,wBAAwB,KAAK,CAAE,UAAS,QAAO,CAAC,EACtD,EAEH,OAAO,KAAK,gBAEd,KAAK,aAAe,GAEpB,IAAM,EAAO,KAAK,QAAQ,EAAQ,CAAc,EAC7C,KAAK,CAAC,IAAW,CAEhB,OADA,KAAK,cAAc,CAAM,EAClB,EACR,EACA,QAAQ,IAAM,CAGb,GAFA,KAAK,aAAe,GACpB,KAAK,gBAAkB,KACnB,KAAK,iBAAkB,CACzB,KAAK,iBAAmB,GACxB,IAAM,EAAU,KAAK,wBAAwB,OAAO,CAAC,EACrD,KAAK,WAAW,OAAW,EAAI,EAC5B,KAAK,CAAC,IAAW,CAChB,QAAW,KAAU,EAAS,EAAO,QAAQ,CAAM,EACpD,EACA,MAAM,CAAC,IAAU,CAChB,QAAW,KAAU,EAAS,EAAO,OAAO,CAAK,EAClD,EACE,QAAI,KAAK,cAAc,OAAS,EAAG,CACxC,IAAM,EAAU,KAAK,cAAc,OAAO,CAAC,EAC3C,KAAK,WAAW,EAAS,EAAK,EAAE,MAAM,CAAC,IACrC,KAAK,OAAO,MAAM,6CAA8C,CAAG,CACrE,GAEH,EAGH,OADA,KAAK,gBAAkB,EAChB,OAGK,QAAO,CAAC,EAAuC,EAA+C,CAC1G,IAAM,EAAQ,KAAK,IAAI,GACf,WAAU,aAAY,eAAc,gBAAiB,KAAK,KAElE,GAAI,KAAK,kBACP,MAAM,KAAK,kBACX,KAAK,kBAAoB,KAG3B,IAAI,EACA,EAEJ,GAAI,IAAW,OACb,EAAU,EACP,OAAO,CAAC,IAAM,EAAE,YAAc,UAAY,EAAE,YAAc,QAAQ,EAClE,IAAI,CAAC,KAAO,CACX,SAAU,EAAE,SACZ,YAAa,GACb,QAAS,EACT,KAAM,CACR,EAAE,EACJ,EAAU,EAAO,OAAO,CAAC,IAAM,EAAE,YAAc,QAAQ,EAAE,IAAI,CAAC,IAAM,EAAE,QAAQ,EACzE,KACL,IAAM,EAAc,IAAI,IACxB,QAAW,KAAY,KAAK,KAAK,WAC/B,QAAY,EAAK,KAAQ,EAAS,YAAY,EAAS,OAAO,EAC5D,EAAY,IAAI,EAAK,CAAG,EAG5B,IAAM,EAAS,MAAM,GAAc,CACjC,YAAa,KAAK,KAAK,YACvB,WAAY,KAAK,KAAK,WACtB,eAAgB,KAAK,KAAK,eAC1B,SAAU,CAAE,YAAa,IAAM,CAAY,CAC7C,CAAC,EACD,EAAU,EAAO,QACjB,EAAU,EAAO,QAGnB,IAAM,EAAiB,MAAM,KAAK,kBAAqB,OAEjD,EAAiB,IAAI,IAC3B,QAAW,KAAY,EAAS,CAC9B,IAAM,EAAU,EAAmB,EAAU,KAAK,KAAK,UAAU,EAC3D,EAAO,EAAW,eAAe,EAAS,CAAQ,EACxD,EAAe,IAAI,EAAU,CAAI,EAKnC,IAAM,EAAiB,IAAI,IACrB,EAAgB,IAAI,IAE1B,GAAI,EAEF,QAAW,KAAY,KAAK,KAAK,WAC/B,QAAW,KAAK,EAAS,YAAY,EAAS,OAAO,EACnD,QAAW,KAAO,EAAW,eAAe,EAAS,QAAS,EAAE,QAAQ,EACtE,EAAe,IAAI,GAAG,EAAI,aAAa,EAAI,OAAQ,CACjD,KAAM,EAAI,KAAM,SAAU,EAAI,SAAU,KAAM,EAAI,KAAM,YAAa,EAAI,WAC3E,CAAC,EAIF,KAEL,QAAW,KAAQ,EAAS,CAC1B,IAAM,EAAU,EAAmB,EAAK,SAAU,KAAK,KAAK,UAAU,EACtE,QAAW,KAAO,EAAW,eAAe,EAAS,EAAK,QAAQ,EAChE,EAAe,IAAI,GAAG,EAAI,aAAa,EAAI,OAAQ,CACjD,KAAM,EAAI,KAAM,SAAU,EAAI,SAAU,KAAM,EAAI,KAAM,YAAa,EAAI,WAC3E,CAAC,EAIL,SAAc,KAAS,EACrB,QAAW,KAAO,EAChB,EAAe,IAAI,GAAG,EAAI,aAAa,EAAI,OAAQ,CACjD,KAAM,EAAI,KAAM,SAAU,EAAI,SAAU,KAAM,EAAI,KAAM,YAAa,EAAI,WAC3E,CAAC,EAKP,IAAM,EAAiB,IAAM,CAC3B,QAAW,KAAY,EAAS,CAC9B,IAAM,EAAU,EAAmB,EAAU,KAAK,KAAK,UAAU,EACjE,EAAW,kBAAkB,EAAS,CAAQ,EAC9C,EAAa,oBAAoB,EAAS,CAAQ,EAClD,EAAS,WAAW,EAAS,CAAQ,IAInC,EAAiB,SAAoF,CACzG,IAAI,EAAU,EACV,EAAY,EACV,EAAwB,CAAC,EAC/B,QAAW,KAAQ,EACjB,GAAI,CACF,IAAM,EAAI,MAAM,KAAK,YAAY,EAAK,SAAU,EAAK,aAAe,OAAW,CAAa,EAC5F,GAAW,EAAE,YACb,GAAa,EAAE,SACf,MAAO,EAAK,CACZ,KAAK,OAAO,MAAM,sCAAsC,EAAK,YAAa,CAAG,EAC7E,EAAY,KAAK,EAAK,QAAQ,EAGlC,MAAO,CAAE,UAAS,YAAW,aAAY,GAGvC,EAAe,EACf,EAAiB,EACjB,EAA2B,CAAC,EAEhC,GAAI,EAAgB,CAClB,IAAQ,cAAa,cAAe,KAAK,MACjC,cAAe,KAAK,KACtB,EAAiB,MAAM,QAAQ,WACnC,EAAQ,IAAI,MAAO,IAAS,CAC1B,IAAM,EAAU,GAAe,EAAa,EAAK,QAAQ,EACnD,EAAU,IAAI,KAAK,CAAO,EAC1B,EAAO,MAAM,EAAQ,KAAK,EAC1B,EAAc,EAAK,aAAe,EAAW,CAAI,EACvD,MAAO,CAAE,SAAU,EAAK,SAAU,OAAM,cAAa,QAAS,EAAQ,aAAc,KAAM,EAAQ,IAAK,EACxG,CACH,EACM,EAAU,EACb,OAAO,CAAC,IAA2H,EAAE,SAAW,WAAW,EAC3J,IAAI,CAAC,IAAM,EAAE,KAAK,EACrB,QAAW,KAAK,EACd,GAAI,EAAE,SAAW,WACf,KAAK,OAAO,MAAM,8CAA+C,EAAE,MAAM,EAI7E,IAAM,EAAmE,CAAC,EAE1E,EAAa,YAAY,IAAM,CAC7B,QAAW,KAAY,EAAY,CACjC,IAAM,EAAe,EAAS,YAAY,EAAS,OAAO,EAC1D,QAAW,KAAK,EACd,EAAS,WAAW,EAAE,QAAS,EAAE,QAAQ,EAM7C,QAAW,KAAM,EAAS,CACxB,IAAM,EAAU,EAAmB,EAAG,SAAU,CAAU,EAC1D,EAAS,WAAW,CAClB,UACA,SAAU,EAAG,SACb,QAAS,EAAG,QACZ,KAAM,EAAG,KACT,YAAa,EAAG,YAChB,UAAW,IAAI,KAAK,EAAE,YAAY,EAClC,UAAW,EAAG,KAAK,MAAM;AAAA,CAAI,EAAE,MACjC,CAAC,EAIH,IAAM,EAAU,KAAK,KAAK,eAAiB,GAC3C,QAAW,KAAM,EAAS,CACxB,IAAM,EAAU,EAAmB,EAAG,SAAU,CAAU,EACpD,EAAc,EAAQ,GAAe,EAAa,EAAG,QAAQ,EAAG,EAAG,IAAI,EAC7E,GAAI,GAAM,CAAW,EAAG,MAAM,EAAY,KAC1C,IAAM,EAAS,EACf,EAAmB,KAAK,CAAE,SAAU,EAAG,SAAU,QAAO,CAAC,EACzD,GAAiB,CAAE,SAAQ,UAAS,SAAU,EAAG,SAAU,YAAa,EAAG,YAAa,YAAW,CAAC,EACpG,GAAkB,GAAmB,CACnC,IAAK,EAAO,QACZ,UACA,SAAU,EAAG,SACb,eACA,cACA,eACF,CAAC,EACD,GAAgB,EAAW,eAAe,EAAS,EAAG,QAAQ,EAAE,QAEnE,EAED,QAAW,KAAS,EAClB,EAAW,IAAI,EAAM,SAAU,EAAM,MAAM,EAExC,KACL,EAAe,EACf,IAAM,EAAS,MAAM,EAAe,EACpC,EAAe,EAAO,QACtB,EAAiB,EAAO,UACxB,EAAiB,EAAO,YAI1B,QAAW,KAAQ,EAAS,CAC1B,IAAM,EAAU,EAAmB,EAAK,SAAU,KAAK,KAAK,UAAU,EACtE,QAAW,KAAO,EAAW,eAAe,EAAS,EAAK,QAAQ,EAChE,EAAc,IAAI,GAAG,EAAI,aAAa,EAAI,OAAQ,CAChD,KAAM,EAAI,KAAM,SAAU,EAAI,SAAU,KAAM,EAAI,KAAM,YAAa,EAAI,WAC3E,CAAC,EAKL,IAAM,EAAgD,CAAE,MAAO,CAAC,EAAG,SAAU,CAAC,EAAG,QAAS,CAAC,CAAE,EAC7F,QAAY,EAAK,KAAU,EAAe,CACxC,IAAM,EAAS,EAAe,IAAI,CAAG,EACrC,GAAI,CAAC,EACH,EAAe,MAAM,KAAK,CAAE,KAAM,EAAM,KAAM,SAAU,EAAM,SAAU,KAAM,EAAM,IAAK,CAAC,EACrF,QAAI,EAAO,cAAgB,EAAM,YACtC,EAAe,SAAS,KAAK,CAAE,KAAM,EAAM,KAAM,SAAU,EAAM,SAAU,KAAM,EAAM,IAAK,CAAC,EAGjG,QAAY,EAAK,KAAW,EAC1B,GAAI,CAAC,EAAc,IAAI,CAAG,EACxB,EAAe,QAAQ,KAAK,CAAE,KAAM,EAAO,KAAM,SAAU,EAAO,SAAU,KAAM,EAAO,IAAK,CAAC,EAInG,GAAI,CAAC,EACH,QAAY,EAAS,KAAS,EAC5B,QAAW,KAAO,EAAM,CACtB,GAAI,CAAC,EAAI,YAAa,SACtB,IAAM,EAAa,EAAmB,EAAS,KAAK,KAAK,UAAU,EAC7D,EAAU,EAAW,iBAAiB,EAAY,EAAI,WAAW,EACvE,GAAI,EAAQ,SAAW,EAAG,CACxB,IAAM,EAAS,EAAQ,GACvB,EAAa,kBACX,EACA,EACA,EAAI,KACJ,EAAO,SACP,EAAO,IACT,GAMR,MAAO,CACL,aAAc,EAAQ,OACtB,aAAc,EAAQ,OACtB,eACA,iBACA,WAAY,KAAK,IAAI,EAAI,EACzB,aAAc,EAAQ,IAAI,CAAC,IAAM,EAAE,QAAQ,EAC3C,aAAc,CAAC,GAAG,CAAO,EACzB,YAAa,EACb,gBACF,OAGY,YAAW,CACvB,EACA,EACA,EACoD,CACpD,IAAQ,cAAa,cAAe,KAAK,MACjC,WAAU,aAAY,eAAc,cAAe,KAAK,KAE1D,EAAU,GAAe,EAAa,CAAQ,EAC9C,EAAU,IAAI,KAAK,CAAO,EAC1B,EAAO,MAAM,EAAQ,KAAK,EAC1B,EAAc,GAAa,EAAW,CAAI,EAE1C,EAAU,EAAmB,EAAU,CAAU,EAGjD,GADU,KAAK,KAAK,eAAiB,IACf,EAAS,CAAI,EACzC,GAAI,GAAM,CAAW,EAAG,MAAM,EAAY,KAC1C,IAAM,EAAS,EACf,EAAW,IAAI,EAAU,CAAM,EAE/B,EAAS,WAAW,CAClB,UACA,WACA,QAAS,EAAQ,aACjB,KAAM,EAAQ,KACd,cACA,UAAW,IAAI,KAAK,EAAE,YAAY,EAClC,UAAW,EAAK,MAAM;AAAA,CAAI,EAAE,MAC9B,CAAC,EAED,GAAiB,CAAE,SAAQ,UAAS,WAAU,cAAa,YAAW,CAAC,EAEvE,IAAM,EAAW,GAAmB,CAClC,IAAK,EAAO,QACZ,UACA,WACA,eACA,cACA,eACF,CAAC,EAGD,MAAO,CAAE,YADW,EAAW,eAAe,EAAS,CAAQ,EAAE,OAC3C,UAAS,EAGzB,aAAa,CAAC,EAA2B,CAC/C,QAAW,KAAM,KAAK,UACpB,GAAI,CACF,EAAG,CAAM,EACT,MAAO,EAAK,CACZ,KAAK,OAAO,MAAM,+CAAgD,CAAG,GAKnE,YAAY,EAAS,CAC3B,GAAI,KAAK,aACP,OAEF,GAAI,KAAK,cAAc,OAAS,EAAG,CACjC,IAAM,EAAS,KAAK,cAAc,OAAO,CAAC,EAC1C,KAAK,WAAW,EAAQ,EAAK,EAAE,MAAM,CAAC,IACpC,KAAK,OAAO,MAAM,oDAAqD,CAAG,CAC5E,GAGN,CI1fA,SAAS,EAAc,CAAC,EAAsB,CAC5C,GAAI,CAEF,OADA,QAAQ,KAAK,EAAK,CAAC,EACZ,GACP,MAAO,EAAO,CACd,GAAI,OAAO,IAAU,UAAY,GAAS,SAAU,EAClD,OAAQ,EAA4B,OAAS,QAG/C,MAAO,IAIX,SAAS,EAAS,CAAC,EAAuB,CACxC,IAAM,EAAK,IAAI,KAAK,CAAK,EAAE,QAAQ,EACnC,OAAO,OAAO,MAAM,CAAE,EAAI,EAAI,EAGzB,SAAS,EAAkB,CAChC,EACA,EACA,EAA0B,CAAC,EACd,CACb,IAAM,EAAM,EAAQ,KAAO,KAAK,IAC1B,EAAU,EAAQ,SAAW,GAC7B,EAAoB,EAAQ,mBAAqB,GAEvD,OAAO,EAAG,qBAAqB,IAAM,CACnC,IAAM,EAAQ,EAAG,YAAY,EAC7B,GAAI,CAAC,EAEH,OADA,EAAG,YAAY,CAAG,EACX,QAGT,IAAM,EAAsB,KAAK,OAAO,EAAI,EAAI,GAAU,EAAM,YAAY,GAAK,IAAI,EACrF,GAAI,EAAQ,EAAM,GAAG,GAAK,EAAsB,EAC9C,MAAO,SAIT,OADA,EAAG,aAAa,CAAG,EACZ,QACR,EAGI,SAAS,EAAkB,CAAC,EAAuB,EAAmB,CAC3E,EAAG,YAAY,CAAG,EAGb,SAAS,EAAe,CAAC,EAAuB,EAAmB,CACxE,EAAG,WAAW,CAAG,ECSZ,SAAS,EAAY,CAAC,EAIJ,CACvB,IAAQ,aAAY,UAAS,SAAU,EACjC,EAAmB,EAAM,SAAW,EACpC,EAAQ,EAAM,OAAS,IAEvB,EAAoD,CACxD,KAAM,EAAM,KACZ,SAAU,EAAM,SAChB,WAAY,EAAM,WAClB,QAAS,EACT,OACF,EAEA,GAAI,EAAM,KACR,GAAI,EAAM,MACR,EAAK,UAAY,EAAM,KAClB,KACL,IAAM,EAAW,GAAiB,EAAM,IAAI,EAC5C,GAAI,EAAU,EAAK,SAAW,EAIlC,GAAI,EAAM,UAAW,EAAK,UAAY,EAAM,UAC5C,GAAI,EAAM,MAAO,EAAK,MAAQ,EAAM,MAIpC,OAFgB,EAAW,cAAc,CAAI,EAE9B,IAAI,MAAM,CACvB,GAAI,EAAE,GACN,SAAU,EAAE,SACZ,KAAM,EAAE,KACR,KAAM,EAAE,KACR,KAAM,CACJ,MAAO,CAAE,KAAM,EAAE,UAAW,OAAQ,EAAE,WAAY,EAClD,IAAK,CAAE,KAAM,EAAE,QAAS,OAAQ,EAAE,SAAU,CAC9C,EACA,WAAY,EAAE,aAAe,EAC7B,UAAW,EAAE,UACb,YAAa,EAAE,YACf,OAAQ,EAAE,YAAc,IAAM,CAC5B,GAAI,CAAE,OAAO,KAAK,MAAM,EAAE,UAAW,EACrC,KAAM,CAAE,MAAO,CAAC,KACf,EAAI,CAAC,CACV,EAAE,ECpFG,SAAS,EAAc,CAAC,EAIZ,CACjB,IAAQ,eAAc,UAAS,SAAU,EACnC,EAAmB,EAAM,SAAW,EACpC,EAAQ,EAAM,OAAS,IAY7B,OAVgB,EAAa,gBAAgB,CAC3C,YAAa,EAAM,YACnB,cAAe,EAAM,cACrB,YAAa,EAAM,YACnB,cAAe,EAAM,cACrB,KAAM,EAAM,KACZ,QAAS,EACT,OACF,CAAC,EAEc,IAAI,KAAK,CACtB,IAAI,EACJ,GAAI,EAAE,SACJ,GAAI,CACF,EAAO,KAAK,MAAM,EAAE,QAAQ,EAC5B,KAAM,CACN,QAAQ,MAAM,uCAAwC,EAAE,QAAQ,EAGpE,MAAO,CACL,KAAM,EAAE,KACR,YAAa,EAAE,YACf,cAAe,EAAE,cACjB,YAAa,EAAE,YACf,cAAe,EAAE,cACjB,SAAU,EAAE,UAAY,OACxB,MACF,EACD,EC3DI,MAAM,EAAgB,CAKR,QAJX,cAAgB,IAAI,IACpB,qBAAuB,IAAI,IAEnC,WAAW,CACQ,EAIjB,CAJiB,eAWnB,KAAK,EAAS,CACZ,KAAK,cAAgB,IAAI,IACzB,KAAK,qBAAuB,IAAI,IAEhC,IAAM,EAAY,CAChB,GAAG,KAAK,QAAQ,aAAa,UAAU,KAAK,QAAQ,QAAS,SAAS,EACtE,GAAG,KAAK,QAAQ,aAAa,UAAU,KAAK,QAAQ,QAAS,iBAAiB,EAC9E,GAAG,KAAK,QAAQ,aAAa,UAAU,KAAK,QAAQ,QAAS,YAAY,CAC3E,EAEA,QAAW,KAAO,EAAW,CAC3B,IAAQ,cAAa,eAAgB,EAErC,GAAI,CAAC,KAAK,cAAc,IAAI,CAAW,EACrC,KAAK,cAAc,IAAI,EAAa,IAAI,GAAK,EAK/C,GAHA,KAAK,cAAc,IAAI,CAAW,EAAG,IAAI,CAAW,EAGhD,CAAC,KAAK,cAAc,IAAI,CAAW,EACrC,KAAK,cAAc,IAAI,EAAa,IAAI,GAAK,EAG/C,GAAI,CAAC,KAAK,qBAAqB,IAAI,CAAW,EAC5C,KAAK,qBAAqB,IAAI,EAAa,IAAI,GAAK,EAEtD,KAAK,qBAAqB,IAAI,CAAW,EAAG,IAAI,CAAW,GAS/D,eAAe,CAAC,EAA4B,CAC1C,OAAO,MAAM,KAAK,KAAK,cAAc,IAAI,CAAQ,GAAK,CAAC,CAAC,EAQ1D,aAAa,CAAC,EAA4B,CACxC,OAAO,MAAM,KAAK,KAAK,qBAAqB,IAAI,CAAQ,GAAK,CAAC,CAAC,EASjE,uBAAuB,CAAC,EAA4B,CAClD,IAAM,EAAU,IAAI,IACd,EAAkB,CAAC,CAAQ,EAEjC,MAAO,EAAM,OAAS,EAAG,CACvB,IAAM,EAAU,EAAM,MAAM,EAC5B,QAAW,KAAa,KAAK,qBAAqB,IAAI,CAAO,GAAK,CAAC,EACjE,GAAI,CAAC,EAAQ,IAAI,CAAS,EACxB,EAAQ,IAAI,CAAS,EACrB,EAAM,KAAK,CAAS,EAK1B,OAAO,MAAM,KAAK,CAAO,EAU3B,QAAQ,EAAY,CAClB,IAAM,EAAU,IAAI,IACd,EAAS,IAAI,IAEnB,QAAW,KAAa,KAAK,cAAc,KAAK,EAAG,CACjD,GAAI,EAAQ,IAAI,CAAS,EAAG,SAE5B,IAAM,EAAmD,CAAC,CAAE,KAAM,EAAW,QAAS,EAAM,CAAC,EAE7F,MAAO,EAAM,OAAS,EAAG,CACvB,IAAM,EAAU,EAAM,IAAI,EAE1B,GAAI,EAAQ,QAAS,CACnB,EAAO,OAAO,EAAQ,IAAI,EAC1B,SAGF,GAAI,EAAO,IAAI,EAAQ,IAAI,EACzB,MAAO,GAGT,GAAI,EAAQ,IAAI,EAAQ,IAAI,EAC1B,SAGF,EAAQ,IAAI,EAAQ,IAAI,EACxB,EAAO,IAAI,EAAQ,IAAI,EACvB,EAAM,KAAK,CAAE,KAAM,EAAQ,KAAM,QAAS,EAAK,CAAC,EAEhD,QAAW,KAAY,KAAK,cAAc,IAAI,EAAQ,IAAI,GAAK,CAAC,EAAG,CACjE,GAAI,EAAO,IAAI,CAAQ,EACrB,MAAO,GAET,GAAI,CAAC,EAAQ,IAAI,CAAQ,EACvB,EAAM,KAAK,CAAE,KAAM,EAAU,QAAS,EAAM,CAAC,IAMrD,MAAO,GAYT,mBAAmB,CAAC,EAAkC,CACpD,IAAM,EAAc,IAAI,IAExB,QAAW,KAAQ,EACjB,QAAW,KAAO,KAAK,wBAAwB,CAAI,EACjD,EAAY,IAAI,CAAG,EAIvB,OAAO,MAAM,KAAK,CAAW,EAW/B,gBAAgB,EAA0B,CACxC,IAAM,EAAS,IAAI,IACnB,QAAY,EAAM,KAAU,KAAK,cAC/B,EAAO,IAAI,EAAM,MAAM,KAAK,CAAK,CAAC,EAEpC,OAAO,EAWT,yBAAyB,CAAC,EAA4B,CACpD,IAAM,EAAU,IAAI,IACd,EAAkB,CAAC,CAAQ,EAEjC,MAAO,EAAM,OAAS,EAAG,CACvB,IAAM,EAAU,EAAM,MAAM,EAC5B,QAAW,KAAO,KAAK,cAAc,IAAI,CAAO,GAAK,CAAC,EACpD,GAAI,CAAC,EAAQ,IAAI,CAAG,EAClB,EAAQ,IAAI,CAAG,EACf,EAAM,KAAK,CAAG,EAKpB,OAAO,MAAM,KAAK,CAAO,EAY3B,aAAa,EAAe,CAC1B,IAAM,EAAa,IAAI,IACjB,EAAqB,CAAC,EACtB,EAAgB,IAAI,IACpB,EAAS,IAAI,IACb,EAAiB,CAAC,EAElB,EAAM,CAAC,IAAuB,CAClC,GAAI,EAAc,IAAI,CAAI,EAAG,OAC7B,GAAI,EAAO,IAAI,CAAI,EAAG,CACpB,IAAM,EAAa,EAAO,IAAI,CAAI,EAC5B,EAAQ,EAAK,MAAM,CAAU,EAC7B,EAAU,EAAM,OAAO,CAAC,EAAG,IAAO,GAAK,EAAI,EAAI,CAAE,EACjD,EAAM,EAAM,QAAQ,CAAO,EAC3B,EAAY,CAAC,GAAG,EAAM,MAAM,CAAG,EAAG,GAAG,EAAM,MAAM,EAAG,CAAG,CAAC,EACxD,EAAM,EAAU,KAAK,MAAI,EAC/B,GAAI,CAAC,EAAW,IAAI,CAAG,EACrB,EAAW,IAAI,CAAG,EAClB,EAAO,KAAK,CAAS,EAEvB,OAEF,EAAO,IAAI,EAAM,EAAK,MAAM,EAC5B,EAAK,KAAK,CAAI,EACd,QAAW,KAAY,KAAK,cAAc,IAAI,CAAI,GAAK,CAAC,EACtD,EAAI,CAAQ,EAEd,EAAK,IAAI,EACT,EAAO,OAAO,CAAI,EAClB,EAAc,IAAI,CAAI,GAGxB,QAAW,KAAa,KAAK,cAAc,KAAK,EAC9C,EAAI,CAAS,EAGf,OAAO,EAEX,CC3QA,sBAAS,WAAa,wBAiCtB,eAAsB,EAAa,CAAC,EAAqD,CACvF,GAAI,EAAK,UAAU,SAAW,EAAG,MAAO,CAAC,EAEzC,IAAM,EAA0B,CAAC,EAsBjC,OApBA,MAAM,GACJ,GAAK,WACL,CACE,MAAO,EAAK,UACZ,QAAS,CAAE,KAAM,CAAE,QAAS,EAAK,OAAQ,CAAE,CAC7C,EACA,CAAC,EAAK,IAAU,CACd,GAAI,EAAK,OACT,QAAW,KAAQ,EAAO,CACxB,IAAM,EAAI,EAAK,MAAM,EACrB,EAAQ,KAAK,CACX,SAAU,EAAK,QAAQ,EAAE,SAAS,EAClC,UAAW,EAAE,MAAM,KAAO,EAC1B,QAAS,EAAE,IAAI,KAAO,EACtB,YAAa,EAAK,KAAK,CACzB,CAAC,GAGP,EAEO,EjCvBT,IAAM,GAAwB,MACxB,GAA0B,MAC1B,GAA0B,GAmOzB,MAAM,EAAQ,CAEV,YAEQ,GACA,WACA,aACA,SACA,WACT,YAIA,QACS,qBACA,cACA,iBACA,mBACA,eACA,iBACA,gBACA,WACA,SACA,aACA,0BACA,OACA,eAER,KACD,MAA+C,KAC/C,eAA8C,CAAC,EAC/C,OAAS,GACT,cAAsC,KACtC,WAAgC,CAAC,EACxB,mBAAqB,IAAI,IAElC,WAAqC,KAErC,cAA+B,KAE/B,WAAW,CAAC,EA0BjB,CACD,KAAK,YAAc,EAAK,YACxB,KAAK,GAAK,EAAK,GACf,KAAK,WAAa,EAAK,WACvB,KAAK,aAAe,EAAK,aACzB,KAAK,SAAW,EAAK,SACrB,KAAK,WAAa,EAAK,WACvB,KAAK,YAAc,EAAK,YACxB,KAAK,QAAU,EAAK,QACpB,KAAK,qBAAuB,EAAK,qBACjC,KAAK,cAAgB,EAAK,cAC1B,KAAK,iBAAmB,EAAK,iBAC7B,KAAK,mBAAqB,EAAK,mBAC/B,KAAK,eAAiB,EAAK,eAC3B,KAAK,iBAAmB,EAAK,iBAC7B,KAAK,gBAAkB,EAAK,gBAC5B,KAAK,WAAa,EAAK,WACvB,KAAK,SAAW,EAAK,SACrB,KAAK,aAAe,EAAK,aACzB,KAAK,0BAA4B,EAAK,0BACtC,KAAK,OAAS,EAAK,OACnB,KAAK,eAAiB,EAAK,eAC3B,KAAK,KAAO,EAAK,iBAuBN,KAAI,CAAC,EAA0F,CAC1G,IACE,cACA,aAAa,CAAC,MAAO,OAAQ,MAAM,EACnC,iBAAiB,CAAC,EAClB,qBAAqB,IACrB,SAAS,QACT,eAAe,GACf,sBACA,iBACA,qBACA,oBACA,uBAAuB,GACvB,uBAAuB,GACvB,oBAAoB,GACpB,qBAAqB,GACrB,gBAAgB,GAChB,mBAAmB,GACnB,qBAAqB,GACrB,iBAAiB,GACjB,mBAAmB,GACnB,kBAAkB,GAClB,sBAAsB,GACtB,4BACA,aAAa,MAAO,IAAe,IAAI,KAAK,CAAE,EAAE,KAAK,EACrD,WAAW,MAAO,IAAe,CAAE,MAAM,IAAI,KAAK,CAAE,EAAE,OAAO,GAC7D,aACE,EAEJ,GAAI,CAAC,GAAK,WAAW,CAAW,EAC9B,OAAO,EAAI,EAAa,aAAc,wDAAwD,IAAc,CAAC,EAE/G,GAAI,CAAC,EAAa,CAAW,EAC3B,OAAO,EAAI,EAAa,aAAc,yCAAyC,IAAc,CAAC,EAGhG,IAAM,EAAK,EACP,EAAoB,EACpB,IAAI,GAAa,CAAE,aAAY,CAAC,EAC9B,EAAa,EAAG,KAAK,EAC3B,GAAI,GAAM,CAAU,EAAG,OAAO,EAC9B,GAAI,CAEJ,IAAM,EAAgC,MAAM,EAAmB,CAAW,EACpE,EAAiB,EAAW,IAAI,SAAW,GAAK,SAAS,CAAW,EAEpE,EAAQ,EACV,EAAkB,GACjB,IAAM,CACL,IAAM,EAAa,EACnB,MAAO,CACL,SAAU,IAAI,GAAe,CAAU,EACvC,WAAY,IAAI,GAAiB,CAAU,EAC3C,aAAc,IAAI,GAAmB,CAAU,EAC/C,WAAY,IAAI,GAAW,CAAkB,CAC/C,IACC,EAED,GAAc,GAAa,GAC7B,EACJ,GAAI,GACF,EAAO,MAAM,QAAQ,QACnB,EAAqB,EAAI,QAAQ,IAAK,CAAC,CAAC,CAC1C,EAEA,OAAO,QAGT,IAAI,GAGQ,KACR,GAA0D,KAExD,EAAW,IAAI,GAAQ,CAC3B,cACA,KACA,WAAY,EAAM,WAClB,aAAc,EAAM,aACpB,SAAU,EAAM,SAChB,WAAY,EAAM,WAClB,eACA,WACA,qBAAsB,EACtB,cAAe,EACf,iBAAkB,EAClB,mBAAoB,EACpB,eAAgB,EAChB,iBAAkB,EAClB,gBAAiB,EACjB,WAAY,EACZ,SAAU,EACV,eACA,4BACA,SACA,iBACA,MACF,CAAC,EAID,GAHA,GAAwB,CAAW,EACnC,EAAS,cAAgB,MAAM,EAAoB,CAAW,EAC9D,EAAS,WAAa,EAClB,IAAS,QAAS,CACpB,IAAM,EAAI,EACN,EAAmB,EACnB,IAAI,GAAiB,CACnB,cACA,aACA,aACA,iBACA,aAAc,EACd,WAAY,EAAM,WAClB,SAAU,EAAM,SAChB,WAAY,EAAM,WAClB,aAAc,EAAM,aACpB,QACF,CAAC,EAKL,GAHA,EAAS,YAAc,EACvB,EAAE,UAAU,IAAM,EAAS,qBAAqB,CAAC,EAE7C,GAAa,CACf,IAAM,EAAI,EACN,EAAe,EACf,IAAI,GAAe,CAAE,cAAa,iBAAgB,YAAW,EAAG,OAAW,CAAM,EAErF,EAAS,QAAU,EAEnB,MAAM,EAAE,MAAM,CAAC,IAAU,EAAE,qBAAqB,CAAK,CAAC,EAAE,KAAK,CAAC,IAAgB,CAC5E,GAAI,GAAM,CAAW,EAAG,MAAM,EAAY,KAC3C,EAED,IAAM,EAAQ,YAAY,IAAM,CAC9B,EAAkB,EAAI,QAAQ,GAAG,GAChC,EAAqB,EACxB,EAAS,MAAQ,EAGnB,MAAM,EAAE,UAAU,EACb,KACL,IAAI,EAAa,EACX,EAAc,SAAY,CAC9B,GAAI,CACF,IAAM,EAAU,MAAM,QAAQ,QAC5B,EAAqB,EAAI,QAAQ,IAAK,CAAC,CAAC,CAC1C,EAEA,GADA,EAAa,EACT,IAAY,QAAS,CACvB,cAAc,EAAS,KAAM,EAC7B,EAAS,MAAQ,KACjB,IAAI,EAAkE,KAClE,EAGQ,KACZ,GAAI,CACF,EAAkB,EACd,EAAe,EACf,IAAI,GAAe,CAAE,cAAa,iBAAgB,YAAW,EAAG,OAAW,CAAM,EACrF,EAAsB,EAClB,EAAmB,EACnB,IAAI,GAAiB,CACnB,cACA,aACA,aACA,iBACA,aAAc,EACd,WAAY,EAAM,WAClB,SAAU,EAAM,SAChB,WAAY,EAAM,WAClB,aAAc,EAAM,aACpB,QACF,CAAC,EACL,QAAW,KAAM,EAAS,mBACxB,EAAoB,UAAU,CAAE,EAElC,EAAoB,UAAU,IAAM,EAAS,qBAAqB,CAAC,EACnE,MAAM,EAAgB,MAAM,CAAC,IAAU,GAAqB,qBAAqB,CAAK,CAAC,EAAE,KAAK,CAAC,IAAgB,CAC7G,GAAI,GAAM,CAAW,EAAG,MAAM,EAAY,KAC3C,EACD,IAAM,GAAU,YAAY,IAAM,CAChC,EAAkB,EAAI,QAAQ,GAAG,GAChC,EAAqB,EACxB,EAAS,MAAQ,GACjB,EAAS,YAAc,EACvB,EAAS,QAAU,EACnB,MAAM,EAAoB,UAAU,EACpC,MAAO,GAAU,CAEjB,GADA,EAAO,MAAM,wDAAyD,EAAQ,EAC1E,EAAiB,CACnB,IAAM,EAAc,MAAM,EAAgB,MAAM,EAChD,GAAI,GAAM,CAAW,EAAG,EAAO,MAAM,0DAA2D,EAAY,IAAI,EAChH,EAAS,QAAU,KAErB,GAAI,EACF,MAAM,EAAoB,SAAS,EAAE,MAAM,CAAC,IAC1C,EAAO,MAAM,iEAAkE,CAAC,CAClF,EACA,EAAS,YAAc,KAEzB,GAAI,EAAS,QAAU,KACrB,EAAS,MAAQ,YAAY,EAAa,EAAuB,IAIvE,MAAO,EAAK,CAGZ,GAFA,IACA,EAAO,MAAM,8BAA+B,CAAG,EAC3C,GAAc,GAChB,EAAO,MAAM,4DAA4D,EACzE,cAAc,EAAS,KAAM,EAC7B,EAAS,MAAQ,KACjB,EAAS,MAAM,EAAE,MAAM,CAAC,IACtB,EAAO,MAAM,oDAAqD,CAAQ,CAC5E,IAIA,EAAQ,YAAY,EAAa,EAAuB,EAC9D,EAAS,MAAQ,EAGnB,GAAI,GAAa,CACf,IAAM,EAAgD,CAAC,UAAW,SAAU,YAAY,EACxF,QAAW,KAAO,EAAS,CACzB,IAAM,EAAU,IAAM,CAAE,EAAS,MAAM,EAAE,MAAM,KAAO,EAAO,MAAM,sCAAuC,EAAK,CAAG,CAAC,GACnH,GAAI,IAAQ,aACV,QAAQ,GAAG,aAAc,CAAO,EAEhC,aAAQ,GAAG,EAAK,CAAO,EAEzB,EAAS,eAAe,KAAK,CAAC,EAAK,CAAO,CAAC,GAI/C,OAAO,EACL,MAAO,EAAO,CAEd,OADA,EAAG,MAAM,EACF,EAAI,EAAa,QAAS,iCAAkC,CAAK,CAAC,QAwBvE,MAAK,CAAC,EAAmE,CAC7E,GAAI,KAAK,OAAQ,OACjB,KAAK,OAAS,GAEd,IAAM,EAAyB,CAAC,EAEhC,QAAY,EAAK,KAAY,KAAK,eAChC,GAAI,IAAQ,aACV,QAAQ,IAAI,aAAc,CAAO,EAEjC,aAAQ,IAAI,EAAuB,CAAO,EAK9C,GAFA,KAAK,eAAiB,CAAC,EAEnB,KAAK,YACP,GAAI,CACF,MAAM,KAAK,YAAY,SAAS,EAChC,MAAO,EAAK,CACZ,EAAY,KAAK,aAAe,MAAQ,EAAU,MAAM,OAAO,CAAG,CAAC,CAAC,EAIxE,GAAI,KAAK,QAAS,CAChB,IAAM,EAAc,MAAM,KAAK,QAAQ,MAAM,EAC7C,GAAI,GAAM,CAAW,EAAG,EAAY,KAAK,EAAY,IAAI,EAG3D,GAAI,KAAK,QAAU,KACjB,cAAc,KAAK,KAAK,EACxB,KAAK,MAAQ,KAGf,GAAI,CACF,KAAK,qBAAqB,KAAK,GAAI,QAAQ,GAAG,EAC9C,MAAO,EAAK,CACZ,EAAY,KAAK,aAAe,MAAQ,EAAU,MAAM,OAAO,CAAG,CAAC,CAAC,EAGtE,GAAI,CACF,KAAK,GAAG,MAAM,EACd,MAAO,EAAK,CACZ,EAAY,KAAK,aAAe,MAAQ,EAAU,MAAM,OAAO,CAAG,CAAC,CAAC,EAGtE,GAAI,GAAM,QACR,QAAW,IAAO,CAAC,GAAI,OAAQ,MAAM,EACnC,GAAI,CACF,MAAM,KAAK,SAAS,GAAK,KAAK,KAAK,YAAa,UAAW,aAAe,CAAG,CAAC,EAC9E,KAAM,EAIZ,GAAI,EAAY,OAAS,EACvB,OAAO,EAAI,EAAa,QAAS,sDAAuD,CAAW,CAAC,EAmBxG,SAAS,CAAC,EAAqD,CAE7D,GADA,KAAK,mBAAmB,IAAI,CAAQ,EAChC,CAAC,KAAK,YACR,MAAO,IAAM,CAAE,KAAK,mBAAmB,OAAO,CAAQ,GAExD,IAAM,EAAc,KAAK,YAAY,UAAU,CAAQ,EACvD,MAAO,IAAM,CACX,KAAK,mBAAmB,OAAO,CAAQ,EACvC,EAAY,GA0BhB,WAAW,CAAC,EAAkB,EAAsD,CAClF,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,IAAM,EAAS,KAAK,cAAc,EAAU,CAAU,EACtD,GAAI,GAAM,CAAM,EAAG,OAAO,EAE1B,OADA,KAAK,WAAW,IAAI,EAAU,CAAM,EAC7B,EAsBT,cAAc,CAAC,EAA6D,CAC1E,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,OAAO,KAAK,iBAAiB,CAAM,EAqBrC,gBAAgB,CAAC,EAA0D,CACzE,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,OAAO,KAAK,mBACV,EAAO,QACP,EAAO,SACP,KAAK,eAAiB,MACxB,EAIM,oBAAoB,EAAS,CACnC,KAAK,WAAa,KAClB,KAAK,cAAgB,KASf,eAAe,CAAC,EAAmC,CACzD,IAAM,EAAM,GAAW,YACvB,GAAI,KAAK,YAAc,KAAK,gBAAkB,EAC5C,OAAO,KAAK,WAEd,IAAM,EAAI,IAAI,GAAgB,CAC5B,aAAc,KAAK,aACnB,QAAS,GAAW,KAAK,cAC3B,CAAC,EAID,OAHA,EAAE,MAAM,EACR,KAAK,WAAa,EAClB,KAAK,cAAgB,EACd,OAuBH,QAAO,EAA+C,CAC1D,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CAAC,KAAK,YACR,OAAO,EAAI,EAAa,SAAU,iDAAiD,CAAC,EAEtF,GAAI,CACF,IAAM,EAAS,MAAM,KAAK,YAAY,UAAU,EAEhD,OADA,KAAK,qBAAqB,EACnB,EACP,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,QAAS,0BAA2B,CAAC,CAAC,MAS9D,SAAQ,EAAsB,CAChC,MAAO,CAAC,GAAG,KAAK,UAAU,EAkB5B,QAAQ,CAAC,EAAqD,CAC5D,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CACF,OAAO,KAAK,WAAW,SAAS,GAAW,KAAK,cAAc,EAC9D,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,QAAS,2BAA4B,CAAC,CAAC,GAoBnE,aAAa,CAAC,EAAsE,CAClF,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CACF,OAAO,KAAK,eAAe,CAAE,WAAY,KAAK,WAAY,QAAS,KAAK,eAAgB,OAAM,CAAC,EAC/F,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,gCAAiC,CAAC,CAAC,GAmBzE,eAAe,CAAC,EAAkE,CAChF,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CACF,OAAO,KAAK,iBAAiB,CAAE,aAAc,KAAK,aAAc,QAAS,KAAK,eAAgB,OAAM,CAAC,EACrG,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,kCAAmC,CAAC,CAAC,GAY3E,gBAAgB,CAAC,EAA8G,CAC7H,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CACF,OAAO,KAAK,eAAe,CAAE,WAAY,KAAK,WAAY,QAAS,OAAW,OAAM,CAAC,EACrF,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,mCAAoC,CAAC,CAAC,GAY5E,kBAAkB,CAAC,EAAkE,CACnF,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CACF,OAAO,KAAK,iBAAiB,CAAE,aAAc,KAAK,aAAc,QAAS,OAAW,OAAM,CAAC,EAC3F,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,qCAAsC,CAAC,CAAC,GAY9E,gBAAgB,CAAC,EAAsD,CACrE,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CACF,OAAO,KAAK,SAAS,YAAY,GAAW,KAAK,cAAc,EAC/D,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,QAAS,mCAAoC,CAAC,CAAC,GAc3E,oBAAoB,CAAC,EAAkB,EAAwD,CAC7F,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CACF,OAAO,KAAK,iBAAiB,CAC3B,aAAc,KAAK,aACnB,QAAS,GAAW,KAAK,eACzB,MAAO,CAAE,YAAa,EAAU,YAAa,EAAU,MAAO,GAAO,CACvE,CAAC,EACD,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,uCAAwC,CAAC,CAAC,GAiBhF,WAAW,CACT,EACA,EACY,CACZ,IAAM,EAAY,IAAI,IAAgC,EAAO,IAAI,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,WAAY,CAAC,CAAC,CAAC,EAChG,EAAW,IAAI,IAAgC,EAAM,IAAI,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,WAAY,CAAC,CAAC,CAAC,EAC9F,EAA8B,CAAC,EAC/B,EAAgC,CAAC,EACjC,EAA6E,CAAC,EACpF,QAAY,EAAK,KAAa,EAAU,CACtC,IAAM,EAAY,EAAU,IAAI,CAAG,EACnC,GAAI,CAAC,EACH,EAAM,KAAK,CAAQ,EACd,QAAI,EAAU,cAAgB,EAAS,YAC5C,EAAS,KAAK,CAAE,OAAQ,EAAW,MAAO,CAAS,CAAC,EAGxD,QAAY,EAAK,KAAc,EAC7B,GAAI,CAAC,EAAS,IAAI,CAAG,EAAG,EAAQ,KAAK,CAAS,EAEhD,MAAO,CAAE,QAAO,UAAS,UAAS,EAmBpC,eAAe,CAAC,EAAkB,EAAkB,EAAQ,IAAwC,CAClG,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CACF,OAAO,KAAK,iBAAiB,CAC3B,aAAc,KAAK,aACnB,QAAS,GAAW,KAAK,eACzB,MAAO,CAAE,YAAa,EAAU,KAAM,UAAW,QAAS,GAAW,KAAK,eAAgB,OAAM,CAClG,CAAC,EAAE,IAAI,KAAK,EAAE,WAAW,EACzB,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,kCAAmC,CAAC,CAAC,GAoB3E,aAAa,CAAC,EAAkB,EAAkB,EAAQ,IAAwC,CAChG,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CACF,OAAO,KAAK,iBAAiB,CAC3B,aAAc,KAAK,aACnB,QAAS,GAAW,KAAK,eACzB,MAAO,CAAE,YAAa,EAAU,KAAM,UAAW,QAAS,GAAW,KAAK,eAAgB,OAAM,CAClG,CAAC,EAAE,IAAI,KAAK,EAAE,WAAW,EACzB,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,gCAAiC,CAAC,CAAC,QAuBnE,YAAW,CAAC,EAAwB,EAA2D,CACnG,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CAEF,OADU,KAAK,gBAAgB,CAAO,EAC7B,oBAAoB,CAAY,EACzC,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,8BAA+B,CAAC,CAAC,QAuBjE,SAAQ,CAAC,EAA0D,CACvE,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CAEF,OADU,KAAK,gBAAgB,CAAO,EAC7B,SAAS,EAClB,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,2BAA4B,CAAC,CAAC,QAe9D,eAAc,CAAC,EAAwE,CAC3F,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CAEF,OADU,KAAK,gBAAgB,CAAO,EAC7B,iBAAiB,EAC1B,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,iCAAkC,CAAC,CAAC,QAYpE,0BAAyB,CAAC,EAAkB,EAA2D,CAC3G,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CAEF,OADU,KAAK,gBAAgB,CAAO,EAC7B,0BAA0B,CAAQ,EAC3C,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,4CAA6C,CAAC,CAAC,QAc/E,cAAa,CAAC,EAA6D,CAC/E,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CAEF,OADU,KAAK,gBAAgB,CAAO,EAC7B,cAAc,EACvB,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,gCAAiC,CAAC,CAAC,GAkBzE,cAAc,CACZ,EACA,EACuE,CACvE,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CACF,IAAM,EAAmB,GAAW,KAAK,eAGnC,EAAU,KAAK,WAAW,cAAc,CAC5C,QAAS,EACT,WAAY,GACZ,MAAO,GACT,CAAC,EAGK,EAAkB,IAAI,IAC5B,QAAW,IAAW,CAAC,UAAW,YAAY,EAAY,CACxD,IAAM,EAAY,KAAK,aAAa,UAAU,EAAkB,CAAO,EACvE,QAAW,KAAO,EAChB,GAAI,EAAI,eAAiB,KACvB,EAAgB,IAAI,GAAG,EAAI,gBAAgB,EAAI,eAAe,EAMpE,IAAM,EAAc,GAAM,YACpB,EAAwB,CAAC,WAAY,YAAa,SAAS,EAmBjE,OAhBa,EACV,OAAO,CAAC,IAAQ,CAEf,GAAI,EAAgB,IAAI,GAAG,EAAI,aAAa,EAAI,MAAM,EAAG,MAAO,GAGhE,GAAI,IAAgB,OAElB,MAAO,CAAC,EAAY,SAAS,EAAI,QAAQ,EAG3C,IAAM,EAAW,EAAI,SAAS,MAAM,GAAG,EAAE,IAAI,GAAK,EAAI,SACtD,MAAO,CAAC,EAAsB,SAAS,CAAQ,EAChD,EACA,IAAI,CAAC,KAAS,CAAE,WAAY,EAAI,KAAM,SAAU,EAAI,QAAS,EAAE,EAGlE,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,QAAS,iCAAkC,CAAC,CAAC,GAezE,aAAa,CACX,EACA,EACA,EACkC,CAClC,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CACF,IAAM,EAAmB,GAAW,KAAK,eACnC,EAAU,KAAK,eAAe,CAClC,WAAY,KAAK,WACjB,QAAS,EACT,MAAO,CAAE,KAAM,EAAY,MAAO,GAAM,WAAU,MAAO,CAAE,CAC7D,CAAC,EACD,GAAI,EAAQ,SAAW,EACrB,OAAO,EAAI,EAAa,SAAU,oBAAoB,oBAA6B,IAAW,CAAC,EAEjG,IAAM,EAAM,EAAQ,GACd,EAAI,EAAI,OAWd,MAVyB,IACpB,EACH,QAAS,MAAM,QAAQ,EAAE,OAAO,EAAK,EAAE,QAAoC,OAC3E,MAAO,OAAO,EAAE,QAAU,SAAW,EAAE,MAAQ,OAC/C,WAAY,OAAO,EAAE,aAAe,SAAW,EAAE,WAAa,OAC9D,WAAY,OAAO,EAAE,aAAe,SAAW,EAAE,WAAa,OAC9D,SAAU,MAAM,QAAQ,EAAE,QAAQ,EAAK,EAAE,SAAwB,OACjE,WAAY,MAAM,QAAQ,EAAE,UAAU,EAAK,EAAE,WAA0C,OACvF,eAAgB,OAAO,EAAE,iBAAmB,SAAW,EAAE,eAAiB,MAC5E,EAEA,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,gCAAiC,CAAC,CAAC,GAczE,YAAY,CACV,EACA,EACiC,CACjC,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CACF,IAAM,EAAmB,GAAW,KAAK,eACnC,EAAa,KAAK,SAAS,QAAQ,EAAkB,CAAQ,EACnE,GAAI,CAAC,EACH,OAAO,EAAI,EAAa,SAAU,kBAAkB,wBAA+B,CAAC,EAEtF,IAAM,EAAU,KAAK,WAAW,eAAe,EAAkB,CAAQ,EACnE,EAAY,KAAK,aAAa,YAAY,EAAkB,CAAQ,EAC1E,MAAO,CACL,SAAU,EAAW,SACrB,UAAW,EAAW,WAAa,EACnC,KAAM,EAAW,KACjB,YAAa,EAAQ,OACrB,oBAAqB,EAAQ,OAAO,CAAC,IAAM,EAAE,UAAU,EAAE,OACzD,cAAe,EAAU,MAC3B,EACA,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,QAAS,+BAAgC,CAAC,CAAC,QAgBjE,cAAa,CACjB,EACA,EAC2C,CAC3C,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CACF,IAAM,EAAI,KAAK,gBAAgB,CAAO,EACtC,MAAO,CACL,WACA,MAAO,EAAE,cAAc,CAAQ,EAAE,OACjC,OAAQ,EAAE,gBAAgB,CAAQ,EAAE,MACtC,EACA,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,gCAAiC,CAAC,CAAC,GAiBzE,aAAa,CACX,EACA,EACA,EACsC,CACtC,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,IAAM,EAAmB,GAAW,KAAK,eACnC,EAAU,IAAI,IACd,EAAyD,CAAC,EAE5D,EAAc,EACd,EAAc,EAElB,OAAS,CACP,IAAM,EAAM,GAAG,MAAgB,IAC/B,GAAI,EAAQ,IAAI,CAAG,EACjB,OAAO,EAAI,EAAa,SAAU,0DAA0D,CAAC,EAE/F,EAAQ,IAAI,CAAG,EAEf,IAAM,EAAO,KAAK,iBAAiB,CACjC,aAAc,KAAK,aACnB,QAAS,EACT,MAAO,CAAE,KAAM,aAAc,YAAa,EAAa,MAAO,GAAI,CACpE,CAAC,EAEG,EACA,EAEJ,QAAW,KAAO,EAAM,CACtB,IAAI,EACJ,GAAI,EAAI,SACN,GAAI,CACF,IAAM,EAAO,KAAK,MAAM,EAAI,QAAQ,EACpC,GAAI,MAAM,QAAQ,EAAK,UAAa,EAClC,EAAa,EAAK,WAEpB,KAAM,EAEV,GAAI,CAAC,EAAY,SACjB,IAAM,EAAQ,EAAW,KAAK,CAAC,IAAM,EAAE,WAAa,CAAW,EAC/D,GAAI,CAAC,EAAO,SACZ,EAAW,EAAI,YACf,EAAW,EAAM,MACjB,MAGF,GAAI,CAAC,GAAY,CAAC,EAChB,MAAO,CAAE,aAAc,EAAa,iBAAkB,EAAa,cAAe,CAAM,EAG1F,EAAM,KAAK,CAAE,SAAU,EAAa,WAAY,CAAY,CAAC,EAC7D,EAAc,EACd,EAAc,QAgBZ,YAAW,CACf,EACA,EAC+C,CAC/C,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CACF,IAAM,EAAmB,GAAM,SAAW,KAAK,eACzC,EAAsB,GAAM,UAC9B,EAAK,UACL,KAAK,SAAS,YAAY,CAAgB,EAAE,IAAI,CAAC,IAAM,EAAE,QAAQ,EAErE,OAAO,MAAM,KAAK,gBAAgB,CAAE,UAAS,WAAU,CAAC,EACxD,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,8BAA+B,CAAC,CAAC,QAqBjE,sBAAqB,CACzB,EACA,EAC8C,CAC9C,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,KAAK,OAAS,QAChB,OAAO,EAAI,EAAa,SAAU,+DAA+D,CAAC,EAEpG,GAAI,CACF,IAAM,EAAyB,CAAC,EAChC,QAAW,KAAe,EAAU,CAClC,IAAM,EAAa,GAAK,QAAQ,KAAK,YAAa,eAAgB,CAAW,EAC7E,GAAI,CAAC,KAAK,aAAa,CAAU,EAC/B,OAAO,EAAI,EAAa,aAAc,+CAA+C,GAAa,CAAC,EAErG,IAAM,EAAU,aAAa,IAgBvB,EAAS,MAfK,KAAK,0BACrB,KAAK,0BAA0B,EAAY,CAAO,EAClD,IAAI,GAAiB,CACnB,YAAa,EACb,WAAY,CAAC,CAAE,IAAK,IAAK,SAAQ,CAAC,EAClC,WAAY,CAAC,OAAO,EACpB,eAAgB,CAAC,EACjB,aAAc,KAAK,GACnB,WAAY,KAAK,WAEjB,SAAU,KAAK,SACf,WAAY,KAAK,WACjB,aAAc,KAAK,aACnB,OAAQ,KAAK,MACf,CAAC,GAC4B,UAAU,EAC3C,EAAQ,KAAK,CAAM,EAErB,OAAO,EACP,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,QAAS,wCAAyC,CAAC,CAAC,QAc1E,WAAU,CAAC,EAA6E,CAC5F,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,IAAM,EAAS,IAAI,IAcnB,OAbA,MAAM,QAAQ,IACZ,EAAU,IAAI,MAAO,IAAO,CAC1B,GAAI,CACF,IAAM,EAAO,MAAM,KAAK,WAAW,CAAE,EAC/B,EAAS,KAAK,cAAc,EAAI,CAAI,EAC1C,GAAI,CAAC,GAAM,CAAM,EACf,EAAO,IAAI,EAAI,CAAoB,EAErC,KAAM,GAGT,CACH,EACO,EAWT,kBAAkB,CAAC,EAAkB,EAAyD,CAC5F,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CAMF,IAAM,EALU,KAAK,eAAe,CAClC,WAAY,KAAK,WACjB,QAAS,GAAW,KAAK,eACzB,MAAO,CAAE,WAAU,WAAY,EAAK,CACtC,CAAC,EACuB,IAAI,CAAC,KAAO,CAClC,KAAM,EAAE,KACR,KAAM,EAAE,KACR,WAAa,EAAE,OAAO,YAAqC,OAC3D,WAAa,EAAE,OAAO,YAAqC,OAC3D,MAAQ,EAAE,OAAO,OAAgC,MACnD,EAAE,EACF,MAAO,CAAE,WAAU,SAAQ,EAC3B,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,qCAAsC,CAAC,CAAC,QAgBxE,iBAAgB,CACpB,EACA,EACA,EAC6C,CAC7C,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CACF,IAAM,EAAO,GAAW,KAAK,eACvB,EAAU,IAAI,IAEd,EAAY,CAAC,EAAiB,EAAY,IAAkD,CAChG,IAAM,EAAM,GAAG,MAAY,IAC3B,GAAI,EAAQ,IAAI,CAAG,EACjB,MAAO,CAAE,WAAY,EAAS,SAAU,EAAI,OAAM,SAAU,CAAC,CAAE,EAEjE,EAAQ,IAAI,CAAG,EAaf,IAAM,EAXO,KAAK,iBAAiB,CACjC,aAAc,KAAK,aACnB,QAAS,EACT,MAAO,CAAE,YAAa,EAAI,cAAe,EAAS,MAAO,IAAK,CAChE,CAAC,EAEyB,OACxB,CAAC,IACC,EAAE,OAAS,WAAa,EAAE,OAAS,YACvC,EAGG,OAAO,CAAC,IAAM,EAAE,eAAiB,IAAI,EACrC,IAAI,CAAC,IAAM,EAAU,EAAE,cAAgB,EAAE,YAAa,EAAE,IAAI,CAAC,EAEhE,MAAO,CAAE,WAAY,EAAS,SAAU,EAAI,OAAM,UAAS,GAG7D,OAAO,EAAU,EAAY,CAAQ,EACrC,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,SAAU,mCAAoC,CAAC,CAAC,GAa5E,YAAY,CAAC,EAA0C,CACrD,GAAI,KAAK,OAAQ,OACjB,OAAO,KAAK,WAAW,IAAI,CAAQ,EAarC,WAAW,CAAC,EAAkB,EAA2D,CACvF,GAAI,KAAK,OAAQ,OAAO,EAAI,EAAa,SAAU,6BAA6B,CAAC,EACjF,GAAI,CACF,OAAO,KAAK,SAAS,QAAQ,GAAW,KAAK,eAAgB,CAAQ,EACrE,MAAO,EAAG,CACV,OAAO,EAAI,EAAa,QAAS,8BAA+B,CAAC,CAAC,GAatE,gBAAgB,CAAC,EAAkB,EAA8D,CAC/F,OAAO,KAAK,cAAc,CAAE,WAAU,QAAS,GAAW,OAAW,MAAO,GAAO,CAAC,EAExF",
|
|
41
|
+
"debugId": "2A1CE56202A9E9A664756E2164756E21",
|
|
42
42
|
"names": []
|
|
43
43
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS symbols_fts USING fts5(
|
|
2
|
+
name,
|
|
3
|
+
file_path,
|
|
4
|
+
kind,
|
|
5
|
+
content=symbols,
|
|
6
|
+
content_rowid=id
|
|
7
|
+
);
|
|
8
|
+
--> statement-breakpoint
|
|
9
|
+
CREATE TRIGGER IF NOT EXISTS symbols_ai
|
|
10
|
+
AFTER INSERT ON symbols BEGIN
|
|
11
|
+
INSERT INTO symbols_fts(rowid, name, file_path, kind)
|
|
12
|
+
VALUES (new.id, new.name, new.file_path, new.kind);
|
|
13
|
+
END;
|
|
14
|
+
--> statement-breakpoint
|
|
15
|
+
CREATE TRIGGER IF NOT EXISTS symbols_ad
|
|
16
|
+
AFTER DELETE ON symbols BEGIN
|
|
17
|
+
INSERT INTO symbols_fts(symbols_fts, rowid, name, file_path, kind)
|
|
18
|
+
VALUES ('delete', old.id, old.name, old.file_path, old.kind);
|
|
19
|
+
END;
|
|
20
|
+
--> statement-breakpoint
|
|
21
|
+
CREATE TRIGGER IF NOT EXISTS symbols_au
|
|
22
|
+
AFTER UPDATE ON symbols BEGIN
|
|
23
|
+
INSERT INTO symbols_fts(symbols_fts, rowid, name, file_path, kind)
|
|
24
|
+
VALUES ('delete', old.id, old.name, old.file_path, old.kind);
|
|
25
|
+
INSERT INTO symbols_fts(rowid, name, file_path, kind)
|
|
26
|
+
VALUES (new.id, new.name, new.file_path, new.kind);
|
|
27
|
+
END;
|
|
@@ -7,4 +7,3 @@ export type { SymbolRecord, SearchOptions, SymbolStats } from './repositories/sy
|
|
|
7
7
|
export { RelationRepository } from './repositories/relation.repository';
|
|
8
8
|
export type { RelationRecord } from './repositories/relation.repository';
|
|
9
9
|
export * as schema from './schema';
|
|
10
|
-
export { FTS_SETUP_SQL } from './schema';
|