From 85c7c93bd1cfc3dd7b5e02fd94ae3784b0391965 Mon Sep 17 00:00:00 2001 From: harumiWeb Date: Sat, 3 Jan 2026 21:32:57 +0900 Subject: [PATCH 01/11] =?UTF-8?q?=E7=B5=90=E5=90=88=E3=82=BB=E3=83=AB?= =?UTF-8?q?=E5=8F=96=E5=BE=97=E3=83=A2=E3=83=87=E3=83=AB=E3=81=AE=E6=96=B0?= =?UTF-8?q?=E8=A6=8F=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/agents/FEATURE_SPEC.md | 9 ++++----- docs/agents/ROADMAP.md | 8 ++++++++ src/exstruct/models/__init__.py | 13 +++++++++++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/docs/agents/FEATURE_SPEC.md b/docs/agents/FEATURE_SPEC.md index f512aa7..32ae620 100644 --- a/docs/agents/FEATURE_SPEC.md +++ b/docs/agents/FEATURE_SPEC.md @@ -4,12 +4,11 @@ --- -## SmartArt解析機能追加 +## セル結合範囲取得機能の追加 -- shapeがSmartArtの場合に専用解析をするように条件分岐 -- Shapeの振る舞いが増えてきたので、ここでShape, Arrow, SmartArtにクラスを分ける -- SmartArtは基本はShapeのフィールドを持ちつつ、Nodeの情報を再帰的に持つようにする -- rootノードとそれ以外のノードでクラスを分ける +- 新たに`MergedCell`モデルを作成、座標情報とセル値を持つ +- `SheetData`に`merged_ranges`フィールドを追加し、list[MergedRange]を持つ +- デフォルトモード以上(standard/verbose)で取得するようにする。engineには無効化オプションをつけておく(outputoptionsで出力時に削除する方向で) ## 今後のオプション(検討メモ) diff --git a/docs/agents/ROADMAP.md b/docs/agents/ROADMAP.md index f13ad1d..55aaefa 100644 --- a/docs/agents/ROADMAP.md +++ b/docs/agents/ROADMAP.md @@ -36,6 +36,14 @@ - Shapes と Arrows の分離(後の SmartArt 追加のため) - SmartArt 解析 +## v0.3.2 + +- セル結合範囲取得機能追加 + +## v0.3.3 + +- 数式取得オプション追加 + ## v0.4.0 - Excel Form Controls 解析 diff --git a/src/exstruct/models/__init__.py b/src/exstruct/models/__init__.py index bd40d0b..9578ea9 100644 --- a/src/exstruct/models/__init__.py +++ b/src/exstruct/models/__init__.py @@ -76,6 +76,16 @@ class SmartArt(BaseShape): ) +class MergedCell(BaseModel): + """Metadata for a merged cell range.""" + + r1: int = Field(description="Start row (1-based).") + c1: int = Field(description="Start column (0-based).") + r2: int = Field(description="End row (1-based, inclusive).") + c2: int = Field(description="End column (0-based, inclusive).") + v: str = "" + + class CellRow(BaseModel): """A single row of cells with optional hyperlinks.""" @@ -160,6 +170,9 @@ class SheetData(BaseModel): "where row is 1-based and column is 0-based." ), ) + merged_cells: list[MergedCell] = Field( + default_factory=list, description="Merged cell ranges on the sheet." + ) def _as_payload(self) -> dict[str, object]: from ..io import dict_without_empty_values From 58131c70e475fd75d4b06841e5acd55b76dc43b8 Mon Sep 17 00:00:00 2001 From: harumiWeb Date: Sat, 3 Jan 2026 21:40:42 +0900 Subject: [PATCH 02/11] =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E3=83=A2?= =?UTF-8?q?=E3=83=87=E3=83=AB=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/agents/DATA_MODEL.md | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/docs/agents/DATA_MODEL.md b/docs/agents/DATA_MODEL.md index 3ed8c7f..ff2284b 100644 --- a/docs/agents/DATA_MODEL.md +++ b/docs/agents/DATA_MODEL.md @@ -1,6 +1,6 @@ # ExStruct データモデル仕様 -**Version**: 0.13 +**Version**: 0.14 **Status**: Authoritative — 本ドキュメントは ExStruct が返す全モデルの唯一の正準ソースです。 core / io / integrate は必ずこの仕様に従うこと。モデルは **pydantic v2** で実装します。 @@ -148,7 +148,25 @@ PrintAreaView { --- -# 8. SheetData Model +# 8. MergedCell Model + +```jsonc +MergedCell { + r1: int // 開始行 (1-based) + c1: int // 開始列 (0-based) + r2: int // 終了行 (1-based, inclusive) + c2: int // 終了列 (0-based, inclusive) + v: str // 結合セルの代表値 (空文字の可能性あり) +} +``` + +補足: + +- `standard` / `verbose` で取得される + +--- + +# 9. SheetData Model ```jsonc SheetData { @@ -159,6 +177,7 @@ SheetData { print_areas: [PrintArea] auto_print_areas: [PrintArea] // 自動改ページ矩形(COM 前提、デフォルト無効) colors_map: {[colorHex: str]: [[int, int]]} // (row=1-based, col=0-based) のセル座標を列挙 + merged_cells: [MergedCell] // ?????? (standard/verbose) } ``` @@ -169,7 +188,7 @@ SheetData { --- -# 9. WorkbookData Model (トップレベル) +# 10. WorkbookData Model (トップレベル) ```jsonc WorkbookData { @@ -184,7 +203,7 @@ WorkbookData { --- -# 10. Export Helpers (SheetData / WorkbookData) +# 11. Export Helpers (SheetData / WorkbookData) 共通: @@ -205,7 +224,7 @@ WorkbookData { --- -# 11. Versioning Principles(エージェント向け) +# 12. Versioning Principles(エージェント向け) - モデル変更時は必ず本ファイルを先に更新する。 - モデルは純粋なデータコンテナとし、副作用を持たせない。 @@ -213,7 +232,7 @@ WorkbookData { --- -# 12. Changelog +# 13. Changelog - 0.3: serialize/save ヘルパーを追加、`WorkbookData` に `__iter__` / `__getitem__` を定義。 - 0.4: `CellRow.links` を追加(ハイパーリンクは opt-in、verbose でデフォルト有効)。 @@ -226,3 +245,4 @@ WorkbookData { - 0.11: コネクタのフィールド名を `begin_id` / `end_id` にリネーム。 - 0.12: SheetData に背景色情報を格納する`colors_map`を追加。 - 0.13: Shape を `Shape` / `Arrow` / `SmartArt` に分離し、`SmartArtNode` のネスト構造を追加。 +- 0.14: セル結合範囲データを持つ`MergedCell`,`SheetData.merged_cells` を追加 From 5ee5d657c34ede5968c9b7f3784677688364f316 Mon Sep 17 00:00:00 2001 From: harumiWeb Date: Sat, 3 Jan 2026 21:42:01 +0900 Subject: [PATCH 03/11] tasks refresh --- docs/agents/TASKS.md | 33 +-------------------------------- 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/docs/agents/TASKS.md b/docs/agents/TASKS.md index 767d666..3409d87 100644 --- a/docs/agents/TASKS.md +++ b/docs/agents/TASKS.md @@ -1,34 +1,3 @@ # Task List -## 1. 既存実装の修正(モデル分離の影響対応) - -- [x] `src/exstruct/io/__init__.py` の `_filter_shapes_to_area` が `list[Shape | Arrow | SmartArt]` を受け取れるように型と処理を調整する -- [x] `src/exstruct/core/shapes.py` のコネクタ判定を `Arrow` 前提に変更する(`begin_arrow_style` / `end_arrow_style` などは `Arrow` のみ参照) -- [x] `src/exstruct/core/shapes.py` の接続 ID 参照を `Arrow` に限定し、`Shape` からの誤参照を除去する -- [x] `PrintAreaView` 側の `shapes` フィルタで `SmartArt` を落とさないことを確認する - -## 2. SmartArt 取得機能の実装方針 - -- [x] `shape.HasSmartArt` を条件に SmartArt を抽出する -- [x] `SmartArt.Layout.Name` を `SmartArt.layout` に格納する -- [x] `SmartArt.AllNodes` を走査し、`level` と `text` を収集する -- [x] ノード配列から `SmartArtNode` のツリー(`nodes`)を構築する(`level` を使ったスタック組み立て) -- [x] `SmartArt` は `BaseShape` 相当の位置/サイズ/回転/テキストを併せて格納する - -## 3. 実装箇所の整理 - -- [x] `src/exstruct/core/shapes.py` に SmartArt 抽出用の関数を追加する(1 関数=1 責務を遵守) -- [x] `src/exstruct/core/shapes.py` のメイン抽出処理で `Shape` / `Arrow` / `SmartArt` に振り分ける -- [x] `src/exstruct/io/__init__.py` で `Shape | Arrow | SmartArt` のシリアライズ挙動が崩れないことを確認する - -## 4. 動作確認 - -- [x] 既存の shape / connector 抽出が壊れていないことを確認する -- [ ] SmartArt が含まれるブックで `SmartArt.nodes` が期待どおりに出力されることを確認する - -## 5. テストケース(カバレッジ維持) - -- [x] `SmartArt` の `nodes` がネスト構造でシリアライズされることを確認する -- [x] `Arrow` のみが `begin_id` / `end_id` を持ち、`Shape` では参照されないことを確認する -- [x] `_filter_shapes_to_area` が `Shape | Arrow | SmartArt` を受け取り、SmartArt も対象に含めることを確認する -- [x] `kind` による判別が想定どおり動くことを確認する +[ ]で作成、完了は[x]と記載すること From abcdac23bc88d69ea3055a5c12a281b6fd0f5b99 Mon Sep 17 00:00:00 2001 From: harumiWeb Date: Sat, 3 Jan 2026 22:13:21 +0900 Subject: [PATCH 04/11] =?UTF-8?q?-=20Openpyxl=20=E3=81=8B=E3=82=89?= =?UTF-8?q?=E7=B5=90=E5=90=88=E3=82=BB=E3=83=AB=E7=AF=84=E5=9B=B2=E3=82=92?= =?UTF-8?q?=E6=8A=BD=E5=87=BA=E3=81=97=E3=80=81MergedCell=20=E3=81=A8?= =?UTF-8?q?=E3=81=97=E3=81=A6=E4=BF=9D=E6=8C=81=20-=20Pipeline/Modeling=20?= =?UTF-8?q?=E3=81=AB=20merged=5Fcells=20=E3=82=92=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=E3=81=97=E3=81=A6=E7=B5=B1=E5=90=88=20-=20Engine=20=E3=81=AB?= =?UTF-8?q?=E6=8A=BD=E5=87=BA=E3=82=AA=E3=83=97=E3=82=B7=E3=83=A7=E3=83=B3?= =?UTF-8?q?=E3=81=A8=E5=87=BA=E5=8A=9B=E3=83=95=E3=82=A3=E3=83=AB=E3=82=BF?= =?UTF-8?q?=EF=BC=88include=5Fmerged=5Fcells=EF=BC=89=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/agents/TASKS.md | 12 +++- src/exstruct/core/backends/base.py | 6 +- src/exstruct/core/backends/com_backend.py | 6 +- .../core/backends/openpyxl_backend.py | 14 ++++- src/exstruct/core/cells.py | 37 ++++++++++++- src/exstruct/core/integrate.py | 3 + src/exstruct/core/modeling.py | 4 ++ src/exstruct/core/pipeline.py | 55 ++++++++++++++++++- src/exstruct/engine.py | 9 +++ uv.lock | 2 +- 10 files changed, 141 insertions(+), 7 deletions(-) diff --git a/docs/agents/TASKS.md b/docs/agents/TASKS.md index 3409d87..1a579a1 100644 --- a/docs/agents/TASKS.md +++ b/docs/agents/TASKS.md @@ -1,3 +1,13 @@ # Task List -[ ]で作成、完了は[x]と記載すること +## セル結合範囲取得(MergedCell) + +- [ ] 既存の抽出フローで結合セル情報の入口を確認(Openpyxl/COMの責務境界を整理) +- [ ] Backend Protocol に merged_cells 抽出メソッドを追加(未実装は NotImplementedError) +- [ ] OpenpyxlBackend で結合セル範囲と代表値を抽出(standard/verbose のみ) +- [ ] ComBackend で取得可否を判断し、可能なら実装・難しければ未実装扱い +- [ ] Pipeline に抽出呼び出しを追加(fallback の理由ログを明示) +- [ ] Modeling で raw 結合セル情報を MergedCell に正規化し、SheetData.merged_cells に統合 +- [ ] Engine の無効化オプション追加(出力時は OutputOptions で merged_cells を削除) +- [ ] テスト追加(Backend:抽出, Pipeline:fallback, Modeling:統合) +- [ ] ドキュメント更新確認(DATA_MODEL 反映済みか確認) \ No newline at end of file diff --git a/src/exstruct/core/backends/base.py b/src/exstruct/core/backends/base.py index 8cf68fd..27d8bdc 100644 --- a/src/exstruct/core/backends/base.py +++ b/src/exstruct/core/backends/base.py @@ -3,11 +3,12 @@ from dataclasses import dataclass from typing import Protocol -from ...models import CellRow, PrintArea +from ...models import CellRow, MergedCell, PrintArea from ..cells import WorkbookColorsMap CellData = dict[str, list[CellRow]] PrintAreaData = dict[str, list[PrintArea]] +MergedCellData = dict[str, list[MergedCell]] @dataclass(frozen=True) @@ -36,3 +37,6 @@ def extract_colors_map( self, *, include_default_background: bool, ignore_colors: set[str] | None ) -> WorkbookColorsMap | None: """Extract colors map from the workbook.""" + + def extract_merged_cells(self) -> MergedCellData: + """Extract merged cell ranges from the workbook.""" diff --git a/src/exstruct/core/backends/com_backend.py b/src/exstruct/core/backends/com_backend.py index 94ac8cf..c6bdaf3 100644 --- a/src/exstruct/core/backends/com_backend.py +++ b/src/exstruct/core/backends/com_backend.py @@ -11,7 +11,7 @@ from ...models import PrintArea from ..cells import WorkbookColorsMap, extract_sheet_colors_map_com from ..ranges import parse_range_zero_based -from .base import PrintAreaData +from .base import MergedCellData, PrintAreaData logger = logging.getLogger(__name__) @@ -154,6 +154,10 @@ def extract_auto_page_breaks(self) -> PrintAreaData: continue return results + def extract_merged_cells(self) -> MergedCellData: + """Extract merged cell ranges via COM (not implemented).""" + raise NotImplementedError("COM merged cell extraction is not implemented.") + def _parse_print_area_range(range_str: str) -> tuple[int, int, int, int] | None: """Parse an Excel range string into zero-based coordinates. diff --git a/src/exstruct/core/backends/openpyxl_backend.py b/src/exstruct/core/backends/openpyxl_backend.py index 1619bd8..f7593d3 100644 --- a/src/exstruct/core/backends/openpyxl_backend.py +++ b/src/exstruct/core/backends/openpyxl_backend.py @@ -13,10 +13,11 @@ extract_sheet_cells, extract_sheet_cells_with_links, extract_sheet_colors_map, + extract_sheet_merged_cells, ) from ..ranges import parse_range_zero_based from ..workbook import openpyxl_workbook -from .base import CellData, PrintAreaData +from .base import CellData, MergedCellData, PrintAreaData logger = logging.getLogger(__name__) @@ -87,6 +88,17 @@ def extract_colors_map( ) return None + def extract_merged_cells(self) -> MergedCellData: + """Extract merged cell ranges per sheet. + + Returns: + Mapping of sheet name to merged cell ranges. + """ + try: + return extract_sheet_merged_cells(self.file_path) + except Exception: + return {} + def detect_tables(self, sheet_name: str) -> list[str]: """Detect table candidates for a single sheet. diff --git a/src/exstruct/core/cells.py b/src/exstruct/core/cells.py index a855a3e..5aaead9 100644 --- a/src/exstruct/core/cells.py +++ b/src/exstruct/core/cells.py @@ -15,7 +15,7 @@ import pandas as pd import xlwings as xw -from ..models import CellRow +from ..models import CellRow, MergedCell from .workbook import openpyxl_workbook logger = logging.getLogger(__name__) @@ -526,6 +526,41 @@ def extract_sheet_cells_with_links(file_path: Path) -> dict[str, list[CellRow]]: return merged +def extract_sheet_merged_cells(file_path: Path) -> dict[str, list[MergedCell]]: + """Extract merged cell ranges per sheet via openpyxl. + + Args: + file_path: Excel workbook path. + + Returns: + Mapping of sheet name to merged cell ranges. + """ + merged_by_sheet: dict[str, list[MergedCell]] = {} + with openpyxl_workbook(file_path, data_only=True, read_only=False) as wb: + for ws in wb.worksheets: + merged_ranges = getattr(ws, "merged_cells", None) + if merged_ranges is None: + merged_by_sheet[ws.title] = [] + continue + results: list[MergedCell] = [] + for merged_range in getattr(merged_ranges, "ranges", []): + bounds = range_boundaries(str(merged_range)) + min_col, min_row, max_col, max_row = bounds + cell_value = ws.cell(row=min_row, column=min_col).value + value_str = "" if cell_value is None else str(cell_value) + results.append( + MergedCell( + r1=min_row, + c1=min_col - 1, + r2=max_row, + c2=max_col - 1, + v=value_str, + ) + ) + merged_by_sheet[ws.title] = results + return merged_by_sheet + + def shrink_to_content( # noqa: C901 sheet: xw.Sheet, top: int, diff --git a/src/exstruct/core/integrate.py b/src/exstruct/core/integrate.py index afb41dc..77815aa 100644 --- a/src/exstruct/core/integrate.py +++ b/src/exstruct/core/integrate.py @@ -17,6 +17,7 @@ def extract_workbook( # noqa: C901 include_colors_map: bool | None = None, include_default_background: bool = False, ignore_colors: set[str] | None = None, + include_merged_cells: bool | None = None, ) -> WorkbookData: """Extract workbook and return WorkbookData. @@ -31,6 +32,7 @@ def extract_workbook( # noqa: C901 include_colors_map: Whether to include colors map; None uses mode defaults. include_default_background: Whether to include default background color. ignore_colors: Optional set of color keys to ignore. + include_merged_cells: Whether to include merged cell ranges; None uses mode defaults. Returns: Extracted WorkbookData. @@ -47,6 +49,7 @@ def extract_workbook( # noqa: C901 include_colors_map=include_colors_map, include_default_background=include_default_background, ignore_colors=ignore_colors, + include_merged_cells=include_merged_cells, ) result = run_extraction_pipeline(inputs) return result.workbook diff --git a/src/exstruct/core/modeling.py b/src/exstruct/core/modeling.py index 2b312e8..fb3e665 100644 --- a/src/exstruct/core/modeling.py +++ b/src/exstruct/core/modeling.py @@ -6,6 +6,7 @@ Arrow, CellRow, Chart, + MergedCell, PrintArea, Shape, SheetData, @@ -26,6 +27,7 @@ class SheetRawData: print_areas: Extracted print areas. auto_print_areas: Extracted auto page-break areas. colors_map: Mapping of color keys to (row, column) positions. + merged_cells: Extracted merged cell ranges. """ rows: list[CellRow] @@ -35,6 +37,7 @@ class SheetRawData: print_areas: list[PrintArea] auto_print_areas: list[PrintArea] colors_map: dict[str, list[tuple[int, int]]] + merged_cells: list[MergedCell] @dataclass(frozen=True) @@ -67,6 +70,7 @@ def build_sheet_data(raw: SheetRawData) -> SheetData: print_areas=raw.print_areas, auto_print_areas=raw.auto_print_areas, colors_map=raw.colors_map, + merged_cells=raw.merged_cells, ) diff --git a/src/exstruct/core/pipeline.py b/src/exstruct/core/pipeline.py index 9dfcc04..5199b30 100644 --- a/src/exstruct/core/pipeline.py +++ b/src/exstruct/core/pipeline.py @@ -10,7 +10,16 @@ import xlwings as xw from ..errors import FallbackReason -from ..models import Arrow, CellRow, Chart, PrintArea, Shape, SmartArt, WorkbookData +from ..models import ( + Arrow, + CellRow, + Chart, + MergedCell, + PrintArea, + Shape, + SmartArt, + WorkbookData, +) from .backends.com_backend import ComBackend from .backends.openpyxl_backend import OpenpyxlBackend from .cells import WorkbookColorsMap, detect_tables @@ -23,6 +32,7 @@ ExtractionMode = Literal["light", "standard", "verbose"] CellData = dict[str, list[CellRow]] PrintAreaData = dict[str, list[PrintArea]] +MergedCellData = dict[str, list[MergedCell]] ShapeData = dict[str, list[Shape | Arrow | SmartArt]] ChartData = dict[str, list[Chart]] @@ -42,6 +52,7 @@ class ExtractionInputs: include_colors_map: Whether to include background colors map. include_default_background: Whether to include default background color. ignore_colors: Optional set of color keys to ignore. + include_merged_cells: Whether to include merged cell ranges. """ file_path: Path @@ -52,6 +63,7 @@ class ExtractionInputs: include_colors_map: bool include_default_background: bool ignore_colors: set[str] | None + include_merged_cells: bool @dataclass @@ -65,6 +77,7 @@ class ExtractionArtifacts: colors_map_data: Extracted colors map for workbook sheets. shape_data: Extracted shapes per sheet. chart_data: Extracted charts per sheet. + merged_cell_data: Extracted merged cell ranges per sheet. """ cell_data: CellData = field(default_factory=dict) @@ -73,6 +86,7 @@ class ExtractionArtifacts: colors_map_data: WorkbookColorsMap | None = None shape_data: ShapeData = field(default_factory=dict) chart_data: ChartData = field(default_factory=dict) + merged_cell_data: MergedCellData = field(default_factory=dict) ExtractionStep = Callable[[ExtractionInputs, ExtractionArtifacts], None] @@ -164,6 +178,7 @@ def resolve_extraction_inputs( include_colors_map: bool | None, include_default_background: bool, ignore_colors: set[str] | None, + include_merged_cells: bool | None, ) -> ExtractionInputs: """Resolve include flags and normalize inputs for the pipeline. @@ -176,6 +191,7 @@ def resolve_extraction_inputs( include_colors_map: Whether to include background colors; None uses mode defaults. include_default_background: Include default background colors when colors_map is enabled. ignore_colors: Optional set of colors to ignore when colors_map is enabled. + include_merged_cells: Whether to include merged cell ranges; None uses mode defaults. Returns: Resolved ExtractionInputs. @@ -203,6 +219,9 @@ def resolve_extraction_inputs( resolved_ignore_colors = ignore_colors if resolved_colors_map else None if resolved_colors_map and resolved_ignore_colors is None: resolved_ignore_colors = set() + resolved_merged_cells = ( + include_merged_cells if include_merged_cells is not None else mode != "light" + ) return ExtractionInputs( file_path=normalized_file_path, @@ -213,6 +232,7 @@ def resolve_extraction_inputs( include_colors_map=resolved_colors_map, include_default_background=resolved_default_background, ignore_colors=resolved_ignore_colors, + include_merged_cells=resolved_merged_cells, ) @@ -258,6 +278,11 @@ def build_pre_com_pipeline(inputs: ExtractionInputs) -> list[ExtractionStep]: step=step_extract_colors_map_openpyxl, enabled=lambda _inputs: _inputs.include_colors_map, ), + StepConfig( + name="merged_cells_openpyxl", + step=step_extract_merged_cells_openpyxl, + enabled=lambda _inputs: _inputs.include_merged_cells, + ), ), "standard": ( StepConfig( @@ -276,6 +301,11 @@ def build_pre_com_pipeline(inputs: ExtractionInputs) -> list[ExtractionStep]: enabled=lambda _inputs: _inputs.include_colors_map and bool(os.getenv("SKIP_COM_TESTS")), ), + StepConfig( + name="merged_cells_openpyxl", + step=step_extract_merged_cells_openpyxl, + enabled=lambda _inputs: _inputs.include_merged_cells, + ), ), "verbose": ( StepConfig( @@ -294,6 +324,11 @@ def build_pre_com_pipeline(inputs: ExtractionInputs) -> list[ExtractionStep]: enabled=lambda _inputs: _inputs.include_colors_map and bool(os.getenv("SKIP_COM_TESTS")), ), + StepConfig( + name="merged_cells_openpyxl", + step=step_extract_merged_cells_openpyxl, + enabled=lambda _inputs: _inputs.include_merged_cells, + ), ), } steps: list[ExtractionStep] = [] @@ -432,6 +467,19 @@ def step_extract_colors_map_openpyxl( ) +def step_extract_merged_cells_openpyxl( + inputs: ExtractionInputs, artifacts: ExtractionArtifacts +) -> None: + """Extract merged cell ranges via openpyxl. + + Args: + inputs: Pipeline inputs. + artifacts: Artifact container to update. + """ + backend = OpenpyxlBackend(inputs.file_path) + artifacts.merged_cell_data = backend.extract_merged_cells() + + def step_extract_shapes_com( inputs: ExtractionInputs, artifacts: ExtractionArtifacts, workbook: xw.Book ) -> None: @@ -540,6 +588,7 @@ def collect_sheet_raw_data( cell_data: CellData, shape_data: ShapeData, chart_data: ChartData, + merged_cell_data: MergedCellData, workbook: xw.Book, mode: ExtractionMode = "standard", print_area_data: PrintAreaData | None = None, @@ -552,6 +601,7 @@ def collect_sheet_raw_data( cell_data: Extracted cell rows per sheet. shape_data: Extracted shapes per sheet. chart_data: Extracted charts per sheet. + merged_cell_data: Extracted merged cells per sheet. workbook: xlwings workbook instance. mode: Extraction mode. print_area_data: Optional print area data per sheet. @@ -574,6 +624,7 @@ def collect_sheet_raw_data( if auto_page_break_data else [], colors_map=_resolve_sheet_colors_map(colors_map_data, sheet_name), + merged_cells=merged_cell_data.get(sheet_name, []), ) result[sheet_name] = sheet_raw return result @@ -620,6 +671,7 @@ def _fallback(message: str, reason: FallbackReason) -> PipelineResult: cell_data=artifacts.cell_data, shape_data=artifacts.shape_data, chart_data=artifacts.chart_data, + merged_cell_data=artifacts.merged_cell_data, workbook=workbook, mode=inputs.mode, print_area_data=artifacts.print_area_data @@ -691,6 +743,7 @@ def build_cells_tables_workbook( else [], auto_print_areas=[], colors_map=sheet_colors.colors_map if sheet_colors else {}, + merged_cells=artifacts.merged_cell_data.get(sheet_name, []), ) raw = WorkbookRawData(book_name=inputs.file_path.name, sheets=sheets) return build_workbook_data(raw) diff --git a/src/exstruct/engine.py b/src/exstruct/engine.py index c23ada6..86a2e11 100644 --- a/src/exstruct/engine.py +++ b/src/exstruct/engine.py @@ -70,6 +70,7 @@ class StructOptions: before extraction. Use this to tweak table detection heuristics per engine instance without touching global state. include_colors_map: Whether to extract background color maps. + include_merged_cells: Whether to extract merged cell ranges. colors: Color extraction options. """ @@ -79,6 +80,7 @@ class StructOptions: ) include_cell_links: bool | None = None # None -> auto: verbose=True, others=False include_colors_map: bool | None = None # None -> auto: verbose=True, others=False + include_merged_cells: bool | None = None # None -> auto: light=False, others=True colors: ColorsOptions = field(default_factory=ColorsOptions) @@ -121,6 +123,9 @@ class FilterOptions(BaseModel): include_auto_print_areas: bool = Field( default=False, description="Include COM-computed auto page-break areas." ) + include_merged_cells: bool = Field( + default=True, description="Include merged cell ranges." + ) class DestinationOptions(BaseModel): @@ -279,6 +284,9 @@ def _filter_sheet( colors_map=sheet.colors_map, print_areas=sheet.print_areas if include_print_areas else [], auto_print_areas=sheet.auto_print_areas if include_auto_print_areas else [], + merged_cells=sheet.merged_cells + if self.output.filters.include_merged_cells + else [], ) def _filter_workbook( @@ -348,6 +356,7 @@ def extract( include_colors_map=self.options.include_colors_map, include_default_background=self.options.colors.include_default_background, ignore_colors=self.options.colors.ignore_colors_set(), + include_merged_cells=self.options.include_merged_cells, ) def serialize( diff --git a/uv.lock b/uv.lock index 771cff4..4ee6c6d 100644 --- a/uv.lock +++ b/uv.lock @@ -298,7 +298,7 @@ wheels = [ [[package]] name = "exstruct" -version = "0.3.0" +version = "0.3.1" source = { editable = "." } dependencies = [ { name = "numpy" }, From de6d3a2a5e47647d7a0c4de93720976fdcde3578 Mon Sep 17 00:00:00 2001 From: harumiWeb Date: Mon, 5 Jan 2026 08:33:49 +0900 Subject: [PATCH 05/11] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=82=B1?= =?UTF-8?q?=E3=83=BC=E3=82=B9=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/agents/TASKS.md | 26 +++-- docs/agents/TEST_REQUIREMENTS.md | 14 ++- .../forms_with_many_merged_cells/sample.json | 1 + .../forms_with_many_merged_cells/sample.xlsx | Bin 0 -> 20495 bytes .../sample_json_for_llm.md | 110 ++++++++++++++++++ tests/backends/test_auto_page_breaks.py | 1 + tests/backends/test_merged_cells.py | 49 ++++++++ tests/core/test_merged_cells_core.py | 36 ++++++ tests/core/test_pipeline.py | 30 +++++ tests/core/test_pipeline_fallbacks.py | 3 + tests/engine/test_engine.py | 12 ++ tests/export/test_export_requirements.py | 6 + tests/integration/test_integrate_raw_data.py | 2 + tests/models/test_modeling.py | 1 + 14 files changed, 279 insertions(+), 12 deletions(-) create mode 100644 sample/forms_with_many_merged_cells/sample.json create mode 100644 sample/forms_with_many_merged_cells/sample.xlsx create mode 100644 sample/forms_with_many_merged_cells/sample_json_for_llm.md create mode 100644 tests/backends/test_merged_cells.py create mode 100644 tests/core/test_merged_cells_core.py diff --git a/docs/agents/TASKS.md b/docs/agents/TASKS.md index 1a579a1..fbccecc 100644 --- a/docs/agents/TASKS.md +++ b/docs/agents/TASKS.md @@ -1,13 +1,17 @@ # Task List -## セル結合範囲取得(MergedCell) - -- [ ] 既存の抽出フローで結合セル情報の入口を確認(Openpyxl/COMの責務境界を整理) -- [ ] Backend Protocol に merged_cells 抽出メソッドを追加(未実装は NotImplementedError) -- [ ] OpenpyxlBackend で結合セル範囲と代表値を抽出(standard/verbose のみ) -- [ ] ComBackend で取得可否を判断し、可能なら実装・難しければ未実装扱い -- [ ] Pipeline に抽出呼び出しを追加(fallback の理由ログを明示) -- [ ] Modeling で raw 結合セル情報を MergedCell に正規化し、SheetData.merged_cells に統合 -- [ ] Engine の無効化オプション追加(出力時は OutputOptions で merged_cells を削除) -- [ ] テスト追加(Backend:抽出, Pipeline:fallback, Modeling:統合) -- [ ] ドキュメント更新確認(DATA_MODEL 反映済みか確認) \ No newline at end of file +## 結合セル(MergedCell)テスト + +- [ ] フィクスチャ作成:結合セルあり/なし、複数範囲、値あり/空文字の Excel を用意 +- [ ] OpenpyxlBackend.extract_merged_cells の正常系(座標・代表値)をユニットテスト +- [ ] OpenpyxlBackend.extract_merged_cells の例外時フォールバック(空マップ)をテスト +- [ ] ComBackend.extract_merged_cells が NotImplementedError を送出することをテスト +- [ ] Pipeline: standard/verbose で merged_cells を含み、light では空になることをテスト +- [ ] Pipeline: include_merged_cells=False で抽出ステップが無効化されることをテスト +- [ ] Modeling: SheetRawData→SheetData で merged_cells が保持されることをテスト +- [ ] Engine: OutputOptions.filters.include_merged_cells=False で出力から除外されることをテスト +- [ ] Export: dict_without_empty_values により merged_cells 空リストが出力されないことをテスト + +## カバレッジ対応 + +- [ ] 追加テストで 78% 以上の全体カバレッジを満たすことを確認 \ No newline at end of file diff --git a/docs/agents/TEST_REQUIREMENTS.md b/docs/agents/TEST_REQUIREMENTS.md index 05dd053..7d47622 100644 --- a/docs/agents/TEST_REQUIREMENTS.md +++ b/docs/agents/TEST_REQUIREMENTS.md @@ -1,9 +1,10 @@ # ExStruct テスト要件仕様書 -Version: 0.4 +Version: 0.5 Status: Required for Release ExStruct の全機能について、正式なテスト要件をまとめたドキュメントです。AI エージェント/人間開発者が自動テスト・手動テストを設計するための基盤とします。 +全体のコードカバレッジは **78% 以上** を満たすこと。 --- @@ -47,6 +48,13 @@ ExStruct の全機能について、正式なテスト要件をまとめたド - [COL-04] COM 利用時は `DisplayFormat.Interior` を参照し条件付き書式を含めて取得 - [COL-05] `_normalize_color_key` / `_normalize_rgb` は ARGB/#/auto/theme/indexed を正規化 +## 2.1.2 結合セル + +- [MRG-01] standard/verbose のみ `merged_cells` を抽出する(light は空) +- [MRG-02] 1-based row / 0-based column の座標で出力する +- [MRG-03] `v` は結合範囲の左上セル値(None は空文字) +- [MRG-04] 複数範囲がある場合も全件を保持する + ## 2.2 図形抽出 - [SHP-01] AutoShape の type を正規化 @@ -143,6 +151,7 @@ ExStruct の全機能について、正式なテスト要件をまとめたド - [EXP-22] serialize_workbook は未対応フォーマットで SerializationError - [EXP-23] export/process API は output_path/sheets_dir/print_areas_dir/auto_page_breaks_dir に str/Path を渡しても正しく出力できる - [EXP-24] fmt="yml" は yaml として扱い、拡張子は .yaml になる +- [EXP-25] OutputOptions の include_merged_cells=False で `merged_cells` を除外 --- @@ -213,6 +222,7 @@ ExStruct の全機能について、正式なテスト要件をまとめたド - [PIPE-06] print_areas は openpyxl の結果を保持し、COM は不足分のみ補完する - [PIPE-07] PipelineState は com_attempted/com_succeeded/fallback_reason を保持する - [PIPE-08] include_auto_page_breaks=False の場合は auto_page_breaks の COM ステップを含めない +- [PIPE-09] include_merged_cells=False の場合は merged_cells の抽出ステップを含めない - [PIPE-MOD-01] build_workbook_data は raw コンテナから WorkbookData/SheetData を構築する - [PIPE-MOD-02] collect_sheet_raw_data は抽出済みデータを raw コンテナにまとめる @@ -223,6 +233,8 @@ ExStruct の全機能について、正式なテスト要件をまとめたド - [BE-03] ComBackend は colors_map 抽出失敗時に None を返す - [BE-04] OpenpyxlBackend は colors_map 抽出失敗時に None を返す - [BE-05] ComBackend は print_areas 抽出失敗時に空マップで継続する +- [BE-06] OpenpyxlBackend は merged_cells 抽出失敗時に空マップで継続する +- [BE-07] ComBackend の merged_cells 未実装は NotImplementedError とする ## 2.8 Ranges diff --git a/sample/forms_with_many_merged_cells/sample.json b/sample/forms_with_many_merged_cells/sample.json new file mode 100644 index 0000000..8009959 --- /dev/null +++ b/sample/forms_with_many_merged_cells/sample.json @@ -0,0 +1 @@ +{"book_name": "43892550.xlsx", "sheets": {"Sheet1": {"rows": [{"r": 1, "c": {"0": "介護保険負担限度額認定申請書"}}, {"r": 3, "c": {"0": "(申請先)", "7": "     年    月    日"}}, {"r": 4, "c": {"1": "X市長 "}}, {"r": 5, "c": {"0": "次のとおり関係書類を添えて、食費・居住費(滞在費)に係る負担限度額認定を申請します。"}}, {"r": 6, "c": {"0": "フ リ ガ ナ", "7": " 被保険者番号"}}, {"r": 7, "c": {"0": "被保険者氏名"}}, {"r": 8, "c": {"7": "個人番号"}}, {"r": 9, "c": {"0": "生年月日", "2": "明・大・昭      年     月     日"}}, {"r": 10, "c": {"0": "住   所"}}, {"r": 12, "c": {"7": "連絡先"}}, {"r": 13, "c": {"0": "入所(院)し       た介護保険施        設の所在地及     び名称(※)"}}, {"r": 14, "c": {"7": "連絡先"}}, {"r": 17, "c": {"0": "入所(院)", "2": "     年   月   日", "5": "(※)介護保険施設に入所(院)していない場合及び                        ショートスティを利用している場合は、記入不要です。"}}, {"r": 18, "c": {"0": "年月日(*)"}}, {"r": 20, "c": {"0": "配偶者の有無", "2": "有     ・     無", "5": "左記において「無」の場合は、以下の「配偶者に関する事項」につい                   ては、記入不要です。"}}, {"r": 22, "c": {"0": "配偶者に関する事項", "1": "フ リ ガ ナ"}}, {"r": 23, "c": {"1": "氏  名"}}, {"r": 25, "c": {"1": "生年月日", "2": "  明  ・  大  ・  昭       年       月       日", "8": "個人番号"}}, {"r": 26, "c": {"1": "住  所", "2": "〒", "7": "連絡先"}}, {"r": 29, "c": {"1": "本年1月1日現在の住所   (現住所と     異なる場合)", "2": "〒"}}, {"r": 33, "c": {"1": "課税状況", "2": "市町村民税", "4": "  課税       ・       非課税"}}, {"r": 35, "c": {"0": "収入等に関    する申告", "2": "□", "3": "①生活保護受給者/②市町村民税世帯非課税である老齢福祉年金受給者"}}, {"r": 37, "c": {"2": "□", "3": "③市町村民税世帯非課税者であって、"}}, {"r": 38, "c": {"3": "課税年金収入額と 【遺族年金※・障害年金】の収入額、その他の合計所得金額の合計額が"}}, {"r": 39, "c": {"3": "年額80万円以下です。(受給している年金に〇して下さい。以下同じ。)"}}, {"r": 40, "c": {"3": "  ※ 寡婦年金、かん夫年金、母子年金、準母子年金、遺児年金を含みます。以下同じ。"}}, {"r": 41, "c": {"2": "□", "3": "④市町村民税世帯非課税者であって、"}}, {"r": 42, "c": {"3": "課税年金収入額と 【遺族年金※・障害年金】の収入額、その他の合計所得金額の合計額が"}}, {"r": 43, "c": {"3": "年額80万円を超え、120万円以下です。"}}, {"r": 44, "c": {"2": "□", "3": "⑤市町村民税世帯非課税者であって、"}}, {"r": 45, "c": {"3": "課税年金収入額と 【遺族年金※・障害年金】の収入額、その他の合計所得金額の合計額が"}}, {"r": 46, "c": {"3": "年額120万円を超えます。"}}, {"r": 47, "c": {"0": "預貯金等に     関する申告", "2": "□", "3": "預貯金、有価証券等の金額の合計が②の方は1000万円(夫婦は2000万円)、"}}, {"r": 48, "c": {"3": "③の方は650万円(同1650万円)、④の方は550万円(同1550万円)、"}}, {"r": 49, "c": {"3": "⑤の方は500万円(同1500万円)以下です。"}}, {"r": 50, "c": {"3": "※第2号被保険者(40歳以上64歳以下)の場合、③~⑤の方は1000万円(夫婦は2000万円)以下です。"}}, {"r": 51, "c": {"2": "預貯金額", "4": "円", "5": "有価証券", "7": "円", "8": "その他", "10": "(        )※"}}, {"r": 52, "c": {"8": "(現金・負債      を含む)", "10": "円"}}, {"r": 53, "c": {"5": "(評価概算額)", "10": "※内容を記入してください"}}, {"r": 55, "c": {"5": "申請者が被保険者本人の場合には、下記について記載は不要です。"}}, {"r": 56, "c": {"0": " 申請者氏名", "8": " 連絡先(自宅・勤務先)"}}, {"r": 58, "c": {"0": " 申請者住所", "10": "本人との関係"}}, {"r": 63, "c": {"0": "注意事項"}}, {"r": 64, "c": {"0": -1, "1": " この申請書における「配偶者」については、世帯分離している配偶者又は内縁関係の者を含みます。"}}, {"r": 65, "c": {"0": -2, "1": " 預貯金等に関しては、同じ種類の預貯金等を複数所有している場合は、そのすべてを記入し、通帳等の写し                  を添付してください。"}}, {"r": 67, "c": {"0": -3, "1": " 書き切れない場合は、余白に記入するか又は別紙に記入の上添付してください。"}}, {"r": 68, "c": {"0": -4, "1": " 虚偽の申告により不正に特定入所者介護サービス費等の支給を受けた場合には、介護保険法第22条第1項              の規定に基づき、支給された額及び最大2倍の加算金を返還していただくことがあります。"}}], "table_candidates": ["B25:C26", "C37:D50"], "merged_cells": [{"r1": 55, "c1": 5, "r2": 55, "c2": 10, "v": "申請者が被保険者本人の場合には、下記について記載は不要です。"}, {"r1": 54, "c1": 8, "r2": 54, "c2": 10}, {"r1": 51, "c1": 5, "r2": 52, "c2": 6, "v": "有価証券"}, {"r1": 52, "c1": 8, "r2": 53, "c2": 9, "v": "(現金・負債      を含む)"}, {"r1": 47, "c1": 0, "r2": 53, "c2": 1, "v": "預貯金等に     関する申告"}, {"r1": 10, "c1": 0, "r2": 12, "c2": 1, "v": "住   所"}, {"r1": 10, "c1": 2, "r2": 10, "c2": 10}, {"r1": 7, "c1": 3, "r2": 8, "c2": 4}, {"r1": 3, "c1": 7, "r2": 3, "c2": 10, "v": "     年    月    日"}, {"r1": 6, "c1": 7, "r2": 7, "c2": 7, "v": " 被保険者番号"}, {"r1": 7, "c1": 6, "r2": 8, "c2": 6}, {"r1": 22, "c1": 0, "r2": 33, "c2": 0, "v": "配偶者に関する事項"}, {"r1": 11, "c1": 3, "r2": 12, "c2": 6}, {"r1": 1, "c1": 0, "r2": 1, "c2": 10, "v": "介護保険負担限度額認定申請書"}, {"r1": 6, "c1": 0, "r2": 6, "c2": 1, "v": "フ リ ガ ナ"}, {"r1": 35, "c1": 2, "r2": 36, "c2": 2, "v": "□"}, {"r1": 6, "c1": 3, "r2": 6, "c2": 4}, {"r1": 23, "c1": 1, "r2": 24, "c2": 1, "v": "氏  名"}, {"r1": 6, "c1": 8, "r2": 7, "c2": 10}, {"r1": 20, "c1": 0, "r2": 21, "c2": 1, "v": "配偶者の有無"}, {"r1": 26, "c1": 1, "r2": 28, "c2": 1, "v": "住  所"}, {"r1": 25, "c1": 8, "r2": 25, "c2": 9, "v": "個人番号"}, {"r1": 47, "c1": 2, "r2": 50, "c2": 2, "v": "□"}, {"r1": 8, "c1": 8, "r2": 8, "c2": 10}, {"r1": 29, "c1": 1, "r2": 32, "c2": 1, "v": "本年1月1日現在の住所   (現住所と     異なる場合)"}, {"r1": 18, "c1": 0, "r2": 18, "c2": 1, "v": "年月日(*)"}, {"r1": 13, "c1": 0, "r2": 16, "c2": 1, "v": "入所(院)し       た介護保険施        設の所在地及     び名称(※)"}, {"r1": 3, "c1": 0, "r2": 3, "c2": 1, "v": "(申請先)"}, {"r1": 9, "c1": 2, "r2": 9, "c2": 6, "v": "明・大・昭      年     月     日"}, {"r1": 20, "c1": 2, "r2": 21, "c2": 4, "v": "有     ・     無"}, {"r1": 68, "c1": 1, "r2": 69, "c2": 10, "v": " 虚偽の申告により不正に特定入所者介護サービス費等の支給を受けた場合には、介護保険法第22条第1項              の規定に基づき、支給された額及び最大2倍の加算金を返還していただくことがあります。"}, {"r1": 20, "c1": 5, "r2": 21, "c2": 10, "v": "左記において「無」の場合は、以下の「配偶者に関する事項」につい                   ては、記入不要です。"}, {"r1": 9, "c1": 8, "r2": 9, "c2": 10}, {"r1": 51, "c1": 4, "r2": 53, "c2": 4, "v": "円"}, {"r1": 65, "c1": 1, "r2": 66, "c2": 10, "v": " 預貯金等に関しては、同じ種類の預貯金等を複数所有している場合は、そのすべてを記入し、通帳等の写し                  を添付してください。"}, {"r1": 17, "c1": 5, "r2": 18, "c2": 10, "v": "(※)介護保険施設に入所(院)していない場合及び                        ショートスティを利用している場合は、記入不要です。"}, {"r1": 17, "c1": 0, "r2": 17, "c2": 1, "v": "入所(院)"}, {"r1": 41, "c1": 2, "r2": 43, "c2": 2, "v": "□"}, {"r1": 35, "c1": 3, "r2": 36, "c2": 10, "v": "①生活保護受給者/②市町村民税世帯非課税である老齢福祉年金受給者"}, {"r1": 44, "c1": 2, "r2": 46, "c2": 2, "v": "□"}, {"r1": 51, "c1": 2, "r2": 53, "c2": 3, "v": "預貯金額"}, {"r1": 51, "c1": 8, "r2": 51, "c2": 9, "v": "その他"}, {"r1": 7, "c1": 0, "r2": 8, "c2": 1, "v": "被保険者氏名"}, {"r1": 51, "c1": 7, "r2": 53, "c2": 7, "v": "円"}, {"r1": 35, "c1": 0, "r2": 46, "c2": 1, "v": "収入等に関    する申告"}, {"r1": 17, "c1": 2, "r2": 18, "c2": 4, "v": "     年   月   日"}, {"r1": 37, "c1": 2, "r2": 40, "c2": 2, "v": "□"}, {"r1": 9, "c1": 0, "r2": 9, "c2": 1, "v": "生年月日"}, {"r1": 53, "c1": 5, "r2": 53, "c2": 6, "v": "(評価概算額)"}]}}} \ No newline at end of file diff --git a/sample/forms_with_many_merged_cells/sample.xlsx b/sample/forms_with_many_merged_cells/sample.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..20c66fad92db7432720f919d813a08277b69355e GIT binary patch literal 20495 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 literal 0 HcmV?d00001 diff --git a/sample/forms_with_many_merged_cells/sample_json_for_llm.md b/sample/forms_with_many_merged_cells/sample_json_for_llm.md new file mode 100644 index 0000000..49441b1 --- /dev/null +++ b/sample/forms_with_many_merged_cells/sample_json_for_llm.md @@ -0,0 +1,110 @@ +# 介護保険負担限度額認定申請書 + +(申請先)              年  月  日 +X 市長 + +次のとおり関係書類を添えて、食費・居住費(滞在費)に係る負担限度額認定を申請します。 + +--- + +## 被保険者情報 + +| 項目 | 内容 | +| ------------ | ---------------------------- | +| フリガナ | | +| 被保険者氏名 | | +| 被保険者番号 | | +| 個人番号 | | +| 生年月日 | 明・大・昭  年  月  日 | +| 住所 | | +| 連絡先 | | + +--- + +## 入所(院)した介護保険施設 + +| 項目 | 内容 | +| --------------------- | ---------- | +| 施設所在地・名称(※) | | +| 連絡先 | | +| 入所(院)年月日 | 年 月 日 | + +**(※)介護保険施設に入所(院)していない場合、およびショートステイ利用時は記入不要** + +--- + +## 配偶者の有無 + +| 項目 | 内容 | +| ------------ | -------- | +| 配偶者の有無 | 有 ・ 無 | + +※「無」の場合、以下の「配偶者に関する事項」は記入不要 + +--- + +## 配偶者に関する事項 + +| 項目 | 内容 | +| ---------------------------------------------- | -------------------------- | +| フリガナ | | +| 氏名 | | +| 生年月日 | 明・大・昭 年 月 日 | +| 個人番号 | | +| 住所 | 〒 | +| 連絡先 | | +| 本年 1 月 1 日現在の住所(現住所と異なる場合) | 〒 | +| 課税状況 | 市町村民税:課税 ・ 非課税 | + +--- + +## 収入等に関する申告 + +以下の該当する項目にチェックしてください。 + +- □ ① 生活保護受給者 +- □ ② 市町村民税世帯非課税である老齢福祉年金受給者 +- □ ③ 市町村民税世帯非課税者で、課税年金収入額+遺族年金・障害年金+その他所得の合計が **年額 80 万円以下** +- □ ④ 同上で **80 万円超〜120 万円以下** +- □ ⑤ 同上で **120 万円超** + +※遺族年金には寡婦年金、寡夫年金、母子年金、準母子年金、遺児年金を含む + +--- + +## 預貯金等に関する申告 + +- □ 預貯金・有価証券等の合計額が以下の基準以下である + - ② の方:1000 万円(夫婦 2000 万円) + - ③ の方:650 万円(夫婦 1650 万円) + - ④ の方:550 万円(夫婦 1550 万円) + - ⑤ の方:500 万円(夫婦 1500 万円) + - ※第 2 号被保険者(40〜64 歳)は ③〜⑤ の方:1000 万円(夫婦 2000 万円)以下 + +### 預貯金等の内訳 + +| 項目 | 金額 | +| -------------------------- | ---------------- | +| 預貯金額 | 円 | +| 有価証券(評価概算額) | 円 | +| その他(現金・負債を含む) | 円(内容を記入) | + +--- + +## 申請者情報(※被保険者本人の場合は不要) + +| 項目 | 内容 | +| ---------------------- | ---- | +| 申請者氏名 | | +| 連絡先(自宅・勤務先) | | +| 申請者住所 | | +| 本人との関係 | | + +--- + +## 注意事項 + +1. この申請書における「配偶者」には、世帯分離している配偶者および内縁関係の者を含む。 +2. 預貯金等は、同じ種類を複数所有している場合すべて記入し、通帳等の写しを添付すること。 +3. 書き切れない場合は余白または別紙に記入して添付すること。 +4. 虚偽の申告により不正に特定入所者介護サービス費等の支給を受けた場合、介護保険法第 22 条第 1 項に基づき、支給額および最大 2 倍の加算金を返還する必要がある。 diff --git a/tests/backends/test_auto_page_breaks.py b/tests/backends/test_auto_page_breaks.py index efa9bb7..6c3adda 100644 --- a/tests/backends/test_auto_page_breaks.py +++ b/tests/backends/test_auto_page_breaks.py @@ -27,6 +27,7 @@ def fake_extract( include_colors_map: bool = False, include_default_background: bool = False, ignore_colors: set[str] | None = None, + include_merged_cells: bool | None = None, ) -> WorkbookData: called["include_auto_page_breaks"] = include_auto_page_breaks return WorkbookData(book_name=path.name, sheets={}) diff --git a/tests/backends/test_merged_cells.py b/tests/backends/test_merged_cells.py new file mode 100644 index 0000000..e3859ce --- /dev/null +++ b/tests/backends/test_merged_cells.py @@ -0,0 +1,49 @@ +from pathlib import Path +from typing import cast + +from _pytest.monkeypatch import MonkeyPatch +from openpyxl import Workbook +import pytest +import xlwings as xw + +from exstruct.core.backends.com_backend import ComBackend +from exstruct.core.backends.openpyxl_backend import OpenpyxlBackend +from exstruct.models import MergedCell + + +def _make_merged_book(path: Path) -> None: + wb = Workbook() + ws = wb.active + ws.title = "Sheet1" + ws["A1"] = "Header" + ws.merge_cells("A1:C1") + wb.save(path) + + +def test_openpyxl_backend_extract_merged_cells(tmp_path: Path) -> None: + path = tmp_path / "merged.xlsx" + _make_merged_book(path) + + backend = OpenpyxlBackend(path) + merged = backend.extract_merged_cells() + assert merged["Sheet1"] == [MergedCell(r1=1, c1=0, r2=1, c2=2, v="Header")] + + +def test_openpyxl_backend_extract_merged_cells_handles_failure( + monkeypatch: MonkeyPatch, tmp_path: Path +) -> None: + def _boom(_path: Path) -> dict[str, list[MergedCell]]: + raise RuntimeError("boom") + + monkeypatch.setattr( + "exstruct.core.backends.openpyxl_backend.extract_sheet_merged_cells", + _boom, + ) + backend = OpenpyxlBackend(tmp_path / "missing.xlsx") + assert backend.extract_merged_cells() == {} + + +def test_com_backend_extract_merged_cells_not_implemented() -> None: + backend = ComBackend(cast(xw.Book, object())) + with pytest.raises(NotImplementedError): + backend.extract_merged_cells() diff --git a/tests/core/test_merged_cells_core.py b/tests/core/test_merged_cells_core.py new file mode 100644 index 0000000..4129bd6 --- /dev/null +++ b/tests/core/test_merged_cells_core.py @@ -0,0 +1,36 @@ +from pathlib import Path + +from openpyxl import Workbook + +from exstruct.core.cells import extract_sheet_merged_cells + + +def _make_merged_book(path: Path) -> None: + wb = Workbook() + ws = wb.active + ws.title = "Sheet1" + ws["A1"] = "Title" + ws.merge_cells("A1:B2") + ws.merge_cells("D4:E4") + wb.save(path) + + +def test_extract_sheet_merged_cells_basic(tmp_path: Path) -> None: + path = tmp_path / "merged.xlsx" + _make_merged_book(path) + + merged = extract_sheet_merged_cells(path) + ranges = merged["Sheet1"] + assert len(ranges) == 2 + tuples = {(r.r1, r.c1, r.r2, r.c2, r.v) for r in ranges} + assert (1, 0, 2, 1, "Title") in tuples + assert (4, 3, 4, 4, "") in tuples + + +def test_extract_sheet_merged_cells_empty(tmp_path: Path) -> None: + path = tmp_path / "plain.xlsx" + wb = Workbook() + wb.save(path) + + merged = extract_sheet_merged_cells(path) + assert merged["Sheet"] == [] diff --git a/tests/core/test_pipeline.py b/tests/core/test_pipeline.py index dc6e383..e45c5b1 100644 --- a/tests/core/test_pipeline.py +++ b/tests/core/test_pipeline.py @@ -25,6 +25,7 @@ def test_build_pre_com_pipeline_respects_flags( include_colors_map=False, include_default_background=False, ignore_colors=None, + include_merged_cells=False, ) steps = build_pre_com_pipeline(inputs) step_names = [step.__name__ for step in steps] @@ -43,6 +44,7 @@ def test_build_pre_com_pipeline_includes_colors_map_for_light( include_colors_map=True, include_default_background=False, ignore_colors=None, + include_merged_cells=True, ) steps = build_pre_com_pipeline(inputs) step_names = [step.__name__ for step in steps] @@ -50,9 +52,29 @@ def test_build_pre_com_pipeline_includes_colors_map_for_light( "step_extract_cells", "step_extract_print_areas_openpyxl", "step_extract_colors_map_openpyxl", + "step_extract_merged_cells_openpyxl", ] +def test_build_pre_com_pipeline_skips_merged_cells_when_disabled( + tmp_path: Path, +) -> None: + inputs = ExtractionInputs( + file_path=tmp_path / "book.xlsx", + mode="standard", + include_cell_links=False, + include_print_areas=True, + include_auto_page_breaks=False, + include_colors_map=True, + include_default_background=False, + ignore_colors=None, + include_merged_cells=False, + ) + steps = build_pre_com_pipeline(inputs) + step_names = [step.__name__ for step in steps] + assert "step_extract_merged_cells_openpyxl" not in step_names + + def test_build_com_pipeline_respects_flags(tmp_path: Path) -> None: inputs = ExtractionInputs( file_path=tmp_path / "book.xlsx", @@ -63,6 +85,7 @@ def test_build_com_pipeline_respects_flags(tmp_path: Path) -> None: include_colors_map=False, include_default_background=False, ignore_colors=None, + include_merged_cells=False, ) steps = build_com_pipeline(inputs) step_names = [step.__name__ for step in steps] @@ -85,6 +108,7 @@ def test_build_com_pipeline_excludes_auto_page_breaks_when_disabled( include_colors_map=False, include_default_background=False, ignore_colors=None, + include_merged_cells=False, ) steps = build_com_pipeline(inputs) step_names = [step.__name__ for step in steps] @@ -101,6 +125,7 @@ def test_build_com_pipeline_empty_for_light(tmp_path: Path) -> None: include_colors_map=True, include_default_background=False, ignore_colors=None, + include_merged_cells=False, ) steps = build_com_pipeline(inputs) assert steps == [] @@ -116,11 +141,13 @@ def test_resolve_extraction_inputs_defaults(tmp_path: Path) -> None: include_colors_map=None, include_default_background=True, ignore_colors=None, + include_merged_cells=None, ) assert inputs.include_cell_links is False assert inputs.include_print_areas is True assert inputs.include_colors_map is False assert inputs.include_default_background is False + assert inputs.include_merged_cells is True def test_build_cells_tables_workbook_uses_print_areas( @@ -143,10 +170,12 @@ def fake_detect_tables(_: Path, __: str) -> list[str]: include_colors_map=False, include_default_background=False, ignore_colors=None, + include_merged_cells=True, ) artifacts = ExtractionArtifacts( cell_data={"Sheet1": [CellRow(r=1, c={"0": "v"})]}, print_area_data={"Sheet1": [PrintArea(r1=1, c1=0, r2=1, c2=0)]}, + merged_cell_data={"Sheet1": []}, ) wb = build_cells_tables_workbook( inputs=inputs, @@ -156,3 +185,4 @@ def fake_detect_tables(_: Path, __: str) -> list[str]: sheet = wb.sheets["Sheet1"] assert sheet.print_areas assert sheet.table_candidates == ["A1:B2"] + assert sheet.merged_cells == [] diff --git a/tests/core/test_pipeline_fallbacks.py b/tests/core/test_pipeline_fallbacks.py index 5a214ce..4eea4c7 100644 --- a/tests/core/test_pipeline_fallbacks.py +++ b/tests/core/test_pipeline_fallbacks.py @@ -34,6 +34,7 @@ def test_pipeline_fallback_skip_com_tests( include_colors_map=False, include_default_background=False, ignore_colors=None, + include_merged_cells=None, ) result = run_extraction_pipeline(inputs) @@ -66,6 +67,7 @@ def _raise(*_args: object, **_kwargs: object) -> None: include_colors_map=False, include_default_background=False, ignore_colors=None, + include_merged_cells=None, ) result = run_extraction_pipeline(inputs) @@ -106,6 +108,7 @@ def _raise( include_colors_map=False, include_default_background=False, ignore_colors=None, + include_merged_cells=None, ) result = run_extraction_pipeline(inputs) diff --git a/tests/engine/test_engine.py b/tests/engine/test_engine.py index 93c2529..d3c66c7 100644 --- a/tests/engine/test_engine.py +++ b/tests/engine/test_engine.py @@ -14,6 +14,7 @@ CellRow, Chart, ChartSeries, + MergedCell, PrintArea, Shape, SheetData, @@ -33,6 +34,7 @@ def fake_extract( include_colors_map: bool = False, include_default_background: bool = False, ignore_colors: set[str] | None = None, + include_merged_cells: bool | None = None, ) -> WorkbookData: called["mode"] = mode called["include_print_areas"] = include_print_areas @@ -63,6 +65,7 @@ def _sample_workbook() -> WorkbookData: charts=[chart], table_candidates=["A1:B2"], print_areas=[PrintArea(r1=1, c1=0, r2=3, c2=2)], + merged_cells=[MergedCell(r1=1, c1=0, r2=1, c2=1, v="merged")], ) return WorkbookData(book_name="book.xlsx", sheets={"Sheet1": sheet}) @@ -85,6 +88,15 @@ def test_engine_serialize_filters_tables(tmp_path: Path) -> None: assert "table_candidates" not in text +def test_engine_serialize_filters_merged_cells() -> None: + wb = _sample_workbook() + engine = ExStructEngine( + output=OutputOptions(filters=FilterOptions(include_merged_cells=False)) + ) + text = engine.serialize(wb, fmt="json") + assert "merged_cells" not in text + + def test_engine_include_cell_links_toggle() -> None: wb = _sample_workbook() # By default links remain (already present) diff --git a/tests/export/test_export_requirements.py b/tests/export/test_export_requirements.py index a85baab..dae98d4 100644 --- a/tests/export/test_export_requirements.py +++ b/tests/export/test_export_requirements.py @@ -112,3 +112,9 @@ def test_export_sheets_yamlとtoonが出力される(tmp_path: Path) -> None: toon_paths = export_sheets_as(wb, toon_dir, fmt="toon") assert toon_paths["SheetA"].suffix == ".toon" assert toon_paths["SheetA"].exists() + + +def test_merged_cells_empty_is_omitted_in_sheet_json() -> None: + sheet = SheetData(rows=[CellRow(r=1, c={"0": "v"})], merged_cells=[]) + payload = sheet.to_json() + assert "merged_cells" not in payload diff --git a/tests/integration/test_integrate_raw_data.py b/tests/integration/test_integrate_raw_data.py index f24e8db..68be78c 100644 --- a/tests/integration/test_integrate_raw_data.py +++ b/tests/integration/test_integrate_raw_data.py @@ -56,6 +56,7 @@ def test_collect_sheet_raw_data_includes_extracted_fields( cell_data={"Sheet1": [CellRow(r=1, c={"0": "A"}, links=None)]}, shape_data={"Sheet1": [Shape(text="S", l=0, t=0)]}, chart_data={"Sheet1": [_make_chart()]}, + merged_cell_data={"Sheet1": []}, workbook=workbook, mode="standard", print_area_data={"Sheet1": [PrintArea(r1=1, c1=0, r2=1, c2=0)]}, @@ -90,6 +91,7 @@ def test_collect_sheet_raw_data_skips_charts_in_light_mode( cell_data={"Sheet1": []}, shape_data={"Sheet1": []}, chart_data={"Sheet1": []}, + merged_cell_data={"Sheet1": []}, workbook=workbook, mode="light", print_area_data=None, diff --git a/tests/models/test_modeling.py b/tests/models/test_modeling.py index 4106408..60a274a 100644 --- a/tests/models/test_modeling.py +++ b/tests/models/test_modeling.py @@ -25,6 +25,7 @@ def test_build_workbook_data_from_raw() -> None: print_areas=[PrintArea(r1=1, c1=0, r2=1, c2=0)], auto_print_areas=[], colors_map={"#FFFFFF": [(1, 0)]}, + merged_cells=[], ) raw_workbook = WorkbookRawData(book_name="book.xlsx", sheets={"Sheet1": raw_sheet}) From a5e0be8bb70a908519f9fe47cce2a3586c5d48ef Mon Sep 17 00:00:00 2001 From: harumiWeb Date: Mon, 5 Jan 2026 09:28:41 +0900 Subject: [PATCH 06/11] =?UTF-8?q?sample=E3=81=AE=E6=95=B4=E5=82=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...json_for_llm.md => sample.json_for_llm.md} | 0 .../en_form_sf425/README.md | 10 + .../en_form_sf425/sample.json | 359 +++++++++++++ .../en_form_sf425/sample.json_for_llm.md | 149 ++++++ .../en_form_sf425/sample.xlsx | Bin 0 -> 23344 bytes .../ja_general_form/ja_form.json | 366 +++++++++++++ .../ja_form.json_for_llm.md} | 0 .../ja_form.xlsx} | Bin .../forms_with_many_merged_cells/sample.json | 1 - sample/gantt_chart/en/example.py | 16 + sample/gantt_chart/en/sample.json | 488 ++++++++++++++++++ sample/gantt_chart/en/sample.json_for_llm.md | 73 +++ sample/gantt_chart/en/sample.xlsx | Bin 0 -> 10771 bytes sample/gantt_chart/sample_gantt.json | 1 - sample/gantt_chart/sample_gantt.xlsx | Bin 35375 -> 0 bytes .../gantt_chart/sample_gantt_json_for_llm.md | 103 ---- 16 files changed, 1461 insertions(+), 105 deletions(-) rename sample/basic/{sample_json_for_llm.md => sample.json_for_llm.md} (100%) create mode 100644 sample/forms_with_many_merged_cells/en_form_sf425/README.md create mode 100644 sample/forms_with_many_merged_cells/en_form_sf425/sample.json create mode 100644 sample/forms_with_many_merged_cells/en_form_sf425/sample.json_for_llm.md create mode 100644 sample/forms_with_many_merged_cells/en_form_sf425/sample.xlsx create mode 100644 sample/forms_with_many_merged_cells/ja_general_form/ja_form.json rename sample/forms_with_many_merged_cells/{sample_json_for_llm.md => ja_general_form/ja_form.json_for_llm.md} (100%) rename sample/forms_with_many_merged_cells/{sample.xlsx => ja_general_form/ja_form.xlsx} (100%) delete mode 100644 sample/forms_with_many_merged_cells/sample.json create mode 100644 sample/gantt_chart/en/example.py create mode 100644 sample/gantt_chart/en/sample.json create mode 100644 sample/gantt_chart/en/sample.json_for_llm.md create mode 100644 sample/gantt_chart/en/sample.xlsx delete mode 100644 sample/gantt_chart/sample_gantt.json delete mode 100644 sample/gantt_chart/sample_gantt.xlsx delete mode 100644 sample/gantt_chart/sample_gantt_json_for_llm.md diff --git a/sample/basic/sample_json_for_llm.md b/sample/basic/sample.json_for_llm.md similarity index 100% rename from sample/basic/sample_json_for_llm.md rename to sample/basic/sample.json_for_llm.md diff --git a/sample/forms_with_many_merged_cells/en_form_sf425/README.md b/sample/forms_with_many_merged_cells/en_form_sf425/README.md new file mode 100644 index 0000000..03a6da7 --- /dev/null +++ b/sample/forms_with_many_merged_cells/en_form_sf425/README.md @@ -0,0 +1,10 @@ +### Sample Form + +This project uses the U.S. Federal Financial Report (SF-425) +as a demonstration example. + +SF-425 is a U.S. Government form and is in the public domain +under 17 U.S.C. §105. + +Source: +https://www.epa.gov/financial/forms diff --git a/sample/forms_with_many_merged_cells/en_form_sf425/sample.json b/sample/forms_with_many_merged_cells/en_form_sf425/sample.json new file mode 100644 index 0000000..bb22a4f --- /dev/null +++ b/sample/forms_with_many_merged_cells/en_form_sf425/sample.json @@ -0,0 +1,359 @@ +{ + "book_name": "en_sf425.xlsx", + "sheets": { + "FFR": { + "rows": [ + { "r": 1, "c": { "0": "FEDERAL FINANCIAL REPORT" } }, + { "r": 3, "c": { "0": "(Follow form instructions)" } }, + { + "r": 4, + "c": { + "0": "1. Federal Agency and Organizational Element", + "5": "2. Federal Grant or Other Identifying Number Assigned by Federal Agency", + "20": "Page", + "23": " of" + } + }, + { + "r": 5, + "c": { + "0": " to Which Report is Submitted", + "5": " (To report multiple grants, use FFR Attachment)" + } + }, + { + "r": 7, + "c": { + "0": "United States Environmental Protection Agency", + "21": 1, + "23": "pages" + } + }, + { + "r": 8, + "c": { + "0": "3. Recipient Organization (Name and complete address including Zip code)" + } + }, + { + "r": 13, + "c": { + "0": "4a. DUNS Number ", + "2": "4b. EIN", + "5": "5. Recipient Account Number or Identifying Number", + "12": "6. Report Type", + "18": "7. Basis of Accounting" + } + }, + { + "r": 14, + "c": { + "5": " (To report multiple grants, use FFR Attachment)", + "12": "□ Quarterly \n□ Semi-Annual \n□ Annual \n□ Final", + "18": "□ Cash □ Accrual" + } + }, + { + "r": 16, + "c": { + "0": "8. Project/Grant Period", + "10": "9. Reporting Period End Date" + } + }, + { + "r": 17, + "c": { + "0": " From: (Month, Day, Year)", + "5": "To: (Month, Day, Year)", + "10": "(Month, Day, Year)" + } + }, + { + "r": 19, + "c": { "0": "10. Transactions ", "15": " Cumulative " } + }, + { + "r": 20, + "c": { "0": "(Use lines a-c for single or multiple grant reporting)" } + }, + { + "r": 21, + "c": { + "0": " Federal Cash (To report multiple grants, also use FFR Attachment):" + } + }, + { "r": 22, "c": { "0": " a. Cash Receipts " } }, + { "r": 23, "c": { "0": " b. Cash Disbursements" } }, + { "r": 24, "c": { "0": " c. Cash on Hand (line a minus b)" } }, + { "r": 25, "c": { "0": "(Use lines d-o for single grant reporting)" } }, + { + "r": 26, + "c": { "0": " Federal Expenditures and Unobligated Balance: " } + }, + { "r": 27, "c": { "0": " d. Total Federal funds authorized " } }, + { "r": 28, "c": { "0": " e. Federal share of expenditures " } }, + { + "r": 29, + "c": { + "0": " f. Federal share of unliquidated obligations", + "15": 0 + } + }, + { + "r": 30, + "c": { + "0": " g. Total Federal share (sum of lines e and f)", + "15": 0 + } + }, + { + "r": 31, + "c": { + "0": " h. Unobligated balance of Federal funds (line d minus g)", + "15": 0 + } + }, + { "r": 32, "c": { "0": " Recipient Share:" } }, + { "r": 33, "c": { "0": " i. Total recipient share required " } }, + { "r": 34, "c": { "0": " j. Recipient share of expenditures" } }, + { + "r": 35, + "c": { + "0": " k. Remaining recipient share to be provided (line i minus j)", + "15": 0 + } + }, + { "r": 36, "c": { "0": " Program Income:" } }, + { + "r": 37, + "c": { "0": " l. Total Federal program income earned" } + }, + { + "r": 38, + "c": { + "0": " m. Program income expended in accordance with the deduction alternative" + } + }, + { + "r": 39, + "c": { + "0": " n. Program income expended in accordance with the addition alternative" + } + }, + { + "r": 40, + "c": { + "0": " o. Unexpended program income (line l minus line m or line n)" + } + }, + { + "r": 41, + "c": { + "0": "11. Indirect Expense", + "1": " a. Type ", + "3": "b. Rate", + "5": "c. Period From", + "6": "Period To", + "7": "d. Base", + "10": "e. Amount Charged", + "18": "f. Federal Share" + } + }, + { "r": 44, "c": { "6": " g. Totals:", "7": 0, "10": 0, "18": 0 } }, + { + "r": 45, + "c": { + "0": "12. Remarks: Attach any explanations deemed necessary or information required by Federal sponsoring agency in compliance with governing legislation:" + } + }, + { + "r": 47, + "c": { + "0": "13. Certification: By signing this report, I certify that it is true, complete, and accurate to the best of my knowledge. I am aware that" + } + }, + { + "r": 48, + "c": { + "0": " any false, fictitious, or fraudulent information may subject me to criminal, civil, or administrative penalties. (U.S. Code, Title 18, Section 1001)" + } + }, + { + "r": 49, + "c": { + "0": "a. Typed or Printed Name and Title of Authorized Certifying Official", + "10": " c. Telephone (Area code, number and extension)" + } + }, + { "r": 51, "c": { "10": " d. Email address" } }, + { + "r": 53, + "c": { + "0": "b. Signature of Authorized Certifying Official ", + "10": " e. Date Report Submitted (Month, Day, Year)" + } + }, + { "r": 55, "c": { "10": "14. Agency use only:" } }, + { "r": 56, "c": { "10": "Federal Share Calculation" } }, + { "r": 58, "c": { "12": "Standard Form 425" } }, + { "r": 59, "c": { "12": "OMB Approval Number: 0348-0061 " } }, + { "r": 60, "c": { "12": "Expiration Date: 02/28/2015" } }, + { + "r": 61, + "c": { + "0": "Paperwork Burden Statement\nAccording to the Paperwork Reduction Act, as amended, no persons are required to respond to a collection of information unless it displays a valid OMB Control Number. The valid OMB control number for this information collection is 0348-0061. Public reporting burden for this collection of information is estimated to average 1.5 hours per response, including time for reviewing instructions, searching existing data sources, gathering and maintaining the data needed, and completing and reviewing the collection of information. Send comments regarding the burden estimate or any other aspect of this collection of information, including suggestions for reducing this burden, to the Office of Management and Budget, Paperwork Reduction Project ( 0348-0060), Washington, DC 20503." + } + } + ], + "shapes": [ + { + "id": 1, + "text": "Not Required by EPA", + "l": 575, + "t": 396, + "kind": "shape", + "type": "AutoShape-Rectangle" + } + ], + "print_areas": [{ "r1": 1, "c1": 0, "r2": 66, "c2": 23 }], + "merged_cells": [ + { "r1": 34, "c1": 15, "r2": 34, "c2": 23 }, + { + "r1": 56, + "c1": 10, + "r2": 57, + "c2": 17, + "v": "Federal Share Calculation" + }, + { "r1": 18, "c1": 10, "r2": 18, "c2": 23 }, + { "r1": 15, "c1": 0, "r2": 15, "c2": 1 }, + { + "r1": 16, + "c1": 10, + "r2": 16, + "c2": 23, + "v": "9. Reporting Period End Date" + }, + { "r1": 13, "c1": 2, "r2": 14, "c2": 4, "v": "4b. EIN" }, + { "r1": 27, "c1": 15, "r2": 27, "c2": 23 }, + { "r1": 13, "c1": 12, "r2": 13, "c2": 17, "v": "6. Report Type" }, + { + "r1": 13, + "c1": 18, + "r2": 13, + "c2": 23, + "v": "7. Basis of Accounting" + }, + { "r1": 46, "c1": 0, "r2": 46, "c2": 23 }, + { "r1": 39, "c1": 15, "r2": 39, "c2": 23 }, + { "r1": 23, "c1": 15, "r2": 23, "c2": 23 }, + { "r1": 7, "c1": 5, "r2": 7, "c2": 19 }, + { "r1": 43, "c1": 1, "r2": 43, "c2": 2 }, + { + "r1": 3, + "c1": 0, + "r2": 3, + "c2": 23, + "v": "(Follow form instructions)" + }, + { "r1": 54, "c1": 10, "r2": 54, "c2": 23 }, + { + "r1": 13, + "c1": 0, + "r2": 14, + "c2": 1, + "v": "4a. DUNS Number " + }, + { "r1": 12, "c1": 0, "r2": 12, "c2": 23 }, + { + "r1": 16, + "c1": 0, + "r2": 16, + "c2": 4, + "v": "8. Project/Grant Period" + }, + { + "r1": 7, + "c1": 0, + "r2": 7, + "c2": 4, + "v": "United States Environmental Protection Agency" + }, + { "r1": 28, "c1": 15, "r2": 28, "c2": 23 }, + { "r1": 42, "c1": 1, "r2": 42, "c2": 2 }, + { "r1": 19, "c1": 15, "r2": 19, "c2": 23, "v": " Cumulative " }, + { "r1": 37, "c1": 15, "r2": 37, "c2": 23 }, + { "r1": 18, "c1": 5, "r2": 18, "c2": 9 }, + { "r1": 50, "c1": 10, "r2": 50, "c2": 23 }, + { "r1": 44, "c1": 10, "r2": 44, "c2": 17, "v": "0" }, + { + "r1": 1, + "c1": 0, + "r2": 2, + "c2": 23, + "v": "FEDERAL FINANCIAL REPORT" + }, + { "r1": 55, "c1": 19, "r2": 57, "c2": 23, "v": " " }, + { "r1": 14, "c1": 18, "r2": 15, "c2": 23, "v": "□ Cash □ Accrual" }, + { "r1": 18, "c1": 0, "r2": 18, "c2": 4 }, + { + "r1": 17, + "c1": 5, + "r2": 17, + "c2": 9, + "v": "To: (Month, Day, Year)" + }, + { "r1": 30, "c1": 15, "r2": 30, "c2": 23, "v": "0" }, + { + "r1": 61, + "c1": 0, + "r2": 64, + "c2": 23, + "v": "Paperwork Burden Statement\nAccording to the Paperwork Reduction Act, as amended, no persons are required to respond to a collection of information unless it displays a valid OMB Control Number. The valid OMB control number for this information collection is 0348-0061. Public reporting burden for this collection of information is estimated to average 1.5 hours per response, including time for reviewing instructions, searching existing data sources, gathering and maintaining the data needed, and completing and reviewing the collection of information. Send comments regarding the burden estimate or any other aspect of this collection of information, including suggestions for reducing this burden, to the Office of Management and Budget, Paperwork Reduction Project ( 0348-0060), Washington, DC 20503." + }, + { "r1": 42, "c1": 7, "r2": 42, "c2": 9 }, + { "r1": 43, "c1": 10, "r2": 43, "c2": 17 }, + { "r1": 24, "c1": 15, "r2": 24, "c2": 23 }, + { "r1": 43, "c1": 3, "r2": 43, "c2": 4 }, + { "r1": 52, "c1": 10, "r2": 52, "c2": 23 }, + { "r1": 33, "c1": 15, "r2": 33, "c2": 23 }, + { "r1": 10, "c1": 0, "r2": 10, "c2": 23 }, + { "r1": 4, "c1": 20, "r2": 4, "c2": 22, "v": "Page" }, + { "r1": 44, "c1": 18, "r2": 44, "c2": 23, "v": "0" }, + { "r1": 41, "c1": 0, "r2": 43, "c2": 0, "v": "11. Indirect Expense" }, + { "r1": 42, "c1": 10, "r2": 42, "c2": 17 }, + { "r1": 15, "c1": 5, "r2": 15, "c2": 11 }, + { "r1": 15, "c1": 2, "r2": 15, "c2": 4 }, + { + "r1": 17, + "c1": 0, + "r2": 17, + "c2": 4, + "v": " From: (Month, Day, Year)" + }, + { "r1": 9, "c1": 0, "r2": 9, "c2": 23 }, + { "r1": 43, "c1": 7, "r2": 43, "c2": 9 }, + { "r1": 50, "c1": 0, "r2": 52, "c2": 9 }, + { "r1": 43, "c1": 18, "r2": 43, "c2": 23 }, + { "r1": 29, "c1": 15, "r2": 29, "c2": 23, "v": "0" }, + { "r1": 35, "c1": 15, "r2": 35, "c2": 23, "v": "0" }, + { "r1": 38, "c1": 15, "r2": 38, "c2": 23 }, + { "r1": 42, "c1": 3, "r2": 42, "c2": 4 }, + { "r1": 17, "c1": 10, "r2": 17, "c2": 23, "v": "(Month, Day, Year)" }, + { "r1": 44, "c1": 7, "r2": 44, "c2": 9, "v": "0" }, + { "r1": 42, "c1": 18, "r2": 42, "c2": 23 }, + { "r1": 11, "c1": 0, "r2": 11, "c2": 23 }, + { "r1": 31, "c1": 15, "r2": 31, "c2": 23, "v": "0" }, + { + "r1": 14, + "c1": 12, + "r2": 15, + "c2": 17, + "v": "□ Quarterly \n□ Semi-Annual \n□ Annual \n□ Final" + }, + { "r1": 22, "c1": 15, "r2": 22, "c2": 23 }, + { "r1": 40, "c1": 15, "r2": 40, "c2": 23 } + ] + } + } +} diff --git a/sample/forms_with_many_merged_cells/en_form_sf425/sample.json_for_llm.md b/sample/forms_with_many_merged_cells/en_form_sf425/sample.json_for_llm.md new file mode 100644 index 0000000..27c640d --- /dev/null +++ b/sample/forms_with_many_merged_cells/en_form_sf425/sample.json_for_llm.md @@ -0,0 +1,149 @@ + + +# **Federal Financial Report (FFR)** + +_(Follow form instructions)_ + +--- + +## **1. Federal Agency and Organizational Element** + +**United States Environmental Protection Agency** + +## **2. Federal Grant or Other Identifying Number Assigned by Federal Agency** + +**Page 1 of pages** + +--- + +## **3. Recipient Organization** + +_(Name and complete address including Zip code)_ + +--- + +## **4. Recipient Identifiers** + +- **4a. DUNS Number** +- **4b. EIN** +- **5. Recipient Account Number or Identifying Number** + _(To report multiple grants, use FFR Attachment)_ +- **6. Report Type** + - □ Quarterly + - □ Semi-Annual + - □ Annual + - □ Final +- **7. Basis of Accounting** + - □ Cash + - □ Accrual + +--- + +## **8. Project/Grant Period** + +- **From:** (Month, Day, Year) +- **To:** (Month, Day, Year) + +## **9. Reporting Period End Date** + +(Month, Day, Year) + +--- + +# **10. Transactions** + +_(Use lines a–c for single or multiple grant reporting)_ + +### **Federal Cash** + +_(To report multiple grants, also use FFR Attachment)_ + +- **a. Cash Receipts** +- **b. Cash Disbursements** +- **c. Cash on Hand** (line a minus b) + +_(Use lines d–o for single grant reporting)_ + +### **Federal Expenditures and Unobligated Balance** + +- **d. Total Federal funds authorized** +- **e. Federal share of expenditures** +- **f. Federal share of unliquidated obligations** — 0 +- **g. Total Federal share** (sum of lines e and f) — 0 +- **h. Unobligated balance of Federal funds** (line d minus g) — 0 + +### **Recipient Share** + +- **i. Total recipient share required** +- **j. Recipient share of expenditures** +- **k. Remaining recipient share to be provided** (line i minus j) — 0 + +### **Program Income** + +- **l. Total Federal program income earned** +- **m. Program income expended (deduction alternative)** +- **n. Program income expended (addition alternative)** +- **o. Unexpended program income** (line l minus line m or line n) + +--- + +# **11. Indirect Expense** + +| Type | Rate | Period From | Period To | Base | Amount Charged | Federal Share | +| -------------- | ---- | ----------- | --------- | ---- | -------------- | ------------- | +| | | | | | | | +| **g. Totals:** | | | | 0 | 0 | 0 | + +--- + +# **12. Remarks** + +Attach any explanations deemed necessary or information required by the Federal sponsoring agency in compliance with governing legislation. + +--- + +# **13. Certification** + +By signing this report, I certify that it is true, complete, and accurate to the best of my knowledge. +I am aware that any false, fictitious, or fraudulent information may subject me to criminal, civil, or administrative penalties. +_(U.S. Code, Title 18, Section 1001)_ + +- **a. Typed or Printed Name and Title of Authorized Certifying Official** +- **b. Signature of Authorized Certifying Official** +- **c. Telephone** (Area code, number, extension) +- **d. Email address** +- **e. Date Report Submitted** (Month, Day, Year) + +--- + +# **14. Agency Use Only** + +**Federal Share Calculation** + +--- + +### **Standard Form 425** + +**OMB Approval Number:** 0348-0061 +**Expiration Date:** 02/28/2015 + +--- + +# **Paperwork Burden Statement** + +According to the Paperwork Reduction Act, as amended, no persons are required to respond to a collection of information unless it displays a valid OMB Control Number. +The valid OMB control number for this information collection is **0348-0061**. + +Public reporting burden for this collection of information is estimated to average **1.5 hours per response**, including time for reviewing instructions, searching existing data sources, gathering and maintaining the data needed, and completing and reviewing the collection of information. + +Send comments regarding the burden estimate or any other aspect of this collection of information, including suggestions for reducing this burden, to: + +**Office of Management and Budget** +Paperwork Reduction Project (0348-0060) +Washington, DC 20503 + +--- + +### **Shape in Original Document** + +- _Not Required by EPA_ diff --git a/sample/forms_with_many_merged_cells/en_form_sf425/sample.xlsx b/sample/forms_with_many_merged_cells/en_form_sf425/sample.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..210133cd63e8a71ba0d5295fc0cbb915cdc9605c GIT binary patch literal 23344 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

1hbY;YR)n&Tz@-CnC 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 literal 0 HcmV?d00001 diff --git a/sample/gantt_chart/sample_gantt.json b/sample/gantt_chart/sample_gantt.json deleted file mode 100644 index b07aba8..0000000 --- a/sample/gantt_chart/sample_gantt.json +++ /dev/null @@ -1 +0,0 @@ -{"book_name": "Book.xlsx", "sheets": {"プロジェクトのスケジュール": {"rows": [{"r": 1, "c": {"0": "このワークシートでプロジェクトのスケジュール​​を作成します。\nセル B1 には、このプロジェクトのタイトルを入力します。\nこのワークシートの使用方法に関する情報 (スクリーン リーダーの説明やブックの作成者など) は、\"詳細情報\" ワークシートに入ります。\n列 A を下方に移動し続けると、さらに多くの情報を確認できます。", "1": "プロジェクト タイトル", "8": "シンプル ガント チャート (Vertex42.com)"}, "links": {"8": "https://www.vertex42.com/ExcelTemplates/simple-gantt-chart.html?utm_source=ms&utm_medium=file&utm_campaign=office&utm_content=text"}}, {"r": 2, "c": {"0": "セル B2 には会社の名前を入力します。", "1": "会社名", "8": "https://www.vertex42.com/ExcelTemplates/simple-gantt-chart.html"}, "links": {"8": "https://www.vertex42.com/ExcelTemplates/simple-gantt-chart.html?utm_source=ms&utm_medium=file&utm_campaign=office&utm_content=url"}}, {"r": 3, "c": {"0": "セル B3 に、プロジェクト主任の名前を入力します。セル E3 には、プロジェクトの開始日を入力します。プロジェクトの開始: ラベルはセル C3 にあります。", "1": "プロジェクト主任", "2": "プロジェクトの開始:", "4": "2025-12-24 00:00:00"}}, {"r": 4, "c": {"0": "セル E4 の週表示は、セル I4 のプロジェクトのスケジュールに表示する開始週を表します。プロジェクトの開始日は、第 1 週と見なされます。週表示を変更するには、セル E4 に新しい週番号を入力します。\nセル E4 の週表示から始まる各週の開始日は、セル I4 から始まり、自動計算されます。このビューには、セル I4 からセル BF4 までの 8 週間が表示されます。\nこれらのセルは変更しないでください。\n週表示: ラベルはセル C4 にあります。", "2": "週表示:", "4": 1, "8": "2025-12-22 00:00:00", "15": "2025-12-29 00:00:00", "22": "2026-01-05 00:00:00", "29": "2026-01-12 00:00:00", "36": "2026-01-19 00:00:00", "43": "2026-01-26 00:00:00", "50": "2026-02-02 00:00:00", "57": "2026-02-09 00:00:00"}}, {"r": 5, "c": {"0": "セル I5 から BL5 には、各日付のセルの上にあるセル ブロック内に表示される週の日付の数字が含まれており、自動的に計算が行われます。\nこれらのセルは変更しないでください。\n今日の日付は、行 5 の今日の日付からプロジェクト スケジュールの最後まで日付列全体が赤 (16 進値 #AD3815) で囲まれます。", "8": "2025-12-22 00:00:00", "9": "2025-12-23 00:00:00", "10": "2025-12-24 00:00:00", "11": "2025-12-25 00:00:00", "12": "2025-12-26 00:00:00", "13": "2025-12-27 00:00:00", "14": "2025-12-28 00:00:00", "15": "2025-12-29 00:00:00", "16": "2025-12-30 00:00:00", "17": "2025-12-31 00:00:00", "18": "2026-01-01 00:00:00", "19": "2026-01-02 00:00:00", "20": "2026-01-03 00:00:00", "21": "2026-01-04 00:00:00", "22": "2026-01-05 00:00:00", "23": "2026-01-06 00:00:00", "24": "2026-01-07 00:00:00", "25": "2026-01-08 00:00:00", "26": "2026-01-09 00:00:00", "27": "2026-01-10 00:00:00", "28": "2026-01-11 00:00:00", "29": "2026-01-12 00:00:00", "30": "2026-01-13 00:00:00", "31": "2026-01-14 00:00:00", "32": "2026-01-15 00:00:00", "33": "2026-01-16 00:00:00", "34": "2026-01-17 00:00:00", "35": "2026-01-18 00:00:00", "36": "2026-01-19 00:00:00", "37": "2026-01-20 00:00:00", "38": "2026-01-21 00:00:00", "39": "2026-01-22 00:00:00", "40": "2026-01-23 00:00:00", "41": "2026-01-24 00:00:00", "42": "2026-01-25 00:00:00", "43": "2026-01-26 00:00:00", "44": "2026-01-27 00:00:00", "45": "2026-01-28 00:00:00", "46": "2026-01-29 00:00:00", "47": "2026-01-30 00:00:00", "48": "2026-01-31 00:00:00", "49": "2026-02-01 00:00:00", "50": "2026-02-02 00:00:00", "51": "2026-02-03 00:00:00", "52": "2026-02-04 00:00:00", "53": "2026-02-05 00:00:00", "54": "2026-02-06 00:00:00", "55": "2026-02-07 00:00:00", "56": "2026-02-08 00:00:00", "57": "2026-02-09 00:00:00", "58": "2026-02-10 00:00:00", "59": "2026-02-11 00:00:00", "60": "2026-02-12 00:00:00", "61": "2026-02-13 00:00:00", "62": "2026-02-14 00:00:00", "63": "2026-02-15 00:00:00"}}, {"r": 6, "c": {"0": "この行には、その下に続くプロジェクトのスケジュールの見出しが含まれます。\nコンテンツを読み上げるには、B6 から BL 6 に移動します。その見出しの上にある日付の各曜日の最初の文字が、セル I6 から始まってセル BL6 まで続きます。\nすべてのプロジェクトのタイムライン グラフは、条件付き書式を使用して、入力された開始日と終了日に基づいて自動生成されます。\nセル I7 から始まる列 I 以降の列のセルの内容を変更しないでください。", "1": "タスク", "2": "担当者", "3": "進捗状況", "4": "開始", "5": "終了", "7": "日数", "8": "月", "9": "火", "10": "水", "11": "木", "12": "金", "13": "土", "14": "日", "15": "月", "16": "火", "17": "水", "18": "木", "19": "金", "20": "土", "21": "日", "22": "月", "23": "火", "24": "水", "25": "木", "26": "金", "27": "土", "28": "日", "29": "月", "30": "火", "31": "水", "32": "木", "33": "金", "34": "土", "35": "日", "36": "月", "37": "火", "38": "水", "39": "木", "40": "金", "41": "土", "42": "日", "43": "月", "44": "火", "45": "水", "46": "木", "47": "金", "48": "土", "49": "日", "50": "月", "51": "火", "52": "水", "53": "木", "54": "金", "55": "土", "56": "日", "57": "月", "58": "火", "59": "水", "60": "木", "61": "金", "62": "土", "63": "日"}}, {"r": 7, "c": {"0": "この行は削除しないでください。この行は、プロジェクトのスケジュール内にある現在の日付を強調表示するために使用されている数式を保持するために非表示になっています。 "}}, {"r": 8, "c": {"0": "セル B8 には、フェーズ 1 のサンプルのタイトルが含まれます。\nセル B8 に新しいタイトルを入力します。\nプロジェクトに該当する場合は、セル C8 にフェーズを割り当てる名前を入力します。\nプロジェクトに該当する場合は、セル D8 にフェーズ全体の進捗状況を入力します。\nプロジェクトに該当する場合は、フェーズ全体の開始日と終了日をセル E8 と F8 に入力します。\nガント チャートは自動的に適切な日付を入力し、入力した進捗状況に応じて網かけを設定します。\nフェーズを削除してタスクからのみ作業をするには、この行を削除するだけです。", "1": "フェーズ 1 企画・要件"}}, {"r": 9, "c": {"0": "セル B9 には、サンプル タスク \"タスク 1\" が含まれます。\nセル B9 に、新しいタスク名を入力します。\nセル C9 にタスクを割り当てるユーザーを入力します。\nセル D9 のタスクの進捗状況を入力します。進行状況バーは、セル内に表示され、セルの数に従って網かけを適用します。たとえば、50% の進捗状況はセルの半分に網かけを設定します。\nセル E9 にタスクの開始日を入力します。\nセル F9 にタスクの終了日を入力します。\n入力した日付の網かけのステータス バーは、セル I9 から始まる BL9 までのブロックに表示されます。 ", "1": "目的と成功指標の整理", "2": "名前", "3": 0.5, "4": "2025-12-24 00:00:00", "5": "2025-12-27 00:00:00", "7": 4}}, {"r": 10, "c": {"0": "行 10 から 13 は、行 9 のパターンを繰り返します。\nこのワークシート内のすべてのタスク行に対し、セル A9 の手順を繰り返します。サンプル データはすべて上書きします。\n別のフェーズのサンプルは、セル A14 から始まります。\nセル A10 から A13 までにタスクの入力を続けるか、セル A14 に移動して詳細を確認します。", "1": "ステークホルダー要件ヒアリング", "3": 0.6, "4": "2025-12-27 00:00:00", "5": "2025-12-29 00:00:00", "7": 3}}, {"r": 11, "c": {"1": "現場業務フロー整理", "3": 0.5, "4": "2025-12-29 00:00:00", "5": "2026-01-02 00:00:00", "7": 5}}, {"r": 12, "c": {"1": "スコープ定義と除外事項確定", "3": 0.25, "4": "2026-01-02 00:00:00", "5": "2026-01-07 00:00:00", "7": 6}}, {"r": 13, "c": {"1": "要件レビューと合意形成", "4": "2025-12-28 00:00:00", "5": "2025-12-30 00:00:00", "7": 3}}, {"r": 14, "c": {"0": "右のセルには、フェーズ 2 のサンプルのタイトルが含まれます。\nB 列に、いつでも新しいフェーズを作成できます。このプロジェクトのスケジュールには、フェーズは不要です。フェーズを削除するには、行を削除するだけです。\nこの行に新しいフェーズ ブロックを作成するには、右のセルに新しいタイトルを入力します。\n上記のフェーズにタスクの追加を続けるには、この行の 1 つ上に新しい行を入力し、セル A9 の説明のようにタスク データを入力します。\nセル A8 の説明に基づいて右側のセルのフェーズの詳細情報を更新します。\n詳細については、A 列のセルを下に移動します。\nこのワークシートに新しい行を追加していない場合は、セル B20 と B26 に 2 つの追加のサンプル フェーズ ブロックが作成され表示されます。それ以外の場合、A 列のセルを移動して追加のブロックを探します。\n必要に応じて、セル A8 と A9 の手順を繰り返します。", "1": "フェーズ 2 設計・準備"}}, {"r": 15, "c": {"1": "画面/帳票の基本設計", "3": 0.5, "4": "2025-12-29 00:00:00", "5": "2026-01-02 00:00:00", "7": 5}}, {"r": 16, "c": {"1": "データ項目・マスタ設計", "3": 0.5, "4": "2025-12-31 00:00:00", "5": "2026-01-05 00:00:00", "7": 6}}, {"r": 17, "c": {"1": "インタフェース仕様策定", "4": "2026-01-05 00:00:00", "5": "2026-01-08 00:00:00", "7": 4}}, {"r": 18, "c": {"1": "リスク洗い出しと対策案", "4": "2026-01-05 00:00:00", "5": "2026-01-07 00:00:00", "7": 3}}, {"r": 19, "c": {"1": "実装計画・見積確定", "4": "2026-01-05 00:00:00", "5": "2026-01-08 00:00:00", "7": 4}}, {"r": 20, "c": {"0": "サンプル フェーズ タイトル ブロック", "1": "フェーズ 3 実装・検証"}}, {"r": 21, "c": {"1": "コア機能実装", "4": "2026-01-08 00:00:00", "5": "2026-01-13 00:00:00", "7": 6}}, {"r": 22, "c": {"1": "例外/エッジケース対応", "4": "2026-01-14 00:00:00", "5": "2026-01-18 00:00:00", "7": 5}}, {"r": 23, "c": {"1": "単体テスト作成", "4": "2026-01-19 00:00:00", "5": "2026-01-24 00:00:00", "7": 6}}, {"r": 24, "c": {"1": "結合テスト準備", "4": "2026-01-25 00:00:00", "5": "2026-01-29 00:00:00", "7": 5}}, {"r": 25, "c": {"1": "ユーザー受け入れテスト", "4": "2026-01-19 00:00:00", "5": "2026-01-23 00:00:00", "7": 5}}, {"r": 26, "c": {"0": "サンプル フェーズ タイトル ブロック", "1": "フェーズ 4 リリース・運用"}}, {"r": 27, "c": {"1": "リリース手順書作成", "4": "日付", "5": "日付"}}, {"r": 28, "c": {"1": "本番データ移行計画", "4": "日付", "5": "日付"}}, {"r": 29, "c": {"1": "監視・ログ設計", "4": "日付", "5": "日付"}}, {"r": 30, "c": {"1": "運用手順/教育", "4": "日付", "5": "日付"}}, {"r": 31, "c": {"1": "リリース後レビュー", "4": "日付", "5": "日付"}}, {"r": 32, "c": {"0": "これは空の行です"}}, {"r": 33, "c": {"0": "この行は、プロジェクトのスケジュールの終了を表します。この行には何も入力しないでください。\nこの行の上に新しい行を挿入して、プロジェクトのスケジュールの作成を続けます。", "1": "この行の上に新しい行を挿入する"}}], "table_candidates": ["H4:BL6", "B8:F31", "D15:F19", "E21:F25", "E27:F31"], "colors_map": {"D9D9D9": [[4, 8], [4, 9], [4, 10], [4, 11], [4, 12], [4, 13], [4, 14], [4, 15], [4, 16], [4, 17], [4, 18], [4, 19], [4, 20], [4, 21], [4, 22], [4, 23], [4, 24], [4, 25], [4, 26], [4, 27], [4, 28], [4, 29], [4, 30], [4, 31], [4, 32], [4, 33], [4, 34], [4, 35], [4, 36], [4, 37], [4, 38], [4, 39], [4, 40], [4, 41], [4, 42], [4, 43], [4, 44], [4, 45], [4, 46], [4, 47], [4, 48], [4, 49], [4, 50], [4, 51], [4, 52], [4, 53], [4, 54], [4, 55], [4, 56], [4, 57], [4, 58], [4, 59], [4, 60], [4, 61], [4, 62], [4, 63], [5, 8], [5, 9], [5, 10], [5, 11], [5, 12], [5, 13], [5, 14], [5, 15], [5, 16], [5, 17], [5, 18], [5, 19], [5, 20], [5, 21], [5, 22], [5, 23], [5, 24], [5, 25], [5, 26], [5, 27], [5, 28], [5, 29], [5, 30], [5, 31], [5, 32], [5, 33], [5, 34], [5, 35], [5, 36], [5, 37], [5, 38], [5, 39], [5, 40], [5, 41], [5, 42], [5, 43], [5, 44], [5, 45], [5, 46], [5, 47], [5, 48], [5, 49], [5, 50], [5, 51], [5, 52], [5, 53], [5, 54], [5, 55], [5, 56], [5, 57], [5, 58], [5, 59], [5, 60], [5, 61], [5, 62], [5, 63]], "595959": [[6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [6, 10], [6, 11], [6, 12], [6, 13], [6, 14], [6, 15], [6, 16], [6, 17], [6, 18], [6, 19], [6, 20], [6, 21], [6, 22], [6, 23], [6, 24], [6, 25], [6, 26], [6, 27], [6, 28], [6, 29], [6, 30], [6, 31], [6, 32], [6, 33], [6, 34], [6, 35], [6, 36], [6, 37], [6, 38], [6, 39], [6, 40], [6, 41], [6, 42], [6, 43], [6, 44], [6, 45], [6, 46], [6, 47], [6, 48], [6, 49], [6, 50], [6, 51], [6, 52], [6, 53], [6, 54], [6, 55], [6, 56], [6, 57], [6, 58], [6, 59], [6, 60], [6, 61], [6, 62], [6, 63]], "B8CCE4": [[8, 1], [8, 2], [8, 3], [8, 4], [8, 5]], "DCE6F1": [[9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [10, 1], [10, 2], [10, 3], [10, 4], [10, 5], [11, 1], [11, 2], [11, 3], [11, 4], [11, 5], [12, 1], [12, 2], [12, 3], [12, 4], [12, 5], [13, 1], [13, 2], [13, 3], [13, 4], [13, 5]], "A6A6A6": [[9, 10], [9, 11], [10, 13], [11, 15], [11, 16], [12, 19], [15, 15], [15, 16], [16, 17], [16, 18], [16, 19]], "8064A2": [[9, 12], [9, 13], [10, 14], [10, 15], [11, 17], [11, 18], [11, 19], [12, 20], [12, 21], [12, 22], [12, 23], [12, 24], [13, 14], [13, 15], [13, 16], [15, 17], [15, 18], [15, 19], [16, 20], [16, 21], [16, 22], [17, 22], [17, 23], [17, 24], [17, 25], [18, 22], [18, 23], [18, 24], [19, 22], [19, 23], [19, 24], [19, 25], [21, 25], [21, 26], [21, 27], [21, 28], [21, 29], [21, 30], [22, 31], [22, 32], [22, 33], [22, 34], [22, 35], [23, 36], [23, 37], [23, 38], [23, 39], [23, 40], [23, 41], [24, 42], [24, 43], [24, 44], [24, 45], [24, 46], [25, 36], [25, 37], [25, 38], [25, 39], [25, 40]], "E6B8B7": [[14, 1], [14, 2], [14, 3], [14, 4], [14, 5]], "F2DCDB": [[15, 1], [15, 2], [15, 3], [15, 4], [15, 5], [16, 1], [16, 2], [16, 3], [16, 4], [16, 5], [17, 1], [17, 2], [17, 3], [17, 4], [17, 5], [18, 1], [18, 2], [18, 3], [18, 4], [18, 5], [19, 1], [19, 2], [19, 3], [19, 4], [19, 5]], "D8E4BC": [[20, 1], [20, 2], [20, 3], [20, 4], [20, 5]], "EBF1DE": [[21, 1], [21, 2], [21, 3], [21, 4], [21, 5], [22, 1], [22, 2], [22, 3], [22, 4], [22, 5], [23, 1], [23, 2], [23, 3], [23, 4], [23, 5], [24, 1], [24, 2], [24, 3], [24, 4], [24, 5], [25, 1], [25, 2], [25, 3], [25, 4], [25, 5]], "CCC0DA": [[26, 1], [26, 2], [26, 3], [26, 4], [26, 5]], "E4DFEC": [[27, 1], [27, 2], [27, 3], [27, 4], [27, 5], [28, 1], [28, 2], [28, 3], [28, 4], [28, 5], [29, 1], [29, 2], [29, 3], [29, 4], [29, 5], [30, 1], [30, 2], [30, 3], [30, 4], [30, 5], [31, 1], [31, 2], [31, 3], [31, 4], [31, 5]], "F2F2F2": [[33, 1], [33, 2], [33, 3], [33, 4], [33, 5], [33, 6], [33, 7], [33, 8], [33, 9], [33, 10], [33, 11], [33, 12], [33, 13], [33, 14], [33, 15], [33, 16], [33, 17], [33, 18], [33, 19], [33, 20], [33, 21], [33, 22], [33, 23], [33, 24], [33, 25], [33, 26], [33, 27], [33, 28], [33, 29], [33, 30], [33, 31], [33, 32], [33, 33], [33, 34], [33, 35], [33, 36], [33, 37], [33, 38], [33, 39], [33, 40], [33, 41], [33, 42], [33, 43], [33, 44], [33, 45], [33, 46], [33, 47], [33, 48], [33, 49], [33, 50], [33, 51], [33, 52], [33, 53], [33, 54], [33, 55], [33, 56], [33, 57], [33, 58], [33, 59], [33, 60], [33, 61], [33, 62], [33, 63]]}}}} \ No newline at end of file diff --git a/sample/gantt_chart/sample_gantt.xlsx b/sample/gantt_chart/sample_gantt.xlsx deleted file mode 100644 index 606d07075a16f3dea6cc5f80e7320590373c26f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35375 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 diff --git a/sample/gantt_chart/sample_gantt_json_for_llm.md b/sample/gantt_chart/sample_gantt_json_for_llm.md deleted file mode 100644 index 8b0129a..0000000 --- a/sample/gantt_chart/sample_gantt_json_for_llm.md +++ /dev/null @@ -1,103 +0,0 @@ -# プロジェクトスケジュール - -## 基本情報 - -| 項目 | 内容 | -| -------------------- | ------------------------------------------------------------------------------------------------------ | -| プロジェクトタイトル | (未入力) | -| 会社名 | (未入力) | -| プロジェクト主任 | (未入力) | -| プロジェクト開始日 | 2025-12-24 | -| テンプレート | [シンプル ガント チャート (Vertex42)](https://www.vertex42.com/ExcelTemplates/simple-gantt-chart.html) | - ---- - -## スケジュール概要 - -- 表示期間:**2025-12-22 〜 2026-02-15** -- 週単位で 8 週間表示 -- 各タスクは開始日・終了日に基づき自動でガント表示 -- 進捗率はセル内バーおよび網掛けで表現 - ---- - -## フェーズ別タスク一覧 - ---- - -### フェーズ 1:企画・要件 - -| タスク | 担当 | 進捗 | 開始 | 終了 | 日数 | -| ------------------------------ | ---- | ---: | ---------- | ---------- | ---: | -| 目的と成功指標の整理 | 名前 | 50% | 2025-12-24 | 2025-12-27 | 4 | -| ステークホルダー要件ヒアリング | | 60% | 2025-12-27 | 2025-12-29 | 3 | -| 現場業務フロー整理 | | 50% | 2025-12-29 | 2026-01-02 | 5 | -| スコープ定義と除外事項確定 | | 25% | 2026-01-02 | 2026-01-07 | 6 | -| 要件レビューと合意形成 | | | 2025-12-28 | 2025-12-30 | 3 | - ---- - -### フェーズ 2:設計・準備 - -| タスク | 進捗 | 開始 | 終了 | 日数 | -| ---------------------- | ---: | ---------- | ---------- | ---: | -| 画面/帳票の基本設計 | 50% | 2025-12-29 | 2026-01-02 | 5 | -| データ項目・マスタ設計 | 50% | 2025-12-31 | 2026-01-05 | 6 | -| インタフェース仕様策定 | | 2026-01-05 | 2026-01-08 | 4 | -| リスク洗い出しと対策案 | | 2026-01-05 | 2026-01-07 | 3 | -| 実装計画・見積確定 | | 2026-01-05 | 2026-01-08 | 4 | - ---- - -### フェーズ 3:実装・検証 - -| タスク | 開始 | 終了 | 日数 | -| ---------------------- | ---------- | ---------- | ---: | -| コア機能実装 | 2026-01-08 | 2026-01-13 | 6 | -| 例外/エッジケース対応 | 2026-01-14 | 2026-01-18 | 5 | -| 単体テスト作成 | 2026-01-19 | 2026-01-24 | 6 | -| 結合テスト準備 | 2026-01-25 | 2026-01-29 | 5 | -| ユーザー受け入れテスト | 2026-01-19 | 2026-01-23 | 5 | - ---- - -### フェーズ 4:リリース・運用 - -| タスク | 開始 | 終了 | -| ------------------ | ---- | ---- | -| リリース手順書作成 | 未定 | 未定 | -| 本番データ移行計画 | 未定 | 未定 | -| 監視・ログ設計 | 未定 | 未定 | -| 運用手順 / 教育 | 未定 | 未定 | -| リリース後レビュー | 未定 | 未定 | - ---- - -## ガントチャート(Mermaid) - -```mermaid -gantt - title プロジェクト ガントチャート - dateFormat YYYY-MM-DD - - section フェーズ1 企画・要件 - 目的と成功指標の整理 :2025-12-24, 4d - ステークホルダー要件ヒアリング :2025-12-27, 3d - 現場業務フロー整理 :2025-12-29, 5d - スコープ定義 :2026-01-02, 6d - 要件レビュー :2025-12-28, 3d - - section フェーズ2 設計・準備 - 画面/帳票設計 :2025-12-29, 5d - データ・マスタ設計 :2025-12-31, 6d - IF仕様策定 :2026-01-05, 4d - リスク対策 :2026-01-05, 3d - 実装計画・見積 :2026-01-05, 4d - - section フェーズ3 実装・検証 - コア機能実装 :2026-01-08, 6d - 例外対応 :2026-01-14, 5d - 単体テスト :2026-01-19, 6d - 結合テスト準備 :2026-01-25, 5d - UAT :2026-01-19, 5d -``` From f648c9002a11f056101aaf525e91957f794bd226 Mon Sep 17 00:00:00 2001 From: harumiWeb Date: Mon, 5 Jan 2026 11:49:12 +0900 Subject: [PATCH 07/11] =?UTF-8?q?readme=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.ja.md | 173 +++++++++++++++++++++++++++++++-- docs/README.ja.md | 182 ++++++++++++++++++++++++++++++++--- docs/assets/demo_form.ja.png | Bin 0 -> 119881 bytes docs/assets/demo_form_en.png | Bin 0 -> 159020 bytes 4 files changed, 336 insertions(+), 19 deletions(-) create mode 100644 docs/assets/demo_form.ja.png create mode 100644 docs/assets/demo_form_en.png diff --git a/README.ja.md b/README.ja.md index 6ec860e..4cbdafc 100644 --- a/README.ja.md +++ b/README.ja.md @@ -8,8 +8,8 @@ ExStruct は Excel ワークブックを読み取り、構造化データ(セ ## 主な特徴 -- **Excel → 構造化 JSON**: セル、図形、チャート、SmartArt、テーブル候補、印刷範囲/自動改ページ範囲(PrintArea/PrintAreaView)をシート単位・範囲単位で出力。 -- **出力モード**: `light`(セル+テーブル候補のみ)、`standard`(テキスト付き図形+矢印、チャート、SmartArt)、`verbose`(全図形を幅高さ付きで出力、セルのハイパーリンクも出力)。 +- **Excel → 構造化 JSON**: セル、図形、チャート、SmartArt、テーブル候補、セル結合範囲、印刷範囲/自動改ページ範囲(PrintArea/PrintAreaView)をシート単位・範囲単位で出力。 +- **出力モード**: `light`(セル+テーブル候補のみ)、`standard`(テキスト付き図形+矢印、チャート、SmartArt、セル結合範囲)、`verbose`(全図形を幅高さ付きで出力、セルのハイパーリンクも出力)。 - **フォーマット**: JSON(デフォルトはコンパクト、`--pretty` で整形)、YAML、TOON(任意依存)。 - **テーブル検出のチューニング**: API でヒューリスティックを動的に変更可能。 - **ハイパーリンク抽出**: `verbose` モード(または `include_cell_links=True` 指定)でセルのリンクを `links` に出力。 @@ -149,11 +149,11 @@ exstruct input.xlsx --pdf --image --dpi 144 `.pdf` と `_images/` 配下に PNG を生成します。 -## ベンチマーク: Excel 構造化デモ +## 例 ①: Excel 構造化デモ 本ライブラリ exstruct がどの程度 Excel を構造化できるのかを示すため、 以下の 3 要素を 1 シートにまとめた Excel を解析し、 -その JSON 出力を用いた AI 推論精度ベンチマーク を掲載します。 +その JSON 出力を用いた LLM 推論例 を掲載します。 - 表(売上データ) - 折れ線グラフ @@ -335,9 +335,169 @@ flowchart TD ``` ```` -このことから、 +## 例 ②: 一般的な申請書 -**exstruct の JSON は AI にとって "そのまま意味として理解できる形式" である** +### Excel データ + +![一般的な申請書Excel](/docs/assets/demo_form.ja.png) + +### ExStruct JSON + +※長いので一部省略 + +```json +{ + "book_name": "ja_form.xlsx", + "sheets": { + "Sheet1": { + "rows": [ + { "r": 1, "c": { "0": "介護保険負担限度額認定申請書" } }, + { + "r": 3, + "c": { "0": "(申請先)", "7": "     年    月    日" } + }, + { "r": 4, "c": { "1": "X市長 " } }, + ... + ], + "table_candidates": ["B25:C26", "C37:D50"], + "merged_cells": [ + { + "r1": 55, + "c1": 5, + "r2": 55, + "c2": 10, + "v": "申請者が被保険者本人の場合には、下記について記載は不要です。" + }, + { "r1": 54, "c1": 8, "r2": 54, "c2": 10 }, + { "r1": 51, "c1": 5, "r2": 52, "c2": 6, "v": "有価証券" }, + ... + ] + } + } +} + +``` + +### LLM 推論による ExStruct JSON → Markdown 変換結果 + +```md +# 介護保険負担限度額認定申請書 + +(申請先)              年  月  日 +X 市長 + +次のとおり関係書類を添えて、食費・居住費(滞在費)に係る負担限度額認定を申請します。 + +--- + +## 被保険者情報 + +| 項目 | 内容 | +| ------------ | ---------------------------- | +| フリガナ | | +| 被保険者氏名 | | +| 被保険者番号 | | +| 個人番号 | | +| 生年月日 | 明・大・昭  年  月  日 | +| 住所 | | +| 連絡先 | | + +--- + +## 入所(院)した介護保険施設 + +| 項目 | 内容 | +| --------------------- | ---------- | +| 施設所在地・名称(※) | | +| 連絡先 | | +| 入所(院)年月日 | 年 月 日 | + +**(※)介護保険施設に入所(院)していない場合、およびショートステイ利用時は記入不要** + +--- + +## 配偶者の有無 + +| 項目 | 内容 | +| ------------ | -------- | +| 配偶者の有無 | 有 ・ 無 | + +※「無」の場合、以下の「配偶者に関する事項」は記入不要 + +--- + +## 配偶者に関する事項 + +| 項目 | 内容 | +| ---------------------------------------------- | -------------------------- | +| フリガナ | | +| 氏名 | | +| 生年月日 | 明・大・昭 年 月 日 | +| 個人番号 | | +| 住所 | 〒 | +| 連絡先 | | +| 本年 1 月 1 日現在の住所(現住所と異なる場合) | 〒 | +| 課税状況 | 市町村民税:課税 ・ 非課税 | + +--- + +## 収入等に関する申告 + +以下の該当する項目にチェックしてください。 + +- □ ① 生活保護受給者 +- □ ② 市町村民税世帯非課税である老齢福祉年金受給者 +- □ ③ 市町村民税世帯非課税者で、課税年金収入額+遺族年金・障害年金+その他所得の合計が **年額 80 万円以下** +- □ ④ 同上で **80 万円超〜120 万円以下** +- □ ⑤ 同上で **120 万円超** + +※遺族年金には寡婦年金、寡夫年金、母子年金、準母子年金、遺児年金を含む + +--- + +## 預貯金等に関する申告 + +- □ 預貯金・有価証券等の合計額が以下の基準以下である + - ② の方:1000 万円(夫婦 2000 万円) + - ③ の方:650 万円(夫婦 1650 万円) + - ④ の方:550 万円(夫婦 1550 万円) + - ⑤ の方:500 万円(夫婦 1500 万円) + - ※第 2 号被保険者(40〜64 歳)は ③〜⑤ の方:1000 万円(夫婦 2000 万円)以下 + +### 預貯金等の内訳 + +| 項目 | 金額 | +| -------------------------- | ---------------- | +| 預貯金額 | 円 | +| 有価証券(評価概算額) | 円 | +| その他(現金・負債を含む) | 円(内容を記入) | + +--- + +## 申請者情報(※被保険者本人の場合は不要) + +| 項目 | 内容 | +| ---------------------- | ---- | +| 申請者氏名 | | +| 連絡先(自宅・勤務先) | | +| 申請者住所 | | +| 本人との関係 | | + +--- + +## 注意事項 + +1. この申請書における「配偶者」には、世帯分離している配偶者および内縁関係の者を含む。 +2. 預貯金等は、同じ種類を複数所有している場合すべて記入し、通帳等の写しを添付すること。 +3. 書き切れない場合は余白または別紙に記入して添付すること。 +4. 虚偽の申告により不正に特定入所者介護サービス費等の支給を受けた場合、介護保険法第 22 条第 1 項に基づき、支給額および最大 2 倍の加算金を返還する必要がある。 +``` + +## 考察 + +上記の実験結果から、 + +**ExStruct の JSON は AI にとって "そのまま意味として理解できる形式" である** ということが明確に示されています。 @@ -346,6 +506,7 @@ flowchart TD - [Basic Excel](sample/basic/) - [Flowchart](sample/flowchart/) - [Gantt Chart](sample/gantt_chart/) +- [Application forms with many merged cells](sample/forms_with_many_merged_cells/) ### 4. Summary diff --git a/docs/README.ja.md b/docs/README.ja.md index 7091001..ba289fe 100644 --- a/docs/README.ja.md +++ b/docs/README.ja.md @@ -2,14 +2,14 @@ [![PyPI version](https://badge.fury.io/py/exstruct.svg)](https://pypi.org/project/exstruct/) [![PyPI Downloads](https://static.pepy.tech/personalized-badge/exstruct?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/exstruct) ![Licence: BSD-3-Clause](https://img.shields.io/badge/license-BSD--3--Clause-blue?style=flat-square) [![pytest](https://github.com/harumiWeb/exstruct/actions/workflows/pytest.yml/badge.svg)](https://github.com/harumiWeb/exstruct/actions/workflows/pytest.yml) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/e081cb4f634e4175b259eb7c34f54f60)](https://app.codacy.com/gh/harumiWeb/exstruct/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) [![codecov](https://codecov.io/gh/harumiWeb/exstruct/graph/badge.svg?token=2XI1O8TTA9)](https://codecov.io/gh/harumiWeb/exstruct) -![ExStruct Image](assets/icon.webp) +![ExStruct Image](/assets/icon.webp) ExStruct は Excel ワークブックを読み取り、構造化データ(セル・テーブル候補・図形・チャート・SmartArt・印刷範囲ビュー)をデフォルトで JSON に出力します。必要に応じて YAML/TOON も選択でき、COM/Excel 環境ではリッチ抽出、非 COM 環境ではセル+テーブル候補+印刷範囲へのフォールバックで安全に動作します。LLM/RAG 向けに検出ヒューリスティックや出力モードを調整可能です。 ## 主な特徴 -- **Excel → 構造化 JSON**: セル、図形、チャート、SmartArt、テーブル候補、印刷範囲/自動改ページ範囲(PrintArea/PrintAreaView)をシート単位・範囲単位で出力。 -- **出力モード**: `light`(セル+テーブル候補のみ)、`standard`(テキスト付き図形+矢印、チャート、SmartArt)、`verbose`(全図形を幅高さ付きで出力、セルのハイパーリンクも出力)。 +- **Excel → 構造化 JSON**: セル、図形、チャート、SmartArt、テーブル候補、セル結合範囲、印刷範囲/自動改ページ範囲(PrintArea/PrintAreaView)をシート単位・範囲単位で出力。 +- **出力モード**: `light`(セル+テーブル候補のみ)、`standard`(テキスト付き図形+矢印、チャート、SmartArt、セル結合範囲)、`verbose`(全図形を幅高さ付きで出力、セルのハイパーリンクも出力)。 - **フォーマット**: JSON(デフォルトはコンパクト、`--pretty` で整形)、YAML、TOON(任意依存)。 - **テーブル検出のチューニング**: API でヒューリスティックを動的に変更可能。 - **ハイパーリンク抽出**: `verbose` モード(または `include_cell_links=True` 指定)でセルのリンクを `links` に出力。 @@ -149,18 +149,18 @@ exstruct input.xlsx --pdf --image --dpi 144 `.pdf` と `_images/` 配下に PNG を生成します。 -## ベンチマーク: Excel 構造化デモ +## 例 ①: Excel 構造化デモ 本ライブラリ exstruct がどの程度 Excel を構造化できるのかを示すため、 以下の 3 要素を 1 シートにまとめた Excel を解析し、 -その JSON 出力を用いた AI 推論精度ベンチマーク を掲載します。 +その JSON 出力を用いた LLM 推論例 を掲載します。 - 表(売上データ) - 折れ線グラフ - 図形のみで作成したフローチャート (下画像が実際のサンプル Excel シート) -![Sample Excel](assets/demo_sheet.png) +![Sample Excel](/assets/demo_sheet.png) サンプル Excel: `sample/sample.xlsx` ### 1. Input: Excel Sheet Overview @@ -335,9 +335,169 @@ flowchart TD ``` ```` -このことから、 +## 例 ②: 一般的な申請書 -**exstruct の JSON は AI にとって "そのまま意味として理解できる形式" である** +### Excel データ + +![一般的な申請書Excel](/assets/demo_form.ja.png) + +### ExStruct JSON + +※長いので一部省略 + +```json +{ + "book_name": "ja_form.xlsx", + "sheets": { + "Sheet1": { + "rows": [ + { "r": 1, "c": { "0": "介護保険負担限度額認定申請書" } }, + { + "r": 3, + "c": { "0": "(申請先)", "7": "     年    月    日" } + }, + { "r": 4, "c": { "1": "X市長 " } }, + ... + ], + "table_candidates": ["B25:C26", "C37:D50"], + "merged_cells": [ + { + "r1": 55, + "c1": 5, + "r2": 55, + "c2": 10, + "v": "申請者が被保険者本人の場合には、下記について記載は不要です。" + }, + { "r1": 54, "c1": 8, "r2": 54, "c2": 10 }, + { "r1": 51, "c1": 5, "r2": 52, "c2": 6, "v": "有価証券" }, + ... + ] + } + } +} + +``` + +### LLM 推論による ExStruct JSON → Markdown 変換結果 + +```md +# 介護保険負担限度額認定申請書 + +(申請先)              年  月  日 +X 市長 + +次のとおり関係書類を添えて、食費・居住費(滞在費)に係る負担限度額認定を申請します。 + +--- + +## 被保険者情報 + +| 項目 | 内容 | +| ------------ | ---------------------------- | +| フリガナ | | +| 被保険者氏名 | | +| 被保険者番号 | | +| 個人番号 | | +| 生年月日 | 明・大・昭  年  月  日 | +| 住所 | | +| 連絡先 | | + +--- + +## 入所(院)した介護保険施設 + +| 項目 | 内容 | +| --------------------- | ---------- | +| 施設所在地・名称(※) | | +| 連絡先 | | +| 入所(院)年月日 | 年 月 日 | + +**(※)介護保険施設に入所(院)していない場合、およびショートステイ利用時は記入不要** + +--- + +## 配偶者の有無 + +| 項目 | 内容 | +| ------------ | -------- | +| 配偶者の有無 | 有 ・ 無 | + +※「無」の場合、以下の「配偶者に関する事項」は記入不要 + +--- + +## 配偶者に関する事項 + +| 項目 | 内容 | +| ---------------------------------------------- | -------------------------- | +| フリガナ | | +| 氏名 | | +| 生年月日 | 明・大・昭 年 月 日 | +| 個人番号 | | +| 住所 | 〒 | +| 連絡先 | | +| 本年 1 月 1 日現在の住所(現住所と異なる場合) | 〒 | +| 課税状況 | 市町村民税:課税 ・ 非課税 | + +--- + +## 収入等に関する申告 + +以下の該当する項目にチェックしてください。 + +- □ ① 生活保護受給者 +- □ ② 市町村民税世帯非課税である老齢福祉年金受給者 +- □ ③ 市町村民税世帯非課税者で、課税年金収入額+遺族年金・障害年金+その他所得の合計が **年額 80 万円以下** +- □ ④ 同上で **80 万円超〜120 万円以下** +- □ ⑤ 同上で **120 万円超** + +※遺族年金には寡婦年金、寡夫年金、母子年金、準母子年金、遺児年金を含む + +--- + +## 預貯金等に関する申告 + +- □ 預貯金・有価証券等の合計額が以下の基準以下である + - ② の方:1000 万円(夫婦 2000 万円) + - ③ の方:650 万円(夫婦 1650 万円) + - ④ の方:550 万円(夫婦 1550 万円) + - ⑤ の方:500 万円(夫婦 1500 万円) + - ※第 2 号被保険者(40〜64 歳)は ③〜⑤ の方:1000 万円(夫婦 2000 万円)以下 + +### 預貯金等の内訳 + +| 項目 | 金額 | +| -------------------------- | ---------------- | +| 預貯金額 | 円 | +| 有価証券(評価概算額) | 円 | +| その他(現金・負債を含む) | 円(内容を記入) | + +--- + +## 申請者情報(※被保険者本人の場合は不要) + +| 項目 | 内容 | +| ---------------------- | ---- | +| 申請者氏名 | | +| 連絡先(自宅・勤務先) | | +| 申請者住所 | | +| 本人との関係 | | + +--- + +## 注意事項 + +1. この申請書における「配偶者」には、世帯分離している配偶者および内縁関係の者を含む。 +2. 預貯金等は、同じ種類を複数所有している場合すべて記入し、通帳等の写しを添付すること。 +3. 書き切れない場合は余白または別紙に記入して添付すること。 +4. 虚偽の申告により不正に特定入所者介護サービス費等の支給を受けた場合、介護保険法第 22 条第 1 項に基づき、支給額および最大 2 倍の加算金を返還する必要がある。 +``` + +## 考察 + +上記の実験結果から、 + +**ExStruct の JSON は AI にとって "そのまま意味として理解できる形式" である** ということが明確に示されています。 @@ -346,6 +506,7 @@ flowchart TD - [Basic Excel](sample/basic/) - [Flowchart](sample/flowchart/) - [Gantt Chart](sample/gantt_chart/) +- [Application forms with many merged cells](sample/forms_with_many_merged_cells/) ### 4. Summary @@ -383,11 +544,6 @@ ExStruct は主に **ライブラリ** として利用される想定で、サ - CLI `--auto-page-breaks-dir`(COM 限定)、`DestinationOptions.auto_page_breaks_dir`(推奨)、または `export_auto_page_breaks(...)` で自動改ページ範囲ごとにファイルを出力できます。自動改ページが存在しない場合、`export_auto_page_breaks(...)` は `ValueError` を送出します。 - `PrintAreaView` には範囲内の行・テーブル候補に加え、範囲と交差する図形/チャートを含みます(サイズ不明の図形は座標のみで判定)。`normalize=True` で行/列を範囲起点に再基準化できます。 -## ドキュメントビルド - -- サイトビルド前にモデル断片を再生成してください: `python scripts/gen_model_docs.py` -- mkdocs + mkdocstrings でローカルビルド(開発用依存が必要): `uv run mkdocs serve` または `uv run mkdocs build` - ## アーキテクチャ ExStruct はパイプライン型のアーキテクチャを採用し、 diff --git a/docs/assets/demo_form.ja.png b/docs/assets/demo_form.ja.png new file mode 100644 index 0000000000000000000000000000000000000000..a21c096fe0bcc1230800462ba13f03df47447173 GIT binary patch literal 119881 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

g-lMVyvpfK_e z_sM+6)^OtFzk=X7a>wqz1ahrg(D--xpTayB@L`3#PwozbvsMX~`R@)9j@)7th~4R$ z*Hpj%Wl==p?H$e6Y_8u;;==nI@CGX|V57<%zbn4rZ1WAAPo}5;lGS6TRIdei9h*hJ z1eb@t^_jlXh5#v)Pz^6YNec~vb>fobA&4+%oZh6(`$OC$SWa62B^(A8XFI&J}q15T!yfcp5U}CEM+5EcB7}?KTI!NNsyPY?0uDHFHJAgo6UV;5<^f8g1<;c#7_WN&b9TDzCA zD?`Som(GMGhI4z6O%OnzpO>!oUqge+Ly{9GRL@R2ZAv=$e+Y@C^L7rc!ZO@9`BM6V zZ+rGe8=LFRHJHukg@5-t@6eri>CaGyZdhZ4Do!q3g!5GSIIx@fb&p@9v4VaRPdl}0 zdg)GOhme?{h{?(aN3L@BkWqR!@m#*HpW9%czo=Bbi+DB*(+8P~(bD!Z_u0$lZ?j& ze^XKDVVVhTOVhLr4{fgBLt57jYdG$m7LxetKPid-js=-c1XGwk!9HNd^*xBo#U7sB zb?ZUo{uiK$5L;!$q3mnu7@_j}IAB4*M zYtpxa$mtn(LW`({%8xU-eQ(XK6(;ySIY7fm*y;>doNC4Vqh{7}unKa85{yHa7fc9l z)nVAQc6oC5otZ=9{mn+B3^kYSOMTbL-aEBJ+vfZF=m2oLb?lR~?{z#cqh-)fmI>pk zF7MQVfb<3bO5W$+Y6Rs;1Iz!Xt^Y5APIR?bOnqrQ891Lesf=z=GmTd!If z!QR{gbC+2%*oPJ3ZdYT!BjAi5l7+qo!!-}ri@9eH&lgS+0UNaGWfx>6{KP=O zLf6ykw=Xx^8@|kTp9KirZ2c#z>3g7;xV!bP_aCc3Ywha*8d^2?Xn-66YO`SWuDRG1 zjQf9_eF<2SY1_6%y(|g3%fP8=V z>WJu|<6+4D=H|asTqYLMfxdX3uST;%=C8_F)+infsFjZwZF;XMir#ne<@nI*X!B(k z^f#agEig;|j5qj0SG%IsQoZqxO2x+dU-(pEWVap&yS624cKG~4UvZb1v>wClDgN`# z&Ce5y6xM$l?g?A!bl|tZApP(jz1*x(>-6$MwjfpgH7&-n=RU0jko=eo|i1$+w~cp=+FHv zQ)`ym(y5D-tF?{0>sKFh`y^h{sP8&2mh?&C; zC{1uHRR7Yc3{L*vOSKKtnjf400_mjGx*&3BKi+z=zm-eAb2+Gmw{HZG*S2_6y|m(F zYHJ#8ZT8Dqqxv~K1U6u0nD~~}h*DP8PaMzWe0c=C{9a7bZ#Uk9*=*#zmN%YGdTGI{ zHMLJ#nrDCBy1lq%m9Jf9n%5%G?s4;%&XkRx%Y0V;xpvLrjg!2Q8$X+F@BMOUrnN=< zC#t3S&@5&j;Nt-NNwmrM7r&mdirQ{;=BVZAn{xPO6raSWN@A^U;BTK>Xv9sp0TrNu z56|MixzDixzdF%2G2V7Lz2^|b8}EGV<bdein#NihOYSvJKAOnjS8ONc0~$lmG>ZE& zCeG{pPXr(J*MAbvgwzI29WPBu{cCW7N9J$NKjdWp#x@+B`l00m>Xgts&Vwzr+ks;tZtUWN8+<_F!7Ye`x)o<9q1Y<4>L7w53yP37Te@17mU3POQ$))lR)z!L%alC?XLYgO4Ebj<;-%Ylk_KtfM6HD-F;{J?vl`jq)e zpd~6>?(ucp92jgR5YrhW~b8c2V?ME(m0?bSSj4seTMc!0(3b*039LP2tW&p4T;v)1CX>_+5wGsb^dV-cxck z^38)zf5qhgm-4`$shQ@}nyTdNV?%l-?2MAqj+|6Za`HXvB`)p*={7*azDDj#eNAd} zQNG+DP_1WOko;hu8gc~Bd5t(2^ziV~74H&!`jCUuY#JXYFZza z(Z4~yk-4;7Na4#8MHd#JXvzFwyyox?*(33jm9i`QdWcks*KXf)up?(?$_MY`DmRmpimiDc8!&V{JZp_>Sq`btodpVT6J|${%FRItKRfwg^|#HM z=AA$tYkob@le06tsj$2zW`-XuG$TzA2E=|>jJ4m8B}w}akk?Yjw9n)+v6 zfwR1#%G$bp+yFg@-C=$1F?Z~P=fB?5l<5aPzXby@AkY~cZtd6z$ZLQYGRAG7#^BF~ z2iAUty|DDCucrc%3%|5>WWr{~$;u+!*VlN; z1KufQZ;j&8@i5DnD#kQ)L>*mQykU8od0kyDx6&v7tE!vuGE`o&5-CtPA&A z6;`V3_xszW4E=9ThIr2M3iopzeLz)E|0A^aLZ;{8=%HInPr@0t;=6*)lRtd=8n?W@ z9`-u=O6g+kmFY>o{cGj2f~3V{DK|9ufo8@ljn_Et?lizV7rJS#<2M();NRzXX3m~D zhn2$J^CsJ_9_QkB{D)fmk@w<07t8JT)cbV%@^^oj5BzZ2DF7NZgT@B*WtIw;UW1wn z7^T>rc%S8D95Xzwdl6$BJ$3QOR;M&c94b#l*vm^QhF1> z%9DVK>@!=>G@G(BB!^7HN1!Kr!^;y~Sgz+*X?FSn@=xikrX=CaF<|T$1VytbI*%5) z33MV*F)GK)$9?$N4GE@j&YG;zO@6MD{5KzXMcfl)+i=Y{`sJ2iJ1f3f1>`89bWZMQ z{_4gL#+8g4PaJ;LLtJ~i{L9JzXbb9HzS9_wN%$(;>mY(`2 z{wE+GHDWuyvVAuoLh87(=ZJO1#jn*xn;=Xdfg|5snil6JN&GMWl zL7{f!r5|M`xY1W@ntxPAVH#13>f7oP<}X9v+goSY^bt5McvH!hUEdT}IrGXvFoF*gVyLt zy%&ItBf+hLHr4k@FXe+>Z3otFi=tn@Jmj=(ylv#do`O(Y%~_5rG~H>~6B*rqfnMz? zXHwhH+{H!q(Bk+{4+3Ks>8N$ZC!~2{u5YVOll9iA2NU#5ysFQ4dj3|nx3l%grL+yl zqE?su_+}sJvF_vGAN^Ov?E|TG?(W=F9G`t`XL`9PWA%tzlugt)zTxBv$3PnNVOm4h z)*}}uH)egDbZ|@=`X#u|QS<|t!?vw=1ZA`zsnlU4wX~-8N~h%${Sg9YvirnHZ87Wi ztQjxz5b$CjqP4qvKx4!b5#fWmEW)%whHfu7W^atp7AqY-E#$+}3^ z_QB6ljYT`}cj?aICbi`52EY0`gW(YGGEKp?U02LvhsC->K=0?N!?gVLthfc`mOG~8 z@Nf3*knK!;N!!Q>ck}>dy~OumP4p9tXvIrD<1+$qw>u@w22bngms`aPckBwlkg$Ei z>HhL=CEV2&KvDsJ1R~M8u(r~0%EKR-Phl9&m~a$1KD3`u22%>>fhBat&&=*6 zolB-^&ZQ;q*D>Cfo6b6UQur!uwF{p#hmD$h-Og~wV*Zp>GjWh6Inu~GIDk@r%d=#8{Z0FM8ErlvfZ0VZ!rQHr_Rj0 zKW2YIuj#=MC1;{`atPHu=L26lbwjv7dqWr|-fxoc z_y3a!$v6VdLqZq4%sBMpOFudfK`tKLFx0dkLX2J-8PBo3Gb?W?gnbG2=AhOe>*A+) zrKVEF44%NYvR?EWpaW8R%|{ftR(r!xMzFSQ_%6OxO3-c{mZ(Q>-cYy@(maJBb&+`1 zYNu-OZ_8-RUh1^guuq-pdBWWh7vUc=Pn|QMjFS-b9#8tLQ(Zi!=Z^RI&9$-1&XiXo zF=16RC0@I2xV?2NgYFzOcflt6YF=c*{iVmFB@(r=@Sw$D3jJC@V~lGU zpVm~G2U5{h@`TxI`Ut#i&ig zZr_O&4awTBek;MsKzkd!=%#l5itB1t;<`y)th`xZ5TpOsJX$ggT7NQDE@Lvl#;wRh zbA4Y^Y!IGM9f9f~1f6C9OB*Geprrdhwd}FJqp2B6srxiC6Un|S! zaPP<+CdkDuzFTsROM5*m0uTW0_HJYZINzU)tox$=5gL^j-s$kpYIf}}TPW-;(%G|O z&jw|rj^ZFTw0lfiX@d}NVZ>tFO|8PdpKSaXQz@81qM*JLHRC|jh4f+!=@sn^+IN8K zp)y4SRmQK>NwkJ@8EcQ0m9OQ6wV=6M)84nh8@(5nt zMaa;DAqqwfH&Fb^!NL@4hOAO!HgFHiywK&;KJYW~C#-DeW|c20z{t&TH`t>;6hO)S z%zR_6U-2;pZB5(ZX>5m~kEwb-J~D@=7=!oIlX(gC(=)o~7mk?>{lv_9&9fn)T^H?fa9>xkF|e28{7-Q&Q*{8Tf7e2W9ZDW$*VZ3cl@Uu0y_ zjA0vTQ~=gF96G+W+4=l={Kt;To$h`(%x~@5%a{g_1Kz$rdX=_Y{K_viuLVZU+1yvPpq#UwPc8s>ws z)C`jAd#UqU!RA%8J!Ny1}%h>Y(v2Iu)}q zY1uvm3ahc;>I;J!-JV=&poCVHTqfHB`|ogqZTXPk}&8sX5GpLhqB zPL*wHcQgi?Z{MA`1H6x&0N#_xQs7j#Z@UaZFw1rs4$=Y*9!4F=IBTp$VnD%;z##2Hs+l)rR{?RG(uXY?_nNY^8cf! zdd^1|dmy;6=IVT5@4$kMy|0@|L19Zp*IRCRv{|&nL{#xsykAS?3caRlzEdc;njGVu zGmHRc%+m6*@#Xlh6L#i*ax53EQhwB}k!-ha_+UwqBgv6ZV4SE5^GzLJn;BxDl?wGP z`bh}|Sj$Iw(<^Uv%_u+o7%LBRw=BZ9y>6?TXooD!lzm;~lG1v!XhGX5Klw;(6xDuD zLgQn?&GWk9k}u2}E*Ulb*~W}(GNMTOv*|@?zK*a1RO(K#I9Z|Q)lf?BPN)|019D|k z`?eNkY{hr{>|(_+e7$1)*P-}2;1w(4(;tycfq;j_gsdFSVB1}(z)JmNKLCZD%?YvZ z&{0Kb#bdRno_zM;hHpvgOn7yeuRwJIQ^+A1dDBJk5n72bBLI7_a(#FR+R2<-sItdd zS_IgJs2wpEuhNi+QdZ=v^ef@SmNo{lS^YM0xS+nn| zzL2k_SFJP0nllff?M)BL=8@{--*PWQLEE;mV(mcauCIW_Dp`&l4mP)|xREiuv?Su$ zN0$~oEq}Xz+wdG}jIFAnUy;tq#4}Ti3sYqVntjI!Rq>TQ#?Shd8yJ@FZXV&lxom+0 zCNFkzd;O)UuW8XJ{b?}Y9Ib8^sGof!3I`V6zq^?JhqL_qdH>aBJ2e8+pnSxbP{CWe z*5`FRCGfs??|y1zoFNdfg$>~q>DmyxQm~N?X08#f91E$d*R*v6tdg`wvU*Jo&E8BA zPTUt`1$R@paP_{&9GasRW6hEjU2B4DG2 zHU3%AvQ~fm31DbyJto1^peITjPbJHAaKU{A2O+vH8+Jnw{PPn?{=$yCC zT@2o~bn(~oSpRf>K6^n?!uA~N#VQ{E2nk9z1IE)LZ7G6zzF@oTTuo>kJ%xNlGfvmM z74YgjEyo-7dsd__&JqSOM<(Yq(f+f9TBhIVUoM|PVYVi2`FDToZ^!F@+@Rcs2x0)& zATQOkEW2*5{hDyN2~oz&y2fr@a$3vA%)^Y+1>wNBp)&x5p_lTYCaIw|6gdAKpkWjc zA!^2!#=hVeqx~jH`70X}<{sNEFA@}I?G0E_|0=)55AJzK|3dJ##&}Px&%~0)d|mxaxO&Z0Th(GE`>@TP zYwF-_<&B4J_nkahHZ$Gledy2N#c@Q)(g-+Rbz9pN4Xj}3bNP#nrRg^#V$k$z$keNB;p+UeO_E;?E}#E>>Ywg4(vqa z<BliIIKae1&6#~tIMIH%ro z$Kauc+`MFKgQ?lx&|Kyvzi_B5+a{5uB7>o2{urJCKX}$M5sAsYC(e2)N}8=sG2j>V zdZ3d>dwPA0`RQ95WWl1>(#RkOOjhWb%d($M3$37ms3yT?T*;QUVW+<@12B_Cf329B zm?{I3K3a7nVHQ(Y&-*Gmi@wcmuo(IN*xrEiu|x?rmra19S z>XTeV$hry1Tf}a!#|kY^GMPNRcH&6?0Wc?{+y$A>DT%En+=H`kLW7fuRk{ZszU*o= z;P!hCdYM5FP_P8H=uoK&3=;GsLTP%Bh@B+1E_u;#pkulEEnYGR48&TlNz zIKKNWBS*XR=og{gT$tJ?0~s$_uo$Z#C?#WET@t^_>fvv=_S#xj22y$%Y$SgG!f@o9rmM5Jp=QAZVXBD{uLvL?UdW^rC zB{BBYm_JeX4hdM7#jO7M5I2eVEp2S*k{^@Bv^_YcK+!6U?6FA_K`0`MjOkI+TnBa8 zHH?XGu}#=KvgzA-GJkBWt=Jz0l;>~#7^!R=)8&swI&g|MiM<1~o@4u_SAMB7xw%@{ z*Wlih3pU$r&Zb%~*3N~lR3+UinCV@NyrnS>k354duC)z{%dF08pKki$EhE)@7q!H{ zeA0X_wz^y)qTwkE>HCvchVhSuMWN&)1 z0vN1qmvUQTN2hH^=1WyXb1O3rL+*Y~0i%ml-2_HY3ngiWb-^JD3WL7y7XWdaqEhDL z7s?$dK&R{#XlXSB34o<%;p5Gj4~g1kykGzmsIdD47$pGqs9e3OBOJB~eRqWM(Eo8# z=HW1ZY4^(R?OXPqvCG87DD;fX{eI!?b4h*6OHg2MZVP~y&m29SDc=Kjsn z8cy%nK{pnY%2Ph5wS^<#Niye+qUm&b59c9q5C-qi%b>*4=+r6i_(ID>S1<&7Y9W1S zz>NWCbI#>-;fWLR7KKl(g3sl&b@@d`GNV-LJt;XMSCgMR=+f6)tOJlPjrqMzZ+>PA zETvwfSZVI^btX~qEj_S5(yP*T;3OduQ=La8!V-od?lotFjMKeYRQ!6x2VT^|k_QYH zw<{V|&2G*+?wLPWmixlzSbSJschH)6|Mf9fzA9Sgy?23f-_$2v<^s~I5W5uh=cjb`4vxV^`^ul{cwWNJ&bNnGZvg{nKI;qR3q6V^^JO)#ZKP& zwKV@AaW_h(-l#L>#3_`&;;H?pQ*GbwfQN|h`k=C3QYkj{^+czgR7O4TNmTy+E}wX@ zQgHYLk^^FKnK7Ix(Ig`{@~#|dC`gJ>*&a&puVZsl?3KA$*F z8fUSKvqDRSTfOG_>1dQ?oJAl?0(;ZtkOM>eBMU0YL?a82%4i^5$y=F#`k+9BHsZ+` zVG^uDuSnL-G!#ygn=CA?c2$&67dR+ne<9~#9)6<_j(^4*Y94^0T0w!pa>^~=CIc_2 zHcRW(5r-fog6ggMTmjytlKKK-ZJs5)gsU?*Kb9WR6 z_<5EM!PMZI2`&)hZ1eCeaa|AUH(aUJ3j%yd`EUM@DP~`Yre{M9&A(3`b+^DK-5;~p zDe&7Nc~W<>1(+vi;g}ub`zT`W4oA+@iHCLb*+sdFC85dUd_)Ks=lXgqt8+oGh`Tc$ z13yn_M%KZZJ}){>y(vCdukmV z+k;u5H4bFF4K?a7{#*$Upkvzs2X0$5%0k%eSeW9gu%ivi88xQ<{QCZ+a8RH14h*@8 zfw!QbENTcZr*ga$As9EHUM)4b8+;%D-DG8j03jcF5cKsCzOLn<4B=fQMfrg2S_YBJ z##}j&!%!-yCaX6?cu(b8<^nT&l&qh3Qbmj@VFXTaE~3Nu7w2nz*7H4Z&;!xksTP#F z!tx*0R7;8%NK`{}fen_)C`_%4EDSPt@DVZOd6?k%x8#GP0baeeC8Hf(^{KxEMr zx13BiJDPvW7ESDpiqzv5g2|9kP~u!*Vv=l z_5F%j-&DHg$#I1WHEAIHMgIco@Oo&s?(F=&EDz}W$l0@x7|hD`-a`Q!6U^X*;z2^> zW_VToDLj7bR$!oFe3iOuiiDERpJOSdS!H~*r!fF%l-dHJNat(a2f_|0D7}H}*>gSN z#uf4hSg_~BKYiXi2{)eotIx@w^GjI#^keL&mx&Qql!%&#sqh1$*rV&dX=br!OalUB?7D6EQ=kyX{mYh#5YVhAE&i<(cJ5vCUo-K&~bNN4` zS$~B3Xh9D`o7X!2MjXZH%Q#XIPtzzk833^Hf?dOYCw<6A5== zBidY2`i%7QEM&@K9bvv{ULdM!pQ^}!LQI#T;M_z2k+w0#FD*%B7pb)-7aBHO#j&i6LB^mtxVWqzi?ho9Doxow1S;hdPW(UU~;}P1u??16i!8j121Z-2zI@#|{^@I-6(sHF!sbQPjccxaZ6jT?m6~v585ZBY@Q>wN z>P7y0G!A^jd4)}M4yvdV6s3G@?;7)jlDd@(dR#*>!>$PhEaUu5qPwy>AKQ5&iw*@P ziD^n90@`=2E8v*xTIDywa>rL*IhQ_gnxXynUhI-b-l=+???F$g^4L!I0Qxo5PKGvi z#;{oz1&163ajH^oi!FK(FPrt580+FF!EGelP_f{&pNn&n+rm?HigP>g=B^Ju1D1ac zw)-yu95CjF3ufj;?w0kjUMch@N-6ptup_xQnfamp&)8xjyGE6>lkZ_@?fynz)G=z| z4c$Le^Ducn{{Nfv)YwqTI6JP|TvG+?DCks%Kz-r>~@~h2uVbx0nrkR*cj{5vw1;Bla z`^`aGe^XN;6?@&5A{T&@34V|eY9FX&c0I=JTiKkwYFP09;f&g+I|FxMU4H%q*NZUfk=qjw@19avzldmPG*#LkGUr09kY&F810zC|A{JXvFd5^ zQSG{HmbW{B7J>{Ix5lcy>5>T=n_Gp=imyPQfyQATw2M`td_vnRMF~{ZXQ8y}R|MT+ z1c`xDJ|6{a+OL?OMqF(VSHeK)F~6+GPgySny|_HvuMIj?H+ynHwnBbZTzHwQj5_0A zmEyJ&;T9h_fi(k;asPn@CF%sxru{;{PcAf(^K?@`%pckLFmj6khAHKsYC8PwRuxz! z%Yr7CU=Huk=I{z&Dj^yF)gYQTCCrsK?(=NRi?;(m55rj>CgvCqen0W6Gcjl~nZOyT zapQ1to&;ihhEI-2mAbn_2)Fy}C;H6WAQ6IUV}`Qw%)-D=ob(bRi#IY0fF#dn`~L-P zn%MEBT70uXI4N`AeC6l9b?3ypPGOpAjT2T{M|4?d5K)7X&h5b#`@HQB@<4)5^?@Y( z7}>vkP&A{m&vt>IQ)pP$Ot=d4q&H#?4q&ggN^8vnx;gmA$2+H0`xaJ(wXS=7=`^yO zqB;f$lb>v!$G?hAj>;F$Ma5z}-4&V>y(6pJJyqREN6yiTPI$GQBqYK*eo5 zOwMS4HNlfrxSdL};nU1o^R~!bdJN%eC%gk9DRzFA_oYxClnV7l<^mpXkG-ttQsb%p z9BHKQYo+G2CRM`##Mnxp?-kA}<~A^@B4$ec)T01whKxCNWv&LWMQ7J9T&r`Ry9R+q8$HC9+ zZ_xirpMSSvCF^$Eb;O$>Wt`8&vDtp&U(oN7d#jgM%*TN958MzSsTa5AScl62`QTqZ ztZG_+O)%7a2?2gKu%tNHrBNK*&3lokDVg)Ga@ZhJAAAA@{99ho%eQJTD`Jl7{+EsG zreuD285t~N+3+(y%JA8b;Qo;=76=VsmkoA_q~7EigONM^c9_z zmLq7{&LVcwo0v9tQhc zX#KE7d&BjwKD~rGz#8VNEop49%}G!`+!qua2P$_H<6}dr?{vn5Z;e!VC7mKw0HvNe zdyNy2SPCm{*O4OZK(3_Fl37*zKyjP{;c?(_^gX2apcDh%g{V1Ol^p4v1K-R+*#RNO z+p;ob%1(GjYlol^dh*E7Q2fs(9T~21&gZ&EYewKLV<_5A1X*cw@{g!J74Dw>ySyeJ z$P5y|Ky~(k56~vBybF!+IcBgg!gqo+smCV2I<0!oZP;^S#--v6et&QCh zQ2#Z6TQi=30vh)DLghE9vXwSRXqneudp)8A9da=xeQfvcwhy95Z2RD&e zND_7qcqf#xi=p4@_B&H|!6&F77H9Mjc&OO8zvzSTS+t7PfT&N$ci4sYBGDuuY|^O{zvtF2LOzTno4w>f`HIkP_sN z;LaMowpRF!WrobpTd*J668Y49WP5>N%cCAO2f!E*ZC(wa;3(*Uv94S&jUy_lh^1^v zPM%rYMp$J%|NfZfpgr!5CirliTI-jpB`!ui1Ks%F9FpLnMQKsh zqH!u@uC}VRXXf{L0o`-m^Yw4F-zjhQ7U#?K7gvH+7x=K*Z%Ommd@sd_A8lwXr+GB* zV1?ssd3S_3hWKd@o2sOgbhqgBkM$<=bs3lV8NE6TG_d1lVRbZwFj8szw8s+;hn2h@ zskCDA=6UeY@_5O-GOjFqtBEJIaHCaN9>Nt&+}nnn*ypq-aa4+oj6@9PkKUcP^Ij~r zDVo_=goL{`KyP-#d}SN6ourJ|9gswG*HDGbgFv<{c2+&$4ETmS#@Y+t`epNVDZx?> z%r~mQmZ+SyZ`Tzaq78~%?E$=^Qx33&gAFkJ+D618d#YnWRXYD+(Y^VK=Vo4bz~-AN8XsHvpd-YLqQ&%DpMCnn5O#PEvH&^N?PAC*H8O9U0fG&*(M zWS5PI`=1eGlOUe7V)KGX3q|f5{cwbYY>{|>ZhHbyoIaY(Lr>~;88oD_CvbBI4(sl7 z^E#7EM&=%ua!13m4z7AG{7>{sAR+mZ_IhLWvpGFRPNGoR&)mHyfB5*f<~phuma^3! zt=hez;YnC8@%E!+9x0hyyBC(9+2E;5L9AjOhndyA8A`pa@Sc0MOfSwCUj5Y~~b7>kOuD&~lwHefKR z<-F8ps%`qa`Z@nZ}l|nH-N{Hi4qE}(;_D`{3=?9Yk=?(AmF|zDu@DuFO;{J$!eIU zSqJ3|KUY%^pU4aGFn_Od zlUzAPL<&o}H?%PVLFei)^q?KbqiK%4dN_q(Ct@>#B)jYvzSVo-0m`yn7Y$U?_Ar8_aWzA9K0{S4jFTM<|Ew!W$|%tG;s))L3;cnYa$74$dy zGyr6ZZw@_!Zq?yMxG##FGveVT_DxZNp-G(che+YRH9I5saWe8dZP+7R%=%Ok#aLF7 z5C}O79j~e9obL~9q^JZQ#(d6`7-*cM-~c7IJbx=9Ns7_>p$AY5_L8>S?O_iQOGg3P zAvTuUG|TD{ZS&jDoxuOlh}IcdkbjKayncbGwq0|b47yVgG&r9447;IbR48Nf;1~ABpuvi>>4=bx zbn^ma{}apLputMpIK~@{DJEsFJb>9#Gc&`HxYaZ611OGx9 zA6fkF{*q&UesNlB8MeAA`D?>}Nv^oi+z!ZvXTQ0%HV_0He_R~ot~qqNYEDe5W3~*v z(_p)DU>fA20D*2kZf^Jz`h%g}G6?j4aoVqZ*E^MxobK%XFd=YY7nk<4h%)KifvB^7 zkZ|e@@po!^Kn1TB7vj%~&+6#gM3h!naA90iTc$IC&~{~Eg;vgsm0ynAtNzR?333Yo zgkY8kw~swN(E*jSg1Ha}@`EXMpgP2G?|uF)=f=cPq6G<(@AWCbqlDa>%|kb|lAIBF zl|#H(gZ2xk^a5Q-kh5v}$)`czU)(w$7v~_!;;5o>=6w!&(|L~fN1F89_TTUEP>B!B zfLCd4tNPC%Q7ZsTyifp=GIz?7O6OhJ*RIfaq#yiDqAjZS>!xRM<{Zsi=3|7o*!ZYN z?Yi*ONx0Y|18?q6Irk=-;+)K_#5L46xwb{+mIs5>7FLG+_pL+9WLdq&6sBX7pIeJ8 zxx9v2QJnEo!HVk^hrdqQi;%{t9}=D51)Z{B+a_LaNY{LUl<4H=Ng6s}aKyS}Y*$KN zCG*W&N&j=`h37%fw4u0$BtUuKco#|Hls++!(lv zDeOH}#lT*6TR|ebRpq|snRwigZcee1M5$i<{v^7m3PW&nP(NhMX7&a@{Ve?)JY?_U_?KP2izAdI}cyO zv};|*1^;KQwDCHPs76udvN-aNO>gnve{J!qj!Y_@v0i+49YB7n^Zm{dTG+%h(99wQ*DYy-+GjTBg_#Rvf>w{;LHC7C7CH$v{Av)c_x(F7;4Vy7X5RUdIV&ocX@n8et3Mr8r! z*c*!QfJMeIfgTk1EV4rV0@ZzS8G2bYtccV8+yQuBi|ubaMHgCapT&j*b*Fl1X>o!+ z17Jaf$Sc20GJ$Ab{!8O^obCpzPo?EpcFhjE$+0!n=;PzkyGkXnxgenOK^Ya4(7 zHn=~sRZDQ%0bk1fqfwWT(JwAnu66N0cX6WLD=*?jeHeBf2V)}YcA=lXf)g--UEb*IK(xQbPwj0to)OGXWL*Mn`|NjhQW-PgOJSY+3lnOGf4UUy+8D zvi7=X?kOBE+&yVYKJlee?vtdiKjnW_F-pl93GkM2G!Zz zA15p3@C|im0a{K6URdr7FT6Wjl}oIbAiWcu%xN5Y32Mh^hp9I`+?Qo=5VhW|Op#P! z(eaU$BoB&Hn>sPWRwmqDk@2D;Ve6zO4WqA)-n_y8pPDZT0e=ZZEv9!*m!MTFmkGKm zLFvAF+)Q;5x}SpW#EwfX`2dN zjN$+l1X#l&|C6-SRF5)M-9a}z>a}gB4?1ON&guob??`&5z}+v&-FHH-YQD+h;#GgA zH(7utU@IcLTvh^=JTZFPM!7XAf6AO2IegU!mCLKN0AMx>0JCYhvzya>tMHJ;(&lzZ zJ^RNs9k6k((fal3;GJ5!kIcRh+|D=qBALFS8*6eu&BTnES?({1yo@$YY!`{ng;HtG zRK;^Mp=lNuS>vxiP7s4@3}`aObPvpNGD zr<54fp|_cZJeCU&tat#(-`UBWs@H%5s>8`HQKDCP7AWyl*sBCMv6-yZ9X-=^tLVx1 zK-HN7Kz5bxPtVM%r#(>W6~tLZkImbsv%4eYqlVt>pVn7>s&(X4nz@OxBa*;1%&eha zo>89<+*c=3KXk6vyeoF_DV##d?3A5OCh6O+-hmR^5Sj!&ETjJB;BD^?^cIm``?qkr zG^#QVpv=hwNHp^JoV5$BZl%^UKyLXw=s7?EE(<~@#sPI+LkF$TO5vH~X_J{alQn1ZXDos^+g?i{0pq#c(o^cJx0v7GEqH8EZYmDWAPiHz(3w z2mm+`7|%c?wB)Zm=l$)k{J(40irbwdZtP&wD%bku9rPdf zX}UHn?tx(%MyDf7PGs{Hta>Gd=P`TIt9(RVTM~OhEEP+l$OB|R*+d2=2PX(NWY9Jx z`a~s%CA&2O*InQf9~i6V*-=!nFn{#={*a~uG?-9yQjF)+MME4_G}E`r+KJaABYu=v zOzs>UbBmEu!L5c7&C~Ns#K6#_Q}Teht&wd5dfW-3`%NH&K=m=0iYEhdusGtm?m{AG zvx)*_*a44Hz%4|Xw$e}d6^wpTIm-0JVpFiAicH*f#1Y45)^91YR9ZBtdp!yU@)<14 zGXLd$3cmI2zZjZdi^cJ~d58%|jL#!;BFY{cYVJZxxJA5{nqn%zLxEce9a>I9TUHG} zv0*`9FoH~(!Vru)a(rvVup6S`qm?L#2tJcvC2 zhQ7HRr@quBhKWv-o@PnoK3cx&ptC37F!Vq;W0qFivrymDfupF-BBbIOaS|d0gDO*J zn^;ZegeH6Ej5xpP8pHWc;Aa3~IhD9D?p0~U$jL0~(X9dUb{Z*4kM;D65(&77Z%sB2 z1BjNn@=F1bYn-AdU>6LJB!O4ioy`gE3Z;dr4}+l^x(f*;lN3Sym1AdSBNslM-_2P2 zeNU9+Jpe+x!5C)0qLU`X&BZ;sJ)`6p=#!_*SKdL#Qn>qPME)wWagarUG}gc{vIOjD zHN*=|UNF+1D06wrvAQkvcs=IUJ<8@}Qk*w(^~I(-0?{Xdk8Ozf6YKZPa^ydVJ1U%H z`Jo*=pK|Be9w=_>My`RFDNo}odPdzF<|_3FU97oSHV%-f_PXJ^$jPICnQ21;+F{^= zYkel?S%cH!uZv%s-SW{rS)h9+nq0WnN^_APq`Do{p08wghiut%#CEpmBgVDg(;rrm zNn%6@sQXI4`H)^&KOs5u%^wyH<-}u+yaRPTc2pyXE`70$LGR@wX z15X9zOq7{5QOd#ul~^|W_t<$XUMMFU961mG_a!%h_Y(yeCsJ zw&IyVYk9DdcI)pw5KJ*lShapgO^C?GS~bsl#gQ#!zcOI(%M_CM*q+fIj?xNr6V*3+ zs6ccU6$iNtg(b*odUe?PGa*#9WL^M4+=|g`#nsZ8e2?C66@t@eh2^v&z?u0Dnv_)7dC<93`_ko*q{*)xV z&)UeCJ+!MW7#8{mU_xRUtV?g|Tl`u{n?&wF(pyr0bK)NP;9Skkvsi4vLYMkA(1aGJL@B_9flrE4qyZ1?A=`mxY&P zS>-NpABTCYv(Y2{dy+~o;UyrC*m8%(uF;O9mKg8yi0b=FjLQV}v9ssd@xh>zf8B;G5y!ns!_TcKq}stM<(8(N2zhv=^U?^I$k zpiP4NKwCJpkLD3={QY1v_=FRuc%XGk9I~V=@iVqNdgUs7pk6}N19EA9k0DtP&AG#x zIDnwfivJORQ$@4GUcNuzfR2rIAv$*p`GBnTb1`Fm&<7 zLE92ijpmQM`o6UP!`+)eHF@W6-*h^yGh?f*7E!izq^@j@$|@vwTEG#JBC>@gN(7Vu z5hBQv1Up@!X>D35jT2 z_R2ROM^BYaWXdZlF7?xy2~#b?7?EfLaAAI0{X})4rtNPAoX6f@VVfF_m+)ndWY{XnaHPCb$nMqS;p``zE5T!MQ6pTYpF?gl+!k zr8le`8-wPE_2p`}KPJCJj=7r`1wUM{Uy1WWS<8UGGjJhl>3?5%GYtF)K=I_`;}a)K zc8g@-Uw{Vt-C;Il#p`04ib9Bt2!Gr>oEPqMaDcX$aAcc zeTx@E-0}l@XU4b_e{IxUXeQp?*+1ArQZf^lxC25e4#?4r zxlS~nhYJ~V&E?xAIaY3KjP2kG-h+%~t!pTx6}ZQo+mS=Fxs$_l%87I1TS_pmlpEIJ zSwO!kS}%A)YjUt0*x9v(1<&2y3APSeck zKcvm}%sV?0YWtm*${cd1al(E&gVA5BsWXaa9y=xbrER*Hw6e;4?!m~J>==Oz>+o5^ z+QjLDzWv21y2-I7gSm2WJf|rWlczJRg2whfh0%<|Gphg2XW-`VSXxdv7IQab`I+7A z%$>^Ph@DF+>>SX!@pPM+5s%I*ly#NP&MbT_O9+I{34xF68JKJGM;Y^qdZE0BAQh1{ z783A&@KlzzDtZ+Qw?t;69W243p*0Uj)-lLdUt*f@per501UoR3gnka>L!55-Yolrq z*G`1JE2^5H8-S3^hE2txQE(y zJVGm%6fbE$9Com8lp~w7OF2V#YRGD+)7p9Os*m&5qbj3Hr!@hdOt7?!Ah3PZ=kumm z;98ns6BgcBrvj){Dl?fH8Rok8N-zz7d(xVodoi-8AmUkgUI8id6PgO>eQaj%sRc>eK(D<-+j9MAC=YLDiV*%D?p0=ACk;$&Mo2yuBme?P)xk(NemkK%w zs#xzt#V6|ia-@$-^BU-owJ4K|KX$<$1pB{MfYM1>A z-r*EF?}d>@kA9O7^@`sKgus*^GbSzy%G+JOxw0T6e?JA8ZEzBmjaUF(bs7ieapZ}}$o9B9{Mjm0X% z#K=&JHA1aR?fHL3>I1qI8w7bJsgE{in_hjT9A!I?>0AfHFHzz0x&d=( ztv*8ZiuUe-{nkG94a~jDz)t74O*{a9V&grBKb%^^!#K^Nk%RgydX5Zl1F)I9#)+r=ezoC1wO>v9Qobq9CJA5sL6Bd%kIjaGUdRlp~MPR9N{ zjv=O4^4Huj-eeGu{55)&6YD+{5a?0xh9XIq2 z&`@@BLW1TB;{@4f2Fl^-5UQ%4ay#a5+=?Z`P#0bGe)2?NGD8!C7JzfO=tmLdadzZtR>lX;^;hlVp0N{x7goOAV##Tu+Y)xk5*^*K99o^3K)zYrCB9jw z*366M&&^WU!*N57Ik_{t!>`lR#tKkqtU1I;?g?B-32m<}8%c_nDjMD;{fKUSC!3R8 zZnb(azgC7>$E~!r-8l>%`tNRbfObgcJ^f^#qkr$f^}!&MyQFCn-VT`B92UF&2A?*t z2Fk>t2bZo8Q zbjOqAMIy&urf?B2dCg3Y;p!M(SW%L6B{OJg*J1|M%`kG?X}06}$USC@w-v8V*r0a1 zhM8?0f(|chQB}LJ2zFvnbQXteySrXbtz|30JCL`yGPl2_BPoQ z68AenIZXF7>5>;zytIqy1to(6KXao#7Sy&FotVQTWuZou3%|*ky|~>%8RY>7+MnGwuL8K5| zK82DiJnfbU=TRB4N@Ai-V??1afFvpn=tZFt;1>1T$x4>};#G!!*yhW;^BX~RktYR& zo+mGP0*`b0EG<_MMKXBzl3t>M`)lE4Z$@=E7h z@c~G0#ouE7!mEQaiJ*re9=FGGOj>Y81j``J!B`Q^`04uP*I7v;iK~COzjlN+JPiD> z=PkHB8^0=SGs8AdIYDdb>1YgbE2K8rX{w2uGZpQ2$|JWS4s0kpTrY^hp0I+5&f9U%IlO*0`AezY z+_;A?Cl>gn`pO39pEH7tZ_)9Qz3VPjA1!2ZbwkUma-Ao&6=9kX2c=7olp&B-b=fHxw1 zCn6lx(Fm@goP8wPszeVude`jvvT4s-EuX0c*My-6{9M#H@ zpmU@192I{(jI>F}>(Q&OF|IO1x-_ zW#5g=>Aib2pG_4g>%i#GimE(M?R19aUrnYu#j5u?=LbfjqRDmqFK2RSRyDu3F3o`E zt1<7wM8Hzzm!zsQW=PpH8;;cb+Z7bh4XL#7{}UxUdjLWXbWWztEP8p@k%Zw-WIqlr zk)to08{WHdQh2NM(pd*cAn*GF(T9?(4uvG1kR<7=(Y$E1#x8DKxGi=lr5guzu)T?w zSfe@+S%=J<(V0qXw}#YbFP&2z>}igqo8t^OoW6*0md?m5X>v&`A_k5YB~TfS4vYw@ z8xFb6WtXBz6`Lg40;Nrj;*?RJ+9T1{5|>mW-Cq-26$~*s&d?ywgzf=8zUVN~nrx&f z5(%2!CX1UzWxSWR@9?G-w2#5hU|Vs6^PkZhS^AAGfV?3G9m((T%kO;EL@Nz4)}}&d zl{B{8d~4R1n*+N0fl%m;)0PnPx8`oLAVvhx>-DYm2QX;^zOMDJ-`${GHLO+?yLof? zeEfv4b9N%5U$>|kzi~zF9zv=VrKpXis`Zwm`7q36PkY9IA5n)$W!xxDSZ!e;0ur9- zYae9<13Tqx7;f98fEcb>0Xz5u3+?K0A&pshbJ_37mqwzc5LFL0XmI@J`T6<%z0#Dn z`0ImvgtNU}aWcc5%_FI+Z|}98%Dsp}g&P;RX6m?BKil1lpnPFN<4*CG{!m=A%$cVvZ*|Tda=?l8Xad&2@yzDS2Ej(!)`+a-x z2B@q2U|AwH5@=|bdWXs6QXl_G)Z3>o#kl+}jI`Xw{_Dy1sZo}o?k3^kB<}ch(@Atl zSZ~UR`Ki3cEbQ`XR03~2*=aTO!0O1U=#`_#r<=h6qaX1k?z6jqO)mSmI3#j1b0r-q zf`OM^Gb&z(-pGdeUGt^ckxuFBjKOuRjl}*ErYbQzlgs|w{r)D4!gQO1$6TPRoCkw` zkA_wlPGMt17PYC8b6V*DYbx+uBm-s2CIC~C6++qUmdOpyr8C{o5u)T9E;m9gVNlGuoII9s`7|JNfEv=m=08_VlwJbp!Y{1km~$({T;SvmBPE@^2Z@oI z&JA+}PZdKR;sz4A+ABGS&$$h++Hk`Whyo)O%8nN!r-qpC`u2a1ocmMmFwQ(qQ`RLu z)i-4H3Vz=F^?G;zVSUPlboM)NSh|iZ(+X}`uDnQUWyZgmR+x11qlu30wp!=M+hbhZ z7^<9*s|Md?x8mj!3GK&YRC`dtxiT3Kj0iN_0t{~%29F(V%n*9A^ZmRMciadsMvOV1 z>$Jfl^5DDS4QUi_DFTQJOtu>tE=E32{b8BlM(qYR;r?X6D?e>|#B2d9*<|rZTJ;H z|L(^t^DBDfnn$%k`48Y$-C8eN?fps9E_?d)$I<@!c^m)t?siSTeJeQL05%;8)I~Km zAnEc-vKXq>eGtgiwo($*I0v`>NECNV0aw(V5#^(0*AuhkMlnF-jHvIFy7$^(pmPxCm$O zMAljKbk9*?E%aZ~k3=HrG*%-t)?N5w;CO1DeY{V0#fQC8(KRrj*c`Poo4(@cVxm9h z5~q5bnu?WkZ=Xd#+urAK?$|3Wo+|2PqLr|^fQf|Tc0lm!P<-1-n47WELJ=IRF{_sL z>V`@*#Fto(C2Lmnp7aMHYg5IgUP}hHgx(^|0H30k=?2`&ax#W??Kg#&Qd zN!r8ztIAH=B=SQO{n54BYk&KmVoaVp?E)keWe=-92;5twF*9Df-JqIa{JPv=gb$34 ztvv?JE;NvV{$T(fDO~&F2i6VH>u}T<8c3;%A6OH{A5y1cL#7&MI~0+nsft@HwgynW z{Pp)6)*%4ER?I4#y$Pn6%e=2Q6aTRexdbrHWFS<1Wp!Qo#WMW6s?Yk9F#hJQ_u}D% z{aC&gJoPvRSbcSww>V4OmWfbD`3s`jz%Z16oseL-_o?FBWEL&vP*UBx685qhC`C`d zdr^88a=E(kS?qqocPIL)#{mg4XJW(RJzZ)gV~dud+djrgjgt~NSukgdTBs3u)499< zsgghuh~h)YOwLjmfqw?rye2c_qbuhfW!QvxV{Lf)ZDY}8^xbPol^45yaJFSw?1d+GL@hbUMqlSh=|M%vIfn(H~)|OSzx0wHN`t9~GmCMn#GdYQ) ze#8RJEsAP!UTK8;!F~d$uBq2D1Th0?h$l29;QV zo=>%?P77#v%n4!BvOp6kl+~&P&9nQN2`W%@H+oTfhiMHBQ>}xwK;ha{miEDg^)_LMVmM4dy`wXjH4b4Lio@BV?Euz|&)zT#* zXg)56IuO+vekEgEl50)up`@Hb&jb$#b<8w1o)pu89$dGr-e{D1rgx9anf)2u( z$*_n7^<)dhx@RPEtLPaVf2;(V5{RoK-a9ku}?Q1cv(z$43#-n0lTS9k zy(%?MpE{~w?Qj30%i-F-h=2T99nDN6#XRv&(#aeD7yAJb+GUk=x%kCri*XhZ!^<;4 zzJL(SU7A=owrg$!-dN?DuItxow$t?Cc6xbA^}R%fMw^z6m5(8~rg{`BAwdWe@20{I z9uP8bhQb|q?~lc+Y*5v~+0)A5YD)G+RsuZfAl;F-^|zL8*n!&7A)Q0TZyo5CX@@EO z7t)_%E)-@5C%*ZM{T_e$JMGHnPcIE$`2)ElYw^YRKh13_Ad#=$fAg!{7!f;zDFhX# zrMN^JVY2n1=JV86Cx79bx*|B~x`x}qiW)PM&6FRcJ>--p*w+Y?8do^YJ*#E5@&Z&N z-aq4D7>=X3O$<1m=*iIhJwowZ+*hfI{2=1vAEn+|?3bF2v?c78#9z>hGXmE?n3dxP zo1@_-r-st356x9-8LQ@2A-2srL`Gi!^$`M^z#p?MN3_=w2N6KM$E|L9mEiDdwi%8ym20Ykw3J$kW^lk`gnR_en`hyrLao}Egl9aX~f9d z!j;a{1s(1x0@cGEO1XWuhKc#fSrI>4oN65Yny3K1Y{X?G8Fc?>H8uj1)^zJde3KFD z)wf>V`VZrI+q|4l>NK3K6VZ_BI7`Rx3jNV=e>s4B@%w-d@r&uMH~$EG2ox12 z%5ES+{LPL0@i3sP|GHZN0A_Fin7hD@({rP6eFb9u=Rx3fF#8ASBAjz`q;4=<{m~or zyvw83Zo9b&ot8eZQ72~lxhE9|*wDlJ>#)bK(!zZ5{VJMRbtq=4gOi|5UO#$qweJCL zENbxNXhxsd`OL*l)LLf4zKoiA)S+x6lC+|5xz4S2J3ld*^_fkE(DY4{K;!j20$&OG zh*|FsSe+|f?;1M@SuX?r&$A0->H)CpRdoTQH!%GYl=@#8I+8bG$MKxiLtiG4ky~wn<2Xf<2vW=U76^z=e5j zYTmSkY=HvjFwVLi05LLc-crK~i|WMMEvEwGmq6?@md7Y~z&X|zN%B1uXUpkk5amNF z$sMJ#-pMSiPWwX$*(RK{gKxoI;%J@FlwnkstzgK_uWz)%MqWCga_UUgSBfEFzPlS7 zg`V&b^l{rOp?RX*(tX$-x3gzE#98WLj;|2OBhEbOaO?sb;MgmGuKL;}$4h(E)*Z!&@Ut0CF`^VvGA4(hEDZoHZH-36?{rdcr{EU{zZZN;R@jl^a&Q2f&c%=J;1^{uKNi^QR!nf5} z`k(m&^;0f|dX7)`Y|2N)^Q&QOqSuT)OTykZs-sd%9jiMKrA9aLQM}m2yt#-hIR|{J z0MZ9uBtNp9s8$963$cPBUqDq0ThupEgW^f^R68Z2y) z&g_8D$|$qVRYGxiI7e)7t=C@*Aj=n2448i^zn*$7A;AT9sfdvQTo~uASig9RgHMUT zNvRE!F&Uulwc&EbjK>jIBSGG}=+jlNHypMbO!DF15~sq*D)^Ho$fA9Tzp8gmaW&Pk zU#6t8_9aZXN#lzI$LyQ)MaK%}6LOKHV}5ybYX0M8d_dkJ{wmN7<#9p_RJv2_pOJJl`iwxB`U(1Cvo zgmPy&W5AIv6@xis$sjKIgmesVJ=_E}c`xx_5{Wi}$L;jglvDZn!Lp}K^Mv6|)B6o3 z!S5plIxje-cJ=4{)=5h`>s=t-mEK)0Om@!??qJm48yT6vVfS6?n-dAcQPY^7V|f9a z7+hW3b5{mqg-OeZW{alOMS&MBSwm-&!@~RKdPabWI9$@EXu@@3A?K|+lM!g6lenf4 zw|{aB(K-wdvaD`JtJAS^OFp_WRH=@+BMya!Bu1&+8XFxDU&`(o?3#rYR2L@kL5df` zCou}?y{~{sHzZKxxmX>DLlnYdJWU*G0l>(pivSkV>?BW5qv~XVjK6>j-2@bM)>fVl zwe|0vHv9jE>38&1fgrwB4Y|Z)1Pzvj%T~dDdND{_xaUtJXa0ZDL?FVBq^}9cz>5C8 z$J(k0>9@QRX9?u)_3-l^R?DT5Qk?{ClJ@1=UuUx~TL6k+X#3h3PuYg%UnqEDF;L9L zxVd;?Uxea}#s9{Ksk)5J74fN>MrfMdXy}dW6l2SQ)Z|djI4`k#xW`y_r%medBr|=} zmeB~tNo4`Wp7%J=;@~xbPKr3RTRHX-KPKFC81y9?{g~fORQmRp!lOnPDxF3V%)evN zRs>Iiq={KKceQL#)RS^2ecK>Opu;z$s?b)q(utbXIxFQ~@TET86Z`+N=XV?I zGr9r@>i{BRac%q4S0b`~E^|ggT;h>04ewdnlYVfU+n+ebU1oeCzp#of(7|b94*YG zEPexUk{i8#FJ;Kn%c~jtBskHk*o!$JzpbhC+52#m1O(k$_Ot)K%^Z({<}@ax(zI4GQ} ze@z>DH_*>B`|wN0S4bRCWqD02v%cJY{>v)+Ym#x5z2i@24`9G}Gb-ZUG3x2;mNX(H zmUy)j&~~EZfLs55Qp-7r_r(Bs#8qQ?MvpUYKni|?`$$8KWFnBo^g4Uzx8GcLqDzoX z2e=PfT3eTXY%8EHA-NBojnE7T{;=!DXAB!0^mqLefqHQGb z;;4HtBOAiX>P9hFc5!&| z>p^Zkp?Dq23%M)3sIEJS-ilmusf-WtoF#<{LfPc8V|@ctE_BH;YGlkl-WlcRQ1Kl9 zsXmKt-V87SBm&!B(4Q%Y4dw9 z!<4aL0-r5G*Vo)x{_d%e%)3E5rhPd(2P#iX%cMu4zm~YabW`jejr>^xJbv>*SQ=eh=eQbT`Tz_1UWz7bTkk!i&9%_z6J!DjA*o_XKBOTZM8R4GRq~ zG4Ea2@q%+8$!Ekbb{mc4ujD0thL#?;RTMFZuhqP1P~hw8A2{INOvW4|fYYCjG*-^V zomXc44-kNT``6;R=KGxN7J_hb9Zd-f3R#U>RjEhimqhxt%r{0*ZBO%DzHU2nNL4ey z)dPzFYuO@5M$u%2kvV<0RK6+cC3~v&&=*5HLS2M%QJIXtcdcmsg2P6P?uAHW7}W^- zR61Z+9$j7-{quT26r6uK*UzOgxI4)M?>Ub;)j^RQ11V#E7ZNFw6EX$m_a$yq!4#BS za8*_ATGJzNaW{@bp|!wZ_<1iiWzE>}D&50gxzkk(*Qc-C9q(lQ<&DL@2Yyj`0CJOM z?Lu^pLr+XpcnimQNZWvfTvb@uol=^M4-I~29eR+^^-BFX{QO__qV~u&c>M|)8L{oR zTEU{k>#%hzNNUUYCC}+!CFsNRj_+MIRA-+!(TXz;TrGK^FWL9Q?|%lrH!*2z=*UpV zV%9E+0V9FOUemK_Mv)^36X>6P7@YMB`F8pe?~;~$WzNW4y-#@ZspQEoj|IkCoxsOTiA7)0y)DKd2_%6%aBjp zQ&%kQRNfF2sy%gWXOrV|-%@MU+}1x{ehd<$PQQ`;bh{&=5tisDg!pNXSnl9!6b7XeqQ|Hmwo$h`yK;O}ybh z^Ck$q2nIXtUkH|!Ggj-iZlOZ>3trQ|ShCL7G+6FXg=`1O0-+BaeoE_kpld7>yGk1H zW5Rp#eC&|C@+PCC!d3Ag`6@>k?Nfm1Z9}{HEQU{-dvnUl*iK|!CJN!!9o-StQGUR` z&k-x!ff^D{4YHP*uDhk&ib7}=cD;EzWW)uZXmH7{*TZJA!rEou-tv~B@`jtn1DCbMaAwcRt*8}Y zvxP*?yPZ%e;lNa>V}kxjYUIWKVjk1{U`*vbjxMxk*^*ER3_uM~W+HzdArEZgy)#e` z@5%Xl{reQ6+jvv{)1`w#g?d@VNS;#fLWhL=2^HK-Mw&p!AY@xUQo7hcUrl8e@oJ&i ziyIf7P3cT7Pj5KhXA87n+?K?iZlH@xGc~#2!(bTWCr z5BUB3rrceTm%TbS-Wd_)s1sn>1GPXYh#4#Ct8?;?%(ASd6D)k6jTwZ^U~Q-H=oROs za74XevtQS+BF^D((xh0QFw(h7VYSopVqQVW@!+L!&<-eYp=U?h%~h(ap@f74H5ltJ zQrtP>vM2{D;9KpLOo0~=*tcU4kQul1nyJMR^o8dU+H^E8h0DCXt=g@xE!x|U2!X~~ z8QXCGGAB@0_Wy(dIWJY6b|4NeJIYY;CQwKIYpoc9OJcgAOS_mf@9gs6Y-3 zFr$?~xEG0oY4n+uyeXJZpCU%;(`Oaen4HW9)0w_MUtq?VsTgq5ia2J1lpZEx8ukcX zchebMZ|1*R)VBp5&$HH~FKV;#7nXq2cH>>r%GamU0&X(_ssATlcRDg;j5(@{R|aIA zLKm2otCqcH7=(k5AfhvxLL6&I=TR@p&j>t3mgl1n2pcB(VVIIVkIdt-x&yt6JABMc zwVQoIiH~=5&Ck&K+cO8~>KD1<0}Qq4n0F6-e;8TZy(o3Z^muH)E1a_!v^ZRey?dVE$DFx=?CFM@ z*Ww{kZ5m{(y2VbBA?|T{12C`G&6q|69bvD44F@0#U?_%5m)Ct2FKSzmFOZONdt)xo zWzU+8M{LW3C4Y*1ko32izqyw9(Y3WvKb+Wcy+`Lfqn{k}tY7N?TEk5~Z~%7FVeHOr zhfHF0Qtk_WoB<{RtFeY~TZ~7^1U-B@qY~n;4I28Utx%MBM~J4t*322lGyL$=F*Rzi zinMyQZS9h*WN-ldb%DEs_x-T+%Koa=(5M@U%Y($0KV4KQK(0ynhHQW%84~wQ-EN7M z!TqVIiY(Q6R85sF@u9r3eUp@XBJ4V+n;MGWs*G%&UiJ~zO1F-M6b4%p1*}N|0+{Uv-I9(xvWIeO4~gub=RU6D%Pz& z&|UnbK2+lTHRviPk=ZV_y5g)~fKhTrqBCJC({r7)v)&Itt~@ ziGi9Q?&YBK1f~2LtRC+uZ<@p!pK{(=y!pXWPIJmR;tn*8+U%6n{UDV8{Y}PM^n5Zj zDw^f@D+Z#ZOWc?WQcg_nr_C4#A2tA%l%~9_RSA4e(mv_9Jm5uSzog?MUw&KgP=_eO z9DAS5{)$R(?%&(+caScK_uS^MoSzXF(CvM>7P%N=z*^Ck7`$rPr^mxSM+5eU{k+NA zXFpeFBA<^RfB4tVWLWkOOyTlKTx#()h$v^SXF=!Z82iHQoC?cK2_;iML7?XkIpp)@ zd94)dvE%j*xuy`QZ>$BBs;*^HFkgWTm)m>=|Hf96yM3>gOP8LQIYt!$y#OtK4V%xF&kS!`^+UKGPb+oavB14(Y@?Ek(?m<1#k6LQF3Efi3afx6=key6-l1T-0u1=upV|y|6o07~yUv zSys_CznqbWvADsV#D!fct7TZTS0B)9O9}~?_-t_8qt=k~46hPLvd5*EL#t72|v&qF$lLsiHU8CO3>=jHoAGykby!19Ywa4^{7Bs>0T8(t zjQQ9`OOE)^(g#@1!jSNJ*m3GvJEUzbG1t)PbhgohBaTPcmz%?*``v|pirZ;b@rO7C zL;x{0es;VPsZdaGw4t84^(;kQ+4;OT$FI$VVx2hMG z)uy~Hs*wXWP!KxQ+d1n7hWDb^_wtXo{y`yLQ@1y*fh0v8GHiJ+yJ)ivWInSgQ}?TW z_Bu27hf5#D{)JzElbK47Se^8g&uW0EB|IRU10Xp<=a4=|K5liS5eFVY+YvleLeIe0 zF=oueLuSh45AwstQtw8rI$dqeGWcr8jel+hf99KFsWxOd(@t`Yp zFudP^EZ{I#?Cb2#1+bXFnX8Tay_`1|zjF9XGyY6%M$l03!Bjl7bhx-nu#c5JcCRWp zEdFt;N4*|f%HN7&dZEu3C*DO#gc0S_W#P*5d4#qyI#u>ugCPkA_xn<9LrS`)R>z6m z3Aw^Y04tR+_?nF~glvsVQ;rG9S)WH$84X2yW%4tvk{xeW?rFcEHY=j$`YM%?&xze< z<#}pU0y4&o?*_{ot;M31d2<14ETX03YKh5bN>UsG`~ z){NM(J34tkDee7!npKy(gr~wQ!OC8AxIh_&`eB7Y9R)kzjQ8`_kMhmSL%MSv?xIGX zW$iGzkdX-L4T{Y^E1y?ouPMo~D+{!Zz4a;4nmvo(Z!iYEWv(M!a7#xvnb1#R)yRyh8X?O*rg|_~6XT>{3Yh)V%`ze5DuFl8pFp%T!v0E;jOI`auhuvfTNJ zr?yb=KsoX`tK7c@BSHg?gI~4!iE1%+4@%urC8`u zuCBO*)btOJV;`bl%G^e7sp$_Hp-E9$K>0KPo?w;$b}=?S%;mAivRl9Oo12#ssG3S{ zW@)dmUi#d$Czj$_guNXmdXY(K{Xqe@v;sR1OlYzLL%=wG+Ar`k3lj;ld$R^8aF}x(VkR`57`Z& z9l_*<=;;6H3gBv{p~iHp9^s`5m`QJPrW@=+I0YaFJIvFzlV#V;h>6K>m4XYNHo6T0 zqSb$^UCdU(9DF1oMdYxD1D6}jvc1%+o;OxelhdyM(_+h3%*ni&=A_*huiu24(-!ky zTO9~Zb4SX696qnR`_;T23-tBS-u#C-E-AA>{%)MtWgep|omiLB6#ZmDnEsA$L;++@ zDF*M1mZSeJ_G5#jWW!v@Eu(}@E4)*;-pu*DS0La?2x@=R%eh@iA2*Ud0189SGM&yZ z1(<+$3zE_@Q3u@fk81fx`+hg$JH{2rW^c3?mIVZY?RXfsX0!qaRe5ln!pV%fZh)tB z220Z1=)=H|1}VK>x6kY$=KgmG1tV|^6_N=}AM*F^rbKA2~Pl52z z0&1L+!@?t)K;TnCM=w*`>a>Dx_2l=KImG{wao0q zPZt>_>5Id!PlS)saV8OeTIJll^ywKx+Z$mU9(Uiqofv5+Dw2k~z?;GRd2!RJ_(W_^ zgz^F4>z!xStr+K86_=74o7jGYd$4hLu8KR&9q#{npe6VnP+|0<{~|rlMf!i+P`tK; z1VKgfVIabI`0R;nJ6dr2eVFT<#h)H`FO$lJ6*c3}!JMht=f?cIGO_rUu-KM&M#IA; z9c&9AcX9Y`WRm+faFOtg*ZbA%70p*qKw z(jC9Z{tRZobh#0>7REsuTfF3C55OtF;BHUqYX!aaO)c>GAOAdZW|2Q3c?Zl(g!k?d z_AW!AHBKkup^P-XsJFh%nq2D~8~-`Om(U9lf_a)oAncI4J&s*%gQ9h&TM3pvr zV!Hwr6A8Wc`+2XaYyf*;i%W$qI%FlnoD6h93074a{dO?bh3_Hxs*T$I`=tQ)^AE!v z5Gaj5EgQr*3}vUDA!V8sVjU0EM*Xw@Dy{t51|a0G7Ci(DlPRKFYr|l0xUl;Ad&@0| zY4_+7Yh*6Dsklp*@NVGHJi@c&w#d;YnOdfHZDwdYwgbgbawpFB+{8X?o@I4tCEVNi z9%>vA92vQnn*H`aB7cs#_@ijj@sB8qZsjdhM|z&-sG-x9-ts_jBY-f28GBB@QTj?I zF42C)jeBd_>~}KpcCGC@if+~gR3XJv*okPzfBCat+hP!nPLMUuoa=y8ufxwKERAyu zkeYA!(-)6jmGUr`u|f=_b0D}fNrWl ze$y%GBQ~R89{9H}S@mOQ-~SK7MqrG(h;VtFh6+~}xOA?1hw7>0lhT#t3IKE@3a8IqMF;F%3J0x4V{D)4L zR^3o?u{`3yQU_%)LolahBxFXa#_O$l-ww36)ilIJ_M@Y)QR=9(oocsCmJgC-cOsE~ z8kW79CW}Z)vFeDs?5Hw1vlGAdJpSN-A3hBW|C)G1{jP2QjFPdqO^LCZiz&HreZaXo z4b;9G5~oQv@_+!OuhKA(HMhN|yEUj|#9FV3s@&Nypb&&g9whUN`BbO6A-kC+=Zw7a zgh&Ji^BAiec0Tz5M&7}#$x%#9vGVRZA*S0z@!FzruSC+tD7CjU#ux3Wpid+|$p1T6 zY@5Rm&6>ky!I&k3-Ic)wyW(X{tl%|P@2fvLrNJ1INp9?~bNgb|8x9ApKRo^Xg+_tH}CEHnLnwiJ^O(;$c4Yxc;`Q+>EU z4~CP3v}-SVj?Z9BdweqSr+z6*ki&N|>tR0?1YS+B4{NWZ4k~4H8d7R^x3SxPmaFuw zHV0O<5D(iT=f$N+5#a zle?6=`Kr(mXGvVE`6uSHDh(I&IkcZ!mXKE`Bir)gYWf^=06dt4R5-*_9jl}X?AmQ4 zMgj9-(Rg9Oj?vN)XD4qx!Isszi?hJVTOe(}PUOj};-@^qvSX7X(3Jp{OuVM_cKO&KjbZb z`jwx@k&j2s=&Y+}k>fBHaNoy3$1YB&MblGlKQy!4XiYtNCmRqGLL4;%fzAWYX8mYK zg=0SdtQOsx1#qAs@%m6m9-63>EyQa(DS~EVznL^MBkP01F?o4;d>wAAC_`jwq4%CD z)Wpr~CWW|#w>Bo*tc(D7WAo6tSp+g+ZW!$?J??x(#0wCT`O zLHgAVUx*KE+v=MTg8wtwaoZrG`h`{3pWx)hEEH8D4~DX4x%xCykluzN$ptw&#xTKu z&Qf@86FhD=hyN7YeUp&LkQ`iU;TL7dA7zD58l2+v^mGJGjG|!3*aTR!N?$1d_7Da= zI})dH4YBu6oTzFASD;@!SwU@RoSR<81&leEN0w&eaVoozg!-OYo6f5J@rN5mm)tB?g!Tk=u&9HFc|`7X{A&Eb)523GANAcoo0SO@w>e0faR z{P*OB1ejIxu|)*2%7V--rCg{33RKSQ%A z{%25)Qb3&X+SM!0Oz3kLosWjq>luFKgVCs~jZA9`@c)yl60Y;9sc3jfUVo(BRQMih zb+Je{i7>bpZwJi7(T|KT(ut~0+0m^oF0PArTXEjznB|9yNUUsrmTHBk%^k?jkB@m= zQt1NN-%exQ$tI;ep!fqwl6L`icMY*=bMF<1b#XPw0{zzTvtE8^p3jSxlKplcrqN+NHTeVcvFNuP z+GjuyovH`R@6knBK}-nbug^(eJI0HEg1C7Za?Bo98_?;}5HsZ>+Rm=S^qYO%>8#Q) zbPv$6$v}{cYd^=LI98{Q2+bIp?hFd-Kz~!Z>^!kK4T4UP6lm~UxOKC>xx`%P9j+xI z`;P00R6b_cVVDZK8XDAWNc`CY;ZO0Q`=wGxbMp5{Q6DIjO!f(?Ca=$o8y=ZxPQ!0q z8i-SzpHkjUT1_4D=yZxqv!RVyQbl3-)ztX%`8M4M@3`Xop6E&KeCn9Qi9ofvn0MbR z%>g7_Tv3LEWYsK&ZD0tzM>gTRUP@e7T)vCS&Mn}v9^OVuzFM*D#2l-Z+ylWMzMQDf zGKm0-D4cLdn#bX)N)QofYY@g1p#L^u;ufmODZIU4n3ZxauK+sQ5?XUd_N{(2`7F2c zs?>?oJj$8^E*(xrG;7}q$e1DXnDpgEYrtvWA&J%B;dT)0cgx2P@y$eM8lCI)pba;Y zV5IRC@$1uP>J#Geu`fCZ$Men;uOt2kX>S4!W!v|Ux7}%1Nt9(;scfl?ol@F_O4h-| zkYx-ZvdySlk!;CU)>}f>F_y8<6d{C!!3?HsgE96Q%P@ZDQ1^2`@Bew<_ka9;=W%o# z(sW(tb@>M;Z zHtq{ySIwWyWOj}bRI{!vZGG=#bZ`Iw4ijBE$;YSy2!u#di=VGHKoc~fY0>1oQAo5s z;02J$At+u*LV24Y<023ZZ;ZT5O3|TjbO(G|y;8Ex24J(WBnTz$+5wst)~rx8iflR- z#x{ooyiIX)x z29~*81jhQM3lF42oQA#~MrLF2!+l+e;kek#n#g+6;DBXCV5ue1*zi}C4dmu>@COlS z0^HLCL24TQUSY7|YcU8qxpODi!iWp{&$%g+h#2nd_Jqu8{tpsSByt8YIwVb0^Q*7e z)w$fBC{t&YXfHiT-`}xRG)YvfE$K>Q9UeLqHIxfx*l@;d>zIUqR{Vl!JphahvW^^1 zm?7MC5T;S=y<7{I27JybIY}Oulx`GqHJ&y>*FpkXumiV~Py@?qNnkKD(aEqUvcH3@ z3X-HN02hCz&ccDt*8ZB}L7nIzr%xecGr?F0j#F|g+vWl(Ce{Fcb&*S-W1pBoQgr(F z^j%SZ=e{;N+-r}?a(s?3$p$%PLZ7)n3Y!Ps|C`1!TvL00zR|QS;YuZ@AoLAsQ4dCv zuL4cC?ZXj*SqtPh2DzyhCL_U&JJuw*keGO?mPD@TQcvZ^9vh_9M2|e` z3MnJLZDDn4d&1;L008VF5-PVAq1}Hxy&?Is{B&9PyjxMo;nHaqFYjFn%}wtkmiL}cRlM1$q&owodbE+;{J0OhsYt5?_gB0jh@sv!yQnIX#&*7 z_PkvvFf9Jg-7j0H#{@o^<~0^l92SO1A2d1V^uV5QC$1p~+N^x6kB|MdbGztdz)BVU zkFfb_z!A>n3GeqG*-3c`9FwGZmErYmIIhKDZmKG;6nXbqhVF~KR&%PQ-BfSU69Izo zF3loj6uQFyXDpJfK)VP+E+u<;Iw5DisdkChH-*H&@kiqfK?~Xuy>c<~aELL(#5yV0 zBHC2hQcan5e6k~Bau!8ceF{pP8kS@74xn(XI0@O{3LwHN!oUW`#mcYd#iber5H-9h5Sv^A>aEc4Uj)K z^H8l?cxWQ~CIeSK(ziIpPW|k&Pd){w`QLDeg1r2 zqdRC$=7t(NfKD4QpcB}`W10KFSIfRC&*1o*p$K22dh-X&_1|}vE2!m)lQy=GK4`qj zsLko*b z>bQV=(VOwAv$-}_=#QGI*zj=ddBk*gXRu5A5^{OjxLe;uzBwR)-N%*;x}%DuF+Xd% zaG|3IsDU@-6e z>)MR0{Q7rC!!0@HG8cgT#j<)!t;y8KO+j7FR$eDmX@mL~FuI?Vdc9eDTDN*rI z9~Ur}@u+~TalQdsj8dPiKy&2m1S2I|8tFmgv^=@GckU?e!7kaxZRqS$@|{iOXIfi& zOEv4=a(8voyy~I}y{hP-Y{P9DXFmaunNM*t>Z%4pL-x%)B5;iosfxrhkaJ#K^JfuRIH%T zH$$6NhxxgZ2luG_F^w_u=e=VJ{%qMW{@$!qA>VD`T!1vo0Vcs!u_dRtPpBY2od&ax zi2j-?>oxTQqG1cbmf5ac$owu%KoRo1v;1L_tA#q#|Gqsa*~LW&b^XCfqr_;(DYwKs zyVAhx>yqPs?wyb$`~q3jQq0GwFj;PK?i&Kha*S`zRi@;oa9PF*gdvMuhfG+0x@7fSS7%kJIE-po;L z1Kl0`&M3VF=OVNWp6%5$Px(S-7SZZ9>W!|nNxb|cPr1L-F6Y$2E*tKC_=q=bCV*915>|Y#HZ7<<}ym;)=k49t0+lh;FLEIx*^u?mz3Z zIb$5>#FM9N4^J<0zn_Hqk4X`i;ko)dik_vJZ@9y>Fo9P;S`^GBr!9RlB;oX{Fq~{H z8HUVa7S+BfT_KsbH5j(RcvxC2FMOYt9vKJoNRSRSTP;HkB~oZ8ONOiKg8_FtbeF1L z-+4WXtiSp|$=CMT;#8h(Tzs&3EvEBF0BttsyShN%yg4hWVodGIkBwC|`GHP}4Tp-& z9cG!5m@CMh>lkF13Bm;Y?NCtf`JolrB9ZdvoumC-Ls-h2&b1`McaxYItoKTh8*71C zC}~D73lpG;drKj)lkM)oTrxy(FdUb;u?bx5)W5(P8%Jpe@4rBAW@)0#54Q2uS=H2y z20WQGyi<--piUSk-Fy!wOhKX0S{>fsa%9!@G$;6OZ!w$mg;vZc!z7-@zHG&x%oPs} zLv46?X!_8$lH2{f^W!{~VS#8%fqfheF`+j52ovI%7|Cs8%Hql&A-2IgHf*42t1Ii< zwyxKOSV0ead6YLehfhYXN0<2K0xlpN7U;UeaS zkJfI|yn8vEiOZ+qD}-eW{nbG*e|G~jao-u# zG9exwPvl0-PAw43v(3)l3N$2!3H64xL)h69GFJVEpGK3}J3dY*g<&b-Nm3Z?rP9G- za@bWD88BV@_HtdxD6_x6U-engFc*D*hQ229XlZbyZL=TTOzJUb3D|M@1=Lq;E@sw@ z*?H(6mG5qOQmOin6v-HZvyJO10<;;V_2>q12z&MmlrS&eW{&AlGo9GQTcIORmy79r zpqQhbuZEljB+{8R!NClivs{jkGr=4k=r&xn2wKr#&cNpUI~E?8g6%rNrA+miRe{7m zzEUC1+KlC^(5{47_K{Txl|}0MP{W|%7obDGC?1m|2AgbWwtp^tSjyGvJlnXGthAX! z+`@Yo+Fh@$Y!OfJ;C5ce<5(Ghk^UOAnHEfcX_>2lmlxe2eQvD{@2>{Oc;q95NJgcc zdqUb*{UAMW3BxSj4bq!`cj^5C399?>3k+`Wit8l@0h&m7rFb(2nr+{u&&7U*moNN5 zZJggpwfWgS@7l-PCBQ|3-YTF@17_{T{AbJ$H!yc*L7ejXG_aDl3-Yc6`~h2iQfVcB zH!i=vXTw9|b&oZud-u}oxJN7Su5e-3;loY4H+)zhe|s=3KRBIqU$?ZrSRn*b+8X8> z(tmW*21x)LvEieMmB7$(fw3GxdYmf`^j2kr2sO#?Pk&R2+~WS+@r!;iD+l{HWfD;Y zp_^xG<%n#^Gv~HAN~Z0^Obc)@aZ!n+-Pe&7wKa>D)AzzwirfPkIc4Nv$JbBL4<-@l zN-)F)zO=$xd#Z2m=Q5UD?E)v*1-MC+1-Jz`=a;x3VEPP0o`AX`PLBT2SAb0AGUK8z z`CB`M;t&xh_F*fPW$k3xaPX&^ zqMegGFuz;IK@fqW8LPT+5c|LHDBc~H=zC%Hy6L3K%bJC<1)Qwf`TVpyDWz#&OPiVX zVlL)l08sJo6t$uX0p2tFr%VE916Z981AN2!pMP^%#sv`ZC%ODzQ%$oz5Bv6MqjjyO zNyEm(uq=jmQH89b*sy>)KDxTDvwb)eJ-%qA!WZ2q%>Hd z=xPt{!|W%`kWQ78unW)`MOa~4#_Yr~Wq%Kq>187>OHFGDnbbvany+b`aWcUt8Wl5b zi8a{XNw(=#w6Q~42hVu9$jYu~^FzJ5S!NqP_O;e@e9<(h_>xuB@mUQ_+v8+{WJ%@{ zKtunL&Pp-gb00Fgl09GH8)gIN3GYWtqg_Yn)9>;S)3lSyP?3Tq%ib~SA8xpo`dP~Un-(FBafQC4$*thB94w)jd9{m^B! z09hPQ8@Fuyyi>Yk<@tl)eKiX?5P?ONmj%!w_R4j%as7whVK6vvRw?{ZZD!K0ay6Y$ zCnqK$7b}sEAE&ouh4ktxiHgLL%$0R&+LsWCMgm0{MrNA%Q1#k|w61vim&w_M0o=Km zA=o+5E^BV=OwDUiR`Arnx!~isU=cKZ`QUjlLRw=qD<3CoV|w|5wf5VL>5?uW5N98A`bx5?JB9UG1+bMROb^&Eo8*HdoyIR8TYc-TOhJ>}kvf|rk_GH_y6?gkd5=Ye;!4j< zJ%GIfO`)JGv{QK~osZqQBaHZB+=nVni%AImVQAS64T>hau{W6- zaJ40vs&gwcbY5}v^ze9ypUqtU!nb8ZmvK?h1pssovlno4-rXI$?A1Zd3L5Tso{H5% zW#gcbo#R5@t4s49l2S{t^*2M9*0V+#AxI|U9MO>?uf#!RCX|yDnaHort6!Y025vcx z$M;lv$mE_5Z6fV5-SW>&AfWpK!y*U)T^f30>Q1GcR5#oQK>(9Tw-@?Z$Ci2+K0-ex zAqR3ALUB>C22|-;dM=~bO1_44P^%UUVm@FB+5jkM`#piK_|Uex2bL528fbMjav3ef z#iZ?~C%8?Epb2R&X7?vG`j5e(7|1J+r4yLEemhTxq=?&l8X(F^e!%627wx>@8(y@h zVW_xr84opUHy$7Pqc74(7x|Jtvj`GmXvl`ItxKYoAd|<;wlZiECSahdIC?j&tA^z#4+(9q^mTAn5lG^oBTj zCl*V<(VU1e7k&zMkq3O{xN4x-K;YiKe|9g@{ z{!Y9I=riiL=@NFaf!U|gHri0Np_Nh`qfr{0HoS17CZq^1Y;dV4Sb70R0mdk5^z2M+S5+~F7C$Ku{|4(3I{Q^%opqn0hV(0+O-MV_}B8hu5#?sTjkv&DVE6ITDM3bM8mcA2(iJ zmDppz@uIbX&K!k8B}nF4E8#~^%J}AIk6Rl2rewDL(=Q}vatEn_`osflYXBVrAddk^ zfXCeB(~mh`U*WK|f4m>&uxu#kh!(=A{#>wFt=?})Bz?Tholyl%bJgoHKlrgr=0DFp z%&KRtR05Dh`V5iNxoW~qCV{L>+8V%F9{|Ic?$<0uvssz$m_7m;=Gaq$%e2TfQx6kh zx(%-cy_g3%97=UdueE|N*Gc=I!4TK3y@soGAC+rbI+GD>U!zlxNNZNj1W>@#FJ4y> zCi$H3iq?49w{An-{Cc57$3*5$b6n55U=#v~MROG$OYN9D&5LPa)idx&*FPiyN+NKO zR$5l)R!hQ&duL&wb6YA_ITU-S9;t|wtwe|@3SgRy?<957<#XIR7m93^hROw1NSq8on_WvY*I2xID?yLWvc3{uHwH48HN&&G%0+(VG94!?2dByuN!=XK zD4>WYA7->D8froaY zNokg&d0{CrFG$Syr}b5`y#VZZsfmvd)Fw;UCwSUft|4Z~>~2i984800#Gwd4V;0N^ z;a8u(?(?9*^f*!&m88^Hxb(FhM|xnQsEy3-Y%I7!?>YgC0Ewy49QO*>P}y8$gUPuR z=LaXCxh-)8Bok`8YO2ivo9q|Com~y0~COI3aJ5uw|&!ujn*-c4&B1x7xE%TdW zM7TQsjkbURXOjdnC|}UG)j*=Mq?O|kha-?>Ju2UjgcAXhV^OU!Jl>F|#{k_u@)E~a z*tMht5nq(Lgjk{;RWyhkQnSbkxq!rUkv3hv{K;jLy5t;)mtkdOvD%(Yil6l;z#cDALRkEWh4(GpuI8 zG)LCC8Po!kI$3~K0Jw=9a%@^|N55R{0eIPNbuc7M^*EuYC+uX{+iKqI8H+a%1Y?hxhP@SAgv z6T%-g3;xZMrDDm%xv{~{H-Jw5rsy9Vx*nH3%r?8Y6jarx8P~GU)gHVf1IHxsnMD8y zgX}$Ho{bcRn=lfG8bEQav}ls9dXO*dMp||Y&A854+hTUH6ltB=IxF7^ZE1ZmF5G<> zVP}^>1HgXGNRs7j3mS4uB;9pLODmd6Zl9P>A8Deb6cv*Ul?e)I(bw$JmCgYBdLiHx zr*;kYKXZ0tAeRREh9`5hfNvtkRT)2E3bsee!N za+1JF=eUE+B}8Z*X_?!nqUNN1Fa=7L7dJ%RBK0+@gE?ks-oo%Hpue zHBPuNpoxuB!b>_qSMSlyC$FmoWlSUZ1t{5lap@gNLs8su_i5M9JvnYHD`ae3)^jB8 zms$9?ngB?xMSljs2~$5D*qO^lyqh+}pD%wk1CZ9ZI`oc2K<$EBk`~}NMD)c9b_&_7 zR4yWy%e*|ZWt8`1v4wHeFuf$Q&nWJVL&X>d=}c}hf}7enef=O=Y?L&7JKk~te-)Ac zjuT5Fr+vqL7=Kxk+efxvArW$2qeh3QbIajP0$N%mCwfQh3ddBBblyfS$k04w-qSMf z<~U5eF@3=7vEzL>x9qq4bE%`lyqdU7*mY&&hUWT_ntM{sWF)%mzTR}cv;C}fqtV!K#V@64IxL|8fExvLwq~>$} zZfMIFoDChva>ypZ>60OMR6#x0!N6qMG@M!U-Ezg*F=QHn?tw14d3Kj|Ok{}G3DJX2 z^3ibLUxr;Bum|KdP%`Nhw004s5s+V(^2_?8beXrH=@8-#fT^c{2c~;a{hW>@sdh6M z1nrs&IF+cTxHR|i2k=u@iIr^6@ByXyy44XU!Drc~LNx}PS`)rj5oTz-w?A$Q+IQtu zi1ycuKag`4?#>haVr72s6oRgF@7~9GV)5`cbmJcvuAlX9G4GlUKUns1Q=r54#_+AO zS~<*|^zy#*y6Q^A%*?EG@8Okmb!KiD71}*FUAK-qkC~%zbKwNRk0JaarH`e*)D%>o z_808C;_UmDwNe64vLRsV=`*pXRO|DZK5;!|0un7n^c~YE^|EXqV)AnP!d>e#_eANi zp@!H&T4bSChWqo&75up3Cv2kf^rx{|^*{ksvyWnYP^@&c}TP%ELA@<0zW3j@7N%!iNPVKgp zV)6Nl;5Xd$uDfdcmh~TxHS}-Uv~PV`J8ydWVtwT+JiT~jeHjOcs`)4sfU50}Pn#E8 z!!Y-->mP4Q9E;61KNjn_eCS&2;WiGRB%3L2xzHv*$SCgIvg$s1WMua7RNx2rGMnK) z8PI#7m+O!I$9wHfhMfFWO@_;3f&=qM*za)@pQLC;5c5IjpOCxy0+h3-q-e1s|k zD@#;vxyUx!CBZMzp=0M+Z*=6IdPhL?Vq~LC>cB^%yzx#w2O$_FEVEt^r7Y7SW^naN zK?vVAIpK@pcRgkClI_j8Folxiiz?Z)F6edCh#&$tbsc;SY}mNUN80Il<@?=9llOaz zi)2+kU!r{TGE_^{{!)806J59BzqCWV=KJ~zp^eRGn!ZS-Kxo;N3PcO6!4 zCnXzc&t5K+UVv)%7s@fzKUF3Dnc`jpcIMnbZL+6pY!2ZO~69iLl{DS@ohad1XfYLbqhisxOh z)}3{3exk$?J{HZZ-J)oTIGxHsoIZKau+CBMrZgcR$8gy*Muxf@k1jk?g*Nvrs0zis zU=?S)x!ASjqKCIO?_(ccUm@A(W>QMfr}3g^tzd(BUt$Cv)1QrLr+nMkUUfSWO%1@+!+-Nv;&}Yby4HF8UB1X9I10>F7;AzjOx;CvMd@iH%{j$kfk> z$GL@&3%rlnnCHr8+}I+lz}R>pk~Xv_{-mtK+pvH)9u7AtHA_Wjw^HDzl7qpSXA!?C zf)Q?-Od=}fVeZrS8Vs@eu==!Dw^g-IwK2Azl!@d?#wS;Z`3OIE&cZtfj{JBFqHUeT znAGQE(-Sf0&OLv)P#9kTdWSuAbRY-2F*Di;tunvv+bz%QeZ>FXu0otO^x$2{UIFy8 z+G|{C;%nx0*f9hvb&E$vCc4_P2`$>oZya`P?`V6L@BE2VqqZw2eJLm^pudZ`S4xP6 z-`DCuiSRyB;r=Ms{LIu`;M~fgXW#uSvlEBw8pfY?L*g$pUfJjw9Juv3SeJtL1 zNLOS7RU&y-NJMYE!bYa>P!N@fQPpGzb<8@Cy9gwsZiV>0c+i=6>&UK2&#BA`11zuD zfkae;fbLlEQ>Ve{g0Y`bDK1uTWFsEl7wz0w_DnP{{33ggNDt6)FUoe9NxCaeZm&`P z^3dGSMcOc*dUIYTiRakNQo==#d})bB!>feMJU6r^Y2xMAB;%g9f(kC~cZRKD(A-H< z&$5;FM16d`T6uta)9nv~Pt5OLOHR~2jo%Z^yclLRT9y;>r&e&lcD)&Qm+VEE{DDP4A zKOB9-!9>(=6uVPRKF(zN3IkE`4W4lR`R$uS9juX8(Hw2ZyOLK z?uxAWmuZb%^gbf2j;SyQ`sA3>8v?s`vY|SFmo9fK_T(}<)wn9|ROm*h9$C>g0%V>( z`?XWXlg*I(L^M;{#-eL?EzE22Y;=0pwR<(O3~0**{;mJNZFc80tC zPq{foj#zkxraSgMIvZYbLa1eHw+zhabq6mGKfDTV@lWr8MM3`QTmES8l%e2*ovVN+ z2z&NXH8I^Wc7nJay~)Bn+Q87dN&f zCY1!ltX8R^>QuTA_qc(TrbXo2rc1K6UTpYc$dAv(ej%HMFP;xN=N0r>%9!Y^J2+*h zSoinCWqhC9Qq`(yY$~|&hrd=*P&{WSGk!i|OI)YbfU&LRZ?}tOG6_`IV)Ei2{+G%G z3B*tJvwkx%Vh7jn`NFn^0XF>mFZhT5t-H4H&OA|(S5)PdUb;>P(wp}CxP*{n|MpHP zPT1`n#`jAPN4_2PoVI+RJNk|*aGx+M?1TdxRkyZBt0G>U<;AZA6DM#W)t6es#^lz% zt9RYAQ$MS{0&UBhmbX-0@Y(dV7D2Y*UBn)FbbI`l>-U51gP(%O*Z0$tg$NLLaItC8 ze;ko#+Y+|7|91GCwiO|Tfd8w)y*k-D*|lcnL@~;&*%>$K!hFF});V$_(kJqZ==Jdw zZCu5HIR=HcAWQek6zL~F^I?C`@Z_Gm3(93a_sm;1YBg`xqPsm+bI?!|MQdPQI{Ce4 z?+zR}GO$HMlXu5S4d(c#Ej*FmRq}Ym=YGaSIoa4H-17_;iO_w5d)B~xwYK=5rUh5( zJ&%lC2+VreY^V29RbDg6<6f!DH;h9mHq821?8hxtBqqPHxjE*vS$DR?#|Ss$`i{{% zBlr0mgK*Z#?(V($JZFUe(x9Uj@t9r7vc~ShYg?=wS4`IhmO2bJx_G?y>5{^HyH(vt zvZR5yVd6WcY+@QJkX7)H<25TzKUU6-D# zGN1Kz^IX%#lCn_QeXWgY{Sv!it6nB6zUF<!_qddS4)suO9xmboZp^ zb^KRp3iHi3kGqR|8^O%RYuUYAb1?U978*Y=iin$4_-spoeh$srjdF^Jk>G8e?qalG z3&vg8+KPel^KH9En7zqd^`1#xX{ag=vxW^1cKBv>di!tQc~`P!XUC_f;!#{DEQ)2< z$^OAEYUIAHE2q8sY+Irz7kBNXy;qQ_Ny+!bhej!dk$m8xD)0OpH2Aj7TQ&7i?hh>) zB*2wD&7%)ynjrNT#p9~kV%fbBi>X2R9)-DW=T(n%9cY}r>o&K6@1~+jUG2@HY4mX9 zoG$ksY(I7Ey)v~7R}BUadU2MLM#G)P#NF&qZ$NpQT|K5W;+1q!!G+cTrIObmX4slN ztK}ECi9Q%m%@+OAD_1(Vi2qXceFVKfEmHNbXM4_g{lJ~BshyIYHmbrG0XH;Y=Jp}3 z=4ujE#Ret#+G9pNlS10kMDD^1A;G8drkj{(_6>*4t=VsY7c-_S^rctE+Ga;G2k3~$ zIt|Z1U8#Qkm1-6-G*sVvrB(Fog_;=^?~B_-?%lNPItSqew>d`YqZwzM;~tz?DKE!E z%Gd&00&ccV8pQv15jw5V>lhKwR2NiS?QyabYfy9>RwN-Srad})HEDOZnvaQewq!&2 zrM?@A*obZUQbL{Lv#`))Kh0AuZJQIc&ChHlcbya3Y4?3ufvfgx-A5J?BR%`+tUGiI z#Vd`=r52gH$JkJ_=d~M6{0BS34L40+X2gCzN^W6UZTcA}PB|6;kLny_J~a#_Met0; zR(O?|j~kC}ls3?v)!Jjr`N(GQ=y|Ly8L3)_cHiJm$`?Vm5!&yCA((?c{NRX=>!U9U|fa{j=3FzWn!hB z16e^BU|pme`m07{&YCWn0vE;bn&Ybv^0!S*x}rnE9@BRNV_Mi(_?< z+dKV=x;DaT1*t8w z8Ii9sMWOcR)TmqOvIAYLH1^pdvkW6`wjE+WdfdiGeLQWH!}U_X{`pHfVx?Ep& z9c3Oq6ed3ybutqEsxAL$j6&eAe8>g!lW=3@pDzx-@-akRPn^Mz#MTLDk}(avRY zey)&#W!s-d1BXpG>NvCiV|}qT!OLSw2D9~-owvnm+iv=qnEjS5lx<3TzhQm%t&*eb z5!CT{H6yd%5!8ZX)xJfzQ*&UCSqxL$Et zG``Yk2-R3yHw+LJlKQ;D*SGT`?NegU=AT6=uFUVb5s+Bj)3!@fj7uB|>Y>u}ztcaA zr>bu+E)3V>zx*@=I5MhM^rf<%2v1K6r|0@+ zeC;2>N*l!)4u0o`*N@B5un{K^_htK~lC{*yYzkR9)JO86lxQ+a*4mi(#9>>EgIwiV|{pCN)A8}Ua zAe{HN%RlV&&SQCD+AC!3J6=N1ms6txcp)U@qi@s9iv`a>7H(@i^Kh6QHH^*l9Hz%q ztgvE#P^Cq-_$0I(sOb#`BwaGM(3*}bbz=(mW7<F6n!~hPkoTUdG8%Mh}zD}^1qaPTimJrzf_3BkN=p>-J|NW@bCfg;Veku_HDL+ z{3}QOI|}&Nx#;loao<1u^`>R*1HN-9kPhVfjtgkuz%ci>J{rKD4c=%|34H$f0Sr2E zap~kgP1AE+wOVz|GmPN!)<>C(gfC?-S30w`T8*o@@r<02}To27v_38V3ED~ z-dq&a*^#ZPDkT6yQGPq?JE84zTe)e?nUmcf23WpdZ=`($gsb!=Km*%dA-TAHGrhhn z8+eD@oc;61!(+GBuXil=psMZ>hkAj>c+G=-(GhMs-&!?GOUlj&v|LT+CZoB_mY1pW zbSgvzBX&+4-te+=_0!DDZ1s$+U)HC!J?@M4f#S)RlCf-vq?7~D!tqyrNog!U-`k6C zylFjOxY;UIDc5|dFk;U6_3OT{%>)vDba<3#&N+JR_lDHKhAPCcq6fPPv(JNX@%yli z@L2(dgz7l4U*C4qpWujve(8Vf8Ezxwf+}c!tzDY$z7~1LEZhA~7Q`N00eoD8o~2XG z@jb9=nX}pTmCsKan;AzYv_Mphsf$q{Af?;zP1J)h*Che&`fJN%B-dNva3jgT-If12 zl3bG^s?3^>TQ51J%ilS%{yguxKmIE(@{f{(h}Xi@&#!%(e}3}gso<$nJI7!<6V+OL zR$dqXPP<@dyQ_%s`~|O(U&W4p)572tF8yyl1V~?iFm!_W|EPA;%+IV^6-aYEC$QdC zLZ5Db24ejZNu;iB<8$CTXqp&D9(UW_U2zPVUkJlrka2k&67f6g)q6L;{aFs(H!{R# zHs4BoR|PQJ%<2f{&7na>MRW<*em~st+d-HFl9qQ8-qU^1*aP-;?w5zKuj$P{l&Udq zUf#$&95@A0e_1H&sQeN`?STKPN`;fIbd?dL=dE;fl7{Af=V30q`Ld;|N11k2?Z(5I zal5w>D9>e7f(3AVK&8MC#VM8)&6)izpt`>VbevbwV6AkZ8vgubsRz`nQFHxm9E;5Z zTQiR^E0)nK$M4bcKk~`FVL3Rl- z6}Y9e`~fDz0?f3QV-A~jz!HMwZefB>)5#0RQZviB}B?k5b*eZ|&Twh~5eV;!~t1WC1o#^b=ZYKZt zf*pJodoW(E{)DRdun!M8q6*Sm+c`>>&Z~nAF=tm_1Hp&*g>k|7BtRscU10^F1|5R(8eXG3nM5!2T{-73AJ-Hot{X ze3UHOphvD1PlCYa9Yg@ejWOnydpCYscC9D|%u;(mA8<)>SMNX*n;KsyoSg!dfDT?= zl0;NWP=3j6RWDt{a=pNBuds_N7yQM1H$JqvE^%EuA zw)qeIV11hx?zywsEsF0@SgJ6*6Dw~`c^r6o-3Yc{0X_xw%Ye->*O}DpF1C;)_RCU4 z+0BnrdOMHJ+U!p<`SNWi{dM58o<9^gQRzA&$D zv=&re6W<5YhvT_@(C3sO7iT+yNr^Zd8h`2IAM+*B+52Q7H8hy7G=`up(ujnJE$jd3 z!fvm`iyqqMs*?F=T2L!oZ-Iq#FyzJhq%%bJ^w)agLV_N9?}IcH_>^iVyTtJjdh+>p zxxf3R(mv?^`;iyl4h4NVs^Qh?L#8X0{#ptak98!VCe2^acMH}ND`b} z8rc6=GlzCLe>_v4wfZ_9Pv!XWDAzY6vHzyTk^p1pP0rgH5Zf7orV^=Q2*pw9dEZSRnt zf>4dCMo1=HtLKklD4|?F|EA85nBeS!}Df5O9 z71FhAl;C%wcm+4}8f{qSq-ELkrx-=HnbA~pGb*M~bFA&e(v(;)RbjjabL`j-#aDdW zyf$E_-z~=pnauwsT&TqgLh}`HYxk1yP^DxQiD>EpyqhrYo}(#2n4SUs3sJP)VVBU( zurr1e-7EWVo|3RY{KOUJbl`g>CAx>zSXz>4=-$)B#I{1hSUw5|NZrjQ5O7va7(YE@ znxcf47S+$~sUpmxUfnjRs;xrUQC=BQUYD3Hg;ow*e&b!*byC8>5%McnOz~?kPQyMm z^$h&Z!plg;;F)EGOg8ZSu)-zVx2R6l_U+Q+u|~DgE|qIJpg@b@4H5p#baqvmm}j)i zH4$R&xWX%V*>1&TkFxQBfEh{UzP*$%F|)}sDX2gCbADA>Q}NIfSz|(o87t51I+VBZ zOgoeZwHI->Y)-&F%QM3&%E2`bZTwE#lqjOz>H6qaMwwb7yv1(m@Xn3`wEzCDA?Ub~ z+^Co1GCuV8^>(Zn69{Ikvky+h1z78UheqG-y!`d{p=V2ss`*qpf!B;T_0??=n7rX0 zcj4qEqvloxwV`KYY-{VfCn{3|m%ZUKSLpYJw8m0oD0}GI$tVHn)i{vgb^EVwcnG(W z=$0T6=VsnAx1pkw#{zx%qk_iiE!H0ATd%#pr+g9IBw7H`sKFRl>hekQQ6w>r-!E6C z^c7FjcQ74P${`zvk_A)ucGl+82fkYeN7r7GEEl#c-c8{%(X9_rCW#^%LvW`VG6FIr zaWeV6=k>h}1rC@Gkmm~#57={*)G{8C;po_ zyP8}>8T#8toe?^#He_ure-MtgdA0L<^upP;q_GKvOZWFWp&j$L7=O#0q-@|&(DM% zfi-F&srbS0uDm9Ng0rkJ(y3{Ql7FgzyB3@!(`BCI@YW1ZPc3w`^|doU1@VE5K&Blu zFt8Wlegs!b=2`Ri&bVoZ<=f`AW)^Iev1GZyySH#9`0dBO5}tmiQ*o9~Djs_IPCCgdGWY5TKWknKWbriwg;<*|L%TWS zf_b~#<4+Yd9({peYm8}S@-_v9bm9Yx>RA4FZ+KGAI%;PS!Xf0^yQM6_YK%YH?DcI( zSZp4z-i>ar=v+2!BfE!G+&J)VddUN`!rHJ@jqhqVko3>3!#9z5i}cCR=$j2%?`svd zlONksq?E5p9)H@T6=fmfkeGu=WrYv3T?UJOQpUU_qatC4i>*vQ1PH3-YX9hrv!zIH zMReZFuLMa9uJvwG=}AMv zFp7ntDnp&JTUWQ?2~NtpV=HpUp_VWQ`~8jivXaC-Kmp1e+FZ-4U5jE*Ig6#{1}_U}K_ zG`XKzuo6b zY-y{}^<*Z&%@d;^!SdL1mjW7^N@vguE;90>ppMp3?ezjX(8(qlLXubZnE0dZV~Pl7 zTjM6}4vp1DYyCxV3Y)H3f&|ENvmI(w{+ z@ojURj2Buosj4qXx7NWAO&6Czm&ZWxw+cHLw&!KWQS@c|*{uh>^mYz;mdX=e3;v+{ z-wpik^%s*ee%`h%Y3#dAaL6HV9r8uV&pUHqWg+g$Xbn!u1@s>BcUk#SWIW|V;iPk& z!{xds2mbV_*yC_>C@d(9-l_kgA_I!jc;qV=Xg!a8smgmAA0k~G`19x<%jYDiaw^K~ z#9++#vcuRLacN8hc@EjV^4DHnJ!$Aza;Vug^9)nUy^1vUMLVH#hT2hTK9k?_^O(HF zfXAtVm8CMgDWoX$xeE-t8xjM|^R4v^3jRu>N_cw542u@yPV5JnPX|NKdD5emm%;Q- z;mbTMF%2hSGvURZ`7ByZ2N%gHOh_<3@PuR_>zSJv$oFQ|7)$F|}F5&(=%Clj0m##%y;-%CUk-+^e=j?s_! zYk$$bROvjmVrdLP3|tgy*XQ&Fp??#-z2zp^}0eF`_9F9m;szORjxn2ccA z>4jpQ^j-`Hums5WDX19@Ss$2Lu?DIvUlxH|Q4rhC))-Y_*-PTkVX_wS&?t?S9()Lr z!sxm?aK-l|_-ZbmnJAg-4XEWsc}r65&p~0Glh;z|C((bRCK1mgYnyNgnbF7bh3az| z1A?8Vyz{n~rm5fv2`6d@u4 z(nV<^Bnm3hks?Tof+#H@Xy{3{8xW8Zr7A6=^cF)2orppZ5a}ckAW9PwLJuV&$+yt` z?DM>1yx$n-@E?qfu#&abTyx&{^}A+1bkPTw>7F15ssgiRM#t>m7#o0&_>XvE5Y5tO zX}n*M%626ZE8%*IJN${({_b=^kx?onfBdRPLU^bTv^#Gt!QhT-`hK|c)Wp$K3D!X0 z(eZrCJ&F$e14Au5Y?)GVTQkn)O&)Vg?H$7HKnGFhlr*F?UU^MfYE|S#xbpC^@z!h^ zE2>I+bE`JQ3%b6^EV+H<#%wd17!}U&hrG z1m-gMCSM6g#KO&}0w;50Vw#q{(dhX?ABM)ujouOPdBQ1D ze*3wa*A?+T-z#4hro5QwIBe>MY!hB9C$HtLiEQ{5=Q-)*+vg1DIuXaiE8G$UMWDC( zV3q~Ipk-GXJ5YhaJ8=?M(J+3uItSybx{5}SN4~M_ojxC#)u9SeMh3@M0cTy!+orG9 zR;6C3I2ce}J+-M)Rr7EK%%0%OL>np?NX<2M}*QikG?7PzcVzU2Fo2Xb<00d4S>eA2-Sp4gs0@1rSEgn%` zzmNMNSLy}epTLs-DdpuW0kM7M@5MsDYCn}t|GqFl;6Kfn|3<<^$$Viz*I~dg(3tj5 z*_olY*LTM?>0OTX=LyWv!KriqG+aat(WA84NzY!Uz(0Nqog+oHtAF~Ye!Lmkt&P}z4{srTZlHjn34or#i$%}W@_{K z62rRGxl8lZ`p{)f`5_{w7UWB@T0Rw-ls7!(bo5BL(VVsLc4Mrvj`>3KH_dRw0ST;9 zK;B>0-hQ;%X4`;jkdnuW+<~AE6@vSa4&lp|@&tMY#Ch*xygq+SE2(@l%VmnBo%oaX zY;eVsD&AP14N^K`cYo_Lj0JoD;7Z+G^vih0`WzCVnkm@Wy|`*y0T&xQS_bzz$7v~T zl|dic>MmQRi|1RITf1p@t%1fT-Z|={WYzFCsP;j;g2B+m_*}t# zxSfyn#lqTI0X;;bS^PqZg$^!pL3&WBnPpvY(Xhj^5cAUPt39UCK511XI_YQ;hNjeS zYG>@US&PHvI=zcE7`S%#{E6kQ_d*?26>%vZ&Z-Q`GHwdun*bANxy!W13X(>76$v+RyJUhC#gM3Zx={@6X zqA)=N5c`(mwDoESQk zSlG3)K%2Opiy+gMInk;kdSy?VxsG!;(}vL4Sdu1dVN<1l z|8B>tVlxN%2&c2xgXn5ilJab@QadkV^8 zrX%-s$ppKXX>Ui7x>NP^faC{LU~zMZc%O16oH(=c!D~gA4htI|@(~|W)|Kz7va&f; z8Fh^U1V?7_vI+5;h()%H>LI%>u&e{Vtrsq0opM{+>cl%2d@T5Emi#WJMfV^vB7W_< zN+9rD{kPq<2PFUcJnHd&(T`Hs*!{<7(3QDA2Nmt`2b?JHm^v=Fknp9zEEY~!)@u5G zT1Bj}BWYR62{)&a*3BZDoSRgSO&Vuk)w#ET zX?9}!x(Y;f{+h>eq7 z!r^I774n0i;c((V z&$AVd?fBTr6}XvFvbWoq21bCVMFCb2&SwFT7h(Ot2cQb*6%`*8L_lf!VcRp#L~N;I z+gAC(nu-vhJ1d)TVScBJOz`4hn3kNSbZZr#q@4i8tK-#6Y(-}0-g-WOfnR6TE#j8) zfo0|;#ahvcxFI1zSL^2KzeZb;sJwRhI#Z^yidWk3GEUbAR=V8w5d(+Ip z&t#pBtn9=5KCnj9FV?nQ(+kIAn!FQCVfU}-s(?6Z42gj|D+b~w7Q>}azvg=gX1ALI z*C%IC2y#eEom`d0G{?h=Gq9mSxGg-}n9@2tewpu0^3SNq_Wu=12x!y4Oi+Ppk0mHc ztAxJPtY#kE>$U2g(lof_@|JQ>pgBveKr1rI*Ku+&EM18RCF-ST7`kU4^O zV$!iEDRJpwqQ$2L9)7|U#~xkgJZIqp@ufLFFj@k!ij%Th!sNVWkGKBS_(aCix&_Zi z0mQGvS#jZT%HZHNPm#|*@1{PY=oT6qoX-@^Ge$(hObetKIB#>x`^_4JE5-S8Vrn}x zO>SYo^C8$?vAkFFDdff`HI*TM+p4xTqLZ_|a40&;H_bdX#tl2fsGPXjs8CM7><1a* zJX}eNO*6=!gzKewM$5{q#jX5I<9xw)n+XA>As`2qXzOcd_GcYXL1TrHb5gU% zj-_sO)_DMGcGy7Hd3li5#L19I2IPX%4*$BIbKr!;e50nyh_l%3R1S6c2ENxcogKp4PM6^96Zu&pDr~M&V0N+IuHH$Vgg)O@^&!{ZyWD zLdnPmxjOU*Q;W7ix(4A{L;haT&JIdc2bHuEsXhEf5(yJocpIsF#@;am|Y zweGB^<13ep3m2xxYR(9CNrAJ>YT)$bbWM1nqepJrGimGf|1kC?X=YGds9WF8N3&{_ zphjc;7@G`ByTovoMFH4?Q($v)*_mNgc))=62Qk~6^WM>I ztoXGQqIvvnCQQ)XJExtp>L9DG*fGdt7>qa5vWK6yr>^C6w3kLC{~5^b5z#{yD`vN+ ztzmsR1@W4h_}j)58470MO2r{y$Z!GeblN;DOVV28*yN|Ypx*TQnp~3RVSTDfpJ(i9 ze>{4$f@;RGKLGV2r4gf(R6DH;%5pvBK|*xazMLtwT0xMkwV3&E6)6|% zrvA+%Dm3zU>=dXhA!aW=yI_JaJ(Ku>;iPQf-0GCH`e)X1yqc`#UY9%W@@h)fr8@NX zD*h$7F6VAd?QHY!)SqVYv#TT<`@`MKJb#*+!xOD0reX~ei&=KiTXR$LN$%O)g= zELaM_2y1YV;Emy&y*Ew^ z>w4ZTEfup#>({F(v97iMgx7Bp(aA4O-aPhqqi2ocPnMo21w0rLQR`Z?X!B{kgb%@1 z-aw}AZ?PzNjW;!}ou9C2{EEL}Fcn(*9t*T>VI$_K0vzyw|KR zA4Q6YuH#?L<6~=`pbYXeu2h&NF|SQX7I&iiO;;Tw%53`#PaleG!% zijM7E&!XdO@Ln>_6-x?rVsuiubGMpn9{P*Y{fTTcSiS+p#R#`7z z)_QD@)ApDQW8q;>^urxj4$JCN$SdwyUi;e-4e^bLnus#{47?06`Tk`qsM}@ylA>n0-K)g$3&-mncmRG4`42-IFQ-*4tz%`?SAvWI_{uKvvUYp%b z!5e1@)WsT45of2?CbI91NKTM^>(C+l^;_^Rjfb3u>yMQPozgq+XXFNLk2|>3131#o zWJZ9UJVoRq#uK~!j48uvIk2AG3h)soT5zAmxu=hfL{(maJRY?;85v+W>VSG|JqY!5 z;K5c7ytTn}nAqpns4%GOa=61=;#g7kg3T4V6VCAlt#6r5GP^cwg4&bwXw&U;?@214 zVf>ZIrOy;KXXm;?_f9f@tt0`SvsbI>J#$X*-$CmS^L{d?v0e=gTcD8Uv$kWBIjj#je$ z)j4-JQ2HMEa5n(5A0VpIbEtN592@IG#YSGTEF=;H>RvQDfdN{J!@R(!y15WZg4v?0OaaiHJ)|vY!JS&za+x- zO@l^DOQCVW)=M)7l*fSiE!Bj*j zw(;%sJ|T7ZZCgt&L8G%|C#!>b+#M7>biGg5nAS?1gU6Cc8^4eQoq#__e!meE$cB+? zxxm(KYD$JtZ94Y?T({R@7J-DUhZoKP4 zLPV{aY7cM`Z~ycl2mT9sxqSC$m?xq}hH_EKJ5RRrCHaQ5;ynwY`g`%!0z+&uoAQFk`FsHn^~?^iD-;OWt8nE;tvZubc8=7@(7RGuX4TN^(ngp(9X zwIxAUpDR9uIp%9+XY)=&@IF1Sb12GQ1&mpb;NN`5!)@?odhD|LGJwrLGVMtB?3nPT zAAkd)VUdET|3-$D?NS~8N*=5f8u6o}4kS&JKn-#W9$;J@VaQ>D-yqF^ z>5-95r>951Q(DU$wCk5Mek@!BGQ}p7L%AXM3B6`i$Ti2yr+CcgGJ{h(M}^+otoh9C zE_L|E*HQ-b`W?KFf|xK!z*jz|pa-2Dxio>3kya7=bx*ttE&kt#W|7VIPp`_OFDg;W zd=Po@p2#w(Ur=DiDCS|LL;cwnaVx#VQ=N*8C9D8WJz4>VbleGCper5+ol zym|!l>$JOKxAD5b1?wwzq;2e<^(J)qQ+zRUMrzM?JfKx1)Kuy~XGbq>bFvFE_P+pl zzYp_bee!>x&h4qhkAL9h&Wry7Dpmil2lEIE?a%t0re= z!aha|O;sVgYZEZn15C#>alt{!+IQJML6g)XWid@lzoRS61ztn77uh%v)lDUIfG$ek z@qu=5pqP_$ls5Y?f!3`BLTlz}lRsQ}V8)=n4KFEVb^2f+Psv%sXO6Ao&OuyW$%Ayf z2~U>h@am;N83^4&2(z*r^{Hu%%r2H{Mv&qQ>9>V83n^N8W8bJ&Rir@V@(pO3153F4 zD}9MhCGdJ}ype}NsJVbAD%-VxI^N?T8jYDNI30CMFqKm<8W zN((&x`^B-|g>#?g^(hw`#6g@c%#?)ov!a!6meL-N%%vYt*)>}wrzWfkf;G^9BfjJQ zgp-+zuM<{XgJwUiIMmoO{U`F)r}_wZ?b{&^W1P9N`t?2$UpVd?jUu4b5euz%#O4e7 zZi1BdbS+#!NT#3ybdYP#cGB5F-@d&V*_a!37a2<_s!3RH0>@>f-@ze6Zho_5*I*Ln zX}i`5T=@kDEPkP?YRVd>SU*oqRuTFxggpZ09j=P2VQL7(HkV6>v)AfVIZ$nxoCJ?&c(mR(~0m z0}Y#=yc%1_c66cGnO`v9>g~N3{gJw3>>r{v3+-OWx6VjiFP>jDb@3F{s)a*$saZ)` z@&d-@o{CiRu20*K%X-h=7WmMqM9((X4eN(}(rKZ#h@OPF(dgFuz4dK{rZm5J#}Ag$ zVG{Juf@LWti6ew#jogW<$u+c(lih|=YP7X6Rg=%hDFEj-Xd3dkRMU8Wps6C-{-wHQ zMr6BbVL~?(a-h}L!E#Id>Cs4(_^FksNATJ2ieXQea}^D$H=9nr%HV%T+hn&5tcGLe zC+J5vcU>Le&Qm9e3uAJxt6k@(_j-TH1BIxjXBQBcknkT#gf9gqYY?(1owVGzC3T@q zkWHSig9Ku0!@B)+LrIKpPaY|r8}V3WLbqU(l^OvYg%A~A@tU+kK`xE3zH=f-<{Ojt z=|@CLD8+2r`0`RikaA(|%W8I`{Q!g2!LH-b!tYettLfiitv^7YRG(a4Sk*aAm$Kqu z^4pQl;7*kb&q?pKZ@Shl^~sv@l0Br6>y7FAL{Y2WHMDgB)bY*Edv+1nhztTI2z3xc zb-<#$pUSg;sIK*%3)ANqNeveMAy2YU*2v-%9p+l$%bYo*AzbGLQD?1 z$A)IQ&gkE?8@}TlV>$;t5`nqejrw!M0pvK-xP)OXxSaLpI%1>{3yoXtc+L`oX8ZF| zXhOD-5?2b+<+$3vI$5~V7OU-scF4X%@iblL(Yuy^mRoTMk?DQKwCi(W+>Up|4--8o zaaOC#<)yr$CjP;!THfF2*#*aq=ip}-&PVnpaM34d{J!}n@=8>ML|`wENnQ97OyC5< zPa!P0FY7hB8Ic_N<4eMH>em|unTLgp&yH-~8q3FYsDH~Gx{G&Ptc?6fzgflXq@De< z;gBL8>09Y#-H9d&Vq(Oj^8&4tvxEWAUc0= z!MvL$GZOfp*33Hyh-nk%xyba@e((Uhi5Iq89Q<6H$fKpq^gB6yZe( zYv?hPPQ{$uqR-DrA6R}kud3!0Q2Z%;fnOURm7!9)re~!&#{caH`=BFMo#!a}q=>XT zQzGNoqTtO?5&@EV2TMoKZxy@SVe>566p-Ko^?0D6zvZ1t&TU?9DM9_>v+xN@9if}F z(y@n<#h6cBcE2)bZPLi4=Y^WSbOl+XmOmNS&Ss~^a+XQ)j=UDOuSi1AfJfk>J$F6o zN2ACJ8)y~wIMV(rM#C@?P8{0C-GDhG+M9dkmMK^sv9cb>X(F7B;~LtLXTs;_cV}@@ zzQ~R?*k)`++J7d5eGj`Fbk-JAF+*sylBNztx2Kq-)A+wM5k90JDd4FZ@{-&h#XDbD zb$k+!qANlNA5C`gF4dnG zbKGz&l2b8j=}kZeUpu7fm2rI^<_{zwH4851rhN6EN_RYcfLM_>wqeQ{ZhxGI z`*n_L}TBp988=r)tB?|cqJG_y$qIq8J*m*~>xzF9_^xEedh<*pbO_ri^OH~Cz z*l{isDt&!b_%%c-rFZ>>$k|8C%BSVEXG$HJL33ElLX)-GO>nH0X|ZLi5u15gl+KY| zu%;LAEou%9K{_~qgYEGG>=qA!x}a>$vY(}PeP1B+6z*V~sIN&J5zPH@#D-=!Y2xt? z9~*G(L98|E3D_~sJJWZ~w0)l36qH0YnV0ZX7L~v~A{nD&+DDr83j9qnpGzZxobsjpK1c6lOcd7J zW!V2TZNF)n{%vbE%-*rumKWVIBP}+zb#3zRx8NwA?Ano8)+gDg%dBagCWym9MH8dC zjOaa_I61DB`Fa#`T732R^TpPIC9F-T{@)oaHBQ|KR`IL1C4zpgWrk2cip@-_+QZW+ z&;h+4<5;VXq8Hk`b|xIldEBeDVf{6QxcR((iSxsT!1~_zLzJ1y?s*;?qbs>%-n`uHrG>DW$diTWP4xC*$wON1^CY(?bj` z>md1ksD8-wXct#X8tK5uqmds#E;iD`fG>aNtn&RyRn1VWaz1|QeYnW9&E@p3dl^?t5U!G`dDWZ|G9bD0wu&%Vwi5c$`5<(lH z>)0N?h2CgRJ?%0J{?N&*b+N$&Vtkl=Wh`)%H&Ip}ft`I5rHv5i#s1+Y%2R!t!h2YH z2PL6CS;Bi^x>gy)1Lo+d7lGPvhy)rF^|dXf?4qyt?;Ix|ptgFlI2+nhZVWE(K4`LI zHT(Yf7UB9K6ZcUdcpQdKNJ|jpF?VOv&iem6*PY>t;IP@DX%7z0dtA^^KGiT|9V+rd zaxPP2Hp&V9Cz6Cvsff&sydz{(x{!fR9qfw8-MC@DHNUpNU3YoK+p=1{?v>9K0`-wD z%<|#E($%lK`J+csEuW;%Ihv^NfqoWFw3eRKyjFfG>cR#RHU~aBp%T>VY3i%D08>6q zH`#=m9;1eoH%EcOOcIMYoanDngu0iY2Htbb++_)r*yN+FmDCW{LpW};;mPvgsK=C$ z^A({~=8cC(5G6C!I?%vd_UWb6l&W~D3|4WFyL4%DmHjF@!JW{c^pH|WT6l9MYGJ}Z zMEej_ovYI`azMF>TQvVY;p)J9N3#X{01jV*O01~!&ekPpvozIt?|49H{8IIsM>7^XL)Xz=V_1?Uy#6Ge zB=1|u&%z|ulll_^23G7;0&g>lt7t#7-7g2gsMX+fjgM^8A?XK&Br22|kAAVHPg+;n zPOK^a8$MD09X@eR*q7$ZSUG{Q6&BRK-!1qdYCp1AZSB=8ZPM#!w#2g1)qxxH-`TGr z$W17)b8AbNg!JaxqaKrE2t6x8-Bu6Ja^k?2huM5^DU`>3|D#h-lw;#dgQm>CZi~gD zcycwUv%cne(qq2TLAO1Xoc`8VvMDTYZ&ETUhKg)f`;5%5M=hn#SJa^Fu0viuOS^G1 zjIh@85n}qqyAZh|-6`w=Z(_4)D$L-8J3^4q9THEEXr+GJDk#+)Zv^iB_*K;;t{39t z7s8>5go_%l*4B%<6A7*jn{@OZY7!`YgqOW#ecp@9!rPa!YnJ*pJlZ}Tl+$aC%qEl_ zPW>Z4b7#ZeFNSPt59-a9+g31Zf&1ML@ywxxjlJT#iH+hf!8M4D?)GnzzU#;fA6xa= zNcuCwwGS(>RZ=?xS*NT=U?RyiQSav0$<|d5*Hv>{Z?gHMIR+m;z?ud8Au>mWf(iR# zIk}c8gK#9grWhl}HrgYI{><0qE;5gl^yZ|@gI0n{)+pG?^l0mby$2iPPrM#sC#GU#zS)!cQqzKnk{jZMh;%z0!u-algU{byN{v-k9Y-r49Z^gug2M?rY{#dqF8?~Ob7j#y1_gR9otO2p2S^B3bEQyqFfue(WSQr9T%cv2|F|W zoqm)A=|eIdm852}6AAaH@<~%8d;J|7^Y8MKM*Mh%LA+AN;|)GxMB~#>QbD%~z~=2w ze#C?n`X`t+ej_dg6>}S(?(q3pQ!6jc)m!i|6VjW_+hy_^x>*f*-5k_V`*^}*x*d1{WS#$cS$*_c^C%MS3V{{$$XLnf>F zF<=`&xdN>C{)>7Q%a{*z}VeQyU(m(%)3kTKwE zyyJ6t#REtxdkWphVxJt@`YsVj$3n0sPxf0$4{ZeAYiT4#6zUla#S`*{Z*eJ z4tevutWyYjN21PW#-Uj6Rk;I-l3-@fH$=@HZRnNTJaEXEfqiAdX(~#0Z00fQc^ZLh ziBwxwTKbH7BVVIGMBg4Wq)!%+I`iO;mP{7d!eQUoK8JfJvAlchN1bj#6z+jdz-B0n zn2-=t`re+dK8V+sscry5X7xQ^=d~iPgLCQhCCvI%9FMewA$kqZSPAL*gOfZ^JyU|q zDt#>?JQq4`cHSmS*-26SkCKUQ9+<)@Xa*;cQ zDZyP6gwZ@UPqkuEcQ%>U>3doYQMy-k3BA3m)+*+WTn?zPXOGI(sow8JYAn8}{*`FV z(NaVS#o-V2Pp2=(4O=#VwgM-)$6-_gP&djo{I4dlxP--SDma+|2>KSPgHL-RW!4KL ze7H}YErN6kytxUFyh4NxsJvU?{oJBEaPyh@lYgyN0sgzLlj*NXkh?i$N> z(#1-nf?2hTVhwyYW1WN->3s>}98xW$1x4pFL6*U1Sy;t^w)IbWp>?P{9+Oz0_z_&f zQ{{ML97MOiRmDwEnd(iDE8?gPANZedDOwwf%ZoeCuUoyS{$fh9^5RY5Pl(J5o)2nW z{>qU~Es!>G)C{~y;2`EU)=;z?>+?ifE8UQwc@MIA;q_{yP?tX zDdx?Tq3D}Ni=+99)fX}CJqrVA?7v*8O$#sSrUJul)l6tx9yd>f<3G-jzV|m&wP5!8 z_;;Jffs0RkYob1vVq2S(_Fk9T!ThAa)sK1MSixEIUS7fU(?d}T$W1m2%CpK-{fu#c zJwPJUAxJ~;K%0KX(?ZmE89$T~5{<4F13b(a|LZNDrrx#X#$}vccd8*RoJt&3s zqW3z>9(uzIUmBj-HlhyB;OYqzszB*p@PD+!A7)6V`MNNE%U&L2-UC$CVau(Crozlg z;SX`ybn${R{mVa)(?x>*63WI?Y%ypuEZ8R^yRm2(MsR=^=IedGZxDROvxs^!Yjd;6Dr57Xk$v|N61} z)^T=@i2e8{n}s=0<6T>I){@*3CVsQu<$yZR+#x22nP=!Egj+zaCE1^7 zPS^SuFCj17a-q&a2l`RR zK_kIu7PaV;4^C z+d2_CmPC~g>7RQb`-hNrsNf*$x>vwB=XuBjrOefN27w(r)73euip&Z6`l4j&ZZlg&6)BrUh9Q&gMZNGR`2#Y(#}cgG<0sy~a;LQU$m#Iqm` zRZptsX-?Ns5nJj5H~Jq#M-Fdx%qI&h1VOe^rs4&^G-VsF?YO?~GSD?dzVVcjcD_+j zdaT$sZK-GjYyGs^tkAItRHJ-A%C7LI#-`Hu0b%A%pHS$Lwk;3N_lGZ9FgH({RL_Q2 zdM(WRe`Z40A@Nn*`_g4!N#TCnB$f5`@z>F%J=m-mWCSOtEiVqM*YJ$Spbke}9W`Bw zLid4I-f_&jjUd6!9|uo4xPKUBX`#2S!`8ri zliUH)Ow5mJu_||tYlDVn37@oki^&L*L@c;+xlB0RzS^FbScpfUCWn9)%J9x@Pmpra zERRd&*<}dLH*7n23`OlxrjO3Y&o(aq z?dvp3M9Eus`Lahlm%&~1t;~C}TBEfzem%(#N@76KwWfY+IE2X#nAcW?VmSrHd49Ka zc%g#7;n4jJO)-SxTB}F#$YW5w3jXg0>uF$ViHTMQlxC+_I~x>fufP@ZaW~}M&|n^cpMA%j z4Nm4>w5Z(p+_5}h2-T;kCO>&4)694m`WN5;`^}(hJiD+bqz7o5^*9b=f1dpxhvRLE zBK~Vx_$`sx#w9GwChH-10W*(k5h*F70{V%EKM*^{pw~OIl>HI zzq+ju`}ON>k$+oC|D{VP-g)I2;JM5SlELab{AxV`e&?Bg`!Cdy?%MyTTHb}ueKbBZ zDJ9?}xcmS7&C^N!HlWG9J2*cmM_Y8O`LHc6umU=;+oZW)L*YMKZOONt#>XrK_q{%I zD=DI#RqvzcUN7z^5<(eSi?!?HhH&)J{>hs^gVN2rbklyiVlzqoVD~Z}QJE{nY1t5- zh^)a>3_%JsgDX*$P^(`5!gEVZ(I9(C+`G?|fMO{=IFVS!J+<;GW<8y0dwxz}rCfYo#8b!)ta%Cl}d^ zLdVv3>D=;+L5BEgtE_=l8A_^a$4c^Qz3dcC`WSAq6&&O6VYD-$Vn`ZSmb>YwuU#Ve z9tJyLSLMdDxfvtHfTasJ@1|HAxQ)aw;d{;@+mPpPmqE3t-sktwn#b2G1+v<>`U5Q+ zPjCkGq*W z3(cixvA%f6cOR-Cn6)SUISBhI<;1w)n8=2ABoAp8gaA0})Oxh>UjbPc`I#>PE4)>4 zLk|45DX2$n&xB4{AkL*YR8($5bK?0%0YmrAU?(HuDB15EM#vUmy0dC!?>uK7hE4Qo zYzEYdi3qf-gb&{ZKTnp}W_i2w$~w-Ymz*PIN`xjT&M|7@klmERRonxLIo!!$c$zqD zl>oD{ZIwzBvLgn)DDj|t?};98tJS`owKns4Ep*D}MQ7E(?2;V9hIW zg#5Akea1o_1d!yx-wzB_c8Ikf{wx+_!T1C2Ick&ns3XLIAm&^(TBdBy5I@n{XXD4S z`67@LzwGm(rGnjzhU|iG*>Gz24|GcQuN%+8I;}t7+!T3 zY)%6QKs1a!@{XwN)fyb`Ts$~^S4EO*Cxkot=8J6ztj0YV^x|7jTcO~e^jJAJ*^hL z4216-c&_(BVeQA-&G$a)zh*EM-b{PGY&c`X@Kc3h4}aDjx!eDMaF3!32rvdc%1{?F zefp}^awgk#D`G|c<)338xgqm2rZ>Yvau_eSG-)9C%L@#98=wt|c5*)rw z$9t3sU4I$N+%(q?VP%1eiTHw~2dYJi_(v?8R|%$nlQ#5G{egnx$#i zV2pVM)kd_l3zm`tKhl+ZdevEQ*>E`J6ItiNo~}4PzRms4*X;>oLNPbkO=ZSk^hOUu z?$pI;<#edw(IT?tDqTd2NVlZHXxzlA4-gj9AJT(9bPLWt2JKR$kQj^0K|Ez2FC z_}@5TZS7KNV#rS^TUweq_o+?5dRyah)}OSE5)_2zOddQ2(8VemXN={7A2&biL5pmP zH;kdNta_su1XfY5+9q>am&vENZFUmB$L!*_M-22+TS|A;%P)kZ`TDkw>xhp zPlprLys{dT))=jS)tmKRgg8#BKMOEUZs^uHp3Hb1;xL&MN5PkO?5C@>xZW)`t@vzH zVpA6n`%w#tr3~-GzogX86(9`!N7i^0ncK*W`9CFjK67@Ql0T^KzMe?Gtmw15ziGA8_Y~ zJ1~|rQ4pKyL+OZ>iCN#jt{)KTQdH035Qoo}#sdBoC#JzN8yIi%5GnI0enx7X13hn8 zC6*LEs;)M4QGTK)&k|`uK?skt@g42SY)kXFpPg7cHBOTX;qoz5sg5e>T(kN17i6dc%bW7EZ;z9! zn0G^#f~F{xYPIn8dNY)5*Uyx}azxf?J|HmQF%*)f)qSePM zfw5Cr7jO=E$3N6}g?MD56rG)5J&h_R1&Yq23r`^cxlU2CZC%hKlzL`*hr%(~#q_tR zx)Ce+6U#6iyN>F3rkQUd^qDTL0=U|C;2DJ5@=3FVTwg8w??mv^!h5aX_e7n= zhO}-eewNc4#i|^jh&>Iu+I&s>>0@hLXzpM}&Q5n%O0j*7Y{4ac%}nyj+rYI=*bW%X z!0i;sS?9{?{S}zG-_VOG-NItIRqZ&i=V_1-dg38_39<2WOwm7FqY<@w!~j_J`jkyr z%%~@Oiq@qY0`z=$b**;h=uLsm#?x$~)MTgw-VEw|_L;*?z`s$m>`d2jW-V33dQ+SL zQvZ`*>twq{ZAHd8faOo7Rv{r2mnmm)M|o;r01)T6U=q_+N>TA5#Y|hN_1=d@z-B6|Ak;RL7!4ivF-feXt zLE+0m>n4D8ob@tI@$$_-oq6}PBqw?`@z{7Z;e-VO-xU*)E@I0>bvSEB48QXVuuJ#S zW+SCpc<-nfK~_miZ@bLs938ld zfH~r>B;sxXOLEDOt*dQEs3@`OMag>UvyU22JQYotmYH}UEi5!!Z;ezg-_KU--niFiGvEV6XLJ}?fy7jiI~D8XBB@;8 z8zeTo+4|b1X1d7cZbC?Sz&(0plsbb5SMV|O`K3n!O0ii=4pN7SZX<&G{4OW{Ou4pV zDSvam2OrgzWM@nR7Mc=Nz-9KLe$V9na$7YV(UNVnjA{z~f{=Y33}7bjl`(d6!^ zOCE=uDAG@hSFSv{vjXPP!SOZnl9wedXgp;|41$H!E4_>DV{#FcvUug(_LBJ8{0R{3 z&48rRUYI%T32<>uw_8*woOvEAWE;m6>WDB4l+P_Kve&xWU;~mpUQ}QPkxdrBk0`Zn z1T>;8ji`6T2|y$&X==P>l2yK$gGd})aY9TD2j+u3NGi~&b|)uTuBg&qbw9ZDZTB;v z1??^Ef7WX_0DJPiU+vT-{|{aliTa;5v^%RP4+YzCr~if-5AjaV?t#ZjKS#2&HT4*i@entuOP`eT3r5r}hQ7bNQxZrPxlxRC=rA^m*% zEne;Dot(1}wLR3*u-MpRFK*kKPPO9>ruv%u)ZS|8znI8&IZFdcAI`O;orx@q-&vQW z`OzIvzIdO(E&J%AvJ(Hsh12fOsXbGqfIZ(VGfT`kJ~-$05_Smx#LDJ=%0mm8{z^n} zDmsYux=_T~x%mvkUC~K#5D)(5Qkj+F7Jiu$`IEk z+}@bV*v_+Wh)@RyVV{Ve5`%f5;8Fnvke+DAS`j+S$5yz=VK5BojGzQ5XKAXH8aw94 zNp-Cq0kVjDVOk<`Qg`-lB5U|SLe7%!xByJOpB#GTQ1-2D37huKjw5|y_h7+kp!aYC zS}Z?{KPSC6$T0zInZO|>i(2$ewk)^)>4Vtn=Hezkf)7aA%{w={YE!_u`d<$NA6dqM zZP5twly;IB+Byt+WIiVhm{j{vdCXne40pl>FG8ZW>7pqnEI`?n<)$s_KESD;#q2uR!1*c&rjhAVW1Rh)h#uG zHy+gyC$WpE{O}x*!@!tn7iF7R!&r+jBF^|rRY4*H6S+qG2VDQY4XzLT2VB4RTb7?l;Tjw^7@q+P4Da25joW77+{D%Z4aCL7IG@y~C!gq3ECW*- zol}YO1=udY<&t6u-B|-RcT#?G0k4P<1om5)*!5}G_fB%IlqVwnI3?(QB#z<*^*7;*n|`Cy zQ*RdzPkN-=h+aL7VGZUgQT8xG#FiU+gJc?G(JmeEAxK^TSZC7)eeFsP8n4uqvPrg$ zdk{W8Tno<9lC&gE{|O|LopqRp)d8WM|BrPK!2-N6bY}Cf5w3fAtT86ESD6fJQ4^Pu z_jpsn@9I3XCX*FlOkR`Z0CgSDAG>tWiw|SfEfCjVG`x}klv0|PU7gt-!2EGbldPN^ z(?wEpOL*_Bo8DcGfZ7a}k^PcB_#j>+Nr2EZ)MPok+z+D3(7krnAPXi@d>|qZ!J2fF zpG+YtJhKt@E)-DEMY_f$Cr9*FhY=%|B*JNb&}7-J30>tC4d`dvi^=mV9rv8?JGhC~ z#k7)r;|8y30r73S#GzknN=abzv$DBbtdN1@dBBb~#E6Dj%bU{k&O9v0WhzhyI9rC*(iYP_F2_FdO|a{s35 zqZB}f1lx~;`KsL1N32FDi%)H^Bw<>svDxN6I-DF@%CZkkR-tv{__C@%#|at*Myxe8 z08BTr9^r$pbaXbq@W+y(V?P5Us}i8jDL|UdrzljcY%1GAemNVRroQZTSabfomgs6O zglJjY-5#Pf`91^sZ3*5D26U8ceiaB_DFlSnma;xn@bhX%YBqjOZOF&N2m=JH*-PQX z=z4pU@o;i;`#_KHxkb8h3%+TZ!t8C-@zJetl+T@h@116L!eBp;3kM5qUcX)edAuWQ zZ-50O6lGz;3{~H-Ush2%rcQ#!ESOqEc2zNZ)Q>JVm}LriT=BwzFCY=S>Wsnn)BdCb zljL4_b5rdy?siu><8~Y?r~6y$pUveyPnHk|MAVN#-H`I7(`-LwTlJ*G*yDwvmgZxY zZGIbwXKG-S(yWb>%#99b%3pZf%ohnSZW}mngl!#WVD(Q)i}q7f z?J!aFj^0iVP?q=5|Ron29>WWX8ldx~@%NCVj00485% zArN^?LaRThb3_zq-Lw7wdOP>9B(pq@*G?BTyOO1uv6hy%bf~3m z&-=o8&U?=J{l1@1a;oVBuP|Y67S&XS%upZcMAFyp^urb#LXoG9S^IOQAK!CyXDcTvU;dVlVoMQQGT&yX=mJNv-co&5AY~C#Uy0@G=vnG|yIjDzS*6 zK;tdo?$j1vwB|2hWw@Lmhd*Og`V<*tFhZbM1eIKQj*SW_6MvSp=+=&G*xSF;pt2Ml z8NiUdy&`FCnbq|mci%vb&pAOZ6pgdB=ygV`j&QfIl+^nGUCHRPJ%scCy& zi~ve!#OOeYk;!6G6#u7umoAh_j!m2(_C6xM5IjQJLmxnc22sO>YQ5o_|307bm3OG@ zcCRJdi`H4hP-Vt`bxIc+7WLO5YDo!9f0ryzt^9fTDfjBgUN2cDe{yI< zHfXPyX(CB;47HmFxKh+JRu+RI4gm5YeP7ahHCJtz*3}zI%U)S8W>??F4#XV1h!#g3 zMEc(Mc@UFM-m%ZyMzbf7U!w_xqw1cI@^^BAEQ)Qu@03gkIcOc8As}Wn6u5=9ePe@v zU!FGE164y5TTSCu&}p(`tvvEBnwDKQuYts%)i_YM#e~ld*N3~y(?a-T-*uh?w-n}Q zOj6-NJDKg*?PS%!Q+R-Qq@Uh*e9fZ)<3?Z#i+(?a5F(dBk$S{)V@oAG?(>E+K|_Dd z2%10>%w)q+@-hVCv-s8zQTHH6@1|dnvla|eN%B+YHR7}aUk&M`z(0JBL}o;sghpUv z(svODsPI#SAoW{QtXol-X&*Zz%F8Rzv>P%yxgc}^JA*@@Fk*>hXpr{v5F z&LmIPpW@Fq5^c!)M;`%Y$&>#*v_kA$f1~Y}gjnyv(b;#U%|rR;Si!f=FYHa_MpqEt z%I&+kK{~vf8R>{``ft7!QBT=jnwPhZRh5ybf?MV!%$6cnnY{XCY`)6v0O@e^-v}3J zAt7=dg}p(BifCen68Yil+`!77&-0gr>AGIU(MjE(FOI3%advgCew-kwY6?;%wBO=v zh2{+B5_Da+vCen}(;TcE^C-4Zl~^o|^b@I`;c15K^T?+jkx&F|%#+|+z)2#~xp1v2 z=uc?$CQSJLM0OGOTe|N|@*beev}rabD!caiZ-a%G#3Kw*Ft$TM)*iYfT(W6iO%j~Q zXQ!CJ@=*3a-td^X1bGm9lJ#c0-5(DuQmUk@)@|+Z|;ALMg zw3=2IClFZeJqgI)#F4012sNUGGW8F+BJWHcpE_*0OpJ5R z?CR(5;VC*@`iOcl-54+F3>c<~U(uOY8PyxS0ivzP2}jXu7Q}aU(P1B&oB}_d-3m*9 z@r<=Ft;S+$H7;n-G}t15i-r+IW~pFD$q9~>ek4$N#~p&hy)3lPXySXFMXR7&rQkAg zfqivSL#cP)5#PUW?zC(IM+NL9@#T1RH7;{q-zs4(n}XbqQIBnvC7s;I#GnTyVrU{O zJJ26Jy_qo2ZSQr?+(EJ7xIgfj_qoheEmf^&SxTFrObX6xB45&E3mppiv@wL21E{sp zbf1^26t(NOFKnKntFgX^}@dFg=h|gihg zqx}M2Dq^V2z|1R&U;xPL4PkTvJx2*bO=Z8K&8Cx<$r_sW+*&7QYY$;Yy;nD4ZO5xQ z1$5^}i|_#Hfj=oh zda|+^?5-BMUIhVPzTy96P&o0sBoW|qb_{o%4Z=LZPG1*?EL32(OAgF~R9z57o9|Ti z00v$~b9}sJ@S)`N*iZ7+H~(e(zApf9$s-oau-gmt5Xfb#<7(0j zXYNCdyK?KzT)1s};{a$=3H;)Vq^1MT(W3b=WcD%(4J$e*&aoSPcW>>c&`*Ry^99tq`>9G1I9wz#fW@ga{K&!|bvV&|@RyaLaRJfs TQ<%F;z{lf=_hF{n>C3+YS>OMj literal 0 HcmV?d00001 diff --git a/docs/assets/demo_form_en.png b/docs/assets/demo_form_en.png new file mode 100644 index 0000000000000000000000000000000000000000..76146176a15edb493799aa3344e54368b775fe68 GIT binary patch literal 159020 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 Date: Mon, 5 Jan 2026 12:03:09 +0900 Subject: [PATCH 08/11] =?UTF-8?q?=E8=8B=B1=E8=AA=9E=E7=89=88readme?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 92 +++++++++++++++++-- docs/README.en.md | 225 ++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 307 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f235e30..9e08dc5 100644 --- a/README.md +++ b/README.md @@ -4,14 +4,14 @@ ![ExStruct Image](/docs/assets/icon.webp) -ExStruct reads Excel workbooks and outputs structured data (cells, table candidates, shapes, charts, smartart, print areas/views, auto page-break areas, hyperlinks) as JSON by default, with optional YAML/TOON formats. It targets both COM/Excel environments (rich extraction) and non-COM environments (cells + table candidates + print areas), with tunable detection heuristics and multiple output modes to fit LLM/RAG pipelines. +ExStruct reads Excel workbooks and outputs structured data (cells, table candidates, shapes, charts, smartart, merged cell ranges, print areas/views, auto page-break areas, hyperlinks) as JSON by default, with optional YAML/TOON formats. It targets both COM/Excel environments (rich extraction) and non-COM environments (cells + table candidates + print areas), with tunable detection heuristics and multiple output modes to fit LLM/RAG pipelines. [日本版 README](README.ja.md) ## Features - **Excel → Structured JSON**: cells, shapes, charts, smartart, table candidates, print areas/views, and auto page-break areas per sheet. -- **Output modes**: `light` (cells + table candidates + print areas; no COM, shapes/charts empty), `standard` (texted shapes + arrows, charts, smartart, print areas), `verbose` (all shapes with width/height, charts with size, print areas). Verbose also emits cell hyperlinks and `colors_map`. Size output is flag-controlled. +- **Output modes**: `light` (cells + table candidates + print areas; no COM, shapes/charts empty), `standard` (texted shapes + arrows, charts, smartart, merged cell ranges, print areas), `verbose` (all shapes with width/height, charts with size, merged cell ranges, print areas). Verbose also emits cell hyperlinks and `colors_map`. Size output is flag-controlled. - **Auto page-break export (COM only)**: capture Excel-computed auto page breaks and write per-area JSON/YAML/TOON when requested (CLI option appears only when COM is available). - **Formats**: JSON (compact by default, `--pretty` available), YAML, TOON (optional dependencies). - **Table detection tuning**: adjust heuristics at runtime via API. @@ -133,8 +133,8 @@ Use higher thresholds to reduce false positives; lower them if true tables are m ## Output Modes - **light**: cells + table candidates (no COM needed). -- **standard**: texted shapes + arrows, charts (COM if available), table candidates. Hyperlinks are off unless `include_cell_links=True`. -- **verbose**: all shapes (with width/height), charts, table candidates, cell hyperlinks, and `colors_map`. +- **standard**: texted shapes + arrows, charts (COM if available), merged cell ranges, table candidates. Hyperlinks are off unless `include_cell_links=True`. +- **verbose**: all shapes (with width/height), charts, merged cell ranges, table candidates, cell hyperlinks, and `colors_map`. ## Error Handling / Fallbacks @@ -152,7 +152,7 @@ exstruct input.xlsx --pdf --image --dpi 144 Creates `.pdf` and `_images/` PNGs per sheet. -## Benchmark: Excel Structuring Demo +## Example 1: Excel Structuring Demo To show how well exstruct can structure Excel, we parse a workbook that combines three elements on one sheet and share an AI reasoning benchmark that uses the JSON output. @@ -336,6 +336,87 @@ flowchart TD ``` ```` +## Example 2: General Application Form + +### Excel Sheet + +![General Application Form Excel](/docs/assets/demo_form.en.png) + +### ExStruct JSON + +(Truncated for brevity) + +```json +{ + "book_name": "ja_form.xlsx", + "sheets": { + "Sheet1": { + "rows": [ + { "r": 1, "c": { "0": "??????????????" } }, + { + "r": 3, + "c": { "0": "???", "7": " ???????????????" } + }, + { "r": 4, "c": { "1": "X???" } }, + ... + ], + "table_candidates": ["B25:C26", "C37:D50"], + "merged_cells": [ + { + "r1": 55, + "c1": 5, + "r2": 55, + "c2": 10, + "v": "?????????????????????????????" + }, + { "r1": 54, "c1": 8, "r2": 54, "c2": 10 }, + { "r1": 51, "c1": 5, "r2": 52, "c2": 6, "v": "????" }, + ... + ] + } + } +} +``` + +### LLM reconstruction example + +```md +# ?????????????? + +???????????????????????? +X ?? + +????????????????????????????????????????? + +--- + +## ?????? + +| ?? | ?? | +| ------ | -------------- | +| ???? | | +| ????? | | +| ?????? | | +| ???? | | +| ???? | ?????????????? | +| ?? | | +| ??? | | + +--- + +## ????????????? + +| ?? | ?? | +| ----------- | ----- | +| ??????????? | | +| ??? | | +| ???????? | ????? | + +**???????????????????????????????????????** + +... +``` + From this we can see: **exstruct's JSON is already in a format that AI can read and reason over directly.** @@ -345,6 +426,7 @@ Other LLM inference samples using this library can be found in the following dir - [Basic Excel](sample/basic/) - [Flowchart](sample/flowchart/) - [Gantt Chart](sample/gantt_chart/) +- [Application forms with many merged cells](sample/forms_with_many_merged_cells/) ### 4. Summary diff --git a/docs/README.en.md b/docs/README.en.md index e43314b..24c9702 100644 --- a/docs/README.en.md +++ b/docs/README.en.md @@ -4,14 +4,14 @@ ![ExStruct Image](assets/icon.webp) -ExStruct reads Excel workbooks and outputs structured data (cells, table candidates, shapes, charts, smartart, print areas/views, auto page-break areas, hyperlinks) as JSON by default, with optional YAML/TOON formats. It targets both COM/Excel environments (rich extraction) and non-COM environments (cells + table candidates + print areas), with tunable detection heuristics and multiple output modes to fit LLM/RAG pipelines. +ExStruct reads Excel workbooks and outputs structured data (cells, table candidates, shapes, charts, smartart, merged cell ranges, print areas/views, auto page-break areas, hyperlinks) as JSON by default, with optional YAML/TOON formats. It targets both COM/Excel environments (rich extraction) and non-COM environments (cells + table candidates + print areas), with tunable detection heuristics and multiple output modes to fit LLM/RAG pipelines. [日本版 README](README.ja.md) ## Features - **Excel → Structured JSON**: cells, shapes, charts, smartart, table candidates, print areas/views, and auto page-break areas per sheet. -- **Output modes**: `light` (cells + table candidates + print areas; no COM, shapes/charts empty), `standard` (texted shapes + arrows, charts, smartart, print areas), `verbose` (all shapes with width/height, charts with size, print areas). Verbose also emits cell hyperlinks and `colors_map`. Size output is flag-controlled. +- **Output modes**: `light` (cells + table candidates + print areas; no COM, shapes/charts empty), `standard` (texted shapes + arrows, charts, smartart, merged cell ranges, print areas), `verbose` (all shapes with width/height, charts with size, merged cell ranges, print areas). Verbose also emits cell hyperlinks and `colors_map`. Size output is flag-controlled. - **Auto page-break export (COM only)**: capture Excel-computed auto page breaks and write per-area JSON/YAML/TOON when requested (CLI option appears only when COM is available). - **Formats**: JSON (compact by default, `--pretty` available), YAML, TOON (optional dependencies). - **Table detection tuning**: adjust heuristics at runtime via API. @@ -133,8 +133,8 @@ Use higher thresholds to reduce false positives; lower them if true tables are m ## Output Modes - **light**: cells + table candidates (no COM needed). -- **standard**: texted shapes + arrows, charts (COM if available), table candidates. Hyperlinks are off unless `include_cell_links=True`. -- **verbose**: all shapes (with width/height), charts, table candidates, cell hyperlinks, and `colors_map`. +- **standard**: texted shapes + arrows, charts (COM if available), merged cell ranges, table candidates. Hyperlinks are off unless `include_cell_links=True`. +- **verbose**: all shapes (with width/height), charts, merged cell ranges, table candidates, cell hyperlinks, and `colors_map`. ## Error Handling / Fallbacks @@ -152,7 +152,7 @@ exstruct input.xlsx --pdf --image --dpi 144 Creates `.pdf` and `_images/` PNGs per sheet. -## Benchmark: Excel Structuring Demo +## Example 1: Excel Structuring Demo To show how well exstruct can structure Excel, we parse a workbook that combines three elements on one sheet and share an AI reasoning benchmark that uses the JSON output. @@ -336,6 +336,220 @@ flowchart TD ``` ```` + +## Example 2: General Application Form + +### Excel Sheet + +![General Application Form Excel](/assets/demo_form_en.png) + +### ExStruct JSON + +(Truncated for brevity) + +```json +{ + "book_name": "en_sf425.xlsx", + "sheets": { + "FFR": { + "rows": [ + { "r": 1, "c": { "0": "FEDERAL FINANCIAL REPORT" } }, + { "r": 3, "c": { "0": "(Follow form instructions)" } }, + { + "r": 4, + "c": { + "0": "1. Federal Agency and Organizational Element", + "5": "2. Federal Grant or Other Identifying Number Assigned by Federal Agency", + "20": "Page", + "23": " of" + } + }, + ... + ], + "shapes": [ + { + "id": 1, + "text": "Not Required by EPA", + "l": 575, + "t": 396, + "kind": "shape", + "type": "AutoShape-Rectangle" + } + ], + "print_areas": [{ "r1": 1, "c1": 0, "r2": 66, "c2": 23 }], + "merged_cells": [ + { "r1": 34, "c1": 15, "r2": 34, "c2": 23 }, + { + "r1": 56, + "c1": 10, + "r2": 57, + "c2": 17, + "v": "Federal Share Calculation" + }, + { "r1": 18, "c1": 10, "r2": 18, "c2": 23 }, + { "r1": 15, "c1": 0, "r2": 15, "c2": 1 }, + ... + ] + } + } +} + +``` + +### LLM reconstruction example + +```md + + +# **Federal Financial Report (FFR)** + +_(Follow form instructions)_ + +--- + +## **1. Federal Agency and Organizational Element** + +**United States Environmental Protection Agency** + +## **2. Federal Grant or Other Identifying Number Assigned by Federal Agency** + +**Page 1 of pages** + +--- + +## **3. Recipient Organization** + +_(Name and complete address including Zip code)_ + +--- + +## **4. Recipient Identifiers** + +- **4a. DUNS Number** +- **4b. EIN** +- **5. Recipient Account Number or Identifying Number** + _(To report multiple grants, use FFR Attachment)_ +- **6. Report Type** + - □ Quarterly + - □ Semi-Annual + - □ Annual + - □ Final +- **7. Basis of Accounting** + - □ Cash + - □ Accrual + +--- + +## **8. Project/Grant Period** + +- **From:** (Month, Day, Year) +- **To:** (Month, Day, Year) + +## **9. Reporting Period End Date** + +(Month, Day, Year) + +--- + +# **10. Transactions** + +_(Use lines a–c for single or multiple grant reporting)_ + +### **Federal Cash** + +_(To report multiple grants, also use FFR Attachment)_ + +- **a. Cash Receipts** +- **b. Cash Disbursements** +- **c. Cash on Hand** (line a minus b) + +_(Use lines d–o for single grant reporting)_ + +### **Federal Expenditures and Unobligated Balance** + +- **d. Total Federal funds authorized** +- **e. Federal share of expenditures** +- **f. Federal share of unliquidated obligations** — 0 +- **g. Total Federal share** (sum of lines e and f) — 0 +- **h. Unobligated balance of Federal funds** (line d minus g) — 0 + +### **Recipient Share** + +- **i. Total recipient share required** +- **j. Recipient share of expenditures** +- **k. Remaining recipient share to be provided** (line i minus j) — 0 + +### **Program Income** + +- **l. Total Federal program income earned** +- **m. Program income expended (deduction alternative)** +- **n. Program income expended (addition alternative)** +- **o. Unexpended program income** (line l minus line m or line n) + +--- + +# **11. Indirect Expense** + +| Type | Rate | Period From | Period To | Base | Amount Charged | Federal Share | +| -------------- | ---- | ----------- | --------- | ---- | -------------- | ------------- | +| | | | | | | | +| **g. Totals:** | | | | 0 | 0 | 0 | + +--- + +# **12. Remarks** + +Attach any explanations deemed necessary or information required by the Federal sponsoring agency in compliance with governing legislation. + +--- + +# **13. Certification** + +By signing this report, I certify that it is true, complete, and accurate to the best of my knowledge. +I am aware that any false, fictitious, or fraudulent information may subject me to criminal, civil, or administrative penalties. +_(U.S. Code, Title 18, Section 1001)_ + +- **a. Typed or Printed Name and Title of Authorized Certifying Official** +- **b. Signature of Authorized Certifying Official** +- **c. Telephone** (Area code, number, extension) +- **d. Email address** +- **e. Date Report Submitted** (Month, Day, Year) + +--- + +# **14. Agency Use Only** + +**Federal Share Calculation** + +--- + +### **Standard Form 425** + +**OMB Approval Number:** 0348-0061 +**Expiration Date:** 02/28/2015 + +--- + +# **Paperwork Burden Statement** + +According to the Paperwork Reduction Act, as amended, no persons are required to respond to a collection of information unless it displays a valid OMB Control Number. +The valid OMB control number for this information collection is **0348-0061**. + +Public reporting burden for this collection of information is estimated to average **1.5 hours per response**, including time for reviewing instructions, searching existing data sources, gathering and maintaining the data needed, and completing and reviewing the collection of information. + +Send comments regarding the burden estimate or any other aspect of this collection of information, including suggestions for reducing this burden, to: + +**Office of Management and Budget** +Paperwork Reduction Project (0348-0060) +Washington, DC 20503 + +--- + +### **Shape in Original Document** + +- _Not Required by EPA_ +``` + From this we can see: **exstruct's JSON is already in a format that AI can read and reason over directly.** @@ -345,6 +559,7 @@ Other LLM inference samples using this library can be found in the following dir - [Basic Excel](sample/basic/) - [Flowchart](sample/flowchart/) - [Gantt Chart](sample/gantt_chart/) +- [Application forms with many merged cells](sample/forms_with_many_merged_cells/) ### 4. Summary From 5e1e438df198ce4cfa13ec15546f7c1b2781eaff Mon Sep 17 00:00:00 2001 From: harumiWeb Date: Mon, 5 Jan 2026 12:33:27 +0900 Subject: [PATCH 09/11] =?UTF-8?q?=E5=8F=82=E8=80=83=E8=B3=87=E6=96=99?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ja_general_form/notebooklm.chat.md | 167 ++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 sample/forms_with_many_merged_cells/ja_general_form/notebooklm.chat.md diff --git a/sample/forms_with_many_merged_cells/ja_general_form/notebooklm.chat.md b/sample/forms_with_many_merged_cells/ja_general_form/notebooklm.chat.md new file mode 100644 index 0000000..b50ab54 --- /dev/null +++ b/sample/forms_with_many_merged_cells/ja_general_form/notebooklm.chat.md @@ -0,0 +1,167 @@ +> 以xStruct JSON をそのままテキストとして NotebookLM に投入して中身についての質問を行った結果です。 + +# 📝 Japanese Nursing Care Benefit Limit Application Form + +```md +提供された資料は、介護施設等における**食費や居住費の負担軽減**を自治体へ申請するための「**介護保険負担限度額認定申請書**」の構成案です。この書類には、**被保険者本人**の氏名、住所、マイナンバーといった基本情報のほか、**配偶者の有無**やその資産状況を記載する欄が設けられています。具体的には、預貯金や有価証券などの**資産合計額**、および年金受給額を含む**所得状況**を正確に申告することが求められます。末尾の注意事項では、通帳の写しの添付義務や、**虚偽の申告**を行った場合の罰則および給付金の返還義務についても明記されています。全体として、経済的な補助を受ける資格があるかを判定するための**行政手続き用フォーマット**となっています。 +``` + +--- + +**質問: 私はこの申請書のどこを記入すればよいですか?** + +```md +ご提示いただいた「**介護保険負担限度額認定申請書**」の主な記入項目について、出典(ソース)に基づきご案内します。 + +この申請書は、食費や居住費の負担軽減を申請するためのもので、主に以下の項目を記入する必要があります。 + +### 1. 被保険者(あなた)に関する基本情報 + +まず、申請書の冒頭にあるあなた自身の情報を記入します。 + +- **申請日と申請先**: 申請する年月日と、市長名(例:X 市長)を記入します。 +- **氏名・住所等**: あなたのフリガナ、氏名、被保険者番号、個人番号(マイナンバー)、生年月日、住所、および連絡先を記入してください。 + +### 2. 介護保険施設の利用状況 + +- **施設名と所在地**: すでに入所(入院)している場合は、その施設の所在地と名称を記入します。 +- **入所年月日**: 施設に入った日付を記入します。 +- **※記入不要な場合**: 施設に入所していない場合や、**ショートステイ**を利用している場合は、この欄の記入は不要です。 + +### 3. 配偶者に関する事項 + +- **配偶者の有無**: 「有」か「無」に丸をつけます。 +- **配偶者の詳細**: 「有」の場合は、配偶者の氏名、生年月日、個人番号、住所、連絡先、および課税状況を記入します。 +- **※記入不要な場合**: 配偶者が「無」の場合は、この項目全体の記入は不要です。なお、ここでの配偶者には、世帯分離している場合や内縁関係の方も含まれます。 + +### 4. 収入および預貯金等に関する申告(重要) + +負担限度額を決定するための重要な判断材料となります。 + +- **収入等**: 自分の状況に該当する項目(①〜⑤)のチェックボックスに印をつけます。これには生活保護の受給状況や、年金収入額(遺族年金・障害年金を含む合計所得)などが関わります。 +- **預貯金等**: 預貯金、有価証券、現金、負債などの合計額が、規定の金額(例:単身 1,000 万円、夫婦 2,000 万円など、区分により異なる)以下であることを確認し、チェックを入れます。 +- **具体的な金額**: 預貯金額、有価証券の評価概算額、その他の金額をそれぞれ記入します。 + +### 5. 申請者が本人以外の場合 + +- **代理人情報**: 申請者が被保険者本人ではなく、家族などが代筆・申請する場合は、申請者の氏名、住所、連絡先、本人との関係を記入します。 +- **※記入不要な場合**: あなた(被保険者)本人が申請する場合は、この欄の記載は不要です。 + +--- + +**補足事項** + +- 預貯金等に関しては、通帳の写しなどの添付資料が必要です。また、複数の口座がある場合はすべて記入する必要があります。 +- 虚偽の申告をした場合、給付額の返還だけでなく、最大 2 倍の加算金を課される可能性があるため注意が必要です。 + +この申請書は、いわば**「家計の健康診断書」**のようなものです。現在の収入や蓄えの状態を正確に伝えることで、適切なサポート(費用の減免)を受けるための手続きとなります。 +``` + +--- + +**質問: 収入等の項目はどれにチェックを付けたらいい?** + +```md +「収入等に関する申告」の欄には、あなたの現在の**住民税の課税状況**、**受給している年金の種類**、および**年間の合計収入額**に応じて、以下の**① から ⑤ のいずれか 1 つ**にチェックを付けてください。 + +### 1. 特別な受給状況に該当する場合 + +- **① にチェック**: **生活保護**を受給している場合。 +- **② にチェック**: 世帯全員が市町村民税非課税で、かつ**「老齢福祉年金」**を受給している場合。 + +### 2. 世帯全員が市町村民税非課税の場合(③〜⑤) + +世帯全員が住民税非課税である方は、**「課税年金収入額 + 遺族年金・障害年金 + その他の合計所得金額」**の合計(年額)によって選ぶ項目が変わります。 + +- **③ にチェック**: 合計が**年額 80 万円以下**の場合。 +- **④ にチェック**: 合計が**年額 80 万円を超え、120 万円以下**の場合。 +- **⑤ にチェック**: 合計が**年額 120 万円を超える**場合。 + +--- + +### 記入時の注意点 + +- **年金の種類の確認**: 遺族年金には、寡婦年金、かん夫年金、母子年金、準母子年金、遺児年金も含まれます。 +- **丸印をつける**: ③〜⑤ にチェックを入れる場合は、あわせて項目内にある【遺族年金・障害年金】のうち、**実際に受給している年金の種類に〇**をつけてください。 +- **預貯金等との連動**: ここで選んだ番号(②〜⑤)によって、後の項目である「預貯金等に関する申告」で認められる資産の限度額が異なります(例:② の方は単身 1,000 万円、⑤ の方は 500 万円以下など)。 + +**「収入等のチェック」は、いわば「サポートの階層(ステージ)を選ぶための階段」のようなものです。** 収入の階段を一段ずつ確認し、自分がどの高さに該当するかを特定することで、受けることができる減免の幅が決まります。 +``` + +## 比較用資料: PDFをNotebookLMに渡した場合の回答 + +```md +この文書は、介護保険サービスを利用する際の**食費や居住費の負担軽減**を申請するための**公式な申請様式**です。申請者は、自身の**世帯の課税状況**や、障害年金を含む**年金収入の合計額**を正確に報告する必要があります。また、預貯金や有価証券といった**資産の総保有額**が一定基準以下であることを証明しなければなりません。これには**配偶者の所得や資産**も含まれ、基準を満たすことで介護施設等の利用料が減額される仕組みです。各項目は**所得段階別の判定基準**に基づいて構成されており、生活保護受給者から非課税世帯まで幅広く対応しています。 +``` + +--- + +**質問: 私はこの申請書のどこを記入すればよいですか?** + +```md +ご提示いただいた「介護保険負担限度額認定申請書」の主な記入項目について、出典に基づいてご説明します。この申請書は、介護保険施設における食費・居住費(滞在費)の負担軽減を受けるためのものです。 + +主に以下の項目を記入する必要があります。 + +### 1. 被保険者(本人)に関する基本情報 +* **被保険者番号、氏名(フリガナ)、住所、生年月日、個人番号(マイナンバー)**を記入します。 +* 連絡先(電話番号)や、現在の住所が今年の1月1日時点の住所と異なる場合は、その当時の住所も記入します。 + +### 2. 世帯の課税状況と収入の申告 +ご自身の世帯の状況に合わせて、以下のいずれかを選択します。 +* **①生活保護受給者**、または**②老齢福祉年金受給者**。 +* **③〜⑤市町村民税世帯非課税者**:年金収入(遺族年金・障害年金を含む)やその他の合計所得金額の合計額に応じて区分が分かれています(80万円以下、80万円超120万円以下、120万円超など)。 + +### 3. 預貯金等に関する申告 +資産の合計額が、お選びの区分(②〜⑤)に応じた基準額以下であることを確認し、具体的な金額を記入します。 +* **預貯金額、有価証券(評価概算額)、その他(現金・負債を含む)**の金額を記入してください。 +* 同じ種類の預貯金等を複数持っている場合は、そのすべてを記入し、通帳等の写しを添える必要があります。 + +### 4. 配偶者に関する事項 +* まず**配偶者の「有・無」**に印をつけます。 +* 「無」の場合は、この欄の記入は不要です。 +* 「有」の場合は、氏名、生年月日、住所、個人番号を記入します。なお、この「配偶者」には、世帯分離している場合や内縁関係にある方も含まれます。 + +### 5. 介護保険施設に関する情報 +* **現在入所(院)している施設がある場合**、その所在地と名称を記入します。 +* ただし、施設に入所していない場合や、ショートステイ(短期入所)のみを利用している場合は、記入不要です。 + +### 6. 申請者(窓口に来る方・手続きをする方)の情報 +* **被保険者本人が申請する場合は、この欄の記入は不要です**。 +* 家族などが代理で申請する場合は、申請者の氏名、住所、本人との関係、連絡先を記入してください。 + +最後に、**申請年月日**を忘れずに記入してください。 + +この申請は、いわば「介護費用の家計診断」のようなものです。ご自身やご家族の家計状況を正確に伝えることで、所得に応じた適切な負担軽減を受けるための準備となります。 +``` + +--- + +**質問: 収入等の項目はどれにチェックを付けたらいい?** + +```md +「収入等に関する申告」の欄では、ご自身の世帯の課税状況や年金などの年間収入額に応じて、**以下の5つの項目のうち当てはまるもの1つ**にチェックを入れます。 + +### 1. 生活保護または老齢福祉年金を受給している場合 +* **①生活保護受給者**、または**②市町村民税世帯非課税である老齢福祉年金受給者**の項目にチェックを入れます。 + +### 2. 世帯全員が市町村民税非課税で、年金等の収入額に応じる場合 +世帯全員が住民税非課税(市町村民税世帯非課税)である場合は、以下の合計金額を確認し、該当する区分を選んでください。 + +**【合計金額の計算に含まれるもの】** +* 課税年金(老齢年金など)の収入額 +* 非課税年金(遺族年金・障害年金)の収入額 +* その他の合計所得金額 + +**【チェックを入れる基準】** +* **③合計額が年額80万円以下の方** +* **④合計額が年額80万円を超え、120万円以下の方** +* **⑤合計額が年額120万円を超える方** + +### 注意事項 +* ③〜⑤のいずれかにチェックを入れる場合、遺族年金や障害年金を受給している方は、**【遺族年金・障害年金】の文字を〇で囲む**必要があります。 +* 遺族年金には、寡婦年金、かん夫年金、母子年金、準母子年金、遺児年金も含まれます。 +* この区分(②〜⑤)によって、預貯金等の資産額の基準(上限)も異なりますので、併せて「預貯金等に関する申告」も確認してください。 + +ご自身の昨年の年金振込通知書や確定申告の控えなどを参考に、年間の合計収入額を計算して選んでください。 +``` \ No newline at end of file From 853c12bdb99da71f3cbba0fa4030d012a137e79c Mon Sep 17 00:00:00 2001 From: harumiWeb Date: Mon, 5 Jan 2026 12:35:53 +0900 Subject: [PATCH 10/11] =?UTF-8?q?docstring=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/backends/test_merged_cells.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/backends/test_merged_cells.py b/tests/backends/test_merged_cells.py index e3859ce..fbafca4 100644 --- a/tests/backends/test_merged_cells.py +++ b/tests/backends/test_merged_cells.py @@ -12,12 +12,18 @@ def _make_merged_book(path: Path) -> None: + """Create a test workbook with a merged cell range. + + Args: + path: Path where the workbook will be saved. + """ wb = Workbook() ws = wb.active ws.title = "Sheet1" ws["A1"] = "Header" ws.merge_cells("A1:C1") wb.save(path) + wb.close() def test_openpyxl_backend_extract_merged_cells(tmp_path: Path) -> None: From 32f14e4c2253942c405e05453559a4d02218705e Mon Sep 17 00:00:00 2001 From: harumiWeb Date: Mon, 5 Jan 2026 12:39:25 +0900 Subject: [PATCH 11/11] v0.3.2 release --- docs/release-notes/v0.3.2.md | 17 +++++++++++++++++ mkdocs.yml | 1 + pyproject.toml | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 docs/release-notes/v0.3.2.md diff --git a/docs/release-notes/v0.3.2.md b/docs/release-notes/v0.3.2.md new file mode 100644 index 0000000..d353016 --- /dev/null +++ b/docs/release-notes/v0.3.2.md @@ -0,0 +1,17 @@ +# v0.3.2 Release Notes + +This release adds merged cell range extraction and output controls, with +pipeline integration and tests to cover the new feature. + +## Highlights + +- `MergedCell` model and `SheetData.merged_cells` added to output. +- Merged cell ranges extracted via openpyxl in standard/verbose modes. +- Output can exclude merged cells via `OutputOptions.filters.include_merged_cells`. +- Pipeline/Backend/Modeling integrations updated with coverage for the new flow. + +## Compatibility Notes + +- Standard/verbose outputs now include `merged_cells` by default. +- Set `StructOptions.include_merged_cells=False` or + `OutputOptions.filters.include_merged_cells=False` to suppress the field. diff --git a/mkdocs.yml b/mkdocs.yml index 528976a..d143ed9 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -27,6 +27,7 @@ nav: - CLI Guide: cli.md - Concept / Why ExStruct?: concept.md - Release Notes: + - v0.3.2: release-notes/v0.3.2.md - v0.3.1: release-notes/v0.3.1.md - v0.3.0: release-notes/v0.3.0.md - v0.2.90: release-notes/v0.2.90.md diff --git a/pyproject.toml b/pyproject.toml index e9fb6ca..68b391f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "exstruct" -version = "0.3.1" +version = "0.3.2" description = "Excel to structured JSON (tables, shapes, charts) for LLM/RAG pipelines" readme = "README.md" license = { file = "LICENSE" }