первый коммит: инструмент, документ, правила, шаблоны
This commit is contained in:
@@ -0,0 +1,6 @@
|
|||||||
|
*.step filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.stp filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.stl filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.glb filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.FCStd filter=zippey diff=zippey
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
.venv/
|
||||||
|
tool/static/
|
||||||
|
*.FCBak
|
||||||
|
*.tmp
|
||||||
|
tmp*/
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# Контекст для ассистента
|
||||||
|
|
||||||
|
Продукт: автобагажники Airholder (RECADA, Аугсбург). Платформа — алюминиевые
|
||||||
|
профили, ноги — гнутая нержавейка 1.4301 t=2–3 мм. Резка и гибка — Blechcon.de.
|
||||||
|
|
||||||
|
## Стандарты
|
||||||
|
- Материал ног: 1.4301 (прибрежная версия 1.4404), t = 3.0 по умолчанию
|
||||||
|
- Радиус гиба: R = 1×t (R3 при t=3)
|
||||||
|
- Крепёж: DIN, класс A2; A4 для прибрежной версии
|
||||||
|
- Между нержавейкой и алюминием всегда изолятор (EPDM)
|
||||||
|
- Покрытие снаружи: полиэфирный порошок (не эпоксид)
|
||||||
|
|
||||||
|
## Архитектура
|
||||||
|
- Ядро: OpenCASCADE напрямую через OCP 7.9.3, headless
|
||||||
|
- FreeCAD — рабочее место инженера, не звено автоматики
|
||||||
|
- Истина: params.json + генератор; геометрия — артефакт
|
||||||
|
- На границах — STEP с именами (XCAF), внутри — BREP
|
||||||
|
|
||||||
|
## Что делать при работе с деталью
|
||||||
|
1. Обмер (measure) → паспорт с толщиной, гибами, отверстиями, разгрузками
|
||||||
|
2. Реверс (fold2) → тело + метрология + целостность
|
||||||
|
3. Правки — операциями инструмента, не руками в CAD
|
||||||
|
4. Экспорт — пакет производства (STEP, DXF, паспорт, BOM)
|
||||||
|
5. Проверка на портале Blechcon перед заказом
|
||||||
|
|
||||||
|
## Незакрытое
|
||||||
|
- Разгрузки в зоне гиба: генерировать по правилу, а не копировать —
|
||||||
|
блокирует параметрический поворот углов через портал
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
# RECADA / Airholder
|
||||||
|
|
||||||
|
Параметрическая система проектирования автобагажников: истина — параметры и код,
|
||||||
|
геометрия — артефакт. Реверс листовых деталей, приёмка по трём критериям,
|
||||||
|
пакет производства для поставщика. Всё headless, на своём сервере в Германии.
|
||||||
|
|
||||||
|
**Рабочая папка:** `C:\CAD COWORK`
|
||||||
|
|
||||||
|
## Структура
|
||||||
|
|
||||||
|
```
|
||||||
|
docs/ документ проекта (RU/DE), резюме, архив ревизий
|
||||||
|
tool/ recada.py — инструмент реверса, документация, код для FreeCAD
|
||||||
|
parts/ детали: STEP, паспорта обмера, генераторы, spec.yaml
|
||||||
|
vehicles/ паспорта машин: точки крепления, зоны, ссылки на Aufbaurichtlinien
|
||||||
|
accessories/ каталог аксессуаров и интерфейсы крепления
|
||||||
|
library/ библиотека для регрессии: детали + ответы портала
|
||||||
|
rules/ dfm_blechcon.json, materials.json, тарифы, правила валидатора
|
||||||
|
ci/ пайплайны сборки и регрессии
|
||||||
|
```
|
||||||
|
|
||||||
|
## Первая установка (один раз)
|
||||||
|
|
||||||
|
**cmd:**
|
||||||
|
```
|
||||||
|
cd /d "C:\CAD COWORK\tool"
|
||||||
|
python -m venv .venv
|
||||||
|
.venv\Scripts\pip install cadquery-ocp build123d networkx numpy scipy streamlit ezdxf pandas
|
||||||
|
```
|
||||||
|
|
||||||
|
**PowerShell:**
|
||||||
|
```powershell
|
||||||
|
cd "C:\CAD COWORK\tool"
|
||||||
|
python -m venv .venv
|
||||||
|
.\.venv\Scripts\pip install cadquery-ocp build123d networkx numpy scipy streamlit ezdxf pandas
|
||||||
|
```
|
||||||
|
|
||||||
|
## Запуск
|
||||||
|
|
||||||
|
**cmd:** `"C:\CAD COWORK\go.bat"`
|
||||||
|
**PowerShell:** `& "C:\CAD COWORK\go.ps1"`
|
||||||
|
|
||||||
|
Скрипты переносят свежий `recada.py` из Downloads (если он там есть) и запускают
|
||||||
|
интерфейс на `http://localhost:8501`.
|
||||||
|
|
||||||
|
Подробности — `tool/УСТАНОВКА.md` и `tool/ЗАПУСК.md`.
|
||||||
|
|
||||||
|
## Три критерия приёмки
|
||||||
|
|
||||||
|
| Критерий | Чем проверяется | Что ловит |
|
||||||
|
|---|---|---|
|
||||||
|
| Метрология | point-sampling двусторонний, до поверхности, порог 99.9 % в 0.05 мм | точность геометрии |
|
||||||
|
| Целостность | свободных рёбер = 0, солидов ≥ 1 | дыры, незамкнутость |
|
||||||
|
| Производство | загрузка на портал поставщика | распознавание как листовой детали |
|
||||||
|
|
||||||
|
Далее: посадка по скану, входной контроль поставки, поле.
|
||||||
|
|
||||||
|
## Правила проекта
|
||||||
|
|
||||||
|
1. Правится только истина (params.json, генераторы, паспорта, rules, спеки).
|
||||||
|
Всё остальное пересобирается — артефакт руками не трогают.
|
||||||
|
2. Файл без SKU и ревизии в имени не покидает сервер.
|
||||||
|
3. При расхождении версий права та, что выше в трубе истины.
|
||||||
|
4. Версия ядра OCCT фиксирована (7.9.3) и записана в project.json;
|
||||||
|
переход — только после прогона регрессии по библиотеке.
|
||||||
|
5. BREP внутри процесса, STEP на любой границе; STEP пишется с именами через XCAF.
|
||||||
|
6. Инструмент входит в стек, только если open source или бесплатен без подписки.
|
||||||
|
|
||||||
|
## Документ
|
||||||
|
|
||||||
|
- `docs/RECADA_проект_полное_описание_v59.pdf` — полная версия, 85 стр., сквозная нумерация 1–44
|
||||||
|
- `docs/RECADA_проект_полное_описание_v59.md` — то же в Markdown: истина документа, для правок и диффов
|
||||||
|
- `docs/RECADA_Projektbeschreibung_v50_DE_komplett.pdf` — немецкая версия, 55 стр.
|
||||||
|
- `docs/RECADA_Резюме_RU_v50.pdf`, `docs/RECADA_Zusammenfassung_DE_v50.pdf` — резюме для внешних
|
||||||
|
|
||||||
|
## Git (когда поднимется сервер)
|
||||||
|
|
||||||
|
```
|
||||||
|
cd /d "C:\CAD COWORK"
|
||||||
|
git init
|
||||||
|
git lfs install
|
||||||
|
git add .
|
||||||
|
git commit -m "первый коммит: инструмент, документ, правила, шаблоны"
|
||||||
|
git remote add origin git@<сервер>:recada/project.git
|
||||||
|
git push -u origin main
|
||||||
|
```
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Пока пусто. См. README.md — назначение папки.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Пока пусто. См. README.md — назначение папки.
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,13 @@
|
|||||||
|
@echo off
|
||||||
|
rem Start RECADA: move fresh recada.py from Downloads + launch UI
|
||||||
|
setlocal
|
||||||
|
set ROOT=C:\CAD COWORK
|
||||||
|
set DL=%USERPROFILE%\Downloads\recada.py
|
||||||
|
|
||||||
|
if exist "%DL%" (
|
||||||
|
move /Y "%DL%" "%ROOT%\tool\recada.py"
|
||||||
|
echo recada.py updated from Downloads
|
||||||
|
)
|
||||||
|
|
||||||
|
cd /d "%ROOT%\tool"
|
||||||
|
".venv\Scripts\python.exe" -m streamlit run recada.py --server.maxUploadSize 2000
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# Запуск RECADA: перенос свежего recada.py из Downloads + старт интерфейса
|
||||||
|
$root = "C:\CAD COWORK"
|
||||||
|
$dl = Join-Path $env:USERPROFILE "Downloads\recada.py"
|
||||||
|
|
||||||
|
if (Test-Path $dl) {
|
||||||
|
Move-Item -Force $dl (Join-Path $root "tool\recada.py")
|
||||||
|
Write-Host "Обновлён recada.py из Downloads" -ForegroundColor Green
|
||||||
|
}
|
||||||
|
|
||||||
|
Set-Location (Join-Path $root "tool")
|
||||||
|
& ".\.venv\Scripts\python.exe" -m streamlit run recada.py --server.maxUploadSize 2000
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Пока пусто. См. README.md — назначение папки.
|
||||||
Vendored
+40
@@ -0,0 +1,40 @@
|
|||||||
|
# Внешние датасеты — полигон для тестов, не обучающие данные
|
||||||
|
|
||||||
|
Правило: любой внешний набор входит сюда только после проверки лицензии на коммерческое использование
|
||||||
|
и используется как полигон для регрессии и калибровки нашего инструмента, не как обучающая выборка.
|
||||||
|
|
||||||
|
## BenDFM (UGent-CVAMO, 2026) — первый приоритет
|
||||||
|
- 20 000 гнутых деталей STEP + развёртки STEP + последовательность гибов + метки коллизий (JSON)
|
||||||
|
- BenDFM-U: 6 000 деталей с 7–10 гибами, 50/50 по перекрытиям при развёртке
|
||||||
|
- Репозиторий: github.com/UGent-CVAMO/bendfm — примеры и описание форматов
|
||||||
|
- Полный датасет: Zenodo (ссылка в репозитории)
|
||||||
|
- Задачи: регрессия unfold; каталог разгрузок; проверка валидатора коллизий
|
||||||
|
|
||||||
|
## CC3D / CC3D-Ops (Uni Luxembourg) — второй приоритет
|
||||||
|
- пары STEP + симулированный скан с шумом
|
||||||
|
- Задача: входной контроль по скану, метрология «скан против STEP»
|
||||||
|
|
||||||
|
## AutoMate (Zenodo, открытый)
|
||||||
|
- 100 000 пар сопряжений в сборках
|
||||||
|
- Задача: проверка эвристик графа связей
|
||||||
|
|
||||||
|
## NUMISHEET 2025 Industrial Benchmark (Zenodo, DOI 10.5281/zenodo.17662411) — второй приоритет
|
||||||
|
- узел Mercedes-Benz T-Node из 1.4301: CAD инструмента и детали (STEP/IGES/STL),
|
||||||
|
конститутивная модель 1.4301, сканы после пружинения
|
||||||
|
- Задача: паспорт материала для CalculiX; проверка расчёта пружинения против сканов
|
||||||
|
|
||||||
|
## NUMISHEET 1993 U-Draw Bending — при расчёте пружинения
|
||||||
|
- эталон свободной U-гибки с замерами; тест алгоритма компенсации
|
||||||
|
|
||||||
|
## Инструмент: WILA (регистрация), Rolleri / ToolsPress (открыто) — см. rules/tooling/
|
||||||
|
|
||||||
|
## Не наше (зафиксировано, чтобы не искать): ISMF TINY, Automotive BIW Springback,
|
||||||
|
## NUMISHEET DP800, RWTH MUC-Test — другие процессы и материалы
|
||||||
|
|
||||||
|
## DOI (из пятого обзора)
|
||||||
|
- BenDFM: 10.5281/zenodo.18622958
|
||||||
|
- NUMISHEET 2025 T-Node: 10.5281/zenodo.17662411
|
||||||
|
- ESAFORM EXACT: 10.5281/zenodo.6874577 (не наши материалы; образец структуры «эксперимент + расчёт»)
|
||||||
|
- SMCAD: github.com/MaFangchang/SMCAD-dataset — тест распознавания элементов (гиб / фланец / вырез / отбортовка)
|
||||||
|
- HeteroMF: github.com/MaFangchang — стресс-тест щупа на чужих формах (жалюзи, рёбра)
|
||||||
|
Полный список ссылок — приложение к разделу 42 документа.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Пока пусто. См. README.md — назначение папки.
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,22 @@
|
|||||||
|
sku: ""
|
||||||
|
rev: "A"
|
||||||
|
intent: "зачем деталь"
|
||||||
|
vehicle: ""
|
||||||
|
role: "нога | кронштейн крыши | поперечина | адаптер"
|
||||||
|
material: "1.4301"
|
||||||
|
thickness_mm: 3.0
|
||||||
|
interfaces:
|
||||||
|
- name: "sole"
|
||||||
|
mates_with: "vehicle.mount_points.L1"
|
||||||
|
- name: "head"
|
||||||
|
mates_with: "platform.tnut"
|
||||||
|
constraints:
|
||||||
|
metrology_min_percent: 99.9
|
||||||
|
watertight: true
|
||||||
|
portal_accepted: null
|
||||||
|
mass_max_kg: null
|
||||||
|
clearance_to_roof_min_mm: 20
|
||||||
|
non_goals:
|
||||||
|
- "не воспроизводим следы кернения оригинала"
|
||||||
|
datums:
|
||||||
|
- "базовая плоскость: опорная грань на крыше"
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Пока пусто. См. README.md — назначение папки.
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"_comment": "Правила поставщика. Пополняется из ответов портала и писем Blechcon.",
|
||||||
|
"bend_radius_min_factor": 1.0,
|
||||||
|
"flange_min_mm": 15,
|
||||||
|
"hole_to_bend_min_factor": 2.5,
|
||||||
|
"hole_to_edge_min_factor": 2.0,
|
||||||
|
"slot_min_width_factor": 1.0,
|
||||||
|
"sheet_max_mm": [3000, 1500],
|
||||||
|
"kerf_mm": 0.2,
|
||||||
|
"k_factor_table": {"_comment": "R/t -> K; калибруется по ответам портала",
|
||||||
|
"1.0": 0.42, "1.5": 0.44, "2.0": 0.45},
|
||||||
|
"gls": {"max_weight_kg": 40, "max_length_mm": 2000}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"1.4301": {"name": "Edelstahl 1.4301 (AISI 304)", "rho_kg_mm3": 7.9e-6,
|
||||||
|
"Rp02_MPa": 230, "E_MPa": 200000, "korrosion": "mittel", "uv": "bestaendig"},
|
||||||
|
"1.4404": {"name": "Edelstahl 1.4404 (316L)", "rho_kg_mm3": 8.0e-6,
|
||||||
|
"Rp02_MPa": 220, "E_MPa": 200000, "korrosion": "hoch (Chloride)", "uv": "bestaendig"},
|
||||||
|
"6063T6": {"name": "Aluminium 6063 T6", "rho_kg_mm3": 2.7e-6,
|
||||||
|
"Rp02_MPa": 214, "E_MPa": 69000, "korrosion": "mittel", "uv": "bestaendig"},
|
||||||
|
"6082T6": {"name": "Aluminium 6082 T6", "rho_kg_mm3": 2.7e-6,
|
||||||
|
"Rp02_MPa": 260, "E_MPa": 70000, "korrosion": "mittel", "uv": "bestaendig"},
|
||||||
|
"EPDM": {"name": "EPDM", "rho_kg_mm3": 1.2e-6, "uv": "bestaendig", "rolle": "Isolator"},
|
||||||
|
"ASA": {"name": "ASA", "rho_kg_mm3": 1.07e-6, "uv": "bestaendig"}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# Инструмент прессов
|
||||||
|
|
||||||
|
Сюда — STEP/DXF пуансонов и матриц из библиотек WILA / Rolleri после ответа Blechcon
|
||||||
|
о стандарте инструмента (Trumpf-WILA или Promecam) и ширинах матриц в наличии.
|
||||||
|
|
||||||
|
tooling.json — по каждому инструменту: имя, стандарт, V (ширина паза), R кромки,
|
||||||
|
рабочая высота, тоннаж на метр, минимальная полка.
|
||||||
|
|
||||||
|
Источники: портал WILA (Smart Tooling), каталоги Rolleri / ToolsPress / Precitools.
|
||||||
|
Используется: fold2 + check_tooling — булева проверка пересечения инструмента
|
||||||
|
с уже согнутой частью на каждом шаге оригами-кинематики.
|
||||||
@@ -0,0 +1,467 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# RECADA — ПАРАМЕТРИЧЕСКАЯ модель детали LRDE-2BR1-00-2B (оригами-кинематика).
|
||||||
|
#
|
||||||
|
# Модель: жёсткие пластины оболочки + шарниры на линиях гиба.
|
||||||
|
# Меняете DELTA у любого гиба — поддерево поворачивается, форма перестраивается.
|
||||||
|
# Проверено: при нулевых DELTA совпадение с оригиналом 0.00000 мм (100 % точек).
|
||||||
|
#
|
||||||
|
# Обмер: толщина 3.0 мм · гибов 7 · отверстий 6
|
||||||
|
# объём эталона 78031.59 мм3
|
||||||
|
|
||||||
|
import FreeCAD as App, Part, zlib, base64, math
|
||||||
|
from FreeCAD import Vector, Placement, Rotation
|
||||||
|
|
||||||
|
# ================= ПАРАМЕТРЫ ГИБОВ =================
|
||||||
|
# angle — измеренный поворот; DELTA — ваша добавка в градусах
|
||||||
|
JOINTS = [
|
||||||
|
dict(name="bend_94", angle=90.000, axis=(0.16314, -0.98660, -0.00000), point=(17.150, 6.509, 35.200), R=3.00, subtree=[13, 16, 17]),
|
||||||
|
dict(name="bend_91", angle=90.000, axis=(-0.16314, 0.98660, -0.00000), point=(17.150, 6.509, -35.200), R=3.00, subtree=[10, 14]),
|
||||||
|
dict(name="bend_25", angle=45.000, axis=(0.00000, 0.00000, 1.00000), point=(-40.276, 86.000, 37.700), R=3.00, subtree=[0, 1, 2, 3, 4, 5]),
|
||||||
|
dict(name="bend_11", angle=45.000, axis=(-0.00000, 0.00000, 1.00000), point=(-57.404, 90.400, 0.000), R=3.00, subtree=[0, 1]),
|
||||||
|
dict(name="bend_54", angle=80.611, axis=(0.00000, 0.00000, 1.00000), point=(5.494, 77.000, 0.000), R=3.00, subtree=[8]),
|
||||||
|
dict(name="bend_93", angle=90.000, axis=(0.00000, -0.00000, 1.00000), point=(30.438, -73.848, 0.000), R=3.00, subtree=[12]),
|
||||||
|
dict(name="bend_176", angle=80.611, axis=(0.00000, -0.00000, -1.00000), point=(20.648, -84.589, 0.000), R=3.00, subtree=[19]),
|
||||||
|
]
|
||||||
|
|
||||||
|
DELTA = { # <<< МЕНЯЙТЕ ЗДЕСЬ
|
||||||
|
"bend_94": 0.0,
|
||||||
|
"bend_91": 0.0,
|
||||||
|
"bend_25": 0.0,
|
||||||
|
"bend_11": 0.0,
|
||||||
|
"bend_54": 0.0,
|
||||||
|
"bend_93": 0.0,
|
||||||
|
"bend_176": 0.0,
|
||||||
|
}
|
||||||
|
|
||||||
|
THICKNESS = 3.0 # толщина листа
|
||||||
|
|
||||||
|
# ================= СКЕЛЕТ (пластины оболочки) =================
|
||||||
|
SHELL = (
|
||||||
|
"eNrsvUvPLElyprc/vyKXumXC75fliBxpI2AEkRgthRJZ4hAgugn2UML8e72PuXtkZGbEdzLrVGmarSqSzer4PCP8Ym53e+2v/8f/7ed//j/++l9++n9++j//"
|
||||||
|
"6ee/+U8//fPP37791b/7m7/6d3/97y9/+8d//uM//fEf/svlP8b/4fLf/N1/e/kP//zzHy5/9dOf/u6nv//52//yx7/76T//4x//8KeL+/ZX//ov//fP4e//"
|
||||||
|
"dPHeffOXems59uZLTKn60Fq/xMvVX9xFfyy30KLXAFd97bnWdIk3t/vHh9oZfY234lstKcWaawn615+vPvEOd6vrC6Ek70sL+mjKemUuekWKJYSs0e5yDTf9"
|
||||||
|
"Xf+9JFe6ry5VPS8Xz3uu6ab5RU2wuah/69nzg777p/kcL4+TSbHpQ9tk/C1XVztTqT21Xppmf8sXW2/Vf7iLlh/yJcSLZq6fhpxD19hcSqxFI/PDJ3OpY6Dz"
|
||||||
|
"NQUNyq0VvbtffFk7VbXOFlywgaVp03yNPbueii9pDfQx9BZb8n28saSqPXAh9BR9qTGugTXElHMqY4bF51B8zC2zpTrFOUy7V5x2QOfJsNx0kjFoP3xyWYua"
|
||||||
|
"w6JrvDDXFvwYmF3SE+2lj67nWOfA1FLVJuQa54qzKKJpGVVf776UteLqNKdefBXJ2MDUctbeNReyz5pHmQO7HreWmiu1jIFZk9Ono9c6eg1zjj6krv1PyYU0"
|
||||||
|
"3xhcjdmFqP/vNc85LmuFer1eU7ONE7Gw5F6q/uLWDL0+3Lv3Ojw/ziTqQcgh6mnz+rf5wqClanW+OC1nDNROibarCC2EGtNcSmi+FT3T5tax3UHvj02knF3W"
|
||||||
|
"vBc5aBatJhd91nGPgbnVnGPkkF1Mbh5fbLH2oCV7/X4MDNrDnryDKnIU8dtADSlB2w19jUX7rl/5qHPqolud7RjIF4t32skex6e9qE+HmLUx2nS9eg4supWi"
|
||||||
|
"hpi0xDFQR6KJiLaa7p+ba9F/zSK+pu0NY9Happ5FEyIezbP4EMbIyu3osWn4vAQibvGIrCVqUZrAPGmOSZdTdNXbGKcNd5CmPpN0pd0cyM5qr2yH5xvZGF27"
|
||||||
|
"IGrTxLX/Y2TXdUq6SkHchnfOp6LmJNrTqlO/fBOf85p60mlBRlFHeUk8rGKJvmsaWk+AfuxhFwVErUH/1BjGw6ZrE0T6moEYZhkPuwuueW28fsNFt2eiTtGu"
|
||||||
|
"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"
|
||||||
|
"nurU2yTHrHMyVdxxbNp3ufDDLiH92uMuGUZhepRR1ZLvRxHA7kCA5JRZVW90zs2AKVbWXUeN2OHY6+Fb94w4kVrXlwsBiHeg8msA03nWQ4h/ebL1KCREXyt9"
|
||||||
|
"1Un4twjrYx78cBfDALV8uI4LXfXxNprLqzwJJImqKNXRkv4lRGQ7BGKh9J+aaa+S0ZSHFPrR9gHZbGmvZsd22vYUok3z8XP+9Hz70TTE4MmeBhQeLHkaKU8O"
|
||||||
|
"kN9nU498+M0ffcUe32TlB5z8o1N8W9I8suFH8VvHtdtL4Flk/3T0pQ4/98PRU7ICUjs1LJ3+W55F4mxf5R6vYw9fCv+h6xfOV6pokl05XKt+mMn0CTdX+cau"
|
||||||
|
"Ik4wOnRkvDRpWflDBL+nu3woOgP9g5MpvZMqgBgCo33BpH6HV70v5dPNL3V+3MX04VRllZJWI+qw5s8VhQWvuO8zYPXFVD+Z6cFEPyTivZlZDs3MH7Ayrw/L"
|
||||||
|
"JKt6WTZv2vKnXswHA5ucjR6ezZJIXOLiLodPD39udvfm48hupAmUQx/Hj7g4Tj0c3/UkHZqrYhw43Wi27TeAp3yzrHu4dy7uzI0kkZ3qkx/Jjw7ZBP1oGBcA"
|
||||||
|
"fyF+mQ78SGPs0Stl19Pr2xAvca63vtxIb7sBz13Y+w9KE6Ts4XFi2VrojNN/fXr4+1ff56rU3/s+82ke1S9xfb56dM/XPNovWQo6ELZp57S9nvxl4Dc9+60f"
|
||||||
|
"3dYTH/IDrzW4eqyQbJRZWP6+1/50fSQ2FpIUvHVUGh+buIDX0z8fRCX8Q1QiX36FeMRbEZcvXPG7gEKle5cfYaat4sfaioXqJyjV6/OjF8yl34NP2U/Zsg8+"
|
||||||
|
"ldNNsCBTsvWS3bEINpj06xI7VvS3AxB7O6h36H91hqBYMehGFxALySWKqvLgW6uRwRVoWW+QDdLGNzK4j6d6lYSMzV979IPtg1ShuG79ZUa8bhcB7eE0AvrD"
|
||||||
|
"gdaHC3/ggcyXM9+j5AzFq8PBfu57nExk73tMX542+Mp4pUqp6yIv6TzO2YUj92k8cALPcrIzH7BxDe1n/9oHPNFg9j7gPJXzY+eprcGlkbV276HwxToeNmzo"
|
||||||
|
"UfsNm0GM5D/x1e6UmonFd+h1njB99jlADOsXIIbl+Fi/+pmV/OH8kpVcw7yNV/E+It2BBJ82tZeGMLZQECg3ee5bHl1sZIgg4Cl+ninjdqeMv5z8ypI5dGdR"
|
||||||
|
"bmlpCzxJs1+dvK98MNkDs+y/+uytHvWd2bvPT6f9ZS/v385x9kaCZ6FPVwgrxnXgI6ALC60HJXbz8NOY9j7529Gbvb83sALgAKydIMWzlifz9M1pHdbQHE7q"
|
||||||
|
"+sWsdocVy3ftZ83vf/3jP/2Xf/jjH+JfX9z69//wh7/9l3/86Q//8K//9NN//sc//uFP+svf/Ou//F8//R3NokqesKmgetIecTDEdtSX5qgUzpRaNFQX6nlL"
|
||||||
|
"mqkW78dReCGLSKSi5fklRcv584e30lner8Y2Z+2uylG7K5pk09c4+U1resLOXWlL+w+msYwbeAoyiWUxreym+yCkXrSUozbuw+tbX1/w2i7rq+kfnsCsbQHM"
|
||||||
|
"maZwa14kptLeJU3f2yqDeXheSlydTOgWTT5DaVM4z3YmL++29KOH4T6Ot5y1eSqH/bk8SdjUEki1DWvTG2aLbgyFLTtE6bHK5/EPobwx7sGpTLq1Xx25Ht4b"
|
||||||
|
"ynqtbX8GasHTzz21mRx2OOliwRcrlMXQ2NC3s+GLB0pt6MvY58RHUoo/uCVnr3kdONJjAmUrgVRzcD5FjXH2GXqrhc0Jy/ikrc27OPQ2WXrEkm6KSzvPzjdv"
|
||||||
|
"vwDW60GRo2xCVn/fdcN575y8OeWPtleHJEFD3U2+Jw0dnc8Hx1PphYiuXUczBpDBov/gLvhD2v7wKlx/+C68djn7N86JjpqtpRdfx9ndeLPZmgVYX1qqSVxb"
|
||||||
|
"h6yJQTf2/eVxfBVs9O2y520oRyF/61Ojc2Q8X5LhS3PzJZ+tLs7nVcbK6iIu7QHMZCAm5WJDo6EM0uV4KBYaaqivjhbhE+53Dg0UQ1BHkbY9o+sNHt++vJ10"
|
||||||
|
"/ovExfoCEbKfHmx3SdBY2YA77afWjFnM7HL5ds2J2hG6go/yx7EOMZ5ARdMqhB2TE7+KAGpRVDs+y1CcXJ5qyPWFMZk+0pfCpCKG0mzDBTJRdh0MD9YB/iKh"
|
||||||
|
"lmbt+XrM1Mm43NdcXpdQQVqh8VS6d/ULtHwuJc1HawkV/qXtCHUbGnXmsuB9btuoAhe1hr5z9pGiFDo95XGLzmYvhRE+hJsx3X8K0ke1RNL7AT4sId+AsCT8"
|
||||||
|
"NHxGlaZNxUDA6uS1awkADJNNkNNC8WBoAJLUx9L2hEc+fqQnbvCrPWUAb0baV5kB7bN1vNVy73kd32hw22dRyYbOH/CvmnYPbZILNTukaTzd9WgtC9JQnTUT"
|
||||||
|
"icfB5lPxYvht+Gix4n2vAVggcwBEwITo7x2nw+ioevlt4XlnBaC+mI+kXd5uNvOgPBOjLnnlq9KbKQGTRo3NeDH+f8poaouWwlFK29SiL9jOG7f8+nQwb/KV"
|
||||||
|
"69mFfIN9Xde9f4Mr2thv37/pR8t4g61cz27mG9zruhjAG0xxLeOtK/+6lreYzOlavmZj2zLeYIxrGW/d+NdlvMVjrmdM5g1Wdl287A0OOdbyzWAeIiQoY/9L"
|
||||||
|
"BiT+o5PKFjMp09Gd9LTRcDtZrfEkxsF+jhT+E0slkt5TIl0s2gPIum6NNMKYiFyM0pFTFf+Qy1QcvLTG6znSqbaMlrGfmAhWf0leaSFWMCZ2tryjzsOXk8Vd"
|
||||||
|
"T1Z39R9ZIL/N+n5JA7sP+ox9MLTYXGh7bqmBCdigCDy0A4POUofcYZvPT+bz0IiRQtmc3GPPxt3DfaNPMKzjc3dGUFzC5ejZ9aHTZ89WEDTbMx40zTvu3Lfr"
|
||||||
|
"YUhB/7BYj55tbQ0ziTl0pH9o3VisDjVfjp49tnOsBaDcTxq8DfFLMi6Q5bVvAkg2LXAzowW47kf4lHAOjuR69vT1pE4O5ej0Dg/q7XV93DSUzqSS1NhcZTjx"
|
||||||
|
"6rtH/XrS/uCkS3896fbQG3U76C8I8rCp1eGcfmWK/HGC/C4Tuf44F/mF++DPLuGbNzOftQs96TxJ/RL/oKKFZXvEtHXQcrOo73DQF61J81H4ljaEiS4BbnWI"
|
||||||
|
"jy8eium0tlwQcqpC4yH4U2AflR9zwafN+/5VU9XXTbqebMAIIHHe39mkN1pcvtNE85zc3hzrpWloJxpgokCa0BMhmmeX9GZQaj05u8UAqPL5c/9+w9S37tGP"
|
||||||
|
"ruv6Ky3sl/XO/W30nXjcebNWUGsAAEp1ZRFaK85EEglgyinEtDx4Fqm7nvzJv/wmjJ/s/IvDFn958PBKQ0GI85V+5A69dju1ytRA1rKP0Xbfj/2s9y6CXKev"
|
||||||
|
"/u5Oe6lG66VK7wKaQ/nNK2p4eLLEwXmSNb7iZ6mv/J4++kgR3Rp/or9FvRVPnW6jR8w97wOsaYLEtVkKUGEzah7++LOvnLxq9mglNZ9Qhr5vTNp26Hq6Bauv"
|
||||||
|
"4cmA632T3qMcI5xz8nifcPzQU7SflRS3XEYu/3TZnDx+JaK+SPaxMex9CZSzyLgGUTjPDJszXzgxg7sytcJbvo52tId/IZcpOel5VtuxefItUuEMklu6pXaQ"
|
||||||
|
"/Jyfr9mdDv+ia93JfD9tSfZ2ojSVkgBGeSL6hdqUFdt6Gw8WUHqvzZKxTzvoaqwyvjbLjatZ7hW/QSfhDIegbYk7erj16XRfNMKNR41wKXwERUmKa16M5/nR"
|
||||||
|
"1VpCAXVHd7p7uuF1N3LktbX1ioe/DQIbLPHkVc9NPe/9keORvKj0MdAYAqKr6/D1fqdf/7hy246atMYvetG6sxyVCcVx8tfzTx313NXXAWn0FJK1lRoyKS4A"
|
||||||
|
"yVOigSL4bY3nv6AiGoBGKB0cRsO59EfvOuuYezjHrav9eQrQ9/bj+FvXsybEv8HeH33rZCcfyOlkxNc0daSy/fguHt+QQ/XwqztyekWO+wbHw77BtKKgEVxt"
|
||||||
|
"BqqQhry5Ve/pwItv/55VcCUci4pApVJeMfUyOkEcjfcju730Gpt1vTFTz2TF2bsOGxLb5szOKrVbV688P5OG/D0+iYPGw1eDqEBFt8RYOn/a2MMe5Uf9jEnn"
|
||||||
|
"SnjY2XuCF23+/qSb+V+63Pu3rpkcX8dDo/0LXjbl9vU7N/+7bX6vSSfVKELycQVDPjjknXEPyKSfsce38+mtQBq8O7aQxJ2ZoRdEgKCbUihM8MNy5PpKpxRD"
|
||||||
|
"9k5LaDlZHjYdbQrdghbr+RV27oxnHp3SF5zZogiX73/uu2u6tl/jQ+EUiG7kLLXfpnvBuxQVbnQSclhqORp034TzAZit22hLr8rTHjT8lOgjfJEukysUbZlf"
|
||||||
|
"7gYqB7ikoJ6NCgot/SZuWhpFigvU6GDBmJoxFcNX3mcgIc/0UNfd1WVKxfhZtwUr3DaA9gLkXUn5l7PGrEO2LnDjcN8Er3efg9d/gqbuEv3CajNc3RrHK95m"
|
||||||
|
"KoZO7Jo1NCvUfrG6stD831ve+3upw/A6RfDNnXVOGp6rt2dLpLE1Qt/UkuQ+k8mudCrWfHTQRJSpt18EZP2GdGb0saK97SKgv/zjkyIdgV+mEsqtNHhAThuw"
|
||||||
|
"8cG1rbnc8308uY4nt9F/cny/2V38HqP9LVoWvM9ng2UwWc86oJz8gskLgO9IO0/kJ9XiFxZfKbIOO6Bm3tGNeOZ/xtH8kc67JVJTNmujwCBJEfjq0by7XD64"
|
||||||
|
"UwHk1gLILFwbPF77WqfyGaTPYvDHvk5v2I2kpxBBtTOE6Jl3+/5uyiQZ4FQD2L0sBEBrfdhldtJasS1IsHhzRAZFbyPh5RzQ6u3T9NR9ANjipNNLG6uDJ7wt"
|
||||||
|
"UdItVJodAMIdgUGdVKznUXYWICcOnPjcFhMCjD0AyszbQcjbeNB7p3n9BI/g1znQq/9oR4+PNICLkMnPAMtjy+2iBkm2IQlCF/fByvRDqWlilVSdogDnGS9+"
|
||||||
|
"d54yH7r3Bb4GenQ2hDbsL8P8AM7Y0/S4jpoThvNiEFxpM2wJ0NavcfS2jje6rA1sQhz5NLiu4FpO2n1u2fsL17a6BBLo15/yYxdNOoXkfa9Z/rNpaemxHzP9"
|
||||||
|
"7jTQXx6bBDpafjz20KSHhkWp8kALaXRyZ/wsYKUFK3XDDbhHqHtwrADway0tLNPdPOQeW7SSI7clLn5yXHsgONpaLOyEd69CkVBIvUTyhEZrTKspGO3Yv7Ow"
|
||||||
|
"Tz4UbpKMQIVnu7Y5zuVb7hNR8EStdPJblFbHUqzJpIHrxVWz/a4gpKs5dKrnAPeN6qXVHjg4PEdk2I42jfSQA0eCtoQz386Z9xksesAp3VaV+xGfOSHZ6xHN"
|
||||||
|
"HpDs9YhmX0m2vDS2HDR7PSLa0Qi1A9cVWmV6IAU1nAXUV6S/iDvp8XY2qUBpZOKgxFE3IylDgmIcd5IqHYfgoTXzzpknKaXXiwcClPbgqHn7YiZRX0gG4FjA"
|
||||||
|
"F1yYr5+QjszEDEymw4MUyIIObepx31lc+UhUu0aeqM6x0SNzFG5IFaRReY+Gh0UHiZWDTXwn5mI9wO9xj/fvpaQ5gAgtRjpY0Plkdy99wftiWkOesjCBfQ82"
|
||||||
|
"Hzb1uJezY4NM6Ro/vJH7yCMAzH27j+9q12BFSi0HtAKiC7PUynWghDItP3XsYdWmSU+TKg4+cqHRU9rqMt07B/kr3MRfmdUMrvImq9nQ2U55DbfQW8NzegaN"
|
||||||
|
"Xs0mk4B69eCMWCD5IwIj8zWC6QZmAv1c0qdXL91ASqYZvVZIt3q9ISxg6NO1fCR1pcZn3kL5GklNhn3fDGQlR4QV0DBQRJsYS2JOWEcx9HZPGvhIVaDKDDUN"
|
||||||
|
"rG/wpf6cBOKvLC8so/E9eTH01O9pOuVXYTG7JSbQwB/vYSX3Pz5fRPHZ3J4uYqX0Oz5dROvSnp4vYjZsqqGnfk8Z5zKeaKnXVzX1gxv5myqp31tV+Yw8cTJk"
|
||||||
|
"fLe61S0vdANrG5RG8U22/NiXNCh3x/b/zLuVwCGjirU12jreb+Vz9VK5BP6T1ocex1OY/RdnD55ibSTMoq2zE3kk/clVb82eMlOVDSd5U1dvIk+Lw6BFFGzT"
|
||||||
|
"MPp6yxCPYTR4X3296dLjsUYtk6+Odla9knBFQ/utyTavkVCPua6+1fQklG5PA4RqrfccbRaLNhkAyq19COEWHOD93riRhs4yCNrWlhBULq0w64anNVlcV5GA"
|
||||||
|
"qEurybY3X9HorTQma90paV7Y6Fq1NRPnpzqFsrqtf6OPVXXe0RDJjw5MnQQl/KVpa4Mh7sUJ5Bzd2h/ahXHazhpkza5IZLXSD7HAPsdPwZAE0SpMcDfrFFZB"
|
||||||
|
"fzPYr63BWNMOgbBReR17ZGi5RXsZvVX+WH85qmsI80kzaquTIp2uqBypucy4Qb8ZCyE1zHAW/dpe6C6PMPLaXhrogXw9G5HzU2fOyNFbpu22lwZh7Wl7SfuZ"
|
||||||
|
"DdfnT3Ea+LlN34DvlUSmPXyZq2CxulecLAteiy2VDm7Wq2YQBNvZfRS1tZTuHc6aQVMYzvMInPQbhW+6TN16SM1eZdYV04l0rYemJb6Jmgv4bpFaOQgi0W28"
|
||||||
|
"I5pSv/d6F91GWDNd/dY+eRq6l5aqRcLqSA+lKxXIfXGjXiTpRKe5b292Bq68vkg/Tm1bWSJ3214PYmp53F6tpznrqbf9tBPTzXN76XzXwJIPZL2uPUqR3pG6"
|
||||||
|
"Sm20mOO3+OhpQeVzXNubWzOwaBoDrPZj+LdFlzQsbAOslFCVGAj1cMNgMr6SUd8c4dKtQaKo2XH9kjUb8xbUBeyZCvc6u2QhbwAS051OuWwdNr3vnDE9NsuY"
|
||||||
|
"MJBZ1PjhAI6L+LXFeD3ZAvewxRJ7vkJK66dYeFS2+0cKBinSp+ctpv/gmrD9VGc9OrJVq4kDewVIYmlJfRRy4pYFnVdSDdxbKXGjJLfSPY5S+VDyKn5zN/2y"
|
||||||
|
"Wq82MOxHAFA/B8heb7R6klF5/C3ckp22DqEbKc/iuX0LtvTUfW2yqF0HthXUeNu+kSJk2LwIVHAea7dgifRSnLM0pwOiE5xGyyqgnQNgq7p0lYaVNvijaIe2"
|
||||||
|
"k0yPNLCdLU27Glrsm63tDwDVPnCzHy72ZK3Xw8Vef5XVHqfIHHX2CGjxZKgv2Gc/I8/iPiVaKXL6JW7ETWfVLaAlz1Ja3/eoe9KgHV1wPbpBXFB1nuIZLBf4"
|
||||||
|
"0KTH3AE67drb2mbXsh+NWZykfjzkbdBUuM68jcc0jzHf9tFx0pXAZVBtECWG5zHyEWMh1pot+LoquysJad0C/SWtzmm/UeqGyIZ+jZnM9z5LAqzLcqJt54Zj"
|
||||||
|
"/uskcFiDlWiQsC6VDYSbcHOjSGzc1JOe7z+cFPPmUn+N/Js3OdKPMKSzKCqLlMZBoEWqB9Ezy4d9bPueyuoS/zYJ73u+MzBZ2M2ytJBTaHl+wRUMXcIj+sJM"
|
||||||
|
"BRiqRKTzRlkQ+u9KmrMW9ydLvR6v9YeXemxjDR0B/0y2dhyja3gHmd4CYKNl9547ZxendhHAkADTSDrG6v0tVTZbfih+jwGuPWLuHiZUpkqTDZU6tThgjePo"
|
||||||
|
"bk2z0lgfMIalWRiCfp4dgyMJsOI1ri7jLMB6QmoLCM9aFPvC2+jtba1qxZC1v7II86Ys0gEaaGkd5+hTW6V8xG7ZH7NnLDFbT+nhRHRexqdjd2nO3OPqARus"
|
||||||
|
"S7avw7i672kbbSfiw54WtKR6GYaDM8sVYTDNFXq2VG6e9Yksa09Lt8rabDszf+mpQElx7qkoo5A8EoY6bXpto4eBr8j30Wi6W79cc+P50eYWhN4mmUH/6bXK"
|
||||||
|
"iP5dMEMoDUr8zOG4aZyhQVygSDuQlMWRXLCpjm68GKJRYmI84zS65mVuv+rasnAAHKartC9uO8fureyYLoETK9gYbbXuNqPd/H1nySPOS49eOwtek/UBMJvB"
|
||||||
|
"F+s23lYvdnYWHV9qZltnYjsLbJhBcfjtl0Qi5ijrqB6AeNSOoTyN6QJoIQWpFhoSwwudpW94ctvoWT1bHdMtOqPz+62HcEz0AA6ytLHHCr+ktFWPZSy3PLdI"
|
||||||
|
"m08nQ7oG3O1HOFXGqjL4EY4FBA6PYW390SO/LDgrpFz1uOvjXbBtAO8CNdkoqHCR6DSR+2ivvNvcPNr71ofNNVzeBetLv6CAw3TZKNrcZK68bVtFWAHz2S1B"
|
||||||
|
"QZ9pKQrcEtvWCsR2QKGIW2d0vHg0gdG7jFj4pa9El8z8Y09hEmQ30WN689CIMknuaRN6XT9zhFwAGDPTr15G3YAZ+TUYdvSw/HC9lOHAnBTAm+hoi/vCOJ2J"
|
||||||
|
"CBBpopmHK5E3soDGiiwDfIgITZVQWgyPZtQEKp1xnmFGUfXYJyBO30wpWkTo5PtSp6YpJaNW7AzFffhshykVrLldLsOKqp30BHGtukNAao0EC5o/tZH9lIAc"
|
||||||
|
"1MsTgHmjGd8hVn3CFi1Ao4dZM2daqrl7Gu5yPwls64Hwpuh/0MA1qi/H+Nv9L8ToULKhhACSzNK/QdYpjkbZMYx+wc8dfA9VlreVYJ1szLRnIa7gfRiJIaDl"
|
||||||
|
"Fsxp4vtJt6ktkFLkOG5rS3lpbcMDfN+bXEDTIbsNNSGWEVR7vxN0ItbxAgFbMF0sS7HeMVWvBsgvvkRV4ypSn/OlpacYkkRt3moxFqz87kfET5bH/OknufWt"
|
||||||
|
"EdnR163ncwBsQbtQJXPb4fEdQHc/FFhu9XCyU3TJxTBz3y1FYl/XDmdbDuGhUP5pfJ2r8A/2ojka67AXT171QTPpo7MhuEpelsdq3p+BgSjhas6zgPSpA4Lo"
|
||||||
|
"I/ShlO7fiUZbrP10ppmBAS3gMx3vOBx79FbRoVQSJCVeJzGEMa3RJkJqmd4tGSl+dNi9+fDOvX7kaDYkv1kSPu6qnM2NYHChu83HTzr35H6MBSG+Q+A8evnh"
|
||||||
|
"/mmpOETMpdfRRnfn+l4L7SPc+0/O9f29OTzUj5Z6eqoYmwlHYrIGz9Z+/b2j/fO7j2+2/T46t4wqHKWfVD9yUMdbpeFoBzU7aS9Dps6F0n+VdEIpWsOYXA2C"
|
||||||
|
"rk8/qS2teu+X30yqPfl2OgHwkEZC5bDskwCg23H3BbGh7GUAePof3idOJn0QO7bIn99aZj8/AmlCXB5Uu7Wu5xfmej/ybay7qwkf9Cs/WgEmYLMaRqJD9/7e"
|
||||||
|
"JLnqhqU0EyvKBAoOmNKFRZTUd2XQ+/dsRESx/vFw//gFegb7ME/jnVblR0uJN0Lk4C5j5WyoswBTWytxGbBjiRsU/pt6Shx5hhQo6Dq4WrYQ9LtZS5p0x6BF"
|
||||||
|
"u8CSHxfMDXSLQqZIIkZlSsKvrmZFvY3oDuzHwCMW8uWdGsWNfF0c/4HKYv1Yx0pU5AV81IAM0afv49bo/aAemhzoiDPDxR2msHh2o6EntSNud+ifJbdUTFaS"
|
||||||
|
"03Cit1Y/TTEgE7WSY6FzJCQ+MPDLB6GIH+pFr23F3YEVVmgN1P2nC8DpQmEw9bOoBnNvKfnoBjUl2zDGVWPsJXjBOqVXJ5b8utMnTWJaPOOe3FmZngWnxFbi"
|
||||||
|
"M+UYuQUe6ml3eXU2fCCYa5elSkhBbivx4vAlj0Oxoic/OGmN0wAF/f51vL7K6QkIfiSpT6TriZy+/hJB/VWjn6MF+KMlnOzhY56S/vGblPpFx1Cn5FnHcNpq"
|
||||||
|
"6JiQgMvBvRtLT49kQT8u2j8bJNIDHM3Lj8pMyxGXJPcb7J0tpff50f61cK2wpPRLw/cZwdk1fJ8wyeX9C97B06RztesSP62mOq2N9wSAl1kEdKsnPauTfLGA"
|
||||||
|
"6RN5pQAI0Nl9e4hCLu7PUK15NTzzI1rT6LpJwv0KBGlp+lbpUFj+tGVquAFTDcw0oD11NFlPVnBORzTcTxmg/rww/kla62Dgd1ygBF1D+0g6UVWIhDMdi+No"
|
||||||
|
"q23cm+d2/eDgCG55HI55+LXywikg6yag/ZgAaNveSyRHgLU7SMB9nxP27lFHW5gDroAE2AnI//7ZXUddhSSihg3wOzeml26k1GrPYkr+EYLAomAnP4MD0o1Z"
|
||||||
|
"Ipoe4Cly0UIbuE9HLxxHQS6SlTT1VTFOwiPYZoSqNyvws8I0maF0GJJ9i3VmrhVa/JH+mNAPaZDcelpp2RUgRFo8E7hK+e4meFOsSrVBjyI6QRaKdyPldWs/"
|
||||||
|
"LBbXKRUI7t7tSFqBh1DiSvw4AX74oEAbOHg0LgoVcKh+WBTqbw0QUnqSg0VSDVHYynNBH8nB4tQ6rlY2BOJWaSRMIydTbreCPOlDhbxnlq1jMG5OcIYU/eK/"
|
||||||
|
"qGCvN8qP6ZORpkEwEyhuAWylnrS0unIq3l6aWRlUy3L4Hfx7g1n7JdXBmDcWb4zlg75j7he0GRst/0iyjalPR3KvE1kg4cEnnYjak4ZzB9i4k+HnnymjoTxQ"
|
||||||
|
"JUQZ88hBoKun18H5mS3kPqpMDml4eRlcZ0+bDxI0aO5KgqpDQfVlkWCqZEgGqifoQR3udekUazd6WXdZ8X5fE6qF0c1TXApN0+J8sVnNqqHfDbbygbkTiUbD"
|
||||||
|
"KIgjSWtZWsPDxW13wDBvWXsEqAvVx2Gr8H1vM/HJY05IAaMqffRRzwft7N15Z/orhamgvovvkd43yQc6tgzD0nfIeovBv/4COB+C4iQeET6YaSz+7FWjboUL"
|
||||||
|
"57ThbhVyEhRDzsNmJ7TFJ1L2ui+9JY/P90/tH1rTeMl98WudWRuNbBCn4jdR9CZdqAC2u7og0UOikDXtqWzdoMdM0Hp8rLy39dWG+1otCZe0vTIgnuwIPpog"
|
||||||
|
"MAuyxBKoQNV2elBTta5bjgxzIGtneXGGyxJXwo1ESUiaQvd9vh9utPISXwCwSCqyzx+e4UcariWRwrSstqKUaSVF8HIAywPzJM0uVBQUBGKtmJ+6fGVXSPbm"
|
||||||
|
"hmoFCTQDx9GKeJaa+/75WWEDeaW+2cfuURzKdcFhlm7nar7bfCNb6OxHJM+DvECKO+H8dZVOXvYOI/tIPRK/oi8DHBovW12X6LEAg4TRxd+oeZFsINU8tZrz"
|
||||||
|
"3fPyNjQCZxtI9nK+lmXV5L9k6fOXoBkAtRqA2qj0MG10DPGula2r51G63okG96rA+Y8Y/2+jwP3/Uzt/2+76SD8iPk3BESYww3rYzMICQhGhTrHUGFc/UHhN"
|
||||||
|
"sVq86ql42dpAvr2p5OsV3XbrvhC3isdpdwF1X5OPxQpSZQI3R9bMyonOk7NDEJKnsx2DX/DPNQ0A0VD7voR5cvbDH7VbIgOHwj3HlUp9dl48edvAhSg9ZvGs"
|
||||||
|
"lheyVyPtmJBI8iuCCOjxQ8TbfYhkUkCMLuQy41CZIRiei9uGHEkWJIl9g8XPThwY1JzSLINoOdM+AFbYEq1xLvvhKWfF/cYQTHHv76RHgKKSE7Z45dGKReti"
|
||||||
|
"8FJ3whzWN0YcKKRv7V5j9zm+mZT01JopNzVYdvsvxFQKmAnF1y0p+L0lH6z4fVNBuoS0WRB/KgibK/YDp2FrpG3A5uIWSzHPUySvHR6xebF/yfmSoVvzdr7v"
|
||||||
|
"UfTR8YInAMCAFQesDp5Iz5KJQeQPw3n5Ju6NK8qRGKfZhs/CeVeLWJERBc6P5DsB0pG8/2a05yDY88nXfzDYI7UlAZEKEBt5RG2FHqQJNCM+Unj9VMExgcBr"
|
||||||
|
"0OTJUqu+TI73fjzvaLnRupGlSIp0XY53y1+FLOvdZPSfMTQx02LSpnhrrzNVyrd14OpRxEgjF9drk9xQekgu9422293N7qWXynhMQ+h6toxqvzwdLlIymKjZ"
|
||||||
|
"8pg6bZ4ANeqhFIo3Oz3kZfC4bm9ArIP0RM1KyS+sH7/55FTbSBSCYKGDGqFSLYZQWk3PlgLwIyO74HvB+KOIjOw5gCxBBOy7sAs/E18oWKWl72I+72fi1wa8"
|
||||||
|
"Aw5r2T61f4rBIV5StJewEioUwgxOV/d+HsVxBKpSHA3gStyEqCOG4tGd8mP2n7tZiVhBiALP0gfacrOGbjlSrM4v8cSD9wmboqQ5h7xFpl/HHr1UHB1HEOFE"
|
||||||
|
"sTtg0Gy172W8HIcITzCFcaKDuZtJxD55QuhFl9OgOfLu+K3r+QlS8etv/MomeDMN6ei4MJyBWA1+1OaudCNZSWRJiELSrtf0Y9jZ2N/+BXSwLAvZ/3mgf3ip"
|
||||||
|
"FcX7e9bRe0lhbwebAZiRfZWRsfm+i5ZqE3A44hZ8aJlxH5/umTHH0WYfvnzZ+/l8x8sRlbZRHV93aUiS1ZZAJEMlh2WfrsD6YdDXv/4obS0Zdj+JD8lOh19/"
|
||||||
|
"LxvzaDlvJ5LqgntwK8lrpRRia3GybTFF5WFJyPtxRcAr0139fi9DkezIQMlbII1JZBc+zLE9SLEN5OGZIdeC3zm7cIuD6ppXydd9sm9vToSBUKBEAuoyT95O"
|
||||||
|
"sjVXO6CQyUCXxNf87ly/lxp9lIT053jr3ktcP85bx8Kr2eyje+Z4v8Fwqbzx6eFivR+EBsvBwA/IFBpbFT/yPGsGOlkSNRO6zTCkwzsFCcfX8RPgtEwBl+d6"
|
||||||
|
"NE+CwahIoDYEF12t1JKYII4U0Im2MIgTqBl9y8/9ZK04RpLBF1p62whKn6dSHYrlfUuZ3SWEszmtQlaCm/7Zs5HGNzWzYgVpI4K/0d7zS/YjkZ9+I+Evk3eO"
|
||||||
|
"po7EaB11xS0vOcaBYaEUgsRPSTsvw2+AO5VgnbJ2fOb5cdza+Dy+uu5nfpovdZy+9soOXrfq5UIvc/WX7baNbN+Z80HG2pt55dcTZnbCfk5Y2S/iZNqRckOj"
|
||||||
|
"qvqrM1vaB+AVs2yio/lTTtUAw3KznXRd5VQybaNDcKRdZt1H5VCAxdDRXqyVJk3Lqfs+/9JZVNmz+kFJtYwDmxDMqPSR9t8WNBMVFqqVg/91C+uDI2JFYvF0"
|
||||||
|
"bA5/C5io4Hbn2Sj9t2sBkV7iHOILrg/0xj77QJw1cjnLq9/7l4Zr6fWJm8zs+AWWS0LVSOk+ZivcTducv3s6vwYWwJsh+t8E8oDI7dOpyDAxNChSxrYE7N+K"
|
||||||
|
"KF4/f5UsOl7r9bQz0ZdzGQ2mTj52EGn7Tfb57Sifmz01T3d2buv5iG9/+y//+NMf/uFf/+mn//yPf/zDny7u27e//Zv/9NM///yni9jXt//48zcNdfUbkQ6/"
|
||||||
|
"Wl166yqPpvbN8Qvnndf/fvvvvh6PHrS2qb789N///beL/Xbsk7bBtgsnWRg6ZgM16ULUjaQKcKTAvZISS8rIW0PT5a9Gmy4N/za/rsl8+++1VusL2NjV7y7D"
|
||||||
|
"vzH3MOis5m3BzG+qmy3fpxJfppJOpuIPplLemEp83BsrV0f5RBLRLsKDYsc2AkDxztBt7ull7mHMPT3NPddbcoZs6FOwuW8mcH5zFbYr5d7Yt112/8Xf55TP"
|
||||||
|
"5uS+O6fLWxMZve2AJlxHK2vHuP/6B5QB9hMY3bfGpsv/PJhDeZm83WBZpefEoJ14f/LlaRf9fhd3VFmfJ2Iz0ES+uCASS3Mm/r5gqTRvTKs+0V0d5tELhaYp"
|
||||||
|
"Q78zcltGe1lG2i/jYCbtq3vbU4v3l/cTJlIH9f/v/7gWbX/Lgwrj+H/8XrPp4//V8f/GkDqGgJ76uNOOTggP9597NBDqinlJ32Gq3Vqt5wr6H60u+wOjjNTU"
|
||||||
|
"GU+VvHLvDB3bMfpPb/sx1lwn8bqD/QAoVw//p5805W2K9muL5n3Tz0xaxrKRvpQyrRRkP1m7mUwil3WNgaPUNcpOiuGlAxRMSkfVUR1cia9eQ9Y88H+u8Bo0"
|
||||||
|
"ueBiIqmkWF0wGCPtcIuPXrkTY87aFAFRmgYQZo7tkLyL3c+3hmq7/Ftj7XysPaV/ptdSxg7ngx32zYo6vrc11+/uzbNM9xtLXL962t/AJSzfG2Us05b1IstL"
|
||||||
|
"fHdZp4RzIpKOXrRbWng+EJrRHx1efz3ns6EiHh/fGnw/6Hi2I/6M69knoqQSdQ0esJrQ/YsmYPMZu/79sffpvGgJxe8l8tF00tvTCR9PJ59cgyljn9jUkBcl"
|
||||||
|
"GIcuzv5f3rFt6dHthZOVPSfT+PrEylPCf4x7O+I+xt1U9VY6+xmKZukErWSB9nMFe/+O/vCOftm/4q1LOXSadAPkTFZHFsEUKm+yBSart62Gn35v3NBk2C3/"
|
||||||
|
"osvkId/ys3KY6s36v+lCpXiRoVM7LgZCkZeYyFKt3sXQ3lG7bYb55mumkZqXTeoklQ8vlvSU+tbgIeFsTS9qUQ7Ha8q0FaNsXXdVhj+9FbIPiQzAAeWPFVfq"
|
||||||
|
"/9valeS4suvY+V2F54lMSFQ/rgXV/mcl8ihsqnMoHup94F/YSUeQFCW2IolOaGrjWHlIOMkMWK7weX2+qP/nfNJ45h2e+y2Xe15wUduab/XEKyewCp3JUopB"
|
||||||
|
"o3PGtt/HfBvQ5HKlsKYpVp/7CPhDFP+gJ8rjPJDD9lS+f58KuOCphMGHYrUscBYnksbTbvD0YScLZAdecBx2zbj0IjoCVgjR5mBoCPUHcIDqCjCYuTyXIfPn"
|
||||||
|
"VK6fIv6Go9q72bCk3rL09OU8Hs9SGQ3+5RjWhRA8u3gJv2IySRF66szpMtrbwuSMY+0eGExmWJpsAA9j3JWR9pGAU/xlYZKky/GfDEDhCh+XubNxkl4RRigo"
|
||||||
|
"TXUcgEODCA2T4eCw/G6vT/2gTU+J8Qv+5tVikFkvRv62GJPJgTDkRcgKoYDhe5fFi0ZzPqYtj6lx7fxHCsFZV2Mzuf0ZgfVcPPelEMBtl+gEQbqE4PRHCsG0"
|
||||||
|
"EeewOjNclgPBwa5zjZR2kOAfR/MpMVhtzo5SRtxtmJtHlmrRZfcOnITeajNHEpfEbJVkSkzcNt9Jupi//ASTuXG98M7hvDj7gfBN4Ge+UdF8WxIX2SbV1HEO"
|
||||||
|
"+3Qj5YMVlq6a3HBTSPNPfwTy8po86DYqW7ktuIz4TvxzFRZnkt9fJL4b1l7ivskepUn26pdQTdgeTrbxz0ra5KlK2sh/WRCv16PaTk/te2ckaiYzlbgUNDrE"
|
||||||
|
"izrZ4cEUXlYkwOQ8+wE2aVqeIrSxjve0+dMT27VLpZ+yFB7S+hq/aOv49RSmrVEs6/bsFI5Nmp+dwpDmHf9oFUAjWERyrP04i21tZ1+UYm/82EF5+vcAgOpF"
|
||||||
|
"iAFT132f2OnmBXB9wzuSLfdG6Ugc+4xE1dzbjETChr0HBhtZ0GjyNuDeOjuKYflLV0KlorcjfUWAx4Flq+UUi+eC75f+RAodZ3bo0BadWGQlTrEJohm42Wwh"
|
||||||
|
"nl9YCtk1OzP2zT2wwn/yHyyk0pqtILn0BP04MNN3zMwdMyffweIsNkOCRIlpIqnDVgmJ16mc9mmJitJWTssk1BtgRctkopt4R4sXCz2f4I5SBr4i805k8Cd/"
|
||||||
|
"pZ00Jn6HyXvHCANdqWeaicTDvNjOmBBzgYsuDXdj9yc4Qhe7vygNyOtK5Zf6ZEmSaAYC/hVOnAbQMp3yBvafoUlcDefXnYy5Y+Tjnz+RCo9IQbW+bHFcOyLm"
|
||||||
|
"4EoqnIVw3wOrtZiUgMF2M8N2I74RJcw3yT3w2zycey464siN54sZa6Gum82lI2CF/mgsUclL9LnyLP0Xv1Oc918b/nh6GeUUxHz7fCSr0clrdKjEO3S48/gJ"
|
||||||
|
"Oq7ZIVIOod5cpjdHvHnUQnXT/Lc3Q65ldKJ+szfTmz3eTHdvPl2CsKbZ2+nNhDdvLSwPptTzmC/AXg8LK+8fT1l4/xMZp84KAmHjy93y5S23O4VP5pefLl8e"
|
||||||
|
"HJGojVev2UoTMrIAwOmrEB8jUzay5KZXO7w63L76cBGCGQx5r52xqJGZFwWtw7Ibj8YcQ+HxhlD+57jYdrbw9BluhEaZXuqjTRqdUdOQpPN/gVWnafiqGQNZ"
|
||||||
|
"11hzqGoCdcdvIL7Ztz6rHbbSPbAiIE4EYEOk0ql9HmbP5f+FuKdGnNU+bwKXeQIu31E/ocsJqnxFksfhRp55sqHLY5feAyu6Jh2EygqQ982w+j2xrBAaY/uj"
|
||||||
|
"uJTYWn+pD15c6GqFtP29B/vYLD7vEHa7czOEc/POT6qolZhYvwhg2OZQwr00SHUanH4G4QwDECMgVCD1JeETg/Bh7fARMLngH9gCsPgpt3+gnVCmRSh4IknG"
|
||||||
|
"1lMlAUZKairehH/s7OX6zsulZL5arlGGEvHUQ7Zn2It1Mn6y/p2NWPsODq3kYfVEtTItCMuzkasHU/0A3LnkyZo+VE8xliQiEpvncwCamgl8AypLLg+drGCK"
|
||||||
|
"eWkF5z++z0ZcOoLRLT4Xnm1R+Kq3qm09SU0FhDQdD93lLFSqnjo3fgzVwg5cgJlCjLDp8+W03gGDJIYNk1mDvD3FvCOpsPh0NAW+LPpxBU+yiJLe7340MIbE"
|
||||||
|
"kREcv4HJdgclk5mEKgMQtEaiTNxKaVkQ4c2KtStgxVpaI3T5f33gyUDpRugKZHIpYrvHOdApovgJdFK0ewmMuVsuP14xsHkbl7pZ9d/0CVSlk1M+tvyCfvn4"
|
||||||
|
"FBJvqiUjv0LK4gvgvPgB52fIX5Vu1XdvXZX4xMo8Doz3vrz7+4k10mYHAQl81d9LJ9MQbdXiIRvRY9X0FKzvgUWaQKHbUfgR7xWJCj+6DrtqVUi5o8lygaY4"
|
||||||
|
"Hj/uvQmy7ap1ChP+ANS3dboBBRlpqZRD00XbnFh0x7s0zHz9skvB18n8DVlbCZ0apwB1LHZC/Ufpz/q3OUUu1KpdGiY9kbjff+QZT/6VAveA4WswOfWy7k7M"
|
||||||
|
"P5wuhh0GTgFwKxYjIafPN9xe4tJogvxi35hh3wBTx61Iogs8jVr6p/hC3N+C/cZul54Y4DjdEreVkuY2he8e2Zf+IucUZUljM8ruoeU0EF8jTHoaUooto6nq"
|
||||||
|
"Jp2WYcwp9WdAPtFr0J7+s3TcozKxA/FJ8Hjb6nuB7OQvNO/d5y/IdqjSfxCW1Ozo8KmZF0v6vY5gf4L9cQOpWJ921PhzapTCj0fl9xnVO92VoSohf92Fy6KZ"
|
||||||
|
"Ph1DiPvQWMSi0bS9fOCa0gl6ZeRg3ar6o5ijdbnDPaDi9OR/IIZH3my3bnVBu73rTklAzbmSYr5fKkNf33kq50NSHI6TYYnY+YXe6iV22ujVi9GfQ8zQOwXa"
|
||||||
|
"9h74w69oN5auy9tDmbvQdIfyiY2TaDiHcerqc5ib/qemFhGN2BmvbogIlSp/hXuKGq7TSvRX4SuhwbAqfrht0nCFKUjt3CpeUJVCpCNgJQCT+YtakW8kVQWu"
|
||||||
|
"SeJ7vyd0CKtG+hUmbofJtnJbrBFFLbewWNfq1TdEfwSsEPIbrdsQ6jwD8s3Og2fQoqseFoiHg+ARD0DmhxxAWjxAzCemuQkUnH2HF9KgEKkacs5y4wMuwI7c"
|
||||||
|
"mMlx++yqGwM3dCbu/+BpX0CtH1C6B8j93y+PWK1Ci71Z7lqRuMVy4YBMNXOzI+6wVGyAw1A3kRgV98BqFSYrAWUuRHFiCnfZSlGu/HMDp8RvMKV6QkyUf+QC"
|
||||||
|
"JQTeKk6VM9wuy1evfC1aDubEPbAiarImUDNDYyWMzdXX4S621WyXm+E8i9slbiAtF7VPKIGL9le1IbcToFIwZfX6gseYmKCRm4wDglASzchVj9jw5YPCyFXn"
|
||||||
|
"ovrEOUfXS9HRMVc0D3mGqYx6WTHcw5S4B1Y0TZYEykuIBjVseXSTlCFwgzbueFrdaG6pUrnS0XQiRNl0clF4Nim35uYxKdxsT1oogqYA++MeWNE0mRaojyab"
|
||||||
|
"J5pMDjyXRiZRv6qp4apeqpJUQlVxzzdHtoO88//WaxVhlNwDf+hKk02C1gRkhx1v+Wp39cG5DFxmtBeZw1W9x3K6Odr9WL05uJxVbw5ukKyxm2wAFHbSWGHD"
|
||||||
|
"+4G7rxG31+eeSFXhuHqwV3e/k6SToEV2vbxzxwZaMzzBsrkHViRNNoDFhh+rdDRJbiDpqdaQyLdWBEHabGlFUN8jJGXYQPfAiqTJmEDhDo2FO1qGouuEqH7D"
|
||||||
|
"l94eBUxzGIQ9eNoYawUW0T2womqySFABRObLjie93z1bCEcbI44bgzjNstcaadLTBrvWxP0J64YT9um26JV04QFX621R/ZwUj4AVRZOSRmUQGX+uBx9vizxp"
|
||||||
|
"AZZ/rQW8k21RPaXBSNkBK5Im1Y4CITL0xe5w2vBIqbr+j7dFGSSdJ7GtF4pgsNwDK6om5Y6yIZrKhpSJ2FmINh1ui1aGobeFTZ0xZaP1HcsnLW2Q9C9559YU"
|
||||||
|
"OyxrZg9iyS032xhr4A9CeVSvtpUFLUq6fwhF3ETwYFB3SxYZTYswqwUIcqeE3Ckhd0qSO2WaAYPkKSF5aiV5Wv9J+CdOgdnQ34onVBfbErpsQX1lNsV5m7nL"
|
||||||
|
"cPkX64keYuTJBE46s5K0UpUCay6GyDzmpp6Ezi78o+UTQxWbFCgWLlx+8byW5Ljbo8Qe8zo0s3qQWmK5AMVNtJLUsEUbcfu74iiR1OXfAiyv6W9YXEnC2Wlx"
|
||||||
|
"UaPV6p9W0jbEFzz3UX5x3Ufd29JjnVu1yvtblPceWCFE64QI8NJ7UzcA73t/f+HySMvg43P4a+1EsLIJR8CKFrcOWNu8vXFRxqh4lMudyakvTFvdPMfQN9AI"
|
||||||
|
"lwlKo0UAXN7r3eVFbEGJDw4xxCjqDzL+SfP267OXduzKo+ZBuNTPgwhIN2wDEHqUhJHIuB4m4c6KUVBUyO9heJIQbkj6OzCKv8phYhRKWfK2zETOJVuVuef2"
|
||||||
|
"yhyqSCHprFU27YZSQkT9ABjCJAjFNUKIxK8Ryv07qvdmwpBGM2iQYSeENsAKoTQh5HROoBclcZwqiP0EuOqXZpah/qqPTWUrQ9yvtBMEj15u79ROPNLQRdOd"
|
||||||
|
"uFDFR0134Yk7wiRCKP8eGExi2DyaGraVjU3h/BsBP5FvK5ZCHnlAEhMGOuPfIPBlKfCoq7Jpe+/Sil4+EzA/8O5GwASjssboyub0hkerj0cNlEUNlE1z8lYS"
|
||||||
|
"LFrA6IFeOVQr1tBpG7FKUrTnjcQEtmySMLYv5OIJYtXwiDw8rJqwX+2cr2bOksLRCqibmZZWAAfN7RGwonCT1bExf6NQ2V2cNfrYXTa9vtldw3M0mXLXmVum"
|
||||||
|
"8AW1JDNmhagERFd/ype11v9JUTfaOHaibnl/LJ3LX6t4VK0WI8mEEZVJteIWpivpdg+NNkJCgdtR4PeHRRxTe9Ukda/RepGWRmaRCFxDf8XJ613R66NYPtmU"
|
||||||
|
"H9vy5pJs+LGoz7KL+qxo+8MjTtXLXNHNUbTqv/NNqlzFKfOoZndsk1rTynRKrMYyX8yvx5hkf97fJM+jKJrXKGZAmey60Nl1utz76mHO4QZu63255nxH9xzJ"
|
||||||
|
"1p+10lfXhTg5tsl3VJVfwhGwImdSRq1eYSz16Jvpg5wHRIBHVE8mjgganlz/0h/r9tNYTSZYqyyeehZRPYmk2yDVA5e7mJgHWFl46DwsnmfHRRPypqNINapK"
|
||||||
|
"OgJWRExmG2752+mWeyWiHs3OVw+iop/9pxvFE2JsKyQz1bevvpyvPlBmo+79jeO7lVdTSqA4GU3XXYOxW0w3BkNGRjzAjDrOhZStXft+1a4t5QhY0TAZL0j4"
|
||||||
|
"gpTuUsynh3t1Jx/S0LoFWylz5jPx9fkQSOEjtuGAELaUv2lyoua8PFn3wbOOWwuoogdD8h5akzMFLtpFK59ueraoKUMPyGkl5VXxpOoPGy/H8fVBKnlyh96k"
|
||||||
|
"4pvL48ddVjEwQep5uQy6Wv0+cnfCHGQI4il6Vycv56hu1uzi9jQOzXa7h9bkTLrVY0f6cUeavyp6xI2TM+eo+SDMIXC9wCN6WqDacSt+nofs6jZf0xObkXYP"
|
||||||
|
"remZ1GVzH7yd0j2Gsw+Zu9VUb8DUI5E7H3IZwgNy0CiV58zGzJPIfbAUXuoLl4rvBShsMBxv9FGVQ5nd6xOnMSP3n0zeV/Xu8gMMy+iDpE2Gtrr9MOXuoTU5"
|
||||||
|
"k+q87invvUtqsXM1XKF4+xq/6F6TNq9pEbfOZUQI69eiMtiiYtm2G0uh3ZxF7L3F7Xxr6QcQcUOrKYkOJxaNdCzqc6yDA+rc/rSn3EZeLFdp95PMHvPVb/d8"
|
||||||
|
"ganZ+NfsVbk5+P7gOiZO6rf1D3GLa8n/D5jRsMxJl3y5dh/kg92kWFuU/wa7L6xeYuUufl1tyDW/8qfwFFhZs8GK4l6+/UB40ISH7vGTtqMmZovSMtva9hDi"
|
||||||
|
"tcjI2FYppL2Z3N8Ds+jgAtL7YtlqshFVj8MWCUzxeEYZDMhTqrchW5lHFq0MOZef+Wy5wpatlnS0BmPAPXMmaHko5WbP3UODq0G4OinptkvGIh/NgThy4Dce"
|
||||||
|
"0YJm4q/YIeA2CIwVOYqXcWTl7xkv08gdjpEteVlm620DrUmZNGrrf2rnKwe+Gv71SDVNmlJ1CoPPdb1OaWmXU9KnL1X1UuRKxOXL1pXJV/vxhmDYIei/RJj7"
|
||||||
|
"OCwX5B+1iB368BhvwjohW0wz3m6BNSmTMkWxykXKsmexaX4YD9K5bry2x20C+XYq51HjVPpBKv/hXlVTKuEvVXIr4UmiAxwVvL7gwUy+X8NJMzUPfpyhoDGd"
|
||||||
|
"UT2KpbfDUJfpd0X7Euvju6y23AFKjKpRUDYUmLSlQLaJosAeiyEKopeLPnVkbWEnhA57RGyq1jsPBnGCSKrGK9t8bF8e7Vc3nCaJ08Dr7UDNUrmH1rRM2rFN"
|
||||||
|
"tZlo4VZwkYthiwEtMms8VlmMp7Q0R/Bz0vBVw6zPHsO1FblDcFI0uBcKPPtapyTjrnLxnCEtPFmqWv6FL5KdKRo32eabypnimpVzC6wpGTVWaeJr94SEkZAz"
|
||||||
|
"OtJCYU6tRiT89VvKfp3DuM5nyzyMzrB8N2jNRj8bKhtoTciojZD4L2m/+fq9Zw/pKIOqzNz4p9yI66hfUBNSwoND9vCE8mbc7DFs+BxmI2YDrUkZdRtKGsZi"
|
||||||
|
"kq+kHKkLb/dHbV7ikMseh+HEz6cXuqyftFbsbvVJyoe/o3IHqLTW1CUQRSN577sj2qWUOw+8L51yD9klzaap919LlY+Ne7R91qf/7bHU+e1iTR38WtlHClsz"
|
||||||
|
"llxnxpbDrem7Q4P7YnCB3FL0UzNH7qE1JaPSQe163tuIPg66jY8Grl//HB9cJnqVt7fXuOVrLK2ybigERHjvF0HVnxbEbpkCZD9avcgv0kw/CDj9INBXH2Pa"
|
||||||
|
"HwUU1Yio7UHzLjTSkqqlH1QroTpZEP7XigN+YeSiIGWcd0U8A9NXzGJpMwO5BWT0gROGvuqyiz/7ZudfH/H79RnLtUkt0v/52YCIXpNRTeJOz9jSh8qfK1Qk"
|
||||||
|
"n8hbKf2xi5nqktfz8T+gmAcUubVhxy7P0yA7REc1iC0/braviD7Hszxh5agLUYOybzbUQoYj1a+RL91LRi2FnkOrIStS3/KD8hZ0+Fk0+MldId4vWm0l8yBw"
|
||||||
|
"fBomQ2JOx+uSl6qeT1CLWzWAWNG6dmozGMfildvQu9y7+JQxHSE6VuTQJtnHgT5XToA1TaOCRDnEWM/RZUcqH3R2JJzz3I3ZhPoenUuo/5HGbmpyiMKIGB+k"
|
||||||
|
"oo6RG3Mx1XnbhD5Ks5ruoTUtdk0LPcj6HdMS5jxZ2QyeMs32ugfXxIwqGo107ojpMrLHxMQhg4nJATqNWVQqoCHolgiObURWOexjvNJpopidTJhuh5niRsOo"
|
||||||
|
"DMGJiYZFLcExDXlIwweVhr/yeg2bsMbGPyi+OEarDLUhngut16ylZv7dg2tiRuWIrNmKmHc5TGrlMKdERDMUkLi6PKz/PgUknriCpEMsrREzB9VDx4jZnl2W"
|
||||||
|
"wzxr5rpmHN1CaxJGNQnzKphtPRfLyTMKaCx/sn35k+1Ftywx8nFbA1f9K1UDx038TjFzXcGYq4eL3wxV4kRmMEfgipapQR5cwn0tvb36ML1r8IKTM/XzRTK2"
|
||||||
|
"+O4ldvkS2xRvn7TTRYe/qEdEQyX8AfWQGKaHWjh0qxJj4N8vRj41y1byfiiHQSeJaYbTt5Tyk2Q0kqrHqxqGHDTpnGroWDdqxjZGpBzkeI/Ria3BSPfiqdE8"
|
||||||
|
"uv2mB6nvYwTSwI+o+WE+OeaG2tR5vt1d2ctsHqxz0pZ5t7mn5lpt+PtqmgYmBrVBYhisMbkgUo37cUEQHnN0sHzePpW/1S+W7CgDO/pikk+lAYylhSzgItT2"
|
||||||
|
"9hZ8mL7ZNyzi3bO+lL8ku3gWLZ/V5hSVRWu7jF52GAGHzjHzMKfghoZ2kycWfXXjQmKD9rfq75CLIyLPA1LO0mmJhlEa1dMs3MJUhhbG6gC4kggnemhJtXtw"
|
||||||
|
"cEWA7dyjzK0za4oa11EjA0UPA63J9QhyT5HYIVhNUwd64kzPBryjZ7ql3HJGX8TPX3d8GidTe1j7DuPi2uPLkl206lXUwm3tNjvqymcpssPNmvxEis6EKJwL"
|
||||||
|
"UW4x7lMhEmA79TdDkcAUq9/SwsNNTkVovI7IS2uvmWPqQmLDLcwlxTAn9vKQBgZw5FgzwIUUPCYVmwW/1uAdv+wSp7yY9tXm5sLMQSh6cRTRIET2K+Ot1fPc"
|
||||||
|
"+paV5qgKIbXKvvq7lql4qQ/lffCC2tEqKWrLHOKo6yRSPApYpksk9A9fA60dnqOCQJZ0P87WDEzgpKZiSf9wv1zyvSLD4AHustc9JqyP65VtjGwT8sFs+aK0"
|
||||||
|
"EtbbrMxKP8NLIP7nf//9ky/kq9gMJ2xA34aDYV41tXbvTVlihWNrn9ruQ7c0RG4XJFv8sg1rBy9xZsY2aQyXXnElEZkMdGwX3CqB9d//A0qUBbc="
|
||||||
|
)
|
||||||
|
|
||||||
|
_brep = zlib.decompress(base64.b64decode(SHELL)).decode("utf-8", "ignore")
|
||||||
|
_c = Part.Shape(); _c.importBrepFromString(_brep)
|
||||||
|
plates = list(_c.Faces)
|
||||||
|
print("пластин в оболочке:", len(plates))
|
||||||
|
|
||||||
|
# ---- складывание: поворот поддерева вокруг оси гиба ----
|
||||||
|
for J in JOINTS:
|
||||||
|
d = DELTA.get(J["name"], 0.0)
|
||||||
|
if abs(d) < 1e-9:
|
||||||
|
continue
|
||||||
|
ax_p = Vector(*J["point"]); ax_d = Vector(*J["axis"])
|
||||||
|
rot = Rotation(ax_d, d)
|
||||||
|
pl = Placement(ax_p, rot, Vector(0, 0, 0))
|
||||||
|
pl.Base = ax_p - rot.multVec(ax_p)
|
||||||
|
for k in J["subtree"]:
|
||||||
|
plates[k] = plates[k].transformGeometry(pl.toMatrix())
|
||||||
|
print(" %s: поворот на %+.2f° (пластин %d)" % (J["name"], d, len(J["subtree"])))
|
||||||
|
|
||||||
|
shell = Part.Shell(plates)
|
||||||
|
if App.ActiveDocument is None:
|
||||||
|
App.newDocument("RECADA")
|
||||||
|
Part.show(shell, "RECADA_shell")
|
||||||
|
|
||||||
|
# ---- попытка нарастить на толщину (может не пройти на сложной геометрии) ----
|
||||||
|
solid = None
|
||||||
|
for _join in (2, 1, 0):
|
||||||
|
for _sgn in (-1, 1):
|
||||||
|
try:
|
||||||
|
_s = shell.makeOffsetShape(_sgn * THICKNESS, 1.0e-4, False, False, 0, _join, True)
|
||||||
|
if _s.Volume > 0:
|
||||||
|
solid = _s; print("тело построено: join=%d знак=%+d" % (_join, _sgn)); break
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
if solid: break
|
||||||
|
if solid is not None:
|
||||||
|
Part.show(solid, "RECADA_solid")
|
||||||
|
print("объём:", round(solid.Volume, 1))
|
||||||
|
else:
|
||||||
|
print("Тело не построилось — показана оболочка. Толщину можно задать")
|
||||||
|
print("в SheetMetal/Thickness вручную или экспортировать оболочку в STEP.")
|
||||||
|
App.ActiveDocument.recompute()
|
||||||
File diff suppressed because it is too large
Load Diff
+4008
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,121 @@
|
|||||||
|
# Инструмент реверса RECADA — установка (FreeCAD НЕ нужен)
|
||||||
|
|
||||||
|
Инструмент работает на ядре OpenCASCADE через библиотеку OCP — это то же ядро,
|
||||||
|
что внутри FreeCAD, но отдельная библиотека. **FreeCAD не требуется ни для чего.**
|
||||||
|
|
||||||
|
## 1. Python
|
||||||
|
Поставьте **Python 3.12** с python.org (3.13/3.14 пока без готовых колёс OCP).
|
||||||
|
При установке отметьте **«Add python.exe to PATH»**.
|
||||||
|
|
||||||
|
Проверка в PowerShell:
|
||||||
|
```powershell
|
||||||
|
python --version
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2. Папка и окружение
|
||||||
|
```powershell
|
||||||
|
mkdir C:\CAD\recada-tool
|
||||||
|
cd C:\CAD\recada-tool
|
||||||
|
# положить сюда recada.py
|
||||||
|
python -m venv .venv
|
||||||
|
.\.venv\Scripts\Activate.ps1
|
||||||
|
```
|
||||||
|
Если PowerShell ругается на политику:
|
||||||
|
```powershell
|
||||||
|
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. Библиотеки (~700 МБ, 5–10 минут)
|
||||||
|
```powershell
|
||||||
|
pip install cadquery-ocp build123d networkx numpy scipy streamlit
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4. Запуск браузерного интерфейса
|
||||||
|
```powershell
|
||||||
|
streamlit run recada.py
|
||||||
|
```
|
||||||
|
Откроется http://localhost:8501
|
||||||
|
|
||||||
|
## Вкладки
|
||||||
|
| Вкладка | Что делает |
|
||||||
|
|---|---|
|
||||||
|
| **Обмер детали** | STEP → толщина, гибы (оба угла), отверстия, разгрузки, припуски развёртки, measurements.json |
|
||||||
|
| **Генерация кода** | STEP → обмер → подбор неизвестных параметров петлёй → готовый параметрический Python-код + params.json |
|
||||||
|
| **Приёмка** | два STEP → % точек в допуске, вердикт |
|
||||||
|
| **Справка** | как устроен алгоритм |
|
||||||
|
|
||||||
|
## Командная строка (без браузера)
|
||||||
|
```powershell
|
||||||
|
python recada.py probe деталь.step # обмер
|
||||||
|
python recada.py fit деталь.step # подбор параметров + код
|
||||||
|
python recada.py metro эталон.step кандидат.step
|
||||||
|
python recada.py unfold деталь.step
|
||||||
|
```
|
||||||
|
|
||||||
|
## Как достигается «100 % повторение»
|
||||||
|
По методике из документа (раздел «Критерий 100% копии»):
|
||||||
|
1. Обмер даёт скелет: толщина, радиусы, углы, оси, отверстия.
|
||||||
|
2. Генератор строит деталь из параметров.
|
||||||
|
3. **Двусторонняя** метрология (эталон→кандидат И кандидат→эталон) считает невязку.
|
||||||
|
4. Оптимизатор Powell/CMA подбирает неизвестные параметры до нулевой невязки.
|
||||||
|
5. Приёмка: ≥ 99.9 % точек в допуске + Δ объёма < 1 %.
|
||||||
|
|
||||||
|
**Проверено:** на эталонной детали с известными параметрами (40 / 60 / 25 / ширина 80)
|
||||||
|
петля восстановила их точно: RMS 0.00000 мм, 100 % точек, Δ объёма 0.0000 %.
|
||||||
|
|
||||||
|
## Важные уроки, встроенные в инструмент
|
||||||
|
- **Односторонняя метрология обманывает.** Первый прогон дал RMS 0 и 100 % точек
|
||||||
|
при детали ДЛИННЕЕ эталона на 1.8 мм — точки эталона лежали на кандидате,
|
||||||
|
а лишний металл не был виден. Поэтому невязка двусторонняя.
|
||||||
|
- **Объём — не критерий.** Сдвиг детали на 0.3 мм даёт Δ объёма 0.0000 %.
|
||||||
|
- **Два угла гиба.** Поворот (развёртка цилиндра) и двугранный (180 − поворот).
|
||||||
|
Старый Unfolder V1 показывал 45° и 80.6° там, где истина 135° и 99.39°.
|
||||||
|
|
||||||
|
## Ограничения
|
||||||
|
- Автоподбор работает для деталей с **параллельными осями гибов** (одна цепочка).
|
||||||
|
Для пространственных (как Defender LRDE-2BR1, 3 направления осей) выдаётся
|
||||||
|
скелет кода с группировкой по осям и TODO — сборка цепочек вручную.
|
||||||
|
- Отверстия попадают в код комментариями с координатами; перенос в hole_array()
|
||||||
|
с привязкой к базам (datums) — ручной шаг.
|
||||||
|
- Разгрузки распознаются, но генерируются правилом (features.py), а не копируются.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Обновление от 01.09 (важные исправления)
|
||||||
|
|
||||||
|
**1. Метрология мерила до тела, а не до поверхности.**
|
||||||
|
`distToShape` до солида возвращает 0 для точек ВНУТРИ материала — значит «толстый»
|
||||||
|
кандидат мог пройти приёмку. Теперь замер идёт до оболочки (`surface_of`).
|
||||||
|
Разница на проверке: сдвиг детали на 0.3 мм давал 74 % точек в допуске, теперь 29.8 %.
|
||||||
|
Изменение толщины 3 → 4 мм тоже ловится (29.8 %), раньше могло проскочить.
|
||||||
|
|
||||||
|
**2. Дубли отверстий.** Центры окружностей склеиваются с допуском 0.05 мм.
|
||||||
|
На Defender было «7 отверстий», стало правильные 6 (одно D20 двоилось).
|
||||||
|
|
||||||
|
**3. Развёртка в DXF** — кнопка на вкладке обмера и команда:
|
||||||
|
```
|
||||||
|
python recada.py dxf деталь.step unfold.dxf
|
||||||
|
```
|
||||||
|
Контур заготовки + линии гиба на слое BEND с подписями «R3 90°».
|
||||||
|
|
||||||
|
**4. Скелет кода для пространственных деталей** содержит упорядоченную цепочку
|
||||||
|
гибов: ось, точка прохождения, угол, пометка разгрузки.
|
||||||
|
|
||||||
|
## Что НЕ получилось (честный статус)
|
||||||
|
Автоматическая сборка пространственных деталей (как Defender LRDE-2BR1 —
|
||||||
|
три направления осей гибов) требует расщепления детали на две оболочки.
|
||||||
|
Пробовали три алгоритма:
|
||||||
|
- по габаритам граней (торец = узкая полоса) — нашёл 18 из ~120 торцов;
|
||||||
|
- по эквидистантным партнёрам (плоскость-плоскость на t, цилиндры с ΔR = t) —
|
||||||
|
67 граней из 187, граф не развалился надвое;
|
||||||
|
- виртуальным щупом (точка − нормаль × t должна лежать на поверхности) —
|
||||||
|
38 граней, критерий слишком строг на скруглениях и малых гранях.
|
||||||
|
|
||||||
|
Причина: топология реальной детали сложнее канонического листа — одной грани
|
||||||
|
с одной стороны соответствует несколько с другой, есть места прямого смыкания.
|
||||||
|
Следующий подход: обход графа от базовой грани с локальным замером толщины
|
||||||
|
и мягким критерием (доля точек, а не все), плюс отдельная обработка мелких
|
||||||
|
скруглений контура. Оценка: 1–2 дня работы.
|
||||||
|
|
||||||
|
До этого пространственные детали проходят обмер, развёртку по гибам и метрологию,
|
||||||
|
но код выдаётся скелетом с TODO, а не готовым.
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
# Инструменты, использованные при создании RECADA-реверса
|
||||||
|
|
||||||
|
Всё бесплатное и open source. Платные строки проекта — только серверы и токены.
|
||||||
|
|
||||||
|
## Установка целиком
|
||||||
|
```
|
||||||
|
pip install cadquery-ocp build123d networkx numpy scipy streamlit ezdxf
|
||||||
|
```
|
||||||
|
|
||||||
|
## Ядро геометрии
|
||||||
|
|
||||||
|
| Инструмент | Роль в проекте |
|
||||||
|
|---|---|
|
||||||
|
| **OCP** (cadquery-ocp 7.9.3) | Python-биндинг ядра OpenCASCADE. Чтение и запись STEP, обход B-Rep, все булевы операции, наращивание, сшивка, метрология. Ровно то ядро, что внутри FreeCAD, но как библиотека — поэтому FreeCAD в цепочке не нужен |
|
||||||
|
| **build123d 0.11.1** | Параметрическое построение (кубики листового металла). Проверено: операций Bend/Flange/Hem в нём НЕТ, писали свои |
|
||||||
|
| **networkx 3.6** | Графы: AAG (смежность граней), FTG (переходы гибки), двухцветная раскраска для разделения оболочек, поиск поддеревьев при повороте шарниров |
|
||||||
|
| **numpy** | Векторная математика: нормали, оси, углы, проекции |
|
||||||
|
| **scipy** | Оптимизатор Powell — подбор неизвестных параметров по метрологической невязке |
|
||||||
|
| **ezdxf** | Экспорт развёртки в DXF с линиями гиба на отдельном слое |
|
||||||
|
| **streamlit 1.62** | Браузерный интерфейс: загрузка STEP, ползунки углов, вердикты, скачивание |
|
||||||
|
|
||||||
|
## Конкретные модули OpenCASCADE, которые пригодились
|
||||||
|
|
||||||
|
| Модуль | Зачем |
|
||||||
|
|---|---|
|
||||||
|
| `STEPControl_Reader/Writer` | чтение и запись STEP |
|
||||||
|
| `TopExp_Explorer`, `TopTools_IndexedDataMapOfShapeListOfShape` | обход топологии, поиск смежности граней и свободных рёбер |
|
||||||
|
| `BRepAdaptor_Surface`, `BRepLProp_SLProps` | тип поверхности, точка и нормаль в UV |
|
||||||
|
| `BRepTopAdaptor_FClass2d` | проверка, попадает ли UV-точка внутрь обрезанной грани (без неё метрология врала) |
|
||||||
|
| `BRepExtrema_DistShapeShape` | расстояние точка→поверхность — основа метрологии |
|
||||||
|
| `BRepBuilderAPI_Sewing` | сшивка граней в оболочку |
|
||||||
|
| `BRepBuilderAPI_MakeSolid` + флаг Closed | превращение замкнутой оболочки в тело (без этого STEP пишет поверхность, и портал отклоняет) |
|
||||||
|
| `BRepOffset_MakeOffset` | наращивание на толщину; поэлементно надёжнее, чем всей оболочкой |
|
||||||
|
| `BRepAlgoAPI_Fuse / Common` | объединение кусков, разрез полупространством |
|
||||||
|
| `BRepPrimAPI_MakeHalfSpace / MakePrism / MakeBox` | растяжение детали: разрез, призма сечения |
|
||||||
|
| `BRepFill_Filling` | заплатки на свободные контуры (даёт сплайн — распознавание листа ломает, применять осторожно) |
|
||||||
|
| `ShapeAnalysis_FreeBounds` | сборка свободных рёбер в контуры |
|
||||||
|
| `ShapeUpgrade_UnifySameDomain` | склейка граней одной поверхности после булевых |
|
||||||
|
| `GProp/BRepGProp` | объёмы и площади |
|
||||||
|
| `Bnd_Box/BRepBndLib` | габариты |
|
||||||
|
|
||||||
|
## Методы (что из v25 реально пригодилось)
|
||||||
|
|
||||||
|
- **AAG** — граф смежности граней, основа всего обмера
|
||||||
|
- **Виртуальный щуп** — точка минус нормаль на толщину: попала на поверхность → грань оболочечная. Дал разделение на две стороны листа там, где не сработали три других алгоритма
|
||||||
|
- **Парование + двухцветная раскраска** — щуп сообщает, на какую грань попал; граф парования оказался двудольным, стороны разделились 21/20
|
||||||
|
- **FTG** — фланцы узлы, гибы рёбра
|
||||||
|
- **Оригами-кинематика** — жёсткие поддеревья на шарнирах по осям гибов
|
||||||
|
- **Метрология point-sampling** — расстояние от точек эталона до поверхности кандидата
|
||||||
|
- **Два угла гиба** — поворот и двугранный (180 − поворот)
|
||||||
|
- **Аналитическая развёртка** — BA = φ·(R + K·t), K по таблице R/t
|
||||||
|
|
||||||
|
## Отвергнуто на практике
|
||||||
|
|
||||||
|
- **pythonocc-core отдельно** — то же ядро уже есть через OCP
|
||||||
|
- **CadQuery** — дублирует build123d
|
||||||
|
- **Analysis Situs** — тяжёлая C++-платформа ради того, что делают ~100 строк на networkx
|
||||||
|
- **Наращивание оболочки целиком** — оставляет дыры; поэлементно надёжнее
|
||||||
|
- **Заплатки BRepFill** для зоны гиба — дают сплайновую грань, распознавание листа ломается
|
||||||
|
- **Растяжение по глобальной оси** для наклонной стенки — даёт ступеньку в контуре; тянуть надо вдоль плоскости стенки
|
||||||
|
|
||||||
|
## Три ошибки, найденные и исправленные по ходу
|
||||||
|
|
||||||
|
1. **Метрология мерила до тела, а не до поверхности.** `distToShape` до солида возвращает 0 для точек внутри материала — «толстая» деталь проходила приёмку. Проверка: сдвиг 0.3 мм давал 74 % точек в допуске, после исправления 29.8 %
|
||||||
|
2. **Односторонняя выборка не видит лишний металл.** Кандидат длиннее эталона давал RMS 0 и 100 %. Невязка сделана двусторонней
|
||||||
|
3. **Не было проверки замкнутости.** Деталь может быть точной и дырявой одновременно; метрология этого не ловит. Добавлен подсчёт свободных рёбер — предсказал отказ портала до самого отказа
|
||||||
|
|
||||||
|
## Три критерия приёмки (итог)
|
||||||
|
|
||||||
|
| Критерий | Чем проверяется | Что ловит |
|
||||||
|
|---|---|---|
|
||||||
|
| Метрология | point-sampling двусторонний, до поверхности | точность геометрии |
|
||||||
|
| Целостность | свободные рёбра = 0, солидов ≥ 1 | дыры, незамкнутость |
|
||||||
|
| Производство | загрузка на портал поставщика | распознавание как листовой детали |
|
||||||
|
|
||||||
|
Третий критерий главный и не заменяется первыми двумя. Проверено: номинальная
|
||||||
|
реконструкция прошла портал Blechcon с развёрткой 299 × 168 мм — как оригинал.
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
# Запуск
|
||||||
|
|
||||||
|
Рабочая папка: `C:\CAD COWORK`
|
||||||
|
|
||||||
|
## Одной командой
|
||||||
|
|
||||||
|
**cmd:**
|
||||||
|
```
|
||||||
|
"C:\CAD COWORK\go.bat"
|
||||||
|
```
|
||||||
|
|
||||||
|
**PowerShell:**
|
||||||
|
```powershell
|
||||||
|
& "C:\CAD COWORK\go.ps1"
|
||||||
|
```
|
||||||
|
|
||||||
|
Скрипт сам переносит свежий `recada.py` из Downloads, если он там лежит,
|
||||||
|
и запускает интерфейс на `http://localhost:8501`.
|
||||||
|
|
||||||
|
## Вручную
|
||||||
|
|
||||||
|
**cmd:**
|
||||||
|
```
|
||||||
|
cd /d "C:\CAD COWORK\tool"
|
||||||
|
.venv\Scripts\activate
|
||||||
|
streamlit run recada.py --server.maxUploadSize 2000
|
||||||
|
```
|
||||||
|
|
||||||
|
**PowerShell** (без активации окружения, чтобы не возиться с политикой скриптов):
|
||||||
|
```powershell
|
||||||
|
cd "C:\CAD COWORK\tool"
|
||||||
|
.\.venv\Scripts\python.exe -m streamlit run recada.py --server.maxUploadSize 2000
|
||||||
|
```
|
||||||
|
|
||||||
|
Если порт занят — добавьте `--server.port 8502`.
|
||||||
|
|
||||||
|
## Вкладки
|
||||||
|
|
||||||
|
| Вкладка | Что делает |
|
||||||
|
|---|---|
|
||||||
|
| Рабочее окно | дерево сборки, групповой реверс, операции, подъём платформы, пакет производства |
|
||||||
|
| Изделие | продуктовые параметры: высота, длина, поперечины, проверки |
|
||||||
|
| Просмотр 3D | свой просмотрщик: разлёт, сечение, измерение, выбор деталей |
|
||||||
|
| Сборка | разбор сборки, выгрузка детали отдельным STEP |
|
||||||
|
| Операции | зеркало, сверление, заглушка, обрезка, скругления |
|
||||||
|
| Обмер детали | толщина, гибы, отверстия, разгрузки, DXF развёртки |
|
||||||
|
| Параметрическая модель | углы гибов ползунками, сборка тела |
|
||||||
|
| Генерация кода | самодостаточный Python для FreeCAD |
|
||||||
|
| Приёмка | метрология двух файлов |
|
||||||
|
|
||||||
|
## Командная строка
|
||||||
|
|
||||||
|
```
|
||||||
|
python recada.py probe|metro|unfold|dxf|rebuild|fold|fold2|stretch|check|fit файл.step
|
||||||
|
```
|
||||||
|
|
||||||
|
Примеры:
|
||||||
|
```
|
||||||
|
python recada.py check "C:\CAD COWORK\parts\LRDE-2BR1\LRDE-2BR1_nominal_v2.step"
|
||||||
|
python recada.py fold2 деталь.step bend_94=10
|
||||||
|
python recada.py stretch деталь.step y 20
|
||||||
|
```
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Пока пусто. См. README.md — назначение папки.
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"vehicle": "ford_ranger_p703_dc",
|
||||||
|
"name": "Ford Ranger P703 Double Cab",
|
||||||
|
"coordinate_system": "OEM",
|
||||||
|
"sources": [
|
||||||
|
{"type": "aufbaurichtlinien", "doc": "Ford BEMM", "version": "", "pages": []},
|
||||||
|
{"type": "oem_cad", "file": "", "format": "STEP"},
|
||||||
|
{"type": "scan", "file": "", "accuracy_mm": 0.1},
|
||||||
|
{"type": "brackets", "note": "подтверждено металлом"}
|
||||||
|
],
|
||||||
|
"roof": {"length_mm": null, "width_mm": null, "profile": "rinne|reling|gewinde"},
|
||||||
|
"mount_points": [
|
||||||
|
{"id": "L1", "xyz": [null, null, null], "normal": [null, null, null],
|
||||||
|
"type": "rinne", "max_load_kg": null, "source_page": null}
|
||||||
|
],
|
||||||
|
"forbidden_zones": [
|
||||||
|
{"id": "antenne", "shape": "box", "xyz_min": [], "xyz_max": [], "source_page": null}
|
||||||
|
],
|
||||||
|
"limits": {"roof_load_kg": null, "roof_load_offroad_factor": 0.5,
|
||||||
|
"cog_height_max_mm": null, "vehicle_height_mm": null},
|
||||||
|
"fbx": {"file": "", "scale_factor": null, "calibrated_by": "radstand|breite|dachhoehe"}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user