@tienne/gestalt 0.110.0 → 0.112.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/CLAUDE.md +3 -3
  2. package/README.ko.md +1 -1
  3. package/README.md +1 -1
  4. package/dist/package.json +3 -1
  5. package/dist/plugin/role-agents/lens-context/AGENT.md +8 -7
  6. package/dist/plugin/role-agents/lens-reader/AGENT.md +48 -2
  7. package/dist/plugin/skills/lens/SKILL.md +22 -15
  8. package/dist/src/architecture/doc-fresh.d.ts.map +1 -1
  9. package/dist/src/architecture/doc-fresh.js +3 -1
  10. package/dist/src/architecture/doc-fresh.js.map +1 -1
  11. package/dist/src/cli/commands/lens.d.ts +8 -1
  12. package/dist/src/cli/commands/lens.d.ts.map +1 -1
  13. package/dist/src/cli/commands/lens.js +29 -2
  14. package/dist/src/cli/commands/lens.js.map +1 -1
  15. package/dist/src/cli/commands/peer.d.ts +19 -0
  16. package/dist/src/cli/commands/peer.d.ts.map +1 -1
  17. package/dist/src/cli/commands/peer.js +188 -11
  18. package/dist/src/cli/commands/peer.js.map +1 -1
  19. package/dist/src/cli/index.d.ts.map +1 -1
  20. package/dist/src/cli/index.js +43 -4
  21. package/dist/src/cli/index.js.map +1 -1
  22. package/dist/src/digest/lens-schema.d.ts +150 -3
  23. package/dist/src/digest/lens-schema.d.ts.map +1 -1
  24. package/dist/src/digest/lens-schema.js +14 -1
  25. package/dist/src/digest/lens-schema.js.map +1 -1
  26. package/dist/src/digest/lens-widget-schema.d.ts +2 -2
  27. package/dist/src/digest/lint-lens.d.ts +2 -1
  28. package/dist/src/digest/lint-lens.d.ts.map +1 -1
  29. package/dist/src/digest/lint-lens.js +68 -7
  30. package/dist/src/digest/lint-lens.js.map +1 -1
  31. package/dist/src/digest/ocr.d.ts +1 -1
  32. package/dist/src/digest/ocr.d.ts.map +1 -1
  33. package/dist/src/digest/ocr.js +10 -4
  34. package/dist/src/digest/ocr.js.map +1 -1
  35. package/dist/src/digest/render-html.d.ts +5 -0
  36. package/dist/src/digest/render-html.d.ts.map +1 -1
  37. package/dist/src/digest/render-html.js +31 -10
  38. package/dist/src/digest/render-html.js.map +1 -1
  39. package/dist/src/digest/render-lens.d.ts +1 -1
  40. package/dist/src/digest/render-lens.d.ts.map +1 -1
  41. package/dist/src/digest/render-lens.js +17 -2
  42. package/dist/src/digest/render-lens.js.map +1 -1
  43. package/dist/src/digest/schema.d.ts +62 -62
  44. package/dist/src/digest/server.d.ts.map +1 -1
  45. package/dist/src/digest/server.js +7 -4
  46. package/dist/src/digest/server.js.map +1 -1
  47. package/dist/src/digest/theme-diary.d.ts +10 -0
  48. package/dist/src/digest/theme-diary.d.ts.map +1 -0
  49. package/dist/src/digest/theme-diary.js +111 -0
  50. package/dist/src/digest/theme-diary.js.map +1 -0
  51. package/dist/src/digest/viewer-js.d.ts +6 -0
  52. package/dist/src/digest/viewer-js.d.ts.map +1 -1
  53. package/dist/src/digest/viewer-js.js +78 -4
  54. package/dist/src/digest/viewer-js.js.map +1 -1
  55. package/dist/src/lens/attach.d.ts +741 -0
  56. package/dist/src/lens/attach.d.ts.map +1 -1
  57. package/dist/src/lens/attach.js +41 -11
  58. package/dist/src/lens/attach.js.map +1 -1
  59. package/dist/src/lens/context-input.d.ts +17 -0
  60. package/dist/src/lens/context-input.d.ts.map +1 -0
  61. package/dist/src/lens/context-input.js +31 -0
  62. package/dist/src/lens/context-input.js.map +1 -0
  63. package/dist/src/lens/ingest.d.ts +19 -1
  64. package/dist/src/lens/ingest.d.ts.map +1 -1
  65. package/dist/src/lens/ingest.js +92 -14
  66. package/dist/src/lens/ingest.js.map +1 -1
  67. package/dist/src/lens/pdf-extract-py.d.ts +2 -0
  68. package/dist/src/lens/pdf-extract-py.d.ts.map +1 -1
  69. package/dist/src/lens/pdf-extract-py.js +37 -2
  70. package/dist/src/lens/pdf-extract-py.js.map +1 -1
  71. package/dist/src/mcp/schemas.d.ts +23 -0
  72. package/dist/src/mcp/schemas.d.ts.map +1 -1
  73. package/dist/src/mcp/schemas.js +20 -0
  74. package/dist/src/mcp/schemas.js.map +1 -1
  75. package/dist/src/mcp/server.d.ts.map +1 -1
  76. package/dist/src/mcp/server.js +6 -1
  77. package/dist/src/mcp/server.js.map +1 -1
  78. package/dist/src/mcp/tools/architecture-passthrough.d.ts.map +1 -1
  79. package/dist/src/mcp/tools/architecture-passthrough.js +1 -1
  80. package/dist/src/mcp/tools/architecture-passthrough.js.map +1 -1
  81. package/dist/src/mcp/tools/peer.d.ts +21 -0
  82. package/dist/src/mcp/tools/peer.d.ts.map +1 -0
  83. package/dist/src/mcp/tools/peer.js +71 -0
  84. package/dist/src/mcp/tools/peer.js.map +1 -0
  85. package/dist/src/peer/codex.d.ts +49 -0
  86. package/dist/src/peer/codex.d.ts.map +1 -0
  87. package/dist/src/peer/codex.js +240 -0
  88. package/dist/src/peer/codex.js.map +1 -0
  89. package/dist/src/peer/daemon.d.ts +52 -1
  90. package/dist/src/peer/daemon.d.ts.map +1 -1
  91. package/dist/src/peer/daemon.js +356 -16
  92. package/dist/src/peer/daemon.js.map +1 -1
  93. package/dist/src/peer/feed.d.ts +24 -2
  94. package/dist/src/peer/feed.d.ts.map +1 -1
  95. package/dist/src/peer/feed.js.map +1 -1
  96. package/dist/src/peer/inbox.d.ts +31 -0
  97. package/dist/src/peer/inbox.d.ts.map +1 -0
  98. package/dist/src/peer/inbox.js +80 -0
  99. package/dist/src/peer/inbox.js.map +1 -0
  100. package/dist/src/peer/locate.d.ts +3 -0
  101. package/dist/src/peer/locate.d.ts.map +1 -1
  102. package/dist/src/peer/locate.js +4 -2
  103. package/dist/src/peer/locate.js.map +1 -1
  104. package/dist/src/peer/message.d.ts +104 -0
  105. package/dist/src/peer/message.d.ts.map +1 -0
  106. package/dist/src/peer/message.js +171 -0
  107. package/dist/src/peer/message.js.map +1 -0
  108. package/dist/src/peer/mirror.d.ts +50 -1
  109. package/dist/src/peer/mirror.d.ts.map +1 -1
  110. package/dist/src/peer/mirror.js +138 -0
  111. package/dist/src/peer/mirror.js.map +1 -1
  112. package/dist/src/peer/network.d.ts +247 -0
  113. package/dist/src/peer/network.d.ts.map +1 -1
  114. package/dist/src/peer/network.js +1119 -43
  115. package/dist/src/peer/network.js.map +1 -1
  116. package/dist/src/peer/paths.d.ts +6 -0
  117. package/dist/src/peer/paths.d.ts.map +1 -1
  118. package/dist/src/peer/paths.js +8 -0
  119. package/dist/src/peer/paths.js.map +1 -1
  120. package/dist/src/peer/protocol.d.ts +96 -4
  121. package/dist/src/peer/protocol.d.ts.map +1 -1
  122. package/dist/src/peer/protocol.js.map +1 -1
  123. package/dist/src/peer/relay.d.ts +14 -0
  124. package/dist/src/peer/relay.d.ts.map +1 -1
  125. package/dist/src/peer/relay.js +102 -7
  126. package/dist/src/peer/relay.js.map +1 -1
  127. package/dist/src/peer/roster.d.ts +2 -0
  128. package/dist/src/peer/roster.d.ts.map +1 -1
  129. package/dist/src/peer/roster.js +5 -0
  130. package/dist/src/peer/roster.js.map +1 -1
  131. package/dist/src/peer/share.d.ts +48 -1
  132. package/dist/src/peer/share.d.ts.map +1 -1
  133. package/dist/src/peer/share.js +163 -2
  134. package/dist/src/peer/share.js.map +1 -1
  135. package/dist/src/peer/state.d.ts +12 -1
  136. package/dist/src/peer/state.d.ts.map +1 -1
  137. package/dist/src/peer/state.js +15 -0
  138. package/dist/src/peer/state.js.map +1 -1
  139. package/dist/src/peer/transform.d.ts +27 -0
  140. package/dist/src/peer/transform.d.ts.map +1 -1
  141. package/dist/src/peer/transform.js +37 -33
  142. package/dist/src/peer/transform.js.map +1 -1
  143. package/dist/src/peer/transport.d.ts +7 -3
  144. package/dist/src/peer/transport.d.ts.map +1 -1
  145. package/dist/src/peer/transport.js +12 -4
  146. package/dist/src/peer/transport.js.map +1 -1
  147. package/dist/src/peer/viewer-html.d.ts +1 -1
  148. package/dist/src/peer/viewer-html.d.ts.map +1 -1
  149. package/dist/src/peer/viewer-html.js +151 -1
  150. package/dist/src/peer/viewer-html.js.map +1 -1
  151. package/dist/src/peer/viewer.d.ts +30 -1
  152. package/dist/src/peer/viewer.d.ts.map +1 -1
  153. package/dist/src/peer/viewer.js +103 -5
  154. package/dist/src/peer/viewer.js.map +1 -1
  155. package/dist/src/peer/wire.d.ts +9 -2
  156. package/dist/src/peer/wire.d.ts.map +1 -1
  157. package/dist/src/peer/wire.js.map +1 -1
  158. package/package.json +3 -1
  159. package/plugin/.codex-plugin/plugin.json +1 -1
  160. package/plugin/.mcp.json +1 -1
  161. package/plugin/mcp.json +1 -1
  162. package/plugin/role-agents/lens-context/AGENT.md +8 -7
  163. package/plugin/role-agents/lens-reader/AGENT.md +48 -2
  164. package/plugin/skills/lens/SKILL.md +22 -15
@@ -1 +1 @@
1
- {"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../../src/lens/attach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKnE,uFAAuF;AACvF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,GAAG,CAAC,EAAE,MAAM,GACX,WAAW,CAuBb"}
1
+ {"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../../src/lens/attach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKnE,uFAAuF;AACvF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,sDAAsD;AACtD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAwD,CAAC;AACrF,+CAA+C;AAC/C,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA0C,CAAC;AAEvE,oDAAoD;AACpD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAyBD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,GAAG,CAAC,EAAE,MAAM,GACX,WAAW,CA4Bb"}
@@ -13,16 +13,42 @@ export const contextFileSchema = z.object({
13
13
  .default([])
14
14
  .refine((ls) => ls.every((l) => l.card), '카드 파일의 한계 줄은 card id를 단다'),
15
15
  });
16
+ /** --cards 파일: 카드와 카드에서 나온 한계 줄. 빈 객체는 카드를 비우는 뜻이다 */
17
+ export const cardsFileSchema = contextFileSchema.pick({ cards: true, limits: true });
18
+ /** --links 파일: 연결 카드만. 빈 객체는 연결 카드를 비우는 뜻이다 */
19
+ export const linksFileSchema = contextFileSchema.pick({ links: true });
20
+ const isRecord = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
21
+ /** 옛 호출은 cards와 links가 배열인 한 파일 객체를 그대로 넘겼다. 그 꼴이면 file로 본다 */
22
+ function normalizeInput(input) {
23
+ if (!isRecord(input))
24
+ return { file: input };
25
+ const fieldForm = ('file' in input || 'cards' in input || 'links' in input) &&
26
+ !('limits' in input) &&
27
+ !Array.isArray(input.cards) &&
28
+ !Array.isArray(input.links);
29
+ return fieldForm ? input : { file: input };
30
+ }
31
+ function parseOrThrow(schema, input) {
32
+ const parsed = schema.safeParse(input);
33
+ if (!parsed.success) {
34
+ const issues = parsed.error.issues.map((i) => `${i.path.join('.') || '(root)'}: ${i.message}`);
35
+ throw new Error(`맥락 파일 형식 오류: ${issues.join('; ')}`);
36
+ }
37
+ return parsed.data;
38
+ }
16
39
  /**
17
40
  * 이미 합친 리포트에 맥락 카드와 연결 카드를 붙인다. 카드에서 온 옛 한계 줄은 지우고 새 줄로 바꾼다.
41
+ * cards만 주면 cards와 카드 한계 줄만, links만 주면 links만 바꾸고 나머지는 기존 리포트 값을 둔다.
18
42
  * 합치기는 merge를 그대로 거쳐서 카드 출처와 연결 카드 인용 검사를 받는다
19
43
  */
20
44
  export function attachContext(repoRoot, slug, input, key) {
21
- const parsed = contextFileSchema.safeParse(input);
22
- if (!parsed.success) {
23
- const issues = parsed.error.issues.map((i) => `${i.path.join('.') || '(root)'}: ${i.message}`);
24
- throw new Error(`맥락 파일 형식 오류: ${issues.join('; ')}`);
45
+ const { file, cards, links } = normalizeInput(input);
46
+ if (file === undefined && cards === undefined && links === undefined) {
47
+ throw new Error('붙일 파일이 없어요. file, cards, links 중 하나는 있어야 해요');
25
48
  }
49
+ const fileCtx = file === undefined ? undefined : parseOrThrow(contextFileSchema, file);
50
+ const cardsCtx = cards === undefined ? undefined : parseOrThrow(cardsFileSchema, cards);
51
+ const linksCtx = links === undefined ? undefined : parseOrThrow(linksFileSchema, links);
26
52
  const store = new DigestStore(repoRoot);
27
53
  const raw = store.readDigestFile(slug);
28
54
  if (raw.kind !== 'ok')
@@ -35,12 +61,16 @@ export function attachContext(repoRoot, slug, input, key) {
35
61
  : digest.value.reports[initialReportIndex(digest.value.reports)];
36
62
  if (!report)
37
63
  throw new Error(`리포트 ${key}가 없어요`);
38
- const ctx = parsed.data;
39
- return mergeReport(repoRoot, slug, {
40
- ...report,
41
- cards: ctx.cards,
42
- links: ctx.links,
43
- limits: [...(report.limits ?? []).filter((l) => !l.card), ...ctx.limits],
44
- });
64
+ // 같은 필드를 file과 개별 파일이 함께 주면 개별 파일이 이긴다
65
+ const cardSide = cardsCtx ?? fileCtx;
66
+ const linkSide = linksCtx ?? fileCtx;
67
+ const next = { ...report };
68
+ if (cardSide) {
69
+ next.cards = cardSide.cards;
70
+ next.limits = [...(report.limits ?? []).filter((l) => !l.card), ...cardSide.limits];
71
+ }
72
+ if (linkSide)
73
+ next.links = linkSide.links;
74
+ return mergeReport(repoRoot, slug, next);
45
75
  }
46
76
  //# sourceMappingURL=attach.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../src/lens/attach.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../src/lens/attach.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type Report } from '../digest/schema.js';
2
+ export interface ContextInput {
3
+ /** links 키를 뺀 리포트 사본. 연결 카드는 이 사본이 아니라 노트에서 따로 만든다 */
4
+ report: Omit<Report, 'links'>;
5
+ transcript?: Array<{
6
+ i: number;
7
+ text: string;
8
+ }>;
9
+ }
10
+ /**
11
+ * 연결 카드를 쓰는 에이전트에게 줄 리포트 사본을 만든다. 이미 붙은 links에는 노트 경로가 들어 있어서
12
+ * 그대로 주면 새 카드가 옛 카드를 따라 쓴다. 리포트는 attach의 --report와 같은 규칙으로 고른다
13
+ */
14
+ export declare function buildContextInput(repoRoot: string, slug: string, key?: string, opts?: {
15
+ withTranscript?: boolean;
16
+ }): ContextInput;
17
+ //# sourceMappingURL=context-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-input.d.ts","sourceRoot":"","sources":["../../../src/lens/context-input.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG/D,MAAM,WAAW,YAAY;IAC3B,sDAAsD;IACtD,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,YAAY,CAmBd"}
@@ -0,0 +1,31 @@
1
+ import { findReport, initialReportIndex } from '../digest/reports.js';
2
+ import { parseDigest } from '../digest/schema.js';
3
+ import { DigestStore } from '../digest/store.js';
4
+ /**
5
+ * 연결 카드를 쓰는 에이전트에게 줄 리포트 사본을 만든다. 이미 붙은 links에는 노트 경로가 들어 있어서
6
+ * 그대로 주면 새 카드가 옛 카드를 따라 쓴다. 리포트는 attach의 --report와 같은 규칙으로 고른다
7
+ */
8
+ export function buildContextInput(repoRoot, slug, key, opts = {}) {
9
+ const store = new DigestStore(repoRoot);
10
+ const raw = store.readDigestFile(slug);
11
+ if (raw.kind !== 'ok')
12
+ throw new Error(`digest.json이 없어요. 리포트를 먼저 merge해 주세요: ${slug}`);
13
+ const digest = parseDigest(raw.value);
14
+ if (!digest.ok)
15
+ throw digest.error;
16
+ const report = key
17
+ ? findReport(digest.value, key)
18
+ : digest.value.reports[initialReportIndex(digest.value.reports)];
19
+ if (!report)
20
+ throw new Error(`리포트 ${key}가 없어요`);
21
+ const { links: _links, ...rest } = report;
22
+ const out = { report: rest };
23
+ if (opts.withTranscript) {
24
+ const t = store.readTranscript(slug);
25
+ if (!t.ok)
26
+ throw new Error(t.message);
27
+ out.transcript = t.transcript.segments.map((s) => ({ i: s.i, text: s.text }));
28
+ }
29
+ return out;
30
+ }
31
+ //# sourceMappingURL=context-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-input.js","sourceRoot":"","sources":["../../../src/lens/context-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAQjD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,IAAY,EACZ,GAAY,EACZ,OAAqC,EAAE;IAEvC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;QACnB,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,MAAM,CAAC,KAAK,CAAC;IACnC,MAAM,MAAM,GAAG,GAAG;QAChB,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC;QAC/B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;IAChD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAC1C,MAAM,GAAG,GAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACtC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -21,8 +21,19 @@ export interface LensIngestOptions {
21
21
  speakers?: boolean;
22
22
  /** 피드 오디오 주소의 호스트를 IP로 푼다. 테스트가 DNS 없이 돌도록 바꿔 끼운다 */
23
23
  lookup?: HostLookup;
24
+ /** 피드 오디오 주소를 검사한 IP로만 받는다. 테스트가 네트워크 없이 돌도록 바꿔 끼운다 */
25
+ pinnedFetch?: PinnedFetch;
24
26
  }
25
27
  export type HostLookup = (host: string) => Promise<string[]>;
28
+ /** 고정 접속에 넘기는 요청 옵션. 내려받기가 쓰는 것만 둔다 */
29
+ export interface PinnedInit {
30
+ signal?: AbortSignal;
31
+ headers?: Record<string, string>;
32
+ /** 믿을 인증서를 바꾼다. 테스트가 자체 서명 인증서로 TLS 이름 검증을 확인할 때만 쓴다 */
33
+ ca?: string;
34
+ }
35
+ /** url을 GET하되 DNS를 다시 풀지 않고 address로만 연결한다. 리다이렉트는 따라가지 않는다 */
36
+ export type PinnedFetch = (url: string, address: string, init?: PinnedInit) => Promise<Response>;
26
37
  export interface LensIngestResult {
27
38
  slug: string;
28
39
  kind: LensKind;
@@ -51,12 +62,19 @@ export declare const PDF_MAX_PAGES = 300;
51
62
  export declare const shortHash: (s: string) => string;
52
63
  /** 한글이 본문 글자의 20%를 넘으면 ko, 아니면 en으로 본다. 요약 언어가 아니라 원문 언어다 */
53
64
  export declare function guessLang(texts: string[]): string;
65
+ /**
66
+ * node:http(s)의 lookup을 갈아 끼워 address로만 연결한다. 호스트명은 URL 그대로 둬서
67
+ * Host 헤더와 TLS SNI, 인증서 검증은 원래 이름으로 한다. 소켓 풀이 다른 IP로 맺은 연결을 다시 쓰지 않게 agent를 끈다
68
+ */
69
+ export declare const pinnedFetch: PinnedFetch;
54
70
  /**
55
71
  * 주소를 받아 파일로 저장한다. 크기 상한을 넘으면 멈추고 받던 파일을 지운다.
56
- * lookup을 넘기면 사설 주소로 가는 요청을 막는다. 피드에서 뽑은 주소처럼 사용자가 직접 고르지 않은 주소에만 쓴다
72
+ * lookup을 넘기면 사설 주소로 가는 요청을 막고 검사한 IP로만 접속한다. 이때는 fetchImpl 대신 pinnedFetch를 쓴다.
73
+ * 피드에서 뽑은 주소처럼 사용자가 직접 고르지 않은 주소에만 쓴다
57
74
  */
58
75
  export declare function download(url: string, dest: string, fetchImpl?: typeof fetch, opts?: {
59
76
  lookup?: HostLookup;
77
+ pinnedFetch?: PinnedFetch;
60
78
  maxBytes?: number;
61
79
  }): Promise<{
62
80
  contentType: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../../src/lens/ingest.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAmB,KAAK,QAAQ,EAAmB,MAAM,qBAAqB,CAAC;AAEtF,OAAO,EAA4B,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAc/E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qDAAqD;IACrD,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IACpD,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACjD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sCAAsC;IACtC,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CACxE;AAwBD,yDAAyD;AACzD,eAAO,MAAM,aAAa,MAAM,CAAC;AAGjC,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,KAAG,MACoB,CAAC;AAE3D,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAKjD;AAkED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,OAAO,KAAa,EAC/B,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GACpD,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CA4BlC;AA2UD;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAa,GACjD,IAAI,CAUN;AAiDD,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAgI7C;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAiB3B"}
1
+ {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../../src/lens/ingest.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  import { createHash } from 'node:crypto';
2
2
  import { lookup as dnsLookup } from 'node:dns/promises';
3
3
  import { closeSync, cpSync, existsSync, mkdirSync, mkdtempSync, openSync, readFileSync, renameSync, rmSync, writeSync, } from 'node:fs';
4
+ import { request as httpRequest } from 'node:http';
5
+ import { request as httpsRequest } from 'node:https';
4
6
  import { isIP } from 'node:net';
5
7
  import { tmpdir } from 'node:os';
6
8
  import { basename, dirname, extname, join, resolve } from 'node:path';
9
+ import { Readable } from 'node:stream';
7
10
  import { pathToFileURL } from 'node:url';
8
11
  import { log } from '../core/log.js';
9
12
  import { writeJsonAtomic } from '../core/json-file.js';
@@ -36,10 +39,10 @@ export function guessLang(texts) {
36
39
  }
37
40
  const defaultLookup = async (host) => (await dnsLookup(host, { all: true })).map((r) => r.address);
38
41
  /**
39
- * 호스트가 루프백, 링크 로컬, 사설 대역으로 풀리면 막는다. 메타데이터 주소(169.254.169.254)도 여기 걸린다.
40
- * 검사와 연결이 DNS를 따로 풀어서 이름을 풀 때마다 주소가 바뀌는 rebinding은 막지 못한다
42
+ * 호스트가 루프백, 링크 로컬, 사설 대역으로 풀리면 막고 검사한 주소를 돌려준다. 메타데이터 주소(169.254.169.254)도 여기 걸린다.
43
+ * 연결은 돌려준 주소로만 하므로 검사 뒤에 DNS 답이 사설 주소로 바뀌어도(rebinding) 그리로 가지 않는다
41
44
  */
42
- async function assertPublicHost(url, lookup) {
45
+ async function resolvePublicHost(url, lookup) {
43
46
  const parsed = new URL(url);
44
47
  if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
45
48
  throw new Error(`http(s)가 아닌 주소로 넘어가서 받지 않았어요: ${url}`);
@@ -49,18 +52,87 @@ async function assertPublicHost(url, lookup) {
49
52
  if (addresses.length === 0 || addresses.some(isPrivateAddress)) {
50
53
  throw new Error(`피드의 오디오 주소가 내부망을 가리켜서 받지 않았어요: ${url}`);
51
54
  }
55
+ return addresses;
52
56
  }
57
+ /** 몸통을 실으면 Response 생성자가 던지는 상태 코드 */
58
+ const NULL_BODY_STATUS = new Set([101, 204, 205, 304]);
59
+ function toResponse(res) {
60
+ const headers = new Headers();
61
+ for (const [name, value] of Object.entries(res.headers)) {
62
+ if (value === undefined)
63
+ continue;
64
+ for (const v of Array.isArray(value) ? value : [value])
65
+ headers.append(name, v);
66
+ }
67
+ const status = res.statusCode ?? 502;
68
+ if (NULL_BODY_STATUS.has(status)) {
69
+ res.destroy();
70
+ return new Response(null, { status, headers });
71
+ }
72
+ const body = Readable.toWeb(res);
73
+ return new Response(body, { status, statusText: res.statusMessage ?? '', headers });
74
+ }
75
+ /**
76
+ * node:http(s)의 lookup을 갈아 끼워 address로만 연결한다. 호스트명은 URL 그대로 둬서
77
+ * Host 헤더와 TLS SNI, 인증서 검증은 원래 이름으로 한다. 소켓 풀이 다른 IP로 맺은 연결을 다시 쓰지 않게 agent를 끈다
78
+ */
79
+ export const pinnedFetch = (url, address, init = {}) => new Promise((resolvePromise, reject) => {
80
+ const target = new URL(url);
81
+ const family = isIP(address);
82
+ if (family === 0) {
83
+ reject(new Error(`고정할 주소가 IP가 아니에요: ${address}`));
84
+ return;
85
+ }
86
+ const host = target.hostname.replace(/^\[(.*)\]$/, '$1');
87
+ // Node 20부터 autoSelectFamily가 켜져 있으면 all: true로 불러 배열을 기대한다
88
+ const lookup = ((_host, opts, cb) => {
89
+ if (opts.all)
90
+ cb(null, [{ address, family }]);
91
+ else
92
+ cb(null, address, family);
93
+ });
94
+ const send = target.protocol === 'https:' ? httpsRequest : httpRequest;
95
+ const req = send(target, {
96
+ method: 'GET',
97
+ headers: { ...init.headers, Host: target.host },
98
+ signal: init.signal,
99
+ agent: false,
100
+ lookup,
101
+ ...(target.protocol === 'https:' && !isIP(host) ? { servername: host } : {}),
102
+ ...(init.ca ? { ca: init.ca } : {}),
103
+ }, (res) => resolvePromise(toResponse(res)));
104
+ req.on('error', reject);
105
+ req.end();
106
+ });
53
107
  /**
54
- * lookup이 있으면 리다이렉트를 직접 따라가며 홉마다 호스트를 다시 푼다.
108
+ * 검사한 주소를 차례로 붙어 본다. 연결이 안 되는 주소(IPv6 경로가 없는 망 같은)면 다음 주소로 넘어가고
109
+ * 응답이 오면 상태 코드와 상관없이 그 응답을 쓴다. 끊으라고 했으면 다음 주소로 가지 않는다
110
+ */
111
+ async function firstReachable(url, addresses, init, pinned) {
112
+ let last;
113
+ for (const address of addresses) {
114
+ try {
115
+ return await pinned(url, address, init);
116
+ }
117
+ catch (err) {
118
+ if (init.signal?.aborted)
119
+ throw err;
120
+ last = err;
121
+ }
122
+ }
123
+ throw last;
124
+ }
125
+ /**
126
+ * lookup이 있으면 리다이렉트를 직접 따라가며 홉마다 호스트를 다시 풀고 검사한 공개 주소로 고정해 접속한다.
55
127
  * fetch에 맡기면 중간 주소를 못 보고 마지막 응답만 받는다
56
128
  */
57
- async function fetchFollowing(url, init, fetchImpl, lookup) {
58
- if (!lookup)
129
+ async function fetchFollowing(url, init, fetchImpl, guard) {
130
+ if (!guard)
59
131
  return fetchImpl(url, { ...init, redirect: 'follow' });
60
132
  let current = url;
61
133
  for (let hop = 0; hop <= MAX_REDIRECTS; hop++) {
62
- await assertPublicHost(current, lookup);
63
- const res = await fetchImpl(current, { ...init, redirect: 'manual' });
134
+ const addresses = await resolvePublicHost(current, guard.lookup);
135
+ const res = await firstReachable(current, addresses, init, guard.pinnedFetch);
64
136
  const location = res.headers.get('location');
65
137
  if (res.status < 300 || res.status >= 400 || !location)
66
138
  return res;
@@ -89,12 +161,13 @@ async function readCapped(res, limit, tooBig, onChunk) {
89
161
  }
90
162
  /**
91
163
  * 주소를 받아 파일로 저장한다. 크기 상한을 넘으면 멈추고 받던 파일을 지운다.
92
- * lookup을 넘기면 사설 주소로 가는 요청을 막는다. 피드에서 뽑은 주소처럼 사용자가 직접 고르지 않은 주소에만 쓴다
164
+ * lookup을 넘기면 사설 주소로 가는 요청을 막고 검사한 IP로만 접속한다. 이때는 fetchImpl 대신 pinnedFetch를 쓴다.
165
+ * 피드에서 뽑은 주소처럼 사용자가 직접 고르지 않은 주소에만 쓴다
93
166
  */
94
167
  export async function download(url, dest, fetchImpl = fetch, opts = {}) {
95
168
  const limit = opts.maxBytes ?? MAX_DOWNLOAD_BYTES;
96
169
  const tooBig = `파일이 ${Math.round(limit / 1024 / 1024)}MB를 넘어요: ${url}`;
97
- const res = await fetchFollowing(url, { signal: AbortSignal.timeout(DOWNLOAD_TIMEOUT_MS), headers: { 'User-Agent': USER_AGENT } }, fetchImpl, opts.lookup);
170
+ const res = await fetchFollowing(url, { signal: AbortSignal.timeout(DOWNLOAD_TIMEOUT_MS), headers: { 'User-Agent': USER_AGENT } }, fetchImpl, opts.lookup ? { lookup: opts.lookup, pinnedFetch: opts.pinnedFetch ?? pinnedFetch } : undefined);
98
171
  if (!res.ok) {
99
172
  await res.body?.cancel().catch(() => undefined);
100
173
  throw new Error(`내려받기 실패(${res.status}): ${url}`);
@@ -117,7 +190,7 @@ export async function download(url, dest, fetchImpl = fetch, opts = {}) {
117
190
  }
118
191
  return { contentType: res.headers.get('content-type') ?? '' };
119
192
  }
120
- /** 피드 XML을 받는다. 주소는 사용자가 넘긴 것이라 사설 주소를 막지 않고 크기만 묶는다 */
193
+ /** 피드 XML을 받는다. 주소는 사용자가 넘긴 것이라 사설 주소를 막거나 IP를 고정하지 않고 크기만 묶는다 */
121
194
  async function fetchFeed(url, fetchImpl) {
122
195
  const res = await fetchImpl(url, {
123
196
  redirect: 'follow',
@@ -217,7 +290,9 @@ async function ingestPdf(input, opts, work) {
217
290
  throw new Error('PDF에서 글자를 하나도 못 뽑았어요. 스캔한 PDF면 OCR을 거친 파일로 다시 돌려 주세요.');
218
291
  }
219
292
  const firstHeading = x.units.find((u) => u.page === 1 && u.role === 'heading')?.text;
220
- const title = (x.title || firstHeading || basename(input, '.pdf')).trim().slice(0, 200);
293
+ const title = (x.title || x.layoutTitle || firstHeading || basename(input, '.pdf'))
294
+ .trim()
295
+ .slice(0, 200);
221
296
  const slug = opts.slug ?? slugFromMeta(shortHash(url), title);
222
297
  if (!isValidSlug(slug))
223
298
  throw new Error(`slug가 올바르지 않아요: ${slug}`);
@@ -450,9 +525,12 @@ async function ingestPodcast(input, opts, work) {
450
525
  }
451
526
  const ext = audioExt(remote ? audioUrl : input);
452
527
  const audioPath = join(work, `audio${ext}`);
453
- // 피드가 적은 주소는 피드 주인이 고른 것이라 내부망으로 가는지 홉마다 본다. 사용자가 직접 넘긴 주소는 막지 않는다
528
+ // 피드가 적은 주소는 피드 주인이 고른 것이라 내부망으로 가는지 홉마다 보고 검사한 IP로만 받는다.
529
+ // 사용자가 직접 넘긴 주소는 막지 않는다
454
530
  if (remote) {
455
- await download(audioUrl, audioPath, fetchImpl, fromFeed ? { lookup: opts.lookup ?? defaultLookup } : {});
531
+ await download(audioUrl, audioPath, fetchImpl, fromFeed
532
+ ? { lookup: opts.lookup ?? defaultLookup, pinnedFetch: opts.pinnedFetch ?? pinnedFetch }
533
+ : {});
456
534
  }
457
535
  else {
458
536
  if (!existsSync(resolve(input)))
@@ -1 +1 @@
1
- {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../src/lens/ingest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../src/lens/ingest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACL,SAAS,EACT,MAAM,EACN,UAAU,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,MAAM,EACN,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,IAAI,WAAW,EAAwB,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,IAAI,EAAuB,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACd,gBAAgB,GAEjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAkC,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,UAAU,EAAmB,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,cAAc,EACd,QAAQ,EACR,UAAU,EACV,WAAW,EACX,kBAAkB,GAEnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA0E3F,MAAM,kBAAkB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAC7C,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AACxC,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,mBAAmB,GAAG,OAAO,CAAC;AACpC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AACnC,yDAAyD;AACzD,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AACjC,MAAM,UAAU,GAAG,uDAAuD,CAAC;AAE3E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAS,EAAU,EAAE,CAC7C,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE3D,6DAA6D;AAC7D,MAAM,UAAU,SAAS,CAAC,KAAe;IACvC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IAChD,OAAO,OAAO,GAAG,CAAC,IAAI,MAAM,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,MAAM,aAAa,GAAe,KAAK,EAAE,IAAI,EAAE,EAAE,CAC/C,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAE/D;;;GAGG;AACH,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,MAAkB;IAC9D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,sCAAsC;AACtC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEvD,SAAS,UAAU,CAAC,GAAoB;IACtC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC;IACrC,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAA+B,CAAC;IAC/D,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AACtF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,CAClE,IAAI,OAAO,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE;IACrC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACzD,4DAA4D;IAC5D,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;QAClC,IAAI,IAAI,CAAC,GAAG;YAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;;YACzC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC,CAAmB,CAAC;IACrB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;IACvE,MAAM,GAAG,GAAG,IAAI,CACd,MAAM,EACN;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;QAC/C,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,KAAK;QACZ,MAAM;QACN,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpC,EACD,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CACzC,CAAC;IACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxB,GAAG,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEL;;;GAGG;AACH,KAAK,UAAU,cAAc,CAC3B,GAAW,EACX,SAAmB,EACnB,IAAgB,EAChB,MAAmB;IAEnB,IAAI,IAAa,CAAC;IAClB,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO;gBAAE,MAAM,GAAG,CAAC;YACpC,IAAI,GAAG,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IACD,MAAM,IAAI,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAC3B,GAAW,EACX,IAAgB,EAChB,SAAuB,EACvB,KAAmE;IAEnE,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnE,IAAI,OAAO,GAAG,GAAG,CAAC;IAClB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9E,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ;YAAE,OAAO,GAAG,CAAC;QACnE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAChD,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,UAAU,aAAa,gBAAgB,GAAG,EAAE,CAAC,CAAC;AAChE,CAAC;AAED,iDAAiD;AACjD,KAAK,UAAU,UAAU,CACvB,GAAa,EACb,KAAa,EACb,MAAc,EACd,OAAoC;IAEpC,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,OAAO;IACtB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACpC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,SAAS,CAAC;QACR,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,IAAI;YAAE,OAAO;QACjB,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC;QAC1B,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;YAClB,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAW,EACX,IAAY,EACZ,YAA0B,KAAK,EAC/B,OAA8E,EAAE;IAEhF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,kBAAkB,CAAC;IAClD,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IACvE,MAAM,GAAG,GAAG,MAAM,cAAc,CAC9B,GAAG,EACH,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAC3F,SAAS,EACT,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAChG,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,IAAI,QAAQ,GAAG,KAAK,EAAE,CAAC;QACrB,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QACtE,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,QAAQ;YAAE,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;AAChE,CAAC;AAED,kEAAkE;AAClE,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,SAAuB;IAC3D,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;QAC/B,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAChD,OAAO,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE;KACtC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,kBAAkB,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,GAAe,EACf,MAAc,EACd,MAAc,EACd,IAAc,EACd,GAAW,EACX,SAAiB;IAEjB,IAAI,CAAC;QACH,sEAAsE;QACtE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QACxF,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,GAAG,CAAC,YAAY,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5E,IAAI,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAI,MAAc,EAAE,IAAY;IACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IACnD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,uBAAuB,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED,uDAAuD;AACvD,SAAS,aAAa,CAAC,IAAY,EAAE,EAAU,EAAE,IAAc;IAC7D,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CACd,KAAkB,EAClB,UAAmB,EACnB,MAAe;IAQf,MAAM,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,MAAM,CAAC,CAAC,KAAK,CAAC;IACzB,MAAM,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,sBAAsB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClG,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvD,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO;QACL,cAAc;QACd,UAAU;QACV,UAAU,EAAE,CAAC,CAAC,KAAK;QACnB,MAAM,EAAE,CAAC,CAAC,IAAI;QACd,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,KAAa,EACb,IAAuB,EACvB,IAAY;IAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC;IACnC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACzC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,OAAO,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,4CAA4C,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9B,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,SAAS,CACtB,GAAG,EACH,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE,EAC3B,cAAc,EACd,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,EACrC,IAAI,EACJ,kBAAkB,CACnB,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,oDAAoD;QACpD,MAAM,CAAC,GAAG,CAAC,YAAY,YAAY,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnF,IAAI,CAAC,EAAE,CAAC;YACN,MAAM,IAAI,KAAK,CACb,QAAQ,CAAC,CAAC,CAAC,CAAE,kBAAkB,aAAa,qCAAqC,EACjF,EAAE,KAAK,EAAE,CAAC,EAAE,CACb,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;IACD,MAAM,CAAC,GAAG,YAAY,CAAa,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,uDAAuD,CACxD,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,IAAI,CAAC;IACrF,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,WAAW,IAAI,YAAY,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAChF,IAAI,EAAE;SACN,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAElD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CACX,iBAAiB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAC5D,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE7E,MAAM,KAAK,GAAG,OAAO,CACnB,KAAK,EACL;QACE,IAAI;QACJ,IAAI,EAAE;YACJ,MAAM,EAAE,KAAK;YACb,GAAG;YACH,KAAK;YACL,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3C,aAAa,EAAE,MAAM;SACtB;QACD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5B,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,QAAQ,EAAE,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC;KACJ,EACD;QACE,aAAa,EAAE,0BAA0B;QACzC,IAAI;QACJ,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,OAAO,EAAE,CAAC,CAAC,OAAO;KACnB,CACF,CAAC;IACF,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,KAAK;QACX,KAAK;QACL,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM;QACvC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;QAChC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnF,QAAQ;QACR,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC;AAmBD,MAAM,OAAO,GAAG,CAAC,CAAqB,EAAsB,EAAE;IAC5D,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF,SAAS,MAAM,CAAC,GAAW;IACzB,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,KAAa,EACb,IAAuB,EACvB,IAAY;IAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC;IACnC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACtF,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACzC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAC5B,GAAG,EACH,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE,EAC3B,cAAc,EACd,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAC5C,IAAI,EACJ,kBAAkB,CACnB,CAAC;IACF,MAAM,CAAC,GAAG,YAAY,CAAa,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,kDAAkD,CACnD,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;SAC/F,IAAI,EAAE;SACN,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACxD,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,OAAO,CACnB,KAAK,EACL;QACE,IAAI;QACJ,IAAI,EAAE;YACJ,MAAM,EAAE,KAAK;YACb,GAAG;YACH,KAAK;YACL,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC9B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;gBACtB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzC,aAAa,EAAE,MAAM;SACtB;QACD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5B,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,QAAQ,EAAE,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjC,CAAC,CAAC;KACJ,EACD,EAAE,aAAa,EAAE,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CACnF,CAAC;IACF,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,KAAK;QACX,KAAK;QACL,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM;QACvC,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE;QACxE,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC;AAQD,qCAAqC;AACrC,SAAS,YAAY,CAAC,IAAY,EAAE,QAAgB,EAAE,IAAY;IAChE,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1E,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,+BAA+B,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,EAAU,EACV,OAA4C,MAAM;IAElD,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,GAAG,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC;QACH,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjB,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9B,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,mBAAmB,CAChC,GAAe,EACf,SAAuB,EACvB,IAAY;IAEZ,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,CAAC;IACxC,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC;IACrC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG;QACd,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChD,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC9C,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;QACxE,GAAG,CAAC,0BAA0B,EAAE,gCAAgC,GAAG,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;QACnD,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAChD,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC5C,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE;YACpE,GAAG,EAAE,IAAI;YACT,SAAS,EAAE,mBAAmB;SAC/B,CAAC,CAAC;QACH,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAC7C,MAAM,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC5C,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC/C,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;AACrC,CAAC;AAED,+DAA+D;AAC/D,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAE7C;;;GAGG;AACH,KAAK,UAAU,aAAa,CAC1B,KAAa,EACb,IAAuB,EACvB,IAAY;IAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IAC1C,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,OAA2B,CAAC;IAChC,yCAAyC;IACzC,MAAM,UAAU,GAAG,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACjG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;IACvC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QAC7E,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;QACvB,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;QACjB,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACf,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,EAAE,CAAC,CAAC;IAC5C,0DAA0D;IAC1D,wBAAwB;IACxB,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,QAAQ,CACZ,QAAQ,EACR,SAAS,EACT,SAAS,EACT,QAAQ;YACN,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE;YACxF,CAAC,CAAC,EAAE,CACP,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,IAAI,qBAAqB,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,SAAS,CAC5B,GAAG,EACH,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE,EAC3B,kBAAkB,EAClB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,EACtB,IAAI;IACJ,sDAAsD;IACtD,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CACnB,CAAC;IACF,MAAM,CAAC,GAAG,YAAY,CAAa,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,4CAA4C;IAC5C,IAAI,QAAQ,GAA8B,EAAE,CAAC;IAC7C,IAAI,WAAmB,CAAC;IACxB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAC/D,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,GAAG,EACH,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE,EAC3B,UAAU,EACV,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAC7E,IAAI,EACJ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CACnB,CAAC;YACF,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAgB,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;YACjF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,WAAW,GAAG,MAAM,KAAK,qCAAqC,CAAC;QACjE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzE,WAAW,GAAG,4BAA4B,MAAM,EAAE,CAAC;QACrD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,wCAAwC,KAAK,GAAG,CAAC;IACjE,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IAClE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAChD,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,OAAO,CACnB,KAAK,EACL;QACE,IAAI;QACJ,IAAI,EAAE;YACJ,MAAM,EAAE,SAAS;YACjB,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;YACxD,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,SAAS;YACtC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,GAAG;YAC/C,IAAI,EAAE,CAAC,CAAC,QAAQ,IAAI,KAAK;YACzB,aAAa,EAAE,SAAS;SACzB;QACD,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAChC,6CAA6C;YAC7C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC,CAAC;KACH,EACD,EAAE,aAAa,EAAE,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CACrE,CAAC;IACF,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK;QAClC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM;QACvC,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,CAAC,WAAW,CAAC;QACvB,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,IAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,iDAAiD,KAAK,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,4DAA4D;IAC5D,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,IAAI,QAAQ,KAAK,KAAK;YAAE,OAAO,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAClE,IAAI,QAAQ,KAAK,KAAK;YAAE,OAAO,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAClE,OAAO,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC"}
@@ -7,6 +7,8 @@
7
7
  * 모든 줄에서 비어 있는 세로 띠를 칸 경계로 본다. 칸이 하나뿐이거나 빈칸이 30%를 넘으면 grid를 loose로 적는다.
8
8
  * - 그림: "Figure N:" 캡션 위나 아래의 비트맵을 묶어 자르고 벡터 그림은 캡션 위 빈자리를 자른다.
9
9
  *
10
+ * - 제목: 첫 쪽 위쪽에서 글자가 가장 큰 줄들이다. 글꼴 크기로 단어를 나누면 작은 대문자 제목이 조각나서 여기서는 크기를 안 보고 단어를 뽑는다.
11
+ *
10
12
  * 결과 JSON은 stdout 마지막 줄 하나로 낸다. 쪽 그림과 크롭은 두 번째 인자 폴더의 pages/, figures/, tables/에 쓴다.
11
13
  * 세 번째 인자는 쪽 수 상한이다. 넘으면 stderr에 too-many-pages를 남기고 멈춘다.
12
14
  * 백틱과 달러 중괄호가 없어야 String.raw 안에 그대로 실린다
@@ -1 +1 @@
1
- {"version":3,"file":"pdf-extract-py.d.ts","sourceRoot":"","sources":["../../../src/lens/pdf-extract-py.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,QA+Y1B,CAAC"}
1
+ {"version":3,"file":"pdf-extract-py.d.ts","sourceRoot":"","sources":["../../../src/lens/pdf-extract-py.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,QAgb1B,CAAC"}
@@ -7,6 +7,8 @@
7
7
  * 모든 줄에서 비어 있는 세로 띠를 칸 경계로 본다. 칸이 하나뿐이거나 빈칸이 30%를 넘으면 grid를 loose로 적는다.
8
8
  * - 그림: "Figure N:" 캡션 위나 아래의 비트맵을 묶어 자르고 벡터 그림은 캡션 위 빈자리를 자른다.
9
9
  *
10
+ * - 제목: 첫 쪽 위쪽에서 글자가 가장 큰 줄들이다. 글꼴 크기로 단어를 나누면 작은 대문자 제목이 조각나서 여기서는 크기를 안 보고 단어를 뽑는다.
11
+ *
10
12
  * 결과 JSON은 stdout 마지막 줄 하나로 낸다. 쪽 그림과 크롭은 두 번째 인자 폴더의 pages/, figures/, tables/에 쓴다.
11
13
  * 세 번째 인자는 쪽 수 상한이다. 넘으면 stderr에 too-many-pages를 남기고 멈춘다.
12
14
  * 백틱과 달러 중괄호가 없어야 String.raw 안에 그대로 실린다
@@ -230,7 +232,40 @@ def join_text(lines):
230
232
  text = text[:-1] + t
231
233
  else:
232
234
  text += " " + t
233
- return text
235
+ # 소수점 양옆에 공백이 끼어 "41 . 0"으로 뽑힌 것만 붙인다. 문장 끝 마침표는 앞에 공백이 없어 안 걸린다
236
+ return re.sub(r"(?<=\d) \. (?=\d)", ".", text)
237
+
238
+
239
+ def layout_title(page):
240
+ # 세로로 찍힌 arXiv 표시처럼 눕지 않은 글자는 뺀다
241
+ p = page.filter(lambda o: o.get("object_type") != "char" or o.get("upright", True))
242
+ limit = p.height * 0.45
243
+ words = [w for w in p.extract_words() if w["bottom"] < limit]
244
+ chars = [c for c in p.chars if c["bottom"] < limit]
245
+ lines = []
246
+ for w in sorted(words, key=lambda w: (w["bottom"], w["x0"])):
247
+ if lines and abs(lines[-1]["bottom"] - w["bottom"]) < 3:
248
+ lines[-1]["words"].append(w)
249
+ else:
250
+ lines.append({"bottom": w["bottom"], "words": [w]})
251
+ for l in lines:
252
+ x0 = min(w["x0"] for w in l["words"])
253
+ x1 = max(w["x1"] for w in l["words"])
254
+ top = min(w["top"] for w in l["words"])
255
+ l["size"] = max((c["size"] for c in chars if c["x0"] >= x0 - 1 and c["x1"] <= x1 + 1 and c["top"] >= top - 1 and c["bottom"] <= l["bottom"] + 1), default=0)
256
+ l["text"] = " ".join(w["text"] for w in sorted(l["words"], key=lambda w: w["x0"]))
257
+ # 낱글자만 큰 장식 머리글이 이기지 않게 영문자가 여섯 개 넘는 줄만 견준다
258
+ cand = [l for l in lines if sum(ch.isalpha() for ch in l["text"]) >= 6]
259
+ if not cand:
260
+ return ""
261
+ biggest = max(l["size"] for l in cand)
262
+ out = []
263
+ for l in lines:
264
+ if l in cand and l["size"] >= biggest - 0.6:
265
+ out.append(l["text"])
266
+ elif out:
267
+ break
268
+ return " ".join(out)
234
269
 
235
270
 
236
271
  def main():
@@ -393,7 +428,7 @@ def main():
393
428
  for f in figures:
394
429
  f["unit"] = next(u["i"] for u in units if u.get("ref") == f["id"])
395
430
  meta = pdf.metadata or {}
396
- print(json.dumps({"title": meta.get("Title") or "", "pageCount": len(pdf.pages), "pages": pages, "units": units, "tables": tables, "figures": figures}))
431
+ print(json.dumps({"title": meta.get("Title") or "", "layoutTitle": layout_title(pdf.pages[0]) if pdf.pages else "", "pageCount": len(pdf.pages), "pages": pages, "units": units, "tables": tables, "figures": figures}))
397
432
 
398
433
 
399
434
  def close(cur, pno, units, body):
@@ -1 +1 @@
1
- {"version":3,"file":"pdf-extract-py.js","sourceRoot":"","sources":["../../../src/lens/pdf-extract-py.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+YvC,CAAC"}
1
+ {"version":3,"file":"pdf-extract-py.js","sourceRoot":"","sources":["../../../src/lens/pdf-extract-py.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgbvC,CAAC"}