From 6c9891c7e2282f93c0fe20d4549488692000608f Mon Sep 17 00:00:00 2001 From: zio Date: Sat, 11 Jul 2026 23:31:45 +0900 Subject: [PATCH] feat: mobile harness + design v2.1 (84 screens) + PLANNING v3.1 + deliverables + Stitch screens - Harness: kintex-mobile-dev agent + kintex-mobile-orchestrator skill (WISE mobile ref, Stitch-first design rule, dual app targets B2B/B2C) - design.md v2.1: full 84-screen inventory (web 51 / admin 10 / public 8 / mobile 15) with Stitch prompts incl. ticketing (SCR-P7/P8, M14/M15) - PLANNING v3.1: unified account + split signup tracks (2FA required for staff, light signup/guest for visitors), one codebase / two app targets - Deliverables: dev plan (21s), user/operator/developer guides (17/14/15s), program spec (44s, 65 programs, 8 flowcharts), DA (DB design 14s + table spec xlsx 35 tables/299 cols) - Benchmark: ticketing-app-benchmark.md (7 apps) -> IMPLEMENTATION_BACKLOG Phase F (14 items) - Stitch: 23 generated screens saved (mobile 10, admin 6, web core 5, ticket 2) - mobile/: Expo scaffold (SDK 51, expo-router, secure store JWT) - frontend: SCR-13~17 QA fixes, icons.tsx, kintexEvents, V10 seed migration - ci/: KINTEX CI logo assets Co-Authored-By: Claude Fable 5 --- .claude/agents/kintex-frontend-dev.md | 3 + .claude/agents/kintex-mobile-dev.md | 50 + .../skills/kintex-impl-orchestrator/SKILL.md | 5 +- .../kintex-mobile-orchestrator/SKILL.md | 60 + .gitignore | 7 + CLAUDE.md | 18 + ci/CI_AI/CI_01.ai | Bin 0 -> 92771 bytes ci/CI_AI/CI_02.ai | Bin 0 -> 113080 bytes ci/CI_AI/CI_03.ai | Bin 0 -> 112891 bytes ci/CI_AI/CI_04.ai | 874 +++++ ci/CI_AI/CI_05.ai | 577 ++++ ci/CI_JPG/CI_01.jpg | Bin 0 -> 15054 bytes ci/CI_JPG/CI_02.jpg | Bin 0 -> 15673 bytes ci/CI_JPG/CI_03.jpg | Bin 0 -> 28620 bytes ci/CI_JPG/CI_04.jpg | Bin 0 -> 44775 bytes ci/CI_JPG/CI_05.jpg | Bin 0 -> 73120 bytes docs/IMPLEMENTATION_BACKLOG.md | 34 + docs/PLANNING.md | 59 +- docs/WORK_STATUS.md | 1 + docs/analysis/ticketing-app-benchmark.md | 141 + .../DA산출물/_gen/gen_da_deliverables.py | 854 +++++ .../DA산출물/데이터베이스설계서.pptx | Bin 0 -> 79035 bytes docs/deliverables/DA산출물/테이블정의서.xlsx | Bin 0 -> 26229 bytes docs/deliverables/_gen/_docxutil.py | 70 + docs/deliverables/_gen/gen_dev_plan_pptx.py | 785 +++++ docs/deliverables/_gen/gen_docx.py | 337 ++ .../_gen/gen_xlsx.py.tmp.8724.0c7f99a3a6e3 | 0 docs/deliverables/_gen/sources.py | 264 ++ docs/deliverables/개발계획서.pptx | Bin 0 -> 88139 bytes docs/deliverables/사업수행계획서.docx | Bin 0 -> 50347 bytes .../지침서/_gen/gen_guides_pptx.py | 1025 ++++++ docs/deliverables/지침서/개발자지침서.pptx | Bin 0 -> 67139 bytes docs/deliverables/지침서/사용자지침서.pptx | Bin 0 -> 76143 bytes docs/deliverables/지침서/운영자지침서.pptx | Bin 0 -> 64468 bytes .../_gen/gen_program_spec_pptx.py | 1115 +++++++ .../프로그램사양서/프로그램사양서.pptx | Bin 0 -> 186540 bytes docs/design.md | 960 +++++- mobile/.gitignore | 23 + mobile/README.md | 43 + mobile/app.json | 40 + mobile/app/(tabs)/_layout.tsx | 59 + mobile/app/(tabs)/field.tsx | 99 + mobile/app/(tabs)/gallery.tsx | 151 + mobile/app/(tabs)/index.tsx | 193 ++ mobile/app/(tabs)/more.tsx | 97 + mobile/app/_layout.tsx | 39 + mobile/app/checklist.tsx | 344 ++ mobile/app/forgot-password.tsx | 116 + mobile/app/index.tsx | 31 + mobile/app/inspection.tsx | 269 ++ mobile/app/login.tsx | 207 ++ mobile/app/register.tsx | 88 + mobile/babel.config.js | 6 + mobile/components/AiImage.tsx | 122 + mobile/components/Banner.tsx | 34 + mobile/components/Button.tsx | 95 + mobile/components/Card.tsx | 47 + mobile/components/DdayChip.tsx | 29 + mobile/components/Field.tsx | 82 + mobile/components/StatusBadge.tsx | 45 + mobile/context/AuthContext.tsx | 105 + mobile/expo-env.d.ts | 3 + mobile/lib/api.ts | 104 + mobile/lib/auth.ts | 62 + mobile/lib/config.ts | 15 + mobile/lib/secureStore.ts | 44 + mobile/lib/types.ts | 105 + mobile/package.json | 38 + mobile/theme/colors.ts | 40 + mobile/theme/index.ts | 3 + mobile/theme/typography.ts | 32 + mobile/tsconfig.json | 17 + .../migration/V10__seed_exhibitions_10yr.sql | 2839 +++++++++++++++++ .../src/components/layout/AppShell.tsx | 40 +- .../src/components/layout/app-shell.css | 7 +- src/frontend/src/components/ui/AiImage.tsx | 3 +- src/frontend/src/components/ui/Badge.tsx | 3 +- .../src/components/ui/CompareSlider.tsx | 3 +- src/frontend/src/components/ui/icons.tsx | 446 +++ .../approval/ManagerApprovalQueuePage.tsx | 13 +- .../screens/approval/ReviewDetailsPage.tsx | 22 +- .../compliance/ComplianceReportPage.tsx | 9 +- .../schedule/ExhibitionSchedulePage.tsx | 277 +- .../src/screens/schedule/kintexEvents.ts | 1112 +++++++ .../src/screens/schedule/sampleSchedule.ts | 178 +- .../src/screens/schedule/schedule.css | 115 + .../scr_18_hall_booking/code.html | 446 +++ .../scr_19_booth_inventory/code.html | 312 ++ .../scr_20_booth_self_select/code.html | 364 +++ .../scr_21_settlement/code.html | 471 +++ .../scr_24_contractor_rfq/code.html | 479 +++ .../scr_28_quote_authoring/code.html | 378 +++ .../scr_a1/code.html | 487 +++ .../scr_a10/code.html | 347 ++ .../scr_a2/code.html | 423 +++ .../scr_a3/code.html | 418 +++ .../scr_a4/code.html | 469 +++ .../scr_a7/code.html | 411 +++ .../scr_m10/code.html | 250 ++ .../scr_m11/code.html | 292 ++ .../scr_m12/code.html | 294 ++ .../scr_m13/code.html | 274 ++ .../scr_m14/code.html | 297 ++ .../scr_m4/code.html | 329 ++ .../scr_m5/code.html | 313 ++ .../scr_m6/code.html | 410 +++ .../scr_m7/code.html | 290 ++ .../scr_m8/code.html | 285 ++ .../scr_m9/code.html | 291 ++ .../scr_p8/code.html | 295 ++ 110 files changed, 23563 insertions(+), 195 deletions(-) create mode 100644 .claude/agents/kintex-mobile-dev.md create mode 100644 .claude/skills/kintex-mobile-orchestrator/SKILL.md create mode 100644 ci/CI_AI/CI_01.ai create mode 100644 ci/CI_AI/CI_02.ai create mode 100644 ci/CI_AI/CI_03.ai create mode 100644 ci/CI_AI/CI_04.ai create mode 100644 ci/CI_AI/CI_05.ai create mode 100644 ci/CI_JPG/CI_01.jpg create mode 100644 ci/CI_JPG/CI_02.jpg create mode 100644 ci/CI_JPG/CI_03.jpg create mode 100644 ci/CI_JPG/CI_04.jpg create mode 100644 ci/CI_JPG/CI_05.jpg create mode 100644 docs/analysis/ticketing-app-benchmark.md create mode 100644 docs/deliverables/DA산출물/_gen/gen_da_deliverables.py create mode 100644 docs/deliverables/DA산출물/데이터베이스설계서.pptx create mode 100644 docs/deliverables/DA산출물/테이블정의서.xlsx create mode 100644 docs/deliverables/_gen/_docxutil.py create mode 100644 docs/deliverables/_gen/gen_dev_plan_pptx.py create mode 100644 docs/deliverables/_gen/gen_docx.py create mode 100644 docs/deliverables/_gen/gen_xlsx.py.tmp.8724.0c7f99a3a6e3 create mode 100644 docs/deliverables/_gen/sources.py create mode 100644 docs/deliverables/개발계획서.pptx create mode 100644 docs/deliverables/사업수행계획서.docx create mode 100644 docs/deliverables/지침서/_gen/gen_guides_pptx.py create mode 100644 docs/deliverables/지침서/개발자지침서.pptx create mode 100644 docs/deliverables/지침서/사용자지침서.pptx create mode 100644 docs/deliverables/지침서/운영자지침서.pptx create mode 100644 docs/deliverables/프로그램사양서/_gen/gen_program_spec_pptx.py create mode 100644 docs/deliverables/프로그램사양서/프로그램사양서.pptx create mode 100644 mobile/.gitignore create mode 100644 mobile/README.md create mode 100644 mobile/app.json create mode 100644 mobile/app/(tabs)/_layout.tsx create mode 100644 mobile/app/(tabs)/field.tsx create mode 100644 mobile/app/(tabs)/gallery.tsx create mode 100644 mobile/app/(tabs)/index.tsx create mode 100644 mobile/app/(tabs)/more.tsx create mode 100644 mobile/app/_layout.tsx create mode 100644 mobile/app/checklist.tsx create mode 100644 mobile/app/forgot-password.tsx create mode 100644 mobile/app/index.tsx create mode 100644 mobile/app/inspection.tsx create mode 100644 mobile/app/login.tsx create mode 100644 mobile/app/register.tsx create mode 100644 mobile/babel.config.js create mode 100644 mobile/components/AiImage.tsx create mode 100644 mobile/components/Banner.tsx create mode 100644 mobile/components/Button.tsx create mode 100644 mobile/components/Card.tsx create mode 100644 mobile/components/DdayChip.tsx create mode 100644 mobile/components/Field.tsx create mode 100644 mobile/components/StatusBadge.tsx create mode 100644 mobile/context/AuthContext.tsx create mode 100644 mobile/expo-env.d.ts create mode 100644 mobile/lib/api.ts create mode 100644 mobile/lib/auth.ts create mode 100644 mobile/lib/config.ts create mode 100644 mobile/lib/secureStore.ts create mode 100644 mobile/lib/types.ts create mode 100644 mobile/package.json create mode 100644 mobile/theme/colors.ts create mode 100644 mobile/theme/index.ts create mode 100644 mobile/theme/typography.ts create mode 100644 mobile/tsconfig.json create mode 100644 src/backend/src/main/resources/db/migration/V10__seed_exhibitions_10yr.sql create mode 100644 src/frontend/src/components/ui/icons.tsx create mode 100644 src/frontend/src/screens/schedule/kintexEvents.ts create mode 100644 stitch_kintex_ai_system_architect/scr_18_hall_booking/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_19_booth_inventory/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_20_booth_self_select/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_21_settlement/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_24_contractor_rfq/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_28_quote_authoring/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_a1/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_a10/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_a2/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_a3/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_a4/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_a7/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_m10/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_m11/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_m12/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_m13/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_m14/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_m4/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_m5/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_m6/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_m7/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_m8/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_m9/code.html create mode 100644 stitch_kintex_ai_system_architect/scr_p8/code.html diff --git a/.claude/agents/kintex-frontend-dev.md b/.claude/agents/kintex-frontend-dev.md index 536000d..722f8fb 100644 --- a/.claude/agents/kintex-frontend-dev.md +++ b/.claude/agents/kintex-frontend-dev.md @@ -19,6 +19,9 @@ model: opus - PLANNING 범위를 벗어난 Stitch 화면(business_intelligence·hall_operations 등)은 designer가 P2로 분류하기 전엔 이식하지 않는다 - 정적 화면 → 실제 데이터 바인딩(백엔드 계약)·상태(로딩/빈/에러) 구현으로 승격 +## 레퍼런스 (WISE 웹 — GUARDiA 표준 프레임워크 기능 패턴) +`C:\GUARDiA\workspace\uiws\frontend\src\`(읽기 전용 — 차용하되 수정 금지): 공통 업무기능 화면(pages/worklog·schedule·message·stats·notice·report·approval·meeting·system 등)·api 클라이언트·hooks·i18n·layout 구성이 검증된 표준이다. 공통/시스템관리성 화면(kintex-common-dev 이식 범위와 맞닿는 부분)을 구현할 때 대응 uiws 페이지 구조를 먼저 읽고 차용한다(재발명 금지). 킨텍스 도메인 고유 화면(플로어플랜·배선·옥션 등)은 design.md·Stitch가 권위. + ## 히어로 시각화 (제품의 핵심) - **플로어플랜 캔버스**(SCR-03): 다크 서피스 `#1C2536` 위 부스 폴리곤 드래그·트렌치 그리드·위반 오버레이 — SVG 우선(대규모는 WebGL/Canvas 검토) - **배선 뷰**(SCR-07): 전기(적)·네트워크(청)·급배수(녹) 경로 오버레이 diff --git a/.claude/agents/kintex-mobile-dev.md b/.claude/agents/kintex-mobile-dev.md new file mode 100644 index 0000000..7111599 --- /dev/null +++ b/.claude/agents/kintex-mobile-dev.md @@ -0,0 +1,50 @@ +--- +name: kintex-mobile-dev +description: 킨텍스 자동전시시스템 모바일 앱(mobile/, Expo SDK 51 + expo-router + React Native 0.74 + TypeScript) 전담 구현 에이전트. design.md §4 모바일 화면(SCR-M*)·현장 체크리스트/검수·시각화 갤러리·승인 흐름 구현, 실데이터 API 배선, 오프라인·푸시 알림·i18n·앱 아이콘/스플래시 에셋, EAS 빌드 준비를 수행할 때 사용한다. 웹 프론트(src/frontend)는 kintex-frontend-dev 담당 — 혼동 금지. 다시 실행·업데이트·보완 포함. +tools: Read, Write, Edit, Glob, Grep, Bash +model: opus +--- + +당신은 킨텍스 자동전시시스템의 모바일 앱 엔지니어다. `mobile/`(Expo)만 담당한다 — 웹 프론트(`src/frontend`)는 kintex-frontend-dev의 영역이다. + +## 앱 타깃 2개 (2026-07-11 소유자 확정 — 코드베이스는 mobile/ 하나) +- **① 운영 앱(B2B)**: 업무 사용자 전용(체크리스트·검수·승인). 로그인 = 승인/초대 계정 + 2FA 필수. 스토어 미공개, 사내 QR/APK 배포 +- **② 관람객 앱(B2C)**: 스토어 공개 배포. 간편가입(이메일/소셜)·게스트 흐름, 2FA 미강제. 티켓 지갑·배지/QR·wayfinding·비즈매칭(SCR-M5~M9·M14/M15) +- 빌드 타깃 분리는 Expo 설정(app.json variants/eas 프로파일)로, 화면 라우팅은 역할 기반 진입으로 구현. 두 타깃에 공통 theme/lib 공유 + +## 확정 스택 (mobile/README.md 준수) +- **Expo SDK 51 · expo-router ~3.5 · React Native 0.74 · TypeScript** — 버전 임의 업그레이드 금지(Expo SDK 정합 깨짐) +- JWT는 `expo-secure-store`(네이티브), 웹 폴백은 AsyncStorage. 비밀번호 저장 금지("아이디 기억"=이메일만) +- 디자인 토큰: `mobile/theme/` — `docs/design.md` §1 팔레트·타이포의 모바일 사본. **신규 토큰 발명 금지**, 필요 시 designer 경유로 design.md에 먼저 반영 +- API: 공유 백엔드 `https://kintex.zioinfo.co.kr` — `app.json > extra.apiBase`/`EXPO_PUBLIC_API_BASE`로만 재정의. 시크릿 하드코딩 금지 + +## 레퍼런스 (WISE 모바일 — 검증된 구현 패턴 단일 출처) +`C:\GUARDiA\workspace\guardia-messenger\app\uiws\` (읽기 전용 — 복사·차용하되 수정 금지): +- **API 클라이언트**: `uiwsApi.ts` — 오류 봉투 처리·페이지 봉투 언랩(`unwrapPage`, PageResponse → 배열)·degraded 폴백. kintex `lib/api.ts` 확장 시 이 패턴을 따른다 +- **인증**: `(auth)/` — 2FA(OTP) 로그인 플로우·토큰 키 네임스페이스 분리(uiws는 `uiws_*` — kintex는 `kintex_*`로 동일 원칙 적용) +- **화면 컨벤션**: worklog·schedule·message·stats·notice·report·approval·meeting 등 60+ 화면의 목록/상세/폼 구성·48px 터치·빈/로딩/에러 상태 처리 +- 신규 화면 구현 전 대응되는 uiws 화면이 있으면 먼저 읽고 구조를 차용한다(재발명 금지) + +## 담당 범위 +- **화면**: design.md §4 모바일 화면(SCR-M1 체크리스트·SCR-M2 검수 등)과 조회·승인·현장 시나리오. 캔버스 편집은 데스크톱 전용 — 모바일은 뷰어+승인만 +- **Stitch 이식**: 신규 화면 디자인은 **Google Stitch 경유**가 원칙 — designer가 design.md에 SCR-M* 스펙·Stitch 프롬프트를 먼저 작성하고, Stitch 생성 화면(`stitch_kintex_ai_system_architect//code.html`)을 React Native 컴포넌트로 이식한다. 하드코딩 값은 `mobile/theme/` 토큰으로 치환(웹 kintex-frontend-dev의 Stitch 이식 원칙과 동일) +- **API 배선**: 오류 봉투 `{ success, data, error }`(`lib/api.ts`) + degraded 폴백(`isDegraded`) 준수. 백엔드 계약이 없으면 kintex-backend-dev에 계약 요청 후 진행(임의 계약 발명 금지) +- **NFR**: 48px 터치 타겟·오프라인 초안 보존·접근성(스크린리더 라벨)·i18n 준비 +- **에셋·빌드 준비**: 앱 아이콘/스플래시(`assets/`), `eas.json` 프로파일 초안 — 실빌드 실행은 kintex-devops-dev와 게이트(G3) 확인 후 + +## 보안 불변 (위반 시 QA 반려 대상) +- AI 생성 이미지는 `components/AiImage.tsx` 경유만 — 워터마크 + "AI 생성 예상 이미지" 고지 상시(제거 불가) +- 자격증명·API 키·서버 IP를 코드/커밋에 미기재. RBAC(행사 단위) 화면 가드 준수 + +## 작업 원칙 +- 작은 단위 구현 후 `npm run typecheck`(tsc --noEmit) 통과 확인. 로컬 네이티브 빌드는 하지 않는다(Expo Go/typecheck 기준 검증) +- `mobile/node_modules`는 gitignore — 커밋 경로에 포함 금지(리포 대용량 함정) +- 이전 산출물이 있으면(화면·훅) 읽고 개선점만 반영. 사용자 피드백이 주어지면 해당 화면만 수정 + +## 협업 / 팀 통신 프로토콜 +- **수신**: 오케스트레이터(작업 할당), designer(§4 화면 스펙·토큰), kintex-backend-dev(API 계약 `_workspace/*_backend_*`) +- **발신**: 경계면 불일치·계약 공백 → kintex-qa/kintex-backend-dev에 SendMessage. 화면 완성 통지 → kintex-qa(점진 QA). 진행 기록 → `_workspace/` +- **빌드 인계**: eas.json·에셋 준비 완료 시 kintex-devops-dev에 인계 + +## 산출 +- 코드: `mobile/` (화면 `app/`, 컴포넌트 `components/`, API `lib/`). 커밋 영어(conventional commits). `mobile/README.md` 화면 표를 변경 시 함께 갱신 diff --git a/.claude/skills/kintex-impl-orchestrator/SKILL.md b/.claude/skills/kintex-impl-orchestrator/SKILL.md index 5af6d77..fba4b62 100644 --- a/.claude/skills/kintex-impl-orchestrator/SKILL.md +++ b/.claude/skills/kintex-impl-orchestrator/SKILL.md @@ -8,7 +8,9 @@ description: 킨텍스 자동전시시스템 구현 오케스트레이터. React `docs/PLANNING.md`(v2.0)·`docs/design.md`·`docs/IMPLEMENTATION_BACKLOG.md`를 근거로 구현(`src/`)을 에이전트 팀으로 조율한다. **실행 모드: 에이전트 팀**. 모든 Agent 호출은 `model: "opus"`. ## 확정 스택 (불변) -React 18/19(Vite·TS) · Spring Boot 3.x(Java17)+MyBatis · PostgreSQL(PostGIS) · Redis 큐 · 나노바나나 Python 워커(google-genai `gemini-3.1-flash-image-preview`). AI 지능=Claude 기본+설정형 모델 전환(AiTextRouter/AiConfig, Ollama 폴백). 레퍼런스 공통 프레임워크=**WISE(UIWS, `workspace/uiws`)**. +React 18/19(Vite·TS) · Spring Boot 3.x(Java17)+MyBatis · PostgreSQL(PostGIS) · Redis 큐 · 나노바나나 Python 워커(google-genai `gemini-3.1-flash-image-preview`). AI 지능=Claude 기본+설정형 모델 전환(AiTextRouter/AiConfig, Ollama 폴백). 레퍼런스 공통 프레임워크=**WISE(UIWS, `workspace/uiws`)** — 백엔드 모듈뿐 아니라 **웹 기능 화면도 uiws frontend(pages/worklog·schedule·message·stats·notice·report·approval·meeting·system) 패턴을 차용**한다(재발명 금지). 디자인은 Stitch 경유(designer → design.md → Stitch → 이식). + +**경계:** 모바일 앱(`mobile/`, Expo) 전용 작업은 `kintex-mobile-orchestrator` 담당 — 이 하네스는 웹·백엔드·도메인 모듈. 모바일이 요구하는 백엔드 API 확장은 양쪽 어디서든 kintex-backend-dev 단일 창구로 처리한다. ## 에이전트 로스터 | 그룹 | 에이전트 | 역할 | @@ -16,6 +18,7 @@ React 18/19(Vite·TS) · Spring Boot 3.x(Java17)+MyBatis · PostgreSQL(PostGIS) | 아키텍트(설계·표준·검수) | kintex-aa·kintex-sa·kintex-ta·kintex-da·kintex-na | 앱/시스템/기술/데이터/네트워크 아키텍처·NFR·표준 | | 공통 레이어 | kintex-common-dev | WISE(UIWS) 시스템관리+공통 업무기능+JWT/2FA(OTP) 이식(전 모듈 선행) | | 코어 | kintex-backend-dev·kintex-frontend-dev·kintex-db-engineer | Spring/MyBatis API·React·PostGIS 스키마 | +| 모바일(경계) | kintex-mobile-dev | `mobile/`(Expo) — 전용 트랙은 kintex-mobile-orchestrator 경유, 여기선 계약 협의만 | | 도메인 | kintex-bidding-dev(M15 옥션)·kintex-visitor-dev(M10 관람객)·kintex-cms-dev(M12/M17 CMS·공개사이트)·kintex-bi-dev(M16 경영분석)·kintex-admin-dev(M18 관리자) | 도메인 서브시스템(백+프론트 슬라이스) | | AI·시각화 | kintex-ai-dev(Claude 기반 AI)·visualizer(나노바나나 워커) | AI 지능·시공 예상 이미지 | | 품질·배포 | kintex-qa(general-purpose)·kintex-devops-dev | 점진 경계면 QA·빌드/CI/CD | diff --git a/.claude/skills/kintex-mobile-orchestrator/SKILL.md b/.claude/skills/kintex-mobile-orchestrator/SKILL.md new file mode 100644 index 0000000..8073347 --- /dev/null +++ b/.claude/skills/kintex-mobile-orchestrator/SKILL.md @@ -0,0 +1,60 @@ +--- +name: kintex-mobile-orchestrator +description: 킨텍스 자동전시시스템 모바일 앱(mobile/, Expo SDK 51 + React Native + TypeScript) 트랙 오케스트레이터. 모바일 화면(SCR-M*) 구현·실데이터 API 배선·현장 체크리스트/검수·시각화 갤러리·승인 흐름·오프라인·푸시 알림·i18n·앱 아이콘/스플래시·EAS 빌드·APK·QR 배포를 kintex-mobile-dev + designer + kintex-backend-dev + kintex-qa + kintex-devops-dev 팀으로 조율한다. "모바일 앱", "앱 화면", "Expo", "앱 기능 추가", "앱 빌드", "APK", "QR 배포", "푸시 알림", "앱 오프라인", "앱 아이콘/스플래시", "EAS", "모바일 QA", "다시 실행/재실행/업데이트/보완", "특정 화면만" 요청 시 반드시 이 스킬을 사용하라. (웹 프론트·백엔드·도메인 모듈 구현은 kintex-impl-orchestrator, 기획=planner, 디자인=designer 경유.) +--- + +# 킨텍스 자동전시시스템 — 모바일 앱 트랙 오케스트레이터 + +`mobile/`(Expo) 트랙을 에이전트 팀으로 조율한다. **실행 모드: 에이전트 팀**. 모든 Agent 호출은 `model: "opus"`. 근거 문서: `docs/design.md` §4(모바일 화면)·`mobile/README.md`(스택·화면 표·남은 작업)·`docs/PLANNING.md` §2-1(역할별 웹/모바일 분리). + +**구현 레퍼런스 = WISE 모바일** `C:\GUARDiA\workspace\guardia-messenger\app\uiws\`(읽기 전용): uiwsApi.ts API 클라이언트 패턴(봉투 언랩·degraded 폴백)·(auth) 2FA 로그인·60+ 화면 컨벤션. 신규 화면은 대응 uiws 화면 구조를 먼저 차용한다. **디자인 = Stitch 경유**: designer가 design.md SCR-M* 스펙+Stitch 프롬프트 작성 → Stitch 생성(`mcp__stitch__*` 도구 또는 기존 프로젝트 9385904003821333054) → mobile-dev가 React Native로 이식. + +**앱 타깃 2개 (소유자 확정 2026-07-11):** 코드베이스는 `mobile/` 하나, 배포 타깃은 ①운영 앱(B2B, 2FA 필수, 사내 QR/APK) ②관람객 앱(B2C, 스토어 공개, 간편가입·게스트, 2FA 미강제). eas 프로파일/역할 라우팅으로 분리. 관람객 1차 접점은 공개 웹(SCR-P7/P8), 앱은 리텐션 채널. + +## 경계 (중복 회피) +- 웹 프론트(`src/frontend`)·백엔드 모듈·도메인(M2~M18) 구현 = `kintex-impl-orchestrator` +- 이 하네스 = **mobile/ 앱 전용**: 화면·API 배선·NFR·에셋·빌드/배포. 모바일이 요구하는 백엔드 API 확장은 kintex-backend-dev를 이 팀에 합류시켜 처리(계약 단일 출처 유지) + +## 에이전트 로스터 +| 에이전트 | 역할 | 비고 | +|---|---|---| +| kintex-mobile-dev | Expo 화면·API 배선·NFR·에셋·eas.json (핵심 구현) | 신규 전담 | +| designer | design.md §4 모바일 화면 스펙(SCR-M*) 신설·갱신 | 화면 신설 시만 합류 | +| kintex-backend-dev | 모바일이 요구하는 API 확장(부스 목록·검수 제출 등 M6/C-4) | 계약 공백 시만 합류 | +| kintex-qa | 경계면 교차 QA(shape·워터마크·시크릿·typecheck) | 각 화면 완성 직후 점진 | +| kintex-devops-dev | EAS 실빌드·APK·QR 배포 파이프라인 | Phase 3, G3 게이트 후 | +| reviewer | design.md↔구현 정합 교차 검증 | 트랙 마감 시 | + +## Phase 0: 컨텍스트 확인·게이트 +1. `mobile/` 존재(스캐폴드 완료) + `_workspace/` 확인 → **초기/부분 재실행/새 실행** 판별: + - 부분 수정 요청("검수 화면만") → 해당 화면만 kintex-mobile-dev 재호출 → qa + - 새 기능 요청 → Phase 1부터. 기존 `_workspace/`는 `_workspace_prev/`로 이동 +2. `mobile/README.md` "남은 작업"과 `docs/UNDEVELOPED_BACKLOG.md`를 백로그 소스로 삼는다 +3. **게이트 G3(EAS 실빌드)**: EAS는 외부 클라우드 빌드 서비스 — 실빌드·스토어/QR 배포 전 소유자 승인 필요. 미승인 시 eas.json·에셋 준비까지만(코드/구조는 게이트와 무관하게 진행) + +## Phase 1: 디자인 (Stitch 경유, 조건부) +신규 화면이 design.md §4에 없으면: ① designer가 SCR-M* 스펙 + Stitch 프롬프트를 design.md에 추가(직접 수정 금지 — 반드시 designer 경유) → ② Stitch로 화면 생성(`mcp__stitch__generate_screen_from_text`/`edit_screens`, 기존 프로젝트 재사용) → ③ 생성 결과를 `stitch_kintex_ai_system_architect/`에 확보 → mobile-dev 이식 입력으로 연결. 기존 화면 수정이면 건너뜀. + +## Phase 2: 구현 (팀 병렬) +TeamCreate 후 spawn: kintex-mobile-dev(필수) + kintex-backend-dev(계약 공백 시). TaskCreate로 화면 단위 작업 생성, `blockedBy`로 API 계약→화면 배선 의존성 연결. +- kintex-backend-dev: 모바일 필요 API 계약을 `_workspace/{phase}_backend_contract.md`에 먼저 산출 → mobile-dev가 소비 +- kintex-mobile-dev: 화면/기능 구현 + `npm run typecheck` 통과 → 완성 통지를 kintex-qa에 SendMessage + +## Phase 3: 점진 QA → 빌드·배포 +- kintex-qa: 화면 완성 직후 경계면 교차 비교(API shape↔`lib/types.ts`↔화면 소비), AiImage 워터마크 강제, 시크릿/자격증명 미노출, typecheck 회귀. 실패 시 mobile-dev에 반려(통과까지) +- kintex-devops-dev(G3 승인 후): EAS 빌드 → APK → QR 배포 랜딩(GUARDiA ITSM 중앙 APK 저장소 패턴 참조 가능). 커밋·push는 `mobile/node_modules` 제외 경로 지정 add(리포 대용량 함정) +- reviewer: 트랙 마감 시 design.md §4↔`mobile/README.md` 화면 표↔실구현 3자 정합 검증 + +## 데이터 전달 / 에러 +태스크(조율) + 파일(`_workspace/{phase}_{agent}_{artifact}`) + 메시지(실시간). 1회 재시도 후 재실패는 누락 명시하고 진행, 상충 계약은 backend 계약 문서를 권위로. QA 실패는 통과까지 반려. 최종물 `mobile/`, 중간물 `_workspace/` 보존. + +## 보안 불변 +AI 이미지 워터마크·고지 강제(AiImage 경유만). 시크릿·자격증명·서버 IP 코드/커밋 미기재(API 베이스는 env/app.json extra만). 비밀번호 저장 금지. RBAC 화면 가드. 외부 API 금지(예외: Claude·나노바나나 Gemini 기승인, EAS는 G3 승인 필요). + +## 테스트 시나리오 +- **정상**: "모바일 앱에 부스 목록 화면 추가" → Phase0(백로그 확인) → Phase1(designer SCR-M3 스펙) → Phase2(backend 계약→mobile-dev 구현·typecheck) → Phase3(qa 경계면 통과) → 커밋. +- **부분 재실행**: "검수 화면 반려 사유 입력만 보완" → Phase0 부분 판별 → kintex-mobile-dev 단독 수정 → qa 해당 화면만 재검. +- **에러**: G3 미승인 상태 "APK 빌드해서 QR 배포" → eas.json·에셋 준비까지 완료 + 승인 요청 에스컬레이션(빌드 실행 보류 명시). + +## 후속 작업 +description의 후속 키워드(다시 실행·업데이트·보완·특정 화면만)로 재트리거. Phase 0이 초기/새/부분을 판별하고, 각 에이전트는 이전 산출물이 있으면 개선점만 반영한다. diff --git a/.gitignore b/.gitignore index 71dbcad..6541a43 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,13 @@ output/ Thumbs.db .DS_Store +# JVM crash logs +hs_err_pid*.log +replay_pid*.log + +# 에이전트 세션 중간 산출물 (로컬 보존, git 제외 — 최종물은 docs/·src/·deliverables/) +_workspace/ + # Stitch export — 대용량 스크린샷 PNG 제외(로컬 참조 유지), code.html·DESIGN.md만 버전관리 stitch_kintex_ai_system_architect/*/screen.png diff --git a/CLAUDE.md b/CLAUDE.md index 0447d37..1d5b7f8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -49,6 +49,7 @@ GUARDiA 표준 프레임워크(Spring Boot 3.5 + React 19 + MyBatis + PostgreSQL - 모든 문서는 한국어로 작성한다. 코드 식별자/커밋 메시지는 영어. - 기획/디자인 문서를 수정할 때는 반드시 해당 에이전트를 통해 수정한다 (직접 수정 금지). +- **화면 디자인은 항상 Google Stitch에 의뢰한다** (웹·모바일·관리자·공개사이트 공통): designer가 design.md에 화면 스펙+영어 Stitch 프롬프트 작성 → Stitch 생성(`mcp__stitch__*`, 프로젝트 9385904003821333054, 디자인 시스템 "Precision Enterprise AI") → 생성 HTML을 `stitch_kintex_ai_system_architect/`에 확보 → frontend/mobile dev가 이식. 손그림 UI·Stitch 미경유 신규 화면 금지. - 나노바나나 호출은 `tools/nanobanana/` 모듈만 사용한다. API 키는 환경변수 `GEMINI_API_KEY`. - 파일 삭제 전에는 반드시 사용자에게 확인받는다. - 도메인 용어: 부스(booth), 장치공사(booth construction), 반입/반출(move-in/move-out), 주최자(organizer), 참가업체(exhibitor), 관람객(visitor). @@ -80,3 +81,20 @@ GUARDiA 표준 프레임워크(Spring Boot 3.5 + React 19 + MyBatis + PostgreSQL |------|----------|------|------| | 2026-07-11 | 구현 하네스 초기 구성 — 전문 에이전트 6종 + kintex-impl-orchestrator + 구현 백로그 | 전체 | 범용 에이전트만 존재 → 스택 확정 후 실제 구현 조율 팀 구성 | | 2026-07-11 | **v2.0 재구성** — 자동전시시스템 확장(PLANNING v2.0). 신규 에이전트 11종(아키텍트 5·공통 1·도메인 5·AI 1) + 오케스트레이터·백로그 v2.0(Phase A 아키텍처→B 공통레이어→C 부스코어→D 도메인→E 배포) | 전체 | 스코프 확장(전시 전기능·경영분석·CMS·관리자·역할분리·공사 옥션·WISE 공통레이어·AI Claude 전환) | +| 2026-07-11 | WISE 웹 기능 레퍼런스 강화 — kintex-frontend-dev에 uiws frontend(pages 공통 업무기능) 차용 원칙, 오케스트레이터에 웹 기능 화면 WISE 패턴·Stitch 디자인 경유·모바일 경계 명시 + 로스터에 kintex-mobile-dev(경계) 추가 | kintex-frontend-dev·kintex-impl-orchestrator | "웹도 wise 기능 참고" 요청 | + +--- + +## 하네스: 모바일 앱 (kintex-mobile-orchestrator) + +**목표:** `mobile/`(Expo SDK 51 + expo-router + React Native 0.74 + TS) 모바일 앱 트랙 — 화면(SCR-M*)·실데이터 API 배선·오프라인/푸시/i18n·에셋·EAS 빌드·APK·QR 배포. **레퍼런스 = WISE 모바일**(`workspace/guardia-messenger/app/uiws/` — uiwsApi 봉투 언랩·2FA 로그인·화면 컨벤션), **디자인 = Stitch 경유**(designer → design.md SCR-M* → Stitch 생성 → RN 이식). + +**트리거:** 모바일 앱, 앱 화면, Expo, 앱 기능 추가, 앱 빌드, APK, QR 배포, 푸시 알림, 앱 오프라인, 앱 아이콘/스플래시, EAS, 모바일 QA, 다시 실행, 특정 화면만 요청 시 `kintex-mobile-orchestrator` 스킬을 사용하라. (웹·백엔드·도메인 모듈은 `kintex-impl-orchestrator`.) + +**게이트 G3:** EAS 실빌드·배포는 외부 클라우드 빌드 — 소유자 승인 후 실행(승인 전엔 eas.json·에셋 준비까지만). + +**변경 이력:** +| 날짜 | 변경 내용 | 대상 | 사유 | +|------|----------|------|------| +| 2026-07-11 | 초기 구성 — kintex-mobile-dev 신규 + 오케스트레이터(재사용: designer·backend-dev·qa·devops-dev·reviewer). WISE 모바일 레퍼런스·Stitch 디자인 경유 반영 | 전체 | 모바일 앱 트랙 전담 하네스 부재("하네스 생성" + "wise 모바일 참고" + "디자인은 스티치" 요청) | +| 2026-07-11 | **앱 타깃 2개 확정 반영** — 코드베이스 1(mobile/) + 배포 타깃 2(①운영 B2B: 2FA 필수·사내 QR ②관람객 B2C: 스토어 공개·간편가입·게스트). 계정은 단일 통합+가입 트랙 분리(PLANNING v3.1) | kintex-mobile-dev·오케스트레이터 | 소유자 확정 — 회원가입 관람객 포함 질의 → 하이브리드(계정 통합·앱 분리) 채택 | diff --git a/ci/CI_AI/CI_01.ai b/ci/CI_AI/CI_01.ai new file mode 100644 index 0000000000000000000000000000000000000000..0d291aa552096e703bdb1bbcb7b906be1c194d6a GIT binary patch literal 92771 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 literal 0 HcmV?d00001 diff --git a/ci/CI_AI/CI_02.ai b/ci/CI_AI/CI_02.ai new file mode 100644 index 0000000000000000000000000000000000000000..fd51c0a48ea65a59a23728a447362cf823e31f28 GIT binary patch literal 113080 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 bRZ=1d2@zP_&sHGhBrPjL%g?WAtVR1jJ@>-R literal 0 HcmV?d00001 diff --git a/ci/CI_AI/CI_03.ai b/ci/CI_AI/CI_03.ai new file mode 100644 index 0000000000000000000000000000000000000000..de7efbe3cd29c034f049b292566534b98c2edbda GIT binary patch literal 112891 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 literal 0 HcmV?d00001 diff --git a/ci/CI_AI/CI_04.ai b/ci/CI_AI/CI_04.ai new file mode 100644 index 0000000..6270eec --- /dev/null +++ b/ci/CI_AI/CI_04.ai @@ -0,0 +1,874 @@ +%PDF-1.4 % +1 0 obj<> endobj 2 0 obj<> endobj 3 0 obj<> endobj 5 0 obj null endobj 6 0 obj<>/Properties<>>>>>/PieceInfo<>/LastModified(D:20061220104917+09'00')>> endobj 7 0 obj<> endobj 8 0 obj<> endobj 34 0 obj null endobj 35 0 obj<>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 11.0 +%%AI8_CreatorVersion: 11.0.0 +%%For: (te x kin) (com) +%%Title: (CI_04.ai) +%%CreationDate: 12/20/2006 10:49 AM +%%BoundingBox: 293 237 556 484 +%%HiResBoundingBox: 293.2129 237.292 555.9219 483.0151 +%%DocumentProcessColors: Cyan Magenta +%AI5_FileFormat 7.0 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%CMYKProcessColor: 1 1 1 1 ([Registration]) +%AI3_TemplateBox: 421.5 296.7754 421.5 296.7754 +%AI3_TileBox: 12.0649 13.3777 829.6849 583.1377 +%AI3_DocumentPreview: None +%AI5_ArtSize: 841.8898 595.2756 +%AI5_RulerUnits: 6 +%AI9_ColorModel: 2 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI9_OpenToView: 17 554.2754 1 1012 669 26 0 1 10 67 0 0 1 1 1 0 1 +%AI5_OpenViewLayers: 7 +%%PageOrigin:23 19 +%AI7_GridSettings: 100 100 100 100 1 0 0.8196 0.8549 0.8667 0.9098 0.9275 0.9333 +%AI9_Flatten: 0 +%%EndComments + +endstream endobj 36 0 obj<>stream +%%BoundingBox: 293 237 556 484 +%%HiResBoundingBox: 293.2129 237.292 555.9219 483.0151 +%AI7_Thumbnail: 128 120 8 +%%BeginData: 11316 Hex Bytes +%0000330000660000990000CC0033000033330033660033990033CC0033FF +%0066000066330066660066990066CC0066FF009900009933009966009999 +%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 +%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 +%3333663333993333CC3333FF3366003366333366663366993366CC3366FF +%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 +%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 +%6600666600996600CC6600FF6633006633336633666633996633CC6633FF +%6666006666336666666666996666CC6666FF669900669933669966669999 +%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 +%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF +%9933009933339933669933999933CC9933FF996600996633996666996699 +%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 +%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF +%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 +%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 +%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF +%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC +%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 +%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 +%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 +%000011111111220000002200000022222222440000004400000044444444 +%550000005500000055555555770000007700000077777777880000008800 +%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB +%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF +%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF +%524C45FF7E307EFFFF7E54FFFFA92F5A535AA8FFFFA92F5A545454FFFFFF +%7E5A535A2F85FFFFFF7E2F7EFD5AFF7E077EFFA92FA9FFA8295AFFFF2F2F +%A8FF7E2F53FF7E2F2FFFFF5A077EA8A9A8FFFFA82F542FA9FD59FF7E2F7E +%FF2FA9FFFF2F30A9FFFFA92F5AFFA92F7EFFFF542FA8FF5A2FA8FD05FF5A +%7E7E307EFD59FF7E077E535AFFFFA82F2FFFFFFFA8302FFF7E2F5AFFA830 +%2FFFFF5A297E7EA8A8FFA854A8A9075AFD59FF7E30533053FFFFA92F5AFD +%04FF2F54A9A92F7E7E5A53FFFFFF5A30537E5AFFFFFF2FFFFF542FFD59FF +%7E077E532F59FFA82F2FFFFFFFA8302FFF7E2F7E7E075AFFFFFF5A29A8FD +%04FF7E30535A2F30A8FD58FF7E2F7EFF2F30A8FF5330A8FFFFA9077EFFA9 +%297EFF5A2984FFFF5330A8FD04FF5A5AFFA97E077EFD58FF7E077EFF7E07 +%53A8A92954A8AF2F2FA8FF7E2953FF842F07A9FF5A077EA8A9A8FF2FA9FF +%FFA82F2FFD58FFA85A84FFFF7E53A9FFA9535A547EA9FFFFA953A9FFFF7E +%5A7EFFA87E5A7E5A7EA87EFD04FF5A7EFD63FFA9FDFCFFFDF9FF7EFFFFFF +%7EA9FFFFFFA9A9FF7EA9A8A97EA9FFFF84A984A8A8FFA8A97EA9A8FD04FF +%A97EFFFFFFA8A9FD04FF7EA9FFFFA8A884A9A8A8A8FFA8A9A9FFFFFFA884 +%7EA9FD04FF84A9FFFFFFA9A8FFFFFFA884A8FFFFFFA8A9A8FD24FF7E2F7E +%FFA83029A9FFFF53A9A95A53302F5A5AFF5430537E53A9FF7E2F5A5A542F +%A9FFFF532F53FFFF8453FFFFFF5A302FA9FFA9545A2F5A5484FF5A2FFFFF +%FF5A305A7E2F7EFFFFA83029A9FFFF53A9FFFFA9542F5AFFFFFF7E0784FD +%24FF7E077EFFA8292F2FFFFF547EFFFFA8075AFFFFA8302FA9FD04FF532F +%7EFF7E2F2FFFA854292F7EFF7E54FFFFA854532F5AFFFFFF7E2F59FFFFFF +%2F2FA8FF592F7EFFFF7E077EFFA8292F2FFFFF547EFFFF7E2F5A29A8FFFF +%5A2F7EFD24FF7E2F7EFF7E5A53307EFF53A9FFFF84305AFFFFFF2F54A9FD +%04FF7E2FA9FFFF2F54FFFF537E2F5AFFA953FFFFA953FF2F5AFFFFFF8429 +%7EFFFFFF5A2FFFFF542FFFFFFFA9302FFF845A54305AFF53A9FFFF53A984 +%2F7EFFFF7E29A9FD24FF84077EFF8453A92930A85A7EFFFFA8075AFFFFA9 +%542F5A537EFFFF592F7EFF592F7EFFA854A85A077E7E5AFFFF537EFF5A2F +%A9FFFF7E2F5AFFFFFF2F30A9A92954FD04FF2F2FA8A853AF2F2FA85A7EFF +%A954A8FF2F54FFFF5A2F7EFD24FF7E307EFF7E5AFF7E295A54A8FFFF842F +%53FFFFFF2F547EA9A8FFFF7E2984532F7EFFFFFF2FFFA9302F7E5AFFFF54 +%7EFF54307EFFFF84297EFFFFFF5A2FFFA8302FFD04FF542FFF7E5AFF8429 +%5A53A8FFA92FA9A8542FFFFF7E2984FD24FF7E077EFF7E53FFA954292F7E +%FFFFA8295AFFFFA92F29FD05FF5A2F7E840754FFFFA953A8FF7E2F295AFF +%A9295A535A295AFFFF7E2F5AFFFFFF2F2FA8FF2F2FA8FFFFAF2954FF8453 +%FFFF54292F7EFF5954537E2F2F7EFF592F7EFD24FF7E307EFF7E7EFFFFA8 +%302FA9FFFF843054FFFFFF2F54A9FD04FF7E29A9FF5A2985FFFF2FFFFFFF +%53305AFF7E7EFFFFFF542FFFFFA9297EFFFFFF5A2FFFFF7E29A9FFFF7E30 +%7EFF7E7EFFFFA8542FA9FF5A84FFFFA92F7EFF7E2984FD24FF7E077EFF7E +%2FFFFFFF532F7EFFFFA8075AFFFFFF54295A5A5A7EFF5A2F7EFF842F29AF +%FF2FA8FFFFA9075AFF547EFFFFFF532F7EFF7E2F5AFFFFFF2F2FA8FFA954 +%29847E2F53FFFF7E2FFFFFFF5A2F7EFF2FFFFFFFA8302FFF7E2F2F7E537E +%FD21FFA984A8FFA9A9FD04FF7EFFFFFFA8A9A8FFFFFFA9A97EA97EA9FFAF +%7EFFFFFFA884A8FFA8FD04FFA9A8FF84FD05FF7EFFFFFF7EAFFFFFFFA984 +%FD04FFA95A7EA8FFFFFFA9A9FD04FF7EFFA9A9FD04FFA8A9FFFF7EA97E84 +%7EFD20FFA9FFFFFFA8FDFCFFFDFCFFFD05FF597E535A5AFF7E7E84FFFFAF +%53FFFF7E59FFFFFF597EFFFF7E7EA8FFA87E5A7E59A9FFFFA87E5AFFA85A +%597E535A7EFF7E7EA8FFFFFF847E537EA8FFFFFF7E547EFFFFA97EFD07FF +%A87E537E7EFFFFFF7E7E535A53A9FFA853A9FFFFA87EFF7E537E5A7E53A9 +%FF7E537E537EFFFF5A7E537E7EAFFD07FF7E3053A97EA9FFA92954A9FF53 +%7EFFFF2F54FFFFFF542FFFFF7E29A9FFA92F5A845A2FA9FFFF2F30A9FF7E +%7E295A7EA9FF7E07A9FFFF7E307EFF5430A8FFFF5A2954A9FF845AFD06FF +%A95A2FA9A87E5AFFA9542F7E7EA9A9FF53302FFFFFA953FF84A953305AA9 +%FFA9295A7EA87EFFA9302FA97E302FFD07FF7E0784FD05FF7E075A7E2FA8 +%FFFF2F2FFFFFFF2F54FFFF532F7EFFA82F53FFA82F53FFA9542FA9FFFF84 +%2F53FFFFFF592F7EFF7E2F53FFFFFF2F2FA8FF532F295AFFA82FFD06FF5A +%07A8FFFFFFA8FFAF2954FD05FF542F2F53FF845AFFFFFF7E29A9FFFF7E2F +%5AFD05FF2F53FFFF7E2F7EFD06FF7E2F7EFD06FF5A2F54A8FFFFFF2F54A9 +%FFA9542FFFFF7E29A9FFA92F7EFF842F7EFFFF2F54A9FFFFA92F7EFFFFFF +%7E29A9FF7E07A9FFFFFF7E29A9FF5A7E5429A9A85AFD06FF2F54AFFD05FF +%A9542FFD05FF54842F30A8A953FFFFFF5330A8FFFFA92F7EFD04FFA8542F +%FFFF7E07A8FD06FF7E29532F307EFFFFFF842F29FFFFFFA8542F542F542F +%53A8FF532F7EFFA82F2F542953A8FFA92F29FFFFFF7E2F53FFFFFF5A2F7E +%FF532F7EFFFFFF592F7EFF2FA97E2F2FA853FD05FFA82F2FFD07FF2F2F2F +%5453FFA954A884075A7E54A8FFFF5A29A9FFFF7E2F2F542F7EFFA92954A8 +%7E297EA9FD06FF7E2F7EFD06FFA92F305AFFFFFF2F54A9FFA9542FFFFF7E +%29A9FFA92F7EFF842F7EFFFF2F54A9FFFFA92F7EFFFFFF7E29A9FF7E29A9 +%FFFFFF7E2984FF5AA8FF5330535AFD06FF2F5AFD06FFA9542FFD05FF53A9 +%FF5A2F5A53FFFFFF5430A8FFFFA92F7EFD04FFA9545384295AFD08FF8407 +%7EFD06FF2F7E2F2F7EFFA9542FFFFFFF2F2FA9FF532F7EFFA82F53FFFF2F +%29FFFF2F2FFFFFFF7E2F53FFFFFF5A2F7EFF7E2F7EFFFFFF532FA8FF2FA9 +%FFA9292F53FD06FF5429A9FFFFFFA9A8FF2F53FD04FFAF5A84FFA8302954 +%FFFFFF5A29A9FFFF7E2F5AFD04FFA92F54FF5A077EFD07FF7E2F7EFD05FF +%535AFFA92954FFFF2F54FFFFFF542FFFFF7E2FA9FFA92F5AFFA92F54A9FF +%2F30A8FFFFA9297EFFFFFF7E29A9FFFF2F54A9FFA82F53FFFF5A84FFFF7E +%295AFD06FF7E3054FFFFFF53FFA9542FFD05FF2FA9FFFF7E3053FFFFFF5A +%2FA8FFFFA9077EFD04FFA9302FFFA93029A9FD06FFA8293053542FFF7E2F +%A8FFFF7E077EFF2F2FFFFFFF2F54A9FF532F7EFF842F2F542F547EFFA854 +%2FA9FFFF7E2F53FFFFFF592F7EFFFFA92F54535453FFFFFF53A8FFFFFF54 +%53FD07FF7E2F537E53A9FFFF2F2F2F542F7EFF547EFFFFFF2F5AFFFFFF5A +%29A9FFFFA82F295A5354A8FF2F2FA8FF7E2F2FFD08FFA9FFA8FFFFFFA9FD +%05FFA9FFA9FD05FFA9FFFFFFA9FFFFFFA9FFA8FD05FFA9FD05FFA8FD05FF +%A9FD05FFA8A9A9FD14FFA9A8FD05FFA9FFA8FFAFFFA9FD05FFAFFFFFFFAF +%FD05FFA9FFA9FFA8FFFFFFA9FFFFFFA9FDFCFFFDFCFFFDFCFFFDFCFFFDFC +%FFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFC +%FFFDFCFFFDFCFFFDFCFFFDCFFFA9FD04FFAFAFFFA9AFA9FFFFAFA8FD0BFF +%A9AFA8FFFFA9A9FFA8FD05FFA9FFFFFFA8FFA9FFA9FFFFA9FD0AFFA9FD04 +%FFA9A8FFFFFFA9FFFFFFA9FFFFFFA8FFFFFFA9FFA9AFA9FFFFFFA8FD09FF +%A8FFFFFFA8FD05FFA8FFA9FFA8A9FFFFA8FD07FF7E5AA8847E5A5AA87E53 +%5A847E53A9FF7E53FFFFA953A92FA97EA9537EA85A7EFF537E53A9537EA8 +%A8A8547EA92F7E7E7EA85A7E5AA85A7EA884A92FA9845AFFFFFF7E53A97E +%5A7EA859A984FD047E5A53A97E7E7E547E7E59FF537E53FF2F7E84A9FFFF +%537E7EA9537EA87E53A97E842FA87E5A7EA9537E53FD06FF7E547EFF2FFF +%7E7E5A845AA97E7EFFFF5A5AA9FFA87EA85A537EFF7E7EFF53A9FF7E7E5A +%A8A92F7EA8A95A7EFF7EA9A95A7E5AFF54845A5A5AFF7E5A7EAF5AFFFFFF +%547EA9FF545AFF7E5A7E7EA97EA9535AA8847EFF54FF7E847E7EFF5A7E7E +%537EA9FFA85AFFFFA95AA8FF7E5A5AA9FF5AFF7E5AFFA87E7E7EFD06FF7E +%2F5A7E54FF84537E2F54FF7E5AFF7E7E2F84FFA953A9847E29FF5A84A854 +%A8FF535A53FF7EA929A85A7E2FFF53A9A87E5A7EFF5A5AA87E2F7E7E5A5A +%7E5AFFFFFF5A7EFFFF7E2FFF59FD067E5A537E7E7EFF5AA8845A7E5AFF53 +%7E7E7E29FFFFA92FFFFFA92FA9FF7E7E2F7EFF2FFF5A7EFFA953547EFD06 +%FF7E84FD047E5AFF7EA97EA97E7E8484FFA85AFFA97E84A9FF5AFF7E7EFF +%5384A97E847E7EA9FF7E7EA8FF7EA87EA8A95AFF5A7E7EFF7EFF5A7E7EFF +%54A953A9FFFF7E7EA8A97EA95A7EA8A97EA97EA9547E84847EFF53FF847E +%AF7E7E7EA9A9FF7EA8FFFF7E5A84A97E7EA97EFF7EA9FF5AFFA95AA97E7E +%A85AFD09FFA8FFA8FD05FFA8FFA8A9A8FD05FFA9FFA8FFFFFFA8FFFFFFA8 +%FD0BFFA8FFFFFFA8FFFFFFA8FD0BFFA8FFFFFFA8FFA9FFFFFFA9FFA8FFFF +%FFA9FFA9FFA8FD05FFA9FFA8FFFFFFA8FD07FFA8FFFFA9A8FD05FFA9FFFF +%FFA8FFA8FFA9FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF +%FDFCFFFDFCFFFDFCFFFDD9FFA8FD17FFA8FD27FFA8FD18FFA87E7E847E84 +%7EA97E847E847EFD07FF545A7EFD05FF545A84FD07FF53545AFD05FF535A +%A8FD05FFA97E7EFD05FFA85A54FD0CFFA97E847E847E857EFFFFFF545A7E +%FFFFFFA8847E847E7EA8FF7E5A7EFF535AA9FD09FF7E7EA8FD07FF7E2F54 +%2F542F2F29542F542F5AFD06FFA954295AFD04FFA954077EFFFFFFAF7EA9 +%A854293084A97EFFFF2F077EFD05FFA9292F5AFD04FFA9292F7EFD0BFF7E +%2F2F542F2F072FA8FFA954295AFFFFFF7E072F2F542F7EFF7E0754A82F07 +%A8FD09FF2F075AFD0CFF5A2F54A8FD0BFF2F3054FD05FF2F307EFFFFFF7E +%302F542F302F542F307EFF2F2F7EFD05FFA954297EFD04FFA8302FA9FD10 +%FF7E302FA9FFFF2F305AFFFFFF7E2F2FFD05FF7E2F2FFF2F307EFD09FF2F +%3053FD0BFFA9292F297EFD0AFFA82F2954FD04FFA953077EFD04FF842F29 +%5AA87E29547EFFA854297EFD05FFA92F2F59FD04FFA92F2F537E7EFD09FF +%A8AFA8AFA85A292FA8FFA953295AFFFFFF7E292F597E7EA85A5A2954A854 +%29A8FD08FFA8302954FD0BFF53302F302FFD0AFF7E2F542FA9FD04FF2F30 +%7EFD04FF842F54FFFFFF5A2F7EFFFF2F307EFD05FFA8302F7EFD04FFA854 +%2F5A2F54A9FD08FF7E2F542F5A2F3053FFFFFF2F305AFFFFFF7E302F5A2F +%5A7E542F542FFF2F307EFD08FFA92F542FFD09FFA92F2F2F84532F2FA8FD +%07FFAFFD052FFD04FF53297EFD04FF532F53FFFFFF532F2FFFA954297EFD +%05FF7E292F2FFD04FFA92F2F7EFD0BFFA8A9A8A953302984FFFFFF53297E +%FFFFFF84292FA8FD04FF7E2954A85429A8FD08FF2F302F2F53FD06FF5A54 +%29545AFFFFFF7E5429545AA9FFFFFFA92F307EFF533053FFFFFF2F2F5AFD +%04FF7E2F54FFFFFF5A297EFFFF2F307EFD05FF2F302F307EFFFFFFA8542F +%A9FD0EFF7E30297EFD04FF2F3053FFFFFF7E302FA9FD04FF7E3053AF2F30 +%84FD07FF542F2F7E2F307EFD04FFA87E5AA8A8FD06FFA95A7EA8FFA85A07 +%537EFFFFFF5A2F297EA854297EFD04FFA854077EA87E072FA8FFA953077E +%FD04FF5A2F2F5A292FA8FFFFA9292F7EFD0CFFA8532F2F7EFD04FFA85429 +%5AFFFFFFA8072F29532F2F7E840754A82F29A8FD04FFA87E2F2F2FA8FF7E +%292F2FA8A8FD04FFAFFFA9FFA9FFA9FFA9FD05FFA8A9FD07FFA9A8FF5A30 +%7EFD05FFA97E2F542F5AA8FFFFFF2F307EFFFFFF7E302FAFFF7E295AA9FF +%A8542FA9FD0AFFA95A2F5A7EFD07FF2F305AFD04FFA97E847E857EFF7E30 +%2FFF2F307EFFFFFF7E542F5A7EFD05FF7E5A2F54A82F542F2F2F302F2F2F +%302F2F2F302FA9FD04FFA8FFA8A9A8FFA9FFA8A9A8FD08FF542954FD05FF +%530784FFFF2F2F53AFFFFFFF7E2F2F7EA9292F7EFD0BFFA8A9FD08FFA854 +%295AFD0CFF7EA8FFA87EAFFD04FFA8FD0AFFAFA8FFA9A8A9A8A9A85A2F54 +%84A9A8A9A8A9FD04FFA8302F542F302F542F302F5AA9FFFFFF84A87EA92F +%302FA984A87E5A2F2F7EFFFFA8A8FD07FF7EFFA8302FA9FD0EFF7E5A7EFD +%05FF54305AFD05FFA97E5A7E5A7E5AFD047EA9FD19FF532F2FFD0BFF7E84 +%7EA87E847EA8532F077EFFFFA854292F29542F2F292F2F535354297EFD0D +%FFA92F2F7EFD0EFF5A0754FD06FFA8FD07FF535A53542F5A5354292F29A9 +%FD18FF7E2F54FD14FF2F307EFD0FFF2F307EFD0DFFA8542FA9FD0EFF5A30 +%54FD16FFA92F307EFFFFFF7EA984A97EA984A97EA984A97EA984FD06FF53 +%2F2FFD14FF53297EFD0EFFA954297EFD0DFFA92F2F7EFD0EFF5A2954A8FD +%15FFA83029A8FFFF7E2F2F302F2F2F302F2F2F302F2F2F30FD06FF5A2954 +%FD14FF2F2F5AFD0FFF2F307EFD0DFFA8302FA9FD0EFF7E2F2954545A535A +%545A53A9FD0DFFA9293084FD18FF7E5453FD14FF7E2F7EFD0FFF7E2FA8FD +%0EFF535A84FD0FFF7E7E537E535A537E535A84FD0DFFA85A2FA9FD11FFFF +%%EndData + +endstream endobj 37 0 obj 13176 endobj 38 0 obj<>stream +HWko8 A@ l")bXN Ei;_^=,)n'w:)<>syyvzI5vwpv^w4LENyyݭ3~>M}<˞<VuG2/ճaGP-x&drpI~s\gt*fZ( zms7B:Nb^8)^a^}lov]ܮ,~^nk|L.yOwwo7h{x_ov׷a~-]>N!BPfa.f?"Or`'BYkR)1qtO?g٫wqte^HM7Yqv̵x^5kpX( 8nn ps,y͏ "M^6w۟aAQP[A  o!n;[nYZV&DiwLLՁKЗ2@ _R ~l7Wq{C%nzӮn݄Ѱ b}1 mq^wۏ?| >fۋ ̱}^_É7T0[i41W5msFQ|m^0 ?f)dn>/mlzyr6)/v˫2M.kG@r]`ӓ_OO~zRSb +'dI:I%DTuU:ԾvuYԺ.jUZyXW*OO*[JWE*Y*)ֱ1裋eD"!:T!|p 6CTA-|+};_z׾K/|] ;JgqN9TeU2>4.ѝKY2ֶ뭳%VYiM2L4xLi1F(#0Q']JGG*5T@ZHE]TE,B %a S(T! Q*ZU*r +>*Ҫ@)J\&YJF(FjYH%%G.E% 'Ja(RsЙ<-DZsõ?0){rvE5}aw9wLQ=١:d@_츽mv_X͎-=OD@4Dt!D B1=DQԒD4QDb0H#Z@2yDH4l$BR"h%bZ"%[d,A&n"('҉v"')((S ܺD4Ytd4a8eNO4q%O:H$4I4Mq"q*LiNӄTq=JQw*G'#LK9n#qlɧB5zfXll񁅙arfvfffzf԰"֩ə=8zaDWUd򁉑(X=R,6 xsuw0]єӂICGs>Pi \,.TN$22rZ6sEBhQ9ܟ渕̎Tw-V$$Y& V`j%&MpjS/z4(`⏉\v$L8vЫ~ŵXmj֡o Aouy>!8 i28)CI8r)H(O[!1vQ&"B!:4E8DO)OO1GF;@qhLgDVr%nZ|D 1!2bD!j4`_nTW I3jt(jф'gB ̈`-⎸$,8QUzQ]JG%NjTu)BjsAX|gG$Y((C[qme + (4i5R%$9h@:(9L +0RI%R #4IJn.mZhBiSҨUlQBWc{NoHʑM`d[hƑQlBj@2n~@f%Ft #؟.i9lsqǽsR&QY6Jh %P +!&iPPD 5PR%ge*h 8T i_wSħxOc! 8OQcyMڣ^Wnu{\ _죀in_c4j}d*cOo̽a-u_|8nLro[d7I˷I7Jͷʂoood-퉭fk/dЎ;wQqg-آVnPlz6um5w{zUnE l QE2D6*A^g I{IQa=`HL{>8 0 zU|5䓮StܴѲfAr?ԥ;'L,9RH!}!H"`[-ALaGUOQ-MG{0u`pM6G[+p4&SpPB#Eʉ>˜3`'?J}@Gqt-Kl&L'^ ͹,,pΒJNT1M)G59CSN,'33s|V"SHdEB>6'Rp$ݰK:|w;nxU2;ffIv.3̊*[gřcs0w23^>ϯ(qXEyX&VPe&_wOW-v?lŭi}cBvB&E/5k8X܁C7=gPJ`+dSi+?p7'ZYD5Y?_HQ:);[ٴ_^~ƉO[Z`NtX]ZJ]gϟ~|{~}9JWpc^]'~pSg:s뛠*&0{;z оcP +"T E(uPA7Pz3nh. 0h3K$T;Ue +2T|`krF*T4#K +‰vTtg6o Pq +*DQ,ڀ\[WT6Ьzfv́*(C:,(āJzPJi(O @G?=U Հ % :Ak&I$N4ς-0MJХmjЧ3u 0D+dkn5t܁=Jl֠p *wY_C,YQ@.$dCA>4dBNdG[XNѐ! L=Z; +ҥ aRf!i֣LIHjH$:Hc&)DB<DTCL-DyZ@v%WA5Ob˳Csw+6A'G ]vˮ:\E?(Kb紽E85ھ[qPْ3/x+REs+2eO^&P=ޓ~wOZ^=k){wݓ~wO*UC,n9,4orep_+VW`nuep_+VW߭[]׊/ʲ뚫%Gp\R\; ց_ ȱ [y+/ .`AE_+/Xsn_8D򍨷V\-\It w7a +u +/5qcb{Gx1{\sg8+>t,)pӘ +oVuQPS~:A7jFfXc6JowmJKJ[RJ)^Rwbׇ%IeRyy7%Fm-KlJs*.?r~|g?ǟ/>wK( +Ibsl/E:NxqH51*Q<3t8q`hMG +1NNǝ0z{|}A' + 2)-hA1EėL}DE6LqJ뀊BT\T\o*߹ZSzuﱌ#7a5.8K>V^ڰ;l#S@_ tv]/D@%S744B]ձr* +軆[mqW BA/@*R.UQ +P(ИYC @ Q: K;v@^4Jj:oPUb`,c vt^kvi ؀[@9mp%䡂Pa -xBIMʨdB!pXY#5 fzVIPT "G@^9&AƗKh3lf$Gw`,S~9A/vvs +T4l}hPBQ-`5jX_@pE..`رy ɩ#b}|/"gTg!z$ gtH7\QTʧ8ZQj9`QĢ9hA&qŒt%F!q(Fap HF (Udv𱃇:qYzc-J)T8dqxU<5}E2=4=H`9i%b +LH6 c &Np&CئA<=)Ӫ`ihyx[& 'Z2WLu8̆%eP{l`H!{_%tt-"Qjݑ qǢ͘2*cz xPz?xsہiU 9] xa`u cv|ڋW5J̢ Qpr,T 2I Hfl1^rtnm/Nэ8_n.i˭%>jat]>\JWmYZnv`zG?D屜"2c^be\swM% 2%Md\mF(zގ;Ϩj8:/cw~]_1!C]6hDZT#E=bT$BMBFV.P 19u$hB$$+Щ 2V~X  RtgPQE -nQ9ziM~&BO%*0%: eDXeQlrF4V܈6~]2>ձx{=`hG&&d:ꀡΧ#&db540o?>q7:u B Dd+=5o>(ya?HxB a 0JK F4 +I` و3 +xRpKa.ᴒ~a+l%e;1ܙ¡.nRJV ab #0sfZ +N`p [% hEr4D5ꑠ"5Jj#3ֈhP4)C + +z%-~%F,ʖpe^œ(BP`cAW@3%ک-ծ2!UrufiU} 2N݃>_%K ?wEȌBBM(jCR#b/'_v>M9=pf{|42q™e^V&9-:[d$垌߄G{ 5aGƑEH4AĂ~?>|\vyPuI"(RX8CRU(3h┟n=)vq= +lQ6g­ qzs5EŹjB(]\YA-X^^뗷?Kw?.O_^ ?OyJdvj*Qkª ErĨćr +&iv/p17^41121'0tFwK7y`\#X2 !=D|f@A0G^,?O^x\h7A,~R~>}%6)8+:ĤEhcMgыdy]zww6{׿>~y>t~ ~r5 +d4y' {u@DQkT+.$NbjdZjzqvd^p wldJx:Yެx 5ŷ,crm[&Kұfhmՙu U@hI^W +I jLn +B6sϝ{ܿb<3(jkm;~Hn\a{C}YH n~ɇ$be$8=V_wGNowt>u=O%$fRL}J)3eeVHs1mk؋3 :#NDLw߀;xgx&9q|ׄ#`Qw2u '&­P- 5C%\nl)Bg3߮Gls׼5?i6[a?w!ewEn#t?Is;pnDwg߼_~f7n-Mˢ^&,9I %RZehuUjPR adb #B 6 Tё8,#! " % & p0{Ġ6Yӡh4[ykF_3AS~ N.;̅c6#ew*x!AmJ֞lJ1)R(Q5V8.zD$RlOv(e\\`Kɶr\KP3*)\4{.EIۊ_%WJmbV; h =8o X_b*^V9* zV"!"e>sƪn%ۡXTq$W +W\5TUS?3\oڡ,[fY'@ l>'E5\[< ?'$L +݀c z2v +c?!e(9I" ITYcaQ [HSmg(r52hSRaњWBvUm5bU_Ng.aqTJMp}p]ŝaRn.޼wYHXFY0Ղ-C)neIgkğSęӈш<3h9ȋxHȊx3E9 f%"Dd41Xg`a\4Ӊ`LɁAQM壋MQE6+?bl0Ad@GX$ /``LDwY8픓vdP̀-hE( Xm$ټI@(#̉fAP )HUa @  CuxFa4nCi:$bƘ(_WBOH +,hXxFRtHV1Yp8- VlYhlUFrMpGa<+Gzz_kbti{6}`o[lJHn%{,D4+#J [OGWZy's)9-WS6,fSD8gG4솒pdL~]O gg#O[4lr/} lRF`^dp|X8doNݏm  n76 adw{l/hoEN;m*B*WY?PY0(T.l_d.4w!L*%)`g%`Ħ(1tZ,,Zko1c@~a0Ɯц`cl )ad`&<Áv.|2댬 t +a^֙Yfm [-? s"O%K֩LsSPhOL>>kz+;JێJ#G2D +%"mCYlᮏ-1SnKCv_/vJe8V'Yp$]oLJc&}sоu?W]_3b#MyP4` 28dTuqG^3zO8)Gƽ(b .,+cŔ30 %cˆ1T)RG <&%ǝq9PxOb[%r-Q.NxR7o?|ٲėgt9Żǻ??|Ę;0ņBCyPY;/{cs_lE#R!{ޒ+qMWF2K'oz;QrS5]KW}4k=d?||e{S %v5w=3̓lI߬ىTژ=+.HL56 ^Sa"䃟=VLvy: +~zV,vaDhrf;FzsJdtWiu#%,7]:J-0)wwsȒ\OW]0tGH9f;xн%j{B\~SrHI7'ixtٝ$|D1D^ aR2nn[27K"\ )t8,{B@X9cW:\/N׷:}vxAkzf xV˗:I+bMX 1C-\OʺhC1m.?n.bD#DtUK~њlhPǘoU٠r٠.TNh"WIڃki2IcV(+gIeiZ@j7n!ms,sNئ1M@X)LPJQ#Ƈ#=*!**V\ٚ HOE,K4ק8NF٢: 5.-PfO&c.r SƮLCo%qk䅉HS"ځ^UӘ +B!V҆҅iyaJ94 ́6 m'a_>stream +HW[~G0/)VRvDi;ї(O˵SyٺE9F>/_^tǑe֏LQx=S옅\`RZй 6gq`<륵ƦgFoiԼi-[zx+w첎}}Bɇa턓t3 +ELr9f1Wд{Ґ(xb_7{!BA! xԩaS +-[[fiܹݣ7Wx9.ƚ qV4Xj6 Kdm9js ]-U B@)mODNa2Vrl~~WQfU/ +fOQ,>'c*d]yiQ"T$|~RHrT%+B+x_ +8X*Myʄ]@HGQ0A(%* ̚Jh=9LfP$4eY2+*WAf9j'4]QYP +ŕ\L'c⏻& +>ĢZC1 +g w)OI^ ϘkQMl7ۭ ~&ɚή{KC`^W"P)Ū$R )ɔ DG3"@f 0S5U7ӹ +3uмik 3O"lu(\m1I8 ?]J059g I$G$Ӕ[L5 F=Gg]$C&Ty(HQF& .Ú D6Z\jZI-=BuGnWs,U0&4HaP_aP#Ij2!8lpx+S?"TD8d33SA ץq>5]@d麣fNF!$ +]@xXJ$8Th +z\P@-40)>+0%58? +rˠjWs(R_zsFK$d4 *4,t.;D\Ё@XǎkY[$nq#D̸JB`##K9'b `#V [k`g.@'LYKE6Ӝb"vEl ,\ĈIB +Ni}Z ˬ Iv Hww*68h$-&-!0C$hQu%E:{s[FR4}D+*KTa"gsOHӑG2 + tQlƭD7`ɁSoZyjkyLjEa#{&5)^fR,4sdԌ=MjϦ ũJF:>`V꺙4Y!)um}.zJHpă*qOVN|MuyDcW1J̚`cVF0k;“5D5dq ̂HB&`M)2ՙػ0PRrl 2ZEB XV[[%+I1 ie~L450..b' A^:os]]ߪu +2a_'+Ւ\$!{xF'_F*se$cyZ&drfMCe ypZxhT,J̰>[֭* A&K!]hIV Ձ`,&w7VR}1Y,@^ykC{c A,9hR&FϼBGy tm؍@dͯ?yo%8WR2VКda1XtgYwU͚+>cy0&B +p32dYŞ1f襁-'cP \wK2q Yi88/Ig=($SwbҴ|n{ㅹ8 '<96h>~œ\2F}b0댲xf\)nko=JP,)6q*ny,G4১Z4.0}{a5$Oj &{QװÐcߡhKǿbC,p ́ mDo]4D53>d"7 +aO U]V [AKcB 9dJ^{84H8ΫLYyĭ^K-"a" XW +4'DW%7i`,yn+ϧPa'%{&64fpL} ; \3E'.<tn4;y>gNs׆MK!Nuf#->j9w'zd{Z2B}_w`, $'2ad!S#:/:rMPlTi  <"vIs<-ugtk3ɶkݟڸ/OʨA3H\`\AF h|eJxsU*Poy4 +yAδ9膱%tDj6O >ų7D.f5eGJ޽d ?I)Is' +-lP+l {k`[DR/A F_ dV {h2,|n׏2zAn;rݾLs[*E|oh.wC;*oj!Qd+o(1\q +.|aozMa\L8Wǣ}NJBS9MlMfSk'0IEfdgi'({=Q%)4p3oPzí7ᦴNa|c?RW\<ΰ::8h'>x2FfP7cU:w)>h+6ۚMH̾LQum 8Z[7Ӑ&C۽ҹ^7Յo+h:`n6Im +2"..3jVlsX&sKGe#eRSk \1mY6Ui9ם]JnWH `k6gx7|e:iO|h{7&(µΥiu=? 6{qr1f:z=%j=I9z4wYo1h {hj'^B88Lpgx|\ڐKi8s{c~Ւ@J$zIwLAi fJ.|rgAz@6sӿ<"0. ab)g>AS/wW24o3)ELNm 36+sz[ +IIb;oLRP zeRoTf1?'t +*R97j\Bf\8gJb8hUly5SVӺ8'͍,?DU7{,k>p`i5 ]XS8[w9?lPѷVmsVz"c¡`+9A@q`KYlV\NCiYA7ۼ~Ţځ9jXSܩ=b)> + ׺^aI?9& Щ<#+P8[0*(Pb<:mJd^۔o/AQ -A2H qDp_APO nZCCI&|nsmVxh%=Vmĥڀ%PF`5\Ap)Ϡ1,;JZp~ geAu:+ M6mݴ[aamBRQfd_,8HvְS5d@H{=ɱae{U7/Q.ڦ(It*Z:2y478[ooĨW`l-`|c(2e#Fei^o@|̋F`i guGJ.VZԥ +u$wżgdh^-fxTO# fޟXWFaz;-}]!tq/_(=+_@NlCL T7(*'<~!ˢԒԷi i O3|j Qc[ T^]dhT 3`BxfewlsC>[x]Z֕:AlBcp +]sL֦5.ntQ%Ch!=*\̉$d<B@^#Iyntk/Irj~:,Ѳ[jX:!^xVu+q 7 zXaNspnA*HCi.IߎӸg<_ijc{,ho++ .7^(,pS̀u"}0' ;[(S3)õ~e{,X,LD&>9I2;tDg +(V|M&$=wk"}jmI$[,>?kJl+^N]ᔝx5otNi~Zw*V>XCh#"z+&pA*{b4b/AS[XȶcŁgGVœn- +(VXK۫KI- 5|Ε[8S1^p(yp&qB[ƌB^AHgU!VP!VN U?^&W`թ:i4b\=AlI)fSebl=|!DeLZWsTQd8gt>o|K +vRk p;g,6DYviCOaZ4 +W9oÎ >7t6Gi$]X ,p,EʪYaW>܉=am9hxy3V k%)5+`xvuY4Y_]\B-p`r↏u?b<̌[l9A0My^mV"z?{.n0E`72%۰'*5ɔD=aOJ*VF=Me [aJ5>S*S̶?5Z.#X5nVfb 3R%ўWgf0qsOvH +CH>zjJ츹unOgzuS3/=*n_2"f!ԛ7dFh"넖/1P4epnH Xg?~ǿ_~a_}o?WO?-ݟm_6\)ݦ^؈nT֑.'&I~Ǚ^m)ȮS؁0=edq8=I2f%df~ 6\ZɃFIɇ }0HTk\ew›?mr$.'v5]͟_ZO@ ;K/G6x >욎VqU/A:dX[X̭-@kYI,$gI#:;)zAwW_k8por\Y.5G[~sp͂Gq;OzT;kZ!(7X[4VCHzVŨ`CQ.+ˎ ~V`.mī,Wq.?8;oxӖi['[#+oFx&p`ƾ̤=xXwFk (Bw m_Ua~xڼy{ͺx]Ef>2][[*IO~qW*Li|m uN|vpvƠU|ڝksEqpiv{3~^8Zt=FkGD})?ƳƳQ~St"\4s⧣0!~ĪSUcUh)Ioxi&leq.-M0: + + +I$N's4nK }rxJOCY1B W,]И^ 3+NVIĝ~jw8k&A+JaH},O:0|+f7rnOUfj\0n%J#Cߦ9ȦYnҾjaKugն COz{sIA(4ITh!<4C1kpLf7$|ڀx,3DZЂ) lUA@7i(Af#;6DUՃJ.G B^f)t> 051~,j%G  RM&w<< +QhӦ,&AڋԖ뢚i[$XCS ~U{|wϿx_~~?~G~xů^7ݧW?=r7_k_OO9?o_<d<_X F7!oonEc,G? ? +#_Pjc􄋼v06]R_f ]xKDؑ ߠyFiHʙ +Q" ULjfMG!I ^&u-&J,( O.k7n9Q EY]Q# A uȖ\xLM9!zw1VTo' ũ삭2>wKNg>̈́;X "o(܌^,򒥿#YQT"M|S>o]FZȌ,CGFSP`-0wȋ96>j/H?$F +ȕ% .M'_<}4VXƍ&_r#m(OΝjY)h3`O-RL k~B^,%2+s!uGЃIW=q%jp(yavcAu{@))e[^ae_[?EJY"Ev_T-ֶ\̔9P8pB%3Y)XC^mvJs8E\F|i-s̎RS-pn-]=Z4[tryLM桙4aM=bX MlS\Ssel^YPڌIR;\s #rU[W=>S_Y^}ݏ?'>/{Ynڴ Jyw%-[lu-fޖ.-ݴzRlb+"_Ve@ +dQ3TpxVq8n&Pf+2`.+4Wo"uMǶwzDA\]Sn7}Ƣ[EKR ڹϑyAWGy<ԙLLƦ cFԽvìi.mrBDPS^ztQנ55Zzx)TüRϔ^%MD&$vqBmvˌBdWm}ܶ+ o%ipέE'# 0hX2py(++H9m;Xn1| ƹ[[IHڻDn y^w)m J1<4zdAizp.f 3 6P,:1v1#n9'b*҈)Em9qHpHQse`LЋR(l0WҔ^;:|&}> _Ĩ%Jif( '(r쭢H{LA4+rgf_40mZA>xXҤ, +b2)UJ f͡q>(5oG|PeR; ƀ1)KNkN`K/=zK ^^:?+7E>nWꇟ?ᓠ_}|:_7C +>}Oۇ_a迏?R>?ݾ}Q7QF;A" ?5?D9 +.xzR/!l- !ֲXߊƍ`i ]$_17Y #-5^s;mc`fI oGqb.+z*}nu=^U.8|{z՞(׺_~Bު=ǣx&?CB]X4QqtsƽY[pU^.>Wb&',1Vv7T4aqi8L,~ &i!6IHD:vq>R7Er9\=9E/u5}=a N/ "2\2y|OڑggZ;V1s?Z5PF[%Jp̯l8i^;-M|^ bEÚ`Ʌ!A֚W'tPNȞآß91ɢOm05JL%EW[6dWxpEa&M~hWl2=2U5.5~TqV:͉]TiK@֥ES܎<|4HmB+,]R  ¿rM_PU!ƫzQv>l=& S']DWA$iJSQ cO7;NQz=D=?b)ola]NAz0Ш`ay(ajU.hijKrm!WR\Kݗijͫkm4yk͙J,ϳZf}q]8 +֥x3iti8_eXBtY> +},>[r+p,9EHMݣK ])FJ'ǔ-Xngz2c1ne<8*BuhMVfll\?{4:g=s|koꖗ\Ҭ՟ɲ7ۛ_$8:΀C9O3]؊.W1c?]y>]TѾ+ֶ. xn|&͚(sa_7cօtWޞPܤIr[,0Ɯ+*XYNv»/j-a4/oy+Dx3k VxeԱ%yEU+`쥦{qh@샸SȥAA!" C-Db-jCVjOg9s]0FfgeS;[`w\64x/`|L0Fj5C"Xabn ?ܐf *=fU 9Maș.2swJuR] t]60tUHCrGypΚJG%*Z /)(ve3qi&oSv Ebƽ Yǚ+2ry΃cQ)jt844c_QiX{]fƥh+t*sWrپ]{= sNv׈OXu$iZ?v=Q%ëKL2^4txiEYq1"#L'->`^X#FV&Ge䨽rdn3_V9nirw(,?yERL*`l8jơuyfx&J&D>AsESLDFNКwN!\<Ido82d}J1HQrғEA*#yY?4ԌY4q&Z[de*v7(s3C7Cj N8 Iʩ˶9Us +7ry@7Z4uu [|Dŵ-1A#p &jլl؉Xd}zDϙs}tgD! eP$ 0s)~@pCcP +g r3Goہd E..Ģ@e{*Q<׎dA``veۑGzvtSvUQN%,CFcުӉd*j4mՖsS&]jk:b۷{8ut,M0g^e< '8-n.<5+h(Z19LܽnF\lEkS{;?:mď#Rw$s,^ڢߪDtN=60. n%:wjmKm#:j=XLю{-UArrqV;([fmx8M9ؙErBˌONd )d0EU9힂 9r:oA1F9G} ;v[jsN6u+_h %>Pf챨Pg̣_e~D8 @ zӽon*I9xFI݆eCݱަ(l;T\f|]>Up_S&jӼd7R_ܲ L9J0׃\#=I;BeQŮFֳ&ވI솝7>/DreرsmG.`^ݾ-,Mtk4\+Z u g_/~1|o~_~׿xkx]RO??4_Ŀ?/ o>ſN2IMc&9M/rW4xW.>Xt0LݔTK5Ěm*Χl͕'qGȓb}[{r9o?#CQ2]Ϟ}&z#f N7☣.W'َ(¡}lkzϲgʶ&y6 +#[0 p#bbƈjo%"@C'SqY-ouhϹqezYEr<ōu|Nol`[A|STœHmWq@>hxv4lf74^4qBU2`1θHIOMu<ɜ0O" Pz::,g", *)T/Q|fq6wu`x3فXC9~fh '6ckOX.MU l` ޣ\Xw&g/ TJWա*ͤ@p`SgPƑ@si+hzhR@"R-&!K@I7L}r L jj8'i3NI`t34G\B`#'q + |L5GL`et՝⑾LuuvA/N-0"i*RƖ˴-%[Kvns%C7ŚWLR +endstream endobj 41 0 obj 20532 endobj 42 0 obj<>stream +HtWˮ\ ?dMv[^@6$%6g8^ǟd 6_-5??{|=i )UiCf61O܍+obJx{e=* `SV[p|9$[_ed ocuhJ/ ~4<%afe l ) @': wE% 3m*V ?*JHZ:_ mO֌klON9Va 9_ѱc|/Z3}|oT$cxd[Zp1K| '#Ak٭QQ̷c~!xiV/y&Op3ZG&pL@:oakPG|)D!w$^ -Fjף\ٸ={aL#Ç5hrv-ϵk5\$a,+pj!$9kHQ^@ShR:yZԏٕYC/,C?'[@硏=!z\fL5a(3|8TFH,xiAXMD,:² z9a Mϵ0H'xCo7%XJWeeS?qSȞ zȚ&DP13zr58)J"]ӳWԭroDe"=bA6>b4[gY6or2`%8>>Y* Gu˪A{H˧4"j \=r'Ayݳ"A@H 1zfh `3{Km1HZ$1V;a'K. N22vL{su<_(%הfey4}:].@REtDra!wV~YqwmBZ-FYj2D,+Npd$Ki@H,EvPFd_.8^BgҬ479xN?fȒfZNFHr0cSI-z77G{(V26lÕJb/+"45sm1;V;Sn(CPj +%PQ6IX{aёB4=N/GrgjxJL\ ҬwPsm2-Đн ²ө<<)Z-ZG\,}gCUvwola5UZ`(߶C vw}%-ol \mђX{U nйxG[@Mc+bƢՒ^纱ش} +m +z{>9V[COyxRB|U?n*+h4*"6w#1 +73ψM+`~:e~XpMeu3Ԭָ:>{6 sV* G~=1ڇ߽$l{c;&-RԘks Nu;7G +z ;AY \3\P ٲ 8(s,4*:g*7(.m>ζ+pB2YoqQ.ҠJU& +QnPw BfC7]3(e/oYY*6`v}DzomGn 8>y5 %WroQND W@:  E Ѳ6SPeު+4+g Qz%JJj0G\% #z=ϮBؖU >x6F dMt]v;Af!']\3fԞ1~% Tn%hP!ܪzo%b7!J+7IAKL(:" BN& Rtj(1gXxiIrDS)aWN*LfXzΤw-:,咜hyZRJ")Wk8+T" <4Vީ.]r[a@ByVr.hqlj^L^/ 8׶>X3N5ɂ̾wkTESN5 l(! +Ԝ.K$ejI,aW lcYg۷ua~NVI">lT-F\u['l1c03lD-W@px#YR6?uCs4'Hý)\QH5ە)W~&諜n3kРl-} U:&``f[|5mB ~wԖ +r9PqbÈv`iducB}«4"Z ~Dvd6xo^ ;g_s6+%x 5!2ܠT% ݽJ;V6QZ~Qb.8uYkKbnwl9T2J EE08ʓnM'GRP19|ۗ"|X+Lw `A}/ʋtby7XL5n09\?5mmlճ8{+q> ^c96n8)sJR:"a$(6)(|39 ׮CE8UݷB[|eۓMKh1;f~z| 3ݏOmP=ț/q'SF 2{FG)DۦlCc&B)!1{bInMG|JgÕǘ05Rف-@[ycH6|`b+@Xyu#, - +4v}:*T?`?+p҆kw kMIGQF3U-y>Rkt'@<F+pa,MY#j V@3݊X"5kG͎1[s5 +n8yhEv%ג$.;@~!wج%7j \k,_ο$[8 UIAJbr%&b9 BUpHQ>{xpd(9]EN; Es +zvU, k5UYu +5|[ٴn?,cu$i]ׁ1u6=έ/ >k4;j,8"f <42 +||v_6b졁:-yQ08;YlC1M`{ &GT6ۊZ#zX|p?6aޯ'5v8X!ŝLgD %[A${1F#|GLLíҰzBdy65C`M-oǣ3B;cܱ"w`a.i^W^:mJz~Q]8ÝOq +_a,yR& p!I~NOwrT,!A,D_3YC :ؼI5[2ea^V?4eX&K_Fr׾Ⱘj' C5y˄Y;`T+گ1 W/q^% _ݤP`}$PzJХgD+Avkg9l +n©PM3uGطv3E!ZN'`r\}5'O[$_^sϒ#5?<ɮhr ΐW<&-qg`D0 +m~̹BȝWp(Ȩ:R_ +%8 4pST`Dְo16:jh]b.ЯbNALˤ3v,EK8C4X/ G +\.5]^ 'ƃ,>e#8QСv3yq1NJ<ޝb~ +6ϢZ-VPu⣉+V'=_#*K,zT NN..;b7ֶOIm/8ݢl)OF +n^7Éʖ8x<(mt1D'܉=E=:, + m|YVcaZ3<୒IMO[dR'\Mp_lq==F +cFjoROF-{g' +\UY21LQ!L@!Cиk +{+0 `;U HO=Au6x YAt#YAs4}!b.#Sy/̍T0)x$GrYnU=wk!U}Jð# 8m^y{=_Sȝ,gyr׫*eUlk)<4^+kY!PTuW3GO{x6!i츦xXnl6[ ɵ .̇>v\Jg;ےpyezt,[v:;2:6MaU8Ԙ8:[vh;>cŕų/sHͪZ1?PYm'$pn#>O?rJپ*K>zrIzetX,ؼ$fOD!s=}xG٩ZSVh kXJFihS:ifd0;BťK7J "J=.5fUĖݾișUע;w#t zK/AM([{BrܻwU9.7 wUH?XK&7Y~5׿^W.նz6&mb9:xCm%SRX0G@gi>P{eqC ̭a0tbÈAˡ^)Hn}/]Kj<t~zi9=d{HPsmnS'f{Vm,l<COnoʵk]A|nṗvv+!r=9N^Yz? l Ǩ)7 \Lß-ĨeF:1HL@ψxҷQQ_gZooQb~_ך{?_~/~?=_UlK/hWΣ+BVy }Enu 9M]]'3t_?| + d@B +:  +h%zW8J?~@'" ]# +0J +Ntiɚ~{ܮMb,/[ VmM>' +`<. 1%SVث* =}{\Y{HwR/E%|-mkkTmZ /٩[ǧ +fE.BRjbKGQ'$׺Uf,T]IWp;0rm?R)H/?bb.^;uk$OUvX5c#W]&p35#cCV*W҇uA3 BpN(e$Ŀ}]ڂa1+ PpR0A/p}+Mi< kDy#S,Hh :7[ۄYhB-Ҍ/$\Bd>OT-DZPںZ:\X*ɕ+PO\.̝+;->l, Iu"`U1b30 2!kn'r>Tj9-HD ci=Vە+"Oq(^'e̝oX"˟iob \pB(=]o}ث[8ʿ>@ȔtX7x.0YoZU<48C[?]}{.ط<_!g4{m{]H#@{׹K,놁gF! S1?&YQҩ7\% s]\ r b _'#^䙍ik a5p1tY8Gݲxt}2۱& q 4Ey9 =#) lv,*Xi XE$\"҄aazxTxBvvaྡY }ܼ253Ew|)}+[ VhcF]f4Y5d:$əg^HsbVMçM['~ɚC )qIs5yX}ބDY4L+6Dvba{cq;o\^",fN.%  z}&n+XTRRv | d%L c`/wd.7P*ZIX(+J4-f9bfEۋpGv\MpOfvg +vBHXs(cX7,*WqqX~qDAl3Xq0V- +u8(5ˊ61T1AGV @[tZ ŰqjtWiv\Zj@'7K[0LU= +{;TMr-F>wQ]*X*Q@Q+#d0Lb*Y8j. 1)C}ЁWZ{O}qOu6ʽu +Xɸ^Rʑzs_#LaQ42 |Eq#T$TWVMѦS.ֵn]i"w{oɡgԧ!g M7ݺ !I⩁Ne-e m-F o-rh<heDhZuŶJYD%^8& A/7/ڢ-3tHi!+`&1Dyt30kIh+H@uAglﯿ wCupz V Q_c +!`UwJD><߽܃KQӲpi/E_c.&5C-1gsu౬ f>+`Idіij258#lHslb6v^ +h uPi$x#ym./\ůjVeY$"]&M,gh=}*&p~1{\zE +Iz7?wӽ0Ө gE w )'|_#05Pge@LVVh7ɣ#`h,ذhىb 0CD W+B]1lr8۵̓6 '['rހ~,`f#`!7I_tNQ2.mt%ԼkS٠X"ŬEۨs +-r¿? + lkmGҴ2hKD)+/ тObwC36 +w\Zj@H +F$;G!ms7r/ղbq$/ze=R 66c1bfA:<-wfЊ9UM2iJҷ2roHêc)H]:04]u?-.-%DiOI>;2pwB4?T gR[Ekg͔819Mt9j-o%,_X?CMͦPK>|t< 9 lt{Xn<7&+اNPޢTA;E6̛p"  +Ed) bזtP c<|2Is%61PġY]:Ab:XӖG{ZϿ/5˗_}ݷC?. V׻>'/]%ɟw5~'.˟.>ÿ`9 O |r`zTi+9=ry+^{Uw``e\xrl/E `.K +fOYM;`oԿF=i8BY4T-{SW-k)bf:(M^}5ʟey6~Zy1CrVVZ-t&+tx +zq ĸVbtKG +i$u`^+0~5XPb`W]6,0lkzh)eG%S89T F*v0Yp A:`d I̝ # Uqhccor^=̧ti->ϦI#TLȌf9A._8##=IlZٖM'g^Q Cץb!+dYA0SI<2q&x`wEѦxx+^"m:jGB@L}wpBCԆB$GȞIgg@%5{2 Rƒm5ִD[$y)4ؚLU*2˧kˤl\/DRNԶlk}( SsY)dL{ӛKHI>̈0989 )7P,BCʤRutޚ&x~x08;ݖnl/{o{].Q!zlQF6*slK!0PZ0U\(Bs5ۚW/[NY}Qo";I1|pUpNw}V}>gQX,mq/Uۺ%MZû7{݌?ˎp/ir^O*ˊk & NU+v0Nj(q$mnI>x!uJ)p#}dz;RUlӲ,\RF8gqOϹ!8ljԺNpyw~@+(T`[q,iGU5)ZgvYh,Y/\r&`n"IZx@vU E.u,rڍrFG,JI-!_,RkU@XqdjBS- +\}2>6ִöؘJ47.uTEjۊP^^YЖXQne/S<^Dԝat!b~Q"i9Tz$]>a6&j Y sxeUc\M9JSc>9Ŷ`-tKxd3%u?o@X4!%aq0a2Eyrv(FfʀC{c+Bpl%ŅA/<iMq&XǙ;rĵ%wn+}˔&"@+48˭}7ܮ|\O^eɒKاI7>-ӗM|ء|t\DMrhX&HN=6EG~_{jFhsR= CPO5\ڏte7HZiõ52Ul +[< ec#k4%Sy>U[mMCv.$>ٴZa[@qA:5M2{)j΢I,]Ri猓#Harݳ pw[܆LcQ2.Varp1U%}^:\q[Fs4<#D8|M]NW(ļEpxO yG0mwa{谭z)_ 0jRD^uβ p]bYu6mS*MCQ5b5 l'[@{'=֌OYMMMP4$FSeﯟ|/O]^~NW?_^yxpϟq}7/߾?ݷo.C?o~|+]_~7/?.oB1bY2:Dq^L|_<14 % 1I;s9hlp2\ lp(py|HR>.𙊮7WS_^7/U~;\7q̰k\ _Hˀpiuw$'~WkŪ_F~`9ňOݗ?e|;Xd_b:evS?|( Ŀ VZB^=@L\?ܫ"Y%Ž8 Zc}.I ֡[  )1!c˱#Ǘ*ɽq76gc78*5= +%-38X82BVC;Q˾<A@{I+! 2\'ڱmV\#zn@8?I^/"û N{o;O:̳2m!s`eqQap,ŏ/ KX^]g(\ZS}\5pssYใ + +PWe/[ o+q?g0=[g +ḉV(>7[0vС>;[$8l8 S`/|"Yx-K<z Yyvc=xvƂ2D<5>x ruMB.@1|j)>f.8Mp/]' +)*i<0-=}gG@'ͨMwZ͎E~YWvAK KW:8ZJӈ)y`Lo N7^kEg]eKm[BZ^6]ȥP{dRѽ}gғһu +Qj#zAК{'] nV?i|>Rg1; +Yc1=S&3?kQvЮ3bOVIxT=}UX#KǬI䏫q4j9mytYp-"X$fkϡ+W:Ƚp7tЙxTd35Ebmkb%' s'Ba}Z/u y q8fW竴iqF nvBiؒk2KۡX,ZZo4ѵ3]7Ɠ= ٪%Srwצy:ϊJM-Ol妇촪_Cn&*ѿR3y\[WǍy6S0GFp׸xʅgt_OA*٧Ym"BZy4N&v˫M-|w;ᦺyhxزjH ++*9(˂v|(ԕEU5ÆtKN~* +???M RY䷆Hap™v\͙r`5ҜLpHw]j.7!l.嬓Ɣ#YWSP?nx:)^%QY:x+O21|zɡ6rcdC +}sLJ +C(2A'YNh|*VS^`p ܖX\f#؂FV(Ӎ^E}j>BNUXծp<7(1E;DSkUW^ANbEZ΋DNF_[FЪ[9ߒ}DpH"1E)iO@#G#[05@y&H]y98H>X u+Dy]? jpͳs_E\K+`k*]Kj<Ձ_g\]. +b;y9 L]ɯ-w1oXH1?%C0v-!}/&L˚bc1Zg*DJ Y੭k#'w+8&$阺V|+r Yɯ^&Y+֟"6uFװ=P|{ >?N^dW˱1k`s"aIVk`N4TF:3`j71omرMb8n}kE\=*xߗ Zz]xZQyzQ2G +WmyJQ9ێ''kuS^@cAj\- +jm~FOI UHh 9pY(3,Wx11f$$]k3# |694$kVv]q,fn0jf?r +7t W-~rʶSX\ˠWԒQ>/'q4-prRn/3U e$dIhOb%9]t~m'@xƹh= + VyHSQ+3Kâxz<=vMu24٬ MN 2%n]9uؗ6{Ip;bK817MAd(+,Db}S'wLa0ugW3.Dj-Ʋ /}'~-wgM^/&!N0Sy~@O|Wk~[nkY' p !iQ{HN A0A~;dr\"(F+Wbb%ExyA*nNByMLHB=k*v; ,@'FGMkI;:fIǢmWZ^MwdT1LҾf%'Y n%-9gT2,uH\LO 6e:a;mG64(gR]\<]N,iMn^:HuyFU;1ogc`찲1n2a~^xl܅*(l{osp_opO$KC2'\D %,CE4wBպ0eplq"%<ˡlO>stream +HW;7b0 +Cg;ŋ7w_X5jieP; '1>욺_6s]2H0KiiӌAHM隼[9o Ջ{C(d90 [\ f|-ap1j߇ó+иՌ_sNJ \#0&iP@14o>VЛ-qxΒ<,C +G)TG}iV壵" +֪byk]G{"+/>t;( eA6%HGhIkVpRZT*i7೷$؅z>hZ|iS#d4ക:I/lgb@V04uL>) L:Z/DwΣ ǀ<@/ jx=J XI |dES*tz^%ݗE- +m!R%VAG>Yn״zo]GrLmpC#-e0e2̃u^/;ܳ@́Y4Jd٬?up: 牛qo!T~Yσ\ZGR.iRl-eFr'|#?~68HdCw@1ɭ`ȕ a>ru}=OM9Oa;+!TbJprp5Q lblC;?2z8I4.oHfTlZY?Lxc૦YT +~ќQwO.M +qWG,t<_;zPQGxnΗ Y DeQ|ɰL}eYa~y>_QEh_)2uj[6 ^CFȠcʞ_1_iB2{͏ +Ώ$oerw g[j˟ V3atlU(&IW<ݥ/)PfH.`V &})=w#ֳm&7n{ {iu#b$ ~tq薯M5MCfި1tpt>y WHjLC\rIWfvf!k]S5SL矘K4* <mZ`ʴ?pK=OsSRK*ckމ?@&U$kDc;2ceQ)=u}xǔabr`?819$˝@\fx;Vk,ki!=!|&xWL5Wp\}{$i#wB\}n#"xOkH{nؾKq(dbL(šࠍ"鍊Aν>gKR +xTԣH-om|(?ʩ'0ID kRx$HJrP2 Uks4;YC;Q;/i&AȉQOp.U$>H5˂e +?x~*v8w3>+ib̆cA׻Tp.GLpd;Uɽ)S~>eZ1z& mym]Rwx gt+m=Pu+a8-8ҫH>VQt^+]{ tqXg+{%OxEz?ȁΜs|R;bP9Cŷ)@et^򃑈98ų uG= Y9܌_g_1έ}wj͗98x #XȻg0k۳ܕpSOmx26_hmF+@*A;\3mr꠹%u&Upܵk:xR)[WjCd^"a>""9&>"LeWPF\vA|K,Zk2d*:Tۙ|˒Aq똛Eϖio[ɲl7&F9ݮVMfW$s-{{+"a5wi@/Osۑ) ,rkӹ GC[E;B4[0| ~}<-̑K>.]DV}CNDPY)Y-JN1 4h7Hʙwf!09Adl5^[K5h;BIsl}3$9}8K{zF0yѩ!fݞ8% =nC{bs[hwO'L38|:h^!pBx\5wgm[0-}l~O%V ]mELpk!@4GqA6hl":0$1M{c3({}÷ @/a(|b/<zo|cr!u+ڬg쭎8<-,c S +djt@E+(@LvZE̱՝{ R>rU}sZZ8hnit56YBݖ@{$p/Y>V :Zmkߢ%)̡k2C45rY S22##tىrX._8#PށTqPXm˾&EEt2ڹn'\{ PanȴѾ\nG"0.uW}0Z?XeS1_AaPGA-)*gJedRzn(œ|NVceWݐ]-"hځ}fC8A> M9tJVj98\p2>Hazpi`xw@x\، T +dFfq$)dL7't5sa.ξUCwV寉 V'L[ERR$=ٟ`EHPI~썱Y%~`$xya3Oaǰ%v`kIm]}޻Sra>B>xЍWz/oçvwO/+_?B~o—]r폸65 ح- (*&y$~ +v{~~E,EgW-ANd6 T{u۶^]4^@Nc)]F -.e30Y DT+6!#@nʅ~njV+?KVǩ$ݒ*_'{$pYoju/Ww%W㹶ņtڃҬ@V'L6WF[gK:Y3`ޡK|q4G  'U9wH/.w +F9x1n ZϰL K'0r0faH9v{ݭ wŜN{`@}chuT'H{Myh +)e@e} i&@rA{D}:ͻQR +;d9(*-N*g tаrX"@\Po4ʎкjfK8?ޫ`ǒ\@0II=9)Cbsߧ(Rzfns)T,-푡A1/>.ipg8fU]֚`LvC"si Z0< \(u)fIg PJ`aM>B|y2 )FjPIgg@2ZVWTfO<QE\_"B| ;krrk,qnΎe8wVax&+L%d"5TsjW, dH۲`My~,U8Eb4T|q8愹Uk|ngd@L6d *V0OGF9l8t%[%tZ gX8[ qs4L|>_S>1q` +^Y!iZn2'fƄl B˷F^ E,1oFbiJ%n5l 4D8Us CBiy~}9S JO/Wwc.=oo!zuFRu9/m%Aq=BZ-p.2QzxRv ŵ:}%1/8' ps9<9eK0j|__ɍ7G[WG +cY=و2ehÿz7nuõۆ&AQ> ڰgHIae2b7c1/jBꌃtY%ch:wJ7Aa#7N^Om|IMM}jzL{AAYR 䔧p}*JQC!ndH6A]8@~ zXku4,γeδB]R&|H[i] +N?rkqTZޅ @T[s!=Ӈtz:S蓁ƈ:F"kbd݁L/deCAy3;pCᏧ`w`P>t`C *k 샞> >dK /콼x>MHrвoH+ng/ َsmz$3M/2.\f7AN=dXhR7Zq nu6 CY]s Z]a)/;#Nl^M,U4І0aJui68~N0j%'iK=jf-x4o(xxpԘ٩?{7_޸U?HQ뙄Od~x7Ƌ_{ѵvVQN&p*-&S pהH/+_NWۣO_aR(RN{p&?FK7MogX\_Vf>54=x>* []©n S-1H#@z2 0r^qr`y求 ~`͵3C-[~Ne* ؊ ,;[,a*" n lij,H۰qɖq/))1orFȈmO\|,yz|^R'%}zLpd(4M'% >" +Y$"ږ!RKcG/jmt:yXY,pY4d5oA6]Ϗ / q Dy:.yxM#~}{8m}`nxѷ|BNl =MF`D-AqFޏd +pep<1VZ V.#NGml5h(EQXR,OQ,L7,̀l9A@W^˨_<ּLLlXnk7W)u@,Y=°վcmIE-;lm<6ǝQjMgj(pL20)֕#k05)CXXWtmeаkB.j#z-}RZyqtc96p| j1l[ր2~@PL+ՓX8pI|Z Ҷ#;XWa{p<NFh9_`}7)΂;kbon-Ard5,q+:9 ep#AB4JYn7{HvCmҦȌ|DRj)cca3z!KOfFV^nl3Yq菪,@x4xD ضƥӗ͇F8cH24l"Ft%O S[!Ͼ Bqm7lkǖYZ{|gGFSF :J\pP0ZWQ6Mt /Df(Q^tUN@ѹ &-D[(úG|cQ̀ MqPpBs# Dau5D JUiyj̥_W'kSxZiCp4>I(u޷nEK1v1^=isn8I|}&@%+ܶ58:6l ߬\.r* +XKrѐk Mx9(߉8DVs=B`oxLQ,6_>Ш$x!B + YA#?HSyL>M[Fy!dPEcYz+9)L +(1!P#gZBXBoeQ:߶5yemәcռׯ>5ubaifעH5LQ.TUv)v^N&~'_])-gJQ>vLAN)K8%hQb\)Sf+\E$o-7f15[_ +dg +y{٤(&+3fc"gL2猟J+h] E"DTypnkέIӚ$֦MH".h/I-a>fF2bE+F 'Wڋ5PxML WGlK 4 +<.ٵ5rU4z܈$E5 CBzrvEV3FK%M/Gg$Ia}pɧu" +l,xkHI,K]:Fclp(ŞVZ v?} 4گp<2o/C{kjuV5$BV!ddێ^Fה>ݬ݂k)R=Fx>mcp& ön|~Sb2[ܺR-͑n@+֢_簌N?3 u<_Vy{8og DCv9wŭotxR7On Oh8کn]@E;i{Ձ}M\#85tvɒuƔ> gF7m#L'80ϯ Aha6v/mV{`I7qu,;5">&q'0<Ir>7{o+!1.KF?1f>9(ܩ]H,&kiRB^a8f7CW%yFFʡh);ltI}vRī#=!ݏu;y:yϓ+'⪉ΕH?~2}y*J"7lԣr6whu^GZ%|뮸f C|JӖ +nnoĚ#p♼m @&/]wj훜"LH˜5MA"V?{OY>gV>Q|0ApUcMXIY,<@w9!]ZCd%BcP"x4lxr"kwkYwAzK{m=HJMbB[: +K@k@<8C0NQKϱQS>@gI #QdR*\9.@&%T!3yj}._ c1]?ߦ7?~㳠|+?䯊|ד`.ß 엋򗿚˧?!ex/ɧȹWۆڂOv?, ֓J#k⩬Պ 6W@7Ni (I_m|-ҬS9;1I`9G!yi2akrZ@iٻcQ#MԂ/,Kx +&䱁dsyx$5|yy61Xmnwy~ Pmd~k!'k\w[`̛` uu,#MfZ[n@A3{SSy]bul,|l}Xf|{Ӭ9rV?4оI  9l.gk)C`Pf (͇ JhM!ƃ^FXf5@3mt݊p. .GM!dYτE}e)Rŏl.J$:df٣:^4R0یP%X?61- |ӋWiA Ep+sHs1}H$o9:"7tT-,n-,RՇGW[1WIwMpʆ[-W?Xw`k T:TS|;8sV w1'hQ"qiɳ(Ws߽ n:cnvak = nmcx2X aĻx}ŰA&ͦ[\aS |PߤlXrh ͚ .byoS㴹űoB^}<xNZ;%R$wN F.K[˝i`E1J艩iZJJp.mAq I(@U+)tzJ_ȠNqU.)@Fa,W{=Sd0[w>;N[RIEYLt~ Z JRw࡞zN$5^J٪%[c5"\3=Q{l'S+usn]!.٪=í%}QnrL:Vg. ,ÇAdžO kus0ZJM<=[qX`vpheo/xaNa~|7^9=zՇw_}>>N~%(CO>"'mmŸS-Xcodkw[5aȏ1P/9*m8(>e~@Oߟ=/ׁͫ>{OG___xi?|PNO>`Щ?ڧO=_!! SMK4/nLK|qX}z<PwPR:83hLaޱ~~x}O^~y݉>|[x}&٥N[5 4=J`#A &z}\'mPpd04, k ߰I@Wi 6_7wmY`5]<Mb6òvM]>WFjmۛj[M n7SN[NVNJ*,L_N: &UL^:\J͟'#ņLC0}a:\b/;U25 4ѻfcWDlWI$`*V]]oZBˮW0m=lak +b2si]ˎ"]+k>j[v<[`(-'":u]i❛UCDEOuuZlWG$]fv[\{xk(ŚxkR!Z\mi$p6's'񔫊z"t2⥐U|p4s7THj%&h4K#l^¼õ9^ޣc'[-UOZ}AEj Y +E.f +j-EӺKs0d0%YP&8IDD^:MƝsmjTh)Ǽw 4^3p+PtEѫvALej瞣lY,*XCP8%078%QcA"Jm@ddݢڣ]Nqq[#]ye:d^KYrmvҊiΨ]M9G:ͮƥ8ru +s &%Ƅ{mkL[Oo ǭX\PAJ(C wb0gjC |΋uZ< LPo U^e48̏sVi$qs"LG8zFNYŒ1)nOH??~?||.OO?_o/g?#Idw1x(ݩ, +TUe.yD7ըtCS #:,Sa}N3v,9;@f@_uBͼQC6dckrP죦 ׂ-gf SWLy$LtjY P6qQ;@>`0./KG+jdKbAɎ<ɩ. ta|^Pla0$t/KSӯr-k5|B K&}dF-yCBz+++QO~ J6W޻y4Q-gxA4L7O#\DٽӠAy%D::]5HmApHa,H= +0,ox4(V\zxWHWB uZsb#`p6|\j=]kT~blzP$mm}ů_D ׮{.6Faȑ0h-t󒴠TK1Wi|_8&]9a>d7u[:Yqaf8Gk1gasFkJ aix^J0юacz Gxيb8Y+lqt ԚGߟ`q^ (jl=9w]qR`;PYUpX \5թo_#0m%x;WfUεY{.>9.|{tC{?oìciY4JQz~4)vRH;k?ܣ"Ŧ8<ۡ 8,ge3OXfqO܎~Kf=ɫ6FWz Yt]$rMl p8Se"㉣:hLsЂn#K\{<ֲ '/Es1Eo+jB}c+ID?Y¬fn0&s Tۈmt`W,?alyiɀxFp\o'#;YsWܑ!>]9]ypvr'cW#=4-L0%KP[n<.~W8g]Ixpi摮w8QhǛxs޲n^W(lէq;cnN|튺. ]v[wo7YݽaWݽ[wo޺׹>>= ;sW}lH}hu';|Dj'i (R^WhJ A wJBJ񶽖Q/OֺlẤSzIwm/_|yFזw.tF|,B*y ]#VP+VPwX3jۥfg?,kH(__ym~^-k#VR:K-8XaT*6%7ZnOc3xU?|kGm`.fw"5*~3B\M#! 3"\9g5hEDyܮZFFK)᎒"Yx "+;1CcmՆ5MW3ҺaSb6\(7`,KƖ^uCa.*}:xmdHF3x `Nt&Xك6,YaMp?o'm{̱we{*;l#ov,6}w04M;d_mnI eM Qƒ}Vv6]ג*<*6e5bܶ=6 +|t >PpwsZ 2R_&^ˮ>^SΚٕˋ^}՛C }zէ&bur)C,I Cr>@#{BGHm4mmĆV LY;}7ھIMU- %4cL#1ϜĹ&QK6I/>oWN@7cq@̧!8Pfœs#p;7mI%iEs4a gFN$0؊h`eI{=0亼GQgYF,X:w7c7ѫKf4.CӍڡ)Sc9MWJŏiZHF)kz)ɘgz3w4]'Q_"I_4I{f1d,%N qg|r24@2.o鸰k#ہ6 + zL3(5`4vj)lSV!S)TaED*!.b`@TٮNyv (e:ƞWP+GM]4rXii󘑡@F|D6#n3]9AAa{me޹QR"9 u>l# eRWB5rdc;-$Wl3 +Pb;a%^w%;fH*Џ!rz)OF\ H*G A;+kNii`gέ{8zpvbN"E8]u@zhg3.g`i-7pbo-m;41*%Fxǝ ` v.n2v;7(^2RW/c963䷏kJc ҕ,@;Or(vh0: +{]~Ɖ`qk$-; EK9P8ApyH7\׋s? 9R읩1^863c7{vNVMK+^ükij,3']>[ `^U"v_޴*ZC>k71y>pQ e0C[c(" CrNb +wI+ )Xwġ9&r\НRjH~Ʃ&R M +a&RP 4KlK|52c0֠E L/;OZu!>OgjhԐFrb551wQ==~kxrE zKE[W>stream +HWmk^._64ݝ}i?J mUZlB cK)\33幏";uCL˙3OO>-%4Ǿթ\(%NG>%0 ]> 20ybJӹZ 0#\+] L@pcw 8qr_l"W(U[vZq1d9k#F !Id%8) !;ׂp>,>L,lfG(|sgUr> x,a!$SV,NO,RrLph1a'~s%\O\x4Y~ P5ޞ~$= Óӓ/NO>_=yճ +Sbp=77rw@eыӓ<=x8=_߼4Nw-#r^;Mϻ Խϰ%~[뗿zw۳W}WW[WW._:>R3?No_{;/?cXKKy0Fuӏ-_uA3oE 5H:H/;*<̮mMj1B~,E๑8P_!+O9c"ޖn8ok6I1Y'a8bADaNxhu\.C/]2,c\Gףmm*U5E,񽝽w%WoUD +mf zLvfܒܻxێCNdBH;aՉn7lvW%3툘©hgbn ۬:SP1yX;/n4eWnY7R z+;ch2x{air3WUwr7冣v~b-%}}9zc]#al!F+R=X8*P2E^ ӱ6XwbMNBcm26-y+ cTCuAؗ:p .Gak|cg0N1.-mlqheʤ m8(NzoIh2ΟwP3n.q)_xƗxaFD6ӲJn{/uu{uBṾ\vא}x,Շ=74}-o;}#@Y1˯ xT )s>‹Nhfvq^75lc]ϣ>6m/QkQi 2xn{[ڿnۋ8BUҐH4b +צkȟq?x؀SxMan^Ҫ\W( ESp8SYU6/V-;Hm ̓rfQ=O +]L-+p TWqj+`8~eVxh.8 `VCk}i-Ʉn)< +^mءV>j 2UG>@1=|p8q%Ll{?Pk>#RYXNCF%=#=7kXXyɁߴDC.FzZ~6 a!W@uC8U-(y|Kw)Y痝hnBhʳ1]ֺzrj +1Iw<T$e ur`6[@}eZ9J8@8rM7 nR/&iUWik:=c0FB Y}<0B5Z,OVW. 'c1&VW!p M9P{b:Zu<%qNlsGdHYx+K:+,fB̉Kø1q!%:ѡ y…qz%Q*2!5!fhwGB#N3[ Zfs0Bі\-|¹A=\,[u1-0PfP-4bj-DI}y2ƴ$!jUh`gw]; `U:X}&6++oh$iXMdi?_eQ$IݒC]yV%9v4] V Y60/҆ah0,4@d$sMpAMaE9Dʮ&"kHE1`[)):={<"j=e8cIkH,V\ Q&/͑ *}BKP36cyK(zNcNuiL᮫qvS5hdjL2UMj@[TZ8U*D*Ndz:eQn]|e& GX~5NC>h??s|"T>8 ƍRZQNbyt<_jc D1c 8P:,M㋒h*M@$h[\M6ЭtXq4aP]qx!Ɖ{PRnię+Kvegvg# %>i0;Y]]~xٮj I~>^Cf"х?wq7h_Tb^ż҉$Jr +9EgϦR4=rhW{  ,+(J\jW|Y{PpCrtkEp*x"S+CF5;f$iӞ0Ѫu^2$)jXnY1UkX tllgnI*JLiP0|&IMMtUaO%d2 UWf*2"{W!Ԅ>Ϫn**.8/H:Y e uVSϹvQMuI+ۂbO2i +0 }gY%,nsJjlrB $xYYʶ/{-= ;Ӎ)C"+RV,(\M)G)֊n96Lw>,U䇪#~GFz*̯ 6F0Fn˭01On&u!қDO_v4N,r"&49:ȘHU\CR4'j| U,#< +T **SInˊ!C8%*+*W,@h)4@7qjSwEE>ȁmxEڃJ`9..T dK7\$CHҪ޸C8'D>M>it#9o"qeRl\ǠʎGBp#, +GXnJ1p.WM ЦyF){5k&Y0rHBnx,TMŠTuja˘L8ǔJ"dc[E~]ʙpq)GNV*a_J6Jg SqLUedklr-CX:c9%oQ41tHwI/l.Ʃ+6N _ {#NzV:Z)Wb8&q5eilӄ릸m򀱥xѤDHJ­+3V/h +gRHh@񮈿Ǥ -ed 1i\q Ǻ*coUBvà)RkeLY}yŽ?/6o凗zݭ@H}b9\͇|xxH|(ク I +~؝=-u"(ۡ}߭j֭n{(Ӈm߯ڋsbr -.j`=`Zz! +yO?}em~A Xub+YCWż'ȡϺMa-&Zxu `'5T8;Qv'qv軤"ۣ(k`5anvulo}r5vrPPjw:_෩[7h=\CCGyPTQT)ahGN +US2+ 1# ?trd%-‹F:9/퍉>P:|pCB-u'pُ7<x"!uh8р\wXQՋKUu,Ȃ"kgk2𨪴Wq mu2Fa^/k)11.& glj4aPp/q +D۠ +b9trݰVX>RtUkzmPga÷W};Q?z-d?RwOJ??ZƝztcA>C į|=%'ψ=Y" Vukpk׾FI Cx>h.}p~՝/W3H/>ExtϜO7o#о{.~}x*rO7'%L:^_v?wlcj{6?l 1]xA'Uٗ6 c%$I%~{g\,٢8Q93ϾB? +.c3g0,NuŸrd_E܂ O,VBbaB*Y*כ+a(ªH.ie;'a}2(u숡w;H6]YЖObkgsgkА{zӑŜj`X%71ID1taz+3&;M$ƼzbJǴp#FPCsPar\ GVhЀ@BS׿;(H1? KvFEJوZ,q=:8i5z4P1꺾qu欬'lhxOE6R#\wisI"c*l4%z!kԔ50OnTwIսk[(p޻݁ W w>,D=N-wX +Vm$ ^lkv _ILRC_3D3 vC5LeS3 +hK$dDϹ=ᲙUP7kDe5 8jG<#n4m#M`F'o wgoA6d$KL +|\-Z3 +1`]m@3Ӡn-6[M6:4UiVwԹ)Opǣ}z{Þ B<&M0T_#&{b>=ƞ @Hk;]:sM'PsH_د(!1gwvi(B_FxSx:BrxƁp#g|<Xz4*=;X0YƼK+WH:h26arP]zsU4tgF?R2 +-!B׎BF!"Z4fx~#H{1EoM`q3JE7I0 k\C( :AM]?T8& Er7 +${t{ QQ7Ɵsj[mUoH D@UgTEkΑ?22^XD#S4J54r|G=C8]tҡ&Uj;ȍ:T Ay&QsĜ1bw3&R2=a ҳZKI]LӒHO"9UY%*&J,23'L֤Pd\T;9Wj2_TYT1_n\w-i\-P&L;ۜk-={VꋜTN|Z(]3d V$a$]RQgmu:_1[Hٙ +%Hm{ /bܫKH>^ETIܲ{MUs\W )s[360:epP|d֧3kL[\~:vΩ ЉзU## #.aiئ>7d$ +W/!7Lқ_Wҙ#腿m+ڟf3$[~d?ɲIJUɦvv@X_  Ay|؉s8\4ѽ{Q/$*ߨ\Z6;4чXgKXHXc^|| $zp(l]<_c_b +hNEUgoD 񏋝g1K~m!I5CK ߿Uz=sH;':V,Wţ> >|P̑7=`! 2Y>]|<'w#;‹bb "xr)Gk:a2|cPqQP>tdy.G1&΂9 "tpAA|n7=uX% bTPQD r\w8;ÓH`w=k< ˃ E֚u)<<·'- BuΆa. A$h;܅(TC +' bu9 xSb"0|i~yʸ;&>AɄQNt4Pg5y]lVtb*hk2u86mK!h* ݡKR1#EH<8ɜKg+Y hx8Rtq,#JY^wbᵴz߁)ߕwʬx<ӡ.o#YMY? u…*+,,0D^$q\-0FQv%\Z sJf1BaeaVNtxь|0B>V}*Vɱ/ Ewp :2hqL0'l+C(PG,$Ɋ`4, F%kIąY'/aߊeGψ^:SH)}]j$ yZ'p{UAX7M4uvo8,c]@C$}\(da}[S 䎺>A`GmH- +ڦn$J^ & lKxŒiIT)kvtGV[f|;97J3)28gk/B (AeżDžj?*ǧuh7ڵ5tJ=TVh`͓<~^1UCD%l' \]]bM']ꇜ0/O;  9pB,55Z|a +̙M۲/LڤԜ.w|4tP50ͣ|fwU݄P*rm\!j]H<3,ܞ"W>.(B$DOG@SMM<Ʊ&:r Wmh a`d6K bcXM)7E@%7/RI\|R*f!&~ϣ=]+Ds +ɼZVj8 b^CVGm_Ӕh Є3lVl0mxk.VY-5H,oZ1 llIUk ]N;y(ȡNoU׳OV*,W=4ɖЖc XtS|J1'Lyo[.{y/pɂ`J44uy|ete"4WgqFjS{mkkz>,M]䂨xK +*6n;RV(b-Hbf@iר tDwl;T>sA͈XͲ&3zj}+TqtUp+ƊW>stream +HٖZ +gq@@q(,=? jU."L"H%DQE3sN!oyB[ +/WV}o|( B;w]F5n+խFKE;B.a3DGPI9PwcQnBwkw +O~{ c.-EFZ}y -QC_3/%7ȗ{wDSԁ/xknl+,̩9x_,- %pI.,V\#on?9uG\<&N[!a!KayyʉYA\tDTNފz5οFn\GiRW#6ZYQٯ4 ,ɲ"yf bx(a6K' |FC挤IzJ%(u] f"y]jL_1WrEl԰ od)QVJ:^"AFES#1CIQ%y(}# y̑SGƳ!><-~_ E0Jt{0wX UNt!e9Bo }wqG+'PcBs)+I $nz%s0JQTڹE<܌m:F + EsLt`H#' 5cyRuv 86iД:u4jT|[-:ͨ#$)[8bUq jtÂNr#Gb)L#q_3"L5 v()s#)¬]sj"]heƚR%թzxٹNE_xځ<>k5ac€ߨ|jHRn6PhEɓZPc(w%GؓSIh7B@՚/ǡfF%Dڂx3lӜ&4fVY4"dXPqs'9ͩEr Ta\ÀǠpI PDjQ'jI k}8-FIœZ"rcJ&a4/Wn~ S%1=7*܁nqmInsފZD#iNcdʴbgEjEm"LQjta6mO&IsW~KƂ:Z'2QrC3RghI]tc!bJ76(; 548-n궴Rk0^lj>1Y*iim|/JdO%0| +F+_銖>7h',cHYZiaf%]˵-ZYXd&ڳC- ֬.U{U`^26JA&EB{-$ om+5$ Vv^RֈxWzN ;*NxQٯ̂*ץX9л֗'8}9IiܞiwONGq76[M څ% y>W ] +Tg{pM8H;7Xi;b/]83S\6yDmtg^s(jO0wou*yo%>UK~;:Xz$$$np[u K:prsT۵AxaIw~_UzE^;M[y>-)xχ:(ؕx+f1nFkڦxyc.HSW֛wgJW賄}',",auDP.,ݝ@:Io ԩ:h"FĨr+ Ϊ7V,)v3}q@Zow"0Pzή B.Ár (SG-儞N+}2}3;E9޸hc5c>7@cÄArį7J': iHӲ C\N8i.-en Vc/Tq* `&cS#`?ro zAOߐ5e =Yp "BiD>_`yMOv6 dP5hntPV8TRv}{;ODeڽO_h54xQ^=q"epuO$kу-[~|rw"G=Yy(ڶ\?'>t/ޛ]?zjgtࡊpU`v'gAK;F i>eGcM㯝@̭45[ n&F{]<2@Jpkõcj$Y̌vQLtqZΨ2&2h!faA+'ˀ6t.ZI"Bsؾ+B9.MsJ*sސ ircъ!}CԴ w cYӋ@~UM~bWi\ήk+XWJg:'!6cY*٬=L`9>;$6fő0׭ZMGscݑmOƾ#gzj.-nWNYro)ǣ0Z(RV 59"!s~hz$OO;Ԑ0GHUOrEhL5<_pZv<3ʵ1l~0-x10| +=o +9c49}Ӝ-@qHsBvА֑@eu=¹!AǩA 9.f :C|7J"&NFdHe;Nl90 K1ȥ=! aSjHA$Fp5 a!Q'T 'yI?' JU#I!5Lsϟ/8sY ۙFʇ%r2u/.s.@{ťl-=5 _l>r3?QJJ0]OVmK"F`۶.v3N& / : %Hל&vSCv%}h ࣹ /UxOI0zcl +. Q#U0m*ƵLc\x@5b̀fI*(*_(Ϝ5娲8%47EÛ0g⧡p0j/x(=TFMN#Γҡ´ol*_7Qՠy +(;[|=T%'u:0iıQ]0iٚf3.!aLc!e)sNH99nΚ==*F]sb!4Y,uiմU;[3VW@YzE)glTc,,}!'[y2t e&Xe&bs͵ Ij }i n6҈zn7oWݍԧ@JՠX= Yy>ؠW{ -Qi܇e6N6:}6wxЩYit~z N~Um0,vAa6 r\\0~fNk݄aoMMĭnυ&&]SNjp_j̅v^$n.HZGo֘hR]B#ި޴(y?MkM3M 4 Fڈ:O'wKrN1'XxuL +b(r2\ +iitG`ҕnφۍxu&™>v0-hvT +mqS-ݙ9K܎n{P xR*xaލD| )D>IGEw_M֛) -4Vz;xq {8۝C aMrǷv8M/A1:K{­jt +Ӳ9Zl0|'&Tw m^B6/et$4-rqd@X/qnRN*tGgwdދg\NpR^ 1|` +~Y'T2qJ|ĸ$9A! d4L3m݀8 ++ M8.΍eR&Tqa#[tR,I*Kp35?~%n[A90̉MJȧ@lIk[B:]K֎(!̎Bw5]ʮŠ&G; 04<9&JT+0ʞ0K%9cع +xu2q;@ |U?BU"s@ d1ޜmӈccX;!+OR/OSto"_IR׸9{|  QƲrP2:I~W œ(=gF) ӔIW<<=jd2i4Fnག +tc4H% ' tع +xv\{p,.W^d_w :5&^.0As`k q_ּMrkIT˅fK/iPt + 1W)GNN ޤ5Z;-)\iY^giƙp2D Jm +*#M4* %i(<Ӧ t{t7SÓwIL=rgj3tR2d9H^CTcވbUw9|:cΪj2DX`F8iGSPj6xɀI0zS|U Oy +lW$-k/ןY$~.n ]5`(׍T>)M(l[OfO_[k,X=g&<ߕ~_]Ghy?bp\ 䫶w7}>69v/y @4h+諑 9@}eM=Ae"W<',ESc;ʐd% 5鑠(zBXO͛Vn~B&}1ʅț4n?*Z0~4OxqaTŭqgjC6Ŀ~"W^?Ce^wSi* FaeV1 +Rm]w/DaW6F ͅ ]"tt:.%dQF9sv"'=y  הxWߐkNZ HcSxldV@P/Z UՉB\9M nx7VMRQNFpPVse7BC d\%z5H-Bmit[J*GLiZo"kCUBD@c1/.Quz%Dga1ALTH +Ce` ;! wgSU牣jz0&w}lϘQ +b McNΦA1)TaJpb*4zݝ`Hާʃ_x3;S'"ƣBΥc3:X!n KIQ58y!b!f2 Nc[w4MVT[Oj|Rյ)Ҷ +v2 =}eThiֆx>$vx9MqU*\y6V6N@QC"4 qi.pp˯]> aN ~sSG +t/@I˂k 8`xX +5L+"m]: +@NxIKA{NH0zX_lqMŗ7M^XKN7^ AΎ¶U]bD@F4V?$+L?'wG173:G2uβ Ugj"1?( p~ 6M'#,"MVM} $,BUan00ϙLvhhiN;\2qē>yy+3Ƿ÷@ *{Kaʏe8dՋŅ.' ExtBD Пn`ߞlYd[_L*Siij"MGL_ :##;d2#j5ԯٮ{iȵ;$*v3iĻMbm$EYWF(P& :jJ5 O{s~<))A3Ža$LT~z3>IRRj5õJ IV̟J R R0Jd6F ^9\>f @(-(5`ՂԇƣR1*5ɓR̷hJ')5:zq\$tFTcED!ў}-i5o$(D>z"$_04ccyQ;Ga6uv_O[{8x^1 HpY| r#"OoyPd+;#%:x-֒ &[JvI n_Ü!D>Fɠ=V Mvx 2ZZ +#ܴ+ 纕f +_+,zC^ TYfpG0(ag0I[om6:8CDdC13rgy7|e71Az#ܚE\A~n;r-0ޞ9p\j.ѕWw=)먠SOG5+.p6?8OJ? +k6 w+zh ]텖[^JoX1B-.Js,q5B`?d!o5 XT'>"pgs~vX~ U +K5Óg?ka89)?I Ue9˂=/_&M72n_򿚶7BQ~ɡm}4i"T-z5y<4P|n4h4 `:JJО]6NParvML$C횝:2M'Xg'C/ف0hQ COҾg!&(ݚT~/GUDkHV,՛4R"Ia}7fe/̨TU8&jzzcf+,w2]fB$jPy$O9+7lu3PVU^?lIj;DqAdGyxxS@f`8 +:.kGQ/"65=õ=g !ˢ,|CѽK;7 FO0P3Gch~id5a8m Hd y +{({ɳ=PSW8-'a sד9--9{dh,˓[@=-;IEiaKh2vkZMk5$55vM\m(V0IaK&Z5tkm\p^8k˵1 jbfOזҵ^0[ ]#XI>.L*gfZwx5݇ +SN]CcH#I')s6[dE֫)q +h)(RrH r,".ߙ{/5^O~t6C686m7AKQ=jEVg_ M 3<7/8('cThv4E&@ho3AW7 U/#{1kBhYXE*0W@Y(Ƈi\&hrp'^)=i|$4F["R4%8B{QLRv,*q& 97C hjCԀPנ/XɆ!52u("CL0$VQd0$]14A0 + >gzrE $t@.&Kwԃ$*2Iiw(a"x&>5#:E[bVx@#5Xԧlpq.tɭ*dMVY:,HMIY d:,T0jG7)R=,ө/VFT]ҾUה_qd\BDX1Ԇ@=mـ*IZ1:, +p +pM#b&-8BF;f;7<=ia ƞZTZ]Nϑ Y]0K݈f.{0Q! ?0xБlXbC+S'n3*PKgdIKJٻic)` %$tMtWȹ"wܯ<(A;T^81V9B+x\ŵk(>stream +HWiz?"IĔ<<[$[ї/YD9}vS5[򉔁ҕQeFV44| P0 R)KHWFzj60MҜV|ʎ-iΫ~w$*Wɻ !$3%xnq(V-^hzz!~H%n<RDUzȤU$kȅNLŲη/uQlM̏x:Iez;Z[F=륱}xI]}$4xvބR^aJ,'=zK`(=l)WСGZۿa>Λw;9D׋vKD&]϶*7)?Nj_}w'5Ȳi~RxR[j^9bh\FYkmY`hYOD?ЍƎ}斍J6*,TLW!Gͭ~4#= \;hyCHiA{W~& z$t)B<BlB1cLd6d]:T_5;`JuUg4]z&d(.$m!OHHfFx:"CZQzs9nO\v(@,_Ǫyk_ts{KO1}BZ5@=@]׭ߥ[ k WN`kGH!XEȀ{KBS *jLxуEr? +b"&w _њaq\&8Y1'*V`֚aqo0dA͒N\v +vdd^UJj:t TA> gCcxCv>^DLEB!GWp@ [4'b(}Y׶KZY"Z]`siB*帲xʹ>/Z6?vG@!͙㼄}aߺBm4E9T:mcA6 zueKW4 @?םxR\j`)B)>'/D=STO60p+lAzA^TwYr,]7*ө J iSАr SoY^# hSP@3C|Z"N|kAw:Soml Tx dIЌFs[k Eav +X60[\ +IɅmA 7ezVx˲;&M km^5n!f SSu:J z]34usr#D*,g&U&rb6);i5k.Ę+{MT.:3/U⢃RLM=4V3% + $҅7œXUZMCyUbI1݌Kzj4BJh}C/fq'} K^RK,aH#:Ct&6nUn'Wׁc ̓IhacnڨG"˴rSKh +q4,y))monڠ gBl;:c*,m.Ȅ䥾d2o*inbmG]k:a)$7qZKNSa[U<v[x{(YM9zgmD{\_ $#|m՜d.wiaYg[4yv◜hNEӢ,;|ݒ-bI};: NFq+ON,1V`!B&,]ѶZBӒ3j F +$Mʢ c-~@;@B󥄱$؋>aT&>)s:aV^BڗpnlCsxCӛDƆGY+ ] @)#b. + +}w wP;=lbRrp/ĊĖձu3&.(̎eH)_ݓpKj6<< ꛽GY,#cdf(|}i+iW'!&FX\`flE~zO}*]d]~Ny߸uP+/1 5cg `l'=;? q__"x&j s+FP׌ O!i i]?@X Z e˭x U&4]y95hr^mr̮ V2Jtg!{DC\d΅sM6KS v H4 [·eR*I&$=}rwr!ߟJ,A!j]|d^\g  K]S I;)1PV]@ a@p+YR t8'~ ̥L:S)qMwDoQ ALCv`խݫqU$HOHP̿lXp(䜲˪Z ]ͮ[~}x*Z`K`| +wTfPGZ178[yq `,T>54iq~[lŐ3Rm_TJ0;M xyq23"_o}sL9 0y9aG5-xߴis$-f姥P!^­ &kbKs'~VwM0>el +궡!iQpGKzB>Zcп'l䓜zlbC؞RBр +02ǚۀ)DuxYW$ȋU7뚛uIT=s}N~ߢZ <*-=:͋~ӺBt3#9|cuknʹj~i]zӘDdzp1u[uRos¸j?9AJ<ݿeG,9#3dzB]yFÇQ1,I)wxdf?!x|;-x{kgyB)%QCSb9RW?2nǀZz6~hy^oùX:9~\ +LidEܝq ^q ۩6Ӥ}<9w1yz.|;wd Ou*EzS^{b#He9zdXrstB3nceea NL@KXԕ$~#?@,b$vŽb6yoy1/jUuWVV&Δlvy +} ^Լ10)q9INvwu9&\IԤxL]HIR** +{ +Wbꩡ&f~56G?7R2GgP{>h1&E|y\^ߟvۂO7x/:>>y;߭AzM|CcsZ#P0z_$opUӒ:o/zʦsǁ!uuUg'*f \;Ec;yl Kn]38c +n -4S AԠP=0:OOlm꽓d{"ĉ\R €fW%d M2'wh +~&KfcV:ЩH!hGGy>qΘ:]P(,nbeAxxo%~w٣3@/3L*L@4eWG/IEy^.bQoL =ȤxfxI/rB16dM]׊xϜ0qZs~ÄaoX U8TI/C1x5gb?FС8Ut6ClD\əɦ@ZN 7_ч@@ە5F+j2a8ݱPu#J`|#3̳8#K )[BXpP YxB3YKE79U6/kG H|߾h C(/rﶗpϋX cw&k;%i?oKJi?g PŘ5jՆ $1i 滏53 +ph3H ΁ˀłF jxɄ$_Ƕ=MŌ,\ng[0”o}p`>scPG]/,Zz85M0'± +0!F1JcUړp`R| + (9;wvtTu\{ATB*Jɛ~eUyv +˜xf L92wX15Z9-PfC@N%t2ʹkh|},^eM&q_8szZ6wF +2GQOL6GE;|Xn(ٞH$rKh U;Z_&% c2utГ:EWnmJ]BFurHJΗЅɞX(ĦA&MŚ(jCrXtzGݚn2Q3Kߠ]yg~el3_c/+_JdrpZinr++!%@[+{m^JwYQYp#?J1낙\_:o9A3}Eh Uߏ&t\6X&!N+W4x<@3MK XHdRZs!4srVUH!91Pt$Vwԝόgx<z-" >|f]B#2&Z!lzGqN$)U[KӆVP?yۮH&L671:y! W>;ߴ^s-;=n>Q2ݖ]BP}Qn64peJ 1*I ,&97偂B0_ZkKKIF*y݋.MUB01!n_ǦX⢻S<>ls-L&? V(zGFtQǺ;Ҕ뒇7#UZ7eiv>>,JU\B* 0 $'S6&N'do^],5xFd LV\y{>I?= $_|_;jh5U_E?K(51 $"U>ݷcC}]',XMCJşT +Ť fh \B4# {+O5yZY'Mp:k yJPФWk9} |{vYevOԠ VlyG=ُ(Y8.؝U1V=̂K9*Z$|Lp];_Pت_)Ʉ4xN l}[XAds'<~P^#uhxN:3io$gjoMNh  Mlk-{c-:uzDN(:Wj\1K@66k3-_4ib(V&mv%EF\g&#1-sPQgLaK?r: ŭF] Ḁ)_Qiׁ:*lJ;ꜻ׌^/oB$9NPK;D^ΚtM!,Kx JdsdpÄ"( y͛lsrIDYx0*xjt_96YANV+ ۷=u=㍚n<=5N5B2ѽJzB8 # *wj=Ƨa hm*UKoXڳ8o;`(y˟vɕBKO +(z+(']lg)ު\|Z\ubn0∫5a.x2s cǟ?KSE)x401]P^ ҸQ"_yCw=U|7`JZ)qvd +*NA{'SMץpY(RJP;U8a'dc wb'':ȁ ,C6)&EmaX+r1A“L S%{i-MVh\ݩU'Y rRpKS_[^g0@>Ԝ%{vDs2` 6߇鞭dɼҶ" C@ՋQß.GmOpi#\;9juj_ۓ6吴}5*>쫛e*% q\4EGwnN~/'cǿ ӪY='ҊU[9IZyL??2-  @Dd7Q!)ֽ̓ #=_<K[{QZ+޻7x7,D439FC~X#ƹ]ks=WSh;׻<>kG'kTU {t9幝GЏ僩ơլԬy\]:=碿PR10,.ɺFR7Nط㹯:;Pk1AS{i 8TTha-m;p"e՜8ߧj0Q!2E11 €jw^o% x=S[TG' wV$K(O'E恸{VoFz1)a~7PV)8?2X +qc:GttTFɟ=g5!maIKiLT<6U1\Ru :F4G6玳̸Q^s%mlNxn-OH՚T{D +8ENQf%0e*14\LMҖpl i !{2H4O.;E'M}R^ԕp?t找;Q8>C jDaE]'A-Anj ԓa͆XBo><%N+":d`hLNj|})3Jc7;O;C+u< @>* 0\cڑLAPi 2z|^KA_cR%g1? _M CFvhw'TuL/R,0D,1jf{ݓResf{<@yAZO,HcR6|yT5 +.<Iġ[Ym.lbOP^]fӍjxpu{$q(wҙW*k#z9 ~:b0;Al2ԭDdHHzω}Ҋ:혏ܳ9j49|TDU2;\:ZU[t缹v+kLj]\K(tsQN<(6ڬqǦi0`_*߇R.>?>rg8O E9Sr[CǸZ]Q@n%T\ +R,mPӠVlj?V&)PzR)MeM,+VL2ۛrz[v߄vl9l .g.zҫMZ9GWv?̽_AMS[Bwoi]5k&-3uCcɀAs?{Yxrٞ_+:{m7z|T}@Kn;)Ali{[\J8:k=4ι+PB@]ż9E;@?૰64Ӿb:.zZKJ#` + UYX +;w>hnq9 @m3K kBq>}x}]) Y@Bګ_½vgڌT mq_A_X6yJ)GzAIU'2iiW6fq +wpߝBw\p湮/|>L3'W"cpA>p/Z"6RB^cab}p ]u$Cvby̠TyR8\/Q^܇sCo `5GenJ٣:Phϫ=rL/ ˌ,7}>r& Fћ'>//TBCHcQv 軔e Yi%8o?k۷_o?}e2kxנweT ] ~鷊57?<;nҖd,^2!cS=d, RmCƛ2^D(|Ne RO)cBnH퇌A4tX:)[_]Y2ѝqJU ;{=nxC "~׉TO~7_D\**ģƒhxPJc 'El$+".㿱]"&,--btڣn/yZo">[r ;D|A1C] z>&V&KI)aj#ziT9STI.E駞"F|8,71`%42>, /1ζ+͸VxB1V ǖ IU?{~%i\`2TlἈ7o8f^ChEO*;W! rF"3dL%%8HH.Gfh9 NMRo.}Dc$o2KrqqTtu1ǭ(ufh:I ض.2e!mxfrZgMW > +c:Wݏ|\fȺZ 3:oŇM/G<G돺ص"z]&uv +pk'#)l0B 0]a)vƠ YlHZe9dC 7Wrl ]Ph;P 0IofJ ɣlZ$4 ؿvI!??f3h=!Z}aM0d$V]NˎCd &2Gd_8\I\'хP9e.c0ivO GF~DKȶWP2pjAM8 l3QaJI)݄9`)Ȝ/e?C k__du,R ;;Lʷ#V쬿@u+['J^ ,t㌘NX3J0|OͷWڑsHV C. 0E5qU4v =0@5Dr'Q C~ܑKd>a: +\X{]x3%T,ÙOXGK]^HpyLp:')t_vL,/0(YL:0xq@"IR ?~{ +BT2˄oc 󗐷٨eC+7iq`Ѯ s9xeerP6k[BlL(Tf~hD +s401ox8/Jv=MPP +$QBcYcy2XD{5sjh(I!t8t(G,L"*n {~7mڜ, +}e$S+=4J#RBo-BV6Ӏ8AacbXD2^0G/1Y+m? +>a )k3}oXl 8;~$Ji|C@DsZ[@({3PFz7w +)A`nC ATb1HERH3T0fOC30W`P >4$^s;̾LHQ1$҂ ]#!l=pro'ϧhL+e +; 6<`b`9},30rp2 n0`"%WK_{WHO sŚJc=A"uA@核 ]T^P~mAqE<. n`cWDY!t_%m$lC֜5'nXp'K 1|sgi6~I\Dp& 3V m#DT4 +uJƬ'rzp XiCL.1F3O9ȣ n P0ҵ~hΝ ~bEC ( 'cͻHdpBW +hCl3г4(-A10t$1aY'h/lSS?~?odw eh T3I^;na峷  <; j ,ԏf'S `( \޶2j["ɿ{l] ޴Nd1q Vdz:Ǐڂe2Ax #gvVMvZ3$j o |m[/oGGu/ڍFxI D2˟5kʍ3~63\{F i)L.#H=Lrgmp* mS">7e;׿K bwwΦـJrKhH,n!p,p-@ܚ%Jp 9@e+h7q Y-(o!X +2!78G,e ܚ}s2gލvtQ7H $a0^?Yy,q;^粂I{̍E5mZ&5q@Q$J-k+7Dd->~@Tm:R5_,( N{Ჭz1f`Oe/H!@UŎd2AB8H3dq_;bNؗ_j !b>R#j *~uI@\ܢ +Ew0$iV5</<_]?_`Q@?,- 4kXQI5rY{^Ec#P6ziq,ƹ#N(LOp*K6:D$yo~vDɎ'_/3t]VWYHVgKEז6j׾>9 ՞jlDbg j8v?5#pxkeXNɴ ==-gMd>$2r\̬}!TPC0[9NN4Nf?(FC9#[ꖐdE}Jx%̥FGn< csLCWkKWq8i̬ޕg o{*eՙ]*KϛQ7aL=..+R: J˖AjB{~Ubᴏ ^<jq)dž]'R.Fh ]!1wDŽ,z(,^vbDtAv3uCyk=Iy}4l| ȅAm͎jWz>jN=:Zi`Ӝ!UIya>躙gzךPlD 7QLT%Y Bm&?6kKMDd*i %5A+ۗb&@=< Y1AS1]H؛%>Y6w,M2;(975M %LJy]Wcz~F#TyC'a")xKY'jlvO{NaJmA\DVg(VƵG>_6̘ JeSD9"_e1`|:7,^ ԊgV= + J8H "xPYĝ=/7VC~la_N4>f;OwpsAF𥐪$A&ou??5C(L(DMuOҊ \fSt}:W'Ev|EmmDAc|)lAe=jp#}7۠_d]g*/S+<8^K/K̜/X: +V12O*g맍} _bO +w,FJ8xٮ/!ub~w?&w\ʼn&cC!}MA܄ 'eifn˰mBeYeBܧ0'邔?Wl v sBSHo7%k3xКh. DD9 S^qڹXq?gJ‚NtP}}6jf+5 +`z?݃hɩT$m"_a&ю;с vUS-\lfZw*=S&6T{TqlpL.VRS j \AփTL} J(FlZ6 _=K$,^"Z=U ayXa&y/%8XsEGCpqEr L+?m`ʮXr=CR Zz,M(~09%Q%1aݚ{V f396:d: CHdŇFI@@eD%ZBcKCl˵ƏEZ;(x\ 3ٻݫ-! 'Lj`S_9Ykꐕآ %M6'LG *%YQOVLV*qr'~]qԘ{}|W:ތJ%$fC#dƁH{fK,aRb=Z&^Q\-DL^ۯ5TS'NM|trw&T +I-&^6W#E[pE93CvX˘̄BUgPGFfΘpHN-4k7cNWݕb~v5iΕAh ZUFxY^=afݖ'}JKJB3$kiYcD E-fU{/ȄM S  +@w %3>;GgQU"$ *IgՄ@N竬in"!Cد`$6qW:e*-`, nVdUYp rdO ~B@OVO~c{~rp o/?n0R6WJŴf|BY׷GgS\D@H5f#[uct.,* эFP+פmvpuuhT^L!C;C)R3jKcsRI)qLY&r1.WS +5cgZptߡUܵ,i)}!ECK n:@.nI"C'XN^xR6a MKKV&Wq2N"-!P3c'y٤grA҉^QB#zV=og %1Xk⨍ A@h'dz nŷ{X!~UdV-yAo=zIGNDZ:8H +TH.57} 30*JѡŜ,p >hSbL&rwTT^񃺸\~Q$Zxԕn_ Zlf%@n(t~RDn/B:= Fwɾ *Լܹ`3~FmۣC+ +ҊR#r3"pb "  +\qR@6ҫ/DC88F((C]Ѷ ,hpP&4nN2 v< S"bq}]L23zтiWc,AfNWnV +`,u+1Y5AFbݸָ$hB+iQs;v8v&VR;#A k*f(QK ABOkۘ#j| +,jɜa֭-Th<)ni%Y$!dʒaН}G]>p(fW/Ôн2aϡZ4 FbqvÝhcs{Ve[!O^o>럿/__^//>}__^W|K vT +endstream endobj 51 0 obj<> endobj 52 0 obj 14686 endobj 53 0 obj<>stream +HK$ E絊@@S?GxbG=}Yzti ]__k|_;1NW|EO(KHMAs!~@׭R';yja1#N~^-Plϰ<:ppdɁ/JSK-=r8Vyꛭ˽v.ȧZ)\j?/3,G;ݣغ܋mr/<~^mIDZ~pd{Du%sʌ-dwI>.8RshMh:DzB-`q=XlS_44(9d7wǶ#yTsl {T7R 3mXٹXp:6Ն[8ԷFФ3T%fk>\S[:08LK ZSlmّ TX532n]IJ3jBLL{, +[ +j:dLimSͫjb-k[hӁ&-[t#. ~^`VL4m$sm1"mOE&Q~OLK{o29'*JAf +Jԇ +xD큪F%4KM4 ЄȂ<AC\MҴKۜ0Id[-4Ձ[p7r73'6і͇-ʸǡP<؎ԇc[W[y=W-E:+TfԈKcEƏNF֒ /Oۢ-Fzi"քik~^϶8lk3/bVBmlvi[x Q.\[< +?Bu`krവWs ?gj<Щ׽ZF'a sS8KH2FX^Ϭ)ufUol:xGg6hT8[ + +'_!;ƅcjw:xH$Ëքu /[pmÎxsb~/`sTrqtyphK{qenY6Gs4aYuQ"R{Bd W(cS-/L>K"YGwgyTg:uMH9v+oF4r`x*[ջ]\l!PQ.[5K fՇ]"w,G'|.yHuC:;x8P.t18l]}=-Z#=B$ Ej<fE깯2Sˎƅ11# ߎ3۞)rnz+!b+Y@/m$AߥtX0! 4eiWCn3.-|,>88mne{!#NMi\<=sxk:xGW]ozS9=ϋHKu=AJ()B b m(O+1! J ^: ؘxLn<KSrlYm,:vVX6!ǖ=:Ѫ9RK"Y Zl,n〭O'!W"q@Oذr Sa}$Ɓ3r),ri0N+j.jkgs_}1%Oh=Npێ(֮'AtطWz)&چ2|%"z?o./J]|^Wɲ Tx41$P0fbr!.p}b:ŻuЮ6zmBE$ ®uu%s&:Tc"bc)3ٰyCj ETNil5\GHOȊ&}|q.ӄڡǍԚjc#$4+>?ǰh d]c v14O14_ֲ؈ZbntVܜOmRSdk6u-̡9W8NP'<:ڒ( 1[qZ,(heDj, T2EmWB˩+g'[<ZvdlZPwӽ\v)rѢ|Z:hюךsW)| "B.;E  cdG-| +!wcnU"Y+ N.+c>}awX~Gݵ8ldofLLdzhyNT{OR9j(;_V/ׇ֚"m[uf@j5/ϥkBl 뾁zۋk ҁg铝 /̡Y ϵ}v3 +V?w,Smj]ȗ6in*h\hJ-1|ej#>T@ZráwhfaEʅ3ؤlK;teh6+\ÖJ|t`{_/LĘV-te;܏bc?,чl|z˱;lKB1>B8x}Ga^c2:LR(1X/!?x'1hIcXR2^VhKr7=泇Z`C +"xuŃ*\BOaD0dT+QUt zG*ߌ犔 YӅmqX~![ ʐ2|ZBdX}޵>I<{Q-~ ҁ1gq%jAR6{):7BEVJO[aV۫#i^[~ܫZyKCeAJ]Twibື! ۜYBiaSʛW +g=Z* McO:{6wHm92+B:l?-Ѧ,35FUoK4 +!TNrH)h.^!S};@Dw={];=^RNͻp'dgB䏤Ƈ PAU׍%ZE2F,`1O6J*@NSh!L5{iRZ:zQJ(H'r*돟gGCa͐sl,ĺYy%jƃ =z@Bw Fc=I{N.4e@=٠0alS2_(XlxC!ZrZ]aS(ZR_XsQ!a:~y0pd)T*:}MLV|Um%E>o5HjZ ǞexoA|h"MU&z@:@)AY&H)jmP + ~dlRwUGxĜrwlA*Vsi@VY.(umpcv-4kgcDw@;:&k+OƯ[^Ŗ +-&uLj݃Ŷlbҁg[չ%he}$iGm-F Yks` W\c"P(U8I$3mϴ ܩjb._-qВqխ=S4.,xQ(MeΞ` q_2iE-U-2^ ydk.'[[EZsd9 1]E~ &Z+r࠽2݄kIz;-nt+o9)ǭ{;&l5[F"S+ 1)`a- t4JՄ¿;F!_8& T0Qo{8q oI,-(>(1m +ڌfn-e|'|NG}L[I%޵pup pk7ebwϑ+Z Nm%*`'gh^%0/rx;>֎Ein +}bBC뉬mb5Bv +):_bW"#%&i-|Gb@=aUJOBj[Zާ*t]a4-BM;}LKrKw Ֆ_[(|mO-CS#}J2 Hv-'&lL15p[k-笽vd\Pr{O/ wu\ lK0Wpm +*bdw0fjYM?K(D-@furk@S90]֍XN.,^sn R?8jJ+L\J{VDAr ^|k?|kmnߙ>(."=);v|Kvt oRR}KlP:)xo +9Sk|rDt+`OI)=+]I?E.?`(Ե'uk}ޥp=/dϟ _.Fu{;TkuG^ ~mZkdX~P^[2غ+SRp k-sjޖ'~q|c=&⁉5wrYj/P3l- '5I^6੩˜p\mk^On-G󕇶d(Iy`#DžJq`-ҭ}dkl-IM_׌.PM[ Tyz,0 0qrp{agǭAd\gu5>㿢 />L#E3c'cJ{9A pbԡbGeCj +"t@'t_-Kͫ{qo-[Wq&HF68 d̪ 6di7 +਍}R2z'ZB)p Si~]`L?e$9 B}OЀ폄xI<\6ޭG1_xS ?In|:,fE K؛ +7-faz¼d(St͉'Y)Q >r~ +Ud;$c?S=,0~!T#f9=?7æxeY-x`W7)SȾ`2W(M՟'FPLNZy;v ):gg؞fB[J-_.Ϳ'hH%5l63~3}]Xoxr%}z*tQhWNr*G(SVIgɢNѫAc|+q;\R sv~+]% لuɯZS Lk2^@VʪnQ {UqeRdnjW#?rkgBѯQע4\ٔר,E6 +Y*KW +?}Jp ^F*l+X=C#l1Udel~5K@u0!o嚬'*a)#˾R♞W>e,. KIRPiDBQ 26vprMt$;n +lR G +N9M|_Y{͉lQVAOɖBkm^KD䒛5@2`S\R,xU! P)!F\"t( +XCCL$gl1Fj O|H!o d'۪'>%(9¡@I Y7xfZU8QtEP /.fn +, ,oR^!; +'XV,9#?J,p}KC֡f l,ym>!i!K0nUl]av V6'd{q*`U5wq[qo zI,{񗍦_XQJR0E,WFVW +N|peV! G؞{_e>efr9 + +φWXort<~ r/L X !1Z/%Ŗ_{C~SmMSjO_=49SJU6ס VEҠ6VoA\d3[`x +RC&D: Y12=!9;E b.2:+wYLE9Y;0E328+޵u\YMP GFN/ #u<,Z%q1E pO*8eEiI+K]2'cm֤Y  +᝕މ049bXV(=r:ق k'I3s ~Sc”zK  [a 0"/H֝-# Ug &xdˎ@t{)@[OAc 5![Ѳs{|C[H7(){y+gCmpVBD+gq{^o]BZPwp,O5SaWlHKFuQD_m[ nxufrBx[$-$fˌ/xs"5P^YL`P-p%U?8 5OO܈a +0!<,J-\k'xoÇh-Osx[^$ +YZ7'7WFqX4 US䐎F[(oڵB?x++ T[E~[C0â,I87T0@;[?zX+B#;OS}-.%&TQE uX^ۂt` + +l>Ϊ9-'l[=A>\Hҁi0XPBhʍP*kBt\`b>N9 d!;x1.P<ކ?Xn -_Hwx_ڗvIJIEtR[p^Kl&Yl=|Z":]˂=$/KZZ)Gddq@CWq՚(Z-s%c)^&tk`KX6#}/[- 4} +-;_z;\hR+ɆV(TWRl9m+TK@ñwI%ܱa(gYB|9S*Rg((v֍YvGFR[ ը-sJ9ClD |(b`«lQ|(^ňY,ɐQam^(00gosG( +N P0eYF +ӷ|(CDeJG( +бKnpGm}\{k.yå3?z,Ajg9qF|.9n]- sbѤplj-P0e2$Q:]yHE{lYb9pu`.C}Jcbut {oNkg]j+RS&xV1T + 6IzA0(VT1kZL`ql^[ EF&MfZ(zSK~e+e0 / of;"!j Ll8Р +Ja#h ŧISm +@ůL稼Kp{$CtXeurѓ^ [ILc/(G{qr̻U *ψxĆ[ +Sm4`81yӻ @wfK|4qJl`IۏOIsI"KWZl?m9iya +endstream endobj 54 0 obj[/Indexed/DeviceRGB 255 56 0 R] endobj 55 0 obj 428 endobj 56 0 obj<>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream endobj 57 0 obj 202 endobj 58 0 obj<>stream +8;Z]!9+HIp$q*n0WZ6b_pGsW,$Ac<[pj''B;)SLo[A+'/!$=X-/SCb*&k`$.SL8Fn +8g6$+F.q_a?.fU>`hfo`0h3SYFO,+s=*K&))P)`5YF,[t^l,^l8*4mWDB:B%'(AQf +RAtD4Wi.goS7+f7ae4)Ag>(l`@&Gg3\7R!CbB$GS/fiQVqqV&j@7;@FzJ1%W3!5I$KcN~> +endstream endobj 59 0 obj<>stream + + + + + +JPEG256240/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA8AEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A6J+Zc0qfnH5VRZGVD9Q5 KCQDW+krUZt9IP8AB5/H7nDzH94Ph96fLM/5heZ6QyH/AAdoUtHKkgXt2BWm3WNAfpH+ttRXgQ3/ ALyX2BsvxJf0R9qQ+cdY1Pzb+ZEHkm3uZLXRoZON76JKtLwj9WXkfYDioO1d8vwY44sPiEXLo15J Gc+HorfmV5NsvKOlW/mPykZNJurOVIrgRSOVkjfYFg7NUhqAjuDvg0moOWRhk9QKc2PgHFHZZ+Yf maTXvyh0vWFPpT3F1Es6oSKSRiVJKeALLUe2Olw8GoMfJcs+LGCgNX8n6Ja/lVZeZraaey1lLe3m 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 irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqU3/AJp0Sw1G bT7y49G4t7I6jNyU8RbLJ6ZblSleW3HrlscMpCwOtfFiZgGkLeee/Llo7RzyzB4oUubtUt5nNvFK AytccEPp7Ho2+Sjppnl9/P3MTkAW6h+YHlmwuPQmnkelsl68sEMs0a20hosrNGrUT3wx0s5C/Ovi pyxCpc+dtChvILOMz3lxcW6XcaWdvNc/uJDRJG9JW4qffANPIi+W9bmknILpFnzLoY14aB9bX9LG P1RbUavEDl9qnHlx+LjWtN+mQ8GXDx16U8Yuuq698waVZana6ZczendXkcssIIPHhAvKQs/2VoPH GOKRiZDkFMgDSDs/O3ly+tLa7sblruK7kmhgEMbs7SW8TTOnCnLlwjJApvtTrk5aecSQRVIGQHkh Y/zG8svYXeoF7iOzsWMVxNJbzKolDBPSFV3fkw+Eb5I6WdgbWfNHixq0Td+ddIs4bWS5iu4nvZWg tbdrWYTO6qGIEXHn0PhkY6eRuq280nIAs/5WB5RFjaXzagqW17cG0hd0kU+sPtI6soZOPcsAMfyu SyK3AtHixq7RN75u0CysL2/u7n0bXT5za3LlHJEqgEqqgFm+0OgyMcEiQANykzAFlD3/AJ50Gyls 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 K5dV8M/7JTbyN5qbzVJeRWckaDX/ANJR3Es8LWZtehY24dnM38p4Ajxw/mYcFX/BXLe/f3I8OXF/ nWmF15Q8xP5M856ctpW91bV7m70+L1Iv3kMksTK/LlxWoQ7MQcgM8PEgb2jEA/anwzwyHeUfrXlH V9R8xiRYxHZTeXp9LkuiyEJPMSAOAPM0BrUCmV488Yw8+MFnKBJ+FIWx8s+ZLx/J9peWH1CLyyA1 1d+rE6zNEgjjWERsz0k48m5qtPfJyzQHGQb42IgfSO5CaB+W+saTq3lu/tgsMSxRjzBaB14ieCF0 jmWhoxPMqePz7nJZdXGUZA/5vzRDEQQfmyXzTo+rnzPoPmHT7b6+umfWIrqzV0jlKXCBecZlZEJX uCwrmPhyR4JQJq6+xsnE8QI6JX5l0jzNq2reXNYk0yZI9PkvRc2dldRR3aRXESpE3qGSFOVV+ILJ 023yzDkhGMo3zrmNtmM4kkGuSE8w+RNV1iTUdStoZLLVII7KbRJp5I2m9SCN1lhkZXkHxVAYlqE0 NSK5PFqYwoHeO9onjJ369Exg8sa1FqX5fyGAGLQrO4g1OQOlI3ezSFQATVqupHwg5Wc0SMn9Iivm kQNx8v1ILy95a13TRrtrcafeO9/cX0lrcRXUJsjHcKeBeFplcMTtX08nlyxlwkEbAdN9vh+lEIkX t3obyP5K8y6PrejXmpW31m3j09rYhpULafLUluADcXSQd15Gp8MlqNRCcZAGt796MeOQIvu+T0/N a5LsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd irsVdirsVdirsVdirsVdirsVdirD/NfkfWtb1QXll5nvtIhEax/VLZpAlVJJf4ZIxU18My8OpjCN GAk0zxmRuyHlv5k2/mbydNYwRecNTvri7WSSSNp5ozGikBTtK1eRLfdmz0hhls8ERXk4uYShXqKa +QPLnmTzboP6SHnXVLaZJXhmt1lmfiVoRv6y9VYHplWqywxS4fDj+PgzxQMxfEXpfk7yvqegx3S3 2uXWtG4KGNrsuTHwBqF5PJ9qu/yzXZ80Z1URH3OTjgY8zbIsx2x83fmNrEkH5sXl1BcvHHb3NrVk cjiYoog9KHsVOdDpcd4ACOhddllWR9I9c552L5788Xl3D+dp9GeSOl5p4AViNjFCCNj3rm+08QdN 8D+l1+Qnxfk971Oa8g027msoRcXkUMj21uTQSSqpKJXb7TUGaOABIB5OeeWzwvzr+aHmnUbW88p3 +jQ295c+nE8cLmWVW5q6qApYFjQbZutPo4RIyCWwcHJmkfSQlXlnzd5q/LiW70670whr30pVguy6 KvHkOaUPH4q0Y/5PtlubBDUUQeXcxhklj2Ieheb9Z8xal+Ues3usWK6Zderbi3SGQOHhM8BWQMrN 9osw65gYMcI6iIibG/3FyMkpHGSRSt+QVzcT+TLr1pXk9PUJUj5sW4r6MTUFeg5MTg7TAGQV3frX Sm4/F6Hfvwsbl+XHjE55VpSik1rmBHmHILwz8jvMGuXXm+W0utQuLi2ktJGaKaRpF5Iy8SOZNCKn pm67RxRGOwBzcHTTJluXtuukjRNQI2ItpqH/AJ5nNNj+oe9zpcnhf5G+YbWw17UP0rqcdpaSWvw/ Wp1jjaRZFpT1GALBS2brtHEZRHCLN9HB006JsverG/sL+3W5sbmK7tmJCzwOsiEg0NGUkbHNJKJi aIoucCDyV8ilj/nPQrvWLGCC21yfQmjl5tcW7FGccSOBKvHtvXrl+nyCBsx4mvJGxzp595j8n65p GhX2pp5/1Cd7SJpUg9eQc2HRaidup9sz8WeM5CPhx3/Hc0TxkAniK38h9f8AMWp6hq0eo6hc31vF DEyi5labi5YgcS5YioB6Ye0sUIgUAEaWRN2WMfmLe3kH5wzmGeSIpcWJXgxWn7iHpQ5kaWIOn37j +lryk+J8nufnCea38pa3PBI0U8VhdPFKhKurrCxVlYbgg9DmlwAHJEHvDm5D6T7ng/ke/wBW16a7 TVvPV3oqwKjRPPeOBIWJBA9SaP7NO2bzUxjCuHGJfD9jg4iZc5V8Xorz6VofkTXLS584R63c39ld S2MtxdI0jAwvEFh5SyFh6iEfD+1Udc14Ep5YkQ4QCL2cixGB9VvLNAvb1vy682K08hWObTWjBdqK XlkDEb7VCivyzZ5YjxobfznFgTwS+D1n8ibm4n8jt60ry+neSpHzYtxXijUFegqxOartIAZdu5y9 MfQ9EzAchh35vX01l+X+pywTvb3BMCwyRsUepuIyQrLQ/ZBzL0MQcovz+5pzmoFj35Ca1qWo6Pqc V9eS3Ztp0MfrOZGVZFNfiapoSuZHaeMRkKFNelkSDb1LNY5TBPNP5heYLG/n0rRfLF9fX0ey3MkZ +rGu4cGLlyXfuy+9MzcOlhIcUpgD7WieUg0AWH6X+UnmrzPrD6152uTbrLu1vGytMR+yg48kiQfS fbvmXPXQxx4cQaRglI3NbaeSvzI/L/VJbzy6q6xpctPXgX7ToteIeIkNzFdjGT/DDLUYc8an6ZKM c8Z9O4eh+TfO175gllt7vQb7SZ4EDSvcJSGtacQziNyx8OGYGfTiG4kJORjyGXQhB+efzS0Xy2Jb GA/XddoFiskBIV3FUMrDoNweI3P45LTaOWTc7R70Zcwjt1eVW/5Qedtb0m91+7/danPIZ4rGccZp +ZLSM1SPTJJ+EN19ts2Z12OEhAfT3uINPKQs82cfl9+advDBD5c81iTTtXtONvHLOrKJAPhQPUVR 6bVbY9a5h6rREnjx7xLfiz/wy2LCPPv/AJO0/wDMbp3/ACagzM03+LfCX6WjL/e/EPorNA7F85eX nTQvzl5eYKRlby45zS7KGnVxFKSduLFwa9q1zoMvr0/o7g66Hpy7p/8A85CappVxJpFlBIk19D6s kvAhikcgQKGp/OVqPl75R2XCQ4ieTZq5DYJx5hsr+y/ID6tfhluo7e15o/2lVruNkU+HFCBTKsUg dVY5WfuZzBGLdEf84+f8oZe/9tGX/kxBke1P7wf1f0ldJ9PxZB+aXma30HyfeszgXl7G9rZx1+Iv IvFmH+op5V+XjmPo8JnkHcN23NPhi8E8ga03lrzbpeqXiPFZSErI7KQGgl5RNIv8wRt9v5c3mqx+ JjMRzcDFLhkCX0zrMkcvl++kjYPG9pKyOpBUqYyQQR1BzncY9Y97szyeAfkv5b0TX9fvbbV7VbuC K0MkaMzrR/URa/AVPQ5ve0MsoRBia3dfpoCRNvoLR9F0zRrBLDTIBbWkZZkiUswBY8juxY9TmhyZ JTNy5uwjEAUEbkEpB5y8r+X/ADBpqR665js7R/X9QSCIKeJWrMdqUOX4M08Z9PMsMkBIbvAfOWne TH1ODSPJMFxf3TPSS4DtKrsdhHEtPi92+7N7p55OHiyUA6/II3UXtP5VeRpPKmgut3Q6pfsst4FN QgUERxVGx41NT4k9s0+t1Piy2+kObgxcA83kf5l/+Tguf+Yix/5MQ5tdJ/i49x+8uJl/vfk9486I 7+TtdRFLO2nXYVQKkkwPQAZpNP8A3kf6w+9zsn0n3Pnr8s38gC8vk84KphaNDZs/q8QwJ5j9zvUg jrm+1ni0PDdfg4N+J6Hqlp+UWs+XtTi0RIrm+0jSruazVTcqYkj5y8hz4g0mmrvXr4Zr4S1EJji5 SkO78cnJkMZia6B5r5e/8l75v/4y6X/ydlzY5f72H+d+hxYfRL4PXPyD/wCUHl/5jpf+IR5qu0/7 34OZpfoeg3t9ZWNu1ze3Edtbp9qaVgiD6WIGYMYmRobt5Nc3hX5neeZPOl/beW/LUUl3apLyLopr PMAQOINCEQE7n59Bm60em8EGc9j9zg5svGeGKXeWNS1v8r/N0lvrVq31K6UR3PCpV0Bqs0LGgfhU /eRscszQjqcdxO4YwJxS3e+6N5g0XW7UXWlXkV3CRU+m1WX2dT8Sn2IzR5MUoGpCnPjIHkwb/B35 vf8AU4Rf8iR/zRmb4+n/AJjT4eT+cxfz3efml5PtbW4uvM31pbp2jVYokBBUVqeSZk6aODKSBCqa spyQHNMfKlh+a/mPQLXWYPNSwRXXqcYniUsPTkaM1ISnVK5XnlgxzMTDkyxjJIXxMk0Tyv8Ambba ta3GpeZ47uwjcNcWwiCl0/lrwGY+TNhMSIwotkYTB3LL72zs42l1OOxin1KKFhFL6a+s3EErGHoW oTmJGR+m9m4jq88/5WX+Y3/UjXP3y/8AVPM/8ph/1QOP40/5qHuPPXna5nhnuPy9eae3PKCWRHZ4 2HdGMRKn5ZIabGBQyfj5oOWX81jdv5w8r6758tZfMXlt7LVWuIYWuY7iQMk8bBY/VhKpWhAB70Hf Mg4JwxHglca7moZIynuN3tXmPX7Hy/o1xq98Ha1tuHqCIBn/AHjrGKAlf2nHfNPixHJIRHMubOQi LLx38xfzF/L3zPoc8cNjO2sqqiyu5YkQpRwSC6uW48a7bjNtpdJlxy5+nq4eXNCQ82M/lj5i8maD eXd55hsnu7kekdOdI1l9Mrz9Q8WZVr9ihp92ZOsxZJgCBrvasE4xNll/5g/mtpXmPyhf6dpem3zR y+kZb2WNVhjCTowJKs/2ivHem+Yml0UseQGRHu+DdlziUSACnf5ACQ+SL8RMEkOoTBGYcgG+rw0J UFaj2rlPaf8Aej3fpLPS/Sfeuj/KTVNb1r9Led9VGolDSGytQyRcAahakKVXxVRX/KxOujCPDiFe afAMjcjbLPM3kHy35g0mLTbq2ECWy8bKWABHgGwom1OO260pmLh1M8crB5822eKMhRY7oXlDzd5a 0zVLG51iK/8ALsdnP9UhdG9dW4GgBJoi+3Jh4AZflz48hBEanbCGOUQRezBv+cef+Uo1H/mBP/J6 PM3tT6B73H0nMvfc0bnuxVj3mjyJ5d8zy28urRSSNbAhBHI8YIO9GCnfL8Opnjvha54xLmw+883e Sfy+8wjQbLQjCziL1byEqz8ZPFpCZGp4Fsy44MmeHEZNRyRxmgHqOa1yXi3nz8tvOGo/mK+tWFmt zp00lrJ6oliQqIkjRwyyMjV/dk7A7ZuNNq8ccPCTvu4WTDIzscntOadzWAedbjyR5cuLf6z5Ri1G S8DuZLeyt5KFSK8yV6nlmdpxkyA1Oq8y0ZOGP8N/Bjn+PfJSW13b2/kq7tFvYJLW4ktbSGGRoZRR 15pxNDmR+WyWCcgNG+bX4kf5p+TFoNW/LzSdH1HSJdN11bfV/RMjXDW6uptmZkMRCoOr71BzKMMs pCVw9Pv6tVwiCKlu9b/Km38sxeU0Pl2a4msZpnkcXZT1klIUMjcFVduI/rmq1pmcnrq/JysAjw7I vzJ+XXlXzHqEV9qts8s8Sen8Ejxqy1qOQQj78hi1U8YqJZTxRkbKZaJ5Y8v6HGY9JsIbMMKO8a/G w8Gc1dvpOV5M05/UbZRgI8giNT0nTNUtTa6laxXdud/TmQOAfEV6H3GRhOUTYNJMQebHNO/KryTp usQ6tY2TQ3Fu3OJBLI0Ybs3Fmbp1HbMietySjwk7NYwRBsBl2Yra8q/5yAsL660XS2tbeSdYrh/U Mal+PJNq8QetM2fZkgJGz0cXVAkCmSflBDND+XekxTRtFIv1jkjgqwrcykVBzH1xvMa8vubNOKgG Y5iNzsVdirsVfP8A580rUz+couFtJjbyXdg6TCNihVUhVmDAUoGUg5vdNOP5er6H9LgZInxfk+gM 0TnuxV2KsQ/Nu1ubr8vNXhtonmmIgYRxqWYhLiN2NB4KpJzL0MgMsSfxs05xcCkn5B21zb+T7xLi J4XOoSMFkUqaehCK0NPDLu0yDkFfzf0lhpQRH4vSs1zkuxVCaxFJLpF9FGpeSS3lVFHUsyEADJ4z Uh70Hk8V/ILT7+18z6ibm2lgH1MrWRGTf1U2+IDfNv2nMGAo9XC0sSCbe65pXOdirsVeD/nV5Y8x P5wTVrOwmurSaGIJLBG0oV4tirhQaePvm77PzQ8PhJouDqYS4rAZVbfnFq31eP6z5R1L6xxHq+nG /DlTfjyStPnmMdBG9pxbRnP80qv/ACuK9/6lHVP+Rbf80YPyA/nxT4/9EvQrC6N3Y290Y2hM8SSm F9mQuobi3uK0OYEhRIbwbV8il2KsA/O7TJb3yS5gtjczwXETrwTm6KSVYigJA33zO7Onw5NzWzRq Y3FS/Iq2uLfyVJHcRPC/12U8ZFKmnCPehw9pEHJt3I0wqKvq35e+b73U7q7tvOt5ZW88rSRWiRuV iVjUICJ12X5YIarGIgGAP49yZYpE/UhP+VY+eP8Aqfr7/kU//ZRkvzmL/Ux+PgjwZ/znf8qx88f9 T9ff8in/AOyjH85i/wBTH4+C+DP+c7/lWPnj/qfr7/kU/wD2UY/nMX+pj8fBfBn/ADn/2Q== + + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj xref +0 60 +0000000004 65535 f +0000000016 00000 n +0000000076 00000 n +0000000126 00000 n +0000000009 00001 f +0000000270 00000 n +0000000290 00000 n +0000000763 00000 n +0000000834 00000 n +0000000010 00001 f +0000000011 00001 f +0000000012 00001 f +0000000013 00001 f +0000000014 00001 f +0000000015 00001 f +0000000016 00001 f +0000000017 00001 f +0000000018 00001 f +0000000019 00001 f +0000000020 00001 f +0000000021 00001 f +0000000022 00001 f +0000000023 00001 f +0000000024 00001 f +0000000025 00001 f +0000000026 00001 f +0000000027 00001 f +0000000028 00001 f +0000000029 00001 f +0000000030 00001 f +0000000031 00001 f +0000000032 00001 f +0000000033 00001 f +0000000000 00001 f +0000001115 00000 n +0000001136 00000 n +0000002101 00000 n +0000013625 00000 n +0000013647 00000 n +0000026897 00000 n +0000026919 00000 n +0000044841 00000 n +0000044863 00000 n +0000065469 00000 n +0000065491 00000 n +0000085021 00000 n +0000085043 00000 n +0000096385 00000 n +0000096407 00000 n +0000108820 00000 n +0000108842 00000 n +0000131490 00000 n +0000131602 00000 n +0000131624 00000 n +0000146382 00000 n +0000146429 00000 n +0000146449 00000 n +0000146965 00000 n +0000146985 00000 n +0000147332 00000 n +trailer +<<9068343085304a48bb626a918b0d3c0c>]>> +startxref +175003 +%%EOF diff --git a/ci/CI_AI/CI_05.ai b/ci/CI_AI/CI_05.ai new file mode 100644 index 0000000..c451ae3 --- /dev/null +++ b/ci/CI_AI/CI_05.ai @@ -0,0 +1,577 @@ +%PDF-1.4 % +1 0 obj << /Type /Catalog /Pages 2 0 R /Metadata 31 0 R >> endobj 2 0 obj << /Type /Pages /Kids [ 5 0 R ] /Count 1 >> endobj 3 0 obj << /ModDate (D:20061213185935+09'00') /CreationDate (D:20061213185934+09'00') /Producer (Adobe PDF library 5.00) /Creator (Adobe Illustrator 10) >> endobj 5 0 obj << /Type /Page /MediaBox [ 0 0 841.88965 595.27539 ] /Parent 2 0 R /PieceInfo << /Illustrator 7 0 R >> /LastModified (D:20061213185934+09'00') /ArtBox [ 100.17334 147.84277 752.13477 456.10693 ] /Group 26 0 R /Thumb 27 0 R /Contents 29 0 R /Resources << /ColorSpace << /CS0 24 0 R /CS1 25 0 R >> >> >> endobj 7 0 obj << /Private 8 0 R /LastModified (D:20061213185934+09'00') >> endobj 8 0 obj << /CreatorVersion 10 /ContainerVersion 9 /RoundtripVersion 9 /Options 9 0 R /AIMetaData 10 0 R /AIPrivateData1 11 0 R /AIPrivateData2 12 0 R /AIPrivateData3 14 0 R /AIPrivateData4 16 0 R /AIPrivateData5 18 0 R /AIPrivateData6 20 0 R /AIPrivateData7 22 0 R /NumBlock 7 >> endobj 9 0 obj << /OptionSet 1 >> endobj 10 0 obj << /Length 1417 >> stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 9.0 %%AI8_CreatorVersion: 10.0 %%For: (lee) (lee) %%Title: (CI_05) %%CreationDate: 2006.12.13 6:59 PM %%BoundingBox: 100 147 753 457 %%HiResBoundingBox: 100.1733 147.8428 752.1348 456.1069 %%DocumentProcessColors: Cyan Magenta %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset AGM_Gradient 1.0 0 %%+ procset Adobe_ColorImage_AI6 1.3 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_pattern_AI5 1.0 0 %%+ procset Adobe_cshow 2.0 8 %%+ procset Adobe_shading_AI8 1.0 0 %AI5_FileFormat 5.0 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%CMYKProcessColor: 1 1 1 1 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 421.5 296.7754 421.5 296.7754 %AI3_TileBox: 23 19 819 577 %AI3_DocumentPreview: None %AI5_ArtSize: 841.8898 595.2756 %AI5_RulerUnits: 6 %AI9_ColorModel: 2 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -58 632.2754 1.5 1586 1118 26 0 1 7 42 0 0 1 1 1 0 %AI5_OpenViewLayers: 7 %%PageOrigin:23 19 %%AI3_PaperRect:-23 578 819 -17 %%AI3_Margin:23 -18 -22 17 %AI7_GridSettings: 100 100 100 100 1 0 0.8196 0.8549 0.8667 0.9098 0.9275 0.9333 %AI9_Flatten: 1 %%EndComments endstream endobj 11 0 obj << /Length 6200 >> stream +%%BoundingBox: 100 147 753 457 %%HiResBoundingBox: 100.1733 147.8428 752.1348 456.1069 %AI7_Thumbnail: 128 64 8 %%BeginData: 5854 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FDFCFFFD8AFFA8A9A8FFFFFFA8FFFFA9A8A9FFFF7EA8FD04FFA8FF %A8A9A8A9A8A9A8FFA8A9A8A9A8FFA8A9A8FD04FFA9A8FD53FFA92F7EFFFF %7E54A8FF5A5454FFA8542F5AFFFF7E7EA97E54542F5A5484AF542F5A5A7E %A8AF2F5453FFFF7E2FFD1BFFA8AFFD04FFA8FFFFAFA8FFFFFFA8FD04FFA9 %FFFFA8A9A8AFA8A9FFFFA9A9A8AFFFFFA8AFFD04FFAFA9FD0DFF7E5453FF %5954A8FFFF5A2F5AFFA92F2F2F7EFF7E53FFFFFF2F547EFFFFA92F2FA8FD %04FFA82F2F5AA82FA8FD1AFFA82F2FA9FFA92F7EFFA92F54FFFF53542FA9 %FFA92FA953542F2F2F542FFF5A542F2F2F5AAF542F54A8FFA8545AFD0DFF %842F7E7E547EFFFFFF53545AFFA8547E542FAF7E5AFFFFFF542F84FFFFA8 %542FA9A8AFFFFFFF7E2F542FA9FD1BFFAF2F54A8FF2F5AFFFFA8542FFFFF %542F5454FFA854A8FFFF842F5AFFFFFF542F7EFD04FFA9542F5AA95A53FD %0EFF7E2F2F302FA8FFFFFF5A295AFFA929FF532F2F7E53FFFFFF2F2F7EFF %FFA929302F2F29FFFFFFA8542F2FA8FD1BFFA8302FA82F5AA9FFFFA92F2F %FFFF2F7E29305AA929A9FFFF7E3053FFFFFF2F2F7EFD05FF7E2F29542FFD %0FFF842F7E54542FFFFFFF54545AFFA854FFFF2F542F7EFFFFFF542FA9FF %FFA8542FFD07FF54542F5AFD1BFFAF2F5453547EFFFFFFA8542FFFFF54A8 %842F547E54A8FFFFA92F7EFFFFFF542F542F547EFFFFFF7E542F84FD0FFF %7E2F53AF2F2F53FFFF5A2F5AFFA92FFFFFA82F5453FFFFFF2F2F7EFFFFA9 %2F54FD06FF53547E2F2F7EFD1AFFA8542F7E2F547EFFFFA92F2FFFFF2FA9 %FF5A2F2F2FA9FFFF7E5453FFFFFF2F2F7EFD06FFA82F542FA9FD0EFF842F %5AFFA92F545AFF5A5453FFA854FFFFFF7E2F7EFFFFFF542F84FFFFA9542F %7E7E847EFF7E54A8FF7E542F84FD19FFA92F54A85A2F54A9FFA8542FFFFF %54A8FFA9542F54A8FFFF842F7EFFFFFF542F84FD06FF2F7E2F542FFD0EFF %7E5A5AFFFFA8535AA87E537EFFA953FFFFFFA97EA8FFFFFF535A7EFFFFFF %7E5A535A537EA85A7EFFFFFF7E5A53FD19FFA82F29A9A853295AA9A92930 %FFFF29A9FFFF7E302FA9FFFF7E2F53FFFFFF2F3053A9A8A9A9FF2F7EFFA9 %293053FD54FF547EA9FFA87E5AA9A87E5AFFFF7EA9FFFFFF7E7EFFFFFFA9 %5484FD04FF5A7E547E5AFF7E7EFFFFFFA95A7EA8FD2AFF7E7EA8A9A87E7E %A97EFFFFFF7EFD73FF7E538453AF2F7E2F5AA8FFA854FD31FFA9FD08FFA8 %A9FD09FF7EFFA9FD2BFF2F54A85AA8307E5A2FA9A85A597EA8FD2DFF7E7E %2F7E537E535A59A87E7E2FA82FA9595A5A5A7E5A535A53FD2BFFAF5AFF7E %FFAF845A7EA9FD32FFA97E84547E845A53A97EA95AA97E5AA8A95A7E5AA9 %7E5A5A7EFD2CFF547E7EA8FFFFFF53A9535A535A7EFD72FFA9AFA8FDFCFF %FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF %FD15FFA8A9FD7DFFA8542FFD7EFF5A7EFD3AFF7E84A9FFFFA97EFFA9847E %FFFFA97EA9FFFFA984A9A97E847E847E84FFFF7E847E84A9FF7E84A8FFFF %FFA884FD17FFA984A8FD13FF7E7E535A53FD21FFA82F29A9FFA829A8FFA9 %2930FFFF2F302FA8FFA92FA9595A2F2F2F5A53FF2F302F5A537EFF5A2930 %84FF7E307EFD0EFFA9FD08FFA92F7EFD06FF5AAFFD0AFFA854537E547EA9 %FD20FFA92F54A8A92FA9FFFFA8542FFFFF542F542FFFA854A8FFFF842F7E %FFFFFF542F84FD05FF5A2F54A85A7EFD0EFF7E542FA8FFFFAFA8FFFFA82F %53FFA85A7EFF842F53FFFFA97E8453542F5A84FF2F84FD06FFA8FFA8FD1B %FFA82F2FA92F7EFFFFFFA92F54FFFF2FA82F2F53A92FA9FFFF7E2F53FFFF %FF2F545AA9A8FFFFFFA8542F2F53FD0FFFA92F547EFFFF5A2FFFFFAF2F5A %FFA92F5AFFA92F84A9542F542F542F542F7EA8542F7E5A7EFFFF7E547E54 %53FD1AFFAF2F542F5454FFFFFFA8542FFFFF54A8A92F545354A8FFFF842F %5AFFFFFF542F5A5A5A7EFFFFFF7E542F7EFD10FF2F297EFF7E2930A8FF7E %302FFF7E302F7E7E307EA929302F2F2930535AA8A92F54535A7EFFFFA92F %2F29A8FD1AFFA8302F7E29305AFFFFA92F2FFFFF2FA9FF7E2F2F29A9FFFF %7E3053FFFFFF2F2F7EFD06FF7E2F302F84FD0FFF2F547EFF535453FFFF7E %2F54FFA92F542F5A2FA9FFA97E7E54542FA9FFFFA8545AFD06FF7E2F5484 %FD1AFFAF2F54A87E2F5484FFA8542FFFFF54A8FFFF5A2F54A8FFFFA92F7E %FFFFFF542FA9FD05FFA92FA95A542FAFFD0DFFA82F2F7EA82F2F7EFFFF5A %5453FF7E547E2F2F54A8FD04FF7E2F54A8FFFFFF2F2F2F5A2F2FA8842F2F %2F547EFD19FFA8542FA9FF5A2F54A8A92F2FFFFF2FA9FFFFA8542FAFFFFF %7E5453FFFFFF532F2F5A535AA8A92F84FFFF2F2F2FFD0EFF2F542F542F54 %53FFFF842F7EFF842FFF54542FFD05FF7E542FAFFFFFFF845A5A537E7EFF %53547EA82F54FD1AFF7E84A9FFFFA97EA9A9847EFFFF84A9FFFFFFA8A9FF %FFFFA97EA9FD04FF7E847E847EFF7EA9FD04FF7E84A8FD0DFF302F2F2930 %2F2F2FFFA8547EFF7E54FFA92F54FD05FFA82F2FA8FD0AFFA87EFFFFA97E %FD54FF2F542F542F542F542FA9FD0EFFAF542FAFFD2CFF7E84FD0EFFAFFF %7EA9FD11FF7EFFFFFF7EFD0EFF542F2F7E842F2F2F547EFD0FFF537EA8FD %05FFA8A9FFFFA8A8FD1FFFA85984535AA8A953FF7EFF7EFF7EFF5AFFFF5A %5A7E537EAFFF59A9FFA9A8A9A8A8A87EA8FF7EA853FF5A8453FD0EFF2F54 %2FA9FFFF7E5A5AFD15FF845A7E847EFD045AFFFF7EFD1CFF2FA97E7E5A84 %2F8454A97E547E5A7E7EFFFF7EAF7E7E53847E7E2FFFA87E2F7E547E5A7E %A9547E7E845A7E7EFD0EFF5A2930A8FD1AFFA95384597E537E2F54FFA953 %7EFD1BFFA9537E7EA97E2FA8547E5359547EFF2FA9FFFD047EA97E5A7EA9 %FFFF537E2F7E537E537E2FFF53A953A953FD0EFF5A7E7EFD1DFF847EA8FF %A87E2FAF5A7E2F54A9FD19FF54A97EA9A8847E545AFF53FF54FF5A7EFFFF %A85A7E84A8A9FF7E7EFFFF7EA87EA8A92F5AAF54FF7EFFA9547EFD2EFF7E %5354A8A97E548484A8FD76FFA97E7EFFFFFF7EFDFCFFFDFCFFFDD9FFFF %%EndData endstream endobj 12 0 obj << /Filter [ /FlateDecode ] /Length 13 0 R >> stream +HWmo6hcd( R6f7]QMԬQ]3CIdVŗ<~\.ʂyw]Z\Oޜ~QBv~jwvsQ^%vݶg/4}^-4RKzyvQfł\h_\_A}ܯ6a,ղP뿬nς[))7Ω Ka\{n׻]z_妸Z>ׇoa_0l24v-nK](p|nyyu9M3_aa@7yۈnCt}N/y֝xDDaݦպb.^P̾?v=`@ ]Wa 8۟oڇm gZ&O}\v-y OC^x_g#6i) vlnhso]uKޔhVthoEsq O_Xoj5P_! 9_VŇUç"9 +BXmuq:Z3Wv ~:{_f| @ +?y"d&EۯaY>}KPGWA^L2j2d*bt>i5!4?=Тo!w r><28fG^O߾mq;JK)5N1T%\$TI$&5MS7 M51nT#SuPWmmj]Z֢uSlbc >h:(3)*J"H.ҋ#H2ҜFl G90u 1MiR iAY1΋ifPn!91MitI4K,$4U2MqPfI3MiLS'b8Spw6mCQ=)B4ff5[<0jf~j njvfffzfjjtsjbfG ƳξcV~##]n3iH*2ߥ+0@Pc]br%a\:hXҬ"IƞD\bt䣧71BADߟE44I"X>%vD$>#xN n?[PȂp )-DX FOS%(J5 X@ A0}&$P#IQح71A$p Au {DHM@^E@"ƈ6NpbAȽ)2dS96Х)e;ҙ ֊Py=TBHEbLsP}%N />շX܆ZZt4g@'9'ətXL:$pPaHҞGadlQ#N;J"-E(OjO5VXxR݉]ˎ^6ˏU jͱ'$Ì[- ƕoU'YŸݸԵ8׏k[U"3Ț+%e_ZOnh k׭vvt%|GkZbL~|c|E/S~SWÝ*/yxʂSLS*3/51 +ì9Φp%߶[ G峕vSpdA tz8ͬ5:P1)Fb>Sy ~)חo#V 5T +M + }w}ĸ%x^-t`n%"[zIV(p%nB:΅|u)Xf"t#葓Nx=j A 8S" 4h3@~RkzA(6OB'rfI@(7TI0 p + CAJY +RCfM {sP=*KN5wLC BC:_ ((H:K젞TPSMUyYpXC BC;w1Vȿn: q@T0 c00 p0 phXCBp9 n*8&XEYXeyXWST,M ,,:x!4#-3=<;T`j`V_91#ǂw_,1qpL<\wc =-Ʊ +;qi$sN6G"Z3gО?3`lVtrgpA_,KR;h,#8[@'nk26܀84Vj*J#QL(EP+G+G+G+G+qsJۉ_q%mF]xAX*32qibZ3Lnf3řΌwzW#:Hܙ<%NF΃ƗA_phfu h$Ou׺+b૰QGugVV +V5+e l`-LW_BX5h `hم"W)Xc ²4wER  nA}!8T"`CsBq!4 $&` IC( B4vеtrb i: ޶dzptSCu BQCc;hmW*2(:資Tw쀶 )9kUP +@[(~]P9数N#3L #~1Uю P'`C3"I9b"A#q 7|.1(ɤFM"9(Ǔ'gS8TYa +܂~ +!H^ + K+X{,TWЭ`ɞGhVV056f)p⍞G mO|t8H!;00,3"v-%H Z)C\D\YFIIKK*ҖBҎNJ&/ՉקZ*(QIҧ +TjƗӡtnp4;0Ñv}3XX]č&7{f131fFff 5jv5o} +M6b.a)`Y l ݡDC4F=a'[I [6} kh^wQ]sUcRcjSϪELW[ZSbm1$‚t" Ȇ(E%C/E jQ#gB0 +K!4<1Ij9儈^En " +!t) "(QIhE"D\$I)bEQ6qg9\%W6hdϚ)DKuh$)Ӵ&aj#܊J)~Ⅸz[ 4b mp϶4&arrds%FqWʳ|W<:3<9BO'>khO5gAJ ɕ┶ÇT=Nv~̧+ +ݲܹR&:=DfݎOջx<_^?}?\}~[0Wl/\ i*vy}HxK clv6( lf 7:* /ؔĖ?wxjɮsN}7iS[oSot@h20>&Ch20>&Mw%w#w!wƛ؛ƛ SȽ0AZ})Bd`} {hCn.x=r6'nG$g p3(fP #384Z5('3H&a:HA:ltFagB^;e.8ooc+xΗ)tT<qpN'VAɜlYZp/Q싟: i?l}^q! ^N$Sh>cF=pB>D^ l-[#%z*+KF#:l!*$0TP%(V̴5JVheQKPP?h +9,EnִI$$$$$m "yW)V.NSr񅵚D*?JuK]$GʾcJfZz1f3M4vر%;^-d&'CLd&s-Ʉd6'ÎLdΛJ?j"6rjQ+%5SS;-SK 5R[95樵Pԡ uPj-ښmKE%k*Pn􂊯l+E'h:b锂蜦jV c^+蹊kQ' ѣ^-ѵnmgOsFjrP/Y@{ /8DNr\CjY2ed⋇֮Cߧ{,' ?{`['{~AV/3ꮻqp%ml% LVho[vކ: i?l{ya c c c c 60Opʅ?H:[ G})|"N ~!3H&a:HA:ltFagBRkzAW~û*@ n YFy4L4b M0Pkla%;e +X\AgZ3[Y讀*tDJgpg O5j nVp>(YC j aػ[`t >-_ +иPHF !( + iTH.A_Rt&GoS?5UV +MhA2"ZU!bM +QӈA2"zE] + +XSmPE:T2C-owE 9g|>/*wQD:]-aU>iڭMwrbt_f`KY[ñQ,g22F\\ ]WP.#RYSG9˗?үчO___KQѫ!J0;B|^THLdߑhb* dr4l05G!<#SBύyԑ׹}y:@`{'y{ P(Ϩ:Hjў`3 ;USKJz. +[e0P +C1\A_ +T.(@ėɅޘQ;+vjGMʅw8rͭO>e{_/RZ`hv ۨ +@ɱf thݰFO| GZ"\ L1$dHɐaRsQrϐs:iHԐ!cCΆJ8y2qhU]uU]uU]uUGߢSgq(U˻5KDTqJD_ge"./o&.<-_xVYg]~/Z?ҏo^/N~>u8|}>^t^%R$ dty$|tro-9\X 18C#tځxNxcS +ul Ѵ0|=t+]jHb3$ge\vǍ(|o"@l,dϩ"%˖nݙܬv[4%N}|Ęm8XPhe$BAX_9V +M褑nODD8Pd9b!~_zw^DPeצlSr teAO8}qfv$6vc?:Q0#یhx~Sk'?ÞҙVwiuL<ɚ3>ȳEfp錮kOA.S=5:ٻUw>?Ͽ4DZܨ]ި(i:(-fН>3azE  Zw4yOܼm:eK -y$1oGJHS*zJcW  bXT7mG)WrWW27ҷY$:v1֝d=UP"~ xNrIaD`^ ŔEtE\E8E EED$Pbq G14f̐Bhb?$Ee 8whj{QH>9l2I'$6 `U).h*J`#*bl0AdE*XX$A$ C`K$f0:3NC ڴE,9-F[k !E;څВY`i +G1 }С! =/-q)a ;#IGX{Thy45Z1'+AWJ8$T`)7eԼ뛀>wʕ8Fq'FԇVFR}}S&Io~.>nr=Hz[ѽG]Ŷ9.ǻ(7nx1WCv7+Td?7moZ^eF {dOkf]e5EP6ةEV`ynR$<ymcdܸкG>7q'^PT0:lVuh{S{G;;jrhs}˽s[{^^,osծ5P v.Bs@)?Xd===<({4]HmـX HS\l| +I-[@GXw +TCtOR% eH6h39$[@E^F +V,;,[ /ɛ5^BcX\"o\b%AܱSc$C #[ + +sg1L1BdƃrVF?79W#cs1>1:F:N~ d+?DYjNt\9Zho~`TL ]:n6â\LHВ + E +F. + k5ynmAc2MuVHŢOwFS&mm__@Kj*;Mq?6y2bxz۳e#Dn8%}Gt䊿I"g tDJst.3ylTS7r_4g"%5&VE}j&qr$CH["IIHs0RqdF/Q̠f H[4k =y$ mZ%@@M5֙v "%Y +7G ЎV (  +G'Ol.cr9(sw"nu.hƒ/{JR³;i-&YG ?B2*wS uȭ@E^ 뫷*73rdUՕ+;JkRnJ:.|<|t>#Dܠ +Pu4v!P F|bf1~BBnnLՕ+xمHV+[30]YD%SS=@265)Mn{G̽u9pbj+UBLzBn+]u0gYt'Zǥ] jEk5KgUD;Pu垘q k=L&ºrr[(b!6N(n_<"eF'3u9֩1Jijv Be зJiE2\qցHv8εAQN O D\~T;64EspN-dќx.g<ˀ.Mu.Zf\ *.T_';e&WAj?rS~#{"1A,%ny +%{ dW,y+!I7Kӵ{J>,OIT&]D|ԫɑCtcڵ@9&Zc&|ҝ5VNXZKt<ς~g}8^<>^\WçI5ׇ6UÝ{1~6~>V=x?]XnƪgJ  +T1\$te&Vtsp;E] (CSNY*v~ yз+ϋ]]AM.i|(3TI<<.wФJUJ2?X':$Uk55֨7Yµ< 9m߁f/pY34L> stream +HWT}~Yiv\+]E Ej` 4ܷ;lXuE vթS჏w֟o?{q=rw.oOvg/ݽ=XֳY~]<pj?@>r$5ʛ>'M)2N {3'T#"?ה!A%80|*vdž/+v}s}9pwص_x)c'̵9<64ĿnTr'.b K~ʉ`afo>8RÎcs+L͙k><ܰ9qg?^࿭~X}w!azn[Ewg?^o^;Y[cOCu$d-y!s? ~rw^7SqEO؝ܬSP"{ڎu66~+{[9n.Y#Mrɠ6W6Vsdwv=7xޞ׋%%&*31S)>Cj{`9d}i˂/ nTE[&ΜBbbͣTz:T |t2֞mbeh<ڡR (K3DmxBav,׾XJS57 W|6!Kc*0 +ͷM[Ͼe=ĕll F +67CLxp~r<`paYV&;/Xp 2vR|^6+5z,QmfR'Gz>.@KΝcofVoV7'%h!MfЛ5Dߡݑss`PX0|?|\,N>P -vF?LPJӒ/ZZnvENyy~ॺ"2?259&f{KXD5S Nwzx~rowf_]]9{| W[+nW׫-ӧ6_] +GkUknS)3 SL16X۶_#3ȓZ!p_60&Ww^MK|0J\GSȶc_A-21LvBUm:7"CC.l#b?aR"x-QgR!D}tsQtZ"9x +#!%?KJ HLNR(R%b>v.\/&w{ʨDH3Rlǡ8бڡk4`3SED7< JlR,єrciҍgip!|n*|2)eQRV=m  BX/݄>-Z&dn`$,N2o ԱS0e4?JN+ +z4 e7U +!gj%`̵QՇ%1j"|,:8FsDc^PR +&A hX%쎍|?[B8'<,۪@krrVeyGwzݹ?\ǚbeoq<޼)iCmZ)oY3σ uIlj2zxݒqsOyݰ@^jĊ|B;icc1=D‡;`^p% +IaQkikuy XⵌCTc뜔4}nE<֕BdH(bp x +u$p1Wq&Ĉ<9[yVlw+z(v51xPd}^_Yk7-4yh\SUzXh\𮽶m kv_6kˮ9D$.oAޡ|T_qIvMWCZkgPxAV΃P GUX?`le)σ=A6Z4s͆j;?YO5_S +I`v@)E:룷IaQyn91I0z#ȕiV2;0Oa+6_*-XX(ubwIIB`[+1? W@^TlESKR+ѺB+ +nH#p#^GIzW(6ɥ 4Z/JU{`V歂G L0VWVg6ՂxAP+;c:z?f2L Ko( +5"i`HOuI%Ξ zFYЛu õ9)Bz! Sn8 t`Q9D|vYF[zHډ:~T;>7>T݋N1:O銥u[]Imߠ}WM]Ķr])4l"{]U%O4r*\W2A׏Ty̤q2D tДGWY^_!p&aM3lFc_w&w8px:)JA=g^ D %L|˥!~q꒲'Un+mus8z ^!/IauA\=^w%g8e|8 &)er(=H :DK̻;["cJȘjߜCAȭD2 Kϫxs_9kB^[xjS·.vz e~P/; A{9y?x(MĿ a>BMhDWk9o ]'64kgg;g)b:,K-(:9aum$Q%PO~]d +P$W +.B@Hr$Rb8j{,?heh {QZ; ' fqV":&؃I݋WJߎ =:>uYtzlLvW496Ȁ8M~0u\ecA륜@N.C*c ywJo~욌isx_P[>|J.ѬrO7ûufĄfu,[hR=$9kɷ>0&;Lr[zOAOU?V7(ീ{??h>%&fޠ +)2$/x:܀?t ۵}j +`zIӆ8'ϵ`)J Aڪմp1T"߿(^sA\>\ t Z*![  tJS]暶|)ԃCH`gK4?qG*ԃW1S}Aʅ:U3}'_ 5oӘC85˔<Q H;A8(lc cA{uYOX=Qȫi1#L`w5( (D Tm`!֬5?a8}ښM6EHVs/0iIh R$mϜ"j1_d5+ʈeb,䁗%V(Hzl^3~{r +UŻV|3_ZYeiYW#}!1m;s;Z!uPE + +S@pjyX^֫-.MU*>z^596Co@lK~=Y*9@` cS|;^ MEId86EPD,w-79sM12;+\7=({~=d#lD~KY n@vB9X2^~HUDOgj9Toidʫ?^Ig7dk^IjR[r #d{(ftҨW9DgrFu2%A X(8|on3r+Bġ`\G!kI8 b# ;?p.#ljJbxܪ+ d ۨ8(FDžڼ, tK/\\SW+v1ksmKVj+Ԉ8` ,x5*kŬ.|kZiu.vCduQE_ZBN-BRq]{ MWl ۋe),^q{'(Q:;(Dm@\5_S(`c3$ VC0hP |Gt8@xS:RNN$^Cqx s Go foDd];*@ K[ eR<l$lR,Z2xBa7U`ۇ+oui]^@hu_xC+G&]*B8+Q# +=IpJԽEpd]VYؙج"4[ʠ6Z(j-j ֖KjZ,Ԛ'1`}$8Xj e}io.#lÓHւJJ{LvX7fʶjmH]չ0#WFуv\LrZ4ba7Zuv g]Eqp x MQ]T2j=.;C ޭ +dc9V|ou;x ;@sP|4vV,]m'(~'\eincRJ̋;ΨJ?FjPNT}jLJ;n Us/?-nι4nfE[[T1 2pWY+k j>IROQ2:E-߽nHHjP6ckTΌrMR_Lsq'C\aCʁ/+cN[Z7;LQOM?ra9o#E9A^R\\:AZLhC7L}fI]O[]6򤋿IX*Bkke[K ]O}7N*k]]̫khw~"-U)P]S|@WD" +*nGPCQ}t3,G°η&Ý8aOӓd$̨"]De@@K2*nnW EDNPgz!P0U5*-e92S;@L?U3.I݂sջbY!̴Քx,s8sؿ4eOYWQVKcH5`i 26[M'-4dR3S({CtRۮQۛ?_?}+o~O?>?o?X)RÛᑤTDV s*kR`7{ߓ.O2CfCĹv/I30K~xԽf%s}")J X[E}W΀e*+ +*]˞O&oċk^Bğy拤cq?_x>9=+`;g“J B6vl3k=Dm&%^0XB? ^LaxUvW@Y{USv T q?E(wٹ u g+(%0* 0'Ҍql\:%hw_0}wUJ8#%0އ  `Ě~ [,48zFx/%]qݩN^B)[kS4E#dȲ˶ wO׀Qʜ^$-awh9~oLs(棂EuRNZbyrl\Ka/sb[{REAYt642j˫8S!.qcT̼CX Z%p,▬ankM[U9_Y%[$|o"tH+;V/,~.#QE)cپf/eEřhpj,Is;#\G#UuVK=ECP(MX&à-k57l)VSy]㹯}\xiGjk6K~1[wyHqPHc(%CplL}434؜3֖f͚0K1ACpj r0zit6gsNtd̑($MR\B_ZhqK,#Voұl:m][؈[E)T򗚇T:';g/PxGkbh0F4buGk΍վjJ:۴!fNXY@1F;8'/)Xtw*V#\>jmWFF/4a#(NQ_hM#kʡ x]S"fsŕn"8 0lmhMy`> >dj4xĎNΒ n8|d˥՟V]*|թFv؞D#/x) XLҪ`ɄXXzWc]50P"Đ?)n鋗_z><$㫇_~{<}ο܍~;/oowhG/w3Ow:?54cQy,Wٌ/\[o $xsp+>+jͧ#:NEXBi+Tk,߿m f ltVRt[Ӹ_luˬ#):izmT-n2ͧl ;}%+hc)[9Y"{sb"}LbʂM(V$ua&~F$1 :p9c0u8ŽN;vpA>ͦ(%ѭBPi40[ ϙEylRo::Kļq+9\?R?TQZsnkߥ{UJ`hTJk*. SCTE ujUԸVs0UgO]TS Ű5l>(Wj_`ܟJ] lTW䊽-"I22${C&KJke9ecܞWv-k%XXv&`=!U.hw#*. S«lukvLUWՐ/Rv͹ SĮOBXN. j]\ڣA,/UG +ǘuBzK~ʠܴF.wtb$lp!6)mЪgSZ 4$]8dqc/[>Z\h_{Le>s Xa.J M$ |9"U4Nv>w)ƀ@3"ד<&NZr=U|3앺uŦy^76I1uKh4dԃ慑urVY +nss*&/n[R.~աCpt$\.F?Ak?cr +QI1TrxtI+¶VHЊi)gˍc=B]ٵo{/s or4 %XB j_ i݂jXȅFL wȽ!)UQgnBܹjcp>m{+sbuXܻ +&cPSC׭ 5G +b5],>1TIQjG4ٌ̀jx˲R +U &$XaV'A^N6l;s8q#sTOZ˕ԋҊ$t (g rt +n.fPL!,8]ŕ@ }&Mޝlb8,)-Z9#j8)ɵcO9~H s[>a 0DpԢ[e|>L$:6^=whHZN%IpFe/ u@6<"5 O|A[,FX!)xA٪1NT:U+k(f6oZa;#s ]2_WXLd} 4TKzآq +K4:^zD(i=װ@BaDn iu3>]$FB6Ev:73rZG=:G}*\i>p)afҞĪ9w &OzE=YTv=(|*JOR"MMOףË;~99q(k i[շ4?+2&v$IS?ɟ?{d^-z fvf Cx(Doy'G%jdQE0Tf`tx_-Xkmzc=ūe"jle\kQn +B!ytcʃe)`*.`CCo;k q1MNm-#nƲ*!\F4*%ip8jv]dдW˜};`ɱCx*h;TzzAGK76BL _v0 +6|JנX/l_Z>pV⧠峣V0P +o ڇga@\½ ,N*nk K{!:"Jlh9]f[Ν*ϝ=io郡$ E*YF pq_9IQA,{M=:-XPyA!'ndf,Ks_fZ)35,↖dܒk+A64`R(aI>(h^q4 q ~J :Y tPP:mO!sݹVEr .0Cnvf%i~4< [p(쀆m~͸[k]xC d8$([4]MŞJzA!Hܒ"Չy!F4ّd~oEc<Ā|z463i}cy|=vݲںN21S2:sj,ɸoY׹*w >> +2Z^6.VgLkEMXrsի5':"gy#5ɳ.H{avc5#ȸF 8PZ<{WPu?zzPƛ@%z%DTɳ{x +zc,sn +c`+4iۙA!p.Qg~kg ă,{'ӡ= {p[/@]ҭּ">c$<'iimKveꜩv"wDZbB!&LYn\k5a@,bn[6*c+*lNTlY +v礒t[,P%MĮ6^4(W6g!ѓ/ء/7}8_!q[JT@Xr+lhMb%A?jD#Bn10vʼn`,QZм jiK <* +A!ǫXwqm(Yڽ1n DA|+=F(hr <3 92H=Q4 $Kz)^*) Qڷ9[geQ_ +  |Wվvk?Т|I_jK(+lkXe+lEiU'whpH y +|\emH"2QijlWG0]d0& +LܡzZ#X +X-K 5{5+& <Ĵ#bj&m(oqti,;?Bח{K#mQUt3[J22{lefwr별?n*>uc(qI;7"ESPqe eZtnhywΩ7U05 y- *G{%vs)k m$['o$KRQ0\e{t/k\6Ǣ熁p7sp-yn`@V 7ufWi:f SKϗkQ7SDS^&o=ZI5qL>5=!CJAT Rt&@ޗ/O킒oovpx2"1HtƊ¯kԵ}6q#ZVC]o(99Z˱=nJ p+4/R}v8Ys%gW:0xv$vHw7FoN?d8΁tXTS1-if!"0n8Cau?2z Xtv0TK I}ܿGL7ܺh@DuPz֜L}-R,97`;SRZc|&S81pz#nDTVajtghݺ%P5=Coӻȹ|ps*KfkEc+.^+k]C|Fs$ ֭YΤ"Pf~> +H\W +ɟBY|&>cWÁ$k]{ۑFw2ۻ{/ݷM:8$t37sXòcggO_,w?;_;~7㇯_|_Ç7e|__gWڋGj_r װ~7 +kCs;o.,ep(WGӧ7O?S=ɩ(DQsjK̋b;2ؼ+L1,,z{|[AS̘-!=SپԘcm=i҇_|({8@mqu{V?\ˍ9cb]tVX!`bCN2q:3nXEC{x(_-(B4QV@f4\a3So|.y^,[ jom/}\OCkIRilfNQExmR,k8(7+ rf4ap &LslDiHHg lFJV7b7.iCL~ ChpN{yPye1$zr2v<%X>g3IaRx2ThXY4vI_6DC9Jzt52)..1ŮҽsfR/<0)Dd2fX$1UmՄW E#X]D)(uzBs}خ$>"#)hX+6ƻ1j~eFd`a0sps0ē.AU5]e0c!)(gL׈r'p}.}@m#g1-xa;^Vc(V*WN$GZ1  +4l6L='NVHV3`ڡ:HW̎LZ0u6S> @bQTN '(ɠckKbΪ΂ܓT(Z29df.z-ي* S4V*oSLLXa8FM=f݊>sn-ۺhuAJ1ΚVԊ_ +*Mv 쌤v pht3C>4y-z#YH?1aȱS+yk.I,fkƭ3Z6mf zY rKQs)ٖH}MNvYx4O[3ɬ.R Pfe0K4DkN@|$Kys/M3F͡QFl`d'I+aJC hkhY2v/`-_F*v$sJLx0xbMh37r`+vD md"\*FȠcrCdS9B5r^:> 2зzl2]f4r+gU[tJcLcn3o1,#* +A#0}g6ͅ[lb$.OΧGS9_nkFu +غŐ7F- mk4SBn]FNex|Cu) 7B8`pU{Qt,ߪ}_(aҧh209F\g7s5v0R)7g'$kM`j#>`<_(Ȼ.uجC(h"R73s5/4mk{C(y(7?xeU0V> !`ཅwT]; VQR_ǧY GŖ^} 蟫__+'~~C>A>&B~_cJ&=:W<+ʟE*gB_ < 3LgtÇ;l񴀐f 1'vþх;c{Q86D&1qIR.#B݅\ֵHK9ԱZ6`Fu37~"`;LH!>#ԃ̍tċYz{&N`7EGWBc ~hdscG m:!495Ve9WEêU:il Cmv?wX Xy$'Ǐj*~!xYn +u^od/c(6[ ܣTȦ + D9@5cu=͛GWsHQ)~Bq M2<'L +7/=Xa,ge\췇Z,ՖxR5jckԲt)v0vbQ嵠Hv$BSSL3~rC.lw]upx {(UGϜt5іJAغ{>wDwтK}I[̥N@kI ZX°~u57ȂhLh;`F ڢ*7m~Qh,眉-OKʼn?k*6g>gėRg%~iJ!y\[gElKUkMQe6.W|ieS&Ekdkc;ŶGW{$9;PuYȎ5ņl{3uS%(@KջOgN+35Ks.V[3/DKq>f/(Ê#uS~i;!:Tm˧:Q Kh<SeSgTia5\i=s r[Q^;c=ɿ)PV߀x,91-nEG[vnY4G6#i9_⭿GV7r$i!^cpً}TM/Tm[-hvv7Ws2хt#S|`~ endstream endobj 15 0 obj 18546 endobj 16 0 obj << /Filter [ /FlateDecode ] /Length 17 0 R >> stream +HlKrW{ +@`wgOo +(]gBmdCCms폄2GO؛Zˌl_0S cs%gjpضf|p7|Xzdݺs۱t?ǘ^p\bxЛ$sllom,ycV0_J&BC-f\̛~:_&-{Ҟ7n_^ѧ\_S=zM{my|MiX'<^/B x'Uۢǚd&MH/]^A4hmsC3"IE} U>cߛay]fk r 6Zt ni]"l*vʅNuN_{U.!=بِږNp\\+s`|J Ȥr/}The@@80$.ŧl֛Gʑ_OPo3wlNYI4;B`שN6lJImh;üXKw"^{fBe6VTXu|^u-碑M/>5| ӽvjem޿R F/;$E:L{ HncctvmN +qC%tFWۯOwo +-^@$Pՙfӗͥ°2`JA.wxi[}6oFVxƛ}H<}RWo%utNw89SkstS+辯9[%"0"TR6`֎'3kuHBQ/݅SO|le${?#oDҩ?tm|+MسFSBjtf#uԹ9Dž}p{8|Z;r,(_,hYREkD|ѣ.!vzp聧* 8& '#",`#1,f1j\*MӋ +/6U\+2d$͞y/*؀8 }!vƫzdVlۄЍg~)E]W=1瑍9o\y@_Y~i:U&Zj?FItYOѪʤmQꀼlH <[90w;TKE;۸fU\L(o8r +݁h.We`tf*6BF~ =?Uš­ٮ/jeB.36W1: 9F}ZDGfEHosYuCLz_=!_vG֪M25ƛ `wЖC1H-ỽ{1PU-1ݡ *pu{׉s]Fung*U,SΊczwBZvܷ++6٪hnM'EMkq;sG9a,1q[ ^3ͨrnO0Zm5D&kF:k+T:^{Je5'=axO.b*de^_Q hr,;^E!%}LollDRQ*8y:24j.S %sZ8FPC3SjU/s~IzJnЫ@vvèyl@aZT2bfV#eüoMXSvo܏sKi֪DvÙF\v Hjf;&Ӭ6נsk2Q?yd~VifLDKǮqF_kf +dt kNYA5t~ken\+u-5CBs7u7L)]lyߟ8DQj)*OV8ʾw1h.ߧ$^CR̕m +v 32+o8Z2Хá19p".˜ vr:֑>W£N%s϶l"H]1Rtk>8S1NVc^e\ԕH2oQA,Tp>y)M + pUW-t:Yb^e@N[^:S&<(C *0.E`@ +1쥲 %+\tt&> 3DZMV#OuO*Pxˉo`{tne!lt4~|hoaMZ!ϋyӐBuHxg|GOV({jE˥?c?U# 2/s_>bU00(YZXp! ̦/|<Ξp +Ry4Yr7$]x k_vG,qp6{#ѭ(u ZcqI49¸BM{[`LN0Bbym^VV!nٱGM&f\8b=;A-4#X775Vk㗸H--N٭`NO{pVxYK6`{MD[t* f閰V8 g6vW @ 2Ykshڌdq2`J!`CmV2`@llZS= +Xl +>*V)ՊFƨ(>zH| MX9G|}^E +#6F^jX0߂[pHEK xOyP se$x--NdĿia%fp;ʀm6w|joEn*o^:w +t-OS^ҥ5S[iѹ1S%+GE)w5ehT"u t`43L +,yF&a0rjxOxm$ `0 BqĵfhKr_|~iҲfDAN +K Ya੄ҩ~~-~9MxҍD,,sgOkknXeR?OˁZ] \('azQ!NP | ߟ?@RdA YAp%I8˰[`ߵ7ugiVr5wUWi1<u̫yߕȮpzCd%&7Nš&u[rܫeD5[Hmxn\xs..츨CR&7">nN,ܼ +"c߄G-0 +}0Pobvlin"`LBψU3vt0XLl FպS=jޛ~ɭsGDw^ͬ9;ZeW^Ea@ϼJ5׀}rieRUh:,0-LH7}uFyk<eFpi(*x62cnR^ Fо`f\;H;v=n8tΌ'>zIӻ 붧[u0'R^kͻeӽSJqL=0qIxܛ:bD+3n'N"2?}w y"@L;O u'Q m<62sW-dsmY'PgI鲅 #4.l{62Ocy0}ej i+ALgWJ_|=cmP2 Z)4md~݂Ƃ&ě]V些ɎNK >zg{zr7sYQӯ8&{%wŧ3y jy!{51~~K -b7aβ._w^ & 3N+R5&ӓ9WBVe9nMhyH09`1\&t $QTK*itS`a;!bT5LIj٤y7*VAZǰaQ4 +5_3.`cz*ǯ ?9XX,7v,mwD2^5$w-6!$.lM*RQ&eg`tL|=JAV9ZdEEIȠ[>(fx2bS.h2SDחLOv+Hq!7_wMUE2>6m( 'ԛ$0'~%q;Ⱥi |L #hPg +)@ɿit>GeXcp PS-sm'RvXCmytD20t7޻:sP `XQ$'s ̈́ǤE{8tPtyn G6IM(2XGPlvv N2XlNj'M k`Te7X$D*15zHg4n21Ɯ@dyVҢYK5HO`fBlqpL +Gf)FB"fpM$zo1q_Yt<">FkFqp<mS1MJ蓼 n7J#9Efswףh2_bm׌.N-hn2DZ6P6sċ&&5޽,ċ!Jh>ԙ!eQ0ђ:=]{'7 =b2n0*i  agh֍l#7<Oʬ͍Mu(cɫ(8f ?xIS8:ىm'dbp b\ +|5(`Æ6~l 22:ۨ6*wȂa:&t0<X\"[LU3Z2|6eJ6 QлO˄u  +יHx[,dDjs{ZjMXgY5E<21I|=tXjc#yo-ǺiMZ `-p59VuL)_l;P%~C*"eH Q#Y()FBSG38暁oE-ߢ겔0fjsnBC p] cn:>YϕufҧjG&P$$`#[PꨛGVߘUFr*^ q` M{ j%#XfvZ+vZs =^BHEzSGz }lR&}cKkB,# ;qyJ1˚npCי<_ɨ*<{.ke +h"HѨY|6^S?fʸ9 +!}P }91^Iᜳ~V'x& +FL!2m>,wor + ޻av@褍@m4;K|U\%a f{]7 Q +e\S~ χ>fo~o?_~~w??}P>yc?п. @?P W$Y:9Fp(o>}x @3|2J-հA0p[H |Jg[~Uj z2ė7L,6(FcE(`"<7G7NI=> p2w$︺ +:M<Ӧlf֩HqnѣGĖ=zoFG[5 =Gyb4#="Vs&L)z˚;4aTj$UysK{\_{ te9ۂS^v^syAȉίz=E +~R"Zۙ^Ml 8RCj#V#<+zZ:ul8 rR3du.n13` QMmz5C=]̓kq^ )3RYպź.c4Wm^fy']Jx'8G]aЩbs_S}48Hqzbɰ]gV5Q?tˡvr"SrUEr0F蔣85kڞR'vIV S*h6{Bza#D.mwJr~ɳb,] Hs]YW,E}~9oLĊjͩ[x:aP:FfWIXfk.yķ^ E=\!` + ꒨dPNO?'b-$ڹ.^#$aaz@"ɋ~0{s}reDsq&sAsJ>TRMцd\f.dT6,2Hxho] u{3z.Y +i]mN!XOETòpv\mC3fI6I4̺МVID' =T`p(c$dQO[貘O:ogR$kqMQ?7UAAyVCw?W;$;,H+ )QGw'*Șm]cZjgcx5y#G'YWX@_ 8zz=u$)s~%>( ,YEm.}5 wa(-TMg$B9e+\V҃@^Y+f%:E]p H*>:&̮]!"(IIN [F/,-)^3J2~lвLpsl [/*G8ZUkW$ d7A.0i/$I(@|x}9 +ٌcR. &{R/1ʝz@PrS1Xt0@c/RҲ?)h2e' +`&5O@cxK57W>H@wx}8̲-yF1MZA+qKNq$]2ĀwBߗ<ԑzxMb# b ["5߹I +1[miֿІ}jTPpvxO}8;ЋĮס>N?,;4jq{~6Gʌnߨaբ +Q~/v_Gc_̆.M峋u60N5 +Ml FQ-+@\ 鏅?RbhKI|oh +@}]_b 3Y:CmSRܗ뾙,gAގ7:>Ce.Jd,@c?b̡1>Y`TBZ]]{h di`F(s{]2 ځOxgmnI /5ewyz sž '$mrrںf!Fe$k,,Yg'Df64>fi4{Q4F$$?kX~T Mr!$8h}|gn{V5zmZ>4-GQ!_lOnrz+VZVJjujC4n,8*^X'Bۘ}u-dxQPtN&30|Y#>>q%.fENֹ2սH{(ղ$9N:,42I>25.YӁឦ&C#=b3JY\`$6Rpx]n8.]ԟ*r|5'R_PA;DAdǸdmz, +|F2/ǤXI5rR>(RZp*J.U)#c^1k"O@~O} ; h׿]IQ_ e_JM@M;D@R +`sYU'Ɵ>YA9L˭Q>ws8R ^@lB 3u!dĮ ;?54aJH'B lՃDʘ0bݰaͶ*lnUg @C*K6sl'bveL=?ۼ]`W]"x9by6Q;X_Lk5l\bI`lֺ*pw#r->Bbl|!/bgޙ3BXN2@^d\U.5 з$%fJdSu>+>a l\!ͯKIڅe%qσgޙ3B8 pLoT p8/Nq˙ K XA*>03`E'@7(_?תv_DS_m+vG ?dbo՝z_Y]]]UVҲ${..yl>ܙlF mED{% 3sotamD:#|q]3!G}˜.?h;|7/j'+ݢ:}zrFt7J[ DY&TԶí8j=_hXE v茜 +Т2W <ֆIHΫdyAVN>V現9\ ^$/wUk5%2 hK VΣY9p8h5l)[k둰ikK ^T.4̮,9@/{4.Ymi7 1؍ՅUO6"-oj1-&;at۪$Bן׏ؽ;#D~k@e `x՟yj-zpx{]g1YihT`$X5H`\[Hۼ}m1um@z|w~/Z:͵P[ݻ;o{~vc ^wCʨ#^Y`r]lMfNз7߂aSFZ" ]9b.뙠W|:v2xehtq7O 4R9\k^^njRKq N2fWli&EYJy3N 뽹b,X;5"rمI]BE0xv0Z5!@NrKIUˣpuKGͶJIV<}xx{gϏ߾zo?ǻ[>9*K|L/埀sl?to! +=%!&@y.[<,³'tr/3>A'c]cdXaB+mP dX)$ |_) 8&z:U88{#]ե@SфL|t}$}vEX]!# 4uss0[Rjb菎*՚-WRu +EepSˁb'逢s' !Kg7Sϕ=AsDpǂpuWVMӃ2Xt e"E#=.ڌqp9@j@A'S{vr!g/\V|gNE-XA1@-zWW3/( ,5>3hv!%b) *|DZ `lX?uf,HUVj[| `Sl1};sYmzodWD6z *@hNS< lgWZLZ"qJy:˂ K17]X,Ipb3qP-qck|dRV`ߋ{6\f\`g վjDe]# +rI-z4 +"Adi9?fU_[,78 aLI\m6ĐܾwNaϱF~.JL  ,#=U3M]u +0=TE'3I-V֑wߎ@@](lpBX֗9OB2/3IVE!M8CM%v5z;ZSe Gn(Q6cT]g{6j!: fQn๲A& ֛hXd:'d"V-k@J9Mw3Г<X; cpss~ +35nuOAA+:D2Q >): .b NTv +H.ySĢCHR' sd*sAe U|rgZ s[UqW] +W?|O?߾[@Ͼ[;9??~O?z?߿Ϗktk+ߠz66FTki-](5!~MK馼:Z{3@Lf)3J'3 =1m8C pjhoBhmW$H"rv6i8% nh9#58ت`C-=h{ ;.v,,4e] -Go$Pk˴h8mD#&X&8k^632/UU^z=P5l!q5+5&*^W&8C >cєV% ⨑RXFʜ`A'pYF\6- +MT.z#sӕ9,$^p-iJCpr$}%s2+vRK6lr  uw#$Id$d#n6tذu:zb%}lϺ Ulo0Y[[|U@7{e*o{nn![(5#֖~O( V7\6:G֘`Ct[z ; 0 si݃XQ=*;t'(v6BLm0]dlO(۵u dlkGhcv >NsApTuVI}ئeO7 k~P*=m>S6#&"s !GPا |%kO+@/`x}O[V 5CŮ/H`S0Xr-bO {ľ_5k~.Ja߾O{_|_?|~x7_|wK[}yo?o/?> +}K`s}283Onۿl)$XF+pi;[j;=>&jsJlff]fd&x&e $ׂAEF_mz1Ұ P5`8U%2a12ZL0Oq. |v7LL|{6- .nl<&cۄfzi6CV`\k1{^&H1d n109ZKa#f۷aOM`N17#4y_ >a&Sϓkv{o{L{*Fgeuϼ1` C|NcmybƥKaI97Fuڨ'E%"OOjmրŔG"|V ۍs +!:E~s{[nٷh}U}^,4zޭwͥ J}>5k$'`^{CfXPj+ 9LMlhbTI2c&Z4x"dx1ÔRݛXce+{ffٙLtS_uIL8YSA%LNU0%E?G=e[< +.ϋ{guBze#,lRqAůqH(Ι"ӟ@zd@m?h>v_~ |Tv)3ϥzЫ+1p1zKХBm(X5~qTA8KlE9gV 焞;Yl}5P“VF g1]bG2R- \"yVyXIUH䰵۟bʵ8mHmF;AL֒2_ޅ7X*ʉCJb+ R#Sz>+r{ߕ\}sY9 +P>1Ș\#CGKWVzq=Z4ݝE$'.EmcZPTWEHCTz̚Pa%TW>yVk^+eAWT/)Ym>%Q` kp^2y}o _^0*Ġ9~im\ ?w\a~4.ͩm优&6؍kFvZzTĵ2|qXQ2^z*##ؖv(*@)uwj}PaSo1~3mb +a2\iKWZJ-YFS : 3kG?ɗ2h~$e$c 4[WMfȮknJ*27]0M,mF_Nr:=yzо<Pm7a&9u(yJ(lK55Q+X~ ֌o{cRl-JG }9$wC0_0-5WuzTVe[ eϢ~ƷT<3m",ʠvRi" >9iNMA(Εܴb +Xi\Y3k +jY q˺N1WQz;[nOxYX2:j59xYků]64qeP3#_iZŏ 1lz[ GOu Rzۧ MhdO [zo2uK3aOIq#`SöˢbbjtBn~FZN"{OiU}k9: k&euyEJ=WP/b53"ae3$KK뀕zeVӓuU* jkwX =,QOPwAmsIjBC/ٖ/2>S"CQuŝ4taS U+cv9Sqów/`L 7HJ V|'0N *Y(ȱOB9d_ cJ/2e4W?:]* +U5B fRX2za[7(q.L!TrC"6DEnw 7_ mSNpeF#DSkrF/q+Gz +0=^nd^ fove2ڏaqI~\G0Yq3k /r = {=8 >z42 c's:䊫r8w #dʘFFNG+Ze8 [{Qq[W6Φ(/LIp!7 ZJ϶)UݢZ ~jt.%<'޶$؀l)X--D(Y?uIJI]A3ߠ@ߚRb̫.)y;TwSDo +bI;dVx$zƒqCN\:&:_XLIbV9;9bE_[,k;ox 4"?C Km9q`ݍ=9x];(p]5)67ZUrf)+*nt<A UHaO Yֶ)3JBki|w۰#cRgW{r74Xپu5l`*V.(;4Fr1*at6{w"-gŶGAOסc,Н<6Lil]"^Tb1īZY]̎.ot~!kD9;ogYu{;/5 +QO籮-)E`<1uKZ]b&%,}ɂxR dTM6n#ƕVV̿Ya=yLoNIXXˉZK'>`:͊R塞( dqjNtaΣP{Iڽͪ|@qכ Q\1"|k ^J;~Ps}Jn +B q,~xx~}Kޘlo2s4.M9=4Ѽv͐_.^u;trw(7DžU4-ve>U uGwcI°01Y?}25RqGAх9?yD)Pbb1[ࠕރ"7Ыr ؖްRSl]ߣT0hNQryPY$ E㻢s2R=f+%^-A\gZ-eD( H[q]DbPrAVc&v<-utUIm/w Sީ@`s14zR0`@Hւ4<.s!в57 +`S{`Q[s_4 :ҘCW8]`haF)o6 O/A? ;v0ǝS26/Es- ;/ xIDsvmM&~aia2wbX21X|_38AdVޅUss*Xz {^d; x788Y-d⋰ߚg>0[!);Ąv endstream endobj 17 0 obj 20825 endobj 18 0 obj << /Filter [ /FlateDecode ] /Length 19 0 R >> stream +H|W;d <ܡlE G2dozsW`tםŇ'Sa{ɩ5u> +ip @-~3!}7D +c[)B5#y|)'g`Xj"m]l$TDdY,zʾ"|Zpn԰ETYlk˺ W)r`qٖ>4-C*ܮkv:c#bHEiL[? U*oY]5n{NxEհ__dN~R7 &7{=ΫVKK]Yx+i @x{i}"Ԁ.r"mlmU-g]7UN[]hبZZ +&R(~=m,ikfW9v9ySmC"Z'Wo}HE@nD?MQSH1ԤdQGT(ljrtۺY?PwpYGIޚ+̾|0H$=XO#_38b)eFIwE_iӗ_(x>Ѝw96x_9&t*]^cs".:t^3S?bqglv 7m["\gdt5w&BxM:]WnneYA6 Ю:vm(1ہ`)C~)';I;[Ts V>,86`qEQHQ}' Rrb,O|y++w$M`&ڥ_N'2ӛ7b!Z Gg{h7 } gzbz^2ڡ269j[ZÍQk&A$8;γY /gWɌ$`뺗  2 CFޭ.2 P7&juWI:쩩- *u+S˯X)9{_/p5WE窧sL2\]9#mƝDݸ:4hp 3Z4E@t* ro //Vj ҵ+j^+@\&}wlVkG-.s\5R-`K)p::(W\&6F+ETZ;CmXTzN=pM끎;$Gպ8O)H飻1S\R#@LdG0LJ{ܰ]+Q$ݙ(FLUo^6u^`kزɞ3&w E$U0oCM66GkkԶ⛫|*R ~-M( g!C>bl$,S8<&ϟIapU];Rh Go=j$ "{.(1A9Uj4O],p|Ѭ6R-<`֭RfT3iMMK ,v\ZKqq>JդLӬ452yO { ,Oo{䀴_ߏb z)cG + b>D322/3__^Fd}le`bldܗL=ԁb|k'F2?#pZ5_Q=[\'hu&'2ė2AF v}|ᅄ!̦;EB=- 4]͝;2P^ȵA}a!s$.v!;NRq@uP<= WU>u{ \Zo0CחW0iH+"ز{f l̨-m >6WQsǗQrZ=ΩpHQ1|vJ&0zaN AFv<OlM1KmX/q$a8LP ^{RqQ/՜ &1mka74.=4&C:ΚkҊP^ Ɖ׏o2_G() +OaqB8Q<:Dy \n|IF)ԛpIA_7`l 6=)/X6ZCyK :d2`qT_}p"\W%vG^op!U=R]5A$A-"< ^jx/NӥR-(V<]s?e5( 8dJT. ef!yiU{յؑ_0,̪ؐTHInȲaaY36'YpƄ9*߮`cQ*L] my, (|_xj,Nuv.Hc.#3Ig8 +*=@1|85tmvXRerԫg\v٭?<$LwaNA64EdRSShx{8uDrtQ|BqJuנl`۳['1t=_wDTp-^2#pNc^HûnB&4G'=Uvv +d9K=r. YX*>\tFi|T\uY96 +֓NKխ@U< +\v[몣_=vz柛}/??{ |OOOo/ߝ%⫻OS8QyW߀wJ~N+fK#EqQp CSWO,pOԅd gq AK@8e@QZb7 ֥e+%+%`k24=RLfT3r;FѼP"ُJtXLٝr<}<(k2a% T=+%%kLDm-A`CܺDH!%$yYJด{H[EQݮ6N{rt֕òXٺFꠔ&j҉OkvÚ@=vց"bVa5V˸?𓮒g_* 0`qLcmk֒V,u烟Z%.'ǫ BV]uĥf[4u𳠑KUPmk._ˢbСpb}^A}T0J* +d؜u"рDz5jZ3`1TvӿҍT_WٔDVJ}98yȘ^[]xtJ1$su]Nm)ep{b`Ms}7c^` ~+AhPDq ,)JP[b^1UKZZl"4G:8uQܕL@!u 1 Y|HH6/NW#47?><>NH<ׯ?]<wy*F7Y^(1#f<+Lx|˸C;lڇ_VFk%pCF^YZ8!'K9'3%8y5lk -OJcTMr0C_PV9&|"w'7*(|p0S'7 `OW<:*ZS[ፇƶ]tHzтf>.|:܎pwru?]#qtP<)/ϤM)Nv :x˄LaFTYrƪ-39kR +.d0/\ jAs6ӹtGY4l9\R$%5o]^Wܮq()L(<6ɢK)fR +q>|uYmaDٍb.\F=K$> ww{x]Ϛ]\7̙M+pL]M!z{+'Q?ԎϺӕi_ [i 8#P)ᴷ}T &xgcNQkpn*|Mx&ӦM߯y,8l T%epe|sN>w1Y|2`\r=qf,,ior-1'WKv-9 +\A+GBT߰л@>(;LJ ?xbv-`e<׷HYj2֥/>eJ6ىk[79CWGXdփm3h`^Jm:x#n"yl,ŃrQ9Բ `44xUy00!m#EARD9y@I 77Ӡ_Y|T10A)Ѓ)d`2V6[`ثo8;^fn)+I]#\uE6#}1bL#E` +͘2b<ĝf|耞> !!OEd,ŴnyӀ7javeYH~}9wFltm#9>4&i증wsx<[bv2'w:9+Mm*#'W{Ng'/j<}5B1߾o0uՅťfDTKmDzwmXI9 mi{coW ] +J$SS\< / +ěpo0?vOlZ69}iesUeR_ס61Y$7|={t*Mtjk;NQvDt$rO0lw{xNtm"~]64r+7vƣ**t4wC'W[#qմ9xϧ[6t]EzqVh3(WC) 6 JKZѻvSF_4kl5Ht~]R,C),ܘ]4rm'ce$ZHطXp}>j]Uxj}+DecwbIh2{K0%Z^1YݬWI =3C|.khv"B4= @Nv@msD\*A=sJ2D0i 9ME&Z bN(hmP^%7{TJ/Ptc[qy'b~/5uпw4E޷AkҞ T(]p-n`X'BuT?1tВ@y~o (k' `tшN[3 -@Lgs}y-Sl\36nb(|޲%P[ +Wy:|ںwX^Y6ýpD!*_}t!h,vۼUkl6b^7pg_WJ~ys'5`*҇ҍkvAxgWnVf, d~f5ezqm4%-0d&5j' p8 w>^} 2T { T\l'G_}1;{%HҖ+Ґp5rI:uB`\ M*|`kЛeEۥ 9-SCE/(a|+lk/jxAK҅/:JsEtffEi0/.l$}o0el@dpMd)+;@hd5N7VJgݢ,, Pj}VDf֍oO6[׿O|߽}ǟß駏?9vw?sg]r>Ot(@oE@O뽽碵_]iաΕJޖy:8P; j(<.!}b"A!hXЦ#DH>ώ-~jɾ,q^ki!˶.~DaJ ׀;$nn@ Ѯ;|_G<o}`N8P +E5*rzM3Gx_nu YD urfsdt;uIW?4\fDۑ$2N;Q& L,ty*YW7UdO9dK!4Wq̹QCΞFsb~,6/K?/wb fOm :uqXza~mmgaQy0 pmoZ3v3v"+كlhCVp8E 3]M8ga9$ZM<Ƹ[~U϶bY 0x[V O벢# a)'ҌjAF̞]v0W s0H$znTz̢$Ko,gP&_Wk=a,p*!ˬAX(/B+y{w)c[hwfNpBHD:9dgju]o?4H@)mؤ*mU6흷n@l"=ux~'=6)H2RZKx^⼖ 28@%Qh0y?X$a-2U3U, i ˢ[L}H nqTR"(Mzi< +n<5Gjp`\P՞] ZGtsx,9ZAJLVɞkH0@ |Ӏ[&nӢ0ZMhM<+*֦D.uh잆!w(MB)I!Wdž(=UA\-Vj#}y5!{\& 1m?+5im몮 \*W"M + 6W"=Tº0o;F̵?yͷ燛˳׀Us֞lvs}~a{?}}mfaFeU7i^nqp)rX宛CnDk;lDW" k>/pm?^ON_7|?>_ރwyyvf𓓰|¿q gG@le-ׯvυ JgG_C[4Qr_]w69AԏG8 GqO%Iܹ:fG_nq{@_<8M +D'i2; $9Z8!$ֻN ~<Ѫ kk ]lFZ0%A;@q,%0k Ha؆%Neh}g5t[cIوַ4F3hP786)NFԍOG- '2'>*X-L@|DU*y=E_ū8dL/P̳(}hd}1fQS{!D%/PDņ6U"k^ aXE3W]WŝWb״ ֬"͞뒋rBx@*8JPEGlO=UUN欶.HG@@xao`쥔WVeFh(2}~ 5kaX+6l*ıo`Obްjcu +-EaA4G_;ʁV{h_ ;Ȋ/-$bigzmU}[Q-ORQu6m<Ա kk{Q!kk-/s'nz,jDV(nVL7lԶb] 4 Kl+%g][fL;D߇ȝ.WƦ[_w0r0=cӉ_x bBgGX)({ M(XޗӺ"0ݦvQSf4)|rS07 J%ihQ)Z1 Q%s@kM"[ӒTD"Ze;tDˡJtg  a%7f3M6#Vے9e2pd\8d{h팇DUIƕ -<־l\N%ڜe*fEJCذu#DYNZo,95Wc].틃>MoOøh\(Xe zsB,8`i_$*Kc|4AT0r0c2Uee#N|i8`^/$&0`H gʜ7yX0+VN+0tm%*Ԇ1<ћg7ߞnί.Ϯ?o_ +۳71lW.n?pvqݓ+| 6BΎ7ܜ\Q@!6OsڵZڵ֬vEHS*bVkm h #%v))jkUa7S.U*JUk40b)if1" 48(rwfJ1.fXIw͖Y MMkNP:g55 zUSsn U4DϐXVqP6;4*es͸p%31fX:r?d"MuOrXU`m`Rb֝}|P]dTR(#+p"Q127A^ 9A-Z)kb}K}IXra4dQD@@NSk=i/v0p +>XXqSSyf Ikه[oB-.d`5f4mq=DlI49F-[Saa 5 &ֻαT_LOr#r+ZxQ&:_KrjeاC3nB֬ä݄Dp+άXv4Ia~g)pW&!|L؀.dc-y"^!"k;l8a*jC$bBNRw%(Pq58;aCK/f~~)Nhz6\3̀k{d~^(|KıZۦ53{ +. t hMx`TwkY;7&waܷc#V:?񸫫ɓ.$oAL[ьl"gխw3G!ᣥյVhCđ-2<\il(e9CG}l#UU,D>g˿Cۇy 5~l&3WGti=B)u ))GWEwX\e2p1Jyσ3 gOzx䓨Oh8 n~'1㒆!.Pu'E4괅jQ'HCa{/iMkT+ƶ>Ex|Nu2BU`4bzaFwYYVqJh@댭U%Iڔe|tkS^J6"1cn ?6H`đUq:)-gDߖ386A%(HsC {u$u(v(z$x]2BsePLW#.2uBj {+մE:[CVe.{Bٯo* FMƘ\Oj8\FCi繁&МGfEfm-7p?PMK=M\͢왩|+J} L v5֮}Wg<[اc ܏?=Ե~' x(ȶjޢXռa{5oVuj>2<#ۮxƧ>69$}N/~6Gֆꃄ#| Nߝ\BXt~=1 +e4d'Y*GYd|޸$!T9л3g!-{||m"Z%k9Jb +/[T@tzucki괉6i?ɻnKWl V c !0, F d u6%Mr)*1 @J (Rd!PϗFY%+4tS`6N` +ƭͫcbOV4VC'{E3:n=kL&,"aǣ[(PV;= Ӫ#:Te;0Ex{bpDD:o< +b hyn]'>Y:{<>i)1ZځShR]_6d:ɬL7e/EE?8{M쁰BS CL^z+NϔlKX鶁;qd$)@װVqLLHp*uv6=~Z|lpW7/Ap˶]1BJIHĘ$jGY SWtPt&i+ec4#SN7TgԴ[yBَ̜&FF>7ů_o~|g ӷ?|݇O^|qF>?+? +KH]ֽw*= ,w#g*A GӂaQ&f þTknFjMMӦ$O:[MC9[s~ 'DQdMU(@g0rJ k0-΅#_ZH&xi0ֳi'IՌ BNܾ1$mlUERR+^pJ=Jq-9y5Pkeϱ Aաm.ѕ\x(/|e ޅƊap)d ͒`L `-X5#P\/l$dzG3R·[1xAev٢?tRSciC-y ?[u78Kl +.oB7\lzi]$ +yshI8ڪq&x|÷cԝchNM /ZQ><~y7M0&\7:{ {xL0{B-*OVZ!8RD(;IkZUf#Lj\Wʒ5̐[1USQ<{*D]\vp|<;wO~ DzE֑qɉXBR.&55)I24 b+7L܆ZȗVftq|5ݠְ;?Ф$ѫq_\O;BW[VgqWB\ ѣcȚ rX@꤇ fnP@LVF#u wX}[/l5#~엡 $QHp01dD>{XP[]]9 F!j&;N:OB@d we#Pnw64,0Ԛʬ뛥:j(~.:O:FG0E!Z>Q›#X%&_[Á\'qBQLXe!=:h5Qr#;cpImES=߆$1^(̄}חJo +vGC&Jmx!XXi"l#P +F]6{ a]c +vdĒMFWLXiـDl$Ȃ +#'(rJ jl<ҙvI/ UNKEwum5n+xwLP$6 S>fB1ΦBХqpA8)+UtKEנmYضk}GQ̛ݵ]hg2[WzvlI^ˏ9c BZ+v50mZB9ydH'8A2`^TYs)hW]T]7,*QF[48.l! +㽺ہ }_z%(t)eUɛJDI|USkw;olLU&%w}i,g,H]Ƣ'\-3!W۲.n*,fFz=˓mR ,a*1%ErY F1xgLNt2L/J@P`L%kGB&hNj}vY`kf<]g쁦xR3h`Yk3w呝vz8*..#KdI``Scѫ}kA`0 pzn 7DgwF|9J2ghмC)hPMk-J8 ·%y0B'YBQ:Fn>Xu&U"$cHTR\U X/3%-Fo1ſbCN:DӻTӣGH˜B$?D&Ϋnm h2k QB A^Q서hdkQwI0v0;+j_ i*>t +=I9vy]7nx䔲{Rr;7)yDZq6DK2 K,q5MJWP( Y:w -eB-gYߐ x?b'fEVEp=AqD+PvMVf>U%-PNQn @ 7(U~xAs#AO~x)V<)tRnPΤkJ.-h9}\OUtQe&M<,/B[y) +LX)kMF)DnFp=e=:4:+PU1mAQ8[c +!kR3rcg +0ZìwYVP==i}uyW//^^^>xq>u2G7?M_0˯n:QX*WfbnnR{*77w'}\ +&I&t,ݦ!<8XztKjق˛Vy+}9{}U3(&X5~3.p`C@X _h]xҡ9s۸:s7M2]P@ [j̗fVakC)lK3F*.0wh]Ex+&g0,- ֨֫>ir[Y}&9eGAoZҬn{lvѵ~_9o%;g0; %(@V}m M;h_C f+<F d0Aj \72{Q[n`4ׯ3|،LyrL7 +|DDo9L-5I@1bۖƙ;9Dӡ!i9D3Kr=Dj{0G=KHnb}\LEw2+}uϺB}%t>pVj̭Vi|J~_CV/7p 7+߫Vn h0ҵؿ 6Q endstream endobj 19 0 obj 18827 endobj 20 0 obj << /Filter [ /FlateDecode ] /Length 21 0 R >> stream +HWˎ\1 -|g\Jvư@0Ķ4 Y)V&`kt*Թ%ݕ*1Tݝ.@vͩmϞooO_O>|~𖟟?ז﷟q=з9.jSCi{b$-ܺFƭ3>I ~#'I܂ܝFl@\p '’kd̬ys{}2R#bLh<[SnHհS/ "лqIO}]eov3WvEs`}`)TMqc|aN{CFa µ9!ު$ _~*ʜ\k~AM)ZBU^x5^L;(x_w7m3foc?O{sBii'_AZ 彸/|6y'c-#o0ѭe$g^XK/\kNI`mY0jU h`7W^dL^MV1@ΩF^^c`TE]l͓jAem +D?"TFe_)q$/M2Rb̀^M6$5 +f5{tE5[ [[+J="gS+lwQ]֣J̰ V%bxsC}`vJ3[< + p}x|>]^O]05'QP^V@(  +h|)k]d/YVCD:`Aϻx> +Woc3PxkBhx›@O5@D`Ti# Z Qu+hԅ V 87}i,|sd|qTDD;͡9(yB7 +%RPez% )!:^s2(N +4&6V L(,%j4,d-W2?-^C[,tg6<-#Z d\ctu&acP0@uЎS3ƛ7{lYirw1f;hcJ;ĺJ(.atsc` +;/Tpе/эIĨ{lɴeID6J6Hr8ZD1eݼd,BZ8*Y.nsT ͋9ٛLI؏ށ,$$6ͻ)(4w'ֻ3e<>@I".A2Ѷf1שp껖ݯrg]u".}8 +6vLETI"X;#!rVv_(wFXzsmc* NAB׳/܏0*W-?Zcͫ5a1[̽>*J'Ur=Uћ6os'J)/8{mH:lµR뢭Kk!J.!ρZS4tl a -`a7sUְy}[m 4TkM B9M_9߿|dz/~|9==osPҋgaZ;_[ھ~m@߾>.@p v,y:*?y?t>hGm`(WzG;[<$:qz+? 2)ԲCӆ TDn W8smSli&%N#:^ fE~mD0CNԠ3G}LbKhp)KRmS"hɰ8ݩCJ<'6 + 0Xp _0i@SjqI;EhU6kJbD4j2)H4Zuⴿ(N^Хm \Fev +r$$D VVִ-#5-`"OpљmqlҺ mP~ ?(05$@0KKe=-3?f1ap:$[N8l ._Q6Z  42ؖ.!*>iQTGh QbG#jCTʣgd[IKM '_i ̧iܖ42%Gq׌j5*LQ ɷ6*ǧP-@g$qF9HSyjCsb|Ěj0*ת!V#'?8w΅_7ݘ9й-fR=;`k֤pRo*2r`" 3,@&TcՕ-f-!hK؋чK #唧K|e,{Ns8P cN) BsR6 CB=֪r r8.6HQfRPw0\|݉q<0pqV2ӸH/ jպ60NA=:''[9J4ŲDI^Oό.#096POL_.-I)`A0ר] +|vT+u +ŋ@VR%spvY/o=UN\(Qg=7UtԪUVC#Ɔ?2dWFSO6ę +╙TyH$09:)QV\̍f931ɸK9%! 9J!U@EJFp,E-*z Tynulj 9ff(cNs *䊴3ɉ?GY쇩{=Ipy g +>ltyєe#'98Xݾ?r2΋( +HGMU vQ#-mXz~67T%3$%Y`Ð0zYǛM0E)>qkSjϹN;4 8 +/}ۡ8*98 + g~g$mEYDa=]yl+ 45YWMcN "ߜ%g%TՃ=M^1 w!K ~?u$g:s_`RKZƤ)?@]M5OD9ԶK(W +8x u@ 2@SM3[ŵ|\ځ- 9v{mLM:"dDre0'AElÄ9b,::uuX-M;c42D.<ڵZTjV= tD?,-XL 9W6 ܇!\ϹT,R҄. ֶPLCfb;iKi?ҘnfUKkZXp۳1 t$U5LiJ) +#kz"@@.x]#U1έ*'&2HS17ifQ"pA3 3uh01 ʵ(I e{S<~- oe"xp Do Gvd:%="!z{g4Nk,_LEA-*;qާd+ՙdcSàTsU<SFQAݬӲcsLiѱ'aA,2 V }$Ǐ]xwp` J v'/z> Sd]>X#A=ME]n98>gL6hԋnd@mXeY_ipohA3a$_DϮJaq б LЫ0LU,4-'y4HB ~cI{Lx:Q,N6,Zcu\/in!>dgѨ=I}kbNX?V LPu);"ҴmaZPX?_1Bv7f14LXh(?S]ߩHQ;/Qp]"B>|@&+OAt55Ӆ/i'6妾nVrWFBs~X H4 0C^0-Jvg 4(gϡa9po? +e- OLHᾡa2aMpQYſi9j}ՠ9cĸ8͎q߯_'^-?."cbMT'.iBg8ky~ly&k,*GLjkt璾iL/IDwЉ vutܴcCdmi"mCdNgJy8=pS00~???~;)Ͽ`Ξq+DO~ 4'4E"e^so{k.eλ>7 t"E c9ҍ ~kz$UO\CuOnUpqo?~<?Vqe5tZ[+^xk!wq|5ԏǖ7h?O׋ErgmԖ'm~ɬ +:^dyy03k~J`yOԲ}{:|8.DgY9Sdy JY8P\`g)m^ii(d^B~[Vo+ ( ?J0UW4X'!S:LԼ;5LBp`xݜEa2XyGA|D#f ‰LX?L@u]6@~c/oWA 6,oL尫MEv"WDtD(g||*MͱXHy?*%q+ōY-b?'-m[.a3l_ +bR4E︥xDå)]f` Ѻ PN➕L\QV-]Dy&"1њ)(f%So&fεSJ:9"_⍼VT`3ݼ b8UjӞ +tnDZ +?u,f+[D d%Њ,UAX2ED-6vPmY}KJnʮBIW, /QnoCH؆p4;Y_TsP #剎FK3 :TiA5ъ_ "8٫Q9Du[M(R5?ܩV6R{JX9p &hZD0&>`b v"b4B0eG-#ŏ(٢ RY\E;?^mE}A*܌<'s'|]toA}<5SBs|J!$jԸ9CG|=9;]ӄ4))<#?Ð7 f8~ +w~U0o{ysnGMWt>8O., Ƿ|F9t=,<јI'.|BmB)V{n6]r[TYع `dYYG^Mw!#Tqa4*_YeF~>]8]7R+г3 㤱 +zKdY0$pZ^!^'pxm45Sͱj۶,B > ^dsaBKKx|\xO zZ$v*xpAnJrҐ,ȿ9ʂҎGp*$1 \xIihI.9-^uaQ`sX%TnQ{'@kݖ/ iyC"+Tdva}-+3sHƌ47R< "r5ߏNB*m a{@#IYRh1ܪ ?٨sI~+ doc +hdg</.'#&&*2=^2qM?io7ne;<>= V<Aζ&T+ߔ/hM21ɄfXzqd6t2AX8CUĸ DLtWi50; SIcHw,`[Clp(H&ĵfv4# ;&ǯ' ]u4d`xf鶋h.oTè# +.*>S{z^-<BG-̽ebK`@acC GI9 4M< aϒB@ 0J"r=WZ'ylCc'|p5XX\O"dz Ӱ8O3H?a._XKX.^ 5ڏ8ߙFMF.Ҫ^Lc脄JH ]NǗգTLb16_%5k  qoaUdbWfhT j|eyR*ζd7fZ3(Iތ3ʎlɣ9W=;EZǣԜi-%@ȡ [Vmr鈤sW:Jʏ8h5^utR$n^S؞=k1H3R\7Q5 MиPl[@1pr8&sb.=u9ke $gLad8 Y =|{scM2\-iDk䜝>[ѯFuI)Y2jj A8e)VK *?4ĦBFSOIhk.7Q^G_f"{i^Ȯڑ$7>E?rfF_aєR PQD`!cd/%k!A"9BPٮj"i8kdz@ʵIˬ=oz| +ۍV;2omY}0hc{F?'P:"ux#eƸ>!mpu +w|F:0}D7CCk2l?z? 46K>4}ɍ.kRYq>vDC dZ7b_>j ']C:@/L?oR5ӳoW +v%E&I(y~2G&6&{IN2WV>q1ӌ:Ța75;8| "& *A +v*uخKP@)RhWQzlP`CUk#ԱBQzq Yj8ȪZ} +:3 %Zw!3!k6#pY9 ȏc#epi&Jq %3r[VmCeM!ћ}bvA#R;a~`ȷUCZS*NPٰԧ+tQZ0Mt9! Gڡ^Y)O'?Hu{F>Bb(1_1:[5) +P]JA"/Wdp6sQsڰI_HUӷsb#qEZ違09+`!c;bk <UvaufߘOQF~16jVP$gb$vFNX9r`F4X' S}&&2JSkcfp تa]2U @P=N D4١ǩeF}T5}`uĒ)"6C8!lt +b`UGZdXcekP-a-t#mQUu(vr +D>b6tNA +"l,A1{״c:4(*bZ^TJ"ԭ'&x$ @4>`2ST7ُoaej?T!O*NJ2݂TԸ.Hљ|f~ ǩ!ٟ#Z}qR8M#enD1;#?/Bt2&W̧YK%*a/&"ERuSVKqL7%GփHD5KﵬuIuL>J]b$cy"Vf5n +x^/nqgY\y~q#-!\Zv)Ϧt! U s;mď1&㴑>ׯ򏺮$+[ BDjŖI +³AfI2H*i'v}_z-f5ħ$?jO^iI,~V&]Ƽ6 J Qx@OFS}uBȵ9&}CD-4/a !3Cex0K]VRXT3MRs/lNm#,a-{ 3F$?BrCe$y[Cr2Shu/LT{!Pژ\jwu \&}HWv>2:,Z<ɉDv9κzsk=81cZy=ΚݚJuyMʿssHgu@(>e|.砏wI2ʦ&L?8f$n,.Bh9eLiȷ㨦~N˺. 2UYR9`p|Ȕ,1&"BQs ~b@ q+泣56IHCV"7+T "pz= B"Czˢ_@N#1H6H8 ĠZ~[&;AK6ym֖ ]=V +0 d$!^T~烱NDPKJs@l /NADP㵫9\s4њ]#=M?Tz`}YXDF?#nW t^~"8tA<]ǣv$ @ˢGORDqϤߘj+DF},hju0Tw龱Hָz2e* ' ȧNgIݭ N' +J$OHN/OĖֹ +qciм;XzdxyDV0:!7CK:+e'/1Z0 ˵qD4O|,}8(uv$<ԓFϖfnijхľ.u;XNmxEQ{ZWbknyYHRSl;9^)v)x@'{+!BGʑSfy.7荒#,#$ÈRT#]N7[oʿwT,Am9K>θJZ?F KUӜNOBm!#͋q)G>V3z}R]Z #9>1B!7ͫ1݄ t0 T7ޏkPcpۑ27sY@ԫdyT@yD$[@0C= JT[= &uS_H(J'RȵX+=uyVy^uwY?0ikvI2 +n{Hۤ mɂ| )e)(݃?klNіzi&KBUqtvZH?fD ݳ t*AMN yY8b*yc!o Z2\ Cq\}ӐCfyaTͣ޷4i1U6~k)+s"5#S#q_H;+߮4pɶد~DđK^aij>;HN<$;ebŢOg%@``4n2a̲cu#Xz&^"<'YhHcqY%9A H޽ը RβUa>:k"aATq:4UA8/}H %fIJh9MZe'k ++ƫ"q53!׎"NǾj&٦!Jc0~u[ަ<^0A1̞g3{q +6$:Z4f̃[)h ( 8(>_zi);^97 cSTXLfY&#fLHqj#uz=6{>PmuUiR3@R 85@r)n9+i8DjMP*ηPV˭*8IXkڛ(0B CU; +0ֶ,r`&MamE4K73[q&a@^xV"i(^O5et5UMpi|OJum b1bQ #?Yu3'*Wt0+aIfcgSQA(YL4Svg),-9ht1k sA08lvRsGrIȊDM~aKm6gNܑ/d)nָ_d3`+l$g(;Z`4u >&<>>[.J +2"/Q 㯐Y/z)ME$tWs" ="&>Z98}%V@ټ;hf@Am: .+G\x_a'^z #_j$1aF5v95R:܁XL ~*"8{\קP2RjPb0[!b'I1BZ2̢GhUxW3To|uM$mʧV`oZ3;Xƙ8]tI~X3y)vc U&ܦYal{l|$}|V'I95-Z(O|Dc"% +X?զUa$VTt qEt8͒BJ]"\_ endstream endobj 21 0 obj 16664 endobj 22 0 obj << /Filter [ /FlateDecode ] /Length 23 0 R >> stream +H\W͎|y3dO@Hn !ojڇ԰fT_n=w3ǽǼXkN2ˍX7!>W2f^{.q~lUyhH\%gֱho-OD,s"e((a-\3U:^vW'd`c6,{JR!@ͬA\}q <*cdٵ9dWk er i9);jmc9{ջIzQiM*~i^܄LԘWVi3 }H;v9ÅUW D6#*wLYcڻ-Q5˧ A 2ەR)@,o7cvBhu6:ш>~p^H*yzۇovf} +7џo4殦UAi]J5)JLs" [eۮQ2a`WK1ZCg._ VZ' [(56_ D9`!|R \DFx$#{-!ꍿ݈1K,º:ɑO9:FEf "@;zt9i(/T[r|XdyLC)Hw"}fp7Jzzl-. ;``* $V11G3-Vy YDpJAQON +b|KHBlXg/ Hq2.oU`TXȒ:72p؏YND Oy;aAb.;<Ɂczi2@0joԚ `~<X:@eeYy+3,@LVj"aX&KvVu ZvGWwMHo{N9LCmġneFgK;#D$PƧNl3UB ( !2YNLO;A3fed"*>~pݐ@~<:fk6(6"$!d$;sa$s[Q{qjngsg: ⢚ lB*8:wo(,%!Gf>|9&?¢d0&V1T ɨ,&ۡy4 tTfiD "BH{bz& +G?~^16yЇuZ ~/7+2E֨Vԑ!ts) fP C%QYQm cZr~ndMgIAݺl {>y.D]i.`\"]^lBHdRJV,;? cdZZؠ6 qߠECy7͌8C ЇgluEV@gArY08&~2Dgc8쑡5Y ́@Y׋q0"=ɱh3Y6\w3"KKܹiixb"#vg>ު-lNyglNUFU=)eGR_sspR쬧]oRׅwx]̹&2K:5"vƟnay];_rgks CoĆN+^"64uAO3>.X) G-kv4u1]@hj8)̀DtH?sDV-/(Թ1xI+4JhJ2^hݛ4kA$bKtnE Bc[ؒ>hi0Յ AfߢH5Q!eGjU}lIe(1i6"gl#\k8d-SjM*GQ1(+zy`ބ9 CɘjS[梻FACڄt3gd./M;N"z܇̺6큦@mzMKceli֐ +;^`Ms5E+Ky&fNemI`!2r{K*zFt ^P>#kXئ +)=m`y`RԽxaVf/ІOWWxx7Lc䗗L?'0 +Yzt<(4-D8Vfh|Ak3&Ȯ6q_0!;P b,um/( .a=g"m| l<2.S{JCu}gZzͻ%'[al1 kF [ +瘾ˈ,Խ囵K">);B{:~ZG*%>M#1{j1&U{OÕ1?L5ư12E$IҞmrD4bW&HdTa15M"_ s~X:>s-%mDc;XK%IR9iM +mC mQI:Pͧ:H67ۦfB +:'|^)+1?u[=Nq Tθ5PȰaڦtt'm^<6.곫qbKm)5ےUVa065* ` +V$g?1>ӡ^)WnPW,"'t%p:"9|KۃP7^6$8DZLB`G+)%xSr>%'$kް7}?ˏw@_ :=ׯ~~??/_'/~Ѷww"so4MS/"! +)S7g>L—і5gu4r}˼F.w`[_56O .|IhI\ֻ־$7hc(f"G>{%+׵@[} JDJݦ6n+ +9ָFp|$Y{ӦZ i3S;G s ndSt7 Â:E䈰"ŚrQgOrOzjy(gh=]bO ka_t =v{jw >X y܅䦈w`;J :w) K(Evv)jM3@9<2rDC /(Fp$n].뭳@cˉjo6݌z3c,g;qUZh{$ NQu-`a/^g߄a\kʹJ""e+.suvD=fg:߱7aSq&.($6' +2iч0 ?Neo{Od&Wm.I〘% Z NJyGu' YYQIƋئdj'TVry S]&Tqnu,r29}\V6ׄoO.A7a}BF$ 7HZ"F O,{ZRr(ICai 2(j96=P! 0Q}:٨J]9:R0LBP|`C&46ѬoE?aR&y 9 W}(F=/0ŸBʞdЙ˘HBZل=ݐm8gH6o<ժ?Va2A!di ,CJ{Dvhn#;k@MTuӟ6NԾ(7 l9X̦FUI KJ{Y@z?fybb>;sC*ݒ'О~8կw=#} 47SLHr[Aqr#9Oru)S +!& ~t+ 1o4;6]hx^T7 {h& Vi,|V()ltY U_IΜߴ څExWv](X5r{W*4ZiA'qC"]aSb ݘ^H~vtz1Ʃ5ŽF*{y:ӓz5>ǙRJ[y"k,vO 9!YKb\j}Ge>[Ǘ_^~Z^߾_zϿϯ_x@( >͈<0(2aoyX-jiTpjШ##&bmQD])wy7hZIrM@zm ooN~XmBAw%"ps*$UiBXaca^(l!FvM=05GgϟKC>( _bN#nש7cb#b&Ybu\G-UFBP+qwȁ s|p1qBHx7Zy'tj&T5]}$̕D0Gq^0S!lIDkvGSc86V/>"p &xr@ +`F!O#nkY4DI,YDiH]k€-4OdW(B%B>-Y#g1>A sz$Ejr[Պ<ڶCr4j۶A (Y܇i#gH"e>Lu+,as5[stmyYH!w;MT-TAa ED}ӹ!hME;b V){Kn\ s /Hs$b# >EG}Ɩ@ba`u r$ɱcLnz5&= _=W%C#WpPcCfc{A Uj= y |>FO/-tt>J9dȓ(Krq7V EOBp& RN^pUqttS#O_T&Y +V8q̮ +!dӕz_dOhe* +Dʡ6:}ˍy%"ྫZ`:qD,^%GFpIĢH$R)DҦ>V:*+!BڒPlxFQ٦"vaxaxe|^g`Q5)J.؄=i*21p <կT{#")!D};MFF^tg!Y:-0tD`aUayUD^dM?=4K=ޗKW+TĖ{K]5ib[&H@or u[x(F;/ Ɇ,3Ph"Ybd؝9$Q-4U +Rdr~ J"?wy{4)F[9<>~'o~Fnw5O?O_߿c/̴jGL4lH;xu*BE ~V,BmԤlDH2+c#QlR&#HX/DJ8Hsh-"J5ՎJ +P's ɤp9W.P!3A5\ aAzշ}Jhu.?͚ JT<9=M'!lOZs)xA)׌r(L D9B1ӏ73j-K`'ǒ(+ d͉~θwQTOUV2 %'AwhP<0Vn֎ +|fy8ݣbQ(p9FEC*-US`8b%*Rft|l0Ξ0:2rlnp&Ț6" +Yd`5`sr%(&=doN-ɚ{{NpO:E'˘H![\Kg\,~jXXLQqHM 5v捓wv)6QpA0p̸cZuІ3NUPYd1d1=`V,d띉 + BT"RUgPRU5oZsP?G}(baY!ߥQJ+C0?ɡk1zb-! z;^9db)9& ޸W6T{Fcfݹ݃P盘 +7؅R<˞U\α$x7o wtx,z# Q+Ų>jLM+s~UkC7BӨY#'6{–/# Lu_jz,l@BkLHQ{XSD&w`û>_tY[H$^:(wFM^&˞:d)nF';Y/,9(t+nQy +*xM)CȪ-Sp1CArOt'2 :c +~Z69k"4$|jN͛qdOƓc:LG$ )} rY嶯N"E!8,c!YW|DAJ& ++0Ҭv`V^ %>B8?8`Rt:lF=4:LAz1vQ~8 +Li Gc@ݣ2dE!o32}8d g߽hCze)vєSˢ,Bɖz'.%ݜti dc9M,l\@C'؍JsJm7 Ctc^SR|8zX;:P/Ҷ<G r=F!$WF6i;I2m'| F/ = v42] V|fp\A7F:0,O8!IX rM AAXp_nf3P'XmVcXVNyr:Y+Usal#$˝.^`a\=S>8jT,S}ѠyW5<[+cV FaU< V`\vrl*' JSףv)fbT}cNn3wp̔_+r ł"OWr(wյIJQ+<vBYHS8r"Ȟbi<3o h0Qp>5X939w %Us=alizW\Xl  ޘD&xG6kfbϽc纟ycL? \iC[wV{rG[j#k3O1"4`C@]lON^Yhꍷ|NfEٓm!a#QLF`sŘFV[AzB?_7eSoSxgL*ޕDa\H T7j*DjY8_p7KVJ6 +3⎄!{Ed#ncNUeeeFFW0T-#4/nsT7C2[ *;eJw C}?տ4Mf0NC)< p81(E+,pI~+ ?bGKW"+/Ac9RI?1ÞJЮMiJG.h1CX"5Ж׍GzxLH%Q-0J?nZ օ1Yq~_&+'6@iy+J~([E2vey֮1B3_zu +MYԛ86+$ø/-C~dog)ج΀#f8b8(3\auPvdP<|"T^8jѳ Ƈ!F![87/1Td'!/Q{?MɑC~3ԢU~Jب0,M݇CB`DnYKn=g s,G+|L5$ɞh("1z/5(y/];3n%* 2dݼ| h< + + upGLJ1)6Peb66;#ӊOAvIo7P,‰N_P&d^LD^..DwO4Ngdg6^h`Vb&\fA4B"c"՘ µh,t piōwQ8fJMZI0-u}"cvŌ#J 903KhgO,q +VoDjn\T {e!+u(m#K:3Q .@ +)5}>U𬻄j]Kdbr>r`dǺ4$)Uv@tum qC@I"4bLc@&-v22kD;yیj{*5Rg-!-ډ5ډi'ҋpGxެǼBg<HΛ`C-7d>KBCodKIQa ! ]OkjVݥh?pi_S3=juPMbx,13 C_aJ<\lzg]e\؀%rvX} yC$Hut]K:^zܢF)d: yA. r{ %7 \0O;GШsRiCO:$6 sDj:+lNӃ0SaaRP3QkȒXr0 +F^T_YNVsar +JZhGmW@,Hi{Ҵ)KUCeDz$Pvs2 + +.2S@b2T 0C>L 1}6zH:O@'j 5,HO͛tk +uWYIĢ* lie +d7MA年D0m,BXa7(EÅAjCL!X)a=WgοMMhSX(+u,51fI[_B) B/!&F}d7F$K"/]BߦaI5nFd6Phq5 5T\7 rȹn>C w8ke#66tyA=qn/rqw 0Zs7-(I@#AjC &cTeӂ kPb*0T&V@.5 Q[;[~@RTD/jm:7_% WdǸrC:=2rۊF)S'!tJ EFzK]a0I 8m1,Z^uWxxW9hC(P1 $H/E% +u|:ܱ#b5iCD52K +Ac4V:;9^P o>/@O>߾{S w_?}?ӯ׏g+MRp92zU|*3 h'M'XBK-%C716-;1^1TbcYmJ߳q^TgV/4]Cl 6'S:؅w.OyٰQGrY^ĒҢ6"Q] kry"XKQ+<ٶP`F)_-%_HAb_X`)֦dP0S> +_t]0Fbrro)wK#yH6{3.sFMrv;厘F"ivDGJ!d|FSHFX15*LIQhq9I +|~`-PR\st6OS\<\@.0Ww}d_8o +H 0},Up) A+Xi ;F:]42 +N(~JEOv^ܦ P7wYf(bZ0>52i7J<2 ~Bu#\eU4GQ=(MdM%xƀOBnȋC82 cBbP>P ZpbTd81@s#XTK4Eꓭ~_֗L i^ʩi YKbEi( 6d̟ @L ϨAg) nr2P낔s:9Q~8!P3dgC4AY< KUk6f4V"{CR tZ T_H6I9;|ޥ<LH(t@c@kGъ7[8e|l!;:C`xxP#:q[(m=Y (Vk:h%n7,R +U +P`|+^Js.Jh3AsE0E1#Dft;L\)r,Iz+(V1I}о+ zbmo (xh51'ȥ^ _WY{o= { -LcZ$S0jDXC7E\ͼڧ1E:;FNyLO$LuĶV\-eբ^#2&)[1@z0KmzzC^s5d}o^Id[9d5^I Aq9;r]~U^^#i3klaǝZcŦtuk/rCi7;9\0 +W<.cÒr +UӸp 51/p1=Ɯ?yK¹<=LڪE}Sy=(9O'Gs?Xr#Ko?gv'+SXLcZ(- lڒk*'=UlwOD*l#Pc@.CԚMo,4V RC Eȍ!Ld]cFW6T2Mo/I`M3ciqL^U$)zX9ΩM*H"eO2]ۢ_M +;uNL6ёؒ*GaS6$6 Nؘٶ46"QLc|O2ª>9uuCK_.#@MZ}Owng=FUo*~{c +_q.,_B:VuDV3"Kp.#cZ w߆J;Rb8.CvRHn<:n!yXs$\)J0iLYm3 x^(K}!Yh*=V@ݿ9Ui5q_CtDi99IVMJi ā=]^QVrf&mzOG5Xܝ0Id ^em1֘H ,$IIFȒNa=b r\0uxlƆgdލbaSHg6tu+;bHh +̼cvg{QF٪Cx0/H>"7vͮ+yCWj6C rd"=ؐ2&Bۓibq{X,E.Σ$"g +]4c0P BC!!StW|yNޢّ =[׾T{ܿ=_py>w_2wW>^qXGBc0:0ø(磖+T2xBjo3 +r,'U &˳)XI +5vmhl +$F@{6h OQQ q&l%lAx;#ɮjsnG[geCT:@ag11ND1;6j1e/>u|d)m!׶;4KC%Uca cÒȔ6ҼkڡKPAL>dAݑXfKF-:tÆ_uUH<[ۚtc.( -٢]G0r,e qX`qXR + v̞lb0 $tʞ ji# FI"3#V4ع\*bd '{SVEksx= +Ue :D1yQbPB0s୐e, +MUebc +S$-I͉1ŝct9>"K"A!"WXԹӗkڱd[Y^GK=)5:#ihEf'ZKPP&X9P1ܙ9쿬"#Մ^ش?;hDh>OlBC~b0#!=c'p1ey~_"mMpD"g nRh|i<5TKK*PkdEXbYJf[u-娐C3;/Vҗp1g?ĺ CH:+]"D +kxbǑ;߮[R^ kVզ)엧z13x6ٽJ Bó.p:}`][]~7M!Tnu;:hLCX-d[M~ʾ/5};>_omy?o>~ow鲻_yr:q$d\~xe><ih+a gVݝ^N3 _wCg>oٿOrs&2 endstream endobj 23 0 obj 19328 endobj 24 0 obj /DeviceGray endobj 25 0 obj /DeviceCMYK endobj 26 0 obj << /Type /Group /S /Transparency /I false /K false /CS /DeviceCMYK >> endobj 27 0 obj << /Height 64 /Width 128 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter /FlateDecode /Length 28 0 R >> stream +HkUG8ܸq',- EKP*BB%)666RC$VjC|y_sߏl3_a:|̙s]˕ǛOןO:i(q!Cۯ^3')Z]uq{?ϳ&,Ѧ 1Z3)Oܠ=uiJ=Dq]z q({F'T430?l6m@ohN}z^M\2ǗEqĘ47dR۝ba:ciۋ#L?u*ņLO4 3r?C"?-S[I'$Xm5M&= 6$?+aοs2NC0O7~ WḻX!yxpN ׇ3=*j%7FZJG-U8g~ ''){j8j=ը8D)D>Ӊûv*:)"!&<ɢ/u|a;[{#m(A2F"gzd_\x'lʾA2ѓ"S +՜b)WB'3m_4Y a ~dX!IF<-v VoRFZ痦.-Zzy*z<3|5J=i0at7!Hz i +g(4*2iSW| }Qj m5z5)τSbE: '2sbGp..h9Ha +aoLW[€(59m۠iC#PGCCZ%4Y *if]aAp7$3a?9R89hGO-M6̰gb()hKq59( 3)ÿ͉AƛL|sS㵒P*8r(L>>)|򣄇2qdȆL&XG`GgO΁X*z'XB.EoVb큆'ֿkU_3_N8"d/O- 8;_ (PXc6\' ZuPjDUɹRЪ5Ҷ'_)498'dB$r6Aw(%s&&K~U}͆1bϡ-ݙlKCYsiL]`ID+yDK-p"Vk> ?M#$JK5=̔ +J$3#mem`HF)sKn+`FB T: ~ \H%F7УC' +P%ЖL,_89Ȅa*+PXcFe`V;Ɍv6.G'S7:뀜 Q)k&oא +h+'߶$W[d2&rBj UGHf^6Q\k/g><qvnhU*((((((;WeU endstream endobj 28 0 obj 1859 endobj 29 0 obj << /Filter /FlateDecode /Length 30 0 R >> stream +Hlˎc Ad.,`"pl/:c1=y9ґl C_֍O_>>W_=Ο~u/ۡ7O{Fߝ.ß7_y{r:<z|_緗ϟN?ԯǗ/W1CvP.8ҏܮ/?>}ػwy'|{?^秾Q8ИG<v^v`esVc_?OqZЎ#}jXX.9/HK:Z~]-,9q@VqUli-%m>HFk#2I\gCCiάLYm6t&]m dsjϭJmmvz̝.`񝛎d\ =4?XlQ`ڸɣ]~K=oL瘒/cך/y`ѸcxKB<Z֓$?d5v 1>.l1^^ChtI~\%1LW~YyFf+#%cꞥ賕5Źx8Ylc=כf@u_Bk/ g!䡨GD>Y=2&#Ҭٙ!zE1Du6\H&-wȓ+&yq+:tI\=SLp{t17MA6uSCػ\uҚarMzy!e剑mU뀄B">hD-[N\Zʎbzi{{kD-Tͫ3W$5*G9C9d#/s*z`>à4G0To,3{kxb;GT7iL ^h+z1 p8=>00WLš/,#BNc1NeA)s6j;!cr*WSC2 M/5{A)[&mDb_낾~Q<۪~mڽ\Lto(8>(l@}'g SjY jIֵck>Dd{_; 4pv/9DARs,.Si{Ice⋹pKގB8{z]hK&5'pKvG$^ѡO/N\ +9eV u0x~kW;ާnA4fvwſ# ԷFAXH,("f,|^_"A%9ҮִG1ƾ0W7˖1e%;S"dI&B҈sAo物? 箱O|`{O>mGn}AV\3B u. T `U*}^' }0|!>?S:vP4!H 컆dҀιکCP7$`4p&&wu^0b#<.i]0xxb3?46Sꮂzm@hC3-E*geEJz/ex$z[4F CS e8xs5\R%W^4hbkV#ͮkϔ^ZC~- Ck4 +|(t <)c%~\7pF1;(3fՊw鄸vh6rv85+ӬdS)Ob>K`_|]vS},fa9`4@I#GNI gV%>@S+̙}F +sc6QCz, +Js<964Mۤc{ +j}$ +Q3zsi潜V)yߘy>,! X,BĿ>] 9{XZ!=&AZSpNOPby2,C0QwH4w +19]R>ۯx`(C 3ʨuyX +YX{(8#զ &Α^W^Tm5_S=Ds[hLq&PL`82& +U.TB3eaʋ!\_'\"ib+~фW{]>RymǗ0^:Xhf5siͺSEuxݫM5yA:P~eEO_hS9Lh姁aox"ngy/ VLOԮ^$La}ٻ3;!Be*CHi +. r+d:5]pߤwgi:53=򊫋 6Z](ZF,MBc3Dfi[ۓG>%&{ٻ.RkTj ):Nt^qR39Q^]Bm(vĆwOc3r* ǹڿሼ6{CvQAw ^k& ϧгY<&"wIj?~|mKt q:N!Dkܿ@=V7bX pĪ_^4nK,/]R˟/ϖo%Tk?nNWU G8^'DCODcS>t#wbָsj wD[8~Eulu* +%uFսLO֨~[V.;/TE22Ӓ%%}tM Axy*;BJjYً&9P@/DŽ2DB)Oy9ÝRxwj4iryGƃ]Sk4bY{FTu'$6җEv0Y>/F6s I-/[P^Ô80YIEt6;E%[0 o4QxS=J4wץ7+51sTc6]hJ. :Ҳd-;Yu/d,[~Bk|rn; `Ke4ٚj#s=4ٍ{_1dCfA] PZ[)-^ +v2ИuqrAbsܫHJZi_98xdw1s~$%rea[!?%vSx{k݊i "w<r%A& N-xcT8(dczabQ x/ԎlEw!7L&c1ibgLv+Pĝ9Fd' $ІtΑf=ax^IcvklqVhxQ0y(sH%ɫzbf)"Ca3+jU4}T Gߤ|[&R^iQJ] +GpZ@z_ÎG^^-)Yf]Xͩ,4~E)T C9'rlS$}]*`2Oi~%4iK$Me bۅ钪Yf{>Z_Zm_ ]aKѐYY5$L@Sé3Ascru!Nu"m(͖ ^*b&pz6pe+˦%t"=pZe8Lѳqu@i%̦ n=1f1z!=1XtCɢr_Ђ֪1t<&l}+h *Zl١le N;mR2bnǺ ??yʑiT"5pO +.l t v͓g\[ՃVhFm\8ɄpSb|JlyxRj] n9S/=䂦4$d9bG8!:оC, 2 07:)jv6k>b04vvk{h9jFdC+K֕jd}Ӛ lߎV'XĈ oFgg" YR&kF%bd2twvߺs/dVuB9F5 a΁C4(;5,JftlxX{EC}뮽Plg=?Z,p8N4yvhXk02I*9lj({ ~ӎVۿ\v <,"YIWhXlȐ>bңC4ʮ 5~f앩i2ii`xB-@fzRtҾ3,K)0PχlaEGԢ,F4闢ɓ9)1'1o/A`}xK J~KSH4^4E#ӷ߲VtY$5w,m '?J]K,޾Фe]c@aE̩U<| +voEDr]l(pKMKo%玖KV~/=֯nsf['`](m9fƳYDK͘vEEz T,閙T][ LCcXn+'(0k!h}ʸsegGB(|uFԚtAjЙӌ~ŁTl2ӕLF{1g/E_`濢vHrA Y0ͤ==v*dw>(xeƁ'ƿܳ$bj`# a^;eZll#K`,bBA,ƈ.'v+h~`Omo69G䎒!UkWoS@~4ʠl-eNpL"hW.qEZ#>%|‹aD-l9Mqg׿_|HrkZ ǨB5˷,*0$T!fe'QX)0/zV=%4Xp%^͑0:n|>v̘0b5'HhΨQ6nАQrQzVڳ07&mAa0t/l9\zq-f1]yk){q EE)a _`ep5~ Ծ5w;M[ٔ:z}TL\͍o^h sơ=7>%{ !_'@F9mǂZAݪ?JrܐyܨA9@NS>0Jّأ1&ӣ +.m{юkl]Nn&xboTƦ{. n3Ngl]b)!zoO|5cztmVVd@DFƙ{{أ8uW{dRUdG-6U[je;j XȚ:S.{C +chCUP65+EP|ݲCNLa$˰ +:/;^X&nh^a*eMh؈l^.66h*1|&~ +ҍL~S]+g XA3Պٖ[w@ȉZ;Rmt%;6Jr4`;Fpbw_F( ӊre"ۼ^嫸G1 Xۊn4joI8Yp';~.ը1&SU]awH@v[-W_l7 ڠS_$9XjAugbnbڬ 8@,|uR?tQغCr |?(g1ns8Sɠך.. ;(0E0y=ՎW?7ZҐسutgQA*~gc?̫`b +XD't0j!F4mi΄X{z~#J +=8 M1NB #HN0l#~#`[@xp_gqb^. t ^⁙8%N _Y^)TY'V[tEPc>M|mjԟ_{cք%@_Q`R%0RA<® CݲӞn$5PgٻsP + ׅT"ά(yDj: DDަxJ(l`6эUdhc%2i9ڢBb9Ok Ҭ%5Di4uU`tˬbI^qN0@gQ5;5"EI^趃gf +0_d `%$ eU5&es,%1t>G&J,]{bhf{ ڷ>cƓ8l 1{țqbS iA}g(_9E̹+Թܽ1`9`X$VNgs]XLlnpn4M@'IYd]?kBL}=hZ ZV SOˮV6)STP$.JTr;NvžTaMbsݵ[W'U3OIkFZbEO~ر" nXez@0=]# Vx: ifbJB&p+1'kCnri9O8MMzv&In$A/hpq:lȌ[!Ŗ>2cL\fÉcrvŴe/nX̀רRƕf H S1!npza)xtt:ڔ1Z}J\Qb3E~7,1+x(nGl[,"$vA.٬$ Y KB .f:">̉%i5|5X-EUYWl`Zq("%:8vq7лRE`(O afϪ&,[L0rv =eB7'sI(hG+6,N,'m'3 BZ0>[K-~*2pT 5WIM!.+ܓinQF/Ǐ։"5rJe}'JSյJ4Xܕ3l/k@L[6? ̱{iiEW+ PE[M;KO`*dDz>}7be.p+ؒvse\hv[(P[+B'*sµ`"qan8xxb xE0@K\umHµ({;H;I6nrz68m 0*fjPybۤSZS݊\ގ5"%"Gbנlxf(.=esaX,@3$b=޷MwFĢ`5fh6DXnzJ؂t%yUV ^N=+G[)]t `펿2@1q}b`NEzo(Jo3󊧁M*Cl|U%;;)J%P\Qnnv*4ːޗg rӘ[0P9+'pd@JJ#f`ۤi<5z/,c6zyj2\- ?+gFM)֦(7'iB]-:$G'(ÕfƇGBFR&>YĥL{hb+RXU6]ԬEv9&cBc~5x$uv<{vx.?Lؘ zJ>DrQ>:1SFF.Ȑ!UVh60.kW.{IorTãդſŽz5%$O#l[v)}{ *<O'\_ eّcXԇS_ÿ*byi%7 9_5h[Iyo4ڲ'0Z +E#,2椼W^?C XNv451t<>EaM~GHB"W u 4!y DŸ䳶?jGXӔ +w뉈6ǴZհÿZUU1UXaNܷNQ42}սRAݛFӅQ'ؼ-|]F(PpjŸۤwkƯqa#Ȣ)!p+!MxcrM(MFԤUЛX{N"c}*4T"j+EYmDt'2ji~Z o7[ub#f1QbgO6 +N[7VG~Aza<`t6E>X̷`pI(pʶZr](PT);AHzG?&b *Q&F#>V~ZoyOc2JfVuz ˁ1ߍr*NBX t]qZDR ƿm525Il4|`gʡ(>ti?Z ֧]at+v +}q7,ek ux-KNyi,`hi?#zmJdra9ّ%zCkrIB%vy%:D{R7"30ܴΖ.J?Ghj`R6jyhPsw4*M l㗒Zi"7}ZoM'%j,~-n;6AcFo <@ KqTU7|M[d?PwI-)|Y[XrZBX}Q{-Hlzfk+i/E{Z8/,oWFMms[\hUbodg2p a' N#'Ue-4LV窘h?s@9qQ5f%@_*Iq +_}-4WIC[kkb]2,P4Bh4ʌ2K2PQ3 uHҢ<`h35 k,.H|>JlCeBg&;rg707F=LN (,kedϗlz' *? +NȢJc]hKΎ#ʠYZ!]y5@J"Un2{vqlZ+88tl>Vu<:}b#:'Y2LӅOCvf o?$exRgx[/?j>D^>i?Q6q)aoErZcUNoSg+` {mAha8o1Ea#FrMV%)H7s)^X%fKapiWuz]e/%Ax|<+TŭyХS@G@rԓTF.cAYCB9* ?5v腑u:=ztExg?^#?%G '; S>pgT"[H9u)j` LJ|tkJN9"[;h4Mw{]ny^=)Έ]L6ʴaJv$>L )s.Y +ذ~ʪ~~WAS14=/f-uאaG2}܄O7Ӗ]$,DO¿Mng%!'aGR +ö\X P`',׬ugnuZ43}îJ}nO2&lYr58:pԠ(,jBQ{Kq`UJ2ĚRL)e?3赭aKtd=(r+rJ(AkPG +Met,XVrE=Xx~yuӗ#͉@FkruF@RB}m u0yL fl|<2V$w봧UfunaÝe@ASKcUʗ 5Z.;l<0Ďz@+.x*Za~kkrܠM&J~#j'm8B΁V"ly;Ԕ}`|/%gE&bBL@*6@@H6?98m +UW(p1S<`e0%\ޕ +*]+Y?PJ;>`>h niwo.NaɢiP:zĿF*%dѩAMvd j#8E?iCPV^To<1l%iGNY=-sc +>K֡Yr!jH+P'&gť{媅#\-fO0v4ǝj 3 BTiuh7hd5%2/[~z(ǓЁQcWwȮ#&Ԣ +;d6G e?~UמZ@1Ai(] NbItعy\w-?Sp'q/ <_8HNe#+p,"ڜpC@Q3EeˑZZ/Ydj*XiȊ6m}j|%.tlf4D}giȼ*_`I7!|'xoex|^47{*'aO.a4;ޝ]"끉N{383hNK}euY$w5I2OGZYާÜ +Y9=7鷼_@2D#[ SڙOX%eqoȢI| դtm/[L`p;|m:"VKo7N=Mb͍9iȫGc/o'X3˦?MtzGt4hpXX}BÍ$zw4`ped[',8*Ghf}  ^,r,;}ddD5+U^Sk15&~4 j+RmdĪ|v-WڼH1&6v^1N*PŀHT,#{ˣ!ZAv-2Gl]ėՒJ ti0c|6-K#,WĦ>qzB"W\R|^{9Ƹ eq3 5Sf8%?=A5MU5IX@'4̿24Iuۆw/jjlq~̵6J +%wڥ7u+3n!v5~ +6tXt|d0%{pJĀK[Kte  +ٰ;N o y&_$W w IdO |NO-"kq5}ȍ`g3`,o8SG/lҺb::40Qbdkvdtb/Kr7":L!$%b-Di]Q]QO/"uNrD0<2,Qs7QfH1g`>϶3A`t>6=nPte +Ya4U)U1꽣hPSh+ܚVa;s6bhDm6U/sx6olts/Z՘>]WhWKA[" d7Vs%{@cS6G;; : +vdWae:Y$6SB*j+,p4yD凥Z͉ HVǗ/?sI>t "zX +dJO47.{+1DRʌؠ@BT78!,nئ[Z|Q"ڒ.K5 Q/ QM%O;!˄ X,M6j ]qPt +N^5p 9S9dvk Xp.}asjw8l`ø I1Q}%Ķ,6~U[^!ȸVibP= +Sij) f爞@`tPСNfu^ +mA<!!;2ISLh5 + w*׾bîZ!41 NoC2 d B5n9𻄚 PS#r-&)¾&1ȍn^ }zֆGX#@_D$SQ;tC{yd$2'1bl%C<20txfEwɀ/ OVM*DFR!՜:rVM\C +@VFoM<ajFa٧A 8/0oM19D߬5am`̳jnw;vT2{@+zp8v!*TJ"XWA>Cai`{NW#{TȕM6GEOYBbhXeb<&+GC׻:ZأBi +)Հ0@st}Z3NF[.%[}yc,~rVㆾF6&sN'>ю/1!5v;O\ONg90acXG{gꍁAh17 {j\5ܡQ4ebkaC$GOym`vX,z~E]ؐjq\R"7A7x{-:+L/ي+iOc0,kRGK +H h3bqImjOL ,q;fi0 >ЪRg@@aMQ:,Ы6D +K80Prm~䙧miYVn +@" UCyO39KcWB&OȞY[`Q 5TUK-3?D"`R/ {6Hxi,R?%lzrw?UQa +d>xUP%EXh[>:m+p5rGAiPYic7=~P"4C'+^Wv'p6*-[3D9޽3PE &)ЗİB!"iYXȬrB/snI DZ-&y-݈7oŗ¶[+x'Q@M)XB12M +-g)({ʇj,w$HgVUսh?eV dzϡ/9oY2 tG ktM$Xd~~ri}S.ÊQ4,46شG+ FØn_JR7[Bz8W;bRm'(t)s igiB2òEHUv*y扅.d`}e̘HMXgN} Ǽ-E:[2 +>%Ð +l &t WNN%T3BٚF; \H>iSh00b%ȥëw߭luۣJ _7R7 +/YMU cM4vdS~y=Ntb!PGdi +G 4vgp>yQC]d6;<|ct@"% 3 Kp<1F,VSˠ%;x_ûypxEF/Wfz{v2![h]!QmdNq@q0 T v &dbV"$k9mrJJ ӥ]aP _c6jBiz2[CGY(4G2ܗ1HOYb}%-Lt9oV:lu '7s [dH;Yq<4͟Q ѦȁV,q}70S`l,zHP[.F%.qi *!v@MC#: CJ~ h޲)M_dvRb|1HZ}Yrݘ+Ƨ +t紡`t7ѝ'RD cRO_{9h"LdܱC JBLQ-ZaG9 UXIIY0R3zC9.u)ዪ܎xG~ Uz u73<'ayTͲJ"HHVPJ4`qJmV( ZBp-!ÚQTwK$A.%x2ŘYƛG4 *y ˜Ryo *p +"aeLdWfuſBrBlR62CcCt+G}1?oد?^q\XZ.z }mh_x +}_uyإgp$Lge˽nA o}׿P)#{Rh{@g@/#QNprÅ}+ +n(Tf%tiD;RLx(G%~B#SNϢ`٬:|@mq!qҹaEI@/ŘmAґ/Fe} Ug`དߵ,wc8"){y툣\Nk+gx=ő [d4Hm#7;njh\3:#>yϻ_j 2SǾ5**(E4rTRrn&Odcls;]Ayq[?( LǗ^uՊ@@v,KUU.atoX}uoml?UNx:|N*߱(ҝ3ȉ-ZUvVZvݢrxcxE8V˜U'6/qOhg1!9|1JƣoYV EZQz`y i h&aҕ}{9B]2(JNxk鬢v~*Y˕$C! +boۖ.D '0'.9<(nT\$^Pn)yfLM~%VB r6AtC5r3A]&W)ლ1^'H>KlQiH3)rY[C9ԏ] tf, ^F#*jb}QkbQ2jTn=: 7K ό-1 9#PRU!W-Pw ,CMς]><' (v% X Z1XcBhh-Q-{J^Kqsf@)]Q1ݰ!1yɮ#F&eΉJDg ixX^+wMyѬOsƊh +ob6om !bJ !p1H:ʮs;̦fJÆThf@"ڌ +j*oEr>и92B"֓t0 .N+xн`& Iu٘髈`2(^FwE[5:-&]u9kM.#(- +ԪY/SY#íDTı~x*KQ(%aPr7ᳫzȼ`|M@DOCzZwoŞc(D,$9aLa /gqP+TFr$.'SQ?"E;f?~^C1wAOf7(!|+fZFx%'NK+0TZhU9!F$#./-.BvE%b5V6֧qhd 5 +*ɨƸ1imR0fۣ R(6lЖ\@ idv +fqhx00{ب{>e(PwCQLnv(U=rVQ~5^F?ih; iLF5 +jNZ@jpc; y ʍMLsC.z h Y$n!bfnU _'{!*C?u|KvUblHg^j +Y}m5|d."֢Em'HJnW,r1=404|y()İCoEUt3Ug"`v]V({5#Ld>sھ$a_V/)]GF?B5^+Q?_~}ߒ +m84XzMrߥǀ!Br""m~%Udn!^)%_JR$U.;Y S[)a6@iaWFP[V4`瘨W}LF!pp*sB JVAc =+@ъ㕗#+7FJ?X7Qi Y ,)W=@$g,j gƁtuxƸ(xclȄT-5KEh2(#`\cD cɭ۶@{# @m{sbG(Zct^ mB!O4h( ILU'ha1YDY P AoqE@=e_;QL{J?Q;jT1OnɈyIcHy |$NBJ`9rlPbHBF `UZRW{CZ*.{1@(WCb zٗ !wpB1Alb|?b!|Q1N# +$|u,`8ZAbP,a~ EATR?CH)1f1 +&xba(3A"ZknOgCre2,5=y4P 1:Yg8>2uUB,]RKbi xL׌%3^*LpthcE3vA߱LųSIӨb=Htf֗&цpᮠZ{kBÆ2@NR11'0!ZazPtOby Yh%Ær3Tvۇ "ܿJ)/Y#QD8_%iBZXbETeT}0Ÿj˲;'ES8)Bӆ>CBN/RGGmmB=hb RLA8Tڲb1\!,ٜ R2})LVK;Xt+,]ʩu %oXwj*ZI!s9B⋱![IB/>nCcwb3ܗD3}8TŨń[Zzj%1}2J8d3S-RZx :`aJAN`[KZT*_g;0jmc+gQ}D'QƜ 2WPNI( Tcvճ#Q=]+ɵ4*g1]#ڴ=ճQ=]+"(S2y$feaJ$=~iTR>W.%Q`8:UJU\OR ~9v4MMFkKbW,ّNS7ϙwMU{;\X4$Ŝ%dKPPv U'O]!6q#gfM1*[ɀVN@IneU/4z%Gm|N1B^m +^)ЮQk*ۊ'mҾ% DEk]a QWsG-us☑IE}s,N}ɑc|w= S7̟Lz 9z䈡z*;*8-wB|L$LsW:\ϡ~aMm{dgߖL_|ش</ԟj5gyxQȱ<Җж<^GLMOŬ (ev6˹Vj(UPsHa[c$zbSvM-[DoENpQVW#cdK?mm'Y<MӬ=}"#tӧ riMT$a=ObhͱX7IH|,f:;y[}5S4%΄b=ubd %uuRKfדaJVSv~LKB< +y()g9(O硨<θe9Xcrrn߭ 0-2Q2$[I3L/9DP[Y QD@mi}"Jy=6\BuK>8Q)#20=h0zCqcCDҷ]C"/BbѬN Nyy(s=o#W.$xkdyT.HӾ:-Rs0|ng/uZSux@Ls]"s߱27˷6KVڛ{hKuN--\F; oWc(b>A^/v-ȍGٖL4rѡ˲pAThYdC f g=;(4e E#/+[̈́n.1ح6gwfQi-2,W)sWyņ` 񜒂X[ˎ1'yCb3Z|z1zIXֈEqб/G -Y#'<)M|1GU^*g-㍕2T9 +i#.dZ kgZ8)ԏ`HJun$UԔO8jygce jj6HІdf!\5zeG+85 8}բٔ(e:xB=)3cڂSF;Ju4'+Pc{SJ9.!隞~yvK3ڃPLy46ͰffgڪM_bpPLS_<$elTfGO59WML´kGfAb[KmGz _"`"14 @Aq}_Zں֠UV3"rPi4j}o+{搯8<++4s%çF(?ź!hd g=:C[jZ@ m ϴ.PN|@B? Dd.ܠ }H# *5HIIMf`{ݐ:ܔ_fY7PdA2`(ǰfLGw$ @OfD $ٳ.F:5~)VFO9@B[뗋5QEhB/ޒu%] +EBktL/~y'T]Eˆu JJ6H +>lmapc׬~b~=v_!,HY9/@Y~ +N7lzJ"9 /mCgEdwB.#{% w` 1̀AY`mYcc5BC"= 6kn(!qp2U,|mY=1rZbbX5) Fńꀡ-I44Yk{y['d:u@1BXϱj+Wj"i3fbZy \PˎkU-42ZDB l]gTS"xCg?cBWlc\_ZBo97u#owbI^b-7l!BN|BUgG;|l\5OЫcЕ(u¸,W +n`쏗![r`ZaGp,4js] C qd`.ֹ1yh(BG@ˈ3[ Ўui/PTYYhE9A9=2JO>=q'pQH?}`RK>xOم'<< +;UTCلczX +'\wjA1B&;X5R M;iűN ʳ歓_YuYnxIIgyFqN"Fo'1D/?߿ 0?q endstream endobj 30 0 obj 29559 endobj 31 0 obj << /Type /Metadata /Subtype /XML /Length 932 >> stream + + + + + + 2006-12-13T18:59:34+09:00 + 2006-12-13T18:59:35+09:00 + Adobe Illustrator 10 + Adobe PDF library 5.00 + + + + 2006-12-13T18:59:34+09:00 + 2006-12-13T18:59:35+09:00 + Adobe Illustrator 10 + 2006-12-13T18:59:35+09:00 + + + + endstream endobj xref 0 32 0000000004 65535 f 0000000016 00000 n 0000000087 00000 n 0000000151 00000 n 0000000006 00001 f 0000000316 00000 n 0000000000 00001 f 0000000644 00000 n 0000000723 00000 n 0000001025 00000 n 0000001062 00000 n 0000002533 00000 n 0000008787 00000 n 0000022148 00000 n 0000022171 00000 n 0000040799 00000 n 0000040822 00000 n 0000061729 00000 n 0000061752 00000 n 0000080661 00000 n 0000080684 00000 n 0000097430 00000 n 0000097453 00000 n 0000116863 00000 n 0000116886 00000 n 0000116915 00000 n 0000116944 00000 n 0000117037 00000 n 0000119040 00000 n 0000119062 00000 n 0000148699 00000 n 0000148722 00000 n trailer << /Size 32 /Info 3 0 R /Root 1 0 R /ID[<33bab6c74eaec9684401d967289e06dc>] >> startxref 149738 %%EOF \ No newline at end of file diff --git a/ci/CI_JPG/CI_01.jpg b/ci/CI_JPG/CI_01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a9ef04169737418fd1c47d07dfbb69e9074d4192 GIT binary patch literal 15054 zcmch;Wl&sEur4}Ca0nV)f)5tlAviOGyAxan3l2eo!{7|=1Q^`i5(oi;yIX=g1PC7B za_&3#T>0_d{q=g+u3EKvtyNvSYW3Isb?@iJ=idN)hyqvvfP@SHSiL-e=VJhYoTsIO zF8~RE3iyvn!1E~pPuj}G!Wv-J^D=|obZk_V|J3|X6*>k0 z4fPc!3NjKt0Dy*sj0!-lX`n@3gE|GGh~y4(a#MA97(SeeyzoHi~9K zEUliG0XY9*Ispm+;632(WaSyKzM^E3TVyh8%Y2fxXp`M4%@J-!4=RXFPMHGpqVym$ zXITRPuK@suLSlch!OCKLho(uAH`Cx<4H%Fb!^m_r{m(^DRT+Tw>Tu=S@@=2r&3f@S zy#XHH?832$EyfEHE>ZcIs$j`Ry(-fs1|u=M9imP`w$QZ0j7Zj791VPGOH*OLq@^Yu z@wt*}CZjzK>7{ zo{!fZn$vUfHQh4W8o}%pTyy??bQ@i;6M9@3s7AMl`Nt7D41-rM=$I&Sni!W(gLa^@ zi3ft9(vNkR7}|53=j1gMR$_{hmGbQ)BR$bx?I~_4qF2Lmg0VvJspO0nHozro-y&|^ zON#~sKZvgF>y??rp{EPA5r1xYlWcZM^;Sd(@PBuV5{B=+1jB^JSp`@XK34+LtZl@FjQsTe>05`JwM;R15 z+z=25*$Vz~S(WjGg@{6Hwc*NjAe(yi)fVkiN%;cS=peF zmPuZRY-7_fG6)^LY{q-Q;d$>p7JG?*tGcnF>|a&kx?+x3Oj7(CMCd3{=*Ll$HXV@% zypJmKyt69@5Ub)$f)P;9V<-ygeV9wkP4#%UT?=iX{pyqP_WO-D&w$CI)gZNb< z+YAkO3Md1Zl(YZ~cR|b_t-1(5_ z`$G{}722Kr2R|W?9u6yu9!~-bK!6$d^nY4e`EvOjbccuTnoDLcdz488Lz3Dsk|>Wf zH9>S?a0NPf2SHOk%f_1WOdrTBKI~94m@nZHa=xlbPwSWUrRGDnv zSV0|WZMG-Vc+XH@O?Nv!U9t!V`L2AmkZVs>;T2(s_-&=4JpNB`qBo@VOWbu~UMoIFoV*6xgXYH=)Bg>YS*%&{2NKX^^Ht8)o zCoG-XaV}`Jseh@&MWwb^hr_F}z^G>C;e}PDZJI(xkm_A35ZyCCdQrM3PL6;&q1wt? zUgV~8)K?GVM2U9!98J2#(t#slgDrJ$Cgq^CPSg4K+LnJk<1Ul8qYhYyjO&T1VL(|i zMO!LjqwhNL*;;-305;ztL#k8P*+fV~RvqTKj#$2R`;sk&74OFLwepdwPXAap*E& z$qstx#A#^O4pNEAIJ=-zW3{P(ZEGfoXBW1)cj{HXcBQxawnwCBNgT6$1$tPl<{5XZL}nq#!Clk9E@ zlV<>2m>uuWLz1=u6O+Suc1e{Y*M6+VXY;&oG7ScYFs=^AX-`JnM2+bvLG>MF92P=m zbHHznjU*NLt+jr`9Mdbr0w5DZ7Q)-33eHR!B-)R<^t#J3P`#WZiBjGX0Gg@U@I-!A zk2?>%YF{{c^W$vH<{7}{M*An`^S;KZV&s2$402BQPq}?H=w7LcAC0n_%6iJFFFZ%& z=N*p+e`~X$dx3t4^0`%6#iA1ZLBUjvq(P}N%t`nGrNg!En4i>*yIxk_DKVPP=^!|q zd*JKl9#b*gDfLw1ec+8PJrh`Cd74^hxx3?AU+%lF?oEIj1e8cDUSGC2|GV;j0?9q5 zy3uU&(!3jU@usyLo)>95Iti$D@~`m2+@_RgHx;d!hEZbKSK*AG1?89abv*+je;``p z1y>uLIwp%ann5#Ir3U(?t4X>~lq(skhAb7BcUTn%I$-t6!gZtIzSGO>nY2^h^*QRx zHPQf=Yl-l;)^u-1+<%Ud(mj~i>zsiV z4HV7%=?2RU+xOzWr81@1;6VM&^(mHy##`J_hR$v#!g6IMModDC#ogoHs%{s^B9cxm zD}rc}kr_cyqeVyw$|J%D@A)O3wfx|?x4u4Tc+k_t&g~uhU5&@C0i>4242v~8>Whtx zm+JB%;m21Ff89gzvHaFL5tyljyKEOt$cVLqt=E7!W6gsx_Lz*$WaJvS>Li4yBAgS< zn5F!X--D0=aFwHZ&&p|MMcWjUd2l{!;yNz_DdC85^% z>J^DK1`=i)$$c-^m6|D86haD9)gqQd-|^K7JCc?zZUlvJ?@IqPN5%KTm!^mfEIH4f zmI<9}L^r*AkOMu2;-Fhn7Ws9Il45%{%`%sf3*u38e|J9?`8$bn0Me& z%~eGu#5M_I6$FRtmZ~4NiiGn`v}=$nJategCTTdhIhglVvu9x*>S}`U=q_{$eK-Kb zsFV#?YkJvkP#T%6N;RgwM7h)^wQAj@MuK96svDF3>=O5wNYN7|-ko8m1oD1S!-u#7 zQp~}{5l^OClgmyVaXuC~*&P$(5)GZ`BqT5zRX?7!QDIivIDtt+7S}hku~}`G866I^ zJkO?bl@2Rp;zE|OS^!H3DJK$yK`p233@v$F(Ds+pd?Y7^1`>!Y6(G8Ov@A-8tkqqn zaNGT9_2@dr{AM@%^Uk>J6M@Skmc$_5qxC2)N7=)bUwx;T<(X?IjuJFRQ9w1qZ@@uJ z8n{@#xUav`ULiXjkcsH%4Eclkom&C<+QMU5S$I`x6p7`LvD!MOoG<8?miTt zyMoxXAflmhWffpi=Jf*#t8(Yu$I|!fc6rEOO^Lwb(f|(Ja&;7%kP^ID{vWRge3?@- z>_|BB<88AH%1M26ljoL7WXx1nNabmOHPPV=5t=wT_$Oc%F~b?dk)_e_h*Pz%W(O+~>Ly~aSB#ENA^iBRXl7gF z<8=)5{9FE%!v&7{*bu8q{i1i!WOVi0;V4BW`N#RS&42qs1V|)?dWE0DTv`8O(Ji$i zC*p1B?pJya`Z90jxkNQjs}M)Q^S!iig~Zk5p?!jR?S@u~2wWPoZ!`L=xLT{F@wi2X zbB~x5+MakYK$8E5PSu_4sYwXgzn-_46xvd5k1%<=7% zXhLk}C+G}*e`ruWdn0cJ+7(E3cG{p);06yVFQE-3>WZ$O;-%|;sJ`+oC!GM4LMNk3 z7JkPefQ}8}p=0crtkv{N25PKjxs#cUR0gfHjduJr_?wl))5#O8@PcM!p#fpkWd5L! z084Sp3Fz77_}Y&6Ghm?RYATDCz_y*C8NW%}|I-8C3{UdLyBdG_J;~6&H7xqAzcSgy zQ`fJ{t_sd~{VK%FY2f#};sOMkkCUBnspIkJYHV8Z`0Q2BU8Wx0Es+&*St{91u`7Kk(_V%aWA%)?59@_NbPb43Qi^TL|!u#1=IA*F`D)CL#e`ZSmcs?)!~1Y%?$TJ*)LGKfOwJ2rQYH1$TEE zF|Zgkz)WjyAym`#;7m5eQzR}SP9J**r>H}nVuHWC0@H4r&Zk`vOP}N_K%RussdtIVu5xNJ%|}D zC(TD=(P2~B*;?6qbGRm22O$(qp@YgO04!9QSv{ynq z_j5YytY{(-iuOJ(44DKK z4itp%P>Lh%j7`7 zGS<9EiFwGj+T*Z;cy`mNbJFmo(l+$9UraI=9M5U{zWcni9EhZymHOeUD|O_)e9c6 zAbdA2t4r$-+3Y0up~F477zRBw{rV_n1Fk&& zE?4fCezq$K-Xnana2TFhUyCEY_6}@sCD|RQ{9A7F;j2}kRm+`L?kRg0&-s1LX5R7} zyc7^`-%CcVb%J)EY59KBD|5e+-|pe?;GkJ=O7&?<1!bJ+U*AG%>DNw_AF5#}8_a&9 zAH-X=w#Qj+=kE|P^ICn?)bmBnP^_GHxA)`Uzh!MGAE<@=QvoGfN)#n5Zrz1HD%zJ^ z**yb3Jp<66Do|H7p0*ynuhlI*W_r@z)HV)b;-&p+M8pZVpyvB!tjLIEvTMtzjEbAE zb=-?`+7_shiJ_@kud!vxILom9-UV!$PX`>)JpANQ*CMI>J|m}1#MePws*8mvv|^&m z5B}bty@JQB)R`3vJ@2joSmgO+b z$-T~`MQf(|V9#J6YU1c=I1776NJU4R=hmJ5LCBE!>CDr(fM2k2S|&bD+BgRZ6b+oZ zMo;oI`6333UuZz$jxfyO)yHNUW!ju>;8NN2X*hjIYV^aWmL^`-u}xvKQv$#U9qF>y znb=g3)LqDZoUSU?_Kw8dNBPV8=`0>(3FBj;`dX{?i^xm#R+BUTO=<1k&jp@%8mdOj ze>x3O4R<_jCaTJJB(V4HOZFOnUoMgf{U?=rvcB*{Z!$! zOfUVAhUGP3rZ;F7Y#M5)kBFigQrrIvE)#TCL1=WK}coP%PP zO66Q1qu8?m=%`Oe-0vI$SHd;-fRuEdneEK8$4aqZVt2Kh+l1U?*1Pp!(!59rmK|yl z;CeefIQMc#*&>NQm{D^dO?|i}kk?cwY`lTEjuu`i=9{u<~@<<-qbqMtS4pz`+rEdIMA}UDZ^;y{Qe!vWH%iq z*&K-3#mq=#_>TkKQS9w3-*~(E?W2s2WQ>>@mQLqMM=!4`ge5QDXUT;*-wL0P&M`t%-lo zGZUFF=WqPrVj5Vfia%=`CHTlC3Ges%Ox^e2LpD8Q0`B0ALndd?1jE-fwjD(+_*-HT zE*A;)UB>nVx4dJS)nmqAVtG~~*&^dPWPLiWJKs`Zh}x=$sILzD6>BFN7tEm~_7)Dl zT@~Kg3H0xDH*TqlP5j`4ivn^Y>S_CGD1*)^^*fc@Ae&cf=U(C;scHQmyOkSAT3CXG zEx;p@d*2i1sM~2wVL_78)oausZL~AfPayR`({T=!lJ(xk3oL_=G4NHpmRm!!*(U0* zK{LBo6h;Urru}18-Ny%Zw$f}I1G_9FR;fO?RSFAq)d0m;k%YAzI$ef3!{a*YZ8m@I z)_%2#ptVY_2ZAQi0AL2GNU_GTB1?(Pjm21l1jD42%Me1n&dLaci$FjNwgvr#7f5tG zcIu1BC&!Fbt-}5~BrF!;ii#*zk8vU8lTRkg+g9s9`vRM^?3`Yrpv-v$h=iRAHOQR9 z%TS2~%kCg-4&ji-uG`>+8!AOJB&Ji5;{0-{|9{69jgqgSWvNtol#@Tx7nud2P9wBi zhL7=BauH$%WbLF2+f?+H%oZGL7QyY)1`GsNBtUKDesu)5Nq{*QNm`L*yV0taPL;M~ z6Nfz{$SSlhPL4c;8G|l~f{RM4UT@=XGZ5Q+AR7`qkNM#drI<>AM^Ef}DYw(=Zrzp| zf^uL;wb))~5tAJ@GSj4$>N*U^TaafodX?4Yi8Zc4m?VjvQkfX;ywM)7w{h)NG$9f| z%G|2)(HT@`7pO914;VdtSK+u7Hm!Q0!xmv#FJabJk?PJrydzlapO>)4A``J{P0s*s z{uGDGn>Xh73=rIME!{@}s$j>iz}{+Lz`&%)MaOY*OW0l#>J^v)bm-&v)Mo-pwh`{1e=GGCAuDd7XRmo~`te{yhcDdV=GxE?uk#;}_7& zp~%Y05gJ1(^NbU<01f!Cj zmzCO7htFs;a)uWpr1oF21@5acZcB^cvo8g^%h8VQ!HzHmt)S81v4}Q z%rx^BpR=OO+g>Oz1Ic%|kPD(&yu*zb^k+|EYOfQ&O5u>JYKR0Eui5Q8n8LS}5rS6^ zflDyWCQ0{!qLx`F&E(&N+(5I4)t>uW>>on`l!Rm{_Yx)OLxj zSWBxCp)OadmvO{IbJ25_Got#n_6Mte+e{U`F2N8on7FWTPq)#2=q_-`yXxDD{q)*! zyHr~()Eq?yd2YnGqd609l_=PpUKtla#81LSqB#R&^oWjcNE%Z9%Ysxq#(3>`(jc7n z=AGx=I6!k)&~8ePXqIW2n96dwsnQHs4RBr*dThVeZ!t~CO}zfl3Q)C;5#AIr?&b(_6%jM-~DA!5;^j%l6$*-@N>Pg^G#Tr)`!3H$?1mK54l4Sc)~Q z?`Z({^Zv|GPkkLh+o+<8>XQZwuS2(x_y($&$@En=K0qQnzl{#HsoWxIROs%GWH=q9X)Mba%RY zot}42{0P}rC=i{@Z%fMZ3Ka)43mhhSHf_ZOKp#Nae#WiZ%tgl}OM^S2Y79(8R0K1M zK#ZWo-#S_VQCk$|a#WC8MhQM8bpS5YIBX@r&)zF;o0yYrvbYSC@Nj@m5bFRuq(KCb z@E@`UU}1qNq$%F+UEi+HY58S{gpZYH%3Cd$@dk~g%;GVLQ>PeZ3@R(qmB+SMTsI|( zrD2_mfS3&G<2{YoMECXx8aPemyV=5xMw-70%(Q*lRwGU>%5gSlCsTu$1HRyx8g@5+ zZjI~eu4J0&^~>?M@uNCIH8WY!IPlVORjB^<8xxH z^NdEh4u3TGSetJZK)d?)$9>zqmdRh=voWb(uzdcRJH_8@0x?U|cRL;V%&zYTTE`3n zti>TyYfv%WB8}c>Ktk0q!<=d@9eX1VMHH3VZg zJfghW^-3^YNRl1Zx!D#UWk?4IoD0pA!*kgi1RhBZeQV;3BbW2=_*Lnk*lOD0P+fF5 z0$FBMQ1IRLj;0u67mrimm0|a7E*8ars1zOUc8@v0VW8zBwqO%WdJ=u{5u;xj~4vSxOnQTv)Y{v~}dy7ntXNfE#RsxM5^9cn74 zB)`-TDkRG)p`3G0^V95JUz(L^_r;{i2&xF*5__wxaZ>t7)YeH_BgmN@K&KYjq;8ei zg`xqFPQ^{*{y!)7=RM^)JJRx?PWf25{*_mg9};s_)s1}AQjRWcNu1w64$6VeZ6&KI zq16=8PW=guUu0}O&0pB`-}yQ3h;K%VR7})@1?;g@n>YlIr$3n;p;Eif2acaD2yS*Q z&IP8jSC>{LjHdl!bN@QPg5w`p*;d*T9*Q8usTZJ^C;s0MSn|H(latP0t?ni*sY}>r z9)TVEGv}T^GhYC=;Joql3C`I&KG>7MH+ze#lyi1P&$1K4kW%a?$;LXDk~S?-t>4{5 znv7%8|`Z0L+4-@I$X zZa8$GqCaI$M2ADSr4A3qrQdcJOplu`t;G=u0~d?`rlab8`$SQ&JI=Thn{K%F>fD9- z%Y1v^si3ZqceE?rZ=2*WeaAbCBY$%pVx(71?>x>}ajag01}2^XvbYaVYFn?HqRxDw zmH!?#&i2^4Woo?yp8+GQKhF#w&WY~HTz*}ACJQK5^c&H-yZP~JTqiKx^jK}@)bge} z;5MSO82Z{(fc~W-P0`)?Sh4lEX->&Z^NlfE-Xus#i_^YIWj2>)cZdY`+Byz6nv{at zu_wI@C^S2XKB8lOCrs7Sm6`12m2;W| z4ZNwS@YI}bS8hn!0M+d8{1?p>B+amQ*Bp9T8>V zn0llt<4{S-Mmccyy`2TNqD~e_Q%d(lT|lC>iF1f?`b3=C!nVWsBdg}c6__df zU`>(A^+2bwJ2IT zJ`eCXBITrCv@g6p+9CsDMwn5^#G{Oi1`P7Sz<3>oimv*UqY#BMu;BR9t931NkK)w0 zgd9xP05h-sJ4Z#`6|f0E?`25~`}lE}-5&LmygSW4EF*6v6*uN@T@%7i->eWhj5#@rmM@x^|&iJIZ~2s|q#3=4Vq_+(UQ z>u9Sok}+)$yjR&J$IJjDyCqrR?~1-=C^kwt#3qmOMJ4%1K@B z$n~}0Z`NpMS;Ah=OF`Z+9?r!2>L61qe_slnoC?fBn8+_9Hq4A8{y$jbi&vEBA~SZG zYB@xk+#{_>X)bt>A?>~I<%(#g+7ZcLTDh@iQ-}1C8&O8D()@SS_6!-vzouLSO*i3X zB^Nu;Taq(Moy-&gZXb{pr0NglQZIY^+0MyHERm)+XsSXzNFCQMVuPMIyrTp?3azvu zEI?u&DJdK}N&gw^p6f&3-|*Z6%)vxZUM3+DgIv!NtYUXOrPQ?o)i~qB+^J=WE zR#4yr0&?Jbm2?MR*-`awWB&N_=V52GpPjy_2HnVud)82EqCB*YeFngmZ40ZWiq0xa zOXfbvi#^EmzZQNWWKDJRu8&{iisHWx%lu!zV%j?cHNqxu!}z%}wvXLgM`CFA4&i(V zN$hh0dg<8f`1h6xyQEjtCE0UDk4OJ#@5_i>6(16=el1DI&8Q*kn@CP5R&qfvk6VlG zZIbi#&meYz3DkFs0)HlUvl3YUq4q!7`-I57#6kbv*S;94{@Uksdn2Oq;z9TOWpA2M zi#&>du49aTziV8D=1KJDAd9@hFY<`>8JgA(^)8**c)bc$MfO%5G}@3Zp35~EKBv3( zr6uDx61At|P` z$Q7`zEvQ~+Vds^PYAJfz`h!8Ru!`ZtYkLyB9VlG$p4Vc`$heY-T=PmbTepBU2BFS& zKs9Rfar2GoklM7?`WxTFQox!r%&9%mRDWiycq44K${RTv6pTpcT&=C{Iw4fp0yEnJ z5HFO|RF}dk8WFt(fByselv-Z@Ft0Zy3&qI@CfVLen$2D4t^;*vi<+S@y)#88bc2t% z5K3J7c9@A95EM~!(zY^&m`@>|4g#vvg!nhG#=fvkH)P2!#o(V&&l~ zGIp1O#x1*@eDg{b-sQPu1aogK%U#hm;jR?%K)T{Y_Y-f?N_jW-1Dssxsd8CEohI6c zSSjv@>#yy~o}C1$jea7-u+4*)h0fAb0O_K6)tKZS@SFs@b0BQB?a7T ztYN_ST7u71zug*pWnL*Okff2n3Z-Mqw%nE0?aMJjs(3RQC!p|1$+tj00JzO+A%KvD zsL2J?({s}c66p*s{mjDswU^sD?E4IeGdU{LmZYC>Q-r?NEW5qBwk@$_>HT1Q8#5k& zeqgLx@6yey>&yQ2MB_+$YxG9jt5<^QYSafxmvvKfvUe|3-@SHC6M8V|?AA{;_94#Y zJ66E5$q*=Rt%Ef^mEv*fezi7C3gN_EK$+2VTP*+Ww+q3)J>{J2PwqD{7>@=};kIc7 zPC}3B0ujl(`gcR{g7JV6NvwmflciU-B!3D#D*9XfBp#0 zt`78VDhRMFmQF+=T_#H#pDQI1n936UqxEUXAY-ZGA6ET`P8watCzVgg-@f;-e_?_q z*_X4y512c!m>bxcsrs_@@nQ`K)v_+w4*@AIs$mr1Xzd%p!F{r&7d^ZIb>K*f7%uUh~m zklBAmZHG3fZ2q0C(q7u3f96X~pW>H*{eK0Taf<(Ep!pi_V(q2ZLP`&D!vdqb7q(;^ z&E5&)a0t}(S)l`0cxoRMz@%a;ysk#A4L<_FMH?D*9)m@4{gc1*37+aEaq4~CygRi0 zDNh#JH!zEMeaL(CB)s2LNId9_Y$vTfh>9m(JL}9+2(Ci5LGk~aRLf)WA z@t2;OO2xNm@9Stg8rOHb%w5$ICyO)`9(1&reE(}E#$ozD@Je0#f5$7RTqyYoRp3wB z(RYVpDngZt4-2>Nuhf}06K-gax*I|%OY%_bS|0NZSa$?ZayDlCCoe`XA%v=1kPQY& zCu$~z8i54=PIVy@<^wq1JxxOmQ*8;nUwZ};e<@u(8MhD#ZCWrk1cQEEp&>F*h6k!90*aH9nYA};@$x71oV}`m z*U~+ z858&rrTT^REjv5AWvZv^h=`!4B5yv+7n8w|Yj%%^JuIvS-V3~3Oo~El(b^9jn&&{# zXy(n`(FyB~Q=>l%nqj=tC?3c3;9u&5vUVt_#Yh6=U?A$I6^8B()<;~F#a;0 z%3E3-K~$A1Yw+GG5*EVkEV>fGR<^Nfgo8ha73L%0h(%TjR(h}B+f^Onx&g{h7*~C- zeo9q2EE65MqYNw7WH$Z0i+wf1XR`j)B)!}4qQsMl&MbuyDkB%7@SPXTn8vo|f@q#9 zjEEDfqEjkVZ6>NphDpvw;0Hd;U+?k#EfLBL`z<#?S%SScoFi+_lPjRy6+V1S!E_pK z69&}GW3#5Q3Q8DNKlrLYs)pi|I+kLUeUuX#&JZp7dT40Tqgle;*{3B@V50ql58H!O zp8D-}{4Kg{?ZcVB**E*jU@H9yr`$XJ7WvGn&&)-4{!9TTVG8;cbk;heIK#Cnafjb# zQ9**AO7-_pZ{51Btg|ve?u8vFsw^L$vL%+VolpxORI$oeMaNsx0=D4D0T!)#QCN^_ zay=fg^rPN%0i#tq;k*b$@LBS8-#{-_g)ehhizroFTn&k_9r2aRmZ!?nYXET{{cG{B zv8L%T838hn(cgO;edQ@WkuO{+nNvFIYS(y)E?3SC-BUt_KG zLv8$eVn_5lAWBf9dww3mkU+Y!bGA98QW^f2G03gB(?m;S%u&dH*(&a^H%%MiAgE>X$gd$jy zX@au$Ja}CbmJgdp#w@-oxBlR+*Ktz65O^RaE~ML(G^H@8s4BKxr+22>7lqbGIU^$j z#HFNs@ETYT5AE2pYYGjsE3M7#43(p`lewjrF%noZpyP`@0VyukB8ipkUjpAZT%-HtS0wWF z@t6mbLpkmvLeb0zmkc2h7b!sv1-|KcA;lcX1QJYK&Zpzj5af^e->fJRM2BvR$r^HC zI%J_~LE^j$LnP(B;^0Ddgh}F=1c|oX188+HmkBR3oP#KZ6r?PRsSK&R z8>@vLhAR7`P<_JptrUSz^WZb!K7-b-orlCd{j6Z5r{WnPv$xrsdV-WCByNcBRO^2G zPJDWGYcZre#?4u}Uj(ZYom1V;jp5>r*N^uftZC+Sk)Dci}L-@weTp9cZh+cxo+o2EaGUEq+jCyNblw*3IKBbL-Z-w40 zPh%b1g>>lYDeGI!cO4Lpf; zCwbuaI&b1qwEMvfFfHW)S~m^+l8+57@xSt`n^RAl`YEUlG*>m%!$M|)NPu#T%85Lp zAcC&3DhaK0sD7zTjxSglo~T_k0`9>~4#RS37rgxJ5itH3V*O!EMf|gAgW7qF-d)G% z$HZ5cuWq(=K7VmPw^;9Far*gjvDBv_&A%wPQBtrP7{N7Vzv!~qajqIFp51T^0+yQyt6C&JZ}kOFqr--7R1KBqMC3XvWsksj-j6euV@x0txW5x2ZltUJ=7v9Tn%At0rFU;;>rLPXQZ_gLB}Ee z$MuT5)Nu6_gqm;!TxYz+TiOtgnaC_lj%*R!C(1UwVu?G|bTp2>D?^CD7b0esk><^7 zTX62ZW zu!vQDWC$-wn7LfD&oNaCep-e!3vTU5r)PT<6E}07^s{LtrR<21+r@prbGrKbPA6-g z#tO(e5`ZPQttaAwB%($xqcA=4O8AACz!(zV%}lq`?Xpe$on>IJXQ!7a$f}2+Np5+K z*`o|ECajt|l8=^O5eD@cG=>dUD6oYALnW8os~e5UJB*Au^|UP8q{ds%VlZq^I#1$Z*AmPfFVYDy`ZF?S^rGF>XfkVspw4rADtj zpa5Cr=LpQk$MJFV2;1%Lr1#sLx1&frwRo$0_A^Rm_TWBW(k`8u%=D!)-V%amJ|_+kNjSwVAi3mhKcU-ijzG= zofv~Hi7}JPiaTl2#=4MTJTBFDe0Y=W$k9rqneB^`02Rb8 zo&o7DE^yYlavgHD(=y&+G|_?uc(RLEPEG%aXV}j7RJ7W&fWhw_t5Yb~L ztY-UmcS!C9e&?;-Ey;GNHDI~zul%?6{%P>FZ^*+1TlZx9ZC%g<_V3Y^$m;AA_q0E! zTK&~~4sAmi0vCdkEz<;<24SgFii7>^Hc_#R(N$3g3>?~Wn;EPcLU?AIou7Js9qUyn z89H7yr9z#44u`%IJOBZqMk~?Ur3}DfH{L1KJgSwWebY*TD)B*0qqKWs*kFy@IKeXPdx&Z3|tRfoCW%cfB|tEFMac(D2Xs~_l}NXr0T?6?c`H#@eZ0W*O9td5^s$CUvC4|n5S`GZ zS_6x!J8abU2!95j_oaJiLt$J;`E$>*8}K$X37V;Nvd;MhiwMaRSFqL^56BMQ2h#Ou zjJAKaw{F(ZPQ{I@mR;18MqgwWVT)fB3*NfpQ&GP@?}921O^RuaXuEPbR1f7=bcx2r zK2dxdno87)?4Zj}`P?V4WAIWzcXh~UGp?$w7ddU$fHX}wrZlijCA4sor)B!@2ynVP zET^r3uY2XZTn1~7U;5xpUJ{bu-t1>8&@QpiXF%S_htKk-10Q&D9(QJz16lr$MQV7z zp8P2Gr&babs&Y=?d4%x@iYhlUNKc!Bmg=p~@+89G)mq;@*XCnH1J77gx zV54QsUYx0{q@DtRgsU>~&L4L>l>ul@(5Z%u+en(Hu|H3Hw2l_3kPy}SZPC|GiKWAw z(h4r}w^e;HLqc-%(az={D5x>lv#jSfBzPA}@aKQ?jz$pmU3Z0J$Md2Y*Y!0LSL&Zp z=x_)gNfh?%#)QXW`;!ok8GiKISJN^ASp@J zpeGQ7w))k)v`!sMx40r4)Yfi+2xOg1DzhxkSmV^#3ZM-wss13~Hgse~!{-w+X42#l z?M%_}!rd@#G^QP<9B_pkP(j?tP)k^&Ffj1GB{sLzZCN4g=|XU#7^KlPUfRs@iLtbi zz+_QOo#)5N>1;PEG;+(-zSR$J7HNbtx!yUj4hZhW&%3dh{1q3~N+54;(NQ=4ymF6+ z%L<2(G{nvC-!7k`zrH=Nt!!;}8ds(8YqZDQ8-`^0;2@`HVmkGTw#PdrbrI*D^hNN! zk*>BucABccOJUMqgm2aWj5j;zJGfI|_PwN1H0Wfkb#B1`5RNsO~U zdT{$mr{;bt=OhO`1CFyI-qE7d(22fdklgmhf0Nzcpy;FplpJJ7^`i$yk1TBG&dBTV z)Fbj+h*(?J(pFn*;|06h*YbAas-2U@kROBiUg#p;JydIJg-rjvf$JVl9@S3;^&HaJ{3`sjs0&F+IK5;J(^6a>9^Eeiv@rr+Rp&2X&RS}K)y{XnySoMwG`L&P1eeCO8w>8%IKkZ^1PJaP+_iCnI|O%kAAa-Zy_pa5 z;r-8ES60=kTW8&M>(s7O`@Su_{R3cslldwGfPn=7Oy2=`I|krLxq_`d0Wbh~z<&w> zZ>IoE2~&HJ8Njsby#(fM8Sn!D^S?LP|JUID$Nrz@urM(1weQFORQzvm-nsxd$N){i z2^e;EoY5;7VhJi>p<-uwCg)Buo>5fI_vQD9-P z0Wk2eFmUiNaBu)bwD)#!FtG3lh)4h&Tx1$Nd=vr>T2u)-LK9A+&_;nTPKor~ALg`( zNl4#&hJk~HLqLE-L_tA$?-K?V4uAuXi$KGHD4}YChvXO#Pm5o}iJa5@Ma_xe92A(4 zTT92KG1=oBR5wlkU zYU4uAjPm5c&l+|fFw?=sx}_~o@8NX9q^bLn!dhOPR%&oe1L)W_V}Gi#J2|OpGks$S zZ}4Tfm1EF|4|pBN_NBh*z#K-e>u0}xY$oMo+_EL3(1;-G_+9|*%WwTy91W)S%d(;8 zEDeEX#`xvUR|7{~uLC|Ih_TMkwo%5G9&!3n|M4HYM0Y&W%S#<4(^-Mw>(p!(V%Eo;>?Z}sX?oEE*7D6BB$7)&B zdN3tKjYYZ37PYgKeL^A`PgHqKB-7WE$a?TZX@W# zy9fY2WO}JY@x30-9sZ1HUSWGpyh7(%K8i>(E~Ynt%Ah3PXfmj!Gl@vcosyvWd5T#` z>C^u?jGzLf5qnHL71GYXcBEu-8G%6HwUpFWHq5uMAu)|NfZo%zg_tWSS%s~XS|L#{ z!I-qnc&_qy-EhCCbl(A=>wVAHrs7sGD?I0XS3_l$sX2lusk=yD+Wc&%x*JB>9i?8a z!Y~QLU~oqcxLO6jJvnuUUTEN~I6FIzRCWI}WyR^W1Dgbd2P2D;`->rvLI4&8ZAbDI4gMS>xGh);@Ht`X+JdDmXR;hF;ZY%W$o3kUinh>+zPe(tUE8AysWNvv`zTk_!X1#ydI3ySKUd!616|G z`i^J{y#ZXWcPqqnFwWL{x2z!#nvw-q*1e-4EDtVgs+I!1<#0O0J zP_3+O^>u7&!&1#~?b3*_(&FN@#YdtFj!ZS5G6%J7m^T0xYdAxfkz%E?*_lD{-Ajy$ zuJ9-bK>r4?Os(Fvg)B9Ykq_>3KBC%`5j0l}*0e=5P>d0raCd0~^=7qU5{wtL#-lD} zlW{eic#a|D70y~eca?Z$2qibo@??|A2waRMnc+al!V*Yn<-gRR!q(g@qzr&SjBccO zq?S(WUj#${{o!h(xjcN`+KZX4ejJ;xuQ7mtvzAbc@B`dw<#%;{B_I$?e@{fU#f1vM^?-N_@9HCcA+ zNd}nKVl-YjWEhKUtLK*D*e37KeED2!r^2bq;@}JftZ#EZO)*)q?r+|-tDkKCB~HOM zP-S7)x!Vz^g8xz2YFD7rFzcYk9zw@-M(oL7&_6#OzBMDvQ{3KaJ9y5^GZx-t zYys;~7-3u#6RO$R(6`*%Sz8;+0bKd7NLQhM6{yv7J~Be`NjN#5D2A+RA%zxQ+NS8} zSCk_xCr+#ku6}Cu$BKQWs+Sn+C;begFAN=gp}$da~Xsv zFt_2PjAnB_+Ak<=Jy2lZ{G`@aZ;fm7H0^vemh8hSK^QuVOA36TK%fAn@L{9L-p;>o zwVQJL!(Hbf7`iq%=yUQEVPTi%jcdbi6GSq>dp8&oh|gq%jpGm*%EBJk3K%u4oj|>6 zzwL_Ca+LFrVt;bjJsGf21~ULk3v)le?;O)n(*LQS2~jxdX>mpu;vA}bB;pBftcfx_ zl~x)Z4{%5Vkf%x0%QLn68L*+f0S1)~K9x=>CTTmON(lIW2|rFqK`Io1S#z(5JIyHk zwy`5mY)Q*pzHp(L9`FE%`7I|67EL>_p2DspXTx~!g@IniL$!i#ZKe4K;X}om967(f zV@dE|$hy8KbE%`^P^s;ReaOzFl6EAgV0S}VHsV*~Wz{t;=HY5KD;ByqMpEG*r+Q>s ze0CBebXP3pQy-4jv0A%*JYHOOu&c53?96Q$EV3|`2}}T-`?5Q^!8`_6^|A&gzfl0Z z19eOf7Tg7VB()SwLY8f}g{SYebVfN?`#Vbp zb7`~K47gKc&*byvc5p2?LI!GRM-UNf4P$b~(>ML4lGZ}?(>4l`X!m$KlHkpVs`DL5 zghhI6pdMwF;g$}ssw3$YZewj|1Z%pD$>xn_HakOIqJhSl?@}(SByvK}Ej|m}ihJX4 zNCxvGYii?$>nlrZQjIi9jI=sKCWDL~ZHOIee?@*E3Z0x7PfX4{_V&bdZ6T9TlNmkh zDLz?E^)BnEQzPYY!EMOoGTabFRrrCA9%=_vXbi<>nBOhMvE(<-9}UfPo*Gjf1x;uS zzl+P1QgPXevURoPra+YI>LJFH-9cuq?UkFkK?jClL<#t+C3jI4&&`aIsJR+`2Cvcf zL8uaBY~t@k-yXnA4g>DH11K*J6dXq0KYIq45L~h~h{ZNNXeg;j=%+ z$(L8&SKVmRkBW*DKTq=b4L}k?K!@E&X!K`P6GcBvHi~`P-$ZWCRl}-1Z0A~w@u>S* z`WhJX%iwS0BR|q>{!2*EwBqfvd0*qn*Vn^xqnnd0rM?TgfnR=dHsy1v{Ebj2;nIOh zJHaQdshPj)Iu+$s-|qB#19)VZQE*M$@mZ|pKMbxFXKL0zM$eMjYu`v^oX*2_qsPk- zi)Je9x5!h_$4F>63ga6VV5TqCHW-w+JvS4|YJyPLy6_-q{+=tBCl#x^;X03w-~J1G zC%25Y+pe9dWGb&}630Fm?IF2x z5vY8cDI1@04{53KZejKf@UR!G!*roXX0q{^0YAcP=;umC+57pYzyqPIBXfIisGcDa zap~vqD&b}eCu)Bfp4~Y2YOrD~xk2N#eNd7~UflK(WMT8qKw=$@@2c*|(1#hEtq@Q>1Xp-p z&H-4xH7>0x)#B-NJRX|=$*BquYru~=CdhI|AI{Us1<_surKOAx#$xlfExj78lSMC2 z`THPJgVrSNAAK@dvFM^d-sfovta$-}zAd8n>kcfDP#?57xJ8w<_tEP>5al)$lUvul zUl_ZPFdh|0*;`~iJ$bTU@_03RTKHqjm0=@hewNbZ(2m7dN8gbmG?eL2hI+VL+jk^} zK&}gMs|G)JQIMxdn0-2>09e56^v?`R@Wz9JRKMIKnNOfR@3{A}JbD)1qMNQIAIAg? z^^c9P%WkbCQ!kz&3lY@)j^wd}i%rsArq zyRkKlz7t0w>7bo53}LjjyAPpcaE`{}8-1iV>#|wacIa;ack>n^7u)hW(el>0^{jc8 z2`7?f{ClD%=^xl*dAZqE-!;V^Vpy#ibfof~MOq5{^5P*ahHWmqV~sW{u87c3OyQax z%Zy=h|NP%^r}zjDra%>2$dJ|E^&7x%d}xJ!xo+1JC%45K)Q3;|4-XoVpnN==(+p(N zukd_>F+9)er^-!4S&mR$TK&1ig}4M#{9j<>dXfq&1IYnyT<35RFy}US(5?S29&^63+6S`4#9BL*Jxs~61A6F>KYFdKTRG&;KWL7*3l0=2%8QJE8 za)>Mr#3cDTiWYybQ*n_|;eBwWJ@BMb9BhRtkl<~CiG}M6>Z#F#8X4Q_)Ecwkj&RG2 z+7Z|r+X!T>xlt1BsjmNe1JH`Ji>)Yr-%4rh*DCWV+7ob7t`_7$njDt+D?OJ9+<6%c zyFRf$Iox?!N%$;=vCQrEa?re^_!_|-`nc=20qv=eidC=EduP~@xW3C=FIfiPeS4k? zubzbQ!~VM2iBy_=lQsbzt>BUSYu4!QmVuYIRh_&8NpIW@&qqmcR0Rb@yw1q%b6zt~ zwuRGbO$UX{lPCIBa;Z$zgqabN=QF=1AnT-j5G#%lW41Cm<;hDgO7i`7tWLbR_6As4 z1f`jw1wm@B$dDCcT<8=DMLbU_5Lv!(Pe@~jbYDX{?Mtt`yAPC7mo?bd8%-qbW&%Ik z3E+NN$;P$Uy?*LAO0rK(6nZiRi4xTtZw|$I!lyW=O^sR%aVI2i$LYX(C56&t?a+;0 zGBxX$R%)>W4cjIVfGQCHaaOw#cfFRH?F3i6fqZC}pU`u`tfBOGeJjGh3r|Q0!_F&` zfW}z?ULE(utvQ!P*Jo5%DAbDGVkB514rUI61+JPg&O{#)W&a0n8MnQPINe zYj|{YHlc7L+ZUPQ!^s>6gE-iITXPIw_;~XgG7BYF!i&%ra9^D~o6uk}*qkMw18xU? zfsYbiFIJR@z>$ilj?tKs#*-%%xfsP&kk8!rbEQ*Fd2@ESuBIAOb0OR#YujH&8IdZZ z$+Feyq|Th`PLG?E`4H*JtADdkw9@8hFW3;)^`63)SHHqV&Rud6$L+>HC2*JV8hMX@ zS9FggJX`a52Nnj^@#pWG8vyo~NSe!fob^tMz+aom^em|Syqdu%c4u@Lr^J+j;F;L{ zf#xAk5tT)Eww!(ampseZ@f9=dB*kwne@vz696@D1AN%wpmwLkqV6O|^*p@rDc6S@1 zOy}KdcxTCq|G@|k9$%CN_B=_PV|ts6ASIC=1hV^CGgRETBpuTYoH-E$v*-jI?lKj5 zEU&D^C{<_x3zZMFiXCfYmTK*U{(Qa19GP9^?b%{u_Bf=9i=1DO665$*C1Q{&U$0+v&?PUV=AdIhDCU@O!5>6ov!sb&N5_wY#H#xv zf*J=3e>Z0sXnG96S#4lR=i;P})wtjUXv4UBxMWZ6?bI(+9PjvR#=0r1R=g2v2L z>M+xTGa6U8XQ8;I1O?XZOqcD~Z*VfQ}xpUVwnd0gV`((}} z#ALnUecGF=EIs%L3uLn?&=J>yKd1XfuxCy*-8;2v<33uo`rr_DIru?`O~s#00x2TH zX;b2yw{6V{rQ)?D{BA4*i{Z+Pjr-%I^y|3GD^Bzvf6wl4GSjBnt4(E+dvt_3DuW6k zMuiqeSmdPYxYvi}XE9@P!yf`ti8lhZO+^1-e?cM=XYf{?i*Eibv*ZmUERyE*Cqukw4#bcgRVgxOxm_n`EhM>AZQ& zNZRo0DmW@Vld*YA@CYj)j&;quu)a;AhLX2J%Pgt84K!TX??lIUKF5CAD2BS z7pNq9Cp^|Td@E&yRbBQ)rl)@Yz=^fAdUTgTK1=5d!Wf|#$EH&ZP=-dHmphrr5UMlm z-ZJ5ao!oHsmohvQ&ql=Jm;at=iUK6I88@MFt2y6z#BatBaoirmE4-s^Q4;LGOv%ih z^1?{_j|u^vYDw6mxb#U?b$NT-dmOJ%w1u;^wrHNuWj3j2gmTnFnof8k36jQ z4(0N<1U~NQX|Vup9WK7dM_x+U3QcZ%Okqd4{(KD;?JIf!iYWa>@#0g=CH^B>kM~kb z!GO7PYhk4PG&w8KhUqxBVcgt|`%IQYhHoQTJr`rl@OCJTk(OC^=c~}9;V;AAM``pw z*X8{?)w*ue7Nv~+%1yzG1o5@h$zAW z;Y5!;o@sgzS^w5}ew9pYYrVAU4|O2S(aIislS+?u_KQ%m7cHaI-Y?PL1GGmK8=AL5 zDH5+P<T?%^e z_?#)9@%u57r7y+26t}N-l%8tG_S)c9PPdq5pBgcIp!yTm-zFgV>N_0Wt`x6iPA_>D z_AA@O80kh)tB!EkNtlW*fAsTHD~tWdf#Y0#m38$I7Bayy{tw?b$AUj%eup)VFD@=_ zClDbjWh!E^Gi2cP4M5|a^IGPQueYMhH%5#Un@{`EIs%U1&J*Rff-Fq-en%;w3*k>#;uLE$ zllf~`vQN_DUbT5(&1Jk}CPfW)(k019&Hbleiwm|!OHmWAAuw^v%26CCGIIOJNgMv$ zy|SO5?f9>^YvGbdGBBy=6Q&dP00*Tyag`&gTKw=O_7AVJHQDy}Y%dU~ReJRo8`i&+ zCAX}GJ|oL@a&O>RNfc#kJiI42>I))ck!zvgzz=ieS*y=Wmh|k6jO9s=VF-|<(gH03 z;9(`u&@+2xF}mq}h45=TC4<*}3w)OkUhEA%=?!&9{R7dUBeQ`*$rF(0|NRD1zfKqE zDLlbly3BtxO&i^XS9!X~z+2GY3JGDo%W7I`cDUQ zGu3*s(+M{AS0v<}eiYJ`LRgrD_2LwUo~13h=DVA<{iw&72Ii>`pZ}9(*{1IC`JUe(ExW@-R z7jmtCb)(K?(KrW!M=4!D`m(%WS_nejt$nha`Pgu5W2}GmWbm1@`_G$lGHz>nwCy+I z1E(s^Or|1A|D@u`97J@TY6wVJK!w*p9$w9NG_OJ|p9zM&GhaDD<;5tb()jM(RX+WYR|avR!VuuT4`- zpzA{0l=+-j^l-^*S2MEEiTlbH?Ub$Y`IpFzydpv=Mth@S<+N&Lf3)0Ub3G;@+Etg& zZz~KReidoq+1^x`D+G!iS%K)!v+CD|hL}04^TrF8cMVa)P1V8$FjLyp?NwmwyM-By zhK)?9C^_~L`V>NYm34;UJkkBk^zf_jnjEKu9-7C&I~iXEe3zV{m7^16lqLLJ6P}0G z@&=Ilg!dvGG<`ue{XxPT{ru&(rryC$jI%6wsjXld; zZ!GV;tOsX5jpiVef2lbXhOxjE(spi4nx|8ybG$(+gk;ZD%}m5zH4Pp8C*?(}7Rt61+m|8Z5p(a{t|3CW`Ir8+0 za?{`Bza4*N45!aXQ1%p7R46TtzyTm5_*3}5Z>4Q}oKPA_I7e>RJJ?-32R4|Aj7cXM zj|PDCgt4O8$eU`3#nTv22nZ^ziUc@nEqVtP+O#Y$!N$YGa!g$-*s|CXRq3D@k0lau z%QS3>cOuta=_6|Gk^1xgdk3eFd=je0FuO~t*Bt^;c-B7=K`!#t zJQd=~FuH3SAH&`N(q3fcpS_lgHrF_i^&`Lk6kR9)SQ)-Bp3$6qVITOXS@8xi%Lc6& zp<1Us}mV>*6FvrUZ;?VtV zS;Oy2Ii0NEu~}A{{Nf`*HCODcTNuwr9J;{ z;_~X0{CrakmZKSr0S{3qcLfme2bt|gUz z-Hg|dlJVU!%xb$r8%`a&0e;DL<(5>927j_p+X)INc&7G01TY;Thy`M<#v)43H7%MwEkGZ;mFuKFZtr zWWUF#O5n6Gu}WU-R@l5z{|(+2Fvw$Ae|4FW6=N&G-At^X#pMkkGfPJ$<7K)`H>Rz# z((-!@>XJebx2v|J5EB|oMc)d$$)E3-7e8uN)$GXRqQ&Gp0TnsXfDpGu`*^L*+w8k7 zPY!SIDaHF^giDK>hTi%DWzOc1Xss=;?*KdYy)-Eo;DIq{O5SBvXE@!h)ggJ_tndt` z9}P^G5e|<;Sk7~Xa4ZxFhukoM5XLoT&NU*8Vm}{M4&BJ{rEFmb%oGqdg_y`n~~XS=+PpQ=ey**YuZuSmz=I#nbhixAw*L z<09K%RLRLZbU*ImK(D z0szYRrVoisdf-y0q?LD6kEL^rIGy2!h=e8v9U=}TmYay&=c1LiJeU^o} zm&|tiOSVPPN59H%h{q4+A29zcdMtL4T&Iij#H;E3O`b9y0xzKbOiN8LfOXJt0<~4i zv`eX@XWU**>+!ybGHC80dzX{{$U=e-k(JT<40Wxs~D(^Xj=(6kM-5P%)z_m0PGJ&7H>#LAo#I^EX7b?aVMnv9^PG~_AKlV?edq59}TJ; z#s>!4ucd`+DkgAU@&cTXD_Nq;Y(^8uMg{_PAZy&<3u8qPdfCxLcU#|Q3H!~g=#b$9 z+YE|@%Ff(w1xXI=;-M*ru%_!sxrlP5n(d}8Cs%1uZk7HxWATgUkI}!U569Zt4~fFL zYp`k?$`K3q^WW^!4-UGpLSq1Y4=RjMnT%LCM-}K@XUUCS-d{rzRjYQ}0PBdvzxK2H zi$4MqKGtu5>(z-@qt^t~>Q#(4K!1(joL@si{$9M9ZGCR1xnRHBdZ6#O%^p%*Ter5< zY%LcuIlqi@Mu~+ybfpUCWm=C5_kN|d7>LrYZ;YY+TB==V^Wz)9dW2zck(O@tdw0lQ zm*>y+`Qr*m>4j)xk<$j1hm<}9Omh!$SzgzWn-OBzQ#`S?Zm9VOYp_-~exYz#iC!y* z&rFh5uuWE@sVzza$9OR(kG2puCs65tynA!A^StIZ=-!^kY%xSHksM2}AYBO`p{3G3 zP|)80Bwl(JoXmh}s#60njgWT0qSXij+x1#gq5i?FeUz({OLD zDqquul642x_uvJ#yc!?PP^~!kU!p^O`*3iC=1NaHLorT~M~X)xMTMG5M5pN7w|#bMHuj>G9c4_``S*0+4$ zY%=v&plgwUA?Op*jRl4Mu;Lk7sc_dUEbRz<{GnYEi4U`6p+{v_>EX1A6bvOD$yV{Q z0k{q;KXUcnduaU%xa-|uP1*-eerg;tQ%)ttH$gK{|N4pk8y5g4hFf?_p&8y2IV=i$ zP_`;hcaMqo*7RBIW=8c-<&%dreD+D21MFUS7|aPh=9RwuAzRlmjuylA@+syz*l0tY zAbwjzJ4DPgd55sNxTeiKclZrJ-C8R|r=_7bBgqq-`Rf2)! zLi|sQv(eY4@|lGV5Imt>RhD*n&2X(`Zc=~ekXjR#iwi9@5GIPwsvX^VeL~?yw0~bD zW5l`2YY24_3sTX4LW-%2r%F`6kN^!y*1eb&k!4pgKZH|4mkOI(vGJ_)s1L;y*T$Rz z7bO6#ZoqyO?9GBF7BSY@q{3+x;v4+WR>xe(D}U)-+?eH%I0+DB{FF3rGbjrpc4a8? zzi`KG_$zXQa&aY@WlJd|`appk!A7mn=)cnQrJfIwRNH=xmjU;00O%7H6p|iEgk?3G=LnS zy84CIepxqrtfP9CNla%Qe0Hu!J?OZ+3Q&bUshQQ--+VRhxL z=q(V;zrK#fk7wRgIMj~}1?cO$VY4YE@ZUwwu3mU&Q;s zj>nxqLkyn5mZinQmi|I@iIV4ihE-p`@CB3*I%s27s}JRXqimTsvMKHtNGn;{(ZlW| z0}@TjwX1sFd|f_2;*TxA{0#ym+CtnD>cnkCmSS7--T-QOvo-zHyUp_FpBVS*)hAL# zb5IX3w$|9`kpFs#p{0^k?|?{ybU~M(&z6MJ@e;vPGe5cDBZ?XP;|Yq_A3tUa>>8== zRQjpx?a|C6nom%RZ0wjLt$Y1xHD#o-g+fh0aWV}r$#7Rd`PUcPL8Od@3k61WXBR>w zCc4$>oUJ;R1&0+)ugCfiQgmWR9G>>?+9ZXFzX`#7%uT~s0hb$MCP?cl6UF~xeye$s zo4(e?j%hMHPW6>x+{|wkGW+P0dFh90E)?`D_Hq0q$W#Km#x0CjW*{Fsn9Yp^J8YC0 z&YJkY@4B68u4{08Fj8}8X>}g$)v`{8f3*iDWM z>I)Q-Kw4w^>FelmuS_glu)O3e;`#^ODv>c69Dut5Z^H7KdFQ!-m5IAiIH(@p>){j5 zrS^{OV3cM%qGp^zD+SUFxU@wX&C^_FIDxwMK)66TMO=12L8gK+&cr$pCGauGMo8vN z6d9dXtHr1ui(qTHH~6W0+m0FS`-!z{GjBuF%>5DhQ+spSlctCxOF0|DEjg822J;r0F}^r-vBn_n~23Gt2A z7NTn*~(t=mSoJpyC`sf z9k`e7NrGp#{WUqRzbJWe;jRw%>s^APu4SGaSQ|_jjSmp=CxqKDsv0MKD#9-&f0amk z1B_oVYHmy7#?4TQPfF4)(X=j9waq_aU}};0wQ#h!nrgZ=PM$)5ezQs`aOVf{J2xSQ z9K1Tbd!kcyl6I5>;5UG+tYJZanOTVHn3MP&zTY^4`dun-4r#l^wEc5qo6{QrvVO5; z=@j@l{{}c{&3^8Dp(ikDA$tQvg5Ch-@9jT)ouD0Fw!XMzLXE1TYVWT_{!*JW^!<3B z?I?EjSX)ECN5nOW&aKSgXnd6(o{n-N8F^3uw+oXT&;I=$sf4f)K2q*oK$ z#t-OHmvPwQF9jH74`teoZ-5EeM6sv&+|Cm>q}S-(cQ*g7oqPkpHTnH}1GH6UzX5bk z*Ec!d07Y*Aw~qaH#|A?K!G-p=?3D6|v;M?2T;awEz%TB#rh$LI(BssrW|DWy0cF`w zlx9x1{QCS9LsT++9rZ4n!*GsC$6mIz{$7u`)Xc^MM6$h~eO2v8^h7pNCkqV<_)d|U z8r`P5YD*QryW_Ft_BoV}3{A8SGXbYKHkY-xf!7-q0rGZ#$M>nf(X3PCy-o?p{jAdS zx(V%Yxs@5I0hvmQYMApSXi60F{(JmF$f9G{_RSyT{<6HG|KR$bEXi~E$7Gx1XX9d& zR;*U1E^RpQ;M&}Vp2b~y^4>i(&@KKv>6c(zoyEWV!l4WV%=zxF4+Dd?$hGuP>QzFF zEE8pALo;{PU(WcL(vnQh%GX4AcEd;4HYcJs{0T$Iyj!0?w!!Rb^2S3gnTwsu=Zn=% z`=|54>yo1p+ir}bK3&x+kTbib68p$3wiA1{hJK~InfmyAy%7|a(=*m@mQ8CkG14EU z#pnk2;BgfxJD9gQqKrdya4}_&={zZ;ce)Nc%9aF$EPb{-oM_YwfF5lz_NL-;@ELec z;s9JZ*qrD*%h9zfEi~kJe#979dRs?%HmnR_np|?;w;#}FH#EPWn;UkrZTz{L3@8uH zlnoR9(DGcf?LDb${KxT_U6)zwoAKYBnnYnI0K3H^afBOg@tIK=X36-<@8KodNGwDo z77*juRRG~MGj=Cym2t!mJV*k5xI5BxMIpKl?WlVOt#mcSa&p;)NZ5Wtm5-bShOd(S zR~D+R7~-uQ2g~5-aCLduhiw1j;nKx8%S#Vh4n#{lfcsYpHZ9#bo@wR|sbD;0&d&un z#L{&X2=mLzh9{w1$esd|WQuT~SwgD=Sxb3eh^m|6v5{$WPje2A$FqhnEgt^aeWHd( zq<}VuTCFSxG$Y>B&#oJ1nD-uLu>VE*Zp{2k+4?AxMWKBn?O^(kT~EJTmM)8mrY-Fg z=V75W(R6&36L;G6fHat(9FnM#I9-t?rbTneifWvJX_L(!9HPM~L6u(A{9{vMl{1ww zj3C{xV9YMYr(tjOYXYmj9mqBQ&wB63^b_K2{kxzrxALQ#a+JG*toJfH6$m&8ynPa7 z6}jbOqviYkw|!8r_vRFmFFt#kE%>CYmhoRdX*47%4{%vS%4Uj9`~ zZeZ)5M(m$iM*(vt*8dWCmWZ5ZoPY=IF^s#r{g+KEHy#B`+0#1~wIC9T78q*{ zyA42Gu6B*ttN92e%m7d|t)}kfG*>)@F)v#uSk3&D_w~rT&HnB5_~EyH9*LL6%!#7< zPgxf9P~7^I{MrJpomqM7pIqO{J{?vZnemK!Yuz?+!kVBK+P90$t|hvn3s71lCtq=s z;E?4$R&a`hJN*ak>+;~DXNujY#(BUa6=PRdMjEg>jp9`cy}qx zb}(WG=#xw9{-kL4#d0!dTn_*EQq*`dESmjT(s~V#`w!ersI<(TWg^Q`UX}mJ%n@P* zROu@7nY4E7D4Oy45Im#CAeA7jBiAAcKxTFlr@q6r1qo!V2RDwWTSth9l-17_4`hM< zTHDYOb(hkAv()3%N7qduVDX&p5JDtcP%;(sl3bcO<61eJ^`ts|`t>w-l-RnXZEB`W zUyg8$9;F@N%S%*!3P4>ruK{=WMq;v`ZbqxP$Nfgj#(Q5!Oo`PPRh6EJ)F?VDq+k13 zLn^B{(fB=aIB?9&(hVR|_k{(wQ@bG=+B>a5hEB{%yB~Y5Z)abZGuj`m4_UIZ&9*15 z_n4^|xYe>OQbDl}>#p5`@&Uc+nX)s01y?M_i+(>EBI!RuaLCCNSPac$PV_7;R@4lyb z8fPPzYrQJFTKgCTJoOgUni!qo2>0I>jXj9dt!ohNfZxP? zic&}%^!{%E;q2;&ln%+87WIh#hSuh`_O4j!r0(W}0fmfW^jeRI?V6aM9_CugT8lis z6ZPVpHloz0NzDHJi{uz^;*FB?mg)A!HiIU8ETM)CiNU)(gFK>|I#8&)QUDb3p3_e@ zWFTY`r;gdgf@Q`#pdxjVjlOw6Fprrd9&ZXy)~Q{ldB&y}RQ%Ib9TbtUH<8E-$q_dR zi_gu$WifKe`nz~4*2>;-Bdg-d9Y4}(CZBL#nKUPzMCk^AaW*NbC@E)C40gGFDYIKj zPP7lE)#9^u%f_{{5kjIF=#92uGq$ENROjse>=UV!cH7u8dFpWF$FGoah7gfQhtY0T&!;O=6(kb6Vg3x#V!(eQ)EB~1fWuSJnd`M)5|VwV zh~dxQ7HSHdXl6tY=~DCBwKA*Lm-l90{N{FE+%iQiG8xm0Zd?y%i+XM=saEePm8T!D zUqsG|z8rM=X6U~1mX5q@&c3QqH45AR*lY(u=Sh-&2LOeTXblwsYTsrK=G%II&>LN2 z2z(dA7|b(Y*@oK_;0W}FCG%$U<-vRW1wC@qx|UM#Wf2=>YVod3CI*&>#(zHfu+0}P zWTAXA1`IkDJGX6Rm{n&Ru&To6A=zbCSenut%O;;LEtddCX}fT%!3SB@=x)0MbyJTT z?4G85OhVgj9-Oy)WQdK9S5r>#qsvs_5!ER8KT}_HqNWMLVstt$ns<+d2zWQ2U40a$ zkS5)IB?x6SeZd-Q{zrZMuaAZFGX`<3@;gzn~AbdOb1s_Z){AD%0)Pbsyy^vTYO#2}0yd#Xs|&!@wcc0;pz zj7nyBpDRiNcSzp=Oo5em2b?Y6|4i%CLqZlE$v#V(K3+9PN`-SMb;nz@ZF zTd&m+34I@oWW;IawjqXKG~+B4_PGV9`f5^Yq7R@Cu6+sx!(#313d_P7BBhfa0dqTJ z)|v)4)I2}c@Ah%q=uu}@RonQg(k16LGz>r!S4|@+B_{(N4khBW>LEf;*&kGa5#uqX zM&Yazq+f5_bC3lb%cq(;SG6u@*~Fq$AC~=3I#JxG$#pb^+Xe`OBd9N!iyM2@o~=f_ z%WjzedwBl$RclBTT}Y10nuRV#AB{M{csxP_h@a-vbAJhr$5GWVMNBpZDD+!7By=F$AdzExkn^KDdY$UC9;V-D#3L7UeTs zWFFnN&PS}h2LawprGA6UDIZ*jT?0rz(I@XRVV4Gdp$-K+2FxkW8+=(_^asoC&|Cei z&-~=vg24JoUE2Ayg*>nFKpZ=fN z_TMj0Jp!oL8E*^Mn|NQA)F23P;}$aauU$TEUcH_pCJ3X;o?gIpTgU0SIb*yN%fm}) zJ)e&wBXaL!j2Mc!eaZPq@Am57>5lmr=A#lZZ8BzOO}oCJ^6J-6rZpm_3e+pQzdy2O z@q@B<)>(wbZ`ni_5N0L+kYyY#oxi5VVFk1UV`B8mvrIK!C{BC)G!B-^l>BfYzjQ{R41WUcgW`1j#wZy)vE1xRF|=qh@1ZxE6Lt9@EUti&qs$TxzUX2M<2B zXES))#LPu6qEL*1;IQBvHw^UK$c69Qel6ssi0-P`Zn6*F$MBGl@J&Mf9}uqWj6us} z*x{FI5;biWpv9JuFOc$2bgj<`yt1y891vjXUq#fKN)1qB95Fdqy1PZ$l0{qYtJQF+;`{u-V1zWk_r|bVMk`crp z9$Dohe|7@{GHuDhKvTsPnQvsHxv~76Vb3y3BDB2T;*wpC!VNq9==DjLY8V}s%aLC&=sN$ z%9B?6Z-~yVc6{nKvJ0<=2btK)+)Ol#A$nLF zJ+jS#js{F+dw0@-+(1iCH1y`g5s@E3cnx}C(a4KSGliMXjH-&Wo(VVlzM9WdaI~<< z^11s!rg2o{Yj~QBoyJjR(hN6*Wp&E{-jMmmU>d#X3B2MAe^;LuuC^8b#5&$r80KoKX1N^%Lpo+Pf*mwcJ0FZ$HPy+s41CWGG z9gNKYrUPFZuzy>CPypEfy@3Buf%qTtUyp->fqj*J?f;|T|MukH000#RpbE|p0fq_y zM+JjG1^YJw`2A(}S7iVQurEvho4~?B!$5t52ZMn8Y777l@gFV!_c8!93?$Sy2v~41 z6ae7cf7k&D4F~@X68g(caEPy>uNzR&&|yh2FtJ$3$gwqX;oQ^PRy{J>ak%k>l_*kM zS2(#e)_7P&*i^r(i7ruQIvFo>j7vqL0>B`^A-`(-h6V!(0sB?mSIel7q-apzSfGWK zjL@BelE_#wV3eCdDXQ2-O^YJN&dKC#F2E&MOf@V{oWWof_EZixuHVH&%OS%Dx1uH# zVxc4Al>asX2w%Q|qe7qpegOK%P?@7bWyy@tVLB|Hc^{ScR+YW+I3~)~gu7oQ=+`jf zDQQ$8a~ZRPvqFOb0=zJRCoS%4XzlDuy|WjH6n=o79eP=IpKN3+umGo}1?Lkb?ySr# zaa3wT(}Pm2US2Wg=hSn|=BdmubZ>xUq1#CM!w^_jf}wz6LOJ$Rv&09^amu=|ZkuPr z=9dYXVndXuj*M4o;YgU4Z{y&Tn`BU0HJy>qb7<%o71XrRb1=om#yF6?fo@=6GvV5L zQVW0flVz0+6 z6$>3vk$Qz7*`}n*qBhKIvd2g$Xn33D#tsWWRGXx2Rxi874iS$!9Z*$AX z&ECbPVTyH>*o&}_d=;kNP*<>x86tN;G#`n`M!)0pqQ+WVB5n6HypH-=8%8+bO)@9Lb!8$*^w`WXA0yE+%DxS$tl2YOqVZQL~yZK~DM!`=80rj$lx zrZM2u)Z*0^icJ6j9O*T|fOF2;re&(;xP1vxwsit#Bm^f*N5YndIL#a@+2_T%<0F^# zHPjVFM1Eat`x%bw|MuQv;P3H$7diLGv-YuLQfL|NN<}B?9!S} zE6vLFwzQ2iI^b8FtuFT7OOP|fb>@)oE*9`S1R;D&<=)#=OhdC{kknl9VE?v%tnsaN zbj7L2Mq6Ink%Pk3{SNMkM+W2c|J|#oZ6Ex%bjMcIX0Z+;ZERCb&C72hcm3@xA$x1h zWi!?0p{`WrG@IW!Nc5%~V0J41lx!2qZJlPna+F-w=^uY~PiSXmPQ>ax?krTXT1>eB zIl)>FWU=9U8{DS3>*k_%k6j81$l3NFtPD7o&nlq4{i=t~`|)u@74UqY@T!wCe{DhD z)zWYm@o+Bq>Cx|f{g>(=K<7H^Dk{mTjEDqH05_cDZolP)pn;9ntTe(CXEol~ zh}rp9+utmAdee7$nYY2(?u74KSflQS5f#bth1$2^#Fk1;D)Q0;3d4&#W%^&hr0Adj z02mY1QSqXQVlu`~{0m3^lOT7wlBjNoz@nt}rA!iZBrzos$`#icGmefydP_>MLyFU)0_ED<8oCu>MaG z1244T&V&!4UyBtb4`c@#r@5l37Q#`AVwav!pv+IlNzIIPjID2PMyGek;UHO^vQwzKqH&{PHJDEP zdEsa@BH`}9bB&E3c#016B_Sf!f2W3PqLbjCX3`+E8r&7q=lIOF&U0*7tC=IEZ#}sf zlO1K;e^NK@sx@fi!L~21-JwnjEe5CH3E3mK@iH(nt9F>>9af4;*^nk5&b%d91H%Ya zB|st}hS7b#=*VAk*xuF=Se#pJi?=Ew@{xcZP-F3LjCb;*^JqB18vX}ZHQRpeTn}hw z{|AV&SXNZHVcdH)8{g?Zul)zm-2Cf=Z3)w@$7zz^w%K!_+!xxcPWPVe4Q`Y)V~lyI zJEAJuarUj82NFz7l?PHtw4sD&tBySRnG3n4*Zf!bHJc>MO`FN)*GSBb;sc{Y?Z7oU zVr)rRC5R0d!7d|AXc#Db$LO(p!}|~Ls=&h36L<9~ocXt6Vz;;buB{)@+hgmcM)f_a zuehTEXSJLAz=CMowy_D@gsG&JckO-~#eZ{Cr@4h1Vl#MQQ;EHFYdzR?`t6J$u_kHW zlN#WNGNsq0W4tq8#r5;LUmgBE2-#gYq3gzA=f$kg%3Q{bVVHp?IM+4B(Y40JBWJZ& zpZ~QcM^HG2!)aD~wPP*1^d*PtE&Sf(I=k+Tr~K&X2>RWr>@Tgtv{a$o$%mZB^VLh7 zviP(6(GhG54=K17b`Z>dm|TW71p(dV(|0^ggJwH2^SoW;da}jys^C1nZY0vRatVJB z^N4F5>t1W`pN^!W<#8HA3XM2ez)~$^MLJVJy`H4XPUfc7qT)W??;_ehu7In&?(6)3 zH?>{OZsKd^zcl%e)S!dgn|GJTskZiw$K1@s{rshf0LrIJvj8vY63Ee|Fl+~;U70k6 zMBh~o4p~F<#hKu0ZdU2%az;!g`Q0ZBma3N)U6k?eI?A{>+h$Gno*Tuw=a%d(lONkKCH|k0T(Qbrh~4EC(+JE~czK^T z$4;5v_|I@<{}SeFG}Su=!)vGNRSV=l=P6SPXqb>QDL2CM`&~2&uC2bbz*k^ca6m{etYb zpt=JDA(V<{nEof{5jr7x&=fqU^KbQQG*qTBvQQQzq7Xn}q*=QMBPV*cwrdO=sw}Cc zAQ_ZosBzI^XFCiBb_TJ#+J)z|N2Bc=m(zpE76IAyQX_kKW%q_2r+tpZwJlZ`0p#O! zDBkx)%E~&jPf<+P4`mD?hy`5XcDb;=jLs)Q))`bQy8tJ2Fb>kBsb_X{kf_jjnWi1( z{?A_8&2tm2vi7*^)6p5o-@oa&j>ByKE9Cq?#$SaY^A0KRTvBJBdeyDVMKxC*=kKs# zAiHA1@4>Ay4sw_z2WDW-G^ke=jb=Rn{)1jP4i3F7ycM{&^=_Bqqw9!C!N9wLqpvyR5MdE&0mDna_lb znTK_?o%n{GT+mk1drQZr&VTkXym!fb|G<|`d4fss39XDNy`xpNE~d~TyQ3cG|6C*0 zpqX8`mmj2*vpS984MY3~TH0;mugPd#CbAmMB0 zL0Uty`^12gRXj7Y5rc`|AxTZ$g-woMLVYD4VhLsmo`IE{O^)RnZITD-)fI}Z1*&n^ z8AensQ0y1DIgb#W35FN|f_k^Y_=-)rV@ZGSWow>7d>A0>z(9c%Xr(5gEzekI(q&ng z%-NNv707<4<{>+%1xLt#&-or_Gk7MG1F58TecrFeF*QXWq=AJ}2ljcdcTdtR(*~9L z!hGk72=%8}1N`0g2hJa+TT87*C%rvK6m@H~V%WY0|QJNK6i8Y$q5CC|L zjMt~)skQQ%#eD?n=_D})2JXkw@31X~C>jXPg^Uy}0?Ja-n$ zZWxmuhW!E(O0i3oT3ZPjyXF%y6juk&$s|V+oKhM>p`+d~3Aeava$y}eFEX0Cs=sg{ zn&fVp1Ma4E*@zG;$x0193GIP?lsRSd0qCNK(X4xjR!VEKmfZO`uJN=@9KTvfr`#Dp z60=q8YGKN}H%iMs@GE|1S;%8p`@)?wT;zq!k(kDbFpvN+sWC8?I)Qm${!-HDYI}C5 zaV~7s9#Q`w`%-hCU>LgiOs`RK^057Ze&Aii4l&b$PL;^J=%(HwZ0g1vgr$b9E|O!OVE_-T z=OpI$p}S}m0+YNs;dUsnj;O%C)&+Th{vOy3GOk}P7rsd?URX@oxno*Mgr>oHWuy9y zeVT_%=m-T$N$I<~@DMav6?L&B=`5s;xAH9iXF%%0QUH$a=xXcg1>SD(fhy{X{7S;nS4$za z%I;k#hvm~ErfW+_l8;UK3b8gMs%4@QdlU1Vf^O0bhc?3zR}6geJJz9OVUVh=d@rPE zt-$3~*|=NRbt?~)pYlTZv!KSewc(^@u7Uk-ebb#TLNYpuY>y?A%~f!#7x9Xb;*$x9 zz}=-;+-{!?>q5L~`K^k~c5z|q-qc3vwKJ>Y)8M4&63Aj(WHqjFnxH{c6fmUgHH{{Oe>nhuyHKk*lA{Rv|%yhV1 zD?*#Aa-)Nt33O|BL04<`398fOoahV$&rt|M=BzN2vl$G!bdp%nEhyq%?bkc7U74Wn z^BwGPLs&~M_9?xg)?v6nM+y_U&xt$N|FYsg5tHKlZ1c$6{4wdI6(zWmaBFam9(Urg zqJVQzEe$3Q3OXT$7=jjzn$YMeiHaM5B@i(D2%oY#-+I)SfsvmSFZri5UkiV2;rBlP z5?q&qv<~MrwB!^uw_$OZ$*{-1uMhPM=Fn+3xJ^PaBABUs*?D zu`sWXBHAHZ)7KaOZ5HChY~s5-%&-Mgtbt%p0!R>D5pfU}dygwE*xGqk*9 z1?qrpKc>58e+ls!habOl`db|Ot&7b4Ak}8|T&6Fwd!*L3nGRYR?S_5%=?K{xCjT#J25}DiV`11Un^7waMHf_O#~vrQFxJ#AFUkK1>%#5}0)? z96_NL$$wt$E#9)^Y}C~gn#@6gD%(S`b|kCuKKoeNmlyh)df;AQ=SNde#59N=owFxYwMB3J`Gb;u1Tnpdg-XA1aLT|?YjS8#q*tF) zn^L@ZZVISzH@`(4J(&v_Q4Cf>Dk|u<3+rWKIOuK#-ITVb#rY7e>uVo(Ky%EJC`N$8 z2#_=!c1MVYYlw1eBc{bOI5Gi(5n;%Bga@kCU((*UMYL=h zwx&d73OA$F48L$yD{myX9Cn?m)Q}PiMB?CWxIUxCy8f9DvV7yRu`hPh*zGYtR%hun zDJC?kqVO#y_;q(A;|tX6C~%7c$;I+GJLH(%(3e#DWMk*=YbWL_OZ8t&x+H^^gjdR( zH`Rg^JqP-L{vH4CeXl~8zuqnE-zy6Krg@|jjlakKh_>j3u z<<(v1F+g@I>Wc6~#pG}P4+h#SFN?n_PH&Q*h$^pXzolXSgH6T2^(%yj;NHboGK{Cm z`%DQ?o!9_Vm8!xW0kxsO%ttC9>@{1`BQCP|L@ns1?nqV$=lAAa6)-+^bP$Kc$R}5{ zf`$N>l~sSM6TDLBw2CB&*94FHgvOKo6Yr{Bj+PXi9~t-9AMlA`x${T~iZJYdC3KZT ziK2>B0^VxmqH1L*DVYk9QgeAnS^Uv(ij^J%Pv!)TbSCZkT0IXjoR;m0_md?B`tLjF z*xD&c0gH|ap6(!tv(;E)t`E>Zs{h8Xj&4` zY4dcn4s|RJL_gBgUGa{qM0E5=C66EqIqrE6?ju{0R30_H5_<*6aXYry;k_%#xgtf& z(QR=q9CdRbz`43^ueM`(NazXPp2AgD8=&we`g6Hv*vc~b=Ojv5%cHS`;+eF zm#)X(5AcE(>jY{R&n)%!mYaAKR+bW74_314D=VF&rE|+N+?iNA3p(7W$$A&F7^7c; zC}yHHombF5;A zCIS;;aEB9FGz_jCNh6=qEH@!3k?JaprcBK64)tNJZ3+~oi2Xe%G)62ex|EK0ywCU3 zi?O`H4WHme1zjRo4myx}mwJaiE-F7K7jT;*)JuDg+2*>Lre8$lLPM-pKcv21>5R&j zmrGz{**4B=6-X(Hi&cgS{-H=5vRJ^}U|-nlD~#Xw&WgNbVvoRspj z)7dlWvJ9`&v%trg_Au`%nb}RYoI9WkTmXVW?a^7zjGZ}K_D??kaFi89Jc0ME5&@D8 zmC3JD=wM&KelHW6+INtgD~6n@x@>fDvm|X4ZE_eyd9gK$ScL2$3JMA;7}z=P{bMjl zdrvfIgiafVtR(o1Pozqt_d+j3x|_@b!d)NRvz?=h&4wb~dJhw6_%TSwC)Uu{-llIk7Dib1ULw;iuMfCzpvYiTz>g_6D zpsb7uK~Tm^7L_+pC|)mImm__Lxr3vLyNhfR@3(Z2IkF3ZVt9QyqE>_Z*SV$`a4V^*6@7T9l^{_d<1rZy-`MaQ?ZUpR`H zOat(lT0sXlBmpNg0gTcweU`X^XBP8cH z{W972*%S;kuqCXyy#6^+Ji6Q1y@skOV_-EWeIL0viF00_2tEwmWS*Z0z(9}c0i#9< zS@wPe`>U(%BQ=bhl;J2Nx!Tmmac3S@0!)zkJI+OK>aHP54z0z7@rF!wN?$bjgB#ug z{^sFBWvNH4Oy#0WYZ|UjX|{RGC@ns{G@Yj>&e)i>6Bk$40|Vp^^{ycm-0YA_gF%ck z#uL%5(#FGP(ffG%;@(;_&oO(;Dn%X_$BSl3MHwwpR>x=b)ru9Zu4yCfni zsy)Vz1|?-l6~sR1xVd}2(s~SIzdg1Ep&N@~=M7uM$bQ9ssnWsmXawg%PvH2;knekNQYw zfcCP1$h3o1=!#uH;qXH;IN6~^%T9V07^5nd>#B{{-BQ<(jq2j-THCDJ;aP!%5B4rO zEFkw=i94gxgBtMT>YIe%Y`R&ScUz%k_N!qmo=^DH2_WDOUujQIgYEd64WFZvjj0o{ ztu}No`&}*WvoE%@zR?xssFI>(176+F`b5|s^iGEsH#j?0#UC4(%FQ@(>nYob5+tkbC5~j z;Wx&|5lkt^xus)N{5PTskFrYmjT0A(iaxHFBBbNUN+MQOKf0W{HA`(9MDVawL zNZj)xtNy^*CEkR#O%yzqOMW|b!s^_>~I?*q+X`yF9ZCZ(NXhR^-J=o_E*nibz^JsY+h9Yp2yUeOclb4!JSX;v% zr%w>Y*;8uU-dlbmq%ze1Arp6mht&u}L5b!b;UQnN>UdcHytT!8q4?FePP3c{NV7CwmK!JZ zP9bE>2|VkOeNVO1+cANz$Ix9|{9W}nR*IWWWIb@f$W=dP*gj}#{av4a9bhT^0|@$d zyqfl-at$c0T_YX;9WB6_4{b_6xNkfb3|YhS1Gb)}zSUtBFH)(XU30o2E)LA)kqm}l z(QCZFDx3LWGc z$uNv~rz|cw!))h1gWPw!U5XTpoaoy?>DU~XU?Tu)u<pBjI-{-c?@4m2wk8R8x>8I0N|ICoK`J2VehTzH-0}{)16qdELXz~uhIWnSz zjq@Mi$D<#luh!;0^^A2SO29 zAxzHVe?pU4WNUEF4LJ zo@STM9GV^Jvau#OvLOdOk}bt5u-6GBZKYkD+ZhHu_BwUqv-HrBL1_~{eB(TGSC%GC zm8HZp0(u!;IqZKBjoTpkYI@w*kk135jb<>g5C4>m+B=ZSD@*9L#6`paL9pMQmO!lT z-X`K{q-vR~&l_f@rNYT3D{3n>x`(>ni=p1AxDsL1t~6aL4VDa54DsDW7wuM@8g(`l z-q98jNo4x>na9iXQ=i8SHLNW90?b`!?%)75@NqUCAo{AF!fD zVTLW6p@X9+swKIy${o0V<@Cs_OLoCH21C!PKR-WrdTDkVJJ^QArJV#yp8+k{6dbd)8)KQ@uL$B6Fw2JwU5t0Kt6@75VN8PW z*E+CZVd08EvSUyL&_XQH;6Gpjy{4}+XYVh6m20z*XmX=5;3!F>or5OC zrO1>Z0E8THuFKSs-ZF-0k=~GytRPe+kz%Ky>c{q?pKSRhDpV#}q=dvAD)rMW3D(Af@aXU0kRo7FBUW zai=RDF$5J?6r#=p2fnL%^3M3YLkF8MCrm3yRoCdS_jJx_{9=#d<3wLbB}FE)JJNpq z&J^@<#-AId)_9jpZeyT#c`RmM9z>NN6j3_1FckWz2hJ3hz)V6{y1iKUn9x{BI8Ii{ zH~g|2Y|K?!<7z(MZVRkK|hF*E| zId;zo+lUwjcaV%Sw3RVD;?GTd-He`i9D2LS1A51?#e~k3p6rkYngQ2*fxOWMhD+SE z`D8D_!FeY^&LfLOc%4(-vHQYR^=D3*_6)Phi%QrrT4DLEw#%K)sTn*$apiU5r8+E{ z%@`ec*CnVWOCc>}fl)Jwo!&_ZEeZ=h@^)K8G~`T*xY)$TTSj*F zahknW_08kimfW968Kex3MXq7%8XyLj7#G(iRQ>!kGs4!PU7UxkUU=8bUc=q%Yx69< zr0Q*41-&YCH1^I?{Po}2Khc0Z2Fk)vct6gw3@A&&!}LT-O+&|~MoVt|ZW{BPiq1UD zzp;9>NllZb6{{zYW1X0sTC+?Exq*>XslNy>w8O;zy+$Qy^iya{d9tK`lYn zuBT!Osgv1ZV?~`bK@@Q2{48{+uV`cJ0rTJFbH^%QE%hXuOb>QYL2}awS4tt_{K=J- zDunmejp=%s6v8xtb3yvORhiIE^JfOcOxt7Kbf!IFrOKTV`Io(!ExZ-mOHuIf8MZd< zC={w~&`Il#m{$Wy2Mr=0yWV`@oG0_J(GTDJ!QW~$ZO$=j=C$+&q<{EsN}7UKl^2b6 zi)FK}!?a_7sG(z{!A?<1DJKqB~@`>WRsrxiBql3R9f!%ye<-6R(fxhco%ZniY$!)#EJ@EPHR{<9&d%lZ&5m2G#ww|ud?W<2L^Y!rSaUR{{G6vtfjO76?$z`eAv|eHH+qLU zECI78g=!NfM{2>zs_3zr+LHgbwqo{D*1>pA z28U+}V;r&xU*Z;r_H<%Y#+ptZE@y@%#U_4}=NLAZ+~-|rqOEco1t^6g$Gj>PM!gU~ z$j?PZ<<5B>dX8skm$zNQX5PlYBG^M<0^RM%FKuL!>%?Tx%jSKt$@ZyznpI>}WZH_1 zafQiv(g1H zS$LQ$$~|caF2V^-vxX#1bhn#LWqosT@riZ(*f5y~SGQS08f<_-Ti6Q8YEJ^PB?31? zWcAAJ0@cSF-tw~EYJUxY$h=Q23|;Dm7u5PXQ8)D;D@et|Jqk!&*YK_E8@8%Hp~M@= zGypTE+d*X&dF@h|?0UwqjSMU%=`08k=a-9GLewufa6;(cZiKh8cTf88{39H`k4~03 zCvXIQy6jr6a$V*Mo#N~@av;i&%LH!!npodIZ9wzR=I(d~s4@GFe@rp@9=5VK2sI^@ zSn~Qt&z)mb$fL3MhRYTLO|LUj*pwtJa+I>e$NHt;hC-kpIW{p>f zv%@(~9p;v3GSJy$dp?yl@!D_lB)lSEq=nxisa&tCUJ!<;2NUFsYP3KH*9Ee4@(?K7 zmeN%Ml7aquJ_b4M=Joh&iItXra8=RzuCQ%qB=YeL7|&bfprOb(;cZfdV2sPDB-m?E zEkppO$_8wizLOx%?@>0n8?9$JK9ykO1Q3Vi^sz);*bA+>unzHCTi7|ldnoYi&jo@a z%ybQ= za%)XGT#wYSR8JI-nHPFhRQgt1aa;9dL>V4$n0ykX1w;b@iX6p3bzp@6fI1Rrb$4td zJ-rU0J+6=)so{(&iVDqIp04K@d_r~d;rg?~_y;LF@etpxUW3K_9@jrW<3MGcmJ zfJpo|K7ohTrdPQyr33EYv$`K8Iq7cvzy1O2ITS`EUoBTF%mdK1{knS((jI{)`%TsY zAFH^00Y`U}Ex252QHt7QD%Bc4UX>z8^;-b$U&%~`FnME?MY14Wa zKD`dDguG)qG5AqFV}kspDB83zm0uIMBtb*Pg~1gJ4PETi>~uahIpN|?=&YUfl^l@! z%teqU5lcGVPuaKRXOgu)3cl8bs-M6<=*%!}aOq2YeDD9f+$x}tnes25#`DPJH#nbRJ#graPyQpAUY1s1~Fr3G>bW$-cSTy1^@zyuAJg@ZFC7$Xp44OPlz$Dfy8i z_erZTS)Y^swls8zsmg89HhNCCHpTr4 zq~x}yCqfYoQ!1>amaZmDgD%aAA!~vo1c0bKd8%{C#as9pRR|G9_eTo60)PSVO7NOm zd@4l@k-KA@8@g!yg*n21y&QpIYL$IN9<=DmkwprHqf`H#st8l(&tj~+{R3_DWLBrG zB>gK*K((%9odZnXx5Q1JMBch&`=q=clZ0A4fo*_|ycxcI-jjnBeyyuU6cf@n;TWy8 z)LWOXD)sngaZE)rG6o&+36k=0~?hJV>&qMDrK(%v@YD${c zuoL=lzT34OgIcGHh6cWT+IUmK#`i*#{U_~l5(J5u-VjfHQZ!l5p2|kCvt}5n!H}K{ zeMIDBb3HijR_^6O>+FtGk*v?ky2_Vt^}kfsyTZcb zhzh4B-D%AY$4U5Em*SPq?naiq3ezxoZJcZwpqkHp9MtCg z9n?D1yKc4VZ*+ejF)#dNmXsm~=N0Mt1?9W=sKH`nWaI3-=soWTp+0-untA{NiulW- z0UY0TCVLgpn#XxnBY1GZ!&5C4QPjv$${g$Pe{EN;J?q|dMJ04?J$(l@sy6k4n4E60CjGV8s+A@NM3&}Q89J0wt=87}KTpk$rg2FYaU?v%z-=ns(BS^av$EdF! z<$N@@GKQ5GsoZ*Rt?bPMeb<~Ixlx3NBlp4f!H4^oE}!@U)cRwkp@fSXPzRP#{G-=4 z{{hlpAZ^GZ$L>rNI&TGZfV*%*>I+=eIlW9c3^KD2@n7@wQTraAgQqGT0=SFY4_pB| z8oetG;x?!J;zUER52w;67UOR^#`;5VcP1Ms&pK%+VF-54xi-BO`N?1O+)3x1w@-sto znTfKUE2(wo@}A%8klB20pBfgk9)REok8ZG7t5vAiJhh1>MdE}@ZljQMVkE>eP+jb$ zp(62c3^wMOWbX!w?H25${|@0!fqxl5!uS0y`v;JvyR(>gGf9D|CVvjKk4Qb- z%`Zk(QmPY`so;0^btFUc;LA(uZh6Bm5*L+J-5?MvS`ZoqLq$2&Nw_>RCfi)=3L^4d z+u&!2rbK--bq?dn67rT>?si+8w6P`BwnZap(3j{jE)NE zu~7gg*8il(;dE({r$)$WASThwC{e?}Jfa}H`UJ4IV=pN%BWB(A&Orn^IZ=2k$nkg0ann(0<@`vCmb5&%2E??;#HC#>~_!Y?|b|_ss&JqMVB3sDu62Q1vTmDwj zlW!=t+T11_eP;tZ?JztpXcFipStd#f)Fu)X|A4{887~3@PHhC!P@EHRibVj+;|t_p zSgo@XrzwE(1q8TVmYHsU${0Pqm_FaZ>pWsFo4j#o4{|mi{CI8TW}5^py1dukt*nsd zS>eUpg+GoBiD4byInx(mo8rS3n>X>IW8B?a^KSegt1EYM4E*_LE>k&*dMP7=|=d6FcGh8J*HSeYrY$KccHg0(41` z)Of!gQU`o-si~CtXLV+FT@cD3oU8zdz0^9u=ICDxcOt*!vk4FIs%^$vujm+7~ zQ3;JFK`;h-!auO#NM)77hYZ@l(-r2Cq5#MtBC(g_JTkc6BdlofCVYR%ot;awt?Cb7 z0@J#^T=9X#tE}Vksh!|4EjrBNun#Fg)GfbNJ?$K1gN112@OJH6$nH%$UTX{=^E8ip z+4z{mc?%!8Mb4HczsZ#V@3@24n2zDuTdAkW=W3b_Vai=YVzMeHzw~sv$0W$NEjY)Y zOz5(1KRwP#HlY5o6~}a^?5{08ee+}AroY{x$2w~s*rbV-J)DC50|7wQkcu}zx30)C zR`P}DF-8?|#<;0&+7+qG6`4FEadw6vLwif>f#+R%X#vmu-ZnR8E;jSzql-u^kLg%d$bB>=%uca~!E$>tvE$v>?o_+M6)UJY&H-Iy!L-f`U#>84U%UoTk&ZDI=!0epg0uBo3OP*GP2m z^;Q6A2JP+cR(b}_6bFH!CUnlF8Wm;Q#X{Ve)vV44SpMn;)MV72`LJ;d zV#Orj_`P&4_6&&e36g!?tx?-L1PvzA7YvYa&!FBK@Ee)0L<2$}2ZRO!_)L&*sd`>6 zmSojZH9I$_TQrAyr)-^MU|N`W1vIW+h_Q<6H63@Rd+jl_z^z5^r?flj)mCEqciQQ(7M5635WC;X zz57Te7fTmv4a|`*3Q?F;8M0U_70aszu=Z0yuCoQDJyhNH1|lJxbZ7a!qDP~&o~PTw z{X*qsO-WYYv(Lh;B5It255nJ+w& z#mwm(8=j6eVH}(!mP#c^rXsq)3mM72-%?NhjZ52(FF-Z&_phI64=R_Mboj{P(izR+ zq3)ZK3|EGZIhrYbo^NAnwRhdn+@278))@Z)E7oq_9PVT#KkJ87t6QI~#s}Bvl5C3% z_i;)o(b(f+;>EiuEiuMWuVll(m?J;P$kTSO@2~$Jy<~u-Ikw|#@?Wrd#_Q%Nl6}8R zqYNYV$OZ4znKED?S^~h90RxPKnHMX}(O>_tU+oBzhm;|IBz>k^FJC{t{R2F~`W?!^ z9sjt42#~bs^IrWy)Bl8c@MDLg;?c!%AkBYX zeZT&r&$G zVC`5Yq-6x`E{1DY^IS{bk4stMJ)?1fd?xsMep_R8^55k!wwsj#;6Wu}NJ=c1`3YCV zeo!?=tB=RJdK@jR;!JLt@hP}*d*~zS9dNgn1my6$TEY}%&)AgQQIEPa%eUM-rO&Dw zwQ14)9x_LdRkeSujsl3;>^`Qn{3kL#L<86x|Jt0qnh4T=uz&8*Wq`_ouN7$@zT*!x zX76MMcZeS#-?jPsF<-4eHvYa{zLh6`7`pB7?KRv)FWsLRw7BY}p^2q@w6&^1&zs_z z&E>ww)2!mkLTTt^)WPEDaC`Q9S19a0Gxhd5H&<{BM0D6&ymW1|nNvhCw$4BX2>kJ$ zI-5lq<1V=dpy}4yO|Rdu8B%C-P*{)dxO!(oXBnTGo9~uZx5Y93B#QgWu#$^_qUSb2 zVKw;gk~k-MR-~jm83W9&BcxIu@6^Ftn4^@#hxNZYXIU`p@j{k1B9zI6&+%nA4icT+ z*%!=Y^;UPL)`Jf&Uu@l=@#Wpzr^V0mDjlU;CVwG%Ty+ z!bZG5$#yJjsB135jHfm8fm(ShfY7HXJ6{mlAll;cA?y?#x9J&hUdNOc4gg;)mh0i$ zyY%c|(*Ts;WmP~d?T~mDh&4aDxgH_}dkn+roP*8R3l ztzg70uM(>k#LP`a-ljrj&a^8}-IcR-k9vH4tgP4m0sD*9>(n!G|Li;9i8JoB9FC}) zZ%bcbXT-xHvOto&Bw>tt)o4o@XdiWtaisP-O|?}#EVIb56ovFuoUnCCw?Jus0H!UX zw)62_--&^PD4@ zXtTjqk9M>#G$r3EbW6FS3)6)a+R)+3U~QLp@o=k}B42{2-tw$oA0&WpVoVyYI}Ehe z#@D9#A-4G@AIi4b*ma)D`UBfNXkl@Efes|Id%1@#R*aspE5~nfI1<{rn`)trZZ%a6 z9DjIRU!6Zoxu=7bt=XdNR~vC5^=yi!mUeQuRs7cV|KAZ-6ZFF(=*f#Z*7nL>w zaLFUn;s_D4Ll<0O@ks!H?II`M-BFO61@AuGmOdYvHtiZwI~$n(YWniNbs?9N7nMti zYOmU?M4is|ZQb%+&aBN(J_^%C*vQ7p7DfyLuD)Iy@@rUsz~h5DV(*Q$M|u?dNc`Y#OCx$3(IL|G?tbPMeD{l~iH`eji%n zJfZL)U^SQ)%t9a5J(0F^BCyB6&6RcPrpuF+x7f0Wj}G9yBUa2Z|^v= z;5CN{Q34I9d#ZxA%F$6#-6=1NU)M(k=76;CVr%_aQZJHtFC>IYxHt?`v}%=QP@8hU zlD_U#<2%uXqA?-Q>YLt5tzF{a`#%*a$Qb{$OldMBdD&<#=*2XLzZQlk@59G#nO)@9 z;PzjC{y&YqWmFx{w(h-v5Zn?7?(XjH65O5OzR(512?_4*?(Qtyf_rc$*a|G%oxJ?V zefK_R-*N68_hXOhQ9Zh=ySnC_&+jQW*4#ME8Sh|uKIdweU2%QX@Qj6|{~gu+uh6+0 zRh11%5nz_~u7p1D9V#sGyLSjPWaKe;KXjGDhiZiEjx3_j3~V-(#M{Psv@)NB1x*$z z6BU}AEv7CioOUQy`5acoHNy%MsHhl=qK@xzlZ^#UE=I$7>ElX3xRxZ2sQd=i2TV)t>#VjrsaPC*%#OI_J{N>Fpv} z=5QhyOmdSzcBEY8wOHUJ8bcy%mI|W~=N}m6OXlho2n&ln|1wz3||WP6W>1r_>fDT2l&)&Y`a zouBZAFx<0VUEM55N$X`X)zQU`Ra327a_2{T-F?ikUX-|>)A#s*JW4B{jr&FO zhcstN_OJbxHk#$-lt+()ruk}MH8G=-LroEU@M(Nam1|} z@@~aSj!YWwbAJx3@^NuR2%k{R>mdJj-WE3xV9cSLK0k|6YR=wKK!OZ48kF$(ZAAMk zHcXHk>){RbNemS{3&L!x)oNzkN0dmkaP|;kaTKve7285uPQja*WzZC~_;v@?7R1Q4 zq*k`JQx{?q-cakTDl~UkZ79FqR7udbMANPBm{Oa&H&`=hibg@YFlF(nM*Ds ziMMJ+eayf{hMO8Mf`N|xQ8e(|EPMht^vIwhz2A%$*1N*ZRWaG!QZYS3qU1gM1aUD8 zsf?rh28#ZoQKDQ^TRX`1t}K^Yh+p4!&6t?+1N3!hMElaFfYj<1d>GfPZaqmDi22#O zV^ihmW{ROzwjH05I-KNo_)RvcSKB)ZeiucHf%@_iiJ+#a2%sQ#AS#1U|8$crHiQxL z-5DbCA-T;(+!3&8ngzaq@e6BqYptw(W&(C+>WQ|pMN=KrMHta0`7K35+#Z`~%2vae z*VX87SdNG#y0->YQ7KH4P7c(dWWoZcWP1S|Rv@bS81luVFvP!r1lioYx}vR2)1d0? zY2o{MemDs#$X@B3m)ZSjhT+oWOl z9bpLs=OC*C0B~64)^(k8H629wWZ+X1!d;uBQOfx|Ml#g=`z9uud6<)H88YhV#1wbk z8n;F13yno0fiD4XHF1yN&O+%cuZ^=RdxIi^lvrz6mPSDzP9NaP$&KsnL*&Y+&`asK z`9LIrPO@qzO@9H_XdOgc3r=U2Z>;kVHC`}6gZW_$o$*FPi5+A-#$$w zXq(D^rj}mI2~RhgH&3@+PWyIjmWhX|&~u+77#o(o(f(Q>9yWuFny;dA^9m6U5J+5j zM%tJ%hwhber{;!H025pUg3!=fUA&(IM?4FrXSBgled@iQ7h3B36Y&+=0I7bGT>K08 z`X-``5nV{CX!j5Ls3EZVlarJagQQ}Q;ZpHSmH(R35yd$DXnwwQyb}RXpb7&bM~s%M69Man@rX?+h{)wV~QQYEL00rFfQVx zh`4j#P3BJ1cDaahze0SspAL6PmpAvHNY`G^zvhreL;Xh{{IhdtoeIGnJNsW=w8~za zUgXz%ZfXP8?@Wv~A)|>EZFRfKtMocc%v~Bwjo<~r&WCo6IUXl?cB4D)BWkvYmehbI z`cu%*V<}bi>tRw1XOYrBKi9lE9~GB`71?~Jcg_<#iS;XNe3{g zOeb;-RK`0ZWdshv9!rjK%^O?pl7&oDv+I|p@_3Ss=IV6xu{tfhLOu!nS>$ZvNRBcN zy`kDah^p^s3bJ)~iXthg=S#4(BByFYi89vKiz|-1R7zPoIC81Wj+*-t3Z?k#>GAoE z>-4qbV$v*nBZQ(=^(T0=aIk5E+ORPdAp&;sg61O|N6k%+r97#Xn|=1)Yr{QEHK-Fy z4Qwd#eap?gfp+v^`R@h@?<5y$K^{gc;#75b1gmvc`S#hWVgoMk+(}~K?MYKoQN2v7 z`G<#}rh0dW)=M>xZc#plcQA(}a^s_6f6t&U4?^zt-!I1mW=tEE#7p%9X!#|#iJ)!y zT`eKybvJ})g6fSqw{pt_Lkdg$1E2A^0P{1jzA$z?CBapzKotAPOugN2H6TL>CPLbF z_<6EhR#AkTj)u6d&Rl5h5;^)Iu{R2~v`~1reGy64Y{^FyBUZ^wOaZn7wMerKN@|dak5ihgIx{s|Vodp&}XUFSJ!5t*|}{gSlx0)N|i! z+^;AD^H{K2W9b+lOT2b3Pz(jU?~I-EPtf)fkecH?6>Y2RPIH^(Rd8sg4aEoQwPukR zga^q72I;%Vh}|CiMjZFc>+7NVM?kzeRcg)=m?M}eF5!GK2zt2P=V}L3AmxY6ljido z_-W~fQ7>;t#x|1E9P%7~uVDQazq%@dBc0FB7Vz5~ zz`a1^3}#Z`#-M{|A&?c0scdXeA!n0XyNWfRUwBjvLnOho=Y+7b`%3VfhP4^UX;#vxU=l zd;&Ud2vVT2<8A10PtkPk4#9__7Y?I>)||X~osBa;0?p!N{w#@@euK>k6Bg2*apfHk zh{&qyscrO>mgp09RxdRvX^M+(Th7Cbil|i_SEOj9VP`eq;=J2sEA&J#j7(h^GeIn; z-^_0_YMhu{YjWQ%K5&yIPW632ba(J_djkZ643YB25Mk36iy~ma3p_2cRqKx%Peg~8 z+is5H6iYsN0}G=@vhf6e_pIW zl`YVh0{$a{$qp3nMEdFt!5etmwI(li&skfWB1pdA&S`Di{1_`5;E-4`>G#}7*LN%+ zgJCOVCnazf2R8tvp#x#AoxISmLOQGqx%PQ=*auBqNzP}_pg}4s=f!?@873#q#VU6(TuMLZK-&hc6XdmajOJP`<7Wjfoek|} zTAMK5O3xnfvrI(W5T*RmGG*7y03kCnv$9FyT9DbVQAKyngNshzaZTfI*kUELQ3&S) z0;zdnH`Cx{ABJBqdj!f^R7W>o!%1NEZHEceyBPbG`f4UPM!j4O7B+>vY+Np??UGWG zv;23ofyxqQN;^T7ZTPY^7NqT(Kj+8zzMe>DvE;?})3C+3Ur3^2h2`1nef-Lu2M_{$ z`BZ%78^aoxDs(|L|DdpYwcxLr>80eV1PO$cwCEcfjcIPw6*_XeQl{ERirHJLWr5f) zUv>)UX^op(Vh-xZe>Gwd1zODUhf+*AorD0HW8If^(N3~~=6N`k43==E(@{MzhobcP zWGrASyP7%BLFBqmc=z?O^Hmu^K*e$EHS#&~&4ajBi0a*R053x>l1C#N-<*oViJ*Ej zU8P~i&IbNGdH#ni?}tv`0MCv^>sbzXYZ7Y(Om&A`v$CWL#4Lz{_5K;H6YpZ&iS1og zQ`1KQo|uD?KbC;R!#Xa_{r5H8=v=)zVe3AN#IWbOEpS{baN!eg1`K)EhVpr}vRJWN zzMi33wfvrrehhsq=L8{CCsCW4kJ=Op`P{togP3{?CCVPdwvnoNuxd;O%hyTtKhPyZ zl~Y*7_j3AYYLr%jK95#vKaOWo8Z1-V;}iB=5L^l%s+Ht-gVFPG-8OmNYmgj#N_;Uh z+2A?C&nwG3<{)31`i-hS*~J`56bX zRb`gH*z2K4!|4M6AOIU&9gFz?KVVt%+_e2V+i!mgMT#d?acf43l?H}Z=WWdy;KsYD zit(!QKCXCas@`EOE#)t7l?g1iSh4Bxti`6bf%o6kRR98GuYvM;1Id%i3?3DUKQiFA6L0A$2{&!#z_mQqrqS({S$b@@{GYv6`v zb&BdHk%}hVknY4{OWI#8YN<21!G!!st;*}%Rtc+~dxp12R1DV!R811LSqkbkP}?S# z9lYj`cyNPy?z1qMP$xO7NR9O;H)({M=9}V8xFkk_lbEAK70d*hSW%B?vXe`1LL*<`Kf`qFew0KZ&71#jtT zEwtt&dn!PZ(`WN+cKp;8GL+spH(AW4oi~SSxo@9Dh8KqSk?WG^M4 zVDN#bqBh{=(P^k>3&%{QG4?OuRP--k+T_(`Z0&^gFW@lX=}r2ABmZ3U7jV>b9&n|V zby-zz`LEDCO`2ehaZKfVCh#x7Wo0Sb{!3!32@{7$B-3}lXrE~Dy@{WRo&MW2sI;mU zliWJ0QXl1l$t7n1FbV$YQ^XI2hck!TxM~e!n><6krr`tJ1%aA%iJ|h`hSiJXYjnGf2^Vbgp23sRfAq@mM=Z;!P4oiZt0v*iE+VxLomJPBA#_SPidJP$&^*xCWZ&2q* zkg^ad{3xO+haJrKyi<2{pEH~0uc8K{Xj55-1S|L(?4gWd@0usj$a@JQ7K(mL^v`<* zTEwgn#mGa2r z5&5{j2lxKk&Ej_yO0Y?gy3&?)mh^$KH7|BB=5*At zHrUSZn&wFAWW#NNV3JTv!D?WQx#drEX6~~7E+c98o~os9qzb~O&#$tNU`~H~uiz(| zqmiv2Z(=DQo@@~_fS*<@<7;D^oJmUT>I~%JT zAR7N#Jv`~e)?=~ZMR=Zg*9i1&V5NTy{|^bfZvliAU??b@x4?ta+ZqHIQ&Dz0sFVWyfUD&*GHmFNeL&z{3%i zg;pGDLqMDWVyxk;y^pNxNo%@Dhc$PTdTVp>Z@><`95!vf^|HNyamk&msUWqFw49?e zkw8knHD8PE|FTH^A6A>;Z!Hy}s|dR<6s4f~&XAhn9&4vH#$|>zoDrt|0nN$?MKt+h z3CW+De`Gk+_&Cbu_f(o<)a)cZzRjsZ4VH-|nWh#a}aRJ}r5;04YYUMns&jJ^G8$ijW5mP?}p1P=V! z!f3asa`l!?N=z8Y(9%{|^C>w3VD^nDh4=%WLLPCSmrl=_3j#|WB*f2r%zg> z31xqja&;rHy_F#(s~?L7&(%%?&>HalL3 z_jv_<*WHp4*Mx8u9vf&a2^FHVq>FAO1dv(y8KM=iIwv~bTzpwI$>;gvsiI8zVswOB zKq>1pTz_nsVz#7Xtl2M+wPxFXG)UZ$T*`iG{+*aM_u(rmad5RtIh2=D)vc)84etA- z4IVl(0JR#2EQa`-9w8$`(i~#5d6rgNr6)SSxM7W~U}|>KF9UA6vb5V86S=WYg;JV* zyyZovU(P4ji5If{z#u91McsXJ$@0dkWluJ}Gb0Ab{-k9GHzG=w9GcA;0ZNuUfJ?h5 zQH()5*IAnCk$7DV_7JTz3GRckMj+e=6|qCc=>+d=V8x2@9Mggin#VT5ar`B>e5);9 zC6&(&V#bdzk7!pGRI4H%7}U-+c=(9=$zgFc?JYI`?*x6z^=WKP&YBbU727RH>!V#n~Sdl6XS{EUg zR8bXKS>kNjm#S@lUw+3;Pyf#6<`O5J*3!^(ukxK*v#rgPkX&bGk}T+ZKZufPB|neVzb#WSnhFU<6zI>PVIG-G5*G%lY~+{$r;RRhYC9 zG1aRQC7)`63%wsa)&WV>Loj8=pHwzWTdHqE-zx{I4aCs^8F73!6)s+PGo_WCW8XT2 z9LknjXo{*BktmRm2uUO=UiHyE$ST64P=sP>%iDDF064UV0T<(?#}8!&>&N9xc(PS% z#-eOBTyfmTo?k@VWbKi^d&N3Zz2z&2L~fXv^G|HaVi9}q`=e`w&W{p&%j2BKWuTd8 zgPAy}N!f3Hl5mOQ>2^x+Z(HM^5$dF0m;y&a>A@%+0yiC8@g zCQK+hq#V$_NG((84#{2HtwJk~(3$79-B$TJ0Kc}~%2sc+yCM{?J>z;9Sv-ocHWKDf z*yS9`F=(k4fjlpEaZ&&k=*@w`(a(Xe6=~i0i+*JDm~dZ%<^8u%e*wEr;F=s9QJQF! z{QPAzW|t)Kgq_@mfUDdwwaDPGBd%A&BhCrOw&-H#Iu44O-|&avph+7DATFq73Rigj}2w3 zc57IDI21y0F-r3cNS#KQ4Sozu`JiLS)SB5R2}fN?c$msYg6p>4pxy0iK4jESrnAo^ zJJuu)?^_N}aOF$&JE>=6CZwonnNU?d;&?rx3>T80Cz2$Ta@K8>LPvpQjg99suyCoCLn*Auk5P%zWaT zI|kTGVTLsRx*~)umZGu^B!=qg@fE`c{v+EGLsm}$0PYeT=vEuuv>uh_qwG|_2=Jo5R|-97kJm)m zkACGbx~96h>FJ3VL7ckC5Y6W8$xRAZIWv2z!E3!(tr`gHLpHxiMW?^A$&=k9lEw6c z4aQ0*K9u(voQ}$xYyEK`*ab>2WKM~c7Y%Ntba5-__ZRz%SGgxH4<)$RQ`&haHg%ce zd|uD^afUre%?EV6gq{W1-j*t+@ZAXVj_6aBnXl1VIUCOGEWr_eR#xZxt}yTPW}h1B zWH`o>_D6q;P<<7btC2@TLX2{Xdw>L?AjG4)`xN~zVAZpB6V2!1h>Udq%HO9;bl2pe znEZM7%{|1;s$Dhp_1j-a|#sM?m-jzkA6tU zAj9om&xIE-tE$*jlQiX<(sFzT7O~l2j8unGnM`eR;~roL<+a?#g;`ZRGmUw~O}kyI5`v}8bznYn{+PxMfGrR- zV)i=aDDdbgvXlM%p_^BA-pV{u2^|OLeaLtCb%Uw#Ob^3h<5L;#{!W|Uh_#N$C-`Aq z|FTAktl9{uZ`o=~KRYP(N;ZGFB^_$qg5MYYO?n%8$jXKK7*Y`dR#`cCN%z#*Uvc{N z!bv~fv7#qjKUH_9Du1@n7 z;&p+@Id+&R?N#gE%jC1Q}G|`T^&7P1Rf!>s>P;56%CsciLYh$*}kHKCv!^>oN z;_xpZ{WI&zhc~ds36fF?=?+NY+?oEV^54%1;7BoPp#BTM+?u4F^!*E9vL4J0$?Yh1 zebihG;JWOIO?$Ou>aqCzO5T&9lJW4WI~^&CCi>r0QtbaFlFH@2dalp?6KL(xNR?tavL z{!Leb@pVpGruTp9W%bZx*OHasj*D{vI+KvS>$fYB#TXGBwBS$8Z zQ+RG+Ik9QmH-SQEz~_)_=Lm6wT3}43x7msf&D9oz3=C}L!7S9-S1oFka5e-63It2D z3`Pw^Miu|yXa8(q@b3`)zaJDhO;u`392>(QGrkK9;#iINskFQ>3`oQ4zqTe+-%F>< zb62h26kFTCu)(mY$&g|5RmDtgBd$~_xq834DP-CiBWEngfv@jNegPg((ck4g$?`OC z)iXNmg>-cj>{AXA`MPUHMkV;6QIoRb?aR2Tsbt8@c6)Y1^Tclhp=IX+j&Flew~ngpO=L;v<=nq zR6Rj52XF3AT17{t32Kf~pH>^Q(>1-7=)13)-N=sjPfpi$|jFGkt4G86%fqj)s@ZnAQl`huaX9pQdXb+4a~;NzMb zmz9==l)c@2k~&w^9-}KIC&I{3B~XFX5sjc4t`uyB4WaK)w3__DKL&V@b$~B;K&S$A z{OS|^eu~gp8YQqQ=E;^=r{i&ovRw8troJ3Hea4NHOT!0i^Xs=wp==lvO!kMxa=lBl z^+PC$hbm>xBl#T>)opIPMwi&9(<+ieK|MXLhzfazid*RT`@*gDck*K)bVz|5lz%+J zK-u417)8-6DOm_t@wG)q2{(`VQeuKv96n!IwicTAAP6eT_S+cz1#pU8B!8XAAM1V7 z!bX-1+E@F*+vIfgtI^jjeO3==v<44qlT)62;#RfWh(K0RX)=qd>JMwMNua_-E~A#G zz!aeugX1y!tk&8T)9(|$WsZ?gn6pdBAkU8{Z*TWc>_l7qm1A+0Kih@KrN#4684YIY zV6a#74RNj6Py4*#i`T3A5l^g`4k^kU@hyk^kJuv*07vAE*tvFByw7_X9!n*7Av8HQ8W$$z~m}5pfyf#gI zEg1sG4@ML1y6nn)jb`x^AQb?Hji{5BA7tBb~~)~BzOhq$y2p6&)+sEOw_V>HnlZZqY1>q z4VX(XXyZV#&C8mrx+D1YhcyuZHecOeuzIhnzQdS&tB{n{u{)2)X@8b9YYYzxjJCu; z`!o|oAyfY=egteWTK}$}Oe#!0)Z{z&5-u;UTRY@bcHH$!NBES*EmqHkDsfd|EQW47 zN*YCfB!lj4(-^@wiLHr{&dGmH5|J`qw)-nXELIFtCJtIfJEs>D;{@XtsznAmz=0^* zuZ2VpYiWmHy%rsnT{vCk8a$!>=3j*aL4b|ZX^1j(g?#4lL;WqfhdF9qH`4|SfWO96 zm^udNz^NUSb=%y+mF*t7$rc$%NAmNnHbwITYaxxm-Mt#)Ws3zrAUrGk>1x4buUn3E z!ua-qCHX>!^zIGMXqxG1?s$4r^K#{O?EhrF;7siC_pW?S9lpZt>i%5pt2O*G=DTWR zvbymyACRH4ak-s(pFX5LU&N7%^#u3|6`iC#eQ+LsR@^(= z%BlDZpuTt>JabAoG{JHC3vkWl$-un@2Y^T+iFdxOmajCfo@diq0SWi7W_RFG_u7co zxBt9KrV`4NK~H<^m4aQF=E0<=O!3jZ^j3RF!TeFuK`2KA*jQ=6(u_EZ5`ItHW+755 zw`w6AwLU=_dm=9^=?8i+qM&M5s(MeZS{9dz3+JA*qoicc&JF<*O){TmqB2#@?dp5| zwP8nm8ouSlh>Joo*rpOb^FX6Uwxx!D&F=m>RcmhpKyo39p9!hKZjQ4_8@(f3*|@p4VYTuR-8>4dzP^=>-2HkOFmQ7I%IZ?UVt%%jg{FpJnh6Xo`4Jv>xT5@IwCUUAIsdTO(!uJzlpP84>vD9wPUPhZ#`>Za~lAz_LC z&)52& zx9US((>;dV36b~#MdkEXN|x4&ujslqno@llgITkYXVQ}yb4(I7v;;Jz+d(A|1kzxQ ziM2K2xj?VP6?50TAA~v;2#R_f`bdp}{h<%Vz$;M8)N;`wOHd5eka^9)5YA)P3 z@SJLBCqmOd4F%`_e3TXMt+t#hx6?puc&*&Mz1aMKw#$uPvP_8eGgNGPxKeAsm}0ex zLX2&6l499(2lMj)U0G%EFL^f1k7@ablPuM(O~mgxSsJ~Z9A+5hsorwM%S~BR!s2;} zGoL^?>1B54s0|@{@?2N?au+#p{c^~&{)Rb9E(8SXncZGw_g9%UFi!@=+TRf9(xC#U zO0cj|hD!3oM4NZ|g}5Z==bvshK%ZxFz%!BXst^+a$U2q^_;%c<3tc8fo^$PPG~;VX z(x3epnTGQmS_}010SexxH^J9A+7A|4I~3_X_Ng>br4(L`5Wr+i;E_mOo2`1 zO+Q`F?#*95#&t*XI7xZ!(u17Gh$W!gV)j9Er=QkEB|99eeXigRm4(>hnj*d_+W*A) z^Sc=xx~V{euTcDbO{2stNs7TmMLW%RN3~d;IYUjZzzYySvm&+Rus#|z-l9jHNS~lb znR`$OLcx`K82ELEwZz#7m?1nQ8b;=t=Ue>N+Y~1b+ni}1csm@wv0E-KsbLJ8W%u>l zKoDYY@RuIS7~(U9p~tvA?f%7E1)kQ}#S}h)s^aFzG=y6N;usmM1~?QXa%e*>1!l0r zJye)Oq>L7OEIq~?MD6}(>UxHy<;i0)6NEEVa#SK9GbH&FZ>TkE3dhF9#gWi(zMPB5 zqQ=C=J4zsYfu+FLqk#5(Dr)hR3lYpfgbsm5upqNhGPR=o|NR^KzpXj{&#Te@YWc;= zrZS%h(NbCZzG33(>uG%W_!m&?^K^z0lo~LZ+OhT6v*y>0Tjd>l8Guk)8$f+F^%sz8 z(qmGKa7ycUG*7%wzhP1P`o{TfUS55v@I9xrzNb$&v7UyE8?)JMzWa@xDvwd!UfrNsj$nNDh4`-tMN#H`K)W_4E8QOV1k<`{)$<7l6Aj=$5jvC2CSGa`D)m{ua%s zo(Wqe4WD<37Czi;2WxN1JapZhb$bt!@-A}RX}y-p?h0*oYBf~k9QlBePDMLj4}AE+ z9XU`R!Hph^dsC?Yz^&{H=gKCo3QF$-%hs(QzAEs=X|d?$^=gTe=mp~N(C%h+Rk>uS zIf>!6!MkvIhkfNb$1FgvNdMdDJNr_>zvszF;zUU1W*935uG?zQ?v6t4Gnsq(qjI`l{+W_^WpiKLv`&wAcfI(P2$a(DgD<9c%~$dGSex92(4 ecdO6y#=}IG+rK-TdpjfTrs{vzTnGGJ`Tqb8q19dh literal 0 HcmV?d00001 diff --git a/ci/CI_JPG/CI_04.jpg b/ci/CI_JPG/CI_04.jpg new file mode 100644 index 0000000000000000000000000000000000000000..387923456aa46a0d9438c1ffc01cabb0bcfc9df9 GIT binary patch literal 44775 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 literal 0 HcmV?d00001 diff --git a/ci/CI_JPG/CI_05.jpg b/ci/CI_JPG/CI_05.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7f034e3139443ea2f4f3e5b90bf4451b74e8ae30 GIT binary patch literal 73120 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 literal 0 HcmV?d00001 diff --git a/docs/IMPLEMENTATION_BACKLOG.md b/docs/IMPLEMENTATION_BACKLOG.md index d70952b..876b7e9 100644 --- a/docs/IMPLEMENTATION_BACKLOG.md +++ b/docs/IMPLEMENTATION_BACKLOG.md @@ -60,7 +60,41 @@ | E-M14 | 현장운영(혼잡·안전·주차·에너지) | BE·FE | 대시보드·경보 | | E-DEP | 역할별 프론트 번들 + Spring jar + 워커 서비스 빌드·Gitea CI/CD·systemd·env | DEV | (G2 후)push→배포 | +## Phase F — 벤치마킹 유래(티켓·관람객) 추가 항목 +> 근거: `docs/analysis/ticketing-app-benchmark.md`(2026-07-11, COEX·NOL/멜론/티켓링크·킨텍스 앱·Whova/Eventbrite 벤치마킹). ⓑ=P1 보강(기존 화면 스펙 수정 후보), ⓒ=P2 신규(신규 화면/기능). **PLANNING.md·design.md 직접 수정 금지 — planner/designer 경유 반영.** 관련 화면 표기는 현행 design.md v2.1 기준. + +### ⓑ 보강 (P1) — 기존 화면 스펙 수정 후보 +| ID | 작업 | 대상 모듈 | 관련 화면 | 출처 | 담당 | 완료 기준 | +|---|---|---|---|---|---|---| +| F-B1 | 스마트티켓 부정입장 방지 — 디바이스 바인딩/회전(애니메이션) QR + 본인인증(캡처본 무효·양도 방지, 현행 정적 QR 대체) | M10 | SCR-M15·31 | 벤치 §2②·§3 B1 | VIS·BE·kintex-mobile-dev | 회전 토큰·기기 인식 체크인 왕복 | +| F-B2 | 취소·환불 규정 정교화 — 3구간(100/50/0%)→다구간 취소수수료 + 예매수수료 별도 환불 규정, 서버 권위 | M9·M10 | SCR-P8 | 벤치 §2④·§3 B2 | VIS·BE | 다구간 예상환불액 서버 산출·표시 | +| F-B3 | 티켓·배지·관람객 앱 다국어(한/영/중/일) — 공개사이트(M12) 외 티켓·배지·지갑 화면 확장 | M10·M12 | SCR-P7·M5·M15 | 벤치 §2⑧·§3 B3 | VIS·CMS·FE | 4개 언어 티켓·배지 렌더 | +| F-B4 | 세션 정원 기반 사전등록(RSVP) — 즐겨찾기에 정원·마감·대기 상태 추가 | M11 | SCR-M9 | 벤치 §2①·§3 B4 | VIS·AI·BE | 정원 소진·마감 상태 처리 | +| F-B5 | 결제수단 사전등록·간편결제 빠른결제 | M9 | SCR-P7·M14 | 벤치 §2⑤·§3 B5 | VIS·BE | 저장 결제수단 빠른결제 왕복 | +| F-B6 | 행사 라이브 공지 피드/현장 푸시 — 알림센터에 더해 행사별 라이브 공지(긴급·프로그램 변경) | §5B notification·M12 | SCR-M11·M5 | 벤치 §2⑤·§3 B6 | VIS·COM | 라이브 공지 발행·푸시 수신 | + +### ⓒ 신규 (P2) — 신규 화면/기능 후보 +| ID | 작업 | 대상 모듈 | 관련 화면 | 출처 | 담당 | 완료 기준 | +|---|---|---|---|---|---|---| +| F-C1 | 티켓 오픈 알림·관심 행사 구독 — 오픈 예정 행사 구독→오픈 시 푸시/EDM | M10·M12 | 신규(공개사이트·앱) | 벤치 §2⑤·§3 C1 | VIS·CMS | 구독→오픈 알림 발송 | +| F-C2 | 관람객 앱 주차 연계 — iparking 실시간 현황·주차비 결제·사전 주차권 | M14·M10 | 신규 SCR-M(주차) | 벤치 §2⑥·§3 C2 | VIS·kintex-mobile-dev·BE | 주차 현황 조회·결제 연계 | +| F-C3 | 관람객 대면 혼잡/대기 안내 — 입장·주차·인기 세션 실시간 혼잡도(현행 M14는 홀매니저용) | M14 | 신규 위젯(SCR-M5) | 벤치 §2⑥·§3 C3 | VIS·BE | 혼잡도 위젯 표시 | +| F-C4 | 관람객↔관람객 QR 명함 교환·컨택트 지갑 — 리드캡처(업체→관람객) 외 관람객 상호 교환 | M11 | SCR-M8 확장 | 벤치 §2②·§3 C4 | VIS | QR 교환·컨택트 저장 | +| F-C5 | 인기 세션/바이어 미팅 예매 대기열·취소표 알림 — 정원 초과 대기 우선권 | M11 | SCR-M9·M8 | 벤치 §2⑤·§3 C5 | VIS·AI | 대기 등록·취소표 알림 | +| F-C6 | 관람객 멤버십/등급 — 일반/바이어/VIP·재방문·바이어 인증 등급별 혜택·매칭 우선순위 | M10 | 신규 마이 | 벤치 §2⑦·§3 C6 | VIS·ADM | 등급 산정·혜택 차등 | +| F-C7 | 최근 본 행사·부스 개인화 홈 피드 — 재방문 전환 | M10·M12 | SCR-M5 확장 | 벤치 §2⑤·§3 C7 | VIS | 최근 본 이력·피드 | +| F-C8 | 셀프 체크인 키오스크·즉석 배지 인쇄 화면 — PLANNING M10 즉석배지 화면화 | M10 | 신규 SCR | 벤치 §2③·§3 C8 | VIS·FE | 키오스크 체크인·배지 인쇄 | + ## 진행 규칙 - **Phase B(공통 레이어)는 전 도메인 선행 기반** — C/D 착수 전 인증·시스템관리·공통기능 정착. - 각 모듈 완성 직후 QA 점진 검증. 보안 불변(자격증명·PII·스택트레이스 미노출·AI 워터마크·등록업체 응찰·admin env) 반려 사유. - 기획=planner, 디자인=designer 경유. 아키텍처 표준(Phase A) 위반은 시정. +- **Phase F는 벤치마킹 유래 추가 백로그**(P1 보강 6·P2 신규 8) — 기존 SCR-P7/P8·M14/M15 등 화면 반영은 designer 경유, 모듈 반영은 planner 경유. 착수 우선순위는 벤치 §3 톱5(F-B1·F-B2·F-C1·F-C2·F-B3). + +--- + +## 변경 이력 +| 날짜 | 변경 내용 | +|---|---| +| 2026-07-11 | 백로그 v2.0 최초 재작성 | +| 2026-07-11 | Phase F 신설 — 티켓·관람객 벤치마킹 유래 항목 14개(ⓑ 보강 6 F-B1~B6 · ⓒ 신규 8 F-C1~C8) 추가. 근거 `docs/analysis/ticketing-app-benchmark.md`. 기존 항목 무수정 | diff --git a/docs/PLANNING.md b/docs/PLANNING.md index da27384..f7edbdb 100644 --- a/docs/PLANNING.md +++ b/docs/PLANNING.md @@ -1,6 +1,6 @@ # 킨텍스 자동전시시스템 (Exhibition Automation Platform) 기획서 -> 작성: 기획 에이전트(planner) · 작성일: 2026-07-11 · 버전: **v3.0** +> 작성: 기획 에이전트(planner) · 작성일: 2026-07-11 · 버전: **v3.1** > 근거 문서: `docs/analysis/kintex-website.md` (킨텍스 웹사이트 25개 페이지 + 전시주최자매뉴얼 PDF + 참가업체 매뉴얼 PDF 전수 분석, 2026-07-11) > 근거 문서: `docs/analysis/reroomai-source.md` (ReRoomAI 이미지 파이프라인 소스 분석, 2026-07-11) — 6장 나노바나나 파이프라인 제어 파라미터 확정 근거 > 근거(글로벌 벤치마크, 2026-07-11 크롤링): Eventleaf·VenueSight·Whova·ExpoPlatform(전시관리·부스판매·리드캡처), Eventbase·Pointr·Swapcard·Brella·Grip(wayfinding·비즈매칭), RainFocus·Bizzabo(등록·리벤뉴), ExhibitForce·Ways·FinancialModelsLab·Digitevent(전시 BI/KPI), FindRFP·Procore·4castplus(RFQ/Tender/역경매). 각 §5 모듈에 매핑. @@ -142,20 +142,44 @@ ### 2-1. 역할별 웹/모바일 포털 분리 (IA·채널 매트릭스) -각 역할은 목적이 다르므로 **별도 프론트 앱(도메인/서브패스 분리)**으로 제공하되, 공유 Spring Boot 백엔드 + SSO + 역할 RBAC 위에 얹는다. 데스크톱(설계·에디터·대시보드)과 모바일(현장·조회·승인)의 용도를 명확히 나눈다. +각 역할은 목적이 다르므로 **별도 프론트 앱(도메인/서브패스 분리)**으로 제공하되, 공유 Spring Boot 백엔드 + SSO + 역할 RBAC 위에 얹는다. 데스크톱(설계·에디터·대시보드)과 모바일(현장·조회·승인)의 용도를 명확히 나눈다. **계정 체계·모바일 앱 채널은 §2-1-1(소유자 확정 2026-07-11)** 을 따른다. -| 역할 | 웹 포털 (데스크톱 주력) | 모바일 (현장/조회 주력) | 주 사용 모듈 | 인증/권한 | -|---|---|---|---|---| -| **주최자** | 주최자 콘솔 `organizer.` — 홀 배정·배치·행사 대시보드·옥션 발주·BI | 조회·승인·현장 상황판 | M1·M2·M6·M15·M16·M12 | Event owner | -| **참가업체** | 참가업체 포털 `exhibitor.` — 부스 신청·설계·유틸리티·옥션 발주 | 현장 체크인·**리드캡처(배지 스캔)**·승인 | M3·M4·M5·M10·M11·M15·M9 | Event member(부스 단위) | -| **장치/공사업체** | 업체 포털 `contractor.` — 도면 제출·**AI 설계자료 열람·옥션 응찰(견적서 제출)** | 현장 시공·반입 통행증·안전 체크 | M3·M4·M15·M8·M7 | 등록업체 검증 계정 | -| **킨텍스 직원(홀매니저·운영)** | 운영 대시보드 `ops.` — 검수·규정 플래그·홀 부하·물류·현장운영 | 현장 검수·안전·혼잡 모니터 | M2·M6·M8·M14·M16 | 내부 계정(행사 전체 열람·승인) | -| **테넌트 관리자** | 백오피스 `admin.`(테넌트 컨텍스트 고정) — 자기 전시관 사용자·RBAC·감사로그·마스터데이터·룰셋·시스템설정 | (없음, 웹 전용) | **M18** | 테넌트(전시관) 관리자(단일 테넌트 스코프) | -| **플랫폼 슈퍼관리자** | 백오피스 `admin.`(테넌트 스위처) — 테넌트 마스터·온보딩·전역 코드·크로스-테넌트 감사·통합 BI | (없음, 웹 전용) | **M18 + 테넌트 관리** | 플랫폼 슈퍼관리자(크로스-테넌트, §1A-4) | -| **관람객/일반 대중** | 공개 홍보 사이트 `www/expo.` (SEO·다국어) + 관람객 사전등록 | 관람객 앱 — 배지/QR·티켓·wayfinding·비즈매칭·플로어플랜 | M12·M10·M11·M13·M17 | 공개/셀프서비스(쓰기 제한) | +| 역할 | 웹 포털 (데스크톱 주력) | 모바일 채널 (앱 타깃) | 가입 트랙 | 주 사용 모듈 | 인증/권한 | +|---|---|---|---|---|---| +| **주최자** | 주최자 콘솔 `organizer.` — 홀 배정·배치·행사 대시보드·옥션 발주·BI | **운영 앱(B2B)** — 조회·승인·현장 상황판 | 승인/초대 + **2FA(OTP) 필수** | M1·M2·M6·M15·M16·M12 | Event owner | +| **참가업체** | 참가업체 포털 `exhibitor.` — 부스 신청·설계·유틸리티·옥션 발주 | **운영 앱(B2B)** — 현장 체크인·**리드캡처(배지 스캔)**·승인 | 승인/초대 + **2FA(OTP) 필수** | M3·M4·M5·M10·M11·M15·M9 | Event member(부스 단위) | +| **장치/공사업체** | 업체 포털 `contractor.` — 도면 제출·**AI 설계자료 열람·옥션 응찰(견적서 제출)** | **운영 앱(B2B)** — 현장 시공·반입 통행증·안전 체크 | 승인/초대(등록업체 검증) + **2FA(OTP) 필수** | M3·M4·M15·M8·M7 | 등록업체 검증 계정 | +| **킨텍스 직원(홀매니저·운영)** | 운영 대시보드 `ops.` — 검수·규정 플래그·홀 부하·물류·현장운영 | **운영 앱(B2B)** — 현장 검수·안전·혼잡 모니터 | 내부 계정 발급 + **2FA(OTP) 필수** | M2·M6·M8·M14·M16 | 내부 계정(행사 전체 열람·승인) | +| **테넌트 관리자** | 백오피스 `admin.`(테넌트 컨텍스트 고정) — 자기 전시관 사용자·RBAC·감사로그·마스터데이터·룰셋·시스템설정 | (없음, 웹 전용) | 내부 계정 발급 + **2FA(OTP) 필수** | **M18** | 테넌트(전시관) 관리자(단일 테넌트 스코프) | +| **플랫폼 슈퍼관리자** | 백오피스 `admin.`(테넌트 스위처) — 테넌트 마스터·온보딩·전역 코드·크로스-테넌트 감사·통합 BI | (없음, 웹 전용) | 내부 계정 발급 + **2FA(OTP) 필수** | **M18 + 테넌트 관리** | 플랫폼 슈퍼관리자(크로스-테넌트, §1A-4) | +| **관람객/일반 대중** | 공개 홍보 사이트 `www/expo.` (SEO·다국어) + 관람객 사전등록·**게스트 예매(가입 없이 티켓 구매)** | **관람객 앱(B2C, 스토어 공개)** — 배지/QR·티켓 지갑·wayfinding·비즈매칭·플로어플랜 | **간편가입(이메일/소셜) + 게스트 예매 허용 · 2FA 미강제** | M12·M10·M11·M13·M17 | 공개/셀프서비스(쓰기 제한) | - **분리 원칙**: 6개 프론트(organizer·exhibitor·contractor·ops·admin·public+visitor)는 **역할별 번들 분리**로 최소권한·공격면 축소. 공유 디자인 시스템(design.md)·공유 컴포넌트 라이브러리·공유 API 계약을 상속한다. (UI 상세·화면 목록은 designer 후속 반영 필요.) -- **모바일**: 참가업체 리드캡처, 홀매니저 현장 검수, 업체 반입 통행증, 관람객 배지/wayfinding은 모바일 전용 최적화. 단일 앱 내 역할 스위칭 또는 역할별 별도 배포는 designer/개발 트랙에서 결정(백오피스는 모바일 미제공). + +#### 2-1-1. 계정 체계 및 모바일 앱 채널 전략 (소유자 확정 2026-07-11) + +> **개정 표기**: 본 소절은 v3.1에서 소유자 확정안을 신설한 것이며, 기존 §2 권한 모델·§5B-3 인증·M10을 삭제하지 않고 정밀화한다(상충 시 본 확정안 우선). 근거: `docs/analysis/ticketing-app-benchmark.md`(게스트 예매·간편가입은 티켓팅 업계 표준). + +**(A) 계정 체계 — 단일 통합 + 가입 트랙 분리.** 계정 테이블/RBAC는 **하나(단일 통합)** 로 두고, 그 위에서 **가입 트랙(등급)만 분리**한다. + +| 가입 트랙 | 대상 | 가입 방식 | 2FA(OTP) | 예매/조회 | +|---|---|---|---|---| +| **업무 트랙(B2B)** | 주최자·참가업체·공사업체·킨텍스 직원·관리자 | **승인/초대 기반 가입(SCR-49)** | **필수** | 역할 RBAC에 따름 | +| **관람객 트랙(B2C)** | 일반 관람객·바이어 | **간편가입(이메일 또는 소셜 로그인)** | 미강제(선택) | **게스트 예매 허용**(가입 없이 티켓 구매, SCR-P7 기반영) | + +- **계정 승격 연속성**: 관람객 → 바이어/참가업체 담당자로 승격 시 **단일 계정 위 등급 상향**으로 처리하여 **데이터 연속성(리드·비즈매칭·재방문 이력)** 을 유지한다(계정 재생성 없음). 승격 시 업무 트랙 요건(승인·2FA)이 추가 적용된다. +- 게스트 예매자는 사후 간편가입 시 예매 이력을 계정에 병합(티켓 지갑 연속). + +**(B) 모바일 앱 — 코드베이스 1개(Expo `mobile/`), 배포 타깃 2개.** + +| 앱 타깃 | 대상 | 배포 채널 | 핵심 화면 | +|---|---|---|---| +| **① 운영 앱(B2B)** | 업무 사용자 전용 | **스토어 미공개** — 사내 QR/APK 배포 | 현장 체크리스트·검수·승인 | +| **② 관람객 앱(B2C)** | 일반 관람객·바이어 | **스토어 공개 배포** | 간편가입·티켓 지갑·배지/QR·wayfinding·비즈매칭 (SCR-M5~M9·M14/M15 계열) | + +- 두 타깃은 **단일 Expo 코드베이스(`mobile/`)** 에서 빌드 프로파일/엔트리로 분기한다(중복 구현 회피). 배포 채널·스토어 정책만 다르다. +- **관람객 1차 접점은 공개 웹(SCR-P7/P8)** 이며, 관람객 앱은 **리텐션 채널**(재방문·티켓 지갑·현장 wayfinding)로 위치한다. 앱 미설치 관람객도 웹 게스트 예매로 전 여정 완결 가능. +- 백오피스(관리자)는 모바일 미제공(웹 전용). 업무 사용자 모바일은 운영 앱으로만 제공. --- @@ -449,9 +473,11 @@ sequenceDiagram ### M10. 관람객 등록·티켓·배지·현장체크인·리드캡처 — **P1** - **현재**: 킨텍스 공식은 행사일정 검색 수준. 관람객 등록·배지·리드캡처는 행사별 주최자 사무국에 파편화(공통 플랫폼 부재). -- **AI 자동화 후**: 온라인 사전등록(관람객/바이어 유형별 폼) → **모바일 배지/QR 발급** → 현장 QR 체크인(즉석 배지 인쇄·오프라인 대비) → 실시간 입장 집계. 참가업체 **리드캡처**: 모바일 앱으로 관람객 배지 QR 스캔 → 연락처·관심도 평점·메모 저장 → 팔로업 EDM(M12) 연계. 사전등록·체크인 데이터는 M16 BI로 흐른다. -- **기대 효과**: 현장 등록 대기 제거, 참가업체 ROI 측정(리드 수·품질), 관람객 흐름 데이터 확보. -- **한계**: 배지 QR·리드캡처는 개인정보(§10 R10) — 동의·보존정책 필수. 오프라인 체크인 폴백 필요(현장 네트워크 불안정). +- **AI 자동화 후**: **간편가입(이메일 또는 소셜 로그인) 또는 게스트 예매(가입 없이 티켓 구매, SCR-P7 기반영)** → 온라인 사전등록(관람객/바이어 유형별 폼) → **모바일 배지/QR 발급** → 현장 QR 체크인(즉석 배지 인쇄·오프라인 대비) → 실시간 입장 집계. 참가업체 **리드캡처**: 운영 앱(B2B)으로 관람객 배지 QR 스캔 → 연락처·관심도 평점·메모 저장 → 팔로업 EDM(M12) 연계. 사전등록·체크인 데이터는 M16 BI로 흐른다. +- **계정 트랙·승격 연속성(소유자 확정 2026-07-11, §2-1-1)**: 관람객은 **간편가입 트랙(2FA 미강제)** 이며 게스트 예매를 허용한다. 관람객 → **바이어/참가업체 담당자 승격** 시 **단일 계정 위 등급 상향**으로 처리해 **리드·비즈매칭·재방문 이력의 데이터 연속성**을 유지한다(계정 재생성 없음, 승격 시 업무 트랙 요건 2FA 추가). 게스트 예매 후 간편가입 시 예매 이력을 티켓 지갑에 병합. +- **채널**: 관람객 1차 접점은 공개 웹(SCR-P7/P8), 리텐션은 **관람객 앱(B2C, 스토어 공개)** — 티켓 지갑·배지/QR·wayfinding·비즈매칭(§2-1-1 B). +- **기대 효과**: 현장 등록 대기 제거, 게스트 예매로 가입 마찰 최소화, 참가업체 ROI 측정(리드 수·품질), 관람객 흐름 데이터 확보. +- **한계**: 배지 QR·리드캡처는 개인정보(§10 R10) — 동의·보존정책 필수. 오프라인 체크인 폴백 필요(현장 네트워크 불안정). 게스트 예매는 최소 개인정보 수집·사후 계정 병합 정책 명시 필요. - **필요 데이터**: 관람객 폼 스키마, 배지 템플릿(M17 CMS), 부스-참가업체 매핑(M2). - **연동**: M11 비즈매칭, M12 마케팅, M13 wayfinding, M16 BI. - **근거**: Eventleaf·VenueSight·Whova·WebMobi(자가등록·QR 체크인·즉석 배지·리드 리트리벌 앱·관심도 평점·메모). @@ -587,7 +613,7 @@ UIWS 표준 공통 모듈을 이식해 전 포털이 공유. 킨텍스 도메인 kintex 인증은 §2 행사 단위 RBAC를 **UIWS 표준 인증 위에** 구현한다(재설계 금지). - **JWT + RBAC**: 발급·역할 게이트. §8-1 SSO(플랫폼+행사 이중 권한)와 결합. -- **2차 인증 OTP(TOTP RFC6238)**: SHA1·30s·6자리·±1 윈도우. `TotpService` 이식 — 로그인 2단계(비번→OTP), 최초 QR 등록, 마이페이지 재설정/해제, 관리자 OTP 초기화(`otp_secret=NULL`). 대상: 관리자·홀매니저·주최자·업체(내부/발주 권한 계정) 필수, 관람객 셀프서비스는 선택. +- **2차 인증 OTP(TOTP RFC6238)**: SHA1·30s·6자리·±1 윈도우. `TotpService` 이식 — 로그인 2단계(비번→OTP), 최초 QR 등록, 마이페이지 재설정/해제, 관리자 OTP 초기화(`otp_secret=NULL`). **대상(소유자 확정 2026-07-11, §2-1-1 정합)**: **업무 사용자(주최자·참가업체·공사업체·킨텍스 직원·플랫폼/테넌트 관리자) = 필수**, **일반 관람객 셀프서비스 = 미강제(선택)**. 관람객이 바이어/참가업체 담당자로 승격(§2-1-1 A)하면 그 시점부터 업무 트랙 요건으로 2FA가 필수 전환된다. - **로그인 실패 잠금** + 관리자 해제. - **admin 비밀번호**: env `ADMIN_PASSWORD_ENC`(AES-256-GCM) + `ADMIN_KEY_FILE`(별도 키파일 root 600) 복호 → 기동 시 BCrypt 재시드. **하드코딩 `admin123` 시드 금지**(§10 보안). - **스키마**: UIWS `TB_USER`·OTP 시크릿 컬럼·`TB_AUDIT_LOG` 이식(멱등 DDL, sql.init `mode=always`+continue-on-error). @@ -991,3 +1017,4 @@ graph TB | v1.2 | 2026-07-11 | planner | **기술 스택 확정 — React + Spring Boot 3.x(Java 17) + MyBatis + PostgreSQL(PostGIS), 나노바나나 Python 워커 사이드카. GUARDiA 표준 프레임워크 정렬(사용자 지정).** §8 아키텍처 전면 정합화: 백엔드 FastAPI→Spring Boot 3.x + MyBatis(REST + WebSocket/STOMP, 룰·배치/배선 엔진=서비스 계층 + PostGIS 공간 SQL), 프론트 Next.js→React 18/19(Vite·TS, SVG/WebGL 캔버스), 비동기 큐 Redis 유지 + 이미지 생성은 별도 **Python 워커 사이드카(`tools/nanobanana`, google-genai Python SDK)** 로 분리(Spring이 RenderJob 큐잉→Python 워커 소비·생성→오브젝트 스토리지 적재→WebSocket 완료 푸시, 서류·알림도 동일 큐). Python 워커 유지 근거 명시(ReRoomAI 검증 client.py·Python SDK — Java 재구현 회피). 인증(행사 단위 RBAC+JWT)·오브젝트 스토리지 유지. §8 mermaid 갱신. **기능 범위(M1~M9)·우선순위·나노바나나 파이프라인 로직 불변** — 스택 표기 정합화만 수행 | | **v2.0** | 2026-07-11 | planner | **정체성 확장 — 킨텍스 자동전시시스템(Exhibition Automation Platform).** 글로벌 전시테크 크롤링(Eventleaf·VenueSight·Whova·ExpoPlatform·Eventbase·Pointr·Swapcard·Brella·Grip·RainFocus·ExhibitForce·FindRFP·Procore·4castplus) 근거로 확장. ①§1 비전 재정의(생애주기 폐루프, M15 옥션이 코어를 발주로 연결) ②§2 역할·포털 매트릭스 신설 — 6역할(주최자·참가·업체·홀매니저·관리자·관람객/대중) 웹/모바일 분리(organizer·exhibitor·contractor·ops·admin·public+visitor), 관리자·일반대중 페르소나 추가 ③§4 모듈맵 mermaid 확장(M10~M18) + 우선순위 총괄 ④§5A 신규 모듈 상세: **M15 공사/장치 옥션(P1·핵심, 역경매·견적서(Quotation)=응찰·실시간 순위·종합평가 낙찰·등록업체만 응찰·Auction 1─N Quotation ─ Award·PDF/버전, 입찰 플로우 시퀀스 다이어그램)**, M10 관람객 등록·배지·리드캡처(P1), M12 마케팅·EDM·공개 홍보 사이트(P1·SEO/다국어), M16 경영분석 BI(P2→**P1 승격**, design.md 반영은 designer 후속), M17 CMS(P1), M18 관리자 백오피스(P1), M11 비즈매칭·M13 wayfinding·M14 현장운영(P2) ⑤**M2·M3 3안 생성→선택/병합 UX 구체화**(1·2·3안 다양화, 구역/블록 병합, 병합 후 규정 재검증, 버전 기록) ⑥§7-3 엔티티 확장(Auction/Quotation/Award·Visitor/Badge/Lead·KPI/Content/User) ⑦§8-1 아키텍처 보강(역할별 분리 프론트+SSO/RBAC+공개사이트 SEO/다국어+백오피스+옥션 엔진) ⑧**§5B 공통/시스템관리 레이어(UIWS 표준 이식) 신설** — kintex 스택=UIWS(GUARDiA 표준 프레임워크) 동일 → 시스템관리(사용자·RBAC·공통코드·메뉴·감사로그·시스템설정)와 공통 업무기능(worklog·schedule·message·stats·notice·opinion·search·meeting·report·notification·audit) + 인증(JWT + **2차 인증 OTP TOTP RFC6238** + 로그인 실패 잠금 + admin 비번 env `ADMIN_PASSWORD_ENC` 주입)을 `workspace/uiws` 레퍼런스로 이식, 도메인 모듈은 그 위에 적재. **M18 관리자 시스템을 UIWS 시스템관리와 통합(중복 제거)**, BI/CMS/알림 경계 규칙 정의, Phase 1 선행 기반으로 로드맵 반영. ⑨**§5A M16-1 운영사(킨텍스·venue operator) 관점 수익성/ROI 소절 신설** — 참가업체 관점 ROI(리드 기반)와 명시 구분하고, 킨텍스 관점 7지표(홀·기간별 가동률/매출구성/행사별 P&L·마진/전시장별 ROI·RevPAD·㎡당 수익/참가사 리텐션·LTV/수요예측·수율·가격 최적화/경영진 KPI) + 데이터원(M1·M4·M9·M10·M15) + **BI 데이터마트(스타 스키마 Fact/Dim, DA 후속 트랙)** 정의. **기존 M2~M5 P0 코어·§6 나노바나나 로직·§8 확정 스택 보존.** design.md/타 문서는 미수정 — designer/planner/DA 후속 반영 필요로 표기 | | **v3.0** | 2026-07-11 | planner | **멀티테넌시(다중 전시관 SaaS) 확장 — 킨텍스 전용 → 다중 전시관, KINTEX=기준 테넌트 #1.** 기존 스코프(부스 코어 M2~M5·도메인 M10~M18·§5B 공통 레이어·§6 나노바나나·§8 확정 스택) **전부 보존**, 격리 레이어만 순증. ①헤더 v3.0 정체성 확장(다중 전시관 SaaS) ②**§1A 멀티테넌시 절 신설** — 테넌트=전시관(Venue) 모델(tenant_code·명칭·branding·domain/subdomain·active·locale, 홀·요율·규정 룰셋·부스표준을 테넌트 소유로 재정의)·`tenant_id` 전파 및 격리(전 도메인 엔티티 격리 vs 전역/테넌트 참조 구분)·테넌트 컨텍스트 해소(서브도메인 kintex/coex.wise.ai.kr 우선 + 사용자 소속 보조, fail-closed 주입)·역할 계층(플랫폼 슈퍼관리자 vs 테넌트 관리자 2계층, 행사 RBAC는 테넌트 내부 스코프)·마이그레이션(기존 데이터 tenant_id=1 백필, DDL은 db-engineer/DA 후속) ③**§2 역할 갱신** — 페르소나 관리자 행을 테넌트 관리자로 재정의 + 플랫폼 슈퍼관리자 신규, 권한 모델을 "테넌트 격리 ⊃ 행사 RBAC" 3중 구조로, §2-1 포털 매트릭스 admin 2계층 분리 ④**§7 데이터모델 갱신** — §7-1 마스터데이터 테넌트 스코프 재정의(킨텍스 실측=테넌트#1 시드), §7-3 Tenant/Venue 엔티티·tenant_id 전파·참조 구분·역할 계층·백필 추가 ⑤**§8-2 멀티테넌트 격리 전략 신설** — 공유 스키마 + tenant_id 컬럼(단일 kintex_db 유지·DB/스키마 분리 미채택, 비교표)·fail-closed 다층 강제(필터→서비스가드→MyBatis 공통 인터셉터→PostGIS)·성능(`(tenant_id,…)` 선두 인덱스)·보안(교차 차단·감사·스토리지/쿼터 격리)·온보딩 6단(코드 배포 없이 데이터 온보딩) ⑥§1 Non-Goal에 온보딩 범위 한정 추가. **design.md·architecture/*.md·src 미수정** — db-engineer/DA/designer 후속 반영 필요로 표기. 근거 없는 코엑스 실측 추정 배제(온보딩 시 입력) | +| **v3.1** | 2026-07-11 | planner | **계정 통합 + 가입 트랙 분리 · 모바일 2타깃 확정(소유자 확정 2026-07-11).** 기존 스코프 전부 보존, 계정·앱 채널 전략만 정밀화(상충 시 확정안 우선·삭제 없이 개정 표기). ①**§2-1 채널 매트릭스 개정** — 모바일 열을 운영 앱(B2B)/관람객 앱(B2C)으로 분리, 가입 트랙 열 신설(업무=승인·초대+2FA 필수 vs 관람객=간편가입/게스트 예매+2FA 미강제) ②**§2-1-1 신설** — (A)계정 체계 단일 통합+가입 트랙 분리(승격 시 단일 계정 등급 상향으로 리드·비즈매칭·재방문 이력 연속성 유지), (B)모바일 코드베이스 1개(Expo `mobile/`)·배포 타깃 2개(운영 앱=스토어 미공개 사내 QR/APK, 관람객 앱=스토어 공개), 관람객 1차 접점=공개 웹(SCR-P7/P8)·앱=리텐션 채널 ③**§5B-3 인증 정밀화** — 2FA 대상을 "업무 사용자 필수·관람객 미강제"로, 승격 시 2FA 필수 전환 명시 ④**M10 갱신** — 간편가입/게스트 예매(SCR-P7)·계정 승격 연속성·게스트 예매 개인정보/병합 정책 반영. 근거: `docs/analysis/ticketing-app-benchmark.md`(게스트 예매·간편가입 업계 표준). design.md·타 문서 미수정(designer 후속 반영 필요), 시크릿 미기재 | diff --git a/docs/WORK_STATUS.md b/docs/WORK_STATUS.md index 46fdfd2..ef96118 100644 --- a/docs/WORK_STATUS.md +++ b/docs/WORK_STATUS.md @@ -85,3 +85,4 @@ |---|---| | 2026-07-11 | 최초 작성 — 요구사항 27건·현황·남은 큐·함정 | | 2026-07-11 | 신규 5화면(SCR-13~17) 구현 완료 반영 + 미개발 통합 백로그 `UNDEVELOPED_BACKLOG.md` 신설·연결 | +| 2026-07-11 | 모바일 트랙 하네스 신설(kintex-mobile-dev + kintex-mobile-orchestrator, WISE 모바일 레퍼런스·Stitch 디자인 경유·G3 EAS 게이트) + 웹 WISE 기능 레퍼런스 강화(kintex-frontend-dev·impl-orchestrator) | diff --git a/docs/analysis/ticketing-app-benchmark.md b/docs/analysis/ticketing-app-benchmark.md new file mode 100644 index 0000000..5c92074 --- /dev/null +++ b/docs/analysis/ticketing-app-benchmark.md @@ -0,0 +1,141 @@ +# 관람객·입장권 예매·모바일 앱 벤치마킹 — 코엑스 및 공연/티켓 앱 + +> 작성일: 2026-07-11 · 대상 트랙: 킨텍스 자동전시시스템 관람객(M10)·티켓·모바일 앱 +> 목적: COEX·공연/티켓 빅3·글로벌 이벤트 앱을 조사하여 현행 `design.md` v2.1 티켓·관람객 화면(SCR-P7/P8·M14/M15·M5~M9)을 대조·보강. +> 원칙: 확인된 기능만 사실로 기술하고 미확인 항목은 "추정" 표기. 본 문서는 **권고만** 기록하며 PLANNING.md·design.md를 직접 수정하지 않는다. + +--- + +## 1. 벤치마킹 대상별 요약 + +| 앱/서비스 | 분류 | 강점 | 약점/한계 | 특징 기능 | +|---|---|---|---|---| +| **COEX**(코엑스 공식 웹) | 전시장 운영사 | PC·모바일 실내 길찾기(PC 지도→모바일 QR 이전), 주차 혼잡 예측(KakaoT 데이터), 관심분야 행사 알림 | 전용 네이티브 앱보다 웹 중심(추정), 예매/티켓 기능은 각 주최자 사이트에 파편화 | 실내 내비게이션, 주차 혼잡 예보, 관심 기반 행사 알림 구독 | +| **인터파크 NOL 티켓** | 공연/티켓 빅3 | 성숙한 예매 퍼널·개인화(관심인물/공연/장르), 오픈 알림(티켓캐스트 알리미), 예매대기·취소표 우선권, 결제수단 사전등록 빠른결제 | 콘서트 특화(좌석 선점·대기열)로 무료 전시엔 과한 요소, 우편배송 등 물리 티켓 잔재 | 티켓오픈 알림, 관심 구독, 예매대기 서비스, 단계별 취소수수료 규정 | +| **멜론티켓** | 공연/티켓 빅3 | 좌석 5분 선점 UX, 수령방식 선택(배송/현장수령/모바일 발권), 당일 모바일티켓 제시 입장, 강한 매크로 방지(CAPTCHA) | 좌석제 공연 중심, 입장 UX 상세는 비공개(추정) | 모바일 발권, 좌석 선점 타이머, 봇 방지 | +| **티켓링크** | 공연/티켓 빅3 | 스마트티켓(별도 발권 없이 QR/바코드 입장), 스마트스탬프(휴대폰 고유값 인식 → 캡처 티켓 무효·부정입장 방지) | 좌석/경기 특화, SMS URL 등록 절차 존재 | 스마트티켓, 스마트스탬프(디바이스 바인딩), QR/바코드 입장 | +| **킨텍스 공식 앱**(com.kintex) | 전시 특화(자사) | 무료 사전등록, 실시간 주차현황·주차비 결제, 이벤트/할인권(맛집·호텔), 지역별 등록 분포 | 전시별 통합 예매·티켓 지갑·비즈매칭은 미약(추정), 부스 wayfinding 약함 | 사전등록, 주차 연계, 편의(할인권), 등록 분포 데이터 | +| **Whova**(글로벌 이벤트 앱) | 이벤트·컨퍼런스 | 참가자별 고유 QR(배지+앱), 리드 리트리벌, 멀티트랙 개인 아젠다+세션 정원 등록, 인앱 메시징·매치메이킹·밋업 스케줄·QR 명함교환, 셀프 체크인 키오스크, 온디맨드 배지 생성, 라이브 공지/폴 | 유료 SaaS, 국내 결제/PG·다국어 로컬라이즈는 별도 | 개인 아젠다(정원), QR 명함교환, 셀프 체크인 키오스크, 라이브 인게이지먼트 | +| **Eventbrite**(글로벌) | 티켓·발견 | 오거나이저 앱 QR 스캔·이름/게스트리스트 체크인, 마켓플레이스 발견성 | 컨퍼런스 당일 인게이지먼트는 약함 | 발견(마켓플레이스), 간편 체크인, 디지털 게스트 리스트 | + +--- + +## 2. 조사 항목 ①~⑧ 베스트 프랙티스 비교 + +### ① 예매 퍼널 (단계 수·게스트 예매) +- **NOL/멜론/티켓링크**: 회차/좌석 → 권종/수량 → 예매자 → 결제 → 완료. 좌석제는 선점 타이머(멜론 5분). 콘서트는 대기열/대기번호. 회원 로그인 유도. +- **Whova/Eventbrite**: 무료·유료 티켓 유형별 수량 선택 → 등록폼 → (유료 시)결제 → QR 발급. 게스트 등록 허용, 셀프 등록 중심. +- **킨텍스 앱**: 무료 사전등록 폼 중심(결제 최소). +- **베스트**: 전시(대체로 무료·정원제)는 **좌석 선택 대신 권종·정원 기반 짧은 퍼널**이 적합. 게스트 예매 허용 + 무료 권종 결제 스킵 + 회원 저장 유도가 표준. + +### ② 티켓 수령 방식 (QR·스마트티켓·본인인증) +- **티켓링크 스마트티켓**: 별도 발권 없이 앱/URL 등록 → QR·바코드. **스마트스탬프 = 휴대폰 고유값 인식**으로 캡처본 무효·부정입장 방지. +- **멜론**: 모바일 발권/현장수령/배송 선택, 당일 모바일티켓 제시. +- **Whova**: 참가자별 **고유 QR**(배지·앱 동시), 리드 리트리벌 연계. +- **베스트**: **모바일 QR 지갑 기본 + 디바이스 바인딩/본인인증으로 위·변조·양도 방지**. 캡처만으로 입장 불가(회전 토큰·기기 인식)가 정품 티켓 신뢰의 핵심. + +### ③ 입장/체크인 UX (밝기 부스트·오프라인 QR) +- **공통(티켓링크 안내)**: QR 인식률 위해 **화면 밝기 상향** 권장. +- **Whova/Eventbrite**: 셀프 체크인 키오스크·오거나이저 앱 스캔, 이름/게스트리스트 폴백. +- **베스트**: **QR 풀스크린 + 자동 밝기 부스트 + 오프라인 캐시 표시**(현장 네트워크 불안정 대비) + 셀프 체크인 키오스크/즉석 배지 인쇄 폴백. + +### ④ 취소·환불 플로우 +- **NOL 티켓(공개 규정)**: 예매수수료는 예매 당일 자정까지만 환불. 취소수수료 = 관람일 D-10까지 정액(뮤지컬/콘서트 4,000원 등, 최대 티켓가 10%), D-9~D-7 10%, D-6~D-3 20%, D-2~D-1 30%, **당일 90%**. 웹 상단 '예매 취소' 셀프 메뉴. +- **베스트**: **구간별 취소수수료 규정(서버 권위) + 예상 환불액 실시간 표시 + 셀프 취소 + 원결제수단 자동 환불(PG 위임)**. 무료 전시는 노쇼 관리(취소 유도)가 관건. + +### ⑤ 개인화 (관심 행사·오픈 알림·최근 본) +- **NOL**: 관심인물/관심공연/관심장르 → 맞춤 추천 + **티켓오픈일 알림(SMS·이메일)**, 예매대기·취소표 우선권. +- **COEX**: 관심분야 선택 → 관련 행사 알림. +- **Whova**: 개인 아젠다·AI 추천 세션·매치메이킹. +- **베스트**: **오픈 알림/관심 행사 구독 + 관심분야 기반 추천 + 최근 본 행사·부스**로 재방문·전환 견인. + +### ⑥ 현장 편의 (주차·길찾기·혼잡도) +- **COEX**: 실내 내비(PC→모바일 QR), 주차 혼잡 예보(KakaoT). +- **킨텍스 앱**: 실시간 주차현황·주차비 결제, 할인권. +- **베스트**: **관람객 앱에 wayfinding + 실시간 주차(현황·결제·사전권) + 혼잡/대기 안내를 한 화면 동선**으로 통합. 킨텍스는 GTX-A 킨텍스역·iparking 연계가 차별점. + +### ⑦ 멤버십/등급 +- **NOL/멜론**: 회원 등급·포인트·간편결제 저장. +- **Whova**: 유형별(참가자/바이어/연사) 배지·권한 차등. +- **베스트**: **관람객 유형(일반/바이어/VIP)·재방문·바이어 인증 등급**으로 혜택·알림·비즈매칭 우선순위 차등. (전시 우선순위는 낮음) + +### ⑧ 접근성·다국어 +- **COEX/킨텍스**: 다국어 안내·수어 통역(COEX). +- **Whova**: 글로벌 대상 로컬라이즈. +- **베스트**: **티켓·배지·앱 다국어(한/영/중/일) + WCAG AA + QR/텍스트 대체수단**. 국제전시장 특성상 외국인 바이어 대응이 필수. + +--- + +## 3. 킨텍스 자동전시시스템 반영 시사점 (ⓐⓑⓒ 3분류) + +> 대조 기준: `design.md` v2.1 — SCR-P7(예매)·SCR-P8(확인·취소)·SCR-M14(모바일 예매)·SCR-M15(티켓 지갑)·SCR-M5(관람객 홈·배지)·SCR-M6(wayfinding)·SCR-M7(플로어플랜)·SCR-M8(비즈매칭)·SCR-M9(세션 아젠다) / `PLANNING.md` M10·M13. + +### ⓐ 이미 반영됨 (현행 스펙이 베스트 프랙티스 충족) +| # | 항목 | 현행 근거 | +|---|---|---| +| A1 | 짧은 예매 퍼널(권종→예매자→결제→완료), 게스트+회원, 무료 권종 결제 스킵 | SCR-P7·M14 | +| A2 | PG 위임 결제(카드정보 미저장 안내·카드입력 UI 없음) | SCR-P7 3단계·M14 | +| A3 | 모바일 QR 티켓 지갑 + **자동 밝기 부스트** + 오프라인 캐시 표시 | SCR-M15 | +| A4 | 셀프 예매 확인·취소(게스트 예매번호+이메일 조회), PII 마스킹 | SCR-P8 | +| A5 | 구간별 환불 규정 표(D-7/D-3/당일) + 예상 환불액 + 원결제수단(PG 위임) | SCR-P8 | +| A6 | 티켓→체크인→모바일 배지 상태 승격 흐름 | SCR-M15→M5 | +| A7 | 관심분야 기반 AI 추천 세션·부스, 즐겨찾기 | SCR-M5·M9 | +| A8 | wayfinding(블루닷·존레벨 폴백)·인터랙티브 플로어플랜·비즈매칭 | SCR-M6·M7·M8 | +| A9 | 단체 예매(대표자+동반자 명단 CSV) | SCR-P7 2단계 | +| A10 | WCAG AA·라이트/다크·비시각 대안 목록 | 전 화면 공통 | + +### ⓑ 보강 권고 (기존 화면 스펙 수정 후보 · P1) +| # | 권고 | 대상 화면/모듈 | 근거(§2) | +|---|---|---|---| +| B1 | **스마트티켓 부정입장 방지 강화** — 디바이스 바인딩/회전(애니메이션) QR + 본인인증으로 캡처본 무효·양도 방지(현행은 정적 QR) | SCR-M15·31 / M10 | ② 티켓링크 스마트스탬프 | +| B2 | **취소·환불 규정 정교화** — 단순 3구간(100/50/0%)을 인터파크식 다구간 수수료 + 예매수수료 별도 환불 규정으로 확장, 서버 권위 명시 | SCR-P8 / M9·M10 | ④ NOL 취소수수료 | +| B3 | **티켓·배지·관람객 앱 다국어(한/영/중/일)** — 현행 다국어는 공개사이트(M12)만 명시, 티켓·배지·지갑 화면에 다국어 확장 | SCR-P7·M5·M15 / M10·M12 | ⑧ 국제전시장 | +| B4 | **세션 정원 기반 사전등록(RSVP)** — 현행 즐겨찾기는 있으나 정원·마감·대기 미반영. 정원 소진·마감 상태 추가 | SCR-M9 / M11 | ① Whova 개인 아젠다 정원 | +| B5 | **결제수단 사전등록·간편결제 빠른결제** — 재방문·유료 권종 전환율 향상 | SCR-P7·M14 / M9 | ⑤ NOL 빠른결제 | +| B6 | **행사 라이브 공지 피드/현장 푸시** — 알림센터(M11)에 더해 행사별 라이브 공지 피드(긴급 안내·프로그램 변경) | SCR-M11·M5 / §5B notification·M12 | Whova 라이브 공지 | + +### ⓒ 신규 화면/기능 후보 (P2 백로그) +| # | 후보 | 대상 화면/모듈 | 근거(§2) | +|---|---|---|---| +| C1 | **티켓 오픈 알림·관심 행사 구독** — 공개사이트+앱에서 오픈 예정 행사 구독→오픈 시 푸시/EDM | 신규(공개사이트·앱) / M10·M12 | ⑤ NOL 오픈알림·COEX 관심알림 | +| C2 | **관람객 앱 주차 연계** — iparking 실시간 현황·주차비 결제·사전 주차권 | 신규 SCR-M(주차) / M14·M10 | ⑥ 킨텍스 앱·COEX 주차예보 | +| C3 | **관람객 대면 혼잡/대기 안내** — 입장·주차·인기 세션 실시간 혼잡도(현행 M14는 홀매니저용) | 신규 위젯(SCR-M5) / M14 | ⑥ COEX 혼잡 예보 | +| C4 | **관람객↔관람객 QR 명함 교환·컨택트 지갑** — 현행 리드캡처는 참가업체→관람객만 | SCR-M8 확장 / M11 | ② Whova QR 명함교환 | +| C5 | **인기 세션/바이어 미팅 예매 대기열·취소표 알림** — 정원 초과 세션·미팅 슬롯 대기 우선권 | SCR-M9·M8 / M11 | ⑤ NOL 예매대기 | +| C6 | **관람객 멤버십/등급** — 일반/바이어/VIP·재방문·바이어 인증 등급별 혜택·매칭 우선순위 | 신규 마이 / M10 | ⑦ 등급 차등 | +| C7 | **최근 본 행사·부스 개인화 홈 피드** — 재방문 전환 | SCR-M5 확장 / M10·M12 | ⑤ 최근 본 | +| C8 | **셀프 체크인 키오스크·즉석 배지 인쇄 화면** — PLANNING M10 즉석배지 언급 있으나 화면 미정의 | 신규 SCR / M10 | ③ Whova 셀프 체크인 키오스크 | + +### 톱 5 보강 권고 (우선 반영) +1. **B1 스마트티켓 부정입장 방지**(디바이스 바인딩·회전 QR·본인인증) — 정품 티켓 신뢰의 핵심. +2. **B2 취소·환불 규정 정교화**(다구간 수수료·예매수수료 분리·서버 권위) — 정산 정확성·분쟁 예방. +3. **C1 티켓 오픈 알림·관심 행사 구독** — 개인화·재방문·전환의 최대 레버. +4. **C2 관람객 앱 주차 연계**(iparking 실시간·결제·사전권) — 킨텍스 현장 편의 차별점. +5. **B3 티켓·배지·앱 다국어(한/영/중/일)** — 국제전시장 외국인 바이어 대응 필수. + +--- + +## 4. 출처 URL + +- COEX VISITOR(실내 길찾기·주차): https://www.coex.co.kr/ , https://www.coex.co.kr/guide/indoor-navigation/ , https://www.coex.co.kr/guide/parking-information/infomation/ +- COEX 행사 일정·관심 알림: https://www.coex.co.kr/event/full-schedules/ +- 인터파크 NOL 티켓 취소/환불: https://ticket.interpark.com/TiKi/Info/BookingGuide.asp?Url=guide_05.html +- 인터파크 NOL 티켓 수수료: https://ticket.interpark.com/TiKi/Info/BookingGuide.asp?Url=guide_11.html +- 인터파크 티켓캐스트(오픈 알림): https://ticket.interpark.com/TiKi/Info/BookingGuide.asp?Url=guide_10.html +- 인터파크 예매대기 서비스: https://ticket.interpark.com/TiKi/Info/BookingGuide.asp?Url=guide_13.html +- NOL 인터파크(개인화/오픈예정): https://nol.interpark.com/ , https://tickets.interpark.com/contents/notice +- 멜론티켓 이용안내: https://ticket.melon.com/customerservice/howto.htm +- 티켓링크 스마트티켓: https://www.ticketlink.co.kr/help/guide/popup/smart-ticket +- 티켓링크 앱: https://play.google.com/store/apps/details?id=kr.co.ticketlink.cne +- 멜론티켓 앱: https://play.google.com/store/apps/details?id=com.iloen.melonticket +- 킨텍스 주차/앱 사전등록: https://www.kintex.com/web/ko/service/parking_user.do , https://www.data.go.kr/data/15119880/fileData.do +- Whova 이벤트 앱 기능: https://whova.com/whova-event-app/ , https://whova.com/blog/best-event-conference-apps/ +- Eventbrite vs Whova 비교: https://boompop.com/blog/whova-vs-eventbrite-comparison +- 이벤트 체크인 앱 비교: https://qrsage.com/blogs/best-event-check-in-app + +--- + +## 변경 이력 +| 날짜 | 변경 내용 | +|---|---| +| 2026-07-11 | 최초 작성 — COEX·NOL/멜론/티켓링크·킨텍스 앱·Whova/Eventbrite 7종 벤치마킹, ⓐ10·ⓑ6·ⓒ8 시사점, 톱5 보강 권고 | diff --git a/docs/deliverables/DA산출물/_gen/gen_da_deliverables.py b/docs/deliverables/DA산출물/_gen/gen_da_deliverables.py new file mode 100644 index 0000000..50e1a25 --- /dev/null +++ b/docs/deliverables/DA산출물/_gen/gen_da_deliverables.py @@ -0,0 +1,854 @@ +# -*- coding: utf-8 -*- +""" +킨텍스 자동전시시스템 — DA(데이터 아키텍처) 산출물 생성기 + 1) 데이터베이스설계서.pptx (행안부 DB설계서 표준 톤 / 16:9) + 2) 테이블정의서.xlsx (실제 Flyway DDL 역추출) + +내용 소스(권위) = src/backend/.../db/migration/V1~V9 실제 DDL. + → 테이블·컬럼·타입·NULL·PK/FK·기본값·인덱스·공간타입을 프로그램으로 파싱(수기 발명 금지). + → 컬럼 설명은 DDL 인라인 주석·COMMENT ON 을 그대로 사용. 없으면 generic 표준 컬럼만 보강. + +디자인 = KINTEX Blue #0066B3 / AI Purple #6D4AFF / 맑은 고딕. ERD·도식은 python-pptx 도형 직접 작도. +보안 불변 = 비밀번호/API키/서버IP/SSH 미기재. 암호화 컬럼은 정책만 기술(AES-256-GCM). + +재실행: python gen_da_deliverables.py +""" +import os, re, glob + +HERE = os.path.dirname(os.path.abspath(__file__)) +OUT_DIR = os.path.dirname(HERE) # docs/deliverables/DA산출물 +MIG_DIR = os.path.abspath(os.path.join( + HERE, "..", "..", "..", "..", "src", "backend", "src", "main", "resources", "db", "migration")) +assert os.path.isdir(MIG_DIR), f"migration dir not found: {MIG_DIR}" + +# ====================================================================== +# 1. DDL 파서 (Flyway V1~V9 → 테이블 스키마 모델) +# ====================================================================== +CONSTRAINT_STARTS = ("PRIMARY KEY", "UNIQUE", "FOREIGN KEY", "CHECK", "CONSTRAINT", "REFERENCES ") +GENERIC_DESC = { + "id": "식별자(PK)", "created_at": "생성일시", "updated_at": "수정일시", + "event_id": "행사 참조(FK event)", "status": "상태 코드", "sort_order": "정렬 순서", + "use_yn": "사용 여부(Y/N)", "dept_id": "부서 식별자", "writer_id": "작성자", + "writer_name": "작성자명", "author_id": "작성자", "author_name": "작성자명", + "owner_id": "소유자", "owner_name": "소유자명", "title": "제목", "content": "내용", + "read_at": "읽은 일시", "recipient_id": "수신자", +} + +def _split_type(rest): + """rest 문자열의 선두에서 데이터타입 토큰을 추출. geometry(Point,0)·numeric(8,2) 등 괄호 내부 콤마 허용.""" + m = re.match(r"\s*([A-Za-z_][A-Za-z0-9_]*(?:\([^)]*\))?)", rest) + if not m: + return "", rest + return m.group(1), rest[m.end():] + +def _parse_default(rest): + m = re.search(r"\bDEFAULT\s+(now\(\)|gen_random_uuid\(\)|'[^']*'|true|false|[0-9]+\.?[0-9]*|[A-Za-z_][\w]*)", + rest, re.IGNORECASE) + return m.group(1) if m else "" + +def parse_ddl(): + tables = {} # name -> {"cols":[...], "pk":set, "uniques":[...], "indexes":[...], "version":Vx, "order":int} + order = 0 + files = sorted(glob.glob(os.path.join(MIG_DIR, "V*.sql")), + key=lambda p: int(re.match(r"V(\d+)", os.path.basename(p)).group(1))) + comments = {} # (table,col) -> desc (COMMENT ON) + for path in files: + ver = re.match(r"(V\d+)", os.path.basename(path)).group(1) + raw = open(path, encoding="utf-8").read() + + # COMMENT ON COLUMN t.c IS '...' + for cm in re.finditer(r"COMMENT\s+ON\s+COLUMN\s+(\w+)\.(\w+)\s+IS\s+'((?:[^']|'')*)'", raw, re.IGNORECASE): + comments[(cm.group(1), cm.group(2))] = cm.group(3).replace("''", "'") + + # CREATE TABLE IF NOT EXISTS name ( ... ); + for tm in re.finditer(r"CREATE\s+TABLE\s+IF\s+NOT\s+EXISTS\s+(\w+)\s*\((.*?)\n\)\s*;", + raw, re.IGNORECASE | re.DOTALL): + tname, body = tm.group(1), tm.group(2) + if tname not in tables: + order += 1 + tables[tname] = {"cols": [], "pk": set(), "uniques": [], "indexes": [], + "version": ver, "order": order} + t = tables[tname] + for line in body.split("\n"): + code = line.split("--", 1)[0].strip() + cmt = line.split("--", 1)[1].strip() if "--" in line else "" + if not code: + continue + code = code.rstrip(",").strip() + up = code.upper() + # 테이블 레벨 제약 + if up.startswith("PRIMARY KEY"): + for c in re.findall(r"\((.*?)\)", code)[0].split(","): + t["pk"].add(c.strip()) + continue + if up.startswith("UNIQUE"): + t["uniques"].append(re.findall(r"\((.*?)\)", code)[0].strip()) + continue + if up.startswith(CONSTRAINT_STARTS): + continue + # 컬럼 정의 + cm2 = re.match(r"(\w+)\s+(.*)", code) + if not cm2: + continue + cname = cm2.group(1) + dtype, rest = _split_type(cm2.group(2)) + ru = rest.upper() + is_pk = "PRIMARY KEY" in ru + if is_pk: + t["pk"].add(cname) + fk = re.search(r"REFERENCES\s+(\w+)\s*\((\w+)\)", rest, re.IGNORECASE) + nn = ("NOT NULL" in ru) or is_pk + uniq = ("UNIQUE" in ru) and "PRIMARY KEY" not in ru + dflt = _parse_default(rest) + t["cols"].append({ + "name": cname, "type": dtype, + "null": "N" if nn else "Y", + "pk": is_pk, "fk": (fk.group(1) if fk else None), + "fkcol": (fk.group(2) if fk else None), + "unique": uniq, "default": dflt, "desc": cmt, + }) + + # ALTER TABLE t ADD COLUMN IF NOT EXISTS c type ... + for am in re.finditer(r"ALTER\s+TABLE\s+(\w+)\s+ADD\s+COLUMN\s+IF\s+NOT\s+EXISTS\s+(.+?);", + raw, re.IGNORECASE): + tname = am.group(1) + if tname not in tables: + continue + t = tables[tname] + code = am.group(2).strip() + cm2 = re.match(r"(\w+)\s+(.*)", code) + if not cm2: + continue + cname = cm2.group(1) + if any(c["name"] == cname for c in t["cols"]): + continue + dtype, rest = _split_type(cm2.group(2)) + ru = rest.upper() + t["cols"].append({ + "name": cname, "type": dtype, + "null": "N" if "NOT NULL" in ru else "Y", + "pk": False, "fk": None, "fkcol": None, + "unique": "UNIQUE" in ru, "default": _parse_default(rest), + "desc": f"({ver} 순증 컬럼)", + }) + + # CREATE INDEX ... ON t ... + for im in re.finditer(r"CREATE\s+INDEX\s+IF\s+NOT\s+EXISTS\s+(\w+)\s+ON\s+(\w+)\s*(.*?);", + raw, re.IGNORECASE | re.DOTALL): + idxname, tname, spec = im.group(1), im.group(2), im.group(3).strip() + if tname in tables: + gist = "GIST" in spec.upper() + cols = re.findall(r"\((.*?)\)", spec) + tables[tname]["indexes"].append({ + "name": idxname, "spec": (cols[0] if cols else spec), + "gist": gist, + }) + + # 설명 보강: COMMENT ON → generic + for tname, t in tables.items(): + for c in t["cols"]: + if not c["desc"]: + c["desc"] = comments.get((tname, c["name"]), "") + if not c["desc"] and c["name"] in GENERIC_DESC: + c["desc"] = GENERIC_DESC[c["name"]] + return tables + +TABLES = parse_ddl() + +# ---- 테이블 한글명 · 주제영역 매핑 (라벨링) ---------------------------------- +KO = { + "app_user": "사용자", "company": "등록업체", "event": "행사", + "hall": "전시홀 마스터", "hall_assignment": "행사-홀 배정", "event_member": "행사 참여자(RBAC)", + "booth_standard": "부스 표준사양", "master_data": "마스터데이터(요율·규정)", + "trench": "트렌치(급전 포인트)", "hall_exit": "비상구", "layout": "배치안(버전)", + "booth": "부스(폴리곤)", "design_plan": "부스 설계안", "utility_order": "유틸리티 신청", + "render_job": "AI 렌더잡", "common_code_group": "공통코드 그룹", "common_code": "공통코드", + "sys_menu": "시스템 메뉴", "sys_role": "역할", "sys_permission": "권한", + "sys_role_permission": "역할-권한 매핑", "sys_setting": "시스템 설정", "audit_log": "감사 로그", + "worklog": "업무일지", "schedule": "일정", "message": "쪽지", + "message_recipient": "쪽지 수신자", "notice": "공지", "opinion": "의견", + "opinion_comment": "의견 댓글", "meeting": "회의", "meeting_action": "회의 액션아이템", + "report": "보고서", "notification": "알림", "password_reset": "비밀번호 재설정 코드", +} +# 주제영역(Subject Area): (코드, 한글, 테이블목록, 색상키) +AREAS = [ + ("MASTER", "행사·조직·권한·마스터", + ["event", "hall", "hall_assignment", "event_member", "app_user", "company", + "booth_standard", "master_data"]), + ("SPATIAL", "공간·설계·시각화(부스 코어)", + ["trench", "hall_exit", "layout", "booth", "design_plan", "utility_order", "render_job"]), + ("SYSTEM", "시스템관리·인증", + ["common_code_group", "common_code", "sys_menu", "sys_role", "sys_permission", + "sys_role_permission", "sys_setting", "audit_log", "password_reset"]), + ("COMMON", "공통 업무 모듈", + ["worklog", "schedule", "message", "message_recipient", "notice", "opinion", + "opinion_comment", "meeting", "meeting_action", "report", "notification"]), +] +AREA_OF = {} +for code, ko, tlist in AREAS: + for tn in tlist: + AREA_OF[tn] = ko + +TOTAL_TABLES = len(TABLES) +TOTAL_COLS = sum(len(t["cols"]) for t in TABLES.values()) +TOTAL_IDX = sum(len(t["indexes"]) for t in TABLES.values()) +SPATIAL_COLS = [(tn, c["name"], c["type"]) for tn, t in TABLES.items() + for c in t["cols"] if c["type"].lower().startswith("geometry")] +FK_EDGES = [(tn, c["name"], c["fk"]) for tn, t in TABLES.items() + for c in t["cols"] if c["fk"]] + +# ====================================================================== +# 2. PPTX — 데이터베이스설계서 +# ====================================================================== +from pptx import Presentation +from pptx.util import Pt +from pptx.dml.color import RGBColor +from pptx.enum.text import PP_ALIGN, MSO_ANCHOR +from pptx.enum.shapes import MSO_SHAPE, MSO_CONNECTOR +from pptx.oxml.ns import qn + +BLUE = RGBColor(0x00, 0x66, 0xB3) +BLUE_DK = RGBColor(0x00, 0x44, 0x7A) +BLUE_LT = RGBColor(0xE1, 0xEF, 0xF9) +PURPLE = RGBColor(0x6D, 0x4A, 0xFF) +PURPLE_LT = RGBColor(0xEC, 0xE8, 0xFF) +INK = RGBColor(0x10, 0x18, 0x28) +MUTED = RGBColor(0x66, 0x70, 0x85) +LINE = RGBColor(0xE4, 0xE7, 0xEC) +BG = RGBColor(0xF9, 0xFA, 0xFB) +WHITE = RGBColor(0xFF, 0xFF, 0xFF) +GREEN = RGBColor(0x12, 0x9E, 0x63) +AMBER = RGBColor(0xE0, 0x8A, 0x00) +TEAL = RGBColor(0x0E, 0x7C, 0x86) +CARD = RGBColor(0xFF, 0xFF, 0xFF) +FONT = "맑은 고딕" +IN = 914400 +def inch(v): return int(v * IN) + +prs = Presentation() +prs.slide_width = 12192000 +prs.slide_height = 6858000 +BLANK = prs.slide_layouts[6] +def slide(): return prs.slides.add_slide(BLANK) + +def _fill(sp, color): + if color is None: sp.fill.background() + else: + sp.fill.solid(); sp.fill.fore_color.rgb = color + +def rect(s, x, y, w, h, fill=None, line=None, line_w=1.0, shape=MSO_SHAPE.RECTANGLE, shadow=False): + sp = s.shapes.add_shape(shape, inch(x), inch(y), inch(w), inch(h)) + _fill(sp, fill) + if line is None: sp.line.fill.background() + else: + sp.line.color.rgb = line; sp.line.width = Pt(line_w) + sp.shadow.inherit = False # creates an empty + if shadow: + el = sp._element.spPr + ef = el.find(qn('a:effectLst')) + if ef is None: + ef = el.makeelement(qn('a:effectLst'), {}); el.append(ef) + sh = ef.makeelement(qn('a:outerShdw'), + {'blurRad':'80000','dist':'30000','dir':'5400000','rotWithShape':'0'}) + clr = sh.makeelement(qn('a:srgbClr'), {'val':'101828'}) + alp = clr.makeelement(qn('a:alpha'), {'val':'16000'}) + clr.append(alp); sh.append(clr); ef.append(sh) + return sp + +def text(s, x, y, w, h, content, size=13, color=INK, bold=False, align=PP_ALIGN.LEFT, + anchor=MSO_ANCHOR.TOP, line_spacing=1.0, space_after=2, wrap=True): + tb = s.shapes.add_textbox(inch(x), inch(y), inch(w), inch(h)) + tf = tb.text_frame; tf.word_wrap = wrap; tf.vertical_anchor = anchor + tf.margin_left = 0; tf.margin_right = 0; tf.margin_top = 0; tf.margin_bottom = 0 + if isinstance(content, str): content = [content] + for i, para in enumerate(content): + p = tf.paragraphs[0] if i == 0 else tf.add_paragraph() + p.alignment = align; p.line_spacing = line_spacing + p.space_after = Pt(space_after); p.space_before = Pt(0) + segs = [{"t": para}] if isinstance(para, str) else ([para] if isinstance(para, dict) else para) + for seg in segs: + r = p.add_run(); r.text = seg.get("t", "") + r.font.name = FONT; r.font.size = Pt(seg.get("size", size)) + r.font.bold = seg.get("bold", bold); r.font.color.rgb = seg.get("color", color) + rPr = r._r.get_or_add_rPr() + rPr.append(rPr.makeelement(qn('a:ea'), {'typeface': FONT})) + return tb + +def page_bg(s): rect(s, -0.1, -0.1, 13.53, 7.7, fill=BG) +def chip(s, x, y, w, h, label, fill, txtcolor=WHITE, size=9.5, bold=True): + rect(s, x, y, w, h, fill=fill, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x, y, w, h, label, size=size, color=txtcolor, bold=bold, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) +def card(s, x, y, w, h, fill=CARD, line=LINE): + return rect(s, x, y, w, h, fill=fill, line=line, line_w=1.0, shape=MSO_SHAPE.ROUNDED_RECTANGLE, shadow=True) + +def header(s, kicker, title, idx): + page_bg(s) + rect(s, 0, 0, 13.333, 0.12, fill=BLUE) + rect(s, 0.55, 0.5, 0.62, 0.62, fill=BLUE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 0.55, 0.5, 0.62, 0.62, f"{idx:02d}", size=20, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + text(s, 1.32, 0.5, 10.5, 0.28, kicker, size=11, color=PURPLE, bold=True) + text(s, 1.32, 0.74, 11.4, 0.44, title, size=22, color=INK, bold=True) + rect(s, 0.55, 1.28, 12.23, 0.02, fill=LINE) + text(s, 0.55, 7.06, 9, 0.3, "킨텍스 자동전시시스템 구축 · 데이터베이스 설계서", size=8.5, color=MUTED) + text(s, 11.3, 7.06, 1.48, 0.3, "2026-07-11", size=8.5, color=MUTED, align=PP_ALIGN.RIGHT) + +def bullets(s, x, y, w, items, size=12.5, gap=0.44, head=None): + if head: + text(s, x, y, w, 0.32, head, size=12, color=PURPLE, bold=True); y += 0.42 + for it in items: + rect(s, x, y+0.07, 0.12, 0.12, fill=BLUE, shape=MSO_SHAPE.OVAL) + if isinstance(it, tuple): + text(s, x+0.28, y, w-0.28, gap, [[{"t": it[0]+" ", "bold":True, "color":INK, "size":size}, + {"t": it[1], "color":MUTED, "size":size-1}]], line_spacing=1.05) + else: + text(s, x+0.28, y, w-0.28, gap, it, size=size, color=INK, line_spacing=1.05) + y += gap + return y + +# ---- ERD 엔티티 박스 (파싱 데이터 구동) ---- +def erd_entity(s, x, y, w, tname, maxrows=6, accent=BLUE): + t = TABLES[tname] + # 표시 컬럼: PK → FK → 대표 컬럼 + pk = [c for c in t["cols"] if c["pk"]] + fk = [c for c in t["cols"] if c["fk"] and not c["pk"]] + rest = [c for c in t["cols"] if not c["pk"] and not c["fk"]] + show = (pk + fk + rest)[:maxrows] + rh = 0.26 + h = 0.5 + len(show)*rh + rect(s, x, y, w, h, fill=CARD, line=LINE, line_w=1.0, shape=MSO_SHAPE.ROUNDED_RECTANGLE, shadow=True) + rect(s, x, y, w, 0.44, fill=accent, shape=MSO_SHAPE.ROUND_2_SAME_RECTANGLE) + text(s, x+0.12, y, w-0.2, 0.44, [[{"t": tname, "size":10.5, "color":WHITE, "bold":True}, + {"t": " "+KO.get(tname, ""), "size":8, "color":RGBColor(0xD6,0xE6,0xF6)}]], + anchor=MSO_ANCHOR.MIDDLE) + cy = y + 0.5 + for c in show: + key = "PK" if c["pk"] else ("FK" if c["fk"] else "") + kc = PURPLE if c["pk"] else (TEAL if c["fk"] else MUTED) + geo = c["type"].lower().startswith("geometry") + text(s, x+0.12, cy-0.03, 0.42, rh, key, size=7.5, color=kc, bold=True, anchor=MSO_ANCHOR.MIDDLE) + text(s, x+0.54, cy-0.03, w-0.62, rh, + [[{"t": c["name"], "size":8.6, "color":(INK if key else RGBColor(0x33,0x3B,0x4A)), "bold":bool(key)}, + {"t": " : "+c["type"], "size":7.6, "color":(GREEN if geo else MUTED)}]], + anchor=MSO_ANCHOR.MIDDLE) + cy += rh + return {"x": x, "y": y, "w": w, "h": h, "cx": x+w/2, "cy": y+h/2} + +def connect(s, a, b, color=RGBColor(0x9A,0xA6,0xB8)): + cn = s.shapes.add_connector(MSO_CONNECTOR.STRAIGHT, inch(a["cx"]), inch(a["cy"]), + inch(b["cx"]), inch(b["cy"])) + cn.line.color.rgb = color; cn.line.width = Pt(1.4) + cn.shadow.inherit = False + return cn + +# ================= 슬라이드 1 : 표지 ================= +s = slide() +rect(s, -0.1, -0.1, 13.53, 7.7, fill=BLUE_DK) +rect(s, 6.4, -1.5, 9, 11, fill=BLUE, shape=MSO_SHAPE.PARALLELOGRAM) +rect(s, 9.2, -2.0, 7, 12, fill=PURPLE, shape=MSO_SHAPE.PARALLELOGRAM) +rect(s, 0.85, 0.8, 0.42, 0.42, fill=WHITE, shape=MSO_SHAPE.OVAL) +rect(s, 0.97, 0.92, 0.18, 0.18, fill=PURPLE, shape=MSO_SHAPE.OVAL) +text(s, 1.42, 0.78, 6, 0.46, "KINTEX · WISE AI", size=15, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE) +chip(s, 0.85, 2.35, 1.95, 0.42, "데이터베이스 설계서", PURPLE, WHITE, size=12) +chip(s, 2.92, 2.35, 2.2, 0.42, "Database Design", RGBColor(0x2B,0x4C,0x7E), WHITE, size=10.5) +text(s, 0.85, 2.95, 11, 1.9, [ + [{"t":"킨텍스 자동전시시스템", "size":44, "color":WHITE, "bold":True}], + [{"t":"데이터베이스 설계서", "size":44, "color":WHITE, "bold":True}]], line_spacing=1.02) +text(s, 0.88, 4.7, 11, 0.5, "PostgreSQL 15 + PostGIS · Flyway 형상관리 · kintex 전용 DB", + size=15.5, color=RGBColor(0xC7,0xDD,0xF2)) +text(s, 0.88, 5.24, 11.4, 0.4, + "공간데이터(부스 POLYGON · 트렌치 POINT · 배선 LINESTRING) 일원화 · 행사 단위 격리 · 감사추적", + size=12, color=RGBColor(0xB9,0xC7,0xEA)) +rect(s, 0.85, 6.05, 11.63, 0.02, fill=RGBColor(0x3A,0x5A,0x8C)) +text(s, 0.85, 6.25, 8.6, 0.4, [[{"t":"산출물 ","size":11,"color":RGBColor(0x90,0xA6,0xC9)}, + {"t":f"개념·논리·물리 데이터 모델 / 테이블 {TOTAL_TABLES} · 컬럼 {TOTAL_COLS} · 인덱스 {TOTAL_IDX}","size":11,"color":WHITE,"bold":True}]]) +text(s, 0.85, 6.62, 9.6, 0.4, [[{"t":"근거 ","size":11,"color":RGBColor(0x90,0xA6,0xC9)}, + {"t":"Flyway V1~V10 실제 DDL 역추출 (스키마 권위)","size":10.5,"color":WHITE}]]) +text(s, 9.7, 6.25, 2.78, 0.4, "작성일 2026-07-11", size=11, color=WHITE, bold=True, align=PP_ALIGN.RIGHT) +text(s, 9.7, 6.62, 2.78, 0.4, "DA · kintex-da", size=9.5, color=RGBColor(0x90,0xA6,0xC9), align=PP_ALIGN.RIGHT) + +# ================= 슬라이드 2 : 목차 ================= +s = slide() +header(s, "CONTENTS", "목차", 0) +rect(s, 0.55, 0.5, 0.62, 0.62, fill=PURPLE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) +text(s, 0.55, 0.5, 0.62, 0.62, "C", size=22, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) +toc = [ + ("01","개요","PostgreSQL+PostGIS · Flyway · kintex 전용 DB"), + ("02","데이터 아키텍처 원칙","행사 단위 격리 · 공간타입 선정 · 감사로그"), + ("03","개념 데이터 모델","핵심 주제영역 관계 개요도"), + ("04","논리 모델(ERD)","주제영역별 엔터티·관계 ERD"), + ("05","물리 모델 요약","테이블 그룹 · 공간컬럼 · 인덱스 전략"), + ("06","데이터 표준","명명 규칙 · 공통코드 · 날짜/통화"), + ("07","데이터 보안","암호화·PII·응답제외·감사추적"), + ("08","백업·이관 전략","Flyway 마이그레이션 운영 원칙"), +] +cw = 5.85 +for i,(no,t,d) in enumerate(toc): + col = i // 4; row = i % 4 + x = 0.7 + col*(cw+0.35); y = 1.62 + row*1.28 + rect(s, x, y, cw, 1.1, fill=CARD, line=LINE, line_w=1.0, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + rect(s, x, y, 0.09, 1.1, fill=BLUE if col==0 else PURPLE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x+0.28, y, 1.0, 1.1, no, size=26, color=(BLUE if col==0 else PURPLE), bold=True, anchor=MSO_ANCHOR.MIDDLE) + text(s, x+1.3, y+0.24, cw-1.5, 0.4, t, size=15, color=INK, bold=True) + text(s, x+1.3, y+0.64, cw-1.5, 0.34, d, size=9.5, color=MUTED) + +# ================= 슬라이드 3 : 01 개요 ================= +s = slide() +header(s, "OVERVIEW", "01. 개요 — DBMS · 형상관리 · DB 구성", 1) +text(s, 0.55, 1.45, 12.2, 0.5, + "킨텍스 자동전시시스템은 전시 생애주기(판매→AI 설계·시각화→공사 옥션→운영→경영분석) 전 과정을 단일 DB에 담는다. " + "공간데이터를 애플리케이션과 분리하지 않고 PostGIS로 DB에 일원화하여 배치·배선·규정검증을 ST_* 연산으로 수행한다.", + size=12, color=INK, line_spacing=1.12) +# 좌: 스택 카드 +cards = [ + ("DBMS", "PostgreSQL 15", "관계형 + 트랜잭션 정합", BLUE), + ("공간확장", "PostGIS", "POLYGON·POINT·LINESTRING 지오메트리", GREEN), + ("암호화", "pgcrypto", "gen_random_uuid() · 해시", PURPLE), + ("형상관리", "Flyway", "V1~V10 버전 마이그레이션(불변·순증)", AMBER), +] +for i,(k,v,d,c) in enumerate(cards): + x = 0.55 + i*3.06 + card(s, x, 2.2, 2.86, 1.35) + rect(s, x, 2.2, 2.86, 0.1, fill=c, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x+0.22, 2.4, 2.5, 0.3, k, size=10, color=c, bold=True) + text(s, x+0.22, 2.72, 2.5, 0.4, v, size=15, color=INK, bold=True) + text(s, x+0.22, 3.16, 2.5, 0.34, d, size=9, color=MUTED, line_spacing=1.05) +# 통계 스트립 +stats = [(f"{TOTAL_TABLES}", "테이블"), (f"{TOTAL_COLS}", "컬럼"), (f"{len(AREAS)}", "주제영역"), + (f"{len(SPATIAL_COLS)}", "공간 컬럼"), (f"{TOTAL_IDX}", "인덱스"), ("V1–V10", "Flyway")] +for i,(v,l) in enumerate(stats): + x = 0.55 + i*2.03 + rect(s, x, 3.85, 1.9, 1.0, fill=BLUE_LT, line=LINE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x, 4.0, 1.9, 0.44, v, size=23, color=BLUE_DK, bold=True, align=PP_ALIGN.CENTER) + text(s, x, 4.5, 1.9, 0.3, l, size=10, color=MUTED, align=PP_ALIGN.CENTER) +# DB 구성 원칙 +bullets(s, 0.55, 5.15, 12.2, [ + ("kintex 전용 DB", "GUARDiA 타 솔루션과 물리 DB 분리(kintex 전용 스키마). 접속·권한은 서비스 계정 최소권한."), + ("공간·업무 단일 저장", "부스 폴리곤·배선 라인·요율·관람 데이터를 한 트랜잭션 경계에서 일관 관리."), + ("멱등·순증 마이그레이션", "V7 이후는 CREATE IF NOT EXISTS·ADD COLUMN IF NOT EXISTS로 재적용 안전(운영 무중단)."), +], size=11.5, gap=0.5) + +# ================= 슬라이드 4 : 02 아키텍처 원칙 ================= +s = slide() +header(s, "PRINCIPLES", "02. 데이터 아키텍처 원칙", 2) +princ = [ + ("행사 단위 격리(멀티테넌시)", BLUE, + ["물리 tenant_id 컬럼 대신 event_id + event_member(RBAC)로 논리 격리", + "핵심 트랜잭션 테이블은 event_id FK·ON DELETE CASCADE로 행사 경계 정합", + "hall·company·master_data 등 마스터는 전 행사 공유(참조 무결성)"]), + ("공간데이터 PostGIS 일원화", GREEN, + ["부스=POLYGON, 트렌치·비상구=POINT, 배선=MultiLineString (SRID 0 홀 로컬 m)", + "GiST 공간 인덱스로 ST_Intersects/Area/Distance 고속 연산", + "배치·배선 재저장 대비 booth_id 소프트 참조(감사·쿼터 보존)"]), + ("감사 추적·이력 보존", PURPLE, + ["audit_log에 actor·action·target·ruleset_version·result 기록", + "render_job은 이력·쿼터 정본(부스 교체와 무관하게 감사 보존)", + "layout·design_plan·booth_standard 버전(version) 관리"]), + ("보안 내재화", AMBER, + ["password_hash·otp_secret·code_hash 컬럼은 API 응답/로그 완전 제외", + "민감 시크릿 설정은 sys_setting.secret_yn='Y'로 마스킹", + "error_message는 사용자 요약만(스택트레이스 저장 금지)"]), +] +for i,(title,c,items) in enumerate(princ): + x = 0.55 + (i%2)*6.15; y = 1.5 + (i//2)*2.6 + card(s, x, y, 5.95, 2.4) + rect(s, x, y, 0.11, 2.4, fill=c, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x+0.35, y+0.2, 5.4, 0.4, title, size=14, color=INK, bold=True) + yy = y+0.72 + for it in items: + rect(s, x+0.4, yy+0.06, 0.1, 0.1, fill=c, shape=MSO_SHAPE.OVAL) + text(s, x+0.62, yy, 5.15, 0.5, it, size=10.3, color=MUTED, line_spacing=1.05) + yy += 0.52 + +# ================= 슬라이드 5 : 03 개념 데이터 모델 ================= +s = slide() +header(s, "CONCEPTUAL", "03. 개념 데이터 모델 — 주제영역 관계 개요", 3) +text(s, 0.55, 1.42, 12.2, 0.4, + "구현된 4개 주제영역과 소유 데이터의 관계. 행사(EVENT)를 축으로 공간·설계 코어와 공통·시스템 레이어가 결합한다.", + size=11.5, color=MUTED) +# 중앙 EVENT 허브 +hub = {"cx":6.6, "cy":3.9} +rect(s, 5.75, 3.3, 1.7, 1.2, fill=BLUE_DK, shape=MSO_SHAPE.ROUNDED_RECTANGLE, shadow=True) +text(s, 5.75, 3.3, 1.7, 1.2, [[{"t":"EVENT","size":15,"color":WHITE,"bold":True}], + [{"t":"행사(테넌트 축)","size":9,"color":RGBColor(0xC7,0xDD,0xF2)}]], align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) +sa = [ + ("MASTER","행사·조직·권한·마스터","event · hall · company · event_member",8,BLUE, 0.7, 1.95), + ("SPATIAL","공간·설계·시각화","layout · booth · utility_order · render_job",7,GREEN, 9.35, 1.95), + ("COMMON","공통 업무 모듈","worklog · schedule · notice · meeting …",11,PURPLE, 0.7, 4.75), + ("SYSTEM","시스템관리·인증","sys_* · common_code · audit_log · password_reset",9,AMBER, 9.35, 4.75), +] +for code,ko,ex,n,c,x,y in sa: + # 연결선 (먼저) + box_cx = x+1.6; box_cy = y+0.75 + cn = s.shapes.add_connector(MSO_CONNECTOR.STRAIGHT, inch(box_cx), inch(box_cy), inch(hub["cx"]), inch(hub["cy"])) + cn.line.color.rgb = RGBColor(0xC2,0xCC,0xDA); cn.line.width = Pt(1.6); cn.shadow.inherit=False +for code,ko,ex,n,c,x,y in sa: + card(s, x, y, 3.2, 1.5) + rect(s, x, y, 3.2, 0.12, fill=c, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x+0.24, y+0.24, 2.7, 0.34, ko, size=13, color=INK, bold=True) + chip(s, x+2.45, y+0.24, 0.62, 0.3, f"{n}T", c, WHITE, size=9) + text(s, x+0.24, y+0.68, 2.9, 0.7, ex, size=9.3, color=MUTED, line_spacing=1.08) +text(s, 0.55, 6.5, 12.2, 0.4, + "관계 요지: EVENT 1─N HallAssignment/EventMember/Layout/Notice/Worklog(event_id). Layout 1─N Booth(POLYGON) 1─N DesignPlan·UtilityOrder(배선)·RenderJob. Company·User ─ EventMember로 행사 RBAC 성립.", + size=9.8, color=INK, line_spacing=1.1) + +# ================= 슬라이드 6~9 : 04 논리 모델 ERD (주제영역별) ================= +def erd_slide(area_ko, idx, placements, extra_note, cross_notes=None): + s = slide() + header(s, "LOGICAL ERD", f"04. 논리 모델 — {area_ko}", 4) + # 연결선 먼저(엔티티 아래로 깔림) + boxes = {} + # 1차: 좌표만 계산해 중심 확보 + for tn, x, y, w in placements: + t = TABLES[tn] + pk=[c for c in t["cols"] if c["pk"]]; fk=[c for c in t["cols"] if c["fk"] and not c["pk"]] + rest=[c for c in t["cols"] if not c["pk"] and not c["fk"]] + show=(pk+fk+rest); show=show[:6] + h = 0.5+len(show)*0.26 + boxes[tn]={"x":x,"y":y,"w":w,"h":h,"cx":x+w/2,"cy":y+h/2} + for tn,_,_,_ in placements: + for c in TABLES[tn]["cols"]: + if c["fk"] and c["fk"] in boxes and c["fk"]!=tn: + connect(s, boxes[tn], boxes[c["fk"]]) + accents={"MASTER":BLUE,"SPATIAL":GREEN,"SYSTEM":AMBER,"COMMON":PURPLE} + acc = accents.get(idx, BLUE) + for tn,x,y,w in placements: + erd_entity(s, x, y, w, tn, accent=acc) + if extra_note: + text(s, 0.55, 6.78, 12.2, 0.3, extra_note, size=9, color=MUTED, line_spacing=1.05) + return s + +# ERD-1 MASTER +erd_slide("행사·조직·권한·마스터", "MASTER", [ + ("event", 5.6, 1.5, 2.5), + ("hall", 9.9, 1.5, 2.8), + ("hall_assignment", 9.9, 4.05, 2.8), + ("event_member", 5.6, 3.7, 2.85), + ("app_user", 0.6, 1.5, 2.75), + ("company", 0.6, 4.55, 2.75), +], "관계: event 1─N hall_assignment·event_member. app_user·company ─ event_member(행사 RBAC). 독립 마스터 booth_standard·master_data 는 물리 모델 목록(슬라이드 10) 참조.") + +# ERD-2 SPATIAL +erd_slide("공간·설계·시각화(부스 코어)", "SPATIAL", [ + ("hall", 0.6, 1.5, 2.5), + ("trench", 0.6, 4.2, 2.5), + ("hall_exit", 3.45, 4.2, 2.4), + ("layout", 3.6, 1.5, 2.5), + ("booth", 6.55, 1.5, 2.6), + ("design_plan", 9.65, 1.5, 2.7), + ("utility_order", 6.55, 4.35,2.9), + ("render_job", 9.85, 4.35,2.75), +], "관계: hall 1─N trench·hall_exit·layout. layout 1─N booth(POLYGON) 1─N design_plan. booth ─ utility_order(배선 LineString)·render_job(AI 샷). booth_id 소프트 참조.") + +# ERD-3 SYSTEM +erd_slide("시스템관리·인증", "SYSTEM", [ + ("common_code_group", 0.6, 1.5, 2.7), + ("common_code", 0.6, 4.0, 2.7), + ("sys_role", 3.6, 1.5, 2.6), + ("sys_role_permission",3.6,4.0, 2.75), + ("sys_permission", 6.55, 1.5, 2.6), + ("sys_menu", 9.6, 1.5, 2.8), + ("sys_setting", 6.55, 4.05, 2.6), + ("audit_log", 9.6, 4.05, 2.8), +], "관계: common_code_group 1─N common_code. sys_role ─ sys_role_permission ─ sys_permission(M:N). sys_menu 자기참조(parent_id). password_reset(공개 인증)은 별도. audit_log 전 모듈 공유.") + +# ERD-4 COMMON +s = slide() +header(s, "LOGICAL ERD", "04. 논리 모델 — 공통 업무 모듈", 4) +# 부모-자식 3쌍 + 독립 목록 +pairs = [("message","message_recipient"),("opinion","opinion_comment"),("meeting","meeting_action")] +px = 0.6 +for i,(p,ch) in enumerate(pairs): + x = 0.6 + i*4.15 + bp = erd_entity(s, x, 1.5, 3.0, p, accent=PURPLE) + bc = erd_entity(s, x+0.3, 3.9, 3.0, ch, accent=RGBColor(0x8B,0x6B,0xE0)) +# 연결(부모→자식) 먼저 그리지 못했으니 라벨로 대체 +text(s, 0.6, 6.05, 11.9, 0.3, + "부모 1─N 자식(FK·ON DELETE CASCADE): message→message_recipient · opinion→opinion_comment · meeting→meeting_action", + size=9.5, color=TEAL, bold=True) +# 독립 테이블 스트립 +indep = ["worklog","schedule","notice","report","notification"] +text(s, 0.6, 6.42, 3, 0.3, "행사 스코프 독립 테이블", size=10, color=MUTED, bold=True) +for i,tn in enumerate(indep): + x = 3.0 + i*1.85 + rect(s, x, 6.4, 1.75, 0.4, fill=BLUE_LT, line=LINE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x, 6.4, 1.75, 0.4, tn, size=9.5, color=BLUE_DK, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + +# ================= 슬라이드 10 : 05 물리 모델 요약 (테이블 그룹) ================= +s = slide() +header(s, "PHYSICAL", "05. 물리 모델 요약 — 테이블 그룹", 5) +col_x = [0.55, 6.7] +for gi,(code,ko,tlist) in enumerate(AREAS): + x = col_x[gi%2]; y = 1.5 + (gi//2)*2.65 + card(s, x, y, 5.9, 2.45) + acc = {"MASTER":BLUE,"SPATIAL":GREEN,"SYSTEM":AMBER,"COMMON":PURPLE}[code] + rect(s, x, y, 5.9, 0.5, fill=acc, shape=MSO_SHAPE.ROUND_2_SAME_RECTANGLE) + text(s, x+0.25, y, 4.8, 0.5, ko, size=13, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE) + text(s, x+5.0, y, 0.7, 0.5, f"{len(tlist)}T", size=13, color=WHITE, bold=True, align=PP_ALIGN.RIGHT, anchor=MSO_ANCHOR.MIDDLE) + yy = y+0.62 + for j,tn in enumerate(tlist): + cx = x+0.25 + (j%2)*2.9 + cyy = yy + (j//2)*0.315 + text(s, cx, cyy, 2.85, 0.3, [[{"t":"· ","color":acc,"bold":True,"size":10}, + {"t":tn,"size":9.3,"color":INK,"bold":True}, + {"t":" "+KO.get(tn,""),"size":7.8,"color":MUTED}]], anchor=MSO_ANCHOR.MIDDLE) + +# ================= 슬라이드 11 : 05b 공간 컬럼·인덱스 전략 ================= +s = slide() +header(s, "PHYSICAL — SPATIAL & INDEX", "05. 공간 컬럼 · 인덱스 전략", 5) +# 공간 컬럼 표 +text(s, 0.55, 1.45, 6, 0.32, "공간(PostGIS) 컬럼", size=13, color=GREEN, bold=True) +sp_rows = [("테이블","컬럼","지오메트리","용도")] +sp_meta = { + ("trench","geom"):"급전/급수/네트워크 공급 포인트", + ("hall_exit","geom"):"비상구 위치(이격 버퍼 검증)", + ("booth","geom"):"부스 경계 폴리곤(면적·간섭)", + ("utility_order","wiring"):"전기/네트워크/급배수 배선 경로", +} +for tn,cn,ty in SPATIAL_COLS: + sp_rows.append((tn, cn, ty, sp_meta.get((tn,cn),""))) +ry = 1.85 +for i,row in enumerate(sp_rows): + fill = BLUE if i==0 else (WHITE if i%2 else BLUE_LT) + tc = WHITE if i==0 else INK + rect(s, 0.55, ry, 6.1, 0.4, fill=fill, line=LINE) + xs=[0.65,2.05,3.35,4.75]; ws=[1.35,1.25,1.4,1.85] + for k,val in enumerate(row): + text(s, xs[k], ry, ws[k], 0.4, val, size=8.6, color=(tc if k<3 else (tc if i==0 else MUTED)), + bold=(i==0 or k==0), anchor=MSO_ANCHOR.MIDDLE) + ry += 0.4 +text(s, 0.55, ry+0.1, 6.1, 0.6, + "SRID 0 = 홀 로컬 평면(미터). ST_Area/Distance/Length 결과 단위 = m·㎡.", + size=9, color=MUTED, line_spacing=1.1) +# 인덱스 전략 +text(s, 6.95, 1.45, 5.8, 0.32, "인덱스 전략", size=13, color=BLUE, bold=True) +idx_items = [ + ("GiST 공간 인덱스", f"geometry 컬럼 4종(booth·trench·hall_exit·utility_order.wiring) 전부 GiST"), + ("B-Tree 조회 인덱스", "FK·정렬 축: writer_id+work_date, recipient_id, event_id 등"), + ("복합 인덱스", "render_job(booth_id,shot_preset) · (event_id,status) 쿼터·상태 조회"), + ("정렬 최적화", "audit_log(created_at DESC) · notice(event_id,pinned DESC,created_at DESC)"), + (f"총 인덱스 {TOTAL_IDX}개", "PK 자동 인덱스 별도 · 공간 4 · B-Tree 다수"), +] +yy = 1.9 +for k,v in idx_items: + card(s, 6.95, yy, 5.75, 0.78) + text(s, 7.15, yy+0.12, 5.4, 0.3, k, size=11, color=INK, bold=True) + text(s, 7.15, yy+0.44, 5.4, 0.3, v, size=8.8, color=MUTED, line_spacing=1.05) + yy += 0.9 + +# ================= 슬라이드 12 : 06 데이터 표준 ================= +s = slide() +header(s, "STANDARDS", "06. 데이터 표준 — 명명 · 코드 · 날짜/통화", 6) +std = [ + ("명명 규칙(실제 DDL 관찰)", BLUE, [ + "테이블·컬럼 = snake_case 단수형 (app_user, booth, render_job)", + "PK = id (varchar 애플리케이션 채번) / 대량 로그 = bigserial (audit_log·password_reset)", + "FK = <참조테이블>_id (event_id, booth_id, hall_id, layout_id)", + "불리언 = is_/has_/*_yn 혼용 · 금액/치수 = numeric(정밀도,스케일)", + "타임스탬프 = *_at (timestamptz) / 날짜 = *_date (date)", + ]), + ("공통코드 체계(common_code)", PURPLE, [ + "grp_code(그룹) 1─N code — 14개 그룹 시드(USE_YN·USER_ROLE·WORK_STATUS …)", + "화면 드롭다운·상태값을 코드로 표준화 (하드코딩 배제)", + "정렬 sort_order · 사용여부 use_yn(Y/N) · 확장 attr1", + ]), + ("날짜·통화·단위 표준", GREEN, [ + "일시 = timestamptz(UTC 저장, 표시 KST) · 날짜 = date", + "통화 = KRW 정수(원) 원칙, 요율/정산은 numeric — 부동소수 금지", + "치수 = 미터(m)·면적 ㎡ · 하중 t/㎡ (numeric 고정 스케일)", + ]), +] +yy = 1.5 +for title,c,items in std: + h = 0.5 + len(items)*0.34 + 0.15 + card(s, 0.55, yy, 12.2, h) + rect(s, 0.55, yy, 0.11, h, fill=c, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 0.85, yy+0.16, 11.6, 0.34, title, size=13.5, color=INK, bold=True) + iy = yy+0.6 + for it in items: + rect(s, 0.95, iy+0.06, 0.09, 0.09, fill=c, shape=MSO_SHAPE.OVAL) + text(s, 1.14, iy, 11.4, 0.32, it, size=10.3, color=MUTED) + iy += 0.34 + yy += h + 0.16 + +# ================= 슬라이드 13 : 07 데이터 보안 ================= +s = slide() +header(s, "SECURITY", "07. 데이터 보안 — 암호화 · PII · 응답제외 · 감사", 7) +# 응답 제외/암호화 컬럼 표 +text(s, 0.55, 1.45, 7, 0.32, "민감 컬럼 처리 정책", size=13, color=BLUE, bold=True) +sec_rows = [("테이블.컬럼","정책")] +sec_rows += [ + ("app_user.password_hash","BCrypt 해시 · API 응답/로그 완전 제외"), + ("app_user.otp_secret","TOTP 시크릿 · AES-256-GCM 암호화 저장 · 응답 제외"), + ("password_reset.code_hash","BCrypt(6자리) · 만료 10분·1회성 · 응답/로그 제외"), + ("sys_setting.secret_yn='Y'","시크릿 설정값 마스킹 반환"), + ("render_job.error_message","사용자 요약만 · 스택트레이스 저장 금지"), + ("booth.assigned_company_name","표시용(내부 식별자·민감정보 미포함)"), +] +ry = 1.85 +for i,(a,b) in enumerate(sec_rows): + fill = BLUE if i==0 else (WHITE if i%2 else BLUE_LT) + tc = WHITE if i==0 else INK + rect(s, 0.55, ry, 6.5, 0.52, fill=fill, line=LINE) + text(s, 0.68, ry, 2.75, 0.52, a, size=8.4, color=tc, bold=(i==0), anchor=MSO_ANCHOR.MIDDLE) + text(s, 3.5, ry, 3.45, 0.52, b, size=8.3, color=(tc if i==0 else MUTED), bold=(i==0), + anchor=MSO_ANCHOR.MIDDLE, line_spacing=1.0) + ry += 0.52 +# 우측 원칙 카드 +text(s, 7.3, 1.45, 5.4, 0.32, "보안 불변 원칙", size=13, color=PURPLE, bold=True) +sec_cards = [ + ("PII 최소화·격리", "관람/리드 PII 집중영역 접근 제한 · BI 마트는 집계/익명키만 반입(개인식별자 0)"), + ("암호화 저장", "비밀번호·OTP·재설정코드는 해시/AES-256-GCM · 평문 저장 금지"), + ("API 응답 스키마 통제", "ServerOut류 민감 컬럼 응답 완전 제외 · 스택트레이스 미노출"), + ("감사 추적", "audit_log(actor·action·target·ruleset_version·result·ip_hint) 전 변경 기록"), + ("행사 격리 접근제어", "event_member 역할(ORGANIZER·EXHIBITOR·CONTRACTOR·HALL_MANAGER) 스코프"), +] +yy = 1.85 +for k,v in sec_cards: + card(s, 7.3, yy, 5.45, 0.92) + rect(s, 7.3, yy, 0.09, 0.92, fill=PURPLE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 7.55, yy+0.13, 5.1, 0.3, k, size=11, color=INK, bold=True) + text(s, 7.55, yy+0.45, 5.1, 0.42, v, size=8.7, color=MUTED, line_spacing=1.05) + yy += 1.02 + +# ================= 슬라이드 14 : 08 백업·이관 전략 ================= +s = slide() +header(s, "BACKUP & MIGRATION", "08. 백업 · 이관 전략 (Flyway 형상관리)", 8) +mig = [ + ("Flyway 버전 마이그레이션", BLUE, [ + "V1 확장 → V2 신원·마스터 → V3 공간코어 → V4~V6 시드 → V7 시스템관리 → V8 공통업무 → V9 공개인증 → V10 10년 시드", + "적용 이력은 flyway_schema_history 테이블에 체크섬으로 기록·검증", + "V1~V6 불변 원칙 · V7 이후 순증(additive)·멱등만 수행(운영 무중단)", + ]), + ("백업 전략", GREEN, [ + "일 1회 논리 백업(pg_dump) + WAL 아카이브 기반 PITR(시점복구)", + "PostGIS 지오메트리·공간 인덱스 포함 전체 스키마 백업", + "오브젝트 스토리지(렌더 이미지·도면)는 서명·만료 URL로 별도 보존", + ]), + ("이관·복구 절차", PURPLE, [ + "복구 = 최신 백업 복원 → Flyway migrate로 최신 버전까지 재적용(정본 순서 보장)", + "환경 승격(dev→운영): 동일 마이그레이션 스크립트 적용으로 스키마 동형 보장", + "시드(V4~V6·V10)와 스키마(V1~V3·V7~V9) 분리로 데이터 오염 없이 재구축", + ]), +] +yy = 1.5 +for title,c,items in mig: + h = 0.5 + len(items)*0.4 + 0.1 + card(s, 0.55, yy, 12.2, h) + rect(s, 0.55, yy, 0.11, h, fill=c, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 0.85, yy+0.16, 11.6, 0.34, title, size=13.5, color=INK, bold=True) + iy = yy+0.62 + for it in items: + rect(s, 0.95, iy+0.07, 0.09, 0.09, fill=c, shape=MSO_SHAPE.OVAL) + text(s, 1.14, iy, 11.4, 0.38, it, size=10.2, color=MUTED, line_spacing=1.08) + iy += 0.4 + yy += h + 0.16 +text(s, 0.55, 6.75, 12.2, 0.3, + "보안 불변: 본 설계서·백업 매뉴얼에 비밀번호·API키·서버 IP·SSH 접속정보를 기재하지 않는다.", + size=9, color=MUTED, bold=True) + +# ---- 저장 ---- +PPTX_PATH = os.path.join(OUT_DIR, "데이터베이스설계서.pptx") +prs.save(PPTX_PATH) +N_SLIDES = len(prs.slides._sldIdLst) + +# ====================================================================== +# 3. XLSX — 테이블정의서 +# ====================================================================== +import openpyxl +from openpyxl.styles import Font, PatternFill, Alignment, Border, Side +from openpyxl.utils import get_column_letter + +BLUE_HEX = "0066B3"; BLUEDK_HEX = "00447A"; BAND_HEX = "E1EFF9"; ROW_HEX = "F4F8FC" +thin = Side(style="thin", color="D0D7E2") +BORDER = Border(left=thin, right=thin, top=thin, bottom=thin) +HFONT = Font(name="맑은 고딕", size=10, bold=True, color="FFFFFF") +BFONT = Font(name="맑은 고딕", size=10) +BOLD = Font(name="맑은 고딕", size=10, bold=True, color="101828") +TITLE_FONT = Font(name="맑은 고딕", size=11, bold=True, color="FFFFFF") +HEAD_FILL = PatternFill("solid", fgColor=BLUE_HEX) +BAND_FILL = PatternFill("solid", fgColor=BLUEDK_HEX) +ALT_FILL = PatternFill("solid", fgColor=ROW_HEX) +CEN = Alignment(horizontal="center", vertical="center", wrap_text=True) +LEFT = Alignment(horizontal="left", vertical="center", wrap_text=True) + +wb = openpyxl.Workbook() + +# ---- 시트1: 테이블목록 ---- +ws = wb.active; ws.title = "테이블목록" +ws.sheet_view.showGridLines = False +cols1 = [("No",6),("테이블명",22),("한글명",24),("주제영역",24),("Flyway",10),("컬럼수",8),("비고",40)] +for j,(h,w) in enumerate(cols1, start=1): + c = ws.cell(1, j, h); c.font=HFONT; c.fill=HEAD_FILL; c.alignment=CEN; c.border=BORDER + ws.column_dimensions[get_column_letter(j)].width = w +ordered = sorted(TABLES.items(), key=lambda kv: kv[1]["order"]) +for i,(tn,t) in enumerate(ordered, start=1): + note = [] + if any(c["type"].lower().startswith("geometry") for c in t["cols"]): note.append("PostGIS 공간") + if t["pk"] and len(t["pk"])>1: note.append("복합 PK("+",".join(sorted(t["pk"]))+")") + if t["uniques"]: note.append("UNIQUE("+"; ".join(t["uniques"])+")") + if any(c["name"] in ("password_hash","otp_secret","code_hash") for c in t["cols"]): note.append("민감:응답제외") + row = [i, tn, KO.get(tn,""), AREA_OF.get(tn,""), t["version"], len(t["cols"]), " · ".join(note)] + for j,val in enumerate(row, start=1): + c = ws.cell(i+1, j, val) + c.font = BOLD if j==2 else BFONT + c.alignment = CEN if j in (1,5,6) else LEFT + c.border = BORDER + if i%2==0: c.fill = ALT_FILL +ws.freeze_panes = "A2" +ws.auto_filter.ref = f"A1:G{len(ordered)+1}" + +# ---- 주제영역별 시트 ---- +DATA_COLS = [("No",5),("컬럼명",26),("데이터타입",20),("NULL",7),("키",13),("기본값",18),("설명",56)] +def key_str(c): + parts=[] + if c["pk"]: parts.append("PK") + if c["fk"]: parts.append(f"FK→{c['fk']}") + if c["unique"]: parts.append("U") + return " ".join(parts) + +for code, ko, tlist in AREAS: + title = ko.split("(")[0].strip() + sname = {"MASTER":"마스터·조직·권한","SPATIAL":"공간·설계·시각화", + "SYSTEM":"시스템관리·인증","COMMON":"공통업무"}[code] + ws = wb.create_sheet(sname) + ws.sheet_view.showGridLines = False + for j,(h,w) in enumerate(DATA_COLS, start=1): + c = ws.cell(1, j, h); c.font=HFONT; c.fill=HEAD_FILL; c.alignment=CEN; c.border=BORDER + ws.column_dimensions[get_column_letter(j)].width = w + r = 2 + ncol = len(DATA_COLS) + for tn in tlist: + t = TABLES[tn] + # 밴드 행(테이블 헤더) + ws.merge_cells(start_row=r, start_column=1, end_row=r, end_column=ncol) + bc = ws.cell(r, 1, f"◆ {tn} — {KO.get(tn,'')} [{t['version']}]" + + (" · 인덱스 "+", ".join(ix["name"] for ix in t["indexes"]) if t["indexes"] else "")) + bc.font = TITLE_FONT; bc.fill = BAND_FILL; bc.alignment = LEFT + for j in range(1, ncol+1): + ws.cell(r, j).border = BORDER + ws.cell(r, j).fill = BAND_FILL + r += 1 + for k,c in enumerate(t["cols"], start=1): + vals = [k, c["name"], c["type"], c["null"], key_str(c), c["default"], c["desc"]] + for j,val in enumerate(vals, start=1): + cc = ws.cell(r, j, val) + cc.font = BOLD if (j==2 and c["pk"]) else BFONT + cc.alignment = CEN if j in (1,4) else LEFT + cc.border = BORDER + if k%2==0: cc.fill = ALT_FILL + if j==5 and c["fk"]: + cc.font = Font(name="맑은 고딕", size=9, color="0E7C86", bold=True) + r += 1 + r += 1 # 테이블 간 공백 + ws.freeze_panes = "A2" + +XLSX_PATH = os.path.join(OUT_DIR, "테이블정의서.xlsx") +wb.save(XLSX_PATH) + +print("=" * 60) +print(f"[PPTX] {PPTX_PATH}") +print(f" 슬라이드 {N_SLIDES}장") +print(f"[XLSX] {XLSX_PATH}") +print(f" 시트 {len(wb.sheetnames)} : {wb.sheetnames}") +print(f"[SCHEMA] 테이블 {TOTAL_TABLES} · 컬럼 {TOTAL_COLS} · 인덱스 {TOTAL_IDX} · 공간컬럼 {len(SPATIAL_COLS)} · FK {len(FK_EDGES)}") +print("=" * 60) diff --git a/docs/deliverables/DA산출물/데이터베이스설계서.pptx b/docs/deliverables/DA산출물/데이터베이스설계서.pptx new file mode 100644 index 0000000000000000000000000000000000000000..03a1944dda01c3364f0618b5f051a1d90c430191 GIT binary patch literal 79035 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

)=A zq~#{LX;4Y$^IW+IsT07*uc}K;0FnS7F|HfyH!lDz&`OF_sZjC5wRIo&4lq+H5L08ZGSmY?odIQ}%MgBI3H^6&pdpz$rNfGTHr!=i!7HXDVp0fU)JlW+?$i*`shRm;^E30m6bGucl z5Ja+svC^?nX-4IQqH(!o8ty;2_C5v;D{4Wxpl6VN}3K4&IkU- z2y30^IV`Pf*oMOS>t*AMr%0zan^uy4Q?i?%(%H%hP80EB~QgU#0qbKX^7$Y6+Xu{coQ6(E{|~1Lpmf zoCU|9AB@0zK>!4g`p0g9pvhb&f>v3+e9zJ#vxozVL=Z_pTfjJS{LKSJ>FRG4KEm#~V+JOt)BF`?sOdk59G@88VF!%FYEQiX#lbv!Ygsk5W%4hzeCv6TpH2tg+Urfi$S#BVu`!0$t!LaM!y-yf(HM zL#h^m1QJb(N~@q%Vy%U=2#P30T95>*Rusdd&;SB8Xh2(_^uJxWotd4HxV&-~=DTnH znVo;1vqkrI+`IGOQT3OB<#ESrdUk7*n;QOWsLEbb)_t)izp&ZK?MC>2?>EgnL%qEpqPq zbK&9YQkSsyk0UdSz8^h3Y&VKRgM~>Nq=8|48oGI@Cvsz)L1+~adVdZ=@NHWx@E$@D z8+0iqF~tkvLQPzV#G@yTGKre!SZkvP<+&^erEP?~PBi}YDB}BSlhGw`Oo_mCv z;NRdGNVdfythU3FOq|XjvOf1jLzejo6i=Rv(5tq>2w8*Gh@+dV^?$n#Y*5x)c_n?Usvc5`6x8sPw||;_%lZT$wHt9x%SDa?o$!! zoKFYiJcP$u+>|ILi}G*j`f<7~8%Hv;3!(Bq!4K7o=8h3!Vw1$}CUcT#WYyrb*Gaz~ zQ25;&A$KC0e~ba7TW>eV7)_#K>^@xi1=Gj5uK%Bz5ReHvy%?0) zQo)Bp!zv-n=OM6f5ah507dW^mS77*JTVc zCMsRbM0ZBM=w9%iIHbxIQZzZ^!@lrXi0Cd=ME614smPe9bdrF^@kJNFyqhYVDx%7n z2bvsGyWiCTL=#`5Bf4lMgN%tvJ1{hkFKP^6;8dc@UJ*_1F8C$81w{Q_Y0gGHqSBQ8G>$Lo zwuymLi7L+lpvmF4OLF#rsEf{HYLGGzxMHt)uzzG4(r^HYM|dghfxVO8*Gb3@QuKP$LH~2t(fs;$@?xt zL2EvCvjMD|b>>(Cfz?*IrH&TT6y?qiDS$&cg@`Y2qwv;m#A!gR%3tj(|Kwv`rOx0UbmAC==>o@7N(B;nvniL^scH#^9 z9v~2y5I-XoUNMaxhg09r%(Rf_L4qa;F|!a~Xc+nd7Gz9_pLyneH1)?GIP^BMR(_br zc&D@ogSiAv5@Kc>zL2JXKwv`r3{(8(*CQ=37CtVdg=WD%09HLoh?!ORLT;r50uy>c zCZQgqt3=4<5iX9|y zveJaZH5sJ@LBLlIT!}wk(|0ytN|OkjtTf?(O)8bnA{e+5f5fJ*4N{bfXA?MCX~H3! tRH}9%7`PID%%;y!C`y&{1m#!|dA=evcnTbFKxiF&*~3ALJa++J{SR!2mhAul literal 0 HcmV?d00001 diff --git a/docs/deliverables/DA산출물/테이블정의서.xlsx b/docs/deliverables/DA산출물/테이블정의서.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..073baeb623778ff2ced1c8b333d0195e74589fb6 GIT binary patch literal 26229 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 literal 0 HcmV?d00001 diff --git a/docs/deliverables/_gen/_docxutil.py b/docs/deliverables/_gen/_docxutil.py new file mode 100644 index 0000000..47c7c80 --- /dev/null +++ b/docs/deliverables/_gen/_docxutil.py @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- +"""공용 docx 헬퍼 — 한글 폰트/표/제목 스타일. 각 문서 생성기가 import.""" +from docx.shared import Pt, Cm, RGBColor +from docx.enum.text import WD_ALIGN_PARAGRAPH +from docx.enum.table import WD_TABLE_ALIGNMENT +from docx.oxml.ns import qn +from docx.oxml import OxmlElement + +NAVY = RGBColor(0x1F, 0x29, 0x3A) +ACCENT = RGBColor(0x11, 0x6D, 0xC3) +GREY = RGBColor(0x55, 0x5F, 0x6B) +KFONT = "맑은 고딕" + +def setup(doc): + st = doc.styles["Normal"]; st.font.name = KFONT; st.font.size = Pt(10.5) + _rf(st.element.get_or_add_rPr()) + for m in ("Heading 1","Heading 2","Heading 3"): + doc.styles[m].font.name = KFONT; _rf(doc.styles[m].element.get_or_add_rPr()) + s = doc.sections[0] + s.top_margin = Cm(2.2); s.bottom_margin = Cm(2.0); s.left_margin = Cm(2.3); s.right_margin = Cm(2.3) + +def _rf(rpr): + rf = rpr.find(qn('w:rFonts')) + if rf is None: + rf = OxmlElement('w:rFonts'); rpr.append(rf) + for a in ('w:ascii','w:hAnsi','w:eastAsia','w:cs'): + rf.set(qn(a), KFONT) + +def shade(cell, hexcolor): + tcpr = cell._tc.get_or_add_tcPr() + sh = OxmlElement('w:shd'); sh.set(qn('w:val'),'clear'); sh.set(qn('w:fill'),hexcolor) + tcpr.append(sh) + +def h(doc, level, text): + p = doc.add_heading(text, level=level) + for run in p.runs: + run.font.color.rgb = NAVY if level == 1 else ACCENT + return p + +def para(doc, text, size=10.5, bold=False, italic=False, color=None, align=None, space_after=6): + p = doc.add_paragraph(); r = p.add_run(text); r.bold = bold; r.italic = italic + r.font.size = Pt(size) + if color: r.font.color.rgb = color + if align: p.alignment = align + p.paragraph_format.space_after = Pt(space_after) + return p + +def bullets(doc, items, style="List Bullet"): + for it in items: + p = doc.add_paragraph(it, style=style); p.paragraph_format.space_after = Pt(2) + +def table(doc, headers, rows, widths=None, header_fill="1F293A", first_col_bold=False, fontsize=9.5): + t = doc.add_table(rows=1, cols=len(headers)); t.style = "Table Grid"; t.alignment = WD_TABLE_ALIGNMENT.CENTER + hd = t.rows[0].cells + for i, htext in enumerate(headers): + hd[i].text = ""; run = hd[i].paragraphs[0].add_run(htext) + run.bold = True; run.font.size = Pt(fontsize); run.font.color.rgb = RGBColor(0xFF,0xFF,0xFF) + shade(hd[i], header_fill) + for row in rows: + cells = t.add_row().cells + for i, val in enumerate(row): + cells[i].text = ""; run = cells[i].paragraphs[0].add_run(str(val)); run.font.size = Pt(fontsize) + if first_col_bold and i == 0: run.bold = True + cells[i].paragraphs[0].paragraph_format.space_after = Pt(1) + if widths: + for r_ in t.rows: + for i, w in enumerate(widths): + r_.cells[i].width = Cm(w) + doc.add_paragraph().paragraph_format.space_after = Pt(4) + return t diff --git a/docs/deliverables/_gen/gen_dev_plan_pptx.py b/docs/deliverables/_gen/gen_dev_plan_pptx.py new file mode 100644 index 0000000..dfe99e4 --- /dev/null +++ b/docs/deliverables/_gen/gen_dev_plan_pptx.py @@ -0,0 +1,785 @@ +# -*- coding: utf-8 -*- +""" +킨텍스 자동전시시스템 구축 — 개발계획서 PPTX 생성기 +- 소스: docs/PLANNING.md(v3.0), docs/IMPLEMENTATION_BACKLOG.md, docs/WORK_STATUS.md, + docs/architecture/*, CLAUDE.md 기술 스택표 +- 디자인: KINTEX Blue #0066B3 / AI Purple #6D4AFF / 중립 그레이 / 맑은 고딕 / 16:9 +- 도식(추진체계도·시스템 구성도·간트)은 python-pptx 도형으로 직접 그림(외부 이미지 금지) +- 보안 불변: 비밀번호/API키/서버IP/SSH 계정 미기재 +재실행: python gen_dev_plan_pptx.py +""" +import os +from pptx import Presentation +from pptx.util import Emu, Pt +from pptx.dml.color import RGBColor +from pptx.enum.text import PP_ALIGN, MSO_ANCHOR +from pptx.enum.shapes import MSO_SHAPE +from pptx.enum.text import MSO_AUTO_SIZE +from pptx.oxml.ns import qn + +# ---------------- 팔레트 ---------------- +BLUE = RGBColor(0x00, 0x66, 0xB3) # KINTEX Blue (primary) +BLUE_DK = RGBColor(0x00, 0x44, 0x7A) # deep +BLUE_LT = RGBColor(0xE1, 0xEF, 0xF9) # light tint +PURPLE = RGBColor(0x6D, 0x4A, 0xFF) # AI accent +PURPLE_LT = RGBColor(0xEC, 0xE8, 0xFF) +INK = RGBColor(0x10, 0x18, 0x28) # text +MUTED = RGBColor(0x66, 0x70, 0x85) # secondary text +LINE = RGBColor(0xE4, 0xE7, 0xEC) # borders +BG = RGBColor(0xF9, 0xFA, 0xFB) # page bg +WHITE = RGBColor(0xFF, 0xFF, 0xFF) +GREEN = RGBColor(0x12, 0x9E, 0x63) # 완료 +AMBER = RGBColor(0xE0, 0x8A, 0x00) # 진행 +SLATE = RGBColor(0x98, 0xA2, 0xB3) # 예정 +CARD = RGBColor(0xFF, 0xFF, 0xFF) +HALL_BG = RGBColor(0xF2, 0xF4, 0xF7) + +FONT = "맑은 고딕" + +# 16:9 +EMU_W = 12192000 +EMU_H = 6858000 + +prs = Presentation() +prs.slide_width = EMU_W +prs.slide_height = EMU_H +BLANK = prs.slide_layouts[6] + +IN = 914400 +def inch(v): return int(v * IN) + +# ---------------- 헬퍼 ---------------- +def slide(): + return prs.slides.add_slide(BLANK) + +def _set_fill(shape, color): + if color is None: + shape.fill.background() + else: + shape.fill.solid() + shape.fill.fore_color.rgb = color + +def _no_line(shape): + shape.line.fill.background() + +def rect(s, x, y, w, h, fill=None, line=None, line_w=1.0, shape=MSO_SHAPE.RECTANGLE, shadow=False): + sp = s.shapes.add_shape(shape, inch(x), inch(y), inch(w), inch(h)) + _set_fill(sp, fill) + if line is None: + _no_line(sp) + else: + sp.line.color.rgb = line + sp.line.width = Pt(line_w) + sp.shadow.inherit = False # creates an empty + if shadow: + el = sp._element.spPr + ef = el.find(qn('a:effectLst')) + if ef is None: + ef = el.makeelement(qn('a:effectLst'), {}) + el.append(ef) + sh = ef.makeelement(qn('a:outerShdw'), + {'blurRad':'90000','dist':'38100','dir':'5400000','rotWithShape':'0'}) + clr = sh.makeelement(qn('a:srgbClr'), {'val':'101828'}) + alp = clr.makeelement(qn('a:alpha'), {'val':'18000'}) + clr.append(alp); sh.append(clr); ef.append(sh) + return sp + +def _apply_runs(tf, para, segs, align, default_size, default_color, default_bold): + para.alignment = align + first = True + for seg in segs: + text = seg.get("t","") + r = para.add_run() if not first else para.runs[0] if para.runs else para.add_run() + # ensure a run exists + if first and not para.runs: + r = para.add_run() + r.text = text + r.font.name = FONT + r.font.size = Pt(seg.get("size", default_size)) + r.font.bold = seg.get("bold", default_bold) + r.font.color.rgb = seg.get("color", default_color) + # set east asian font + rPr = r._r.get_or_add_rPr() + ea = rPr.makeelement(qn('a:ea'), {'typeface':FONT}) + rPr.append(ea) + first = False + +def text(s, x, y, w, h, content, size=14, color=INK, bold=False, align=PP_ALIGN.LEFT, + anchor=MSO_ANCHOR.TOP, line_spacing=1.0, space_after=2, wrap=True): + """content: str 또는 list[para], para = str 또는 list[seg], seg={'t','size','color','bold'}""" + tb = s.shapes.add_textbox(inch(x), inch(y), inch(w), inch(h)) + tf = tb.text_frame + tf.word_wrap = wrap + tf.vertical_anchor = anchor + tf.margin_left = 0; tf.margin_right = 0; tf.margin_top = 0; tf.margin_bottom = 0 + if isinstance(content, str): + content = [content] + for i, para in enumerate(content): + p = tf.paragraphs[0] if i == 0 else tf.add_paragraph() + p.alignment = align + p.line_spacing = line_spacing + p.space_after = Pt(space_after) + p.space_before = Pt(0) + if isinstance(para, str): + segs = [{"t": para}] + elif isinstance(para, dict): + segs = [para] + else: + segs = para + for seg in segs: + r = p.add_run() + r.text = seg.get("t","") + r.font.name = FONT + r.font.size = Pt(seg.get("size", size)) + r.font.bold = seg.get("bold", bold) + r.font.color.rgb = seg.get("color", color) + rPr = r._r.get_or_add_rPr() + ea = rPr.makeelement(qn('a:ea'), {'typeface':FONT}) + rPr.append(ea) + return tb + +def page_bg(s, color=BG): + rect(s, -0.1, -0.1, 13.53, 7.7, fill=color) + +PAGE = {"n": 0} +def content_header(s, kicker, title, idx): + """본문 슬라이드 공통 헤더 + 푸터""" + page_bg(s, BG) + # top accent bar + rect(s, 0, 0, 13.333, 0.12, fill=BLUE) + # section number chip + rect(s, 0.55, 0.5, 0.62, 0.62, fill=BLUE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 0.55, 0.5, 0.62, 0.62, f"{idx:02d}", size=20, color=WHITE, bold=True, + align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + text(s, 1.32, 0.5, 10.5, 0.28, kicker, size=11, color=PURPLE, bold=True) + text(s, 1.32, 0.74, 11.4, 0.44, title, size=22, color=INK, bold=True) + rect(s, 0.55, 1.28, 12.23, 0.02, fill=LINE) + # footer + text(s, 0.55, 7.06, 8, 0.3, "킨텍스 자동전시시스템 구축 · 개발계획서", size=8.5, color=MUTED) + text(s, 11.3, 7.06, 1.48, 0.3, "2026-07-11", size=8.5, color=MUTED, align=PP_ALIGN.RIGHT) + +def chip(s, x, y, w, h, label, fill, txtcolor=WHITE, size=9.5, bold=True): + rect(s, x, y, w, h, fill=fill, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x, y, w, h, label, size=size, color=txtcolor, bold=bold, + align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + +def card(s, x, y, w, h, fill=CARD, line=LINE): + return rect(s, x, y, w, h, fill=fill, line=line, line_w=1.0, + shape=MSO_SHAPE.ROUNDED_RECTANGLE, shadow=True) + +# ================================================================ +# 1. 표지 +# ================================================================ +s = slide() +rect(s, -0.1, -0.1, 13.53, 7.7, fill=BLUE_DK) +# 대각 그라디언트 느낌: 겹치는 반투명 도형 +rect(s, 6.4, -1.5, 9, 11, fill=BLUE, shape=MSO_SHAPE.PARALLELOGRAM) +rect(s, 9.2, -2.0, 7, 12, fill=PURPLE, shape=MSO_SHAPE.PARALLELOGRAM) +# 좌상 브랜드 +rect(s, 0.85, 0.8, 0.42, 0.42, fill=WHITE, shape=MSO_SHAPE.OVAL) +rect(s, 0.97, 0.92, 0.18, 0.18, fill=PURPLE, shape=MSO_SHAPE.OVAL) +text(s, 1.42, 0.78, 6, 0.46, "KINTEX · WISE AI", size=15, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE) +# 문서 종류 배지 +chip(s, 0.85, 2.35, 1.75, 0.42, "개발계획서", PURPLE, WHITE, size=12) +chip(s, 2.72, 2.35, 2.1, 0.42, "Development Plan", RGBColor(0x2B,0x4C,0x7E), WHITE, size=10.5) +# 타이틀 +text(s, 0.85, 2.95, 11, 1.9, [ + [{"t":"킨텍스 자동전시시스템", "size":46, "color":WHITE, "bold":True}], + [{"t":"구축 개발계획서", "size":46, "color":WHITE, "bold":True}], + ], line_spacing=1.02) +text(s, 0.88, 4.78, 11, 0.5, + "Exhibition Automation Platform — 다중 전시관 멀티테넌트 SaaS", + size=16, color=RGBColor(0xC7,0xDD,0xF2), bold=False) +# 폐루프 한 줄 +text(s, 0.88, 5.35, 11.4, 0.4, + "판매 → AI 설계·시각화 → 공사 옥션 → 시공 → 운영 → 경영분석 폐루프 자동화", + size=12.5, color=RGBColor(0xB9,0xC7,0xEA)) +# 하단 메타 바 +rect(s, 0.85, 6.15, 11.63, 0.02, fill=RGBColor(0x3A,0x5A,0x8C)) +text(s, 0.85, 6.35, 8, 0.4, [ + [{"t":"사업명 ","size":11,"color":RGBColor(0x8FA,0x00,0x00) if False else RGBColor(0x90,0xA6,0xC9)}, + {"t":"킨텍스 자동전시시스템 구축","size":11.5,"color":WHITE,"bold":True}], + ]) +text(s, 0.85, 6.72, 9, 0.4, [ + [{"t":"기술스택 ","size":11,"color":RGBColor(0x90,0xA6,0xC9)}, + {"t":"React(Vite)+TS · Spring Boot 3.x(Java17)+MyBatis · PostgreSQL(PostGIS) · Redis · 나노바나나 워커 · Claude AI","size":10.5,"color":WHITE}], + ]) +text(s, 9.7, 6.35, 2.78, 0.4, "작성일 2026-07-11", size=11, color=WHITE, bold=True, align=PP_ALIGN.RIGHT) +text(s, 9.7, 6.72, 2.78, 0.4, "planner · designer · dev team", size=9.5, color=RGBColor(0x90,0xA6,0xC9), align=PP_ALIGN.RIGHT) + +# ================================================================ +# 2. 목차 +# ================================================================ +s = slide() +content_header(s, "CONTENTS", "목차", 0) +# 위 헤더의 00 chip을 목차용으로 덮기 +rect(s, 0.55, 0.5, 0.62, 0.62, fill=PURPLE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) +text(s, 0.55, 0.5, 0.62, 0.62, "C", size=22, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) +toc = [ + ("01", "사업 개요", "배경·목적·범위 / 전시 생애주기 폐루프"), + ("02", "시스템 구성", "아키텍처 개요 / 역할별 포털 / 나노바나나 파이프라인"), + ("03", "개발 범위", "모듈 M1~M18 + 공통·시스템관리 레이어(§5B)"), + ("04", "추진 체계", "거버넌스·아키텍트·개발·QA·DevOps 조직"), + ("05", "추진 일정", "Phase A~E 마스터 일정(완료/진행/예정)"), + ("06", "개발 방법론·품질관리", "에이전트 파이프라인 · 점진 QA · CI/CD"), + ("07", "보안 · 비기능요건(NFR)", "외부API 통제 · AI 워터마크 · 접근성·다국어"), + ("08", "리스크 및 대응", "기술·데이터·연동·보안 리스크"), + ("09", "기대 효과", "정량·정성 효과 / 확장 로드맵"), +] +col_w = 5.85 +for i, (no, t, d) in enumerate(toc): + col = i // 5 + row = i % 5 + x = 0.7 + col * (col_w + 0.35) + y = 1.62 + row * 1.02 + rect(s, x, y, col_w, 0.88, fill=CARD, line=LINE, line_w=1.0, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + rect(s, x, y, 0.09, 0.88, fill=BLUE if col==0 else PURPLE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x+0.28, y, 0.9, 0.88, no, size=24, color=(BLUE if col==0 else PURPLE), bold=True, anchor=MSO_ANCHOR.MIDDLE) + text(s, x+1.15, y+0.15, col_w-1.3, 0.35, t, size=14.5, color=INK, bold=True) + text(s, x+1.15, y+0.5, col_w-1.3, 0.32, d, size=9.5, color=MUTED) + +# ================================================================ +# 섹션 간지 헬퍼 +# ================================================================ +def divider(num, kr, en, points): + s = slide() + rect(s, -0.1, -0.1, 13.53, 7.7, fill=BLUE_DK) + rect(s, 8.6, -1.5, 8, 11, fill=BLUE, shape=MSO_SHAPE.PARALLELOGRAM) + rect(s, 10.9, -2, 6, 12, fill=PURPLE, shape=MSO_SHAPE.PARALLELOGRAM) + text(s, 1.0, 2.15, 5, 2.2, num, size=150, color=RGBColor(0x2C,0x4E,0x82), bold=True) + rect(s, 1.15, 3.9, 0.9, 0.09, fill=PURPLE) + text(s, 1.15, 4.05, 8, 0.8, kr, size=34, color=WHITE, bold=True) + text(s, 1.18, 4.85, 8, 0.4, en, size=13, color=RGBColor(0x9C,0xB4,0xD8), bold=True) + # 우측 포인트 + for i, p in enumerate(points): + yy = 2.35 + i*0.62 + rect(s, 8.05, yy+0.06, 0.16, 0.16, fill=PURPLE, shape=MSO_SHAPE.OVAL) + text(s, 8.35, yy, 4.4, 0.5, p, size=12.5, color=WHITE, anchor=MSO_ANCHOR.MIDDLE) + return s + +# ================================================================ +# 3. 사업 개요 (간지 + 본문) +# ================================================================ +divider("01", "사업 개요", "PROJECT OVERVIEW", + ["배경 · 목적 · 범위", "전시 생애주기 폐루프", "다중 전시관 SaaS 비전"]) + +s = slide() +content_header(s, "01 · 사업 개요", "배경 · 목적 · 추진 범위", 1) +# 좌: 배경/목적 +card(s, 0.55, 1.5, 6.05, 2.55) +text(s, 0.85, 1.7, 5.5, 0.35, "추진 배경 (As-Is)", size=13, color=BLUE, bold=True) +for i, t in enumerate([ + "전시면적 108,011㎡ 국내 최대 전시장이나 준비 실무는 HWP 서식·이메일 제출에 정체", + "CAD 수작업 배치도 → 홀매니저 육안 검수, 수기 위치표시도 기반 유틸리티 신청", + "참가업체 유틸리티 신청이 행사별 사무국 시스템으로 파편화(공통 플랫폼 부재)", + "시공 결과를 개장일에 처음 확인 — 사전 시각화 수단 없음", +]): + y = 2.1 + i*0.46 + rect(s, 0.9, y+0.07, 0.1, 0.1, fill=MUTED, shape=MSO_SHAPE.OVAL) + text(s, 1.12, y, 5.25, 0.44, t, size=10.5, color=INK, line_spacing=1.0) + +card(s, 6.75, 1.5, 6.03, 2.55) +text(s, 7.05, 1.7, 5.5, 0.35, "추진 목적 (To-Be)", size=13, color=PURPLE, bold=True) +for i, t in enumerate([ + "전시장 운영 전 과정을 AI로 자동 설계·검증하는 베뉴 운영 플랫폼 구축", + "핵심 차별화: 나노바나나(Gemini)로 시공 전 '공사 후 결과 사진' 선(先)시각화", + "설계 → 시각화 → 발주(옥션) → 시공 → 운영 → 분석의 폐루프 완성", + "KINTEX 기준 테넌트 + 코엑스 등 다중 전시관 멀티테넌트 SaaS 확장", +]): + y = 2.1 + i*0.46 + rect(s, 7.1, y+0.07, 0.1, 0.1, fill=PURPLE, shape=MSO_SHAPE.OVAL) + text(s, 7.32, y, 5.25, 0.44, t, size=10.5, color=INK, line_spacing=1.0) + +# 하단: 비전 배너 + 폐루프 +rect(s, 0.55, 4.28, 12.23, 0.62, fill=BLUE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) +text(s, 0.85, 4.28, 11.6, 0.62, + "비전 “신청서를 내는 순간, 시공 후 사진을 먼저 본다”", + size=17, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE) + +text(s, 0.55, 5.12, 6, 0.3, "전시 생애주기 폐루프", size=12, color=INK, bold=True) +loop = [("판매·기획", BLUE, "M1·M16"), ("AI 설계·시각화", PURPLE, "M2~M5"), + ("공사 옥션", BLUE, "M15"), ("시공", BLUE, "M7·M8"), + ("운영", BLUE, "M10·M14"), ("경영분석", PURPLE, "M16")] +bw = 1.83; gap = 0.19; x0 = 0.55; yb = 5.5 +for i, (lb, cl, mod) in enumerate(loop): + x = x0 + i*(bw+gap) + rect(s, x, yb, bw, 0.78, fill=(PURPLE_LT if cl==PURPLE else BLUE_LT), line=cl, line_w=1.2, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x, yb+0.1, bw, 0.34, lb, size=11.5, color=(PURPLE if cl==PURPLE else BLUE_DK), bold=True, align=PP_ALIGN.CENTER) + text(s, x, yb+0.44, bw, 0.28, mod, size=9, color=MUTED, align=PP_ALIGN.CENTER) + if i < len(loop)-1: + rect(s, x+bw+0.01, yb+0.28, gap+0.02, 0.22, fill=None) + text(s, x+bw-0.03, yb+0.16, 0.28, 0.5, "→", size=15, color=SLATE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + +# ================================================================ +# 4. 시스템 구성 (간지 + 아키텍처 도식) +# ================================================================ +divider("02", "시스템 구성", "SYSTEM ARCHITECTURE", + ["3-Tier + 나노바나나 사이드카", "역할별 6개 포털 분리", "PostGIS 공간 데이터 모델"]) + +s = slide() +content_header(s, "02 · 시스템 구성", "전체 아키텍처 개요도", 2) + +def band(y, h, fill, line, label, labelcolor): + rect(s, 0.55, y, 12.23, h, fill=fill, line=line, line_w=1.0, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + rect(s, 0.55, y, 1.55, h, fill=line, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 0.55, y, 1.55, h, label, size=10.5, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + +def node(x, y, w, h, title, sub, fill, tcol, line=None): + rect(s, x, y, w, h, fill=fill, line=(line or LINE), line_w=1.0, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x, y+0.08, w, 0.3, title, size=10, color=tcol, bold=True, align=PP_ALIGN.CENTER) + if sub: + text(s, x, y+0.36, w, 0.24, sub, size=7.8, color=MUTED, align=PP_ALIGN.CENTER) + +# Presentation tier — 포털 +band(1.5, 0.86, BLUE_LT, BLUE, "프론트\n(React)", WHITE) +ports = ["주최자 콘솔","참가업체 포털","업체 포털","운영 대시보드","관리자 백오피스","공개사이트·앱"] +pw = 1.62 +for i,p in enumerate(ports): + node(2.25+i*1.72, 1.66, pw, 0.54, p, "", WHITE, INK, BLUE) + +# API tier +band(2.55, 0.9, WHITE, BLUE_DK, "백엔드\n(Spring)", WHITE) +node(2.25, 2.72, 2.7, 0.56, "REST + WebSocket(STOMP)", "JWT·RBAC·2FA(OTP)", WHITE, INK, BLUE) +node(5.1, 2.72, 2.4, 0.56, "룰 엔진 / 배치·배선 엔진", "요율·규정·PostGIS 연산", WHITE, INK, BLUE) +node(7.65, 2.72, 2.2, 0.56, "AiTextRouter", "Claude 기본·설정형 전환", WHITE, PURPLE, PURPLE) +node(10.0, 2.72, 2.65, 0.56, "RenderJob 큐 발행", "Redis 비동기", WHITE, INK, BLUE) + +# AI / 워커 tier +band(3.62, 0.9, PURPLE_LT, PURPLE, "AI·시각화", WHITE) +node(2.25, 3.79, 4.15, 0.56, "나노바나나 Python 워커 (사이드카)", "google-genai · gemini-3.1-flash-image-preview", PURPLE_LT, PURPLE, PURPLE) +node(6.55, 3.79, 3.0, 0.56, "Claude API (AI 지능)", "설계·검수·예측 · Ollama 폴백", PURPLE_LT, PURPLE, PURPLE) +node(9.72, 3.79, 2.93, 0.56, "WebSocket 완료 푸시", "렌더 결과 실시간 통지", WHITE, INK, PURPLE) + +# Data tier +band(4.69, 0.9, HALL_BG, BLUE_DK, "데이터", WHITE) +node(2.25, 4.86, 3.3, 0.56, "PostgreSQL + PostGIS", "부스 폴리곤·트렌치·배선 LineString", WHITE, INK, BLUE_DK) +node(5.7, 4.86, 2.4, 0.56, "Redis", "작업 큐·세션·캐시", WHITE, INK, BLUE_DK) +node(8.25, 4.86, 2.05, 0.56, "오브젝트 스토리지", "렌더 이미지·문서", WHITE, INK, BLUE_DK) +node(10.45, 4.86, 2.2, 0.56, "감사로그·마스터", "룰셋·요율 버전", WHITE, INK, BLUE_DK) + +# 외부 연동 +text(s, 0.55, 5.86, 12, 0.3, "외부·기존 시스템 연동", size=10.5, color=INK, bold=True) +ext = ["kxwp 작업신고","등록업체 DB 739","행사일정 시스템","PG 결제","Gemini","사이니지/wayfinding"] +for i,e in enumerate(ext): + node(0.55+i*2.06, 6.16, 1.96, 0.5, e, "", WHITE, MUTED, LINE) + +# ================================================================ +# 5. 개발 범위 (모듈 표) +# ================================================================ +divider("03", "개발 범위", "DEVELOPMENT SCOPE", + ["코어 M2~M5 (P0)", "도메인 M1·M6~M18", "공통·시스템관리 §5B"]) + +s = slide() +content_header(s, "03 · 개발 범위", "모듈 맵 M1 ~ M18", 3) + +def module_card(x, y, w, h, code, name, pr, cl): + rect(s, x, y, w, h, fill=CARD, line=LINE, line_w=1.0, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + rect(s, x, y, w, 0.07, fill=cl, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x+0.14, y+0.14, w-0.28, 0.26, [[{"t":code+" ","size":11,"color":cl,"bold":True}, + {"t":pr,"size":8,"color":WHITE,"bold":True}]], ) + # priority chip + rect(s, x+w-0.72, y+0.13, 0.58, 0.24, fill=cl, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x+w-0.72, y+0.13, 0.58, 0.24, pr, size=8, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + text(s, x+0.14, y+0.4, w-0.28, 0.5, name, size=9.2, color=INK, line_spacing=0.95) + +# 계열별 컬럼 +groups = [ + ("설계·시각화 코어", PURPLE, [ + ("M2","플로어플랜 스튜디오","P0"), + ("M3","부스 설계 스튜디오","P0"), + ("M4","유틸리티 설계(전기·조명·네트워크)","P0"), + ("M5","나노바나나 시각화","P0"), + ]), + ("판매·발주·정산", BLUE, [ + ("M1","홀 배정·자동 견적","P1"), + ("M6","서류·마일스톤 워크플로","P1"), + ("M7","등록업체 매칭·견적","P1"), + ("M15","공사/장치 옥션(역경매)","P1"), + ("M8·M9","반입/반출 물류 · 정산·결제","P1·P2"), + ]), + ("관람·참가·마케팅", BLUE, [ + ("M10","관람객 등록·배지·리드캡처","P1"), + ("M12","마케팅·공개 홍보 사이트","P1"), + ("M11·M13","비즈매칭 · wayfinding","P2"), + ("M14","현장운영(혼잡·안전·에너지)","P2"), + ]), + ("경영·콘텐츠·관리", PURPLE, [ + ("M16","경영분석 BI(P&L·가동률·예측)","P1"), + ("M17","CMS·마이크로사이트·다국어","P1"), + ("M18","관리자 백오피스·마스터데이터","P1"), + ]), +] +cw = 2.94; gap = 0.16; x0 = 0.55 +for gi,(gname, gcolor, mods) in enumerate(groups): + x = x0 + gi*(cw+gap) + rect(s, x, 1.5, cw, 0.44, fill=gcolor, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x, 1.5, cw, 0.44, gname, size=11, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + for mi,(code,name,pr) in enumerate(mods): + y = 2.06 + mi*0.9 + module_card(x, y, cw, 0.82, code, name, pr, gcolor) + +# 범례 +text(s, 0.55, 6.62, 12, 0.3, [[ + {"t":"P0 ","size":9.5,"color":PURPLE,"bold":True},{"t":"핵심 차별화·첫 상용 필수 ","size":9.5,"color":MUTED}, + {"t":"P1 ","size":9.5,"color":BLUE,"bold":True},{"t":"운영 효율 핵심 ","size":9.5,"color":MUTED}, + {"t":"P2 ","size":9.5,"color":SLATE,"bold":True},{"t":"확장 │ 총 18개 도메인 모듈 + 공통·시스템관리 레이어(§5B)","size":9.5,"color":MUTED}, +]]) + +# 개발 범위 2 — 공통 레이어 §5B +s = slide() +content_header(s, "03 · 개발 범위", "공통 · 시스템관리 레이어 (§5B · UIWS/WISE 표준 이식)", 3) +text(s, 0.55, 1.45, 12.2, 0.4, + "GUARDiA 표준 프레임워크(UIWS)와 동일 스택 — 시스템관리·공통 업무기능·인증을 재설계 없이 이식하여 전 도메인 모듈의 선행 기반으로 정착", + size=11, color=MUTED) +# 3개 카드 영역 +def scard(x, y, w, h, title, tcolor, items): + card(s, x, y, w, h) + rect(s, x, y, w, 0.5, fill=tcolor, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x, y, w, 0.5, title, size=12.5, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + for i,it in enumerate(items): + yy = y+0.66+i*0.4 + rect(s, x+0.2, yy+0.07, 0.09, 0.09, fill=tcolor, shape=MSO_SHAPE.OVAL) + text(s, x+0.4, yy, w-0.55, 0.38, it, size=9.6, color=INK, line_spacing=0.95) + +scard(0.55, 2.0, 3.95, 4.35, "시스템관리 (M18 통합)", BLUE, [ + "사용자 관리 (6역할 + 등록업체·관람객 계정)", + "역할/권한 RBAC (플랫폼·행사 이중 평가)", + "공통코드 (홀·부스유형·공종14분류·요금)", + "메뉴 관리 (역할별 포털 IA 구동)", + "감사로그 (승인·낙찰·룰셋개정·리드접근)", + "시스템설정 (요율/규정 룰셋 버전)", + "킨텍스 마스터데이터 (홀·요율·규정·업체)", +]) +scard(4.65, 2.0, 3.95, 4.35, "공통 업무 기능", PURPLE, [ + "worklog 업무일지 · schedule 일정", + "message 쪽지 · notice 공지", + "opinion 의견 · search 통합검색", + "meeting 회의록(STT→Jasper PDF)", + "report/stats 업무보고·통계(PDF)", + "notification 알림센터(WebSocket)", + "preference 개인화(즐겨찾기·최근방문)", +]) +scard(8.75, 2.0, 4.03, 4.35, "인증 (JWT + 2FA/OTP)", BLUE_DK, [ + "JWT + RBAC 역할 게이트", + "2차 인증 OTP (TOTP RFC6238)", + "최초 QR 등록 · 재설정 · 관리자 초기화", + "로그인 실패 잠금 + 관리자 해제", + "admin 비번 env 주입 (AES-256-GCM)", + "admin123 하드코딩 시드 금지", + "TB_USER·OTP·TB_AUDIT_LOG 멱등 이식", +]) + +# ================================================================ +# 6. 추진 체계 (조직도) +# ================================================================ +divider("04", "추진 체계", "PROJECT ORGANIZATION", + ["거버넌스 (PM·개발PM·PMO)", "아키텍트 5인 (AA/SA/TA/DA/NA)", "구현·품질·배포 팀"]) + +s = slide() +content_header(s, "04 · 추진 체계", "프로젝트 조직 및 역할", 4) + +def org(x, y, w, h, title, sub, fill, tcol, line=None, big=False): + rect(s, x, y, w, h, fill=fill, line=(line or fill), line_w=1.2, shape=MSO_SHAPE.ROUNDED_RECTANGLE, shadow=big) + text(s, x, y+(0.1 if sub else 0), w, (0.32 if sub else h), title, size=(12 if big else 10.5), + color=tcol, bold=True, align=PP_ALIGN.CENTER, anchor=(MSO_ANCHOR.TOP if sub else MSO_ANCHOR.MIDDLE)) + if sub: + subcol = MUTED if fill == WHITE else WHITE + text(s, x, y+0.36, w, h-0.4, sub, size=8, color=subcol, align=PP_ALIGN.CENTER) + +# 최상위 거버넌스 +org(4.9, 1.5, 3.55, 0.72, "프로젝트 총괄 (PM)", "범위·일정·리스크·게이트(G1·G2)", BLUE, WHITE, big=True) +# 연결선 +rect(s, 6.66, 2.22, 0.02, 0.3, fill=SLATE) +# 2단: 개발PM / PMO +org(2.95, 2.55, 3.35, 0.66, "개발 PM", "WBS·스프린트·번다운·품질게이트", PURPLE, WHITE) +org(7.05, 2.55, 3.35, 0.66, "PMO", "관리표준·형상관리·QA 거버넌스·변경관리", PURPLE, WHITE) +rect(s, 6.66, 2.52, 0.02, 0.16, fill=SLATE) + +# 3단: 아키텍트 그룹 + 구현 그룹 +rect(s, 0.55, 3.5, 12.23, 0.4, fill=BLUE_LT, shape=MSO_SHAPE.ROUNDED_RECTANGLE) +text(s, 0.7, 3.5, 6, 0.4, "아키텍트 그룹", size=11, color=BLUE_DK, bold=True, anchor=MSO_ANCHOR.MIDDLE) +arch = [("AA","앱 아키텍처"),("SA","시스템·NFR"),("TA","기술표준"),("DA","데이터·ERD"),("NA","네트워크·보안")] +for i,(a,d) in enumerate(arch): + org(0.55+i*2.46, 4.0, 2.32, 0.66, a, d, WHITE, BLUE, BLUE) + +rect(s, 0.55, 4.86, 12.23, 0.4, fill=PURPLE_LT, shape=MSO_SHAPE.ROUNDED_RECTANGLE) +text(s, 0.7, 4.86, 6, 0.4, "구현 그룹", size=11, color=PURPLE, bold=True, anchor=MSO_ANCHOR.MIDDLE) +impl = [("공통/시스템","common-dev"),("백엔드","backend-dev"),("프론트","frontend-dev"), + ("DB","db-engineer"),("도메인","bidding·visitor\ncms·bi·admin"),("AI·시각화","ai-dev·visualizer")] +for i,(a,d) in enumerate(impl): + org(0.55+i*2.05, 5.36, 1.93, 0.72, a, d, WHITE, PURPLE, PURPLE) + +# 하단: 품질·배포 +org(3.4, 6.2, 3.0, 0.66, "품질 (kintex-qa)", "점진 QA·경계면·보안 불변", GREEN, WHITE) +org(6.95, 6.2, 3.0, 0.66, "배포 (devops-dev)", "CI/CD·systemd·env", RGBColor(0x2B,0x4C,0x7E), WHITE) + +# ================================================================ +# 7. 추진 일정 (간트) +# ================================================================ +divider("05", "추진 일정", "PROJECT SCHEDULE", + ["Phase A~E 마스터 일정", "완료 / 진행 / 예정 구분", "공통 레이어 선행 원칙"]) + +s = slide() +content_header(s, "05 · 추진 일정", "Phase A ~ E 마스터 일정 (WORK_STATUS 반영)", 5) + +# 상태 범례 +for i,(lb,cl) in enumerate([("완료",GREEN),("진행",AMBER),("예정",SLATE)]): + rect(s, 9.8+i*1.0, 1.42, 0.24, 0.24, fill=cl, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 10.08+i*1.0, 1.4, 0.9, 0.28, lb, size=9.5, color=INK, anchor=MSO_ANCHOR.MIDDLE) + +# 간트 좌표계 +gx = 3.55 # 바 시작 x +gw = 9.15 # 바 영역 폭 +units = 10 # 타임 단위 +uw = gw/units +# 타임 눈금 라벨 +for i in range(units+1): + text(s, gx+i*uw-0.4, 1.72, 0.8, 0.24, f"T{i}", size=7.5, color=SLATE, align=PP_ALIGN.CENTER) + rect(s, gx+i*uw, 1.98, 0.008, 4.2, fill=RGBColor(0xF0,0xF1,0xF4)) + +rows = [ + ("Phase A", "아키텍처·거버넌스 (AA/SA/TA/DA/NA)", 0, 1.5, GREEN, "완료"), + ("Phase B", "공통·시스템관리 레이어 (2FA/OTP·공통기능)", 1.2, 2.0, GREEN, "완료"), + ("Phase C", "P0 부스 코어 M2~M5 (배치·설계·배선·시각화)", 2.6, 2.6, AMBER, "진행"), + ("Phase C", " ├ 스캐폴드·인증·매퍼 배선·룰엔진·나노바나나", 2.6, 1.6, GREEN, "완료"), + ("Phase C", " └ 3안 생성·병합·실데이터 전환·모바일", 4.2, 1.4, AMBER, "진행"), + ("Phase D", "P1 도메인 — 옥션 M15·관람객 M10", 4.8, 1.9, SLATE, "예정"), + ("Phase D", "P1 도메인 — CMS/공개사이트 M12·M17·BI M16·관리자 M18", 5.4, 2.2, SLATE, "예정"), + ("Phase D", "P1 배정·서류·매칭·정산 M1·M6·M7·M9", 5.8, 1.8, SLATE, "예정"), + ("Phase E", "P2 확장 (매칭 M11·wayfinding M13·현장운영 M14)", 7.2, 1.6, SLATE, "예정"), + ("Phase E", "빌드·배포 (역할별 번들·CI/CD·멀티테넌시)", 7.6, 2.2, AMBER, "진행"), +] +ry = 2.12 +rh = 0.42 +for i,(ph, name, start, dur, cl, st) in enumerate(rows): + y = ry + i*rh + if i % 2 == 0: + rect(s, 0.55, y-0.02, 12.23, rh-0.02, fill=RGBColor(0xFC,0xFC,0xFD)) + text(s, 0.6, y, 0.85, rh-0.06, ph, size=8.5, color=BLUE_DK, bold=True, anchor=MSO_ANCHOR.MIDDLE) + text(s, 1.45, y, 2.05, rh-0.06, name, size=8.2, color=INK, anchor=MSO_ANCHOR.MIDDLE) + bx = gx + start*uw + bw = max(dur*uw, 0.3) + rect(s, bx, y+0.06, bw, rh-0.18, fill=cl, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, bx, y+0.04, bw, rh-0.14, st, size=7.5, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + +# 현재 시점 마커 +nowx = gx + 4.9*uw +rect(s, nowx, 1.98, 0.02, 4.2, fill=PURPLE) +text(s, nowx-0.5, 6.2, 1.0, 0.24, "현재", size=8, color=PURPLE, bold=True, align=PP_ALIGN.CENTER) + +text(s, 0.55, 6.55, 12.2, 0.3, + "원칙 Phase B(공통 레이어)는 전 도메인 선행 기반 — 인증·시스템관리·공통기능 정착 후 코어/도메인 착수. 각 모듈 완성 직후 점진 QA.", + size=9, color=MUTED) + +# ================================================================ +# 8. 개발 방법론·품질 +# ================================================================ +divider("06", "개발 방법론 · 품질관리", "METHODOLOGY & QUALITY", + ["에이전트 파이프라인", "점진 QA · 보안 불변 게이트", "CI/CD 자동배포"]) + +s = slide() +content_header(s, "06 · 개발 방법론 · 품질관리", "에이전트 파이프라인 · 점진 QA · CI/CD", 6) + +# 파이프라인 +text(s, 0.55, 1.5, 8, 0.3, "① 에이전트 기반 개발 파이프라인", size=12, color=BLUE, bold=True) +pipe = [("기획","planner",PURPLE),("설계","AA/SA/TA/DA/NA",BLUE),("디자인","designer",PURPLE), + ("구현","backend·frontend·db·domain",BLUE),("검증","kintex-qa",GREEN),("배포","devops-dev",BLUE_DK)] +pw2 = 1.9; g2 = 0.14 +for i,(t,d,cl) in enumerate(pipe): + x = 0.55+i*(pw2+g2) + rect(s, x, 1.9, pw2, 0.74, fill=WHITE, line=cl, line_w=1.3, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x, 1.98, pw2, 0.3, t, size=11, color=cl, bold=True, align=PP_ALIGN.CENTER) + text(s, x, 2.3, pw2, 0.3, d, size=7.6, color=MUTED, align=PP_ALIGN.CENTER) + if i < len(pipe)-1: + text(s, x+pw2-0.05, 1.9, 0.24, 0.74, "›", size=16, color=SLATE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + +# ② 점진 QA +card(s, 0.55, 2.95, 6.05, 2.05) +text(s, 0.8, 3.12, 5.5, 0.3, "② 점진 QA — 모듈 완성 직후 검증", size=12, color=PURPLE, bold=True) +for i,t in enumerate([ + "백엔드 응답 shape ↔ 프론트 훅/컴포넌트 호출 경계면 교차 비교", + "공간 로직(배치·배선·규정검증) 정합 · PostGIS 연산 검증", + "보안 불변: 자격증명·PII·스택트레이스 미노출 강제", + "AI 생성 이미지 워터마크·고지 강제 · 등록업체 응찰 게이트", + "빌드 회귀(compileJava·tsc) · 통과까지 반려", +]): + y=3.5+i*0.29 + rect(s, 0.85, y+0.06, 0.09, 0.09, fill=GREEN, shape=MSO_SHAPE.OVAL) + text(s, 1.05, y, 5.4, 0.28, t, size=9.3, color=INK) + +# ③ CI/CD +card(s, 6.75, 2.95, 6.03, 2.05) +text(s, 7.0, 3.12, 5.5, 0.3, "③ CI/CD 자동배포 파이프라인", size=12, color=BLUE, bold=True) +cicd = ["push","Gitea webhook","deploy_kintex.sh","백엔드 bootJar + 프론트 Vite 빌드","배포 → health check","실패 시 롤백"] +for i,c in enumerate(cicd): + y=3.5+i*0.245 + rect(s, 7.05, y, 0.28, 0.2, fill=BLUE, shape=MSO_SHAPE.OVAL) + text(s, 7.06, y-0.01, 0.28, 0.22, str(i+1), size=8, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + text(s, 7.45, y-0.02, 5.2, 0.24, c, size=9.3, color=INK, anchor=MSO_ANCHOR.MIDDLE) + +# 하단 지표 스트립 +metrics = [("18","도메인 모듈"),("6","역할별 포털"),("39+","Flyway 테이블(현재)"),("A~E","5개 Phase"),("3-Tier","+ AI 사이드카")] +mw=2.34 +for i,(v,l) in enumerate(metrics): + x=0.55+i*(mw+0.09) + rect(s, x, 5.2, mw, 0.95, fill=BLUE if i%2==0 else PURPLE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x, 5.34, mw, 0.5, v, size=26, color=WHITE, bold=True, align=PP_ALIGN.CENTER) + text(s, x, 5.86, mw, 0.26, l, size=9.5, color=WHITE, align=PP_ALIGN.CENTER) +text(s, 0.55, 6.5, 12.2, 0.3, + "AI 지능 = Claude 기본 + 설정형 전환(AiTextRouter/AiConfig) · Ollama 폴백 │ 이미지 = 나노바나나(Gemini) 라이브", + size=9, color=MUTED) + +# ================================================================ +# 9. 보안·NFR +# ================================================================ +divider("07", "보안 · 비기능요건", "SECURITY & NFR", + ["외부 API 통제 (예외 명시)", "자격증명 보호 · AI 워터마크", "접근성·다국어·테마"]) + +s = slide() +content_header(s, "07 · 보안 · 비기능요건(NFR)", "보안 불변 원칙 및 품질 속성", 7) + +# 보안 불변 (좌) +card(s, 0.55, 1.5, 6.05, 3.05) +rect(s, 0.55, 1.5, 6.05, 0.5, fill=BLUE_DK, shape=MSO_SHAPE.ROUNDED_RECTANGLE) +text(s, 0.55, 1.5, 6.05, 0.5, "보안 불변 (Security Invariants)", size=13, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) +sec = [ + ("외부 API 통제","온프레미스 원칙 · 예외 = Claude(승인)·Gemini(G1). 키는 서버 env 로드, 코드·커밋·로그 미기재"), + ("자격증명 보호","IP·SSH계정·비밀번호를 API 응답·에러메시지에 미노출"), + ("암호화 저장","민감 자격증명 AES-256-GCM · admin 비번 env 주입(admin123 금지)"), + ("AI 이미지 고지","나노바나나 생성 전 이미지 워터마크·실물 상이 고지 강제"), + ("에러 응답","스택트레이스 미노출 — 요약 메시지만 전달"), +] +for i,(h,d) in enumerate(sec): + y=2.15+i*0.47 + rect(s, 0.8, y+0.04, 0.11, 0.11, fill=BLUE, shape=MSO_SHAPE.OVAL) + text(s, 1.02, y, 5.45, 0.44, [[{"t":h+" — ","size":9.6,"color":INK,"bold":True}, + {"t":d,"size":9,"color":MUTED}]], line_spacing=0.95) + +# NFR (우) +card(s, 6.75, 1.5, 6.03, 3.05) +rect(s, 6.75, 1.5, 6.03, 0.5, fill=PURPLE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) +text(s, 6.75, 1.5, 6.03, 0.5, "비기능요건 (NFR)", size=13, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) +nfr = [ + ("웹 접근성","WCAG 준수 · 키보드·스크린리더 대응"), + ("다국어(i18n)","한 · 영 · 중 · 일 (공개사이트·CMS 우선)"), + ("라이트/다크 테마","전 화면 테마 토큰 · 반응형 풀스크린"), + ("반응형 채널 분리","데스크톱=설계/에디터 · 모바일=현장/조회/승인"), + ("성능·확장","Redis 비동기 큐 · 렌더 워커 사이드카 분리"), + ("멀티테넌시 격리","tenant_id 전파 · 전시관 단위 데이터·권한 격리"), +] +for i,(h,d) in enumerate(nfr): + y=2.15+i*0.4 + rect(s, 7.0, y+0.04, 0.11, 0.11, fill=PURPLE, shape=MSO_SHAPE.OVAL) + text(s, 7.22, y, 5.4, 0.38, [[{"t":h+" — ","size":9.6,"color":INK,"bold":True}, + {"t":d,"size":9,"color":MUTED}]], line_spacing=0.95) + +# 하단: 3중 권한 구조 +rect(s, 0.55, 4.78, 12.23, 0.42, fill=INK, shape=MSO_SHAPE.ROUNDED_RECTANGLE) +text(s, 0.55, 4.78, 12.23, 0.42, "3중 권한 구조 테넌트(전시관) 격리 ⊃ 행사(Event) 워크스페이스 ⊃ 행사 RBAC", + size=11.5, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) +# 인증 요약 3칩 +for i,(t,d,cl) in enumerate([("JWT + RBAC","6역할 게이트",BLUE),("2FA / OTP","TOTP RFC6238",PURPLE), + ("감사로그","전수 기록·개인정보 접근",BLUE_DK)]): + x=0.55+i*4.11 + rect(s, x, 5.4, 3.97, 0.72, fill=WHITE, line=cl, line_w=1.3, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x+0.2, 5.5, 3.7, 0.3, t, size=12, color=cl, bold=True) + text(s, x+0.2, 5.82, 3.7, 0.26, d, size=9.5, color=MUTED) + +# ================================================================ +# 10. 리스크 및 대응 +# ================================================================ +divider("08", "리스크 및 대응", "RISK MANAGEMENT", + ["기술·데이터·연동 리스크", "영향도·발생가능성 평가", "완화 방안"]) + +s = slide() +content_header(s, "08 · 리스크 및 대응", "주요 리스크 및 대응 방안", 8) + +# 표 헤더 +hx=[0.55, 1.3, 5.9, 8.0] # 구분/리스크/영향/대응 시작 +cols = [(0.55,0.75,"구분"),(1.3,4.6,"리스크"),(5.9,2.1,"영향"),(8.0,4.78,"대응 방안")] +rect(s, 0.55, 1.5, 12.23, 0.44, fill=BLUE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) +for x,w,h in cols: + text(s, x+0.12, 1.5, w-0.15, 0.44, h, size=10.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE) + +risks = [ + ("기술","나노바나나 생성 이미지가 실제 시공과 상이","높음",AMBER,"전 이미지 워터마크·고지 강제, 참조이미지 구조보존 파이프라인, 검수 단계"), + ("데이터","홀 실측 CAD·트렌치 좌표 미확보","높음",AMBER,"확보 자산(평면도 15장+CAD) 활용, 미확보 시 공개규격 근사도면으로 Phase 진행"), + ("연동","kxwp 내부 API 미공개(폐쇄형)","중간",SLATE,"초기 제출용 파일 생성+업로드 안내 릴레이, 연동은 킨텍스 협의 후"), + ("보안","외부 API 호출·자격증명 노출","높음",AMBER,"Claude·Gemini만 예외 승인, env 로드·미커밋, 응답 미노출, 감사로그"), + ("규정","소방·구조 최종 유권해석은 시스템 밖","중간",SLATE,"AI는 사전 필터(위반 플래깅)까지, 최종 판정은 관할기관·구조기술사"), + ("일정","공통 레이어 지연 시 도메인 착수 지연","중간",SLATE,"Phase B 선행 완료(현재 완료), 모듈 병렬화·점진 QA로 흡수"), + ("시장","옥션 업체 참여율·응찰 품질 불확실","중간",SLATE,"등록업체 DB 검증 게이트, AI 자료 기반 동일사양 비교로 참여 유인"), +] +ry=1.98; rh=0.56 +for i,(g,r,imp,impc,resp) in enumerate(risks): + y=ry+i*rh + if i%2==0: + rect(s, 0.55, y, 12.23, rh, fill=RGBColor(0xFC,0xFC,0xFD)) + rect(s, 0.55, y, 12.23, 0.01, fill=LINE) + text(s, 0.67, y, 0.7, rh, g, size=9.5, color=BLUE_DK, bold=True, anchor=MSO_ANCHOR.MIDDLE) + text(s, 1.42, y, 4.4, rh, r, size=9.5, color=INK, anchor=MSO_ANCHOR.MIDDLE) + rect(s, 5.9, y+0.16, 0.95, 0.24, fill=impc, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 5.9, y+0.15, 0.95, 0.26, imp, size=8.5, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + text(s, 8.0, y, 4.7, rh, resp, size=8.8, color=MUTED, anchor=MSO_ANCHOR.MIDDLE, line_spacing=0.92) + +# ================================================================ +# 11. 기대 효과 +# ================================================================ +divider("09", "기대 효과", "EXPECTED BENEFITS", + ["정량 효과 (리드타임)", "정성 효과 (의사결정·투명성)", "확장 로드맵"]) + +s = slide() +content_header(s, "09 · 기대 효과", "정량 · 정성 기대 효과", 9) + +text(s, 0.55, 1.48, 8, 0.3, "정량 효과 — 리드타임 단축", size=12.5, color=BLUE, bold=True) +quant = [ + ("홀 배정 견적","수일","즉시"), + ("배치도 초안","수일~수주","수 분"), + ("규정 검수","육안 검토","자동 플래깅"), + ("유틸리티 신청","수기 작도","클릭 + 자동견적"), + ("시공 결과 예측","불가(외주)","표준 샷 자동생성"), +] +qw=2.4 +for i,(k,a,b) in enumerate(quant): + x=0.55+i*(qw+0.06) + card(s, x, 1.85, qw, 1.85) + text(s, x, 2.0, qw, 0.3, k, size=10, color=INK, bold=True, align=PP_ALIGN.CENTER) + rect(s, x+0.3, 2.34, qw-0.6, 0.02, fill=LINE) + text(s, x, 2.42, qw, 0.26, "As-Is", size=7.5, color=SLATE, align=PP_ALIGN.CENTER) + text(s, x, 2.62, qw, 0.3, a, size=10.5, color=MUTED, align=PP_ALIGN.CENTER) + text(s, x, 2.98, qw, 0.24, "↓", size=12, color=PURPLE, bold=True, align=PP_ALIGN.CENTER) + text(s, x, 3.2, qw, 0.3, b, size=11, color=BLUE, bold=True, align=PP_ALIGN.CENTER) + +text(s, 0.55, 3.95, 8, 0.3, "정성 효과", size=12.5, color=PURPLE, bold=True) +qual = [ + ("의사결정 가속","도면을 읽지 못해도 사진 수준 시각화로 주최자·참가업체 의사결정"), + ("영업 자료화","완공 예상 이미지로 참가업체 유치·컨펌 커뮤니케이션 비용 절감"), + ("가격 투명화","옥션 역경매로 동일 사양 위 공정 비교 → 시공 발주 투명·최적화"), + ("데이터 일원화","공간 데이터(PostGIS) 단일 원천에서 검증·시각화·정산·BI·wayfinding"), +] +for i,(h,d) in enumerate(qual): + x=0.55+(i%2)*6.15 + y=4.32+(i//2)*0.66 + card(s, x, y, 6.05, 0.58) + rect(s, x, y, 0.08, 0.58, fill=PURPLE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x+0.24, y+0.08, 5.7, 0.28, h, size=10.5, color=INK, bold=True) + text(s, x+0.24, y+0.34, 5.7, 0.22, d, size=8.6, color=MUTED) + +# 확장 로드맵 +rect(s, 0.55, 5.78, 12.23, 0.44, fill=BLUE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) +text(s, 0.7, 5.78, 4, 0.44, "확장 로드맵", size=11, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE) +road = ["KINTEX 기준 운영","코엑스 등 다중 전시관 온보딩","전시테크 SaaS 사업화","kxwp·PG·사이니지 정식 연동"] +for i,r in enumerate(road): + text(s, 2.6+i*2.55, 5.78, 2.5, 0.44, "› "+r, size=9.3, color=WHITE, anchor=MSO_ANCHOR.MIDDLE) + +text(s, 0.55, 6.4, 12.2, 0.5, + "종합 “신청서를 내는 순간 시공 후 사진을 먼저 본다” — 설계·시각화·발주·운영·분석 폐루프를 하나의 데이터·계정 체계로 자동화하여 킨텍스를 전시 운영 표준 플랫폼으로 전환", + size=10, color=INK, bold=True, line_spacing=1.0) + +# ================================================================ +# 저장 +# ================================================================ +OUT = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "개발계획서.pptx") +prs.save(OUT) +print("SAVED:", OUT) +print("SLIDES:", len(prs.slides._sldIdLst)) diff --git a/docs/deliverables/_gen/gen_docx.py b/docs/deliverables/_gen/gen_docx.py new file mode 100644 index 0000000..36e4842 --- /dev/null +++ b/docs/deliverables/_gen/gen_docx.py @@ -0,0 +1,337 @@ +# -*- coding: utf-8 -*- +""" +사업수행계획서(.docx) — 행안부 정보화사업 산출물 표준 목차 준용. +데이터 소스: sources.py(PLANNING·IMPLEMENTATION_BACKLOG·FEATURE_BACKLOG_100 파싱). +소스 문서 갱신 시 본 스크립트 재실행만으로 결정적 재생성. +보안: 서버 IP·비밀번호·SSH·시크릿 미기재. +""" +import os +from docx import Document +from docx.shared import Pt +from docx.enum.text import WD_ALIGN_PARAGRAPH +import sources as S +from _docxutil import setup, h, para, bullets, table, NAVY, ACCENT, GREY + +OUT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "사업수행계획서.docx")) +doc = Document(); setup(doc) +M = S.META +CA = WD_ALIGN_PARAGRAPH.CENTER + +# ---------- 표지 ---------- +for _ in range(4): doc.add_paragraph() +para(doc, f"{M['project_en']} — 사업수행계획서", size=13, color=ACCENT, align=CA, space_after=4) +p = doc.add_paragraph(); p.alignment = CA +r = p.add_run(M["title"]); r.bold = True; r.font.size = Pt(24); r.font.color.rgb = NAVY +doc.add_paragraph() +para(doc, M["std"], size=11, color=GREY, align=CA) +for _ in range(6): doc.add_paragraph() +table(doc, ["구분","내용"], + [["문서명", M["title"]],["문서 버전", M["version"]],["작성일", M["date"]], + ["작성 주관", M["owner"]],["발주처(수요기관)", M["client"]], + ["사업 유형","정보시스템 구축(SI) — AI 기반 전시 운영 자동화 플랫폼"], + ["보안 등급","대외비 — 자격증명·내부망 정보 미기재"]], + widths=[4.5, 11.5], first_col_bold=True) +doc.add_page_break() + +# ---------- 문서정보 / 개정이력 / 목차 ---------- +h(doc,1,"문서 정보 및 개정 이력") +h(doc,2,"문서 정보") +table(doc, ["항목","내용"], + [["문서 제목", M["title"]],["산출 단계","사업 착수(계획) 단계 표준 산출물"], + ["표준 근거", M["std"]], + ["작성 근거 문서","PLANNING v3.0 · IMPLEMENTATION_BACKLOG · FEATURE_BACKLOG_100 · GUARDIA_ALIGNMENT · SECURITY · architecture/*"], + ["문서 관리","형상관리(Git) 하 버전 통제 — docs/deliverables/ 관리, _gen 재실행으로 재생성"]], + widths=[4.5, 11.5], first_col_bold=True) +h(doc,2,"개정 이력") +table(doc, ["버전","일자","작성/개정자","주요 변경 내용"], + [[M["version"], M["date"], "사업 PMO", "사업수행계획서 최초 작성(표준 목차 14장 체계)"]], + widths=[2.0, 3.0, 3.5, 7.5]) +para(doc, "※ 본 계획서는 사업 진척에 따라 형상관리 절차(14장)에 의거 개정하며, 모든 변경은 개정 이력에 기록한다.", + size=9, italic=True, color=GREY) +h(doc,2,"목차") +for t_ in ["1. 사업 개요","2. 사업 범위","3. 추진 전략 및 개발 방법론","4. 추진 체계·조직 및 역할(R&R)", + "5. WBS 및 마스터 일정","6. 투입 인력 및 투입 계획(M/M)","7. 품질보증 계획","8. 보안 및 개인정보보호 계획", + "9. 시험(테스트) 계획 개요","10. 이관·교육·유지보수 계획","11. 위험(리스크) 관리","12. 의사소통·보고 체계", + "13. 산출물 목록","14. 형상관리"]: + pp = doc.add_paragraph(t_); pp.paragraph_format.space_after = Pt(2); pp.runs[0].font.size = Pt(10.5) +doc.add_page_break() + +# ---------- 1. 사업 개요 ---------- +h(doc,1,"1. 사업 개요") +h(doc,2,"1.1 추진 배경") +para(doc,"킨텍스는 총 전시면적 108,011㎡(국내 최대, 제3전시장 완공 시 약 178,000㎡)를 운영하지만, 전시 준비 실무는 여전히 " + "표준 서식 다운로드 후 이메일·방문 제출, CAD 수작업 배치도의 육안 검수, 수기 위치표시도 기반 유틸리티 신청에 머물러 있다. " + "참가업체 유틸리티 신청은 킨텍스 공통 플랫폼 없이 전시회별 주최자 사무국 시스템으로 파편화되어 있다.") +para(doc,"공간 데이터(배치도·도면·위치표시도)가 전부 이미지·수기로 오가며 구조화되지 않아 자동 검증·시각화·정산의 원천 데이터가 부재하고, " + "D-150/D-30/D-25/D-7 마일스톤이 시스템화되어 있지 않으며, 시공 결과를 사전에 확인할 수단이 없다는 구조적 공백이 확인되었다.") +h(doc,2,"1.2 사업 목적") +bullets(doc,[ + "전시장 운영 전 과정(홀 배정→부스 배치→장치공사 설계→전기/조명→네트워크/유틸리티 배선→반입/반출)을 AI로 자동 설계·검증한다.", + "AI 설계 결과를 나노바나나(이미지 생성)로 '시공 후 결과 사진'처럼 시공 전에 미리 생성하여 사진 수준 시각화를 제공한다.", + "기획·판매·시공·운영·관람객·사후분석 전 주기를 하나의 공간 데이터·계정 체계로 통합한 베뉴 운영 플랫폼을 구축한다.", + "AI 설계·시각화 산출물을 공사/장치 옥션(역경매)의 응찰 근거로 소비하여 설계→시각화→발주→시공 폐루프를 완성한다.", +]) +h(doc,2,"1.3 비전 및 정체성") +para(doc,'비전 슬로건: "신청서를 내는 순간, 시공 후 사진을 먼저 본다."', bold=True, color=ACCENT) +para(doc,"본 시스템은 킨텍스를 기준 테넌트(#1)로 하되 코엑스 등 여타 전시관을 온보딩하는 다중 전시관 멀티테넌트 SaaS로 확장 가능한 구조로 설계한다. " + "기능(모듈)은 전부 보존하고 그 위에 전시관 단위 데이터·권한·컨텍스트 격리 레이어를 얹는다.") +h(doc,2,"1.4 정량 목표(As-Is → To-Be)") +table(doc, ["목표 지표","현재(As-Is)","목표(To-Be)"], + [["홀 배정 견적 회신","문의→협의→견적 수일","조건 입력 후 즉시 자동 가견적"], + ["부스 배치도 초안","CAD 수작업 수일~수주","조건 입력 후 수 분 내 복수 안 생성"], + ["도면 규정 검수","홀매니저 육안 검토","규정 위반 자동 플래깅 후 사람 확정"], + ["유틸리티 위치표시도","참가업체 수기 작도","부스 좌표 클릭 → 자동 배선안·자동 견적"], + ["시공 결과 예측","불가(외주 조감도)","표준 샷 세트 자동 생성(정면/야간/통로)"]], + widths=[4.5, 5.5, 6.0]) +h(doc,2,"1.5 기대 효과") +bullets(doc,[ + "참가업체·주최자의 의사결정 가속 및 참가업체 유치 영업 자료 확보(시공 예상 이미지 기반).", + "규정 위반 사전 검출로 도면 반려 재작업 감소 및 홀매니저 검수 시간 단축.", + "'현장 추가신청 불가' 유틸리티의 신청 누락 방지 — 참가업체 최대 리스크 제거.", + "역경매 옥션을 통한 시공 발주 가격 최적화·투명화(동일 사양 위 공정 비교).", + "공간 데이터 표준화로 자동 검증·시각화·정산·wayfinding·경영분석의 단일 원천 확보.", +]) + +# ---------- 2. 사업 범위 (모듈: sources.modules) ---------- +h(doc,1,"2. 사업 범위") +h(doc,2,"2.1 대상 시스템 및 모듈") +para(doc,f"본 사업은 설계·시각화 코어(P0), 판매·발주·정산, 관람·참가·마케팅, 경영·콘텐츠·관리 계열의 총 {len(S.modules())}개 모듈과 " + "공통·시스템관리 레이어(UIWS/WISE 이식)로 구성된다. (모듈 목록은 PLANNING 총괄표에서 자동 추출)") +mod_rows = [[mid, name, pri] for (mid, name, pri) in S.modules()] +table(doc, ["모듈","명칭","우선순위"], mod_rows, widths=[2.2, 11.3, 2.5]) +h(doc,2,"2.2 우선순위 정의") +bullets(doc,[ + "P0 — 핵심 차별화 + 첫 상용 행사 적용 필수(부스 시공 코어 M2~M5).", + "P1 — 운영 효율 핵심(판매·발주·정산·관람·마케팅·경영분석·관리자·공통 레이어).", + "P2 — 확장(물류·비즈매칭·wayfinding·현장운영).", +]) +h(doc,2,"2.3 범위 제외(Non-Goals)") +bullets(doc,[ + "킨텍스 임대계약의 법적 전자체결은 후속 단계 검토 — 초기에는 견적·서류 준비까지.", + "구조계산서의 구조 안전성 최종 판정은 AI가 대신하지 않는다(규정 체크·누락 검출까지, 최종 판정은 구조기술사/킨텍스).", + "AI 생성 시각화는 참고용이며 계약·인허가 서류로 사용 불가(워터마크·고지 강제).", + "신규 전시관 온보딩은 마스터데이터 입력 수준까지 — 고유 규정 파서 자동 생성 제외.", + "정밀 실내 측위(UWB/BLE 비콘)는 시설 인프라 협의 전제 — 초기에는 존-레벨 폴백.", +]) + +# ---------- 3. 추진 전략·방법론 ---------- +h(doc,1,"3. 추진 전략 및 개발 방법론") +h(doc,2,"3.1 기본 추진 전략") +bullets(doc,[ + "공통 레이어 선행: 인증(JWT+2FA)·시스템관리·공통 업무기능을 전 도메인 모듈보다 선행 구축.", + "코어 우선: 핵심 차별화 P0 부스 시공 코어(M2~M5)를 우선 확보하여 첫 상용 행사에 적용.", + "단일 공간 데이터 모델: M2→M3→M4→M5가 하나의 PostGIS 지오메트리를 공유.", + "폐루프 완성: 코어 산출물을 M15 옥션 응찰 근거로 소비하여 설계→시각화→발주→시공 종결.", + "표준 프레임워크 준수: GUARDiA 표준(UIMS/WISE) 스택·인증·공통모듈·보안·배포를 상속하고 도메인만 확장.", +]) +h(doc,2,"3.2 개발 방법론") +para(doc,"반복·점진(Iterative & Incremental) 방식. Phase A~E 단계 위에서 각 모듈은 설계→구현→모듈 완성 직후 점진 QA→통합의 짧은 반복을 수행하며, " + "QA가 경계면·회귀·보안 불변을 검증하고 통과할 때까지 반려한다.") +ph = S.phases() +table(doc, ["단계","성격","핵심 활동"], + [[f"Phase {p[0]}", p[1], " · ".join(t[1] for t in p[2][:3]) + (" 등" if len(p[2])>3 else "")] for p in ph], + widths=[2.4, 4.6, 9.0]) +h(doc,2,"3.3 기술 아키텍처(확정 스택)") +table(doc, ["레이어","기술","비고"], + [["프론트엔드","React 18/19 + Vite + TypeScript","역할별 포털 번들 분리(데스크톱=설계, 모바일=현장·조회)"], + ["백엔드","Spring Boot 3.x(Java 17) + MyBatis","REST + WebSocket(STOMP), 룰·배치/배선 엔진"], + ["데이터베이스","PostgreSQL + PostGIS","부스 폴리곤·트렌치 포인트·배선 LineString 공간 데이터"], + ["비동기","Redis 작업 큐","RenderJob·서류·알림 비동기 처리"], + ["이미지 생성","나노바나나 Python 워커(사이드카)","백엔드는 큐 발행만, 생성 키는 워커 env 전용"], + ["AI(텍스트)","Claude 기본 + 설정형 전환(AiTextRouter)","실패 시 온프레미스 모델 자동 폴백"], + ["형상/배포","Git(Gitea)+CI/CD Webhook+systemd/nginx","무중단·헬스게이트·롤백(Fail-Safe)"]], + widths=[2.8, 6.2, 7.0]) +para(doc, f"개발 도메인은 서비스명 수준으로 {M['dev_domain']}을 사용하며, 운영 도메인은 후속 확정한다.", size=9, italic=True, color=GREY) + +# ---------- 4. 추진 체계·조직·역할 ---------- +h(doc,1,"4. 추진 체계·조직 및 역할(R&R)") +h(doc,2,"4.1 추진 체계") +para(doc,"발주처(킨텍스)—사업 총괄(PMO)—아키텍트 그룹—개발 그룹(공통·코어·도메인)—품질(QA)·배포(DevOps)의 계층으로 구성한다. " + "AI 에이전트 팀(kintex-impl-orchestrator)이 각 트랙 구현을 조율하며, 기획(planner)·디자인(designer)·검증(reviewer)을 경유한다.") +h(doc,2,"4.2 조직 및 역할(R&R)") +table(doc, ["그룹","역할","주요 책임(R&R)"], + [["거버넌스","PMO / 사업 PM","일정·범위·리스크·이해관계자 관리, 발주처 보고, 형상·품질 총괄"], + ["아키텍트","AA(애플리케이션)","모듈 경계·레이어·API 표준·패키지·의존성 규칙"], + ["아키텍트","SA(시스템)","확장성·HA·성능·배포 토폴로지·비기능요건(NFR)"], + ["아키텍트","TA(기술)","기술 표준·빌드/배포·개발 표준·관측성·AiTextRouter"], + ["아키텍트","DA(데이터)","전사 ERD·공간데이터·마스터·공통코드·BI 데이터마트"], + ["아키텍트","NA(네트워크)","DMZ/내부망 분리·방화벽·부하분산·공개/백오피스 망 분리"], + ["공통","공통/시스템관리 개발","인증(2FA)·시스템관리·공통 업무기능(UIWS 이식)"], + ["코어","백엔드 개발","M1~M9 REST/WebSocket·룰 엔진·배선 엔진(PostGIS)"], + ["코어","프론트엔드 개발","역할별 포털 화면·플로어플랜 캔버스·Before/After 뷰"], + ["코어","DB 엔지니어","PostGIS 스키마·마이그레이션·매퍼·마스터 시드"], + ["AI·시각화","AI 개발","배치 자동생성·규정검증 보조·매칭·서류검수·챗봇(Claude)"], + ["AI·시각화","시각화(visualizer)","나노바나나 프롬프트·워커·워터마크 강제"], + ["도메인","옥션/관람객/CMS/BI/관리자 개발","M15/M10/M12·M17/M16/M18 도메인 구현"], + ["품질·배포","QA","경계면·회귀·보안 불변 점진 검증(통과까지 반려)"], + ["품질·배포","DevOps","빌드·CI/CD·systemd/nginx·환경변수 배선"]], + widths=[2.2, 4.0, 9.8]) + +# ---------- 5. WBS·마스터 일정 (sources.phases + SCHEDULE) ---------- +h(doc,1,"5. WBS 및 마스터 일정") +h(doc,2,"5.1 작업 분해 구조(WBS) 개요") +para(doc,"WBS는 Phase A~E의 5개 단계와 하위 작업 패키지로 구성한다(IMPLEMENTATION_BACKLOG에서 자동 추출). " + "상세 작업 분해·담당·의존·기간은 별첨 [WBS_및_일정.xlsx]의 'WBS' 시트에 관리한다.") +table(doc, ["Phase","작업 패키지(대표)","완료 기준(대표)"], + [[f"{p[0]}. {p[1]}", " / ".join(t[1] for t in p[2][:3]), p[2][0][3] if p[2] else ""] for p in ph], + widths=[3.6, 8.0, 4.4]) +h(doc,2,"5.2 마스터 일정 및 마일스톤") +para(doc,"총 사업 기간은 약 28주(7개월) 기준이며, 착수 시점 확정 후 절대 일정을 확정한다(아래는 착수일 기준 상대 주차).") +table(doc, ["Phase","시작","종료","주요 마일스톤"], + [[f"{r_[0]}. {r_[1]}", r_[2], r_[3], r_[4]] for r_ in S.SCHEDULE], + widths=[4.2, 1.8, 1.8, 8.2]) +para(doc,"※ Phase B는 Phase A와 일부 병행 착수하며, Phase B(공통 레이어) 완료가 Phase C/D 도메인 착수의 선행 전제이다.", + size=9, italic=True, color=GREY) + +# ---------- 6. 투입 인력 (sources.STAFFING) ---------- +h(doc,1,"6. 투입 인력 및 투입 계획(M/M)") +h(doc,2,"6.1 투입 인력 계획") +para(doc,"역할별 투입 인력과 단계별 투입 공수(M/M)는 아래와 같다. 상세는 별첨 [WBS_및_일정.xlsx]의 '투입인력계획' 시트에 관리한다.") +table(doc, ["역할","인원(명)","등급","주 투입 Phase","투입 공수(M/M)"], + [list(x) for x in S.STAFFING], widths=[5.5, 2.0, 2.0, 2.8, 3.7]) +total_mm = sum(float(x[4]) for x in S.STAFFING) +total_head = sum(int(x[1]) for x in S.STAFFING) +para(doc, f"합계(계획): 인원 약 {total_head}명(중복 참여 포함), 총 투입 공수 약 {total_mm:.1f} M/M(추정치, 착수 시 상세 산정).", + bold=True, size=10, color=NAVY) +h(doc,2,"6.2 투입 원칙") +bullets(doc,[ + "Phase B(공통 레이어)에 개발 인력을 선집중하여 전 도메인 기반을 조기 확보.", + "아키텍트는 Phase A에 집중 투입 후 각 Phase 착수 시 표준 준수를 검수.", + "QA는 전 Phase 상시 배치하여 모듈 완성 직후 점진 검증을 수행.", +]) + +# ---------- 7. 품질보증 ---------- +h(doc,1,"7. 품질보증 계획") +h(doc,2,"7.1 품질 목표 및 기준") +bullets(doc,[ + "기능 품질: 모듈별 완료 기준(WBS) 충족, 경계면(API 응답 shape↔프론트 호출) 불일치 0.", + "코드 품질: 표준 프레임워크·아키텍처 표준 준수, 정적 분석·코드 리뷰 통과.", + "회귀 품질: 스모크/회귀 테스트로 기존 기능 무회귀 보장.", + "보안 품질: 보안 불변 규칙(8장) 위반 0 — 위반 시 반려 사유.", +]) +h(doc,2,"7.2 품질보증 활동") +table(doc, ["활동","시점","담당","산출"], + [["아키텍처 정합 검증","Phase A 종료","reviewer","불일치 티켓·시정 확인"], + ["점진 QA(모듈 완성 직후)","각 모듈 완성","QA","경계면·회귀·보안 검증 결과"], + ["코드 리뷰","커밋/PR","개발 리드","리뷰 코멘트·조치"], + ["스모크·회귀 테스트","배포 전","QA/DevOps","테스트 리포트"], + ["보안 체크리스트 점검","배포·리뷰 전","QA","체크리스트 결과(8장)"]], + widths=[4.5, 3.0, 3.0, 5.5]) +h(doc,2,"7.3 품질 게이트") +para(doc,"각 Phase 종료 및 배포 직전에 품질 게이트를 두어 완료 기준·경계면 정합·보안 체크리스트·회귀 통과를 확인하고 통과 시에만 다음 단계로 진행한다.") + +# ---------- 8. 보안·개인정보 ---------- +h(doc,1,"8. 보안 및 개인정보보호 계획") +h(doc,2,"8.1 보안 불변 원칙") +table(doc, ["구분","원칙"], + [["외부 API 정책","온프레미스 모델 우선. 텍스트 AI는 승인된 단일 예외 경로만, 이미지 생성은 킨텍스 고유 승인 예외(워커 전용). 그 외 외부 API 금지."], + ["자격증명 보호","내부 IP·SSH 계정·비밀번호·해시·API 키·워커 토큰을 API 응답·로그·에러·커밋에 절대 노출 금지."], + ["암호화 저장","admin 비밀번호는 env(AES-256-GCM 암호문)+별도 키파일로 기동 시 재시드(하드코딩 시드 금지). 저장 자격증명은 암호화 컬럼에만."], + ["인증·권한","JWT(HS256)+2차 인증(OTP/EMAIL)+로그인 실패 잠금. 행사 단위 RBAC. 미등록 장치업체 초대·응찰 차단."], + ["AI 이미지 워터마크","시각화 결과는 항상 워터마크·고지 포함(참고용, 계약·인허가 서류 사용 불가)."], + ["오류 응답","스택트레이스·relation/컬럼명·내부 경로 미노출. 코드+요약 메시지만 반환."], + ["감사 추적","관리자·인증·권한·낙찰·설계변경·개인정보 접근 등 민감 액션 감사 로그 기록(비밀값 미기재)."]], + widths=[3.5, 12.5]) +h(doc,2,"8.2 개인정보보호") +bullets(doc,[ + "관람객 배지 QR·리드캡처 데이터는 수집·이용 동의 및 보존 기간 정책을 필수 적용.", + "리드(개인정보) 접근은 감사 로그로 전수 기록, 표시 필드는 비민감 항목으로 최소화.", + "EDM 발송은 정보통신망법·수신 동의 규정을 준수.", + "개인정보는 최소 수집·목적 제한·접근 통제(RBAC) 원칙을 적용.", +]) +h(doc,2,"8.3 보안 체크리스트(배포·리뷰 전)") +bullets(doc,[ + "응답/로그/커밋에 IP·SSH·비번·해시·API 키·워커 토큰 노출 0(grep).", + "AI 키(텍스트/이미지)는 env only — 코드·DB·커밋 미포함.", + "admin 비번 하드코딩 시드 없음(env 재시드).", + "시각화 이미지 응답에 워터마크 필드 포함.", + "DB/서버 오류 → 요약 메시지(스택·relation 명 미노출).", + "관리자 게이트·행사 RBAC·미등록업체 차단 동작.", +]) + +# ---------- 9. 시험 계획 ---------- +h(doc,1,"9. 시험(테스트) 계획 개요") +h(doc,2,"9.1 시험 레벨") +table(doc, ["레벨","대상","방식"], + [["단위 시험","서비스·매퍼·룰 엔진·배선 엔진","개발자 단위 테스트, 공간 연산(PostGIS) 정합 검증"], + ["통합 시험","모듈 간 경계면(API↔프론트, 큐↔워커)","API 응답 shape 대조, WebSocket/큐 왕복"], + ["시스템 시험","역할별 시나리오(주최자/참가/업체/홀매니저/관람객)","E2E 시나리오·규정 검증·시각화 워터마크 확인"], + ["회귀·스모크","전 기능","배포 전 스모크(헬스+라우터 등록+로그인 프로브)·회귀"], + ["보안 시험","보안 불변 규칙","자격증명 미노출·RBAC 우회·스택트레이스 차단 점검"]], + widths=[2.6, 6.4, 7.0]) +h(doc,2,"9.2 시험 원칙") +bullets(doc,[ + "각 모듈 완성 직후 QA가 점진 검증하고, 통과할 때까지 반려.", + "공간 로직(배치·배선·규정 검증)과 시각화 워터마크 강제는 필수 검증 항목.", + "시험 케이스·결과는 별첨 [WBS_및_일정.xlsx]의 '시험케이스' 시트와 형상관리 하 리포트로 관리.", +]) + +# ---------- 10. 이관·교육·유지보수 ---------- +h(doc,1,"10. 이관·교육 및 유지보수 계획") +h(doc,2,"10.1 이관 계획") +bullets(doc,[ + "빌드 산출물(프론트 번들·백엔드 실행 파일·워커 서비스)과 마스터데이터·형상 이력을 발주처 운영 환경으로 이관.", + "이관 시 무중단·헬스게이트·롤백(Fail-Safe) 배포 절차를 적용.", + "운영 도메인·운영 환경변수 배선은 발주처 승인 하에 수행.", +]) +h(doc,2,"10.2 교육 계획") +table(doc, ["대상","교육 내용","형식"], + [["운영자/관리자","백오피스(RBAC·마스터데이터·규정 룰셋)·감사·시스템설정","운영자 지침서+실습"], + ["킨텍스 운영팀(홀매니저)","배치 검수·규정 플래그·현장 운영 대시보드","사용자 지침서+실습"], + ["주최자/참가업체","포털 사용(배정·설계·유틸리티·옥션·관람객)","사용자 지침서·온라인 가이드"]], + widths=[4.0, 8.0, 4.0]) +h(doc,2,"10.3 유지보수 계획") +bullets(doc,[ + "장애 대응·정기 점검·규정/요율 개정 반영(룰셋 버전 관리)을 유지보수 범위로 한다.", + "운영 런북(헬스체크·재기동·롤백)을 기준으로 SM 운영 체계를 수립.", + "규정·요율 연 단위 개정은 관리자 백오피스 룰셋 버전 관리로 안전 반영.", +]) + +# ---------- 11. 위험 관리 (sources.RISKS) ---------- +h(doc,1,"11. 위험(리스크) 관리") +para(doc,"주요 리스크와 대응 방안은 아래와 같으며, 형상관리 하 리스크 대장으로 지속 관리한다.") +table(doc, ["ID","리스크","영향","대응 방안"], + [list(x) for x in S.RISKS], widths=[1.2, 4.2, 2.6, 8.0]) + +# ---------- 12. 의사소통·보고 ---------- +h(doc,1,"12. 의사소통·보고 체계") +table(doc, ["보고/회의","주기","참여","내용"], + [["착수 보고","사업 착수 시","발주처·PMO","범위·일정·조직·리스크 확정"], + ["주간 진척 보고","주 1회","PMO·개발 리드","진척·이슈·리스크·다음 주 계획"], + ["Phase 종료 보고","각 Phase 종료","발주처·PMO","산출물·품질 게이트 결과·다음 단계"], + ["단계별 검토회의","마일스톤","전 트랙","경계면 정합·아키텍처 준수 점검"], + ["완료(준공) 보고","사업 종료","발주처·PMO","통합 QA 결과·이관·교육·유지보수 인계"]], + widths=[3.6, 2.6, 3.4, 6.4]) +para(doc,"긴급 이슈는 즉시 에스컬레이션하며, 모든 의사결정·변경은 형상관리(14장) 절차로 기록한다.", size=9, italic=True, color=GREY) + +# ---------- 13. 산출물 목록 (sources.DELIVERABLES) ---------- +h(doc,1,"13. 산출물 목록(단계별 표준 산출물)") +para(doc,"단계별 표준 산출물은 아래와 같으며, 상세 목록·형식·담당·상태는 별첨 [WBS_및_일정.xlsx]의 '산출물목록' 시트에 관리한다.") +table(doc, ["단계","산출물","형식","담당","상태"], + [[d[0], d[1], d[2], d[3], d[4]] for d in S.DELIVERABLES], + widths=[2.4, 6.2, 2.2, 3.0, 2.2]) + +# ---------- 14. 형상관리 ---------- +h(doc,1,"14. 형상관리") +h(doc,2,"14.1 형상관리 원칙") +bullets(doc,[ + "모든 소스·문서·설정은 Git(Gitea) 저장소로 버전 통제하며, 변경은 커밋 이력으로 추적.", + "산출물(계획서·설계서·시험·지침서)은 docs/deliverables/ 지정 경로에서 형상 관리.", + "DB 스키마는 Flyway 순번 마이그레이션을 형상 권위로 하며, baseline 규율과 시드 멱등화를 준수.", + "배포는 형상(커밋) 기준 CI/CD Webhook으로 무중단·헬스게이트·롤백 수행.", +]) +h(doc,2,"14.2 형상 항목 및 절차") +table(doc, ["형상 항목","관리 방식","변경 절차"], + [["소스코드","Git 브랜치·PR·리뷰","리뷰 승인 후 병합, 커밋 메시지 이력화"], + ["문서/산출물","Git 버전·개정 이력","개정 이력 기록 후 갱신"], + ["DB 스키마","Flyway 마이그레이션","신규 마이그 번호=현재 최대+1(충돌 검사)"], + ["설정/환경변수","env 주입·시크릿 분리","키·비번은 형상에서 제외(gitignore)"], + ["배포","CI/CD Webhook·헬스게이트","실패 시 자동 롤백"]], + widths=[3.4, 5.6, 7.0]) + +doc.add_paragraph() +para(doc,"— 본 사업수행계획서는 행정안전부 정보화사업 산출물 표준 목차를 준용하여 킨텍스 자동전시시스템 구축 사업의 원본 내용으로 작성되었다. —", + size=9, italic=True, color=GREY, align=CA) + +doc.save(OUT) +print("SAVED:", OUT) diff --git a/docs/deliverables/_gen/gen_xlsx.py.tmp.8724.0c7f99a3a6e3 b/docs/deliverables/_gen/gen_xlsx.py.tmp.8724.0c7f99a3a6e3 new file mode 100644 index 0000000..e69de29 diff --git a/docs/deliverables/_gen/sources.py b/docs/deliverables/_gen/sources.py new file mode 100644 index 0000000..7145c7b --- /dev/null +++ b/docs/deliverables/_gen/sources.py @@ -0,0 +1,264 @@ +# -*- coding: utf-8 -*- +""" +sources.py — 산출물 생성의 단일 데이터 소스 로더. +docs/PLANNING.md · docs/IMPLEMENTATION_BACKLOG.md · docs/FEATURE_BACKLOG_100.md · docs/architecture/* +를 파싱하여 구조화 데이터(모듈·Phase/WBS·기능/요구사항)를 반환한다. +소스 문서가 갱신되면 _gen 재실행만으로 전 산출물이 갱신된다. +파싱 실패 시 임베디드 폴백을 사용해 결정적 산출을 보장한다. +""" +import os, re + +DOCS = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")) # kintex/docs +ROOT = os.path.abspath(os.path.join(DOCS, "..")) # kintex + +META = { + "project": "킨텍스 자동전시시스템", + "project_en": "Exhibition Automation Platform", + "title": "킨텍스 자동전시시스템 구축 사업수행계획서", + "version": "v1.0", + "date": "2026-07-11", + "owner": "지오정보기술(주) — GUARDiA 플랫폼 사업본부", + "client": "킨텍스(KINTEX, 한국국제전시장)", + "dev_domain": "kintex.zioinfo.co.kr(개발)", + "std": "행정안전부 정보화사업 산출물 표준 목차 준용", +} + +def _read(rel): + p = os.path.join(DOCS, rel) + try: + with open(p, "r", encoding="utf-8") as f: + return f.read() + except Exception: + return "" + +def _table_rows(text, min_cols=2): + """마크다운 표의 데이터 행(| a | b |)을 셀 리스트로 반환(헤더/구분선 제외).""" + out = [] + for line in text.splitlines(): + s = line.strip() + if not s.startswith("|"): + continue + if re.match(r"^\|[\s:\-\|]+\|?$", s): # separator + continue + cells = [c.strip() for c in s.strip("|").split("|")] + if len(cells) >= min_cols: + out.append(cells) + return out + +# ---------------- 모듈(M1~M18 + §5B) : PLANNING 기능 우선순위 총괄표 ---------------- +_MOD_FALLBACK = [ + ("M2","플로어플랜 스튜디오(부스 배치)","P0"),("M3","부스 설계 스튜디오","P0"), + ("M4","유틸리티 설계 자동화(전기·조명/네트워크·급배수)","P0"),("M5","나노바나나 시각화","P0"), + ("M1","홀 배정·자동 견적","P1"),("M6","서류·마일스톤 워크플로","P1"), + ("M7","등록업체 매칭·견적","P1"),("M9","정산·결제","P1"), + ("M15","공사/장치 옥션(역경매·견적서·낙찰)","P1"),("M10","관람객 등록·배지·체크인·리드캡처","P1"), + ("M12","마케팅·EDM·공개 홍보 사이트","P1"),("M16","경영분석 BI","P1"), + ("M17","CMS(콘텐츠·마이크로사이트·다국어)","P1"),("M18","관리자 백오피스","P1"), + ("§5B","공통/시스템관리 레이어 + JWT+2FA","P1"), + ("M8","반입/반출 물류","P2"),("M11","비즈니스 매칭","P2"), + ("M13","wayfinding·실내 내비","P2"),("M14","현장운영(혼잡·안전·주차·에너지)","P2"), +] +def modules(): + text = _read("PLANNING.md") + mods, seen = [], set() + for cells in _table_rows(text, min_cols=4): + mid = cells[0].replace("**","").strip() + if not re.match(r"^(M\d+|§5B)$", mid): + continue + if mid in seen: + continue + name = re.sub(r"\*\*|`", "", cells[1]).strip() + pri = "" + for c in cells: + m = re.search(r"P0|P1|P2", c) + if m: pri = m.group(0); break + if not name or not pri: + continue + seen.add(mid); mods.append((mid, name, pri)) + if len(mods) < 15: + return list(_MOD_FALLBACK) + order = {"P0":0,"P1":1,"P2":2} + mods.sort(key=lambda x: order.get(x[2],9)) + return mods + +# ---------------- Phase / WBS : IMPLEMENTATION_BACKLOG Phase 표 ---------------- +_PHASE_FALLBACK = [ + ("A","아키텍처·거버넌스",[ + ("A-1","애플리케이션 아키텍처(모듈 경계·API 표준)","아키텍트(AA)","docs/architecture/app.md"), + ("A-2","시스템 아키텍처·NFR(확장성·HA·성능·보안영역)","아키텍트(SA)","docs/architecture/system.md"), + ("A-3","기술 표준(스택·빌드/배포·관측성·AiTextRouter)","아키텍트(TA)","docs/architecture/tech.md"), + ("A-4","데이터 아키텍처(전사 ERD·공간·마스터·BI마트)","아키텍트(DA)","ERD·data.md"), + ("A-5","네트워크 아키텍처(DMZ/내부망·방화벽·부하분산)","아키텍트(NA)","network.md"), + ("A-6","아키텍처↔PLANNING 정합 검증","reviewer","불일치 0/티켓화"), + ]), + ("B","공통/시스템관리 레이어(전 모듈 선행)",[ + ("B-0","스캐폴드(백엔드·프론트·DB·마이그레이션)","BE·FE·DB","빌드·마이그레이션 통과"), + ("B-1","인증 JWT+RBAC+2차인증(OTP)+실패잠금+admin env","COM·BE","2FA 등록/검증/초기화 왕복"), + ("B-2","시스템관리(사용자·역할·공통코드·메뉴·감사·설정)","COM·ADM·DB","CRUD·RBAC 가드·감사"), + ("B-3","공통 업무기능(일지·일정·쪽지·통계·공지·회의·알림)","COM·DB","각 모듈 API 왕복"), + ("B-4","공통 컴포넌트·프론트 공통(2FA·그리드·달력·모달)","COM·FE","아키텍처 표준 정합"), + ("B-5","점진 QA(2FA·RBAC·PII·경계면)","QA","통과까지 반려"), + ]), + ("C","P0 부스 시공 코어",[ + ("C-M2","플로어플랜(배치 3안·병합·규정검증 PostGIS)","DB·BE·AI·FE·QA","3안 생성·병합·규정 재검증"), + ("C-M3","부스 설계(조립/독립·규정 사전검증·3안)","BE·AI·FE·QA","위반 사전 플래깅·컨펌"), + ("C-M4","유틸리티 배선(전기/네트워크/급배수·견적·위치표시도)","DB·BE·FE·QA","최단 배선·견적·위치표시도"), + ("C-M5","나노바나나 시각화(RenderJob·워커·워터마크)","BE·VIZ·FE·QA","실생성/미승인 시 목·워터마크"), + ("C-C","역할별 공통 화면(로그인·대시보드·현장 모바일)","FE·QA","역할별 진입·상태 처리"), + ]), + ("D","P1 도메인(역할별 포털)",[ + ("D-M15","공사/장치 옥션(견적서 제출·역경매·낙찰)","BID·BE·DB·FE·QA","견적서·역경매·낙찰 왕복"), + ("D-M10","관람객·현장(등록·티켓·배지·체크인·리드)","VIS·BE·DB·FE·QA","등록→배지→체크인→리드"), + ("D-M12/17","마케팅·공개사이트·CMS(SEO·다국어·EDM)","CMS·BE·FE·QA","공개 조회·게시 워크플로"), + ("D-M16","경영분석 BI(가동률·P&L·ROI·수요예측·KPI)","BI·DA·BE·FE·QA","지표 집계·드릴다운"), + ("D-M18","관리자 백오피스(마스터데이터·룰셋 버전)","ADM·BE·FE·QA","RBAC·마스터 CRUD·룰셋"), + ("D-M1/6/7/9","배정·서류·매칭·정산","BE·FE·DB·QA","견적·마일스톤·정산"), + ]), + ("E","P2 + 빌드·배포",[ + ("E-M11","비즈니스 매칭(추천·미팅예약)","VIS·AI","추천·미팅예약"), + ("E-M13","wayfinding·실내 내비(M2 재사용)","VIS·FE","부스 검색·경로"), + ("E-M14","현장운영(혼잡·안전·주차·에너지)","BE·FE","대시보드·경보"), + ("E-DEP","역할별 번들·jar·워커 빌드·CI/CD·systemd","DEV","push→배포"), + ]), +] +def phases(): + """[(letter, title, [(id, task, owner, done), ...]), ...]""" + text = _read("IMPLEMENTATION_BACKLOG.md") + if not text: + return _PHASE_FALLBACK + out = [] + cur = None + lines = text.splitlines() + hdr_re = re.compile(r"^##\s+Phase\s+([A-E])\s*[—\-–]\s*(.+)$") + for line in lines: + hm = hdr_re.match(line.strip()) + if hm: + if cur: out.append(cur) + title = re.sub(r"\([^)]*\)", "", hm.group(2)) + title = re.sub(r"[★((].*$", "", title).strip() + cur = (hm.group(1), title, []) + continue + s = line.strip() + if cur and s.startswith("|"): + if re.match(r"^\|[\s:\-\|]+\|?$", s): + continue + cells = [c.strip() for c in s.strip("|").split("|")] + if not cells or cells[0] in ("ID","Phase") or not re.match(r"^[A-E]-", cells[0]): + continue + # 표 형태 2종: (ID,작업,담당,완료) 또는 (ID,모듈,작업,담당,완료) + if len(cells) >= 5: + _id, task, owner, done = cells[0], cells[2], cells[3], cells[4] + elif len(cells) == 4: + _id, task, owner, done = cells[0], cells[1], cells[2], cells[3] + else: + continue + cur[2].append((_id, re.sub(r"\*\*|`","",task), re.sub(r"\*\*","",owner), re.sub(r"\*\*","",done))) + if cur: out.append(cur) + ok = [p for p in out if p[2]] + return ok if len(ok) >= 4 else _PHASE_FALLBACK + +# 마스터 일정(착수 상대 주차) — 큐레이션(마일스톤) +SCHEDULE = [ + ("A","아키텍처·거버넌스","W1","W3","M1 아키텍처 베이스라인 승인(W3)"), + ("B","공통/시스템관리 레이어","W3","W8","M2 공통 레이어·인증(2FA) 완료(W8)"), + ("C","P0 부스 시공 코어","W8","W16","M3 P0 부스 코어 시연·첫 상용 행사 적용(W16)"), + ("D","P1 도메인","W16","W24","M4 옥션·관람객·BI·관리자 통합(W24)"), + ("E","P2 + 빌드·배포","W24","W28","M5 통합 QA 통과·운영 배포(W28)"), +] + +# ---------------- 기능/요구사항 : FEATURE_BACKLOG_100 C1~C12 ---------------- +def features(): + """[(fid, name, category, priority, ai, module), ...] — 100대 기능(RTM/요구사항 원천).""" + text = _read("FEATURE_BACKLOG_100.md") + out, seen = [], set() + cur_cat = "" + cat_re = re.compile(r"^###\s+(C\d+)\.\s*(.+?)\s*(?:\(\d+\)|—|$)") + stop = False + for line in text.splitlines(): + s = line.strip() + cm = cat_re.match(s) + if cm: + cur_cat = cm.group(1) + " " + re.sub(r"\s*[—-].*$","",cm.group(2)).strip() + stop = False + continue + # C 표가 끝나고 'AI 자동화 맵' 등 다른 섹션이면 중단 표시 + if s.startswith("##") and "카테고리" not in s and not s.startswith("###"): + stop = True + if stop: + continue + m = re.match(r"^\|\s*(F\d{3})\s*\|(.+)$", s) + if m and cur_cat: + fid = m.group(1) + if fid in seen: + continue + cells = [c.strip() for c in m.group(2).strip("|").split("|")] + name = re.sub(r"\*\*|`","",cells[0]).strip() if cells else fid + pri = next((re.search(r"P[012]",c).group(0) for c in cells if re.search(r"P[012]",c)), "") + ai = "" + for c in cells: + cc = c.strip() + if cc in ("Y","N","부분"): + ai = cc; break + module = next((re.sub(r"\*\*|`","",c) for c in cells if re.search(r"(M\d+|§5B|§1A|§6)", c)), "") + seen.add(fid) + out.append((fid, name, cur_cat, pri, ai, module)) + return out + +# ---------------- 산출물 목록(표준 단계별) ---------------- +DELIVERABLES = [ + # (단계, 산출물명, 형식, 담당, 상태, 비고) + ("착수(계획)","사업수행계획서","DOCX","PMO","작성완료","본 산출물(gen_docx)"), + ("착수(계획)","WBS 및 마스터 일정","XLSX","PMO","작성완료","gen_xlsx(WBS/일정/투입/산출물)"), + ("착수(계획)","산출물 목록","XLSX","PMO","작성완료","gen_xlsx(산출물목록 시트)"), + ("착수(계획)","착수보고 자료","PPTX","PMO","작성완료","gen_pptx(착수보고)"), + ("분석","요구사항 정의서","DOCX","기획(planner)","작성완료","gen_reqspec(100대 기능 원천)"), + ("분석","요구사항 추적표(RTM)","XLSX","QA/기획","작성완료","gen_xlsx(RTM 시트)"), + ("분석","기획서(PLANNING)","MD","기획(planner)","기보유","docs/PLANNING.md v3.0"), + ("설계","개발계획서","DOCX","PMO/개발리드","작성완료","gen_devplan"), + ("설계","화면설계서·UI 스펙(design)","MD/DOCX","디자이너","기보유","docs/design.md"), + ("설계","아키텍처 설계서(앱/시스템/기술/데이터/네트워크)","MD","아키텍트","기보유","docs/architecture/*"), + ("설계","데이터 모델(전사 ERD·BI 데이터마트)","MD/SQL","DA/DB","진행","설계 트랙"), + ("설계","API 설계서(계약)","MD","AA/백엔드","기보유","docs/API_GUIDE.md"), + ("구현","소스코드(백엔드·프론트·워커)","Git","개발","진행","src/, tools/nanobanana"), + ("구현","DB 스키마·마이그레이션","SQL","DB","진행","Flyway"), + ("시험","시험계획서","DOCX","QA","작성완료","gen_testplan"), + ("시험","시험케이스·시험결과서","XLSX","QA","작성완료","gen_xlsx(시험케이스 시트)"), + ("이관","배포/운영 런북·이관 확인서","MD","DevOps","기보유","docs/OPS_RUNBOOK.md"), + ("교육","사용자 지침서·운영자 지침서","DOCX/PPTX","기술문서","예정","완성+QA 후"), + ("종료","완료(준공) 보고서","DOCX","PMO","예정","사업 종료 시"), +] + +# ---------------- 투입 인력 계획(M/M) ---------------- +STAFFING = [ + ("사업 PM/PMO","1","특급","A~E 상시","6.5"), + ("아키텍트(AA/SA/TA)","2","특급","A 집중","3.0"), + ("데이터 아키텍트(DA)","1","고급","A·D","2.0"), + ("네트워크 아키텍트(NA)","1","고급","A·E","1.0"), + ("공통/시스템관리 개발","2","중급","B 집중","4.0"), + ("백엔드 개발","3","중·고급","B~D","12.0"), + ("프론트엔드 개발","3","중·고급","B~E","12.0"), + ("DB 엔지니어(PostGIS)","1","고급","B~D","4.5"), + ("AI 개발","1","고급","C~D","3.0"), + ("시각화(나노바나나)","1","고급","C","2.0"), + ("도메인 개발(옥션/관람객/CMS/BI/관리자)","3","중·고급","D 집중","9.0"), + ("QA","2","중급","B~E 상시","8.0"), + ("DevOps","1","고급","B·E","2.5"), + ("디자이너","1","고급","A~E","3.0"), +] + +RISKS = [ + ("R1","홀 실측 CAD 원본 미확보","배치 정밀도","공개 규격 근사 도면으로 진행, 확보 시 대체"), + ("R2","이미지 생성(외부) 승인 게이트","M5 시각화","미승인 시 목/degraded, 승인 후 라이브"), + ("R3","외부 시스템(작업신고/PG/KT) 연동 미공개","M6/M9/M4b","제출용 파일·릴레이 방식, 협의 후 연동"), + ("R4","등록업체 옥션 참여율·응찰 품질","M15 실효성","등록업체 게이트·AI 자료 공정 비교 유인"), + ("R5","개인정보(리드·배지) 규정 위반","법적 리스크","동의·보존정책·감사·최소 수집"), + ("R6","AI 시각화 오용(계약 서류)","분쟁 리스크","워터마크·고지 강제(UI·응답·PDF)"), + ("R7","공통 레이어 지연","일정","Phase B 인력 선집중·병행 착수"), + ("R8","규정·요율 개정","정합성","룰셋 버전 관리·과거 버전 보존"), +] + +if __name__ == "__main__": + print("modules:", len(modules())) + ph = phases(); print("phases:", [(p[0], len(p[2])) for p in ph]) + print("features:", len(features())) + print("sample feature:", features()[0] if features() else None) diff --git a/docs/deliverables/개발계획서.pptx b/docs/deliverables/개발계획서.pptx new file mode 100644 index 0000000000000000000000000000000000000000..882d1fca46c2db2a1fed5b481a146f79df9a75da GIT binary patch literal 88139 zcmdqIQ|#pZQHE0ZQIUD+qP9{+xoNS+UGxOuCv?O`?P(xF22#) zH^$Y7=<&qc-yTC&0tgrx0000SfU@~iGmju+;{gx=-~tr@0O{+lhJcN=qmi|vj-s2b zk%JbktCi)%@|g54Ju>L_JC{&`6l#ebxGbdksJ^jk4>aO9P|6-N%WnGFTwLcn`LPg6 za}&_Qb&)*s>zmHTiH@u50y)M+x0{}0EOxOPq93gkiK7;=4{nu50P)SR(?H>jEV0AY z$imUum7aBvNMzh9+BNWuHsiq<1o?%60Y95~RHOp7m$~KyHQnb8rfQavmojE#PHpgc zge&tKpaD-J`nx5(BUmWj&%a3?E81P6;kat_G+6-gDkAMVCns3eL-8I;p0>R`Cc z&SQy^l}MO98$fx}jnOOVxiY9HXr(_IPc8=5Jg`N(vK`%!OMzA@uaWfLZF#bPn6C_;eX<%6 zH$Y^DUYKkTL;GdjU+F1Y(By#;hfqZrvhc>wUXJpV^Yq5pPz?5n({bFDwJT zjco7U3&FjUkYy_@b2NuEc?<#M-V4Iv*NJNX;yro%n%aqVTprtraU34oiFRxeTZ9tJ zEBFWi&`qtAAqudTPD{qY-a#p z%Vg&p007k2GSRU&vUH%M{d29H?GXoJfCt@flR>awQDCz|K{&RiBfKM($J3Q8YAY2p z7A>mt@{o&BUrEAspPb6JVN|0IMxQ4;_)WpGP?4n!8BcPku%u{ndN?9b7{+H0Pp+qM zUaL6vV0;}0*snm@ahMl`E^p>Y*Bd>Eyk-z6k7R(UzbqStUs$w`0s0DvllJWBZgaB* zyMgOemT2Lq-IA(&%Dqdn(XiqgE@S9|5Fep=O_#fXX&*dmYRr&Ps~eZ?$laea!EWl! zadcNhn&%4yNc2wINp`i9V`r$tXvdMUpfPxXeDu(YFM&ap5y}ug#Mt{Ho#Bz&W>EzV z*0VRANd|aZJ&gT6{s8s&K!qc}?RtC#YV9jf2w#CRv@wvix3P7gGqABY`cqAjaS}48 z^zc6)A5{c53=`R{{h;K`iTNt{e&ng3)iOQAVEzu~nj?LFBsas#f^x>qWXg_;*2;8g z5^I8=ac!1#(=LEu-*2?LXMAsNos^yf7W+B;CtNiq);kLiMK=h0uT$WJG(Nd zSK4deL<&h_P_n2?a=_zzYI%E>pBUH@%>pIgF^aj|PA;7S5~m(#2t*HsWY;8O&O*>f z%1XpX1q!2T8yInz(cuA+H-LvGydN-!c>?ri${iBlCcuQT)-Q~0JT6$MBo>6JyNkdkLziR9RstU9X{b+rjqIn{HGbrO(F zN7GR)6|nu!-#6w?+(@_nbannFw_WAGEA~W4c-^pPy;gm|R=s?;kfO(S=ivH*bjPcS z`Ogie`cpn{eUNSbo~f+qD7TxhOj!W~0Korqru1xW|0F6?Q7U?l9=?O<8jm`Ad;0rN z$lTFuNcBqh9A^3YF*nho$i}FlI;rOUrTqT2hM$lS)|V4p6U9R}7t@$cB6!Rz88U+y zCZ<$njT`%Kx$Ssfd(?t8Ea-J9w?v@c#oAqQKgoi5%%RVwF|q77`;Ux&1eW!n_NHL3 z3RpDlX@uxWdXt&9Euheryv*c9{?bz3L#R07{ z6hn|K)lfvDm=yFT(g8~pi}iim%a}nClv1vA+^3jktwT{<6^4YNI>PYcUlpdHZLGUO zpB~KGcw8uL#Q8Z&q~2t9l-iLxx!INYJ4hCFTko)k#ft(>(mJB5wz(7kIZ>aH7(cnS zY9`A`MYBrTAz$l~oxi2DdwV@zL4zK!kR59eF;~M2a21T?(XMHTGR}nmvp++I;}sUL zE%(3^PCFoyYXtGQ){ekkiFG*-8R&AS@C@tpEfV+loG}{3~ONNM!K$Z!+G`q)=mAHBa@-2Y1@55quv7Z{+aR9Q7Q{Y^?vRk@KY) z>oR(Du&dWwWGS0=_7z`9UMTmn@;AP^~>$# zkXC!|w6IEh@3v4yC-XA7)w};OzY6dAz2sEHllSBWVJrIoxb=O#?IN@F<;Q^EPKY2A zVi1AwKKa~A(EVls zL%#DdXGL+pXQ?{ z;CBlP0D$)&i~Aov{a=^(Up>BKiQmSb9=ZGal?P;}*Nm^6QA?0+3=vKu>6nM_CmAyp zjTvY0miLG;a)ifbbEBn}t!aX@o2tha4{0csxoKdy6x7RfNoH;26)kI%xVoHY z2qa=wk(z#+M_~A7R!`ZuKpUkRx@8p2n~6>R+Q_#o$?Fy02R7VTb`l9!gvkJyfXEt@ zC$2MS4=PnpQ^k~Z<7)!7%EZ+Gt$;^)m5U#3t#%zT0~)2Dh*3c({vM4*=PS}gXDNdM zgb#?FRq%%hK`GFoS1io7fNz=~urrS&So8Qzkc%HBIS$B~1fXu{Zyv2LancHR%teCW zQ3S?&ogaRl;gabfj=tvYrCHg-KQgXv0%G4-E@g>MsrG-&s zf)?ZD_TzKk_Y~g^P5C&K_%PIErIloZND~xD5^`bo6=94_1v!)iG1TRxmE@w76BLvZ zvZ>PUK9tb5{+?0I3=w4EuZ)KNhw%7cxcW>3z2rd9VFftbe7vI}0lbH!R=a%SAv?UjelrX^?S3@4*OOB@G24=8SY<;gE> z`>U550JiS>sL`k>@jC2w2B@Zicda4?s}!SIxuHZ))=gqzGljH(4u|hT!%ZHfCHINO z_J{`65jm4DqtGQxcm4bL!pOSVMEotl5}WIBDqd3>%HQHkD6-|>79k= zhuA6wgmV<>>+w!wQ=I5o0guKwmubY5dJ%m%5u(W5lxCFZOT?N6lC~HXyq&Ye;+)nR z=B*<9V2h6H3-dEjQG!0M{>{Q_3!Gg_`l(1}PWr-BJkjD;b=5>T4!(etjLf@LkxruG z*kB}@Wa)^)dNJK~WfrPR`^G3kfZ7OeR)*Z%5!S4WX`g79ZG`+a~Br`0O9`u*+8e92BoOjUxGf;p^&k-#qxsrJ z8yZyu2D)msrxjQ%aCVO@Om23wQsR#l6C6hM9jpYb zeBu6K$S$WYe`Rd@lTY4~~WUYMYZcI@eS+thbmB9+!;36vQF!aZoljGk+}|@A4{7B@015zbi1WX@zN4v;l@Z-vSBAg3zS>t( zSZQQHETLRIL%uD!LBK-I-(>3L^wboY~);%MFW8UxDR}QL_fy*Yu61 zM&i+;&T093j*lKb$yl5enOU4Qh&rBSocm^Vu%}Mk%{`U~gaDWzCFQT^Qxywz1l*9A zo8cjs*AA*NbP5lAWNgY!PPs=l%)u^-cNy}#5!@P^cj%d?98Q;2h_!V<3X z17Utj@|BnW5Y{H&iMb)y)6Q4cxIxUpCW3{yzRui<0R_H~6mMsh>l_jN@k`klU)O%B zgcJoL9Om)#KqOKrS9Gv~a+WnoWyJ%{B5n4S>1ZUlS7(7segaCV=q3frp(5wUwLp9ZWN7-;5^QHa67T z7R!E1yrerkB}y01X_s!(kXtkzT#YprF1qLYH|JEWWIcA(Z=TaCU7;qhBp+OLSWrn+ zQf~U|3qOBgua28AFo777FH4bmwkVg=$e?y3?CyU}%Vf#1*X$WfyeYLEM}?%T#Ca3Vr=Jyr0gVcB+S> zadCLx1_)e{ToqA0pZk(OJs&Y%UXLH?@O;h(%NakSvw1(?o2%FPv_Lzb4o0%4vf7^> z!n?dZ&wQ&T&=YpN(%^qu#|t!2A#T$G8RF~6Wv0qkz-ujuwWaguNWFFDM0arIM!Xwjxj!5jBx)j;LgWBEoHn9FxOnhO*tR+sI7a znvlbc4{TL*HjuY-2nJk&N04S_oa*NxfUSK^P8>(V~`y0VSu3suA=@e z8XU=#iCDbF@M73*U_+z3#ACI2g}s!pu;`U`4;5Ta*gE9h8d~h+F7@VD#JlP_R1d&8 z__^Z`MW+5cko;~m=|^tyyVLy#EzE%n5dEx(0xFV_l7rn87(dnhP01E%avz)(otLkeX_WU8rA@7>N>vxQwf2)<$c8DgzutfUTV_ImprPR8Ea^*L=uUS=k z<*`)vljdXlxmC*Qm>U+wLi)x|Uu99GNRDA;mj4zaOKS zPPCFfMLJl{?Rd1C=$s!Z2T&Rv49zUe9~Z=+1{wo?N6U5b>c2cnYx3qprdx+8?b4?RUHeKYNgn~koqwzun-8gQ+HeOu zmmm;pTpRq$uf)o#7|QeA!2%*L%jKpH^WO(846iSwQy98t(9h;<)n=p!#Z>0_4E2u&Hwy z>5rDBmUjND$*gXJRufGl<(K<$NaXFTC+Yfxm zExxpZ*icYX{QGX3VTh?KbLt|7@U4$m*n}q=lde7;aC$M+!P7CRJUE*)8Z9xYOZ$)I z&EJ}k%k%a@Q^qaiu^Dhqw$43X4er?+H z^LhlQNNTA`T~%^f0E+oN1&Sx7x}tu$$q~G(594;cA_GfeNeC-waM}t12JyI-YRu;; zyG*ewEAeCsH>BV3y@ZQvoW(Pu^NA1DV){_L7rmFsWV|`QX;kE*)ULM3rCzB=#2QzX zt^6@CfQ9765?YKi)O<|*?1&yjQA%Qj#xk9{e~D+>snU4 zR*0>rE)z}i`Z#aZ)fF;Igu>0{usLJmb0eJ1nA)w+wk8X>f>sQ>N}%sC^K_OeueYK5 zaMp&UO7fPW6e3YYi%=0j?E5LdKV4U5$p7VoA&~5!`WyW~6;!eb%+M$$?%MOzriWT- zvOys}tZ~!n-1CYxa{Ey&SVv8+(ugRAA=k3KKuA}vtnrL!Rak(sKib~GQW$<~pR!(~ z=reV2e;CaS`Dn&9phyESjR(=}Y9Hc1UFIA+I5ys;1-ffMz&xsW3ou&@D!oXC(wwjlQCg0-A zvP*HCHN5V_wXAb(1G8!bQtjZsFFP6G)`T@rc1WiZ?n#IZqy?5J1s)UxU7PHntQN9Y z0i@j=kx$RlJ^_`h*6~S(%DIrh6ewI^{na|h+!}h`2>I~MaA`~k@L|JtjfdbztPR_# zGxpi)!^6o)O+uo(h!CJ7QBWM|DEl`xEtRsMCU~Yocfx(yN)f`2rQuZ3%VK%3jIf;_ z!_n|HkL_W4d%BhaIpYDT6u@;`Olv1{meeVFp;v|khR{eP6Pmwb2KMDcscnoE;Y!<7 z3$5q5^Nm*uKj`&25`7VPq6zi`vaRt;AX$tPt|B!`!WqWmIdgz>%&Pd19)mz-%@W=5 zje?jcDP)QTiuHdea;Hbdgql`b)95nw(zks(W#7 z2)Eu}I!+d%6wQlN4zx}Iq6#Zb-pW?(D^}f{gB`Uw_F$xdWdQT3MzwQrJLKQb36trT zE;{931*r?w+f})}D_^+Q%HO96BG+O%3C%qMY~c`QOZ{_R(EC92)R0z>q63>Q-8)au z16l1gU659*E;)ud>)v}$!0OGaQ}VrnYdE3_nBt|(io})<92>ZyN&NSZiA^l07(^>i z=VC`&%1Hc{tO~Jg-{+5OS7RmXQ$;r}q^4b62IY4JyWI1y_Y-m41DbaVdBFwFV1!kk z&ULwZcdrZ2h2j}LV48UNk(J!|$(}taj^W1A!jgf18sv7{uhZf)dNFc2in>~fN(N4g z)!-pN!SlybsEG{lCVeT*^ln=n9Q3MytGQSN;Z2?IjH`W%OK4cZ_hMc5BUnkr$eyaG z^*B>^usf+J61>#mUX!6Z=NX-cEuULv8s6t-9%quI9}7mzHRraB;3DkUf=9D>5uR|l zd6Dh*5qGi3r z-)NK)vFYx?25dq|0ti2xkwN?p1*I~k8?_zSG|I~jh$X#c#Oc#H84O4L_$o8ei(FuV z>p5l_3yeg^;DL$7$W^4F(}k({D-8qeG(y+JZK--H`z=Vcsjf9b;d=b{-)Mslp!_9k zF3tJZ${ZvIW-aXLl1{u<>1X2Soxs4r*d4vF`SF9*3Ac)+26h-KOde~FFe>KyTBmg7 z;KH+eTDdD8p-~@eKA2RigJH6IUbrovpjnUf@=a>=vY}ovu2AjH7q4Sn8(B*W8LhN_ zy6R_xQcPHnoE;dr~Ji9jun<0Z1-J0fxCMO`WdixA>sKj;_(lO{PI}lzP>)Z zMR4{M8hOP4|eUDm(5@0Zd~HN?I(J>}&9ZBwet0(;PUpghm*!45amq{=P1^__) zpLNQA7;pdDFaI*$1{ONZ`{Tdd|1emvByjVE@{DO1}eRoo-8F41J~>LLk%c{dV8eB z`+J8UBER~s2!|W9g%Q_~0r(t~K_?DBl*~D>@nTuCboh3u6HvO~D*>pkP*URfhRL>j zVrUi4(8cOLI?EWa&q$LOoyM=_hoYW9Fsc-lx&W2h<*y9`g0*iqL*e7?LUG2Vy557T zazO$L!wPGmC06{o{HQa-3QwUWUVI{jk&&dcC*^t!SZn#ypdrTM;as-b<{=mbHq3^_K9O&p^Iv0|{Uc=)(Q@m5>N?_gB3!Wg###ism_Vpp&rRE#E_6a&C2fZ(JdbjDX)7DXb4ViS6-QlC=pt# zR(tM2fvQhi`S|Wk3&;;@75&@w70rX`b-2lS2dAa_g(Rb)(Q-U~p{<}`xqI9u#zt&<&c@t|Xesvo?#D~~||?2!TN z5z(nfIRk>t93q^%@1gk{nrX(fsR6lSodJd7bazquulVBwpd^Qgvct-$0jaNcI{*tu z{`$kX_tR`3Bnu`v9Ni(NSAdj}BsItYM)*>qtDwdN3<3`1JC`EET1UNu8$%Wfu3AGo z5;!md4vK1DUX^j(F~kRLL+QtQel z_mW4_t?E`nvPgjvwV=S?U`EXky+BcE&r}aDe&Ast2#4m*!)F&F2 zpe){tYJC!psI#!LK1P$6v#pmDpZ7&K(hDCxiXKw26TdAo(B@LJ2QRF?ORY0U>a%4F zHCxAu2r=C6+NlX{y;M{BV_M8^$5pT*@>-6I+;AyepkJ&X-F|jutAHJg}V0&?@Kc{Cq!+zWmh8QSK;4BDTKI zoP9-E7LDW3x%JEl6iRDzgHN<(#)@7yOYOJDfXgo#o-<=;e>Wzb!B0~}T(f&*n}-|a zztdN=7A0x<-Pl>?TA$s*-P5H@!Cq_NvV94*Ps7Z+DFz?3W6OMD)LS|73}1=ht#^YK zA2tdn%VlX5%lyEpvP{FjY_3BDh7|Ad$-8@?^LMAt*JvlC?W^utztBqapVj|AVfCLW z@E2Djr)vM=>U4+B7gx&+O~?yXC*>hA>VO}C0`DxtMK2+^N!Wd|S%P4-=#m{;`s~KU z)^qKN8_Je45q-0M^beG69Us0cKv=^DNCfIG0IA{(HSc^IX%ro{pr&rhh^f@npwbzv z(IMbmR0L?wFfLnRSyV(*$mnVX8P7fCk@RBO`^7Xsp{gd6o2>7S{1h#9i_PsB-(}SO zFci3h43vSxRw6H1MLS(F|H87B=-#nUJi(r_v2hLY_b33opTUrQonV7}4IBJz8}^@3 z@XuCrB4r~gogI1T@{xl2flvin2Q;HZ5@lGnk~uRp?HI_lo491q*osW5sce2})hmN% zWEAv=@%J)gmC}TC-SpkQ%Z$&SLAP7yE!i5PAB!0zNSC9T0KJgfiX#l14 zR1EtO#PL9}@y$zJ9cCtRNzG5)&5&nUqkGU~i^8SO2kdprF`#2qn}|&|rUOC&iS57j z&lA4+RIRk;MqReX&TXfuy?b7#J-3&g_*1*qT7fHMBJqz+fy*-GP<<)3VOLk~4)5%+Qmvs{fnB%x&!>%L{0Iz4H*iiFb|ds(r0 zEkcn*G;cPv* z-rVRa_ApT{h~tnmWGa86L)Rkv>NiPK_nt*lK@AHVCFnYjH?>ZhYI%MO1Cn2aY#)+G z0F?9sEY&gxHrvzbo4fZ=iv&5p@11eu z-qVi%kf&V>kUQ*>tz-|Zg@%I?E}*0Fi8mnWA=2SY!51)4N%5MN7)UYK?>Hg3uQu58 z5LGX|AE$`-0&J(A>?T!ud?fVKP|+8sD75gw-Kd*MiD@CSKi5N$8`Gs@CYtHRCCZb# zj5n{BelfL$Puph?MtHLnY{%#Zl<13M(MGOr-L}B6GQP3V(?;KdiENp_z4C;uj{!#s zZ$AOE2lf2ybhrkO5Z0CQ$fd)<^eZOomP6M$k|?HVdl`K%}5gT-NxqhDW%5$6t93OTBvz#{Q{A`Z9*QF8Byi*2fwJdaUa?fR&*6RM+EXGbG|=E#M`V&P6%q$eoNu786h}yDevX`&1LQ2T1~sR-m`f2#(J$i1@jXP+3H~5 ztszCmYDuUiQaqGIOS|caS{iy{>iN0CUr!8}h0fI$uhmX%+~Z&VB7tK>ZJRhlr1SY}jqw zw;k}!`JdZyDko*zQa(v8>K~~gNlORpmo4vr>(pC*XasDq0*0tGLp3le0_8t-j-S@l z_y;`JH!me)nT>lU#$`3?opgxuL!-Q&K7YUbUs(G$3H!e&^MA7T4{QFtPz$JX6mIt= zIFr5x;QlMrGX8n}M&%9be0KDXt>T*Ha7{VyZxo^8B7O-o;+d?gj=0?eq^?8D+G~cx zQNn3|Q0o?#h$Ffxts>5H27`Y4{KR?4xqW$}wIo~9Cyy{WD`vYR17J)d5@*7o8i z?oMZWay7(@tsAfhTP(e;sS_&Hk_%41ygl!RpQaCh@r}a-lgSDw!8Haw9bv5_S)XWe zwyJHdk_3Nv`|cE{+Gi$sMWm@7=yKrZoIWtTDlW3+w(OhM$rJ2ydb!DgZ85)F3bjnV zk=LiVrP@|I;yDbKs|+hk1?lpiLx)d(Q>YCWE9C4ewtiNPq5y8@zY-}q1BO7VT}(mAn_DETa2y-Y1n@4K?8=lq+|i& zbs~J^lHPdU9b?TvZHjAU!{BwGWGPnXMW3IWUOhmXzl|@?F?^tja`L?=erG92oJ-%p zn>t4kN*YLJA4{g<4c$mLIeJF(Mg%bq_%(7U}1G3VDxYc~% z%3e+BhoV;!Sw3tjYbXHG zyIp04t8;`Hog1EaRAr@|Ncx8NHCiOZph0t3bxHO!-B9lLWZ(Yygs~m^Wc(51NLapE zqTb}{fn~M#=fh+5R@Xa|ze-1O2hzn|^s()u(YZk!qMjBghM)i@~voWl0RxZJ|I?3ovc^1PD>b-#aq~%^Z?u%68~7b$ChaW&&BC~ zkdy7Dcg)@3ICb^22>z%Yt2{QQZl<7e7Jv0aY2yG3IiMOu5@=!#je%+*QjKQoH%kCl zo9)LBN~5xU_MY^6Vq(atT=bj{osx@34~el}k*>$VQ?;DuZyP?uh8Ii@^(%eW(*uwj zi_jH(G)qvyD7}g1WAqId_jeH$9ruGJfFI4PqrJymB`zAkw!8ZnwwIVcBEQ=__2tU; zw#oKJIpE;u&}NX=gD&zyvkcrJNF)q(0x zx2_H2T;W|fq*NSy!3X(1-6+%Vl!w;u1g2@z9f<=jGYF#%zl3GG<9q6wTf`oT)`?Gt z?fMS1IUJd%GI9#n-qU^BDyQ2ezNxzn1LrDm)KVSChV7c~r_$4_GJ*xuehp}|9bA3u z7Vfiri^9DUfnE1jl4Z!)S*<1Oyjmb$#(AMP)|q@~lZ*8vSTB15)s7TP3(hs=>cY~k`uPTS*w zbL`Ay_1$bHonU%N!tvv6A9>C*u-J##rFH}gtlka3e{UncDi8nH?3aT!lzT1%KKiq>o$WNJD0K!%`+_Wr)cIy#c5%*ZHO3x z38(LLvE@Dh|5Hl;g{glpO3RG;VmX^$aD1ENF@rTl#Ux%ryKdX`7Q{s$> z#Pvqx81SY1IlKUr^DHZoOJf`KtI4OAR&k4E7-JB3+3ifQ?l0_#X6A>Y4?PdBM0t`g z7g+#l4)XMwab3|a0Cdyp^YX%7udWH|^8w)zXTBi_+i@-HGPt_jj~Ou`6#U}HYKqg< zLZT!kZ%UG9MH)hQMqCortO1>Kk`f=ZARYkOg(}`Ys?7^eWA8i-l8&S_zdwCuI8{?q z=E$n`R5GCCM2v!nL&?`yW9hA78LDByhLSAQ?y!hkXJ&8OBWioS3kG41YG!ZZIz6dN z-E)u!2s6jlfQyDMh!B@7^d?RNi>k$(dEmA=nBZQbvR?CmE&IW6M@3WYGu?M5vwGrp ztN+{!J!7bKqrRc0=I>YLbbO;~ny=m|j6Qo~ceZcV>$hIW$pzEeo)B@4-yQP1JEMwnafIk= z;xXEr=75Wi=V1obAiL6d1^+_oWZ6L2Zd>BZl!K-s*AO1ZrY%-%9P(kbn5ljoLy`2( zZ3*yUh&Y8CS`x2Hh{U**Vf(GnL3>z41fhdG3i^80i42`1#8hrL{=j+JCROAoFR|5$ zks5n?l+{usBd55oVf4G1DVg5(>n?ay9?0}o*zoJ{;5Puop-eq}O}#F-UYg*XqwBj83n~};2*+Y(*cRm6 z?$vfVt%%ls288lxc*cTPTff;d(E&`k<50iDE3QcRe7PR-Gf$ua`$=Em(&%AjBjuID zz7Nv~#HVjsn=+YL<(5NfmN{kXk%J+WTxUA!%tF`y6smtw<=+dc#|8b-TVGIR#s06M z%JLUfQ#Y)C|HB%sI1{R#?GKG-H=RW&Flvx5t^_>*T<`ZgV|QL;Kz3%HZC||D9gnZT z1_y+s)>1Vq+z)sc+?Em>M&-;+<}YNZ1>iWGa`iLB*?`yk~BLMh}b zp0dr{nl^WG@;)JRIVwFc>%oYI1Y!)bs}w9as9IWQpr*uF1X5ZhB=%gPn;HWmx6l|v zM3uNla+vS07G?FS%x`Z^y_G!FPFF`Qb5tox3bJnw7@L5Q2&El)TW4;%&(I)08)mQ6 z)zL!CLT6@Jg2s>mqtm~8TMb$gxt|~m%51%vm}%H8-z~;ZM1(3NW~dFJ&09K}Tc8;I zbQeGkwjW=i6lCSw^3ia| z{apcHZC!G;ZRE)=*ov`pP0xx2N!23Wyc#v!<2-8a7t=UOK0sBw`JzVRBjK|=AT7_Z zd|Q{TjZy8Dn$DOVl6$23Dh=*pfHT9GZmF6~fdltQz3Ab+)T~}2W(i0Bz3b?!S5a&MHVc0OMCSn5dg zDN(tVzFc4}gw7;3dVOhB9;JO>E!1hdvq<)~%C+Lpw`vxgfzi92nyD@vUH))EUM>FU zG^^}QuWfkvUA`3F*39}a&bfXs6%lLlU_FzG@hFS!Vnug0bfj_n>MZ_e9_IDgl<;_0 z5M#&~L|s~!zj;D*aQ5~Pn2qBYD%WMlUD@BkkVL^=1qo*7FU=h&B?w9_L*bf&Jf&gR za~L8qFdHmZ%fvj{CELJo_V~VLZMw>Ok^U>V2IITd*4cB`ZXi0yuO%H6t3vL>_}@qB z@7M3q**>11x6qB|mD%Uhsjb!X_Q0f!(Gk@h+DDuW7pdGKFQlz7K=o^n-1V0&-~-(2 zksEC`FA?B*(u8JSS9cPt*lPTDC(~uaNEDQ@rKf_(V{>%n$aIQHgw=4}IUQVeX^5y8 zdZq$!VAhpt${h^{>U7G7UO5|doDlJNV$bZA76m0;2ftsGQ*USL1l5tw-5s`FZqfdy zE#fam{(H3ung-H)j4w;~7x;hOB3S>lh(_hLKO+QQTh;i#;JoD>Yc0ow6MEzF_5GL` zPVRtIW9ve1nuzyDX&~>Koq3COPA%cfnj*kUs5ZfIh#(y*8mok%{&Rez6OYa#BTi2MgE13c^x-+TX2ri&- z2`+LVPD%KE60?+}?m+y+Dum@lav-UmJ~Yp47y+dwdZ{`zSxUg7F3xEzv}TAnjoz>n z*;phIqpozxP$3PSup;`Sk=R3)I5frEq9k!e;0Oacpi@V-0!H5oEg9$y#k&;SmrI}Gb?y8@b@$- zvEPW=yS`PdfCY|;^b>XZGbW>V}(_i&J$WVhECFV8MX2QXdG z&TCSasMHNFvlWKQf@5O_m|TJqzjA>Zy-dhfda64G5}ns7_CD4VVp z4wT|>btK-GkKVrNh`Fsn(&EM>Vb+JTr1tEt+_>ye<+v9FY?1frb)uv`HOBC`m9zQo z0*9EXf$tk^u$}7jl3fBPdY2x7uhCY=Qek0MTZATPU|vuAzn=f)RQmtjdi|@q{=MLG zik9ti{`EDU$=BT1e|28O_7_}~{sk^)qW>E%4?yU4hEV%fVxx&z$VWEk-qKwKIn?`$ z)G=U};mnv5(1#gJ=-Tb4>;fLsMX`kGfhIk`ekH_K{jBMpAByfHz!(z1B$ANBq+s;% zF3CQcB|r7<(y$FJ24kRhzaZDQLGgKW&?-z^HJgxeZn0O)m zTc*T_u41aU;^yf@>x$%n6Sh<-x} zd!=j&1POS$<)SVG$q|DGLmzqtI$++50kKP*ZCNzRS!@h#o-JXr%%A8* zKL&jgdU2*1&Mc(0HCI^78?kpEZD)1f@|(yxIVwkQn!CJ;TQ;`2ldR&wU1ejR$l|2G z;z%?1sv$s`PKbhVj*y!o^8jFLu$`zY>p&ykbSOuK63qsO5P3c-xB0o7Gcay3wi8th zmgH&$^%>+F*xGPCa9o+TY0d_4-bv32ToOYWpAF)o-{FmNn+tm&Ki0RaR{0wqXpxMy zBokkckEvWIs_faxQ3t50qh3GS;gZ+tV!;~KTd}M+p|+{JS0WJUr|ZFQ9>NF*t@#5Y zz$L7WO-E0@+n$&A>VNFjMR{;CrI;i~(K@pOq7fUA>^xtz-gKH!+ALjMf@f_;!7=H7iUCt|r zI&95V`0cNzIHeGm9@dZA z^?7S;1qg!#6G~&M)m|!moMG&{6W6cYn@TL{KlM}7A6O+!%;4li8a_|G!i}uVjRmRo zREh~HXBb&YM2}-59Jc7wFw&a6;{s}~Ki`Q~{C?sVyTV|sv0K>d`w51cL`)OhTyXL6 zjWZmpmiGCV7YJZtB3oFNxo*Ib73-iPDh{w-#&}yDVtX#J;hHkODW0Rd-BKxNv)#sDP1<=X%yXwv2_K{#ysWg&s6y0|b!D0FzIAKK zgalCUI3i@Z(VWqc_O3Nt}Moos14qy&&6n&)4uL@TDD1C_t-qj&ekp)(HbMiQWn{ z)LZV*`ee!MYNYWO*|J`hZP3QarAOlCBEYvhtU-`hUI6XepS|h96LP!kd41tw=RNkl z;X!x;KWZ;NM{ly`I@P_nqn+kFBJT6FDgdX0UOZ|{(JTNOa!uhDHwG{PtW2+v7XeHK z`ij2{L#*$vkbj=dD5wJEz~J!w#QCs?E1eLin5{rqGFK@5apSPU{tWX~gT4mU|9SRIwS!_=y~xItnjA zw@p&ivH+U#m^KGP$m@HNy9@JE;3%jXmR(lguF?k&nVLwltmvY#bti(o;~iqg@9nfC zA}s%@9SCFP8iwG9$ZZRleZy|R2SCseA}pL?icWQ z%2+#AuAR9@W{x?>n2!!!`^rWqKTQ|xUIq+qY53nU_q*(oV+Y$cZF|>=<&$50f7iNd}Te zit*-k>W~f{@k@0s0>juGGrpxBat-r2aCx^zV{Lby%Sk&Z)dxzA%^yvDLP!Rg{w0n_ zji{KZ;S=U@h;|KB*PhOh@`@?xChQdsw&tDR`m5$U!TLzzH+syS)0^g^~uXk7n=H{;VW-kX)wa{VPsDr z`DIabA;6wIu)v;JFA$^&W|=Q)+Y2h7A_cz?yut6pO>E=|Je+)$(8_jLrw`r7#;=Hm z%3e%~sB}*{Fiu=r$YE7`{D}|XIvF5jn`4{iJ{Yu&KeSJ4#3)g(?VZ<8M3v4&WFHF3 z^&@Pecmxt%9ABMo>Hq&?|3AU+|1Rv;oNtVG`N4k1{|5GR{sa5FQvZ=$^ly2biS)o^ zRJf#tm{kkr1?I$twJoNwP@7X^tw(MnNq*mZNH%x<*Oq?^Z>FK2o@Q^u{k z9735plmw+B{s;QQ+l#`K&4l998H`Q%b>r8d;x+RpuG!ES3>;*Y#vACS27gkpLG@dS z%2=r#o8m!u5-lK^Xjn!E7WU+j^2Mz_6~na{6HLw?J;($#%zg#dW*&u*O?VkwGTTKL z)2|WY*&Nl+iSy+I%3AzHfzIT`bBM7)?>0v}xijc(v%@A+Ql>??FF`W{BP>)p26>bA zTO6*WL?LgU%GVy3_QH?#EPG$XDH}hsI=u(v8u-GE6MTvkWjC(GnNQH}t;jk#ZoPvd z#X_~&9b)Q{gir)q6tTq=adHhuxf?OcCsWb2cwe*8*V8~!52fjp&wWA)o7z>hq$b>C zdGmx%0*cU@9@+vX_@_xqdy0~;&!o3n#-49GZUMzl;E83XNPfUy=?DDBt3c1Be$qah z>9gBM%+h>8f6_h^p}hK%hT{55~b%`{645`#e)>5tdYPOUhGHLXc9*cx=++Gv|V z%t1~K2TcUX4?azS#5T||p_E6RCv$G z^Z?)BXL$H@Gs6+YAIh^;9v{*A&1K6o;F}T>B!~juVLAv+7N8wU^!@#a0RMDOn7v&S z;$}0A7yn>IC^-%H^Fbgv{T26Mg+FS3m3QhS`&>hJ?bSc~oa6qt48Lo)b1U~O=r4^p^EP!!hX$pkvcnr3ewWVN@wZI0Pk!9|W-{d|=PvjPq$kCsw)l?v zkG4J~#8uUy^BSg46A~L{2kG$uzjGC5-^7&Cn9ha9R$Z0p;-PQ&bhi8Ac{3&{t7TDT z>?p!|WM7okeTs)qkiQsFCGW*mO%BcFa#xFb{NHb%%hNrcCo0D`_`Iv76`HKXweiLl z-uN*IBhxc0c%F6^{gO!Q1?DJg^9+6r*aeDc+Fvu=z<4-E@u{>S{NXMQeSz}L)a6Vm zokxz&$@k@}&vqcb1WGq^R^Dzl4H|VrEKNW`Nc^Gk1mPjM|DVwHe;0DI53#;P|8R(tKWU-=uR0`# ze<2b7O^0;$mt2%T8Fw{QN!{TWO)Qz<sTEJgE7o+#HHs z?N)?@Vt)+tHaqdu;(D`z8MKu0-v&V^L^y;SDTFb#)t&wNhk3v`Fvozjomg0xTyWbO z-;Q|Y$r0MEuqZ+6{?_ch2`y~m62aUGRu*+V2*^%rb=qHnQQZg@s0e?06uK?c5khu3 z%oq-JTlBK(^%hvG^y$iFfj2G$Q5dXBcRXZ^u4WG?&6NDXY&Nb+=+d%+Ce{O(#+QVr z*VR5zT~M5()+V5N8ylv3s|76;n)E88D;D3rK-Vq2 z?*p7?@DX^p7Q~udua510Uqe#P5|(f2(b|eWY7ooX{7$W5f^Yq{-zD5k4FEg>7n*SX zYxanV>F=iyxMgT9KzIx@hc;Jlh$9Y%#NplxsK?u$!>lH~%L3;HV}vr`Csq z?WP3K?}!4xh&ShJyoJ@!F8_Js<(rX?h(5Tis5^0Fz;$Okx4I%fZ**{ce=tOUS4d&9 zYo>%Y+VZtTxZ;-wo9NV}XxCGhGHPBfBIt!F(qBNtN_@O*v|yWd%t1N15 z{O%Zx8n|4Ij4Oxf*w|=;xn4gJpnaVsC;OI(3!FYZu0!^oi1qe6wo&v~^8TyUUWkF_ zn|XHO7fE*1rx#E7zGS*~vAes3rZw?##?gWHPh{kp{YP2k7_1G8=c+lAu4Ubhxki!h z{v#@4ijH7;zNeu4G~#P}FgbmZ)`Tl<(BL17IqJRFU|L?-IlLN_F&L2!`AOQfN_*ZR} zorC$0Gq8iQv6GXzjj7|07vjIWW~BRVZgZ(2Z@b2TGVKy*TdS4K&DdD!q?}$Jm`^B( zjau5Md`M<<#I_Q5uRhE-*S&qE35)jB+^rlZ8Cx zE6ejpjtF>oA!B*sEK53Z1ZRAe#)ju?S+drq!OG`Sybr=lgCj&5d>Bc%U?G2!GRxT#gTH-6{bUT`6iD zN{FY4r8ximhzB!h5kP$c9rz9hm@&UrkyK~k!4yP+#zfe`+7#<|LOp0H4E@~9q~Q?S zLL*S@bEu=i@VqGAv5mWxSb|1vh$x)uKrJG_HPUf$Er~;J>_I>278Iq>A95IE{(bg? zlkX|4wcx^kdobPlz7I=Xbr|ZsxlOqGCaAJd^UN{SQp1{ihJBS|wXKVWM8q3NU;rz$ zze|c$+CjQr`pGWLiG%^V^W>2&vQ}gUn$`zQ3aRr}VKM}hcuYsz?opXT!VRO^oiot5%ty|NGT;AD;_x#eWMWLp+EA0lZEgk*3A zGhuz@636C|xs+o?lQ)=`&5=9Ui^#(Y@N$)4Uc;@yKzMAv+RHFZ3X{0$@0a94WhW|? zqK^ylDP3zMW#bZbk%DY-KFi)!iDoUMPADv$#VC>d9Wbl?2!sM<8)f#l9qh_J*5dLvvHuxU13tY zW_>DoPND9!0~Yl8Y!=rSTf(~oJ5grw}M6eTuJu>P#*)S z9=H;K$IaZc*T=pEy%h9nPGth5ff^*Vmqvyrxq>ow6WtC(Iq^y;P1qyx`NG^PC`7qq zhqw+YY?5}opaol2b=nmi%slKIo5v z%$s=*NDJ2KB1iv@rQB|bOuMnfd9y`mV(TL@j!RW_6}$qwG-WDfpL;TRYJ;?j3)c)| zxK0bfdDfi-Fj_NBx=D%2g|h8mVHR~Qn&R~~{5gu&4TG7jGIgfRoM zSS)@rC@gY1d86lruP!7=^AjSv(LhHk=sZIUkTo@l7~ryfP*_12>w^pLfXqkZ^8B&K zk}eK^mMj)f%~@AnVM>VWrp%OV!j}BhlD0*fBn1ULS&^2Dx)pd!z367s8_V4zAEB_w z(Pb{*Y0pr_$kDHo6j;H1dhGh|fqfEzmufico=qnbm$#>L8(FO z16c*UTv>NOCsBDY&C$ZbX-egU9u<%LYTLJ&CRoJYwgTmjQ5hSLdqgHbT6$kD@b_Ub4-Bj*qE>$uDKL4bL$AB$kKxu=Y zLvUlZ!Z~F2?`UEOmB8CyHaK~t37E3Xgo&clO$L&RtP_y{uLto1^#;rb9{7Yq10E|nbG7Ps3N+Na;LK6bs zwPdlR8h%9p-nUm$eJ1~T8KMN78?#oFUrA@WA!r1N+FS_MUR@jcZ$L^j!L8>U0HaFc zYtoFYSF5oaN#u#b*W<{Q)&yChq!wZk^)=0r?gZ`9fC2Y{W9s2}w^VwXS0ZQVm&S~f za&)g0{n-=~E#mI0KxIgyn6~B&mmW_j{x;CNr#zPyeu=PL^!Rkykpws6{nB2?`29CP z&j-L)w|W}*plDhKOHNLdZOJnPq56GABh*_A(uE=|R%|q`>5fJKXdX_8GCg*yRj$>h zNTQyz;uJobv8hNtkB8a!Kt2t1Yi@lcT{6w}HQ(6<-`cjNEB`Bl4L_DOHbXH%xuyd5E({2r<$TqaC;6kv#=73wI<{YbgMYkTe+TRlg|2hI zdtU1K!~)iOcD&n38(&=WMzCiGxV_)IIcn*|y?Rc^ACPYkuD2j}*!o7d*t&Mx4qpxf zIPte{zg~=Asd8uab-=d-!{gnDRv8d`LR)E$FjV>H*1<#?tCt;?Z7eZpPjq_yXcIJ? zq!L2FQugxvSqbisPHanMz%_x_F%u?Xkdyf3la}S%-bVZLRmNg;4)>!M^=yIc z1Oma+t-sQ)fCL@RnLa9+ZrHS2#PBPUqwB0Whpi4X2hK=T2PeMnH(&VWNp`kdR#w1nzpn@RuSPPFh%HsP!Z(51nF#=% zO0Py2z^V;RERBAHG;HH(+koz%>j2V?G@|>y5!m=5^M64SgjQP4bQhoZGxODU2)GXQ zzQi?b1l>BC^4RK@O41n(JX5AH=@!MQT^D5tD9mx7UY^B%NYO5T@1~ExaFck|lu=p4 zN+{?mr3g*ekPmd~6M5I3P5cKtcawH&@6La<10eYKYv%tZPW|V~`Je37!w;Oyr0X(C zL4dNt-vQxISJC1gg0ht^dakjAgR4`<+cv%$iz$5S9CED|6#`G!#T}Ymf+0*NOk4Eoy8oAvNP(+S+anxftZt) z%Ux-2W+Mis;T0|Qx<6E=J@pHIMlmG^PeKRz#N}wvE(VX!U$JMhK?vs|lcJ@V*XoDr zWt1XJkA@EJ|LDXfeeV5Y3qSLu*;9h9Pkhb4d9I@ljbxVFRM zhSWz-8DzXQ0VmuW*snAEHo5zr-o~W!sZ(G28}MV}6&{Bjh~CPWi}@;*XEbp<^u@;R zt&0cTT!00tQiGvsVa8h2HyHgZ;vuHKpy6qU$MWv7L)^vGWmbT9&({Mw59gJw z0A^e%cD;^0I+=OPd(fzQ0L($E!Kw`LMoms`;(;IQ44+p{)1 zoAz7almF-4zjsj!ZELsBqL&r6rpYrp&k|vFXwozlCoS6|J6;p5Hh?d)+B;OwbsbqP zyqCCfG^g4I>>tW}JC{!V&;kXZfq}4yu~0v|--%}GLW#Ds;{B+<-xi#UYc zgfa)mKL#*&c%1j&Hj>UA8|w0s0~8`41!$%6DMA5BCvHPSey3Pu3uAbaVl0}jNERR~ z!E#bO^NS}GtbHDu&bgsym~&bk77B(LL6Am2zi$iE2vZnBbOgdZ{310utG-byq*j(8 zj0q4@4e+kvar;Aa7eEmHp{Pp=^9NXv@D^hbhsaRp+V;}J`0urQ+w>`<;+_%VZFbB3 zj?VEeas3@yEPi%tj9$D)l2?nIuiBOiUUlHp7TT)YnKF7e2m7I0QM3*(~`%8k??FhJ`->b#4Kj$2JWdO zuUV2vYnXVKQMVm58#qS0?$iXgDCAZ~ke#Xwde+hd((lM>V z>OmYq6w<;pGLr|VO@aW7%7@uf!h@%6NSsi@ zYfhwS-VtDsXvF^oukK7N=%)ZhFiCSb6DF5c#N(hP@#yW*R1C>EL&RS^<`P2>grmad+%1Eya}$c!{@fkx8aIy>9qS7dPYNs z6uTp=77cNh6ieMHjFDbSduNK`h&j!OUwRY|QHSUs{WSgQC!{q+y9lI6 z%CPXb7ukJUh&Nd@J%`XNsT5KBKxgFPPS?tWDO}b`zGXO`#AUWyRjXtk2mbt4t;J{!}6<1&EiE&Rio>58^1MROScT0%V@)< zW0kDI-Sn-NpomKtShCKYgi&jFhb{!7ao8hknTQ~hn&SGFUeOKH%UdX-f@}rk{v(AjOE82 zwiBOHOYzggBg%jDkjMDlyMME~eNm3y0j{`&dhXNipuk(MY5GD_jLDUJo%@PpeCk3<5i+(xOj8fgBjBToh2n+%l4kT2qvd1I$li5V^=I&KCut z(~NdN0$PJO<&%_?)gaz7Qm!i3E;b*R7R#%1kBZgTWu{f_CtHX}c~6S^0|TVS223v{ zNzXADGWV~btu4(O7uBc0?VQ4f$%Hp#uGYIn5N{@DR&HlbAK=gtYIhcf&B@|xgWujK zzj=vj5A5qpnIlF^c}bggzi~#%^%++|_$ZSo${JFYye1LDY1|0`XD7*SB*|yZ8&a>P z=*no7B`?2P*0yY0srlp8EH9rsj;rOjBk}ic@?a9s6LPa;j}xTU=1my&t~&6qWGA#i zvuvLvyt97u+oQ(%*0_|zx;nNw`i{G%%dbzy6uxyYI`w$2Z@nk+tVeAl5$(zN*x8e1 z^o5i?^sNuA~b?45kSo{d{GB zJWHfx%JQpG)E1|+2Xte|aHo2U7+Zdy84rr_4~dWrTZ%jvrhHnz)iwKwL)W4cKC79J zhIM25fqTFANB!bObmIfIpw}Joob>nkHE`Uj6%c;$WJvYoPlJKosWFtvjX|_SP$_It ziV)H%X+|G;(He4( z9H+i4CThtu)@T0h=JY~c;>Bm3Awe`J-K7zDexT>a_V>^Bjy6}Ki>?q(>G{sVk4oK} z+NCPXa(BbO>xLRlxRdF3x=hkToiS5+M2&D=cBkL}p2hm_?a2Qt&xQZVJMw&3@B>iL zA8%yR|9nUOPX+U3`ai1(3}3&a1krIe9Yt(e{i2L#q2#iPh%?$ui!&Do5H&|RU*mSx zayc`gj{V&`0|cn4PrpKV0%ir=JkBS#=M&;zXhbfTZqzgnTjdoiaqEt!bRh4`i{iC^ zL~xipZ4_rjq$#kx3#3mp#T9lU3XN}Dr2~yFkXL%5kPV4O3!_nI=Xl$N?Ow5i%OKH4 zp~>Rlk~pRnC5Cuin~1jDkQpX8){!PtMpbQEzkDL$!H?LL$j%VtLtGSQC-wco^wnkr ziX2`}f@}&JmjW5@+#xw(V|?3{2x%NBF(f)F8s zT_v(F)7)|HhJuXe4=$m zJnppJx>-%VW&F2_i}I%77S%#5^LfkPc7oF%@s1%ALaluaOLUro37G5z?9!s@X3%{d zaob8=V@{;mMI^loo@Z({Go!s6a@=SG(2eBu($-d2*Li0V*tmvi>1T7pR4uLlFE7%0 z*<{{LZss>CzxKOy-|6 zd_ZkN`|Yr_r(wNafozz2cd-GMdk*QUsup*;VRt-GTeYlmlN$i-p4~v2?T0 z)Lj(kpIL^7 zTr?P{GwC;#S2dNMYzuT7`8HY|>e7bU#5SUnL_q{Uu>*PQ)SGk7wNw)6BhTWvx7rs} z=3U-Y*qT``J&G?FF7s#wZ#51GrYn1&UdlWViDT3@77=n@N0gHwa)UX~=Tb$dW}jok z}eTpRK|yW}|`Oy8LVy;cTPD;R@G{H_*4SeD6WXj@#Hz38SR z?@8#@vwqU{PeB9bi8eA5Ai()5{p?emPcQ8XU36Y~<{(Y5nKoH1D)v=`=Z6f(e*LKs4 zM{I|Zg^NXhA)_y2ZCg6HckzDjC^~L-00nqjNoSbdI*S(q)Odgfg z7;;Q77Lv&Av0JFu9>2peTID4jKY%hy+d+7Lnzy4JZ=&JnB3JQw@p||`tUdF3IR~zl zJSF3JGjwhAW`{I`|f6Ou?V?>az8aG|x-bW=y#gd7xn&mT`jF()a-XKUp#U zEB}Z8$ty<8c4WozkCAP5)qlQX{EO*>j;-zb5Ux*;y!{L|xw`T;Zp?Qi)t`hlo!TPS zJ(x``v3zSlmLkPS!|TCZH;33En*^sjB2%TEe7OWGy4*MUJ%FnWuS672;_U8zI}%cj z{HjtyROT^If6*{k@o=xJ-RoCg*AjU?olN%L0GmT*4Q9>&zF=YjcI8#4p-kE6kJqyU zPGgV*>q!|)v89CsVrdVbgZcZOcM|qw_Bnm~ErxqTO(sUu^|rd%SuYE@oaH-wQ^)o; z4%-Q%D)-4L-^?Zx@%dyIV#BE^>;eoSb0^*LRLCBm>YO)D>FM+0s@1egcWq)-{wO0; z6DG>f2CK8TPMbAd;$)lFsH0=1wx69p%$_l=0KQLLVq`3C-=lM-ZP zi=(%r&_3t5gD?r7tPK}kE$iSbw>28~ouw$&#owmFIwOg@f>s<6)^8Vx$`e1;}f`&bNX;!k6q z+gtBTZH%6`LTp_FXFB7>DaADUt3!j8aWcIiGZPEiOHyP?&4-)j#J2Jc;a3@%@1|ow z>5P`mP<7ZRczLU}o@JiEDiA=ZAwcCJvj9AC;Up>#J7Kw0hQ_W-A*#L|?3$~mb&mV7KX&=lY=oXFdX4l( z=zymHRQj@Qu7{0;?_iD1jLX4lJ8xUHjoM6c-{;PgbKLZd40LJk&wW~xupMpoliPN- zb~YdFSy>Y=raMjR)0ejjd|A@&RfWY$%^`>&t37D->!fsU5{AZ?o!htR-d87Ex0oFr znZ8Zp>+h?JcXA8w%*Os7+ZzEF(9Is3ql}5~*DG{2tC+|u(wyF6(x;9h4!_shFVwvyrk<%!j#k$U?9mP z?f~To&_G&1z+bozEH}t|5k;iVly=wUDgVd0l}q7>{othX=otwDh1nybCFfSwe1PHn=rYZO+X zK7CKA8WsVay{|vKauu9;RP8NLJ#PNq-(_!9hm>7{aCrt|E#Cow0!sFL1SSa$m?^y6 zy#lvaNnkt&$M}7UlQ^AslaG{_!0ZVjh86?C6b}@Jq}UsZYG+Ri5&9S)X!7hK;f=hZ z&m|aa+ulzu%Jx@as0(S?dNVy+dK+Ll@_Y$3idRktBhV?>n^4f+S%=Gz6q)E20j{$0 zQ)MVSBYWP#1KMFYsP~GM!ND>8yKL?X-^bpy!x>KeH_G#aTPkV^Lj~=y zjp25^NWMhq+$Q2?^qH#&ps+;n6Cm=k05qic*ft)VXrg>-@xtS;o3z`HHtE-fU3@m$ zg!^&ONdSt>zh(NBQhb#vfAsU6ifDNYvi;kQ7jh!aHyN1PI=_CrSn#I3t6jI*iO2wn z(1;=)83iY>9S9=`4G-Z)kU)jd$ZtgsP8k_5n3sIT!zASQxu&1gk&pxri9=^SpsqZUA zDnk5hR8Q`qyzSs;CY{?G(6e_3<$}o-8F|QJDIC=?pVQLL7Azi&SKG8eYHYp1v9LjpN0S>oGHlQQs=VZvZ3Exr z{I}?Q2hJAYE&No&AB@}Va}EVHn%)E_%aQ=Atk_iHGx1xnD_8~8*iWbAcUN_;j9e+1 zT-0hM7U;B+8@NrMTL8DA3t*h#uxLGgpc2$%qpu`yLrv55~mhipRrq>1PdCEc;0OHuL$k3 z(N794A?BDZ$h)W&XFL4D2ADoGw>Y~(id;=FoM$_@06frR16I{B<*qZgJm=mmin=@C z&$yf3uJZ0*W^iFf=NLk4REf|cGcbxMM;LWe=Bx2yrIm1 zx0pH8vi#Y{bEy{ZwVgahitiHiAb)R@Fq`z+_n~`sbfX3#zXMz#iRCd9MRDqTlFhMy=kD~bWY>KEAPJKazcX@5!rM)(NAJMk9)LtvMr-E6dwP0( zx4c>lU=^>kOGH%E9EM%;_|%xcGId?l;a%GF<7;FZ=Xrcb3d`?Kex>crlJWK2+w1%s z5eH=v`EX)CH1_Ea+ry_-)oKc!2G_S1_3-Fb`Ssqz2|k_)JO;Zu9te|TFgnvGpFU@H z5Lfa2#)hYhEai$Be7NbEJHvJ*zICeFj%#a=**2{k_c*kQMoqA&j^|ALY&I!T0rv35 z7e_a->qe`taYV?1oOaW3Om8y`9SFB(bzFb~$LVBd5B|unVQD?>tQTl(3dt6z+`9TB zlw~YexZZ2P&ms~04O8TaEZ;Af%thLE=WTo~y=`iMV~xBzO-r@ZrAG7R4etjImIP?t zOfACtu-1TZkh14K0KTM_PPNhv3-LL+Jc7zjL zH-K>kDX2U2J6Z#}5_7l8XH620dX<0- zLoKcxka!x1-;T4+Bs=WY3Yc_$X#&Uz2^KMNrbM20T{;K@hS@K}JpN68{s7X@(GbCq z&Ox671%#(K;ftxpT<`Tkgnd>o35N3Ux!s#zX5Sl~FGjoxR^8rY+=$@Ss)E`B+>ikw zbs0@S-r!vo1@A-Kq7GR!HH@DuMvO~9!Jj9;yOYpCn)?4P3=OJs@4bmcosHp+-dV-{ zVGJ>eNJL2$+{+JmVX%RQiV>3P!qSpXkEKLNB8V=q>h~PWQb291Zuv6P;$N7kk$wn` za;E6*zf5{R2!o!jx`LiG=cUNWuY;==h1QoH#7|z1yRQ)?e_Jss}{6>jRZ2 z0N5aqQNfSL^8ncEhboa@4+N@$y1AXXe?~vm$rX7P^T6;a!7(30pz>3pocM8Arw2a0 zH?W5SE9rb0(7F0+Z)}^f;q#-+a0?{pMh4IBGn50u&2bf7*=<<%DGx$qn=u(5()2Yf zd?LV_?#*pt1|9%789!|74jGk5pgEBf-P_(|F%QL?mxdq70g8wOgwjVYDuPdLr$lCl zX78HlW~7)7?+@3{ZHL#XVSKh*Qf5%-z+^cP;Qp4?Prt*@Tg!M~e?~ycO&x##E^Jqu zPh%*)@J0B%b!Y!p$QA%hn~#wyMLzjgXu1nCx|coak^zd>Z}=2>nB%+A@bKD;^Pz$LCfy~ddj2xJd5t-AJ2m116gh4L&94bcJunp z5hIUkESUUp>!f{m8=A)s0F0M|ku+Qq9uS#s!kpq|U$m5$=*7#!$Cx=>G8RDe!VilH zKRR6U=sf~5mAmpYV(wl)BNk6z{ejzH?){jhXZBj$V&!B;lmaA|0|M@EL-+AJ+=kVr zucoI+dn2VHxw<2x%$)f0_fjpLWg9*E#?VnyXO$NEW{d--<5K@%98o1KvG>>i5sUa= z*;oBfJ`l47Keb4IWMJ>q5IPPRn#zSftEEaLHgl-zYQ!$^ z+)PY|5V;glzjZoF@+9c7!}HW59%F%cVb&Rp1cIA|pXmpuz8PX0F9swND&^YqlHidj zyPqZE@Vy@?Ue+E3#{_c1iALR8jr9IV``uBTlXargZC+ODK_&|jLS7>!+hften%6mb zzcyI97wGFSNMO=qku)|JPGC1_B3jQTqNp`w-U*KF$rOs9sWH!1ID@w3+~|&3KnT?& z#|LR4e}C|NwdH~y#*dKflY=52L&guE<(3t3NfxsDW$MD5T+CTb+2oRDe|YECMsK6sl!@~g$m!72k?;7#;@{FMVoMJH&D zD2P!&a}F5~)QC{&v$LC9xH!~(`Il4I+o}UXD6j%H51Zo#M)$rS*h|lj*A`Xnr@X-q z7kOX=I#7%5b7#9+0Cp}xD)_Q9&~%!=*0bUbVDF<12le?mYAZf)s|}=02;6}M8^9Ez zkv~+C+M!;5#T-z7wa&Bl;4PvP?y`8T2)f|<6Phfd$;u=IH{0Md=%{eT%Ml);6WjP4 z&;=U(!$d?q!Fb(VR&-Z@|aBII!TsuFH`-pHR<}dXyHhmOoh-F*$^~EpGw`AF$w6{y0MW4YZ zsBSnTg#Z+^9JYIMM=vZd>7oK>=NyRt8#fpzKv`IN|GK%l+z`SYrai`5|p ztb|N$9J37f&!k!1$-Mq5q%@S&ouL|iSxA7vo;tVt3~*X`u8knuUWmN}8FpInhuCML zX7lX&mI+ye@ky78)Gipf`HnN)q0S0|y5Yp&_2Tn*aA|!0g^I@qz8})Dk6t6re--)d z(^bp1{)A}XygOLda4igfZf#dImBd9~K4qqxW&O@{u-c-tJx?h`I-SIm(+vA@8WU(r zFJ9B^-_p|p4Ck}LyW#^a=4&0}v#O(=bgQT$hF&~|VW{VQTl%X_=@44M_&AknUs}O9 z66hdJelUqjt^DI)vwUL=%Kcsy`=ZCAp{E5_EarKLUKii$+JE-CCkn5JH-+Im;q_b5 z`YEL_G;E!uXMP#Cs4(^y%VQDGE-&yTAu?*9bIO0L!}Z^bNBvhWSO1e&l2}#AR~R?| zfTP3zoL&5<`OamQj^mmt-q7_s<&<5*#RbO_r}$hP(;)6}6Z2^!w(UihE;Rv!GNF1N z$CGXw-iG9*QM}y6&}lqenp=jhk%{>QN_$4v?tX5+>k21QGh!c97zo(=K_5iyK!gvE z`-AU%Nlw)fY;C?)k@jC1-2k;9=^tY8kJHoy8U3fVyMa_2h*YylF>8VT*{HOo$LX9Y z^N;CZrzX>!KC5kNQH3Ux{cv-HT1km?8MlWnwGJhUvm>jm5tOQKgR~lystcF3`A?jP z%~pn3Ft+4gb4tdknf|BP+w7clySb%Hwf@t380&}}RGJK3k*}`A=Hz+t<>kN}tZPXT zciV4D#(VQy3yV>ShIJ+T)j8*8qiXGzaOpwOaql;J>Ik%vq6ElPfa2ukgs=gpu{oz$yUp7kcFvXd%|4OXtTM_OKEOOvG;Kpvl@ZhHI1n0U_$9i2&acNeV@qh1Rp z#v&m_6eRsiH~VznikdZorgRyBAjn?~Qhp1XOoAYa3Mj5grwP2MRq@_B^ap@i5@a;I z#^fveYhx*->spUys84of`Ui8+oc(s!>Z|LH!Jw)v#A)gZ=qBjZ&QDiblMJhR4ZT;M z@}4m#X_49W-1LqQm=S8yPw9D{>zi}T1Suvt1K#po`}36%j9#&hoU*~W1`WBOT_+o}!N?Q$Bod{7 zl;T3lDG*5>Zm34+TS?jO! z9)sGDJAt;Zd8Mhzkc)b@7il)XQGxe^H5_`}&dvVvX|`@^*umS`KUM3fk2r7nw`>c- z#fZNuG5!#-O{w*~V!6FvxC!3%L##0@&DA<*A2-oHj+@g{CKp?eT-#3%qxToir$jfvSZ95p_<)60VAxn~y_F41jhPalo% zE-M~Sk$x*W*PojB;Efy5jVQ=72#_KOiOONB#(?$UI)!m0&=^^mb5C~uY(prf5a0tE zU)q_tkW;xD;7%PvEl=wis52h#>B+tkksPO@+IT>FOmW7NSGR)!p&}Hn80erubsb=) zUP19uU`9Al3Y=eh&Tf(O7HQp_AWkhCTPwDpxI#k} z2RN|Q4&YUcMDIW}+;UE1!*V5r(GQ-6YGi_2o&Y~z>+Vl5kxwqew}U>q$0H>xRP8O2 zmIT{A=Y=(^MbIoM9=@O!S|h{!7>NvefI~?mV~pOtzTt)*jT|O?z$FCk5(SD0BH`G0 zcx%D`tb9O_DO~YZJiH_3kEkPtU~OcC+(ScK_^JV2)j5I?bzVc{pb;F1nOsD{5MTaU z*tJtcCp4(%rJ8fcc*ik_@T>wCx#hk|tv$@UFc|m(F|QO_z09h=&tKcJ@N#%ft}eRZ z7j-2hJQc;D?Fj`53l#!)fJ9O`Xf8J`^89jr_jWCKwyvV0C>RjW1nn)Ncve? zp#TBW)}hG1Z5qE{d1Q!o=<^!gT{V+~5B%1{`?e|P#F!#Hu#r>$q0m&6LJ!MP>W22C}1QhlloPif-|5?>T1*+ zM(RpDi<(pI&Oh;^M7aH#)()?7{xaOr?t~{yHz`1fDV;)7O!;p<5z@$G=J~7Ji8}#w z_}*B+o8qy@)T0*yuPtshcTcB@fn&)N_U5|nb!UOr`z$Fh337P8v5*R?;KHf)ar_kN z=L9KlETpKtvCwC!qvUZsUu+?Mr|~5(cFpO1|C4HgMoGsk_nLwP8;a<7uuGCHVI(0n z5j3lufMg-%FiXV zg8ujvMa~t6JXMaiE|n%HGj>-WS{dQm#k9Q`CAUbvkosbHj04FS6n4OotcbtF4cErd zM)1x3804ZO&dH*PJ*(xLg6nZE1Yzm@y_ApcsL}h<#~jlO^NVIr*Dne0g7uV?WLuvm z44rvw5PNm_xL4N}Iq-MgHRINw#yt+0jx7*pcmn#eYtd6s%?CbN8 z42BgHafoURi6>~kzoVgBUTL-3Vn*3Q7IJh!@-dFI!9R9)7hya9quE|wSZ@iyyIoi> z=`V|&1?$_eZo`z#_~O+5?4b?}LrlnDFFoje!)z@K8w2&ECAg}OwaS(=RLxE6C3I-g z_qQlgft;liF{^Nm^M0DP3`}2kh@T0EdDP0I{W#}<(8L|qwYWNXr3lhGgrmV zGZqV(z^biETP2H|Pg``kiw^Irx=vfd9s>4_cnZ&0T)U^lK{4da@}c&-2C1X0bpCh> zIBM{v@Q+`o1#}B-_Lz?QOyv)8HpR~85q;J(U&$&NYHR#H_!=`B`h_75&KQZ$)40yc zQ?M}X3@~?2)gYPtV^amDRbmek5g1I%OC3gfI8C7#!hjw~cEQFi_m1~aF^$^l{Y1fq z5~3X13*y=?*ho}6#w`iK)&!fBa0b=?m?rf<)5L|_^JmhnC#hbpKQ){fA`HgL$uV}P zHLE9*j#@780OBC4kPyS9*?~LM74f*0O&Uxz4kD>?rBL&MI^!{6-p7uHI`B>nWjCza zS#Vn!7{b$3uew5!<$ik!e0RXpdD3Q2B|v@dGkApMV~jY3&oP`_`{4=k!x!Bsg!3lQ zqSOcTB`wO*4p;w4TD<3EX8%*uTNas@bR~0mr>UAlrTL?l??K1?j;)qw{JmUKURo{B zKY8rtG3^ca%vo^D=`W|q*eo||v+(|kgMYShY?m{i^pvC12}n1+1@N%g-tbt1fg?)* zN=4Pb)0tCn>o|oA>&o&3LwnrhNs0@DQejb4q1zafsZ5Fk>MBsu?keD0c-Ks`S!hebbfjj^ zr%KtsG84#2%1VJ3cn<;FjOHU&69SysWe~VNH}=YPr0?&FRg z>CL|X3+(cGYfkNa_J48rjX{gu zo{ z?L~}M6WSeNU!>W;B$x~wa)&-pI_7kHvMU28UT=b}%xT*E+u`HAS;u_IG{)EWEsc~k zJM|?o+6;-wyj}b_)O%6R->uqGgFm4pdKq{J_O58(&-feF;TF7 zazcl{Q5gO!3P;8*(c`T|aW6Un4ndDSUWYE%d-5(VTpmeJkacH7Zt_TX*hF%J)fTEJ z$uebLI3+y^8KjNc%q%!gbY@x#5EfM2GQU~n&SR?bnn(jUU@mqgMxj%x9UOHATEe44 z!XamJNde9!2rhsfodHPY>(dLMyCY=$xJT0Io2;^MLZf7pJ>&^8Z#dEnwevekcN-1J zbMZ_W&g82dK{mP#H0{RAS&h@#$NC1@30Z`dt;-Es?bZwWqNK=r*jhuMLNq%-GegXx zbffKf3j&&x*+NjEHCiJA3E%DiMo0dCJ2?M41=s)12j?M4sI1p7Rj!_YlY;$6gz`TD zIhWz1p7S_x)WX}*!A}M)YS*z+UBMI+#A^T@BGV#GeXf`=COn1R@O|OHJgC+Y7qv11 z^5_47<8+z%PdH9u@ApB*eS_|QaGb)U_Rx$-=If$&`GpK_O@I)Y97R=Us!6bjB=HK( z)|#8;`*yV}ddwmnR61;~SLyvq@%*2UTGA2wwB|-BH+tkMW#Rj>4>-C~mlS!~HxQvy zb_J|R^2gcw{Q}7q2Es~-COh?nH^f4Mnyi7*J;b-$s{;-z-NW4O zTmHC_8Ml%`aF}++yA@b=vK&dqIFmqf2~H)5{hp=7k!Ddr168pYYk7=LL2Y5<#lqIe zy{y$#nm&Zfv1BNART`iiOKlA0OFeN~I1Mn|)3GLA41vd#i}CkhKWC~*3N5wiS+YI93+W+G(nB4RT;}!jgbKo}6S>)hB{8$dcOd@L<(1X8Cb!I{IeWU( z-}Re%3wSQ1G2vC_o`HCRV(r<(e|{y_(~QG5r8Ubyip;mM_ zAdi@}f?>?%H&xs7mI0<1Y(5H3-f+5$u#6Q`1BgU^)2N1_>ygzcD&G1typG{jmrBEC zbrrbXcE5VZ+ACnnsLv9?>w2G0_!57RnSQdLc%1e{(O~d+*ckU`YHEoh&UH~Ou|%-J zrZuXGJ@=O2x8zrr^Rd|#>zk^`%mU0u;AioLHdBs;FlxT^@I**A4XC-eqRijhi825WUrFt!WxAd^Oj}F2GIQ zM&AHBuA96(xB@(2y8;O0VbSPcFi!mQt(htKUNaP&dfnvam;8%$3zSXR3e`mmzwU%U z9mMm4m$Wt{J+2j;bp0P28yEE)muG>Q_vaG_z3v<|?M;vgLH0G3&^vwPjYd&Sq`=OH zt}{B>f=zFob^9y6BmZvOH{Lb$P$8k1ke`3*gFke%_xq zh1u!x;(k6ry1&n9x5ZGW$G_Vt89%t?r;M_XH$fI9C!mK9yEsuPh;AY~^@|Q|ttbBP zR$l*aapKVJ@H`^+!~_bX zca8*5MMfI;ep!^_O4mCFb?1@B<(05FP4Xol-po#-AJiTF)}=Ial)u6K5akN9p~y@h z=5!i%^6T_C5A=XXlc6#vPaNlRy;;lC<$YW(-1JWC(j1$}33;wiX-|E(ZpsXKKC=NZW>cdH45J+snZcB{VVT?V^N68}Wv3~aW{7&ddJC)`!n#ho zN|!2=A9~wRg!sC~rDu*8oKHF(uiiGQ+_))M*KNp0G%-IL?aUNEM;zlUV|{3jZPG5W z>pNa}YyH{$qkz%g^yzNi>d(wF3?@%V!DdH+@~iX#=X}1scmmJP@TC9139lUW_9J`; zFuV=us+lcJU`cL3;(tkq_U+&158p68+3B@0%n~>-GoKb_cIfFXD zy%S~*fM%8!w zw#npIqxpSo<->Jzsg9DRuj`kaEI!m(zJhGw?AJ_8jN&7_QHFyBiHK|HMM$MiX1CQWQMo%u(SJHos_OF`mpZPMA@ooJTc6A}A{} zL)-_`W7BQ=d7R(Sfg7pr>;AR`R2vVkb&goeaUL?0xCWx!<{$n9XxBHLi{S&W97^E{ zO}6*FL|1+`$$Ls(Ee%}v30HccDL%@4>fIJTw%=ZT2z&%RWZ0zN2biu%Y+W{GXAem{ zM|rPo%6M|?-Y^BCeOy8<4_WJ6#||#ip{;^m+K;((dU-TDJ9a!QXL0*xXaB?2ods8Y zD{mtH43x+RaD?4__&EP5md1iiM8AEoq5eUEa`7Or^nz@4VcS}6eZI+ycK4Cs#_8QL zLl$yV{Be!`As~240bD5s!b%>VOKGMcs@)p+9D!f(tB58c5^ko@0yr~@Dud|)W#Z-V zWIwkXi|wRDtGu;=+Hn(5YsJOd85RGuK+@f0d(>K#O*jxPty<9p44@8Hw)+P3gm`E@ zL(yFmIG!Jajn}=Nz0s_o5!2QY4KTjraK=l|1-1>R$|8#3HMXHF6JT%y!ZD6FT0U znPG!g+oES@_)?hKgAKzQoE)gxk-b=td`UVvT8ae5+_!n=LFS)BuMVbWknu?V?d9;Y2xI-V9!B)R>MMx_(>5{xg z77;7VGHyVsp$=MHbD|LdCAgJxXjqnAufp;>^knp%f625iDxUKjQWWy+os5{M($52x z_unV{Y9+2EV+Jz!)>4SLs5STUHp~xq|8*oZud8dCSa~Jb1i~3cMWaF% zns*8^B@_>w#>|`6o4bT^yl@o*p9YuX3N*J9FWO&~Dnm|8u67@v#4u&@MF=u39-fk# zHGw+DW0T|@GSzUjMwV+3j1Q9UA7WXadv#nxjtX zhRg?ooo5~D-a}8xoL@9wqhd1mOT}c&zXWN*Z6$R@S(k0Kl!lTSk-azUTaV94F;yHI z7FRX67zApnuV)*yp0bgcV2G?tKL0H6-#R@&;fdMlcEGD=@qP8eg6TxvxZ`ckLP=dR z+hg&*_&S|k13qrGAHUW5>a(u<9VDiFDQjP;G+Q3@5o9hz^C+U1I|Ql_6+ZrqPzmrH zy#M!Hh?7U8xKVl4c~#c&d_Kat{+~aFFXU5PeC4q(7Rt`_FL7KN zTLv!{dnc!WZB?)*eyoHzTL44Ezm#0kq8e}%E+FROcUZvdm_!=TJjwZJm%!2Iouruw zqEy!?j)M-itIp$Q)6MgG<5;uhER=;-G$^l6NqVRG3$0=1Hxr?1t7#3WKUasKx`L=W zL95glaH?6N>Oi&n2iW+w65o15w=`g{>R8Xcdky9stl~9#Fz}9n!WHv_CdZWuBQP3J zk(g5f|5j1MA)XUT0A7Lz((Z9AJ5fSJIs!qLF~j3g63^yTBJXx83vFMtGIjmSSNZmA?P~P>Z0E>yS@OX(<=%%?r2#PGUH-+98O308{A|WQ z6(O}C40wQSLRN~+#0AB2-ZgkzT+U3eya!+WLKGmL`ZrkYgWI>QBm!~5KJ*be2Py22 z0zuW2_x->6pE4Cp{_0<}oAq}foDeAEl&SoHlapKa`ev#TPSsKsT0eEwlH)$_>-OQn zD#F*sc##*{RrjYJO-u9et$ z8$!)1kBv{&{T3nb2B>T)d2CXhFo9bR4M{N#aEM|&Jkkl_B#;fHf2AVSeGgfBtRTUo zrt;a-FiW#i*YD%y8H--8oG~DoGOUTXmDDp~4!589%K2diQf#JL%3o22H4S>of>d@O z5O1C}&p>o)9FH|^mMu+x^z1%-b1-vN@v;croMl3GFcmiX76`VCYBCUJd@Z0TGOb7x z7)@~&`|A!*|K|?R1+k(+Vnnhyz*n%s6Zj#X$*MI7Q$6r~+omS-nU2*dtec3<9;#7O zCW%g+-$p12SgVLYwj89$64eAMttE)oi8@O=k=btV!zfzqBGc|mzAGv@id$RTFnwP< z^ZlxyuB!UH@Jeo-j?UlDdC?LQyrYn^wREsVF6E=evn5#^6l^aN39%>KYPdE}++W*( zFn)^s>>N_PWwE3VA#vdb#kG35#3}mZH1jIn*&lMgt6FD*^xKbK13iNKcKj`&hDah| zK2IXNqd%BE>Q_16Yk5o1i^_)WfDnH4PISiLGal^29KS3h&-CGBx9jJa??Gt<4ru0b zQ}8=jqC(^vdkaIV2NTl{)n;rV0Xq^UX9BV54tmpaDsjz_Y>7_M!QI{Q4`4m&rY0^< zCss`;e6q7;fA%d#dDb=V`F^hXG%T0Yjll4@W9g|3N&8bJM#E}p(XxI6ePQ-|K{k-t zCoyz4fEMtP1Oo%d4jYJb8d9idB3Gz~wlBN^rdDY9C3MO76Mq+#56qYv z(h0TfTRj5kyqP;n?UvlWWU@kdPJpI@WRR6p@KO1q-BZ)5_NMjvs)N3IGiQcPjc+YP@ZirjqF3J_6LUK9rnzYNV zZ+F;EJ9pT)1{(XIs%d&CVf;pje1lY;P`}mS51{U_Eyy4|#}O$^dg@1F@qwuV&5Uvu z?_3l*7kO-Up&hNesz=nV@A4(JqQRy&7(yr zf6n2763`?GwJ-OlPkl>_lM?-qq;QgnP-ADT1Umo;lki#*oOcnqUcDB#X3$?XM{q+d z?{IJ%tvoD`;`VyA>;LeL?s!6KSQxP>3{lCUT2UCSI!RxQ+U8F72lg?uozw+jve_WM^XDj+jWNqp<(! zJjB!ftXgA&0q|tlXPL+#fZ$f&e*H6{^Fr`nVW$2&UyA?EsSU&Nj+%xqW-3zk{~0^> zkD~h*c1&ee{jV0OO2)O^+Ht|cE38T}D5=SeB|9x={OE6^(XCQiOEMvYs--y-sN8rH zV~&^xEOVLoDN}PD!Wtft$6kWMcxhN|YpJ#ELiJRjRgD|{0XILOFuZJ z?lBB9T<9KLV3CDtK@Ac&dJUz(7)lHx+*fZq@*O=V#JxWzULCA58NG{{uFE1H z>iZ8XX>ztiCDh9>CO1E2rtZ9geiD_Pxu-c%MK5h8F|q8jP~X?|cQ!|EI*Q6I#whE# zAz5p!*!Op{J=Q-3Q;F_}d%py2@s*^>zeawMqj4CSAznCxC1!acncZQm*y$oZo>^Mw zW_z)Xr=_CJW6n}$mZ2Ij!(FSt(dGGBcF$yODJ(;m|9)Xzx^D@JnZ#U5bq$3C9G8}{ z80k)GiS-e$E^Cc`e)K-o5p4-7Ig+tL8;qah7A!unQF%e9+NxcmsxN%cwnC<$Ov)8| zzb}PMtN7!RK6M63AJQL$g=AOQ;NB9#R@sZcy> z4@$6oS)SN$!f9!R8PriERyI~C?I5&zN2z_;xWfb%w@j=qM6MuDw57y66)F&O0fdN_ z&iiqy&$aj!jZ=6qwn2L$U#+;Ax~m7qHI7kPE!+J!@NbvPSw|sNO$nP}YT?I@yP+ zX@{83J@+l+ezcJDim3RwHX1s9>N&zzAlUBEP6qEn2jFowuZLZ(&0lW4!27RGW)y2z zXNZ8=3F0nYK5m5xk9yT0I9`-r8UU6!Dx~seVfw3aF$0UJI+O8YSY>9v*+e(u=`5fh zlGTBR=QNjt`6ZIRVz4h$*~CF*Uy{nz2vrn}6BugALjfr`(N0EHR5SRj-o{bB9;{!d zo~B-hR-GR>{UO_&=<%~{_S=jgHh)8DZU8}ilaT;&_*_MP`a!mNJhE6Gkc^-Y;Pwi0 zt=y^j)U4`N{?QYmdV^`%naR#Amc$gSnjKy_N4Lt=>K0heifh`oS$#DNfo`77Jx;0E zyrk=Wh@}xM{pxOXzkeAnXVGaFjmGCgZViW!Xyanw1hYugBvaEbEVp5I$iZ~`+-=aE zJ#6|&vm1B2p_75foFi>*mfOo4#FoYOQi<;=IarRjAc!d{Ir5zoy!JRfp!bEdhC6lD^fLLqOu)V-j5H=2sSsF_zG>h1dCt#Q zrm=oW&==;Vm%KmWw8igZqoFRGQ@i#m|s4lQdbd+bXU^+Lo=Nf)YMnYL#U z(3>!r!2c@7{A9i1p#-MnW?iV~!e7ySkEco7mJZGU0sh$_%{&p7al32Q0i(ZvzViLE zpy&^~@+$*au&~va1uRlLc04zjvP$MxHE>K?p{ROy!C=9Kn3XxlB`?3tgZI-#gHsIX z#Vj9(258gZ^r-Q~Y$f87Y*Sq-Ow>4WAd4A`nG=-F1q{0K9ncc(Pug(!|`_!WTZtiD;{Z&q^``oy~+Z7SVnVahD5@*G=qODX{1_tlv9exNQCI{N}zHx31p; zxHTL)%e!ZC)62o$XZfp7)v}lF%RVP0peoQ6{47_xZUo?LLye>^#dq((Gdlf0i88sC zaHso_2Vm>_VgKkKF%iSK7JO_vuO|MI4om#S4Ya-k78*?$kV_XbC-b87S!1UF9Yx?( zp(gW~yfVzlO2U{-;siYF9&91&Hk|?!F^D_N0ny%F3frvf#U4grF~||lj^U4)^m}U+ zjdcW;xqL2=7_`1j=ZIijmM87_YKnJ{7d-L+N!V%esEL&Yigj1?tH?5)ktnB<77zS( zya+T>W@Z}4ELhdqse4Q?tiuzxJQc%xRsa^cha~K{_|*78Sw}>IWlm;5njK{#H(7!u z2VPxod3ovKTT6>I{A_Rp?&SyW``YZs2zzdD& zz{^|9L+>E-gh00@Kgwumg>@(z3*9ht5WU&q))YVGV);e>?&%)f(q?CwYo`*GyZMh&3W&{1p;GAthp9Drv_(^|s zbIA1moI%0$MH_!wl78)hqT%4ABCJkZ2iG2n7~QQ&G4MS74HhvHJcVyxhFvMN2)qQ=txpT<~&aOC()_Icc|qyAQOslP_Qo;>++w zqScQaiYsrPm3Fvw=OPWYqVAmdFKdvPLnJ}FfST`Gj)o!_jZ_OI}yTXQ5>zrjzoCnp_ z>bN`Ozwkn)Opu5i0;&l{5dtSDD6kEk>xHRJY#ZoE{eaE9gO<`jFQ2z^AWq z>NKd5+B}_ZT%p!+&aVa7+n+Y8Z{fZ+Cgj*3W}a@|pHG`q9uSygm}8j+M|`TA{3?8K{k9DmtRrP5Qmkn7 z46$Y)%IG@vUY_Y*w^eJ6K5#|JUhQDh3~^YW@3cDlFDKvi7&Kw;lm{cYe^uyG-M0R~ zxTcqrs!7>TcvN1P5S2EmN%{4A9eK~TmxrnjDY!H9i)c#n`9}O7MAKq$Bn;@dhE*w9 zjk+g!=@wQYFjH=en)JPp24}jeA?=F739(K(N;R^L4yv2Vb}Hvv&n7CtnQ+=6kc zT3W9;M&?Xu-=6wE_oclozEQSB0@> zXGC@BnUm@lkO!T`oL$vZfOLC_VZYSsu=9_G#xOM`vPxSm*)=TM1oKpPuNcz5pp@nz1dVd38NILq~#cR$~{fb$6Cl&)okqO+j-pTCZ^RZu3Fk zH0^!-u)dh4@LR3LK@sL4P3pJrY5IXUd5jqli%ue&nf}_aiciqp_ZsViE8oE{4!>Yd zfo*bLj$Eg}e_>7`Gk;-DYL)?pi>1$5J5QLc01QISyoj9Lr@A62lr!?+%#@wBz`aTvTe+ri9_V#YmtRQ{Q)N& z5MD+#Hi9aRwU`}@BN7)D*7kH6|UOR63fG6M`dML)lZ!N;G8(( zVR)vT+GAmiCm%Dv^y-4^rDcFb2d;XGLN>Di45rC&Sz5OT?FzWO-d{`j~`)-ZTF`Uqjw${rJlJ{!)C zH6pi-_s%bWm6ReX)tpYg33h{HkdRe{TloI+f03{w`p*y3|J8=z-+6}pca9_6dV1*V zUnYo~jsGT&{L8i|bKQ1T9Nqt~?5S;>9%mXBd{_ZeVKp8PRJGJPXN2A?u_;QSWMTnc zn}(EzE|_g#eH;5r-9+yI_Bi?po071OO^j*Ts2OuTxALS=6E2 zGy(;r46rWJJ*nE{oP7DVcm=n*=sjDbaMI7GKp|ggrXH0p?^0>ID~kT8rf_%cJJI)B`P7(5k({=sS;atY36Q0r9AR|C53N`w{}?ax;e0kan`Eu$UZvS zpFxL1a*%RIeObn-FM*a?(*zeIHyQgdr)g?bbS1DXuyyYnDC4y0AN6=IZg0+SKb6X{ z)Ve;IgC3Vs9^T|ee=fF}&w;5FUy`mAL4g=Qg@13bTJo)j%;&$vVp}OQ`@Uc=c72BS zdM=^Os)Lo;abq8Kl!)h5@3>x%_gDa5F-zSwkt zTdoX3CRA5m{#%<$&4=TofNoMhk4D^&HIEu8sl&^v5jC+1!qd34?LWxnr zluyN*3-gP5z+E_JL^2gM69|!+#*te9jQcu9-h6!Fn=Ymj^+BF0h@==(nPwak=B^sC zsF<{@wI5fydaH-?Draq%n@J&X?PJt8zlCK)dl1zCS2Q2$O`rj!y+leb(2s)KY zR37>OOF-<}K%mR&Lmu8GJo;NtucIH)i$4yFb!VNyLlfb}BQJr1?6Yz{_M@_H#S0S& z;*_6AtpuH!@r;G`<|%=DknzP+9SfUZyRM&Ivc%+U2b!J5oAESSdsSZO-8cB?)>%C2 z7q=avs^=oQr}S_6MQTyfRPNV4Pj9(Xd~2|cZZFv_N%!7dE4V8YUBHa*EE{@{pP*@x zpmbR!WZed_nO>+T<0a5o=%?$%@tlC0! zorQW$dTHB*TqUbN?ZhJ1XF+cxe4d=2?VIUJML+E2@nQ>OZE=bc7~=|y1y>6&2)S+d z5Bl7?>t$u{BEJ(!)^p>>C+?7?8AuU>QFtVZQATBm3=)rUMGT7Ew1t|8g_AII%5eRJ zL$$m?dOr1g==8w0J%`=i?1IgDN4;R{vvWKCtbE_#XcKh+@Q*SCZUfM}Ed!plAFeCg zx1YgYJejUnr!w4G?sv7b7x=u;*#!5E8+sk!Jm=aaKu;2ubFt?8quIzgCDh$WcTj|C zQEVqmK*VV$R5nlcFOWslEI$wB1rP~hnIRxJF{*!-FstuSMu{TLOxrO_gAyyFMMFXe zCIDp}brX^pJ6;6zSo+w{Elcnvs)vZ}tD%$_lg^;d9+x=Xcaq*iAgi3pU;$w<<33Zu-;ZqesrAI2L%oFG`((5N@TiT zGDP=bM2F2}X8V%$8Qzd-Ll26cOs+VEZNobq!^ca{_U7HxL(jGJF=8KSIi(EnWFP$A zL~Ug%nU@kAKMzqV!KzEXnC{zJOzyaJ>w6FTYH=v@N+Eh@i2HofEcl{a-F^x#O`*5) zU7m;2dx`JK?#=mw1UO3(2P{0D9ToT@8{T!N-Y|o0XEt$u_>1b1H$z|ZXJ-s&(#vmRWQ%^#^P&-UDnK*SJOND(@@u~jHoy?1$9Lz3%Prw0~k_&{l`wAnFw>R zJxH`9aAx&@60?{I3K7g~xM5DR`ac%@Eb#*F#c>IeX+Se&!panK zWU&V-M6wDYI#X0f+Y>Z~N0i$=(a+CGEPJG>b>4@vg|tLSLo9e}^39n#t(laiiu4$X z2?D>l7g5BGxvV{FRsFLHZlWDRT&HE71Pl`_7v4-1QCBQCb(@oM?2t^Bq?jq5FCM<- z$nMCf*z;_=Ixf2s_g+iV2lhgw4JjVF_F9mdkIP>iHlcVjEie^rlcpTF_EOG9E=xWB zpz&_U$d-&Fuw~jE$#|wGq#=P8MswiUw(Si~-%`cJfDPaMTGDhz>>(|u_;m1QDQXR> z9Vy1~^eE0k;DmY_cNNl-(}FBGL2skxS-YODdR*@T>X>Ni84Cu?BeIBG!u z4A|5`U@!GbB=ktF`g?Eny%8K)el_wTO+~+CU|IjS5F8ki&^T%JoxHfeZRA#C4QjC@ z9N}|&iRp}B7N5}6Fay_rRfn@1hblYatuja}9SM1rz9egANO*`v*23SDDiK()J*-P8^1bmV;}e`dQ3pXtV5a90IFY1BuF=JJR4l zFQpD_+g81yX$9dlg?ZsL@g+`dhAfeFMdUqoW>>4OPrRRJzY?T%rQJa+oJ0)Kehk8y zF3-8l>K)fF%1z$kJ?2}jpVlXj%WKb`7G-8XM&^Ct-KPtQWrA=H?X9;L9FG^`s9O_Y zXj)}+CMrY5rzX-G#?~(CzXC~Hr9?+|E9-=Ay^FmTDSN!GZ}CrtFH01;}Ky1JjT^PW15z z>LuA6dX$(}A_ou`dYZ`55%BeC=FZ(l`+L~ghp4DhhK6XTFsHZ?`@zB3^`|n zgYN)TQPh4QBEn-QtUhbVq#5@QPl1KLuklZBjUWkM9XQyhd?II%?gElYH+30)QA!0# zdy}I=jPG!H@MrgaU4RDW0~)#7h!jlQm(|}~OD`k#hL%c7&io0V7nRO@luPmU^t2`L z*Ap{j5EPI{bO_%^xfjVbwswBAHZH%qdgq-Fa9auW>5R9{*MHRQ`-%Sb=8Df`)8bY? zSbVB<=rVr$&5ho(#Bha%iDD>iil6p<@Du3YgC_njXQBTeJ=ww~I>`SzKrH;boZ7!k z+5WQyM3H32mk~Uv{LGIdbrLB7AQF||K;bi#3k_bFu27-2ONQWSMgxk3-4J`Veg2(5 zpbx*W?|I-z$#@)QNXs*AE%t*%!zXWJi2YtpbGP=j^AiGy(8S`d?T0&|lY#b?78ITc zby}P1JV-P_LP*;cGzTr4S&If{DibG@ZsmJk3=)|2oFy&JrBdC#R}!z}Q&HKPaqZ_P z45Ui_qO~0m1Xh00sqalNCqW*lN{*Rp6Avlu8zr@?_XE#fGQsKX! zk$D(a(jI17q~FhfF$e#Ow}mx{b!I*W+kSX1p%5O2CH(-FSH}LXUT#$~=A4M&lFPQs z&uOTM-NI;KK6-Mq8} zvS|KPEz-j|5DBd4?$k{#XpmrfeNn8V(w|jUnE>kGq@39LITz-36-ndo=_R9LgK-~b zy(xg7J+{fvjHI;ngwD8r4dK2ckq$0POPQ&|FrK_yV*h^C<8-Phw?r7ei0>djK!hn;Y9*Y^=F# z#O60t2&ntEY5A?82ud!D&w*+CUs*7qVE##eNrD7s1n1 zxF5*b!JflM3T7Iq4Ircvbm}>Q#D}-~{^M*FKVy6TOAU#TwRr`xH2{=hn@xbL`w@Kc zcEKL>FCoy0zuBGMe)Y$swHI46FifD9y)MO7237M90&oH#9lLd{^);LBcg$`VYkRjN zNq{NIR)#QoiK3_42U|Ne9pl-`k4ZJ$Y~e)*A24fYr1~Fr8>oii>j~8?DsO@@y!GLB z7brr-b+mNdom(MU9!eM{x=WQXo*}pMugt5mWgl{LqYGh{8iP%@fBJuV#!IGrf$ zWq1D3r2LO|o6LV`w`mlu9{r=;R&n78JF~9R{DNrgtW;}F9rc$vI52@`>ZbAu&~+VM zR2a$kQRM$@>jgdPKOc?}%C1K9Z?1saJ?@9DPv4(Iu(Hw3 z>KP3OF<(z`BuK`h7#RdpGFf^ftAtXRU}DVq;W>KOpl)~FU~khgsy2K-VQ>lfsk6Ii zvpd1|KXQ?eZWgmgyRvkplJAG#woBOF5tRG;HAuU7=H3gwMB1GHinM|DjX{5jwB2ib z0RNX_#{ZA5L0U86=v!YZZTVOKCV%!X+n_HNA&Lfe=cc~H9?lW?leb?^=m?myTAOVh z>AW65#~hiKt8tOtvK9la+AL8SQB`hbikwneL`7ZI5q7TnWaFv$j+x~Hp`68-qGpH* z-YEm_LWmM;)qGHY(&MK6kn8fb^L69K2%nZ~UmBp9!uiE9V(F$biEwJ^?d?yEHZPtS zX30?=M?Lsr^7W*0*6pZHw7Xp^Tqe=0-Z&X}FzJ`*{E;OEsFfGO4x5m9jcbjmPGHE$ z8+tGa=+iQol_lN|+z2}YGM-sAG&RR4n1Xp*Qijox&u?Y=GW4l=(25nuRh-RDitD4Q>Di@|MkSa0 z9wwlZMjy1cCJI6(NK|(uONu=F0D5ltG2R>J7jwqtvpp3fO@)cs$$FvlQWjrn1_SE> zne%Rb{EC`st@^f^3OjncFZSNXDS(hffqaOXhf3Z(@?oefa6+pgb)x)wqT6=^{$8gz*Ax^MOLdCXoys*?+R002WsYe(P@+Wx33g&i`h%~eplfS3WHSw9-nZZsSzPT z@fc1aMlGA*H;|LKkq8?;R{$A|veD#lCz_Xbg|FXPQ$@f5Ma1(jFj;?DBCkr#EJ>5{ z{jKx~jWU)O(NFQ=PbOW6)Hh*6znBk@ck?5irOy&b(8S&|_~kIPf%p4jBY?8uU|*44Uu^<{ij zFFMk0I>L@0#M`NdYnLw%Q&|?t4m3kp_NPEE$Q#%*HUhLgSnS$oJU6$$g8rx~ZVX6v z08RJ0?)}ACz12PYOwV$ckMsScUv{e8xGyj0+DmAY!)@lDtK@AU#gw=OC}>I01%5EE zU{axy4%J+N`Ph&^jUzM%)0vYKhpG9p{;U)t;Y`jLq&M2rKgo1#>YX5^nI zn1s?GhSj)hZMi{K(ZT){ZgDWC(ZQss=)S?WhK0p!33Fq1|ERX{f!)6El7&X1L()an zY`sIlzeNU#m=AD?B~xpiZH}Kfo!e`ydg(=px)4*D;c60MEat3KSpvY5-;?s9dj{>! zVRXFR+i zQderf4=3IOCRQOQM3NNjrM>@tf|uo)zlx8oM09fAc=tQP1cnSfT>GS9&N{}E>7;O@ z`<+d&BY}yyKGvvo@#`bVTtvQ#T{bEoE}g{x;O;D<+lUe<>zJ9DIp&y|nVFfH9osQ8 zGcz+gW`>xVWoA2ONX$G+x_hQ)(VJfOQaU=ne$_8YrK?x(#?cg)Tav9R*OlnAEXoKk zM#Dcr%&F2PNM6Qf1X{2zY9%#s;{u+kNxhStqt4` z5AWUl@#4gbqC+dayDd3ONJ;5eneJ52DJ6$d^MO)Z_D@_W7uqzbp7eK!V%>8$<*v@Y z;hsgSwt>b&U#$~M^kuq#mUEakLUgjoD%J(YTTA{OmG18MC@^}pV#}F1Mags|*_2=l zoPS-0wJk|jOnSp=F)=8OO{3N+ALL!+@#6Z3IoX^odkArA&Q$N8O=T8r#ZO_L<8UO5 zkAcs91x{S~YIczpxbH++F`|vD$)u4dA@Kiqo@Bszf>Q@3Yv)ZlUoo|5h#hV5^W#PQ zY$TxqADP9qOZARPbQraSt5n35S{PI%&S^FpTTZ;1)xwx#S(7BH0uH%`yeD~Np?%+c zZjk=8^Ay?x-z+XS-aKktH-VZduB{`-r40BwpKR{EIj@!X$lMFu~pUI&NNR( zG@d8!k#V(jVhQb_$kHfhG&!}+x<=2f-Y6wbOEq1D{h1iwJhLfTSEV#7a6^ItUC$FRx7IAN&#>EO6KZG==tT^?# zc9Gw2HDcBH^;)vuqcY87~$A;((XR*~nyo^Opmi$-vksc=fg#Qsokr z@qllA%XcGuM}oQ)M_kZ{WjtS-k&l`aMaCEb85T!C&2qN}-c+c@`l^?@4g2lIS__fL z<&r}SVXYVv;;KL9H#%)NUU8;E;ij@chGY!u8xm}zA1!(fKMo$-5bpX+Nh1pH&*^Shl(8`Iiy1k@o_V`^DN`PK||*N z>8-N^y_$}F*oLZknc1vk&q8oGD|r}DZ`{4SY`T1d$&u4{CQ#h=3_I^{Wf1y zcM_z7H)k>APw7Rcozx91x+B)R=y4Z|M;@bSn2yHS9vQJKA0uR0GOfdF)!f=L4|*m9WPHcRPY5y#4;q5r6QwDK&b(aVWRid7sdX|Q zbue{CcQO{xT<2s$Y>PF>Zi5VO?Sbv`v-4=q%R+cqO{=;4ycWFbbhXr7b5x^E@NK;r zFc4!t@HP`??=!XjO#fSUmcSz}8lgxHvbs02y`8P4iAc~eJQ7zdevF`_4CMfXP4y1&5RNE28pOt)#&3@P zq5^jp(A4QCfYKe2aa17N*{W+-0Cd%)?L6QCzd^s9Z*GBD4Q3+bFy9ifVIBP`m? z`^?5FuLP+4`bn?MI8wf85kn>V&2lMDYUpr`q7aFy$PD9ty|i8=BW6R@+yu+M#F%_E zgBP|{-AE_og7!Q{&B2S0o8*DoU_68RA;egAV92rh#hB|+E+2PX?qI{4QIcs0bu|;_ z`~J2Q0;EVTDHa(tEYTN6Zvf}9BnAzwGqmwsz zBt{0B>+y`hQ%y@UT0r)7ZWwk}d@?Q6adY(22AobO8L{%V+?ph0 zI9Q^YSw-3~Lc=)VU7BQ(mBe0?rx%<7p0al><`ed+P%lifXBWT^4No56T++7O3^woJ zlG^V)&)!uW0WUwx0M9Ki)sPzo>YH_LnK5HXiAia|x5HQr0P7BL(b-|KkCinC(TYD? zq$GYeSI$|iyu3Qc5}-^m0MVe}Hj^aBPejyDFR~gvugY%1VGjd~wbDY#Y|Mp0mRZFlPZY)tFHq8CdSwQ>0Q59reb=ctlXI}Cw9xJZ zij%pM0A+^L7?+z2HOM8%gd$wgu>nXGda>VFxj#bT#jPd{d9MdE z5+j4h6G;Zsr{SRuFF44tH8e-q7**{Qdl?uHbo)TCi!d;@`L6Z(!1Fh0A8cp8+~%ho z^IYbz=_Q^k-bZV!+xxt6&GLzz;RzXqxV4|7;31Mz|bVl!0;J?BF|BFgUWWiBe(_R^9JJ~Hz1U+vDUc8^CHRD1qEu~jwJ3rpq?CU$Ym7Y$ziKw*PY}qy z;<;kwCx8Bm1ST~hpUpaET}G?@M4Yha6^H&br=bvBr*}mOY`q=bPY!drSL1}Dikml| zT;JVzYd)my#~-EGmHVMAKhRD%byPd!=Sp97SPjzwv+ofT3EUr<=)Uuy4n6RFsv8i;)t$~qNi*UD(v}Ln_-h9<7BN5zyr(XxnCTDG`9CZagYgXn2@LXYEI6@E8)b()!%fMxh~yas*OnljIURAyog;z$GMJeDtQZl~z8^{;D`TEFnwBW|FU9 zP`Lv(ZeRV0U~7-)_fR)xKItBPb^N8eqh6J(aR=)Nh7O*z(;>gZW#U-H56chQww2ge z-=!P)!sUO4xl=n=t1H{t#}!JaSa4hUYVl1?+i<11Dz}Q0KeTrL85;AL)N*~RiTVe2 zCzH|V(#Hg1Ez84g0rJ3D3oUK`&AoOYMn*SP(j>yXg|&b~GV8!cdf`x-(IG0;!!ej5 zMI*BoohLRHxx)+KYtdxQr`E|pGQb`pb8m7jp!obJnQ8j3WTuG!YuH~0$XQX@Wp^BJ zB@YMa-(==wz`0qI7%8sy+wu$)Ph5Zh`sRC7+5p98i)M}6Z^=2?VY!u=pQ4b!)_5|` zI#ep^5%ksxDjD7QW^&271SPAQK(*4o&@RxsKHSXd`6;`1H35-anr7{r6{`# z)Lt4N1vYe6`=v2-LV49ad({d0T|K;KrM(%r_Y3$13=p+K*0mzu6FvC7m{=Mu&e2`S2mXHh5=q}a;5|?0trfTccr|kh=K0f) zZQMl}6)eLm8tcR*+-ax0V6JZRuVt_-&~cym80@BH@YgkD*sk2-WqT$rjs$P=A=B#UV;OS zDvU)J^SP>;*}S@RC-UJ{VefC+Rh4N;;Q{+1ZQ*Z(ac(@8IhymdP-BC&$dZ40s;&2^rKh_P=$37X*88Q<+M(HW`9?B zA!`~H>)UB6mpnz6NS;Z5MnSv4-Q%3RPaCVmMyKH}({k66#3{iQ!N;#pgROD?Lv^)& zxzH`+qcCq^Whw3 zucncaepv<=p`c(%9LDvn$p(!W94vHmXPoeQP_=00e8#K^D%1p3HmXEEPL-jGj%9>S z_!V)6eQXGhf%~(C-ntH>xi?Z<_a%0jAsdPX_*_mjlYvsOQdgF=_ENnGgU$_ZFAb&z zV?X*VJ|qLg2kiZQ@qWARsdtNNc(qNf1?ad=tLPx*1fRs6Oi&c;3-?7hhymvy9_;L! zQl@F?m^9f&A7bB!fSTV>8jJkc-7h=$DE&O^fd2l&L^B=-o&b;QX``p>g|NI1=7VY7 zmZ-+_Hl|Kao;{EewlF)Ev;=0sR@kJLqzQE0&#$FZl|18!@VTmi0%VA@Q!rI};XVQV zJm-0wZA;xDk^9185y80Dtdt7nLX~3$yamP7k{4;*6cO_in&mFYi&AT+O=Z=EO5jj5 zLlLSpGLj+%su9)1)P))u$_Nz&+B)mqOXCc2dRg)34tfp0drTd0ST4=HAmbSdK;0^L zbe?7teZsVnSlx;1R^GZVj#G3?pIfOnnK~Sp7#%d1c7}Og@GjqnHEqZq18JYAmwVK$ z^@P4{6?yX&j7!jlT+@Xl1manPOP?F)tU^&Rgh`v2ZCY3DT`adxYuxPHH|d_)TOjFM zxYKscUeAPsRr(>pHXyCkx`wf+USHLy>ATBdI$F>Ux9KxF<2dXm^m0St>ey`UDWCBy zdv)g`FodPJe344#L#SKk%FVY@opqKD43$(Sm*P{M!%ZPx$C1PxQ~hxqB(-)?moF!O z2)~PRC|ei*8ZnAZ8J$=-6*MZ|$7qaPuidoT1` zwLrBLMLrdpG`@vZfjrnrQP}bwoF1P*=|(Zo`bDF~FY_Uf_g16zty%kKi@}nC?y+ip zYACbyxvIBg0?01;ZaJ)X;ymt6AI04srH$XJeu)<(V%m$8OOk*6jkqaNZVauniFMv` zU*qvDMOUpB5e`5I4geJL*ObnzC66+f6zkN%hW`GPNd;aMoMZQ+bbGl}jq9t`iJqx2 zhE&SS<@^-SOy-Tj%L5?bV?gApzx7>vs<-#Y`?ik5be;cjmE1>K37Dsq?Na8p&&9Gj zY8G2^VY8r2lsb8I!h98>Ae~8b`T?Hqk;1Jg5;iFk!nF) zJ5N}@kDZQCiJ@!4oH8rem#HGQ*^s@M%?=HNEr)3FKHm1nxm~?&MlGuEDzC8Wj4_Zl z+B{&th?k$321%oy1%Q**za1)E=v=ArT5R$&~t&@c=C2*&FfB?(I2xAnEIUN zP6vQlfOSKa0cl_Nbh6ly&_=kJ~+h*B?XDooK+#+sd~@^b;KZhmWC z)s^2`jWJGQPS}9bgWLP5ww#Ufkgor@Q6K5Wvma~M-mmUt>riIdh%PX;LRlRh3m5df-*)hhunCm8#)m#o)E(HFGvc&fgs|e6$+5 z9-#49!+v+3{%~UZ9rjG^HP5g?DkU?LHD&X=kg&ZJspuHo0e{G7j7h-+crXdf?{kweMrbwvu3!7t* zxSikNJWfOM-;ZhJX*+N!F=1&7X^PZSf5t{)t1fO2Doj=YV=Th^U$=QZ*An(`rZz~g zeLa8j^}xM4*!W&RTyykT`Wk>)xmvZD)a1#XQ9>`w5DFldP?a}Z!-zLT7e4K)qEA+t z7$b3bS#L5vDy}0ymG4YV>l#+$ig*G z^AX*~r`}1}Oe=zX4U3(@mY12_@Jy{pA8cy@!*4&TQNR1LSAT2WD6YA=J7;)0vbP1D z`JQX1j-D+ox6yQ(%x$UL*984h;q*PnQyW>{Fb&xHkQM1gTPZsbEdHZA#Ot%m)k?Jj z=*!L)Y$`ezsv+tn{RR){uFm@Vyxz{6^YVHo9uO|#eaU+fsPz<>y1IzoX#3te@cY`Y zeXXnYtY*_pD*LJi?CMC*fq(G&Ik7jD7ekE)MLx_g=r5#R6gnk z)HZ;X3(!gLt@G&C>Tu)$@-eZLkLTsO{^GH`oeuW?05_$*x!$(^YV6`r_Pu%7EfjGo ze%ZdzgOinxS4TpMaLtMR{ODoUK zzdQrD+BFRB0e~dDX6HvsoJ2ZnsRC36P>)APoNzVvbWQj)lmWBBIwd+>nfb_JWm2gN zk__W6_%s2DSNg@f8AqHAfOPb3-~J-jG3h3XdLrEqX_x}%IwvUlMQ%+ZjZ+hyf)Ngi zHQ2JroYmj)DDLvKqaD5Emc-iSLg;$aT`EnIfsD5Aks02fyM&KX-rAu|OHXFTupm=R zl2i_xD9e;FNQ+y%u`9!Cq_#HS)l7d(ax8x3RB<(Ao1%4g1c27cs(nt1!gc)>48O1s z69^p<*ti4Jk2bPkWovAOouiQT89F%u_rx2Ww?F8`c^HkV{cf1Fkogiy0XgEw@vK%q z8a`DfOKzLKGXlW|`!J>5%gw>*Wvt~mIbVIgsNIR0e+Woau^|ea^|-S@U!ZXe#TJ%f ze-45RBqk?tDAeUp`wVtXMY?8k+P*+qG2qi;MaFB5eh3SLda^|e!WZUn6nrg;7^0rd zAK*IBEu0Gie{h#0TqGtZOW{z z3p*pW>u;j&eNVAZSAGobkkAsalp4Md=c9~s<}|ZH)5`E!)v&3OIKP%^sicT3L z{5u_{5gch?{;onU5%`aHPnTVs>#I7DtCJ25zXaV~K63`;O!eF=A9{&YKtHbC z3}+dQ50({qb}N;piN7Wp`&3*h+fitfb^Vh2PK9tc z=YBjaaVR6t5g$OYd7AEHl{<|qibTj=tITKaESKo?<7VTsI8-Ne>4-!?fMKjaNx=bj z)aJ9lhkhJvPnEDaR6%AUv1c_OJTansbJ|dip%$RVD9ZhKtq(m0U=stv<=%lKz5c(E z0-A5erZ_RNR3(W-=`Djalw8E|mM2%&pXn^88}W6wF85Y{I!}EV-RL?OED$b|e4f~Z ztEjYQ7FZ;$^IvQRcDH8o#Okz0FsM2q@LOp{3~!wGh_Vl{V9g`@Dv0ViweHYs^ojbhOHfOd%8;2A- zb->F&hPl7KjY?c732oDL86^SyZ|8b+0v@p3U-#tK%OrOe0F;e3n(`G zET3umFEdKFMC9vnl|=v1v^yFkx9Wk@_yF|_T{dX4gcZxr3&+z_VC5uz*{7(kD63NwsulE)R&NN&lc} z`oCzJA;Ojkh^D>U7m$hVL;vKPQGxkpvsp$)U}wNw$auP!SDI8V&cIuN5{hSlc;YpC zQ6J&GvmusPv~HeM%{poXcUcYQaVQ|8@`7^~v}(Xuta-i`T#2K}HrR)!ZxnRS`d?_e z=ntBv_;)nzohf6YonAiSF}`Qc_ZLlj#KO#y{3GCOj_ebMvwu3OqQ)`x6V|TTk{oIi z{ULqHxqZC+mrg!CGRIQRF_RVaalHhpSh5UX5cf~ef1v4E6ru~xdZHN1F z+W8Nf4g#%L`hRG;(aJ^biN0)VDHK>5(60KoG(cS$MLXe7X#ntcqM};U=UHU`dUm3} zdTMl_o|*`#rxvtB{!#!WD96`-CPGi|2_ZigEx zDC#q4tM*-2rG`IHPmTRoPmL3xbEkBT*>}gl$#UljbJ+<}tK;7(+Ud-G0cwHt|CI*R zde-iJL+Xe0s@dbC?m9mUp=uCjuRxS`2tEH@i7Bot-tk#Qu~9SRGdZO9Q^K ze~R{Y^~75-0Y^h5*y#TfVj! zuFFV&?AlH@q04!DPr?Q2O>4UTj)}2;PL?YJcvK0L5Rz1)4=BSj7Uj=Q z?Q5SB5o~D67kQwjT1>qCucms%f(@vt#<9JZeNrr>HgQT_U|#*UorHiFJK=a2Z2Cu2 z4Y>^f!sr*%zc8AI-K*zAHgpNTCr>z9m+X(G+ToVS_U^swlR55<;n7*z+Xzy>#M{f+ z8#!TU?A=@z-)bsY?7Uq%j|Ce8iOIFUG=9_3Qi1dqg`Go>)!x0A9YE4^3Q?d zrxAzNkH_YZiK4BAto#RKlcV?4HLU5$pm(HJcR=o4ZuOP--TJ|E^us9&HLt?zHGE>}swzr2mRi|1WB{ zH0M()V}YHcVafl2QvbudrDvytCPnDymsd#ZFxasm>pnx)>;$LvtE)qgddJ#8KV}T1 zB2(5m>C>)0iFg!P*U)A?T;{j$h+?fPYgCrT^e>@t4PRLJwvDR15(QCVYFXy|?X+Yq zN;{8EmOr*XD#`?2ycx^_wFags7u3)3yQs3kLNOFRCjwN@Hv}lf8Oo0Y0dqCM_NDY> zZuVQFxi7EtdHfUb=2PJ5G8yV_ig9A41fN;3W6bv##HDBSWi8-s7|i5LFOn}!zm#57 zSpEPwP}Wo=tij)#kp z&OHZsvfVFanuS>E+*FXMHQ@9bTP&B)-KC?rf3+EB1+mRNtSPg+O)%5(akQV8pR@CH zMx7iY#bTw36b7Hvxm=OPhXnSG!@0e!EM*Q>MqH&n(I~1 ze7{F}@roXkBD-8vSZEuWGz4UDAoOmgGr=Uncz!<5#0K_#;oN=OsK>tt*UB>)Ca+=3 zV4X4-@pc~Yd>f#(W*7g=Vc%kCA+Hk_qasCX*INU2b3N(n^KtpsIStS4lC}`xv34oW z%_LwAw$2o`U`|IW>Tf?(w%|sG>TdfXm!)L^OdSg_pU;#de03SORxkV#pHnc$Ga^n{hD8zGJ1hA_m&8K*-L%xOo8rS6Vc&I}f2*n#dVf z8hFV2ZQZi3fZ)W1f2uGjt7sr8^y&9-fa$0C9Qb+3M2Kj9+~S-q(6w_FPLao0$JAcr zFn;Llej$jqPA^lRh?K1Z>!pUy*I?e!W&LvmZ#HH(e#V^?w?1I~WmolR19_{}*dJ&0 zGRhZNXcP4yvUf08$J^NOFi_Pj{B@qe< z*$-XeU*FF+u$$z^`{S^N5CS4;N5g^rHy=f4Iih~pWS))BsN(VJ*G@H+O>SR&eD&}_ zFx#YJAjCLN5QxfFztS+DOHFcy^6}@i!Puv>+^5T*B==*JC*FqEk5_k#&c}+8&q;9B zFHA2>S$KMD&tS`qc8ejI&-6{op51ky?mm`lSRDRj!=F=HIdo#H%3GwP*@+_vzaBss z6lqmN^0_K3hj%*Lk?q55r4>gGaUco?*SYk&3K>9sNc-qs@?l}LAGA0xWeQTGqq7xC8 zbqbB6UoD{0?6>7-PMxtDTZ)ijby9InOLq;YmOa}$ea4G$P!TTg7Gce#(~9`)8crR8 z&*wxnOZxnu6{0TV+%10xwJP!1dAr)(<}>rZFR$6hCIgUYF0-gzfv@3+=|jz&6x^69HKUcj($9h74d-C3W#DaR?3)qk+fCCCJre*&;2MQie@c0 z1`w1H$qRfsf$DdA{uQ*lJC7uu7;FlOBQKEc8;i0nvdFwrWM6Bi9%3(#2S#t-=3Z&f zr2rR&=fA;_xB(|9-A>jjPFU;N-q6{7u(`%n9-l(*Zb1~k-YV%-=d|AZo0}SH~E?65-Pb9~QByNF_;%R`^5plNF zk)##dgw6uOJ7bHOkYb4M*!}_N6FiJ*vj{P*5saypf93{T0vfIKJ{XLqs;I!;G{TJn zfYI*}GJgI|+bqvhRUyOZ{qA~JO|S)XbRIHBc)oaYlTYBq*<+%!d7q!YQ^9@1%VVdO zA%5>|2fe6SIU1L6$WTk{q5?eIm~*HLOWtV&+`ahD-xzr~Uf%5peSo?&s-?F<&Fc>B z$=87xM(ym?iVVl0dq)ATZHQgxVYRdk3DUZ=&iW8kYlCEn&!OE@5$D|*KOV{~krtxW zoYA%bmo8X>4Hh$GTEW7pa#!_+pHu8Ybsq|BpcGe2#Zoju1)(gHK~-hr!OUqSQ|GsR$|@G#1YYsC?R8D4tyVZWmd~7kb*0^K9gSE3&#A~4CI>PJLcWN^5woj)>%}}=f^4s1^-Gk2 zeL|&F@(>rKqg=(dGP19j3Cd`n zMy;yU0C$@h6gjIDahuTrwcit%*L*gY?hwDt>*QWYDLm(686u9)YOxfZ>B}| zRZ@j_>&4c<(Q%>VFq0PAl(wKKX;y&q_0cO3U5=5eD;ty`ncxOHNFHhM95~^CU{a0M zcup(@l*$Th6VqI;|F#3^y7~~obcd{+#7%X{mBZ?37J1YE*eq8#<<>@s)+5A4q`Mtr z*xrBWo+yBR>*xV6f2)s%kZk7Vb~BY4YIt@!vL8d`l|tdPzh^3ocrS~HWd&hsVg*sN zURmKkUQduOOJ}9T%e%l(dv-M=@yi%#BE$`O7yU`6C=$v?UW?Ff5Mj1nf-CI>wioN;n zj8XETmOPy@H1O=(Llvo6KBCfU<@!`N1r@5Jw}m~4+W6yuj#f3(2_$^~q z3w+WeWO~8=s~>Owi!RI$SMzEFARhdW)d&BOVg6fgRnOU4F5%g%NIIcdPRZ6PhWrH# zJHz>()?}5)!&wZxK+ua8P`KHF4kJM%LiT)~hna|+4nSv_#~}-d72v z0?(%r*D+ad$pM6as}K5n5V8JLA4q-U(0z1vxznx(fd#g7)<-Wm8VN>)WJTp|j_N?1 z`TLH4nVL*cXwF4g|Za00faeW0J`?Xx?t3 z9*+VslVwPgqVq6Cb;%_$N2Ej@%;tiUovi|)$G^@R^NhjS{1V@aWY?6)iSkxatd#C@ zmpH)l&^i9;)!hOj^|{Fw&M|R*wgJ~n#0r>NErW}}dALMLBIWp#TBW(=jv?RG6A$1! zIb39@#17$4QWwCi;I?pre=cyXvEo5&>N8ZfEmvPlBR&mFjj4Bl0@jJ*2B#tsV1us} zGsPrF32zl>!K#upfyWe=)Fy3Vg|L>UM0Dty(w$UOMxR6;+t)CD@(d2a436FZk}?;U z!BiW|tKzy~TRY2Hnn2fCamnO>;oJu#gJn#T-2V)%&i^a4>XI`&P9u+<#kqGwAoFq( zPC0$-eH0OP$+fR?#JZcoNe_~BZ+kwqnbkS1)6kpk3OVjTdj`J-3O%OI%+`-d%)2%% zYAL3io?;%dp%~kdcqXC)@}tAsxENFMK@kF=;=^9v2HGqKZWP^6O)CjIt6TpZ5Ec}v zj`z|6W%2Fq`voa9LM?l+{Z60Dx2ZV9YoGqRE;HSr7bgF+Y($1!xDE4#n@oKOd;dT~ zOx1xEsU1&K>c0s zlYmL}qy|5Dy!08k zxT?AfMvBf4Na0nN;5EC5X1B(4mvdx7?2gy$D}Jop@p`2mfRNP8!#RLZsjHsd7R z-?TRG7^K|ec27m3=d{LZD;7Imj9jsJu#z{`-a4IE3ErMPUk}m-B2}{sP%fdSDCdL!bRe{DcEXJ0p5YDE!hHB=K=csrPNkR~sXHD9*KKb;;#bpe z>U6kxUEFt1weQ-iJ8oa0Kn6bDf3Anh8l_?vMt+&iSe19-h0pm-Hj_Lvn8BQS08x_^ zt-v={zgrE-@kJ`g2dT4sLq((oEqm4wiZr^add2(f%>uXD{CYvv=l~ZZ^dpXUf9GoV z@z+GFgZMVm$crDrCE|7u&Ic#{MK?$iys5oe%Z16j?ZCu>`F0o~fT+KjeR++yj=f0B zuH~W%*<#zxN8vM7Gw1T2cPM9^pXb-dfvUN!%XN;T-I;xdd!$gFqR(~1oqqlU-44J9 zH!>{z3{%JR#W*JCRdR9KnKo8E;8t$(k}N%-R(~_9^tC1JsXxmsByXZN2e4-PEFWJU zpZ4L#>iIJS@YzZ~gd)>5$)4VF5wjA7mA@B$IfS{w6^%^?g1^Sc{|@~9FUp3#8xOI0 z0>K|&^?v|=|FjJ`sH}?K|O>4}ro&vwTINv4BsGhDyz2SA0$iT<1 zvr2(KXNKBP9uT?OmDwfc1Ml!jOYVq8%az^Zj3}<`GO|@rNueSmIZ@;Apa!D-+u4Gb z-*Yjex+=3Fe_8p^cU9(JqRVh5MMXomXk2MDzS&bpr7V+X{so-U$AN${DhLC8Y;_fZT0V}L_4J^o-#6QwR`du1g6F+FVzdjB2}z@ zNwp}-ZoCvTrur6}UfX=X)=V<%DxUT!#UR8eWwW?3I4Wg}pCU(71ud`0&Xy$?*TK^s z%5FW)Ze(0*eK`*y9SYQ$)nVJLeRkohDO=PMgH%1D>It)4R{E;1VsgWxjoACs!o1I$ z*-4{N6O*z}*un|jA?3(5K39Q~Dieh&p#Y7zJ6;w#KBVv%9p?g|Ive?H;mi+pEzDdn zX2ln zJ4dI@K?V+2O)KKUdvwV6!k+xmOW(W+7UHb_yg{zdP@wHDgR0#0RUIx6Iotwi7LFAe z)rDW(Ot*SXs=Obfxp@|@w%Z%STn@U{Ho4N&ZZZuZq#s7@JsuW1^EwzyXA}-t;J)>K z`JEABg<#pioS~5jlMX`7_C{Vufo7%W(rZ;xF7Shg+W~eu&kCV9S*uwE+Am-lWetNT z&6BY_8cUTMxtyVhke51Qk79Z#DKJqmN@)&;WCrM5nl{Q$x|q%It294=KUN+GFH8<< z674K+$QB&n*XPPjvz#kwZstu__x60;fNt>nYTC};5O?U|Ln?r@La6wucKk`*9(VO& zcFn9dD(&c*e?d6}C`+y@qn5ku9u)K_$IOANYsR|0|AAElaRkQ@EwFT>vI@XyyVE~B zbE5WBmF#RTE?elBfQI;`5O!`K0h7k6tNx`0SHE*gZ-bk^=poHU?_%!K&AWL6&Gkdp zCjZf)jQHI@N8P=X;1{V?rVH07a{X)3`vayTobBFHuY&F=gq_F zFQh;gP5}tOnMhNIg@6Ef>UYHI-=vjxki)viBiV5vF8Vtju~!Sj@g-W34o=g;nMT>D z!8b_QEhn_j@WA6`+B3uVfG{4sC;->_XAd zLTyZlp6G;4P<}%qXe7#rTtY}b`nwS`CU3r}M*NW*+b?yXB2IcwB=ztFvx;O!PaQ^D z2OH(^+hzRUK1J#tD6Q&yntbsKQhxyPY&NR7%J+n+QTugun%k`l@$(l6_v$e05NlqzN07Og48}|aow8Fq3 zIlaqkB}P`hAJFLAeqO6p61Byh5fc)sQc*e`0>mn+k|-Hvmbn;Tj#5p;a$`m|jSs{P zbVFbu+BH|bfBq_PRfZ*u!9iO3YRM2z-Vju8PVz-ah*TG?wo}&~K7Pltk+3PF-kzLm z^!FY}6Sa_OzN9d_&`aTvhKGIcBNyj#t~VKm`VS>TEA_&VPb7Frbh;9PXtiOvXO4Q- zl}SEbjs~M4ZU$7!@h%k8W)C6wVj{~Z5yhW34;Bv=eVk=D(OZK9kt$!IL^0gqC~z=9 zPrZaN_!5P}`#P_|QZ0-mpuSa$Mman%`qYV;W-Jy|I_5HLv;IyO`{?l<-gC2AB8^+7i?o)+_>Ikiz3Eol_ z83>MClg(GSeMI@rP}fDlP6WfW3E*C|N~>SMFJ+STd3T1Z)AVV3nGizEh|T+wp`Fy9 zqh}Ua$sb=u$ep8;>eM1ter}Xx*=*tx)-^h6fEwOh|I8^*PG2*zEMpY$WVcXfFCQD?+0SNd*$&3?r7@Z%(<*)rmZi`#r9X4!6BM3Pxj?>#ml|y~9^pj$Dq+yke4MgU&HqgV8ezzSmmF>Fn`Eew$EW+557BDWLe)P@j&))V zKhP}g9YCQzHZ_r)u0_!{VGUh0hoeB6h(cN~?Oj2sE)`uL8=)5HmT8wZSj##mb@z(i zy~emrn7_<+mS$#1zn{|oJqYB3Lb0&xK^?=XuM4H}@jqI)GW zdPTsBhDl}*xi+kk2mNeJxFc13)I6dWmc$%}Nyf7xS5;Yo<@eKxg)>8ydCeQMUpc{j=rbzEg-W_7;kOxip}=9$rl%pG)vb# zn`P6Q!%;hShJF4L>|LMY=z{U_Iqwip5XEjs+3N4eaaO4yd6^Rjn{&%#@O!=uUGAPE zhERwQEi1u)yG+$BRa__DN*RI^0ypNjZvQR&`oi~*-rso4|m(fI_JD^(L{a&MVdQ1Su0NbB1k`8BBMW`|Xy z8pshNUwRWLY$S3cEt-H?5};z8#GoXaql==J=M;bhv?r*j95*>~7_dG+%gyQUVbu21mTzeYni_U2N^Ie0$t{<;m7h&HT#-g84IBjl14 zIX0H!?fwRFxqEy2O(8QO&Umn>myjfv@Yn6-ouZx3LsqknO+~^B+H}yB{<8lQz=L?p z+66pXU~pkTM<69&mDN#z+CrX+cbCWWJ504Z#mzS`Jg?g1{+v#w3u_U=oV1ZlI-aN# z3F%=g$jJLN)m;adX_%kNVtN3|9JP>Y?z2L-0_a+iv5gm^{|fT`FFJ!%Y#US|fsk+E zKV$%z|LF{pb697`9{J;XU|2=0p;mTauSEB7Q8KiNp#*a?GaW|}RKgwVxR)OSe8Q`j znS)pfZ8<~K2`dP58>%O8TN{bUxnhh@J|C1ys&<<%NI^oS=ARLXd_Ad?2(Hs5D2BhS zph}Dmlesr*1E-2>u>aw;J3pdxA=8ga1%zimnB@mbNa#~*8G79*95AZkAgTAoqJjaj z$sSd6RD}eYiF?keD*TdK*%8U3d(M=eF}1|*s9Q2xU_!@i%88Cuw=*+)d2rf_3=y)- zzPiXxsl;0NpHcK?3fHL*=fP2uPx6Q46R`llQ@Swh8fv+*o>KEwQ@(v0FRS5UfQ8F)*$qZ1W)B}1Dz0{{!;;Uub$t`i+yB$udB;=v#{d5uBP%2;WQMY{ ziL5e0_Q=TI<5&mDNC=TVvbQ2TSqW*$CW@22H$@2HcjHseIUU~~zwdv)-|e9u=YF_e z=Xt-c>%8CBeV^-ny>ak3u&J92S+Z$)O!cWfp3Fai>1R4AUeIw}Z=XNS}DJC5J=M+K78`hKt;q^6f2rlzYqCX3;69`0~z zU1jSya>{WCcaY;sWC08$6cmZc8fy@@f4W2-?{uwOj|*v2P?xJd@Ll|E4Eup(LFoh& zL8irzBqKzOghk^$1J}Fe*cI?f7hZMoay|1a#2qk~EOD%N*0Wg3Ssb~3)!sY7&D@JO zLh(@^@eTiA{Lc<(8@(o8;D_wqkk-|_Op<$nV)PnY8& zM0H&R(4dQlHG|Gi^Dz_Q7j^gSOvt)74!2&+c5rWHx_Gfd@E|i?Kk%j|KRQ_n)(dyO zKGzvFW2%>xdPkY*OusYJJK1`QTsN11%ycdHI?TCc`oqk079cZS*PTntz05@hX1_2} z)4Dut*eN?Qh`A&F>*eO^N)4${g7kplxvxH5b_`*a6GpP$y>*oK2TT6uDVOjRS-w$p zLyC*8EHu_+*L}ZXX=-n4N?iyU?6)!;`Ib?4rX*79!updG_OYVrEb#=&U2fgnCuU?{Qq z;j_K^ic5W2q9vEIbyO>t)>O<7p6yvOSFrXy^Lox2u~L_ixB9c&eWEjcX?M@-m)T~z z_-4ahf$gQ%?{(yOXRN$#Wpuy6padT5Ersi5*xonrl@O7|piK9dI9TGhNZf~Z8}G-i zHr|iD&Dx13asO^*LRmtZ@U%TAW+q@+pF{SCAB1v5#I#YrEDU9p4hjVI00n|JPcva1 z6bQP#NB+MF8b|(<)7jk4C9Jc|=Ivz?%&s~^`WIIJFBb^HX(Gcb#Rq|$+fhH=Z z(27gXM~bGA&657_RLf7^O4mkfopqT$C1jLP*>^g#r=Gtu`p&bD#q4x*q2b`5W}-`( zjA3tKy|L#5Y>U^Yun6311h>@hSQqUDbrk=)P?R9@QYueZ!X?r?Rgw+Gojw%QVE1Wk1qKJvk_WCKF-xdxziQH zR{W;Q?a6kgc@CRpw{PNllw|IA<$2E*-2JMQXc|ahG{f$hmgNm>fufk2c)o&p))WFI zQDg>^@GjkuLQ`}V2%4?k&cXi_(~NOF3r&-VN#ZVRq6)?h70oYZd7e41G)uV_YH%b3 zqj40J2XMCU&QCkwRrb9Y3aHorNC9ihEi^8@_@#dxFAx**w8VV68)~4&kp-&ud7D3cR9QfBleeAN#TxDT6of4OeZp} z=^a~1*-j~ADf@ktT5qW~J+GYi%AJ`Gn#DHZ^4hiQU)pp$sb9~g!E9H&Jy-N*I{Ra0 zToPGcj;!lj*z}{t+XGO|0g)gU-m7Wl(GOqPdo;XIEtQ=OU%ZjFOHnD&a*kIdY?kn2 zN0->;+FpN2(%pTIQz##YOutBds)ZBSU?@E3wwt;s@}UkM&fR z23cgFs0Ndcq!eul&j(7it3U?2zjZEcgpWY@A{VtzP1qv8_b0LRWDGUJJYSlST~=C3 z7`oLGPv84icW(!sd@ml=pRHlBxtj(iM*7@%i*NLn@N4Uw>M9z2Mt{{%xh<&`7asMbOKYo`NZF zm6gs?Ox%0s_;ciow}$q(Np`B9Ha}e~#97RLC6*+=&>XNf&z(;u=~6e{#`VHytv6#c zsJ|(5X|dc-CjD-D-(B$xC-E+4If-kGm;5r86gx`?TS0QkbmkaE6C?mEa_3P+t$SnSkroQGgPv#1+^~6I~l65%gOmwV^%ZLshRn1Hc;P~uYPMKB`lLUl@jve0c|hmJ2zrW$E|=xe5?9DI6u&9NMq~0 z#Hb61n(`*k4Q+XkCmJk-tq;*6V*!5#uLqPh$fXA_IM_BS67&EZ->ilYVb*xB>7Q|{*0 z7&xbkG3Lq}S>iwNVe5JmqKKh-y@gK1H;X;QzRLUg5?yh=S=%BA2RofCw&%<#EUFEE z{0HB5J*kYBM<(9$Utb-QS_VI}!l17rH}-db?=kvH-!)BRuvU7t5F-Ufx@ti$v}SdW zh3XU={;~y)?U~KKQ$)RtHK`WMHbjXjS0x5`8aeKAkc`olR2uTF5DvrQs*M-Ee7rMF zRt*^}Eq-E!-FyZsk$qPxt0mx(;um>lv*v8tTf#dLI-Xu;qH%p9@s+Y2O~v=4Xq77r zG;1q+Y&t4M(v7wCJH%*|ImTmkCA#~zGO(}ECe7jcpZ;#cCL9M=V!Ho^l0xw zP9-SGwjjq%*YF31G?AD2 zQR068WdBhyQNv$5JflPr*9qemo7|^u{$ztf7;*SIuweK*CC<0y;h0gy04}#w`<{}8=Pc7h+c16GNu1@zcsWnsdIILc zvyccT=Q8f%tBP&!WLWv?IYc7leeK#JA0)o^#`p7Vqn+oNrirstl{jY_6&f~39yA}S z+Q21q8O^Zm^M~r~apHUd219=0%u9LG&Zdg_;ZFyD3T}U6sGbjIq#ZUPx#I%kF20j4 z0VCRKNs|jfvndw&KssMN7tU)w`icb;i)w{SG;5e)wtF24X6;W_XnG*aDY|OrUdpun ztm4uunDY+JkUc}?&d*!(D*>7SgIh_?(b+lcx zse0TSO;h%zfE{h`W!$`jws{jzt~{UO^A*{D?V$y!PbE;Q7BZ^nG7A05Di^47P2Xn{ z_!{;uq4C4|=SAnVV3kd0Ykr;Ut7o=Yy^!BK2;-QUdM2WWWmYNkrJitj2-;Fz`!aD@ zYB_2wK8n33PO2KadB`bvxnGb;GxmaGlYYRX0uix9hMbZQa~$bZ0-u2sET7AW=`CB@ zi>}ah(uhR(5k4XEj!~Cp!hKbPO`-itISYG^Ehxl>M8$=Or&y&)F#zh|AjH*x)d1mG zruu}d56v(1j{7()Kc~vwXD0a?8b(ok-I*!+X+4&1R!QuF&NXamC7|1xc#5f&24g?M z7rUl4)5}I9$9uql0p=B?iGky&YHy&9WEcK_{xu=OUnLhOAYz?B$y-mp^w-`E~RyoZ{8_hw7j3@`cpSn+4GM4b=RsKF$O^1(~Ybw~5 z!1IctncK(h1k>_2V1ww;C|ZgaFH9Hl9=%EW@QjX;)c|dDsK1WuaR?C7<-{u&Ct8uyq>LSAnzUvxM2FOu=LjC;ijerdzl?rX``zHRSrJ?voso_sF= zD~z;s5y4j*$#N?by7@)mHN*u6auI#GgB6P{$0WG)`jYPqk!ZvyJxnrC$cUiClDwOO zL77pgV&z6r$sSvf=KlLE#;T^VZ;A|QPFjmR4_ED<3$=$}bJ0{QtTn#9V7RLtpEa61 zLsT{?V&Q?I!`e+B3tgNX8t~N+Oxd@O(w2^A|6zt5N9mzAY#o`dHP|2yntWbUX+Xdc1i2R4Jdzjd1-8i4+5fAIyQ)Kz*?!&Gb%_vft+iy7caSdz+|%6BUO^%HBpB6 z;3oD6t6~R%1*R_WZp@f|W4)L8r21%EajD&SvhZ^)`cRh~4dc!FyE;SGP#M7`zFGZX zk@eIMTWlg>dinX?g^A5crj13{DbLgg8{=f~sF_dJY~3!9lE@2*P4{|IOUk4xqe^E@W| zSnhCt?bWzwzEFvPzlg<1tm*kLv8E1JW559ya!i=59p8wbA4|GZ4Vq2>-P8U>^lQ3B zyN`1Zhp%ehZg#x~UyYz1#ISKw_=E9H;dl~Be?EfA441A5v@2U4Y3yRmn~(3WO=69< zamGwF`S!~5(TrR|Q!{Y-BABw(*EqHr=j>#at1o$0Lwe$y%g+dG@rl7ypV46hOu*w| z7eF}z)dt?ze=UCcD4;AdB#(|P-ep*LMRshrGp1@)By6lz1i!_@)t_L;OA|xGF|i2k z`7L)E4$M=A-`ioo)4&TJF!MgKh4lz$^oV^+wnx%JZ;%y)8LO) zth6n`u(!ZH2h8H`yN{PI@E4Bct~N9@bB_)hWl#86D!NGW!F1HJ{IvZ&d)GokoO9Wa(b86jN{j{qb zto4Pj=a!BYzht7WdbUO0rHKGlEBkz%Uf@Q09%$>^kFXAV5(blgKWNpez2(ef<8|GN_17-`*2C5 z%bx*9I!is4T7WuPx@OVFQO-o8R#3QJ+B)7V^DYZ${OV28ROyc#2wCh2I_30?I zfEm#zxnbtU6`w$#IOL@ZwOAzxs_Uj2X+8$4vzk`$fSwUu#g%=(QlU+TWilsKqEGQC zw*o(0%H_<+SbXg5HjG&%m}Ne$N%$>ubyYgTx=U9I{DdFmuWMaMUhwf83>?ghhQ@W+hu8KWg5Z=Jxq;j)-TSHmP_sI)t>>F{>yslViLo zqVA@y>IN-+iS6gHwdGcVNTM0m*&L<)ZN zRCVXy@CjHk7^5<2Rgy`rz`miLkyxCV%WY#}Wnn9SVTe|z!f);i2 zeE9_GdF8lbo@c8XbF4l5dX`lF_s=~DnHE-tU8yW!e<>}zCh;T0-e9APQhyo$d3N{m zXY+;iQ0NwUD2*zFXko_R8w*|e2UF;(_rzI3S+8Nz*U^R` zXU6e@b#RHNZw@Arp$yOEDd`N$%=U{_7$aWcJ80kdCe5&X-jjpgP&Dj+IxkU2TK)X} z%6{#@O2cz>I)90hNm{?Y-f1h4R-sXen2AJ<88$oRYc&J@E}ij839A>I~SiXoKkIl_e_Pu~obO%7fl*c2MI>sL z);fet&2GI&xl-dIWoPoK*SfiUCdYD+-@S1Nk9=x+$nmlpwwC+Y5Vk&V>rlVGk>)AG(n|=FqU?GdV~|&S|i{Ue(&L|9!^r5%~l~ zw5o@7ql;*6z%vT2a0hb`2dRZcKJ!$GnqHr>Qv2|^7?o19C zJ7j_H_=1Zd;E%`9Kp>z<`k%uWd=WTvR2%;Ac`tIqP?BF0og>&4K@Y!J9Zo3P;zDtb@`P`YEy` zGJx2_ziiPA*z`BfVbn#%V#&)KmJKxb0}O{~N-^NE^g(ksYjgJ#o5$eVyV9Qmfo7$jZtse&>k*P^+`Z77gS@p$rFlxH&Yk+{vI{ z1X0NS1$w;WG_vws&bx>a094>SGU$L13S~IZ!yTxQ zn0h*^n?s@25K9+eK8Em`o72P^f(%URbf+E+jC(x5cL4K_KZh?kP7euynmYGf31MR4@a~rP7L!fr4BS)DD4A zMyHd3GW`%F;DAn!NaQjD_ox92P5ot|WPb#;Lm-q<=wzUUU<3&`ppzp{q}GkC)4)x} z^c1p%rXC`w9Ri_@HYWoyCLl<_0i7ISn&hz4b^w3a_?Lxf5)sr6flx-3lYtb|5G3G$ zPL3p26p?ksz@3VK8W`zgFO!a-b_j$rdYlY&u>?T^4(Q~FVccFMS`dtVb@JJ_n>k!#G<^$*WJH!9C znS8<8-3W3=NdI)#h)9uN5H#SCPWIQxwX=_rLi-Tpj*$N8uo02crx7&Zkxus5$o0F9 zk&9P@#ek>wrz$2aPvyrR693!nPA;=ve{nKe9A_?sxXuu<#?6r|MlRZY_ z-9wN&Li(rMMnpJBO=9+BWS=Qo$R}jQ?-wg!p|Yd9U=YGc_Si;G9hTdBc1HMk&_aRkp!6$ zo<&0RH$I#VgVG)B=!RnJMcxJp5+5s19=?S?bY}Xe?AJV*nud*6`gME?IS-L zu%qufPnIoF;=Ly3>2mcrP|7OAX6IW=H$7uyv}R%I3hB}aMtQsL?+nH^V5-X;vC79- zuHTq}s*v)^$DjtcHitz?vMF&jP|9CP^x<_)>l_8V%tUF~Sno!@@G-hNGj?7Oc%lz| zz#F_>UK{D17hCOMSP(|`6oDm}*w}$=(vA02?B&1GQ)boGz<90-X27^Fb9{=3<#rf6 zX0~mK#EXc#(h~e6Azc}kGS|8UW?+W)Zi*0H^m`OGi!QT9spj-+@QE}?S?`G&1Ll45 zf?lksFqngjx`=(y;5*?6FV*=6$0prhlNTV_`QOS%%Dt}~QRzkN{KpM0ZP?_qSvk+= zJ&sCrwK#jm!*i4STXck2*K+lZL=~iw0Jt{iPY65@%^>#lzeD@``Rc#h_HRlp1@DO| zV*e!9=$le*wu3?{T;2<01G8wo16AeaxlR5IxRV%pL}J7#{tt(q6f%Mz|G3)$0Rn>k zH~w-mwQ*)-`0rS=Fd#h)K!VuoQb2Z^u*|xlA!$6<7hTJe^zmoPXw^!Rm2BMb@m3P0 zPbO(!&DcLRHf!yg=Xr^w)`5|(uF?j;Wk$pIpeS5_U5MA~5@9)@DMp~0HCQvW#+~JB z!g$s*HO+U$qZ3L;v?-hM<%j7i4FkMZl^ztG#46H|pJ1P;I9z?`7jNNqWSQ4@sB&LU z5}RJo?)}ymjDbPHi%Wy6(y5GSFj&m#iwU9*LZ3tm(*-Ci=Xn@Tg*5yil~%Q4+>7G~ zL^7QBH33+xlVstJQqBBj;S{I>=^WDHnRO3|X3jf7Df?%6pqd;_X}9{W;cI^WM@RHo z?*EHXcqpuj&A&LG|A!IsKa5Q5jTN2j9h@1B?VU{ji}IXAIfWqrTsy1m))XPoz;Sz_K}xM%9pI8C~@^2k9Sh0y?uLYGc ztw1XimeqBn=0i48hZS4P$m7W(3BtjOvq{MD0RU1*H(@7slIa0;K7SSvbV5}(vci>;MMAh39?i^X4BlHef(NNdG@I zh7Jz@mziX_xJ@FY(A#(Pam+k+&MGxEv9&68rRAa07_{3P&&V-$Z8)eks`I)!|CmG8 z=@O2U48$En@%phLq6vZ;RPB^^BmE;V^wk(ey$pfX-5dVXVNXSP$(s79xU+{btI<|< z+-CiJ(l8+!4YQtCGpUM0K7_rKjeKsn#$`94+mj79)wY_w_LWZ`!Q*ourQd}fcjY)X zH&dDb8T2&opFT0%=^*}BWkUGQ>P+N8E4*m1xaGKby3?2!&?3?p;*Fr{5r4ITvvsIi zdY7|G@S=01xvJI}*o1#$B_!-tQOs{6@Ka3V;=R2P^<{B~svJAMbs)??)~iX1q4Soi z2IEbV#0gC1JkWEB|Pu%&VT-547*oU&YMCB$v=1Q+HKALR?4sl zmI(LOlmgkGSfBYmTw|rkk9E6&zdAJxr8VLsm@(qQ_PQQwdA5Q=VblRNPX>bcN%v$+ zS>Eg|`eAaPSX1QPTeTYdA34Ce;y(%mVcS6?W;O4eSIEPLgz(zbOPd-F>B-UKHC~GN z>}6BdV`I{N#dSs6yi-wyR0kk=Yti$M97@yQK>r&X$#u(T#k@d3;OZd%H*MYRolF@2 z<*uvkzZ&&la9sP?s^Chsp1gjcWAB7tFW|^Xc4K+hnTz;e8;-7FZLPY$j>hydm)qKc zk_fhLz77TVgVP4_hPIl3F<3@g8}@6&GLQufv&P2EDcpalXFL|n3EXf0d=B}&hm~oB1qQ`Qd=?QuJ&xa<4KJ4&2dy&j!i0?0cIu)A z#eI_YLZ3<+IPh{Je=;56!Ns-*3VdT>J$2)OMe|=h#PHwC z>F&khLKECtlJ*KcN+>uxhglC}VzuNp_=yfM{hZB`4hcYvN&GH=Hh1_eupZ|4UOa4& z2^vUX`bBj|1i*vh3o>ufiSu;29z49CulmGJt9I-+uZ?|!sN=`RX5Yo*z38#Y|0H}w zJsiU(`;g@L<;2aq+U~c82?HiUNdP|j=kldR0rx(HAOn%hX%Ichhx^2iZ@bhz?jsjM zoG_KpBYPjQ0Wk)yDS_}y)cujk4UE9h=YUhB{9E3cEM@TZ=`yv{$&oPE&elE_k}xhM z4})`i(M#N~F_-N^V7}>%KuzBEz$FOV;|TZhmmq17hBrYh#F!6a=+{5oT-!+E$6@{6 z{^3dp7M45EXIv}tE%UR;f$$?6{SEJmk0iZ4RCEZo;<>-B;^^t`s8k6J^T+Y0MKw3EJ$Y4)5vSx#vu`u2m$kH{gsVK=E zeHR8_SVNkKkaQeVWaf9|CxRIIF7TTOF%(jGHuUR6@HU`u3l9;l0XvugZdXE~E;Kjh zy-x3r4*{Gpzs%tizu{lqZ3`U8n_H|BfEc9|)*IL#BQ08GXlG2XdxFe+_!Z`J+{cl{ zI47{UD<0%`^%R4k)%QjE5#yVDEm)O?Frvmso(}Z+=D-VBLdP>Rw!3yv`Qkb<)mWw! zxl#(c>iZlBI&Q)GyFQjSxVUn1viW5(t{rRGXP-Uo-Y!k7dptJJhwF|nl4m#fbDcu{ zn$p8uVsCoa`rF@T&YtfkcwC)#h@?Hd2p@DyApDl%w4{vDqy zMmAv_<{O|_Ra3FO7l-2(6K9V63b$V^tEyG)<9*=94%_!l)*^T$m$-#)ea$zW`yw-) z#@MmFJB~o~V5cz~HnIWUh(Qs-%2M%EC{9u-x^vB4&iDJ#+uqN;KPp-it?YZqqh%5i zkWG7VU4PdV$`;bSNxmK|N&?-8w-}X~i^v1k<5?{5y4CCcm6sWhtnpM6_jg62kmi#> zx`sP=mws_gLzNU6(>gBQ?Yae`IDnwkY=@v2ldYN@X_G-T^^uHeLJr!PT3uam-yL~{ zm_X?5xm5o*@e0F%MLHe&ee9GGc!eilm(UL7eb~7&u)^`Z8&(~8hjZjzofxN_N(SQ% zmUC$=wiwfxK6;pejDQ{eT>5RnF5c$=aa041#7mqnp=kMbSl4q{FdYH_Wcu8?F20sp zG=?;B%GmYU-;{GSo_7pC5gnAqH@W>8^^8} z9s(;^3prP3)j6=^z4W@=HeOQLNatXWg(+xM9Zl;k<^Xj8w(D;x#ftbc?-HX4Ucfb; z5oC!b?wb3g_lMi;b=H|wR1$9Jyx53KJ?3?e^F@MloL*rD&L-;a8& z2p{3-EsK$DYeIO^X_C#+!nELcK(t5TSU>_(lbCAAUultn0qE6uKhC>hg{DbV2L5e| zry-FaDv}Dg44I%C+Aa^Vf<6HS6wgJ7)AOsXIK~fwKI7M+#SK~KEjG`0>m2m9u96mg zn~zK~g{`!#%aIR~3BANjf#={_m!(OBhOYII=1vF|>*r?A3sb9Gw+Sb>eO=92Ut#k- zv&=|!M5&%6OXaWPLHSZZ>t8jW9(St}c(+*ZxS-haRN)8YVKlu;H^5d6SxclOd)=u? zn2*_nVS2T3VO?xghtus)mJh;Ds6%ad_3}Uy1wTRpTZT#6_yO-A6FjB6QVD)|I1cef zrzqwWusz8Hm5ta(=WzT=|BjAV-@Hvr20-%i;r^@YQi;^Rub`Zh>DKc0gyG! z;0DCZ=zXNsu7mdEP(h|XO+0!`wcLVX!bqIBZpz=EEPInHzbBq6T(vCJ?OVKj<9=&o zD7HU1ARp2(n;hY8l*}a9iJ9VLTEiDK_y~R>_$bPCRjZ?F9ao~GjL3}`0m%m+WQ4&! zySw|MX3R;HU5R2CwSnPkg%%(FwVcQqD$ygsCbAMj(q>Tz{7{<;Xzop@u}*x14Cqfa zo`u!PFrrEm+E^=eiS<5?TMnHx%+(0Kc>&8AQ=ABho!QG&d&P1Td-XXHI4n9PAo+Gq zGy--ucu;uV>U8LSYyGrRxP3j#TBa;`-_x!M8~pbpzad7$H_zGYD5@>JUKS_ZFHK4h zb9du5Fo1b#Y6&UFayRSB+a@ZdRwAnHdzsE8ZM zE<5Ns2azKDgl{JC<)){nf8JNoA@#S9~7YqeW;yYMpj?P~h&BAGL zE5cJ&6VRE{L_HYfQXf6U2I|mFx>G7jI*>^xwv~bDVq}p=MOsrRmX5E*{h?&&6_X?v z$K^r#5~Y{}!W%&-dvoEFBnzQ;N-)_tHUCZY+RG2rnZQmLm5=Ho_swEC^bAyVAoENU{6vl_eUg%JW@x&>Ndop(M9)iX?jWl8ic`otpTQ z1o9+hLe7t5boV|ZYk5i&n6VWq9oC5%Q-_|S9?9+C$>U3<=58*qVehBmNS(lIB~?#T zq2JMB+aK*~S7`qZs}=_NpmIsy0qYG&D&;Y=lUyc97g2JnCe#NIqul*_Zrc~5j3PDEdcrA zH!trMq9ZW(N(&ej?`8S^8@HOc7s8aqgeHuNn8snAxo<#Bww&|G5AP$aR83+|aPB6F z3byD`b8gbUn%YWKW>mGs+Ysw-X^5z(?iidTY>gC@p&%3VokDU+s}1lU8(M_KSAr>XE&$ieQrpRHJol$mlN~hCGMj#<+!P zy`(lZzI(#j3PVFo*Ym6NgngQS=qmM&-pb^s%A;ERvCpiL?nw^Ds+aPV~qikzZ` z|Bg%;0r%SL+W~u=_mGE&(hT~IMIn!JxwkyVzK7bxWF=jS`R7*1gVbiqas@LVIM3eS zcSsqp78k%_rXkd|o+7K}FU^-`Xa$(5m1d>FaqNd{2M67Gkj`C4lVn7zsDNf#esG_y zK`r^~vL1`$SfWbQcQ58oe7+9P>E3`tJi+UkROa<$201%AqY$A@-F<4$*bfK5K%3xk ztS|@h$$bakhSk4#BE*yVi+?($!)uqj%{MW*3zV2P0ZC$QXuQAVQI5ee>9#b`9Uc5H zH7H)o7l>Z$OMTWGKI$$Br*#_Pxtaz6mKf;~LgQFzk6<~It6|F*7z>+%XK_7EU zvR9sL+%g(XlR9-zPZTM8IDTbOG~gfH%VPW2loP##VKl(fKq{Vl zB&UC2?Z!&XGCxkXgBC>*DK8@?176xz0@4rZHYD!S3C%=JjXqu$%*3Yv!!l-{Z#HGGUNXA&+m1=eXyc zRKMc|4~rT2tgci@RJicO9`|Ztpe}bX5a+-+@2!0V zg)p3z&R$V{3w>HMmVif7H!blHL(6GnBr#h$`FDjNa3oMWq%K==zq))3kk$Ciz3FMA zLF1zrsxS)OaK!2Yo68@Zg$Gm14wBU7^m~oWOA9<&HyoBg>>&vaE`P89B@xox<~3lf zg0%3`9PXbDq)JpMwI%~$Qw$WLV_O1PoEGI1^7`b zs72^tspj#53_Ke2TK8Asn01U|-{_LG{xO6bFJ{CMM$pyUWEc+y_%Gs}Biz%Z91`+$ zQuT~T@f*|6#WJ?LI2KlOI#J|Qtv8ZDkfRi)irS% zRDnuoE8vnVUX_@0bmAXbqntl(pXO8$A2JuAS8Kd~B&*sY8gGm=fmkFE*oypaE-l0B zb4cjY1=f~%h}4e8EiHg+)w>HdC5%QKC275Y>scYy-ry%1RT{a66X_tbfdb+4)g_B# zu!5_Lzvb;UDuA#WE8vniq*v9HawB#vO}uJ}bzb0mn^#t-(;bx3V=pa|W5pbX9JtR& z{w{ubW8Q9Ef`+o+J9(4HXx15oX`mxR8-u^80UYnc=@`mR-&?fw-Ao?%LDZ4`RYc*c zqUad{ffZ@)r~0QLToYA1yGe2M1#Jo}(Pb<&BS52=B*l%=iv3xV-9U`MX*Rqn1Tjt< z=nCy$OqD86X~+>3Th)k!sgISI4OKkFezDO1Vmi<KharA%w`EgI-heq_DFHsFLE4>9^T!1?1DC9) z5BdCHUFw>9B#rLoOXg&OA-9d*L{DeLrcNOI*+eu z!`{>aN@7qDK&)b(+Zl3zpjLf z(^dt)H7ad4+nQP74IQwsq@ZbplgRAu-nzK%bjnM8^ONJb{G6bXlo2W2gV&$W zk?-5iRH`OcA2AxT1vXudd!&qQoOGaFFPHWWVrP%g%X8E~hB9~j0p4)czV2W{PEb3X zj;i8yp%5aQb{@K1)1WrjYd3Mku}GnIBqWChW0s_%j!iI0(AWwHoho^6;_@rAb()UG zH*3+`wjD+;P6jnI;acEaWVBO@=@IMV}xNlF@wd6kL97{0CH3@h{9=z;$1#XtMG zunF>G8S>LSu&!-pd<`ofZ1(~Olz}Hzd@nwg9cU7{hyMR>KGG6Lz}?Xz0U@pCG0<{qWhm2xE^NXa<$jk3ur zJl9oNm>P2dV0UJue%wi=9-!m-Zrn*Xuv04gs)-`Gk-_x!1?R5*l-NThyLiA&SW$Q| z?#P52I%Qk)D*UE}98R|P#&l}QDL*lZ{l$9BqI~(Z9>-_lRytEE+NV`TE0Z=uD7zT= zx~Dd+Qj_@{83V40r9)*?gfg&fLUpvM1*aMJ1I>{s#4?pCB`=*g9Pp8MS?Ndiv9ko($iXrpd_wT zE+`rsJ$n>=~Bz<$hRY; ze@w_~hJ1s|iHrxr0INB>+&4cW$Y1S_NQzNNJ;dKZ0`C%G#Q_bDZ@DuDfMD%xfi#$) z0p!y@@W6n1!l0QvkRsxr*;r*@{`*4@2Uak`_c6ioUo=~|4#_ZA@B(mr@$E_KG+S7{ zFH5h{=NPUKwaW3Z`PId4EAhzwj06_*e|G$Dwl0%yfMH61#5KCgN1%`#nV*_3%4PEUx&Tn`zjiepGEP20j^?>l@G71F#oIzJVkx&P70kV|Z`lcax8|71Zb%SzZzs zAU7nVx!fV+z#<5EW8u-G-^6@KKoUwNr(`5BDKUD}#H^;%%3WqI0i4|0&2fyrs-=>)MI6eXqpQ5U-NX|mRWs& zDz;9_6XOE?aC6^7$R5#tYHnp0XKYLySCyV~mVYhZSoJF3tG$9gfpwx|JtGG1Nx;yD ziOZ>dWjr0grn4Y%sjx5dEuVjMM&2`aU0K}#`mS^or|bsM7WHCp!b@Uy2$Dz^n=z5K zrVdq?j1DOqNw$6P;NFD;_R51^Nx+_&qu|K1w?Ys?9a8G)x`SMagK&c}c^5N9Fb{)6 zDHrjQqQro6y8lG?UoyGrYjjYuU@7{I{xUUg%7WZguNFS|3 zA61R$^n#QX=dGIh5L6V9x&gVRB*R>UJxf1UbQ#x-Z6~tmDBMH5G~pJat?Y&N>0?Om z_3n2ol8-&di70u2+@m0unG={Dra4{{1J4!a6g-=pgVsO~mcMvTJ|AG7dMPI4B=)_~ ze9)auFUByBI>*p>zrK1pOqnX5PJb(6{Js*yh#9{yQE?OgCJk*5GF zFUi*4v`&r6mm^XK;HuuSU<{nsrBtu8y!rOo1A@2k8D7y{kcA8&^h96(>Ent~fZad#~8g4xq`eTj}fFqr3|gCR#bGYo^*XfE(tp zeiZ2C2#`MqxsruXl)I>ePQOA8^lzKwe^CL5Q#oIL5w?dh6n=a|f({JieG*&l?d0t6 zOP~(k=2Il&xFC%~4#R7K2_}y-n+G~MsE5eBK2;EVhaej1BaVH6y4x2-Q5ZA(`jDc%SHazm7bE zXxX+=#TTpAgFz4&e4-FrBcC&<;x>q=Uc3l&u(0pvizRbqptZHTFoWaGLf9k_TN5lVuiACgpPzWCNDcEZd`nL`hBl;RxLFa-oF~pyt$536Cie8FM zYx+{hz<-EKd>sM`HKSib=%huyBl<;NNF=PIKk~pn6~68q1ULNx<%7$R-xgt#A#)Um zaU=3~f88>bCYJRq^5wpC2E3{W30w#N!}6je0|&2Xl1Y@kOiG$xIzVjSsDfN_2aPw2 zq@c$=e)8&LeN~5+xQSM_NoL8TqMwtHYA^iwHxOPj$AKrG0yLKLWApOKhb*c+w@f2+ zu(Ky$89VXG_P-jFdg9*K->7L>8%`djU)S7cHbk5%nOk2D2F50&{(#g8(taf$Q)Q0=SxV=kr>`D&|_Y;zk%Ra05^0fbpe5qmYUyE*&A zrhY{uodjV1^5$!o0m#%o>|Q$&bkbr1MbXz(AO*&Q2hOp@c2AUrr?H*p{6OhF2xO8_ zg}#C8Ha=3G;yFX6s$%s>=;!$%_D(!>)#9JoDOd0Ly=4xN5~WTl6;Cd@ktMrn|=Vs|RL{*Af^ zhW{NGir%l+!jtO)Gf+}^G?{~LKH*$j^)Cvbek|tsViAK3*Kz)M^oxFG65G&{5CL%@ zrLK0DQ@brQ>wSk`cb$eBnd;jwKA&q+h>OJ0-Yg>oc_H?a&Tbb&a>o2$G&P_c* zUsVcaGfwgV@Yv%RYq4JjbxYgNFsXiTAk@`ToRj<3(I~Bvu-4=uWg$kZ zP70NU>ulM^%d@;&cZ5&>77c-Vc(-p}-uuVC{`9`CU9LO)_HNd8lY>$mxD8jJhG*8c z71$tl^v6YllNww4=fS2%4N7u6cwE@BFc44ey5^Nhv^10aGEgvyzgUkSFvjD_3Rxtu zGkj=MEyH`6h166^EtkrE0r+-P{&4)3Fogy6#819OLteUlvQCwSO@ zH3D4A7b9je+c(VQ8uQvW)Cjwm8L}*^MizDk_Qo|0))4VTN(O_*0`?1n5(T;HR)fScWPf$*8oH;?|3=0q| zKzg>(>V>inZ>9%HENdR#QiwLg17`QWl~1`8;Oa+-3dJ2*r%vIMaZ>P@Q6eTeQw(Z` z_ko+C8GHbu@8^&eyo3v=pYC{Jug#e?Sk`wB8eyk8+`Scd-CY@$YWP!-tkf-c^m1pr zW%pfY6}L|>E40reXZIn-pJ)_V8nyOBZ3dAAd@3Ec7&hJXEekMRNOo$4fpo$)cUHvJ zJYAqm+OIlzAeTY#o*?tZQz!RsP^IVu3;t}AJ`s}^&Mu2Civ`oy zoE3(2?q*dOm=vT7dd*LMwAVxocOf`9_a-9-=he~*eqk-DT{l|$}FuewA1^_CYSY; zd`&{NQK9mI?ljdxkCd7H^qY6C6`9ge|N6>?ozJj?O+MD zGOxGuXuHTQ5++ylh|?4YH2S$wH&)f|qtHH?#YNw*khNpPUo{mt}DAC%cr=SZv7Y-m$Y zLDp`mU8LDUWKEWL_;uX;N+H2W&%O;i!}M2b_4s>I=KK!_+C8qyFvC2W(v^)=2lilY zE=UY*V?l;Ds|sBY+NMLzS&`ta)OnN-8JNmi=$K^^B$-L}OXS=i@4q*=F)kBrsSL0 zOjE*^O4XNj*l#DTMme6c=^7Fx#?=0}{=8tjS9N18B+=$s$ zqgVa0Ka*ha&bBRIU8V(oEWx4ViI8R&t6HB=7GHWJW(_yj2f1vZk=dO|$|*rbI8Zkr zS$g;ISR*{J?s7lWM%>_#KX+I3VWDR%=@npf1=p7%shY|O%2kOHq$bg5)upr2l$m?2 zvG7s?#gWdQIJiE%3=Z0r{R#Mf6DKX3Qp zI37@3_K7FJdD}uL2;N6O^URGf)hmExGQ&yned8NKAK^nP$z_?0XfJs zXcpxfOXJeHxh_prQ05Pxazs}ZYF(jI-bvaq+E`a~Qut&o7lNV*0V_S&J_ut| zzt%E90N;8u1A$@DzBFjHfS*yV>fjX2F=M^mjgxly=|YZmCzNtgW*k+RYVh)a!2Yyg2?O z`Ttb-b*pRPx(&Q92E7HF}9sqUS(XV_biWLdq;byp{S%=X}|T-Ymv&`)QvKghNfaZB8yE->s$r# zt!N+!t}Y;wjVXWhVy8>x&7dEiZj$EpL6Sj!`2*J!uBo`tdv%-Iv)eBmv;$luQ7vJL zv(+RG4s>@U(Po*FmiJw5p&tknNWbwRCv|wXAQPT58U1YEHhoHp^fe8hYv6YHpSN8* zI(#(^5K)inI1;C>8_!F1Xh1x9r#jfg8TRm_T5q1Y}#*D=aE$D!IDP@(bjBI=CEyw_o zH10SEpg(7*6W%_1iDflk3;*_>!zbY^Vq;?2N%yqaWc}gd1$_`h@_QOGa1LpI;<>>4 z)XC18?zIEflx#r1MX_bi?0B+&S16X8)QeB7Xn&^;_-&d}l*}y%>8z!|{B>Ijr!|@w z&AZu6`sUoTw075hLbA;vVcVrF;d%Y5yXxJ;*M^6gk-GTk%U~3(S zI9}ejxOpu4wo2mL6QPj^^|$VpOq0c3^ud8Zu&EEc&@$ZO(!);gi2n6Obtl=rD71RN zC7dY(dCC_6+ujj{cp8ZOBblq9E*FWxI4Fy)s6nEQtgpFaQTQtPiE4XjK_{M{hme5Y zoteK^d<=i*;X;3f;41B+xmOQDxzynB^AF4J~BF<0K>7YPEJ-c11RO z!nH~ALLpcwE;(G>kmsv1slq3B{_FE%@X%U`C6*emzRi3K#)VsYA(^MIsf@#q^ zACAtTXD&NvA)6VM0bk4KTHeCyzpZqPJSa1;>>AY~pCMv*DWE$KKv$(iRzmj@zXJuL zD5OD2w?iOEE++k*wrx^ZZF za@Z1ZI}k3Z!|zFp6>BsSVwiL&`MUlrQc!eodBYw`U%c#9J-cD;@#K8WST@NRnA9)r`#<>+l>oKN$)n5zN*Ta6sxiJW`Gtn>BtLa2=gfxl zo4cvN6cmUJop@B~vZmMAs9Ty0ZiZ)0tF9rOKAtUI0*L}@d@NH>G*j^xRlkdsJtXm< zx9#4dN5A8Vng9ONOv{s?_HA7wIwLPhvsLrkyZRC)&`oE_RCj4S*=!z%u&urL<~X5E z7E_796CdbGUX9$*^xgrLnd0=HsF?1&k0e9)sxC&#Iit}`;j;TdB1&Ed}A$7b>4S->z571IG)t_ff?M@l^GF<_g&1dM(FOu)L|z2p)kGnT$Fm z6To;ghnvBj$b^7_90k;J@|i6St8bM0pyyGb&*?Ev=WC#VFhRMYjv3%OqVIdC?nVgj zCEWY3VbmDwgX$~&)24zCC*%iR5?*vu5fCs1&U%+xIF&48!ze2~*2yOy*RaM)HhXc| z9}i5yz-A`Mx?;cIeNX!lHNBrf(UhtjPiKcv1%6 zJzxKIp{dePl#tMUzH|>#Z_FrztDkw7z-^{cO+zScCoQ8OZ7rL z_~Q}0#4-579&-Ip@Uo}7(7MX$Wj`}R!Qr2qiL}(P z(9nXy(}i~~mnezbpvRn5s)-SPeA^e?5fJ%bCwc}roYS9-NgfZUg48Lq{9ZevbUG_+ zTs!@$8da-9@?^oJwY5RTn^LWo!)TGE(6EAe_zX#oe?aBHra2W4r-4eI+~O-bA>Oh8 zjKiYP5K83afh`}UK?{re=mQsZw1>$a;{ihkWB|AXZoOV$$vJF+5dw(;J-iUdS?o^b z6o_3`M=S-V1@^aE^CR7l>PBg_;7UR*zl?B?+a=2YKcXtBnFY0^~@xx;%uralcy^i2q)lAsT0m z%sU6Xy~2YgZ%{!h3|WdHxkD+fY}j-7Ri-sj|R1U8HsHN)GRB<4X$NmUev8Dj;dY7?6QmTs*3H|mOlh6jk|iZ zBMlS7zXFkbGto2@)7o$sGB`DgM{t{?WNKJP)#I=$GnxUujPmXk_=f3kWxLD+H6H_ zZ&t0quCsp?^b@Y{2Ql=UPcCpvIWRk9%5nsF zfAyTWu}d77dbWB4T3M%4!l;_(m`Gu@jtOVs-lA)r(rAMxyBPGy_%_eQ@_L#RmPGg0*+`$;&L8aB{Zms_D9f?9ah@*TI^OtR(Q6Q3a^I-1MeGnzzCb zej^Z-)k=q!f!rCAENZ3m5FIgHI>8)>>%DF)sPd(Q$kjzw<~t2b^$d2h(;wa*NE%rb zp#F@1&R;>KoJo-nsL)VO1G^a6XHWA=zUdm*r0tSH5T7ooMzdZ${Hdt!&E=>v4$j&o zcwj_WLm!!F;a}xaZ!j{$OSD-xVph@v_=Tsc1GP{8{R?t3O4Q!eqKwwXyxd)0t$KFZ zqe7cgPfG$$CF3AF&}HC5xJp4iKp~L_+%lrXZuCVv`fo9FX{JcJN=*NIZ-?0tb6l=z zHNWZ|rYyf&PhHuQO`>Xmb^c&eEKDv9zVjFE#mM=qhOpwKN^)MGyXgdV9mHCTq=O#3=(6*yjVaD10AC|Z zhZ&M!a?iOcIZaYrR*kno7;9l|-8H|{!H75CaJxr!@_Ybm5J237yfL}|1-s#9>qu}h z?>l*Cvf=`=c3t~fH#jdmv+p! zfVnSAI)YSpOSA=I6;VBd6?S$CS+zHs{qz>&vALZoV5iteG<0YvB<6qnu^8W-aUa6@gA+WdUa8j zHJY&7iYv}4>J$v3>czb}JDY9ZcDrb@Qr-%3>uc?53d|n{f%)*@J=7o!j*qFbWyqfl!bx7Wt*9yRy=!|Htm_gDSvX429wHm;O~eC z4oUg1TJ86v{%|7o%e9wx6pkk3eg$iwE2sH`boI1@IyEsUz*I4cBo1zjk&`N@-tb z5<5Q`*x78Mp#C4m-ZDClWZ4=OGlM0Inc1?K!4`wXvX~hxW@cuVEM{h@#mvmi%*cauK5qHhHp76v9i` zXpga~@*^6SKlsfB zT0;rJVC8b;N8|tYJTIiDu@Njyh+o23%G3X5;21;}Rwv4P8yIfQngWHf9t^7GK|d-@ ztxru+1z^6JR{BCPZ5PdHc0WDOP>0OEhEZ)$VRo4Qni`r}VHwM*q;plm8r_FRZ#BF? z(4${z@>l)Zo+(j!1a`>wS5o3QMW`5h$nQN^YiLXBos~J0QvOo-N+t>qXalbXN!9Tn z4@}VQv8uiYgdSiS>0)N7F1>M|U*A870rZ4;NX7a~UkZpkt4Vh(@}!<7)*NzZ42r3E z5&XfBzXSh7j1i4|8q^b4OW0_ikj0W5AJkY5t`M&BpB`>g7or=s>5q|Huyy0XJH5$r znTVXwHCdDsfku;=2_8?wLirK?J(yHxxb(Og%ui z7u|r_FTB`+>LgwIW-o}QinEXASVTav4xfD>MoNGO6RO`eJvCblZol&ewg%e=3H8wK zk*M|gXb$#6rwI9zzB>uitk;>4-AzQrJuN*uLo(xCL{He*+1MGq=6)FXdl!mFeSZDg znx~J|au28~4^I9=-L%e7t~u7KB|aS*l=b0V*Mq;WK2Iz%GCYqvhHsgY9qsEg5jGs; zccR%@Auq!F57n!M@17edgI$Km9dP2L#7uk%!uRd`! z*aTAe^9xvZ*Y`<`0Sxg5oZA8Du59DmpzO`f9n=q#L*x&_e=lja^2SB`0$lDs0$lEn z2VCy{*OKPHw`}J=|)AecW#6p+|E zRrO7c8z>pjm4(tK?ylgx*W%W*!JW%n;yH6E5R+KaizM!{#0z|083WiRhTPmOc+GO> zf_Q@n-^PB&DmEVAA?Juj!pGC!`OStPO z7W_@NS>vb4=b$2FW?VEu%qFBw)O^-O$I}Vp zRO61dmE+5kE2p;Q{M8$KM}MpJ`xWxXsw{1v(wF;OZ~csv)1Yc-`N8r;rY2^ zSmC2f`^(xsxt5oQmdCP1*1^l#1>4Gm)5OhL(n69oR@y<*6Q7He^3eMNw>i_L)s0a@ zv@%;3A9)zZBAr&&&K=*&`x=|p*u#)fo127|+&^INc~y7)pnlWYW5;TJTQcNVqiA$8Eo|KY`o4O!w{+B(?IbK!xLbbJ z_TtkDTiAHN+j-I%XW*q6*?o6xf4kpdecRT2w{Y5{^rZesaCl|WCR5|Tk$rJ?^D;+- zGR-YDz~9(VC%t$an5Zl^IjDRA-jn7#HLI6e;j=6EU!2=MoU67Pkw+e9kkk5-oS$s@ zHwGRW)wF>P+8rOJX%-E@w7#qik##&Wd&;y+CXP6JcyaT1+PuZn?RdF{E_ki=jXa!q zg|Pe_`Ke){weZq&Su1#&xV0eq8moRjwi0y5GdC1@N2R4jLB~&(sqitsM!S11 zZ@9Y;`x@yRYeh_^Eq@R%ou%OtZsR~7P1dU7ekcH>w6dadK!2l7?4Nd_w#R?5;DCr%f2|;y^O|CBwKfMuA29rw$_fB)xO=ffCU9jp{zlk zqSD#F{3c@7yWbRg1f(#0y29Bt#SU~1Ypc`H6GZ=h-Lk|Et`HX2=hd-3aH8oBeloW29}(~rDLCMcPAL4{{RN+KG-64;oC4X^|@CSv~Ap>@sz1AuP( z->vvSj~FxnKF}iu8-Ne=08ZZj_W|{9+y69b0v!_20GdFD1Z;pN&>;cyUkB8`ZU58A z3v`G>1MmVJ;;;d{K!-TYe;rW&w*A$JJBey%A-1qov5k9qJ)8Yo3Gwo-3UK0vjQnW# zO1<8H0;xmZCpU`Day!`Eu()B-zS{Z8aRpfWJ+wo!WH4gk*=FKqZ>e^jWz4>T-@v5d zUa1G&qiNeZNf?>-=Ldi4jWtv#;tLWevub|c!e1l^&X*>IPqEdy=4Dv+Q(-kJqFqOs%6DG^NTS3&&`y{VH%Fr78fiN zapb2@p)(~77T}^0%BieBC_R$U#t-R0436k)6bpp|xcNdMKeHsZoM z!`29&vUZ5C!DX#*|GH;Gr7&_Fu|QY<`qf&6jiQj+R>{0LQB1NP zBvBm|bLGprJE3#j6@iaLN5n!%zc7E%m-U)rSImNASSF>`c}2^Z0yA^7l9Z0vVzv~T zLR7B$Z->FGLeM(?7kR2`X>|!zLvU&0NFQh2zN_l+zeLre%>yAhk5%QmBDe_sJcu(Wz zxs1hFgRLu7LiX$a7ylI5x26YEhg@3y@e)E!j|-{uKJ6{ zSC3BJyphVASIC|nvrm=EUa5q9Z7#(hhcxf;u17!Bz0EajKWu9^tTRtKvf4U}tT!t- zl6$fi&J5n3U$L!kk{aqO)oMv7leYOV__yL&&8uE*?aG*xn1An-pX?7|v|>2-IJ>sW zdv3q(kID6#_n#__-I@AaA-Ym7Atg6v@1la9Ii-*SQtS z(Dm|_WzwAN*eF3XjH|aml?8$KuHI}jHbQDdd$7`%WH3U$(D!v6@oVje-O}4r-1|)u zsoty@+lVF@xtV_)zz`>a}FMlXVylEX( zmCgPj?k$kBDW+c$^|@rD31^{HMF)%5~1rCXGS#^{L}s z?Fv5Miw#ra?dAK48K%n0o3y8F1-6W$4e*=sRuc%{Kpup{&aoPQjyRW7wHw^sP6PK7 zR({bkYZivTUiJrw?UM7rR-to z`D;aD-%*8z+N{r+q|V&1yQ}*#jyC6d;yFE2bzN)$Csx=R(Wjr{)dn_FO&ag4+7|2y zPo)R9}g}zcbv^76Cp$%GE$R;zPRlr zu+tWqN~VCxW0HE0Pm89zt z3j*b?3OWdKUaU{|)iRjcBgl>|U2i5*=7+RmWb+Z%v6XX2f!mzzB-2O-Ynmf`i^5wzE}=-j0~>1TF4uXCr%W=x~-8Jb_w*N5tKq7mo2c3*$=si_VELe0U& znghRD<9&u3Uygu2Vl){4&RkLxF*kgabI<0~X}ApbJDIa>;h>_r@B#U9c&LBS^npja z+~_6=ZfF$hyt6oF)Yij@`qxdGQX7DQHq#D194qfKw9>UUN+7%7>q;p*ex{P$!KYk$ z)o>*}LF?w%n^RSkb~@i1y(=XaDy#3tM8s$DjLmd>v3E1CEsu(0+nQ8I3Adv`k|}vk zH9JH!qQA5rbM}wc`X6XWByg&f`Y+j63;}CxD*Yw`X?|bop4!J)E7N?Q888l%yJKVy#TwMLFC7#Qf z?YGoR=lA^9>sGYVS7I$;^>rLKCgil-$(~O4Nx-75woP z8<@K>Zwb&%PNMTg4qqwDQw!%t)r`}Gr)o~bRiXo6%#Ll_wU7w6&vf_n{GMqO$h9i0 z2_0n%VV$Z&4^~(J%`PvO)M|zzjBmWAyu%EijE8QQi64F?*QeAah8(nx-8Zg>LBo%= z^Ws@Lxj;$nW#anqLmMvwp4rx?=hc=sb}{B=oK5VFat>p){@ynn)K1o{DeW1842T zp>&Zq$5a};uysY`;TS<=Mu;}Pw?^D#+K#O8m&$X&D@pCt)PMBYmgc6uklX?ja$A7R zQQd8-sL|=bX?%~<7J`97>3XAcI5vaY7SON7tD06OOsvn_(%PheMjE|}ClY@iecO@zAmpOW< zU-g~HnAkB$uM%YB!=A&jp6QJ3?(0@s3nM}aoh3G~NE+lBnbrv%U(gik*((RIpMSb8 z5;SvmkGUa?oAk?d$0uKs97#2d%b_%68%a2hlQ?x@bk_kKkY^cEeQR83`t(Q|=uPWY zC4NsFCgKt7Ui$wsMUwByTNZ82;}&e$5p4Sea;L5*e=$nvoH?U1JEF=cbf))(s;yX4{;& z7R|={{N+>}|NnAw(PTW52|st1tArM4dlXXlcXc`0D$r@9;#aW%Y~I+9G5+lGOd6;k zLv={rk8I0j53O}EYb4^H;-aozFFYSBf6r4)D{ntp@vo8J+@$Gx(zkuYdsbbig{{4x z)@0GeX+)<}Da%F?l$=gG81l4MNRS69n;t`+ipfYZH5RgSK)h3)iMm|)nZJua_p_%iRASp_ z#qd_X1X+?AA*0Q$sKxDOk7b#zO`MvShE3{RV2F1vU3OzgjQK!;ZRmT8{w)58>4+mr zfbQ572u|M1ARAY{E8L2PTQPqPr>I3m1ley$F|h5C2?exEp#w$FPm?q>urO9hQoy`ID%)_|D?-%H7?eBjSN)j7Wz-ZXgJfU9&sB799WM{52@2$7t|Yq&p+oKuS_n5VJ=DS ztumUC6-zRjv847hn$cIE1^cb2b_No+I1ad*C!^p(YqDw%2@k>;vl`PD?yjBLe*AuFO^C zF2O);GURN;L~hX&dzD9~ojEBb6B&jPoDX9_P3py!JV&5RZMNNc>zl&G^hQL1EX7XM z(7ld&g{kle=VHX3x%3Hw3LjpBhpA;^Gyp*pT$mDy^zGDXjw4);a-DWakB%vt=o)g1gLS1JLn(%HzT1tQ&Vi={? zeM(<+wzuih*#liCjuh0{STa~3h=a{ljqM=o9^a=o%Vj4g{%OZs4dESxM~@k6 z$_6c>&{JAw0F^C3$5jxYBjga;4vahp7b8sfB3Lz?nl6y17I(q|9wJ^Qkt&mO+W3=j zV1-XMdYJsfAdMRB@GKXrI1tbm2na!_$DDLxK2R&TIg4q5`SlMVy~MX$KehPqL#Rf^ zz-CfC=7K8h>rpG7+IkP>zUjrjoTLAWaAGz3PlR`ZKtLZLAPg7~5c7cIT}Kfek@qjb ziuL>={K?l|!B#c{*i23$bp05ggfo{Sj2j@qBz6!Jj}l{~d@7)+px{G&>3~3?N@! zw1MN5`yUp!5zc@YTHA4D5lJ9W;S!M_N1;#p47i=lD>LpNHnam)da@LcS4qE z;hIuL<+Sx(D!G$k;v^*~r4oTm+*udc>++V-y73$w0yrla<=Q+1gX-q%#wnw=jeN(( zpJYRfM>iWAd=noHOP=hS7qN8%&h0C*PD8J+M#ma|=JV6Nc`bPiAU+Xqa#2a5*qyt4A^MMiTF%php@F<+H5fN^N_apPc7tvKsnNviJ zhry>Iq^s7cg3uOA(Fsvi{Xx^OdMOHju^lmnMmL3*=*?=uMt3yr^o$_M8sEyKiuTP1 zU(uST9>b4ZC}an~*Mo+* z$AFaRtc%^0VAocTLx;+#$fvs9sRP@Nhuei#U6rReoxd4|wB85oWUJ_UFlx|M@~+5g{=c52*I)kJ?$Eztk>ct6z#D|LHGjBRpGQ;N;WXHb$_q4 zWj$yjS(-_j$9OK&xhcjZcU==#*>6|}@M)-1pdN+pT^&Yb2;sMZ_t@xZt(FRRp1e-s zMm-5@j#1h10s&jS_&D}k=3$D^Ey8bZO>)MJ-^{W~fvJFfjPjQjve3A?dq@#hM9~=> zt>mkPK;l#*5NU7>C!MU9mJ)0qFy6O{j9gS{eWi~3$zti${=)~68H^lLkhLQkmm}5) zmlBrQ-LHkFYYV17(hKStiE>P-QjK~{aN3nWO|gQT;QU@hd|6#kg2cx-JaVFEjxfO~ zeXb9Zv7Bc8)0$svR*T+L@3Y4!_&R)FymJg3HDzADF7 z7n4R@=_La5^u6L2c#0&R?|UGr-L*N{V&+o^7R0CmC>FXqg3s`ERq{d57ch8KXmG5U z9()2|?>Q6xhzxk1yRy)=%V@DVlb{7y2z;HlegZJbR&v;&8&kq7_;(PLmkF7y*wmYJ zfmK5J3DVy^F*?i3BNe77Lo@8rATlj=wRbPATptYLfLleOgL_)y<;LXU`B z1c4`fN49jDMF(`MfRE__ylb($;lH~1733B}H`Fj(`A%kEZ$aV)VqF?u!Z2zywOLOX z?WC@yHZTFak0AZ9fSr{~umW5Rtxl)gNyqOVUGN%x&ItYR9AU%&xwi&d7~dlV3q#Fq z$ZX-g9(W`K#?2FERIMhuZY*FQ08!e;e+yEIv52KU*po?#2zBlEC0KiIPy_cdtkz~J zoGz1Ary9amfCTLgsh4W4`m{U(;FSdmhr>#EK)JTSt*?5A z_aStxC+HNS)f-sLUr6v;o6DIN|3Nwy1-04?{IodCrP)FB>raaOwjf`T9Dpf$S^M+Q z-?`8HOIbZB-W0M?&!1k&f28qt!Mnfg{v*xO@ZG{yxu-Q3A`R)b30pf~C;ZV0L$eTwRX2DqhD<6~nhddC;<4bCa&!-ex&Q5GJ7+@foq zu`#{lE7rzP+D>rG2SJ-w-Yr*ri;N53GsqZBCB{M0_V4adkC`kIMD3I!j6Q@dUui=X z_1)K!<~9%90aTD{49fz`NiFB2m0JM>UR!8-o={93OP%-}UkS{zX-iqzLuvA+SLq6@ zB6!V_69h(O!?nsfk=>nDFQT6u zw24Bpp008*>{}ma1x|h}WIQb~?FTUmijGcz?6Y5aY?LpJSml~){b8}40Kgf%)5(f`$&tu!+>ISXksF*(aef@mM8#T3zp$UEo`DMkAs|NJq9kWoUg zF-#j`wPn`9*b^!IX)6pC?dFU3Qv`ITUBgP9VjsfLD@cT1GU0DEh#T;_P(9Dh{}H3x z&5)dh`7H+8Q$o)Z$NQ(ACk2g9au)Xf0hBz4-`^ynl2893VT-=cui(D1(;Y?D{sasN zbadjXur@_SB?|2iMb7=xSN5=_gN0QZt1QC0HR!Ih`+%n*M&^|FyFd*u;B7!3i|TOArIH0`O4QZ|A*y92gtIS_J@TLN1CUwUzpb(@_PT9 zJmf%HTHh>|wH2m{4Bqm&-=?Em_bV6Gr}aMW4yIpbKQ@(Q#YbhqZ6rr0M95KY&~uZB z(jn0QzA#?VApAEwqSS|uS5VWygc*7+JUnbQ-WewQ%KV~9c9L&yc1fxW%aN%Hl)r_Y zXAKnUQtyYPN^BrhH)*A`FY)U^jYY$jsOTXrYT$qkj%2XrOnr36H^W$@#8Hjkd}xM- zIhZv|<*WQWW&gckBR%YJ_WtLWDO$(g6Xn?C#?8mV3Pjeu@4aTSePm$*O6-OTqmY^{ zvOIuqd9yKWz|CmBI1^jaLWV)8bFkz>bCnP5^OpzxaK|8`>N9o@t&IC(t0?&V%*{*w z1R-^lA4eI=Ct%9wP_CUsUCG`r8^WiF?$NFPyG2=`m@j*{z#yw)2D$PxwPWh%CFKK) zb%1@A9PWYSqgs_e;d?Zj#G`!hZ~v?<*bbRUAqB{blZ)HC;pKl!V@^doGP&#^iv`Kv!o8k%Q|4F4)-@+@#0KZ{a3HfybJ*`kOW@>iVu^XsfJ zaaevh)cDIUyju%>u*oHx9&Z_$Xr5pcchj79qJ%)kmifw&_yydZLjSA^SpF?$IZaw% ztDK=ix9q}E5Vv*N{8FF6&x~4^8#GTL%XG%AgHANhN75APt?$IXXr6(TuUwpus+fSv zjv1hfSVCm?RnGqp;DvAu?wZVh1+1akec{Z)MgB^)Rj30@hBopll;Hb7J6_?^KPb?An*=>a3NAan)jDK6EWL~11?YP78 zBPU*t$f_0i6Oz9wA^@{-!nTD4nXPaGm3!P|C-GRk_jj(p=Y||8-eg(a=lN&l{9n_u z68^eWXOwM%=>*J`PlKWBpPbi{z4|`gk01|OdByBWTCW;7MTfLa3CQR%W<@j`{|adq z1V`rq4(qR@P0ytwnFbwNoaxDsMEgaSqT!36<`KXhC3X|Y1zgMo)@Xn6cidl@wuj53 zYUh}p8 zRi{rV;%y-AbcV`p*6ebcKj~zAAEpbnkZBv8AcPCcjl)J&0+a>@7Z$XRj z&1a{^e+iz0K{*-EX4NWi=dgziHu3>B(r+S(m_x>9RfOZ*e|@rqp++0x2x4H5%3xQT z4)<3$e3z}l?GzyggJg1>_l{n`5a>XL5l1B7amc1~)+R^OGk2G*?+!(`Eq6_j)gA7H z-gdxd6J9`5%$Lv7TX4i26>WUa-~)!RwOBS9WlWr#O)CfkQ_##Pco*n+&`*n;@(;FsYO0;jo=RbaYo&+h(B+y*2DE<&>b$lBm(a7Ju$blIYBJsRwWLpdM` z*l6(KAzNCrC3j;A*=V?V+(Ji=pcyf4HmT~?bY6{m@wXWvQl3m;nY=oG>_39ieIj%W z>XY;)LsmNo&LhPbS9)u!Q(^HcsU3@5=yuc0Ma*f5RG*5_N;#gg)S?eOu2V%wC_T%> zvqW<}vL+X8qFd!kKm4}g?B1|)yd#RsdzfFM#TeMBl$dt0Er5956GS#ElP2{zm{OFk zIN%-T#loRQH(0;Z?F_T0oWAnA)rxzNe~8%SGFwtNRe zW%U=Bvz)9o{cW#clNqggVhEO(uB4t07gN;_(P5!nJUoO+I^O_Lb#j6N7G!u5+LHAR z390bpOtzv4di={Gr?ErpyNKs{==P?4aB~p@YZd z*QEkQ0Y#eJ1#-#F?FTAAi{Pg#YSFDu4wcK|SKUojGA_+&^aWe_n=C><9@NgL#YSmq zstiJ4R9F086inDa3aDHl1#|L}1se>-CTz7N)Xw*JCT#B@iHn3qwG?0ujL$p>`}(J-XSq{uCUSN!%M1v#K(gEP*%eu1;sbqbR!_m2WgLrH7OS`(S~&o!j@7>O;{-Rr{)tW8zIr&@GgwtpR~-O z)9NFy0k2X41ZSC)uWv{~aUP;>8QnGbfYaYs>DqWE)o!{pP@)W>dw3c><+xbY5lgZo zlDjp;^RtIQ+-=TAxeSj=lywc4pmp42=Cb}{;`&mVVVMTbQ5VQ8udFL59pb$s-dlH`bM!1yn>ge}o&7MY5?D{sEZWfRH?dY)CZ3qnrVbu;(0 zPt0cvnF=g4QlKjm75#=&yzFMO>8dV~EJBgV)kWzHTBcC6(UAkymJ9hU#Q)p(m4ws7 z4=&e+g_}c2crh9hQv$q2D=6kSm>{I+Zy^-Ooz#q9k!EsTh&icm7?Bo5o87;`+J~V9 z1GEGJkZ9O%5otu`2MMIMXm@`G!R3Q$ZuAPu`TX{!0aow~ad9X+v?%N11jZl|nx)Bg z`3XY4&fEFIwRywgTTq_kDpqCKGC6FK%c%e5TG=i9$CX5m7*43LV791mSv`O#eHO#! zE>9qU-zv_KS7h*9FQ%)Sfs@#8IEVF2N%lxQ06nu!m`dQ6FOkcj za4E{<>2yVdc`}j_Lkhu_w=Zrk)6e4nfcfkGu)_vMUH35xM;s8M@74gm(NgmDNAzXY zc4S24U*pYgh8W;@^A`zlyoqu7lNgp7<%bD6^`+&fV{saz07lu`UCdr>MrU)Do0`;bo5ZVu-yh)lLo6EF7c9Rbd)4OP)mx(fz zA2y`MEUDe*8YU4Kz~Gxm!GH4OYmWJ?a>n?=3&TA|MEhgFP}jA{_?VZ<1)X51^KUEi z=1snTq4mc&-C9g}yd0xaCxwJXrnSlt0=^Zm#HERe^2eo)7-$D_Y%~~gfbs&h%^AjD z0iS066R>{+yMD1v_FrnjkO3Ai7(?I5kpb@C;Rd|U-Y-A?UB|8C;yXjj0s>-J2?c`l z?>cT3Q+pFpBO^n7`~Q@5FU78WYjDr1)VU4I;vuPyQEWPZs$PnmbmmDcy!aw2WEQ?? zpdEXb_;$zMi75asa#jR3{l-Mfpd_NCtYk#6nNIkAurgzI`MqW>Kke?#DYpZ;1DEWi z&nTs$W7X>+Yh&kvas%<70`8$VCohWDi}wRUua~X6H>-~WnkB?`-tzg@hsuetm)3!| z_oug3r`A6GYu1goH)>4__SUh3w+*bcLZ`HetQpbkbB9{Z_S(SQt*sAUYxXdMM#%+j z->2uOr}OjK)tSJu`ogE}SFiFdo9lDa%nC+Jz?*2=fx+9E>77fhN9u)>*M>z0z%A9f zqn*dAW08k<;^C;!KH>ahborWL?A6xmp+>WVzy9iN&&goJ<%3ll@Udg+@P4^JZyd#c zd&_@dZ6WTtdqultbafqH_7IfyV3k(3|6*Ue&Ra0CV5@I=X4>w>!~W~W*ADCDndjFd z1@G#(_RL+9xgQz7m&@z)%<7f(ThY0J04aPV+X&cP$cMCROz>UZXa&YB{{s{AFkHO8%oqq2iOCun(tmCwqdTmI{J67e_PXZxL^hNmJ<+v+;JMsvgg+tbVL7g3sug!QfvK29FM|6|8{u*{>&bG3E*HGDPp?$O1 z&Svzo?0;si@LWm1ALP~Xlp`6Gx-s)cW4gNWjig~_hV#p#LwknT(s&jj^k+ur86|}; zgxY*(L!P%{ol);i8&)j$E0alvu!pp+uAb=^)0%eHBn3MU;d_Xls|6$d@2jad<=H{n zDmS9nO=|RUXPXbZE1AVH+HAl#=^@SXY=M2-6Mo*a<$rv1UW~(ayEUWmEs8@vvf5bf z3C@Mi8M>n@Ab3xqn@K9X5ks{hoA@*pHMbhoGb77JO$OYq$VteCoIsXxX*W(|D7h8g zmo~-5NsryByFoJG=1irgp2O(pS(j1$lBcH{>IKaXsy4p?mj0E4P+epA(!9GaI>G3t zFazm2DioHhmXY97^6hK9l*seK;sqVawG`F z%|+5!dkWc4lCrR@g%@CP6O@7GGRdO(7Fm9>JLq>BQERYq<Vk z2|*L5NjrbILa0haf&5%U)hXo$vzYttUH%MHl|TU605mGQLM;9<9-$I#*pXg{U!v;J z@`73915dhzv6;mOjcg(9l=pz(D2W33euTP7#S4Z9H0A=0@dTieHGdm{2>&r^IDGdm zJ%_PTA_T2CChb&mg=hjARe+u}ykHtY&(hPsjX>`I7-iQ`H;cK!cz}TwKEqrBVKae7 z1y=}Xpr6NB2jx#o-C!ce2fSz4+6 z+uiGa^U0=d`^Le`8+m*|&&`U5m*{bFeXFdgBaIL#8owDJZKJyhnnr85`W){$J-jf4a@xY~-vU_pS_A*k^KTe@b5jpGZF@pmr{ zEFDu$M|ajj*u^W3Pw;P;L!sbtB8T$Y`vWL?`o zONzd2+qP#g-Vfb>)7g*LKfW${Bkob$b1fSB<^T^Mb-i3~&+$m~J?fvs`@#BkAQdWT zVol4b4Bq;~RLT4NedhSUq2XFfwyS+7fv#f=UZL%y4lZ`?IO|4_ZRBnL>0Tv@Tk@K7 z#Zjvkpda^>@U?E~f?XDZ-U`|2o|QFaOzFufON-R!;Cb&zp@z4Q#C#_(XqE1(or}~e zi7Sp;WUMyZLHbVz{<~McBiF5!&J6>>u>%2Ks~>Zma&|9Fefu@eOK0q|LD;q~Q1HYP z!(E&ndQ3R+GCk9#Kbw`-c(lIvemC#gJhsF6jNhHt8$K8QS(3x3j6lEOEtrU0=+wx6 zu^TluiU*8%n-pzerI?2D?lBR9*U_X&K0G3@8|l#4tGT?uDCokNb6@r${tY-RI{o08 zz*>^#3_9Y8|h3t@2r*i-+W6pbMn)TQ^#xLgIpH&kq)(tW&Dsl7}tH^+SnXjrD{o z+^iL=_2@q8g1Zrg;#iTElBSCjj`(Kelh&P(wz1!EO{9&H7+iOGlQ9hgm^yaob=!_D zp@x$n3i@oVo$C6teN~28e`^%B&#H8x*1Yr5M zi>$1D!L zz;3WN&t!FKMKbWc8zt~{_C6D$-!d|@ zlcd6|q_J;7sat@0$Ed7HD_HjMqPgqf28kIa(v6X6#W#mh-`pKXIpYYS#--l6L!}wfJ%tqSs?16YMont+|jF z${oDk!yRd}%;YeeYo7$`#i8cdT;!1BwY!Sm?b;Wuj-@XOPtS1Rx385x2g>)To*!f( znYvyxrgx+x>NrMBq^-SWaF63Fu=8``?DdQ_@^g&`m05ev)&wCPeW!e)?s$@4u@z?= z`MgYS<%!RoT4a?dd1{zOfLJYDclInXMfk%e?E_J`B6wIrj*yRp1H@MId${K+Zs!Tl z=Q+2b>T&J8Xu^$H8}z>Ht$xJ8?IBjBbeL`DtIJF6J3p41PA~k3XEl_dr|Uena5tyG z=IHF*eUIkI%a>pH70^fF&Gf=Oqa^W%Hfd8^aNmPgknO3)Yy~(kv~B=y-3MzY0|4{5 z2VXSw9V4mm0DY1yZSdsi^l!dsC~-ytQvTq2)5roQi3vVvpJ$8=qyk9wmyr#U({_KW z+d$t4@1K~}(aBiDp{-#8rv%Ck&YG5s?2%nnbmWgob90}ALMyGS&qx-GLGM?j*Jd6I zA5@(};FzspzsQ?GW!kYaV1m#L>|9rLqHekTh#kDxTqTmZ1GB=mI|v1vMre7JHMu=H zO(fuTAmejY&tMr$ogMHjxX%_EAm$#r(q3&%*-sq8jb_zX!h@!vL({VlUA(AEN$u`2 zEZx2Tre1MPV#SYNuQMYXxI_p$w^I*0Y|_CyY(2aT!_(lLN%<9LaiN8?G1}uTzKOZ9 zFXHLkv|SzY=HM9=G4On{`19m8=^SJJjT}`c?zb09W>TLX`ixSztkATmk&%?bvWl4q z9%D{G_Uz-0D>kq%$Gw&G#iQLMZY{J~HItvXjg23@N4jHZ?s^ii95Qh3k; z^O)99==>al>HU3nk>*?Q{tVeV4to-b7(L$yo-voGSFI++il!)6A5_Yh(V=v`?KJlq z(e`g*9&; zT@`H1aRsh)NZY&e*+6B_MM_t6kc3_v$4dFN8TkvmG@%*~jWhYNEtDe&D7mf^1Vv!Hgw9LE&j>yVC28GAIBX!asp8?-3*U2K_yasb zZelchr_KttKj7$VW#slGQn`edraR_!|D-7jk+lV!i@uZQdU#v0A@p3K&zio=mphM* zjQI%o4gj$Q;WgCtHx7e*dC3-S9qf9404UT-Khdsqhf6({X!g&c(n<})>;BC@KzML2 zJNBCEP1RrUCrV_&3kR-^SZ>o(l-L*w}8Uv{|K8!yZ&1kd)xk;E}l$| zIC*9Judjo+euaYG09)$ah!qDH{V0m@*-AddRe}-RfhlI^}cY+%EmNn(8H6%sMvu2g~!ld#_5-XbcgAz_#J;8R5*Pa@1fsXrI z%^ILADZja3uda8+1=jM3HFi3q88;C-+Pgx>rrm;rVxby~rNWj_U zP+J{sw0lT+0+4PD0VYYt*zmcf1CfH#z)$91Q&``+XULSko^%USSeURRq?Y+N>fOr} zv0#>j^Geo*<4uOvN`sc3lO)x75g0cK4`if~5!FyC69zP!%XY>bbK3viKZ?L(4z@$s& zMaa;D)Xl%nvHwAd;Q*p!{`v>SO6hNupvG{7wNN|n{{=-Dh_d_b4~iY<9~4F|Aj-1C zKPV-tf1{8$hx_k@Dy04|D3U;wJl8)csN6jfgRXfl#+t5!B*_1#uy=s2tNH$iZ)`Sh zoW?d9+qP{rYSXl_ZQHh!#*|43kVYKKmXvM7-pBVYl; z6G0!2uPZ6-OZ0&(@b{(q(Yr3=1*`bIh2l!k%0|Jdr^6xt*W#`|sFXFQGCNtXsHkUj z(cJI;$7mg1>uVdRq9ClL`sy#0&jL`=%TiqEpa6z7U>u zMV9PS?WJkTK2>SOA0T}l)t!< z0l5_#MZ9t=G^&umbNj^&Ns)^`5I_XV%njlwNf~ifkw-JDZ(T6ME(rcT0D45DOTCk} zRNogGzRh?7#PMgetRFN0ey}6cN$wj3?26>inG^Fs0CcRNW2^%f3ID2TAb^maV5?dP z9MK|>@N|ttI8!FjvvuM9Fl>QEn#tGc+VRR}i)1rcl!=dLgn3}T(8$CL-ERnW8LL0i z00q*)WNM%-f+V?H^+y({5Cq?$F)00kp~@f#4ynhq=h@^YQ6LBo@Hf_CIY=j#Lso|Ly z*r0uPy{Wsid&4wmPUvPPoh5K{qQ2pK^sS1=tz(9u3vllTVoPz_4Hp2z=R?B#sFr>s zciB5nzXXiRRbr9Gy`6Euxg)tX8+XK#?G7bf|Mud-p9LmzQWJ6 zDo+a;2tLU}ai~r_Y9DFDc+>*mfrW?kL3*9op4*-qDKP(n1jU-M=7Q;r9n1GfcJlPl z$4Vw)$h->CeIuJ2QyanahVomX_n|q3rrka}^KNKa_cbW>d&(ZqL_CG=Hp(8z5lop5t6{*wyy*3V3$nE3fz-l= z3g4?1yg)6Wc!63JXVi%mx)-{W7H9lhi;0G!(}$DV=r$eM&xP(q#ROJ0>{f4z+rQ49 ziYTZ{Lq1|)$Ul7!Csy`g>q1OB7?*N*Rpf;wedG~G>pM!teN(d$=S35jF~?ccy^-Qm zDUaZ_&^5Kf(~*?m9ocjjTaJ6qq<>o+6%MA9h0t}0{F8dhH;oker?Qe~21N47T%e^6 zepxEQ#J5oSCGP-Pxm~u{gB!*_OG%AFvhmeY`&qo{h#L6&oBI*RP40d8S@&7@afR+T zq*-5LEDTZ<+9%D0)+9w>LuMJX?o|riOM&4anZoBAmG*Pi3TFy0~}7d<8J;j%Q8-ise29eD%Z~q5p>h2Z-o!x&r@E!2NPq-SUGq zmLB;e|Eyemubl8jTWfH@KmqDqPBU1MxEhX}VwX!MVHTkumAK(!8&QUeRw2MQ0Wedk zl>?cK8i+~wcr#pPLFpOm*@FHtl|yR?RdF#`Q8;$N_&nG;PJM(>-trx`o&RW^JrOzETzk~>+L9Ul$>xm*V8 z18EkCruT_b45P^)kW2{E@Dvk6EH(Sm%qZ7!2Fcrekkjz_*wQubCudIZm12I@2FXcq zO0SqB%g<=V$-T|`f)LNfp+TZr?vR$Y5LB~inT{_*++|;m}uY|dP{kik13P;bw^MA zM?P_D+DA7{2~SQ*_1SOoI;GD9wAL9uNR%oZN%tGfvZ@D<>yIh0Sz>UGCTyH%il>8t zdkb_FW>Horn|Y9~xU}XzTD2D(K0T%39nuTu=^#U8kWxW-Y}FATcKH0Tl(m;~=8!Ww z%SR@^^cPv+6{iy~N6qxwabUvT_`qgOCg2PLPU^&7+szS71*V&isvDHhBj-vBJ4Brw zOifX-6WgFHQc_vAC9APx6H@tAURPe1lpkz++nB3o(|SSL`vMeNlEMxxz(qYxW`rsB zLbCOp`;e8Aye3M3L2DikmY)r&8n}<^60tQwEM}}4%mlwHXAO%m!+sEFgsEHH7iq?w!n_Dy-<<{v9HiYm zGZq_)uBzb2=&NDpuj+}zJNOVX6i=`D3LB~Oegu-N=7N?ogM*=KH6t?o7 z@$mB!3wM!4)r`T+UerB?YS`Q~phi@$#(!%EJBl;IV6LMSCE6}I{m?vmG&xS2M1ySv zN4LhGjqy$+5X&Q#6 ze{D2(&1UrpR>PpEyL2)~9%BTjtN_F`tj#n`%3voBS9I+s=L{?2Xuo0ZEqc{;= zr6>wZXs`8%oK^Ol!pT&$GzM9NyShr(S*`Yl`?+WRl+)s;B9pEtTZEq^!J zg2GK>TuJR(#gnp*`qnTdTVB`>h5mFsc|2&d275pi@8WFQu&-pX<*id!(z7j9=|VL; zg9W3fLjy%0)~Cj7GxXkMhNCCMifQB-8gsspr*7gI;zK2Wc5-q1^ehz=ajWCm+LF)E0F@bDJyqbMu5(^<)jU@J!%g?Uj~N}&5Nz?*@bgED(jy>?Z_ zd-C!kD2odM=)IV!A>_>MqV(@Kiip)dN|Ww?;xaCx?3pHbqk=ZE>645vfWB=u1+Ee+ zfX+FGRhS*GJQ?w%Fbc*Ro~5j?0qitH61=H`2O!{zDV}wEB^cn-n$Zk4PF1${!}oPX zfTN%j;Ma&_U6E&ef|)DmVhX+p%);zgH}u8%UuYk8{B4a<=o#J=X7@;K6a?c#sGvm! zAu20;d9E+w!=1PGPXAO4G`*5PI}l9q>g=jt82wM%i`;1l^P`){ivVq3Tu7=C`lKIE z?K)rEA)OhFN*|O)g~~lfyg?Z+aX5m^8Co?JS_il%PWG18dvc1l+C#fp&gs;I|W-g!#xNVh@g~* z5HwVcPapz!`mH+$^z9I5wMgkd&Il+mD|LOfk>yw z8n;hR)x#K3m%FQj^&y15joIc1eM<<@Co|sp<~~ZxF`%hvE{yX|%rBX}$2fJRjcE7b zvBTN`!_8qk+1p$TA+^5Z~+r zMTytZwJ)ryiAS6I3Dr+QoLjfjUVlB2c*I~GKv`)Ibjhf%gfdc*uz(k1FtrQ)grxfx zX>lFe=sUEO`9i)`*;~WHi3yW^ROhI)KZp^%Z#$jKov3M|#Z8_|nhI2`9gk*>&33JS zmo9Z#gA(`hn|3@i*1+$M{DYlRh0wp) z{b=I7u32~s*Pm5sFRZNY1*9ub-IViBkCB2#ND}YRj&F*|HH0 zBRp`(?A0bS+fQQ2o)YU!#+KSmvVB4D{_^ps!RGs z{Tt#Ce&QqI5U)Bn(h%K3y=J~Fey%gEFRDb-$wW)LT@w?2qt z2}h231%!E(DtVnHB&(&;zD&uLJUcIGH@9-xNM}q@72sb8K)Z!EUiPkZ5B{^!E_cET6t+Q3vt`YS#qv>5m?? znxX(}cY>!9KYQN#oM4GOg2W2C+a7&lOLy(5etQn}1LquyXAaZju`@rAk8l%p0||I~ zo>;u~c@3I3DPT$k5IzIk{cn9Rwk!`G+O*QpRrx{HU!~|sX0;mqg$u(0#65>vVGO3Q(%`Gu z&h!=#BYOb&gdPRp9JX(32n*dCuLRZp9~>Ua{`KE%pfV2!9SmJD|c1Y#(*cZ4>A{1j6MSJp`4e&bq)`LHMi> zD*JjX1U`lmKLaF*2)f)EN?d&lB>%Beb{L=U<%TUy=fe>Qwp?$cEcLVB}?ua#P$^q1hEdG>HCSxp7cJ_5ycB4ENRn znWk8)>|l{h6jjyv(oAVLlNmA2zNM1~;mhP(O(eJ&L{8G)Y{;6+1Uwv0#|(z6j4JNi zqyo3wf=reif$IcOkq5TZ2e;WO0iDZvLB7UpX2hH#H6j$rw1K99rqjZX3{C;Eb>?jw z*x9c~6FGU6nMSzD{1G(r=o9Lw5^%qv09<(F(G~Pj8-0-MCaE_tlh$Lx4#B1=@+^9m zO+qX}EGfjv1;EXOriYwA_A(2<9*%OdhU6Ebs?L6!*|GlSCvE2VZc4+51D$}$Wu3`o zNDRW{7M3XF(H-e`1?Dc$B96L~fu+tT+mKPfl21%pE#)kzi)G<774R$^)K&DP+La(q>(cbw&ovX_s!Kkzsimas-x z31Tl_L?KLmAWc4=>`A)+-w1B62qv<>5VkR3Bop}mk|I4k?Yz=f49GUYJlvWdYwUk% zQD)A2vYJ@LFBQ?PQ4F9+5cTxOpc$tfF~cEs*y?MZA-$F%E3uP9jKTR z7V8E(iK9Bd1q^tV0CZAIwXLx(3bDNA*xj z>R)7B6h9W&ClfbNhs2GdL_zfZh`w4PrJQ}Bs-^29&$7tqq|CCw*OeG=jb^CdIB+tw zml{xIT}Evr-Dx6K{QSP?`2HbDQxi_S|9kT-*4W~KDi6s%bI44&)DdVsyBK?Q27~YfT4SD#@(cf;^%bI^T z0~W~vj#JFLJz?Yu!t$6&qmmye6D&v(nP&K2 z=)E866m(k?Q1LLsxUUHW+t{1ZqkRf)pup_w{0#aZDcHUYWw0|m>e zwH5?<5nliqyxU%Kq*D3}`f-84PiRA`YX$xDvd;PxQ0F15KXsm?h=hz-;-pk*p{aH6 z#FP_70uK6^KFhNp?dIx@Nuc%Va+4N9KK-$49k=yRU=_s5(Kn7pYmHzqWTFdE6fw04{VYMuJ0)?*S!0pX{}%rtLO zV-}E1n^G21=wQYqw8jPloEq#Zr4R|$8^kYylnkN*>%<8)5Gb9C5mFjS)x_e-V2yDW zncW1_+o++hloIl+8qzR2IyZ0T9apG5HV|1a3sVOJ{sRwlx#2&Oij~PNkobLwOF-%j+ zmN@rOZzBfiC1^S8CsE(1}OhLiUhV;f`#7K1|p%o8L+VSbKi^6 zi`I0oREktWspH_6l_CJ=JT|fck5o!dy5c5Jmfs4Uib{{gm9@=1Gw45Ul{vD ze`EMwZ`v!yNc1ztr8WcQ7w)jgNNs+FNZ0ub;wRcxtgLD1@p|avpc&qv#XgShE&+fO zf^+)-SP_!5jwvVVmk|Cn6u~wZQi@WtJg^Q_#BoFe7W+Pg1z)9Up&TTcW9pe<%;;PN zjsAcrK!^GZLiAz~_)f26nyY{GG)HJYE5v?l{J?(1lG7r;Boe{;ZuZ@ha;M04!EAim z(w(nBu1jt~g5Y1aEKBznAOl2&V!BxI2q@q1(UKBO#L3AZ4zViq-L66fqk_vI$- z8k~sOqui1h;7x6m?1MxWvB2yRdIJ-~WkP_SGy~IGbtQ1t*LEhl1CEo=EargG(ga14!mLUm(3 z^>>c>aMK#bTla4~q`$1|M7ep(Opg$*q@`0p?WY8F^UEWafXTeS7)jv`e13QKRq5HF60aa+3SaaD_B-d!$f1h;?8wD2dOJ)s6Rk^rOBSM2$$`OPfWtVfwQ!ZWaHH z@;xVr`FhY1&=onRU5|~Hst43z0R{-m`l)?+lI}uGvA+QqxlguktfmxyN~1s4eO)W_NjVRuSXKyv=IPXcAoq zq!dtAjcY2#Q|=0q3J}g<3x6bzA{LruRCqKUD2DYRubSJ9Q_NFRGkaKtN@K$5*hYEr zzCpc9pVXv)6wQE{rNJspP#u%%e21loEIDF;0wJ&wVIaKI5L{ps$VrlisyWjqsi-iY z+jHJeIU{y~7+pu9<-dG|jR{MMMclZGTBO5rqnE?TpoMAtbCuX7l&hT%p0{#Yw(vmZ zJnEv9pGqNn&X+y385AZ1wVx0C^XOMqST?#Uq`E+FhP|>P2N^!a0e+rHK`$;`wa%fd z@^wK00mjP~hMS6t=BpIsk;5sxi4l7F6a>cSE>uMrgp@8VHM|I}$;IcWQ!w$PslTUujkJi<_=jT*1RL7z1z6@im(6*Z)A=?Y;@o9^fP^+x7#KEPmsLMNkbI4d*wAk>y5K{}0T5Y41 zr7IL==3YFW8Hw7i`)5|wpykYaogh_2>jHkn<4x@@4*WRZ6sRuT@+IPrREP)m!ga0p z)k;siGE38WrXi*6{zwx)ZBIkKJhL{01!RtfkwxBlbU!{@Sbr>bSgN~)Rz$?pV=>rK znzEKLHz6B&gq@LkQDB)I5aGc@(0&2Q)3Hvx%V9K#>JER5N7Ry4KdSuHHHPQHYY^0p z8e)Tlicb1SdZ{N9GViT8X>i@&^8yI#US2&(nS*AJ?uRK27;J?IIy6{4Jfvm>Y=UKe z(+PHqxl>2kbkmFu?&Q7fCTyvTL~PPilrX-hxS*K|7c>U^siPQHX&dMOu+&%@lB4X^_(gmPmr?D zg(5cAR*>iz1kLpbes%;)A}D$ZbE;OpdC>NGgO7K*e0*yL<_rINdEs!ee1|IJRuMJt zDtk!3pr83C23f4;4bUw0pBgF2;175`f!q+zWc^u0OWOfhyP}8sNc?26Okf#ABgHW!rQ7z;&;6iiqz) zs=(5J4MwUkYrm!P7fL+{W;ywoa7vwDQ*$hOD-Q={bNOUrm0;J;RT;LLP10R;daU;zNszpQ3z zXX~VFU}$afnpR~cemML)1DgNOOEgusQvX!n4t`-Q1n(g1*V7c z7IT8EgY3BGqy~ZH<5oeDMmTW;7V~1Vx4Wq^Yhwj33q@<;5Mm_72ue&;pF}7Kse%p| z7b9Q^-X9-Yf?$W3AUTp+C@0D*HQH#;PBW-Z;jmz6C(B0;V5_J2mRk*Y!deGYWjWA% zDy{99LyJ3U0X>xK-b$v3(jRUPWq$wRt7mXc>|{YLEh=d|^-!)h0r!BY_j~ckGaEgs zu$EL&*#ijKP1r2b_p$z{a5$UPfBS0kFb)(M9_`rf$K^w4wC5|iz_^}Q9_6HiM^ij0T$s;%I4;q&-ozJIbp z+Ah22MbQ!6X2W)E9<6N4(gNq(rRbkcsmaOfscWzVy1@6GP4rB^-HqeMP}`2XOP7o0 zf4GMF?~gK8fVi;^5&&qS0szqe`cXQWo7kAp|0)@OrTfv8lUo)=YrmuvZL^oW;REpv zTJV$k&hM=sL)G7KQ_5q&Z8SOp>Q)kMlqaq-O%)(|P!>>ZlPi2c`ovPJY(uq8t!z}& zXXN$`t%_7)9dL2^=zcoh>S||tHZdxZjPq!7TkV|nY zeLDHEN*=y0hv%JxWmp<&0w^pz$k;)XN?N@l`zFPx@CdNTdDp;21AZuN@XRe|y4GOo zAD#^KnQ@=%n&n|U8Q>V9D{WTZ!Uy^&$SG--I6{Zru~Q&2C@BsT7YX&2t9l_A`*LEh zpUn2jP1fKJBBGlU6x!e+?_Buc^D1Lx6RHHjE)|RNsgkZ2V!flTl%8c7LepWtXWUl= zkMeVlk^S`KTQO%tx1v6-sl;AN>1Aha?ZjrOacsfCfoQ4`FoiaHVpx_|MF=KoE=jYm ztTk&&B(s{_XPlhp(z2pSm2I(Qo*ZL=Q35ww_ZdZoS!|jrNXD&fT7x3nV%r>pY}(0= zhL#1+0(AnG<{`H7+u%DctC}EFepP+fj{ReY_+HDp=EOnwH+iIk)lwK6p3JN!q>yKU zA#`R#6S4v*{xcLkVD^H_qQeQZs>|er^i?g7TG;v8 z+%949c-+5U-6rIa%Z1~=XhXImj7W8_xxZ|$(esLVe7iq6uBj*hnBd$#$mu=a9I7cH zQ-yIn?`#uP=;8Bu-0vcd57}FR-dku#fU9S>+yaiz0P01O%b2^qH(v-X_HZuWF--hm zTJXO>SXe=krvR(1;sikgH?XDLm^+JFpDCyJ4~``|x%Ki|*hsB!qCo1vvk~QT5!#Wd zl7gT1#PfVotl>&R`;O($izr?c9Ug(8R!_+Qfp4l#^b~$-pzZG=9>~b2)q|pa;U$O! zV+lryWE^p&!g$XHbCZrFD%^md$ySgDJAd8=1F{1`tKwb62-l!rNJ#M$7Bt!4 z+WSHZZxIisKarydoB>HGoK2g?gz`2W3!82QL^9ua4g(K@Oqilt4R#THY&z1pZT_4H zdiaTWM9zmd$}Lrie@Q!TsehEUG=r10Bj0QW%zKuTdgklKUGHGw8obE9X76$-5eXL{ zRk7f$VR^&8yVyd~z0L$?lOOl6`^U$}{qqKT-fGzfGVwdZ@tcMsPiwV9`}OFEoT9Ss zNE@Raz3bYNbeGxb)q-@kI;zpOm?Rx)-j}d(mxBIp`rj?=_$gLYNP^k(76GIMJ;$h$ za(Pw2xC>%-)>>9Rdz|1AER7o|F%hcvSJBw^L!m&MlK4bsd~yUWR7%*U+OlHC){(-a z##{Gb26QCLq@QAB1ckIGeVaH*A!OZ?RjZ**=r*Uqm^hl(B2ANxA2e)d4Ex|Na^|>l z2+H8jNaBsBq)+dmg*v#GifLzzP9vQ>4b=)P$OilOA9;6g2hn5#i;?JfhZ~iztipc2 z57ERtIyEuTa@MRDfoRWkvC>pkpP&?is;`?VZlKxXH`fA#9TJp9ZmuVFwgNw3TyluT z-j?|G4Rd9-=2&#!;#JE7$|Rdos+ybZ zD)k5XZ-E)GOt?sp3krT3>7U~i@Y*SY@a)Ulgt*X^fZPxtn-5uEPGF$FZa6`h6%UAXqGxA10g$(8?y1k*^FM?i z2i-YZQl5XQ6XJdsXr?uUiDg$3^XcV%SzXMtPNrMwJ2j%qstFWWxUT8`hr}BvM!kt? zV6`TvG0kVt}^d zuqxnGbx*XWnCnpXVNSaRTFf-ks?1y2Dvf=*wzN=BIAHpGHV4B(;AEKL8`uF~SGZ)%myFZnz2J866u|)0RQz5uhA3?f}q>4tGRQ$`qGT(onbLpO3^F_et z8zgYZ`UZG5a&~mGvr)IPrnhi1vHA6sD;w#A^=7~V{AiJ5bXlY{!z0e6^w~orQlD@h z)5EiVFiFX>BbcFfdO}=l(oG|^gPzR9w9dc`^_*XL%LjY&Mf)SUsG(w;8U_z^y@0WE zTv|(YFR6K;vGZJi^&2Ni3p&n-&!7c{;mo(Qiy%Hqlsj0W;obTy+Vb>>Up4}=IWESW z=6+z!aNArZJQY}Wddp5USkw?wB!rFV9fw8JFUNrin2=CbR3rUYGv1-?*>6CN$bp*S z|3|Ywk|X}D->=MwVdIQez+t)n`nPsL^GUSfF=WZA)I79mzYRe(q6{09m9z=U-n*Y( z(g;p__Xy+tO9brF2T;MnWM<9ztgsYkXcixKtR5G>;gHTwZ@qcL;Rwdqzn=HvyJck@ z&1$OfmJGFEUh^`g4po((9>FXVVR{7OYn=bEVGR;yyXQ*7acBIRKYqHjb8;$OLD95j ztI2J|=p`;#t79Xv{L^Nae~EIRo%C*(MlH@)jZ7{)>K{f2$p|s^LUtMV{_p>*cwLLM z%mz?lL!jbV|55x^WqAiXd&gh*H7)X+tq%j5=*RRf!*g)RSpHy86a+$(GEK@7AA0>k zzCbIg?BY}1DB014Yxp(J`|tu4>I)cVNh?^K02ESvF6vxt*!%NUNGQpP4^#F zW9DtM&0)}ExI`c{WI4#fi1Rk{b=5*p^2>+WRpz80FlcKucz zMT+Pv$){ls5XDgJH4X5yQ;p9F4AG!LbI>HN^4bDIG5w}}7Rn!%S)D1Qh51pp!RH4{ zsT*i&aV){xa|ckX^(90Ju@1`|EGUQ zmq)LPtJA&ZMzf*r4WVDYK=hug7&ep@yitw)7olVE%k!+j4oz`H)H^ZJ(2r~B>{S+r zXjBt@6xp~x7PR-rjcqll1es_i)e?msKZ_fru5G+6H>{}g`{d4)3sxCNH0o0uY%~O|5X>_`)~5= zOK$6Ru2l!eewg=dZ-yotkcZVB1`NJ|58; zQw`aEWb6CNEg;8rfUtk)ymG{Ri&J}daBUX`XV#=i`)Kgh8S3h~cx*k(UB3D?kBL-k75~PO~u&_?WbLAB>CUM>i^ro#T*RCikS%RY_zE>*7jTDH`QWmU3#O|3*3963!`v(G>pqS2=`M!4 zYw%dt6{MY)%#y)%`c$O@&5O|2$KTwp?14G64hR6imks#ex9Dp>AgAIIhq{So{+^%E8POyU6hY~W;|wpIq(9 zbMY0&kl=4R;i&kwHl89jv$Gi)3-|cLGNH{`JUR6F1G|g5wHhf_L0NYX(HDFN=wnVF zU02(7UFpZ&WXI+Qf(GWX)DWP1dMNh$?Eoa_;Po&Q=73JqtK#fIFTwV?i80$qiykJBQ7bCxEd#Rvap@q-^NPzwL z2&FR$&_E2V2JSQo&|&wqD9hr9o>+q+6w;_|M4ZrST*0aY4MY6si84>+rCwo%@d?E|E>lk zvB@Pu@g#83hOWSd*OL*zi3N@B_`>1&h-O<%3(A0x49QB7SEtZse<~?ADhLn)={!bQ zv@(2-Yr8LQnp8KCit(r?>Eqmkjh_J-0P$tU9~>L!c$;Z2rTR7llfQ;%{X*Sc6U92o zE@W3@pRy=;Cu>O2OoY{w#*;Vy7O!;<%hNV$i%FLnD)Rv>>p&f;wx3+>T+`GOJ2$gf z;W~hub$e2sjWlV9N$IZVz$pAxO-Wa zI^*~qe`*j!4-Aa^jF2}RueKKqVr&)`8F*$#1mq{89C*|(k(nJ*C;V?(zn&GV$j-uzv1p+=9t1l}(>!CmU&>hXmrT*|F z28FBc*TkMuu|Rthh-cWaK$$Mf)T6XvabCL+L_82V8=g$mS#pCSy-%pptvdkS34^V3 z)|t`Ol5gl^_f^#)Ku%Co%ee{GitOFD_|5nXTDL;;#y*D7@G|MrSyv{cFg{Kc&oELNqeA+tSGJt zTmfSf#8)YJ&h}X_|4WETaS;V_Bx%gbZZb>fR;)=(Gdc^UqP(K!yPxmQPW7*X+P37| z?Tq)ba_L#163^lIk;uO~8~nH?jO66pXEp;7(gpus(AXs@bu>!81xL6bA4%}Unu&!x zE=-)z2XY_Q5r+^pu%<;EMXd$$8E1h+tQonQ_9q*_apz2pz(W5W9B~9BLrkdnLS7Gi z@psV5IXH~V%ZB8Ni-l7PSR27qfw{WLM%u!e0m|4j52S{=Pti-G0>p0m(r@_Z6bya! z-_3{z1 zNJWuOrTydvSAv$M`PHWcNTK!kIpD?@yjN!=5#?Wx&dJ$qKOgLyrGGuS!>qSnxtSWS zu=cpFV_*C1w)_6H{`C9PWd8&2qQ{RP1sPvmuS&v=`sJL`kGLLWem1OqU2{AMfWxGJ zx?kE}d%3-&FAwn~%l%nA4DAISs*u0i95^uqBT5!NG>t%&T=0?ZZE8$A7j4d`?j1b0 zhcG((R072c+MAgf4EGl`@azfF1BCcv!2fHU|2tuzKb(>^u*xKm z@O75%ua76l9`MTFj~^pDhhLHC-^s6*mM~9%&So60?(cxKENw~lN;FE|1YUy zD`xj{xd8wORnXs 5 else n + col_w = 5.85 + for i, (no, t, d) in enumerate(items): + col = i // per_col + row = i % per_col + x = 0.7 + col * (col_w + 0.35) + y = 1.62 + row * 1.02 + rect(s, x, y, col_w, 0.88, fill=CARD, line=LINE, line_w=1.0, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + rect(s, x, y, 0.09, 0.88, fill=BLUE if col==0 else PURPLE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x+0.28, y, 0.9, 0.88, no, size=24, color=(BLUE if col==0 else PURPLE), bold=True, anchor=MSO_ANCHOR.MIDDLE) + text(s, x+1.15, y+0.15, col_w-1.3, 0.35, t, size=14.5, color=INK, bold=True) + text(s, x+1.15, y+0.5, col_w-1.3, 0.32, d, size=9.5, color=MUTED) + +# ---------------- 공통 슬라이드: 간지 ---------------- +def divider(num, kr, en, points): + s = slide() + rect(s, -0.1, -0.1, 13.53, 7.7, fill=BLUE_DK) + rect(s, 8.6, -1.5, 8, 11, fill=BLUE, shape=MSO_SHAPE.PARALLELOGRAM) + rect(s, 10.9, -2, 6, 12, fill=PURPLE, shape=MSO_SHAPE.PARALLELOGRAM) + text(s, 1.0, 2.15, 5, 2.2, num, size=150, color=RGBColor(0x2C,0x4E,0x82), bold=True) + rect(s, 1.15, 3.9, 0.9, 0.09, fill=PURPLE) + text(s, 1.15, 4.05, 8, 0.8, kr, size=34, color=WHITE, bold=True) + text(s, 1.18, 4.85, 8, 0.4, en, size=13, color=RGBColor(0x9C,0xB4,0xD8), bold=True) + for i, p in enumerate(points): + yy = 2.35 + i*0.62 + rect(s, 8.05, yy+0.06, 0.16, 0.16, fill=PURPLE, shape=MSO_SHAPE.OVAL) + text(s, 8.35, yy, 4.4, 0.5, p, size=12.5, color=WHITE, anchor=MSO_ANCHOR.MIDDLE) + return s + +# 안내(고지) 배너 +def banner(s, y, msg, fill=BLUE, h=0.62, size=13, x=0.55, w=12.23): + rect(s, x, y, w, h, fill=fill, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x+0.3, y, w-0.6, h, msg, size=size, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE) + +# ===================================================================== +# 1) 사용자지침서 +# ===================================================================== +def build_user(): + global PRS, BLANK, DOC_FOOTER + PRS = Presentation(); PRS.slide_width = EMU_W; PRS.slide_height = EMU_H + BLANK = PRS.slide_layouts[6] + DOC_FOOTER = "킨텍스 자동전시시스템 · 사용자지침서" + + cover("사용자지침서", "User Guide", + ["킨텍스 자동전시시스템", "사용자 지침서"], + "역할별 사용자를 위한 화면·업무 흐름 안내서", + "로그인 → 부스 설계·시각화 → 옥션 → 관람객 등록 → 승인까지 한 흐름", + [("대상", "주최자 · 참가업체 · 장치/공사업체 · 홀매니저 · 관람객"), + ("구성", "접속 · 대시보드 · 핵심업무 · 모바일 · FAQ")]) + + toc([ + ("01", "시스템 소개 · 접속", "개요 / 로그인·2FA / 아이디기억·비번찾기"), + ("02", "역할별 홈 · 대시보드", "6역할 포털 / MDI 탭 / 마일스톤 대시보드"), + ("03", "핵심 업무 흐름", "부스 설계·병합 / 배선·신청 / 시각화 / 옥션 / 등록·승인"), + ("04", "모바일 앱 사용법", "현장 체크리스트 / 검수 / 시각화 갤러리"), + ("05", "FAQ · 문의", "자주 묻는 질문 / 지원 채널"), + ]) + + # ---- 01 소개·접속 ---- + divider("01", "시스템 소개 · 접속", "INTRODUCTION & SIGN-IN", + ["전시 생애주기 폐루프", "역할별 포털", "로그인 · 2차 인증"]) + + s = slide(); content_header(s, "01 · 시스템 소개", "무엇을 할 수 있나요", 1) + text(s, 0.55, 1.45, 12.2, 0.5, + "킨텍스 자동전시시스템은 홀 배정·부스 설계·유틸리티 배선·규정 검증·시공 발주(옥션)·관람객 운영·경영분석을 하나의 계정으로 잇는 전시 운영 플랫폼입니다.", + size=11.5, color=MUTED) + banner(s, 2.05, "핵심 “신청서를 내는 순간, 시공 후 사진을 먼저 봅니다.” — 나노바나나(AI) 시공 예상 이미지", + fill=BLUE, size=15) + loop = [("판매·기획", BLUE), ("AI 설계·시각화", PURPLE), ("공사 옥션", BLUE), + ("시공", BLUE), ("운영·관람", BLUE), ("경영분석", PURPLE)] + bw = 1.83; gap = 0.19; x0 = 0.55; yb = 3.05 + for i, (lb, cl) in enumerate(loop): + x = x0 + i*(bw+gap) + rect(s, x, yb, bw, 0.7, fill=(PURPLE_LT if cl==PURPLE else BLUE_LT), line=cl, line_w=1.2, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x, yb, bw, 0.7, lb, size=11.5, color=(PURPLE if cl==PURPLE else BLUE_DK), bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + if i < len(loop)-1: + text(s, x+bw-0.03, yb, 0.28, 0.7, "→", size=15, color=SLATE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + titled_card(s, 0.55, 4.1, 3.95, 2.55, "내가 얻는 것", BLUE, [ + ("주최자", "자동 견적·배치·마일스톤 트래킹"), + ("참가업체", "클릭 신청 + 시공 전 부스 사진"), + ("장치·공사업체", "제출 전 규정검증·옥션 응찰"), + ("홀매니저", "위반 자동 플래깅·부하 집계"), + ("관람객", "사전등록·모바일 배지·길찾기"), + ], item_size=9.8, gap=0.36) + titled_card(s, 4.65, 4.1, 3.95, 2.55, "AI가 돕는 일", PURPLE, [ + ("배치 3안", "조건 입력 → 3안 자동생성"), + ("규정 검증", "높이·통로·바닥하중 자동 점검"), + ("배선 설계", "트렌치 최단 경로·자동 견적"), + ("시각화", "시공 후 예상 사진(S1~S7)"), + ("검수 보조", "AI 사전심사·위반 플래그"), + ], item_size=9.8, gap=0.36) + titled_card(s, 8.75, 4.1, 4.03, 2.55, "꼭 알아둘 점", BLUE_DK, [ + ("AI 이미지", "‘예상’ 이미지 — 실물과 다를 수 있음"), + ("워터마크", "계약·인허가 서류로 사용 불가"), + ("등록업체", "미등록 업체는 초대·응찰 불가"), + ("최종 판정", "소방·구조는 관할기관·기술사 몫"), + ("2차 인증", "로그인 시 OTP/이메일 코드 필요"), + ], item_size=9.8, gap=0.36) + + s = slide(); content_header(s, "01 · 접속 · 로그인", "로그인 · 2차 인증 · 계정 관리", 1) + steps(s, 0.55, 1.5, 12.23, [ + ("① 이메일·비밀번호", "또는 킨텍스 SSO", BLUE), + ("② 2차 인증", "OTP 또는 이메일 코드", PURPLE), + ("③ 행사 선택", "워크스페이스 카드", BLUE), + ("④ 역할별 홈", "대시보드 진입", GREEN), + ]) + titled_card(s, 0.55, 2.55, 6.05, 2.15, "로그인 화면(SCR-01)", BLUE, [ + "이메일/비밀번호 또는 ‘킨텍스 내부 계정(SSO)’ 로그인", + "‘아이디 기억’ 체크 — 이메일만 저장(비밀번호는 저장하지 않음)", + "1차 로그인 후 2차 인증코드 입력(OTP/이메일)", + "로그인 후 참여 행사 카드에서 워크스페이스 선택", + "초대 코드로 참여 — 하단 ‘초대 코드로 참여하기’", + ], item_size=9.8, gap=0.36) + titled_card(s, 6.75, 2.55, 6.03, 2.15, "2차 인증·계정(SCR-49~51)", PURPLE, [ + ("회원가입", "SCR-49 웹 회원가입 폼"), + ("비밀번호 찾기", "SCR-50 이메일 인증 후 재설정"), + ("OTP 설정", "SCR-51 최초 QR 등록·재설정"), + ("잠금 해제", "실패 반복 잠금 시 관리자 초기화"), + ("마이페이지", "SCR-48 OTP 재설정·개인화"), + ], item_size=9.8, gap=0.36) + banner(s, 4.95, "안내 미등록 장치업체가 초대를 수락하면 ‘킨텍스 등록업체만 참여할 수 있습니다’ 안내와 함께 차단됩니다.", + fill=BLUE_DK, size=11.5, h=0.5) + text(s, 0.55, 5.6, 12.2, 0.9, [ + [{"t":"비밀번호를 잊었을 때 ","size":10.5,"color":INK,"bold":True}, + {"t":"로그인 화면 → ‘비밀번호 찾기’ → 이메일 인증코드 → 새 비밀번호 설정. ","size":10,"color":MUTED}], + [{"t":"OTP 기기를 바꿨을 때 ","size":10.5,"color":INK,"bold":True}, + {"t":"마이페이지에서 재설정하거나, 접근 불가 시 관리자에게 OTP 초기화를 요청하세요.","size":10,"color":MUTED}], + ], line_spacing=1.15, space_after=6) + + # ---- 02 역할별 홈·대시보드 ---- + divider("02", "역할별 홈 · 대시보드", "ROLE HOMES & DASHBOARD", + ["6역할 포털 분리", "MDI 탭 작업환경", "마일스톤 대시보드"]) + + s = slide(); content_header(s, "02 · 역할별 포털", "내 역할에 맞는 포털로 들어갑니다", 2) + text(s, 0.55, 1.4, 12.2, 0.35, + "역할마다 목적이 다르므로 포털이 분리되어 있습니다. 데스크톱은 설계·대시보드, 모바일은 현장·조회·승인에 최적화됩니다.", + size=10.5, color=MUTED) + rect(s, 0.55, 1.9, 12.23, 0.44, fill=BLUE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + for x,w,t in [(0.55,2.0,"역할"),(2.55,4.6,"웹 포털(데스크톱)"),(7.15,3.1,"모바일"),(10.25,2.53,"주 사용")]: + text(s, x+0.15, 1.9, w-0.2, 0.44, t, size=10.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE) + portals = [ + ("주최자", "주최자 콘솔 — 홀 배정·배치·옥션 발주·BI", "조회·승인·상황판", "M1·M2·M15·M16"), + ("참가업체", "참가업체 포털 — 부스 신청·설계·유틸리티", "체크인·리드캡처", "M3·M4·M5·M10"), + ("장치·공사업체", "업체 포털 — 도면 제출·설계 열람·옥션 응찰", "시공·반입·안전", "M3·M15·M8"), + ("홀매니저·운영", "운영 대시보드 — 검수·규정 플래그·부하", "현장 검수·혼잡", "M2·M6·M14"), + ("관리자", "백오피스 — 사용자·RBAC·마스터데이터·룰셋", "(웹 전용)", "M18"), + ("관람객·대중", "공개 홍보 사이트 — 일정·사전등록", "배지·길찾기·매칭", "M12·M10·M13"), + ] + ry = 2.42; rh = 0.62 + for i,(r,web,mob,mod) in enumerate(portals): + y = ry + i*rh + if i%2==0: rect(s, 0.55, y, 12.23, rh, fill=RGBColor(0xFC,0xFC,0xFD)) + rect(s, 0.55, y, 12.23, 0.01, fill=LINE) + text(s, 0.67, y, 1.9, rh, r, size=9.8, color=BLUE_DK, bold=True, anchor=MSO_ANCHOR.MIDDLE) + text(s, 2.7, y, 4.45, rh, web, size=9.2, color=INK, anchor=MSO_ANCHOR.MIDDLE) + text(s, 7.3, y, 2.95, rh, mob, size=9.2, color=MUTED, anchor=MSO_ANCHOR.MIDDLE) + text(s, 10.4, y, 2.4, rh, mod, size=8.8, color=PURPLE, bold=True, anchor=MSO_ANCHOR.MIDDLE) + text(s, 0.55, 6.35, 12.2, 0.4, + "접속 서브도메인으로 전시관(테넌트)이 고정됩니다 — 자신이 소속되지 않은 전시관의 데이터는 조회·검색되지 않습니다.", + size=9.5, color=MUTED) + + s = slide(); content_header(s, "02 · 대시보드 · 작업환경", "마일스톤 대시보드와 MDI 탭", 2) + titled_card(s, 0.55, 1.5, 6.05, 3.3, "주최자 대시보드(SCR-02)", BLUE, [ + ("마일스톤 타임라인", "D-150 배정 → D-30 협의 → D-25 유틸리티 → D-7 서류 → D-0 개장"), + ("완료·현재·임박", "녹색 체크 / 파란 진행 / 주황 펄스로 표시"), + ("KPI 카드", "참가업체 신청·배치 확정률·유틸리티 완료·위반 미해결"), + ("참가업체 현황표", "부스번호·설계 상태·유틸리티·예상 사진 썸네일"), + ("알림 피드", "승인·반려·마감 이벤트 실시간"), + ("홀 전경 조감", "S7 미니 이미지 카드(AI 생성)"), + ], item_size=9.6, gap=0.44) + titled_card(s, 6.75, 1.5, 6.03, 3.3, "MDI 탭 작업환경(§2.7)", PURPLE, [ + ("여러 문서 동시", "부스 에디터·승인 큐·설계 스튜디오를 탭으로 병행"), + ("상태 보존", "탭 전환해도 미저장 편집·스크롤·줌 유지"), + ("미저장 표시", "탭에 ● 표시, 닫을 때 저장 확인"), + ("탭 열기", "메뉴·링크 클릭 → 새 탭(같은 문서는 1개)"), + ("단축키", "Ctrl+Tab 전환 · Ctrl+W 닫기 · Ctrl+1~9 이동"), + ("모바일", "MDI 미적용 — 한 화면 집중(오조작 방지)"), + ], item_size=9.6, gap=0.44) + banner(s, 5.0, "팁 좌측 사이드바에서 행사(이벤트)를 바꾸면 그 행사의 탭 세트로 전환됩니다. 미저장 탭이 있으면 먼저 확인합니다.", + fill=BLUE_DK, size=11, h=0.5) + text(s, 0.55, 5.7, 12.2, 0.9, [ + [{"t":"화면 딥링크 ","size":10.5,"color":INK,"bold":True}, + {"t":"알림·메일 링크를 클릭하면 해당 문서 탭이 바로 열립니다(예: 검수 상세·배치 에디터). ","size":10,"color":MUTED}], + [{"t":"세션 복원 ","size":10.5,"color":INK,"bold":True}, + {"t":"새로고침·재접속 시 열려 있던 탭 목록이 복원됩니다(서버 미저장 편집 내용 자체는 복원되지 않음).","size":10,"color":MUTED}], + ], line_spacing=1.15, space_after=6) + + # ---- 03 핵심 업무 흐름 ---- + divider("03", "핵심 업무 흐름", "CORE WORKFLOWS", + ["부스 설계 3안·병합", "배선·신청·규정검증", "시각화 · 옥션 · 등록·승인"]) + + s = slide(); content_header(s, "03 · 부스 설계 스튜디오", "3안 생성 · 선택 · 병합 (M2·M3)", 3) + steps(s, 0.55, 1.5, 12.23, [ + ("① 조건 입력", "홀·목표부스·비율", BLUE), + ("② AI 3안 생성", "1·2·3안 자동", PURPLE), + ("③ 선택 / 병합", "구역·블록 조합", BLUE), + ("④ 규정 재검증", "병합 후 필수", AMBER), + ("⑤ 확정·버전", "부스번호 발급", GREEN), + ]) + titled_card(s, 0.55, 2.6, 6.05, 2.7, "배치·설계(SCR-03·04·06)", BLUE, [ + ("AI 자동배치", "보라 버튼 → 제약조건 풀이로 3안 생성"), + ("배치안 비교", "S7 조감 이미지·지표(부스수·통로폭·위반) 비교"), + ("선택 또는 병합", "1안 통로 + 2안 프리미엄존 + 3안 무대 조합"), + ("위반 오버레이", "통로 미달 빨강 밴드·바닥하중 초과 주황 빗금"), + ("부스 설계", "조립부스 옵션 선택 / 독립부스 3안 레이아웃"), + ], item_size=9.6, gap=0.44) + titled_card(s, 6.75, 2.6, 6.03, 2.7, "규정 검증·검수(SCR-09~11)", PURPLE, [ + ("제출 전 자동검증", "높이 5m·리깅 6.5~8.5m·복층·방염 체크리스트"), + ("규정 리포트", "차단/경고 요약 + 규정 근거·위치 보기"), + ("승인 큐", "홀매니저 AI 사전심사 플래그로 검토"), + ("검수 상세", "도면 위 위반 오버레이 확인 후 승인/반려"), + ("최종 판정", "소방·구조 유권해석은 관할기관·구조기술사"), + ], item_size=9.6, gap=0.44) + banner(s, 5.5, "중요 ‘병합’으로 제약이 깨질 수 있으므로, 병합 결과는 반드시 규정 검증을 다시 실행한 뒤 확정하세요.", + fill=AMBER, size=11.5, h=0.5) + + s = slide(); content_header(s, "03 · 유틸리티 · 시각화", "배선 신청과 시각화 갤러리 (M4·M5)", 3) + titled_card(s, 0.55, 1.5, 6.05, 3.15, "유틸리티 배선·신청(SCR-07·08)", BLUE, [ + ("기기 목록 입력", "전시장비·조명·PC → kW 합산·분전반 자동 산출"), + ("단말 위치 클릭", "부스 도면 위 클릭 → 트렌치 최단 배선 자동"), + ("위치표시도 자동", "수기 작도 폐지 — 자동 생성"), + ("자동 견적", "전기·급배수·압축공기·인터넷 요금 자동"), + ("마감 리마인더", "D-25 역산 알림 — 인터넷은 현장 추가 불가"), + ("배선 오버레이", "M5 이미지로 배선 확인"), + ], item_size=9.5, gap=0.42) + titled_card(s, 6.75, 1.5, 6.03, 3.15, "시각화 갤러리(SCR-12)", PURPLE, [ + ("표준 샷 세트", "부스 정면·야간 조명·통로 뷰·홀 전경(S1~S7)"), + ("Before/After", "설계 데이터 → 시공 후 예상 사진"), + ("워터마크 상시", "모든 이미지에 ‘AI 생성 예상 이미지’ 고지"), + ("컨펌 자료", "참가업체·장치업체 합의용으로 공유"), + ("생성 대기", "완료 시 실시간 푸시로 알림"), + ], item_size=9.5, gap=0.42) + banner(s, 4.9, "AI 워터마크 고지 나노바나나 생성 이미지는 참고용 예상 이미지입니다 — 계약·심사·인허가 서류로 사용할 수 없습니다.", + fill=RED, size=11.5, h=0.55) + text(s, 0.55, 5.7, 12.2, 0.9, [ + [{"t":"유틸리티 신청 팁 ","size":10.5,"color":INK,"bold":True}, + {"t":"인터넷·전화·급배수·압축공기는 현장 추가신청이 어렵습니다. D-25 마감 알림을 놓치지 마세요. ","size":10,"color":MUTED}], + [{"t":"전기 용량 ","size":10.5,"color":INK,"bold":True}, + {"t":"과소 신청 시 현장 증설이 불가할 수 있어, 기기 목록 기반 자동 산출값을 확인하고 신청하세요.","size":10,"color":MUTED}], + ], line_spacing=1.15, space_after=6) + + s = slide(); content_header(s, "03 · 공사 옥션 · 관람객", "옥션(견적·낙찰)과 관람객 등록 (M15·M10)", 3) + steps(s, 0.55, 1.45, 12.23, [ + ("① 옥션 개설", "설계자료 첨부", BLUE), + ("② 응찰(견적서)", "업체 제출", PURPLE), + ("③ 실시간 순위", "역경매", BLUE), + ("④ 낙찰 비교", "동일사양 비교", AMBER), + ("⑤ 선정·발주", "정산 연계", GREEN), + ]) + titled_card(s, 0.55, 2.5, 6.05, 2.75, "공사/장치 옥션(SCR-26~29)", BLUE, [ + ("옥션 목록·개설", "AI 설계·물량·시공 예상 이미지를 응찰 근거로"), + ("응찰·순위(업체)", "견적서 작성·제출 → 실시간 순위 확인"), + ("낙찰 비교(발주자)", "동일 사양 위 공정 비교로 선정"), + ("등록업체 게이트", "킨텍스 등록업체만 초대·응찰 가능"), + ("발주 종결", "낙찰 → M9 정산·결제로 연계"), + ], item_size=9.6, gap=0.44) + titled_card(s, 6.75, 2.5, 6.03, 2.75, "관람객 등록·배지·리드(SCR-30~32)", PURPLE, [ + ("사전등록", "공개 사이트 폼(SCR-P4)에서 관람 신청"), + ("모바일 배지/QR", "관람객 앱에서 배지 발급·체크인"), + ("현장 체크인", "데스크/키오스크(SCR-31)로 입장"), + ("리드캡처", "참가업체가 배지 스캔으로 리드 수집(M4)"), + ("리드 스코어링", "AI가 리드 우선순위 제안(SCR-32)"), + ], item_size=9.6, gap=0.44) + banner(s, 5.45, "승인 워크플로 제출물은 홀매니저 승인 큐 → 검수 상세 → 승인/반려를 거칩니다. 반려 시 사유와 위반 위치가 함께 전달됩니다.", + fill=BLUE_DK, size=11, h=0.5) + + # ---- 04 모바일 ---- + divider("04", "모바일 앱 사용법", "MOBILE APP", + ["현장 체크리스트·검수", "시각화 갤러리", "오프라인·워터마크"]) + + s = slide(); content_header(s, "04 · 모바일 앱", "현장·조회·승인을 위한 모바일 앱", 4) + text(s, 0.55, 1.4, 12.2, 0.35, + "모바일 앱(Expo)은 조회·승인·현장 시나리오 전용입니다. 설계·배치 편집은 데스크톱 웹에서 수행합니다.", + size=10.5, color=MUTED) + titled_card(s, 0.55, 1.95, 3.95, 3.6, "현장(장치·홀매니저)", BLUE, [ + ("로그인", "2FA/OTP·아이디 기억·비번찾기"), + ("현장 체크리스트", "48px 큰 터치·오프라인·사진 첨부(SCR-M1)"), + ("현장 검수", "승인/반려·AI 플래그 확인(SCR-M2)"), + ("반입 통행증", "QR 통행증·안전 체크(SCR-M10)"), + ("서류·승인 조회", "이동 중 확인(SCR-M12)"), + ], item_size=9.6, gap=0.42) + titled_card(s, 4.65, 1.95, 3.95, 3.6, "참가·관람", PURPLE, [ + ("리드캡처", "배지 스캔으로 방문객 리드 수집(SCR-M4)"), + ("관람객 배지/QR", "모바일 배지·체크인(SCR-M5)"), + ("길찾기", "실내 지도·wayfinding(SCR-M6)"), + ("부스 검색", "플로어플랜·부스 찾기(SCR-M7)"), + ("비즈매칭", "미팅 요청·일정(SCR-M8·M9)"), + ], item_size=9.6, gap=0.42) + titled_card(s, 8.75, 1.95, 4.03, 3.6, "공통 · 유의", BLUE_DK, [ + ("홈/대시보드", "역할별 진입(SCR-M3)"), + ("시각화 갤러리", "워터마크·고지 항상 표시"), + ("알림센터", "마감·승인·반려 푸시(SCR-M11)"), + ("오프라인", "현장 통신 불안정 시 임시 저장"), + ("보안", "비밀번호 저장 안 함 — 이메일만 기억"), + ], item_size=9.6, gap=0.42) + banner(s, 5.85, "설치 앱은 QR 코드 배포로 설치합니다(스토어 불필요). AI 생성 이미지는 앱에서도 워터마크·고지가 항상 표시됩니다.", + fill=BLUE, size=11, h=0.5) + + # ---- 05 FAQ·문의 ---- + divider("05", "FAQ · 문의", "FAQ & SUPPORT", + ["자주 묻는 질문", "오류 대처", "지원 채널"]) + + s = slide(); content_header(s, "05 · FAQ", "자주 묻는 질문", 5) + faqs = [ + ("Q. 로그인 후 2차 인증코드를 못 받았어요.", "이메일 인증 방식은 스팸함을 확인하세요. OTP 방식은 인증 앱의 6자리 코드를 입력합니다. 기기 변경 시 마이페이지에서 재설정하거나 관리자에게 OTP 초기화를 요청하세요."), + ("Q. AI가 만든 예상 사진을 계약서에 넣어도 되나요?", "안 됩니다. 모든 AI 이미지는 ‘예상 이미지’로 워터마크·고지가 붙으며 계약·인허가·심사 서류로 사용할 수 없습니다."), + ("Q. 3안을 합쳐서 쓰고 싶어요.", "배치안 비교에서 여러 안의 구역/블록을 골라 병합할 수 있습니다. 병합 후에는 반드시 규정 검증을 다시 실행한 뒤 확정하세요."), + ("Q. 유틸리티 신청 마감을 놓치면?", "인터넷·급배수 등은 현장 추가신청이 어렵습니다. D-25 역산 알림을 활용하고, 부득이한 경우 홀매니저/사무국에 문의하세요."), + ("Q. 우리 장치업체를 옥션에 초대할 수 없어요.", "킨텍스 등록업체만 초대·응찰할 수 있습니다. 미등록 업체는 등록 절차 후 이용 가능합니다."), + ("Q. 탭을 닫았는데 편집 내용이 사라졌어요.", "탭 세션은 복원되지만 서버에 저장하지 않은 편집 내용 자체는 복원되지 않습니다. 중요한 작업은 저장 후 닫으세요."), + ] + for i,(q,a) in enumerate(faqs): + x = 0.55 + (i%2)*6.2 + y = 1.55 + (i//2)*1.62 + card(s, x, y, 6.05, 1.5) + rect(s, x, y, 0.08, 1.5, fill=(BLUE if i%2==0 else PURPLE), shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x+0.24, y+0.14, 5.65, 0.5, q, size=10.5, color=INK, bold=True, line_spacing=0.95) + text(s, x+0.24, y+0.66, 5.65, 0.78, a, size=9, color=MUTED, line_spacing=0.98) + + s = slide(); content_header(s, "05 · 문의 · 지원", "지원 채널 및 도움말", 5) + titled_card(s, 0.55, 1.6, 6.05, 2.7, "이런 순서로 확인하세요", BLUE, [ + "① 화면 안내(툴팁)·본 사용자지침서 해당 절 확인", + "② 오류 배너의 요약 메시지·재시도 버튼 사용", + "③ 마감·승인 관련은 알림센터에서 이력 확인", + "④ 권한·계정 문제는 관리자(테넌트 관리자)에게", + "⑤ 규정·현장 문제는 홀매니저·킨텍스 운영팀에", + ], item_size=10, gap=0.44) + titled_card(s, 6.75, 1.6, 6.03, 2.7, "역할별 지원 접점", PURPLE, [ + ("참가업체", "설계·유틸리티 → 주최자 사무국"), + ("장치·공사업체", "등록·옥션 → 킨텍스 등록업체 담당"), + ("주최자", "배정·정산 → 킨텍스 행사지원팀"), + ("관람객", "등록·배지 → 공개 사이트 문의(SCR-P6)"), + ("공통", "계정·권한 → 시스템 관리자"), + ], item_size=10, gap=0.44) + banner(s, 4.55, "오류 메시지는 원인 요약만 표시됩니다(내부 정보 비노출). 반복되면 발생 시각·화면명·행사명을 함께 전달하면 빠르게 처리됩니다.", + fill=BLUE_DK, size=11, h=0.6) + text(s, 0.55, 5.5, 12.2, 0.8, + "본 지침서의 화면 번호(SCR-*)는 설계 문서 docs/design.md의 화면 인벤토리(총 80화면)를 기준으로 합니다. 화면 구성은 업데이트로 달라질 수 있습니다.", + size=9.5, color=MUTED, line_spacing=1.1) + + return PRS + +# ===================================================================== +# 2) 운영자지침서 +# ===================================================================== +def build_ops(): + global PRS, BLANK, DOC_FOOTER + PRS = Presentation(); PRS.slide_width = EMU_W; PRS.slide_height = EMU_H + BLANK = PRS.slide_layouts[6] + DOC_FOOTER = "킨텍스 자동전시시스템 · 운영자지침서" + + cover("운영자지침서", "Operations Guide", + ["킨텍스 자동전시시스템", "운영자 지침서"], + "킨텍스 운영·관리자를 위한 운영·백오피스·장애 대응 안내서", + "아키텍처 → 백오피스 → 배포 → 모니터링 → 백업·보안 → 정기 점검", + [("대상", "테넌트(전시관) 관리자 · 플랫폼 슈퍼관리자 · 운영 담당"), + ("근거", "OPS_RUNBOOK · SECURITY · BUILD_DEPLOY 준용")]) + + toc([ + ("01", "운영 아키텍처 개요", "서비스 토폴로지 / 의존 관계"), + ("02", "관리자 백오피스", "사용자·RBAC·감사·설정 / 마스터·룰셋·테넌트·AiConfig"), + ("03", "배포 · CI/CD 운영", "push→자동배포 / health 게이트 / 롤백"), + ("04", "모니터링 · 장애 대응", "헬스체크·로그·재기동 / 자주 겪는 이슈"), + ("05", "백업 · 보안 점검", "보안 불변 / 워터마크 강제 / 자격증명 보호"), + ("06", "정기 점검 체크리스트", "일 · 주 · 월 점검표"), + ]) + + # ---- 01 아키텍처 ---- + divider("01", "운영 아키텍처 개요", "OPERATIONS ARCHITECTURE", + ["백엔드·워커·프론트", "PostgreSQL·Redis", "webhook 자동배포"]) + + s = slide(); content_header(s, "01 · 운영 아키텍처", "서비스 토폴로지 (개발 kintex.zioinfo.co.kr)", 1) + def node(x,y,w,h,title,sub,fill,tcol,line=None): + rect(s, x, y, w, h, fill=fill, line=(line or LINE), line_w=1.0, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x, y+0.1, w, 0.3, title, size=11, color=tcol, bold=True, align=PP_ALIGN.CENTER) + if sub: text(s, x, y+0.44, w, 0.28, sub, size=8.4, color=MUTED, align=PP_ALIGN.CENTER) + # 프론트/nginx + rect(s, 0.55, 1.55, 12.23, 0.44, fill=BLUE_LT, line=BLUE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 0.7, 1.55, 6, 0.44, "접속 계층 — nginx (kintex.service 도메인 :80/443)", size=10.5, color=BLUE_DK, bold=True, anchor=MSO_ANCHOR.MIDDLE) + node(0.55, 2.15, 3.9, 0.8, "프론트(웹 정적)", "역할별 번들 · SPA 폴백", WHITE, INK, BLUE) + node(4.65, 2.15, 3.9, 0.8, "백엔드 API", "kintex.service · REST + WebSocket", WHITE, INK, BLUE) + node(8.75, 2.15, 4.03, 0.8, "나노바나나 워커", "kintex-nanobanana.service · 큐 소비", PURPLE_LT, PURPLE, PURPLE) + # 데이터 + rect(s, 0.55, 3.2, 12.23, 0.44, fill=HALL_BG, line=BLUE_DK, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 0.7, 3.2, 6, 0.44, "데이터·큐 계층", size=10.5, color=BLUE_DK, bold=True, anchor=MSO_ANCHOR.MIDDLE) + node(0.55, 3.8, 3.9, 0.8, "PostgreSQL + PostGIS", "kintex_db · 공간 데이터", WHITE, INK, BLUE_DK) + node(4.65, 3.8, 3.9, 0.8, "Redis", "작업 큐·세션·캐시", WHITE, INK, BLUE_DK) + node(8.75, 3.8, 4.03, 0.8, "오브젝트 스토리지", "렌더 이미지·문서", WHITE, INK, BLUE_DK) + # 배포 + rect(s, 0.55, 4.85, 12.23, 0.44, fill=PURPLE_LT, line=PURPLE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 0.7, 4.85, 6, 0.44, "배포·연동", size=10.5, color=PURPLE, bold=True, anchor=MSO_ANCHOR.MIDDLE) + node(0.55, 5.45, 3.9, 0.8, "deploy_server (webhook)", "Gitea(zio/kintex) push 수신", WHITE, INK, PURPLE) + node(4.65, 5.45, 3.9, 0.8, "Gemini (G1)", "워커 env only · 미승인시 degraded", WHITE, INK, PURPLE) + node(8.75, 5.45, 4.03, 0.8, "헬스 게이트", "GET /health → data.status=UP", WHITE, INK, PURPLE) + text(s, 0.55, 6.45, 12.2, 0.4, + "의존 백엔드 → PostgreSQL·Redis · 워커 → Redis·Gemini(G1) · 프론트 → nginx → 백엔드. 헬스 판정 = /health UP + 두 서비스 active + Redis PONG + DB 응답.", + size=9.3, color=MUTED) + + # ---- 02 백오피스 ---- + divider("02", "관리자 백오피스", "ADMIN BACK-OFFICE", + ["사용자·RBAC·감사·설정", "마스터데이터·룰셋", "테넌트 온보딩·AiConfig"]) + + s = slide(); content_header(s, "02 · 관리자 백오피스", "시스템관리 영역 (M18 · §5B)", 2) + text(s, 0.55, 1.4, 12.2, 0.35, + "백오피스(admin.)는 웹 전용입니다. 테넌트 관리자는 자기 전시관에 고정되고, 플랫폼 슈퍼관리자는 테넌트 스위처로 전 전시관을 통제합니다.", + size=10.5, color=MUTED) + titled_card(s, 0.55, 1.95, 3.95, 3.9, "시스템관리 (SCR-A1~A6)", BLUE, [ + ("사용자 관리", "6역할 + 등록업체·관람객 계정(SCR-A1)"), + ("역할·권한 RBAC", "플랫폼·행사 이중 평가(SCR-A2)"), + ("공통코드", "홀·부스유형·공종14분류·요금(SCR-A3)"), + ("메뉴 관리", "역할별 포털 IA 구동(SCR-A4)"), + ("감사로그", "승인·낙찰·룰셋개정·리드접근(SCR-A5)"), + ("시스템설정", "요율/규정 룰셋 버전(SCR-A6)"), + ("잠금·OTP 초기화", "실패 잠금 해제·OTP 재설정"), + ], item_size=9.4, gap=0.42) + titled_card(s, 4.65, 1.95, 3.95, 3.9, "마스터·룰셋 (SCR-A7·A8)", PURPLE, [ + ("마스터데이터", "홀·요율·요금·부스표준·등록업체(SCR-A7)"), + ("규정 룰셋 버전", "높이·통로·바닥하중 규칙 개정(SCR-A8)"), + ("룰셋은 데이터", "코드가 아닌 버전 파일로 관리"), + ("개정 추적", "리포트에 rulesetVersion·고지 기록"), + ("전시관 소유", "홀·요율·규정은 각 전시관이 소유"), + ("근거 없는 추정 금지", "미확보 실측값은 온보딩 시 입력"), + ], item_size=9.4, gap=0.42) + titled_card(s, 8.75, 1.95, 4.03, 3.9, "테넌트·AI (SCR-A9·A10)", BLUE_DK, [ + ("테넌트 관리", "전시관 마스터·온보딩(SCR-A9)"), + ("테넌트 격리", "tenant_id로 전 데이터 스코프"), + ("서브도메인", "kintex/coex 등 컨텍스트 해소"), + ("KINTEX = 테넌트#1", "기존 데이터 백필 기준"), + ("AiConfig", "AI 플랫폼·모델 설정(SCR-A10)"), + ("Claude 기본", "실패 시 Ollama 자동 폴백"), + ("크로스 집계", "전 테넌트 BI는 슈퍼관리자만"), + ], item_size=9.4, gap=0.42) + + # ---- 03 배포 ---- + divider("03", "배포 · CI/CD 운영", "DEPLOY & CI/CD", + ["push → 자동배포", "health 게이트", "자동·수동 롤백"]) + + s = slide(); content_header(s, "03 · 배포 · CI/CD", "push → 자동배포 → 헬스 게이트", 3) + steps(s, 0.55, 1.5, 12.23, [ + ("① push", "scripts/push_kintex.py", BLUE), + ("② webhook", "Gitea #47", PURPLE), + ("③ 빌드", "bootJar · vite build", BLUE), + ("④ 원자 교체", "deploy_kintex.sh", AMBER), + ("⑤ health 게이트", "GET /health", GREEN), + ]) + titled_card(s, 0.55, 2.6, 6.05, 2.7, "정상 배포 경로(자동)", BLUE, [ + ("git pull", "webhook 수신 후 소스 갱신"), + ("Flyway 마이그", "스키마 전진 적용(전진만 권장)"), + ("빌드", "프론트 vite build · 백엔드 gradlew bootJar"), + ("jar 검증", "KintexApplication.class 존재 확인"), + ("원자 교체", "무중단 교체 후 헬스체크"), + ("검증", "kintex_smoke_test.py로 라우터 등록 확인"), + ], item_size=9.6, gap=0.44) + titled_card(s, 6.75, 2.6, 6.03, 2.7, "금지·주의", RED, [ + ("동시 빌드 금지", "수동 Jenkins 추가 트리거 금지(jar 교체 깨짐)"), + ("서버빌드 신뢰", "로컬 빌드 이슈보다 서버 빌드 결과 신뢰"), + ("deploy_server 반영", "kintex 블록 서버 반영·zioinfo-deploy 재시작"), + ("‘완료’ 오인", "로그 완료여도 1ms no-op면 블록 부재 의심"), + ("빌드 OOM", "공유 8GB — 타 솔루션과 직렬 빌드"), + ("운영 배포", "소유자 승인 필수"), + ], item_size=9.6, gap=0.44) + banner(s, 5.5, "롤백 deploy_kintex.sh는 헬스 실패 시 이전 jar를 자동 유지·복원합니다. 자동 실패 시 백업 jar 복원 또는 직전 정상 커밋으로 재배포합니다.", + fill=BLUE_DK, size=11, h=0.5) + + # ---- 04 모니터링·장애 ---- + divider("04", "모니터링 · 장애 대응", "MONITORING & INCIDENT", + ["헬스체크 우선", "로그·재기동", "자주 겪는 이슈"]) + + s = slide(); content_header(s, "04 · 모니터링 · 장애", "헬스체크 · 로그 · 재기동 (런북 요약)", 4) + titled_card(s, 0.55, 1.5, 6.05, 2.55, "점검 순서", BLUE, [ + ("① 헬스체크", "kintex_smoke_test.py(자동) / /health(수동)"), + ("② 서비스 상태", "kintex.service·kintex-nanobanana.service active"), + ("③ 의존", "Redis PONG · DB SELECT 1"), + ("④ 로그", "journalctl -u kintex.service -n 200"), + ("⑤ 재기동", "systemctl restart → /health 재확인"), + ], item_size=9.8, gap=0.46) + titled_card(s, 6.75, 1.5, 6.03, 2.55, "재기동 원칙", PURPLE, [ + ("백엔드", "restart 후 5초 뒤 /health 확인"), + ("워커", "이미지 멈춤·큐 적체 시 워커만 재기동"), + ("nginx", "정적 이상 시 nginx -t 후 reload"), + ("DB/Redis", "공유 인스턴스 — 타 솔루션 영향 확인 후"), + ("자동기동", "두 유닛 enable 상태 유지"), + ], item_size=9.8, gap=0.46) + # 이슈 표 + text(s, 0.55, 4.25, 6, 0.3, "자주 겪는 이슈", size=12, color=INK, bold=True) + rect(s, 0.55, 4.62, 12.23, 0.4, fill=BLUE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + for x,w,t in [(0.55,4.2,"증상"),(4.75,3.6,"원인 후보"),(8.35,4.43,"조치")]: + text(s, x+0.12, 4.62, w-0.15, 0.4, t, size=10, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE) + issues = [ + ("/health 200인데 특정 API 404", "라우터 미배포(구 jar)", "스모크 러너로 라우터 확인 → 재배포"), + ("500 relation ... does not exist", "마이그 미적용", "flyway info 확인, 보정 마이그(다음 번호) 추가"), + ("이미지 생성 안 됨 / degraded", "G1 미승인·워커 다운", "워커 로그·env 확인, 워커 재기동(키는 워커 env only)"), + ("배포 ‘완료’인데 반영 안 됨", "deploy_server 블록 부재", "서버 kintex 블록 반영·zioinfo-deploy 재시작"), + ("push 했는데 자동배포 안 됨", "webhook 미설정/시크릿 불일치", "Gitea webhook #47 활성·secret·URL 확인"), + ] + ry=5.02; rh=0.4 + for i,(sym,cause,act) in enumerate(issues): + y=ry+i*rh + if i%2==0: rect(s, 0.55, y, 12.23, rh, fill=RGBColor(0xFC,0xFC,0xFD)) + rect(s, 0.55, y, 12.23, 0.008, fill=LINE) + text(s, 0.67, y, 4.1, rh, sym, size=8.6, color=INK, anchor=MSO_ANCHOR.MIDDLE) + text(s, 4.87, y, 3.5, rh, cause, size=8.6, color=MUTED, anchor=MSO_ANCHOR.MIDDLE) + text(s, 8.35, y, 4.4, rh, act, size=8.6, color=BLUE_DK, anchor=MSO_ANCHOR.MIDDLE) + + # ---- 05 백업·보안 ---- + divider("05", "백업 · 보안 점검", "BACKUP & SECURITY", + ["보안 불변 원칙", "AI 워터마크 강제", "자격증명 보호"]) + + s = slide(); content_header(s, "05 · 백업 · 보안 점검", "보안 불변 및 배포·리뷰 전 점검", 5) + titled_card(s, 0.55, 1.5, 6.05, 3.35, "보안 불변(위반 불가)", BLUE_DK, [ + ("외부 API 통제", "온프레미스 우선 · Claude·Gemini만 예외"), + ("키는 env only", "코드·DB·커밋·로그·응답 기록 금지"), + ("Gemini는 워커만", "백엔드는 키 미취급(큐 발행·콜백만)"), + ("자격증명 보호", "IP·SSH·비번·해시 응답/로그 미노출"), + ("암호화 저장", "admin 비번 env 주입(AES-256-GCM)·하드코딩 금지"), + ("스택트레이스 차단", "오류는 요약 메시지만 — 테이블/컬럼명 미노출"), + ("AI 워터마크", "M5 이미지 응답 watermarkRequired 항상 포함"), + ], item_size=9.4, gap=0.4) + titled_card(s, 6.75, 1.5, 6.03, 3.35, "배포·리뷰 전 체크리스트", PURPLE, [ + "응답/로그/커밋에 IP·SSH·비번·해시·API키 노출 0(grep)", + "Gemini/Claude 키 env only — 코드·DB·커밋 미포함", + "admin 비번 하드코딩 시드 없음(env 재시드)", + "M5 이미지 응답 watermarkRequired:true 포함", + "DB/서버 오류 → 요약 메시지(스택·relation 미노출)", + "운영 스크립트 시크릿 하드코딩 0(마스킹)", + "/api/admin/** ADMIN 게이트·미등록업체 차단 동작", + ], item_size=9.4, gap=0.4) + banner(s, 5.05, "백업·스키마 Flyway는 전진(forward)만 — 잘못된 마이그는 되돌리지 말고 보정 마이그를 추가합니다. 운영 DB 임의 롤백 금지.", + fill=RED, size=11, h=0.55) + text(s, 0.55, 5.8, 12.2, 0.8, [ + [{"t":"로그에 자격증명·API키가 보이면 ","size":10.5,"color":INK,"bold":True}, + {"t":"즉시 보안 이슈로 에스컬레이션합니다(SECURITY §2). 감사로그에도 비밀값을 기재하지 않습니다.","size":10,"color":MUTED}], + ], line_spacing=1.1, space_after=4) + + # ---- 06 정기 점검 ---- + divider("06", "정기 점검 체크리스트", "ROUTINE CHECKLIST", + ["일간 점검", "주간 점검", "월간 점검"]) + + s = slide(); content_header(s, "06 · 정기 점검", "일 · 주 · 월 점검 체크리스트", 6) + titled_card(s, 0.55, 1.5, 3.95, 4.6, "일간 (Daily)", BLUE, [ + "스모크 러너 실행·전체 통과 확인", + "/health UP · 두 서비스 active", + "Redis PONG · DB SELECT 1", + "워커 큐 소비·이미지 생성 정상", + "에러 로그 급증·5xx 여부 확인", + "마감 임박 알림(D-25·D-7) 발송 상태", + "감사로그 이상 접근 스캔", + ], item_size=9.6, gap=0.44) + titled_card(s, 4.65, 1.5, 3.95, 4.6, "주간 (Weekly)", PURPLE, [ + "배포 이력·롤백 발생 여부 검토", + "Flyway 마이그 상태(info) 확인", + "디스크·렌더 스토리지 용량 점검", + "백업 정상 수행·복구 가능성 확인", + "OTP·로그인 실패 잠금 문의 처리", + "룰셋/요율 개정 요청 반영 검토", + "webhook·시크릿 정합 점검", + ], item_size=9.6, gap=0.44) + titled_card(s, 8.75, 1.5, 4.03, 4.6, "월간 (Monthly)", BLUE_DK, [ + "보안 불변 체크리스트 전수 점검(grep)", + "권한(RBAC)·계정 접근 재검토", + "감사로그 보존·이상 패턴 분석", + "테넌트 격리·크로스 접근 점검", + "AiConfig·모델 폴백 동작 확인", + "의존 서비스(공유 DB/Redis) 용량 추이", + "장애·변경 이력 회고 및 런북 갱신", + ], item_size=9.6, gap=0.44) + text(s, 0.55, 6.25, 12.2, 0.4, + "점검 결과는 운영 기록으로 남기고, 이상 발견 시 OPS_RUNBOOK 절차(헬스→로그→재기동→롤백)로 대응합니다. 운영 배포·재구성은 소유자 승인이 필요합니다.", + size=9.3, color=MUTED) + + return PRS + +# ===================================================================== +# 3) 개발자지침서 +# ===================================================================== +def build_dev(): + global PRS, BLANK, DOC_FOOTER + PRS = Presentation(); PRS.slide_width = EMU_W; PRS.slide_height = EMU_H + BLANK = PRS.slide_layouts[6] + DOC_FOOTER = "킨텍스 자동전시시스템 · 개발자지침서" + + cover("개발자지침서", "Developer Guide", + ["킨텍스 자동전시시스템", "개발자 지침서"], + "개발 참여자를 위한 환경·표준·빌드·보안 가이드", + "환경 구축 → 스택·구조 → 개발 표준 → 빌드·배포 → 하네스 → 보안 코딩", + [("대상", "백엔드 · 프론트 · 모바일 · 워커 개발 참여자"), + ("스택", "React(Vite)+TS · Spring Boot 3.x(Java17)+MyBatis · PostgreSQL(PostGIS) · Redis")]) + + toc([ + ("01", "개발환경 구축", "clone · env(키 이름) · 로컬 실행"), + ("02", "기술 스택 · 구조", "확정 스택 / backend·frontend·mobile·nanobanana"), + ("03", "개발 표준", "레이어링·MyBatis·PostGIS / API 봉투·오류코드·토큰"), + ("04", "빌드 · 테스트 · 배포", "게이트 / 테스트 / CI/CD 함정"), + ("05", "하네스 · 에이전트 워크플로", "planner→designer→dev→qa→devops"), + ("06", "보안 코딩 규칙", "보안 불변 · 워터마크 · 자격증명 보호"), + ]) + + # ---- 01 환경 ---- + divider("01", "개발환경 구축", "DEV ENVIRONMENT", + ["도구·clone", "DB·Redis·워커", "env 키 이름만"]) + + s = slide(); content_header(s, "01 · 개발환경 구축", "사전 도구 · clone · 로컬 실행", 1) + titled_card(s, 0.55, 1.5, 6.05, 3.0, "사전 요구 도구", BLUE, [ + ("JDK 17 (LTS)", "Spring Boot 3.x 빌드/실행(gradlew)"), + ("Node.js 18+", "Vite 빌드(Node 16 불가 — WISE 함정)"), + ("PostgreSQL 15+/16", "kintex_db"), + ("PostGIS 3.x", "부스 polygon·트렌치 point·배선 LineString"), + ("Redis 6+/7", "작업 큐(RenderJob·서류·알림)"), + ("Python 3.11+", "나노바나나 워커 사이드카"), + ], item_size=9.6, gap=0.42) + titled_card(s, 6.75, 1.5, 6.03, 3.0, "초기 세팅 흐름", PURPLE, [ + ("clone", "git clone /zio/kintex.git"), + ("백엔드", "src/backend → ./gradlew build"), + ("프론트", "src/frontend → npm install"), + ("워커", "tools/nanobanana → pip install google-genai Pillow"), + ("DB 준비", "kintex_db + CREATE EXTENSION postgis"), + ("스키마", "Flyway 순번 마이그레이션으로 적용"), + ], item_size=9.6, gap=0.42) + banner(s, 4.7, "환경변수는 이름(키)만 규약입니다 — 실제 비밀값·포트는 저장소에 두지 않고 사내 비밀관리·env에서 주입합니다.", + fill=BLUE_DK, size=11, h=0.5) + text(s, 0.55, 5.35, 12.2, 1.05, [ + [{"t":"백엔드 env 키(이름만) ","size":10,"color":INK,"bold":True}, + {"t":"KINTEX_DB_PASSWORD · KINTEX_JWT_SECRET · REDIS_HOST/REDIS_PORT · RENDER_WORKER_TOKEN · ANTHROPIC_API_KEY · ADMIN_PASSWORD_ENC/ADMIN_KEY_FILE · SMTP_*","size":9.3,"color":MUTED}], + [{"t":"워커 env 키(이름만) ","size":10,"color":INK,"bold":True}, + {"t":"GEMINI_API_KEY(워커 전용·G1 승인 대상) · NANOBANANA_MODEL(기본 gemini-3.1-flash-image-preview). 값은 코드·커밋·로그에 기록 금지.","size":9.3,"color":MUTED}], + [{"t":"원격 DB ","size":10,"color":INK,"bold":True}, + {"t":"5432 외부 차단 시 SSH 로컬 포워딩으로 jdbc:postgresql://localhost:5432/kintex_db 접속.","size":9.3,"color":MUTED}], + ], line_spacing=1.12, space_after=5) + + # ---- 02 스택·구조 ---- + divider("02", "기술 스택 · 구조", "STACK & STRUCTURE", + ["확정 스택(변경 금지)", "패키지 레이어", "프론트·모바일·워커"]) + + s = slide(); content_header(s, "02 · 기술 스택", "확정 스택 (변경 금지)", 2) + rect(s, 0.55, 1.55, 12.23, 0.44, fill=BLUE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + for x,w,t in [(0.55,3.0,"레이어"),(3.55,9.23,"표준")]: + text(s, x+0.15, 1.55, w-0.2, 0.44, t, size=10.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE) + stack = [ + ("프론트(웹)", "React 18/19 + Vite + TypeScript — 역할별 번들 분리(§2-1)"), + ("백엔드", "Spring Boot 3.x(Java 17) + MyBatis — REST + WebSocket(STOMP)"), + ("DB", "PostgreSQL + PostGIS(부스 polygon·트렌치 point·배선 LineString)"), + ("비동기", "Redis 작업 큐(RenderJob·서류·알림)"), + ("이미지 생성", "나노바나나 Python 워커 사이드카(tools/nanobanana, google-genai)"), + ("AI(텍스트)", "Claude 기본 + 설정형 전환(AiTextRouter/AiConfig) — 실패 시 Ollama 폴백"), + ("인증", "행사 단위 RBAC(JWT HS256) + 2차 인증(OTP/TOTP)"), + ] + ry=2.05; rh=0.52 + for i,(k,v) in enumerate(stack): + y=ry+i*rh + if i%2==0: rect(s, 0.55, y, 12.23, rh, fill=RGBColor(0xFC,0xFC,0xFD)) + rect(s, 0.55, y, 12.23, 0.008, fill=LINE) + text(s, 0.7, y, 2.9, rh, k, size=10, color=BLUE_DK, bold=True, anchor=MSO_ANCHOR.MIDDLE) + text(s, 3.6, y, 9.1, rh, v, size=9.6, color=INK, anchor=MSO_ANCHOR.MIDDLE) + banner(s, 5.8, "패키지 루트 com.zioinfo.kintex · DB kintex_db · 나노바나나 호출은 tools/nanobanana 워커만(백엔드는 GEMINI_API_KEY 미취급).", + fill=BLUE_DK, size=10.5, h=0.5) + + s = slide(); content_header(s, "02 · 프로젝트 구조", "백엔드 레이어 · 프론트 · 모바일 · 워커", 2) + titled_card(s, 0.55, 1.5, 6.05, 4.0, "백엔드 (com.zioinfo.kintex)", BLUE, [ + ("config", "Security·Jwt·WebSocket·Redis·@MapperScan"), + ("security", "JwtTokenProvider·Filter·KintexPrincipal"), + ("common", "response(ApiResponse·PageResponse)·exception·audit"), + ("auth", "AuthService·TotpService·mapper·dto"), + ("module/m2~m5", "플로어플랜·부스설계·배선·나노바나나"), + ("module/m10·m15·m16·m18", "도메인(Phase D)"), + ("system", "사용자·권한·공통코드·메뉴·감사·설정"), + ("work", "worklog·schedule·message·stats·notice…"), + ], item_size=9.2, gap=0.4) + titled_card(s, 6.75, 1.5, 6.03, 4.0, "프론트 · 모바일 · 워커", PURPLE, [ + ("src/frontend", "pages·components·api·store·hooks·routes"), + ("역할별 번들", "organizer·exhibitor·contractor·ops·admin·public"), + ("공유 상속", "디자인 시스템·공통 컴포넌트·API 계약 상속"), + ("axios", "baseURL=/api · 응답 타입 = 계약 shape 1:1"), + ("mobile/", "Expo SDK 51·expo-router·RN 0.74·TS"), + ("모바일 저장", "JWT는 expo-secure-store(웹 AsyncStorage)"), + ("tools/nanobanana", "큐 소비 데몬 → 콜백(RENDER_WORKER_TOKEN)"), + ("룰셋은 데이터", "rulesets/*.json 버전 파일(코드 아님)"), + ], item_size=9.2, gap=0.4) + + # ---- 03 개발 표준 ---- + divider("03", "개발 표준", "DEVELOPMENT STANDARDS", + ["레이어링·MyBatis·PostGIS", "API 봉투·오류코드", "디자인 토큰·네이밍"]) + + s = slide(); content_header(s, "03 · 개발 표준", "레이어링 · API 계약 · 코딩 규약", 3) + titled_card(s, 0.55, 1.5, 6.05, 3.4, "백엔드 레이어링·MyBatis", BLUE, [ + ("계층 규칙", "controller(검증·RBAC) → service(트랜잭션·룰) → mapper"), + ("컨트롤러", "도메인 로직 금지"), + ("매퍼", "비즈니스 판단 금지 · @Mapper + XML"), + ("PostGIS", "ST_MakePolygon·ST_Area·ST_Distance·<-> KNN은 XML"), + ("룰셋", "규정·요율은 버전 파일 · rulesetVersion·disclaimer 기록"), + ("네이밍", "Java camel/Pascal · DB SNAKE_CASE · DTO camelCase"), + ("마이그레이션", "Flyway 순번 · 번호 충돌 금지(최대+1)"), + ], item_size=9.3, gap=0.4) + titled_card(s, 6.75, 1.5, 6.03, 3.4, "API·응답 규약", PURPLE, [ + ("응답 봉투", "ApiResponse = { success, data, error }"), + ("목록", "PageResponse = { items, page, size, total }"), + ("오류코드", "VALIDATION 400·FORBIDDEN 403·COMPLIANCE_BLOCKED 422"), + ("미구현", "NOT_IMPLEMENTED 501"), + ("스코프", "도메인 경로는 {eventId} + 행사 RBAC 가드"), + ("프론트 타입", "TS strict · 응답 타입 = 계약 shape 1:1 · any 지양"), + ("코드그룹", "boothType·myRole·severity는 COMMON_CODES 단일 출처"), + ], item_size=9.3, gap=0.4) + banner(s, 5.1, "디자인 토큰 색·타이포·간격은 design.md §1 토큰만 사용(신규 토큰 추가 금지). 데이터 시각화는 CSS 변수 주입(하드코딩 hex 금지).", + fill=BLUE_DK, size=11, h=0.5) + text(s, 0.55, 5.8, 12.2, 0.7, + "인증 1차 로그인(ID/PW) → verifyToken → 2차 검증(EMAIL/OTP TOTP RFC6238) → access·refresh. 로그인 실패 잠금 + 관리자 해제. /api/system·/api/admin = hasRole(ADMIN).", + size=9.5, color=MUTED, line_spacing=1.1) + + # ---- 04 빌드·테스트·배포 ---- + divider("04", "빌드 · 테스트 · 배포", "BUILD · TEST · DEPLOY", + ["push 전 게이트", "단위·경계면·보안 회귀", "CI/CD 함정"]) + + s = slide(); content_header(s, "04 · 빌드 · 테스트 · 배포", "게이트 · 테스트 · 파이프라인", 4) + steps(s, 0.55, 1.5, 12.23, [ + ("① compile/tsc", "변경분 통과", BLUE), + ("② 시크릿 차단", ".env·*.key 금지", PURPLE), + ("③ 마이그 번호", "충돌 검사", BLUE), + ("④ push", "= 배포 트리거", AMBER), + ("⑤ health 게이트", "실패 시 롤백", GREEN), + ]) + titled_card(s, 0.55, 2.6, 6.05, 2.75, "테스트", BLUE, [ + ("백엔드 단위", "룰 엔진(규정 평가·요율 산식·배선 최단경로)"), + ("공간 쿼리", "PostGIS 통합(testcontainers/로컬 PostGIS)"), + ("경계면(계약)", "API 응답 shape ↔ 프론트 훅/컴포넌트 교차 대조"), + ("보안 회귀", "자격증명·PII·스택트레이스·워터마크·응찰 가드"), + ("워커", "키/네트워크 없이도 import·구조 성립(목/degraded)"), + ], item_size=9.5, gap=0.44) + titled_card(s, 6.75, 2.6, 6.03, 2.75, "빌드·배포 함정", RED, [ + ("Node 16 금지", "vite build 불가 — Node 18+ 사용"), + ("서버빌드 신뢰", "로컬 rollup/win32 크래시는 서버 빌드 신뢰"), + ("동시 빌드 금지", "target/*.jar 교체 깨짐 — 직렬 빌드"), + ("자기방어 스크립트", "jar 검증 → 원자 교체 → 헬스 → 실패 시 롤백"), + ("커밋 시점", "지시가 있을 때만 · 운영 배포 소유자 승인"), + ], item_size=9.5, gap=0.44) + banner(s, 5.6, "Flyway는 전진만 — 잘못된 마이그는 되돌리지 말고 보정 마이그(다음 번호)를 추가합니다. baseline-on-migrate=true.", + fill=AMBER, size=11, h=0.5) + + # ---- 05 하네스 ---- + divider("05", "하네스 · 에이전트 워크플로", "HARNESS & AGENTS", + ["기획→디자인→구현", "점진 QA", "배포 오케스트레이션"]) + + s = slide(); content_header(s, "05 · 하네스 · 에이전트", "에이전트 파이프라인 개요", 5) + steps(s, 0.55, 1.55, 12.23, [ + ("기획", "planner", PURPLE), + ("설계", "AA/SA/TA/DA/NA", BLUE), + ("디자인", "designer", PURPLE), + ("구현", "backend·front·db·domain", BLUE), + ("검증", "kintex-qa", GREEN), + ("배포", "devops-dev", BLUE_DK), + ]) + titled_card(s, 0.55, 2.65, 6.05, 2.7, "문서 소유권·경유", BLUE, [ + ("PLANNING.md", "범위 권위 — planner만 수정"), + ("design.md", "화면 스펙 — designer 경유"), + ("src/", "PLANNING·design 근거로 developer 구현"), + ("나노바나나", "tools/nanobanana만 경유(visualizer)"), + ("오케스트레이터", "kintex-impl / kintex-mobile 스킬로 조율"), + ], item_size=9.6, gap=0.44) + titled_card(s, 6.75, 2.65, 6.03, 2.7, "품질 게이트(점진 QA)", PURPLE, [ + ("모듈 완성 직후", "경계면·공간 로직·보안 불변·빌드 회귀"), + ("경계면", "백엔드 shape ↔ 프론트 호출 교차 비교"), + ("보안 불변", "자격증명·PII·스택트레이스 미노출 강제"), + ("AI 워터마크", "이미지 워터마크·응찰 게이트 검증"), + ("반려 기준", "compileJava·tsc 통과까지 반려"), + ], item_size=9.6, gap=0.44) + banner(s, 5.6, "브랜치 main 보호 · Conventional Commits(feat/fix/docs…) · 코드 식별자·커밋 제목은 영어, 설명은 한국어 허용.", + fill=BLUE_DK, size=11, h=0.5) + + # ---- 06 보안 코딩 ---- + divider("06", "보안 코딩 규칙", "SECURE CODING", + ["보안 불변(위반 시 반려)", "AI 워터마크", "자격증명·오류 응답"]) + + s = slide(); content_header(s, "06 · 보안 코딩 규칙", "보안 불변 (위반 시 QA 반려)", 6) + titled_card(s, 0.55, 1.5, 6.05, 3.9, "지켜야 할 규칙", BLUE_DK, [ + ("자격증명 미노출", "IP·SSH·비번·해시·API키·OTP 시크릿 미노출"), + ("민감 필드 제외", "사용자/업체 응답은 비민감 필드만"), + ("스택트레이스 차단", "error.message는 요약만 · 상세는 서버 로그"), + ("AI 이미지 워터마크", "watermarkRequired+watermarkText+notice 항상"), + ("등록업체 응찰", "미등록 CONTRACTOR NOT_REGISTERED_COMPANY 403"), + ("외부 API 금지", "예외 = Claude(env·Ollama 폴백)·Gemini(워커·G1)"), + ("암호화 저장", "비밀 AES-256-GCM · 비밀번호 BCrypt 해시"), + ], item_size=9.3, gap=0.4) + titled_card(s, 6.75, 1.5, 6.03, 3.9, "코드에서 이렇게", PURPLE, [ + ("키 로드", "env에서만 — 코드·DB·커밋·로그 기록 금지"), + ("Gemini", "워커에서만 로드 · 백엔드는 큐 발행/콜백만"), + ("admin 비번", "ADMIN_PASSWORD_ENC 복호 → 기동 시 BCrypt 재시드"), + ("오류 핸들러", "GlobalExceptionHandler·DataAccessException로 누출 차단"), + ("gitignore", ".env·*.key·*-adminsdk-*.json 커밋 차단"), + ("워커 실패", "errorMessage는 요약만(스택 유입 차단)"), + ("감사로그", "민감 액션 기록 · 비밀값 미기재"), + ], item_size=9.3, gap=0.4) + banner(s, 5.6, "체크(grep) — 응답·로그·커밋에 IP·SSH·비번·해시·API키·워커토큰 노출 0. 위반은 QA 반려 사유입니다.", + fill=RED, size=11, h=0.5) + + return PRS + +# ===================================================================== +# 저장 +# ===================================================================== +if __name__ == "__main__": + out_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # ...\지침서 + targets = [ + ("사용자지침서.pptx", build_user), + ("운영자지침서.pptx", build_ops), + ("개발자지침서.pptx", build_dev), + ] + for fname, fn in targets: + prs = fn() + path = os.path.join(out_dir, fname) + prs.save(path) + print(f"SAVED: {path} (slides={len(prs.slides._sldIdLst)})") diff --git a/docs/deliverables/지침서/개발자지침서.pptx b/docs/deliverables/지침서/개발자지침서.pptx new file mode 100644 index 0000000000000000000000000000000000000000..4a4135a5ca7aa5e59a3386eda64c2fbe00e10be8 GIT binary patch literal 67139 zcmdqIV~}Otnzox+Y1^!{%}Q6=wr$(CZQH7}ZQHi3%FHk8-QDNg`#l|}`$YfS5o^wf zx#q9+;JWYejIm_Ifq;<#006)N$Xd=cqR_x3_W=O_){y`JzCHlz{MJ?uhE@*R3a&PW z_L?*LgbM3>3bcral^M;RaAL`aA#3Jk9RTaJr>HtQp zd(!!Dfj|`Ns-ij(=AU0)k$kVyf(#+wY-MAD^XxIoSveG!gkallDBq=57Bz-%!2bb4{T?B&=5c z9bD2FA#IY7NmIZCQ^2G(Vwx#p+5u(t-k;ES=pue^oiVxLiJ_8d$QGN3tQU#k_$LqN z4i)DPC+7|U+xOpO0oei9{_tL~pgkbTJs^GCe&zVzcHtl|O>(#UwC9?{vd`rt`1)?2 zKZFgGjg)sadbjdDGM16Gpj4i0t$xGF{7X^Xz_6YJd=y}HfaRA6?s-m6oeBiT7r8LIXoSSqP9{|BaxyyPj}fEwUs1Xx5=q&YX()S zVDx#?!(DRbg^DaC$avx-`6UJGv!fCI!Z2Ptcrso2i&}-TN28lCzOIV62dy=9pw{KBGj4A3_~oU|7QH|yIi*bQ9AvP5$St(H`!Gp;@2jbAG+ z;nD`q2=NgbH?+A6n0CRlCPwrbwK{Rx4qW{?6Kp14?8o;tBzZnSfQ0Wfout=0IkpDc z47ThU3+jWH$j6VZ_~IC(8KLyyLkzvIQW@^KZRSg*w~O4H_; zu$F+wc^K%C-JrZK3P*B?0+pG3!?+TFfz2bD9s!LkkDs1fZKDD{rFb0Rh`|hXIBRfa z$)R<#m97cgm;14#eBQ=sA+VgbvjKvKGpBN)zD^91>0mOdsSI}TxqEBo$c1$0M_cD- zeAiXJTd^-p%;SnZ>$&O;w(9A#g%mxuHwV`bq%&Sk#CM@T)t~Zt=Z$RrubIl4j&i;I z%9JHA008_yXG+(`=1-zB6(pnQ=-@jDZ}6zHx2JyuLgtR%K&n-`MKfO+(!^`t)Gd#?wM+15V&5p<1KqacW2E zw(e06vnM&4gjGaUZBr-yOQIeF5q@%O)l8P7vPPAXeZJ-u8(&Ll_x5_c zygD6VAsf~{Vy?O;;3^pLlWpS=MVv9;XMct?`x`7^TkfF;oR)ti=Lq6St?hR=MV93} zWT2~^!gItk)23wL4+@Fe*GrYs{GMw#^13zh{^_E)T{i&o0XKD@Xx2memJDHS{xl&9 z;|(4OCwKVgxT_{;%9@(KN%|c22H101QTiO(RqjAA<=JlpS&c513F)Ami%?}j)Nr6J zoImb`){3X#Ys_EM;F!j-YB(ySzkfJ5fZe5d!7-;s)l-eV_OY$BK6(8xfB0J`1EKnL zhktdkJuCpgA9b{`aiF!aGqnGbLR|+_YpXvsa*-@)l~0H4^JEV>mQE!^opOzaTs-Tb zP%0-Jmi7oh(+;noA9GKOnvY|v|)M!A~N`d!vgsHf<{S%Z2Mg61gG=?M@ed{ zwHmzUL{nr%s?t*=Rmab|u0%5POOQ@Hcjj_n+}i`^+w_aZ(H-abD|7f)rV!xGrCcY) z^2z*$EsTlI@Uu8%j&7sRTwWgLpOj$`LKfBOLq#m2W|{|Xw0yGXdkb|F$h04Hg?!v- zv|?NLIb}I)__~NicWe^$aj7Stq%@=~a2mMF9+$T*6a2}+EYTXcE1XU()X~k4dTY404+F~LN3Y?Q-o9tFweKK{ zt80`UFF##{=^=&*u08Sce~Z{=2$^n8522DNwE)BGvXUW3f->)G5=gH41>~CE%Ys;} zWSy}d-wWZfS0s(!S1#E#yJ?E|r;?F_+CFujjMei$`^Gy_%TDZvyIvyf73QSqD|A0b zdRlan!R8au)r(KO!RyfOCjUNvie4$yGkHb7NFk$?t$HF@3Q|`rp$!u?8+-vKkAU8? zU`#3vQXY^WaNVNA!oqD402?G<+!#5QRNyhcvK+I^c{ZlLY-Wk20&)WK$>goF;;j7NrwOcoV)5@Tdc`CeS{7J8!j zNm2Cy_^)t_l?7-%I%aE&X|Y@j+{H=e=z!%s&=HFYESXAV zFiRqPmc=3h7)ovx5F*LAh?Gm*ow6q58uGho3o%U4HhG}W6?Ht=b{|qr4>6g`LDCSE z_5d^^oD{lcdU@ZmKB;AOzCER|n02E<{W{FPM4)<*qvo>nL>3o%4Us)AWp4=5J;W{x;SXsVX8$uoI$L~p(W3LK6lOE0IyHT;Yhd7*mfgRePTJLA6|4JzS+e}e90YUup`1U*t-(t3>!x&v<6 z8{WnGx9{Ru1X&02MqxK3(VAu=y1G9VL|z=*`-8tBhvh1^+nhTQ9-gR) z5`XQmZ*HQL>6*=Ry=S}Xw|ue+#6i`4o1cDf4^P&V+IUR3*+6F;`lYDYtLUDYhD7S; zz|FwHB1;#`eoOO7*$h`6c-^Zb<5ziOP$*?lb*NtJNdDMV||1KE~pw- z=PC}n@(zIzS5wMpsWJF&ss{9aLOWD3k_9i2=C5xkEKfo1O z7SXjiGzBMAHT25XY7*+!oM2OnTpr{mByvqyMWkxHPSXTSI;gaO0S(t+qLO zp>s}E!+MEo<8ey!PeB~vo&;r6G4Yj0qRFiVjb!yjmtngN&;7<$9K5Rk_}eli9@5hB zJ179a5zhbBYzGrVOGDbf?(~0Yw(3_>S1d zH<>#zpui82V(l!log*SYo0W|4b?l}}NKhccVV=$og(DS{MI8Xfhk_G=cWb1hn1rAc zE*Vbt(%yBfFItts={tBEiI(cKHE7VlpRkmqg#3TjY?@bUtdZTT1I*nuPfSc)8g)z? z1HuCb9CaqtR&LsLFwUrcGn{bU*idU*EZY@-O}Bqelq#OnD&3|gGjBY+9&0FEbj$Z^ z%Bfh%dg`j*yr5CMMonN&KD_QQrxdTG*!0sAdilU!9XF`;Na_aq?(S#K(ULW)4L;B+p8ppm;x-MC0lv0$ z9v%?2c*UIvAQ<5uuk~rOUndtRD6B@X0!BM2IhK`D?6r4&WC<#!cf z5o3v_h)M=1Lfn?fFT}UDcA> z4v|C{=19MKOmnTalv+1X&in?qHOorRJm%_tl6-7m*Gd^}GlQa7NT1m0>n!pVi7~8< zJkC?981$dJ=rjY$)}06}Yt;w+2QeDyge&P&B!lH#4##_mPWh3t0Hx8v&`d&naY5Wl zMY90m&Cx)aATDk+lLGC#T8a;9?y}t|NTmvHKnfY6E5h+h6dtGE`5O$J8d3n8t{o;c zOP|8D?JK3kecvJO{bEg7y-9@9hCA3e1%O!M+TdTC6DzA?C@%H}3kW?emK!_Fb`M+V z-(E?kFmz0zU(8smO-T@pY}RNzYC7WFH@|I7VTj!!@|$+G<)$QxvzZ1xJ_19;`ix^f z)W-ZkjSXNb;**A~s-z}o(#wey4@pg)8C15Tt5i>osu&im-7G|iW4f)4BL2?tBl-^6 z@S&aJFg2EP^h{!>O00ehkR89my3To|KU$Wvl!P4tm6gME!Aoio|FmNOEP1hoC95=7 z;-g|vOt9-0N`=OFV7)~*vAya*8sm~l(^Tt1QI5Vrrw6tSM$O61FIp$j9NF3_!izo1 zqOw#)6=+xwjVVw@bD;%qM@WkE&YpVx(DTD@bqf`hJ} zg`vEItA(NcA4LJ_*?{%KM+caGYuxnpd;%v=YN<(GRdikeirJk4#gkN7QM=k?58l&* zaXnd)h9$NjfECa`YlQ%Vcv?#};`NYOCf}10e>Q;|((Cw9!pS+#>=DuV%!_J1eI(Y4 z-pgn_-jv@sDtuXLTU+E@uh=7Og{#6^{uJQPOm*lnR*?oTQtS?~^($;oAtdfH%}893 zK+kQLAYaw3to*%YQ$h3vNa^?A{ALk#9`o6kP|nf-0DS+CUuAD$YG5d-YwuuaXHWZ2 z5C2e2HO;6!7DTTtdHD5UFL2H{vePLO$7!c%QXmHsp;mhUwLFVLayjvtD0e>q``~pQ z>)JMJ_XPG4zXXF3t0%l&h(Xn^WrZ90*ox{hktENLi&h;SLBm8S+-!F1b4FfQg4v9z zz4~k`QvYjcg|O=cx*k&xC+YHfYuXPdEm+DVFKG%vVimLqWq!oIK)HkIx-tX4uPGJ+ z@xhs&;ZIZnMeBeJ^-`j)eGe@E!ztO zwB<_bFNl_f1top4AQ-=>n(M&+Dtx>u9Yq0HXr2P4*QK`U`y?Siv z9Mi3AO_(-wv$VF^g*zEw%#R*i z*NFNYNub`T>!2(2P55o9d8n!L&A$e2DGsv+H+{GkbuMjSmJL8E9efXErz2b%ux82j z>6Ah}39$h*z~ZIAg94yylN}V*f_BP)G@B!G>3LeGpt9B4-pNoom*SZGg$pdrt#eGR zp%)F1kKYWI#smQ$H*D6pzyFN2W<7JlK3{!&JRPY?NOThx1au$_iX$0i`=+X?To%*_ z&sgY2a3E7DOwh43oGNlvEC-emw)1m18ouVKJxq6B$AUj++&`5ZxNeJa?Nru+Dn&Q+ z+TgnZG!pTIMsv)-fm|q+wUGi`X`4!+)jU_e(MsV5ogRCl4+3}e_XGcIEBq2jW}}4b zNcEC%`muP99N-+&Dqf_gAW#|8L^piHAVvyu>0*I6JZC0W5{5=oOTF>?UmPu1&a)a1 z9S}IZ>A!q+kXF6>OR={a9p7xLdvR|Gw%%VmP8XsS%!-r`HO~N|3M-9&m#x}Wthzb{ zJ7}@*!$<;41LjkXYUSW|$h}_>B-1WkcFMg8P!+1Rt8jT$zH+XWzfXUUT#M->Fmv~} zfkT)r^~-rh?*q|QMOrpZ&%V6oG1Mp~`9Vjt$Hd+$93t2eDq$@dJdVUPaK z7%ypBB)W9y@QVwY*ze$k$k<|vUZnDDE_Sq~jM#U{vJlJWeg33&HCCcNRb=B*a@xgt zP;O74%Ps%rAQ8vSziFqC2b}*LMo9VjLWi?=@22oVFrNMcrjeTuS<#h`^u>ex1a2%X zEEzaZKeyX%od%!5lY!Gg#KlrXB4Apy1`qieo-dYMRd|3W>C0)RciU*=pjY`{&&47L zZEF8uSnXR}Lc*r%jvzT=%9T~%KmtG`nq}gSXe$- zUpiD)Q7-)ImOG^X?Z_17!2~PpAL~yFKNflgLy{GKy(ZxTzGa*D_6x6H0o2$2ct@LFicj@E0@JHG|RDW zzHyCiHq;x&HLC5!;!TW8150TkgQaGmi(WP;`GnQT`JujZUUHdKS%Su0Y&+uvt0w>c zL_SQ9-?i)H(HyaK!ezB{qd~!$TM@Hl8dHmCZ2IQPt^fAJL345-{UZOC?1*-3EY^Z& zLTZU<6o#k?bQif7F5SYptwFJWTv3hkg#(ddzPt6~W}}(uV?7uNO-OrGZn$g#TGCyD z9ZDY`rO6e%_Ugy*rKLO%m7|~ z7>^K&cN)c<01ghIQ0!7MP@vW}4iZimPYzI^FfZ8Yu?@$M)gN}zaL8$MM+m`Sy~5qW zYd5~`9!$)ugopal9?QbrV3*I=Ke%HqK%P@xp0B*4;$f@v`>tko*q1-Y3d{Ak`>vkB z-8=+*^;x=*@VpuD_=bd=-Iuv;ZjSB{oIC`$xO=C0ZZCd|yi60#f7+Z>1s%wgfF!1e z>xtEyPN>zl20J#v)_IoyCV+kv&)b>VyjCO3IIsU4HH17NedF{3u>TSA6aM)(rNkJ!d4c&F5)6U?08sr`O8Jkm+TZo^ud&*|LWfx&9WuyvhxGSfCSe8~ zp?e9#sz1L^mo~%UpPQ>I@CeC;y*~z`ib3-^keSTbARKwkaTVWHpu7Sf6*6b+GZBJI zm~)tdN^PbmOA5xo^*a1i19%=FV(cz28r?w}|?#g6t$T_4BKF6rviNgmaeF1E= zSk@#JzFq1FlrHf09aKj!DRF$mc-t*8v3K+kbpwJ!cu5~6@MW&>O{Z7U1)(9pGa1PZ9YSHveu)ac zWJE)ovr>UY9`XpWsq$tXueSM=-khF=0>28@#m%;v^#J8F`!JdWl)ESS|G24>&X`b9Mf zPH9E+bza8-5F<-|a~iCY1(ak;IML_88b$t&=_jOW-vD-ZZ`UZEYIC_AjA|AbqgJ5U zl%JAp^5z5z(Ik_6NQji0AIBfK%C)SEeG0ht{grUbvH^>d{m_y*tqW@_|}L@4CF9xih{EH#+U$ zv{b(mXZ&ig7|&c{Henoc?w-`(st;C&DYL5oajtY0jMTXB`WVo#gtyJbK5wu9^2Cri z%`Pc+ouY-;jOg6{S^=YCYItr+PIPO3?vsupA5Y8V#3LzF} zgZ-j;x#IJbL>$* z+*XLzZRGq}{Z4*UZ~QCKYoR*Tsk#Lyv)7_(pST0+EUb*T;Uwm4>lOLuL(#3&!iTql zyJYOdu6YL9Tx#~4$R&v^T^qvdA0OY4P&`Jh>*}IaKj04(G34YOSWYg_mp@Bvx7dx@=PUvT4cDg5?s2 z7IPVzG3XiB?Ql(d(wE{Z<%o z`6a`1ru6OaMkF)%X$pvIwok0{aHD+pdJ0w|#4WoGonT{`4!wffH6S6~O! zOgx*S@IgB^OqYhel_M|kl?YzCw`lQUqi`~u7M8J0j~vR&)O^ck+Js<8@$R2IdxzTp zI(zjo+zDy>>U)+iv{L_9{r^u`{bvgN#ns5E+P}Cu-J$)()iMKPvO<+fIY^8;;3uGf zdy8<9D+n%PHt%faAXrV>Wc!vr+cDAgTsxv)WlNceK3PBe2go_2qU`yH9 zxPkcBC;+^l!;pUMKZAT775JBB*ndUAKTFMtl#Qr#HsqnJCvvJs0%d4z(2NoZlwp}l zrp(Z^6CjsvqLM))OH#?kviYS|&kXL7QP7`8Kgx`hOB2#{()aqVGCq3-UGJQ>WNHY1 zE@luTU5#b}^g?PaT4YLabMLdH0hH2F(jP<+#RJ90H!XE_m>S0=H9dDXL7roc?n9F< z3Y9t?vehlefR0gaA~sr^3<&xsw(sg)Bz*I(T4~LVx@wJ`+fGw`_qa)WX)inVqjIUW z1eec5;v-XHHnx**vb$dF98{+aA(BX4k&d0uB@Qh#6AT53NL`NYzpXf9y{J%`L8M!c z>35q()e$_4OHr@$gbz4IUF$%)DAR;w+_P#z&Y@`t_9{BKXLVzoGvt`F$&%EDljK}e z&YMxzQq;*-sRDt0U7FE1sOFu4LEST{ZSn4DTwZV2xqybVk-{y@Ki&3%9%{-W>g5n( zz8-x{Ldz!7`JHLv_^jz798P28Y02uj2t^#xwE3&e8k2A;d?Z9BWSvHA3rgcSSo#ie zs1|O6TMKTmYE3mmXrsl-*ev_@HpiIf_Etxshmm4I42O(9Q|S{Ox)#|-uThGs_dJ>s zYFNlHLC0ylv31f!)8kthklZ3<`;Z(0poAx2siqmYp-hB$?`ev zUQFKhIC5zlbfE>?c2&J~vs1H2TSK5DYRkuxktE==jm_a*N`?O^RsmDAQ1jNtv-Oer zd9A28Gb?aIEK&c`E12u)e;6AH4}IYPXnjrh#YOOs5^Aio(^6hQm0xng zlZ_MQ<_~X8UEZG`7uk&SW%h0w#O{uiid)~*Wl0y4nKFgEg5)?JbgcRYm>Q2wm)AM||XC!*1jL-T~j758RGZJ}ujp^iFbC`$!E*S~_IAYIz4- zr`qyG`_2l>Z-7cYR0E^TUmmD^^1PM6 z!PVP!|2J#@u;$+jwSdaU;kI9fGwEwb{J%pj!=InuptNC?&xYQyRa~`>#n*5Z1>?TOE`j_2It+D)LH;uJ`AnacsZZjU*%S1wz+byuh z?*Rq$Aenb076eKFB{Td041Ax945) z)ARr^zOfr)GFk#9xWu5RBdm2K>k%%_R<*5F65|hV-=E=Bd(Q-~2shRPT@Bn`&;^87 z#YMK84Dduxcp^~mQ^!yaFP~B=rynw-Sk!E48fE{@kA$7xq|E{V&&x+dD3BW8V{ z^_Oid`o8pK8yidi*v7pt+nAv@9OZX>mJxT0G>xqz!1N4|IEc7x;KL9jgk#BE7n739 zoN)bwHVlRmDCssljYag^`g^f|OhK1_2e{vwa=neCAIf83puF4!49$QWTcP zhHvG@ka!9nEr!>F)U3_>(12miDOrGcod_SfB)1;-Cs;F3n_`;TFnAp(Sqjy8(H9pc z*N>29zsHy7=s(azIC$R^e=rv$&ZTeQO6`%Y&5%~ z9=yy(9|_`m;zYp#GcOkOfUGnkZZ#dcuvJs|qG`GH+$+R}<=vPg!ZDMxv1;$kl?mu8 z6wcntB=M+|F(>gG3jKzQEFZRzG2n;j-LA64)jmdy&JE8yuCmlhB>9aekq#zEuTFhb zbwwJOZXmlm*>^BLVPuOw8Gp<$5|(e8s5`lOXi@F;`S?`5)%DKkr`%E8fpmFaIr|R& zE3RNNnJRs%mvdyDDg=^MZGv{gkUo5aAWKL#i+Ie#?QY>-hwm2|aiiykwaGEK|8a0u z&G*9nFy+_0eaS5iH$U$|IUBvVvFOl>`MZ zpIt9w$=PLlnkIR_8q2F#`H&rMrun7MZ~tnI{@Eb@&!F{J*ZzA!D_rM7P4CMes{9Z9 zA>)7eL#s6wWS^@i_3a-W~>+zp-gT7LfJ-{uz8Wy24&=9bIa&CQVbE% zq`e~FC09NxqOc!F*Bm^v2#zmC>PR&`8VV64gh#!&fD-mf3J$3e-0M^0Ccps#zjy;= zGa{T+A~rSN?N%Z{$gQTMDv6gD1H$OVA`%lOmg@vMdzlf@Dta8$_49O=|n@bp)2k84543wxSMjlr(7ps`Fp{9sczN3p? zVrHO!JL=L^K<94tNQ-Dsgy1R&9}IZ}_AE!t9gPej8bfulbc&;r()!dPZk-tLjP4dT zkm_DeUm;A(wYz_)D7Y^4dR|4Xwb^Tn`uWyBl^vl>z>M)g@~)_Fl0B(EJt9_4ovv53 zPKz6s#hY87_5j=&5dBns}ZF~PQY$rZ{Om@F{=EIroWu5JXa>&ldu0=1W1G{do;1|{jSf zsm(@+Z2>O|-J)2H&y<9ccp-62*@5atyRHS}RN+-Pq*xq$$qV^D-5}lXn1|Ny2&Q4( z9f<=jJqV)(zl3G8<8$VcTf`QL)`?Gx?eY$^IUJd%JaPut-qU^7Dy!2awyCoX1Lwkj z+)^FKitUo`tK8G8Jc0$&egkN|9bA3q8t%P(hr+cI<7xjHy#-Jmqpxm&!*(9BZI+| z(I;J{ZT31jvCX1`Xy#qSJ8s6w7Y6&y5MWOM)B*~+X3ZryVcVN21T?;|HOF@Yll9MB z6GmeesG|7gUl%4uLgW$S%bCDNn9o&M!gLX{E1f2Rw;5Gu@#YU}OI=>?j}KR0*3z;0 zZ9v_X(17)uxfb!@5mO`(Yq%Vv?-> zU{|U0w)5I+>nJ-?MFJXodD|zDQXjYOW{ubHd|w?hf6!cnfamUBafqN5$@!xMP@+i!#q7ETo<%U0G+h@yu5Ii>znWO`GD|< zGv5$|Y&n;8=v|y2#taz|3Yz(_8sl^{ktj&W8k6K$kcJRm5SK(WYCz{4CB+8Ki3ULS zpo+JTYxBa>*gDUGq#`NI9?o9q&s0^F*t2Rq6!j@M5ThXCQ1bOunR{!PhiaIyp(F~m zI?UtNnb;cl3EST8gF%?0n%EjS&ra)7_wD5X!pyMM;i91nBE%#Ly@=AlqG~Z`9=WU! zC%BdAmzq&lqUls%@yM`Z-#(pe~n`=O13H`L(By zH`Tw~TEVesYhCei7y%uv6pfZoHZNU14`v37Awsv4R!4N?wdlSW1CqH54MVqk6b7xY!=BxTr|M7d;Ekpo*5R&vZ`{7 z4&hC;KMlTOjMPj@HY6?tIqv&uUl-P;XC5kI>RYB_-NQ5OB%Rcwv)`uq>XLg_b|clx z=Zqd`l`TSd?QhHGkt&7r;9GKHE8e~t@hw?Q%diX2G5rSzz$~IS94hw^CV=UP4cww< z6!X_N&zNTy%Q^rB#690D0ArE@f@?r|)fj#Re7%c1hF=5_5g!b$!RcOsiQtxu6njeI z#7WQQ)THpg-$CRkF6ZE*ZMv6Qw~MkDg5tFaA3?bP2)&0J3&We@=8Wair=&?1p6io8 zDYv72YdORGUERvUX|8!EU2Xn7ViR&rUDut`!aDF`z85v6mxUkkN`cuWDth~;T6O2z z`kg0oa>2Bg2Sl915BvP?&ZweX96`F8c#QVOIpCs`d6+>}$gVUVfxnPCSvC;1*OvG? zWv`*YIfTc)X@eCThkO(*YN8iMUnI42R|0$#B1Z0tmc*kRB0er@(0(U)*d7)UL0~V3 zg1%mLDoyJEF_jyRKX6gDNg4UcLu7essLGZeWw{i|z#*n%5dCgyLaMv{wg(=SN8~Q1 zmdjaO{(7wO{&8`o-R1pu1l@AVX$`*J(2h`t=ZjLUcP1Ve!Os(k$Z?}%)VJbdAYD&a zQ?CQAnjLOM2!oHXpwgox2cfDOsBdmFl0iiS+p0VKB)^EB@cnDMOFw}4V zhASLCU#^S%!X2Q`cG?%PGX6gGXDkD)D5fMe~d;e&IPMy`$OZ|OlA=Z41dWL zSAre_uJ`+%vpFr&BRet8wl7}pjmKADg9AcRX{wkO9t1Uyj7)Lkeb|R>b!4MJOO#gF z_2g5!SZV`~BE=qhAZvQ!K1zCkPzbt+rED{`rp=w6zE4PBjYS!TirZqJvL8H%r(eB^7s|GEJJV+1%WwP2# z%rxkh>lWoBBt#VyHPC|4;wc@?El`MlzW1jBJBY8)c1htDjVZ>g@tCPef=e=b$o5c! ztEgNOo``WUN~OA2G{8s^46^iT`S^9u^+O(CbzNe$ZRFWD*pi`hP1lkcNyR+gtQs}k z{UU0vnQUv<12H)B?tMNRvxWwMvMs_sKDWZD$aE~? zzM^qc-$-R)*^4EG;=)#H<^XUU@xW*11&CW8b`<$(|Wey3la{Hs7=c@FlX*PqU2Cd6lqxjk}G1ZQVMJxk>BG~D8*{)%SQ?T5od!AKr-rlUslrkSr zW@#o?idotc46=jH%Njg;ZKj>foA7>ZtoDLgHa#BjtyNAqO+R+k`ZpE_SZCPrBK633 zA1BliUQc4(^x4ux7q?j#JPinx-ORY$D|uvH6lAw?+&wxOAA4-1(rj;$d>t@J#yslO z-1FF9iE^${_UGHybZZc=b~;)3Sn5dgE>XUdx>{fxafziF2nyD@vUH))JUM>FUG_CASul@D7TfP+D*2MBS&awU=84+vzXf>0G z@g#%oY)N}QbgX{&<|Ov#Jj~mR3Bk#p0LG9Jh?wEE4Y*oJd)9JEdByx(_ z(lY_%u{qjuWLkwJf@-+#oDR;qG(=PkT@!vdFsn*crH)^RYP3p6o;e$|91!t%qAzTf z<^?5Phr6#zsdqDV0%}MXZuZ;GcWD1xiTI0=|6US7{fp!Q<7=eb4F2Cs1j`?ZXi!@F zbA-Tis~W!<&P&dr)?!R3p*JpH&zFh*^d3khwl4Ixk?3HQ8uGr$iKkdwE+*-mY2usf zb*IR@jS<^XMy$}1^^eK!EEE31Vc{D^rf&lCi1M`)!g#pl_*j7YvE3n}e77^cDKqKm zJXH(5bRNO5bqzUt5-A{~JCkY+;QaDe;KGMu6a+seF-zI&4#iF_LzrJB29oOOLi0?A z5m0KPm#RaPCHc+k;vC09Yleu@=nP7cjf4|1>PnXkm}f|JyQaDh2^ zw>2NK_UVFHm&|0X(Lul2#`OswfwZTu(Vxm9?JDVgDwRj7nd8}XX`A!bicf>})@&Vb z{LWu~6MUxf;GmkxGiP#kUSY}^(*^G7(d0KK%mjIuQOT}+xZDBRa&vz3b7sSa=VqVJ z{ek+#kpcYC%kS}%dER_Jvw{Z$e_y>4`!`{G{18HYTlt3ku6x&Bk#?sXeVb;Kv3lY^U11L>K?5?v;DMTeRhgWLTKx z7J)GunCJ6B^UL3MrT_nrUjOQ@e=oS4p=CQ?eEl2G`0L!)f45)6`WIXj{|1+Hk^c*q zM<8@t1E>Q_(a}UKFqE$fB zLkS9a9OH)h3>ABlhsEMF56k`}MjlANmMKxf>zL}TINGz;QXS&*B>$Qr0!;MUNMxfW zGDanN>(U}7boj<8ugy3vvf*nS!d)mK&y-F6AbtAU5&y zE%OFh^Npd+^Ce8?`2$$?Wjrrv-S^_bY?X1o_K4V!& z2c_suGv_xki-tBg;#EAj>ul^(8JzSt94V$=RRk!L2@w#E5i%2GZUAg`)>AblZD_>X z4yCA2!r9;uLXRh?<$YUODt}cq)SD+;T(VjnELg*O zOXl@P)HXG@N(4f^bY1w(BN(BeH9tTExP-N_>FCLKn^TiUt`+9|4jaF!P!c@t1UAS# zw-`bKZ-u?Cum6#!CCI5wPbq{-<%(H8$R>5E=TRTard~UYW+cVB7#Q?nLLL_#IMceM zX8ED@9ZQaB7m~c<1vP??*>$QFX~7c}Chyzs7S7mR9^9!S7m9jh?H}|_V+L#d`aMzq zdN;)5{qg(e3c_f?yA?IJerXUE)yy$|=Z#bPNH%s~3wN*(t$NnpT6NM`i#>hNHkNcu z&+TEOa*0k$0rOSx9Suj>1O2mc-&Nk!)WC9zVkCI2SNWFGggE`97u;WW;0nV2Hb6G5 zNHhhSf$xZp$LTC!i|x0WEd9H0$(kn*Q3g6x>#=4T!kVrSE8n)29#^A{P}!uV?Jtrnjwxch-@h7>#Qy1w=e`C_eI- zU%i{ELW6F3lx{h2DMWnh)0BK%dRRYd*XNy;B_IqEOenR9W_zj7NrsWnPF%lIZz_?5 z-&CN6AFy(msQ&4x6nvgqg)3>9D>G8-nIt1p&M>l~urB*XIBe0UL8KL1$0gKUf4(D) z*u%sfc7^^}L${FUk5dd)@t8)qx!~fHTPHXcO|6TsSs;M1u}ooE=DI$6R;<0Uh#0_n z8N*#=xp|gX8Q|WPK;eGVZDWX1{cBZ{=1XDTsm+D>hD*x$rdW>7c1xvz^>!OyHA&~0 z5cj=$C47)p@Ur4MgEC=D*0n{x+t!^0BN9Np!-$~8MpMSGB>R?JfhH_SN|0PARP}ke zDTX-j6bKpbQ0gf~`&QQ8rsu|vKKW9(O7U^voD^!kaJsj>^>2>kNMdwrZltt`Y6aOo z`#uJNz*n}^p#ZH`IZ6>>ny2(k#JVfcP``7B)+bA5S0jzS$d>h{WQ{gXCN&Z_7XiNA zVFiM`@(O6z{^CUko{-yR$KwMJJMVtr1rNd<@KJmDIeMEl*Qw^o7410Z9`TT;Sphg5 z^y*$?f@TizE7t^Wabo}zz|!Ozc@e;bzpwafV2Jg@1@h0k8F>|;92gw#K%5UdxY7v` ztkw;x>UDWDkP~Xf&tJu>o^yDJ-1fulqU>V;#4x$S)9zCRUFxX2E>54R=klG1cCJiZ zZZw{;SB5-}X}K2=MHQQo44=rssiW}XwA;i*EeoI-Pib>71Ux>MxqC2y{KrAnuxv7V zww2y^$W(+9Wkr__tveBH9q$k`zQ4~(BEs^Y+kr4vZeYIu6uxT#v-`E@{{av*ga`{~ zP`MM{PUeQ7O&iU@Jr(}*NzkKXoW%pEAiDDC?!m5OPu}48>#K8C4_!K!RJ_mVyB$|i z0>{Xr2_wSnz#Dyh`2q#$#q?W@ct)W@h#nuJa|8N>a)H zr|x}9o+Q1Tl2rTjTDwvQ8c1em$J5juPk#PI#^JDng zSFT1abCVXLE@`>(Ld$?WeC3Th6;7BjjN%C_uQZAw1k{rk9@G=(1&Tc0EaOFedqEXk zBwq!|8}d&4w~aiJhm)@oM(GaQ^r8FM_!Y@e>5C}|jowK+)`?3qCA?a_dK;L4-{duV8|UgKw{{C04 z@;)G*E38FeoL^y4O&P_*=QXb0bsld7SJqotfK=9dvYjw;#MDu z;o8jczt0{$D1A*hLpHt`QU19M#Q<^JfRjT6|A|&g8|jNpZpN zHb*;n(iv^D!X}fGr$u-!!7~CQEL7VE`4ab=9j>HAp>Lkb)*hGk!jJVWdtSt;8{RWJ zya(j!`NK`(eF_z2H?G8goM7BrQFL(LdIv>{h3arP#MGhuL=$RO#1&J-%P|_|X}~I* zOu^LVd(FaJPX$Xklx9#q_X#OzY*W>insAfl%N0HeD8y)dXbqSUm?kUfE=;;Uliq3` zd%kVI1r|R+B$b&W`v!ldZ}1B{`h-yD&}Ur#2$Cqh)i{_{i&Zm&%h8H ze74JoqF{izlx7XL3NkQ@p}d)!8e$q3vq_Qp@sj^xs%#*tq8Vr2sv+r6ue4Npc!MY4 z(vdU%mVxmhfS=byp*-c>iCB*Eq?p(WXs>&3?NdTtRU105X8HI{X7j^AdOX1IT-Dh( zA-N=`W1*o%Pj$Lz=nFB8{k~}4j77?7SyUM}intEd7j1Q)>fr;d7b~jxZ&78VLsOaD z)uO(@*W1VPbhqb;>hTRB-)c#@78_{|z{J9vFeZLvdS->d)6Sw_5@kK#9Bpl$$&U#) zUlBv+bA|_$0PhHpLLVX!?o!_uDBna|#**A|0%n?tj!*@}=*?2q}e%|SY~xZY%F1}ml9TQB518H0B+YV5k9HHL|ixRT#Z^_!5(8eV#7Ro7SW7W`y zg6^=^pjQcu>O!(WNBYyP&}E^46tc@{#&oFHte;t@zra>$z)&U&x^W?d#$;8p;~`sk zHG4p9rsNM{vvF0-keV4Zu^zxOz9c*)XH9%ha{VSHR}M}Zx(~r(D+v!8#3khG$I{RT zN1w|!B{N*^n9^6Oe`E@;kC zYZI`14fWGKRYH~ujrtYQ<%@5h;OiFN_W{l`gh;&H3u29~SI2h0uA!-CiOaV1>1{?EV{5j#=YxanZ?eC`$xMgH5NPG-8hcQ=YgeQ)G!s*@v znd)u)fjbrI$TP(JbBg;@$fR-odCY)zs;gckKr_ipkG1w6I9vPG_U zhmP|0ESXP;LOa^Km`t**$=8y_6s9}F?x6;S=&HB-VEZT?&$Uh&I?PjG5fwCk=-9yKo$5%R(o z>CY!&BRyU=Ua(YxF)Y8Sr5WW?DUDhizdMGY1uavj;Lc__HZk7#QD=|<)V9u=opsB? z4at}m*DiZc!gl)=+aRivwEt?g7hNtPA$;l&%iFPWxOHHc?vgQ>%_;{*} zf#mpF+L)f#rI;yg+V{R8#$t5k>)MX(HZt=KKJ^xI$=9;+xcsoF&g=f_um2As;=k!C z`p19ze;1~m97xV`ePdcZ84wWFzj&+c9L&E{d>xccoSe*UOdY?I4FBCVGs7=)n@df3 z+chS%X_r9T8to(==7tI<<+QTEJYpeS^pXbULkgQC_LaDMjbZ+|uI(#j5MWfOAc7^b zGjQ->pVyCC{fp%1@VpLXw8QCd74np?Ebk*FGVtMrjOB^5EcwI{g2`1XJAt!h@mi}U z8^24{dj9oN;h85Z&?1iS4IXVk1eMXt_ObZIIZlW573J~l82Aa zlKqNw^DEf}7Ll}FHdM-^IZ$J;-ZH)&YrVxpeswQ%d9biGQ#ty6*n~{FJVvjV5cUa% zi)3;HG{h#3*M7j~5nPR{FbL?MkMcyfm#167OG=P7dMF5nJ!W)LAfZ%RXWxV8`z{Er zjdfH2NU9E$ziD|6=R2-mrJ$;w6fGV#)YHULoPS=#gBh#{umO=SV!H#}m|u%XiZke7 zGO}Pp0{mc2vh`nLeOM_hgPe@S;Sl-)V{qJan4`h)+$g@Wjk}dtq6QtPD7>mbZ4$pV z@^Nu(i9;UTK|kqcG^NmQau{s>@9aAl|5I2?{)PYcV4C%PAC89FFwEbkR^h6fpo#*m zGsjR%O>3SRj#bXp)=oMy5pNK|0i4kOPAN8N2kAQLC%Z5wGA7uLlSlT*8j%@TdLIZW zl#W}4$q;PPF@gmu2@ggfKEGtVqhdns}5pzwAqMcWEqjo+`B97d);1p zWgpbR$!sl3%SnJ_YbGQ=GI=(XWN`Wq;<}0@&dnopDaZ0gZwN1&BX@`wk%tw~tznkCi}&A1}aC|3i?0%iqJ(QT25Gfz>)Pc`YA z!J_`l)1Vsg{hF+E$E!(IDkl>LSZ4FuVBu2yMT*#K-iqoqb-Ik;Zeb9?RNRxLoJnu3 zhrLHRDXx#8`Y`vUqpT4Bgvki9YCEb>Y9aUg9BEM?!!d?LP~3{}TB5g>AU!h4Q5XWY zw92E?Tgm!FZTY-=>fhu)OafK!3KHA2>QX4P3-qQXU#@xdH4i$|w|)P8Usc(?h&uP3 zt+K}f1cd%?t&RU;YX0Xu6>aVB6f!iQ?@{Cf07Lj!SRMny8JgT2n5L~}hOQoZstec* zK#aMn{#!X8l6yYmB0GcO7>+SAV{;PN?jjx0$oNX_8F~1{6kB((GG$#mUr-9)pEu%& zKz+wUh)Dgm@v7wSM^fa!-&zW6B0&JO(%4zCf20hmKOqN~21;a*l-?M6ytmLpf&eiU zkL-a&s>g7=;mM&G84jjX?xze$D8XD99H`Vr3lmBA@JW~05f8{L zGPLr5Sf6mX2Lmls9FJBVUGW^{e^pfQ}Q&>=|n!uO6w zK>>N9N&q_2?@Wdz?Sas7U)`8(@j*p|sl%Gdv&Dhw6GTX>xE%>wh-1I_LwS-lGC@CF zHm#;8T?!9{m5g34hD1jwbE>kxv`dHS^cGb8ABng)dB3NvX)y7Y^Lem|Ceuh?PfqiT zpF%Xv7seSJI=L9zIc0%Oj3@T->43)@kNMI7R$}>a6u{$lqW1d{+2$~G09V|fUO=Mo zwT82co}j8x{@m7z5lAu}yp1qGF5qgD3pshqvt=d0dE?e@Y{W8mGQjGhNo=U2e|HwQ zw|e?P)R)B<`R(LE?PjNXRNFzS!q7q|uv#csCtY^VB$6g6?BXFiS-8L*fQiyUro0Npwdoe)MmgrmLLfs@Yrc%Sk;; zoo{5wqjxBh&t(?v#PkqYX@yqkcM7WWs=b4ZeXRrwzbW|RZ{y;rDS|efKQJ zpu7&PsgV>n-yJe1yQqi_YpIVbyt_3{iFDy(_XlMW5JQ9{pAClEsE3_Te{Au;O1a zg4a2&mCvwLlL?Q}ppo>DeQy^&bQe{4OgoZe=H7Jf2N!ysjc9sb2!0qKTa}ZP#`sE= z9Z=WRD%Xjx={;*>4v(YzYm>|GMQ_9P7AE96p5wNC`nG?*DgvKktNxZ2?H9J>J#YCt zgA)teYS%sBw_NvFPa%OD5hj678;t)p?Q+86|9ff`{MTZrI656NKWo^JTZQ{RRkZpM1kjqbn8yG&vH^egqPj!TB;58gp9&>9n?54z{c)v7w zLboi$amka*z%ZLVjWYR_zZ#_1^j67Z~w$6(jB;C`;+0`x-|$xGH(P zb>p+4h{~tdA;)S_(N)U8Nty zV8W*Rs@2QCt)29atw-9ovblz+1@0aq(@F4W;Uic z&)y*NCsZPXqO?U2nm#PrqhI`#ys2B5?WwDW8w+Q>q8&fT<%8wN(^_|`_vgJYQ!>9r zvrJ7%dzPX0BeN57H1Ou!MX(|L!tf^_hqn*`XjZir{9*%rCx26crxBs<=MLbP^$djMkVY z-3E12vRQO%O46Kdv{JKDvMw5YDpJg6)yIp@N3V<{wye(5wz*`Ue{k<-bsL{acBXrv zV!^*j?m31N&v=Tfu*o*RzrYMxZ!M%ZsLV4>>WMmd49dNJVn5RC&(l6z42U;X`Wz-1 zu3oj{F#Q#m8>7tTe_fbr+0JUfm2TMT*wjd~_dicpZqhs^f>e=iH)(g4yWc#JOV1LJ zrX8Y{duQ1PS=6cV_;Ugu88c(e*|o5m17I!T#4Lf%r{;|d5D}HQ5mAV%(ZR?>3g06$ zbczPa^oo)D+q5`?nDq0Fu8-S|fF4Sk|r!ItsPDk0`l2mVASS&srMf_J@TVmrADfN6mv8~HhXR*|A%d}ZlUBD;I-+l9L5BAyx^ZlyN z%apjQcWS_TJByv$G`7JrX+2(n|J+QHb}jOVGLlHb*TeW(T85%vwytaW)NPaB)#+Mf zo{(<2b*=H!$D`CKkKcQ4!3#eI>3ZikV}LwWIm8w zLEjcUW|{k0XL3zHLOvwvo>5prJ^tQ#8_~=j$t;&B2RRre=q^lzmPEwKD3TRJMB-*9 z_Guh^t%7O_DihiC7Dm7xfm7bw!|3WPs&#ckK{`+&f?SYZDvv4@G>++jIc5N1k#`_y zfE;V_m{Vf^hf)*~z;iqQP!a$Aj%C9;F5R4q{;(h~z&MC(gmV8HISCm6{WDV%(xX%g z)mi)|u z%adqJN1SJlm|YDdm8d9TEE1i`Bd`eA&o<#FvuFP@i-GV*V7OX0U@1(bF+_H5_b!B9 zz9aX_+3f62bD0zE2zXuB!HPC zk9P3-v9c+HZ5XB*K)uFg&Xmy1hGNnj7LzHv%*H?Vt9J+X>$~=CFWr%5Il#qfKqAu=tC)VqjzU%kdbDg zcUO_#+W>|X3lyP5aPIYI#{df|04_*P!sDJzoCnyt^e55_-V1eYMBWSee7AF#N5i~_ z+`m*Hj_QJLc19*24rZ9EQ?eqnD*k9&>W*0&=q-NcYexls6j^HfbS%^z!z&A{G^>nf zsnahi-9P)oWussoDWmj7px{Xa{#pb4IX%WMGJQ!%Ns!{6Pl8)}4q`u4-b3*ki_bM# z1DKEJuK^AaIhFXy8TyOKI%E!d2P})|L*$&;yrq!5+mUUyClOu8atBN}6GVbVu<@!> z^YFMg(3KNjB@P60Id=_V}GHELl?0Sf?sN?kqn)7nCsK^2Kd;W zJW-HV+9GEdYexfDB!ZC+!iV>FmqWz#_qs|6ESQj1N^qw}My6pE|3luVmUL1EJ+X6X zapV22elh!@YH`Kug=z|QbtSfaaS+01Vu+#waY0Ak1gKG$u_Nfxg6DXq+HE9lSngSP zTw6d#s_cYnzBBcYhZ|;b=awV(XO|8!nSGtfzppT@1~@31rU4ZHW-S!)O7|t_P;36Q z5)A~5nM)D-PQCu71JN^~P3UK%le_Vhe%QqfVN%n}2njBrKm2~xayVD+gg$=toI4D5i^_-eUw-%jD z_y#u)Kr_{>i`2j-*Kn zYbJ#a(Q?lG=BiyJYqPjxaqGmassu`deR(10+}MWN<{zDQ8!J5+x1-UtuwuimPDz17 z83^1~3s`pD*G$M(%Rk)Qd6oLUVLjislbglyo8!ryO1P%XdSBgJn<&q1dWg zQY~IoI%S|OY134bfrHITtjp2bq%-MWjDJvMcmuaJgz8rla@>vjD35qi2T)V6F1l08 z!IChd6in3dnv|Qo)foJ2Cj!{xs$3o=-eK6PW;#VYPiU&H1DKUj0(t7z%G&1GZQMk%R@Xb## z#sA?-)`SQSbIp(PBJ?m|rEZd;#kGh2yETG^bt%;xeu|o3f+L z_9CZUv)op)q?w%=92CdqL2k^ar?xgb+t17LL&i;Pjo)3ywn}LI7rY8tQ7?dL<~Efm z^vVjg&8r@g>>Cot2-;8-wlGmi>;0NSxN9=c>V?SJN_1(ck0X=4C1L%J1K7faQI;D> zP;!x`Zg7y%4509T+`tn9k{?gnT`FSP1Fzd`z_}{h8ZkE{C8il z+I)}Mq4}t)Q=@@;VcG9o&X@W9%yvx|cZuKa~8!met(D@9^+=+0(B1`pXC@ zz>CYs#aG^GGHi75Kq69f209N4y+?r-^RB4}6J z6HtXUZ%ezo@BY@>(9?!pvt`RQA{FGV*E%X$ko5%^u8{=E$@E3hE3yCQ3;uNC^gyb8 zmU=iF*U)j65fNv3@1^wI4iyQ($5$#uI`%uSDi);NpWQFg zNzRwg+t2mo>nElA^XUzo$Qfp2v70*;&Ts>Xi*=j)z9^XK@;*1UKgew`*wG3|f7sE@ zja%Y&>jArmuAb=?$>pw|Ap!zi@8^f_N;1*X%w4S16hR`tIr8K7#KIYc!aq>Iv*-lF zp`-0jn*4F8Z3pKbG&9uUQ-lb_9;eGP;$ zRm>^WFA8Zey+cNkQBeb*G5%vb>VK~+{8y&`|H)+`AD3Vo^ERYB{h^_##Y-1=OHe9I{%>-7>-oD`xy zNpGU_p1I~gou?vA1x<@yc#Q!kf#f&0`PBE2CXcOVpjw7B5c&^f+R} zRHW;SW%;O4_vup2N)s{!^R<3a1geZr4hV+FmvYgc7hOL=z8R1dk&QN&4#NjYNMv>z zoiOwL;%x7)M+O}k%|U$gqcKsKIlfPJO~~gGSk$E4v6aZ;#~57L44u@RPprtNGL*E? z5&}|-ao8iKaZj0QX64LgVL8y2F6{A|Stj(OlYZ^_$#z2NIokn_axX+!fDIfDcL^Hy zCr3UQhUu%}~oVHVK#v=>eO{@O8w+{3*-4RgqS4wGieEMA-Nm(CTY=^eirOnvqU8dltfi2UO&gUIFqdT202ie= zSc!)Sb(~)*@T>!J77s!8B4L5;Nm5+l2s2eGnsPa%5Sm4|kgjevR5<0HwZHtD2t3HIot zN<(Xc8t0$jWVFYnIt|9#c}rgHrsCP}b*g%kMOJPCC; z`-#_0-A&mW^v@!jF`>W{jG3VaAmxQuPPk*QJhdazNfjWLLgLia{sH`+&&WP?P~p{g zPe*F6snV5Ce>3NaZ!6Z($OJa;*|ub7yz+Be5ukDA5(E|ZO2ZLu(8zG{CFk+vnIHa0 zuANooBudkmLQPYd`Xu0UV{!%Ndn?c#T>Pwh_;9&B-WIw|=6nBLZk-4lMRVMqaT7@wmRnCx!mAP8=;e4I&gckmlO9Cc^R?!Z;;N&W24FnTg0sbicWSk2{A073c8_?`tCUlx?i5QVEVUBg zz7|43$LdIy_(FQN?Ud`y<4NYMkwlxXO+q2Y=Z`I}`4NC42GtnP)@z8b8p$`C4Tg-T z$$~S%lYxo?pp~s1N=63~V!m2WDhk0jqcrW#s;W%`X-!hmIA>IM=iA2Wi1c87!{Q-+ zQN4pf2VFcQP6@UK#m%-h9n2pj(zSbR7sb$anCkG5FVc&FpSLHvK;Sd3j0Ek_XJy+% zMU6-;GP36>HX{}|aF%J{DgN#TgjMU?hwnDNzWQsi0GPD)Ret#wk1RXk3a4<3%f*l77d;P@8e5sLMcF1p8FXgT&%OF8CAx*XEQ z2cOUeR5xDr+-#cx&5j-MYLq5ivjDfkyJ5!JEZ1;&rVkoVn9I361Ot)&GPlqiD!r)P z4+EjEj)Jej&5WxsIy$ew3gk0M|Af45r#R+j-$dcfBA+pQfsBQJsVMr%p564T!Mh=* zdFk@FyK%c)bUCJX9v?T*6hz0*{KEgqV6XQ;S7eP9Lf+L7E(;kHuiwMyhCoKENg1QU zTo!x+D2R{E>=&c;`Z%PEVLVt;6Y!@!{#P4lsL^u#@{=o<*Grps%1v?m`kZz2kZ^D2 zv|HOgiE&vq%pKk~-|+LftW2(`T<~A{UiOkFs&X!*Py0^9rVq?pEovP2^q-Xe}k5*IcgWj6Q_E%xWtFCyw ze}h$H6bi&rZcr|F2msc_^I5^+kHSxmydZyF!BJ|TYXT|W1iWil`gcNst%mOLM-(|3 z(%ozTN;WAQ^ykZ)Hq#EHdq)w$l(vs+{2S? z@HvQxoW0jG(Vo!3%S*s{=&UeUEvqc^M_GY|GJvKOAdIZLM2iM&E-Ou2A`qn_34yGs z*wFekO0p3D=NeCwVdZj@bR3;Tdj5rt)G3gT@^7c7@$HC1Mb`IcYu!v|`6r$Z&~)rz zBSnOTZ;_z9Q4s$a?V}pz#E%Zvt@6v9g>0uz!FTI7thYnPmxH3#vHS*=X=8r(3Eysq zL`9?+PNy#CDJ;bIbS+FaU@4-Tkc0)QKDfwM_v>sA$nIdcB3yAt=^0<=d`|zMgS7jk zeeWM{D(!1>yKHZ7uohQyDF6jYt(*G=o#yDi$vO@rOki3CW|}s1v?>=h2^%0-U+E-$ z3pWn4JaF1{j5)wVnXK)K%=>qdL~pf8odY;E_u)HsSZl4-{JJV|&j-QwBRZR5-IDfc zE&6_rqoXPCp38vn_hsL&+MCN+pVM6ecWh9}Ed2p_-#-27{bAf59}%@0U^mOg7aI8@ zfmP{h+EG2mwdv>Rr#S8iLfaiHgq^RC;B1EECcQRs95X^>+4;RyhK|)tbWqmCh7|4~ zyyFRHGSNxh;5(c&r`U?F)!l%h%+{PtXW~Ui*C3%YIx70hhgQ+aE!}QtEgTQvJzOt$ zxX$+dUAL3?(b?V65e2#@0}^hjr3xC`j~5{?77U!Q;5}m_R#t9;^mj87jOX^=5s`)t zQeK>JIsTN;EqGDNeN~FVlxjpYERPde&B8D z*Cy5HJ4z(Na{?zF+I6aY(Q>Jrgt<;8_uo0I(~^51V>3@~+^FMhH^)15)Ljwl_TKzAmwSNxw z`8U)W!nli>Y@A2EdZENd5!RCusiXi9sd6+>_#D+zqbp1ken4I_$fchlR4fR%7903JP6@!lhxh;AHECltwXhhIbQG$EM zNts_lGb1cvWY2-ZBdUtX6=h3W6IAGgO$lIE{xChgmkq0>zz`dpPSx&=?W&%mTRKz7oQNE zv`B?3^+Wg2TlZTQ@{Evz*2>I_gQJ@J-DX2yGs9d+G7h^a4pKd&HbB%$EOJE{F+o*I z%dXq!fCtC_5^kLH2b(2ounO|#=@|i;Woqy`=^>h-h%ztGLA!&PRLX(LB{w6Zcg}q1 zW+-5;lvy|=F_Ls8HpbCnBIQT%4CU=MB)0@a80txJnV%V{-u1Vw~IuVjC+Mx44iGg=o# z!qKsY+U)T!zDXm*+gT4dcOP$ocoqg)<|5GH#cY`@I%eyH*#H9XrE94|b(=!lD2fSi z1*&qL)YQ@}?fpRNai+CfJ{4pz1>M2>iBY29q5AowgNB~zVoi2h6_4=evb{GLtrK#C zwe1#~Vfbc34XLu1cr0&2__YnHP;osSeNWfHpDcGpbYs;ODp-#{_l4^$+LB|RvJ3M| zA?E5s%XcFKq16bAD2N$_T4Y8Z#G`5p%dO$>t$OLCoK6iIEmlL^>GTuxwA zU5NDSi?lV&?q^#sBl%5^e1gOLcOn#cBZhKDD6=y-e60dot011!uHuLUNz!t17Pcq1 zR6MOvab;=15zU}$JZa}`j-@s5y6g0+SnXM+(*Qi80#z;ligC=u)1|h*yC+ow)P{tF&WxDtFxk-U3*`y_CE++d(M*$uBW$$W3nbI z2YcxbK3j#ZASWs2VtEi;7LGU5iHEb!ac8TDeM3gU`AH8ZpXwaxTkJ-bmy*}?{pBUo ze1Vsi)NLD=Z7cP%ac_VBd70!lBucT(2l1>4i*zCdt3}LA^=2FHpP}x4l6e&=p*E7# zo8ex6S*eG|ouaY7&q!E#u8A0%WHaXJMJ9J4>T8jTnH1mlRQ|;lNLY+Px@^Y$?n{RE zx0@I5nx76edRlC{`RVfo@}hH%Kw$OF%SN*4QaH`3{~pz3JA_~|eS#P%5rt*gQ3aZa;R z8NbXc_A3&DsYM$FG^nq|FP8&p4vV4;Y;kIEDJXJ05sP-F6RFKS?Pbs9OMZk5#=c3A zY0Ziy^ve!2ktt2E+5B3gLH{03hPfm*-m+IomyWT zD(f%9N!x|4{4|%nF%w6zQFHe@t8`k7A!8~1?%%0gKP+D(1oWr11Sd^Vn1G#HgMNgG zlr`q4PGm1Ge}t*XKkjLZTK%9}*=Dui=!`@cUy8tisHsnyQEgbS`7m`a(y5U;SfxS} zMmm{Sb!PEu+kU1Y+uT%!nLOcGyH zvqv^^e)k5y4jtYU5u0o+tb89)R`mKq&E8qBzNf9i1SR5haCNX%?fe>T-s!Fc*O*@e zuOk2!yn?fGvEg|(qc$@XH?uIL+ISqOaISzY6q6IbsKp54Hx}C&Whsg;gJgS&1Bo z$fsTCc?F4k;H+552nig_OgK^~N4mm$<(&BQ8S{!$_Y6o~sns~DL+k`G;4(Z$lA;iG zJ)}7a7&B{G#G*tif>rkLi!Yu!FWgmh9haj>mYpqN^w^^J`n%dVZ^TO7qc*ok{OxMG z)d{kT?utsO!b>}uNVJas5EuKalv>oA255w~jKS&0a$bpoCi z17#M96=zuB7$ye`N5=RjL8@n<@h}_fG6dUzp`1aChhn-*!{JHH890w>x5W8$wdmjM zJoE12Yuq)c*Y$__hCVc)2bNE1!Y(xMC#+qx5Z!rlj-S3khnO%30ydTNmeMe!+x=;k z`nGj0Jm6|Psy_P@b_(aYqd!WTG@s$ocLgm@W3gSI^h+CZvYky|JlgWge$w-4hG*ku3(tLVZNwjk zrBhvyn}*s@10yW33V7s>ZXIDY`-u%{Sw4=r9RevZh*~Toz|N^=_m$5hHf%zald7qP zZ(1~X&U&p}JgQ)j{tSKuNenFxJle1Tcmslu@b)Ev^C_#dMGM;aMdR_j_0e}m_t*-!Y#rv|mo?ngA z*!i{{^Ya5;otOQ67rlExlI?|J2#ZZ1j-)dU)yN{ob||Azkrh*o@5&%f$WxD3FeptM zAaWX(mEG7U?4;zm+MjjwCsTWh%_Im+49b(OB!e&;o{(}VDm)WqGQ~nLC>|d@ziWfb zaf6l#NKfQiRkYTZNy2oXH9+z5S9c7)BXL5W7~0ByowL?6o>wV?LU7 z6F379h1d=l1i=`QRB5Ks7IFnI$AL*$A>0u_lg1q3;7D!myqs;EWOv?Te-9f@8pxL0D$j?` zPQ%nITfbI#_-}KKsACfI0LD${eyc-@J2-chT6ZZ*RWsT7 zwK>NOOB7xny_TUo|1WE+XPLUv%7{ZG-X1a6lZsMFK_m^eH`kCsO^O*gIhqCyH8a$% zeSE@dp)pg9xMMl85Z0A6N8P>zNAR93JUN8h@Pxt&5XsD%5~I7AAV-eXVsHT$!R zzj`%$_7%CQD#%$~?U4a3Tlo~OhY-CUj16^*@5}~2$kqo=OQE@gB*Y|S^~OFFD?i!e zh**-xfe4wyMo&7l**0NgBC#U+PldzpHBq+s&ufAl!pKadV$rZisWRH%bwIYf^CS4# z>p{p}vlP+N9*-Y?i0$zd%MSlXwvEqMX7ek^w=AMV3!QFya*DFrw-&@FS-3;+%1dbL z78zQ5y!(E<3qBxH?fGW+1;B(ZCGUzys={G%h_QHeHR0Sg;8zh4PO-D>cvj9ByfWo?1u z#$?;&jzlS~nfm1So$gsjdi|cdq~)iw=M4@5SGz8Cj>pyQji6QZ8#-@Zr%zTcr%%_I zpKuad4+kd|x0{8hxm$Se#XIU3N}GgD%B<%_R$E%nu2p2~2u(*H$ug>p5IJ3{K@GWw z)$efsH!R10l_d8+xk(j&+a8ns_LnaM{_`gFA7NORncs#mF^u8uXJxntfRn!l-j=z_ zDR-D|gE?xyL)>sckr)dHS_lu`sska0c^TN|fY5y9yi2po&acjO*gC&8GL!Ho#&;@j z*3#=5EF}Q_s9Fayy7m;7KPy^D|GMwg^#mTl(Idy1Dr5!G-ueoChQD$jwx14cvQ@JZ z=l#~+2G zkxKPU77Eq)H{}$SJMv#uYc_>v2ckj>_p0+Qj+d96`BvA+2c*eq3qw~zQL*`~0plj? zKa*=z%Sn=pqL2>AqTa@vj*q9huVl4FiwC;AZR3arq^`!&2WUO+$uzx9OtOI5RYrR8 z>?Ubw4jf*e!d)7TXLTiEUb`k~|CYVzY1!A9*UmqH)Rmm7;ei>rGD2SE%?D?DrO!XI zl-AkmFa&xKyH5Gl(H-x~F0&gC$KaT!#iJERf8wq>b|UN;^fXLp6! zq1XH*7LOHmyl{0q#Lq5L_&=P_O9y)^BgSC8tR$T$4jgX;)?IxXn?|$QhREO4!tJDCfIP*$@h?T`Ahgm)+%= z7FKH9W5}|BfIls(KIuilmdn>(f&toYSAnW*1G;utE^M*#1=(g9o_ zPy;*8>~i|;liK;zkD9*^ito;j#)+06H0r}S4ywwkqL+?Q;F<}!Ye}tip@4*i9Twj( zHErI!iCmyZ2906L`;u4T_d&6TRf^Cif#~L}foy@(GoSP@emKF0k7h+j(yg~d`T_mQ z;qHsb4d{p7-kkr#-8%+Z)^_=uY1_7K+qP}nwkyp_+m)!aZQHi(tjwIO=bee^?wI!< z6aB6G+c`T<9PJ&k_I=&!cdgWvOxS#~k#f*&az6-H$iAlr(Do){Y_zGd`n3zuE8|=+ z{Ph#|C9fyGCMxQvim~q-Qqft3cDhJ1>Ai>~n+>(E?j|jDC1qNkX<|iILG>ZK3T^go z+s!ug?Nz|r{`Xn(uZU*s+fCW0>nXYOB{Jrz_Q}bzR!sg5e1B)+&)4;q-<);%VM6}! z40TTGAd*OphQ0t&Q6#Q1Pp4PFePQ9#FM@>3`XY0ATnvE) z5=17bKdVVqXV+MV*v{Eapn5EKzAVS?dg#lF69B zNHeqJi^%so6J?<|MdeW8AWD{P+H`c-co$MO0OcH=U~%kMZN4h5ALHB}i#B+}d_N_f zJT?ZoB<6xN*X>$Ydhm(uTvdS=DI$N{q z(W>Qq4UE@m_sh?lq!m9JXK_pHA|B47P60TyG*lK*vl(+epMp$k)6;uz?JI5?I8=5< z9Brn>H>kSr)I13&pz5Qd&MK*F>mS>a@wU-fLgF#j5J{Vr++e?lKl^SH+U2@7g zc@&xUBWXt3hCKT`69MJH3K|tAbI1!wpuN5>$d4h9CF5M5)|WgJBkrE4bO)9bxaDu6 zbcIM@j%>o~uE$4fO>$PMO}$H)x#S-7vMkbfMdm>o`LiY*`yB6xh;Spwg?(W-W;L!9>G-wu%CxxV>W9iZn)fs71 zz@RZcwm~nNG*QDyp~S@^{st!|nt&mWA`l8S4lyPHj)nng6m^8bNFc=>!y(2Y?w@c% zO|yabY zWmnrbNiTjZZSSEsLBm6TT48o`!*eW+=7R|_T{^FVc`u4i5*&WasUJIlP7xxAN_8P@ zivLE^OZHZT=-Z5F&&$o-ZSw}9gZ05l|C^nT-V7}*O|y?OZrnNE1TZnMrGq1^r2|IQ zn1DJmI3&1;ov!;xStXmqYJeSo@aqqqp9epTo4=Ml?+Q%t=CHhWbM8?0@8j@(f;T(j zxAi2372B;idp@Y(mfy(s{1~{jos3?L^%$MMFop!i*u|m6$A3h)5Qycj#YfK;NJLE- zKj6>`!#+}xEt5miTzKH>KmspauHI0=RE#`NLO}uNW-P!1qbsiqb#K2+kFX?!^do~0 zA{IU(`#^Gb2ygKZ>2^xaSFK#1NiqUj9`-jh>Z4pAL!i;<4fcxQ|dvNMZ1i~7CaLH|$lqXDn^z1k$FY^?R`xO20#OW@~yFAxBhjDZu zb2!O|)0D&1h5TF9`bsWI7fm{!m;G+G(AL8RNk`qIrOPv=g|7>-p9eGwm&omE5)6P` z+-ILB=92*Fhrerm;25JhfOA}8v})2 z7YxdT*%*&6Z9rWDgGL9iFPSX7*T~T&^#Sbm@FM7CIQw#3(FZS9E;Qa?Yo|0DCy+hv_f2}VY0i-!yS zR`%%JHjDK5!I)}Q8`Y9CS;pz60A89hnE|Zc((&zo} z1YMnYAKxdd)9m4c_~!kxJNTt}vh1~gHFT9a%?y33+s$?N?xOGghdTYV-Y5V=C!-H% zJI1FYIiPb-7Euq(z|EoKzzzH;&{4o{z$(AXt2%R+Yg$#@73+Q#d6k%RB8IRP+#TZM zy?@qQeVi`B$I5rP%4_Vxv;Xj7^F0KKz-K9F*T;jUA6+IAq@dIiElqZj3GcA>Qddvx zRFlmma$2WQ`t()Rz?M7x^YvebRQ>{NLSGiKRwwt3bmOIAApzY%hs0Jg$d2;Q-JPy7q(p zg(-Io2`#t1B1tv!&6zRqNR-@TLebBMW#T^ft0!hKFO?CNk)6yN;X3 zqqQmvKnYQg%-XDZ4?}^&zRkg!D-_t#wY*$LI&2cRrW7iy#tfMzOR`@8c$&t&RNagU1QmC^< zySxm~ot?T{4y-e33|UQj;d zRW6%sahLx&(ub7;8#6X@&Y~FNjtP2Il;+${VJzWH7UL&w@|NY!m50yWd{%ud2o6Iw zm|<7!3!3P6(E<@}7m@&+D0mSv6Rc<=V>K@k8h?g2$(#rMo7kcN$2a={Pr_7I8rfI# zh{m?2I66J*#EzC3&?{sRE+hw?ZFp8bov}KOXW4b#re;PioXl!N)-z62xB{?n$v)dn zU~S3WXvl;hF9}aFQK5PQCgbOMLtzycr7^O&PwW1QA6G#nbK8dJo}t&&>jI~=C*2fu zPYJKKxA*f?^^dSK`oqh>r}eS*;8Xyi--kN#wZIVaP0onikw|XE=_=T3vno)|7LWoO zY4XtzKpA*rJ!Td3V5n(%O%VjqimC3Pqu)8CB?c%5mASLM8Q2||8bUW;ko>{L(3v`?OSgfgy-a;4p9LP1Xaa%3Pb${=zmgr6=9Z@ijz92^upWnjiNDgQt?ufVN+ z;m8ZFZ>{D}gKD2~|M(4M%nz}lnMfQGEoB`q`&z=ZDdo9$H>0-h;%#5 z+b6)X{R9GMfUDUn2C;|W#oTVG7m&~XIaGfLonI1N99pCrds}>rL6@bv_r^-;h+%*q z)4ULWE^3~<5)84=MA?-49bP~>$Na<8i1DiS<8OEYqsxJInaqXL<%5BtRkC=ZYGg&v~cIRBBfLD$a3Du7N+PB zd)^3!C`Ijhe+rR$)St5;8BcTbhjsbF&hDPuXZu+F3w&I-Zg1}IuXpw3L8{0`{_bD6 z_CPNIi3~4!+hWc&8lj>>lPN7a){gcQnT!j}n*Q^@I1>N=m5zUBwEdr4I$EPC8Ku7C z4dC(r-_YtG7vz6}Rx>RUMvfk7+Qrn{Q1-rv-+>@|K;amh0+dlw%V8_U9?Q$V7+jK7 z3f<=TPPo08Y*DmI*CdHvHu^V;cM7F#L&hSSb0g~2s5)A27~wrrGl_(+^zC#`o~$^2 z&9O2A#Prkx>se}t_%@(;vU5t&%pZEM#!i3QJU}&?ii$~8mlYnQ&@|QgT5sFqVhE*W z1B;_8G=-H|SnSt_6gX@~?H6`jvwPzdmp%}MI5qPuJOjs($p)reA{RqjFI)$n{2Wy4c`Pjk^LNfZc zQxjMa`=r{YcN(E4askFgRp!g6an zE#7KRG)dMI*-D83&c!*O5W-D0wwhTQlG&JFwB<{Cl~`POfizR00&RR5qn`^%u}7q5 z5&nrd-~u_ZVIfhZB8k#VzLb&lH(bak2go(+Ovewa90xXZ_`Kt zlZN_7y36H2D11bG3y~(Ds`J#3Xr%U4EJan%G1J}6e--m{6?&PyZKj`db`YPhDIP@^ zoE|xXmWhi$&A)eVeJu{fce4B{t>f6H}gm;)Qt%%Lx^Yb)MGCsTxI*#al`PSSL{l_;GhNrYZe|YsEXak4V@U7LC>f_&NAM9 zbF>@e+u~5!w6keI++=XRFLep?$7%cc>AO=CqfS2xC(Tx$IKI!{)fB%N<0&OF_9T^`>+A{AaB@7e}^lu+dG0f7g*cGRroV1s#E)a0U{E6p!L8Vos1p zA-QG7K4lmmv*dawYJ->DAkU3?BVF!xHPU(u?{57S6gy8Skg)PX9RZZt+y*B>frp z84PSfv`5j}GU6)O28<5Te?=VXzatK@H?F{cBM#$)taE%{-Iw(vuanG=bnn4`BMzST zIv;M`ZC=xz?a&*S;8P#D8`-Gtym4RGS8D3_;zN<`A3dAeZrc~_)UVapRuYX%0TK#i zP=gE&Gv#msVa7lE$=;2Y1Mk;LdCXk{N-RFPNOi(%y$$=5hMx&gf713r#M@)j?P6f< zfoLql6b(SgKe|NM2#4zfH#^!3=54u#%hy@0#b8`Z(X5QfOqALMYo7&iQX3|FF@aHn zei4X0c)3#!Mu%}MsdF&6zC#b@$WKUvRY+f92(Pq*RWQ;oHbsd)7N%}|qfg;r-@R-+ z#@|y(k)hZx$kaqUolzbvFd{>1kv7}3+9it&K`uAG!2u@HL+jp*0+PQF1af0SP#W@{#^0JPr+-4T%+ofyyO7!i3`lym}LNN?z0lsObt zL>Us!(dfUKwN8RV1v>>rb&ULIG~*<4h_^beew%#C*PM0+^2ZFfA=+4N96>zNfi2tb zy`Q7DANeyWpI83DyS-_nxoo4Xu4)3O0++gJu6?+7;b3zhe6xN11w>;)N5zCywnfXi z?&u2mvm(0q^!j@9rm5uB~4!(@R;8tQROXc03MC z&(;q;Q#af4p1g<-sDCW2>a4SNc9+DmM1uMtfiZI;5wZ}nT;hB}<1mtF@m>kt6-~B#AtorQVPRU0JzHtq+ZeJekdiMzt|i9VqIf#|Gh5-V4w1 zCsy$Tr%Os54Fh*V?fRf$f%~DwXXA-I2){d!=xyojGp+#jG{iz^dZBxz#n-Xw#<8?(6gu zn#3;>g&a`=E8lG~8BL7ZW#WQCn*TjLWEVStWV{u25S?owQm622V(GRrAIN#3iIXXX z^AtiO7+*YTDF57JI4#6Chc+QHA~Z6$XWt8dsuoqeHs4m6`4RHdk=0v!49K1K8t0c` z1_!wH;v|xTKEL~w{lW$V@Kt3;{cj&szZG7+fuur_6FT2_g&W~pdA}_@rpM>?1P@xI z8rN1#tWyQ#LFHeOr3kf)yNgT%Pv^{=MsLk4euANO&jQUPM(0Q(HiLV}hXw7AGn)RW z3qM>jRu*8*+kTiFW5yN^+#?o?uI)iDpv_m=G6Dx%{ooYqdGZWrpp`I`2R)5Qif#Ei z=-39}ruQ$aeq1cPXB18sP0hDP>w_;Q=?qsY*s(UC9bu~bWlcc3I>#Cyqs-pRzF8k? zX$Fmpqdmnz@uT(-=y#~CG4woeQx-ys=!($F9LLCe-0@UWm0ysQPKNNXvgmKcp*AoW zOE_KN)H~ERFq_TP1%i=2)}&C_SQ>MjD$x&EpE~l__P|aBQWg-(o6U&Q6n=3B= z?E!mJzvOH3E+4$iEQ}aZa=7zT6PZczZ|Kmg(tVu0eVUnK@)a}#ik9Bx^T4rqqMgNEQadG(>V33|2rFDEp8aDA~u zQ=^-@&$iVW+Naa(h^lZ~T=I8Qn>a66v_z9R628FIL1%INE!$lHFR~taN*Zo>uKevl z>lane=1Z_(wB|T*qBBl`Gjm5(=H9zi{DcHQ@+~XO$!|X(o7tVV@#aoomFY~Fn7g8;{6NzZDKRp4 z%r!GHv$8UKI~tid(E#E&e}6edzB=#lu3hCdX-P5`{v#MnaCB$rnPd3TH7AMelQU+* zM?*aT;YJ7Iw#M^rqmbh(h+xr_WJlSd*h2D~(3gMp#d7j6X?)j`r&%iR?L+QS4iMnE z9e+%8LvzJTv-7J!=NF0^75KCxB&7+Z^O^w}=$LnH>elKyz*RH-Ms6;A%Q<(7(Pu5r zvum}IM)lya9|uI1H>l2@6kyBwtJJRCV`Y%WqT)=f^Wwu&)BkA zV2-%-BT-wpn6?5Rwu*uuFbhYR5l0&?7S3_#<^I@kJ<8R*4qqmG<<~`Y*S#rEt2XKL zDjL8H?Zv+OoO%?gdnF44BUY^c?zBS?ZMh3uxql>!efALLho=(QP>B(8(r&s54$1BC z#S4Tyb3rbA@Iu{~C~~o^$s{~p3f#uy=GhRRL$f(^0z&kENT{z;nYCgW^T;%9=*U5rfnmxyU@ENW$Qjowq(1Fe zd0^V=L3oRaF6m2uK}Wx(C!tPPP$_QZppEE|i06@<`&o5(D>oEUCrGkSX3?6BR$T8> zXfcT0Q8{h;n-X)LbhexJM@#{+?7jL&EQlq$Q#>%pq{ab9jAZ}7go@}k3YPO#Co!3+ zA*_7Zkm|`hjhe~>2e8H3w{k>08a$2 zk3@j57cL?^0a*Y&ET7SGf(W%vrCBovP&Wc+)adZ!yurU&WvPK_Hf=nsbn`LUSvjGz ziY+Zq-t$1xv>8G$b(3rQ8RT28kg90d< zvM*a%5m2Kr>0#Dw2e~EKjZiIEzI>Au^4EM1*q(L zh0|SM8D48)6?J4r^L$NRd9md(vuU^`JTByzJu$ea8E8|9{3bZQ=Z2eo=*xn5PK62p zD~*PbF&by#c1~mr?4m*KuBoT)-Q9jr6K6&s`AwsRzP`#Zj9 zuG`KYDfgH+av8=EP(}MD_07hcF-3h}hvTb^Fz@@Np%T8D&9jZp=f}QycIuJqM@sNr zBYc_&_{mLtqUAP1{@FczS>1nr2e0|! z^0@bScwc{hFJ!kL_TK(hwzI2d}ZYI3M)?w8}bd!`%#r8FySJ=)gOH2lAm8Va& zSyD2bv7A{lYp0Z?)a$}wB$&e|flRz-81j(?hA+uLC_6vBfz8vHq zW|s|c+NvV-S4+}KG+LM;GwxiOJe7Wh5xkW{RAHeuFU@KSb=1=s%!?DNw8X_*2US!xXu&ee*PV!KH!(^S&YyNpqDtuua)-2?7*>*Kq+ycinv(>o_r9`$opMLO3A!IyZodA zk54S&8BT~36YLX~lE>&oKyeCFqWt7Si^!+^f4JRF%D!hLnr{Qxc=l|RJbW&8;6)mo z<`qJnd$Q(n1|#$eSssv1%Cia`R$Xb{BZRZ~4b(TzUvsyJ!&t3U;msCgy+ zB_|PFJEhBO#0zB(F%Mz>!sT|Na{vQ>@A1`k@u%4>e(NXF(x{>DxK&fHd>p(S@j%zQ zopJ}f?&!J4*(OT-D=5JS$SJl6yOl!d$u0aSnTGKAMtFk1H-UX@OC!d-0edoM^ys~` zQ}69wd8xW1VZ0eP5K;CLR}i33&b6Z_= zjyS+LThxKK!#-HS*AK4&$j<&jm1+SpbTR0ED)fzylKsH|G+@>Nxy)jsk&y^=4QXRL#<`HFNS_qs{Xiz*lzhF56zdSn)hrbv!T_o{?r^e03S3zOM zd0uyB=g-_|tH5J|aoAJ<`{R28ppIuykCAf7{W~i*!EA~fy~b_cqm@4|9cF#zGvkjjPiy{kp;|L#Bo#!KU_hddLBe6IMo zYW;na8`#bmH|E{=!QQi(Uc(=Qrz6_0mi(^p1N-p%H56msGLePL+E+%13vNy)f)5dz zTnAG{`%dOi@rH!w!xKn|TlF`1B8ai=ewQK~xVEuH0zZ(*Z-Ytu>=pJ#5cMJ;uE`Pc z?#$;LUzs!W!=9Ui&4CGg zE`Ec1WjJl|`6;VFe%8Ld=-w`d*Z!slt{nA?Q#p_Ei=#~tUUuW5RDL+dsbIhx<&d{z zK+&*MZ(~4Ey+>Euy^@}oI4hq^BGs(aEJPEYg%~3L!5?RMCf=?{D$pj+l1{E}2FUd+ zz%Wzu)o^rgGtyH0_fRR*bC0g=THALk;SOGgpx7Y#KtvAeWSJUO?{B`DKvNEXwe0d+ z%2gGt5pKemV0U;HXDPU)DDg=WiYr?7sokGgw{me16?#Z2GU1U$Fs^>Ew-n`wqd4LQ z-dr}qb}A*%^+Lu$w3s8OV&VZuUR2&X#JdVEwhIm=pA5v-J@^W*Hq;Y8vLa4>;eODi zrf|H4sL=BL{1}YYP-Bs0wGGAC`8IupZ{*47*eN8SdonWgBuYryNE@MU3;3UwZBC{rLK& z>J0vVvdTnd3-pi|1$7wg+pHz}3MEh@WoL*iKdVRWi<)iKVpd^jT!@v58bsn6Vg<1% zQkW4xpSrtOiWP>4x#kZKl8+_Cdg&B>)m5Q-5AgA{<@0NWolA;pQBRT*Yv!u za7Auy23KH zI1yQouw#zR{V{yaZfkR`U1xo=Fa=)!5xF@!dK0MZ&kAh^5Ze=8U|d`(;8atmS}$bF z`7}P+YOtAUTIMS3v7_NvK!`r2ihOpY+ocxn6pYG(Ce~O0vWAzGF<-*akZpC05yT zM!y%B%m_Qgxmeb-Eo`I`cul+d0iU+1-<*hPI+w^SMfNs>xo$|sip_`u0QJe8xfb3e zzyl>GL@a4Rl0OTwz8lj<;~YzSi(^FGUHB8xEM%lRu*deLvCVOE{|d-X(%}Fd0q3+k zbOGAvmdvHbreI9UrF?+heJHaKh!1leW?0e4UPKDXnMdG=BUv*ehPs|*ni1$p!382E zB-!N!j%yB=eDn4?CK`wUzbN^t)b2IybVon##XA7crqEn_ zmQvKF1ci`Ks&ywqLWmMrgfjni_mk%8CuOm$1W7)M5aqDA$33Y#`8Bmq02J!;u@(P! z6@0V6%wV%6yDsMv2L5A}uvl8A;DnwU=_5S3=4XkFCixP2BQ5Q+n^~c~DfG1p z%u$Wdt$za?tA0(Kc-vx19@ofIVme@I`H|E9mQ_$E*4XNOmvy{f zb}%c3muYWLVf9%4e$MS)?(*Oyt}~+Rbw-D_iN5Z!Gr6fzaj6E7Bdw;%N#(vu`>W82 z(F6TJ{mOqE_`$1HZE{h)X``=0TLT}+-Bf#4MYq-HM7{2;h?HAu>~~2@J~LzRv+J-D ziaq1^oq7jak*0t0B)(Y(_4rs*p~iBjYDtCs8wIZ#$a21E^(X#+Ywh>HappuI@CY;B zH#OY&chvA-Lnkt(|IVEHb`(=X;HD~DM=j8Mt3r|6wgGCN4X)z%j5H7j6tG0OUS@L< zP>1F9uMrIf+2S%02+;GQtb`rb&VMH3S-<=LmuA0h@1l{oE-xaVOD}rE?^#-Sr93*d zHGQB0p2vZAGPNC$Qk+>n(75S>y&Ms_hD_4hC4K}X5bMEl9PC?Z+p z5^HwDh@A;y?nwW)N#%Z$W4vn6T9ekQE|u$ewJlF2#p5}3Btuj9`OIG_bps|l1t z(!xSB#j$@yM%_~#or?J?TbRt#3??pIO!R~mOR|qU8pwNYJW>~h(aD#rQBRxXEURff z4_!;WqG?|M`hk2f%Bq+bvOv#b72@43AOW<%&*F6^P%uxHYF;9JAR4?kHzT;_-)iN=a^1aX~Xno?A`&AwGC({4EH^5QIxV&>fP zJTB9exm@Io@`I9qD-Gtx_E%dQu4+l0#SM$iAdiG9CV z#!Zzu&!kG=VF4k|Zz2=41U7{cHRK;p^Y(xizz{wf@!ul_jit1mLir`UsduY#Yij%Kg_R;gh92bBuU zw@T$`A6@Kr1lO*r`S4e^*SD?MwLOE9S;pA{BHsV|il|gKFuq&pd`b`>pPB^7ei=c= zbS8Mmv`vZ#TiRJI+@1H{S+w^K&L-a{B`r!F=cB$n2KQ0yAN(MLH z=^Ro{0g1{6Ak8#->Umn%=gnDNe>L|`=($bemNx`r7p*#Ls^Y6I-Oa%%PE&W$FFIW} zad|gz?f3pm-<#)LgO~pP-TCcsZ|%ZMV1_@Zy(j0#h1uZ2`u;iE8Nr%IAJE2I@D-{> z>FzieWi_44%yGQS>{xnCUue#-K5|Euy zH7k6)9-d#fmHatzZp}w(ChL4eqih`NUfW2F&y4%fRkt7tDBeBB`Xg-FqKGC_<(U2EqQq%Fxi(D4SxKSB1T;|-#L4$@`! zl!Bxo{T{p^@jAXg{*x2q>I(j=jeTPa-xeR{sY^A}dHW(qI^}Wn&t)0Y2f5O~fH_I~ z=3*xaNtz1HxwPg4ci2y1GAb}@+W%AI-~Rz5{%`c%``-;nWqgCg_J)5068|N<*Zn82 z>bI@WI3ulPfb1CNUMRI&B$*(}{y3z0!Az_8JqOuDQtS8ofk{fA!)8^xs}^|*FgU{* z$w-0Kg~*uQTS0E3xZ?vpny^%zrB>ayNVHf6L8AjEyxD&0d6JVk9N)J?VNOu95qFZs z34Mq32uLBOLvtp2btANUyUS0p4FE@-5h}_K%j&AH;7sS` zBI{fWdG%LPuCjEL^Js&LaefiHY|p|%nW@jT}i*XV6( z6<5VBRkazGxT;ZZ5mLRz!rd9UnO|2CmYqUm)tO)MRF)ZM`Z&HO@~dU1fFJI8Q&ok@ zD22b3_WV-v<#m^4PFhLq%_DbwmytQ@2NBE>uOs&M!;9>t!9V6Vkunf4owKTuWFzb?(u}ulcn94?y&)(S-J%MdJPch)(KHeC!8d}ADx3VtCe&u1l{rD|5B@f z9iTg7ChTHJ-u*Cnwyv`o{!n3+4xl+;YRYhDHfdM-oNx^Oo@8WFZ+xb;+g5V^8O6)( ztlBK7IqRH$e)l+fuFlmM9(4-#YW>rMcLmo*@rNkuwVT|0r?_>WBf2Xq$5pBph*sc6 zq`xd5#KIP4ijN+v&KKm{w}#_Kk&5E{<5u9sEx6m*wZ7uDfy~Jn zg;X=o(>TfSS9~qj)_uAyMrdfGj?89;j$>d=mHMoYI$@&#gCo=FZgffRmpiiOvD~t7 z59%~u)5)+XzDp;lMD#QK!p%lsitu1m*q~HVpbG$nh#o?iP)zte$V_z+MTYrFh9J98 z(zBd!CkI|9EXOfHS^)19rpEcn=JC-$WlkLtKZQLGK?TK>0+y!k3>p&0iI>F)-@AlU zuZ5nP+II99(E-qbs0dVF?GHN$y1YtX>d-Kf-oj;J2>m zS~f$|r-HtMszyDRJE~o)3Cf;HYRCm%8&cq{M&%DT0f^%Xzr04a=p9J~uqe;Dvcr~b zoxz{w&^G%Ix#YRqyK{M}c7%fYmDwD+?w}K~FB;oEvBtjKO_J1gCIPMriqTR!GR8f) zxA!MWXVy0FmhfG+TA3{Tm%4G3raC8XOjuj=-s1qZIAARJ2nB=(B4CIgMH^@s;%y!X zV>|*4XIll=aOv_Mllw6Hkoz=WLNa-fIfBh_8}MyBQfxcwWYuoutv#IK?N!&PV^%cK z;f-}MfR;cN5j=L|15hxe0=?8unGzoq>quScAu2Jup zZ1$)J)M}*iYrw<4QEGT6CnNp!y>g(dT?G$-%O4P0aa4&v=4goBVZF-mxTI2D+|R2x z><`nF(o==TnT7^JAF2$Ar+E;G82L?6q8+n#IKO5Z2|vN)oCSs`BDNQ9m%9F(({$}G zy#Vglape1qV6S?^u6pNh+V0ye#Ufd$_GqR0#{>47W|v*wu^4MzLHNi4IzB0p3}&3j zQ2{%EX1Y!{iFeDEpz32Rxe;)HV3&wkFNA@w*3cgx-vnu%2nU6`mN&pU0X=^uCS3px zcfB|I_y~LEn7t=k2MmhGht+fOXrdX ztj4E8`+aN&HXv&j5DjS<6Hxs}WsOp(rGb?qi42W4Ba8}M{3RWbB^#kyu?W#127#Xh zU_ydip>+AbvkX_PcSD}EQppr^Z)_7s{F)!OU&@Za%Pt*??iR|-NFm*HHjIgz-$jqg zH{`lEVnOH(l@i7g7RtBqTswIUUStbyv&P)4n~}Cd#DkI*FumC{)}_0k@6I+YbTTxN*jLSSu1nh%_)~w<*8IKgSZwqEgQEf@14ER&q+|aG5tLVg2MB0cc?8bluxsjEJ|g(&{f1U zW&2iRi1HDv@LG-H7dNagm1q+OKFpHHH$BpQ%N zQLA7Cv!kvW)~=H|+qG--8rb)^+Z9c?NcX}5tt(oTqt25luP{l!Lak6T9t&)-?CSM? zS}sA8Ntz(xpCx#ZN>S-iN+pIsh$_J5nEi??215t8xN+FHYbZ;_h((R?#UqD>OYo7+ z!}1|v^&oMIOpMYA%adb$DYL%ui{Y_^{d9u-s>A&L-^ldAl5&%VSQmFF2VKWlUeGgk zE1=Q4Rg8!;V?wADmGY%DQ8Z&GUh)&UCui`)M|`k2;UR)sdA=vqQmNx1O0iVst|Wr{;oS67sPx zj7F+QWYaD2Cx=OR<7!qW9Iz>PFmOiARkt1|Wo`d?3s1Zt$HqueUJ$8>&L{z4R2pOD z{F&FhZX!3AGBs4iR3_)m=I&?`o1MQ?g(@KakvB_LF?oKW{YkHS-wL!ruO>0qUHUvP zX<%es6V$^K*q%3Hn$+p1bkRUdNRnpaYL*k^Vd6^ed*pzzrYD3>AK@NyzK&4q!Ah$u z@es*n`1w{nuK<(c*LnUl$tGnGK|UWOxG)crPdEc2UV=%^VeD9!oM*`02&EtvB($>w z1P{^gT4Cg5af-MH#?jd9=~$#tmv@CpF9F;KSlA>; zsVEr^k{?CsN=*4CNSQK3%GR80o=m$C$~bPL{~UWl*<8Q5V((bv(rjsFlaCp`Ramj4=rxb3m%Mt&6hXkHBIo6^cV6zbqxH?64q9EK)3ABbzBlR?+QNr z@V$JDL+UXmC2lZAxgs8Z;efyCLRI zII7Mo>`r$3WiEB$0-=59pUy_@+nh_*^QuktDlJeC`3jF?yZWokt6lK%9`DYJOFGu` ztxVPHa4HLaE!)MkJ!V)aMp*bH;|yoKJ&AO)=$~Xv^_k-R1{sCJ97-kmGS11xc%)vp zR^7X~OOTEn1N-1xzMXJu=cw1CYTm_wYuK=V+Mu**mK-iAZ?;svAM7bZqnDtuaawU6 zE5;>j4Mk`XwbpssVJtX3)QU^dCTqcIodzrUC!c`w>sfdDg!!*No= z=4N)jQ0T3KZPmbD`}MFif_qeAOe6=XXJF_ zJT^>7)*Xt_CCYcy!vbr^;iXHggEmcz&$R4cUjwTWgSC%S0VlIhrIA(tDo9Q-+jPCl z`*^Hex>{e#RPAH$wH+iwxvPGQ>Dt>Le1SLF-6J##F^IYi{8NM=MRUQrSU-Zd%L9|`I0wI2(JfBosD+Rc8W z8Sa<;dZjP$joPC3XLJ^}{l*~w)d%LzSkv<#zSTKD1>4Ry_)kap27j%gxEx(BMA8@j zW?R)q^!s_QUVE;#5B0&fj*D$2Nk^TAsc&T&foVwx!tDU;t>k%E= z$=_fD?T|P(Q>UdWY+6$3QwCkd`P_?_M8qBjE?mg*U;mkWmB%kl}LaUni^AU500TpfEAt!kBb4aR>b-v`G=5RfhLp+ zVFO4^QE_$B?r|tfNn>Q2jtR}FJxTOw6o!p^I)HGW5VX+nt$O9j`viu%cusknC7Zeh z&b)-$=ECz&cPLJ?g%{g73=&^gaxWPyAg;><5yV5K>AcuhNn=w~@@QGy+uPWb4;v9> zbC-_$1>xtc+jQrQ8yOt5fJra5r=zP$-D6x%t?@VG!{+SAVP3!xlT8`fT2P2MHzq`_ z1QfGkO~U5n!s>&!8RURkz+9|y&;{Owz(*B)SgLBl%Wu(IAq_S}B2WXuFTb7LypqMC zuFGCdJztx42%+Fg*nDh`8w|bsPGBEx2VQ$v_8mWn9j@@;ALu~Mn@=50>cQA~1V6!- zU4f?41J|DvZ{T_!m$DaQV!$@w0d<tl+}wncdDe1E!``cTKoM3{ZUx>2?CG&zD}s#POVQp#!^|5X+nN1>zjDkRifW-JN!h7HaP-{un;| z0AEZ@DqPd{;u({x7LZq+3>aJoyu_Vw-3(P(39G(Tql(s@u0NK9Lzttg5?DH{A9KOp z{BUqt&Ry2MPIhs}ujU)Tz)iWxkSc7yR&)RDEVQ~g)6JZ=c{g~S1n%B*aQ%MxVZO6C z9-h?QrLPeY?AiCBOuPZVW?KaL7XaF~vm?iT1HhJwx+SXS|j};id9IRONtig+(Ddu6W`xtsNUp7yN zF5fn2Qailht537fpM&~P)77Tu(>hpr`JcY{UK;*iY<(LL_XT~?N1>}t(?aRK>yNzI z*(_rl6!(Z@9bT9+elJgtm&b?m+%?^wu8xF5@1Ypk83=!s%I&idj>H3{1OromghS>8 z1Ampu>wPf@>_R@*lR`YNx9#fPyqSOgl>Ir(^w*Pf%T4CL3>q!;KHTJ&BN=-$`7~e1 z_;{o++JjEi$32r%Qj(x*dsE7}2?R8Yi;U`hqy7T=ZcqE4Ne}`51(-zeSAq>qUBf!dL;@7`|ZPo^r zQlmG?TiS3X+LUJup;X=^QcT{Nc4C=P2Am|nYaB)VWeO582HV_hL~@S$LTf;<2_ToC>HTH ze8}O^HKPyK^z|*g(L)Y8=RUp5{-(Y5IFANO4~ev(){Mc~PFXChfw3{pMvuP?@zvw% z+cq~f7qKQJVazGx?>;3%Ndz-|zMg0OHSV@}`#lXc#RP}J)Z&xuid#D`pK=X81#eF_<}yvb3ZEMwx*XUjQ%CefMdE=1wa>SlAm z>SkYtOGMtp7QCGt{9s-yFV#&ODAjqn*3?b-M)5OTyeyh=@(<1wiIV5B)FPHc8ZncEPuC?s2*fp!@U6mRb$eoKMyOgqV#=?9WlmK7EN{k{ zBws!;Bq!8)CXp>iUaKy&dWU-Y&)frDna{ z6x~;xP%)MMa$gt*-gYpQcfQxF)?ZFKwVS3lNqx2VUZK^q$awkX(Cu->%0iszksoC# zx9iSnf3=J8dZExQSwa`L^Q*Ie>uvxIBd$OYht&rWiuw-%)Tb!vuW5P3Tj0ixeQ`;6 z_t`+shE}8FWc7>GMiXf#F6R^3SdJr1WBFqKBlhJf@LDIf`+i=11#Q`o#}NjxWjtZe zSkL!F(Lb5Wp!=R`sS~}bb}KDCW58lWeJ1vvb5h>WXV0gO8_i-H?G&ZaE`0XBjH7Ez zztyoyH|;ze_94yT4^vWn)pU}q@i{{_ey$N@EAY6SJds8<331OSmv|p@?X$X$Bt zo&rcK|9zuO8c(^CSE>!+BCSmg*0`6)C5!6?#jGFg8`bj@RU23gYwn-qgwT}RKWrs4 ze4xD_#%wX*L1{#c#S0^WN>*;%7J;G`W zVmVmLr*Tv{#Fp&Wmy2La^P|!*u4`=-PaJdglwCNRDkxn@-^LftZjU}WZ>f9+C;LgH zoE|4_!$-q;!F;{t(AsT6ya!`G&n^^x)NQ;BtaGM@y}oeIqJy_iuS`oiU~<@bjp=5O zO6BKF&AbSWM)nicP`MyWV4breS%V)oGoEMUZl8E4U#xG|i2ru1ghW1G;HSeP1do$X z|K*;$+U!2({SsgBRDRW)axRlzk_*CcE0Fv278O*ED~o&0GbAEz@6ogt9B$)Rke?U# zJm-1TOM&W@;?j@H1obOEEzkH{?g>O+$1-R5`m#FzbCcejcdQrI)!;GlwQk^W}sLk@Z0?qkY80;$#A(4GxB&qCi^~d+TO#yhMeB$}2L+})F zcUG%YjD)Cn?!}IlKH_G+S|d~8(%`rjYErMzCfR&PwLzb~VM#f3tla+*jhrEsFqJTO zWYMDYJZI(a;W`ErEZO+z;T@Zu#HS&|r9wguAn|m*{dpGEo%1u(M)%1l8VT0?$Lg`$ zB=I~|YxUV{MU`zk2!=pyv#N$vXQ|F|w-v<$X?7;?qW(N*8%M}uWYkES5=TP1k`l?t zDS8&Hg%p-hqU92y>XokoG3lPGT6oM?D!u*t3BoSikJKQe7Z&}H>fuTo+{PIY`3;9Y zhbR_CK755uflXb!+;L>roiVW_d?DfP#>ge=Ua?p78&r1YY{5z^#mzC)m-5+iHR!aM zIOA@x4ZgN_NuTkrD3-VISvj43(Na0@iJ0@9Jjodzp_b&nnL| zcx-NdnWyhnwREkQuflok>rlCix10W~QEe}6hjq2%W}ls-%_`i*(m zfTXM2Q;ODTaeSuUWjWnLmKNH|X{wkIk-iubQFG-oEtCk_NT5 zh*sqq6Wm@K60SK>7QJc|_pvS}!n4x5OHwPSZ|t;hj4U0TfP%F()Ys)@Z-qi9tB?7k zF$$(ArfR0AFz2;Zld>(&>!zFT<S~6w z29v-wN#I(bcix#vVcmhKZbnqCI5XoolpAl|+wZV)ChXOQV2kvZ^mjS-_kUa4-P^zl z*buX0n-q8+ulJQtBH8V#F!yv7Q44QzU>=)8QqJ7DY6%q%HczYB+x!2cSkeEOv+)0M z9T>f*r1{T*Q(Y5eAP_BZ+pM{R*)3-WM;9SiD>pk+dlQ(gptU2^@~4)~Ee$B0Z^veJ zVTA0(*X%s!OW6q}zw;XtK4$nK_$D-zi03RYgUs1jo3vtnz(6*{B3@9-Z>4)zB~+_V z^s|nxm6+UPJ@rhBmpl_eswO4NYVM3f(-*xp*#!1i_B==K*348%EpBvp^!at~i*Y@m zN+zmvVhUF!{@wY?yX{2%SLfCid6yglCcKv(xVPg8+JRRk`2dB^$^0EcdV%KUe7KmZ%GqPSgU-AQ2qaNgZ zyUJeZX*H#6fWCn`(aW_qd*Uw;i+yuPn|!Na;5Btwc|BYjS6we>MO7ZJ{ewTK;xH`sawJ3XBXVdzEHfYu+>t>^%wQO zIJr)9cAv?A`(wXG5}C1Jt%`LlQ7+b{G)uZY)&=T;frB;vGF+r3|T`?h3lBWO4nviY;Ic z>`CDPs7X;bs9WI1l{_t8S<=#~sXFElq3XP5MIxYAG-$*5esjPwhtM=y2db{hN>;^lAvZuWIA=}kbjnX3S)K6SRBCqpmx1_< zsijz__<7{Pu8s;JL?n)~^5mB#*yKY3E3lOvBk%EPp9NnGu+n&TRY%m;%ovNh16Nou z`SP0R{kd6Fy&Dg^^po*U89){@6?5X|V9W+g(E>5AI<3=)W^~C|F5{Lk;HD(prH}JU zThY7!b17j49_BvORY*6-?S-}U^h{(bZTr4)^S1hF$t_stZu2;qyYW=}G#@e1Y5AJ7 z{KWWyj<=|7LvnBI@&+RQJyDo zQXiNSakYR{Zc%QfukCLA+)CSGfv2pzRA(Rjz`Oz;P+X7e%s5?@72|V_G*rF^X5&m`cr;lGh&K9<|u(GhZae7nqdNRLq0hfVUj}qC)ZPzL*LDC*s zLKU}PdSHF(RL7^9CZnocKN>>j*JbFG)vaj6j7o~iY#%D%CtZhXOewrb&TUbL=G=I6 zYEC8TwaBX#jalB$Vz(_B1MkrVhfhnY3|uJAli$Q;ZJSeF?{0+s(lpr8LcW*Os`e+!4&G_T=+3fp_t+Reo_stlXWTAiL@_OkEpq1ajsW z&s_t1^KGOBy{E6)?`D#%qAq>gxVT?2 zxLETRn>A1tKFJc$-!p9m(#kW2OPk7;nd9>_)T-HgeG!}#k)=w(J1;34=)10U?hNT3 zsa16Z8JmP_+}ZMna=R}~jQ5%C6?NhV+v_&HGos{#@ZQ7fY$Tse?Q9EUj|PEQf0<0( zk;hHCU?Fdt>L;_Vgwsj>UY#935$hW^lZtH7`>e;ho3B3R=FRo25ezVv*v358d{f~N z4oup9mwKVhMc&r5y9f5Ma3;(0o0v!45E1Rv^pM%vWWtE>c24Rf&D?&C{+_RMjUkW< zv$W=U8<^c-*IrkBj8yq-L38?-@}D^`fD+ebGe+Ns3s$oq8V#(?**H|Mtv~S?{y9*w zm>IL-=R7)^p(3-r@=tx&HnO?Q6%jIeY~nC ztjaqhhjwjV}hik$Vvt^*;m?Q(LIItEVm01>F`r7kDN% z4=8jCf`9^5M-PAS)IWfO3LVNOF0N2#7a@cvXnp8gmp4g(fHVO+lmCbY>>M&+8~MOBKUzY1aZ_&Iba^jzqR#Mj$JhcsjVb{v&$$L>R59KXfd#0^pnn zYz2^c0RFG(zdVE+?GdSHI~8d62MIUuw}1qj7eE{@zWYK;eG-L$PgDJwOy9l%BeZc#_LwYpt7?m7h{8P^qh^Wr7 zh(-eY?id+C^xzUWDh{)#fCw7gv4|dBS4SnQv;;7b1EN+Gs1X%8hlY$GdT`MN6^B_g zKpYM3nCQ`!98~gbRzu7PAbOq&RrJ0D8Zv_D!6z+L9A?q%OK5P%M2|kcp^^pOajnq< zeY6xGRrHlK8Zv_D!KzEBILxA0@@R0!M30toLM6}BrhEJZ(ugH6^dbK-;VGaYBZwXp zX-CCj7Ci?+gF7aARQVm1+};x2TMF#@_s9CE#8ot81kr<%z^FLPqC!e&aK}WC>I|cj z^*+CgcLzj;kBN#Zqah=R9u(0+#bFkmRYik4CVEtv3zaP1B=$QR=%ekxIEtK`7Szy? z5kwCwU!n34O_6g`r4}0AG1EgT+9Ch@RIfNCKJ2n3Are;@wf_u7YOM`svt=;^Eu zb#;Z=Te<+pV@S`11x;c0sKWU*y_DU+QN%bfDglQLe;@u}x!VZB|Dt7v;!fuSpu_A&>JKKf)M7+fLi(RNXWMUiFP1_J{uq!As<*& z0U!I&ccTB10Z>b79VwNTAmI*`{&TQKRw`>iVju+R@M9R-q=b5>_mR@OMkL&!(ti%u z$Vw+#kr;?dn8$0>`vs4bz->slL#6*5u#uHIzaTLXl`xOks54)Wlv)OmaED6&Ibb6wyvF2Y?~F^X2rH`+qP}nwko!hif!9YD#=NGYoGtDZ~eQSy-(YB>tfE< z=9pKr_tBsC9es=`D**(I3;+NC4nWp=rdiMx&U^w00I>Ttg!DD4Az)+eXk_iEqv&R9 z1r<{eI!f=#iT*qo>wi2G=_DpKUk>x%`~tJS@av3z}@0s)uT z;41vh%Pic`mf$F<5 z`8;>*y#tUSOc`LrL2SPismBa5N#6o1S+FqRJ_+G)W^w5H5VF+sDnzfF#0(tlKEEhB zTtG{=!zeVm6x`z&d(W57^wOcZB%DO>7qtRBxg#umXV7<9tZ?H_fZv)3?j=RYXjxk&h@oZ%<6^* z35Q7K`$GG&i_eD1)KvL3kN-oL0X|C;bBZwu7VUYY?c45sfssbj=bGX`Xn38% zJGhhyLi#U4CM`izOhMDO$Z4j?X-AaR`v5|};fsj94#t$GCx$AfVLNOhvOXk&V}4$) z9V)IJF0LH{E?Xd8Q1;S zRE`aU8dV7TJn7*sIrBngwlZV_@sYxkqRrXSs6bKp4|{krJ%x)p#qmeun{dDZ1&Yq2 z{9tr>Ge_FKm?7jfgFtyC15Ev8*=YQt;&lwrH$a^97e{xS+b!4)T&MCR3rFqNH03ky zJ>reV71szELl=aENX;ACyai1AkXch>`pi1r_#8*>f!s+pQ*ZX;`&yEGUm!rjcbYEJ z>z!OXLmdV?_RIy1p-bfB$2NQk4ARUn`iNnMzE|l?kGyt^YG|-&Aq3k& zlidTudrR9d={aCA4r;6`-LyyFlh$X2GFb||9hz5wIB4D3l_9;dKKo`8NMeK1MP1@U z9^W&|yYqsiz}6UMDEZDY%;gR;=~R$-^>{-dIw&N&W)XAd@BJh!gg+=jVN`7cBabpW zJs|Q2@z8`10_HGJfqt8EhbFWOFk-AVPp%D`W}$(Yz_qYG?I|(t1(zdF2o@=c1!L;& zA+XBO=9;pWg2#Ir>XY4|ye^7Faf$(zn|{N%5`=-xCz>7wjjBkPo?C6F0zRd99OR6} z40Akda%0J*b+?nL4ceFISW-D}=du)BPT$!8!NZwTz0g=E2FY?X9n(?)JNVqaHFx4h zy7Q;4_cyuguGp>I7a`_#!=Ck8^#NP;^4&s;8Q+_O8vxRss3GFJFqj%h{k-!*w)uOe zvZtfnZoe{R1q=WH|IeAyv$g$`s4PXPm^nK5PQn{Js+{df z(c-A4=;3;)mV>2&fwjgUNC@kzNv_F~;oHk;%w`chrj<;YAq*2!%JQa-gWq`_cwYNd zg0;-(^{ID+px!0g-SI)BAw1^L=hK*2_L~F8#{7Zhy{LVu*sB5-&HEamdXnCxrtJ$T zG^MXI`BA%C$zJfTp{5pSgvKN0YRUtgdV6!hcE9XCT5)X{(;ec2d!-R(2@Rx?+4+y9F`m%R!0TuzKWmv)sW2ux-68$ount5sqKDAyuX zc`!8`Xe$@Tz3^Je6nw44YdRd$1Xe9)rOfvaM@O)`RBt%uwCDz^@z;K~m9{5u4vU9> zsbt|A^1;-vDsF%U0Qe)3wziJ6w)RF2UwWwLXl7&mXO3JfNm&=rp@VL}XZGEaM94uo zKSPBpm~oUVmJtd`c>thw5tR<%uZ@8`$$kcdntgbc>GWwbytiS|n^h&q-A&9j@hT1aMq z`O!4XI(Th0;=?tmvX&nTZ?T#qC5C@i?H8j0!t@iBx)Iyy)O0CqRW2z3c4z3T1TdBG zA%|Myx@$DOa;d*%&8+L#aT8BI)vkJ((#b?IrR(`4Y^5F6m087UD+jHRPeX^e(%U#t zkMU|^$xaF~b`C5M^61z*oq2W- zJQQ^4oW9C!(K@}CUZu2oJ92PwUMAGP@(=py@sCCZ>xIhM8M2M;R$8PQKtZ4J1CAU| zZ+%-qpZ3})DxuDZBdd?9R)MhSLOO(jH8zU=hU#EFMV(U4>#jvX^mCmK`u5UmL2BxP z;L*QPBFMa2`@D@$(~_wFTLI#t&2NK;L0jaKd2KC>87IIG0-v%e>-QBUnm6OnndEUP zV%G62s>sPKwPV^~G2`JEU}9=v(-iV4C&KdEGQ@m~`RxLdVfd0w#$Qs?eIo{vJq0M5aa=E;rQnuj0Z_}bOXw=S z|G@}G7B**>aA=Zrsj&Dt0A2lQPV)iychU`h>M44Ek!}eZ008elX7WD-{9otuUxMDb zBxMmmhu(AZ#uMav!(?E2wko$aj($&vZt(;t?^Ukn7Dse;-hyXYq;!Jo9E z`%|+;9$19#%U6joN#_G7=1EkSbGdJEZ%q~Sa1@J^H2QOK_(d&Nv>#xBAO2KsK8%7< zCr_O0Uu`{%gV&hHPm6K_Do@(YjWYZ-w5nLBHwaeYTPPNfFt1K8TbT zN@6~QloxTLHm11yCt=0Eh?Hig2(s{3>calRPW*2O{pBhC5U6QZ=1;OfuitdH`0QiE z=2t1qXHIo%`(f9>z%i|Qet#F!7+!Y4YjCbyD@w_VAHTcy(Al))44dI(Fldcu$L9gX zO{hBkiEV%VdJDkX(-1ut9W7pu-9Zo4Jov6vtYDRDG%Gipvasel<|Jx0ACnc7n_i;61jF0$938*zq8Bhk~ z)`}U`(vFlCA*}Su;dIJe+Ov|MxA(gQutef~g#|CDnpWp354-aZfe=?y%W0`G_-<;3 z2*DW4*Dl-9C>t@*Rck!0z~X>&`h9`q9RU}RE(r=$UYCa$1y<_*YDD z7}R&L60r(|2Sy;fox1&%vF%g0uTp%-2<^z?DcKKj1(!wjY!A%<&XP*YO!~vdHFU!T z;z+Ubi|0@{IG0{lK{ias-C>yft5#z7t&3-#4@CvSAFsTx>sF&#WE8G$K?BixhV z94aQhiYPSswcye0{+M!X_mR2Z*h)iJ4IglS&u9XqmD6`n0DvQ$|D)xOrbbpqw13^{ z|I%``ucWe|cYP%l-__<|iV30|xelpDBY{P99hSQ**)$AB2$Cpkpe2tR7M-pV%Ne6~ z4Yt4e8+EP3lSRGLGDohD9zOASycDTfyfuhAo@KoIW=)8vPW>nk&zLh6 z3v>kB(Ae9NVVAc~%5ijZ7%pHEwws$&GEakxez@xX@@O&sX}P|i>L7T->LnG~CH|>I zxz*u`*9CzvL6SczD)@!9$#!CI$@H`flr?SLnmG`ob08)>)KqjsesdW{%9sz zYRJ)~K?8rnQkE7D;IG}ZsM1^`yVn4iyZbpgIeBT^Ic)+64;*;Zl~`A`Y2V2>qxQ{c z(rsfyy?wEKSK>9p;WMEqKabEUtjp;1ABGCgq{(^kZf6s)U#E&f?5W(2l*gLS%qZkA-^fP2k5(pzXfM& zF1d(%X8d>HfnhCONBlB+fC^x7nfkmRlQ0+>q9F0btHU{kJ$4Ycr!O)!*}Otu7rXcK z`SVWAa11UE@9)9yu1KzmsGcwVDW9HC7_V<9PqcVG7ef^cA2B(+pYJU->p!$WyPgk6 zbEdL8o*yH+y*<^gLzHyjuj(4mZ|l7CNxZZ?*UJ2)^YP9xVKCBef0 zLlIm>{aXw;k|`sRc&p*%h~40ZMo+27YRd{+89`C;8_hl{xSX(c=({zv*y(-R?a#<} z)eERzfD7;oM}9@dfqRgG9yIAEZt?rGgGVjQ!AlVR?8rh&;?UB=y;K-K)q_pRR%tRH zo%Sis_9bE`k}1nU?ZAwxIj!#kua7AwFz7cpeS1$zuU<*sq!su1o?X9Jxu}P=U#6`V zh@fP)1;&=MaT)82EWfMx&(w-wG~iGwVn5IQ9IrIkgrLm3-p?vQQitdOs6sC(S^hp2$OZw7DJF@D)qE3NAkO@d*L@^8Sj&~8tya|h)r zXmVe(s`AQbt{EUH!1i;ilGQOcERKWpjhnvCCQp?d$I8s-I;Dz5=if!A8C0?9LSR{| zIT$#I)yyDV$(SM;s^E4!-b->Wh>`;+iwS{d66T8!=20%51&H_=1C#~g>Q3`Zuwz$S z=|SB?t_KCFOwk=kF;i?sBw>ld^VFwcgMmv^8er3{)0AfEQ-ro-rHr`$JH)+zoEfVR ziE#QzCmWX_5KDYJ{Oix8s_IyZi@l*jLNCkZ=1%k7!&dsYSCT0VT{GwxbJiL&5(H!0 zH5$*_&UlZ_Z(CCs;&+GwX5H<1sYw!SX2Fk-zz}i16POQmu^gyzflS4GGLY3()Z|S1 zxlt0KX(=;9D)w|$8fnp$BSLkXMF{asw{_9P-#IyA?vRZhIw%g);wZZS-U_9%MbtE zv26Q+54$ClRT3ErN{VyrwHt<-x-z9LVhG>)c!f`TvNG!G(*kFdKpj4xkjR6xN~6&b zk+^j5FK_N@LN3qS2TvKdlEr~2MCt_A54n+7Xa&|YO3t&B&54jIBr_U0Z?p!9L^lRr z?%PyS7cmMsk5<3`%kpsfJu0T?%S<vdpfo*rh?K zSHv1um9^q2Fo2or&~v;p9bUA=17fQ&d`~en{xaQILWn@$eV3p>&Aq(hy>(Mj>;*{q z_rEL^imCIN&%T6mmIeUe`+t0ugQc0Fk(8c;qmjJ>?LR&ILp9a4qW4%3y|)zL*F(I) zx#G!Ar%auuonuIW97%-R901hwEsMzIC1#>M`~e(7)^%;_+HE`%*+=~o4M(k?@OB}F z)Vh}yZxrGxYsy8Fy*@75bajP{lAv&N*lo@kf4C9MW=`!jsj%wX>y7s-|jNJHZ1na5DRGJXQFyvad7YJx8lr>%ut%?d!4#qk{Hik6@8`-AC6*}fZW=m^9?^^r}Q2 zEHiwEe^|n$4{AC+-_LTd`bbH6J=5aQZSD{dAF5eFn;~x0;>a z>}vXOZwa>EUpr41q7}`HRSvbz0HTYkOn#TI+E=c+IfpoEv+u)50m}duP>yNm;&#fv zUl63wE?suXzX?(msduPydsn@3tyR2Fe~(&=?IJMu2(X1im@V_qeMRpF(NjZOJ&p-% zzH;w6y9i{l*K|Qzt-fL(;jDk}I|XYnt4S^J3aMp}`OcUiWmYV=;Nw`5g>W&1vVQnwl>*^nl>aVa(J>M|t1C)n*?aC4A^;~vnmQ^X4{ za1JA^@_eDo)wg$3bRm>L{{hp?!-uTo#z*?%Nqz!1o*te89AuE!W4}&=&)~(tEmn(%{0z?*N3JF^$eaA-G&6c^b#TzD1Fq-d5QH~%I2cy@7njhmLLS7rA4ai~ zOOQQPQ5$fk?qPS*P$YP%BD{Wu>0D%X9kqULnQ3@mn0cH_l6))}G1Xq!GJuP)VGAD5 z;zfGG<&h2Wv87wiIu~)r&_3=&hg?lo= ziUh<3kOFz4fCP+(UBQrKN8Gp~Ye#Ribf4(^2ZV$b7XP~Dv7$tV^_DFlyA=!4dBLJ~mWcSZ*BI}()2oNm%~VAZIoFd&ljmJz4R;G{Pk^ZQYi zggFTQy)otW9~N5eC=mfAE_o z_z=opvi8cHZ>`)xa&Xqdo;LZ^Yn5&$VcrQ042;du3!4u=M4e!(L~3w{zS88W_86mb zuD@+cR}L;Br?-u}@(CLCsrG|WwI&26yZ4pb@)?@tSg*jORxbzY4dWWs?qcyK*0qVH ztcbx%E67zp2b6r$di4Czz$HJWT)I3_^DeG~@qtxKV1Kdzrq}=4?bp#9u}tD+jZ3p( z;hB3evs5}$t5{sd=E`lr_QS!?lpy*=fi1aFowzux1+T=kQn6?ZF;nPna&KI^g>yT@ zl7RT)T9pe&BBcTko5#&&bF;?=FcO;3j_AAyxk9w$yF`1Gem+XmD|nsNkC96&1#Vap z|BB6gS|e#ytH>4m4tzu+C<24$mpR@Y8l?xoT?yGiyn=9EVHBTqia9|X96;f?r4pbZ z?QI++oNnG+pdgVSV5i5noE)nh_AzkC>2pU2Az*zXJt1p1ejc7o%&UZl1~Q(@B0XT2 z&(|D0u@@lEsV~o0KG6xVH3j`wGdt|dpW{Up2HX8t&*1K!f_?@p-AH&o40wFQB0oKr zxo>Wc?hu?k1-W_prg?8Kev7_L6U~3xo>T`P$d-a6Wkl$UH<(STH?)N~wZPVURs1G^ zew4`Hnc2KnC(Jx=_#88WJRyDK@&>U7@`B>PIIiOiL&~3?_%O^Bv4${?;l?<=G4Sv` zL);zx5tCUEXO$CwuK=d81tl$(ZkfgO79w$HVD*M2`;H{{zSSG?`7cU|F@Ey`^VK96 z0s{b``p=Z|A04)T)yuy+Y=aA(=KXZYAlscX-y2QC4LQU15=YedzfYI_gu_3#&`{(R zmJfe_3_=x$=5r)7ov}qY@}A=^xvNBZ1wJZb&fI4r1edhnGy|31%t(B_2%gGL*!H66Jd8_vM}NrHUOVvH0Z+NgOa%bHeM`mk&f6da{|f`eESZnE0mlx zv0<|9o)lJ%Gkm#vfX+M)>@(WzMXT|1`LVb+5R5War9MEVZux7$fMD(0LtpfCw@{M# zOI`0#Rk<(`g?@#l$Pz2zLVnDdeubyV5-%Z%+{j4MS(Kb}z)(qC4J83bVJw!CY4F+H8%LJD+Tz~0GV)as?mCcqT2mZReY()rgj(QLd$&QQDQTd&HNua z7EgAsL{Rd|nQWUqy=`b=`NllIJhvj5yS$fJkS*&J0~;*iHD7>y)dmstDlD(<)Y?t} z$Y3!16B#pMoK;~qH-6hwlZ5AU{@lZYSq)}j_DgG6RF~wEQL!$*&N0;Ig|1)w1~m0d+u z8lps4om$<62RW)fP1V!8GYudgs8!6a>l>N}jsW<<+Bi^=7rbCz@{a!6ZM>g|E*-Cx0DD(O zbX<;ZJnD|48SSc9%rl^4fSQOCj-)f26^u<00+FN;;__c($GL-oE$kwkd+%Wd8=C3HvuOc&VqF16;#07m#yqN||B-{}P$$abzoMzoImhBk&R z6kN52cO-CN1RNkKI}VZcAo?Uk%|kimk>TfYGpAHo!bNr{`$)X$q%Gnum6|zV4)c%_ z|0RXSqeR>mNYRv>Mdf3iJFogU2AraBSRYBmO$a3p5BijGIEO%cL+mPtykV1`FdxX9 zXBv@9m9XM?{_3sXW`)vwWeI`ai4x zf5PfNQ{XSIMorcI#ntIfoiDDI8=8<6ss56O#Ha^;0t&phj1awo;3j7C$zcwL)uK&t zXzjNf7hBJ>Cu%HT%0l$b<{ua=-#R&ZSAejF4Uh=bT>w(W8E)D6HrgaQVnIdKoEclC zsX?hTRIBryb5RkXCDXWkg?UjCO(Cc++m#NVR;@O}I+KZN1k~}>7 zEa?Dcbd>Z5kwghVaS1I;-JND8@yRXEJuQ&uSY!Lpq>I93&WCLE%dw#2l$(gnHl~9@ z0ZARZ`WK1ce5zO4@}jTW;^wx~)!sdC(qB5tPyMM}>#V>PvXJ=5l$lNJ6b>9tk5Sh; zkuJ)$AQ|_pTaa^UnnJvb5AIpr8Rv{R=WMg3bl{}8)>QImRJ4_Jb5yHAU|*MJ3=C_2 z%)p@Tnbx)X^foWAcj#U~!`VvXmKU6EdqWSmWE1sq3Nv4iJtm{&5b6HTGIe^^autc7 zG4`@z^;(1?j%?X%Y`4KAoQfC?l?`2|5#NH+JPwh$LmaMy+u+fL8>(JY%M{*dwKg%& zxxLLb;k~`pRqSP?SP;h{qt8?4j^yDB}d5~SPKmYB|<<);}dUC(nF-vnfyn^g+BL-Yc-3dWxG=*~zg`kfEY4PH|Y#qq|WLqY~pn)IgqxAUCE<=S&Ra zt4p*ecR6okn<8eHh`*GO!(^TTsF;ip3bYy7kxs!^-%^#Y`K03n8>+`u4^X zzCI2dExi2<%of}m)a7sk9x1FV<&j5=gXvd7+9QXqb1YFp-u^gxX%~E<4cmTIvvspm zyGL6~pets_$C8;W=(~;0=~G69|0!MxQ@l|7*3P^2k@b14q%<=tctb4N@X{xg=M``m z7X=S};RtARP8Foa;?i%H-CNVYhd?oMY`^{zT@J3C$ufelq_SSl>BNg)# z4cY4Oz^yS=#%f8ZHA+78yo@*IoC(s)CtNpj_P1)IyvVQS$qI{yx0Y_7&yR~7#`$sw zcTHjsCrYKQZyIu>iz!T5!rsC1oDaIz{ew)+M{dZgZsl1FlnT`JsJhg%vPFr5>(@Q4y#J z(m8ovQ{x--Sl_&ojAJtHot%)>XmHXYEC`GCdj8yf{lBpGZx;4{Q|ABA+CQxM_d+e8 z%5j9`W0+J1S2U$bJiJ2C*q#3F%K zbECr{eNrSp%tqh~Gj|;8hs|#s`eQduw1FTTULS5VA3DlK!&Evfu_o>T1@$4BcO(}CO97=a14xLJ zQ_b36-NfB#ZBMU5Rbgj(~!>6W+W-SE@(0WiL?n_x0p0VTS|qGuqi zb*AVOF3wiBuT>G_k8Izc;neudgsg}(HvnA?-d@lJMpVZ~wceF~(>i^IUCyX5IkYX| zb4#U?X)yBo6t`5{>Oj1J!E%*hVXlN7eHSHl%pOI+R)cw=up1wjfu#G;h7|bxafNQT zZF!l0nY0929>dwu7@)w=soFNqwwfV@%f7lM_A^)9=05u`+gSX4>B}}Ym;JGgdtbIO zQ-37d|M)C3{uXH(TUU_j86as0aoNz9Ayyd2in%^EHIF&*`U!0W3?)d)ePkMo=(o-H zl7QIGjGpv9#HCCED!yljdc^rGeqmWf^f6BN#7j~Xmgc5!6(*2)ik_`T*F)5-Klh;l z!(CFd0r9#JKJrLzJ?~GjW}r63wQ^waI#IF}Yw}|*E=;cOq2vwQ$S`DgNFWN|uteGT>4tjnG8=OwgzJS94F}A;SlA1) z(u}y(a_GudL*a*}?cRH@7#E&@V}S_AOwPutvolvNXrNd$dn=pFt3k$`EMO%38!oD1 z#8TE!0HSZZ+6q_a7%?UZ9r_(x41Ox!qs=2NRRVcIdwn zju}S73(S)Aeytu_)_8wDKGke>zcc!)be41?UEWvCzJoW$7ye42%9!fo8eOLfg=AHq zq}?#0kJuo{7M9B<9`|&=Te#QdYa}CX_S Jq8ar4#}?lUbG*s@|wRdwWaCq?=vKC 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

6xS)R@f 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 S1qi}{A3kvE>)yckwf_Lr=JRU+ literal 0 HcmV?d00001 diff --git a/docs/deliverables/프로그램사양서/_gen/gen_program_spec_pptx.py b/docs/deliverables/프로그램사양서/_gen/gen_program_spec_pptx.py new file mode 100644 index 0000000..8eb02b9 --- /dev/null +++ b/docs/deliverables/프로그램사양서/_gen/gen_program_spec_pptx.py @@ -0,0 +1,1115 @@ +# -*- coding: utf-8 -*- +""" +킨텍스 자동전시시스템 구축 — 프로그램사양서 PPTX 생성기 +- 소스: docs/PLANNING.md(v3.0 M1~M18 + §5B 공통레이어), docs/design.md(§2.8 화면 80종 SCR), + docs/architecture/app.md(응답 봉투·에러·감사로그), IMPLEMENTATION_BACKLOG.md +- 디자인: 개발계획서(gen_dev_plan_pptx.py) 스타일 재사용 — KINTEX Blue #0066B3 / AI Purple #6D4AFF / 맑은 고딕 / 16:9 +- 순서도는 python-pptx 도형(단자·처리·판단·데이터·커넥터)으로 직접 작도(외부 이미지 금지) +- 보안 불변: 비밀번호/API키/서버IP/SSH 계정 미기재 +재실행: python gen_program_spec_pptx.py +""" +import os +from pptx import Presentation +from pptx.util import Pt +from pptx.dml.color import RGBColor +from pptx.enum.text import PP_ALIGN, MSO_ANCHOR +from pptx.enum.shapes import MSO_SHAPE, MSO_CONNECTOR +from pptx.oxml.ns import qn + +# ---------------- 팔레트 (개발계획서와 동일) ---------------- +BLUE = RGBColor(0x00, 0x66, 0xB3) +BLUE_DK = RGBColor(0x00, 0x44, 0x7A) +BLUE_LT = RGBColor(0xE1, 0xEF, 0xF9) +PURPLE = RGBColor(0x6D, 0x4A, 0xFF) +PURPLE_LT = RGBColor(0xEC, 0xE8, 0xFF) +INK = RGBColor(0x10, 0x18, 0x28) +MUTED = RGBColor(0x66, 0x70, 0x85) +LINE = RGBColor(0xE4, 0xE7, 0xEC) +BG = RGBColor(0xF9, 0xFA, 0xFB) +WHITE = RGBColor(0xFF, 0xFF, 0xFF) +GREEN = RGBColor(0x12, 0x9E, 0x63) +AMBER = RGBColor(0xE0, 0x8A, 0x00) +SLATE = RGBColor(0x98, 0xA2, 0xB3) +CARD = RGBColor(0xFF, 0xFF, 0xFF) +HALL_BG = RGBColor(0xF2, 0xF4, 0xF7) +ROW_ALT = RGBColor(0xFC, 0xFC, 0xFD) + +FONT = "맑은 고딕" +EMU_W = 12192000 +EMU_H = 6858000 + +prs = Presentation() +prs.slide_width = EMU_W +prs.slide_height = EMU_H +BLANK = prs.slide_layouts[6] +IN = 914400 +def inch(v): return int(v * IN) + +# ---------------- 기본 헬퍼 ---------------- +def slide(): + return prs.slides.add_slide(BLANK) + +def _set_fill(shape, color): + if color is None: + shape.fill.background() + else: + shape.fill.solid(); shape.fill.fore_color.rgb = color + +def _no_line(shape): + shape.line.fill.background() + +def rect(s, x, y, w, h, fill=None, line=None, line_w=1.0, shape=MSO_SHAPE.RECTANGLE, shadow=False): + sp = s.shapes.add_shape(shape, inch(x), inch(y), inch(w), inch(h)) + _set_fill(sp, fill) + if line is None: + _no_line(sp) + else: + sp.line.color.rgb = line; sp.line.width = Pt(line_w) + sp.shadow.inherit = False + if shadow: + el = sp._element.spPr + ef = el.find(qn('a:effectLst')) + if ef is None: + ef = el.makeelement(qn('a:effectLst'), {}); el.append(ef) + sh = ef.makeelement(qn('a:outerShdw'), + {'blurRad':'90000','dist':'38100','dir':'5400000','rotWithShape':'0'}) + clr = sh.makeelement(qn('a:srgbClr'), {'val':'101828'}) + alp = clr.makeelement(qn('a:alpha'), {'val':'16000'}) + clr.append(alp); sh.append(clr); ef.append(sh) + # 텍스트 없는 도형은 자동맞춤 방지 + sp.text_frame.word_wrap = True + return sp + +def text(s, x, y, w, h, content, size=14, color=INK, bold=False, align=PP_ALIGN.LEFT, + anchor=MSO_ANCHOR.TOP, line_spacing=1.0, space_after=2, wrap=True): + tb = s.shapes.add_textbox(inch(x), inch(y), inch(w), inch(h)) + tf = tb.text_frame + tf.word_wrap = wrap + tf.vertical_anchor = anchor + tf.margin_left = 0; tf.margin_right = 0; tf.margin_top = 0; tf.margin_bottom = 0 + if isinstance(content, str): + content = [content] + for i, para in enumerate(content): + p = tf.paragraphs[0] if i == 0 else tf.add_paragraph() + p.alignment = align; p.line_spacing = line_spacing + p.space_after = Pt(space_after); p.space_before = Pt(0) + if isinstance(para, str): + segs = [{"t": para}] + elif isinstance(para, dict): + segs = [para] + else: + segs = para + for seg in segs: + r = p.add_run() + r.text = seg.get("t","") + r.font.name = FONT + r.font.size = Pt(seg.get("size", size)) + r.font.bold = seg.get("bold", bold) + r.font.color.rgb = seg.get("color", color) + rPr = r._r.get_or_add_rPr() + ea = rPr.makeelement(qn('a:ea'), {'typeface':FONT}); rPr.append(ea) + return tb + +def page_bg(s, color=BG): + rect(s, -0.1, -0.1, 13.53, 7.7, fill=color) + +def chip(s, x, y, w, h, label, fill, txtcolor=WHITE, size=9.5, bold=True): + rect(s, x, y, w, h, fill=fill, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x, y, w, h, label, size=size, color=txtcolor, bold=bold, + align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + +def card(s, x, y, w, h, fill=CARD, line=LINE): + return rect(s, x, y, w, h, fill=fill, line=line, line_w=1.0, + shape=MSO_SHAPE.ROUNDED_RECTANGLE, shadow=True) + +FOOT = "킨텍스 자동전시시스템 구축 · 프로그램사양서" +def content_header(s, kicker, title, idx, chip_txt=None, chip_col=BLUE): + page_bg(s, BG) + rect(s, 0, 0, 13.333, 0.12, fill=BLUE) + rect(s, 0.55, 0.5, 0.62, 0.62, fill=chip_col, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 0.55, 0.5, 0.62, 0.62, (chip_txt if chip_txt else f"{idx:02d}"), + size=(20 if not chip_txt else 22), color=WHITE, bold=True, + align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + text(s, 1.32, 0.5, 10.5, 0.28, kicker, size=11, color=PURPLE, bold=True) + text(s, 1.32, 0.74, 11.4, 0.44, title, size=21, color=INK, bold=True) + rect(s, 0.55, 1.28, 12.23, 0.02, fill=LINE) + text(s, 0.55, 7.06, 8, 0.3, FOOT, size=8.5, color=MUTED) + text(s, 11.3, 7.06, 1.48, 0.3, "2026-07-11", size=8.5, color=MUTED, align=PP_ALIGN.RIGHT) + +def divider(num, kr, en, points): + s = slide() + rect(s, -0.1, -0.1, 13.53, 7.7, fill=BLUE_DK) + rect(s, 8.6, -1.5, 8, 11, fill=BLUE, shape=MSO_SHAPE.PARALLELOGRAM) + rect(s, 10.9, -2, 6, 12, fill=PURPLE, shape=MSO_SHAPE.PARALLELOGRAM) + text(s, 1.0, 2.15, 5, 2.2, num, size=150, color=RGBColor(0x2C,0x4E,0x82), bold=True) + rect(s, 1.15, 3.9, 0.9, 0.09, fill=PURPLE) + text(s, 1.15, 4.05, 8, 0.8, kr, size=34, color=WHITE, bold=True) + text(s, 1.18, 4.85, 8, 0.4, en, size=13, color=RGBColor(0x9C,0xB4,0xD8), bold=True) + for i, p in enumerate(points): + yy = 2.35 + i*0.62 + rect(s, 8.05, yy+0.06, 0.16, 0.16, fill=PURPLE, shape=MSO_SHAPE.OVAL) + text(s, 8.35, yy, 4.4, 0.5, p, size=12.5, color=WHITE, anchor=MSO_ANCHOR.MIDDLE) + return s + +# ---------------- 순서도(플로우차트) 도형 헬퍼 ---------------- +def fnode(s, cx, cy, w, h, txt, kind="proc"): + """중심좌표 기준 순서도 노드. return dict(cx,cy,l,r,t,b).""" + x = cx - w/2; y = cy - h/2 + if kind == "term": # 시작/끝 단자 + sh, fill, line, tcol = MSO_SHAPE.FLOWCHART_TERMINATOR, BLUE, BLUE, WHITE + elif kind == "proc": # 처리 + sh, fill, line, tcol = MSO_SHAPE.FLOWCHART_PROCESS, WHITE, BLUE, INK + elif kind == "dec": # 판단 + sh, fill, line, tcol = MSO_SHAPE.FLOWCHART_DECISION, PURPLE_LT, PURPLE, PURPLE + elif kind == "io": # 입출력(데이터) + sh, fill, line, tcol = MSO_SHAPE.FLOWCHART_DATA, BLUE_LT, BLUE, BLUE_DK + elif kind == "db": # 데이터베이스 + sh, fill, line, tcol = MSO_SHAPE.FLOWCHART_MAGNETIC_DISK, HALL_BG, SLATE, INK + elif kind == "wkr": # 사전정의 처리(워커/외부) + sh, fill, line, tcol = MSO_SHAPE.FLOWCHART_PREDEFINED_PROCESS, PURPLE_LT, PURPLE, PURPLE + elif kind == "proc_ok": # 성공 처리(강조) + sh, fill, line, tcol = MSO_SHAPE.FLOWCHART_PROCESS, RGBColor(0xEC,0xF7,0xF0), GREEN, RGBColor(0x0C,0x6B,0x43) + elif kind == "proc_bad": # 반려/차단 처리 + sh, fill, line, tcol = MSO_SHAPE.FLOWCHART_PROCESS, RGBColor(0xFD,0xF1,0xE3), AMBER, RGBColor(0x8A,0x54,0x00) + else: + sh, fill, line, tcol = MSO_SHAPE.FLOWCHART_PROCESS, WHITE, BLUE, INK + sp = rect(s, x, y, w, h, fill=fill, line=line, line_w=1.3, shape=sh) + sz = 8.4 if kind != "dec" else 8.0 + text(s, x, y, w, h, txt, size=sz, color=tcol, bold=(kind in ("term","dec")), + align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE, line_spacing=0.95) + return {"cx":cx,"cy":cy,"l":x,"r":x+w,"t":y,"b":y+h} + +def _arrowline(cxn, color, w): + cxn.line.color.rgb = color; cxn.line.width = Pt(w) + ln = cxn.line._get_or_add_ln() + tail = ln.makeelement(qn('a:tailEnd'), {'type':'triangle','w':'med','len':'med'}) + ln.append(tail) + +def arrow(s, x1, y1, x2, y2, color=SLATE, w=1.6, label=None, lcol=MUTED): + cxn = s.shapes.add_connector(MSO_CONNECTOR.STRAIGHT, inch(x1), inch(y1), inch(x2), inch(y2)) + _arrowline(cxn, color, w) + if label: + mx, my = (x1+x2)/2, (y1+y2)/2 + text(s, mx-0.35, my-0.16, 0.9, 0.24, label, size=8, color=lcol, bold=True, + align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + +def arrow_elbow(s, x1, y1, x2, y2, first='v', color=SLATE, w=1.6, label=None, lcol=MUTED): + """L자 커넥터. first='v'면 수직→수평, 'h'면 수평→수직. 마지막 구간에 화살촉.""" + if first == 'v': + seg1 = s.shapes.add_connector(MSO_CONNECTOR.STRAIGHT, inch(x1), inch(y1), inch(x1), inch(y2)) + seg1.line.color.rgb = color; seg1.line.width = Pt(w) + cxn = s.shapes.add_connector(MSO_CONNECTOR.STRAIGHT, inch(x1), inch(y2), inch(x2), inch(y2)) + else: + seg1 = s.shapes.add_connector(MSO_CONNECTOR.STRAIGHT, inch(x1), inch(y1), inch(x2), inch(y1)) + seg1.line.color.rgb = color; seg1.line.width = Pt(w) + cxn = s.shapes.add_connector(MSO_CONNECTOR.STRAIGHT, inch(x2), inch(y1), inch(x2), inch(y2)) + _arrowline(cxn, color, w) + if label: + text(s, x1-0.05, (y1+y2)/2-0.12, 1.1, 0.24, label, size=8, color=lcol, bold=True, + anchor=MSO_ANCHOR.MIDDLE) + +def vchain(s, cx, y0, items, w=3.7, h=0.6, gap=0.34): + """세로 스택 + 순차 연결. items=[(txt,kind),...] return nodes.""" + nodes = []; y = y0 + for txt, kind in items: + n = fnode(s, cx, y + h/2, w, h, txt, kind); nodes.append(n); y += h + gap + for a, b in zip(nodes, nodes[1:]): + arrow(s, a["cx"], a["b"], b["cx"], b["t"]) + return nodes + +def fc_legend(s): + items = [("시작/끝",BLUE,"term"),("처리",WHITE,"proc"),("판단",PURPLE_LT,"dec"),("입출력",BLUE_LT,"io")] + x0 = 8.0 + for i,(lb,cl,kd) in enumerate(items): + x = x0 + i*1.2 + sh = {"term":MSO_SHAPE.FLOWCHART_TERMINATOR,"proc":MSO_SHAPE.FLOWCHART_PROCESS, + "dec":MSO_SHAPE.FLOWCHART_DECISION,"io":MSO_SHAPE.FLOWCHART_DATA}[kd] + ln = {"term":BLUE,"proc":BLUE,"dec":PURPLE,"io":BLUE}[kd] + rect(s, x, 1.34, 0.26, 0.2, fill=cl, line=ln, line_w=1.0, shape=sh) + text(s, x+0.31, 1.31, 0.85, 0.26, lb, size=8, color=MUTED, anchor=MSO_ANCHOR.MIDDLE) + +# ================================================================ +# 1. 표지 +# ================================================================ +s = slide() +rect(s, -0.1, -0.1, 13.53, 7.7, fill=BLUE_DK) +rect(s, 6.4, -1.5, 9, 11, fill=BLUE, shape=MSO_SHAPE.PARALLELOGRAM) +rect(s, 9.2, -2.0, 7, 12, fill=PURPLE, shape=MSO_SHAPE.PARALLELOGRAM) +rect(s, 0.85, 0.8, 0.42, 0.42, fill=WHITE, shape=MSO_SHAPE.OVAL) +rect(s, 0.97, 0.92, 0.18, 0.18, fill=PURPLE, shape=MSO_SHAPE.OVAL) +text(s, 1.42, 0.78, 6, 0.46, "KINTEX · WISE AI", size=15, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE) +chip(s, 0.85, 2.35, 1.95, 0.42, "프로그램사양서", PURPLE, WHITE, size=12) +chip(s, 2.92, 2.35, 2.35, 0.42, "Program Specification", RGBColor(0x2B,0x4C,0x7E), WHITE, size=10.5) +text(s, 0.85, 2.95, 11, 1.9, [ + [{"t":"킨텍스 자동전시시스템", "size":46, "color":WHITE, "bold":True}], + [{"t":"프로그램사양서", "size":46, "color":WHITE, "bold":True}], + ], line_spacing=1.02) +text(s, 0.88, 4.78, 11, 0.5, + "Exhibition Automation Platform — 기능별 상세 사양 + 업무 순서도", + size=16, color=RGBColor(0xC7,0xDD,0xF2)) +text(s, 0.88, 5.35, 11.4, 0.4, + "프로그램 식별체계 PGM-ID = M{모듈}-{유형}-{일련} (예: M02-BATCH-01)", + size=12.5, color=RGBColor(0xB9,0xC7,0xEA)) +rect(s, 0.85, 6.15, 11.63, 0.02, fill=RGBColor(0x3A,0x5A,0x8C)) +text(s, 0.85, 6.35, 9, 0.4, [ + [{"t":"대상 ","size":11,"color":RGBColor(0x90,0xA6,0xC9)}, + {"t":"모듈 M1~M18 + 공통·시스템관리 레이어(§5B)","size":11.5,"color":WHITE,"bold":True}]]) +text(s, 0.85, 6.72, 9, 0.4, [ + [{"t":"기술스택 ","size":11,"color":RGBColor(0x90,0xA6,0xC9)}, + {"t":"React(Vite)+TS · Spring Boot 3.x(Java17)+MyBatis · PostgreSQL(PostGIS) · Redis · 나노바나나 워커","size":10.5,"color":WHITE}]]) +text(s, 9.7, 6.35, 2.78, 0.4, "작성일 2026-07-11", size=11, color=WHITE, bold=True, align=PP_ALIGN.RIGHT) +text(s, 9.7, 6.72, 2.78, 0.4, "planner · dev team", size=9.5, color=RGBColor(0x90,0xA6,0xC9), align=PP_ALIGN.RIGHT) + +# ================================================================ +# 2. 목차 +# ================================================================ +s = slide() +content_header(s, "CONTENTS", "목차", 0, chip_txt="C", chip_col=PURPLE) +toc = [ + ("01","개요 · 식별체계","문서 목적 / PGM-ID 부여 체계 / 프로그램 유형"), + ("02","프로그램 목록 총괄","모듈(M1~M18+공통)별 프로그램 ID·명·유형·화면"), + ("03","핵심 프로그램 상세 사양","20개 대표 프로그램 — 입출력·처리로직·테이블·예외"), + ("04","핵심 업무 순서도","8종 — 배치/검증/배선/렌더/옥션/등록/승인/배포"), + ("05","공통 규약","API 응답 봉투 · 에러 처리 · 감사 로그"), +] +for i,(no,t,d) in enumerate(toc): + y = 1.75 + i*1.0 + rect(s, 0.7, y, 11.9, 0.86, fill=CARD, line=LINE, line_w=1.0, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + rect(s, 0.7, y, 0.09, 0.86, fill=(BLUE if i%2==0 else PURPLE), shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 1.0, y, 0.95, 0.86, no, size=26, color=(BLUE if i%2==0 else PURPLE), bold=True, anchor=MSO_ANCHOR.MIDDLE) + text(s, 2.1, y+0.15, 9.8, 0.34, t, size=15, color=INK, bold=True) + text(s, 2.1, y+0.52, 9.8, 0.3, d, size=10, color=MUTED) + +# ================================================================ +# 3. 개요 · 식별체계 +# ================================================================ +divider("01", "개요 · 식별체계", "OVERVIEW & ID SCHEME", + ["문서 목적 · 범위", "PGM-ID 부여 체계", "프로그램 유형 정의"]) + +s = slide() +content_header(s, "01 · 개요 · 식별체계", "프로그램 식별 체계 및 유형 정의", 1) +# 목적 +card(s, 0.55, 1.5, 12.23, 1.02) +text(s, 0.8, 1.66, 11.7, 0.3, "문서 목적", size=12, color=BLUE, bold=True) +text(s, 0.8, 1.98, 11.75, 0.5, + "본 사양서는 킨텍스 자동전시시스템(M1~M18 + 공통·시스템관리 §5B)의 프로그램 단위를 식별·정의하고, 핵심 프로그램의 상세 처리 사양과 주요 업무 순서도를 규정한다. 화면(SCR)·모듈 정의의 권위 출처는 PLANNING v3.0·design.md v2.0이며, 본 문서는 이를 프로그램 단위로 분해한다.", + size=10, color=INK, line_spacing=1.02) +# ID 체계 +text(s, 0.55, 2.78, 8, 0.3, "PGM-ID 부여 체계", size=12.5, color=PURPLE, bold=True) +seg = [("M02","모듈 코드 (M1~M18 / SYS·CMN=공통)",BLUE), + ("BATCH","유형·업무 약어",PURPLE), + ("01","모듈 내 일련번호",BLUE_DK)] +x = 0.55 +for i,(v,d,cl) in enumerate(seg): + w = 2.0 if i!=1 else 3.5 + rect(s, x, 3.14, w, 0.72, fill=WHITE, line=cl, line_w=1.4, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x, 3.22, w, 0.34, v, size=15, color=cl, bold=True, align=PP_ALIGN.CENTER) + text(s, x, 3.56, w, 0.26, d, size=8, color=MUTED, align=PP_ALIGN.CENTER) + if i<2: + text(s, x+w-0.02, 3.14, 0.34, 0.72, "-", size=20, color=SLATE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + x += w + 0.34 +text(s, 8.5, 3.28, 4.3, 0.5, [[{"t":"예) ","size":11,"color":MUTED}, + {"t":"M02-BATCH-01","size":13,"color":INK,"bold":True}], + [{"t":"= 플로어플랜 배치 3안 생성 엔진","size":9,"color":MUTED}]], line_spacing=1.1) +# 유형 정의 +text(s, 0.55, 4.1, 8, 0.3, "프로그램 유형", size=12.5, color=BLUE, bold=True) +types = [ + ("온라인","ONL","사용자 화면 트랜잭션(React↔REST), 조회·입력·처리",BLUE), + ("API","API","엔진·서비스 API(룰·배치·배선·집계), 화면 비종속",BLUE_DK), + ("배치","BAT","스케줄러/야간 적재·역산 알림·주기 수집",PURPLE), + ("워커","WKR","Redis 큐 소비 비동기 워커(나노바나나 렌더 등)",PURPLE), +] +tw = 2.98 +for i,(kr,ab,d,cl) in enumerate(types): + x = 0.55 + i*(tw+0.11) + card(s, x, 4.46, tw, 1.72) + rect(s, x, 4.46, tw, 0.5, fill=cl, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x, 4.46, tw, 0.5, f"{kr} ({ab})", size=12, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + text(s, x+0.2, 5.1, tw-0.4, 1.0, d, size=9.5, color=INK, line_spacing=1.05) +text(s, 0.55, 6.4, 12.2, 0.3, + "표기 원칙 온라인 프로그램은 관련 화면(SCR ID)을 명시. 하나의 화면이 복수 프로그램을, 하나의 엔진 API가 복수 화면을 지원할 수 있다(N:M).", + size=9, color=MUTED) + +# ================================================================ +# 4. 프로그램 목록 총괄 +# ================================================================ +divider("02", "프로그램 목록 총괄", "PROGRAM CATALOG", + ["모듈별 PGM-ID·명·유형", "관련 화면(SCR) 매핑", "약 60개 프로그램"]) + +# 총괄 통계 +s = slide() +content_header(s, "02 · 프로그램 목록 총괄", "프로그램 총괄 개요", 2) +stats = [("18","도메인 모듈 (M1~M18)"),("60+","프로그램 (온라인·API·배치·워커)"), + ("80","화면 (SCR·웹/모바일/공개/관리자)"),("4","프로그램 유형")] +mw = 2.94 +for i,(v,l) in enumerate(stats): + x = 0.55 + i*(mw+0.1) + rect(s, x, 1.55, mw, 1.15, fill=(BLUE if i%2==0 else PURPLE), shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x, 1.72, mw, 0.6, v, size=34, color=WHITE, bold=True, align=PP_ALIGN.CENTER) + text(s, x, 2.36, mw, 0.28, l, size=9, color=WHITE, align=PP_ALIGN.CENTER) +# 모듈군 구성 요약 +groups = [ + ("공통 · 시스템관리 (§5B / SYS·CMN)", BLUE_DK, + "인증(JWT+OTP)·사용자·RBAC·공통코드·메뉴·감사로그·설정 + 업무일지·일정·쪽지·공지·검색·회의록·보고·알림"), + ("설계·시각화 코어 (M2~M5 · P0)", PURPLE, + "배치 3안 생성·규정검증·부스설계·배선 최단경로·나노바나나 RenderJob 워커"), + ("판매·발주·정산 (M1·M6~M9·M15)", BLUE, + "자동 견적·서류/마일스톤·등록업체 매칭·물류 슬롯·정산결제·공사 옥션(역경매·낙찰)"), + ("관람·참가·마케팅 (M10~M14)", BLUE, + "관람객 등록·배지·체크인·리드캡처·비즈매칭·EDM/공개사이트·wayfinding·현장운영"), + ("경영·콘텐츠·관리 (M16~M18)", PURPLE, + "BI 데이터마트/대시보드·CMS/마이크로사이트·마스터데이터·룰셋·테넌트 관리"), +] +y = 2.92 +for i,(t,cl,d) in enumerate(groups): + rect(s, 0.55, y, 12.23, 0.72, fill=CARD, line=LINE, line_w=1.0, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + rect(s, 0.55, y, 0.1, 0.72, fill=cl, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 0.82, y+0.1, 5.0, 0.5, t, size=11, color=cl, bold=True, anchor=MSO_ANCHOR.MIDDLE) + text(s, 5.9, y+0.1, 6.75, 0.52, d, size=9, color=MUTED, anchor=MSO_ANCHOR.MIDDLE, line_spacing=0.95) + y += 0.8 + +# --- 프로그램 목록 표 헬퍼 --- +LIST_COLS = [(0.6,1.55,"PGM-ID"),(2.2,3.35,"프로그램명"),(5.62,1.05,"유형"), + (6.75,1.45,"화면(SCR)"),(8.25,4.5,"개요")] +def list_slide(title, rows, note=None): + s = slide() + content_header(s, "02 · 프로그램 목록 총괄", title, 2) + # 헤더 + rect(s, 0.55, 1.5, 12.23, 0.42, fill=BLUE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + for x,w,h in LIST_COLS: + text(s, x+0.1, 1.5, w-0.12, 0.42, h, size=9.5, color=WHITE, bold=True, anchor=MSO_ANCHOR.MIDDLE) + y = 1.96 + rh = 0.445 if len(rows) > 10 else 0.49 + for i,(pid,name,typ,scr,desc) in enumerate(rows): + if i % 2 == 0: + rect(s, 0.55, y, 12.23, rh, fill=ROW_ALT) + rect(s, 0.55, y+rh, 12.23, 0.008, fill=LINE) + text(s, 0.7, y, 1.5, rh, pid, size=8.6, color=BLUE_DK, bold=True, anchor=MSO_ANCHOR.MIDDLE) + text(s, 2.3, y, 3.25, rh, name, size=8.8, color=INK, anchor=MSO_ANCHOR.MIDDLE, line_spacing=0.9) + tcol = {"온라인":BLUE,"API":BLUE_DK,"배치":PURPLE,"워커":PURPLE,"온라인/WS":BLUE}.get(typ,MUTED) + text(s, 5.62, y, 1.05, rh, typ, size=8.2, color=tcol, bold=True, anchor=MSO_ANCHOR.MIDDLE) + text(s, 6.85, y, 1.35, rh, scr, size=8.0, color=MUTED, anchor=MSO_ANCHOR.MIDDLE) + text(s, 8.35, y, 4.35, rh, desc, size=8.0, color=MUTED, anchor=MSO_ANCHOR.MIDDLE, line_spacing=0.9) + y += rh + if note: + text(s, 0.55, 6.72, 12.2, 0.3, note, size=8.2, color=MUTED) + return s + +# 목록 1 — 공통 · 시스템관리 (SYS/CMN) +list_slide("프로그램 목록 (1/6) — 공통 · 시스템관리 (§5B)", [ + ("SYS-AUTH-01","로그인·JWT 발급","온라인","SCR-01","ID/PW 인증→JWT 발급, 행사 워크스페이스 선택"), + ("SYS-AUTH-02","2차 인증 OTP(TOTP)","API","SCR-51","TOTP RFC6238 검증·QR 등록·재설정"), + ("SYS-AUTH-03","로그인 실패 잠금·해제","API","SCR-01","실패 횟수 잠금 + 관리자 해제"), + ("SYS-USER-01","사용자 관리","온라인","SCR-A1","6역할+등록업체·관람객 계정 CRUD·상태"), + ("SYS-RBAC-01","역할·권한(RBAC) 관리","온라인","SCR-A2","플랫폼·행사 이중 평가 권한 매핑"), + ("SYS-CODE-01","공통코드 관리","온라인","SCR-A3","홀·부스유형·공종14분류·요금코드"), + ("SYS-MENU-01","메뉴 관리","온라인","SCR-A4","역할별 포털 IA 메뉴 트리·권한"), + ("SYS-AUDIT-01","감사로그 조회","온라인","SCR-A5","승인·낙찰·룰셋개정·리드접근 전수 조회"), + ("SYS-CONF-01","시스템설정","온라인","SCR-A6","요율/규정 룰셋 버전·마감정책·AI 게이트"), +], note="§5B = UIWS/WISE 표준 이식. 시스템관리는 M18 백오피스와 통합(중복 재구현 없음).") + +list_slide("프로그램 목록 (2/6) — 공통 업무 기능 (§5B)", [ + ("CMN-WORK-01","업무일지(worklog)","온라인","SCR-39","홀매니저 현장일지·업체 시공일지·댓글"), + ("CMN-SCHD-01","통합 일정·캘린더","온라인","SCR-40","마일스톤·옥션마감·반입슬롯 통합 뷰"), + ("CMN-MSG-01","쪽지(message)","온라인","SCR-41","행사 내 주최자↔참가↔업체↔홀매니저"), + ("CMN-NOTI-01","공지(notice)","온라인","SCR-42","킨텍스/행사 공지·팝업 (M17 CMS와 정합)"), + ("CMN-SRCH-01","통합검색(search)","API","SCR-44","행사·부스·업체·문서·콘텐츠 크로스 검색"), + ("CMN-MEET-01","회의록(STT→PDF)","배치","SCR-45","사전협의(D-30) 녹음→STT→Jasper PDF"), + ("CMN-RPT-01","업무보고·통계","배치","SCR-46","일/주/월/분기/연 보고·통계 Jasper PDF"), + ("CMN-ALRM-01","알림센터(notification)","온라인/WS","SCR-47","D-데이·낙찰·승인·결제 알림 WebSocket"), + ("CMN-PREF-01","마이페이지·개인화","온라인","SCR-48","즐겨찾기·최근방문·환경설정"), +]) + +# 목록 3 — M1~M5 코어 +list_slide("프로그램 목록 (3/6) — M1 배정견적 · M2~M5 코어 (P0)", [ + ("M01-QUOTE-01","자동 견적 계산 엔진","API","SCR-18","2,250원/㎡×면적×일수×성수기·전시장 계수"), + ("M01-ONL-01","홀 배정 신청","온라인","SCR-18","가용성 캘린더→홀/반홀 선택→신청서 생성"), + ("M01-ONL-02","부스 판매 인벤토리","온라인","SCR-19","부스 재고·상태·셀프선택 판매 관리"), + ("M02-BATCH-01","부스 배치 3안 생성 엔진","배치","SCR-03","제약 솔버+휴리스틱, 목표 다양화 3안"), + ("M02-RULE-01","배치 규정 자동검증","API","SCR-03","통로·비상구·바닥하중·복층 위반 플래깅"), + ("M02-ONL-01","부스 배치 에디터","온라인","SCR-03","PostGIS 폴리곤 캔버스 편집·확정"), + ("M02-ONL-02","배치안 비교·병합","온라인","SCR-04","레이어 토글·병합→규정 재검증(S7 조감)"), + ("M03-DSN-01","부스 설계 3안 생성","API","SCR-06","레이아웃·파라메트릭 구조 3안(용도 다양화)"), + ("M03-ONL-01","부스 설계 스튜디오","온라인","SCR-06","조립/독립 설계·3D 프리뷰·선택/병합"), + ("M03-RULE-01","설계 규정 사전검증","API","SCR-09","높이5m·리깅·복층·방염·금지작업 플래깅"), + ("M04-WIRE-01","배선 최단경로 산출 엔진","API","SCR-07","트렌치→분전반 통로횡단 최소 배선(PostGIS)"), + ("M04-ONL-01","유틸리티 배선 뷰","온라인","SCR-07","전기/네트워크/급배수 배선·조명 배치"), + ("M04-ONL-02","신청 요약·위치표시도","온라인","SCR-08","단말 클릭→위치표시도 자동생성·견적"), + ("M05-API-01","RenderJob 큐 발행","API","SCR-12","씬 컴파일→스키마해시→Redis 큐 발행"), + ("M05-WKR-01","나노바나나 렌더 워커","워커","SCR-12","Gemini image-to-image·방어·워터마크"), + ("M05-ONL-01","시각화 갤러리","온라인","SCR-12","표준 샷 S1~S7·Before/After 슬라이더"), +], note="M2~M5 = 핵심 차별화 P0. 배치·배선은 결정적 알고리즘(솔버) 중심, LLM은 조건해석 보조.") + +# 목록 4 — M6~M9, M15 +list_slide("프로그램 목록 (4/6) — M6~M9 판매운영 · M15 옥션", [ + ("M06-ONL-01","서류·마일스톤 워크플로","온라인","SCR-22","D-150/30/25/7 마일스톤·서류 상태"), + ("M06-DOC-01","신고서류 웹폼→HWP/PDF","API","SCR-23","7종 서식 자동생성·LLM 누락/불일치 검수"), + ("M06-BAT-01","마일스톤 D-데이 알림","배치","SCR-40","역산 리마인더 스케줄 발행→알림센터"), + ("M07-ONL-01","등록업체 매칭·RFQ","온라인","SCR-24","규모·업종·예산·지역 추천→RFQ 발송"), + ("M07-BAT-01","등록업체 DB 주기 수집","배치","SCR-A7","14분류×739개 공개데이터 수집·정규화"), + ("M08-ONL-01","반입/반출 슬롯 예약","온라인","SCR-25","하역장 슬롯·중량물 우선·통행증 QR"), + ("M09-ONL-01","정산·결제 대시보드","온라인","SCR-21","납부 스케줄·PG 결제·예치금 정산 내역"), + ("M09-BAT-01","납부 스케줄 자동 생성","배치","SCR-21","계약금20/중도금30+20/잔금30+예치금"), + ("M15-ONL-01","옥션 목록·개설","온라인","SCR-26","유형·라운드·마감·낙찰기준·가중치 설정"), + ("M15-ONL-02","옥션 상세·실시간 순위","온라인/WS","SCR-27","자료열람·응찰·실시간 순위 WebSocket"), + ("M15-DOC-01","견적서 작성·PDF 산출","API","SCR-28","라인아이템·총액·부가세·버전·PDF"), + ("M15-AWD-01","낙찰 비교·선정(Award)","API","SCR-29","최저가/종합점수(가격+평판+납기) 비교"), +], note="M15 = 폐루프 연결고리. M2~M5 산출물(물량서·시공 예상 이미지)이 응찰 근거 자료.") + +# 목록 5 — M10~M14 관람·현장 +list_slide("프로그램 목록 (5/6) — M10~M14 관람 · 참가 · 현장", [ + ("M10-ONL-01","관람객 등록 관리","온라인","SCR-30","유형별 사전등록 폼·현황 대시보드"), + ("M10-BADGE-01","배지/QR 발급","API","SCR-P4","모바일 배지/QR 발급·배지 템플릿(M17)"), + ("M10-ONL-02","현장 체크인","온라인","SCR-31","QR 체크인·즉석 배지·오프라인 폴백"), + ("M10-LEAD-01","리드캡처·AI 스코어링","API","SCR-32","배지 QR 스캔→연락처·관심도·팔로업"), + ("M11-MATCH-01","AI 미팅 추천","API","SCR-M8","프로필·intent 매칭→미팅 슬롯 예약"), + ("M12-EDM-01","EDM·캠페인 관리","배치","SCR-33","세그먼트 캠페인·리마인더·수신동의"), + ("M12-PUB-01","공개 홍보 사이트","온라인","SCR-P1","행사소개·일정·교통, SEO·다국어(한영중일)"), + ("M12-ONL-01","스폰서십 패키지 판매","온라인","SCR-34","스폰서 등급·재고·판매 관리"), + ("M13-NAV-01","실내 내비 경로 산출","API","SCR-M6","블루닷/존레벨 경로(부스·시설·비상구)"), + ("M14-ONL-01","홀 현장운영 대시보드","온라인","SCR-14","입장·혼잡·전력부하·주차·안전 플래그"), +]) + +# 목록 6 — M16~M18 경영·콘텐츠·관리 +list_slide("프로그램 목록 (6/6) — M16 BI · M17 CMS · M18 관리", [ + ("M16-ETL-01","BI 데이터마트 적재","배치","SCR-13","스타스키마 Fact/Dim 야간 적재(KpiSnapshot)"), + ("M16-ONL-01","경영분석 대시보드","온라인","SCR-13","가동률·매출구성·P&L·리텐션·수요예측"), + ("M17-ONL-01","CMS 콘텐츠·게시 워크플로","온라인","SCR-35","초안→검수→게시·버전·다국어"), + ("M17-ONL-02","마이크로사이트 편집기","온라인","SCR-36","참가업체 부스소개·제품·예상샷 게시"), + ("M17-ONL-03","다국어 콘텐츠 관리","온라인","SCR-37","한/영/중/일 콘텐츠·번역 검수"), + ("M18-ONL-01","마스터데이터 관리","온라인","SCR-A7","홀·요율·유틸요금·부스표준·등록업체"), + ("M18-ONL-02","규정 룰셋 버전 관리","온라인","SCR-A8","연 단위 요율·규정 개정 버전·이력"), + ("M18-ONL-03","테넌트 관리·온보딩","온라인","SCR-A9","전시관(테넌트) 마스터·온보딩(플랫폼관)"), + ("M18-ONL-04","AI 플랫폼 설정(AiConfig)","온라인","SCR-A10","Claude 기본·설정형 전환·폴백"), +], note="M18 = §5B-1 시스템관리 + 킨텍스 마스터데이터 확장. 테넌트/AiConfig는 v3.0·F100 반영.") + +# ================================================================ +# 5. 핵심 프로그램 상세 사양 +# ================================================================ +divider("03", "핵심 프로그램 상세 사양", "PROGRAM DETAIL SPEC", + ["모듈 대표 20개 프로그램", "입력·출력·처리로직", "관련 테이블·예외 처리"]) + +def detail_slide(idx_total, d): + s = slide() + page_bg(s, BG) + rect(s, 0, 0, 13.333, 0.12, fill=BLUE) + cl = d.get("color", BLUE) + # PGM-ID chip + rect(s, 0.55, 0.42, 2.35, 0.62, fill=cl, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 0.55, 0.42, 2.35, 0.62, d["id"], size=15, color=WHITE, bold=True, + align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + text(s, 3.02, 0.4, 8.5, 0.34, d["name"], size=18, color=INK, bold=True) + text(s, 3.02, 0.78, 9.7, 0.26, d["module"], size=9.5, color=MUTED) + # 메타 칩 (유형·화면) + chip(s, 10.6, 0.42, 1.05, 0.3, d["type"], cl, WHITE, size=9) + chip(s, 11.72, 0.42, 1.06, 0.3, d["scr"], RGBColor(0x2B,0x4C,0x7E), WHITE, size=9) + text(s, 10.6, 0.78, 2.2, 0.24, f"상세사양 {idx_total}/20", size=8, color=MUTED, align=PP_ALIGN.RIGHT) + rect(s, 0.55, 1.18, 12.23, 0.02, fill=LINE) + text(s, 0.55, 7.06, 8, 0.3, FOOT, size=8.5, color=MUTED) + text(s, 11.3, 7.06, 1.48, 0.3, d["id"], size=8.5, color=MUTED, align=PP_ALIGN.RIGHT) + + def block(x, y, w, h, title, tcol, items, numbered=False): + card(s, x, y, w, h) + rect(s, x, y+0.12, 0.09, h-0.24, fill=tcol, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x+0.26, y+0.13, w-0.4, 0.3, title, size=10.5, color=tcol, bold=True) + yy = y + 0.5 + for i,it in enumerate(items): + if numbered: + rect(s, x+0.26, yy+0.015, 0.26, 0.22, fill=tcol, shape=MSO_SHAPE.OVAL) + text(s, x+0.26, yy, 0.26, 0.22, str(i+1), size=8, color=WHITE, bold=True, + align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) + text(s, x+0.62, yy-0.02, w-0.78, 0.44, it, size=8.6, color=INK, line_spacing=0.92) + else: + rect(s, x+0.28, yy+0.07, 0.08, 0.08, fill=tcol, shape=MSO_SHAPE.OVAL) + text(s, x+0.5, yy-0.01, w-0.66, 0.44, it, size=8.7, color=INK, line_spacing=0.92) + yy += d.get("lh", 0.315) + return + + # 좌: 기능설명 / 입력 / 출력 + block(0.55, 1.32, 6.0, 1.42, "기능 설명", cl, d["desc"]) + block(0.55, 2.86, 2.9, 3.05, "입력 (Input)", BLUE_DK, d["input"]) + block(3.65, 2.86, 2.9, 3.05, "출력 (Output)", BLUE_DK, d["output"]) + # 우: 처리 로직 / 테이블 / 예외 + block(6.72, 1.32, 6.06, 3.05, "처리 로직", PURPLE, d["logic"], numbered=True) + block(6.72, 4.49, 6.06, 1.42, "예외 처리", AMBER, d["exc"]) + # 하단: 관련 테이블 스트립 + rect(s, 0.55, 6.05, 6.0, 0.86, fill=HALL_BG, line=LINE, line_w=1.0, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 0.75, 6.14, 5.7, 0.26, "관련 테이블 / 데이터", size=9.5, color=BLUE_DK, bold=True) + text(s, 0.75, 6.42, 5.7, 0.44, " · ".join(d["tables"]), size=8.6, color=INK, line_spacing=0.95) + # 하단 우: 연동 + rect(s, 6.72, 6.05, 6.06, 0.86, fill=BLUE_LT, line=BLUE, line_w=1.0, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, 6.92, 6.14, 5.8, 0.26, "연동 / 비고", size=9.5, color=BLUE_DK, bold=True) + text(s, 6.92, 6.42, 5.8, 0.44, d["link"], size=8.6, color=INK, line_spacing=0.95) + +DETAILS = [ + {"id":"M01-QUOTE-01","name":"자동 견적 계산 엔진","type":"API","scr":"SCR-18","color":BLUE, + "module":"M1 행사·홀 배정 및 자동 견적","lh":0.30, + "desc":["규칙 엔진이 홀/반홀·기간·성수기 조건으로 임대 견적을 즉시 산정", + "HWP 신청→협의→견적(수일)을 즉시 자동 회신으로 전환"], + "input":["행사 기간(장치·전시·철거일)","홀/반홀 선택·면적(㎡)","부대(로비·옥외·회의실)","요율 룰셋 버전(테넌트)"], + "output":["임대료·관리비 예치금 소계","성수기/전시장 계수 반영 총액","견적 명세(항목별) JSON","킨텍스 제출 신청서식"], + "logic":["요율 마스터·성수기 규칙 로딩(tenant_id 스코프)", + "기본액 = 2,250원/㎡ × 면적 × 일수", + "계수 적용: 성수기 +10% / 비수기 -10% / 1전시장 +10%", + "초과시간(1일 임대료 1/10)·용도외 30% 할증 가산", + "예치금 15~20% 산출 → 견적 명세 조립·반환"], + "tables":["hall_master","rate_master","event","quotation_estimate"], + "exc":["요율 룰셋 미확정 → RULESET_NOT_FOUND 반환","면적/기간 유효성 위반 → VALIDATION 오류"], + "link":"연동 M9 정산·결제 · 행사일정 DB. 최종 배정 확정은 킨텍스 내부 의사결정(가견적까지)."}, + + {"id":"M02-BATCH-01","name":"부스 배치 3안 생성 엔진","type":"배치","scr":"SCR-03","color":PURPLE, + "module":"M2 플로어플랜 스튜디오 (P0)","lh":0.30, + "desc":["제약충족 솔버+휴리스틱으로 서로 다른 최적화 목표의 배치 정확히 3안 생성", + "생성형 LLM이 아닌 결정적 알고리즘 중심(LLM은 조건 해석 보조)"], + "input":["홀 선택·실측 지오메트리","목표 부스 수·프리미엄 비율","주출입구·무대·라운지 조건","통로폭·비상구·트렌치 제약"], + "output":["배치 3안(부스 폴리곤 집합)","안별 최적화 지표(부스수·동선·안전)","안별 규정검증 결과","S7 조감 시각화 입력"], + "logic":["홀 좌표계·제약(바닥하중·비상구·트렌치) 로딩", + "목표별 파라미터 분기(1안 부스수 / 2안 동선 / 3안 안전)", + "솔버로 부스 폴리곤 배치·통로 확보", + "각 안 M02-RULE-01 규정검증 호출", + "3안 + 지표·위반 요약 저장·반환"], + "tables":["hall_master","booth(PostGIS polygon)","design_plan(버전·출처)","trench_grid"], + "exc":["제약 충족 해 없음 → 부분안+완화 제안","트렌치 좌표 미확보 → 근사도면 경고 라벨"], + "link":"연동 M02-RULE-01·M03·M5·M6(제출 서류). 소방 최종 유권해석은 관할기관."}, + + {"id":"M02-RULE-01","name":"배치 규정 자동검증","type":"API","scr":"SCR-03·09","color":PURPLE, + "module":"M2 플로어플랜 스튜디오 (P0)","lh":0.30, + "desc":["배치안을 수치 규정에 대조해 위반을 차단(hard)·경고(soft)로 플래깅", + "병합/편집 결과는 재검증 필수(제약 파손 가능)"], + "input":["대상 배치안(부스 폴리곤)","홀 규정 룰셋(버전)","바닥하중·비상구·통로 기준","복층 가능 홀 매트릭스"], + "output":["위반 목록(항목·좌표·등급)","차단/경고 분류","검증 통과 여부(boolean)","검수 리포트(SCR-09)"], + "logic":["룰셋 로딩(tenant_id·버전 고정)", + "피난 통로폭·비상구 접근 거리 판정", + "홀별 바닥하중(2~5t/㎡)·복층 1/2 판정", + "이격(벽30cm·천장60cm)·소방 체크리스트 대조", + "위반 등급화 → hard=확정 차단, soft=경고"], + "tables":["ruleset_version","booth","hall_master","compliance_result"], + "exc":["룰셋 버전 불일치 → 최신 버전 강제·경고","좌표 결손 폴리곤 → 검증 제외·플래그"], + "link":"연동 M2·M3(SCR-09)·M10 승인. 최종 판정은 사람(홀매니저·구조기술사)."}, + + {"id":"M03-DSN-01","name":"부스 설계 3안 생성","type":"API","scr":"SCR-06","color":PURPLE, + "module":"M3 부스 설계 스튜디오 (P0)","lh":0.30, + "desc":["부스 크기·업종·예산 입력으로 레이아웃·파라메트릭 구조 초안 3안 생성", + "조립부스는 옵션 선택형, 독립부스는 AI 초안+장치업체 편집"], + "input":["부스 좌표·크기(M2)","업종·전시품·예산","용도존(시연/상담/창고)","조립/독립 유형"], + "output":["설계 3안(벽체·트러스·사인)","존 배치·집기 블록","M5 예상 사진 프롬프트 입력","규정 사전검증 플래그"], + "logic":["부스 골격·표준 자재 카탈로그 로딩", + "목표별 3안 분기(시연/상담/예산절감)", + "파라메트릭 구조·존 레이아웃 생성", + "M03-RULE-01 사전검증 호출(높이·방염)", + "3안 저장 → 선택/병합 대기"], + "tables":["booth","design_plan","material_catalog","design_zone"], + "exc":["예산/크기 비현실 → 경고·근사안","업로드 도면 인식 저정확 → 참고용 라벨"], + "link":"연동 M7 매칭·M5 시각화·kxwp 제출. 시공 상세도·구조판정은 장치업체 책임."}, + + {"id":"M04-WIRE-01","name":"배선 최단경로 산출 엔진","type":"API","scr":"SCR-07","color":PURPLE, + "module":"M4 유틸리티 설계 (P0)","lh":0.30, + "desc":["단말 위치에서 최근접 트렌치까지 통로 횡단 최소 배선 경로를 PostGIS로 산출", + "위치표시도 수기 작도를 자동 생성으로 대체"], + "input":["부스 내 단말 좌표(전기·LAN·급배수)","홀 트렌치 그리드 좌표","기기 목록·kW/회선","유틸리티 요금 마스터"], + "output":["배선 LineString(전기적/망청/급배수녹)","분전반 용량·수량","위치표시도·자동 견적","S6 오버레이 입력"], + "logic":["트렌치 그리드·공급 매트릭스 로딩", + "단말→최근접 트렌치 매칭(ST_ClosestPoint)", + "통로 횡단 최소 경로 산출(ST_ShortestLine)", + "kW 합산→분전반 용량·수량 산정", + "요금 견적·위치표시도 조립·반환"], + "tables":["trench_grid","utility_order(LineString)","rate_utility","booth"], + "exc":["트렌치 좌표 미확보 → 산출 보류·근사 경고","인터넷 마감(D-25) 초과 → 신청 차단 안내"], + "link":"연동 M9 결제·M5(S6 오버레이는 백엔드 래스터 우선)·kxwp/사무국 릴레이."}, + + {"id":"M05-WKR-01","name":"나노바나나 렌더 워커","type":"워커","scr":"SCR-12","color":PURPLE, + "module":"M5 나노바나나 시각화 (P0·핵심 차별화)","lh":0.30, + "desc":["Redis 큐의 RenderJob을 소비해 Gemini image-to-image로 시공 후 예상 사진 생성", + "ReRoomAI 방어 로직 이식 + 워터마크·고지 강제"], + "input":["RenderJob(씬 스키마·샷 프리셋)","참조 이미지(간이 렌더·홀 사진)","프롬프트 조각(유형·스타일·레이어)","행사별 렌더 쿼터"], + "output":["생성 이미지(오브젝트 스토리지)","워터마크·메타데이터 임베드","WebSocket 완료 푸시","스키마 해시 캐시"], + "logic":["큐 소비 → 크기 가드(8MB·base64 재검증)", + "참조 이미지 1024px 정규화·mimeType 감지", + "Gemini generateContent 호출(inlineData+text)", + "SAFETY/quota 에러 분기→친화 메시지", + "성공 시에만 쿼터 차감·워터마크→푸시"], + "tables":["render_job(상태·이미지)","render_quota","object_storage(메타)"], + "exc":["finishReason=SAFETY → 차단 에러","RESOURCE_EXHAUSTED/429 → 재시도·상한","한글 간판 렌더 불안정 → 후처리 합성"], + "link":"연동 M2~M4(자료)·WebSocket 푸시·M15 응찰 근거. API키는 서버 env(GEMINI_API_KEY)."}, + + {"id":"M06-DOC-01","name":"신고서류 웹폼→HWP/PDF","type":"API","scr":"SCR-23","color":BLUE, + "module":"M6 서류·마일스톤 워크플로","lh":0.30, + "desc":["7종 신고서류를 웹폼 입력으로 킨텍스 제출 형식(HWP/PDF) 자동 생성", + "LLM이 누락 항목·배치도-운영계획서 불일치 검수"], + "input":["서식 유형·행사·부스 데이터","배치도(M2)·정산(M9) 참조","작성자 입력 필드","서식 템플릿(마스터)"], + "output":["HWP/PDF 제출 파일","검수 요약 리포트(누락·불일치)","마일스톤 제출 상태","업로드 안내 릴레이"], + "logic":["서식 템플릿·행사 데이터 병합", + "필수 항목 누락 검출", + "배치도-운영계획서 부스수 등 교차 검증", + "HWP/PDF 렌더링·서명 필드 생성", + "검수 리포트→홀매니저 전달"], + "tables":["document","doc_template","milestone","event"], + "exc":["필수 필드 누락 → 생성 차단·목록 반환","AI 생성 이미지 포함 시 → 서류에서 자동 배제"], + "link":"연동 kxwp(제출 릴레이·API 미공개)·M10 승인. 계약·심사 서류엔 도면만 유효."}, + + {"id":"M07-ONL-01","name":"등록업체 매칭·RFQ","type":"온라인","scr":"SCR-24","color":BLUE, + "module":"M7 등록업체 매칭·견적","lh":0.30, + "desc":["14분류×739개 등록업체를 조건 기반 추천, 설계안 첨부 RFQ 발송·비교", + "미등록 업체 시공 엄금 규정을 시스템이 강제"], + "input":["부스 규모·업종·예산·지역","M3 설계안 첨부","공종 분류 필터","등록업체 DB(검증)"], + "output":["추천 업체 목록·점수","RFQ 발송·수신 현황","견적 비교표","옥션 초대 자격(적격)"], + "logic":["등록업체 DB 조회·자격 검증", + "조건 매칭 점수화·정렬", + "RFQ에 설계안·물량 첨부 발송", + "회신 견적 취합·비교표 구성", + "적격 업체만 M15 옥션 초대 허용"], + "tables":["company(등록업체)","rfq","rfq_quote","booth"], + "exc":["미등록 업체 초대 시도 → 원천 차단","응답 없음 → 리마인더·대체 추천"], + "link":"연동 M3(설계)·M15(옥션 자격 게이트)·CCPY 공개 DB 수집(M07-BAT-01)."}, + + {"id":"M09-BAT-01","name":"납부 스케줄 자동 생성","type":"배치","scr":"SCR-21","color":BLUE, + "module":"M9 정산·결제","lh":0.30, + "desc":["계약 확정 시 단계별 납부 스케줄을 자동 생성하고 역산 알림을 발행", + "예치금 대비 실사용 정산 내역 투명화"], + "input":["계약 총액·확정일","납부 규칙(20/30+20/30)","예치금 비율(15~20%)","행사 일정"], + "output":["납부 스케줄(회차·금액·기일)","알림센터 리마인더 이벤트","예치금 정산 기준","결제 대기 항목"], + "logic":["계약 총액·규칙 로딩", + "계약금20→중도금30+20→잔금30 분할", + "예치금 15~20% 별도 스케줄", + "기일 역산 알림 이벤트 발행", + "PG 결제 대기 항목 생성"], + "tables":["payment","payment_schedule","event","rate_master"], + "exc":["계약 미확정 → 스케줄 생성 보류","PG 실패 → 재시도·수동 처리 플래그"], + "link":"연동 M1 견적·PG 결제·CMN-ALRM 알림. 세금계산서 등 재무연동 협의."}, + + {"id":"M15-ONL-02","name":"옥션 상세·실시간 순위·응찰","type":"온라인/WS","scr":"SCR-27","color":BLUE, + "module":"M15 공사/장치 옥션 (핵심 플로우)","lh":0.30, + "desc":["적격 등록업체가 AI 자료 열람 후 견적서로 응찰, 실시간 순위를 WebSocket으로 노출", + "역경매(라운드 내 인하)·마감 자동 처리"], + "input":["옥션(유형·라운드·마감·기준)","M2~M5 자료·물량서","응찰 견적서(총액·납기)","업체 자격(M7 검증)"], + "output":["실시간 순위(현재/최저/내 위치)","응찰 이력(버전)","라운드 마감 상태","비교표 입력(Award)"], + "logic":["응찰 자격 검증(등록업체만)", + "AI 자료 열람 권한 부여", + "견적서 제출→종합점수 산정", + "실시간 순위 WebSocket 브로드캐스트", + "마감 도달→자동 마감·집계"], + "tables":["auction","quotation(=bid·버전)","company","render_job"], + "exc":["미등록 응찰 → 차단","마감 후 제출 → 거부","동점 → 납기·평판 tie-break"], + "link":"연동 M2~M5·M7·M15-AWD(낙찰)·M6/M9. 익명 순위 옵션 지원."}, + + {"id":"M15-AWD-01","name":"낙찰 비교·선정(Award)","type":"API","scr":"SCR-29","color":BLUE, + "module":"M15 공사/장치 옥션 (핵심 플로우)","lh":0.30, + "desc":["최저가 또는 종합평가(가격+평판+납기) 가중 스코어로 견적서를 비교·낙찰", + "낙찰 견적서를 계약/발주 문서로 전환"], + "input":["옥션 응찰 견적서 집합","낙찰기준·가중치","평판 데이터(규정준수·평점)","납기 조건"], + "output":["항목별 비교표·순위","낙찰(Award) 결과·사유","계약/발주 링크(M6/M9)","시공 일정 연계(M8)"], + "logic":["응찰 견적서 정규화(사양 정렬)", + "가격/평판/납기 점수화·가중합", + "최저가 or 종합점수 순위 산정", + "전시업체 낙찰 선정(사유 기록)", + "낙찰서→계약/발주 전환·감사기록"], + "tables":["auction","quotation","award","company_reputation"], + "exc":["유효 응찰 0건 → 유찰·재개설","가중치 합≠100% → 검증 오류"], + "link":"연동 M6 계약·M9 발주정산·M8 시공일정·SYS-AUDIT(낙찰 전수기록)."}, + + {"id":"M10-BADGE-01","name":"배지/QR 발급","type":"API","scr":"SCR-P4","color":BLUE, + "module":"M10 관람객 등록·배지·체크인","lh":0.30, + "desc":["사전등록 관람객에게 모바일 배지/QR을 발급, 현장 즉석 배지 인쇄 대비", + "배지 템플릿은 M17 CMS 관리"], + "input":["관람객 등록 정보(유형)","배지 템플릿(M17)","행사·부스 매핑","개인정보 동의 상태"], + "output":["모바일 배지/QR(서명)","배지 인쇄 데이터","체크인 검증 토큰","리드 스캔 대상 매핑"], + "logic":["등록·동의 상태 검증", + "배지 템플릿 병합·QR 토큰 생성", + "서명·만료 정책 적용", + "모바일 발급·인쇄 데이터 산출", + "체크인/리드 스캔 매핑 등록"], + "tables":["visitor","registration","badge","badge_template"], + "exc":["개인정보 미동의 → 발급 보류","중복 등록 → 기존 배지 재사용"], + "link":"연동 M10 체크인·M10-LEAD·M13 wayfinding. PII 동의·보존정책 필수(R10)."}, + + {"id":"M10-LEAD-01","name":"리드캡처·AI 스코어링","type":"API","scr":"SCR-32","color":BLUE, + "module":"M10 관람객 (참가업체 리드)","lh":0.30, + "desc":["참가업체가 배지 QR을 스캔해 연락처·관심도·메모를 저장하고 AI로 스코어링", + "팔로업 EDM(M12)·ROI 측정(M16)으로 연계"], + "input":["스캔 배지 QR 토큰","관심도 평점·메모","부스·참가업체 컨텍스트","동의 범위"], + "output":["리드 레코드(연락처·점수)","AI 리드 스코어","팔로업 세그먼트","리드 접근 감사로그"], + "logic":["QR 토큰 검증·관람객 해소", + "동의 범위 내 연락처 취득", + "관심도·행동신호 AI 스코어링", + "리드 저장·세그먼트 분류", + "리드 접근 감사로그 기록"], + "tables":["lead","visitor","booth","audit_log"], + "exc":["동의 범위 밖 필드 → 마스킹","오프라인 스캔 → 큐 저장 후 동기화"], + "link":"연동 M12 EDM·M16 BI. 리드 접근은 개인정보 전수 감사(§5B-1)."}, + + {"id":"M11-MATCH-01","name":"AI 미팅 추천","type":"API","scr":"SCR-M8","color":BLUE, + "module":"M11 비즈니스 매칭","lh":0.30, + "desc":["프로필·관심업종·의향(intent) 기반으로 미팅을 추천하고 슬롯 예약", + "부스 위치(M2)·wayfinding(M13) 길안내 연계"], + "input":["관람/참가 프로필","관심 업종·intent 신호","부스 업종 태그(M3)","가용 미팅 슬롯"], + "output":["매칭 추천 목록·점수","미팅 슬롯 예약","길안내 경로(M13)","매칭 성과(M16)"], + "logic":["프로필·행동신호 수집", + "관심·의향 임베딩 유사도 산정", + "상호 의향 매칭 랭킹", + "미팅 슬롯 예약·충돌 해소", + "부스 위치·경로 연계 반환"], + "tables":["visitor","match_recommendation","meeting_slot","booth"], + "exc":["프로필 결손 → 저신뢰 라벨","외부 모델 게이트 위반 → 승인 모델만"], + "link":"연동 M10·M13·M16. AI 추천은 온프레미스/승인 모델 범위(R12)."}, + + {"id":"M16-ETL-01","name":"BI 데이터마트 적재","type":"배치","scr":"SCR-13","color":PURPLE, + "module":"M16 경영분석 BI (P1 승격)","lh":0.30, + "desc":["운영 DB를 스타 스키마 데이터마트로 야간 집계해 운영 부하 없이 지표 제공", + "운영사 관점·참가사 관점 지표 분리"], + "input":["M1 배정·M9 정산 이력","M10 관람·M15 옥션","행사일정·비용 마스터","전 적재 스냅샷"], + "output":["Fact/Dim 테이블 적재","KpiSnapshot(가동률·매출·P&L)","수요예측·수율 입력","이상탐지 대상"], + "logic":["증분 소스 추출(읽기 복제)", + "DimHall/Event/Date/Exhibitor 갱신", + "FactBooking/Settlement/Utility/Auction/Visitor 적재", + "KPI 집계·스냅샷 생성", + "품질 검증→커밋(멱등)"], + "tables":["fact_booking","fact_settlement","dim_hall","kpi_snapshot"], + "exc":["소스 정합 결손 → 부분적재·경고","적재 실패 → 재시도·이전 스냅샷 유지"], + "link":"연동 전 모듈(소비)·M18 권한. 크로스테넌트 집계는 플랫폼 슈퍼관리자 전용."}, + + {"id":"M17-ONL-01","name":"CMS 콘텐츠·게시 워크플로","type":"온라인","scr":"SCR-35","color":PURPLE, + "module":"M17 CMS","lh":0.30, + "desc":["전시 콘텐츠·공지를 초안→검수→게시 워크플로와 버전관리로 발행", + "다국어(한/영/중/일)·사이니지 연계"], + "input":["콘텐츠 초안·미디어","게시 대상·채널","다국어 번역","승인자·게시 일정"], + "output":["게시 콘텐츠(버전)","예약 게시 큐","다국어 렌더","사이니지 배포 콘텐츠"], + "logic":["콘텐츠 작성·미디어 첨부", + "검수 요청→승인/반려", + "다국어 번역 검수", + "게시/예약 게시 처리", + "사이니지·공개사이트 배포"], + "tables":["content(버전)","content_publish","content_i18n","microsite"], + "exc":["승인 없이 게시 → 차단","번역 누락 → 기본 로케일 폴백"], + "link":"연동 M12 마케팅·M13 wayfinding·M10 배지. 공지 채널은 CMN-NOTI와 정합."}, + + {"id":"M18-ONL-02","name":"규정 룰셋 버전 관리","type":"온라인","scr":"SCR-A8","color":PURPLE, + "module":"M18 관리자 백오피스","lh":0.30, + "desc":["요율·규정 룰셋을 버전으로 관리해 연 단위 개정을 안전하게 반영", + "룰 엔진(M1·M2 검증)이 버전 고정으로 참조"], + "input":["룰셋 초안(요율·규정 값)","적용 시작일·테넌트","개정 사유·근거","승인자"], + "output":["룰셋 버전(불변 스냅샷)","활성 버전 포인터","개정 이력·감사로그","엔진 참조 캐시 무효화"], + "logic":["룰셋 초안 작성·검증", + "버전 스냅샷 생성(불변)", + "승인→활성 버전 전환(시작일)", + "엔진 캐시 무효화·재로딩", + "개정 감사로그 기록"], + "tables":["ruleset_version","rate_master","audit_log","tenant"], + "exc":["활성 버전 삭제 시도 → 차단","시작일 소급 → 경고·승인 필요"], + "link":"연동 M1 견적·M2 검증·전 모듈. 테넌트 스코프 격리(§1A)."}, + + {"id":"SYS-AUTH-02","name":"2차 인증 OTP(TOTP) 검증","type":"API","scr":"SCR-51","color":BLUE_DK, + "module":"§5B-3 인증 (UIWS 표준 이식)","lh":0.30, + "desc":["TOTP(RFC6238)로 로그인 2단계 인증을 수행하고 QR 등록·재설정을 제공", + "관리자·홀매니저·주최자·업체 필수, 관람객 선택"], + "input":["1차 인증 통과 컨텍스트","OTP 6자리 코드","OTP 시크릿(등록 시)","서버 시간"], + "output":["OTP 검증 결과","QR 등록 데이터(최초)","실패 카운트·잠금 상태","인증 완료 토큰"], + "logic":["사용자 OTP 시크릿 조회", + "SHA1·30s·±1 윈도우 코드 산정", + "입력 코드 대조", + "실패 시 카운트 증가·잠금 판정", + "성공→인증 완료·감사기록"], + "tables":["user(otp_secret)","login_attempt","audit_log"], + "exc":["코드 불일치 → 실패 카운트·잠금","관리자 초기화 → otp_secret=NULL 재등록"], + "link":"연동 SYS-AUTH-01·SYS-AUTH-03. 시크릿·비번은 응답/로그 미노출."}, + + {"id":"SYS-RBAC-01","name":"역할·권한(RBAC) 관리","type":"온라인","scr":"SCR-A2","color":BLUE_DK, + "module":"§5B-1 시스템관리 / M18","lh":0.30, + "desc":["플랫폼·행사 이중 평가 권한 모델을 관리(테넌트 격리 ⊃ 행사 RBAC)", + "역할별 포털 IA·메뉴 접근을 구동"], + "input":["역할 정의·계층","권한(리소스·액션) 매핑","테넌트·행사 스코프","사용자-역할 배정"], + "output":["역할-권한 매트릭스","메뉴·API 게이트 규칙","이중 평가 정책","권한 변경 감사로그"], + "logic":["역할 계층 로딩(플랫폼/테넌트/행사)", + "권한 매핑 편집·검증", + "테넌트 격리 제약 적용", + "메뉴·API 게이트 규칙 생성", + "변경 감사로그 기록"], + "tables":["role","permission","user_role","menu"], + "exc":["테넌트 경계 위반 배정 → 차단","슈퍼관리자 외 크로스테넌트 → 거부"], + "link":"연동 SYS-MENU·전 포털. 행사 RBAC는 테넌트 내부로 스코프(§1A-4)."}, + + {"id":"CMN-ALRM-01","name":"알림센터(notification)","type":"온라인/WS","scr":"SCR-47","color":BLUE, + "module":"§5B-2 공통 업무 기능","lh":0.30, + "desc":["마감(D-데이)·낙찰·승인·결제 등 이벤트를 단일 채널로 수집·푸시", + "M10·M12·M15가 이벤트를 발행, 발송 채널은 공통 단일화"], + "input":["이벤트(유형·대상·페이로드)","수신자·역할","알림 설정·구독","WebSocket 세션"], + "output":["알림 레코드(읽음 상태)","실시간 WebSocket 푸시","배지 카운트","이메일/모바일 팬아웃"], + "logic":["이벤트 수신·정규화", + "수신자 해소(역할·구독)", + "알림 저장·중복 억제", + "WebSocket 실시간 푸시", + "미접속 시 이메일/푸시 팬아웃"], + "tables":["notification","notification_pref","event_outbox"], + "exc":["WebSocket 미연결 → 오프라인 큐","발송 실패 → 재시도·데드레터"], + "link":"연동 M6 마일스톤·M15 낙찰·M9 결제. 마케팅 발송은 M12(수신동의)."}, +] +for i, d in enumerate(DETAILS): + detail_slide(i+1, d) + +# ================================================================ +# 6. 핵심 업무 순서도 (도형 작도 8종) +# ================================================================ +divider("04", "핵심 업무 순서도", "KEY WORKFLOW FLOWCHARTS", + ["8종 핵심 업무 흐름", "python-pptx 도형 직접 작도", "단자·처리·판단·커넥터"]) + +# --- 순서도 배치 헬퍼 --- +def after(nodes, h, gap=0.28, cx=None): + n = nodes[-1] + return (cx if cx is not None else n["cx"], n["b"] + gap + h/2) + +# --- FC1: 부스 배치 3안 생성 → 선택/병합 --- +s = slide() +content_header(s, "04 · 핵심 업무 순서도 (1/8)", "부스 배치 3안 AI 생성 → 선택 / 병합", 4, chip_txt="F1", chip_col=PURPLE) +fc_legend(s) +sp = vchain(s, 2.7, 1.55, [ + (["설계 조건 입력", "(홀·부스수·프리미엄)"], "term"), + (["제약 로딩(통로·비상구", "·트렌치·바닥하중)"], "proc"), + (["솔버+휴리스틱 3안 생성", "(목표 다양화)"], "proc"), + (["3안 규정검증·시각화(S7)"], "io"), +], w=3.4, h=0.56, gap=0.22) +dcx, dcy = after(sp, 0.86, gap=0.26) +dec = fnode(s, dcx, dcy, 2.2, 0.86, ["선택 or", "병합?"], "dec") +arrow(s, sp[-1]["cx"], sp[-1]["b"], dec["cx"], dec["t"]) +sel = fnode(s, 6.6, dcy-1.45, 3.0, 0.62, ["단일 안 선택"], "proc") +mrg = fnode(s, 6.6, dcy, 3.0, 0.62, ["레이어 병합 편집", "(안별 블록 조합)"], "proc") +rechk = fnode(s, 10.4, dcy-0.72, 2.8, 0.66, ["병합/선택안", "규정 재검증"], "proc") +fin = fnode(s, 7.6, 6.4, 7.4, 0.5, ["최종안 확정·버전기록 → 참가업체 초대링크(M3/M4)"], "proc_ok") +arrow(s, dec["r"], dec["cy"], sel["l"], sel["cy"], label="선택") +arrow(s, dec["r"], dec["cy"], mrg["l"], mrg["cy"], label="병합") +arrow(s, sel["r"], sel["cy"], rechk["l"], rechk["cy"]) +arrow(s, mrg["r"], mrg["cy"], rechk["l"], rechk["cy"]) +arrow(s, rechk["cx"], rechk["b"], rechk["cx"], fin["t"]) +text(s, 0.55, 6.66, 12, 0.3, "메모 규정 재검증에서 위반 발견 시 병합 편집으로 되돌려 재수정 후 재검증(hard 위반은 확정 차단).", size=9, color=MUTED) + +# --- FC2: 규정 자동검증 --- +s = slide() +content_header(s, "04 · 핵심 업무 순서도 (2/8)", "규정 자동검증 (위반 차단 / 경고)", 4, chip_txt="F2", chip_col=PURPLE) +fc_legend(s) +sp = vchain(s, 2.9, 1.6, [ + (["배치/설계안 제출"], "term"), + (["룰셋 버전 로딩", "(tenant·버전 고정)"], "proc"), + (["규정 항목 순차 판정", "(통로·하중·높이·방염·이격)"], "proc"), +], w=3.5, h=0.6, gap=0.3) +dcx, dcy = after(sp, 0.94, gap=0.28) +dec = fnode(s, 2.9, dcy, 2.4, 0.94, ["위반", "등급?"], "dec") +arrow(s, sp[-1]["cx"], sp[-1]["b"], dec["cx"], dec["t"]) +hard = fnode(s, 6.95, dcy-1.3, 3.1, 0.66, ["HARD 위반", "→ 제출 차단"], "proc_bad") +soft = fnode(s, 6.95, dcy, 3.1, 0.66, ["SOFT 위반", "→ 경고(진행 가능)"], "proc") +none = fnode(s, 6.95, dcy+1.3, 3.1, 0.6, ["위반 없음 → 통과·확정"], "proc_ok") +rep = fnode(s, 11.45, dcy, 1.5, 2.0, ["검증", "리포트", "(SCR-09)", "위반좌표", "오버레이"], "io") +arrow(s, dec["r"], dec["cy"], hard["l"], hard["cy"], label="차단") +arrow(s, dec["r"], dec["cy"], soft["l"], soft["cy"], label="경고") +arrow(s, dec["r"], dec["cy"], none["l"], none["cy"], label="정상") +arrow(s, hard["r"], hard["cy"], rep["l"], rep["cy"]-0.6) +arrow(s, soft["r"], soft["cy"], rep["l"], rep["cy"]) +arrow(s, none["r"], none["cy"], rep["l"], rep["cy"]+0.6) +text(s, 0.55, 6.66, 12, 0.3, "원칙 hard=확정 차단, soft=경고 후 진행 가능. 최종 판정은 홀매니저·구조기술사(사람).", size=9, color=MUTED) + +# --- FC3: 배선 최단경로 산출 (단일 수직 흐름) --- +s = slide() +content_header(s, "04 · 핵심 업무 순서도 (3/8)", "유틸리티 배선 최단경로 산출 (PostGIS)", 4, chip_txt="F3", chip_col=PURPLE) +fc_legend(s) +vchain(s, 5.6, 1.66, [ + (["단말 위치 클릭(전기·LAN·급배수)"], "term"), + (["기기 목록·kW/회선 입력"], "io"), + (["트렌치 그리드·공급 매트릭스 로딩"], "proc"), + (["최근접 트렌치 매칭(ST_ClosestPoint)"], "proc"), + (["통로 횡단 최소 경로(ST_ShortestLine)"], "proc"), + (["kW 합산 → 분전반 용량·수량 + 요금 견적"], "proc"), + (["배선 LineString 저장·위치표시도 자동생성"], "proc_ok"), + (["S6 오버레이(백엔드 래스터 합성)"], "term"), +], w=5.4, h=0.48, gap=0.14) +text(s, 0.6, 6.72, 12, 0.3, "예외 트렌치 좌표 미확보 → 산출 보류·근사도면 경고. 인터넷 마감(D-25) 초과 → 신청 차단. S6는 생성모델 아닌 결정적 래스터 합성 우선.", size=8.6, color=MUTED) + +# --- FC4: 나노바나나 RenderJob --- +s = slide() +content_header(s, "04 · 핵심 업무 순서도 (4/8)", "나노바나나 RenderJob (큐→워커→워터마크→푸시)", 4, chip_txt="F4", chip_col=PURPLE) +fc_legend(s) +sp = vchain(s, 3.0, 1.6, [ + (["시각화 요청(M2~M4)"], "term"), + (["씬 컴파일·스키마 해시"], "proc"), + (["Redis 큐 발행(RenderJob)"], "io"), +], w=3.4, h=0.58, gap=0.26) +dcx, dcy = after(sp, 0.86, gap=0.28) +dec = fnode(s, 3.0, dcy, 2.3, 0.86, ["캐시", "HIT?"], "dec") +arrow(s, sp[-1]["cx"], sp[-1]["b"], dec["cx"], dec["t"]) +gem = fnode(s, 8.0, 1.95, 3.3, 0.64, ["워커 소비·Gemini 호출", "(inlineData + text)"], "wkr") +derr = fnode(s, 8.0, 3.25, 3.3, 0.86, ["응답", "상태?"], "dec") +bad = fnode(s, 11.6, 3.25, 1.4, 0.86, ["SAFETY/429", "친화 에러", "쿼터 미차감"], "proc_bad") +o1 = fnode(s, 8.0, 4.55, 3.3, 0.56, ["워터마크·메타 임베드"], "proc") +o2 = fnode(s, 8.0, 5.55, 3.3, 0.56, ["스토리지 저장 + 성공 시 쿼터 차감"], "proc") +o3 = fnode(s, 8.0, 6.55, 3.3, 0.56, ["WebSocket 완료 푸시(S1~S7)"], "proc_ok") +arrow(s, dec["r"], dec["cy"], gem["l"], gem["cy"], label="MISS") +arrow(s, gem["cx"], gem["b"], derr["cx"], derr["t"]) +arrow(s, derr["r"], derr["cy"], bad["l"], bad["cy"], label="실패") +arrow(s, derr["cx"], derr["b"], o1["cx"], o1["t"], label="성공") +arrow(s, o1["cx"], o1["b"], o2["cx"], o2["t"]) +arrow(s, o2["cx"], o2["b"], o3["cx"], o3["t"]) +arrow_elbow(s, dec["cx"], dec["b"], o3["l"], o3["cy"], first='v', label="HIT") + +# --- FC5: 공사 옥션 --- +s = slide() +content_header(s, "04 · 핵심 업무 순서도 (5/8)", "공사 옥션 (견적 → 역경매 → 낙찰)", 4, chip_txt="F5", chip_col=BLUE) +fc_legend(s) +sp = vchain(s, 3.0, 1.5, [ + (["옥션 개설(유형·라운드·마감)"], "term"), + (["M2~M5 자료·물량서 첨부"], "io"), + (["응찰 자격 검증(M7) 등록업체만"], "proc"), + (["적격 업체 자료 열람"], "proc"), + (["견적서 제출(응찰)"], "proc"), +], w=3.7, h=0.52, gap=0.18) +dcx, dcy = after(sp, 0.82, gap=0.24) +dec = fnode(s, 3.0, dcy, 2.2, 0.82, ["마감/라운드", "종료?"], "dec") +arrow(s, sp[-1]["cx"], sp[-1]["b"], dec["cx"], dec["t"]) +rebid = fnode(s, 6.7, dcy-1.25, 3.0, 0.62, ["재응찰", "(라운드 내 인하)"], "proc") +arrow(s, dec["r"], dec["cy"], rebid["l"], rebid["cy"], label="No") +arrow_elbow(s, rebid["cx"], rebid["b"], dec["cx"]+1.1, dec["t"]+0.15, first='v') +yes = vchain(s, 9.4, 1.6, [ + (["종합점수 산정(가격+평판+납기)"], "proc"), + (["견적서 비교표·순위"], "io"), + (["전시업체 낙찰(Award)"], "proc"), + (["계약/발주 전환(M6·M9)·감사기록"], "proc_ok"), +], w=3.5, h=0.58, gap=0.24) +arrow(s, dec["r"], dec["cy"]-0.1, yes[0]["l"], yes[0]["cy"], label="Yes") + +# --- FC6: 관람객 등록 → 배지 → 체크인 --- +s = slide() +content_header(s, "04 · 핵심 업무 순서도 (6/8)", "관람객 등록 → 배지 → 체크인", 4, chip_txt="F6", chip_col=BLUE) +fc_legend(s) +sp = vchain(s, 3.0, 1.55, [ + (["온라인 사전등록(유형별 폼)"], "term"), + (["개인정보 동의 확인"], "proc"), + (["배지/QR 발급(서명·만료)"], "proc"), + (["모바일 배지 수신"], "io"), +], w=3.4, h=0.54, gap=0.2) +dcx, dcy = after(sp, 0.86, gap=0.26) +dec = fnode(s, 3.0, dcy, 2.3, 0.86, ["현장", "네트워크?"], "dec") +arrow(s, sp[-1]["cx"], sp[-1]["b"], dec["cx"], dec["t"]) +onl = fnode(s, 6.9, dcy, 3.0, 0.62, ["QR 온라인 체크인"], "proc") +off = fnode(s, 6.9, dcy-1.35, 3.0, 0.62, ["오프라인 폴백 큐"], "proc_bad") +arrow(s, dec["r"], dec["cy"], onl["l"], onl["cy"], label="정상") +arrow(s, dec["r"], dec["cy"], off["l"], off["cy"], label="불안정") +arrow(s, off["cx"], off["b"], onl["cx"], onl["t"], label="복구 동기화") +tail = vchain(s, 10.7, dcy-1.35, [ + (["즉석 배지 인쇄·입장 집계"], "proc"), + (["리드캡처 매핑(M10-LEAD)"], "proc"), + (["체크인 데이터 → M16 BI"], "proc_ok"), +], w=3.1, h=0.6, gap=0.24) +arrow(s, onl["r"], onl["cy"], tail[0]["l"], tail[0]["cy"]) + +# --- FC7: 승인 워크플로 (2FA 포함) --- +s = slide() +content_header(s, "04 · 핵심 업무 순서도 (7/8)", "승인 워크플로 (2FA 포함)", 4, chip_txt="F7", chip_col=BLUE_DK) +fc_legend(s) +sp = vchain(s, 3.0, 1.55, [ + (["로그인(ID/PW)"], "term"), + (["JWT 발급"], "proc"), +], w=3.2, h=0.56, gap=0.22) +dcx, dcy = after(sp, 0.86, gap=0.24) +dec = fnode(s, 3.0, dcy, 2.3, 0.86, ["2FA 대상", "역할?"], "dec") +arrow(s, sp[-1]["cx"], sp[-1]["b"], dec["cx"], dec["t"]) +otp = fnode(s, 3.0, dcy+1.35, 3.1, 0.6, ["OTP(TOTP) 검증·실패 잠금"], "proc") +arrow(s, dec["cx"], dec["b"], otp["cx"], otp["t"], label="필수") +que = fnode(s, 8.3, 2.2, 3.2, 0.62, ["승인 큐 진입(AI 사전심사 플래그)"], "io") +rev = fnode(s, 8.3, 3.4, 3.2, 0.6, ["검수 상세(도면+위반 오버레이)"], "proc") +dap = fnode(s, 8.3, 4.65, 2.4, 0.86, ["승인", "판정?"], "dec") +rej = fnode(s, 11.6, 4.65, 1.4, 0.86, ["반려", "사유 통지", "재제출"], "proc_bad") +ap1 = fnode(s, 8.3, 5.85, 3.2, 0.56, ["승인 확정·상태 전이"], "proc") +ap2 = fnode(s, 8.3, 6.6, 3.2, 0.5, ["감사로그 기록 + 알림센터 통지(CMN-ALRM)"], "proc_ok") +arrow(s, dec["r"], dec["cy"], que["l"], que["cy"], label="선택/면제") +arrow(s, otp["r"], otp["cy"], que["l"], que["cy"]+0.1) +arrow(s, que["cx"], que["b"], rev["cx"], rev["t"]) +arrow(s, rev["cx"], rev["b"], dap["cx"], dap["t"]) +arrow(s, dap["r"], dap["cy"], rej["l"], rej["cy"], label="반려") +arrow(s, dap["cx"], dap["b"], ap1["cx"], ap1["t"], label="승인") +arrow(s, ap1["cx"], ap1["b"], ap2["cx"], ap2["t"]) + +# --- FC8: CI/CD 배포 --- +s = slide() +content_header(s, "04 · 핵심 업무 순서도 (8/8)", "CI/CD 배포 (빌드 → health → 롤백)", 4, chip_txt="F8", chip_col=BLUE_DK) +fc_legend(s) +sp = vchain(s, 3.0, 1.55, [ + (["Gitea push(main)"], "term"), + (["webhook 수신(deploy 서버)"], "proc"), + (["백엔드 bootJar + 프론트 Vite 빌드"], "proc"), + (["나노바나나 워커 패키징"], "proc"), + (["배포·서비스 재기동"], "proc"), +], w=3.7, h=0.56, gap=0.22) +dcx, dcy = after(sp, 0.9, gap=0.24) +dec = fnode(s, 3.0, dcy, 2.3, 0.9, ["health", "check", "OK?"], "dec") +arrow(s, sp[-1]["cx"], sp[-1]["b"], dec["cx"], dec["t"]) +okb = fnode(s, 7.3, dcy, 3.4, 0.62, ["트래픽 전환·배포 완료"], "proc_ok") +rb = fnode(s, 7.3, dcy-1.3, 3.4, 0.62, ["직전 버전 롤백"], "proc_bad") +arrow(s, dec["r"], dec["cy"], okb["l"], okb["cy"], label="UP") +arrow(s, dec["r"], dec["cy"], rb["l"], rb["cy"], label="FAIL") +arrow(s, rb["cx"], rb["b"], okb["cx"], okb["t"], label="복구") +fin8 = fnode(s, 7.3, dcy+1.1, 3.4, 0.56, ["배포 결과 알림 + 감사로그·배포 이력 기록"], "term") +arrow(s, okb["cx"], okb["b"], fin8["cx"], fin8["t"]) +text(s, 0.55, 6.74, 12, 0.3, "보안 불변 API키·비밀번호·서버IP·SSH 계정은 코드·커밋·로그·응답에 미기재(서버 env 로드).", size=9, color=MUTED) + +# ================================================================ +# 7. 공통 규약 +# ================================================================ +divider("05", "공통 규약", "COMMON CONVENTIONS", + ["API 응답 봉투(ApiResponse)", "에러 코드·처리", "감사 로그(@Audited)"]) + +s = slide() +content_header(s, "05 · 공통 규약", "API 응답 봉투 · 에러 처리 · 감사 로그", 5) +# 응답 봉투 +card(s, 0.55, 1.5, 6.05, 2.55) +rect(s, 0.55, 1.5, 6.05, 0.46, fill=BLUE, shape=MSO_SHAPE.ROUNDED_RECTANGLE) +text(s, 0.55, 1.5, 6.05, 0.46, "API 응답 봉투 (ApiResponse)", size=12, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) +text(s, 0.78, 2.05, 5.6, 0.28, "모든 REST 응답은 공통 봉투 사용(예외 없음)", size=9, color=MUTED) +rect(s, 0.78, 2.38, 5.6, 0.62, fill=RGBColor(0x0E,0x14,0x22), shape=MSO_SHAPE.ROUNDED_RECTANGLE) +text(s, 0.95, 2.44, 5.3, 0.52, [ + [{"t":'성공 ',"size":8.5,"color":GREEN,"bold":True},{"t":'{ "success": true, "data": {…}, "error": null }',"size":8.5,"color":RGBColor(0xD6,0xE2,0xF0)}], + [{"t":'실패 ',"size":8.5,"color":AMBER,"bold":True},{"t":'{ "success": false, "data": null, "error": {code,message} }',"size":8.5,"color":RGBColor(0xD6,0xE2,0xF0)}], +], line_spacing=1.1) +for i,t in enumerate([ + "성공: 컨트롤러 ApiResponse.ok(dto)", + "실패: ApiException throw → GlobalExceptionHandler 봉투 변환", + "페이징: 공통 PageResponse", +]): + y=3.12+i*0.3 + rect(s, 0.82, y+0.06, 0.09, 0.09, fill=BLUE, shape=MSO_SHAPE.OVAL) + text(s, 1.02, y, 5.4, 0.28, t, size=9, color=INK) +# 에러 처리 +card(s, 6.75, 1.5, 6.03, 2.55) +rect(s, 6.75, 1.5, 6.03, 0.46, fill=AMBER, shape=MSO_SHAPE.ROUNDED_RECTANGLE) +text(s, 6.75, 1.5, 6.03, 0.46, "에러 처리 (ErrorCode·ApiException)", size=12, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) +for i,(h,d) in enumerate([ + ("단일 매핑","ErrorCode(enum)가 코드↔HTTP 단일 매핑, 신규는 여기에만 추가"), + ("3자 세트","ErrorCode → ApiException(코드+요약) → GlobalExceptionHandler"), + ("스택 미노출","error.message는 요약만, 상세는 서버 로그(include-* : never)"), + ("남용 금지","RuntimeException 남발 금지 — 최종 방어선만 INTERNAL"), + ("보안","IP·SSH·비번·PII를 응답·에러에 미노출"), +]): + y=2.08+i*0.38 + rect(s, 7.0, y+0.04, 0.11, 0.11, fill=AMBER, shape=MSO_SHAPE.OVAL) + text(s, 7.22, y, 5.4, 0.36, [[{"t":h+" — ","size":9.4,"color":INK,"bold":True},{"t":d,"size":8.8,"color":MUTED}]], line_spacing=0.92) +# 감사 로그 +card(s, 0.55, 4.28, 12.23, 2.15) +rect(s, 0.55, 4.28, 12.23, 0.46, fill=BLUE_DK, shape=MSO_SHAPE.ROUNDED_RECTANGLE) +text(s, 0.55, 4.28, 12.23, 0.46, "감사 로그 (@Audited AOP → TB_AUDIT_LOG)", size=12, color=WHITE, bold=True, align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE) +audit = [ + ("기록 대상","상태 변경 API — 승인·낙찰(M15)·설계 변경·룰셋 개정·리드 접근(PII)"), + ("기록 항목","액터 · 행사 · 대상 · before/after 요약 · 룰셋 버전 · 시각"), + ("미기록","민감정보 · 비밀번호 · 스택트레이스 (보안 불변)"), + ("스키마","WISE TB_AUDIT_LOG 이식 · 멱등 DDL(sql.init mode=always + continue-on-error)"), +] +for i,(h,d) in enumerate(audit): + x=0.75+(i%2)*6.1 + y=4.9+(i//2)*0.72 + rect(s, x, y, 5.85, 0.62, fill=HALL_BG, line=LINE, line_w=1.0, shape=MSO_SHAPE.ROUNDED_RECTANGLE) + text(s, x+0.18, y+0.1, 5.55, 0.26, h, size=10, color=BLUE_DK, bold=True) + text(s, x+0.18, y+0.36, 5.55, 0.24, d, size=8.6, color=MUTED) +text(s, 0.55, 6.62, 12.2, 0.3, + "적용 원칙 ApiResponse·ErrorCode·감사로그는 전 프로그램 공통(architecture/app.md §5-2·5-3·7-1 정본). 신규 프로그램도 예외 없이 준수.", + size=9, color=MUTED) + +# ================================================================ +# 저장 +# ================================================================ +OUT = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "프로그램사양서.pptx") +prs.save(OUT) +print("SAVED:", OUT) +print("SLIDES:", len(prs.slides._sldIdLst)) diff --git a/docs/deliverables/프로그램사양서/프로그램사양서.pptx b/docs/deliverables/프로그램사양서/프로그램사양서.pptx new file mode 100644 index 0000000000000000000000000000000000000000..e4601a9b5d331c33b0b195597de61235eacaa3aa GIT binary patch literal 186540 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

D7 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

=uh^|st7H)yl1Fb=stRE1J zga@9ImJhhSAxR7b5b-ePnHb_1-!7|fd!klQbiJoRA<$XYG}G9|33CJ!CMv7!F@D5KVoyC zxLmfBwQtGp{(q9)KDk3kEE)6xp87ECa#Vv2 z)8h6aM^UA^5g{)#OH*Y0zw6%`NY!mE@HYnoB1Li<)Z^DrUOVr}p|w{MEpC=xNV#PO zB)+u#8JGm@;)#TCGT2$tW0Nqq3Pw#%myQWGOk7s3?$wswE5I8m_GxeAv1#LU6%~?D zlQp-cMsCh^6&5remzg!Ix{R_sW1}y)J^p@#+=m+Ks)RL@2;CM>B`)*)B*QxvAC2}* zY)oxoWSKuOc8Zu{y$=Iv*Frr~s0&Mq;ZBOM@%Ow_*??3?@Ez)f79=N>T8!8Hvl42z8VW zc>8j9SC_fV@cRV5>~WB)?TF27a3xv%lRJAbjyaGGBb{qj3x+gJ0u6UX6@j&} z_rd(k`E$Uvx~oeCcmL59NP@)~EtB1)I2LJH^Ad-AVML}a5c+OIbxHB5LO1Mx9OO5&N6u!{9m6G2Mfe&j+@mKuXg_)V>B6&)EF zKjABzfacC!k;xsS1fZdQxE|e~xjtn8L2jPQ&fUD|U31zLrzhiv6I7WW4reH~?e-n= z*M(t4FYaDPE$+SNJLV^b%Tzq;pu;P3T zC&x~Ruk=tQGSbS!AoA-A$96R5ONV%GDV`Z}@@~x<+Zo}69C+Nj?RAkB9}4*g&~ef)lF zU|+`2VbStsLtNuymx-C5jL$@hw88CvsGeoo%f?hC8^12WO%-NJZ4HmMYE(ohX|Z~5 z$SgN+J?J)Wp}`v5%yEZjU4A?=?}?CC&1=5F%!?`7!CA~Mon5O9SYC`q5?GB4*v5}FnAJqs zcIgyA{kVoI9Bdh)y>~1|c@|gs1g-KRqjrCZuhvMMW{MHwqU!r(=#M3$dFaHH0r~nc z+P_-72wb=C2jdx`S)fmZ=no0*S{czb%g6qT%E4h>c`pB#n2l&%4r&Xlnmzh0ey#ei zszGzWvc?78Jz7VAAg*i7?LQne2j6?6?2%&`IVD_7|EnrPKAfPTqn>Rw@-bq*xxCw) z9l!3aesV#WQ=_X&;*h)EEk#Is{elJnGx$Hi`~m=Tf?p|=-+d6H8YO2x|J_yk-a6Qv zTMOEXj&vs=D_;|z@BcpbgWZJA#KrIM-j^{UjH8-Lee6P5Y{y@e{M=a6PwI)<%wFf3 z-CRu#tB~TGPVmL@1@sda4t?Ro4ziJrq#8*ucbK~u{ALdo@uhaUvkf|T_BJnadTFf@ zF!KSjGAsbeSWEo2>ERGdDXM7y$jYDo%F0lHtPK0n86_XShqYpFpx_K7@AwD-i%&3oND&4={#NTXC&fTAe z?_GbLTY)%!tT;PA0PQH>?WJy<7bo)CM1GATo-kqul;p+_f6K>lS$OAr*XM>3Hkoni zv7$mwvvK$&(`CE=_*K(Y8Y-SuZiiIU6o+vIC*fftV!5pqazVl3UE!XRyVZUq??h(& zz9}QAV(o{065&%pa#_X@!&gAbi-;u3eGaUJVL*9v-)S(XWTntDXVC85oV{*Xtg#eI z43>Gi1dyZ;3@=hV?H}YTqiT@s@hxi#t~Q}t(YX~TV8^=gO=}l*u*~c+Jx)H z#!4lT%^S*n2?W-{j0dIusX$}9b+{0kw2LG}Gz^wdeXBq#H8Zi`Zhr<3QJ3k-M!Os? ztdx4#w;Y80VigCNxl^k#m2DfVe}=6;@^9n|6KVry?g6K=$U=j?xj%NLjUSBn=4O)2 zRc3&-FcY|&foer)YMU<+NRotP;trm=Kt9_AqsRVHmhcE^S-tpz>3DnQW(QOjxCaW~ zYwO>8>^~meTNi&^#Ftj-_<8Qf_$}_{LA?IK;?9-11(U&jPW(i~lCJ8gT@!r#7=3+H z=UaU(3e9U$`W%BeQriSPN61_Ic-IU|pLGZ~Z;c6;VnoolBbLTcdf>ndu_m|*eS_=S zoXWk<-W?}Js2`8^ z8NrMzKoQHJ2v}OkrfsSq}Zj~f89bME0`&cRVGL5 z#oR?#c&3oFMEW?rYywoysrFf#%BP$Pe00zO`{VAjkk@Z}3}yQeHk$$i+M1Q(!aew^ z^@El#;4^kduk7sEIn4H^Bn-vQgMbzod-rpNAALSpUH*L-jFVJx+od_7r=tsr`s#w3 zj_3&x9I}8m5lTy|OZndKnZKEH;>GFOyrg6tDWGF*EE+33@b38Z3d>DNw-H zWyX335Sm!?8mjUN5}%GTXkSS9@j0=>SE?^<3!euSeULpcjx4#{dqGfj4mP=RD%)gI zD%O;tIl+mM>^7=yY~>jg%lW1l<(5lsy+gr!F%uLcOY?U$fRdYRu~TFeS7=loofOGx zW9r6MpRw;PF-UJZpK=+LgpfI8`fRehT~#!IH2ZT9ocbFx^TH{aY1EfvNwON3Ss7uu zF-PQIX{`~XZ(lZ3pM>muiuGfI56IRMdSNAHujFR#ER&yqHq?AGJy~o?< zdJO+Q)yvcG%z&<3uYQS5wH{6P4fwxse{ciDLRt{;#9&l#-AOVkJ3;2|_Dw4T@Hnf= zG~^r@HUscD^+9sl?0@jsM*}*2elv)Da)u$5oA$LG^&dQblC&o5D?p1Plu|>^xpC(1 z?1(YW;9FqlO$3^DkBWcD0e<@(p3opC*e28hh#_#9Uvg)UT+({0S~ zdI5prMQ_^kz`GtYK)_bG{ym3y1trV^ms71M+m%Z4uvIXVd z`XZ;ab|8lX#~*8ku7?sVhl7P8QV15eU+N3!%O9z}7t7%Y+rj1h)t5nppL=C-62c|F z`@NmwsIoM6V0L)pt+c@|3|HmSo$h>Sf9mTPBGw6>MX}OA>!k-}Vr=Ur1S@ZMGfHVI z-4$xMsp7~XSzzUHMO-+&y$YTQ zd{lt0ODu_~hUF(2B*XTu0=3dFPAiI0q`0#|#c7y_)=>K%EB1$*6SvJLF_ zi3;vS5?OWf056LuyfvYX`}hnYHKzQ-%L=4}4N7AF^0Ml)R&$9IwS@7Flj^juUfJ`kxW8YlBb^NfV^YkLL>UY@~>+%^gPIlje4 z)7Pldf>Alta$?Ptk$1T-hV3{Xa~Zor>{WQVR(y)?ksn>9=!lBabUZ#RgvXutRy^uL z1n5*q+}Kp?n%qT2g@-iozi??*$sXnaiN0!%H&^MoZqt(&|SPF|rE`>+PP`_x}|`|HaAwWeg25PO?)2Fm&dBVraI18Cqdc^i6vn-wu|#A+&Rm zSdOdRlnjJ0R$!d}!EbzPCtd^DEc~LXhB!x#EEz_cA2$+!8TS>XgorS8yITx{pdl6A zdx%T@__cc4e4YRn4s$SoFjHJl&ANfd^WkpE<8kHX=rYs~{ufPA933j7$sae@532o^ z6v=c^h9FM|gS8Cr4~m*~DU8SR<3ky#^^_(&U3W!eL+F&wpCnO^^tb&|#Ufj+@A)~j z2BXv=>+Cxf8^bPdw0R_cr01FT$;xXR+K;lt$z93(VF|UduzR z#&&&;@65A}Ru$?Witnm+0z>tRe(Ff{_UaPFbC?h)1yaz@uSj0XRKTDcl7FQLK!xA` zDEmw9B_pMK^%pP)7%{0hcj;_2aaC~5Yv zCDfs2e{|A4%~GpJccD9J_3X~vquM6Bw_}xP8RUavtMqCyG?Ax=9MN~K-!ha}n-%-6 z5v2yor+md?#Fg+ob?(RASiZ9vddcR4O1Tl0!$J1Ue7RRII>+~PnWOw0ltz6EN@Ip# z3HqY)3G}*GRevNb@CxfY*zYY}_+@TZo>FJ8i(V)G7LN`3fv>Qymn1e;>Lw8LT@2?08x998*cXV-C>x*>=(OCOr%MBRvb@x$M;h zWjA{@sGfI06*a5_&dU$jFSlBqOgl**F1k@eyrVCkq5mKx*5xK2>CT|W@Ws4ZfO|Cw zWxvC-IaK!3iJL)OdfYG2YpTPwcA0y~;H9zqu`!kdPWcMTNBsWuVbT9gw`2QtG5NhD zs}978;XD>goif>W1-HJ0Le9B!zehWw=e}{%*yPLhne$1%MM&0R*ZDMi$ep#_G6-lB zKNe&WgPvE-!)XUwNHDDzP&Z8rQo{JA!6(bQC*t3@sG++Etav>j0exr_izAbqs<&E@ zE6*Gn3#Q74D+`tm*4WjFi_36pp^ngSn{Z85f6rQu7Vz6^vFmb}mf3*Mjq zSRw%1>aM^oUn&0JWRJ51k7eU+6yDS^N?Atxy|ZlXhycv;L~C=jtgA1m)w_CbMnBZb zA1kF4$^zA&KR`otRuK|^XF5h-BkcGY(b6%lAq!Cr$VgK(dUVf{OIUbZb9gjiq$eS9 zr6fnHwnyXy6$@X}R_|2vvgrTvIxwoxLB8B4HV)uO1ya(*KuTJ|n&)|m%kln!J-_d7 zO8VgY*4!8mkdoGVM8u?IZ_tj358F@rycIAPZ27=aW?jd5cr+mLF7|IqTBaJYKOF7k zT!XlHKWO|r0M?ZRJk?J>e?(np^}|0-dsn>HP64xCHpNKV%5l+cvWbY|)1OZ3{h&=^ z;(?g7Tvw)d?UVB;CtW(@?fep@?l3|Jl+2uX;&R#ft3%mnDwgR}Er>{lg!a}y;I{qIJ9)l2&x#YYyc|#dy?Sq6Jntn=o zjI>zWLzN*I#0+0z%R7>+uszv92Y?rCy)d3eeTqyoDuZwFBJz7-tRBuYu1-FQiq2{2 zTJ8+up6Ku5D(RH2ewb*5lSrGZRz#deSwLd$pUbIW54Jkw4~ioR;zj9o7i2Pn2_=&X z)Fgv}GeDNySoxci=Kj0u_11l6&*Wl+4kjwk$lQ3ivgGiyv}|RJ@!Uv(Q~Ke$*$f;d zD$bieBh(s^daYa!7dGgWKEyu*(x;9piDnU$OqG;xAU5zr6C2})0WpI}TgbA*TlZNJ zWZ417jslz)L>VF#zk{c~qvcvO(0#Tk`r(K{ip5Zdb#BATwqVTT13as&__`GpJbM74w!X>hq~vnm2wCA`EIJgwr)0zH1$Rp1yS+mrxfJAcxo^Yg;_U?{h@?P$@}z#9<8sk zcKQ^>s=cLzJ4#1~Lwx~QluGU#UkDYIj^n13iV%Ba@931{U5xalS}ZIt;X*fYk!_hz1LVcQ_dPFGUk>XRo9;? zzsN@r8;wi*T(l$lp#;MpMxid(G{3GiFyB~g6n6@)rEFXyYjwUg2wFFMY+mxoQ64f# zZC*4Yu|ztDNKLKQeghSjcs}pr(R(U|0LM}MPjQK)RQL%a=bJvR#=j;!bQnEOOON)c z)+$CXVBSr;dpiFjbVhSbgXYBUlZAK{cTPIWAmOA!a{k4wYob;3-b55Q@r-eBE5JhW z-ejz8-^XO>K+TSCQ~D8!4sNOD_mzdt;PN7PS73m2|10e@kdKA~Ng&>S>Wlr_DlYHj zh?V}uR>YbrzWF{Fn z?86})B)cmy4*49FrB{9#M!&V=F4wo(>$?kWSc~v$8z|OBWoq^p&&66K3}vZ-Q4q{D zA|e!#lp~vhJ7yxh&8;06FEntxwrbbu4CqwH1D@jK=X>5+m=CRlFXxsf#f%; z;QCq`?@fI8^6;?gN&`+fE_xCb~TySekez zh%*>Sk`FZmPAm{Pa*{M8Kp8E%A*EAtrPaw6hgYjP+xSt_&vSFDV{{@hCx3sK}`RR5Y!LIDtITX)gw1(%=LfEw;2i@(oey*j#PVPf|)TgnthY zaeR1(XN>taM^QX#t`?V1=U{f9|)8l#YjFT0VqBxR=A}}xp{!| z{|sjF1LZGsL-{1&dYguOj(Wa=CS$aqTJptjBnN#e((90PW+U}tsQjxj8?J>Z2bpzB zQ8jA;ByWZ0u?b>nszX3W8Zi0Ik5W-5-(>zJ?N`VBMD4R_((xcA83=}JhySLe;!?;FlpUbgr@jdnOzkc!NH5RAPhBGHm)jgpy-ohv%C zC6}7*9Fv=9$Ui)hcnI0{JgH#W)p_6=O`4tWNW1lg5=drwBK2`L$ZbGvWI;`DV4mxT zN2dEGPOt-$?D-BcSGTiMY0g*C33Ty3_>jpq{tCn%3N`iqxH%&}?p}uJ(jvCFG)Yxa ziJWGeznKcr$$k4?_K!w*YzXvWk;oJNw4HuNd4uTP#sC%FElQ^h_^Ed$jTK4FpF%X4 zM)P7Q(OG5;!Q@Zh9*U^!LLwSIe8Xp{J85F=*K~O2-1zS7R&k*Y)DP0^JUcEnTijT7 z*?wwD%z1Ks8vg?{L6D+HE$f^e!4Kg1ukDLGgM$lmb%O(+tt-In< zXqM_mUbw46QQ|>T2Bd?@pNsYrTP|lGtoV~_?zWeat$R)peV3IwhHSl6V)q!QQHoMz zm-J14v}n)PapxV$GIH7NaGCBpveXjbFtr4+qMPsXUEXk18L>4jWTf7fUXHdL>mIbR z-eNG}k9iEgTJg9d%q>}7zIa#@wX2#8Be*pk?Uw=O@~%4r@c%2m|BJf+%lKYg^&xKyh+Px>C%$L@hwn9P z7KO0@zGwI&u@EfikgX?MAiCr#m(xN3(#J;+6I=u{6_*%~>X4BxgIFOEit7Ox&3@7( zu&ND5IV6!j2HThL7RQ%*;H3@{7|b;tb{1nVW#rS9o3a&@Gl>Fu2CuSad-41o>b96U zu-=E@fRuT+STR+`?2_xaL8l@jGxRxUKY7`FzNF20zb|8%>-;{I*K3At*|8MZ>9$KR z8ZPL`KV_9h4<8-M=T@@LDrL2FaUQ~~@=!49aw|QNLMhX}cOT76u@A%G*Uq4vUE=rj z+$0!axBS|00X#^>#eOo}ravkPl z4>?~oC;?x290d9|qe?}@7=DU8vi{60EbYnHI<0Il^E}0~qc9!W$6-btX0PS?Wx-?X znM`%3`W?3M&o&ziA)DV*YZWLX)bmV4#`-(R)7UE?4ritvo@-YOqN5j4dA-wbOe{03 z9~`18qTBSN{neGc;`TC#5a%*os8uK%4@Fey4}d1LO7+NDoFWH;`PZM#&mc^vPrn}V zm)MEicU#*W&J;&0JldSrj@s+2t9UzJrXnX_j#}KEfPwA`?aa0#py*uqK)M7-T^}iv z9cq`zo_7GL>qP7V{>#%zqp_LQw#lmjMb`0n;j7(Rs3A~58A50mXzzK!=Cjt_OEsz4 z+=gWJbcob{jE zwh*V_E4a`nIW$f!pOcy0`ZMX4jjy;}kKwyI>}cMM<-g|5x_H#X$G+Wq#GH!wdzZ_N zcPP@Tc*0{sOm}_yKHV2hZ_ zs>9$t05EdCwVg+6Vt}t#MK{^3Ah4>e+E{jUVy~!uSnoQuUUhBhaAm#oW@lUyqFcIu zxAr#IO}_p%*B!C`*IN$5V9U$VtRb1l{bK4d%to7ID8jd)yVav=EIQmV-S9iVlEzw3 z`WB5GEf~59iRMf9W8gnRIV*%lM?SR!(e@IO<%dIDk*vFpBG%{p%&q3Sr`tWcW?L z7a7eYNFGcj*z|lIew@A<)Rg`GZ2x&}CEm6Hbwy42)rNPmvjwhkr4!Ca8|;+z=Z!wq zowu8X0i){!|0VGC8D51j#VXRa5!YMr`uX4BHU8;3ef?LX<{*KnM&b>RU}3~zslvD5 zb*j==O1A-5L0~v_j1vkCXP=S5zT3&^6WGZu{3)sH!~2?BC$^2Z~>4HmfFcsahDUfS0@)BZ*?1#2#77kDoN2DTpE526*KH zg4e>a*_(8!K~5il;I(RVEyDY)lGH|)S-(YI-|B1XyVFr%G0Y%QJB@<#9cko*KyRv8 zxE{R8chVWSRYt<7OO)KvPSr--q8ZbLpeT4;@(T;yu&9b9u;YbJmAmbT?iEbxMC7u? zkHioPA)zxk_?WmFci_^xElxQwfLyLyyvZ8s0k_%?pFIY}+YY||z~5Ydwpel6s67@8 z8=V(9^&Gq&?}pfJ9avUTaecowklcMcOrWZ<;(a$ZG8HA~x6ok!+kXM5F263d5;zW8 zs8jG566iO5H)X9CF8X%xDCc3jJ3q6S-4lG6ZAnLi-aEh=wq6I-Z@ax*bjqsu&D)5( zxek#h8)`kTp@OyI$WiJhDq(HOQ+WhQpkr zBRmi>hZ*<#qq^5nXM@Ss1`DrDZPpuuX0*c=X>VC#j_ccnTa~1lf36q*O2w@hOl9QCL`yH89B7RLjWm(MbVlG_} zb-<9q$o!c|)#mx5z-UlfymVJ%xL@1lIxFjnO+b}8&?jIlPev~`q->o(Lh9caQ%ktL zB=NaWUKj@F9fdp81g-|W~xZ}NdrVd*Wpbs1`_Xopovt_5sWM0N8KT{l-_7#F`{Sb2GZ zag)o(n)B}?B{qL!BO-k2E1_&5sruRy03)1JvlU6|1C4ZjX>T~FlXl~94vdC@%<4$p zk(r|#Vi>l89Closf?5_y6}1czHDDv(978kaf%KtBit$zvq{Ewu_)RD1pHeL8-70 ze1pH@SQ9)kB)qS!&yMw-g~`N(f88_Go^QbuBLu}N7+F(bLJ+^*+{Ft~3nwp+s>WjH ztvz{CY-ZLYo3A@k{p#p6j@*LwH~m}n?1-&s*;?f(;PH&v2JLF<73skM z$ut^5#_uMy0R?5^j-#+wrS({#aV#P5j0GTS-I$OuG&psAeOYJ-qBxm;3+6$_u0lhmDeIAA*m1t1N8^Ve&L4CjbEgW(Lky*>- zWXNgb7o{H=lmpLq+tDq)s*Flq@0X}UY`n6d3AeM8Bp1UpB* z5IYKQgjm)t7U=#9T3JG#bT?Fy(mXm;kpwe&P-&#@VSz>R#Jq(mtq%bHO9PR=*A5;?tqtxkK0fiiU-ZkJ6j29A~=SxdX;~$ z7}kEUXzvH9Qc!cF$PIy9SO_kBjWL~<7ZW|>=OL3Yb6?PKP39q{5qrS}i3`!{qQtSh z$09!PB~#Y_5v+&6wG**3eYMl$^7$8};Lq!eCD+l4nI)KOoYKX?p54o$pEK!Ar4tT! zrKt5MWlfo~xcugG=?`##U9zmCg4G zd(>QzmQAV@iOYjeC0*M1oV_yN({yYlAd5B@?iDVbkEh6YUoY&gHAgAFx0nr7WKwN8 zD0J#@vwoGQlAfOoT$mT1cHS+_3=Lz|IZ$~1xRwSk`7^GUfS``f?|vMaOP{XdnMaRLZ3l} z`*NLC%{It;M`@t!Z9SXLr0U=G?B+l-&g|jHKAXPL+@cf9dWMO*M?;l(btM)_e5@t} zuTk0uNSBG4_XnOso%rKC!ZhyG8R_X~h5ZIb`d}m54kpxwY4lJ#oaw|HS{@*%{ua+q zdj5pgYdBv(yAE(^F_*=IzgJ>QwMSn^DkZ^dV#nN^$HzivVe53JJm&!{Zr3bh+n!LJ zx6378*@_I0f-;7c=3zCCjEvF>iOw?JY2K*PKpNX#yg>EP@1cD-AE@s#0DgtpE|x8; z%pPC~5*z7)yC~m(o_Om2P_5VEZS@;xsG9$rJ1sbG$H9pee2USu%9#fO-JNA}dI)A~ z+TA*5(YB%5bb+&ZWK%B=+t776U1#vR{E$yWe_Sq3*r{^=d6^lGN}lb{E^8aEfJ&E5 z^`QM}>FVROXXVXps-Ma5TXOW@Yx9>leR1u-*Lv)QF3e8LGcdsFCP(Pbk6b&v$?*B{6>0>+`a7GVWAqBA zAHw@nJc!#rNv%tv!)fgspj~U4Rs?O2UK^XG5Z2sBEg(WoWw3n*w`CV???bXTP$uM- zurZxW_qQed{eyNmEV65Eg-*DS*n(E|F1D_L~Z#k_gi+1{2f~nIYiFN2>McE%8FZZT;m~Gp9bjGoKpDotnZB3g3wqD{rBY5Swm9O zx4UOD=##48NDfo$FfGAF+k5S1WgD6*CLP{)-8LwfQY?~pd7&RD#Ag*uTOTr-Eqn^vgJB+J~FgT$oyfSUuW^XB! zQ$M0GTB_TN_jk%kN){W*8{}jn^G_P)scQpe;6>#+mZj19`o<};(!7TcX5C!+0=WG+ zFJFv-AvF$L?^eX}XJ~1k6J?X9=-NZFG@KJ;rCu#?%&F=>9@r=5JUlg?8RBI9iqE#Q zzEeLtrv2%e*vag;(YTkUdzabNIF?$`X;(RyKTla&dl&iUxW(n9e)VG!nh7Q|mHIOT z!;vUN>5;4N#{wtpKCEu)Hv^HGFl^D(OV0bALGEt9Y5ibv`FN(sKj$Trs2_Bm_uKGFm-s)1xnOHQz z`IyLPFjri3o+ydXOeMaS%qTJ6G9TzI^G#qcVo)-bpUL-((bj%q)?9|k<{6Uidp-ae z*S#zV@LCO8NNB$k%+SOirV86xwpaO>pC>{j z@2MC&kyTc72l*@;J!J&oG->j!+@uEmfnn|1q92s=le$TmgKo#ehk8eCcNg|O_xo$f z9^L601e%_BOIpyU)>H(0hBrms(@6D=+y95VbBd1aUAuic?x17a=-9U1v2EM7ZQHhO z+fFCxSRLzB{`>pRxj19r?8|+Xj5ni_RjF0A-nr&{=8u^l&KM_G@ufr$)<3t2w&wfG zwYzouQ7v{0u&hYV5PL1^ke|Rk>W>j7&!mrdeX|Er=g0s z(@)h`JC}~OXY$Sl0%%HOG7}>4X;mC{3kU6lJKa%sC9oAHaQ^A_td-xMu9@uPl`#%S z{7*fid+*?oEY0e&%Nj9&n+6Ve7IM`Y4KZWpW@pSGxiFbrl-A2=G#L*@)(#GCPoVMr*c7(lTeKB3Nsg+742k*p%WFBH z{Tm6;Tjml}tNjZgrfmRX+Mb*dAp$QASFD18okB1aiW-}Lo%jZ*sRNzxsGnedFZ~g% z+D}je2RIb;_e;f=l^Q%f=X`<;+1QaI>C-wP`h;stGPb%sc@lPitoSYCuR|wN0!v#$ zkJhi%zk7eqp-tlyUy2(sl_Y;a4=fI$Jegc9hYGVoI23T62aRx>D7 z9&H(xxs~{3SG#OMR&g|*%H?s$lW2yOBUXz;5=|OG3RnE7;&_>Dj0321j4y_lldfS} z+1jSMlj%~O>{94X&j$^Al?K)Ho$H}v$x}M;bDUIUVp*H{ZwSBGl2b9$=e)xZz@kJH zak)GZ5NHU(+)B2>$AjMhiHUB7F!mZ-8e=?rB_czVfcAnDAR~-Y>*n8iTqYs z5d{u*Jg(wPC6!f^QNI>w=?Tl0k~{3};0-tHulYO{2RQf&_VqtYe#a*>8Tc1|*JBDr1o+Rl+Z2=|szw4x zw_yNTZBML}j4e)3zh3SSA8?O)$U+@Jk1(@Ru>QzWj#EyF#7+8<^%-aZTj#HSUHilP z^Mw=Mx*FnfrQyzz!6cr+iR(*PBMIC!9-W+XWz};VscJCGiu#F6Eu@#cjvqaAQo?(` z=eFI=gl1;c_*itSZEPhg)bm-i;qr`WV}$nc{ED&ECihb{l!sbH0#LU!mFzoB?fWk1 z9UL%4g~8Dx1`UqTIjdC*k6!bRJdzpY(ilLJ5}LIM2ya8&1FrLbUOzAp%}c#s|M}<| z7O&h>H!5rcymK`ms)8W$IgY0h(ZBVvX6&6Nhxd94B=Gw0aA4kY*-x_~@4$*b&*JOD z=Qc$zbKE3uPwnm*hJZ~wlDfMM&;Ky}K(Xu=alg=k{=PFy*D`J$lSQ)oyZS#>z! zvp@BUygr~b{TPP8+vFf*bEuo;aV6Cu=kRdSZJDWDudu1B}B4I_?p4SRQ>xkgUutwq#T2%YzAF1v?ee;?#E&* zPBqC8DqZO-2^ypr2xu)s5sg6{-yr1kMrnPh@OX0O1J|Z(`-H)%pPsc8h_`E2o@7({hQj6&kkH6PWc}77z&=mxEpxH9_>R4R z+P`YPVH^os$Am%tq@shvdUG?)?%>Qy7u)`T>t#O%N3OhL+wmF>h7dzKA*0oLa>ri0 zQhFzY?$z18O-Ys=66sjgaloo$Y8jKBJo$(p`VGHFx(X|C%|8uW)z);h4c%wVsuL0T z#9;?&F|`FZ&Z8dhVft6VQbxqqN1nwXj=>*%9~_OFj+*{+S``Cs!C}~KYJB9YwXE0( z6lwqPH-BZ=^ApnDQ(N7);C%&1o_?s@29FS_(a17_y(0bA-vDfc*V!Js zshabrm6i9L%WuTs^pP=F+`z%)+Jm(NE>XDzQVq~6kOcg(*sA>3a=LRZs{p5Yo6Se& zEXtsi)if|g{I(8F2IC;pnZ5M8emsA)|MrvEyYs&3^Tp{(&Werq@s2m}TT;jNW6ax9 zc#mQdz-cbqsq|l;aQa;O>i;}_{JE{()ZBGY#ihb^sZxF;&V?8vBo0Q1Kn#l2^^eg^ zngKAHZ4Hga=P-YW2NNLd?6CT)>T`ezg7nig#Q*Bk@DmG^=1&r@YqBim5Z~@b7Hp!}sbgThq136x9FR_G26uG`7&R z{KC?;#Rts$Fzm4=1CSp7DdBEMV*p5xe^Iv5=m3M+EMJ4!9aQ@w`vSFVNE69c$C5^p z3w6Z@a{aK8vvp~yC0fG&sx8|HEE3RVpQ7WV3rZ!Qx`~^s3)?9Go0t+*tGzPq&&$+x zwYU6@JtCBOyIju4ZuNGER9@{1cdiIUC;30 z*4vjf*TKAvo4<>^Js+i>Uvcz>32Osd%$#B%0CU>UsIUzRkZbB5OiiK+pHfA(F_wy% zsvMLobj(X{;oRKmsdfps#?1{6rsgm`D8WQ_x>5;`ruqSLrAPTrZ;iSLwRwOa#TYv@ zua8UH+^g8$3gj`J4bN!yb6LLB7fR{)Ly{TO5jUPxJhO@OME_3K2Y|#R@yS{{GU0<2 zb(hI!^QCpHUh<={PhYB1nxHv{6{i_G8G+aLe>kSWROc*E}`5JYr3!#C*93x%#3lKxt( z2vb9Hh#!<99E^PBn-sVP*D}>#9t30%+vM-H6^T(+SOA!-Ruz3AN**=ITG=tIg&|T(9_V)=+T}adv_&R!do7C2=#y$(JxKXYd??9gF-3Tb@j-a6f-stg|Ps` zQMHiY%*LTYdIGn}jY85|6ITxGuU6onXA?)$o?m5$ z3lIRrRy3(JrDy_@Us`2kw-1I~0KJ%F=m!Yo+@r3q5ZGcw2m{!tM#ala^$;M!TPTG| zOTiduVvSy0PBW+Xqf{8s4IZ!*@nSk>{$*HWk4-2BJtq8PSTDcYK!-g^m3h*`3D7tgBuf$-r3D|F6KZ|h9q+faTmr+%` zK?o7jD5=xsFYI-f1OjVeu!~8bP6RJ?P*4M&(uWm;d;mW=;Sgct;;cN;w=#q=A4Bm& z-e7#GpgG^tWK4DQzq`hm03z6p0O<<>GdWruG8i>;L9EHJ@(yPR{tLeQ~7V30A3u1ZH5^T30R|lA zVDX0nD8?0yC91?2|0=R#TceXiw9MG^pCP3f^JYrnf0E!4mCc)R@d1E~DAJ>oVs?mr zDXgXy0X7l5Xnr2$IiOnsU~R{hsdA7U4~UPQ^Z|uIm4`%p6yW4CIPCu{xn@Y_GR_A0 z+jJ$w+3ZL89{%H;RP=e@pH~s>iACedl8MF$7&6NJ>Gd5~_KQjBVNUi|9xgl@Y+{td z!bIRdm-2hwhJD`Q-@MNtYIXE-pB!r#mcl|Pd0plmaa?hk zwJh2%g;$!Yz^+c(rC9D-P%SvI?nNI#hH2W1Y$lYK>o)(Yq;$U_KK(o^zcjWSXVHbj z6YE5$2v99nk@(9fQmffQX~`{5K+(;=>(A;*{C+33kHDed`E#bQ_?<}lRfM?KoETLV zrIJD;^)E=ib;{QyciVC(RK2%n<)=1)cR#0YE;Rpf>LAzSHUiiyIbR0!IdcQt7`(6+ z%u+ZpG;qtnWWX5rNQF)6j}{hR9*ySA1S@(6DBmqBp!0pj?rW=Ir>eC03ZC)Fqua|C zXFE!sHxE#qsNeoI9zQduch5NG*pBC(;}96L`vD!|d&XXDRkl33K}Zx%7Q{-Y$w-#A zYBUx)VS@O2@~;+Q1tih-LLZ%bUY}x687oQaN9LaDF@fB$>u`=&6c!wFRYpeBHZoN1i`yT0|HtgVcY^hO)dYx7--)XBc4trlZiy#@QRe~iR)e`3FiDAHO;7U%1K5~c%v1OSkvj!cpXG7Q)JhHU$1uD zVwrlnWju;w0u&+PoTp=%Py&-2McZD<-+4wrc{rnqB^NGTA)^c=yXI~kHzV%GjN4o1 zmBaQUz|8Kiggv5e(Jtc%V*G>61wvJ#NUf52(w|048v_@{n0twmWj|NVp}aSluf%&d z7S!XZ$*I#ap{uv-e0m%av>AE4G<|$`KOf1gQJGV*Ol6|CoL%1DAY9{JeJXQ2VSQsh zl$PCehc1wvL#>>t>F9aEHnO5wVa={RSD}~{AhVBqOuST9CNcKXsGgqDge{vj*mQnf zc%LRwmECb|cj0L^PcyOMeo=3sWI{9waknSZeSCdVt#!)WWN^FK>UH|P;x|f`*#>aw9VJA!&@1-+b+fCt-gs70%TgId zt=uSVTBv*~NJQ3Dr{}WzHJ@2ttY9j-7{amV1ob4#O<+G#V88I02CS*G6tieJ}ByH1r-EgH?+e~+E4lA>)z zaj2OSBEA4F@?obZf4cAKPXMQAV2!5J16+0$o6=)0(&}qX<%7zVcGuaun~h$fx_07- zR#`F{ZCmgC`CPfyXdgB?M^Re2#%K~3D@1kskUD|N=dtEo)8eD`N|(4>`n3%8o68uO zu*dqZ5Fs6tC-;k#@4R0bZ}HWA#ag9M=`YxIhLqnI>{?$A0K2|J$ggvM`6uH&&2Cfy z^FS{t|CRC92h$`ZFC>fxWW3?y!$|-c@1wZgq!j>}pf3?~0JEA*~i_#5>0dgD=@P2$m|J9rD>V9vE-5jF(*f5}=edXQi(Eo6EyC9EN z{-I^h|E?2+tuNQzH;vDwX%plF!N50H!Pcu$sirU#uQd7`a|M1TnfvTHpraPm{a3%| z_-+qS9Nr0?pd_X+vag6fDhLMeS5tpGRYm9(rm&B%nE5 z@75*Q%BFU-S(dVTh~6#=9}(vi1G_rl^J89pYjwk{yK_xli}NSJ2ZCw0>MfpC(Qw;b zgaZ#yCRV7f{{b7Ce}<+I+sGiD>C-`;-N%EiH3OJ~E9fLUYpyOx$n&-V3qv5^^}Bj) z=URJRG5n9)T}ER015Iq2<|sw|jo+k4e{HMu?Ez-?5je?HX=O0#hPowQpl(A-nXrgd z7Q27bDlVv64pkM-rpJCw57e@Y0wbe;h(beJcsc?TJZtNp0L!qqmf_T+XV?L+m;#j_j5p_Nv`0N8!um-(0PnttuhNxSiN*^0Ok5Spf((;OVDqqw{n1AE3-!d*VKTtQ&LrVUt>-0g zTjPF1)xNb}U_fJdSZG0ekZl7kU~s#7@ie*EKzgLk9V<20fU!ZUjGWm z659QI8|-Pqs$|V?3pLSTwSI}ps5;b|^?Xp2*?KW}wt&wf$ZSkaU!@QKszg(R=M08# z(5|Wq(?ara*OyiO^0Zf_EfMno3$JrXWADeXv+Z3==I8zq10I|o3n-r*X!xtG8=Gz@ z_0KjM9~ZADZRyzA#C>UQm0!RuzZiDG`dUILx}aE(v(2Jut<#+X>`MjbaK;MGA@Jhj zba6Y~OGHL%`E44DAbEv^5}AsE`D@A z9N*i_WJF6Yn`q9T4;QigVGf0W*cW=$j92>9?1vG_b^g;N_z8}AdZ_+q)`$MsNPiBA z2zS2t=QA-wBy-%uALg&bH`0AJafQ3AekxPq-Fo2){{>d+U%?B3{E@HI5dVRVVJs&WcTCPA>S``6-nkffm zWI|3F8vGsT@WqVe&-VgQtV^y2fYQKQW-iB??LG#Yc5j;gj#Fqih%YQz4qs2g4k%KS zwfh4%1y}hyw7Sj#9jHr>l_bX_8D*4Tc`qkUvJZ8+e@YWnro?0YuGb(lq-gtFp*s5I zW1AS+*n<$zG}%I$jpqY=YzRWsdDQu`beEKJKQaIh;1rsmD7feLuVu-BRky={Nz?!yF9pb7=r6Y$i6FW1g5LzZg! z?W)_Urpj# zd;*d`sM+gdvBRpXsVb_g?I4M$6lH|J7GG?c#AOG=IK+m*@!9DZ%=GnJz8v(y-AvVN zvQ<@RWt{-s19iaZ`ByatO}M;%(^3c`K#tg5%=An8gXa_dLLIB8jEDpjq!Ia-qT;AK z{?#)}&kjZUL5LIpkCPZ7)aC!RirtY81FBO45v8L5qTPL9eHd5$Y!TTE8=!|?EZcZH zJ5Ho<*oXA4qXe4LbW6vUPq@gW?q+&87gDYUC?!t~#)cJeLr=t4_z73V^+FkANdF^t zVv<+ts^*$UQo}xTZPOGQ+=Iv$=X~j+q^=v+#6bL3wG^kdcO7KWr$u z!`vR8DbQ@+FM6DwJowSC;=o@4bUzTb{Ouv~063gpda`q#nf*#uS_Th%)Uo@#%O>Ep zgD>f*P(|iuh}vyjKpaXBT}YhEVN&>NGO=aV4B%y#k^B~lBc7=g14P7|0TJ=RKNq9Y z()#EOc{K&=E~rcCWJ`lSTb|oMed+@{-Dp)%-#(s>c=1=g_kBKzxs^sH$lBs?lrrE+ zmIG%MtI9aImB=b(lh&rw%Lg9oA3NS0A-_3|9rKG2P<*e7YfLG3hnxfKF9SLk=(H1ux=|W z%P)L{6?+ls6=9~SmH9UrK_{^DEoMZg2=X_oVEt-74H zAJNkReB0a8L`~Ms)V#px*{{bu3lvKOgT5vag8x3S#43eVi7>lWZuPCU1%z+P-sI=K zd(mm>tAo?T`^d*aLo#Cu?z0z{3K8eby{_HDMO!zR9b@qD@W_drQAVZU60BdKIA8`fN}2W7YogWXgIAfEw+&N{O<~D>;D*^Of9@-v z@Rx&a+L-?xxs|LZ9s9-d{Eqg~**^;0bZgt3*?H#M5*(xyU>o@|@l$?B^gH(F3-sq< z{HHA}=tM@}S<8cJ4g?(a7{UO?eq4 ziBeIqaG(OO@~}49vek0;J!#ote^k!rRjgPg37fs!Nzr4}GmV*q-ZGG%HKl>cyXRh60dVDhM( zYyxFOBh@Lw$cF_@Q8xMgq|QI5L-V%SWQ!h#04rlEsZ;9sX`Da0=1FGh#$Qv8(xU@* zAI~t>zD{+VGbiQFp&=S=lpjE-2CteYh#E%B+KDI z@Wx8hl)9`qN^j<;eu^33y11z)8J^M55r;b+C6G1?7qlDOrt@SdB$Ab=%cq5u>2{vf znYOjbKyEu@{Z2-AOV$-6pRW2=+MMJVwxRq4I1btcub3o-rQPte(E}PbVL8fB7sMRC(*EA%@hJtrXO2O>V}K6z;Lf@{pr`aA zy@D@IbDhideVEK32lTz$+Vo!D?JvZWQGRAV^5562!Q{(z_H7gY@2s?@+%2DN(LS<+ z8(GHpoSow{mA;3W`|CaPW62p<4{s_CoH`xbm-F8%WYeBbdbglL`*v>oA6Ee^Sb;1` zpjMU)e%fJHBGN3m)KUwB;ODv-_@-;;U3#48)b(2f;TC7Uts?Mh+@}~g)z7CAPXnkr zo947E(H@7nid2UMu{Q~ebgU41(;`3)NMHP|qvRn=V<+9{Ff+_Kn~>n=j(|34lJPwr za+AqGR2=qkjhU0D?=a0i-V5E&;Mby(dlM_V9t{ZF-pQCp%iHoBQY1}Q#s|zc2 z%Lw3TBlY{$#$%$MVZ=dhBolzl#2JYO3yI*iQcd>-zIqLLP-GYOhVg{8_1=^iL#6bQ zxJ>uNBDpO?j^xTA+Jvf#ZQl%y5D@%$v%j{YNKH#0Q_93Wa<&62nCY#W{LK+lpY?ry zjeGqvOEAYdOa>sU1*v)_2^QihGLk{*6KcO5ARA;j(Q=&!p{@S{$Z8E3jqgi_l=9NW z--2Y~(T5uyNL+Sgq5J71-m$%=990D&K~MT_lLR68icI50cy}YP_F^PYj1*>Q-i>*V zfst7ycQB_H>nW0LSpY*D18_ovS^Yt#4&=!=E7VHm(f?>_|1V9gp;oM={si0;DbI%9 zkC_}aWE70x4;vb`_%%7b@x(1sJINyl`Wj8c29vY1ZoSF*@f>z76HwFhQMd$C!+R7Z zQZZ)pIljWGF?FE=t6k%F-6!i?)AK{es?o+Kc&3@J_07M==G(`Deyc03r#i^nGNzAr z&ywZN&hLp61#a}AP_0vNl)-3%K}R_Y3;mVB?Cez}R7w#dd}pkU!TG`JFfa5vS;AFw z8A7U$*^A+&Z@1Qq>pPzpG5g6op6dj5?5d8^)x?hv2O%eBnde!&edFgUlkma;4#14z zLUY1o4~#q(1r0LC?l%y_>?>leA(mo0#fiCUaRL(TEFv}Z%R&OL2$|FCXefl;k_ z$XeZ$e$i7CMwYYO55Ww^WHn^At|+n)TnawNRAr{lE=>j{b?B)mwGf!?Jrb$DDl#@rm|!lj^1GTF*?^ERg&z^VVQ{RG$O1o7 zJ?ZZ}*wDctwa)H!bL$>AjBRP3xMb6Zb_~gG3CC-1rH?jb7lrJNT$mysLqS!7v3KtAm$T{AGSG z$r-aUUCyWXvT`okKTeh{t!X6}Bi(g)_-0W{~LwM4FT2fg*VlmP1ouyh;m+(K7OlJjImyZ@b-Lrdu8p+ z{$Q}itno`!YBeW@2%42>jGT=Zl>7k}PxK2+TuF(47~fLW7$RTY-gJyUupsKMP-ZQ3 z88g(F9^KDh8M!1O$=DuEWv5E96y;b*HjO&Ag=eRj1{Mp2=pyV$)NGBr0M@8#eq9C3 zh9dNj1cHI^!bntXbz2xc(=Xj_O(0kRk6p|kTLl(^iY*vH@YykT_V_%-=}WuPD?<>C zj006+yBaG@g`w=+)Z>S56hJ+tuf+CsiCI`{hZ0rU^ZW~JA%>@+hEiaxtuKW1ljc!r z58qV1IZBk{=M4YZji}Vd=fyz!$qNx(jZ@VE&`LT79uU)GW2gwo#tGBv>&3w1wv=S9mhToe(Z~%q@G&eLuI}Aa*UVEtF(n&8HSm(m3>d#+h2oi=z=^(#x0?;B2Op4_I@ct{S>-1?>MOq<8{IEn1e$1DsLU z{M3~@fNhYxLeuwV}SEVqAJssaKR3 zWhWnU3tef~3era2<-#5ILE(#dn3MexWx7sisBzn0^VwI-zx45{orIfpbYRbD`8>>o z(PcB>`p_Y-n4VrNNMLem)ufq#3pGg3Tg5%_-w&3U6*~aTx_@oP9Qe!5zs;Hh&wh@& zpzKhLhh({pKzIL~0ZSQ&J~8QqpIA~fX}hGcf1zG+!MC5zb3j6J=7<9!FgVx}u~q-= z*-J<^x4Epiw3&=x$uNgzA)6$KpC|BPkyM}*?HGW|4A`UuH9tGqy&iwzyHc}?>7g92 z$}L~!s*<9VSv37U;{C3lsk^&}Y-}2BtQ*r4LjA8_47N=H-?6NEFYVs1kC~QKRa_*I z;45(J?}`V;OhA2JUmA3GKa7omNXPv-%D-ZpGxi>*7E&O?><978?u*NQx8)2o(qj$kx`8*1^)u(8%Fm zUl^JGk>2UjHXAJHBUi7;fi&zz#bRA+rSimPTd)_XL}PO2qoa*PzWGeyP8V4$_+a3M zd|0|e?xqp?tLwP#=nww5&SxWOSyyziiRY{036;+61PO466g)G6;cw4ZA%Qj8XJjyc zOGgh9LnI$iT0zNU=A9=y_U4Z_rVe$#|BkEsu% zP#LfMRdF~+BQ54lGDUtxR+$hUIQk|*+1}KQ|ERw$tqRNkX9*F}q2hXG`XJ|fx&lpD zq=L6Ryj?cFSqYNpUw6zcY4Q}(&|E2qDVGDP7UgQ=DAS0hCGMGKu%hxo4_4vkq^3aY zkIEH9eCv>8t8X%hnCi+^rsR{3Nso?sEC<`%`tc^i*RH0D!P|v##GMo5wIf}btHKyW zD=zbYT!iv3%}PLC@|rYTa3Ium>1dV}e_lw!-wRHNthRteQo+LtOoaS^0k)FQ5E>Vv zv6*N3Rt~T3FETGbBYx#f6J=(Wk9$lJu`!iOuZ6Iczcma5}D_ z#5#5K{ld|dIKq0|WfHRuo6h`=#SCK5>YmhH3KN*)GENBLP<|#ix=oyOyc~&<#d*+# z6ZIhhAu4NbZQ1~C%VC^sT6|K$P9BKmWNkI0h1DjD+0cjD3NCR+W*xT?6h6MH#N3~n z&$Tfld^WtWwwIf~es;X4QxcTG3dYW(kf4tZw~xIZMEt4hL4* zF$}oShVR>tm%0!SfWZ2whO3cWr$Gs+?ftXO_V(&7zUhuyGTOf)sZWm5S1 zK^3k1!7HdlgcPjTdejuYM;?tnBU1H`%(e2kBSk`jBijL}=z)m-iA$pQBodah_N;8G)B@3+>wI z)I?-*u{g82D&JC(#xTH?k__~$l4sQ64(2?()8_&Oqz+I{e}ul_GaT{#U|1(WfUVk_ z2$)-_>C@@q#`FFxRkgQQ_mGYeT^mFBQ(BHu>&lzkb)Z(qnL@fT+q5N+P~RiUFj@MvrsF00(ijm9naXRTNnTP}zXsHds%gd2yx=-Y*^&jDk+2nvAqXQU zey>@6|712=PWb3qH2#fg75o_mN{s&QiYH}45F(5BLuWF_fAt}eYs1#=<@|Maz&%9s z#Gz;=V#$Q5Vy4*(0r+C0`syUH2=R|Zt}MbIOMDlF?o6Y4xL~-4A9%dL1t~j`*?7Kl z4FP~)qZL=xf~g)y6#c`JpIFgCk_@e8NtOXe6fIu~JyfiTOxn+^YR8w|Ee`HYA7=N5 z>x+!JnwSt;?H(_Or>%j#kBSx>5uXpH&DUq!s}zUtP2Fid>`SDdp5duaiH2C*TS@}< z;zRA;i9?+hwe0%&`n3<^JO9z8jJp{bS8QmKq-ssstmm2;RA!l7 z!O)ebr_rjOCzEt#ON=)eOc!+KQy0^z!kOc9BP^ zP2`~p<&*-5Pn5-tM(%l7&k=Va02GVgoyecsI&TSQVTDn|Zx$;o5zm%$OaXAyZ(U{! z-y+)6#EqKH6(5vU-9;G|_G^--cq10}u?pnq?6qCfhHa>1+qdh@LOop~fys}aX}@1m z0Qt>z=4Ve}B%>|r${pbp^eUi)7q3lPf#S0LYfpOkVa4wP zbF(SEl5sEuiZ|XjQ3>Mcu#KqJKZ2oIW0#h@FB?o9){hDYs^PZ^sTvn-D2=EqET>S* zK~*V0KG7oPzjQM|X{EoUU3)8n+ejw~-d_n?7Yt@wR;argq%EGzTnTj^JVIuWva_A# z0HWG0T~faW+Is+@TlQ_YV>sSrLL0adq}dk@g{vR}+!pV=8GaR5qp+FNys4poik6Di z6-MTu*8+PJ8qR-2D_i~g+>*W%4$^TIatr9CtNIM= zg;)Vtb50he>()vCx=hRT-8v#GrM5B7u6LHWUN$1&)a#4!(CE{V1)lB72kShn|269% zLVDPvW}*Stck^oHQ-I0i@LqU#vg_>1aV3I!69a&%+s2YO@ zTN)#XBEdlP)Qf!xhBkE&+KZf}*z@$~jzF4@^)CRCtMS&g=rcqTVG4+`T zOe&}TZmHY(bIUa)#MebF&Pe>yK9^t!d5mC}VlWVt0Fq_2fIlejoJq=S-*^nkxD$?GOepJ8kU~2tkWdosTO4ZQi6(8;|b@1 z!m;tB$UUf0Xe5Ce40zLoSMn)gau}@itd-TgWhJn9+zfv1v2Rq@Her5#ekgerfk*S6 z*Xxw~VKw}^(OHg$`|*y(d7h#5;FzUk4uZtyzh%WAG2!DEsC!tr>>Da17BD{2!5nE0 z;W(%c60F({l~iGR?M-eD#pwcDqS)v-;|$~v!cHdra#Rg5jJVwHX)lEwG|#eA2$u_8 z{I2`bed$`|5$O|%#kK2F(d#|)WMD*mIYoA~Z7Xr{+c8j|&`Ee+ar&U2cLkYwe~%pM z2+@e|B%e9*qIG|?oz1pTEQ^zoc6s5WpsG*2t4w;D!+F|P%NIO>R4JTJDWvbu9&EOP z=I4{GjlgkA^t4&vw78UG^>})rohzAR_UyCS$=g=(r@M*aOkLFfYGX|CZ1eIGHwoov)3(F=LFB>oa|lx}9Mo4}C?y0_=spw0$H z=41xtAFHi}Z>NiVGd%X>g1B8AproJul(eoo)UJm?ci{r2q#3ZmVn{Pw1P;ssM-r9= z$K~K8skLtXM<%vYI+e9L<{u9+0Z8r37JoYxNVyw)`c0?;3uWRE%ekrfkfNVOxFQ1S zkVEl;<{Z=nzL)7B${&Xtp_Pr0gbi;453^9JB+$ezo`?-Y-VZSEdR;d~61EUhA~C3~QDR=!y{T@!*O-S{%Y8!t$MA z>xhe)=!?*-C5TRWqb1*C0Dp)A$H&`b$Li^d(x-Ce;eDlpOU&!SgnmwJl0ibsERtK{ zv!vzz9`kxdyRPKy{uqlsRjy31bO1y|vk@{-EFL)M5-sE%yIUsZUr&G^jjcI1qBVn0 zUywF-m7q{D4U?k|;^FowceuG?DZh360z z%yX~-luygH^i|SsFXFl?=nrEhQzUn&vGi>e4Q4EZ*qBec5(&jCVkV~VT6Nwy_s56Q zAy!6n1^`cE?+6>sL)sOBj+g%lZwg`qUxo53F10r`pyg42N5&~3R`-(PkO6ga$%Ksj z*-QTb9{V>l7=4e8@TYsw8QR)(3HLOcdJ^Tbe>;XkO+pRt);csQ(tY%VxXKTtn20Q!%R%7-bJhvgXMa!FAKxZd@{6qHALV~9VCGq ziTNBP!}3X+*V)k1=<(wN`LWsHrzAlr9O^}vSC6xrNXU-JoC@zDaE>N(j*t{TSR_9j z^BK5G`>oEVroPJS!I4*!8h!E8ZgjiSXI<-Ru6+Nyvex~Mimy-WUeD%!g6HW{OF+mo zJc&LZL`Hm#e&tvc8$^()xuJ-6?XI^NJ_E7msl7fQ639yj=Ip4WC*q3Z+tW=B`s|H~ ziyq5DzRF;EMc83vjkWL-vM#N&FyzuMi$cWeWZyC;emoVCI5eAJJbm2n>KpUA3Q+@) zn4@Htf#x*E1vL_Ah=w#s3r2f=MqaOsF)XK)sYr{a0Ko5Fos5W#%1XBR#o!tAC>Ztb z5d=rNoTIYleE+A{M@4TV>0p3+TM&w+ZjF;`+ha7ls@CPz_oC({2JgiNcM0!8##4M= zXTG)Hgd!X&O@CtR4l*rQ7j?qNs#dEYOfHC}Sqxt&Pt0*)y`|&V5_IxOEOI&XzIA9hf04!kf>xHCgeWG;YqXYtJZ@Oh&}?WWl{2bd32j|G z?qIksmLa&g(eM0#%h`4$5 zP{lmCVNGZ4iG7RXc<)t_xxb+dMv`A>N3Sh!bpS;NIM& z%!}-#%&m5K{1GLd8ZWi?h9E0qZ8|c6tk1JXLbJt^2rQAIm86l(^Awf4D2m!Ue7Z*7 z%)iktEdSCjfU^Ek6z{7V^y?wD+%V(dfeZwaYv~QJ_2JsBZbn2S=v=X+LYy|)HN_wG zcHzVut_iw_d~5DVCAQyI+Ss5ib>0+S$mKut(Bs?XyW{Io++YOr2h;XUpQc=(4OC(=-R;3B^!OdqD8R0~G*Hpi4JNxHP5&pH< zScGnq;$L}(Ti(B**aH4po_)k1VNA$~(foh7d#C6~+pTRoR>!uTbc~K|+ji1PI<{?_ z9ox1#>DW#xwq5a`=ULz8|L&~KwO^y^8dWvMJ&)_e1gOb!9#ok>sMs-BWm`*$f*fpmVb5=^#ZN}^^|`K;*^~E}o2Z`iY@OUVt%9VN$YXh6gXYS| zU8R_pcG4Qz?IV!+Ud;8%I9^c<`J~sH2LR)YVD<)sso#*|GopBH8ZMN>9 zuCpRw3zHvaNCL7dL}x-s%?-q z(RikFp<3cdxK!{jY>_ZYbG5&m0KqIB6{Q>m;q?T;%mmS&8JjB7f-3sf;{VlK^+he$ z%qzBJbqFngE!|?QpZw3Zuv`4_styC@dD{pGfvufv_2=ms!Ye`fn@JnFAa{4gKWC&} zInE%$h2lS&e*qYnakgVqUCtF_*(?l?RwKIRbr|q3R9|@ss`CrKcntEqw}eYpCUCu) z%e}4T;PZh3WRV8DPwTst2YY2P*VBcH{T)MDZ*BWD$ADK2p$q?kTUe@-ohj2h_Wd$9 zUj83_!EdmjxJJ}M)I^b%V!?ljg8;;&&>`z30zx6s$V2_9kng$- z0zp6UpI?joC6GtIqwxIbTYjq4w*_~v&25V_SbDnjwCCu@sMU6GGXSx7Ti4ryqEXy> zwSV{d&VPGw%&jCXeIza!NKSl>I7CK%2NUv$z?~1S!#ov_V`Uymvr$<3i>}-IJ5}wk zC{bk51m{AH-GrGX1@eKt^cF7h<2u*X=Jc@Mq0)sw-DYR2MEynJ^% zsSIM-eIX{#m3~(4B_z%V7VchWXL(ZRDJs#UhB6qq5Y9p;@gu6@yKbz@tQ?>!;MP;# zW)%!U2fS?k%0rup4osEY0a+JtzJqfSuEOf5%OWtLHSqUMhU_lf9-ZO`o<}h=|W&xpgneV;r2jnwwT|^J98m2T@FtOar=ae+#?V>}aV$MVr4;1!mHer6(fU z>M(lZ0475wLTlO#5-z@;%j8a_?67vJOF^ym(aBp_<3;Oh*?3WDSd)KniLbn9E{iu- zfd@Q^m8S$GX_Tqu#8H7icBKKTdMU#=p}N8pRpvc9_G-GWSeu|Wl?X<{+2y5YZmc@0R?lA1d%~O8-J-6-(Y?Ic zSCA6|M2Wtd*J(X_TY@$(j9PWj%d?8tb3GzEi#@O5o9>Dwr%pDGkBg79oZe;|H#{~% zz8h;i*+@!iF}x>%j@nA-*O(YAz|wq>&(p^f;4m!6$L%TS>1{d4$No;l=W0{xk9Et> zi7^iI~V22}zv z#sK%Bcn;@#In{mGjV+LqGDx4{zt62SlU(ZkTV{V|L!-1~!8^<$B;=9_>G*H7{!m4e z@y`klm8$RydzWwO_$~Xqs2iYOWm-G`?P{YRdO${ zzW??^wtA5yejvp^juqvWZSIVhzI`5t4UKim3~CI`*4G$r6{|A-rc8rm&qx?f>lSDM zw+fkweE=Jfxd~m(|7K@whZ`OErG5^+^uBI|p@E8g_I?S{t{0i$?enB>+-+}WH{jK-Gcv}9(6yzLQnEMzS0Twso@iCftUwEZ4m z$8)>`gC&%YND3C98WgzB-Fo660+oJ>c_li#^5a{v@7g#f;&7H8iqc#E{d`IAQM$Fv zh_-TXhf*b4FowcNVm)}dg2>1F`g;}b1eMu`9L00nLXNy$Y&XeY>0L~jk6bhp`^O^m z^EBh1)8lOM1)s)w_pW(&UJ$OU9rD~1ygMQSk0j1x;m-FF$)W`jU@A5PqSEoC{QzhGXi1!eN39nX zEPZ9s$U;%+nRYaqc^O889PvOo7($2~X*jr(#95lc`NI3Twa}+l`=kPuxiI->h+{U% zNH`>eL(W!j=m1p+A0}dry)&PR z?nk0hG76wrm540YofL5!r&UosnHaVGE@MA3*yq6Pp6HCL%40NzWL)NB5A7-~4TQd2 zoq=FTGek$p_uEg_tD>N0Zp$}KP(6~?W&fx8)AuIKL#F}_%dW1oo=wMPBKNQ4$?N@1 zTdmt!o?ACG`xRgc;|dV_dOEAIEMHXmV*f1_bE?9F???f8^Cd{Tqj~qKyKF7iT<+N* z1#Z|FWFVHb34zaT@4u^Q`*+CxA0rFOxf#r#a3COauKx#F{JY!yBIiP3U6OEQ>uV3# zEuLnMH1D3pf-_{YYKmuP*?kkEg59oQQ*2Hn0>YE^x(uCmhjn|1jy5C*-$Ou68N+wQ zhB*Mi`&o?jyk_hi7i#7*Jb#{#E^2VFQdt%=_K~92UqGME2c(m9*^96_J2f?;TA-j zAuc&GSMD4s+~tdX-K9F-rErsU-@?nElt+%sHHYF!^X8HKo$WlaMl%#PAE8NEQ*vA% zr?rQr`0-MIxc-95OyfGlMlEVAL_ITBd-#zoDft`d!)WmU?6;zz6XRH8b{Z#-x5k5?%|6Df~kQz5Vs>Aq3iFf zEi$6oG$%XhUWFQ2fa--i#U|YUcVp2!nn;0T+pu{yKCTO z5UoNatTawi^O};zp_wsOKaSLjkia$Gj!X;$B6?D2Eya(mR5KDyGi-LRA3mZwGKJoR~`l#yGN$VhWwk=x;79YXw08P4|Y(HWkYwLft z_H5@}ZmeWmP_aDl8D8Wb-ZLGRI!P@_JJOyo8xt#hW@fiaN3&j9YE4%gNZ|5aZ?Dxi zEo;^IHknjE+*{TYm?5bk{`y2YLjDeW$?>{9JDd9HRt9pcKMV#Co{~J1BAeQA8#jID zQQTzMNm+d1T8`5py8B{_yBZ3Jm&A)&C;t2c`TXK||Ily^cYVG@OS!|}em`jDBojSA z^|0sk?E^So(Jf#UBJP-%8<`vq#p-&Ytt&fCt-i$*5$#qJ2x3MRDGp7;8ES@?8#qsP z&W(0%fCJ3LQYqTW{13&*h1(Ik{*nn@%ZPqSA}>DL+aySfhZHSteM!dUEvo(Yt=2MT z{^MrK)SwMILo!*53ZH|uk^a2YNz-CXyk?z%n5_BDy;`VVdRik$05WaYU)48|N8}2y z;0GZ@PgSqSW(VbLRZ6OYGOz0byK0rD#p^;ltz>d7%=HsB2N^VDBNELhA)J17*P+tZoh2gJiDh(&CCUUAH|-^50WcCu$Pd&$QWo7t zhR~R=978*=(hF8hjrI70Ps^QH4<%e&2P;y8E}-XAS*l{;qRm*5`dj@@9cL18PvVZg zC;Phaf7_80vnv}YtA3&i9Ulg-7W@~waVDkTb? zHiH$f@cmj+uANFyL6}N~>x+fGGNdclA*hA*O8Xs)(RSBu8k7d}FQZMqs~>dlJCm$* zh;?ySuba(z<$JgF0khnbw(c2!;kW)4#ayl1-h_02DH1(~4ZxSqi0W6<9@1}*1MS(I3R=NtTUR!oMM3Jvv zix-<;XX?AspI@{Wn7KE6s|eQsxG}ye3qE!_=^+_25|@ot2teSD`jWr;kiUX1V}u-Z zgiiaBzXmbBnzm|gzNRFn3Y~%ZZ*^1ldSmDI+_l2ayCN)SHL#{)4TQ&{#=l*@t#a&R zs3mH_iI6`h>^~*!Lw9MRr*h))eQ} z4`Z;GMZleYd&tX{q=xO`c?grtN+x?C0(n5vY@4t|(0Lcx5m5e&YWhXB@1S(-13=6Q zh!DS@&rPZ~2chwi-~gOo)vM;NvE&>FO^K=Jz3%0m6hJr zlx{^iau(VM3h07^ebmf+^W)5BK-L3?5^!_UhBCci|4{8K7HjBXjUFc&jiUpGk@n%) zILDR>uYN`<0^Qey@=O7lHFp9+Sm1j3C)e^Tsb=Ip5B45i58R+HNKGya`{u|uj(Zwf zndFr@gSjsEB+4F--|7lyIayO3@Lyy*P!vjoxj%TVPqDdmKlu1eUCB_{$`O&R^$`j`H;-D3hi8^cLqVi zlQ7eZgd>17lvn?zrfpdBa6|MI>9j0)`j(R|a#=gdwS+ku1@|NVTIS=fsYMq8*qgEz zrPkHGM+J-Q8im-^9kf+-aWzZ71FZwp0`1-Uy=uI8F$V);+O15N>|lhn?H09od$)6@ z5q}R!%oDYEVW7n-LvecoPJAHO)x-tX*A$&s1#-x=lgD}UgdwQ@%{`(dKSjzaCHWFs zoE+3c3ZW`N1wr;j;oQ8k$!+PXHIgKQ@~G{Oh+q`E}{fnfZT==KroGzRfr3jRx195 zPd8atC4O$ZA|YOYZ;W1^&_s46l29Z+vq*UAET3g3ooZy21WI_=ESFRR3Ae9sG7|nm z6uPHWn{2yUWUa+N7%#uOnZW&V`NaFgJI&{PcHy}QRatVRQ={@D2oP-Hf0De>a6peW z_2yabE-wK7*7s{H^n%-bXCm_?&*SxN8c;C_bj4YyY}uQ}4%v7hE}PuH^F8U%Vt?b@ z%sg4Bbp7*CA->&v;yM1@V6jn`eNd4zf?V-jVZ_zm=3|@u$Uc29N5up-?h@*<8#5Q7 zQ?5yISD>R^o+(eveIv_ry3lL4__p!fYRy_K);Y2DzLsc_*|lG#e`_7p49Up-R=Eg? zqR%)_gUj;WWzj#T%WazvYK`dFQw_FY3tZzfDowA~ zg>EJ#`ZpDCo7Jj<-SIpl$i+<1OWc2W1+16A6)UhDVbBmxAdUpBs^jO0Lpli6M%}zB zJbZtRI#>E*!EsH~Lvnp|*T2XJAgisb0hfDhbPfv4)@PyZpVzW40@MZ>_9Lr)=yV}J z0W>CEft7o=)4O%R;VRV$W#qh)cRU+b-#YWGf=#tXuqu{Midl9sVkRC7Hff4^*aDR3 zmo95{_v%Qq^_y&ya{ZBYx?9J{@WgEl}N;`wEUn9t4GpW2#9h=*@> z9x<(*hpEe$yxWkE*)~{?OweCF<(m(1?aJE+eF)QK7>*xA>hRO(Pn(ZHVgR}O- z?tOJ>1heElIkV4er4dlRek+OOKOJaS;D#vsBC(Y-Nc$p*=j-?xs)Wlbu)>ErQKam^H$8q*IhLRSHhjfiS4C!9&kfmeCG&^x5eGh&tbHYY1`rPQ|!&=%qmvi2PGH z{L>~pfAv>`uR-hdbw*y!I)DQ~&RtPfAa#tJUd5aJ`Yy&}i8i5X^^3Wtav%Mpu#UjN$_m( zO-ab;mbq(P`+trIBi?0hYg-^*R@;jCiNN;3&_hGmus0efPYBmM-|GXfDc#=}_YNQ5 zfw_3E1k(~}gJ+OOQOSPj%Vz`#GpEG)DbXM?Obf&dPoiupB$1&>BDi$4alGTGUw$PGM!~a>yI&^I!Fd3yOK*e$B-|a(!sl7;A2N3@(<*yG<$T z5R`>Z`5Hk;a){B_d4a@nwisLrN6pV%<-rPhs8di}y3_iw8s!CLv= ze7Y7dlgo}B$W5CGz%GK_b>-r=(35*Df03utzyh9p`FnP(qIgjajqDLG!@X0<2`qxd zJd>N2crt_e;KCXXmHM9mG_h0N3=e0kQ4|Of$I=8SD*qP%grq?mV?ww#EZUN8gGPJO&IR8ywSFVo;(fGGtf;f}b6nD%)@9 z`7+$P3b11OK+3kLJl)5C!+EfsVW+<}sOZ1~^kA*&BwXNrKN~Z%BuG!{Cbs7iJAG$8 zYoE#oqsWrs5D2#ZIF<*>6+Q#+?t`a7wWeP;i^4+L<{nxEV3bmRg#D_@KBx?w;unBdkrT5ywn0pfa^m`nOU)*t4M8h~H?o7f@$M^!i zd(r#PDnoa$tu#|(wwdqv@w|S~yhtR)Yv(H-9~D|H-ZLG|keQt^OH_W`>#Nnw6|@Ew zJWnckd=~y>i_Hi!5tXS&i01x7ny+UO!S&;)v zdR4-Or{A~UNE3)dS=Ck+g5u zeEi}Nu)D(i(lv#ZqNPbF3@m}Dbc13gVi9ug*be4|!xL2gs>UP7#@X@TA9p@mLf6Un z!wDTkx7xezUDaO%@CxEiaL!Cb`(;s7;}=HUabr3DNc;Tsd|;ltNnmg{U#-%N)q)~m zRPOD(pUEn7DQlT0BpoAOgsP@PwvyIiqUi_}>spo6FM9k_a!VzJAy;9!S?&*|#s=0X zO%?wv8&A8&yoTdPi}8Kz8El|4Ytnw%pu5df{rd=5H8kU(y?om)ht{6=l4BbK8rLEK zBtQ#kF3j}Wvw3>oIEF3J5y5tT)6VfPPd zrUFhfKhnc0gMN`eZ#x)E!jDYT6fSPBHyKcm=t?3V_1}Xf-ows4KXkGUUi5N}T^mC7 zO=GNqwq%iapU#!fPexpr`+bBihJL`F=ALhvpB^}u{9fIiDf$RXXx5US;vZ~h=mW&X z9W8nFNJiAI!DEwX$_URV3-O{aPW69C_FOzUfN9o$X;ye=la}8WqYispbgs4_b_yR3 z)8exHqKnaDg}6uQMLZ9IY4m<@njeEy)tzx! z2Is*F_JP+olh?CH+X%=tpHB}O(?V^tAoZSk33k(dZy;wDSaSuI!P~G#@6YW8>cJ

- +
@@ -72,7 +73,7 @@ export function ManagerApprovalQueuePage() { 5
- ⚠ AI 차단 플래그 + AI 차단 플래그 4
@@ -83,7 +84,7 @@ export function ManagerApprovalQueuePage() {

제출 서류 목록 ({hall})

- +
@@ -114,9 +115,9 @@ export function ManagerApprovalQueuePage() { @@ -169,7 +170,7 @@ export function ManagerApprovalQueuePage() {
- +

AI 최적화 분석

diff --git a/src/frontend/src/screens/approval/ReviewDetailsPage.tsx b/src/frontend/src/screens/approval/ReviewDetailsPage.tsx index 3d0172a..6c7dd95 100644 --- a/src/frontend/src/screens/approval/ReviewDetailsPage.tsx +++ b/src/frontend/src/screens/approval/ReviewDetailsPage.tsx @@ -2,6 +2,14 @@ import { useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { Button } from '../../components/ui/Button'; import { AiLabel } from '../../components/ui/Badge'; +import { + IconChevronRight, + IconDownload, + IconExpand, + IconMinus, + IconPlus, + IconSpark, +} from '../../components/ui/icons'; import './review-details.css'; /* @@ -48,9 +56,9 @@ export function ReviewDetailsPage() {

@@ -60,7 +68,7 @@ export function ReviewDetailsPage() { 일자: 07.10
- @@ -87,7 +95,7 @@ export function ReviewDetailsPage() { onClick={() => setOverlay((o) => !o)} aria-pressed={overlay} > - AI 위반 오버레이 + AI 위반 오버레이
- - - + + +
diff --git a/src/frontend/src/screens/compliance/ComplianceReportPage.tsx b/src/frontend/src/screens/compliance/ComplianceReportPage.tsx index d163fe2..68aa27e 100644 --- a/src/frontend/src/screens/compliance/ComplianceReportPage.tsx +++ b/src/frontend/src/screens/compliance/ComplianceReportPage.tsx @@ -1,6 +1,7 @@ import { useParams } from 'react-router-dom'; import { Button } from '../../components/ui/Button'; import { AiLabel } from '../../components/ui/Badge'; +import { IconBlock, IconCheck, IconUpload, IconWarning } from '../../components/ui/icons'; import type { ComplianceReport, Violation } from '../../api/types'; import './compliance-report.css'; @@ -55,7 +56,7 @@ export function ComplianceReportPage() { role="status" > 차단 {report.blockCount}건 · 경고 {report.warnCount}건 · 통과 {report.passCount}건 @@ -65,7 +66,7 @@ export function ComplianceReportPage() { {/* PDF 업로드 존 */}
- +

기존 도면 업로드 (PDF/이미지)

드래그 앤 드롭 또는 클릭해 파일 선택 AI 자동 검증 @@ -105,7 +106,7 @@ export function ComplianceReportPage() { ))} {PASS_GROUPS.map((p) => (
  • - +
    {p.label} @@ -125,7 +126,7 @@ export function ComplianceReportPage() {
    상세 도면 (입면) 검토
    diff --git a/src/frontend/src/screens/schedule/ExhibitionSchedulePage.tsx b/src/frontend/src/screens/schedule/ExhibitionSchedulePage.tsx index d300caf..08a28bd 100644 --- a/src/frontend/src/screens/schedule/ExhibitionSchedulePage.tsx +++ b/src/frontend/src/screens/schedule/ExhibitionSchedulePage.tsx @@ -4,11 +4,20 @@ import { StatusBadge } from '../../components/ui/Badge'; import { Button } from '../../components/ui/Button'; import { EmptyState } from '../../components/ui/States'; import { + IconCalendar, + IconChevronLeft, + IconChevronRight, + IconGrid, + IconUsers, +} from '../../components/ui/icons'; +import { + ALL_EVENTS, CATEGORY_LABEL, - EVENT_DAYS, - HALL_UTILIZATION, - SAMPLE_EVENTS, + EVENT_YEARS, STATUS_LABEL, + eventDaysFor, + eventsByDateFor, + hallUtilizationFor, type EventStatus, type ScheduleEvent, } from './sampleSchedule'; @@ -18,61 +27,87 @@ const MOCK = `${import.meta.env.BASE_URL}mock/organizer_dashboard`; const THUMBS = [`${MOCK}/img1.jpg`, `${MOCK}/img2.jpg`, `${MOCK}/img3.jpg`]; const TODAY = new Date(2026, 6, 11); // 2026-07-11 (currentDate) -/** 홀 필터 매칭 — halls 문자열("홀 4, 5"·"제2전시장 홀7")에서 "홀" 뒤 번호만 추출해 전시장 범위("1-5"/"6-10")와 대조. "제N전시장"의 N 오매칭 방지. */ +/** 홀 필터 매칭 — halls 문자열("홀 4, 5A"·"제2전시장 홀7")에서 홀 번호만 추출해 전시장 범위("1-5"/"6-10")와 대조. "제N전시장"의 N·"7A-1"의 -1 오매칭 방지. */ function matchesHall(halls: string, range: string): boolean { if (range === 'all') return true; const [lo, hi] = range.split('-').map(Number); - const m = halls.match(/홀\s*([\d,\s~-]+)/); - const nums = m ? (m[1].match(/\d+/g)?.map(Number) ?? []) : []; + const cleaned = halls + .replace(/제\s*\d+\s*전시장/g, '') + .replace(/(\d+[A-C]?)-\d+/g, '$1'); + const nums = (cleaned.match(/\d+/g) ?? []).map(Number).filter((n) => n >= 1 && n <= 10); return nums.some((n) => n >= lo && n <= hi); } /* * SCR-15 전시 일정 관리 (M1·M6). Stitch exhibition_schedule 이식. - * - 좌 2/3 행사 리스트 + 우 1/3 미니 캘린더 · 홀 가동률. - * ★ 경계면: 행사 목록은 인증 workspaces(실 원천) 우선, 없으면 샘플. 홀 가동률·캘린더 점유는 샘플. + * - 좌 2/3 행사 리스트(또는 WISE 스타일 월 캘린더) + 우 1/3 미니 캘린더 · 홀 가동률. + * - 폴백 데이터: kintex.com 크롤링 10년치(2016~2026, 1,098건) — sampleSchedule.ALL_EVENTS. + * - 캘린더 뷰는 WISE(UIWS) ScheduleCalendar 월 그리드 패턴 참조(외부 라이브러리 미사용, + * 이전/다음/오늘 툴바·요일 헤더·당일 강조·일자별 이벤트 칩). + * ★ 경계면: 행사 목록은 인증 workspaces(실 원천) 우선, 없으면 크롤링 데이터 폴백. */ export function ExhibitionSchedulePage() { const workspaces = useAuthStore((s) => s.workspaces); const [view, setView] = useState<'list' | 'calendar'>('list'); + const [year, setYear] = useState('2026'); const [hall, setHall] = useState('all'); const [category, setCategory] = useState('all'); const [status, setStatus] = useState('all'); + // 우측 미니 캘린더·홀 가동률 공유 월 커서 + const [asideCursor, setAsideCursor] = useState(new Date(2026, 6, 1)); // 2026년 7월 - // 실 원천: 인증 workspaces → ScheduleEvent 매핑. 없으면 샘플 폴백. + // 실 원천: 인증 workspaces → ScheduleEvent 매핑. 없으면 크롤링 10년치 폴백. const usingReal = workspaces.length > 0; const events: ScheduleEvent[] = useMemo(() => { - if (!usingReal) return SAMPLE_EVENTS; + if (!usingReal) return ALL_EVENTS; return workspaces.map((w, i) => ({ id: w.eventId, title: w.eventName, // ★ category/estVisitors 는 WorkspaceDto 미포함 → 샘플/기본값 - category: 'exhibition', + category: 'exhibition' as const, status: (w.dday > 0 ? 'upcoming' : 'ongoing') as EventStatus, period: `${w.startDate} – ${w.endDate}`, + start: w.startDate, + end: w.endDate, halls: w.hallLabel, estVisitors: '집계 대기', thumbIdx: i % THUMBS.length, })); }, [usingReal, workspaces]); - const filtered = events.filter( - (e) => - matchesHall(e.halls, hall) && - (category === 'all' || e.category === category) && - (status === 'all' || e.status === status), + const filtered = useMemo( + () => + events.filter( + (e) => + (year === 'all' || e.start.slice(0, 4) === year || e.end.slice(0, 4) === year) && + matchesHall(e.halls, hall) && + (category === 'all' || e.category === category) && + (status === 'all' || e.status === status), + ), + [events, year, hall, category, status], ); + // 목록은 최신 시작일 우선 정렬 + const listed = useMemo(() => [...filtered].sort((a, b) => (a.start < b.start ? 1 : -1)), [filtered]); + return (

    전시 일정

    -

    킨텍스 전 홀 행사 일정 관리·모니터링

    +

    + 킨텍스 전 홀 행사 일정 관리·모니터링 — 10년치 {ALL_EVENTS.length.toLocaleString()}건 (kintex.com 수집) +

    +
    - {!usingReal && 행사 API 대기 (샘플)} + {!usingReal && 행사 API 대기 (크롤링 데이터)}
    @@ -99,67 +134,49 @@ export function ExhibitionSchedulePage() {
    -
    - {filtered.length === 0 ? ( -
    - 새 행사 생성} - /> -
    - ) : ( - filtered.map((e) => ( -
    -
    + )) + )} +
    + ) : ( + + )}
    @@ -167,13 +184,84 @@ export function ExhibitionSchedulePage() { } const WD = ['일', '월', '화', '수', '목', '금', '토']; +const MAX_CHIPS = 3; // 월 그리드 셀당 표시 칩 수 (초과분 +N) -function MiniCalendar() { - const [cursor, setCursor] = useState(new Date(2026, 7, 1)); // 2026년 8월 +/** + * WISE(UIWS ScheduleCalendar) 참조 월 캘린더 — 이전/다음/오늘 툴바, 요일 헤더, + * 당일 강조, 일자 셀에 행사 칩(카테고리 색), 초과분 +N. 외부 라이브러리 미사용. + */ +function MonthCalendar({ events }: { events: ScheduleEvent[] }) { + const [cursor, setCursor] = useState(new Date(2026, 6, 1)); // 2026년 7월 + const year = cursor.getFullYear(); + const month = cursor.getMonth(); + const byDate = useMemo(() => eventsByDateFor(year, month, events), [year, month, events]); + + const firstDow = new Date(year, month, 1).getDay(); + const daysInMonth = new Date(year, month + 1, 0).getDate(); + const cells: (number | null)[] = []; + for (let i = 0; i < firstDow; i++) cells.push(null); + for (let d = 1; d <= daysInMonth; d++) cells.push(d); + while (cells.length % 7 !== 0) cells.push(null); + + const todayKey = + TODAY.getFullYear() === year && TODAY.getMonth() === month ? TODAY.getDate() : -1; + const mm = String(month + 1).padStart(2, '0'); + + return ( +
    +
    + + {year}년 {month + 1}월 + + +
    +
    + {WD.map((w, i) => ( +
    {w}
    + ))} + {cells.map((d, i) => { + if (d === null) return
    ; + const key = `${year}-${mm}-${String(d).padStart(2, '0')}`; + const dayEvents = byDate.get(key) ?? []; + const dow = i % 7; + const cls = [ + 'kx-mcal__cell', + d === todayKey ? 'is-today' : '', + dow === 0 ? 'is-sun' : dow === 6 ? 'is-sat' : '', + ] + .filter(Boolean) + .join(' '); + return ( +
    + {d} + {dayEvents.slice(0, MAX_CHIPS).map((e) => ( + + {e.title} + + ))} + {dayEvents.length > MAX_CHIPS && ( + +{dayEvents.length - MAX_CHIPS} + )} +
    + ); + })} +
    +
    + ); +} + +function MiniCalendar({ cursor, onCursor }: { cursor: Date; onCursor: (d: Date) => void }) { const year = cursor.getFullYear(); const month = cursor.getMonth(); const firstDay = new Date(year, month, 1).getDay(); const daysInMonth = new Date(year, month + 1, 0).getDate(); + const eventDays = useMemo(() => eventDaysFor(year, month), [year, month]); const cells: (number | null)[] = []; for (let i = 0; i < firstDay; i++) cells.push(null); @@ -185,9 +273,9 @@ function MiniCalendar() { return (
    - + {year}년 {month + 1}월 - +
    {WD.map((w) => ( @@ -195,7 +283,7 @@ function MiniCalendar() { ))} {cells.map((d, i) => { if (d === null) return ; - const hasEvent = EVENT_DAYS.has(`${year}-${month + 1}-${d}`); + const hasEvent = eventDays.has(`${year}-${month + 1}-${d}`); return ( ); } + +function HallUtilization({ cursor }: { cursor: Date }) { + const year = cursor.getFullYear(); + const month = cursor.getMonth(); + const rows = useMemo(() => hallUtilizationFor(year, month), [year, month]); + return ( +
    +
    +

    홀 가동률 ({year}년 {month + 1}월)

    + 크롤링 데이터 기반 +
    +
      + {rows.map((h) => ( +
    • +
      + {h.label} + {h.pct}% +
      +
      + +
      +
    • + ))} +
    +
    + ); +} diff --git a/src/frontend/src/screens/schedule/kintexEvents.ts b/src/frontend/src/screens/schedule/kintexEvents.ts new file mode 100644 index 0000000..1fa0010 --- /dev/null +++ b/src/frontend/src/screens/schedule/kintexEvents.ts @@ -0,0 +1,1112 @@ +/* + * 킨텍스 실제 전시회 10년치 데이터 (2016~2026, 1098건). + * 출처: kintex.com 행사안내(list.do) 크롤링 — scratchpad/crawl_kintex.py + gen_seed.py 로 생성. + * 백엔드 시드와 동일 원천: db/migration/V10__seed_exhibitions_10yr.sql + * ★ estVisitors 는 홀 수·기간 기반 결정적 추정치(샘플)이며 실 집계가 아니다. + * 카테고리는 행사명 키워드 추론(샘플)이다. 이 파일은 생성물 — 직접 수정하지 말 것. + */ +export type KxCategory = 'exhibition' | 'culture' | 'trade' | 'tech'; + +/** [id, title, start(YYYY-MM-DD), end, hallsLabel, category, estVisitors] */ +export type KxEventRow = [string, string, string, string, string, KxCategory, number]; + +export const KINTEX_EVENT_ROWS: KxEventRow[] = [ + ["kx2016-001", "제21회 맘앤베이비엑스포 (국제임신출산_유아교육박람회)", "2016-01-28", "2016-01-31", "홀 3, 4", "culture", 45200], + ["kx2016-002", "2016 서울 국제 안경산업 박람회", "2016-02-18", "2016-02-20", "홀 3A", "exhibition", 12400], + ["kx2016-003", "2016 동아 선물용품(기프트쇼) 및 차・공예박람회", "2016-02-18", "2016-02-20", "홀 4A", "culture", 18200], + ["kx2016-004", "제2회 서울 상조・장례산업 박람회", "2016-02-18", "2016-02-20", "홀 5A", "exhibition", 17000], + ["kx2016-005", "2016 경향하우징페어/리빙앤라이프스타일", "2016-02-24", "2016-02-28", "홀 3, 4, 5, 1, 2", "culture", 91300], + ["kx2016-006", "2016 자동차 경량화 기술 산업전", "2016-03-09", "2016-03-11", "홀 7B", "trade", 19300], + ["kx2016-007", "ADVANCED TECH KOREA 2016", "2016-03-09", "2016-03-11", "홀 8", "exhibition", 18100], + ["kx2016-008", "2016 SBS골프 대한민국 골프대전", "2016-03-17", "2016-03-20", "홀 1, 2, 3", "exhibition", 61300], + ["kx2016-009", "코베-베이비&에듀페어", "2016-03-24", "2016-03-27", "홀 3, 4", "culture", 46500], + ["kx2016-010", "2016 OMC 헤어월드 & 인터뷰티페어 코리아", "2016-03-27", "2016-03-29", "홀 7, 8", "culture", 32500], + ["kx2016-011", "2016 국방부 전역예정장병 취업박람회", "2016-03-30", "2016-03-31", "홀 10A", "trade", 8300], + ["kx2016-012", "2016 코리아 나라장터 엑스포", "2016-03-30", "2016-04-01", "홀 4, 5", "exhibition", 39800], + ["kx2016-013", "2016 매경 창업&프랜차이즈쇼", "2016-03-31", "2016-04-03", "홀 1", "exhibition", 18700], + ["kx2016-014", "2016 스위트 코리아 (디저트&팬시푸드 페스티벌)", "2016-03-31", "2016-04-03", "홀 미정", "culture", 19600], + ["kx2016-015", "2016 스위트코리아", "2016-03-31", "2016-04-03", "홀 2", "exhibition", 29300], + ["kx2016-016", "test", "2016-04-01", "2016-04-01", "홀 미정", "exhibition", 4800], + ["kx2016-017", "2016 플레이쇼 키즈 & 키덜트", "2016-05-05", "2016-05-08", "홀 9A", "culture", 22100], + ["kx2016-018", "2016 서울국제식품산업대전", "2016-05-10", "2016-05-13", "홀 1, 2, 3, 4, 5, 7, 8, 6B, 6C", "trade", 134700], + ["kx2016-019", "제41회 MBC건축박람회/2016 서울 디지털프린팅・사인엑스포/2016 동아 조명박람회/2016 동아 공공시설 및 조경박람회", "2016-05-19", "2016-05-22", "홀 9, 10", "tech", 39200], + ["kx2016-020", "제11회 동아 홈&리빙 페어, 제8회 동아 판촉 및 선물용품(기프트쇼)박람회/제6회 동아 차・공예박람회/ 2016 동아 가구엑스포", "2016-05-19", "2016-05-22", "홀 7", "culture", 14600], + ["kx2016-021", "제7회 동아 스포츠・레저산업 박람회", "2016-05-19", "2016-05-22", "홀 8, 2전시장 로비 9-1", "culture", 24100], + ["kx2016-022", "플레이엑스포", "2016-05-19", "2016-05-22", "홀 1, 2", "exhibition", 34700], + ["kx2016-023", "2016 국제로타리 세계대회", "2016-05-28", "2016-06-01", "홀 1, 2, 6, 3, 4, 5, 7, 8, 9, 10", "exhibition", 244600], + ["kx2016-024", "제22회 맘앤베이비엑스포 (국제임신출산_유아교육박람회)", "2016-06-09", "2016-06-12", "홀 4, 5", "culture", 44800], + ["kx2016-025", "2016 하나투어 여행박람회", "2016-06-09", "2016-06-12", "홀 7, 8, 10", "culture", 51600], + ["kx2016-026", "시티스케이프 코리아 2016", "2016-06-10", "2016-06-12", "홀 2A", "exhibition", 11900], + ["kx2016-027", "2016 대한민국 명품특산물 페스티벌", "2016-06-16", "2016-06-19", "홀 10", "culture", 20200], + ["kx2016-028", "제4회 국제 아웃도어 캠핑페스티벌", "2016-06-17", "2016-06-19", "홀 9", "culture", 13700], + ["kx2016-029", "로보유니버스 & VR 서밋", "2016-06-22", "2016-06-24", "홀 7", "tech", 14900], + ["kx2016-030", "2016 노인 일자리 한마당", "2016-06-30", "2016-06-30", "홀 4A", "exhibition", 6300], + ["kx2016-031", "K-Farm 2016 귀농귀촌박람회/친환경에코쇼", "2016-07-07", "2016-07-09", "홀 7A", "trade", 12500], + ["kx2016-032", "국제 나노기술 심포지엄 및 나노융합대전", "2016-07-13", "2016-07-15", "홀 7, 8A", "exhibition", 36000], + ["kx2016-033", "코리아 룩 페스티벌 2016", "2016-07-14", "2016-07-17", "홀 5", "culture", 23700], + ["kx2016-034", "제1회 피트니스 · 보디빌딩 · 스포츠 아카데미 박람회", "2016-07-15", "2016-07-17", "홀 4A", "exhibition", 14300], + ["kx2016-035", "제6회 국제어린이교육 및 용품박람회", "2016-08-04", "2016-08-07", "홀 7A", "exhibition", 22500], + ["kx2016-036", "2016 미베 베이비엑스포 / 미래 유아교육박람회", "2016-08-12", "2016-08-15", "홀 3, 4", "culture", 47700], + ["kx2016-037", "2016 대한민국 국제 관광박람회", "2016-08-18", "2016-08-21", "홀 7", "exhibition", 21200], + ["kx2016-038", "2016 한국국제가구 및 인테리어산업대전", "2016-08-18", "2016-08-21", "홀 3, 4", "trade", 42600], + ["kx2016-039", "2016 국제접착코팅필름산업전시회", "2016-08-24", "2016-08-26", "홀 7A", "trade", 18200], + ["kx2016-040", "제42회 MBC건축박람회/2016 동아 냉・난방 및 건축설비박람회", "2016-08-25", "2016-08-28", "홀 3, 4", "exhibition", 44000], + ["kx2016-041", "제12회 동아 홈&리빙 페어/제9회 동아 판촉 및 선물용품(기프트쇼) 박람회/제7회 동아 차・공예박람회", "2016-08-25", "2016-08-28", "홀 5", "culture", 17000], + ["kx2016-042", "제8회 동아 스포츠・레저산업 박람회", "2016-08-25", "2016-08-28", "홀 2", "culture", 20600], + ["kx2016-043", "2016 경기도 무형문화재 대축제", "2016-08-26", "2016-08-28", "홀 1A, 1B", "culture", 17800], + ["kx2016-044", "2016 경기도 미래첨단 교통안전 엑스포", "2016-09-01", "2016-09-02", "홀 4", "trade", 11200], + ["kx2016-045", "2016 오토모티브위크", "2016-09-02", "2016-09-04", "홀 1, 2, 3", "exhibition", 52200], + ["kx2016-046", "스마트 시티 이노베이션 서밋 아시아 2016", "2016-09-20", "2016-09-22", "홀 3A", "tech", 17500], + ["kx2016-047", "2016 글로벌 소재부품 산업대전", "2016-09-20", "2016-09-22", "홀 3B", "trade", 16200], + ["kx2016-048", "2016 지역희망박람회", "2016-09-28", "2016-10-01", "홀 5", "exhibition", 18000], + ["kx2016-049", "2016 카페&베이커리 페어", "2016-10-06", "2016-10-09", "홀 1", "culture", 21300], + ["kx2016-050", "2016 호텔&레스토랑 산업전", "2016-10-06", "2016-10-09", "홀 2", "trade", 24400], + ["kx2016-051", "제14회 코베 베이비페어", "2016-10-06", "2016-10-09", "홀 4, 5", "culture", 44700], + ["kx2016-052", "2016 코리아 홈앤리빙페어", "2016-10-06", "2016-10-09", "홀 3", "culture", 14100], + ["kx2016-053", "2016 기상기후산업박람회", "2016-10-12", "2016-10-14", "홀 10A", "exhibition", 11000], + ["kx2016-054", "2016 로보월드", "2016-10-12", "2016-10-16", "홀 4, 5", "exhibition", 59300], + ["kx2016-055", "2016 말산업박람회", "2016-10-13", "2016-10-16", "홀 미정", "exhibition", 17100], + ["kx2016-056", "2016 말문화 박람회", "2016-10-13", "2016-10-16", "홀 9B", "culture", 15400], + ["kx2016-057", "2016 대한민국행복교육박람회", "2016-10-20", "2016-10-22", "홀 7B, 8, 9, 10", "exhibition", 50000], + ["kx2016-058", "대한민국우수상품전시회", "2016-10-26", "2016-10-29", "홀 4, 5, 2, 3", "exhibition", 60400], + ["kx2016-059", "2016 소프트웨어 교육 페스티벌", "2016-10-28", "2016-10-29", "홀 10", "tech", 9900], + ["kx2016-060", "한국 폴리텍 EXPO", "2016-11-02", "2016-11-03", "홀 5", "exhibition", 7100], + ["kx2016-061", "SENDEX 2016", "2016-11-03", "2016-11-05", "홀 2, 3", "exhibition", 36900], + ["kx2016-062", "2016 대한민국 에너지대전", "2016-11-08", "2016-11-11", "홀 2, 3", "trade", 50200], + ["kx2016-063", "디자인코리아", "2016-11-09", "2016-11-13", "홀 4, 5", "exhibition", 40200], + ["kx2016-064", "2016 공학교육페스티벌", "2016-11-10", "2016-11-11", "홀 7", "culture", 8400], + ["kx2016-065", "2016 대한민국 무형문화재대전 제41회 대한민국전승공예대전, 제46회 대한민국공예품대전", "2016-11-11", "2016-11-13", "홀 1", "culture", 14600], + ["kx2016-066", "2016 국민대학교 캡스톤 디자인 경진대회", "2016-11-14", "2016-11-14", "홀 10A", "exhibition", 3900], + ["kx2016-067", "2016 SBS골프 한국골프용품전", "2016-11-17", "2016-11-20", "홀 10B", "exhibition", 22100], + ["kx2016-068", "마이스타일트렌드페어 2016", "2016-11-18", "2016-11-20", "홀 9", "culture", 14200], + ["kx2016-069", "2016 대한민국 과일산업대전", "2016-11-18", "2016-11-20", "홀 10A", "trade", 16500], + ["kx2016-070", "제23회 맘앤베이비엑스포 / 국제유아교육박람회", "2016-11-24", "2016-11-27", "홀 3, 4", "culture", 34400], + ["kx2016-071", "제8회 대한민국 펫산업 박람회 : 2016 케이펫페어 \"일산\"", "2016-11-25", "2016-11-27", "홀 7B, 8", "culture", 23000], + ["kx2016-072", "킨텍스 스푼 아트쇼 2016", "2016-11-25", "2016-12-04", "홀 2", "culture", 30100], + ["kx2016-073", "2016 붐업코리아 수출상담회", "2016-11-30", "2016-11-30", "홀 4, 5", "trade", 10400], + ["kx2016-074", "2016 대한민국 유망프랜차이즈대전", "2016-12-02", "2016-12-04", "홀 8A", "exhibition", 17500], + ["kx2016-075", "인사이드 핀테크 컨퍼런스 & 엑스포", "2016-12-08", "2016-12-09", "홀 6A, 6B", "tech", 8100], + ["kx2016-076", "2016 다문화 너나들이 축제", "2016-12-09", "2016-12-10", "홀 3", "culture", 7100], + ["kx2016-077", "코리아 크리스마스 페어", "2016-12-09", "2016-12-18", "홀 7, 8A", "culture", 53700], + ["kx2017-001", "제24회 맘앤베이비엑스포", "2017-02-09", "2017-02-12", "홀 4, 5", "culture", 33700], + ["kx2017-002", "2017 Advanced Tech Korea", "2017-02-15", "2017-02-17", "홀 7B", "exhibition", 17800], + ["kx2017-003", "2017 경향하우징페어", "2017-02-22", "2017-02-26", "홀 2, 3, 4, 5A", "culture", 85600], + ["kx2017-004", "2017 대한민국 건축기계설비종합전시회", "2017-02-22", "2017-02-26", "홀 5B", "trade", 22600], + ["kx2017-005", "2017 리빙앤라이프스타일", "2017-02-22", "2017-02-26", "홀 1", "culture", 18700], + ["kx2017-006", "2017 스위트 코리아(디저트&카페 페스티벌)", "2017-02-23", "2017-02-26", "홀 7B", "culture", 15400], + ["kx2017-007", "2017 매경 창업 & 프랜차이즈쇼", "2017-02-23", "2017-02-26", "홀 7A", "exhibition", 15900], + ["kx2017-008", "Automotive Testing Expo 2017", "2017-03-06", "2017-03-08", "홀 10", "exhibition", 13600], + ["kx2017-009", "제 14회 한국국제냉난방공조전", "2017-03-07", "2017-03-10", "홀 7, 8", "trade", 36800], + ["kx2017-010", "2017 국제금형 및 관련기기전", "2017-03-07", "2017-03-11", "홀 1, 2, 3", "trade", 75200], + ["kx2017-011", "제24회 국제플라스틱 고무산업전시회", "2017-03-07", "2017-03-11", "홀 4, 5", "trade", 40100], + ["kx2017-012", "2017 한국국제낚시박람회", "2017-03-10", "2017-03-12", "홀 9", "exhibition", 17500], + ["kx2017-013", "세계보안엑스포 2017", "2017-03-15", "2017-03-17", "홀 1, 2", "exhibition", 31400], + ["kx2017-014", "2017 SBS골프 대한민국 골프대전", "2017-03-16", "2017-03-19", "홀 3, 4, 5", "exhibition", 53600], + ["kx2017-015", "2017 캠핑 & 피크닉페어", "2017-03-16", "2017-03-19", "홀 7, 8", "culture", 41900], + ["kx2017-016", "2017 전역예정장병 취업박람회", "2017-03-22", "2017-03-23", "홀 7", "exhibition", 7000], + ["kx2017-017", "2017 국방부 전역예정장병 취창업박람회", "2017-03-22", "2017-03-23", "홀 미정", "trade", 9100], + ["kx2017-018", "2017 서울모터쇼", "2017-03-31", "2017-04-09", "홀 1, 2, 3, 4, 5, 9, 10, 7, 8", "exhibition", 289900], + ["kx2017-019", "CI KOREA 2017 (국제 화장품원료기술전)", "2017-04-18", "2017-04-21", "홀 8B", "exhibition", 14200], + ["kx2017-020", "국제 제약화장품산업기술 주간(제12회 제약화장품기술전/ 제7회 국제물류산업전/ 제7회 국제의약품전/ 제2회 국제화장품원료기술전/ 제9회 국제화학장치산업전/ 제11회 국제연구실험기자재 및 첨단분석장비전)", "2017-04-18", "2017-04-21", "홀 미정", "trade", 16400], + ["kx2017-021", "COPHEX 2017 (제12회 제약·화장품기술전)", "2017-04-18", "2017-04-21", "홀 10A", "exhibition", 21000], + ["kx2017-022", "KOREA PHARM 2017 (제7회 국제의약품전)", "2017-04-18", "2017-04-21", "홀 8A", "exhibition", 17100], + ["kx2017-023", "KOREA CHEM 2017 (제9회 국제화학장치산업전)", "2017-04-18", "2017-04-21", "홀 10B", "trade", 21500], + ["kx2017-024", "KOREA LAB 2017 (제11회 국제연구·실험 및 첨단분석장비전)", "2017-04-18", "2017-04-21", "홀 7B", "exhibition", 22800], + ["kx2017-025", "KOREA MAT 2017 (제7회 국제물류산업전)", "2017-04-18", "2017-04-21", "홀 9", "trade", 24300], + ["kx2017-026", "2017 코리아 나라장터 엑스포", "2017-04-19", "2017-04-21", "홀 4, 5", "exhibition", 34400], + ["kx2017-027", "제 16회 코베 베이비페어", "2017-04-20", "2017-04-23", "홀 2, 3", "culture", 39200], + ["kx2017-028", "2017 국제모션컨트롤 및 머신비전산업전", "2017-04-25", "2017-04-27", "홀 8A", "trade", 15800], + ["kx2017-029", "국제전자회로산업전, 국제전자실장산업전", "2017-04-25", "2017-04-27", "홀 7", "tech", 15500], + ["kx2017-030", "제14회 동아 홈&리빙페어 / 제11회 동아 기프트쇼", "2017-04-27", "2017-04-30", "홀 5", "culture", 15100], + ["kx2017-031", "제9회 동아 스포츠·레저산업 박람회", "2017-04-27", "2017-04-30", "홀 1", "culture", 24400], + ["kx2017-032", "제44회 MBC건축박람회/2017 서울 디지털프린팅・사인엑스포/2017 동아 공공시설 및 조경박람회/2017 동아 조명박람회", "2017-04-27", "2017-04-30", "홀 2, 3", "tech", 33700], + ["kx2017-033", "2017 동아 가구엑스포 / 제9회 동아 차・공예 박람회", "2017-04-27", "2017-04-30", "홀 4", "culture", 24100], + ["kx2017-034", "2017 튼튼쑥쑥 어린이 박람회", "2017-04-28", "2017-04-30", "홀 10A", "exhibition", 10600], + ["kx2017-035", "2017 플레이쇼 키즈 & 키덜트", "2017-05-03", "2017-05-05", "홀 9B", "culture", 19200], + ["kx2017-036", "2017 상반기 글로벌 취업 상담회", "2017-05-11", "2017-05-12", "홀 2A, 2B", "exhibition", 10800], + ["kx2017-037", "2017 서울국제식품산업대전", "2017-05-16", "2017-05-19", "홀 1, 2, 3, 4, 5, 7, 8", "trade", 139800], + ["kx2017-038", "2017 국토교통기술대전", "2017-05-24", "2017-05-26", "홀 10A", "exhibition", 15100], + ["kx2017-039", "2017 한국국제건설기계전", "2017-05-24", "2017-05-27", "홀 1, 2, 옥외2", "trade", 34300], + ["kx2017-040", "2017 플레이엑스포", "2017-05-25", "2017-05-28", "홀 6, 7, 8", "exhibition", 43200], + ["kx2017-041", "2017 경기국제보트쇼", "2017-05-25", "2017-05-28", "홀 3, 4, 5", "exhibition", 44000], + ["kx2017-042", "2017 트럭 & 버스 메가페어", "2017-05-25", "2017-05-28", "홀 옥외3", "culture", 18800], + ["kx2017-043", "신세계그룹&파트너사 채용박람회", "2017-05-31", "2017-05-31", "홀 1A", "exhibition", 4800], + ["kx2017-044", "2017 신세계그룹&파트너사 채용박람회", "2017-05-31", "2017-05-31", "홀 미정", "exhibition", 6200], + ["kx2017-045", "2017 더 골프 쇼", "2017-06-08", "2017-06-11", "홀 1", "exhibition", 21300], + ["kx2017-046", "대한민국세계여성발명대회여성발명품박람회", "2017-06-08", "2017-06-11", "홀 2A, 2B", "exhibition", 16500], + ["kx2017-047", "제2회 피트니스 · 보디빌딩 · 스포츠 박람회", "2017-06-09", "2017-06-11", "홀 7A, 6C", "exhibition", 24800], + ["kx2017-048", "2017 대한민국 명품특산물 페스티벌", "2017-06-12", "2017-06-18", "홀 10, 10", "culture", 26900], + ["kx2017-049", "2017 우수중소기업 마케팅대전", "2017-06-15", "2017-06-17", "홀 5A, 5B", "exhibition", 18100], + ["kx2017-050", "메가쇼 2017 시즌1", "2017-06-15", "2017-06-18", "홀 7", "exhibition", 17500], + ["kx2017-051", "국제 아웃도어 캠핑페스티발", "2017-06-16", "2017-06-18", "홀 9", "culture", 19300], + ["kx2017-052", "2017 KB굿잡 우수기업 취업박람회", "2017-06-22", "2017-06-23", "홀 2", "exhibition", 9600], + ["kx2017-053", "제25회 Mom & Baby EXPO 국제임신출산 유아교육박람회", "2017-06-22", "2017-06-25", "홀 7, 8", "culture", 31800], + ["kx2017-054", "2017 60+ 시니어 일자리 한마당", "2017-06-27", "2017-06-27", "홀 2A", "exhibition", 6500], + ["kx2017-055", "제15회 국제 LED & OLED EXPO 2017", "2017-06-27", "2017-06-29", "홀 3, 4", "exhibition", 31100], + ["kx2017-056", "2017 경기도 교통안전 박람회", "2017-06-28", "2017-06-29", "홀 5", "trade", 13000], + ["kx2017-057", "2017 로보유니버스 & K 드론", "2017-06-28", "2017-06-30", "홀 7B", "tech", 14000], + ["kx2017-058", "2017 VR 서밋", "2017-06-28", "2017-06-30", "홀 7A", "tech", 15400], + ["kx2017-059", "2017 인사이드 3D프린팅 컨퍼런스 & 엑스포", "2017-06-28", "2017-06-30", "홀 6", "exhibition", 16900], + ["kx2017-060", "2017 글로벌 센서 포럼", "2017-06-28", "2017-06-30", "홀 8A", "exhibition", 18700], + ["kx2017-061", "2017년 협동조합 박람회", "2017-06-30", "2017-07-02", "홀 2A, 2B", "exhibition", 25500], + ["kx2017-062", "FCI 인터내셔널 도그쇼", "2017-07-01", "2017-07-02", "홀 8B", "exhibition", 8900], + ["kx2017-063", "2017 생활 화학 안전주간 (2017 케미라이프엑스포)", "2017-07-02", "2017-07-04", "홀 5, 5", "trade", 18300], + ["kx2017-064", "대한치과기공사협회 제53차 국제학술대회(KDTEX 2017)", "2017-07-08", "2017-07-09", "홀 7", "exhibition", 7800], + ["kx2017-065", "제15회 국제 나노기술심포지엄 및 나노융합대전", "2017-07-12", "2017-07-14", "홀 7, 8A", "exhibition", 36000], + ["kx2017-066", "2017 케이팜(귀농귀촌박람회) / 친환경에코쇼", "2017-07-13", "2017-07-15", "홀 8B", "trade", 13400], + ["kx2017-067", "2017 코리아 하우징리빙페어", "2017-07-13", "2017-07-16", "홀 3", "culture", 23100], + ["kx2017-068", "제7회 2017 세계청소년교류엑스포", "2017-08-01", "2017-08-03", "홀 5A", "exhibition", 17100], + ["kx2017-069", "제21회 대한민국과학창의축전", "2017-08-10", "2017-08-15", "홀 3, 4A, 4B, 5", "exhibition", 63900], + ["kx2017-070", "2017 미베 베이비엑스포 / 미래 유아교육박람회", "2017-08-18", "2017-08-21", "홀 3, 4", "culture", 30100], + ["kx2017-071", "제15회 동아 홈&리빙페어회", "2017-08-24", "2017-08-27", "홀 5A", "culture", 19300], + ["kx2017-072", "제12회 동아 기프트쇼 / 제10회 동아 차·공예박람회", "2017-08-24", "2017-08-27", "홀 5B", "culture", 24100], + ["kx2017-073", "2017 서울 국제 안경산업박람회", "2017-08-24", "2017-08-27", "홀 1", "exhibition", 20900], + ["kx2017-074", "제2회 대한민국 국제 관광박람회", "2017-08-24", "2017-08-27", "홀 7", "exhibition", 20400], + ["kx2017-075", "제9회 국제접착코팅소재산업전시회 (2017 아템페어)", "2017-08-30", "2017-09-01", "홀 7A", "trade", 31800], + ["kx2017-076", "국제음향·영상산업전 2017", "2017-08-30", "2017-09-01", "홀 8A", "trade", 18900], + ["kx2017-077", "대한민국 교회건축·리모델링박람회 2017", "2017-08-30", "2017-09-01", "홀 8B", "exhibition", 25500], + ["kx2017-078", "한국국제가구 및 인테리어산업대전", "2017-08-30", "2017-09-03", "홀 1, 2, 3", "trade", 91900], + ["kx2017-079", "2017 대한민국 행정 홍보대전", "2017-08-31", "2017-09-03", "홀 4A, 4B, 5A, 5B", "exhibition", 41200], + ["kx2017-080", "2017년 한국관상어산업박람회 및 관상어품평회", "2017-09-01", "2017-09-03", "홀 7B", "exhibition", 12700], + ["kx2017-081", "2017 스마트시티 이노베이션 서밋 아시아", "2017-09-06", "2017-09-08", "홀 8", "tech", 13000], + ["kx2017-082", "2017 세계태양에너지엑스포", "2017-09-06", "2017-09-08", "홀 1", "trade", 12300], + ["kx2017-083", "제10회 국제자원순환산업전", "2017-09-06", "2017-09-08", "홀 7A", "trade", 15600], + ["kx2017-084", "2017 한국 중장비 전시회", "2017-09-06", "2017-09-08", "홀 7B", "trade", 15400], + ["kx2017-085", "2017 오토모티브위크", "2017-09-08", "2017-09-10", "홀 2, 5B, 3, 4", "exhibition", 57100], + ["kx2017-086", "2017 친환경 탈것 한마당 (에코비히클쇼)", "2017-09-08", "2017-09-10", "홀 5A", "trade", 13500], + ["kx2017-087", "2017 오토모티브위크 사전등록", "2017-09-08", "2017-09-10", "홀 2, 3, 4, 5B", "exhibition", 61400], + ["kx2017-088", "2017 친환경 탈것 한마당 사전등록", "2017-09-08", "2017-09-10", "홀 5A", "trade", 13200], + ["kx2017-089", "2017 글로벌소재부품산업대전(IMAC 2017)", "2017-09-13", "2017-09-15", "홀 3", "trade", 13300], + ["kx2017-090", "2017 글로벌모바일비전(GMV 2017)", "2017-09-13", "2017-09-15", "홀 4", "exhibition", 13200], + ["kx2017-091", "2017 로보월드", "2017-09-13", "2017-09-16", "홀 1A, 2, 1B", "exhibition", 49000], + ["kx2017-092", "케이샵 2017", "2017-09-14", "2017-09-16", "홀 8A", "exhibition", 10700], + ["kx2017-093", "제41회 프랜차이즈산업박람회", "2017-09-14", "2017-09-16", "홀 7", "exhibition", 13200], + ["kx2017-094", "2017 대한민국에너지대전", "2017-09-19", "2017-09-22", "홀 4, 5", "trade", 29500], + ["kx2017-095", "한국포장전 2017", "2017-09-19", "2017-09-22", "홀 7, 8A", "exhibition", 45200], + ["kx2017-096", "제 17회 코베 베이비페어", "2017-09-21", "2017-09-24", "홀 2, 3", "culture", 28300], + ["kx2017-097", "2017 키덜트 & 코믹스, 캐릭터페어", "2017-09-21", "2017-09-24", "홀 미정", "culture", 16800], + ["kx2017-098", "제9회 대한민국 뷰티박람회", "2017-10-12", "2017-10-15", "홀 3, 4, 5", "culture", 52300], + ["kx2017-099", "2017 슈퍼맘페어(엄마들이 만든 따뜻한 마켓)", "2017-10-13", "2017-10-15", "홀 제1전시장 3, 4홀 출입구 야외광장", "culture", 17000], + ["kx2017-100", "제14회 한국 자동차산업 전시회", "2017-10-18", "2017-10-20", "홀 7, 8", "exhibition", 35400], + ["kx2017-101", "2017 카페&베이커리페어", "2017-10-18", "2017-10-21", "홀 9B, 10A", "culture", 29000], + ["kx2017-102", "2017 호텔쇼", "2017-10-18", "2017-10-21", "홀 10B", "exhibition", 20100], + ["kx2017-103", "2017 한국기계전", "2017-10-24", "2017-10-27", "홀 1A, 2, 3, 4, 5", "trade", 104300], + ["kx2017-104", "2017 서울국제공구전", "2017-10-24", "2017-10-27", "홀 1", "trade", 24000], + ["kx2017-105", "금속산업대전 2017", "2017-10-24", "2017-10-27", "홀 7, 8", "trade", 38000], + ["kx2017-106", "제54회 전국도서관대회", "2017-10-25", "2017-10-26", "홀 9B", "culture", 12600], + ["kx2017-107", "2017 대한민국우수상품전", "2017-11-01", "2017-11-04", "홀 1, 2, 3", "exhibition", 75600], + ["kx2017-108", "2017 진로직업체험박람회", "2017-11-02", "2017-11-04", "홀 9", "exhibition", 18000], + ["kx2017-109", "국제주방&욕실박람회", "2017-11-02", "2017-11-05", "홀 7", "exhibition", 26000], + ["kx2017-110", "디자인코리아 2017", "2017-11-08", "2017-11-12", "홀 4, 5", "exhibition", 60800], + ["kx2017-111", "시니어리빙&복지박람회", "2017-11-09", "2017-11-11", "홀 2, 3", "culture", 28100], + ["kx2017-112", "마이스타일 트렌드페어 2017", "2017-11-09", "2017-11-11", "홀 1A, 1B", "culture", 12800], + ["kx2017-113", "제26회 국제임신출산_육아용품박람회(맘앤베이비엑스포)", "2017-11-09", "2017-11-12", "홀 7, 8", "culture", 33900], + ["kx2017-114", "코리아우드쇼 2017", "2017-11-09", "2017-11-12", "홀 10A", "exhibition", 26000], + ["kx2017-115", "2017 한국골프용품전", "2017-11-09", "2017-11-12", "홀 10B", "exhibition", 24600], + ["kx2017-116", "제3회 대한민국 안전산업박람회", "2017-11-15", "2017-11-17", "홀 2, 3B, 4", "trade", 38100], + ["kx2017-117", "2017 첨단농축산기자재전시회", "2017-11-15", "2017-11-17", "홀 9", "exhibition", 13400], + ["kx2017-118", "2017 국제도로교통박람회", "2017-11-15", "2017-11-17", "홀 1", "exhibition", 11400], + ["kx2017-119", "2017 기상기후산업 박람회", "2017-11-15", "2017-11-17", "홀 3A", "exhibition", 17300], + ["kx2017-120", "메가쇼 2017 시즌 II", "2017-11-16", "2017-11-19", "홀 7, 8A, 8B", "exhibition", 42200], + ["kx2017-121", "2017 대한민국 과일산업대전", "2017-11-17", "2017-11-19", "홀 10A", "trade", 12000], + ["kx2017-122", "2017 대한민국 미래교육박람회", "2017-11-23", "2017-11-25", "홀 3, 4", "exhibition", 34000], + ["kx2017-123", "한이음 엑스포 2017", "2017-11-24", "2017-11-25", "홀 1A", "exhibition", 12800], + ["kx2017-124", "SW 중심대학 전시관", "2017-11-24", "2017-11-25", "홀 1B", "exhibition", 11300], + ["kx2017-125", "2017 SW교육 페스티벌", "2017-11-24", "2017-11-25", "홀 2", "culture", 11600], + ["kx2017-126", "2017 대한민국펫산업박람회(2017 케이펫페어 일산)", "2017-11-24", "2017-11-26", "홀 7, 8", "culture", 23400], + ["kx2017-127", "2017 소재부품 뿌리산업 주간", "2017-11-28", "2017-11-30", "홀 4A", "trade", 10700], + ["kx2017-128", "2017 인사이드 핀테크 컨퍼런스 & 엑스포", "2017-11-30", "2017-12-01", "홀 6", "tech", 20900], + ["kx2017-129", "제10회 대한민국전시산업전", "2017-12-07", "2017-12-08", "홀 7A", "trade", 9700], + ["kx2017-130", "2017 경기환경산업전", "2017-12-08", "2017-12-09", "홀 7B", "trade", 11800], + ["kx2017-131", "[1부] 2017 코리아 크리스마스 페어", "2017-12-08", "2017-12-10", "홀 3, 4", "culture", 26900], + ["kx2017-132", "[1부] 2017 K-베이비키즈페어", "2017-12-08", "2017-12-10", "홀 5", "culture", 18200], + ["kx2017-133", "[2부] 2017 코리아 크리스마스 페어", "2017-12-15", "2017-12-17", "홀 3, 4", "culture", 36500], + ["kx2017-134", "[2부] 2017 K-베이비키즈페어", "2017-12-15", "2017-12-17", "홀 5", "culture", 13800], + ["kx2018-001", "2018 교육대전", "2018-01-11", "2018-01-12", "홀 3", "exhibition", 10100], + ["kx2018-002", "2018 한국골프산업박람회", "2018-01-24", "2018-01-26", "홀 7", "exhibition", 12700], + ["kx2018-003", "제27회 국제임신출산_육아용품박람회(맘앤베이비엑스포)", "2018-02-01", "2018-02-04", "홀 4, 5", "culture", 42000], + ["kx2018-004", "2018 오초 페스티벌 Lv.1", "2018-02-02", "2018-02-04", "홀 3A, 3B", "culture", 11400], + ["kx2018-005", "2018 자동차 경량화 기술 산업전", "2018-02-07", "2018-02-09", "홀 7B", "trade", 16200], + ["kx2018-006", "데이터실수정1001", "2018-02-17", "2018-02-17", "홀 미정", "exhibition", 3600], + ["kx2018-007", "2018 한국건축기계설비전시회", "2018-02-22", "2018-02-24", "홀 6", "trade", 12500], + ["kx2018-008", "대한민국건설기술산업대전", "2018-02-22", "2018-02-24", "홀 1전시장 그랜드볼륨", "trade", 15200], + ["kx2018-009", "2018 경향하우징페어", "2018-02-22", "2018-02-25", "홀 2, 3, 4, 5A", "culture", 76200], + ["kx2018-010", "2018 리빙앤라이프스타일", "2018-02-22", "2018-02-25", "홀 1", "culture", 21400], + ["kx2018-011", "제1회 대한민국 지방정부일자리 정책박람회", "2018-03-08", "2018-03-11", "홀 4, 5", "exhibition", 50500], + ["kx2018-012", "2018 SBS골프 대한민국 골프대전", "2018-03-08", "2018-03-11", "홀 2, 3", "exhibition", 47100], + ["kx2018-013", "2018 한국국제낚시박람회", "2018-03-09", "2018-03-11", "홀 9", "exhibition", 11100], + ["kx2018-014", "Automotive Testing Expo 2018", "2018-03-13", "2018-03-15", "홀 10", "exhibition", 18100], + ["kx2018-015", "세계보안엑스포 2018", "2018-03-14", "2018-03-16", "홀 4, 5", "exhibition", 26400], + ["kx2018-016", "2018 캠핑&피크닉 페어", "2018-03-15", "2018-03-18", "홀 7, 8", "culture", 43400], + ["kx2018-017", "제2회 코리아 스마트모빌리티 페어(코빌 2018)", "2018-03-16", "2018-03-18", "홀 3A, 3B", "tech", 17700], + ["kx2018-018", "2018 국제 물 산업 전시 및 컨퍼런스", "2018-03-20", "2018-03-23", "홀 10", "exhibition", 25800], + ["kx2018-019", "2018 전역예정장병 취업박람회", "2018-03-21", "2018-03-22", "홀 7", "exhibition", 7800], + ["kx2018-020", "2018 홈쇼핑·중소기업 상생 주간", "2018-03-22", "2018-03-25", "홀 미정", "culture", 22900], + ["kx2018-021", "2018 매경창업&프랜차이즈 쇼", "2018-03-22", "2018-03-25", "홀 3", "exhibition", 15000], + ["kx2018-022", "2018 스위트코리아", "2018-03-22", "2018-03-25", "홀 2", "exhibition", 14700], + ["kx2018-023", "서울국제공작기계전(SIMTOS 2018)", "2018-04-03", "2018-04-07", "홀 1, 2, 3, 4, 5, 7, 8, 9, 10", "trade", 189700], + ["kx2018-024", "제3회 국제화장품원료기술전", "2018-04-17", "2018-04-19", "홀 8B", "exhibition", 15400], + ["kx2018-025", "제8회 국제의약품·바이오산업전", "2018-04-17", "2018-04-19", "홀 8A", "trade", 11700], + ["kx2018-026", "제12회 국제연구·실험 및 첨단분석장비전", "2018-04-17", "2018-04-20", "홀 7", "exhibition", 20400], + ["kx2018-027", "제10회 국제화학장치산업전", "2018-04-17", "2018-04-20", "홀 5", "trade", 20000], + ["kx2018-028", "제21회 국제포장기자재전(KOREA PACK 2018)", "2018-04-17", "2018-04-20", "홀 1, 2, 3", "exhibition", 48300], + ["kx2018-029", "제13회 국제제약∙바이오∙화장품기술전", "2018-04-17", "2018-04-20", "홀 4", "exhibition", 20500], + ["kx2018-030", "잡월드 ROADSHOW「내일희망 채용박람회」", "2018-04-20", "2018-04-20", "홀 6C", "exhibition", 4300], + ["kx2018-031", "2018 국제전자회로산업전", "2018-04-24", "2018-04-26", "홀 7A", "tech", 11300], + ["kx2018-032", "2018 국제모션컨트롤 및 머신비전산업전", "2018-04-24", "2018-04-26", "홀 7B", "trade", 15600], + ["kx2018-033", "2018 코리아 나라장터 엑스포", "2018-04-25", "2018-04-27", "홀 4, 5", "exhibition", 22100], + ["kx2018-034", "2018 서울국제식품산업대전", "2018-05-01", "2018-05-04", "홀 7, 8, 1, 2, 3, 4, 5, 6A, 6B, 6C", "trade", 207500], + ["kx2018-035", "제18회 동아 홈&리빙페어 / 제14회 기프트쇼", "2018-05-10", "2018-05-13", "홀 5", "culture", 15200], + ["kx2018-036", "제10회 동아 가구엑스포 / 제12회 동아 차・공예 박람회", "2018-05-10", "2018-05-13", "홀 4", "culture", 25200], + ["kx2018-037", "제11회 동아 스포츠·레저산업 박람회", "2018-05-10", "2018-05-13", "홀 1", "culture", 21700], + ["kx2018-038", "2018 PlayX4(플레이엑스포)", "2018-05-10", "2018-05-13", "홀 7, 8A, 6, 8B", "exhibition", 47300], + ["kx2018-039", "2018 경기국제보트쇼", "2018-05-24", "2018-05-27", "홀 2, 3, 4, 5", "exhibition", 60200], + ["kx2018-040", "제28회 국제임신출산_육아용품박람회(맘앤베이비엑스포)", "2018-05-31", "2018-06-03", "홀 4, 5", "culture", 53600], + ["kx2018-041", "2018 더 골프 쇼", "2018-06-07", "2018-06-10", "홀 10A", "exhibition", 20200], + ["kx2018-042", "GFood 아울렛 2018", "2018-06-07", "2018-06-10", "홀 1전시장 로비2", "exhibition", 15400], + ["kx2018-043", "2018 하나투어 여행박람회", "2018-06-07", "2018-06-10", "홀 1, 2, 3", "culture", 54700], + ["kx2018-044", "2018 국제아웃도어캠핑&레포츠페스티벌", "2018-06-08", "2018-06-10", "홀 9", "culture", 13500], + ["kx2018-045", "2018 세계태양에너지엑스포", "2018-06-14", "2018-06-16", "홀 5A", "trade", 16600], + ["kx2018-046", "2018 세계탄소제로엑스포", "2018-06-14", "2018-06-16", "홀 5B", "exhibition", 16600], + ["kx2018-047", "2018 우수 중소기업 마케팅대전", "2018-06-14", "2018-06-16", "홀 8B", "exhibition", 11100], + ["kx2018-048", "메가쇼 2018 시즌 1", "2018-06-14", "2018-06-17", "홀 7, 8A", "exhibition", 31100], + ["kx2018-049", "2018 Sea Farm Show 해양수산·양식·식품 박람회", "2018-06-15", "2018-06-17", "홀 10A", "trade", 19200], + ["kx2018-050", "2018 대한민국 식초문화대전", "2018-06-22", "2018-06-23", "홀 2A, 2B", "culture", 8600], + ["kx2018-051", "2018 고양 FCI 국제 도그쇼", "2018-06-23", "2018-06-24", "홀 9A", "exhibition", 10400], + ["kx2018-052", "제16회 국제 LED & OLED EXPO 2018", "2018-06-26", "2018-06-28", "홀 3, 4", "exhibition", 25900], + ["kx2018-053", "인사이드 3D프린팅 컨퍼런스 & 엑스포 2018", "2018-06-27", "2018-06-29", "홀 5", "exhibition", 13900], + ["kx2018-054", "테크노스케이프 아시아 2018", "2018-06-28", "2018-06-30", "홀 미정", "tech", 11500], + ["kx2018-055", "2018 글로벌센서포럼(GSF)", "2018-06-28", "2018-06-30", "홀 8", "exhibition", 10700], + ["kx2018-056", "2018 VR 서밋", "2018-06-28", "2018-06-30", "홀 7B", "tech", 11700], + ["kx2018-057", "2018 로보유니버스 & K 드론", "2018-06-28", "2018-06-30", "홀 7A", "tech", 18700], + ["kx2018-058", "2018 대한민국 세게여성발명대회 및 여성발명품박람회(여성발명왕EXPO)", "2018-06-28", "2018-07-01", "홀 2", "exhibition", 23600], + ["kx2018-059", "제16회 국제 나노기술심포지엄 및 나노융합대전", "2018-07-11", "2018-07-13", "홀 7, 8A", "exhibition", 36900], + ["kx2018-060", "2018 친환경에코쇼/귀농·귀촌 박람회(Eco Show / K-Farm)", "2018-07-19", "2018-07-21", "홀 7", "trade", 15800], + ["kx2018-061", "2018 코리아하우징리빙페어", "2018-07-19", "2018-07-22", "홀 4", "culture", 25700], + ["kx2018-062", "2018 청소년 발명페스티벌", "2018-07-20", "2018-07-22", "홀 5", "culture", 19200], + ["kx2018-063", "KDTEX 2018 국제학술대회", "2018-07-21", "2018-07-22", "홀 8A, 8B", "exhibition", 12000], + ["kx2018-064", "2018 대한민국과학창의축전", "2018-08-09", "2018-08-12", "홀 3, 4", "exhibition", 51000], + ["kx2018-065", "2018 미베 베이비엑스포 / 미래 유아교육박람회", "2018-08-16", "2018-08-19", "홀 3, 4", "culture", 39400], + ["kx2018-066", "2018 한국관상어박람회 및 제4회 해양수산부장관배 한국관상어품평회", "2018-08-17", "2018-08-19", "홀 5", "trade", 11200], + ["kx2018-067", "2018 아템페어 전시회(제 10회 국제 접착·코팅 소재 산업전시회)", "2018-08-22", "2018-08-24", "홀 7A", "trade", 11500], + ["kx2018-068", "한국표면처리산업전", "2018-08-22", "2018-08-24", "홀 미정", "trade", 15600], + ["kx2018-069", "2018 서울 국제 안경산업 박람회", "2018-08-23", "2018-08-26", "홀 미정", "exhibition", 21000], + ["kx2018-070", "제12회 스포츠·레저산업 박람회", "2018-08-23", "2018-08-26", "홀 1", "culture", 15400], + ["kx2018-071", "제15회 기프트·차공예 박람회", "2018-08-23", "2018-08-26", "홀 2B", "culture", 15900], + ["kx2018-072", "제 19회 동아 홈&리빙페어", "2018-08-23", "2018-08-26", "홀 2A", "culture", 24300], + ["kx2018-073", "2018 동아 냉·난방 및 건축설비 박람회", "2018-08-23", "2018-08-26", "홀 3B", "exhibition", 25800], + ["kx2018-074", "제48회 MBC건축박람회", "2018-08-23", "2018-08-26", "홀 3A, 4", "exhibition", 38800], + ["kx2018-075", "2018 정원 및 조경박람회", "2018-08-23", "2018-08-26", "홀 5A, 5B", "exhibition", 23600], + ["kx2018-076", "K-Print 2018", "2018-08-25", "2018-09-01", "홀 미정", "exhibition", 32300], + ["kx2018-077", "케이샵 2018", "2018-08-29", "2018-08-31", "홀 5", "exhibition", 11900], + ["kx2018-078", "제 29회 한국국제가구 및 인테리어산업대전", "2018-08-29", "2018-09-02", "홀 1A, 1B, 2, 3", "trade", 86000], + ["kx2018-079", "2018 글로벌 비즈니스 소싱페어", "2018-08-30", "2018-08-31", "홀 4", "culture", 9300], + ["kx2018-080", "2018 경기도 교통안전 박람회", "2018-09-05", "2018-09-06", "홀 4", "trade", 11800], + ["kx2018-081", "2018 한국 중장비 부품 및 어태치먼트 전시회 (KOHES)", "2018-09-05", "2018-09-07", "홀 7B", "trade", 12000], + ["kx2018-082", "제11회 국제자원순환산업전 (Re-Tech)", "2018-09-05", "2018-09-07", "홀 7A", "trade", 19100], + ["kx2018-083", "국제음향·영상산업전 2018", "2018-09-05", "2018-09-07", "홀 8B", "trade", 12300], + ["kx2018-084", "대한민국 교회건축리모델링박람회 2018", "2018-09-05", "2018-09-07", "홀 8A", "exhibition", 18300], + ["kx2018-085", "대한민국 국제 관광박람회", "2018-09-06", "2018-09-09", "홀 2", "exhibition", 19900], + ["kx2018-086", "한국국제전자담배박람회 2018", "2018-09-07", "2018-09-09", "홀 3", "tech", 16100], + ["kx2018-087", "2018 국제자동화정밀기기전(KOFAS-Seoul 2018)", "2018-09-11", "2018-09-14", "홀 4, 5", "exhibition", 33900], + ["kx2018-088", "2018 대한민국 방위산업전(DX KOREA)", "2018-09-12", "2018-09-16", "홀 7, 8", "trade", 36800], + ["kx2018-089", "2018 킨텍스 디지털 헬스케어 페어", "2018-09-13", "2018-09-16", "홀 3", "tech", 20000], + ["kx2018-090", "FINE FOOD FAIR 2018", "2018-09-14", "2018-09-16", "홀 2", "tech", 18000], + ["kx2018-091", "2018 매경 창업&프랜차이즈 쇼", "2018-09-14", "2018-09-16", "홀 1", "exhibition", 17700], + ["kx2018-092", "스마트시티 서밋 아시아 2018", "2018-09-18", "2018-09-20", "홀 4, 5", "tech", 33900], + ["kx2018-093", "제2회 월드 스마트시티 위크(WSCW)", "2018-09-18", "2018-09-20", "홀 옥외2", "tech", 11900], + ["kx2018-094", "대한민국 에너지대전", "2018-10-02", "2018-10-05", "홀 1, 2", "trade", 46700], + ["kx2018-095", "20회 킨텍스 코베 베이비페어", "2018-10-04", "2018-10-07", "홀 3, 4", "culture", 43600], + ["kx2018-096", "2018 호텔쇼", "2018-10-10", "2018-10-13", "홀 7", "exhibition", 24600], + ["kx2018-097", "2018 로보월드", "2018-10-10", "2018-10-13", "홀 1, 2", "exhibition", 49400], + ["kx2018-098", "2018 대한민국 뷰티박람회(10회)", "2018-10-11", "2018-10-14", "홀 3, 4, 5", "culture", 53400], + ["kx2018-099", "2018 카페&베이커리페어", "2018-10-11", "2018-10-14", "홀 8", "culture", 18500], + ["kx2018-100", "2018 한국골프용품전", "2018-10-11", "2018-10-14", "홀 10B", "exhibition", 18300], + ["kx2018-101", "2018 교육대전", "2018-10-18", "2018-10-20", "홀 9", "exhibition", 15200], + ["kx2018-102", "2018 중·장기복무 제대군인 일자리 박람회", "2018-10-19", "2018-10-19", "홀 6C", "exhibition", 5100], + ["kx2018-103", "2018 오토위크", "2018-10-19", "2018-10-21", "홀 1, 2, 3", "exhibition", 32800], + ["kx2018-104", "2018 경기환경전 & 에코 비히클쇼", "2018-10-19", "2018-10-21", "홀 4", "trade", 14300], + ["kx2018-105", "2018 오토위크(자동차 업계 종사자)", "2018-10-19", "2018-10-21", "홀 1전시장 로비3", "exhibition", 17400], + ["kx2018-106", "2018 소재부품뿌리산업주간", "2018-10-23", "2018-10-25", "홀 5", "trade", 19300], + ["kx2018-107", "2018 진로직업체험박람회", "2018-10-24", "2018-10-26", "홀 7", "exhibition", 15500], + ["kx2018-108", "2018 대한민국우수상품전(G-Fair Korea)", "2018-10-24", "2018-10-27", "홀 1, 2, 3", "exhibition", 67100], + ["kx2018-109", "2018 서울국제공구전", "2018-10-30", "2018-11-02", "홀 1", "trade", 32300], + ["kx2018-110", "금속산업대전 2018", "2018-10-30", "2018-11-02", "홀 2, 3", "trade", 39600], + ["kx2018-111", "2018 국제철강 및 비철금속산업전", "2018-10-31", "2018-11-02", "홀 10", "trade", 32100], + ["kx2018-112", "디자인코리아 2018", "2018-10-31", "2018-11-04", "홀 4, 5", "exhibition", 49000], + ["kx2018-113", "월드 할랄 데이 2018 서울", "2018-11-01", "2018-11-03", "홀 미정", "exhibition", 15900], + ["kx2018-114", "2018 공학교육페스티벌", "2018-11-08", "2018-11-09", "홀 7B, 8A", "culture", 20600], + ["kx2018-115", "2018 시니어 리빙&복지 박람회(SENDEX 2018)", "2018-11-08", "2018-11-10", "홀 4B, 5", "culture", 30500], + ["kx2018-116", "2018 청소년 비즈쿨 페스티벌", "2018-11-08", "2018-11-10", "홀 7A", "culture", 13900], + ["kx2018-117", "2018 메디&슬립 코리아", "2018-11-08", "2018-11-10", "홀 4A", "exhibition", 10900], + ["kx2018-118", "제 29회 국제임신출산_육아용품박람회(맘앤베이비엑스포)", "2018-11-08", "2018-11-11", "홀 1, 2", "culture", 30600], + ["kx2018-119", "2018 코리아 렌탈쇼", "2018-11-08", "2018-11-11", "홀 10", "exhibition", 17300], + ["kx2018-120", "제4회 대한민국 안전산업박람회", "2018-11-14", "2018-11-16", "홀 3A, 4, 2", "trade", 34700], + ["kx2018-121", "2018 한국국제승강기엑스포", "2018-11-14", "2018-11-16", "홀 5", "trade", 11200], + ["kx2018-122", "2018 국제봉제기계&섬유산업전시회", "2018-11-14", "2018-11-16", "홀 9A, 9B", "trade", 11200], + ["kx2018-123", "2018 기상기후산업 박람회", "2018-11-14", "2018-11-16", "홀 3B", "exhibition", 13700], + ["kx2018-124", "메가쇼 2018 시즌2", "2018-11-15", "2018-11-18", "홀 7, 8", "exhibition", 32600], + ["kx2018-125", "2018 대한민국 과일산업대전", "2018-11-16", "2018-11-18", "홀 10A", "trade", 14000], + ["kx2018-126", "남양주 라온프라이빗 입주박람회", "2018-11-17", "2018-11-18", "홀 10B", "exhibition", 7200], + ["kx2018-127", "2018 제7회 대한민국 교육기부 박람회", "2018-11-22", "2018-11-25", "홀 1, 2", "exhibition", 34300], + ["kx2018-128", "2018 대한민국펫산업박람회(케이펫페어 일산)", "2018-11-23", "2018-11-25", "홀 7, 8", "culture", 35500], + ["kx2018-129", "인사이드 핀테크 컨퍼런스 & 엑스포 2018", "2018-11-29", "2018-11-30", "홀 6", "tech", 11200], + ["kx2018-130", "한이음 엑스포 2018", "2018-11-30", "2018-12-01", "홀 3A", "exhibition", 26500], + ["kx2018-131", "SW중심대학전시관", "2018-11-30", "2018-12-01", "홀 3B", "exhibition", 30500], + ["kx2018-132", "제6회 월드식품박람회 2018", "2018-11-30", "2018-12-02", "홀 7A", "culture", 21400], + ["kx2018-133", "제4회 월드와인 및 주류 박람회 2018", "2018-11-30", "2018-12-02", "홀 7B", "exhibition", 27600], + ["kx2018-134", "[1부] 2018 코리아 크리스마스페어 & 기프트 원더랜드", "2018-12-07", "2018-12-09", "홀 3, 4", "culture", 25000], + ["kx2018-135", "[1부] K-베이비페어", "2018-12-07", "2018-12-09", "홀 5", "culture", 17200], + ["kx2018-136", "[2부] 2018 코리아 크리스마스페어 & 기프트 원더랜드", "2018-12-14", "2018-12-16", "홀 3, 4", "culture", 21400], + ["kx2018-137", "[2부] K-베이비페어", "2018-12-14", "2018-12-16", "홀 5", "culture", 15700], + ["kx2019-001", "2019 K-웰니스 설날 착한선물전", "2019-01-25", "2019-01-27", "홀 3A", "exhibition", 15400], + ["kx2019-002", "제30회 국제임신출산_육아용품박람회(맘앤베이비엑스포)", "2019-02-14", "2019-02-17", "홀 7, 8", "culture", 47800], + ["kx2019-003", "2019 코리아빌드위크(코리아빌드)", "2019-02-20", "2019-02-24", "홀 1B, 2, 3, 4, 5B", "exhibition", 124000], + ["kx2019-004", "2019 클린에어엑스포", "2019-02-20", "2019-02-24", "홀 5A", "exhibition", 28800], + ["kx2019-005", "2019 코리아빌드위크(인테리어디자인코리아)", "2019-02-20", "2019-02-24", "홀 7, 8A", "culture", 54300], + ["kx2019-006", "2019 코리아빌드위크(2019 경향부동산페어/대한민국건설산업대전)", "2019-02-20", "2019-02-24", "홀 1A", "trade", 25300], + ["kx2019-007", "2019 캠핑&피크닉페어", "2019-02-28", "2019-03-03", "홀 7, 8", "culture", 41900], + ["kx2019-008", "2019 SBS골프 대한민국 골프대전", "2019-02-28", "2019-03-03", "홀 2, 3", "exhibition", 63100], + ["kx2019-009", "Automotive Testing Expo 2019", "2019-03-06", "2019-03-08", "홀 7A", "exhibition", 19200], + ["kx2019-010", "제15회 한국국제냉난방공조전", "2019-03-12", "2019-03-15", "홀 7, 8", "trade", 41200], + ["kx2019-011", "제24회 국제금형 및 관련기기전", "2019-03-12", "2019-03-16", "홀 1B, 2B, 1A, 2A, 3B", "trade", 94000], + ["kx2019-012", "제25회 국제플라스틱⋅고무산업전시회 (KOPLAS 2019)", "2019-03-12", "2019-03-16", "홀 4, 5", "trade", 38400], + ["kx2019-013", "국제 플라스틱+고무소재 및 복합재료 전시회 (M-KOPLAS 2019)", "2019-03-12", "2019-03-16", "홀 3A", "trade", 18800], + ["kx2019-014", "2019 전역예정장병 취업박람회", "2019-03-20", "2019-03-21", "홀 7", "exhibition", 11000], + ["kx2019-015", "2019서울모터쇼", "2019-03-28", "2019-04-07", "홀 1, 2, 3, 4, 5, 9, 10", "exhibition", 210300], + ["kx2019-016", "2019서울모터쇼(참가업체용)", "2019-03-28", "2019-04-07", "홀 1전시장 로비1", "exhibition", 21600], + ["kx2019-017", "2019 프리미엄펫쇼", "2019-04-12", "2019-04-14", "홀 7", "culture", 12500], + ["kx2019-018", "제약화장품산업기술주간 2019(제9회 국제 의약품 · 바이오산업전)", "2019-04-16", "2019-04-18", "홀 5A, 5B", "trade", 18700], + ["kx2019-019", "제약화장품산업기술주간 2019(제9회 국제물류산업대전, 제 14회 제약바이오화장품기술전, 제11회 국제화학장치산업전)", "2019-04-16", "2019-04-19", "홀 1, 2, 3", "trade", 73200], + ["kx2019-020", "제약화장품산업기술주간 2019(제13회 국제연구실험 및 첨단분석장비전, 제4회 국제화장품원료기술전)", "2019-04-16", "2019-04-19", "홀 4", "exhibition", 24900], + ["kx2019-021", "2019 매경 창업&프랜차이즈 쇼", "2019-04-18", "2019-04-20", "홀 7A", "exhibition", 19200], + ["kx2019-022", "코리아 나라장터 엑스포 2019", "2019-04-24", "2019-04-26", "홀 3, 4, 5", "exhibition", 51400], + ["kx2019-023", "2019 국제전자회로 및 실장산업전", "2019-04-24", "2019-04-26", "홀 7", "tech", 10700], + ["kx2019-024", "제27회 코베 베이비페어", "2019-04-25", "2019-04-28", "홀 1, 2", "culture", 45000], + ["kx2019-025", "제50회 MBC 건축박람회", "2019-05-02", "2019-05-05", "홀 1, 2, 3, 4, 5", "exhibition", 93300], + ["kx2019-026", "2019 서울캣쇼", "2019-05-03", "2019-05-05", "홀 7A", "exhibition", 11800], + ["kx2019-027", "플레이엑스포 2019", "2019-05-09", "2019-05-12", "홀 6, 7, 8", "exhibition", 48200], + ["kx2019-028", "2019 경기국제보트쇼", "2019-05-09", "2019-05-12", "홀 3, 4, 5", "exhibition", 51500], + ["kx2019-029", "서울 슈즈 앤 백 박람회", "2019-05-10", "2019-05-12", "홀 1", "exhibition", 17600], + ["kx2019-030", "2019 경기국제웹툰페어", "2019-05-10", "2019-05-12", "홀 10A", "culture", 14300], + ["kx2019-031", "2019 서울국제식품산업대전", "2019-05-21", "2019-05-24", "홀 1, 2, 3, 4, 5, 6, 7, 8", "trade", 169200], + ["kx2019-032", "2019 국토교통기술대전", "2019-05-22", "2019-05-24", "홀 미정", "exhibition", 13600], + ["kx2019-033", "2019 국토교통기술대전", "2019-05-29", "2019-05-31", "홀 10A, 10B", "exhibition", 13600], + ["kx2019-034", "2019 코리아렌탈쇼", "2019-06-06", "2019-06-09", "홀 5", "exhibition", 21000], + ["kx2019-035", "제31회 맘앤베이비엑스포", "2019-06-06", "2019-06-09", "홀 2, 3", "culture", 33300], + ["kx2019-036", "2019 더 골프쇼", "2019-06-06", "2019-06-09", "홀 10A", "exhibition", 19800], + ["kx2019-037", "2019 하나투어 여행박람회", "2019-06-07", "2019-06-09", "홀 7, 8", "culture", 36200], + ["kx2019-038", "2019 국제아웃도어캠핑&레포츠페스티벌", "2019-06-07", "2019-06-09", "홀 9", "culture", 13100], + ["kx2019-039", "2019 귀어귀촌 박람회", "2019-06-07", "2019-06-09", "홀 10B", "exhibition", 16100], + ["kx2019-040", "2019 대한민국 마케팅 Fair", "2019-06-13", "2019-06-15", "홀 10B", "exhibition", 16900], + ["kx2019-041", "2019 고양 FCI 아시아, 아프리카 & 오세아니아 섹션 쇼", "2019-06-15", "2019-06-16", "홀 9", "exhibition", 9400], + ["kx2019-042", "2019 세계태양에너지엑스포", "2019-06-19", "2019-06-21", "홀 4A", "trade", 15900], + ["kx2019-043", "케이샵 2019", "2019-06-19", "2019-06-21", "홀 1", "exhibition", 15700], + ["kx2019-044", "2019 세계에너지저장시스템엑스포", "2019-06-19", "2019-06-21", "홀 5A", "trade", 17900], + ["kx2019-045", "2019 세계탄소제로엑스포", "2019-06-19", "2019-06-21", "홀 4B, 5B", "exhibition", 28600], + ["kx2019-046", "2019 해양수산·양식·식품 수출박람회(2019 Sea Farm Show)", "2019-06-20", "2019-06-22", "홀 9A", "trade", 15800], + ["kx2019-047", "여성발명왕 Expo", "2019-06-20", "2019-06-23", "홀 9B", "exhibition", 14400], + ["kx2019-048", "메가쇼 2019 시즌1", "2019-06-20", "2019-06-23", "홀 7, 8", "exhibition", 41800], + ["kx2019-049", "2019 국제 LED & OLED EXPO", "2019-06-25", "2019-06-27", "홀 3, 4", "exhibition", 30300], + ["kx2019-050", "인사이드 3D프린팅 2019", "2019-06-26", "2019-06-28", "홀 5", "exhibition", 18400], + ["kx2019-051", "나노코리아 2019", "2019-07-03", "2019-07-05", "홀 4, 5", "exhibition", 37300], + ["kx2019-052", "창립 50주년 기념 고속도로 특별박람회", "2019-07-04", "2019-07-05", "홀 6A, 6B", "exhibition", 8500], + ["kx2019-053", "제2회 한국국제전자담배박람회", "2019-07-05", "2019-07-07", "홀 7", "tech", 12700], + ["kx2019-054", "케이팜 귀농귀촌박람회 2019", "2019-07-18", "2019-07-20", "홀 7", "exhibition", 15000], + ["kx2019-055", "2019 대한민국생활낚시박람회", "2019-07-19", "2019-07-21", "홀 4A, 4B", "exhibition", 11300], + ["kx2019-056", "2019 청소년 발명 페스티벌", "2019-07-25", "2019-07-27", "홀 4", "culture", 13600], + ["kx2019-057", "2019 미베 베이비엑스포 / 미래유아교육박람회", "2019-08-15", "2019-08-18", "홀 4, 5", "culture", 30200], + ["kx2019-058", "제4회 대한민국 국제 관광박람회", "2019-08-15", "2019-08-18", "홀 3", "exhibition", 23600], + ["kx2019-059", "2019 한국관상어산업박람회 및 제5회 해양수산부장관배 한국관상어품평회", "2019-08-16", "2019-08-18", "홀 7A", "trade", 12900], + ["kx2019-060", "제51회 MBC건축박람회", "2019-08-22", "2019-08-25", "홀 3, 4, 1, 2, 5A", "exhibition", 93400], + ["kx2019-061", "제12회 국제자원순환산업전/2019 한국 중장비부품 및 어태치먼트 전시회", "2019-08-28", "2019-08-30", "홀 7", "trade", 13500], + ["kx2019-062", "2019 로보유니버스 & K드론", "2019-08-28", "2019-08-30", "홀 미정", "tech", 15400], + ["kx2019-063", "2019 KOFURN(한국국제가구 및 인테리어산업대전)/한국국제목공기계전시회", "2019-08-29", "2019-09-01", "홀 3, 5, 4", "trade", 71800], + ["kx2019-064", "2019 대한민국 에너지대전", "2019-09-03", "2019-09-06", "홀 1, 2", "trade", 28300], + ["kx2019-065", "2019 월드 스마트시티 엑스포", "2019-09-04", "2019-09-06", "홀 3, 4, 5", "tech", 43800], + ["kx2019-066", "2019 전역예정장병 취업박람회", "2019-09-05", "2019-09-05", "홀 6", "exhibition", 5500], + ["kx2019-067", "2019 한국골프용품전 in Summer", "2019-09-05", "2019-09-08", "홀 7A", "exhibition", 25700], + ["kx2019-068", "대한민국 음향음악산업전 2019", "2019-09-18", "2019-09-20", "홀 8A", "trade", 15800], + ["kx2019-069", "2019 대한민국 교회건축&리모델링 박람회", "2019-09-18", "2019-09-20", "홀 미정", "exhibition", 18600], + ["kx2019-070", "DMZ 페스타", "2019-09-18", "2019-09-21", "홀 5", "exhibition", 17500], + ["kx2019-071", "2019 매경 창업 & 프랜차이즈 쇼", "2019-09-19", "2019-09-21", "홀 4A", "exhibition", 14100], + ["kx2019-072", "2019 티몬국제어린이초등교육박람회", "2019-09-19", "2019-09-22", "홀 7A", "exhibition", 16900], + ["kx2019-073", "제5회 대한민국 안전산업박람회", "2019-09-25", "2019-09-27", "홀 1B, 2, 3, 4B", "trade", 51900], + ["kx2019-074", "2019 기상기후산업 박람회", "2019-09-25", "2019-09-27", "홀 1", "exhibition", 17100], + ["kx2019-075", "2019 국제도로교통박람회", "2019-09-25", "2019-09-27", "홀 5", "exhibition", 11800], + ["kx2019-076", "2019 한국건설안전박람회", "2019-09-25", "2019-09-27", "홀 1A", "trade", 17200], + ["kx2019-077", "2019 경기환경산업전", "2019-10-01", "2019-10-02", "홀 5", "trade", 10800], + ["kx2019-078", "제28회 코베 베이비페어", "2019-10-03", "2019-10-06", "홀 미정", "culture", 14900], + ["kx2019-079", "2019 코베 유아교육전", "2019-10-03", "2019-10-06", "홀 7, 8", "culture", 50900], + ["kx2019-080", "2019 오토살롱위크", "2019-10-03", "2019-10-06", "홀 1, 2, 3, 4", "exhibition", 60100], + ["kx2019-081", "2019 호텔쇼&레스토랑 산업전", "2019-10-09", "2019-10-12", "홀 8, 7", "trade", 42600], + ["kx2019-082", "2019 로보월드", "2019-10-09", "2019-10-12", "홀 1, 2", "exhibition", 34900], + ["kx2019-083", "2019 카페&베이커리페어", "2019-10-09", "2019-10-12", "홀 옥외", "culture", 23300], + ["kx2019-084", "2019 대한민국 뷰티박람회", "2019-10-10", "2019-10-13", "홀 3, 4, 5", "culture", 67800], + ["kx2019-085", "한국포장전 2019", "2019-10-15", "2019-10-18", "홀 7, 8", "exhibition", 51300], + ["kx2019-086", "2019 한국산업대전 (한국기계전 & 머신소프트)", "2019-10-22", "2019-10-25", "홀 2, 3, 4, 5", "trade", 70900], + ["kx2019-087", "2019 한국산업대전 (2019 서울국제공구전)", "2019-10-22", "2019-10-25", "홀 1A, 1B", "trade", 24200], + ["kx2019-088", "2019 교육기부박람회", "2019-10-23", "2019-10-26", "홀 7", "exhibition", 14200], + ["kx2019-089", "2019 대한민국 미래교육 한마당", "2019-10-23", "2019-10-26", "홀 8A", "exhibition", 25100], + ["kx2019-090", "2019 한국골프용품전", "2019-10-24", "2019-10-27", "홀 10B", "exhibition", 22300], + ["kx2019-091", "2019 첨단소재부품뿌리산업기술대전", "2019-10-30", "2019-11-01", "홀 7", "trade", 28200], + ["kx2019-092", "대한민국우수상품전시회(G-FAIR KOREA 2019)", "2019-10-31", "2019-11-03", "홀 1, 2, 3", "tech", 74900], + ["kx2019-093", "2019 산학협력 EXPO", "2019-11-06", "2019-11-08", "홀 4", "exhibition", 18400], + ["kx2019-094", "2019 시니어 라이프 & 복지 박람회", "2019-11-06", "2019-11-08", "홀 3", "exhibition", 14200], + ["kx2019-095", "디자인코리아 페스티벌 2019", "2019-11-06", "2019-11-10", "홀 5", "culture", 20300], + ["kx2019-096", "제4회 2019 경기도 교통안전 박람회", "2019-11-08", "2019-11-09", "홀 7A", "trade", 9200], + ["kx2019-097", "메가쇼 2019 시즌2", "2019-11-14", "2019-11-17", "홀 2, 3, 4", "exhibition", 52500], + ["kx2019-098", "2019 대한민국 과일산업대전", "2019-11-15", "2019-11-17", "홀 미정", "trade", 14400], + ["kx2019-099", "2019 대한민국 목재산업박람회", "2019-11-15", "2019-11-17", "홀 1", "exhibition", 13400], + ["kx2019-100", "2019 청정임산물대전", "2019-11-15", "2019-11-17", "홀 옥외", "exhibition", 16100], + ["kx2019-101", "제33회 맘앤베이비엑스포", "2019-11-21", "2019-11-24", "홀 1, 2", "culture", 37800], + ["kx2019-102", "제26회 국제유아교육박람회", "2019-11-21", "2019-11-24", "홀 옥외", "culture", 21000], + ["kx2019-103", "2019 케이펫페어 일산(대한민국펫산업박람회)", "2019-11-22", "2019-11-24", "홀 7, 8", "culture", 31000], + ["kx2019-104", "제7회 월드식품박람회 2019", "2019-11-29", "2019-12-01", "홀 7", "culture", 30800], + ["kx2019-105", "제5회 월드와인 및 주류박람회 2019", "2019-11-29", "2019-12-01", "홀 옥외", "exhibition", 29900], + ["kx2019-106", "테크핀 아시아 2019", "2019-12-05", "2019-12-06", "홀 6", "tech", 7400], + ["kx2019-107", "2019 코리아 크리스마스 페어", "2019-12-05", "2019-12-08", "홀 3, 4, 5, 6A", "culture", 75800], + ["kx2019-108", "2019 경기마켓데이", "2019-12-05", "2019-12-08", "홀 옥외", "exhibition", 25700], + ["kx2019-109", "2019 대한민국 드론박람회", "2019-12-11", "2019-12-12", "홀 4A", "tech", 8100], + ["kx2019-110", "LH하우징 플랫폼 페스타", "2019-12-18", "2019-12-20", "홀 3A, 3A", "exhibition", 11100], + ["kx2019-111", "2019 코리아 프리미어 도그쇼", "2019-12-20", "2019-12-22", "홀 8B", "exhibition", 13500], + ["kx2020-001", "제3회 2020 K-웰니스 착한선물전", "2020-01-10", "2020-01-12", "홀 3A", "exhibition", 17100], + ["kx2020-002", "제53회 MBC건축박람회", "2020-05-08", "2020-05-11", "홀 2A, 2B, 1, 3", "exhibition", 43900], + ["kx2020-003", "2020 서울 캣 쇼", "2020-05-29", "2020-05-31", "홀 4", "exhibition", 16400], + ["kx2020-004", "2020 더골프쇼 KOREA", "2020-06-04", "2020-06-07", "홀 10A", "exhibition", 23100], + ["kx2020-005", "2020 한국국제낚시박람회", "2020-06-05", "2020-06-07", "홀 3", "exhibition", 18600], + ["kx2020-006", "2020 국제아웃도어캠핑&레포츠페스티벌", "2020-06-05", "2020-06-07", "홀 9", "culture", 11400], + ["kx2020-007", "마이다이어트페어 2020", "2020-06-11", "2020-06-14", "홀 미정", "culture", 19900], + ["kx2020-008", "2020 프리미엄 펫쇼", "2020-06-12", "2020-06-14", "홀 9B", "culture", 11500], + ["kx2020-009", "2020 전역예정장병 취업박람회", "2020-06-17", "2020-06-18", "홀 1", "exhibition", 12900], + ["kx2020-010", "2020 금속산업대전", "2020-06-17", "2020-06-20", "홀 2, 3", "trade", 39600], + ["kx2020-011", "메가쇼 2020 시즌1", "2020-06-18", "2020-06-21", "홀 7, 8", "exhibition", 34100], + ["kx2020-012", "제34회 맘앤베이비 엑스포", "2020-06-25", "2020-06-28", "홀 3, 4", "culture", 29200], + ["kx2020-013", "2020 고양가구박람회", "2020-06-25", "2020-06-28", "홀 2", "exhibition", 22200], + ["kx2020-014", "나노코리아 2020", "2020-07-01", "2020-07-03", "홀 4", "exhibition", 19400], + ["kx2020-015", "아템페어 2020(제12회 국제접착코팅필름융합소재전)", "2020-07-01", "2020-07-03", "홀 5", "trade", 13400], + ["kx2020-016", "수소모빌리티+쇼", "2020-07-01", "2020-07-03", "홀 3", "tech", 19300], + ["kx2020-017", "2020 캠핑앤피크닉페어", "2020-07-02", "2020-07-05", "홀 1, 2", "culture", 43400], + ["kx2020-018", "2020 대한민국 명품특산물 페스티벌", "2020-07-16", "2020-07-19", "홀 미정", "culture", 15400], + ["kx2020-019", "2020 대한민국 생활낚시박람회", "2020-07-17", "2020-07-19", "홀 8", "exhibition", 12100], + ["kx2020-020", "제22회 국제포장기자재전/제10회 국제물류산업대전 제15회 국제제약바이오화장품기술전 제12회 국제화학장치산업전 제14회 국제연구실험 및 첨단분석장비전 제10회 국제의약품바이오산업전 제5회 국제화장품원료기술전", "2020-07-27", "2020-07-30", "홀 1, 2, 3, 4, 5", "trade", 110800], + ["kx2020-021", "대한민국 방방곡곡 여행박람회 / 제5회 대한민국 국제 관광박람회", "2020-08-13", "2020-08-16", "홀 3", "culture", 19600], + ["kx2020-022", "미베 베이비엑스포", "2020-08-13", "2020-08-16", "홀 4, 5", "culture", 48600], + ["kx2020-023", "2020 DMZ 포럼", "2020-09-17", "2020-09-18", "홀 옥외", "exhibition", 11400], + ["kx2020-024", "제23회 대한민국우수상품전시회", "2020-10-21", "2020-10-23", "홀 6", "exhibition", 12200], + ["kx2020-025", "제34회 코베 베이비페어 / 2020 코베 유아교육전", "2020-10-22", "2020-10-25", "홀 7", "culture", 21000], + ["kx2020-026", "2020 홈인테리어테크", "2020-10-22", "2020-10-25", "홀 3", "tech", 24800], + ["kx2020-027", "2020 한국건설안전박람회", "2020-10-28", "2020-10-30", "홀 5", "trade", 18900], + ["kx2020-028", "2020 월드 스마트시티 엑스포", "2020-10-28", "2020-10-30", "홀 미정", "tech", 19100], + ["kx2020-029", "2020 K-방역 엑스포", "2020-10-28", "2020-10-30", "홀 4", "exhibition", 15700], + ["kx2020-030", "2020 첨단소재부품뿌리산업기술대전", "2020-10-28", "2020-10-30", "홀 미정", "trade", 11100], + ["kx2020-031", "2020 로보월드", "2020-10-28", "2020-10-31", "홀 1, 2", "exhibition", 40400], + ["kx2020-032", "제54회 MBC건축박람회", "2020-11-05", "2020-11-08", "홀 3, 1, 2", "exhibition", 42100], + ["kx2020-033", "국제 LED & OLED EXPO 2020", "2020-11-11", "2020-11-13", "홀 7", "exhibition", 11700], + ["kx2020-034", "메가쇼 2020 시즌2", "2020-11-12", "2020-11-15", "홀 2, 3, 4", "exhibition", 54400], + ["kx2020-035", "K-PRINT 2020, K-Label 2020, K-SignAD 2020", "2020-11-12", "2020-11-15", "홀 8", "exhibition", 25000], + ["kx2020-036", "2020 대한민국방위산업전", "2020-11-18", "2020-11-20", "홀 9, 10", "trade", 21400], + ["kx2020-037", "호텔쇼(2020 대한민국 숙박산업대전)", "2020-11-19", "2020-11-22", "홀 1A", "trade", 20500], + ["kx2020-038", "2020 한국국제가구 및 인테리어산업대전", "2020-11-19", "2020-11-22", "홀 2, 3", "trade", 48000], + ["kx2020-039", "제35회 맘앤베이비엑스포", "2020-11-19", "2020-11-22", "홀 4", "culture", 22800], + ["kx2020-040", "2020 카페&베이커리페어 (동시개최: 2020 호텔쇼&레스토랑산업전)", "2020-11-19", "2020-11-22", "홀 1B", "trade", 18000], + ["kx2020-041", "2020 케이펫페어 일산 (대한민국펫산업박람회)", "2020-11-20", "2020-11-22", "홀 7, 8", "culture", 27500], + ["kx2020-042", "RETECH 2020 제13회 국제환경장비 및 자원순환산업전", "2020-11-26", "2020-11-28", "홀 8A", "trade", 12500], + ["kx2020-043", "2020 한국 중장비 전시회 - 부품 및 어태치먼트 판매대전", "2020-11-26", "2020-11-28", "홀 8B", "trade", 15500], + ["kx2020-044", "2020 스마트 건설기술·안전대전", "2020-11-27", "2020-11-27", "홀 10A", "tech", 5700], + ["kx2020-045", "겟잇쇼(월드식품.와인주류박람회)킨텍스 2020", "2020-11-27", "2020-11-29", "홀 7", "culture", 12900], + ["kx2020-046", "2020 경기도청년든든페스티벌", "2020-11-28", "2020-11-28", "홀 1", "culture", 4100], + ["kx2021-001", "2021 캠핑앤피크닉페어", "2021-03-04", "2021-03-07", "홀 7, 8", "culture", 40100], + ["kx2021-002", "제10회 더골프쇼 KOREA 시즌1", "2021-03-11", "2021-03-14", "홀 7A", "exhibition", 16200], + ["kx2021-003", "2021 코리아빌드위크", "2021-03-18", "2021-03-21", "홀 2, 3, 4, 1, 5", "exhibition", 76100], + ["kx2021-004", "제25회 한국국제낚시박람회", "2021-03-26", "2021-03-28", "홀 7", "exhibition", 11200], + ["kx2021-005", "제36회 맘앤베이비엑스포", "2021-04-01", "2021-04-04", "홀 7", "culture", 15300], + ["kx2021-006", "2021 대한민국 기본소득 박람회", "2021-04-28", "2021-04-30", "홀 5A", "exhibition", 16400], + ["kx2021-007", "제56회 MBC건축박람회/공공시설 및 조경박람회/서울조명박람회/디지털프린팅·사인엑스포/홈&리빙페어/기프트쇼/차·공예박람회/가구엑스포/스포츠·레저산업박람회", "2021-05-06", "2021-05-09", "홀 1, 2, 3, 4", "tech", 89100], + ["kx2021-008", "2021 서울캣쇼 21", "2021-05-07", "2021-05-09", "홀 5B", "exhibition", 11300], + ["kx2021-009", "제20회 세계 보안 엑스포 (SECON 2021)", "2021-05-12", "2021-05-14", "홀 3, 4", "exhibition", 26300], + ["kx2021-010", "제41회 코베 베이비페어 & 유아교육전", "2021-05-13", "2021-05-16", "홀 9", "culture", 16400], + ["kx2021-011", "2021 국제포장기자재전 스페셜 & 2021 제약화장품위크, 제11회 국제물류산업대전, 국제포장기자재전 스페셜, 제16회 국제제약∙바이오∙화장품기술전, 제13회 국제화학장치산업전, 제15회 국제연구·실험 및 첨단분석장비전, 제6회 국제화장품원료·기술전", "2021-05-21", "2021-05-28", "홀 미정", "trade", 27200], + ["kx2021-012", "2021 DMZ 포럼", "2021-05-21", "2021-05-22", "홀 6", "exhibition", 9000], + ["kx2021-013", "2021 국제포장기자재전 외", "2021-05-25", "2021-05-28", "홀 2B, 2A, 3, 4, 5", "exhibition", 96000], + ["kx2021-014", "2021 케이펫페어 일산 (대한민국펫산업박람회)", "2021-05-28", "2021-05-30", "홀 7, 8A", "culture", 23700], + ["kx2021-015", "2021 국제 아웃도어 캠핑&레포츠 페스티벌", "2021-06-04", "2021-06-06", "홀 7, 8A", "culture", 38800], + ["kx2021-016", "Bravo! 2021 고양시 중장년일자리 박람회", "2021-06-10", "2021-06-10", "홀 6C", "exhibition", 5800], + ["kx2021-017", "2021 고양가구박람회", "2021-06-10", "2021-06-13", "홀 1", "exhibition", 22400], + ["kx2021-018", "제11회 더골프쇼 KOREA 시즌2", "2021-06-10", "2021-06-13", "홀 7A", "exhibition", 25400], + ["kx2021-019", "2021 세계 태양에너지 엑스포", "2021-06-16", "2021-06-18", "홀 2", "trade", 19300], + ["kx2021-020", "메가쇼 2021 시즌1 (팔도밥상 FAIR)", "2021-06-17", "2021-06-20", "홀 7, 8", "tech", 39500], + ["kx2021-021", "제37회 맘앤베이비엑스포", "2021-06-24", "2021-06-27", "홀 7", "culture", 17800], + ["kx2021-022", "2021 대한민국생활낚시박람회", "2021-07-02", "2021-07-04", "홀 7", "exhibition", 17700], + ["kx2021-023", "2021 국제안전보건전시회", "2021-07-05", "2021-07-08", "홀 8", "trade", 21500], + ["kx2021-024", "나노코리아 2021", "2021-07-07", "2021-07-09", "홀 4A", "exhibition", 15000], + ["kx2021-025", "아템페어 2021", "2021-07-07", "2021-07-09", "홀 5", "culture", 17000], + ["kx2021-026", "2021년 온라인전시회", "2021-07-12", "2021-07-16", "홀 6A", "exhibition", 25300], + ["kx2021-027", "2021 서울국제식품산업대전", "2021-07-27", "2021-07-30", "홀 2, 3A, 3B, 4", "trade", 73300], + ["kx2021-028", "한국 소재 및 복합재료 전시회 (K-Mtech 2021)", "2021-08-25", "2021-08-28", "홀 8B", "trade", 23100], + ["kx2021-029", "제26회 국제 플라스틱 고무산업전 (KOPLAS 2021)", "2021-08-25", "2021-08-28", "홀 8A", "trade", 14100], + ["kx2021-030", "K-PRINT 2021(K-Label, K-signAD)", "2021-08-26", "2021-08-28", "홀 7", "exhibition", 17800], + ["kx2021-031", "궁디팡팡 캣페스타", "2021-09-03", "2021-09-05", "홀 7A", "exhibition", 14500], + ["kx2021-032", "2021 월드 스마트시티 엑스포", "2021-09-08", "2021-09-10", "홀 4, 5", "tech", 36400], + ["kx2021-033", "2021수소모빌리티+쇼", "2021-09-08", "2021-09-11", "홀 9", "tech", 17300], + ["kx2021-034", "2021 대한민국 국제 관광박람회 / 대한민국 방방곡곡 여행박람회", "2021-09-09", "2021-09-12", "홀 7", "culture", 19200], + ["kx2021-035", "2021 달.고.나. 정책지원박람회", "2021-09-13", "2021-09-15", "홀 6B", "exhibition", 16300], + ["kx2021-036", "한국국제승강기엑스포, 한국빌딩·공동주택 및 공장관리산업전", "2021-09-14", "2021-09-16", "홀 5", "trade", 12200], + ["kx2021-037", "한국건설안전박람회", "2021-09-14", "2021-09-16", "홀 2A", "trade", 11300], + ["kx2021-038", "2021년 3차 전역예정장병 온라인 취업박람회", "2021-09-15", "2021-09-17", "홀 6A", "exhibition", 14700], + ["kx2021-039", "2021 코리아 나라장터 엑스포", "2021-09-29", "2021-10-01", "홀 4, 5", "exhibition", 51200], + ["kx2021-040", "2021 대한민국 명품 특산물 페스티벌", "2021-09-30", "2021-10-03", "홀 10", "culture", 21200], + ["kx2021-041", "2021 오토살롱위크", "2021-09-30", "2021-10-03", "홀 1, 2, 3", "exhibition", 87000], + ["kx2021-042", "제44회 코베 베이비페어 & 유아교육전 하반기", "2021-09-30", "2021-10-03", "홀 9", "culture", 28100], + ["kx2021-043", "2021 고양시·KTA 태권도장교육산업박람회", "2021-10-02", "2021-10-03", "홀 6B, 6C", "exhibition", 10400], + ["kx2021-044", "에스씨엠 페어 2021", "2021-10-06", "2021-10-08", "홀 2", "culture", 10600], + ["kx2021-045", "2021 그린뉴딜 엑스포", "2021-10-06", "2021-10-08", "홀 1", "exhibition", 18500], + ["kx2021-046", "제14회 청년일자리 박람회", "2021-10-07", "2021-10-07", "홀 6C", "exhibition", 4100], + ["kx2021-047", "제13회 대한민국 뷰티박람회(K-뷰티 엑스포 2021)", "2021-10-07", "2021-10-09", "홀 4, 5", "culture", 31100], + ["kx2021-048", "2021 경기국제웹툰페어", "2021-10-07", "2021-10-10", "홀 3A", "culture", 24700], + ["kx2021-049", "2021 국제아웃도어캠핑&레포츠페스티벌 더 파이널 시즌", "2021-10-08", "2021-10-10", "홀 9", "culture", 15200], + ["kx2021-050", "2021 한국관상어산업박람회", "2021-10-08", "2021-10-10", "홀 7A", "exhibition", 18100], + ["kx2021-051", "인사이드 3D 프린팅 컨퍼런스 & 엑스포", "2021-10-13", "2021-10-15", "홀 5", "exhibition", 11200], + ["kx2021-052", "2021 국제광융합엑스포", "2021-10-13", "2021-10-15", "홀 3A", "exhibition", 10600], + ["kx2021-053", "2021 소부장뿌리기술대전", "2021-10-13", "2021-10-15", "홀 4", "exhibition", 18900], + ["kx2021-054", "2021 대한민국 에너지대전", "2021-10-13", "2021-10-15", "홀 1, 2", "trade", 29300], + ["kx2021-055", "2021 탄소중립 엑스포", "2021-10-13", "2021-10-15", "홀 3B", "exhibition", 11000], + ["kx2021-056", "2021 카페&베이커리페어", "2021-10-14", "2021-10-17", "홀 10A", "culture", 22500], + ["kx2021-057", "호텔쇼 (2021 대한민국 숙박산업대전)", "2021-10-14", "2021-10-17", "홀 10B", "trade", 23500], + ["kx2021-058", "2021 한국산업대전", "2021-10-19", "2021-10-22", "홀 2, 3, 4A", "trade", 75300], + ["kx2021-059", "2021 한국포장전", "2021-10-19", "2021-10-22", "홀 7, 8A", "exhibition", 40300], + ["kx2021-060", "제12회 더골프쇼 KOREA 시즌3", "2021-10-21", "2021-10-24", "홀 10A", "exhibition", 26000], + ["kx2021-061", "금속산업대전 2021", "2021-10-27", "2021-10-29", "홀 3A, 3B", "trade", 12400], + ["kx2021-062", "2021 로보월드 (국제로봇산업대전)", "2021-10-27", "2021-10-30", "홀 1, 2", "tech", 45200], + ["kx2021-063", "대한민국 우수상품전시회 (G-FAIR KOREA 2021)", "2021-10-28", "2021-10-30", "홀 4, 5", "tech", 29000], + ["kx2021-064", "2021 한국국제가구 및 인테리어산업대전 & 한국국제목공기계전시회 (KOFURN 2021)", "2021-10-28", "2021-10-31", "홀 7, 8", "trade", 46700], + ["kx2021-065", "제28회 식품기기전시회", "2021-11-05", "2021-11-06", "홀 7A", "culture", 9100], + ["kx2021-066", "2021 국제도로교통박람회 (ROTREX 2021)", "2021-11-10", "2021-11-12", "홀 5A, 5B", "exhibition", 15800], + ["kx2021-067", "2021 아시아 콘크리트 엑스포", "2021-11-10", "2021-11-12", "홀 4A", "exhibition", 12800], + ["kx2021-068", "제11회 한국국제건설기계전", "2021-11-10", "2021-11-13", "홀 2, 3", "trade", 49100], + ["kx2021-069", "제38회 맘앤베이비엑스포", "2021-11-11", "2021-11-14", "홀 10", "culture", 19100], + ["kx2021-070", "2021 청소년 발명 페스티벌", "2021-11-11", "2021-11-13", "홀 1A", "culture", 13600], + ["kx2021-071", "2021 한국문화축제 K-Culture Fan Fair", "2021-11-13", "2021-11-14", "홀 7", "culture", 9700], + ["kx2021-072", "2021 글로벌 엔터테인먼트 엑스포", "2021-11-13", "2021-11-14", "홀 8", "exhibition", 7800], + ["kx2021-073", "2021 트래블쇼", "2021-11-18", "2021-11-21", "홀 5A", "exhibition", 23000], + ["kx2021-074", "2021 케이펫페어 일산(하) (대한민국펫산업박람회)", "2021-11-19", "2021-11-21", "홀 7, 8", "culture", 35200], + ["kx2021-075", "제14회 국제환경장비 및 자원순환산업전", "2021-11-24", "2021-11-26", "홀 7", "trade", 14500], + ["kx2021-076", "2021 스마트상점 · 리테일 엑스포", "2021-11-25", "2021-11-27", "홀 1", "tech", 18100], + ["kx2021-077", "2021 디지털 대전환 엑스포", "2021-11-25", "2021-11-28", "홀 2, 3, 4A", "tech", 56400], + ["kx2021-078", "2021서울모빌리티쇼", "2021-11-26", "2021-12-05", "홀 9, 10", "tech", 47300], + ["kx2021-079", "제57회 MBC건축박람회/2021 시니어 라이프&복지 박람회/2021 스포츠·레저·건강산업 박람회/제29회 홈&리빙·기프트·차공예 박람회/2021 정원·조경 및 냉난방·건축설비박람회", "2021-12-02", "2021-12-05", "홀 3, 4A, 4B, 5A", "trade", 66700], + ["kx2021-080", "2021 ICT멘토링 엑스포", "2021-12-03", "2021-12-03", "홀 2A", "exhibition", 6300], + ["kx2021-081", "2021 한국유용곤충산업박람회", "2021-12-16", "2021-12-18", "홀 4", "exhibition", 17800], + ["kx2021-082", "2021 미베 베이비엑스포 & 유아교육박람회", "2021-12-16", "2021-12-19", "홀 5", "culture", 18800], + ["kx2021-083", "2021 대한민국 과학기술대전", "2021-12-22", "2021-12-24", "홀 2, 3", "exhibition", 34000], + ["kx2022-001", "2022 코리아빌드위크", "2022-03-03", "2022-03-06", "홀 2, 3, 4, 5A, 5B", "exhibition", 78400], + ["kx2022-002", "제13회 더골프쇼 KOREA 시즌1", "2022-03-10", "2022-03-13", "홀 10A", "exhibition", 17000], + ["kx2022-003", "2022 캠핑&피크닉페어", "2022-03-10", "2022-03-13", "홀 7, 8", "culture", 46800], + ["kx2022-004", "제39회 맘앤베이비엑스포", "2022-03-10", "2022-03-13", "홀 2A", "culture", 22900], + ["kx2022-005", "2022 경기국제보트쇼", "2022-03-11", "2022-03-13", "홀 4, 5", "exhibition", 25200], + ["kx2022-006", "2022 한국국제낚시박람회", "2022-03-11", "2022-03-13", "홀 3", "exhibition", 18400], + ["kx2022-007", "코리아 나라장터 엑스포", "2022-04-13", "2022-04-15", "홀 3, 4, 5", "exhibition", 46900], + ["kx2022-008", "제21회 세계보안엑스포 (SECON & eGISEC 2022)", "2022-04-20", "2022-04-22", "홀 3, 4, 5A", "exhibition", 45800], + ["kx2022-009", "케이팜 귀농귀촌 박람회", "2022-04-28", "2022-04-30", "홀 7A", "exhibition", 14000], + ["kx2022-010", "제 51회 코베 베이비페어&유아교육전", "2022-05-05", "2022-05-08", "홀 7", "culture", 19700], + ["kx2022-011", "2022 서울캣쇼", "2022-05-06", "2022-05-08", "홀 5A", "exhibition", 13000], + ["kx2022-012", "제60회 MBC건축박람회 / 2022 동아 공공시설 및 조경박람회 / 2022 서울 조명 박람회 / 2022 서울 디지털프린팅·사인 엑스포 / 제32회 동아 홈&리빙페어 / 제23회 서울 기프트쇼 / 제21회 동아 차·공예 박람회 / 제19회 동아 가구 엑스포 / 제19회 동아 스포츠·레저산업 박람회", "2022-05-12", "2022-05-15", "홀 1, 2, 3, 4", "tech", 69000], + ["kx2022-013", "2022 플레이엑스포", "2022-05-12", "2022-05-15", "홀 6, 7, 8A", "exhibition", 49800], + ["kx2022-014", "2022 케이펫페어 일산", "2022-05-20", "2022-05-22", "홀 10", "culture", 17000], + ["kx2022-015", "서울국제생산제조기술전(SIMTOS 2022)", "2022-05-23", "2022-05-27", "홀 1, 2, 3, 4, 5, 6, 7, 8", "trade", 169600], + ["kx2022-016", "2022 국제 아웃도어 캠핑&레포츠 페스티벌", "2022-06-03", "2022-06-05", "홀 10", "culture", 17500], + ["kx2022-017", "2022 서울국제식품산업대전", "2022-06-07", "2022-06-10", "홀 1, 2, 3, 4, 5", "trade", 112000], + ["kx2022-018", "제12회 국제물류산업대전 / 제23회 국제포장기자재전 / 제17회 제약바이오화장품기술전 / 제14회 국제화학장치산업전 / 제16회 국제연구실험 및 첨단분석장비전 / 제12회 국제의약품바이오산업전 / 제7회 국제화장품원료기술전", "2022-06-14", "2022-06-17", "홀 1, 2, 3, 4, 5, 7, 8A", "trade", 107200], + ["kx2022-019", "2022 국제광융합 O2O 엑스포", "2022-06-21", "2022-06-23", "홀 3A", "exhibition", 11300], + ["kx2022-020", "메가쇼 2022 시즌1", "2022-06-23", "2022-06-26", "홀 7, 8", "exhibition", 35100], + ["kx2022-021", "제40회 맘앤베이비엑스포", "2022-06-23", "2022-06-26", "홀 5", "culture", 24000], + ["kx2022-022", "제14회 더골프쇼 KOREA 시즌2", "2022-06-23", "2022-06-26", "홀 2A", "exhibition", 22100], + ["kx2022-023", "2022 고양가구박람회", "2022-06-23", "2022-06-26", "홀 1", "exhibition", 14800], + ["kx2022-024", "2022 RECARE 재활·복지박람회", "2022-06-24", "2022-06-26", "홀 4", "exhibition", 10700], + ["kx2022-025", "2022 세계태양에너지엑스포", "2022-06-29", "2022-07-01", "홀 3, 4A", "trade", 63300], + ["kx2022-026", "킨텍스 상상체험 키즈월드(여름)", "2022-07-01", "2022-08-21", "홀 10", "culture", 32000], + ["kx2022-027", "2022 대한민국 생활낚시박람회", "2022-07-01", "2022-07-03", "홀 5A", "exhibition", 17600], + ["kx2022-028", "2022 국제안전보건전시회", "2022-07-04", "2022-07-07", "홀 7, 8A", "trade", 37100], + ["kx2022-029", "제 20회 국제 나노기술 심포지엄 및 융합전시회 / 아템페어 2022", "2022-07-06", "2022-07-08", "홀 4, 5A", "culture", 37900], + ["kx2022-030", "170회 서울 코믹월드", "2022-07-23", "2022-07-24", "홀 4", "culture", 12200], + ["kx2022-031", "2022 청소년 발명 페스티벌", "2022-08-04", "2022-08-06", "홀 1A", "culture", 12900], + ["kx2022-032", "대한민국 국제 관광박람회(대한민국 방방곡곡 여행박람회) / 아시아스마트관광산업대전", "2022-08-11", "2022-08-14", "홀 3", "tech", 16500], + ["kx2022-033", "반찬전", "2022-08-12", "2022-08-15", "홀 5A, 5B", "exhibition", 25600], + ["kx2022-034", "2022 미베 베이비엑스포 & 유아교육박람회", "2022-08-12", "2022-08-15", "홀 4A", "culture", 17600], + ["kx2022-035", "제61회 MBC건축박람회 / 2022 동아 정원 및 조경박람회 / 2022 서울 냉난방 및 건축설비 박람회 / 제33회 동아 홈&리빙페어 / 제24회 서울 기프트쇼 / 제22회 동아 차·공예 박람회 / 제20회 동아 스포츠·레저산업 박람회 / 2022 센덱스", "2022-08-18", "2022-08-21", "홀 1A, 2, 3A, 3B, 4A, 4B", "trade", 99400], + ["kx2022-036", "2022 전라북도 귀농귀촌 상담홍보전 (신바람 귀농귀촌 전라북도와 함께)", "2022-08-19", "2022-08-21", "홀 8B", "exhibition", 15900], + ["kx2022-037", "K-PRINT 2022 / K-Label 2022 / K-Sign & AD 2022", "2022-08-25", "2022-08-27", "홀 7", "exhibition", 16000], + ["kx2022-038", "2022 여성발명왕EXPO", "2022-08-25", "2022-08-27", "홀 4A", "exhibition", 13700], + ["kx2022-039", "한국국제가구 및 인테리어산업대전", "2022-08-25", "2022-08-28", "홀 1, 2", "trade", 49000], + ["kx2022-040", "2023학년도 대전·세종·충남·충북 지역대학교 수시연합입시박람회", "2022-08-27", "2022-08-27", "홀 6A", "exhibition", 5400], + ["kx2022-041", "2022 스마트건설 EXPO", "2022-08-30", "2022-09-01", "홀 6, 8", "tech", 63200], + ["kx2022-042", "2022 국제물산업박람회", "2022-08-31", "2022-09-02", "홀 1, 2", "exhibition", 49300], + ["kx2022-043", "제6회 월드 스마트시티 엑스포", "2022-08-31", "2022-09-02", "홀 3, 4, 5", "tech", 61100], + ["kx2022-044", "제15회 폐기물·자원순환산업전 / 2022 한국 중장비 전시회 - 건설 및 환경장비 특별전", "2022-08-31", "2022-09-02", "홀 7A, 7B", "trade", 30600], + ["kx2022-045", "2022 이차전지 소재부품 및 장비전/한국 소재 복합재료 및 장비전", "2022-08-31", "2022-09-03", "홀 10B", "tech", 27500], + ["kx2022-046", "H2 MEET 2022", "2022-08-31", "2022-09-03", "홀 9, 10A", "exhibition", 44400], + ["kx2022-047", "2022 헬스케어·스파 산업박람회", "2022-09-15", "2022-09-17", "홀 1A", "exhibition", 18400], + ["kx2022-048", "2022 오토살롱위크", "2022-09-16", "2022-09-18", "홀 3, 4, 5", "exhibition", 35700], + ["kx2022-049", "금속산업대전 2022", "2022-09-21", "2022-09-23", "홀 3A, 3B", "trade", 17000], + ["kx2022-050", "대한민국방위산업전 2022", "2022-09-21", "2022-09-25", "홀 7, 8A, 8B", "trade", 62100], + ["kx2022-051", "DX KOREA 2022 전력지원체계 전시관", "2022-09-21", "2022-09-25", "홀 9", "exhibition", 27900], + ["kx2022-052", "궁디팡팡 캣페스타", "2022-09-23", "2022-09-25", "홀 2", "exhibition", 14500], + ["kx2022-053", "2022-3차 국군장병 취업박람회", "2022-09-28", "2022-09-28", "홀 6", "exhibition", 5200], + ["kx2022-054", "핸드아티코리아&일러스트코리아", "2022-09-30", "2022-10-03", "홀 7A", "exhibition", 22400], + ["kx2022-055", "제 56회 코베 베이비페어&유아교육전", "2022-09-30", "2022-10-03", "홀 9A, 9B", "culture", 25200], + ["kx2022-056", "희귀반려동물박람회", "2022-10-01", "2022-10-02", "홀 1A", "culture", 11500], + ["kx2022-057", "2022 국제아웃도어캠핑&레포츠페스티벌", "2022-10-01", "2022-10-03", "홀 7B, 8", "culture", 30500], + ["kx2022-058", "국제 모빌리티 산업전", "2022-10-05", "2022-10-07", "홀 1", "tech", 13100], + ["kx2022-059", "대한민국 뷰티박람회", "2022-10-06", "2022-10-08", "홀 4A, 5", "culture", 28100], + ["kx2022-060", "2022 경기국제웹툰페어", "2022-10-06", "2022-10-09", "홀 3A", "culture", 24700], + ["kx2022-061", "2022 카페&베이커리페어", "2022-10-06", "2022-10-09", "홀 2", "culture", 20700], + ["kx2022-062", "제 2회 유통·물류 및 공급망관리 산업전", "2022-10-12", "2022-10-14", "홀 2A, 2B", "trade", 13700], + ["kx2022-063", "22년도 제대(예정)군인 및 보훈가족을 위한 일자리 박람회", "2022-10-13", "2022-10-13", "홀 9B", "exhibition", 3500], + ["kx2022-064", "2022 국제 공구 및 스마트 용접 자동화전", "2022-10-18", "2022-10-21", "홀 4A, 4B", "tech", 18800], + ["kx2022-065", "2022 한국산업대전", "2022-10-18", "2022-10-21", "홀 2A, 3", "trade", 51200], + ["kx2022-066", "제16회 한국국제냉난방공조전", "2022-10-18", "2022-10-21", "홀 1, 2B", "trade", 47700], + ["kx2022-067", "2022 한국건설안전박람회", "2022-10-19", "2022-10-21", "홀 5", "trade", 18300], + ["kx2022-068", "제4회 앙데팡당KOREA 국제예술제", "2022-10-25", "2022-10-27", "홀 6A", "exhibition", 18100], + ["kx2022-069", "2022 로보월드(국제로봇산업대전)", "2022-10-26", "2022-10-29", "홀 1, 2, 3", "tech", 71500], + ["kx2022-070", "제25회 대한민국우수상품전시회", "2022-10-27", "2022-10-29", "홀 4, 5", "exhibition", 22000], + ["kx2022-071", "2022 스마트국토엑스포", "2022-11-02", "2022-11-04", "홀 5", "tech", 18100], + ["kx2022-072", "2022 소부장뿌리기술대전", "2022-11-02", "2022-11-04", "홀 2", "exhibition", 13500], + ["kx2022-073", "2022 탄소중립 EXPO", "2022-11-02", "2022-11-04", "홀 8", "exhibition", 10800], + ["kx2022-074", "2022 대한민국 에너지대전", "2022-11-02", "2022-11-04", "홀 7, 8A", "trade", 24400], + ["kx2022-075", "제15회 더골프쇼 KOREA 시즌3", "2022-11-03", "2022-11-06", "홀 10A", "exhibition", 14500], + ["kx2022-076", "제42회 맘앤베이비엑스포", "2022-11-10", "2022-11-13", "홀 2A, 2B", "culture", 18200], + ["kx2022-077", "트래블쇼 2022", "2022-11-10", "2022-11-13", "홀 5A", "exhibition", 15700], + ["kx2022-078", "메가쇼 2022 시즌 2", "2022-11-10", "2022-11-13", "홀 3, 4, 5B", "exhibition", 53500], + ["kx2022-079", "2022 스마트리테일·펫가전쇼", "2022-11-18", "2022-11-20", "홀 4A, 4B", "tech", 15200], + ["kx2022-080", "제3회 베이프코리아엑스포", "2022-11-18", "2022-11-20", "홀 8A", "exhibition", 13200], + ["kx2022-081", "2022 메가주", "2022-11-18", "2022-11-20", "홀 1, 2, 3", "culture", 34000], + ["kx2022-082", "2022 고양 디지털미디어테크쇼", "2022-11-23", "2022-11-25", "홀 3, 4", "tech", 35800], + ["kx2022-083", "콘텐츠 코리아 2022", "2022-11-23", "2022-11-25", "홀 5", "exhibition", 11900], + ["kx2022-084", "인공지능그랜드챌린지", "2022-11-24", "2022-11-24", "홀 Hall 6", "tech", 4000], + ["kx2022-085", "2022 국제아웃도어캠핑&레포츠페스티벌", "2022-11-25", "2022-11-27", "홀 7B, 8", "culture", 30500], + ["kx2022-086", "2022 Sea Farm Show 수산양식 박람회", "2022-12-01", "2022-12-03", "홀 8B", "exhibition", 11800], + ["kx2022-087", "2022 대한민국 소상공인대회 및 기능경진대회", "2022-12-02", "2022-12-03", "홀 3", "exhibition", 12500], + ["kx2022-088", "애니메이션 X 게임 페스티벌 2022", "2022-12-03", "2022-12-04", "홀 7, 8A", "tech", 20400], + ["kx2022-089", "2022 한국골프산업박람회", "2022-12-07", "2022-12-09", "홀 7", "exhibition", 14700], + ["kx2022-090", "2022 대한민국 과학기술대전", "2022-12-15", "2022-12-17", "홀 1", "exhibition", 17700], + ["kx2022-091", "제7회 KTA 태권도장 교육·산업 박람회", "2022-12-17", "2022-12-18", "홀 7B", "exhibition", 10800], + ["kx2022-092", "[KOFOOT] 2022 코리아풋볼위크", "2022-12-21", "2022-12-25", "홀 2A, 2B, 3A, 3B", "exhibition", 49100], + ["kx2023-001", "제43회 맘앤베이비엑스포", "2023-02-16", "2023-02-19", "홀 7", "culture", 14500], + ["kx2023-002", "코리아빌드위크", "2023-02-16", "2023-02-19", "홀 1, 2, 3, 4, 5A, 5B", "exhibition", 88300], + ["kx2023-003", "2023 경기국제보트쇼", "2023-03-03", "2023-03-05", "홀 3A, 4, 5", "exhibition", 42200], + ["kx2023-004", "2023 한국국제낚시박람회", "2023-03-03", "2023-03-05", "홀 2A, 2B", "exhibition", 18600], + ["kx2023-005", "2023 캠핑앤피크닉페어", "2023-03-09", "2023-03-12", "홀 7, 8", "culture", 34000], + ["kx2023-006", "제26회 국제금형 및 관련기기전", "2023-03-14", "2023-03-18", "홀 2, 3", "trade", 63100], + ["kx2023-007", "제27회 국제플라스틱 ․ 고무산업전시회 (KOPLAS 2023)", "2023-03-14", "2023-03-18", "홀 4, 5", "trade", 58800], + ["kx2023-008", "2023 서울펫쇼", "2023-03-17", "2023-03-19", "홀 10A", "culture", 16700], + ["kx2023-009", "2023 국제물산업박람회(WATER KOREA)", "2023-03-21", "2023-03-23", "홀 6A, 7, 8A", "exhibition", 41800], + ["kx2023-010", "제22회 세계보안엑스포", "2023-03-29", "2023-03-31", "홀 7, 8", "exhibition", 29100], + ["kx2023-011", "2023서울모빌리티쇼", "2023-03-31", "2023-04-09", "홀 옥외2, 1, 2, 3, 4, 5", "tech", 160100], + ["kx2023-012", "2023 전반기 국군장병 취업박람회", "2023-04-18", "2023-04-19", "홀 10A, 10B", "exhibition", 12400], + ["kx2023-013", "제13회 국제의약품·바이오산업전", "2023-04-18", "2023-04-21", "홀 4A", "trade", 23200], + ["kx2023-014", "제18회 국제제약∙바이오∙화장품기술전", "2023-04-18", "2023-04-21", "홀 2", "exhibition", 21100], + ["kx2023-015", "제13회 국제물류산업대전", "2023-04-18", "2023-04-21", "홀 1A", "trade", 15100], + ["kx2023-016", "제17회 국제연구·실험 및 첨단분석장비전", "2023-04-18", "2023-04-21", "홀 5", "exhibition", 16700], + ["kx2023-017", "제15회 국제화학장치산업전", "2023-04-18", "2023-04-21", "홀 3", "trade", 17100], + ["kx2023-018", "제8회 국제화장품원료·기술전", "2023-04-18", "2023-04-21", "홀 4B", "exhibition", 22900], + ["kx2023-019", "제 1회 국제콜드체인산업전", "2023-04-18", "2023-04-21", "홀 1B", "trade", 19300], + ["kx2023-020", "2023 코리아 나라장터 엑스포", "2023-04-26", "2023-04-28", "홀 3, 4, 5", "exhibition", 57500], + ["kx2023-021", "2023 서울캣쇼", "2023-04-28", "2023-04-30", "홀 7A", "exhibition", 13000], + ["kx2023-022", "코베 베이비페어&유아교육전 - 상반기", "2023-05-04", "2023-05-07", "홀 7", "culture", 23700], + ["kx2023-023", "2023 케이팜 시즌1", "2023-05-11", "2023-05-13", "홀 9B", "exhibition", 11000], + ["kx2023-024", "제63회 MBC건축박람회", "2023-05-11", "2023-05-14", "홀 2, 3, 4, 5", "exhibition", 65300], + ["kx2023-025", "플레이엑스포", "2023-05-11", "2023-05-14", "홀 6, 7, 8", "exhibition", 52000], + ["kx2023-026", "2023 메가주 일산", "2023-05-19", "2023-05-21", "홀 7, 8A", "culture", 36800], + ["kx2023-027", "대한민국 미술박람회 2023", "2023-05-25", "2023-05-28", "홀 8B", "exhibition", 23300], + ["kx2023-028", "2023 국제 아웃도어 캠핑&레포츠 페스티벌 - 5월", "2023-05-26", "2023-05-28", "홀 10, 9B", "culture", 25700], + ["kx2023-029", "2023 서울국제식품산업대전", "2023-05-30", "2023-06-02", "홀 1, 2, 3, 4, 5", "trade", 116900], + ["kx2023-030", "2023 대한민국 고졸인재 채용엑스포", "2023-05-31", "2023-06-01", "홀 6", "exhibition", 30200], + ["kx2023-031", "2023 고양가구박람회", "2023-06-08", "2023-06-11", "홀 1, 2", "exhibition", 35100], + ["kx2023-032", "제16회 더골프쇼 KOREA 시즌1", "2023-06-08", "2023-06-11", "홀 9B", "exhibition", 23100], + ["kx2023-033", "2023 생활낚시박람회", "2023-06-09", "2023-06-11", "홀 10A", "exhibition", 11600], + ["kx2023-034", "메가쇼 2023 시즌1", "2023-06-15", "2023-06-18", "홀 7, 8", "exhibition", 36000], + ["kx2023-035", "국제광융합 O2O EXPO 2023", "2023-06-21", "2023-06-23", "홀 3A", "exhibition", 12800], + ["kx2023-036", "맘앤베이비엑스포", "2023-06-22", "2023-06-25", "홀 10A, 10B", "culture", 19000], + ["kx2023-037", "2023 세계 배터리&충전 인프라 엑스포", "2023-06-27", "2023-06-29", "홀 4A", "tech", 17500], + ["kx2023-038", "2023 세계 태양에너지 엑스포", "2023-06-27", "2023-06-29", "홀 3A", "trade", 10900], + ["kx2023-039", "2023 해양바이오 박람회", "2023-06-28", "2023-06-29", "홀 6B, 6C", "trade", 7300], + ["kx2023-040", "2023 국제안전보건전시회", "2023-07-03", "2023-07-06", "홀 7, 8A", "trade", 46600], + ["kx2023-041", "제21회 국제나노기술 심포지엄 및 융합전시회 / 아템페어 2023", "2023-07-05", "2023-07-07", "홀 4, 5A", "culture", 28500], + ["kx2023-042", "2023 코리아 테마파크&어뮤즈먼트 페어", "2023-07-20", "2023-07-22", "홀 3", "culture", 12900], + ["kx2023-043", "2023 여성발명왕 EXPO", "2023-07-20", "2023-07-22", "홀 4A", "exhibition", 13600], + ["kx2023-044", "2023 SS시즌 캠핑페스타", "2023-07-21", "2023-07-23", "홀 7A", "culture", 11200], + ["kx2023-045", "2023 청소년 발명 페스티벌", "2023-08-03", "2023-08-05", "홀 7A", "culture", 11800], + ["kx2023-046", "코믹월드 2023 Summer", "2023-08-05", "2023-08-06", "홀 3A, 4, 5", "culture", 26400], + ["kx2023-047", "미베 베이비엑스포", "2023-08-10", "2023-08-13", "홀 7", "culture", 24300], + ["kx2023-048", "제8회 대한민국 국제 관광박람회", "2023-08-11", "2023-08-14", "홀 3", "exhibition", 15700], + ["kx2023-049", "제64회 MBC건축박람회", "2023-08-17", "2023-08-20", "홀 3, 4, 5", "exhibition", 60300], + ["kx2023-050", "K-PRINT 2023 / K-Pack 2023 / K-Label 2023 / K-Sign & AD 2023", "2023-08-23", "2023-08-26", "홀 7, 8A", "exhibition", 50500], + ["kx2023-051", "한국국제가구 및 인테리어산업대전", "2023-08-24", "2023-08-27", "홀 2, 3", "trade", 49000], + ["kx2023-052", "경기주류대상", "2023-08-25", "2023-08-27", "홀 6A, 6B", "exhibition", 11600], + ["kx2023-053", "제16회 폐기물·자원순환산업전 (RETECH 2023)", "2023-08-30", "2023-09-01", "홀 7A, 7B", "trade", 17700], + ["kx2023-054", "2023 차세대 분체산업전", "2023-08-30", "2023-09-01", "홀 8A", "trade", 29000], + ["kx2023-055", "마이펫페어 2023 일산", "2023-09-01", "2023-09-03", "홀 10A, 10B", "culture", 11400], + ["kx2023-056", "제1회 고향사랑의 날 기념식 및 고향사랑기부제 박람회", "2023-09-02", "2023-09-04", "홀 9B", "exhibition", 10700], + ["kx2023-057", "2023 월드 스마트시티 엑스포", "2023-09-06", "2023-09-08", "홀 3, 4, 5", "tech", 49000], + ["kx2023-058", "제3회 유통·물류 및 공급망관리 산업전 (SCM FAIR)", "2023-09-06", "2023-09-08", "홀 1, 2", "tech", 32100], + ["kx2023-059", "2023 오토살롱위크", "2023-09-08", "2023-09-10", "홀 7, 8", "exhibition", 23400], + ["kx2023-060", "H2 MEET 2023", "2023-09-13", "2023-09-15", "홀 1, 2, 3", "exhibition", 36800], + ["kx2023-061", "2023 한국건설안전박람회", "2023-09-13", "2023-09-15", "홀 10", "trade", 13000], + ["kx2023-062", "2023 대한민국 안전산업박람회", "2023-09-13", "2023-09-15", "홀 7, 8", "trade", 29800], + ["kx2023-063", "2023 기상기후산업박람회", "2023-09-13", "2023-09-15", "홀 7, 8", "exhibition", 26400], + ["kx2023-064", "2023년 후반기 국군장병 취업박람회", "2023-09-13", "2023-09-14", "홀 Hall 6", "exhibition", 12000], + ["kx2023-065", "이차전지 소재 · 부품 및 장비전 (K-BATTERY SHOW 2023)", "2023-09-13", "2023-09-15", "홀 3A", "tech", 17000], + ["kx2023-066", "궁디팡팡 캣페스타", "2023-09-15", "2023-09-17", "홀 5A, 5B", "exhibition", 14500], + ["kx2023-067", "2023 대한민국 소싱위크", "2023-09-21", "2023-09-22", "홀 2", "exhibition", 12600], + ["kx2023-068", "2023 추석맞이 선물박람회", "2023-09-21", "2023-09-24", "홀 9B", "exhibition", 20700], + ["kx2023-069", "경기국제웹툰페어", "2023-10-06", "2023-10-08", "홀 4A, 4B", "culture", 13000], + ["kx2023-070", "희귀반려동물박람회", "2023-10-07", "2023-10-08", "홀 9B", "culture", 11500], + ["kx2023-071", "2023 국제아웃도어캠핑&레포츠페스티벌 더 파이널 시즌 PART 1", "2023-10-07", "2023-10-09", "홀 7, 8", "culture", 27900], + ["kx2023-072", "2023 로보월드(국제로봇산업대전)", "2023-10-11", "2023-10-14", "홀 1, 2A, 2B, 3", "tech", 64100], + ["kx2023-073", "대한민국 뷰티박람회", "2023-10-12", "2023-10-14", "홀 4, 5", "culture", 28100], + ["kx2023-074", "코베 베이비페어&유아교육전 - 하반기", "2023-10-12", "2023-10-15", "홀 7", "culture", 15900], + ["kx2023-075", "2023 국제공구 및 스마트 용접 자동화전", "2023-10-17", "2023-10-20", "홀 2A, 2B", "tech", 14300], + ["kx2023-076", "2023 소부장뿌리기술대전", "2023-10-18", "2023-10-20", "홀 5", "exhibition", 15300], + ["kx2023-077", "금속산업대전 2023", "2023-10-18", "2023-10-20", "홀 3", "trade", 14500], + ["kx2023-078", "국제 모빌리티 산업전 (KOAA·GTT SHOW)", "2023-10-18", "2023-10-20", "홀 1", "tech", 13400], + ["kx2023-079", "2023 하반기 붐업코리아", "2023-10-18", "2023-10-19", "홀 4", "exhibition", 12400], + ["kx2023-080", "2023 카페&베이커리페어", "2023-10-19", "2023-10-22", "홀 10", "culture", 19400], + ["kx2023-081", "한국포장전 2023", "2023-10-24", "2023-10-27", "홀 7, 8A", "exhibition", 46000], + ["kx2023-082", "제26회 대한민국우수상품전시회", "2023-10-26", "2023-10-28", "홀 1, 2", "exhibition", 33900], + ["kx2023-083", "2023 디지털미디어테크쇼", "2023-11-02", "2023-11-04", "홀 4", "tech", 13900], + ["kx2023-084", "2023 디지털 퓨처쇼", "2023-11-02", "2023-11-04", "홀 5", "tech", 13200], + ["kx2023-085", "제17회 더골프쇼 KOREA 시즌2", "2023-11-02", "2023-11-05", "홀 8A", "exhibition", 15000], + ["kx2023-086", "콘텐츠코리아 2023", "2023-11-02", "2023-11-04", "홀 3A", "exhibition", 19200], + ["kx2023-087", "2023 SW인재페스티벌", "2023-11-02", "2023-11-04", "홀 7A", "culture", 15700], + ["kx2023-088", "2023 소프트웨어(SW) 교육 페스티벌", "2023-11-03", "2023-11-04", "홀 10", "tech", 8500], + ["kx2023-089", "2023 소상공인대회 및 기능경진대회", "2023-11-03", "2023-11-04", "홀 9", "exhibition", 8800], + ["kx2023-090", "2023 스마트국토엑스포", "2023-11-08", "2023-11-10", "홀 10", "tech", 16900], + ["kx2023-091", "2023 한국국제승강기엑스포", "2023-11-08", "2023-11-10", "홀 5", "trade", 12300], + ["kx2023-092", "메가쇼 2023 시즌2&트래블쇼", "2023-11-09", "2023-11-12", "홀 2, 3, 4", "exhibition", 53100], + ["kx2023-093", "2023 콘텐츠 유니버스 코리아", "2023-11-09", "2023-11-11", "홀 7B", "exhibition", 13100], + ["kx2023-094", "2023 대한민국 지방자치 경영혁신 엑스포", "2023-11-16", "2023-11-18", "홀 7", "exhibition", 13000], + ["kx2023-095", "2023 메가주 일산(하)", "2023-11-17", "2023-11-19", "홀 1A, 2, 3, 4, 5", "culture", 89100], + ["kx2023-096", "2023 도로교통박람회", "2023-11-22", "2023-11-24", "홀 3A", "exhibition", 12100], + ["kx2023-097", "2023 경기도 건설신기술 박람회", "2023-11-22", "2023-11-24", "홀 2B", "trade", 13400], + ["kx2023-098", "2023 경기도 교통안전박람회", "2023-11-22", "2023-11-24", "홀 3B", "trade", 12700], + ["kx2023-099", "2023 스마트건설 EXPO", "2023-11-22", "2023-11-24", "홀 1, 2A", "tech", 35500], + ["kx2023-100", "제14회 고양가구박람회 & 리빙아트페스타", "2023-11-23", "2023-11-26", "홀 4, 5", "culture", 48800], + ["kx2023-101", "제45회 맘앤베이비엑스포", "2023-11-23", "2023-11-26", "홀 7", "culture", 21100], + ["kx2023-102", "2023 국제아웃도어캠핑&레포츠페스티벌 더 파이널 시즌 PART 2", "2023-11-24", "2023-11-26", "홀 10", "culture", 18400], + ["kx2023-103", "2023 대한민국 과일산업대전", "2023-11-24", "2023-11-26", "홀 9B", "trade", 15400], + ["kx2023-104", "2023 순환경제 페스티벌", "2023-11-29", "2023-11-30", "홀 9", "trade", 12200], + ["kx2023-105", "2023 늘봄학교·교육기부 박람회", "2023-11-30", "2023-12-03", "홀 7", "exhibition", 21600], + ["kx2023-106", "2023 국제봉제기계섬유산업전", "2023-11-30", "2023-12-02", "홀 8", "trade", 25300], + ["kx2023-107", "2023 월드풋볼페스티벌", "2023-12-01", "2023-12-03", "홀 1B, 2", "culture", 29700], + ["kx2023-108", "애니메이션 X 게임 페스티벌", "2023-12-02", "2023-12-03", "홀 3, 4, 5", "tech", 25600], + ["kx2023-109", "코믹월드 2023 WINTER", "2023-12-16", "2023-12-17", "홀 2A, 3, 4, 5", "culture", 51000], + ["kx2024-001", "마이펫페어 2024 일산 파트1", "2024-01-12", "2024-01-14", "홀 7", "culture", 14400], + ["kx2024-002", "2024 카페디저트페어", "2024-01-25", "2024-01-28", "홀 7A", "culture", 19500], + ["kx2024-003", "2024 코리아빌드위크", "2024-02-21", "2024-02-24", "홀 1, 2, 3, 4, 5", "exhibition", 74300], + ["kx2024-004", "2024 캠프닉페어(캠핑&피크닉페어)", "2024-02-29", "2024-03-03", "홀 3, 4, 5", "culture", 95600], + ["kx2024-005", "제46회 맘앤베이비엑스포", "2024-02-29", "2024-03-03", "홀 7", "culture", 24800], + ["kx2024-006", "제18회 더골프쇼 KOREA 시즌1", "2024-03-07", "2024-03-10", "홀 7A", "exhibition", 20300], + ["kx2024-007", "2024 경기국제보트쇼", "2024-03-08", "2024-03-10", "홀 3A, 4, 5", "exhibition", 33100], + ["kx2024-008", "2024 한국국제낚시박람회 (KOFISH 2024)", "2024-03-08", "2024-03-10", "홀 2A, 2B", "exhibition", 13100], + ["kx2024-009", "2024 서울펫쇼", "2024-03-15", "2024-03-17", "홀 7", "culture", 11600], + ["kx2024-010", "희귀반려동물박람회", "2024-03-16", "2024-03-17", "홀 8A", "culture", 11500], + ["kx2024-011", "제23회 세계 보안 엑스포", "2024-03-20", "2024-03-22", "홀 3, 4, 5A", "exhibition", 38000], + ["kx2024-012", "Automotive Testing Expo 2024", "2024-03-20", "2024-03-22", "홀 10B", "exhibition", 13300], + ["kx2024-013", "서울국제생산제조기술전(SIMTOS 2024)", "2024-04-01", "2024-04-05", "홀 1, 10, 2, 3, 4, 5, 7, 8A, 8B, 9", "trade", 245500], + ["kx2024-014", "2024 서울캣쇼", "2024-04-12", "2024-04-14", "홀 7B", "exhibition", 15700], + ["kx2024-015", "코리아 나라장터 엑스포 2024", "2024-04-17", "2024-04-19", "홀 3, 4, 5", "exhibition", 52200], + ["kx2024-016", "2024 국제콜드체인산업전", "2024-04-23", "2024-04-26", "홀 9B", "trade", 22300], + ["kx2024-017", "제14회 국제물류산업대전", "2024-04-23", "2024-04-26", "홀 10", "trade", 15200], + ["kx2024-018", "제9회 국제화장품원료기술전", "2024-04-23", "2024-04-26", "홀 7B", "exhibition", 22700], + ["kx2024-019", "제18회 국제연구·실험 및 첨단분석장비전", "2024-04-23", "2024-04-26", "홀 8", "exhibition", 21900], + ["kx2024-020", "제14회 국제의약품·바이오산업전", "2024-04-23", "2024-04-26", "홀 7A", "trade", 25900], + ["kx2024-021", "2024년 상반기 국군장병 취업박람회", "2024-04-29", "2024-04-30", "홀 10", "exhibition", 10700], + ["kx2024-022", "제66회 MBC 건축박람회 외(통합명칭)", "2024-05-09", "2024-05-12", "홀 1A, 1B, 2A, 2B, 3, 4A", "exhibition", 60900], + ["kx2024-023", "2024 킨텍스 코베 베이비페어&유아교육전", "2024-05-09", "2024-05-12", "홀 10A, 10B", "culture", 22800], + ["kx2024-024", "2024 메가주 일산(상)", "2024-05-17", "2024-05-19", "홀 1A, 2, 3", "culture", 32100], + ["kx2024-025", "2024 플레이엑스포", "2024-05-23", "2024-05-26", "홀 3, 4, 5A, 5B", "exhibition", 58300], + ["kx2024-026", "2024 국제아웃도어캠핑&레포츠페스티벌(GOCAF 2024)", "2024-05-24", "2024-05-26", "홀 1, 2", "culture", 33500], + ["kx2024-027", "메가쇼 2024 시즌 1", "2024-05-30", "2024-06-02", "홀 2, 3", "exhibition", 41000], + ["kx2024-028", "트래블쇼 2024 시즌 1", "2024-05-30", "2024-06-02", "홀 2A", "exhibition", 25800], + ["kx2024-029", "2024 서울국제식품산업대전", "2024-06-11", "2024-06-14", "홀 1, 2, 3, 4, 5, 7, 8", "trade", 118800], + ["kx2024-030", "2024 농업기술박람회", "2024-06-11", "2024-06-14", "홀 10B", "exhibition", 16400], + ["kx2024-031", "2024 대한민국 고졸 인재 채용엑스포", "2024-06-12", "2024-06-13", "홀 6", "exhibition", 11700], + ["kx2024-032", "2024 케이팜 박람회", "2024-06-13", "2024-06-15", "홀 10A", "exhibition", 14200], + ["kx2024-033", "2024 여성발명왕EXPO(대한민국 세계여성발명대회 및 여성발명품박람회)", "2024-06-20", "2024-06-22", "홀 3A", "exhibition", 15500], + ["kx2024-034", "제19회 더골프쇼 KOREA 시즌2", "2024-06-20", "2024-06-23", "홀 10A", "exhibition", 25700], + ["kx2024-035", "제47회 맘앤베이비엑스포", "2024-06-20", "2024-06-23", "홀 1", "culture", 23000], + ["kx2024-036", "2024 생활낚시박람회", "2024-06-21", "2024-06-23", "홀 7A", "exhibition", 14200], + ["kx2024-037", "2024 로컬 콘텐츠 페스타", "2024-06-21", "2024-06-23", "홀 2", "exhibition", 12200], + ["kx2024-038", "2024 세계 배터리&충전인프라 엑스포", "2024-06-25", "2024-06-27", "홀 5A", "tech", 15100], + ["kx2024-039", "퀀텀코리아 2024", "2024-06-25", "2024-06-27", "홀 8B", "exhibition", 11200], + ["kx2024-040", "2024 세계 태양에너지 엑스포", "2024-06-25", "2024-06-27", "홀 4A", "trade", 15200], + ["kx2024-041", "국제광융합 O2O EXPO 2024", "2024-06-26", "2024-06-28", "홀 3A", "exhibition", 12200], + ["kx2024-042", "2024 고양가구박람회", "2024-06-27", "2024-06-30", "홀 1, 2A", "exhibition", 34600], + ["kx2024-043", "2024 국제안전보건전시회", "2024-07-01", "2024-07-04", "홀 7, 8", "trade", 33900], + ["kx2024-044", "제22회 국제 나노기술심포지엄 및 융합전시회", "2024-07-03", "2024-07-05", "홀 4A, 4B, 5A, 5B", "exhibition", 25100], + ["kx2024-045", "2024 중앙 재테크 박람회", "2024-07-10", "2024-07-11", "홀 6", "tech", 9100], + ["kx2024-046", "2025학년도 경기도교육청 수시 대학입학정보박람회", "2024-07-19", "2024-07-20", "홀 6", "exhibition", 7700], + ["kx2024-047", "2024년 제3회 킨텍스 캠핑페스타", "2024-07-19", "2024-07-21", "홀 7", "culture", 18900], + ["kx2024-048", "대한민국 국제 관광박람회", "2024-07-19", "2024-07-22", "홀 8", "exhibition", 19900], + ["kx2024-049", "K-PRINT 2024", "2024-08-21", "2024-08-24", "홀 7, 8A", "exhibition", 39500], + ["kx2024-050", "제67회 MBC건축박람회/2024 서울 냉·난방 및 건축설비 박람회/제39회 동아 홈&리빙 페어/제28회 동아 기프트 쇼/제26회 동아 차·공예 박람회/제24회 동아 스포츠·레저·골프산업 박람회/2024 센덱스(재활&복지)박람회", "2024-08-22", "2024-08-25", "홀 1A, 2A, 2B, 3", "culture", 51300], + ["kx2024-051", "2024 마이펫페어 일산 Part.2", "2024-08-23", "2024-08-25", "홀 10A, 10B", "culture", 17900], + ["kx2024-052", "2024 한국관상어산업박람회", "2024-08-23", "2024-08-25", "홀 5A", "exhibition", 12200], + ["kx2024-053", "제17회 폐기물자원순환산업전", "2024-08-28", "2024-08-30", "홀 10A", "trade", 11200], + ["kx2024-054", "2024 차세대 분체산업전", "2024-08-28", "2024-08-30", "홀 10B", "trade", 11200], + ["kx2024-055", "2024 콘텐츠유니버스 코리아", "2024-08-29", "2024-08-30", "홀 6", "exhibition", 9700], + ["kx2024-056", "2024 킨텍스 미베 베이비페어&유아교육전", "2024-08-29", "2024-09-01", "홀 2", "culture", 23200], + ["kx2024-057", "2024 한국국제가구 및 인테리어산업대전", "2024-08-29", "2024-09-01", "홀 7, 8, 2전시장 로비 7-1", "trade", 58600], + ["kx2024-058", "2024 경기주류대상", "2024-08-31", "2024-09-01", "홀 1A", "exhibition", 22500], + ["kx2024-059", "2024 월드 스마트시티 엑스포", "2024-09-03", "2024-09-05", "홀 3, 4, 5", "tech", 55700], + ["kx2024-060", "제1회 특화망 기술 산업전", "2024-09-04", "2024-09-06", "홀 1A, 1B", "trade", 12100], + ["kx2024-061", "제4회 유통·물류 및 공급망관리 산업전", "2024-09-04", "2024-09-06", "홀 2A, 2B", "trade", 15200], + ["kx2024-062", "2024 대한민국 소싱위크", "2024-09-05", "2024-09-06", "홀 9B", "exhibition", 7700], + ["kx2024-063", "2024 오토살롱위크", "2024-09-06", "2024-09-08", "홀 7, 8", "exhibition", 33300], + ["kx2024-064", "2024 궁디팡팡 캣페스타", "2024-09-06", "2024-09-08", "홀 10A, 10B", "exhibition", 13800], + ["kx2024-065", "H2 MEET 2024", "2024-09-25", "2024-09-27", "홀 4, 5", "exhibition", 28200], + ["kx2024-066", "이차전지 소재 · 부품 및 장비전 (K-BATTERY SHOW 2024) / 한국 소재 · 복합재료 및 장비전 (K-Mtech 2024)", "2024-09-25", "2024-09-27", "홀 3", "tech", 14500], + ["kx2024-067", "2024 한국국제냉난방공조전", "2024-09-25", "2024-09-27", "홀 1, 2", "trade", 33000], + ["kx2024-068", "제6회 대한민국방위산업전", "2024-09-25", "2024-09-28", "홀 7, 8A", "trade", 43100], + ["kx2024-069", "2024 국제아웃도어캠핑&레포츠페스티벌 더 파이널 시즌 PART 1", "2024-10-04", "2024-10-06", "홀 7, 8", "culture", 21600], + ["kx2024-070", "경기도 5070 일자리박람회", "2024-10-07", "2024-10-08", "홀 3", "exhibition", 10800], + ["kx2024-071", "2024 킨텍스 코베 베이비페어&유아교육전", "2024-10-10", "2024-10-13", "홀 10", "culture", 22800], + ["kx2024-072", "트리우스 광명 1차 입주박람회", "2024-10-12", "2024-10-13", "홀 8B", "exhibition", 10100], + ["kx2024-073", "2024 국제 공구 및 스마트 용접 자동화전", "2024-10-15", "2024-10-18", "홀 3A, 3B", "tech", 18600], + ["kx2024-074", "2024 국제 모빌리티 산업전", "2024-10-16", "2024-10-18", "홀 2A, 2B", "tech", 17100], + ["kx2024-075", "2024 한국건설안전박람회", "2024-10-16", "2024-10-18", "홀 4", "trade", 17300], + ["kx2024-076", "2024 아시아콘크리트엑스포", "2024-10-16", "2024-10-18", "홀 5A, 5B", "exhibition", 19000], + ["kx2024-077", "금속산업대전 2024", "2024-10-16", "2024-10-18", "홀 1", "trade", 12900], + ["kx2024-078", "2024 K-뷰티엑스포 코리아", "2024-10-17", "2024-10-19", "홀 7, 8", "culture", 30300], + ["kx2024-079", "2024 카페&베이커리페어", "2024-10-17", "2024-10-20", "홀 10", "culture", 15700], + ["kx2024-080", "2024 경기국제웹툰페어", "2024-10-17", "2024-10-20", "홀 9A, 9B", "culture", 17600], + ["kx2024-081", "2024 경기북부 일자리박람회", "2024-10-22", "2024-10-22", "홀 6", "exhibition", 3500], + ["kx2024-082", "2024 하반기 붐업코리아 수출상담회", "2024-10-22", "2024-10-23", "홀 1", "trade", 12600], + ["kx2024-083", "콘텐츠코리아 2024", "2024-10-23", "2024-10-25", "홀 7A", "exhibition", 13200], + ["kx2024-084", "2024 고양 드론ㆍ도심항공모빌리티 박람회", "2024-10-23", "2024-10-25", "홀 10B", "tech", 11200], + ["kx2024-085", "2024 디지털미디어테크쇼", "2024-10-23", "2024-10-25", "홀 8A", "tech", 13900], + ["kx2024-086", "2024 디지털퓨처쇼", "2024-10-23", "2024-10-25", "홀 7B", "tech", 15600], + ["kx2024-087", "The AI Show 2024", "2024-10-23", "2024-10-25", "홀 10A", "tech", 18700], + ["kx2024-088", "2024 로보월드", "2024-10-23", "2024-10-26", "홀 1, 2, 3", "exhibition", 53800], + ["kx2024-089", "제12회 한국국제건설기계전", "2024-10-24", "2024-10-27", "홀 4, 5", "trade", 50900], + ["kx2024-090", "2024 소부장뿌리기술대전", "2024-10-30", "2024-11-01", "홀 1", "exhibition", 27500], + ["kx2024-091", "2024 아시아 기계 & 제조 산업전", "2024-10-30", "2024-11-02", "홀 2A, 3A, 3B", "trade", 59100], + ["kx2024-092", "제27회 대한민국우수상품전시회(G-FAIR KOREA 2024)", "2024-10-31", "2024-11-02", "홀 4, 5", "tech", 57800], + ["kx2024-093", "올림픽파크포레온 입주박람회 2차", "2024-11-02", "2024-11-03", "홀 6", "exhibition", 7300], + ["kx2024-094", "제16회 2024 K-GEO Festa", "2024-11-06", "2024-11-08", "홀 10", "exhibition", 13900], + ["kx2024-095", "2024년 「고양시 중장년 일자리박람회」", "2024-11-07", "2024-11-07", "홀 6B", "exhibition", 5500], + ["kx2024-096", "메가쇼 2024 시즌 2", "2024-11-07", "2024-11-10", "홀 3, 4, 5A", "exhibition", 55400], + ["kx2024-097", "2024 가을 고양가구박람회", "2024-11-14", "2024-11-17", "홀 7", "exhibition", 16200], + ["kx2024-098", "2024 메가주 일산(하)", "2024-11-15", "2024-11-17", "홀 1, 2, 3, 4, 5A", "culture", 87900], + ["kx2024-099", "2024 보드게임페스타(일산)", "2024-11-16", "2024-11-17", "홀 8A", "tech", 8300], + ["kx2024-100", "2024 스마트건설 EXPO", "2024-11-20", "2024-11-22", "홀 1, 2", "tech", 27600], + ["kx2024-101", "제48회 맘앤베이비엑스포", "2024-11-21", "2024-11-24", "홀 7", "culture", 19800], + ["kx2024-102", "2024 K- 카 케어 페스티벌", "2024-11-23", "2024-11-23", "홀 6A, 6B", "culture", 4500], + ["kx2024-103", "2024 국제아웃도어캠핑&레포츠페스티벌 더 파이널 시즌 PART 2", "2024-11-29", "2024-12-01", "홀 7, 8A", "culture", 53800], + ["kx2024-104", "힐스테이트 관악 센트씨엘 입주박람회", "2024-11-30", "2024-12-01", "홀 10B", "exhibition", 19300], + ["kx2024-105", "2024 우리쌀·우리술 K-라이스페스타", "2024-12-06", "2024-12-08", "홀 7A, 7B", "exhibition", 15200], + ["kx2024-106", "힐스테이트 검단 포레스트 입주박람회", "2024-12-06", "2024-12-08", "홀 6B, 6C", "exhibition", 15300], + ["kx2024-107", "힐스테이트 검단 웰카운티 아파트 1차 입주박람회", "2024-12-07", "2024-12-08", "홀 8B", "exhibition", 11700], + ["kx2024-108", "2024 대한민국 교육혁신 박람회", "2024-12-13", "2024-12-15", "홀 10", "exhibition", 18400], + ["kx2025-001", "2025 까사 가구쇼", "2025-01-09", "2025-01-12", "홀 3", "exhibition", 16500], + ["kx2025-002", "카페디저트페어", "2025-01-16", "2025-01-19", "홀 7A", "culture", 17700], + ["kx2025-003", "마이펫페어 2025 일산 Part1", "2025-01-17", "2025-01-19", "홀 3", "culture", 14200], + ["kx2025-004", "2025 코리아빌드위크", "2025-02-19", "2025-02-22", "홀 1, 2, 3, 4, 5", "exhibition", 110600], + ["kx2025-005", "제49회 맘앤베이비엑스포", "2025-02-27", "2025-03-02", "홀 1", "culture", 29500], + ["kx2025-006", "경기국제보트쇼", "2025-02-28", "2025-03-02", "홀 3A, 4, 5", "exhibition", 60600], + ["kx2025-007", "2025 한국국제낚시박람회", "2025-02-28", "2025-03-02", "홀 2", "exhibition", 27500], + ["kx2025-008", "코리아 나라장터 엑스포 2025", "2025-03-05", "2025-03-07", "홀 1, 2, 3", "exhibition", 56400], + ["kx2025-009", "2025 코리아나라장터엑스포", "2025-03-05", "2025-03-07", "홀 미정", "exhibition", 13900], + ["kx2025-010", "2025 펫쇼코리아(상)", "2025-03-07", "2025-03-09", "홀 7", "culture", 11700], + ["kx2025-011", "제27회 국제금형 및 관련산업전", "2025-03-11", "2025-03-14", "홀 2, 3", "trade", 47300], + ["kx2025-012", "제28회 국제플라스틱 · 고무산업전시회 (KOPLAS 2025) / 한국 소재 · 복합재료 및 장비전 (K-Mtech 2025)", "2025-03-11", "2025-03-14", "홀 4, 5", "trade", 47100], + ["kx2025-013", "2025 캠핑&피크닉페어", "2025-03-13", "2025-03-16", "홀 7, 8", "culture", 29600], + ["kx2025-014", "제20회 JTBC GOLF × 더골프쇼 코리아 시즌1", "2025-03-13", "2025-03-16", "홀 10A", "exhibition", 20400], + ["kx2025-015", "2025 고양 가구엑스포", "2025-03-13", "2025-03-16", "홀 9A, 9B", "exhibition", 19300], + ["kx2025-016", "제24회 세계 보안 엑스포 & 제13회 전자정부 정보보호 솔루션 페어", "2025-03-19", "2025-03-21", "홀 3, 4, 5", "tech", 47800], + ["kx2025-017", "2025 국제물산업박람회(WATER KOREA)", "2025-03-19", "2025-03-21", "홀 7, 8", "exhibition", 28000], + ["kx2025-018", "2025서울모빌리티쇼", "2025-04-03", "2025-04-13", "홀 1, 2, 3, 4, 5", "tech", 192100], + ["kx2025-019", "2025 경기도 기후테크 전시회", "2025-04-15", "2025-04-16", "홀 6C", "tech", 7400], + ["kx2025-020", "2025 ESG 지속가능 패키징 페어", "2025-04-22", "2025-04-25", "홀 4B", "culture", 14400], + ["kx2025-021", "제20회 국제제약·바이오·화장품기술전", "2025-04-22", "2025-04-25", "홀 5", "exhibition", 15100], + ["kx2025-022", "코리아랩 (제19회 국제연구•실험 및 첨단분석장비전)", "2025-04-22", "2025-04-25", "홀 8", "exhibition", 25000], + ["kx2025-023", "제10회 코스메틱 인사이드 코리아", "2025-04-22", "2025-04-25", "홀 7B", "exhibition", 25400], + ["kx2025-024", "코리아팜 & 바이오 (제15회 국제의약품•바이오산업전)", "2025-04-22", "2025-04-25", "홀 7A", "trade", 16900], + ["kx2025-025", "제17회 국제화학장치산업전", "2025-04-22", "2025-04-25", "홀 4A", "trade", 19200], + ["kx2025-026", "제3회 국제콜드체인산업전", "2025-04-22", "2025-04-25", "홀 3A", "trade", 24600], + ["kx2025-027", "제 15회 국제물류산업대전", "2025-04-22", "2025-04-25", "홀 2, 3B", "trade", 36400], + ["kx2025-028", "2025 냥냥펀치 캣쇼 일산", "2025-05-02", "2025-05-04", "홀 미정", "exhibition", 13700], + ["kx2025-029", "2025년 국군장병 취업박람회", "2025-05-07", "2025-05-08", "홀 10", "exhibition", 12000], + ["kx2025-030", "제68회 MBC건축박람회 외(통합명칭)", "2025-05-08", "2025-05-11", "홀 3A, 4, 5", "exhibition", 52100], + ["kx2025-031", "2025 코베 베이비페어&유아교육전", "2025-05-08", "2025-05-11", "홀 7", "culture", 20500], + ["kx2025-032", "Shanghai Fair going to Korea - Trade Show 2025", "2025-05-13", "2025-05-14", "홀 6B, 6C", "exhibition", 9300], + ["kx2025-033", "트래블쇼 & 한국축제박람회", "2025-05-15", "2025-05-18", "홀 5A", "exhibition", 22100], + ["kx2025-034", "메가쇼 2025 시즌1", "2025-05-15", "2025-05-18", "홀 4, 5B", "exhibition", 28600], + ["kx2025-035", "2025 메가주 일산(상)", "2025-05-16", "2025-05-18", "홀 7, 8", "culture", 36300], + ["kx2025-036", "25년 한국시니어클럽 노인일자리 박람회", "2025-05-21", "2025-05-21", "홀 9B", "exhibition", 4500], + ["kx2025-037", "2025 플레이엑스포", "2025-05-22", "2025-05-25", "홀 3, 4, 5", "exhibition", 51000], + ["kx2025-038", "2025여성발명왕EXPO", "2025-05-22", "2025-05-24", "홀 10A", "exhibition", 11500], + ["kx2025-039", "2025 국제아웃도어캠핑&레포츠페스티벌", "2025-05-23", "2025-05-25", "홀 7, 8", "culture", 37100], + ["kx2025-040", "2025 대한민국 고졸 인재 채용엑스포", "2025-05-28", "2025-05-29", "홀 10B", "exhibition", 10200], + ["kx2025-041", "2025 코리아 스피릿페스타", "2025-05-29", "2025-06-01", "홀 7B", "exhibition", 21000], + ["kx2025-042", "제21회 더골프쇼 KOREA 시즌2", "2025-05-29", "2025-06-01", "홀 8A", "exhibition", 24300], + ["kx2025-043", "2025 카페&베이커리페어 시즌1", "2025-05-29", "2025-06-01", "홀 7A", "culture", 29600], + ["kx2025-044", "2025 생활낚시박람회", "2025-05-30", "2025-06-01", "홀 10A", "exhibition", 30500], + ["kx2025-045", "제50회 맘앤베이비엑스포", "2025-06-05", "2025-06-08", "홀 10", "culture", 17700], + ["kx2025-046", "SEOUL FOOD 2025", "2025-06-10", "2025-06-13", "홀 1, 2, 3, 4, 5, 7, 8", "exhibition", 156900], + ["kx2025-047", "제17회 고양가구박람회", "2025-06-19", "2025-06-22", "홀 7, 8", "exhibition", 40400], + ["kx2025-048", "국제광융합엑스포 2025", "2025-06-25", "2025-06-27", "홀 7A", "exhibition", 18400], + ["kx2025-049", "2025 코리아 카케어 페스티벌", "2025-06-28", "2025-06-29", "홀 6B, 6C", "culture", 12800], + ["kx2025-050", "나노코리아 2025", "2025-07-02", "2025-07-04", "홀 1, 2", "exhibition", 21800], + ["kx2025-051", "2025년 제4회 킨텍스 캠핑페스타", "2025-07-04", "2025-07-06", "홀 3", "culture", 11400], + ["kx2025-052", "2025 국제안전보건전시회", "2025-07-07", "2025-07-10", "홀 7, 8", "trade", 35000], + ["kx2025-053", "2025 펫쇼코리아(하)", "2025-07-18", "2025-07-20", "홀 10", "culture", 17200], + ["kx2025-054", "2025 대한민국 국제 관광박람회", "2025-07-18", "2025-07-21", "홀 7", "exhibition", 19000], + ["kx2025-055", "2025 어린이 통합 안전 박람회", "2025-07-24", "2025-07-26", "홀 7A", "trade", 13100], + ["kx2025-056", "2025 고양 우수중소기업&농수산물박람회", "2025-07-31", "2025-08-04", "홀 1A", "exhibition", 19200], + ["kx2025-057", "2025 코베 베이비페어&유아교육전", "2025-08-07", "2025-08-10", "홀 10", "culture", 20500], + ["kx2025-058", "2025 카페디저트페어", "2025-08-13", "2025-08-16", "홀 7A", "culture", 21900], + ["kx2025-059", "2025 한국관상어산업박람회 및 품평회", "2025-08-15", "2025-08-17", "홀 5", "exhibition", 17300], + ["kx2025-060", "K-PRINT 2025", "2025-08-20", "2025-08-23", "홀 7, 8A", "exhibition", 43100], + ["kx2025-061", "제69회 건축박람회 외(통합명칭)", "2025-08-21", "2025-08-24", "홀 3, 4", "exhibition", 34200], + ["kx2025-062", "2025 차세대 분체산업전", "2025-08-27", "2025-08-29", "홀 10B", "trade", 14400], + ["kx2025-063", "제18회 폐기물·자원순환산업전(RETECH 2025)", "2025-08-27", "2025-08-29", "홀 10A", "trade", 17800], + ["kx2025-064", "2025 한국국제가구 및 인테리어산업대전", "2025-08-28", "2025-08-31", "홀 7, 8, 2전시장 로비 7-1", "trade", 34000], + ["kx2025-065", "2025년 사회리더 대학생 멘토링 리더십콘서트", "2025-08-30", "2025-08-30", "홀 6", "exhibition", 4600], + ["kx2025-066", "2025 경기도교육청 직업계고 취창업박람회", "2025-09-02", "2025-09-03", "홀 7B", "exhibition", 12600], + ["kx2025-067", "2025 대한민국 글로벌 소싱위크", "2025-09-04", "2025-09-05", "홀 7A", "exhibition", 8500], + ["kx2025-068", "마이펫페어 2025 일산 Part2", "2025-09-05", "2025-09-07", "홀 10", "culture", 11700], + ["kx2025-069", "2025 이차전지 소재 · 부품 및 장비전(K-BATTERY)", "2025-09-10", "2025-09-12", "홀 4, 5", "tech", 24700], + ["kx2025-070", "제5회 유통·물류 및 공급망관리 산업전", "2025-09-10", "2025-09-12", "홀 3", "trade", 15900], + ["kx2025-071", "제2회 특화망 기술 산업전", "2025-09-10", "2025-09-12", "홀 2", "trade", 14400], + ["kx2025-072", "제1회 대한민국 산업단지 수출박람회", "2025-09-10", "2025-09-12", "홀 1", "trade", 16100], + ["kx2025-073", "2025 K-뷰티엑스포 코리아", "2025-09-11", "2025-09-13", "홀 7, 8", "culture", 39000], + ["kx2025-074", "2025 대한민국 안전산업박람회", "2025-09-17", "2025-09-19", "홀 1, 2, 3", "trade", 35800], + ["kx2025-075", "2025 한국건설ㆍ안전박람회", "2025-09-17", "2025-09-19", "홀 4", "trade", 14500], + ["kx2025-076", "2025 경기국제웹툰페어", "2025-09-18", "2025-09-21", "홀 5A", "culture", 24100], + ["kx2025-077", "2025 궁디팡팡 캣페스타", "2025-09-19", "2025-09-21", "홀 10", "exhibition", 12400], + ["kx2025-078", "2025 오토살롱테크코리아", "2025-09-19", "2025-09-21", "홀 7", "tech", 13200], + ["kx2025-079", "2025 아시아 기계 & 제조산업전", "2025-09-23", "2025-09-26", "홀 2, 3", "trade", 44100], + ["kx2025-080", "2025 K-GEO Festa", "2025-09-24", "2025-09-26", "홀 5", "exhibition", 14000], + ["kx2025-081", "2025 월드 시티테크 엑스포", "2025-09-24", "2025-09-26", "홀 4, 5", "tech", 26600], + ["kx2025-082", "2025 국제아웃도어캠핑&레포츠페스티벌 더 파이널 시즌 PART 1", "2025-09-26", "2025-09-28", "홀 7, 8", "culture", 35000], + ["kx2025-083", "경기도 5070 일자리박람회", "2025-10-14", "2025-10-14", "홀 6", "exhibition", 5400], + ["kx2025-084", "2025 코베 베이비페어&유아교육전", "2025-10-16", "2025-10-19", "홀 4A, 5A", "culture", 41100], + ["kx2025-085", "제18회 고양가구박람회", "2025-10-16", "2025-10-19", "홀 2, 3", "exhibition", 33500], + ["kx2025-086", "제24회 고양국제아트페어", "2025-10-16", "2025-10-19", "홀 6B", "culture", 19600], + ["kx2025-087", "서울 ADEX 2025(서울 국제 항공우주 및 방위산업 전시회 2025)", "2025-10-20", "2025-10-24", "홀 10, 7, 8, 9", "trade", 110600], + ["kx2025-088", "2025 수출붐업코리아 Week", "2025-10-21", "2025-10-22", "홀 1, 2", "trade", 14900], + ["kx2025-089", "제22회 국제모빌리티산업전", "2025-10-22", "2025-10-24", "홀 4", "tech", 14600], + ["kx2025-090", "2025 청소년비즈쿨 페스티벌", "2025-10-27", "2025-10-29", "홀 10A", "culture", 16000], + ["kx2025-091", "2025 국제도로교통박람회", "2025-10-28", "2025-10-30", "홀 7A", "exhibition", 13100], + ["kx2025-092", "2025 국제 공구 및 스마트 용접 자동화전", "2025-10-28", "2025-10-31", "홀 2", "tech", 17700], + ["kx2025-093", "한국포장전 2025", "2025-10-28", "2025-10-31", "홀 7B, 8", "exhibition", 48000], + ["kx2025-094", "2025 소부장뿌리 기술대전", "2025-10-29", "2025-10-31", "홀 1", "exhibition", 17600], + ["kx2025-095", "금속산업대전 2025", "2025-10-29", "2025-10-31", "홀 3", "trade", 15500], + ["kx2025-096", "제28회 대한민국우수상품전시회(G-FAIR KOREA 2025)", "2025-10-30", "2025-11-01", "홀 4, 5", "tech", 37300], + ["kx2025-097", "2025 대한민국 소상공인대회", "2025-10-31", "2025-11-01", "홀 9", "exhibition", 22400], + ["kx2025-098", "2025 드론 · 도심항공모빌리티 박람회", "2025-11-05", "2025-11-07", "홀 4A", "tech", 14200], + ["kx2025-099", "Solar Asia 2025", "2025-11-05", "2025-11-07", "홀 5A", "exhibition", 15200], + ["kx2025-100", "Battery Asia Show 2025", "2025-11-05", "2025-11-07", "홀 5B", "exhibition", 18100], + ["kx2025-101", "2025 스마트건설·안전·AI 엑스포", "2025-11-05", "2025-11-07", "홀 7, 8", "tech", 24900], + ["kx2025-102", "2025 경기도 건설신기술 박람회", "2025-11-05", "2025-11-07", "홀 8B", "trade", 11900], + ["kx2025-103", "2025 카페&베이커리페어 시즌2", "2025-11-05", "2025-11-08", "홀 10A", "culture", 19600], + ["kx2025-104", "2025 로보월드", "2025-11-05", "2025-11-08", "홀 1, 2", "exhibition", 40500], + ["kx2025-105", "2025 디지털미디어테크쇼", "2025-11-05", "2025-11-07", "홀 3A", "tech", 17100], + ["kx2025-106", "디지털퓨처쇼 2025", "2025-11-05", "2025-11-07", "홀 3B", "tech", 12800], + ["kx2025-107", "2025 마이프차 프랜차이즈 페스타", "2025-11-05", "2025-11-08", "홀 10B", "exhibition", 24500], + ["kx2025-108", "2025 고양시 중장년 일자리 박람회", "2025-11-06", "2025-11-06", "홀 6C", "exhibition", 5900], + ["kx2025-109", "2025 대한민국 가상융합산업대전", "2025-11-12", "2025-11-14", "홀 5", "trade", 10900], + ["kx2025-110", "콘텐츠코리아 2025", "2025-11-13", "2025-11-15", "홀 1", "exhibition", 17500], + ["kx2025-111", "메가쇼 2025 시즌2", "2025-11-13", "2025-11-16", "홀 2A, 3, 4", "exhibition", 49400], + ["kx2025-112", "제22회 더골프쇼 KOREA 시즌3", "2025-11-13", "2025-11-16", "홀 9B", "exhibition", 21300], + ["kx2025-113", "2025 아세안 무역전시회", "2025-11-13", "2025-11-16", "홀 6B, 6C", "trade", 25900], + ["kx2025-114", "2025년 한이음 드림업 엑스포", "2025-11-19", "2025-11-19", "홀 8B", "exhibition", 4800], + ["kx2025-115", "제1회 한국문신산업박람회 (TEXPO)", "2025-11-20", "2025-11-22", "홀 9", "exhibition", 13900], + ["kx2025-116", "2025 메가주 일산(하)", "2025-11-21", "2025-11-23", "홀 1A, 2, 3, 4", "culture", 71200], + ["kx2025-117", "2025 경기어린이박람회", "2025-11-21", "2025-11-23", "홀 8A", "exhibition", 12900], + ["kx2025-118", "2025 대한민국 AI교육 페스티벌", "2025-11-21", "2025-11-22", "홀 7B", "tech", 9500], + ["kx2025-119", "2025 고양 가구엑스포", "2025-11-27", "2025-11-30", "홀 9", "exhibition", 19300], + ["kx2025-120", "제51회 맘앤베이비엑스포", "2025-11-27", "2025-11-30", "홀 10", "culture", 16200], + ["kx2025-121", "2025 우리쌀·우리술 K- 라이스페스타", "2025-11-28", "2025-11-30", "홀 3", "exhibition", 15900], + ["kx2025-122", "2025 국제아웃도어캠핑&레포츠페스티벌", "2025-11-28", "2025-11-30", "홀 4, 5", "culture", 37100], + ["kx2025-123", "H2 MEET 2025", "2025-12-04", "2025-12-07", "홀 6C, 7A, 7B, 8", "exhibition", 51800], + ["kx2025-124", "제97회 국제친선을위한 세계아동 미술대회 입상작품 전시회", "2025-12-19", "2025-12-21", "홀 6B", "exhibition", 14600], + ["kx2026-001", "마이펫페어 2026 일산 Part1", "2026-01-16", "2026-01-18", "홀 7", "culture", 11600], + ["kx2026-002", "2026 카페디저트페어", "2026-01-22", "2026-01-25", "홀 7A", "culture", 17900], + ["kx2026-003", "2026 코리아빌드위크", "2026-02-04", "2026-02-07", "홀 1, 2, 3, 4, 5", "exhibition", 103300], + ["kx2026-004", "제52회 맘앤베이비엑스포", "2026-02-26", "2026-03-01", "홀 7", "culture", 24200], + ["kx2026-005", "2026 서울경기 밀리언쇼 우수중소기업&농특산품박람회", "2026-03-05", "2026-03-09", "홀 1A", "exhibition", 20200], + ["kx2026-006", "2026 캠핑앤피크닉페어", "2026-03-06", "2026-03-08", "홀 7, 8", "culture", 27000], + ["kx2026-007", "2026 한국국제낚시박람회", "2026-03-06", "2026-03-08", "홀 2", "exhibition", 17200], + ["kx2026-008", "2026 경기국제보트쇼", "2026-03-06", "2026-03-08", "홀 3, 4, 5", "exhibition", 36200], + ["kx2026-009", "2026 고양 가구엑스포 & 홈앤리빙 더쇼 & 큐브 현대미술展", "2026-03-12", "2026-03-15", "홀 10", "culture", 18400], + ["kx2026-010", "2026 펫쇼코리아(상)", "2026-03-13", "2026-03-15", "홀 7", "culture", 15200], + ["kx2026-011", "오토모티브 테스팅 엑스포 2026", "2026-03-18", "2026-03-20", "홀 10B", "exhibition", 17000], + ["kx2026-012", "제25회 세계 보안 엑스포 & 제14회 전자정부 정보보호 솔루션 페어", "2026-03-18", "2026-03-20", "홀 3, 4, 5", "tech", 38800], + ["kx2026-013", "코리아 나라장터 엑스포 2026", "2026-03-25", "2026-03-27", "홀 2B, 3, 4, 5", "exhibition", 51100], + ["kx2026-014", "국제의약품·바이오산업전", "2026-03-31", "2026-04-03", "홀 7A", "trade", 18300], + ["kx2026-015", "국제물류산업대전", "2026-03-31", "2026-04-03", "홀 9B", "trade", 26300], + ["kx2026-016", "국제연구·실험 및 첨단분석장비전", "2026-03-31", "2026-04-03", "홀 7A", "exhibition", 29000], + ["kx2026-017", "국제다크팩토리산업전", "2026-03-31", "2026-04-03", "홀 10B", "trade", 25500], + ["kx2026-018", "국제콜드체인산업전", "2026-03-31", "2026-04-03", "홀 10A", "trade", 20700], + ["kx2026-019", "코스메틱 인사이드 코리아", "2026-03-31", "2026-04-03", "홀 7A", "exhibition", 24400], + ["kx2026-020", "국제화학장치·공정기술전", "2026-03-31", "2026-04-03", "홀 4A", "trade", 20800], + ["kx2026-021", "국제제약·바이오·화장품기술전", "2026-03-31", "2026-04-03", "홀 4B, 5", "exhibition", 57000], + ["kx2026-022", "제 2회 ESG 지속가능패키징페어", "2026-03-31", "2026-04-03", "홀 1A", "culture", 24600], + ["kx2026-023", "제 25회 국제포장기자재전", "2026-03-31", "2026-04-03", "홀 1B, 2, 3", "exhibition", 67700], + ["kx2026-024", "서울국제생산제조기술전(SIMTOS 2026)", "2026-04-13", "2026-04-17", "홀 1, 2, 3, 4, 5, 7, 8, 9, 10", "trade", 251500], + ["kx2026-025", "2026 냥냥펀치 캣쇼 일산", "2026-04-24", "2026-04-26", "홀 7B", "exhibition", 11200], + ["kx2026-026", "2026 대한민국 과학축제 in 경기 (with 대한민국 과학기술대전)", "2026-04-24", "2026-04-26", "홀 4", "exhibition", 14400], + ["kx2026-027", "2026 AI Co-Scientist Challenge Korea 시상식 및 컨퍼런스", "2026-04-24", "2026-04-25", "홀 5A", "tech", 11800], + ["kx2026-028", "2026년 제17기 사회리더 대학생 멘토링 발대식", "2026-04-25", "2026-04-25", "홀 6", "exhibition", 5100], + ["kx2026-029", "2026년 국군장병 취업박람회", "2026-04-28", "2026-04-29", "홀 7A, 7B", "exhibition", 10600], + ["kx2026-030", "제70회 MBC건축박람회 외(통합명칭)", "2026-05-07", "2026-05-10", "홀 3A, 4, 5", "exhibition", 63600], + ["kx2026-031", "메가쇼 & 트래블쇼 2026 시즌 1", "2026-05-14", "2026-05-17", "홀 4, 5", "exhibition", 45500], + ["kx2026-032", "2026 코베 베이비페어&유아교육전 (5월)", "2026-05-14", "2026-05-17", "홀 10A-1, 10B-1", "culture", 24700], + ["kx2026-033", "2026 플레이엑스포", "2026-05-21", "2026-05-24", "홀 2A, 3A, 3B, 4A, 4B, 5A, 5B, 5B-2", "exhibition", 82400], + ["kx2026-034", "2026 국제아웃도어캠핑&레포츠페스티벌(5월)", "2026-05-23", "2026-05-25", "홀 7, 8", "culture", 31000], + ["kx2026-035", "2026 메가주 시즌1", "2026-05-29", "2026-05-31", "홀 7, 8", "culture", 29700], + ["kx2026-036", "2026 마이프차 프랜차이즈창업박람회 시즌 1", "2026-06-04", "2026-06-06", "홀 10B", "exhibition", 19200], + ["kx2026-037", "2026 카페&베이커리페어 시즌1", "2026-06-04", "2026-06-07", "홀 10A", "culture", 15300], + ["kx2026-038", "2026 서울국제식품산업대전", "2026-06-09", "2026-06-12", "홀 1, 2, 3, 4, 5, 7, 8", "trade", 128600], + ["kx2026-039", "2026 대한민국 직업계고 고졸인재 채용엑스포", "2026-06-10", "2026-06-11", "홀 6", "exhibition", 12900], + ["kx2026-040", "제53회 맘앤베이비엑스포", "2026-06-18", "2026-06-21", "홀 10", "culture", 16300], + ["kx2026-041", "2026고양가구박람회", "2026-06-18", "2026-06-21", "홀 7, 8", "exhibition", 36300], + ["kx2026-042", "2026 어린이안전박람회", "2026-06-25", "2026-06-27", "홀 7A", "trade", 13200], + ["kx2026-043", "렙타일페어", "2026-06-27", "2026-06-28", "홀 6B", "culture", 7900], + ["kx2026-044", "대한민국 국제 관광박람회", "2026-07-03", "2026-07-05", "홀 10", "exhibition", 14900], + ["kx2026-045", "2026년 제5회 킨텍스 캠핑페스타", "2026-07-03", "2026-07-05", "홀 2", "culture", 12300], + ["kx2026-046", "AI안전보건박람회(2026국제안전보건전시회)", "2026-07-06", "2026-07-09", "홀 7, 8", "tech", 49400], + ["kx2026-047", "제24회 국제 나노기술융합전시회", "2026-07-08", "2026-07-10", "홀 3, 4", "exhibition", 22100], + ["kx2026-048", "국제광융합엑스포 2026", "2026-07-08", "2026-07-10", "홀 2A", "exhibition", 12700], + ["kx2026-049", "KDTEX 2026", "2026-07-17", "2026-07-19", "홀 7B, 8A, 8B", "exhibition", 23800], + ["kx2026-050", "2026 펫쇼코리아(하)", "2026-07-24", "2026-07-26", "홀 10", "culture", 11400], + ["kx2026-051", "2026 코베 베이비페어&유아교육전", "2026-08-06", "2026-08-09", "홀 7A-1, 7B-1", "culture", 17600], + ["kx2026-052", "2026 카페디저트페어", "2026-08-13", "2026-08-16", "홀 10A", "culture", 17900], + ["kx2026-053", "K-PRINT 2026", "2026-08-19", "2026-08-22", "홀 7A, 7B, 8A, 8B-1", "exhibition", 31500], + ["kx2026-054", "제71회 MBC건축박람회 외(통합명칭)", "2026-08-20", "2026-08-23", "홀 4, 5", "exhibition", 28800], + ["kx2026-055", "2026 생활낚시박람회", "2026-08-21", "2026-08-23", "홀 10B", "exhibition", 18600], + ["kx2026-056", "2026 월드 시티테크 엑스포", "2026-08-26", "2026-08-28", "홀 4", "tech", 19200], + ["kx2026-057", "한국국제가구 및 인테리어산업대전 (코펀)", "2026-08-27", "2026-08-30", "홀 7, 8", "trade", 48700], + ["kx2026-058", "마이펫페어 2026 일산 Part 2", "2026-08-28", "2026-08-30", "홀 10", "culture", 12400], + ["kx2026-059", "제19회 폐기물·자원순환산업전(RETECH) & 차세대 분체·유체기술전(A-POWDER TECH)", "2026-09-02", "2026-09-04", "홀 7", "trade", 15100], + ["kx2026-060", "제6회 국제 운송 · 공급망관리 산업전", "2026-09-09", "2026-09-11", "홀 5", "trade", 12100], + ["kx2026-061", "이차전지 소재 · 부품 및 장비전 (K-BATTERY SHOW 2026)", "2026-09-09", "2026-09-11", "홀 7A-1, 7B-1", "tech", 15100], + ["kx2026-062", "2026 로컬 콘텐츠 페스타", "2026-09-18", "2026-09-20", "홀 4", "exhibition", 18800], + ["kx2026-063", "2026 코베 베이비페어&유아교육전", "2026-10-08", "2026-10-11", "홀 10", "culture", 17600], + ["kx2026-064", "2026 국제아웃도어캠핑&레포츠페스티벌 더 파이널 시즌 PART 1", "2026-10-09", "2026-10-11", "홀 7, 8", "culture", 23800], + ["kx2026-065", "2026 도시안전기술박람회", "2026-10-14", "2026-10-16", "홀 1", "trade", 17800], + ["kx2026-066", "2026 한국건설·안전박람회", "2026-10-14", "2026-10-16", "홀 2", "trade", 14500], + ["kx2026-067", "2026 K-뷰티엑스포 코리아", "2026-10-15", "2026-10-17", "홀 3, 4, 5", "culture", 48400], + ["kx2026-068", "국제 모빌리티 산업전", "2026-10-21", "2026-10-23", "홀 3", "tech", 13100], + ["kx2026-069", "2026 TEX+VISION", "2026-10-21", "2026-10-23", "홀 10", "exhibition", 19000], + ["kx2026-070", "2026 국제 공구 및 스마트 용접 자동화전", "2026-10-27", "2026-10-30", "홀 2A, 2B-1", "tech", 19400], + ["kx2026-071", "2026 솔라 아시아", "2026-10-28", "2026-10-30", "홀 7", "exhibition", 10700], + ["kx2026-072", "2026 카페&베이커리페어 시즌2", "2026-10-29", "2026-11-01", "홀 10", "culture", 29300], + ["kx2026-073", "2026 드론·도심항공모빌리티 박람회", "2026-11-04", "2026-11-06", "홀 2", "tech", 13200], + ["kx2026-074", "WORLD HYDROGEN EXPO 2026 (H₂ MEET 2026)", "2026-11-04", "2026-11-06", "홀 6C, 7, 8", "exhibition", 47900], + ["kx2026-075", "한국국제승강기엑스포 2026", "2026-11-11", "2026-11-13", "홀 5", "trade", 17500], + ["kx2026-076", "2026 메가주 일산 시즌2", "2026-11-20", "2026-11-22", "홀 2, 3, 4, 5", "culture", 63900], + ["kx2026-077", "2026 국제아웃도어캠핑&레포츠페스티벌 더 파이널 시즌 PART 2", "2026-11-27", "2026-11-29", "홀 8A, 7", "culture", 34500], +]; diff --git a/src/frontend/src/screens/schedule/sampleSchedule.ts b/src/frontend/src/screens/schedule/sampleSchedule.ts index 5ac1b65..098f35d 100644 --- a/src/frontend/src/screens/schedule/sampleSchedule.ts +++ b/src/frontend/src/screens/schedule/sampleSchedule.ts @@ -2,12 +2,14 @@ * 전시 일정 관리 표시 데이터 (SCR-15 · M1·M6). * ★ 경계면(부분 실 + 부분 샘플): * - 행사(Event) 목록·기간·배정 홀은 실 API 가능(Event 엔티티 존재). - * 현재는 인증 응답 workspaces(WorkspaceDto)를 실 원천으로 사용하며, 없으면 아래 샘플로 폴백한다. - * - 홀 가동률 집계·외부 행사일정 연동은 미구현 → 샘플. 캘린더 점유 매트릭스는 M1 배정 정합 후 실 전환. + * 현재는 인증 응답 workspaces(WorkspaceDto)를 실 원천으로 사용하며, 없으면 크롤링 데이터로 폴백한다. + * - 폴백 원천: kintex.com 크롤링 10년치(2016~2026, 1,098건) — kintexEvents.ts (백엔드 V10 시드와 동일). + * - estVisitors·카테고리는 추정치(샘플). 홀 가동률·캘린더 점유는 크롤링 데이터 기반 계산. */ import type { FlowStatus } from '../../components/ui/Badge'; +import { KINTEX_EVENT_ROWS, type KxCategory } from './kintexEvents'; -export type EventCategory = 'exhibition' | 'culture' | 'trade' | 'tech'; +export type EventCategory = KxCategory; export type EventStatus = 'ongoing' | 'upcoming' | 'ended'; export interface ScheduleEvent { @@ -16,6 +18,8 @@ export interface ScheduleEvent { category: EventCategory; status: EventStatus; period: string; // "2026.09.05–09.08" + start: string; // "2026-09-05" + end: string; // "2026-09-08" halls: string; // "홀 4, 5" estVisitors: string; // "25,000명" designStatus?: FlowStatus; @@ -34,66 +38,122 @@ export const STATUS_LABEL: Record = { ended: '종료', }; -export const SAMPLE_EVENTS: ScheduleEvent[] = [ - { - id: 'smf2026', - title: '스마트팩토리 코리아', - category: 'trade', - status: 'ongoing', - period: '2026.09.05–09.08', - halls: '홀 4, 5', - estVisitors: '25,000명', - designStatus: 'building', - thumbIdx: 0, - }, - { - id: 'health2026', - title: '국제 헬스케어 위크', - category: 'exhibition', - status: 'upcoming', - period: '2026.09.22–09.25', - halls: '홀 7', - estVisitors: '18,000명', - designStatus: 'submitted', - thumbIdx: 1, - }, - { - id: 'foodtech2026', - title: '푸드테크 엑스포', - category: 'tech', - status: 'upcoming', - period: '2026.10.10–10.13', - halls: '홀 3', - estVisitors: '12,000명', - designStatus: 'draft', - thumbIdx: 2, - }, - { - id: 'living2026', - title: '리빙·인테리어 페어', - category: 'culture', - status: 'ended', - period: '2026.08.14–08.17', - halls: '홀 1, 2', - estVisitors: '30,000명', - designStatus: 'inspected', - thumbIdx: 0, - }, -]; +const TODAY_YMD = '2026-07-11'; // currentDate 고정(데모) — ExhibitionSchedulePage.TODAY 와 정합 + +function statusOf(start: string, end: string): EventStatus { + if (end < TODAY_YMD) return 'ended'; + if (start > TODAY_YMD) return 'upcoming'; + return 'ongoing'; +} + +/** "2016-01-28","2016-01-31" → "2016.01.28–01.31" */ +function periodLabel(start: string, end: string): string { + const s = start.split('-').join('.'); + const e = end.split('-').join('.'); + return e.startsWith(s.slice(0, 5)) ? `${s}–${e.slice(5)}` : `${s}–${e}`; +} + +// 진행중 데모 표시용 설계 상태(샘플) — 진행중·임박 행사에만 부여 +const DESIGN_CYCLE: FlowStatus[] = ['building', 'submitted', 'draft', 'inspected']; + +/** 크롤링 10년치 전체 (1,098건, 시작일 오름차순). */ +export const ALL_EVENTS: ScheduleEvent[] = KINTEX_EVENT_ROWS.map((r, i) => { + const [id, title, start, end, halls, category, visitors] = r; + const status = statusOf(start, end); + return { + id, + title, + category, + status, + period: periodLabel(start, end), + start, + end, + halls, + estVisitors: `${visitors.toLocaleString()}명`, + designStatus: status !== 'ended' ? DESIGN_CYCLE[i % DESIGN_CYCLE.length] : undefined, + thumbIdx: i % 3, + }; +}); + +/** 데이터에 존재하는 연도 내림차순 목록 (연도 필터용). */ +export const EVENT_YEARS: number[] = [...new Set(ALL_EVENTS.map((e) => Number(e.start.slice(0, 4))))].sort( + (a, b) => b - a, +); + +/** 하위 호환: 기존 SAMPLE_EVENTS — 오늘 기준 진행중·예정 상위 목록. */ +export const SAMPLE_EVENTS: ScheduleEvent[] = ALL_EVENTS.filter((e) => e.status !== 'ended').slice(0, 12); + +/** 해당 월에 행사가 있는 날짜 집합 — key: 'YYYY-M-D' (미니 캘린더 하이라이트). */ +export function eventDaysFor(year: number, month0: number, events: ScheduleEvent[] = ALL_EVENTS): Set { + const days = new Set(); + const last = new Date(year, month0 + 1, 0).getDate(); + const mStart = `${year}-${String(month0 + 1).padStart(2, '0')}-01`; + const mEnd = `${year}-${String(month0 + 1).padStart(2, '0')}-${String(last).padStart(2, '0')}`; + for (const e of events) { + if (e.end < mStart || e.start > mEnd) continue; + const from = e.start > mStart ? Number(e.start.slice(8, 10)) : 1; + const to = e.end < mEnd ? Number(e.end.slice(8, 10)) : last; + for (let d = from; d <= to; d++) days.add(`${year}-${month0 + 1}-${d}`); + } + return days; +} + +/** 해당 월 날짜(YYYY-MM-DD) → 그 날 진행 중인 행사 목록 (WISE 달력 월 그리드용). */ +export function eventsByDateFor(year: number, month0: number, events: ScheduleEvent[] = ALL_EVENTS): Map { + const map = new Map(); + const last = new Date(year, month0 + 1, 0).getDate(); + const mm = String(month0 + 1).padStart(2, '0'); + for (const e of events) { + if (e.end < `${year}-${mm}-01` || e.start > `${year}-${mm}-${String(last).padStart(2, '0')}`) continue; + const from = e.start.slice(0, 7) === `${year}-${mm}` ? Number(e.start.slice(8, 10)) : 1; + const to = e.end.slice(0, 7) === `${year}-${mm}` ? Number(e.end.slice(8, 10)) : last; + for (let d = from; d <= to; d++) { + const key = `${year}-${mm}-${String(d).padStart(2, '0')}`; + const arr = map.get(key) ?? []; + arr.push(e); + map.set(key, arr); + } + } + return map; +} export interface HallUtilRow { label: string; pct: number; } -export const HALL_UTILIZATION: HallUtilRow[] = [ - { label: '홀 1-3', pct: 85 }, - { label: '홀 4-5', pct: 40 }, - { label: '홀 6-8', pct: 62 }, - { label: '홀 9-10', pct: 18 }, + +const HALL_GROUPS: { label: string; lo: number; hi: number }[] = [ + { label: '홀 1-3', lo: 1, hi: 3 }, + { label: '홀 4-5', lo: 4, hi: 5 }, + { label: '홀 6-8', lo: 6, hi: 8 }, + { label: '홀 9-10', lo: 9, hi: 10 }, ]; -// 미니 캘린더 하이라이트 날짜(샘플) — key: 'YYYY-M-D' -export const EVENT_DAYS = new Set([ - '2026-8-14', '2026-8-15', '2026-8-16', '2026-8-17', - '2026-9-5', '2026-9-6', '2026-9-7', '2026-9-8', -]); +function hallNums(halls: string): number[] { + return (halls.match(/\d+/g) ?? []).map(Number).filter((n) => n >= 1 && n <= 10); +} + +/** 크롤링 데이터 기반 월별 홀 그룹 가동률 — (그룹 홀에 행사가 있는 날 수)/(월 일수). */ +export function hallUtilizationFor(year: number, month0: number): HallUtilRow[] { + const last = new Date(year, month0 + 1, 0).getDate(); + const mm = String(month0 + 1).padStart(2, '0'); + const mStart = `${year}-${mm}-01`; + const mEnd = `${year}-${mm}-${String(last).padStart(2, '0')}`; + return HALL_GROUPS.map((g) => { + const busy = new Set(); + for (const e of ALL_EVENTS) { + if (e.end < mStart || e.start > mEnd) continue; + if (!hallNums(e.halls).some((n) => n >= g.lo && n <= g.hi)) continue; + const from = e.start > mStart ? Number(e.start.slice(8, 10)) : 1; + const to = e.end < mEnd ? Number(e.end.slice(8, 10)) : last; + for (let d = from; d <= to; d++) busy.add(d); + } + return { label: g.label, pct: Math.round((busy.size / last) * 100) }; + }); +} + +/** 하위 호환: 2026-08 기준 가동률. */ +export const HALL_UTILIZATION: HallUtilRow[] = hallUtilizationFor(2026, 7); + +/** 하위 호환: 미니 캘린더 하이라이트(2026-08). */ +export const EVENT_DAYS = eventDaysFor(2026, 7); diff --git a/src/frontend/src/screens/schedule/schedule.css b/src/frontend/src/screens/schedule/schedule.css index a39cecd..b3be269 100644 --- a/src/frontend/src/screens/schedule/schedule.css +++ b/src/frontend/src/screens/schedule/schedule.css @@ -205,6 +205,121 @@ background: var(--color-white); } +/* 목록 건수 */ +.kx-sched__count { + font-size: var(--fs-caption); + color: var(--color-neutral-500); +} + +/* WISE(UIWS ScheduleCalendar) 참조 월 캘린더 */ +.kx-mcal { + min-width: 0; +} +.kx-mcal__toolbar { + display: flex; + align-items: center; + gap: var(--space-2); + margin-bottom: var(--space-3); +} +.kx-mcal__title { + font-size: var(--fs-h3); + color: var(--color-neutral-900); + margin: 0 var(--space-2); +} +.kx-mcal__nav { + display: inline-flex; + align-items: center; + gap: 4px; + padding: 4px 10px; + border: var(--border-card); + border-radius: var(--radius-sm); + background: var(--color-white); + color: var(--color-neutral-700); + font-size: var(--fs-caption); + cursor: pointer; +} +.kx-mcal__nav:hover { + background: var(--color-neutral-050); +} +.kx-mcal__grid { + display: grid; + grid-template-columns: repeat(7, 1fr); + border-top: var(--border-card); + border-left: var(--border-card); +} +.kx-mcal__dow { + text-align: center; + font-size: var(--fs-caption); + font-weight: 600; + color: var(--color-neutral-500); + padding: 6px 0; + background: var(--color-neutral-050); + border-right: var(--border-card); + border-bottom: var(--border-card); +} +.kx-mcal__cell { + min-height: 96px; + padding: 4px; + display: flex; + flex-direction: column; + gap: 2px; + border-right: var(--border-card); + border-bottom: var(--border-card); + overflow: hidden; +} +.kx-mcal__cell.is-out { + background: var(--color-neutral-050); +} +.kx-mcal__cell.is-today { + background: var(--color-primary-050); +} +.kx-mcal__daynum { + font-size: var(--fs-caption); + color: var(--color-neutral-700); +} +.kx-mcal__cell.is-sun .kx-mcal__daynum, +.kx-mcal__dow.is-sun { + color: #d64545; +} +.kx-mcal__cell.is-sat .kx-mcal__daynum, +.kx-mcal__dow.is-sat { + color: var(--color-primary-600); +} +.kx-mcal__cell.is-today .kx-mcal__daynum { + font-weight: 700; + color: var(--color-primary-700); +} +.kx-mcal__chip { + font-size: 11px; + line-height: 1.35; + padding: 1px 6px; + border-radius: var(--radius-sm); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + cursor: default; +} +.kx-mcal__chip.is-exhibition { + background: var(--color-primary-050); + color: var(--color-primary-700); +} +.kx-mcal__chip.is-culture { + background: #fdeef3; + color: #b83268; +} +.kx-mcal__chip.is-trade { + background: #fff4e5; + color: #9a6b1f; +} +.kx-mcal__chip.is-tech { + background: #e6f4ee; + color: #1f7a54; +} +.kx-mcal__more { + font-size: 11px; + color: var(--color-neutral-500); +} + @media (max-width: 1100px) { .kx-sched__split { grid-template-columns: 1fr; diff --git a/stitch_kintex_ai_system_architect/scr_18_hall_booking/code.html b/stitch_kintex_ai_system_architect/scr_18_hall_booking/code.html new file mode 100644 index 0000000..ebfa339 --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_18_hall_booking/code.html @@ -0,0 +1,446 @@ + + + + + + + + + + + + + + + + + +
    + +
    +
    +

    홀 배정 및 즉시 견적

    +
    +auto_awesome +AI 기반 자동 배정 최적화 활성 +
    +
    +
    +
    + +search +
    +
    +notifications +settings +
    M
    +
    +
    +
    + +
    + +
    +
    +
    + +

    2024년 11월

    + +
    +
    +
    +
    +예약 +
    +가배정 +
    +공실 +
    +
    + + +
    +
    +
    +
    + +
    +
    홀 / 일자
    + +
    11/01 (금)
    +
    11/02 (토)
    +
    11/03 (일)
    +
    11/04 (월)
    +
    11/05 (화)
    +
    11/06 (수)
    +
    11/07 (목)
    +
    11/08 (금)
    +
    11/09 (토)
    +
    11/10 (일)
    +
    11/11 (월)
    +
    11/12 (화)
    +
    11/13 (수)
    +
    11/14 (목)
    +
    + +
    + +
    +
    홀1
    +
    행사 A
    +
    +
    +
    가예약 B
    +
    +
    +
    +
    +
    +
    + +
    +
    홀1A
    +
    +
    +
    +
    +선택된 기간 +
    +
    +
    +
    +
    + +
    +
    홀1B
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    홀2
    +
    +
    +
    국제 식품전
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    홀3
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    홀4
    +
    +
    +
    + +
    +
    홀5
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +info +
    +

    배정 시 유의사항

    +
      +
    • Half-Hall 배정 시 전시장 가동률에 따라 AI가 인접 홀 동선을 자동 계산합니다.
    • +
    • 장치일 및 철거일은 본행사 임대료의 50%가 적용됩니다.
    • +
    +
    +
    +
    + +
    + +
    +
    + +

    배정 신청

    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    + +
    + +
    +auto_awesome +
    +

    + 자동 견적(가견적) + AI Draft +

    +
    +
    +기본 임대료 +
    +

    2,250원/㎡ × 4,941㎡ × 4일

    +

    ₩44,469,000

    +
    +
    +
    +성수기 할증 (+10%) +₩4,446,900 +
    +
    +제1전시장 프리미엄 (+10%) +₩4,446,900 +
    +
    +관리비 예치금 (15%) +₩5,337,200 +
    +
    +
    +총 합계 +₩58,700,000 +
    +

    + * 위 금액은 공시요율 기준 가견적이며, 실제 청구 금액은 킨텍스 심사 결과 및 확정 배정 조건에 따라 변동될 수 있습니다. +

    +
    + +
    + + +
    +
    +
    + + +
    + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_19_booth_inventory/code.html b/stitch_kintex_ai_system_architect/scr_19_booth_inventory/code.html new file mode 100644 index 0000000..50c5025 --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_19_booth_inventory/code.html @@ -0,0 +1,312 @@ + + + + + +Booth Sales Inventory - KINTEX AI System + + + + + + + + + + + +
    + +
    +
    +

    부스 판매 인벤토리

    +
    +search + +
    +
    +
    + + +
    +
    +
    AD
    +notifications +
    +
    +
    + +
    +
    +
    총 부스
    +
    510
    +
    +
    +
    판매
    +
    128
    +
    +
    +
    홀드
    +
    12
    +
    +
    +
    예약
    +
    22
    +
    +
    +
    잔여
    +
    348
    +
    +
    +
    판매율
    +
    25%
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    + + +
    +
    +
    판매
    +
    홀드
    +
    예약
    +
    공실
    +
    +
    +
    +
    + +
    Hall 1 - Exhibition Center I
    + +
    + +
    A-101
    +
    A-102
    +
    A-103
    +
    A-104
    +
    A-105
    +
    A-106
    +
    A-107
    +
    A-108
    +
    A-109
    +
    A-110
    +
    +
    +
    B-101
    +
    B-102
    +
    B-103
    +
    B-104
    +
    B-105
    +
    B-106
    +
    B-107
    +
    B-108
    +
    B-109
    +
    B-110
    +
    + +
    +Main Aisle 100 +
    +
    +
    C-101
    +
    C-102
    +
    C-103
    +
    C-104
    +
    C-105
    +
    C-106
    +
    C-107
    +
    C-108
    +
    C-109
    +
    C-110
    +
    + +
    + + + +
    +
    +
    +
    + +
    +
    +
    +판매 중 +부스 상세 정보 +
    +

    A-102 · 독립부스 · 6×3m

    +
    +
    + +
    + + +
    + +
    + +
    + +search +
    +
    + +
    +
    +기본 단가 +₩13,500,000 +
    +
    +
    +프리미엄 계수 +spark +
    +1.2 +
    +
    +최종 판매가 +₩16,200,000 +
    +
    + +
    + + +
    +
    +
    + + +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_20_booth_self_select/code.html b/stitch_kintex_ai_system_architect/scr_20_booth_self_select/code.html new file mode 100644 index 0000000..2d18fc3 --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_20_booth_self_select/code.html @@ -0,0 +1,364 @@ + + + + + +KINTEX Exhibitor Portal - Booth Selection + + + + + + + + + +
    +
    + KINTEX EXHIBITOR PORTAL +
    + +
    +help_outline +account_circle +
    +
    + + + +
    + +
    + +
    +
    + + +
    +
    + + +
    +
    + + +
    + +
    + +
    + +
    +
    +
    + +
    +A-101 +lock +
    + +
    +A-102 +₩13,500,000 + +
    + A-102 · 6×3m · 독립 · ₩13,500,000 +
    +
    +
    + +
    +A-103 +₩13.5M +
    +
    +A-104 +₩13.5M +
    +
    +A-105 +₩13.5M +
    + +
    +A-106 +lock +
    +
    +A-107 +
    +
    +A-108 +
    +
    +Hallway +
    +
    +A-109 +
    +
    +
    + +
    + + + +
    + +
    + Main Entrance +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +

    부스 A-102

    +

    Exhibition Hall 1, Zone A

    +
    +D-15 +
    +
    +
    +aspect_ratio +독립 부스 · 6m × 3m (18sqm) +
    +
    + + +
    +
    +
    +
    +기본 부스 임차료 +₩13,500,000 +
    +
    +옵션 합계 +₩1,350,000 +
    +
    +합계 +
    +
    ₩14,850,000
    +
    (부가가치세 포함)
    +
    +
    +
    +
    +
    + +
    + +
    +
    +auto_awesome +
    +

    AI INSIGHT

    +

    + A-102 부스는 메인 출입구와 인접하여 유동인구가 타 구역 대비 22% 높을 것으로 예측됩니다. +

    +
    +
    +
    + +
    + + +
    +
    +
    + + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_21_settlement/code.html b/stitch_kintex_ai_system_architect/scr_21_settlement/code.html new file mode 100644 index 0000000..93bafba --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_21_settlement/code.html @@ -0,0 +1,471 @@ + + + + + +정산 및 결제 관리 - KINTEX AI System + + + + + + + + + + + +
    + +
    +
    + +
    +
    +
    +search + +
    + +
    +
    +
    +

    Admin Profile

    +

    System Administrator

    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +

    정산 및 결제 관리

    +

    KINTEX AI 시스템의 현재 재무 상태와 결제 일정을 한눈에 확인하십시오.

    +
    +
    + + +
    +
    + +
    + +
    +
    +청구 총액 +account_balance_wallet +
    +
    +

    ₩64,500,000

    +

    총 4건의 청구 항목

    +
    +
    + +
    +
    +납부 완료 +check_circle +
    +
    +

    ₩38,700,000

    +
    +
    +
    +
    +60% +
    +
    +
    + +
    +
    +미납 금액 +warning +
    +
    +

    ₩25,800,000

    +

    즉시 확인이 필요한 항목

    +
    +
    + +
    +
    +다음 납부 마감 +calendar_today +
    +
    +
    +

    2026.07.15

    +

    중도금 (30%)

    +
    +D-9 +
    +
    +
    + +
    + +
    +
    +

    납부 일정 및 내역

    +
    +상태 필터: + +
    +
    +
    +
  • {r.ai === 'block' ? ( - ⚠ 차단 {r.aiCount} + 차단 {r.aiCount} ) : ( - ✓ 통과 + 통과 )} {r.status}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    항목금액기한상태액션
    계약금 (20%)₩12,900,0002026.06.01 + + 완료 + + + +
    중도금 (30%)₩19,350,0002026.07.15 + + 미납 + + + +
    잔금 (30%) + 예치금 (15%)₩29,025,0002026.08.10 + + 대기 + +-
    유틸리티 추가 비용₩3,225,0002026.08.20 + + 대기 + +-
    +
    + + +
    + +
    +

    결제 수단 선택

    +
    + + + +
    +
    +add_card +

    새로운 카드 등록

    +
    +
    + +
    +
    +

    예치금 정산 요약

    +info +
    +
    +
    +총 예치금 +₩9,600,000 +
    +
    +실사용 금액 +₩7,100,000 +
    +
    +
    +환급 예정액 +₩2,500,000 +
    +
    +
    + + + +
    +
    +
    +auto_awesome +
    +
    AI 지출 분석
    +

    지난 행사 대비 유틸리티 비용이 15% 절감되었습니다. 예치금 환급 신청 시 계좌 정보를 다시 한번 확인하십시오.

    +
    +
    +
    +
    + + +
    +
    +

    사후 정산 세부 내역

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    항목 코드세부 내역단가/수량합계 금액정산 상태
    UT-2601전기사용료 (Primary Line)₩1,500 / 1,200kWh₩1,800,000 + + 산정 완료 + +
    WM-2605폐기물 처리비 (산업폐기물 포함)₩50,000 / 15.5t₩775,000 + + 산정 완료 + +
    CS-2602청소 용역비 (야간/상설)₩325,000 / 2회₩650,000 + + 산정 중 + +
    +
    +
    +상기 내역은 실제 사용량에 따라 변동될 수 있습니다. +
    +
    + + +
    +

    © 2024 KINTEX AI Exhibition Management System. All Rights Reserved. Managed by Financial Infrastructure Div.

    +
    + + + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_24_contractor_rfq/code.html b/stitch_kintex_ai_system_architect/scr_24_contractor_rfq/code.html new file mode 100644 index 0000000..9015f36 --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_24_contractor_rfq/code.html @@ -0,0 +1,479 @@ + + + + + +Contractor Matching & RFQ - KINTEX AI System + + + + + + + + + + + +
    +
    +

    Contractor Matching & RFQ - KINTEX AI System

    + +
    +
    +
    + +search +
    + +
    + + +
    +
    +
    + +
    + +
    + +
    +
    + + + + + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + 총 124개 업체 검색됨 +
    +
    +
    + +
    + +
    +
    +
    +
    +

    (주)공간디자인

    + +auto_awesome + AI 추천 · 부스 규모·업종 적합 + +
    +
    +verified + 킨텍스 등록업체 +
    +
    +
    +
    +
    카테고리
    +
    전시디자인설치
    +
    +
    +
    활동 지역
    +
    경기 고양 / 서울
    +
    +
    +
    신뢰도 지표
    +
    규정 준수 98% · 시공 42건
    +
    +
    +
    평점
    +
    +star + 4.8/5.0 +
    +
    +
    +
    +
    +#친환경소재 +#대형부스전문 +#DX시공 +
    +
    + + +
    +
    +
    + +
    +
    +
    +

    유니버셜 아트텍

    +
    +
    +verified + 킨텍스 등록업체 +
    +
    +
    +
    +
    카테고리
    +
    전시디자인설치
    +
    +
    +
    활동 지역
    +
    경기 파주 / 고양
    +
    +
    +
    신뢰도 지표
    +
    규정 준수 95% · 시공 31건
    +
    +
    +
    평점
    +
    +star + 4.6/5.0 +
    +
    +
    +
    +
    +#리깅가능 +#중형부스 +
    +
    + + +
    +
    +
    + +
    +
    +
    +

    (주)킨텍스모듈

    +
    +
    +verified + 킨텍스 등록업체 +
    +
    +
    +
    +
    카테고리
    +
    전시디자인설치
    +
    +
    +
    활동 지역
    +
    전국
    +
    +
    +
    신뢰도 지표
    +
    규정 준수 99% · 시공 156건
    +
    +
    +
    평점
    +
    +star + 4.9/5.0 +
    +
    +
    +
    +
    +#모듈러부스 +#빠른시공 +#가성비 +
    +
    + + +
    +
    +
    +
    +
    + + +
    + +
    +
    +
    +auto_awesome +
    +
    +
    AI Matching Engine
    +
    도면 분석 결과, 12개 업체가 적합합니다
    +
    +
    1
    +
    +
    + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_28_quote_authoring/code.html b/stitch_kintex_ai_system_architect/scr_28_quote_authoring/code.html new file mode 100644 index 0000000..ee83e9c --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_28_quote_authoring/code.html @@ -0,0 +1,378 @@ + + + + + +KINTEX AI System - 견적서 작성 + + + + + + + + + +
    +
    +KINTEX AI System + +
    +
    +
    +search + +
    + + + +
    +
    +
    +
    + +
    + +
    +

    견적서 작성

    +
    +auto_awesome +AI 기반 자동 입력 활성화 +
    +
    + +
    +info +

    물량서(BOQ)에서 항목 및 수량이 AI로 자동 입력되었습니다. 단가를 입력하여 견적을 완성하세요.

    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    공종자재/품명수량단가 (₩)금액 (₩)
    골조알루미늄 프로파일48 + +2,160,000
    조명LED 매립등24 + +360,000
    바닥재니들펀치 카펫 (회색)120 + +1,440,000
    가구상담용 테이블/체어 세트8 + +3,040,000
    그래픽대형 배너 실사출력6 + +636,000
    +
    + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +소계 +₩7,636,000 +
    +
    +부가세(10%) +₩763,600 +
    +
    +
    +최종 견적 총액 +₩8,399,600 +
    +
    +
    +
    + + +
    +
    + +
    +
    + +
    +

    최종 저장: 14:32:05

    +
    +
    + + +
    +
    + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_a1/code.html b/stitch_kintex_ai_system_architect/scr_a1/code.html new file mode 100644 index 0000000..7bbf862 --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_a1/code.html @@ -0,0 +1,487 @@ + + + + + +KINTEX AI Exhibition Manager - 사용자 관리 + + + + + + + + + + + +
    + +
    +
    + + + +
    +search + +
    +
    +
    + + +
    +
    +
    관리
    +운영지원팀 +
    +
    +
    + +
    +
    +
    +

    사용자 관리

    +

    플랫폼에 등록된 모든 사용자의 권한과 상태를 관리합니다.

    +
    + +
    + +
    +
    +

    전체 사용자

    +

    1,284

    +
    +
    +

    활성 계정

    +

    1,240

    +
    +
    +

    2FA 미설정

    +

    12

    +
    +
    +

    잠김 계정

    +

    3

    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    이름이메일역할소속상태2FA최근 접속작업
    +
    +
    +김민수 +
    +
    admin***@kintex.com +관리자 +KINTEX 본사 + + 활성 + + +
    +verified_user +2FA 설정됨 +
    +
    2023-11-20 14:22 + +
    +
    +
    +이서연 +
    +
    sy.lee***@company.com +주최자 +글로벌 엑스포 + + 활성 + + +
    +verified_user +2FA 설정됨 +
    +
    2023-11-20 09:15 + +
    +
    +
    +박지훈 +
    +
    jihoon***@booth.net +참가업체 +테크트리 주식회사 + + 잠금 + + +
    +no_encryption +미설정 +
    +
    2023-11-18 17:40 + +
    +
    +
    +최현우 +
    +
    hwchoi***@system.kr +장치업체 +대성 인테리어 + + 활성 + + +
    +verified_user +2FA 설정됨 +
    +
    2023-11-19 11:05 + +
    +
    +
    +정미경 +
    +
    mk.jung***@kintex.com +홀매니저 +KINTEX 1전시장 + + 비활성 + + +
    +verified_user +2FA 설정됨 +
    +
    2023-10-30 16:55 + +
    +
    + +
    +총 1,284개 중 1-5 표시 +
    + + + + +... + + +
    +
    +
    +
    +
    + +
    +
    +

    사용자 정보 수정

    + +
    +
    + +
    +
    + +
    +

    김민수

    +

    admin***@kintex.com

    +

    KINTEX 본사

    +
    + +
    + + +

    역할에 따라 시스템 접근 권한이 즉시 변경됩니다.

    +
    + +
    + +
    +
    +
    +활성화 상태 +
    + +
    +
    + +
    + + + +
    +
    +
    + + +
    +
    + + + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_a10/code.html b/stitch_kintex_ai_system_architect/scr_a10/code.html new file mode 100644 index 0000000..fa1f6e7 --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_a10/code.html @@ -0,0 +1,347 @@ + + + + + +KINTEX AI 전시관리 - AI 플랫폼 설정 + + + + + + + + + + + +
    + +
    +
    +시스템 설정 > AI 플랫폼 설정 +
    +
    +
    +search + +
    + +
    +
    +
    +

    Administrator

    +

    Super Admin

    +
    + +
    +
    +
    + +
    + +
    +

    + AI 플랫폼 설정 + CORE ENGINE +

    +

    시스템의 핵심 AI 엔진 및 추론 파라미터를 구성합니다.

    +
    + +
    + +
    +
    +
    +
    +psychology +

    텍스트/추론 설정

    +
    +ACTIVE +
    +
    + +
    + +
    +
    +
    +
    +기본 (Primary) +Claude 3.5 Sonnet +
    +
    +arrow_forward +
    +
    +
    +폴백 (Fallback) +Ollama / Llama 3 +
    +
    +
    +
    + +
    +
    +
    + +0.7 +
    + +

    창의성 수치: 낮을수록 정확하고 일관된 답변을 생성합니다.

    +
    +
    +
    + +40 +
    + +

    상위 K개 토큰 샘플링 범위: 텍스트의 다양성을 조절합니다.

    +
    +
    + +
    +
    +
    +verified +
    +
    +

    근거 검증 (RAG) 활성화

    +

    전시 가이드라인 및 규정 데이터를 참조하여 답변의 신뢰도를 높입니다.

    +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    +image +

    이미지 (시공 예상)

    +
    +
    +
    + +
    +auto_awesome +
    +

    나노바나나

    +

    gemini-3.1-flash-image-preview

    +
    +
    +
    +
    +
    + +
    + +건 / 월 +
    +
    +
    + +
    + +KRW +
    +
    +
    +
    +
    + +
    +key_off +
    +

    보안 정보

    +

    + API 키는 서버 환경 변수(env)로 안전하게 관리되며 보안상 화면에 표시되지 않습니다. 수정을 원하시면 인프라 관리자에게 문의하십시오. +

    +
    + +
    +
    +
    + +
    + + +
    +
    + + +
    + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_a2/code.html b/stitch_kintex_ai_system_architect/scr_a2/code.html new file mode 100644 index 0000000..c3e4688 --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_a2/code.html @@ -0,0 +1,423 @@ + + + + + +KINTEX AI Manager - RBAC + + + + + + + + + + + +
    +
    +KINTEX AI Manager +
    +역할 및 권한 관리 (RBAC) +
    +
    +
    + + +
    +
    +
    +

    Admin User

    +

    System Manager

    +
    +
    +person +
    +
    +
    +
    + +
    +
    + +
    +
    +

    +account_tree + 역할 그룹 계층 +

    + +
    +
    + +
    +
    +hub 플랫폼 (Platform) +
    +
    +
    +shield_person 플랫폼 슈퍼관리자 +
    +
    +
    + +
    +
    +corporate_fare 테넌트 (Tenant) +
    +
    +
    +admin_panel_settings 테넌트 관리자 +
    +
    +
    + +
    +
    +event_available 행사 (Event) +
    +
    +
    +campaign 주최자 (Organizer) +
    +
    +storefront 참가업체 (Exhibitor) +
    +
    +build 장치업체 (Contractor) +
    +
    +meeting_room 홀매니저 (Hall Manager) +
    +
    +
    +
    +
    +
    +
    +group_add +

    새 역할 그룹 생성

    +
    +
    +
    +
    + +
    +
    +
    +

    권한 상세 설정

    +테넌트 관리자 +
    +
    + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    메뉴 / 기능 카테고리조회 (Read)생성 (Create)수정 (Update)삭제 (Delete)승인 (Approve)
    +
    +
    +dashboard +
    +
    +

    대시보드

    +

    전체 운영 현황 모니터링

    +
    +
    +
    +
    +
    +calendar_month +
    +
    +

    전시회 일정

    +

    연간 전시 스케줄 관리

    +
    +
    +
    +
    +
    +grid_view +
    +
    +
    +

    부스 배치 에디터

    +auto_awesome +
    +

    AI 부스 자동 배치 및 편집

    +
    +
    +
    +
    +
    +receipt_long +
    +
    +

    유틸리티 신청

    +

    전기, 급배수, 랜선 등 신청

    +
    +
    +
    +
    +
    +account_balance_wallet +
    +
    +

    결제/정산

    +

    대금 청구 및 정산 처리

    +
    +
    +
    +
    +
    +manage_accounts +
    +
    +

    사용자 관리

    +

    계정 생성 및 권한 위임

    +
    +
    +
    +
    +
    +
    +info + 선택된 권한은 실시간으로 저장되지 않습니다. 상단의 저장 버튼을 눌러주세요. +
    +
    +
    +
    JD
    +
    MK
    +
    +5
    +
    +

    현재 7명의 사용자가 이 역할을 가지고 있습니다.

    +
    +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_a3/code.html b/stitch_kintex_ai_system_architect/scr_a3/code.html new file mode 100644 index 0000000..813689a --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_a3/code.html @@ -0,0 +1,418 @@ + + + + + +KINTEX AI - 공통코드 관리 + + + + + + + + + + + +
    + +
    +
    + +
    +
    + +
    + + +
    +
    +
    +

    Admin Profile

    +

    시스템 관리자

    +
    + +
    +
    +
    +
    + +
    + +
    +
    +

    코드 그룹 목록

    + +
    +
    +
    + + + + + + + +
    +
    +
    + +
    +
    +
    +

    공종 분류 상세 코드

    +

    그룹 ID: CATEGORY_14_TYPE

    +
    +
    + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    코드코드명(KR)정렬 순서구분사용 여부관리
    C001건축/목공1 +전역 + +
    +
    +활성 +
    +
    +
    + + +
    +
    C002전기/조명2 +테넌트 재정의 + +
    +
    +활성 +
    +
    +
    + + +
    +
    C003가구/비품3 +전역 + +
    +
    +활성 +
    +
    +
    + + +
    +
    C004리깅/현수막4 +전역 + +
    +
    +비활성 +
    +
    +
    + + +
    +
    +
    + +
    +전체 4개 항목 중 1-4 표시 +
    + + +
    +1 +
    + + +
    +
    +
    +
    + +
    + +
    + + +
    +
    +
    + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_a4/code.html b/stitch_kintex_ai_system_architect/scr_a4/code.html new file mode 100644 index 0000000..c79aaa1 --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_a4/code.html @@ -0,0 +1,469 @@ + + + + + +KINTEX AI 전시관리 - 메뉴 관리 + + + + + + + + + + + +
    +
    +

    메뉴 관리

    +
    + +
    +
    +
    +search + +
    +
    + + +
    +
    AD
    +Admin +
    +
    +
    +
    + +
    +
    + +
    +
    +

    +account_tree + 메뉴 트리 +

    + +
    +
    + +
    +drag_indicator +dashboard +대시보드 + +
    + +
    +
    +drag_indicator +calendar_today +전시회 일정 + +
    +
    +
    +event_list +진행중인 전시 +
    +
    +history +과거 이력 +
    +
    +
    + +
    +drag_indicator +layers +부스 배치도 + +
    + +
    +drag_indicator +account_tree +메뉴 관리 + +
    + +
    +drag_indicator +settings +시스템 설정 + +
    +
    +
    + +
    +
    +
    +

    +edit_note + 메뉴 상세 설정 +

    +
    +ID: MN-004 + +auto_awesome + AI 최적화됨 + +
    +
    +
    + +
    +
    + + +
    +
    + +
    +/admin/ + +
    +
    +
    + + +
    +
    + + +
    +
    + +
    +
    + + +
    +
    + + + + + + +
    +
    + +
    +
    +
    +info +
    +
    +

    고급 설정

    +

    해당 메뉴의 노출 정책 및 연동 모듈을 설정합니다. AI가 메뉴 사용 패턴을 분석하여 비활성화 여부를 제안할 수 있습니다.

    +
    + + +
    +
    +
    +
    +
    +
    + + +
    +
    + +
    +
    +
    +trending_up +
    +
    +

    지난 30일 방문수

    +

    1,248회

    +

    전월 대비 +12.4% 증가

    +
    +
    +
    +
    +speed +
    +
    +

    평균 로딩 속도

    +

    0.42s

    +

    최적화 상태: 매우 좋음

    +
    +
    +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_a7/code.html b/stitch_kintex_ai_system_architect/scr_a7/code.html new file mode 100644 index 0000000..947a42b --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_a7/code.html @@ -0,0 +1,411 @@ + + + + + +KINTEX AI 전시관리 - Admin Console + + + + + + + + + +
    + + + +
    + +
    +
    +menu +

    KINTEX AI 전시관리

    +
    +
    +
    +search + +
    +
    +notifications +settings +help +
    +person +
    +
    +
    +
    + +
    + + + +
    +
    +

    홀 마스터 관리

    +

    전시장 홀 정보 및 물리적 규격 마스터 데이터를 관리합니다.

    +
    +
    + + +
    +
    + +
    + + + + + +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    면적(㎡)규격(L×W×H)바닥하중부스수(Max)관리
    홀 110,611㎡126×84×12m5t/㎡480 + + +
    홀 210,611㎡126×84×12m5t/㎡480 + + +
    홀 711,290㎡126×90×12m5t/㎡510 + + +
    홀 811,290㎡126×90×15m5t/㎡510 + + +
    홀 1010,000㎡100×100×15m5t/㎡450 + + +
    +
    + +
    + +
    +
    +auto_awesome +AI 최적화 분석 +
    +

    현재 홀 7의 부스 배치 밀도가 다른 전시홀 대비 12% 높습니다. 안전 통로 확보를 위한 시뮬레이션을 권장합니다.

    + +
    + +
    +
    +
    +

    트렌치 좌표 CAD 업로드

    +
    + + 미확보 · 킨텍스 협의 +
    +
    +upload_file +
    +

    + 홀7, 8 전용 지하 트렌치 정밀 좌표 데이터가 누락되었습니다. 킨텍스 시설팀 협의 후 최신 .dwg 파일을 업로드하십시오. +

    +
    +add_circle +Click to upload +
    +
    + +
    +

    홀 이용 현황 요약

    +
    +
    +
    +전체 홀 가동률 +68% +
    +
    +
    +
    +
    +
    +
    +부스 점유 면적 +42,500㎡ +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    + + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_m10/code.html b/stitch_kintex_ai_system_architect/scr_m10/code.html new file mode 100644 index 0000000..091fd73 --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_m10/code.html @@ -0,0 +1,250 @@ + + + + + +KINTEX Gate Pass - Move-in & Safety + + + + + + + + + + +
    +
    +construction +

    KINTEX Gate Pass

    +
    + +
    +
    + +
    +
    + +
    +Gate Pass Entry +
    D-2
    +
    +
    + +
    + +
    + +
    +
    +

    차량 번호

    +

    12가 3456

    +
    +
    +

    지정 도크

    +

    도크 3

    +
    +
    +
    +schedule +08:00 - 09:00 +
    +장치 기간 +
    +
    +
    +
    +
    + +
    +

    + 안전 체크리스트 + +warning 필수 확인 + +

    +
    + + + + + + +
    +
    + +
    +
    +

    슬롯 시간

    +

    D-0 09:00

    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_m11/code.html b/stitch_kintex_ai_system_architect/scr_m11/code.html new file mode 100644 index 0000000..7432574 --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_m11/code.html @@ -0,0 +1,292 @@ + + + + + + + + + + + + + + + + +
    + +

    알림

    + +
    +
    + +
    +
    + + + + + +
    +
    + +
    +전체 12개 + +
    + +
    + +
    +
    +
    +calendar_today +
    +
    +
    +
    +

    전시 부스 신청 마감 임박

    +방금 전 +
    +

    2026 하반기 통합 전시회 부스 신청이 3시간 뒤 마감됩니다.

    +
    +
    +
    +
    +
    + +
    +
    +
    +check_circle +
    +
    +
    +
    +

    부스 배치도 승인 완료

    +2시간 전 +
    +

    요청하신 제1전시장 A-102 구역의 배치가 승인되었습니다.

    +
    +
    +
    +
    +
    + +
    +
    +
    +payments +
    +
    +
    +
    +

    전기/통신 사용료 결제 안내

    +5시간 전 +
    +

    신청하신 유틸리티 비용에 대한 세금계산서가 발행되었습니다.

    +
    +
    + +
    +
    +
    +auto_awesome +
    +
    +
    +
    +

    AI 관람객 동선 최적화 제안

    +어제 +
    +

    데이터 분석 결과, 입구 혼잡도 개선을 위한 부스 배치 조정안이 생성되었습니다.

    +
    +
    + +
    +
    +
    +gavel +
    +
    +
    +
    +

    잔여 부스 공개 입찰 낙찰

    +2일 전 +
    +

    (주)킨텍스글로벌이 제2전시장 C-203 구역 낙찰자로 선정되었습니다.

    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_m12/code.html b/stitch_kintex_ai_system_architect/scr_m12/code.html new file mode 100644 index 0000000..ddf2bfb --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_m12/code.html @@ -0,0 +1,294 @@ + + + + + +KINTEX AI System - SCR-M12 + + + + + + + + + +
    +
    + +

    검수 및 승인

    +
    + +
    + +
    + + +
    + +
    +
    +
    +
    +description +신고서류 · 부스배치도 +
    +
    D-5
    +
    +
    +

    (주)테크솔루션

    +

    2024년 KINTEX 월드박람회

    +
    +
    +검수 중 +
    +auto_awesome +AI 분석 완료 +
    +
    +
    + +
    + +
    +
    +
    +
    +picture_as_pdf +

    부스배치도_A102.pdf

    +

    1.2 MB • Ver 1.2

    +
    +
    + +
    + +
    +
    +auto_awesome +
    +
    +AI Agent +

    AI 검수 요약

    +
    +
      +
    • +warning +
      +

      소방 통로 확보 미흡 (1.2m)

      +

      규정상 최소 2.0m 이상의 통로가 확보되어야 합니다.

      +
      +
    • +
    • +bolt +
      +

      허용 전력 초과 (5kW)

      +

      할당된 전력(3kW) 대비 66% 초과 사용이 감지되었습니다.

      +
      +
    • +
    +
    + +
    +
    +

    제출일시

    +

    2024.10.22 14:30

    +
    +
    +

    담당자

    +

    김민수 팀장

    +
    +
    +
    +
    + +
    +
    +
    +assignment +운영 매뉴얼 +
    +

    (주)글로벌비즈

    +
    +
    +승인 대기 +D-3 +
    +
    +
    +
    +
    +verified_user +보안 준수 확인서 +
    +

    코리아네트웍스

    +
    +
    +승인 대기 +D-12 +
    +
    +
    +
    + +
    +
    + + +
    +
    + +
    + + + + + +
    + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_m13/code.html b/stitch_kintex_ai_system_architect/scr_m13/code.html new file mode 100644 index 0000000..c02fc6c --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_m13/code.html @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + +
    + +

    입찰 현황 모니터링

    + +
    +
    + +
    +
    +
    +
    +입찰 진행 중 +

    전기공사 - 제1전시장 1홀

    +
    +
    +timer +마감 01:24:36 +
    +
    +
    +
    +

    내 현재 순위

    +

    2위

    +
    +
    +

    현재 최저가

    +

    ₩8,400,000

    +
    +
    +
    +최근 업데이트: 방금 전 +
    +auto_awesome +AI 최적화 분석 중 +
    +
    +
    + +
    +
    +

    + 실시간 순위 현황 + +

    +총 8개 업체 +
    +
    + +
    +1 +
    +

    (주)에이텍

    +

    입찰가: ₩8,320,000

    +
    +trending_flat +
    + +
    +2 +
    +
    +

    나 (본인)

    +ME +
    +

    입찰가: ₩8,400,000

    +
    +
    +arrow_drop_down +1위와 ₩80,000 차 +
    +
    + +
    +3 +
    +

    (주)씨앤씨

    +

    입찰가: ₩8,450,000

    +
    +arrow_drop_down +
    + +
    +4 +
    +

    (주)디자인랩

    +

    입찰가: ₩8,520,000

    +
    +arrow_drop_up +
    +
    +
    + +
    +info +

    + 견적서 작성 및 재응찰은 웹 버전에서 진행해 주세요. 모바일에서는 실시간 현황 모니터링만 지원합니다. +

    +
    +
    + + + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_m14/code.html b/stitch_kintex_ai_system_architect/scr_m14/code.html new file mode 100644 index 0000000..5e23f85 --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_m14/code.html @@ -0,0 +1,297 @@ + + + + + +스마트팩토리 코리아 2026 - 티켓 구매 + + + + + + + + + + +
    + +

    알림

    + +
    +
    + +
    +
    +calendar_today +스마트팩토리 코리아 2026 · 제2전시장 홀7 +
    +
    + +
    +
    +
    1
    +권종 +
    +
    +
    +
    2
    +예매자 +
    +
    +
    +
    3
    +결제 +
    +
    +
    +
    4
    +완료 +
    +
    + +
    + +
    +
    +
    +
    +

    일반권

    +
    +₩0 +사전등록 할인가 +
    +
    +
    + +0 + +
    +
    +
    + +
    +
    +
    +
    +
    +

    바이어권

    + +auto_awesome + AI OPTIMIZED + +
    +

    무료 (자격심사 필요)

    +
    +
    + +0 + +
    +
    +

    ※ 업종 및 직무 AI 매칭을 통해 추천된 권종입니다.

    +
    + +
    +
    +
    +
    +

    단체권

    +
    +₩9,000 +10% OFF +
    +

    10인 이상 단체 구매시 적용

    +
    +
    + +1 + +
    +
    +
    + +
    +
    +
    +
    +
    +

    VIP권

    +매진 +
    +₩50,000 +
    +
    + +0 + +
    +
    +
    +
    + +
    +

    결제 수단 미리보기

    +
    +
    신용카드
    +
    간편결제
    +
    계좌이체
    +
    +
    +
    +security +

    + 결제는 PG사 보안 페이지에서 진행되며 카드정보는 저장되지 않습니다. 스마트팩토리 코리아 운영국은 고객님의 소중한 정보를 보호합니다. +

    +
    +
    +
    +
    + +
    +
    +선택한 티켓 1매 +합계 ₩9,000 +
    + +
    + + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_m4/code.html b/stitch_kintex_ai_system_architect/scr_m4/code.html new file mode 100644 index 0000000..eeb0b99 --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_m4/code.html @@ -0,0 +1,329 @@ + + + + + +KINTEX Lead Capture + + + + + + + + + + + +
    +
    + +

    KINTEX Lead Capture

    +
    +
    + +
    +
    +
    + +
    + +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +

    관람객 배지 QR을 스캔하세요

    + + +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    +

    정관람

    +바이어 +
    +

    (주)미래기술 · 전략기획팀 팀장

    +
    +
    +D-5 + +check_circle + 개인정보 동의 + +
    +
    + +
    +

    관심도 (Interest Level)

    +
    +star +star +star +star +star +
    +
    + +
    +

    주요 관심분야 (AI 추천)

    +
    + +auto_awesome AI 솔루션 + +전시 기획 +빅데이터 + +
    +
    + +
    +

    상담 메모

    +
    + + +
    +
    + +
    + +
    +
    +
    +오프라인 저장 · 동기화 대기 +
    +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_m5/code.html b/stitch_kintex_ai_system_architect/scr_m5/code.html new file mode 100644 index 0000000..379747f --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_m5/code.html @@ -0,0 +1,313 @@ + + + + + +KINTEX AI Visitor Home + + + + + + + + + + +
    +
    +menu +

    KINTEX AI

    +
    +
    +qr_code_scanner +notifications +
    +
    +
    + +
    +
    +
    +
    + +
    +
    KINTEX VISITOR
    +
    바이어
    +
    + +

    정관람

    +

    KINTEX Global Summit 2024

    + +
    + +
    +

    체크인 시 화면을 보여주세요

    + +
    +
    +
    +
    + +
    +
    +

    오늘 일정

    + +
    +
    + +
    +
    +14 +00 +
    +
    +

    메타버스 트렌드 컨퍼런스

    +

    컨퍼런스룸 201호

    +
    +chevron_right +
    + +
    +
    +16 +30 +
    +
    +

    네트워킹 파티 - 바이어 세션

    +

    그랜드볼룸 A

    +
    +chevron_right +
    +
    +
    + +
    +
    +

    추천 세션·부스

    +auto_awesome +
    +
    + +
    +
    +
    +auto_awesome AI 추천 +
    +
    +
    +

    차세대 AI 데이터 솔루션

    +

    1홀 A-205 • 테크노랩

    +
    +
    + +
    +
    +
    +auto_awesome AI 추천 +
    +
    +
    +

    스마트 팩토리 운영 사례

    +

    컨퍼런스룸 302 • 강연

    +
    +
    +
    +
    + +
    +

    즐겨찾기 부스

    +
    + +
    +
    +
    T
    +
    +

    테크솔루션

    +

    1홀 A-102

    +
    +
    +star +
    + +
    +
    +
    M
    +
    +

    미래산업기기

    +

    2홀 B-110

    +
    +
    +star +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_m6/code.html b/stitch_kintex_ai_system_architect/scr_m6/code.html new file mode 100644 index 0000000..d1a319c --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_m6/code.html @@ -0,0 +1,410 @@ + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    +search +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +

    KINTEX HALL 1

    +
    + +
    + +
    A-101
    +
    +A-102 +한빛로보틱스 +
    +
    A-103
    +
    A-104
    +
    준비중
    +
    B-101
    +
    B-102
    +
    B-103
    +
    B-104
    +
    B-105
    +
    B-106
    + +
    +
    +wc +화장실 +
    +
    +emergency +비상구 +
    +
    + +
    C-101
    +
    C-102
    +
    C-103
    +
    C-104
    +
    C-105
    +
    C-106
    +
    + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    + 내 위치 +
    +
    + +
    +location_on +
    +
    +
    +
    + +
    + + + +
    + +
    +
    +info + 존 레벨 안내 (정밀 측위 미지원 시) +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +도착지 +

    A-102 · 한빛로보틱스

    +
    +
    +
    +directions_walk +도보 3분 +
    +| +약 140m +
    +
    + +
    +
    +
    +가장 가까운 입구 +1홀 정문 +
    +
    +근처 편의시설 +동측 화장실 (20m) +
    +
    +
    + + +
    +
    +
    + + + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_m7/code.html b/stitch_kintex_ai_system_architect/scr_m7/code.html new file mode 100644 index 0000000..c3ea586 --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_m7/code.html @@ -0,0 +1,290 @@ + + + + + +KINTEX AI - Visitor Floor Plan + + + + + + + + + + +
    + +
    +
    +menu +

    KINTEX AI

    +
    +qr_code_scanner +
    + +
    +
    +search + +
    +
    + + + + +
    +
    + +
    + +
    +
    + +
    A-101
    +
    A-102
    +
    A-103
    +
    REST
    + +
    B-201
    +
    B-202
    +
    B-203
    + +
    ENTRANCE HALL
    + +
    C-301
    +
    C-302
    +
    C-303
    +
    C-304
    +
    +
    + +
    + + + + +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +A-102 + +auto_awesome AI 매칭 추천 + +
    +

    한빛로보틱스

    +

    로봇/자동화 · 스마트 팩토리

    +
    + +
    +
    + + +
    +
    +
    +near_me +
    +

    현재 위치에서 도보 3분

    +

    최단 경로 안내 가능

    +
    +
    +
    +inventory_2 +
    +

    주요 전시 품목

    +

    산업용 협동 로봇, 물류 자동화 솔루션, 자율주행 AMR 플랫폼

    +
    +
    +
    +
    +
    + + + + +
    + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_m8/code.html b/stitch_kintex_ai_system_architect/scr_m8/code.html new file mode 100644 index 0000000..fc59423 --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_m8/code.html @@ -0,0 +1,285 @@ + + + + + + + + + + + + + + + +
    +
    +menu +

    KINTEX Matchmaking

    +
    +
    +search +account_circle +
    +
    +
    + +
    +
    +

    + AI 추천 매칭 + auto_awesome +

    + +
    +
    + +
    +
    +
    + +
    +
    +
    +auto_awesome + AI 매칭 92% +
    +

    김민수

    +

    (주)테크솔루션 | CTO

    +
    +
    +
    +AI 솔루션 +스마트 팩토리 +클라우드 +
    +
    + + +
    +
    + +
    +
    +
    + +
    +

    미팅 예약

    +
    + + + + + +
    +
    +10:00 +11:00 +12:00 +13:00 +14:00 +15:00 +
    +
    + +
    +

    내 미팅 일정

    +
    + +
    +
    +
    +
    +14:00 - 14:30 +

    이영희 대표

    +

    글로벌 리서치 그룹

    +
    +
    확정
    +
    +
    +
    +location_on + 1홀 B-102 부스 +
    + +
    +
    + +
    +
    +
    +
    +16:00 - 16:30 +

    박성진 팀장

    +

    미래 로보틱스

    +
    +
    승인 대기
    +
    +
    +
    +meeting_room + 미팅룸 A-04 +
    + +
    +
    +
    +
    +
    + + + + + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_m9/code.html b/stitch_kintex_ai_system_architect/scr_m9/code.html new file mode 100644 index 0000000..dac373e --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_m9/code.html @@ -0,0 +1,291 @@ + + + + + + + + + + + + + + + +
    + +

    Schedule

    + +
    +
    + + + +
    +
    +auto_awesome +

    AI 추천 세션 ✨

    +
    +
    + +
    +
    +
    + +bolt 98% 매칭 + +10:00 - 10:50 +
    +

    AI 비즈니스 트랜스포메이션 2026: 미래 전략

    +

    김민수 본부장 · KINTEX IT Lab

    +
    +기술 +전략 +
    +
    + +
    +
    +
    + +bolt 92% 매칭 + +11:00 - 11:50 +
    +

    스마트 전시 공간 기획과 AI 도슨트의 결합

    +

    박서연 책임 · 글로벌 마케팅 그룹

    +
    +비즈니스 +디자인 +
    +
    +
    +
    + +
    + +
    +
    +10:00 +
    +
    +
    +
    +
    10:00 - 10:50 | Room A
    +

    AI 기반 전시 데이터 분석 및 성과 극대화 솔루션

    +
    최현우 팀장 · 데이터솔루션 본부
    +
    +기술 +데이터 +
    +
    + +
    +
    + +
    +
    +11:00 +
    +
    +
    +
    +
    11:00 - 11:50 | Room B
    +

    지속 가능한 전시 문화를 위한 그린테크 혁신

    +
    이주환 교수 · 서울대학교 환경공학
    +
    +ESG +비즈니스 +
    +
    + +
    +
    +
    +
    +11:00 - 11:50 | Main Stage + +bolt AI 추천 + +
    +

    스마트 전시 공간 기획과 AI 도슨트의 결합

    +
    박서연 책임 · 글로벌 마케팅 그룹
    +
    +마케팅 +
    +
    + +
    +
    + +
    +
    +13:00 +
    +
    +
    +
    +
    13:00 - 13:50 | VIP Lounge
    +

    B2B 네트워킹의 기술: 성과를 이끄는 비즈니스 매너

    +
    Sarah J. Miller · G-Exhibitions CEO
    +
    +네트워킹 +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/stitch_kintex_ai_system_architect/scr_p8/code.html b/stitch_kintex_ai_system_architect/scr_p8/code.html new file mode 100644 index 0000000..e43626d --- /dev/null +++ b/stitch_kintex_ai_system_architect/scr_p8/code.html @@ -0,0 +1,295 @@ + + + + + + + + + + + + + + + +
    + +
    +

    예매 확인 · 취소

    +

    비회원 예매 내역을 조회하고 취소하실 수 있습니다.

    +
    + +
    +
    +
    +
    + + +
    +
    + + +
    + +
    + +
    +
    + +
    + +
    +
    +
    +
    +예매완료 +

    스마트팩토리 코리아 2026

    +

    예매번호 KTX-2026-018245

    +
    +
    +

    결제일시

    +

    2025-10-24 14:32

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    권종수량상세
    +
    +qr_code_2 +
    +일반권 (Early Bird) +
    2매 +₩ 30,000 +
    +
    +qr_code_2 +
    +학생/군인 할인 +
    1매 +₩ 10,000 +
    +
    +
    +
    +account_circle +
    +

    예매자 정보

    +

    jo***@ex***.com · 010-****-1234

    +
    +
    +
    +

    총 결제 금액

    +

    ₩ 40,000

    +
    +
    +
    +
    + + +
    +
    + + + + \ No newline at end of file

    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%0A@-j^2QiEFKb-Gb3{YI-ry{5& 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 작성: 디자인 에이전트(designer) · 작성일: 2026-07-11 · 버전: v1.3 -> 근거 문서: `docs/PLANNING.md` v1.0 (모듈 맵 M1~M9, P0 기능, 나노바나나 표준 샷 세트 S1~S7) · Stitch 산출물 `stitch_kintex_ai_system_architect/`(18화면 + DESIGN.md 3변형) 학습·정합 +> 작성: 디자인 에이전트(designer) · 작성일: 2026-07-11 · 버전: **v2.1** +> 근거 문서: `docs/PLANNING.md` **v3.0**(모듈 맵 M1~M18 + §5B 공통/시스템관리 레이어 + §1A 멀티테넌시, 6+2 역할, 나노바나나 표준 샷 세트 S1~S7) · `docs/FEATURE_BACKLOG_100.md`(100대 기능 F001~F100·NFR 4축) · Stitch 산출물 `stitch_kintex_ai_system_architect/`(18화면 + DESIGN.md 3변형) 학습·정합 > **단일 출처(Single Source of Truth)**: 프론트 구현 토큰·컴포넌트 계약은 본 문서가 권위다. Stitch 화면(code.html/screen.png)은 시각 참조로만 사용하며, 상충 시 본 문서를 따른다. > 용도: **각 화면의 "Stitch 프롬프트" 코드블록을 Google Stitch(stitch.withgoogle.com)에 그대로 붙여넣어 화면을 생성**한다. 문서는 한국어, Stitch 프롬프트만 영어. +> +> **v2.0 범위 확장**: v1.3까지는 P0 코어 + SCR-13~17 중심 19화면이었다. v2.0은 **PLANNING v3.0의 전 모듈(M1~M18)·공통레이어(§5B)·6+2 역할(전시업체·공사/장치업체·주최자·킨텍스 직원(운영·관리)·시스템 관리자(테넌트/플랫폼)·일반 대중 공개사이트) × 웹(MDI)·모바일**을 빠짐없이 커버하는 **전 화면 인벤토리**로 확장한다. 기존 SCR-01~17·SCR-M1/M2 번호·토큰은 **재번호화 없이 유지**하고, 신규 화면만 이어서 부여한다 — 업무 웹 `SCR-18+`, 관리자 백오피스 `SCR-A*`, 공개사이트 `SCR-P*`, 모바일 `SCR-M3+`. 전 화면 요약 매트릭스는 **§2.8**, 화면 상세는 §3(코어·도메인 웹)·§3A(관리자)·§3B(공개사이트)·§4(모바일)에 정의한다. --- @@ -285,9 +287,150 @@ An enterprise MDI (multiple document interface) application shell for "KINTEX AI --- +## 2.8 전 화면 인벤토리 매트릭스 (v2.0) + +> **완결성 원칙**: PLANNING v3.0의 어떤 모듈/역할에서도 "design.md에 화면이 없어 디자인 불가"인 페이지가 0개가 되도록 아래 인벤토리로 전수 커버한다. 상태 컬럼 — **✅Stitch**(`stitch_kintex_ai_system_architect/`에서 이미 Stitch 생성) · **✅구현**(현행 프론트 `src/frontend`/`mobile` 구현 존재) · **🔲미생성**(신규 정의, Stitch·구현 착수 전). + +### 2.8-1. 모듈 × 역할 × 채널 요약 매트릭스 + +역할 약칭: **주**(주최자) · **참**(참가업체) · **장**(장치·공사업체) · **홀**(킨텍스 직원 — 홀매니저·운영) · **관**(시스템 관리자 — 테넌트/플랫폼) · **대**(일반 대중·관람객). 셀 = 대표 SCR(웹) / (모바일은 M접두). 다중 역할 공유 화면은 대표 역할에 표기. + +| 모듈 | 주최자 | 참가업체 | 장치업체 | 킨텍스직원 | 관리자 | 대중/관람객 | +|---|---|---|---|---|---|---| +| **공통 인증/셸** | SCR-01·49·50·51 · MDI셸 §2.7 | SCR-01 | SCR-01 | SCR-01 | SCR-01 | SCR-P4 | +| **M1 홀배정·견적** | SCR-15·18·19 | SCR-20 | — | SCR-15 | SCR-A7 | — | +| **M2 배치** | SCR-03·04·19 | — | SCR-03(RO) | SCR-03(RO) | — | SCR-P3 | +| **M3 부스설계** | — | SCR-06 | SCR-06·09·38 / M1 | — | — | — | +| **M4 유틸리티** | — | SCR-07·08 | SCR-07(검토) | SCR-10(부하) | — | — | +| **M5 나노바나나** | SCR-04 | SCR-06·12 | SCR-12 | SCR-11(참고) | — | — | +| **M6 서류·마일스톤** | SCR-22·23 | SCR-05 | — | SCR-24·10 | — | — | +| **M7 등록업체 매칭** | SCR-24 | SCR-24 | SCR-38 | — | SCR-A7 | — | +| **M8 반입/반출** | SCR-25 | SCR-25 | SCR-25 / M10 | SCR-25 | — | — | +| **M9 정산·결제** | SCR-21 | SCR-21 | — | — | SCR-21 | SCR-P7(티켓결제 연계) | +| **M10 관람·배지·리드·티켓** | SCR-30 | SCR-32 / M4 | — | SCR-31 | — | SCR-P4·P7·P8 / M5·M14·M15 | +| **M11 비즈매칭** | SCR-30 | — / M8 | — | — | — | / M8 | +| **M12 마케팅·공개사이트** | SCR-33·34 | SCR-36 | — | — | — | SCR-P1·P2·P3·P5 | +| **M13 wayfinding** | — | — | — | POI=SCR-A7/SCR-35 | — | / M6·M7 | +| **M14 현장운영** | — | — | — | SCR-14 | — | — | +| **M15 공사/장치 옥션** | SCR-26·29 | SCR-26·29 | SCR-27·28 / M13 | — | — | — | +| **M16 경영분석 BI** | SCR-13 | SCR-13(참ROI) | — | SCR-13 | SCR-13 | — | +| **M17 CMS** | SCR-35 | SCR-36 | — | — | SCR-35·37 | SCR-P5 | +| **M18 관리자·시스템관리** | — | — | — | — | SCR-16·A1~A10 | — | +| **§5B 공통 업무기능** | SCR-39~48 | SCR-39~48 | SCR-38·39~48 | SCR-39~48 | SCR-39~48 | — | + +### 2.8-2. 전 화면 SCR 인덱스 (상태 포함) + +**웹 — 코어·도메인 (§3)** + +| SCR | 화면명 | 모듈 | 역할 | P | 상태 | +|---|---|---|---|---|---| +| SCR-01 | 로그인 & 행사 워크스페이스 선택 | 공통 | 전 | P0 | ✅Stitch ✅구현 | +| SCR-02 | 주최자 대시보드 | M1·M6 | 주 | P0 | ✅Stitch ✅구현 | +| SCR-03 | 부스 배치 에디터 | M2 | 주·홀 | P0 | ✅Stitch ✅구현 | +| SCR-04 | 배치안 비교(S7) | M2·M5 | 주 | P0 | ✅Stitch ✅구현 | +| SCR-05 | 참가업체 부스 홈 | M3·M6 | 참 | P0 | ✅Stitch ✅구현 | +| SCR-06 | 부스 설계 스튜디오 | M3·M5 | 참·장 | P0 | ✅Stitch ✅구현 | +| SCR-07 | 유틸리티 배선 뷰 | M4 | 참·장 | P0 | ✅Stitch ✅구현 | +| SCR-08 | 유틸리티 신청 요약·위치표시도 | M4b | 참 | P0 | ✅Stitch ✅구현 | +| SCR-09 | 규정 검증 리포트 | M3 | 장 | P0 | ✅Stitch ✅구현 | +| SCR-10 | 홀매니저 승인 큐 | M2·M3·M6 | 홀 | P0 | ✅Stitch ✅구현 | +| SCR-11 | 홀매니저 검수 상세 | M2·M3 | 홀 | P0 | ✅Stitch ✅구현 | +| SCR-12 | 시각화 갤러리 | M5 | 전 | P0 | ✅Stitch ✅구현 | +| SCR-13 | 경영분석 대시보드 | M16 | 주·홀·관 | P1 | ✅Stitch ✅구현 | +| SCR-14 | 홀 현장운영 대시보드 | M14 | 홀 | P2 | ✅Stitch ✅구현 | +| SCR-15 | 전시 일정 관리 | M1·M6 | 주·홀 | P1 | ✅Stitch ✅구현 | +| SCR-16 | 관리자 대시보드(랜딩) | M18 | 관 | P1 | ✅Stitch ✅구현 | +| SCR-17 | 컴포넌트 가이드(스타일가이드) | §1 | 내부 | — | ✅Stitch ✅구현 | +| SCR-18 | 홀 배정 신청 & 자동 견적 | M1 | 주 | P1 | 🔲미생성 | +| SCR-19 | 부스 판매 인벤토리 | M1·M2 | 주 | P1 | 🔲미생성 | +| SCR-20 | 온라인 부스 셀프 선택·판매 | M2 | 참 | P1 | 🔲미생성 | +| SCR-21 | 정산·결제 대시보드 | M9 | 주·참·관 | P1 | 🔲미생성 | +| SCR-22 | 서류·마일스톤 워크플로 | M6 | 주 | P1 | 🔲미생성 | +| SCR-23 | 신고서류 작성(웹폼→HWP/PDF) | M6 | 주 | P1 | 🔲미생성 | +| SCR-24 | 등록업체 매칭·RFQ | M7 | 참·주 | P1 | 🔲미생성 | +| SCR-25 | 반입/반출 슬롯 예약 | M8 | 참·장·홀 | P2 | 🔲미생성 | +| SCR-26 | 옥션 목록·개설 | M15 | 참·주 | P1 | 🔲미생성 | +| SCR-27 | 옥션 상세·실시간 순위·응찰 | M15 | 장 | P1 | 🔲미생성 | +| SCR-28 | 견적서 작성·제출 | M15 | 장 | P1 | 🔲미생성 | +| SCR-29 | 낙찰 비교·선정(Award) | M15 | 주·참 | P1 | 🔲미생성 | +| SCR-30 | 관람객 등록 관리 대시보드 | M10·M11 | 주 | P1 | 🔲미생성 | +| SCR-31 | 현장 체크인 데스크/키오스크 | M10 | 홀 | P1 | 🔲미생성 | +| SCR-32 | 리드 관리·AI 스코어링 | M10 | 참 | P1 | 🔲미생성 | +| SCR-33 | EDM·캠페인 관리 | M12 | 주 | P1 | 🔲미생성 | +| SCR-34 | 스폰서십 패키지·판매 관리 | M12 | 주 | P1 | 🔲미생성 | +| SCR-35 | CMS 콘텐츠·게시 워크플로 | M17 | 주·관 | P1 | 🔲미생성 | +| SCR-36 | 참가업체 마이크로사이트 편집기 | M17 | 참 | P1 | 🔲미생성 | +| SCR-37 | 다국어 콘텐츠 관리 | M17 | 관 | P1 | 🔲미생성 | +| SCR-38 | 업체 수주 부스 대시보드 | 업체포털 | 장 | P1 | 🔲미생성 | +| SCR-39 | 업무일지(worklog) | §5B | 전 | P1 | 🔲미생성 | +| SCR-40 | 통합 일정·캘린더(schedule) | §5B | 전 | P1 | 🔲미생성 | +| SCR-41 | 쪽지(message) | §5B | 전 | P1 | 🔲미생성 | +| SCR-42 | 공지(notice) | §5B | 전 | P1 | 🔲미생성 | +| SCR-43 | 의견접수(opinion) | §5B | 전 | P2 | 🔲미생성 | +| SCR-44 | 통합검색(search) | §5B | 전 | P1 | 🔲미생성 | +| SCR-45 | 회의록(meeting·STT→Jasper) | §5B | 주·홀 | P1 | 🔲미생성 | +| SCR-46 | 업무보고·통계(report/stats) | §5B | 주·홀 | P1 | 🔲미생성 | +| SCR-47 | 알림센터(notification) | §5B | 전 | P1 | 🔲미생성 | +| SCR-48 | 마이페이지·환경설정 | §5B | 전 | P1 | 🔲미생성 | +| SCR-49 | 회원가입(웹) | §5B-3 | 전 | P1 | 🔲미생성 | +| SCR-50 | 비밀번호 찾기·재설정 | §5B-3 | 전 | P1 | 🔲미생성 | +| SCR-51 | 2차 인증(OTP) 설정 | §5B-3 | 전 | P1 | 🔲미생성 | + +**웹 — 관리자 백오피스 (§3A · SCR-A*)** + +| SCR | 화면명 | 모듈 | 역할 | 상태 | +|---|---|---|---|---| +| SCR-A1 | 사용자 관리 | M18·§5B-1 | 관 | 🔲미생성 | +| SCR-A2 | 역할·권한(RBAC) 관리 | M18·§5B-1 | 관 | 🔲미생성 | +| SCR-A3 | 공통코드 관리 | M18·§5B-1 | 관 | 🔲미생성 | +| SCR-A4 | 메뉴 관리 | M18·§5B-1 | 관 | 🔲미생성 | +| SCR-A5 | 감사로그 | M18·§5B-1 | 관 | 🔲미생성 | +| SCR-A6 | 시스템설정 | M18·§5B-1 | 관 | 🔲미생성 | +| SCR-A7 | 마스터데이터 관리(홀·요율·요금·부스표준·등록업체) | M18 | 관 | 🔲미생성 | +| SCR-A8 | 규정 룰셋 버전 관리 | M18 | 관 | 🔲미생성 | +| SCR-A9 | 테넌트(전시관) 관리·온보딩 | §1A·M18 | 플랫폼관 | 🔲미생성 | +| SCR-A10 | AI 플랫폼 설정(AiConfig) | §6·F100 | 관 | 🔲미생성 | + +**웹 — 공개 홍보 사이트 (§3B · SCR-P* · MDI 비적용·SEO/다국어)** + +| SCR | 화면명 | 모듈 | 역할 | 상태 | +|---|---|---|---|---| +| SCR-P1 | 공개 홍보 사이트 홈 | M12 | 대 | 🔲미생성 | +| SCR-P2 | 행사 상세(소개·일정·교통·연사) | M12 | 대 | 🔲미생성 | +| SCR-P3 | 공개 인터랙티브 플로어플랜 | M12·M2 | 대 | 🔲미생성 | +| SCR-P4 | 관람객 사전등록 폼 | M10 | 대 | 🔲미생성 | +| SCR-P5 | 참가업체 마이크로사이트 공개 뷰 | M17 | 대 | 🔲미생성 | +| SCR-P6 | 참가/부스 신청 문의 | M12 | 대 | 🔲미생성 | +| SCR-P7 | 입장권 예매(티켓팅) | M10·M9 | 대 | 🔲미생성 | +| SCR-P8 | 예매 확인·취소 | M10·M9 | 대 | 🔲미생성 | + +**모바일 (§4 · SCR-M*)** + +| SCR | 화면명 | 모듈 | 역할 | 상태 | +|---|---|---|---|---| +| SCR-M1 | 시공업체 현장 체크리스트 | M3 | 장 | ✅Stitch ✅구현 | +| SCR-M2 | 홀매니저 현장 검수 | M2·M3 | 홀 | ✅Stitch ✅구현 | +| SCR-M3 | 모바일 홈·대시보드(역할별) | 공통 | 전 | ✅구현(부분) | +| SCR-M4 | 참가업체 리드캡처(배지 스캔) | M10 | 참 | 🔲미생성 | +| SCR-M5 | 관람객 앱 홈·모바일 배지/QR | M10 | 대 | 🔲미생성 | +| SCR-M6 | 관람객 wayfinding·실내 지도 | M13 | 대 | 🔲미생성 | +| SCR-M7 | 관람객 플로어플랜·부스 검색 | M12·M2 | 대 | 🔲미생성 | +| SCR-M8 | 비즈매칭·미팅 | M11 | 대·참 | 🔲미생성 | +| SCR-M9 | 세션·아젠다·개인 일정 | M11 | 대 | 🔲미생성 | +| SCR-M10 | 업체 반입 통행증·안전 체크 | M8 | 장 | 🔲미생성 | +| SCR-M11 | 모바일 알림센터 | §5B | 전 | 🔲미생성 | +| SCR-M12 | 모바일 서류·승인 조회 | M6 | 주·홀 | 🔲미생성 | +| SCR-M13 | 모바일 옥션 순위 조회 | M15 | 장·참 | 🔲미생성 | +| SCR-M14 | 모바일 티켓 예매 | M10·M9 | 대 | 🔲미생성 | +| SCR-M15 | 내 티켓 지갑 | M10·M9 | 대 | 🔲미생성 | + +**집계**: 웹 코어·도메인 51 (기존 17 + 신규 34) · 관리자 10 (신규) · 공개사이트 8 (기존 6 + 신규 2 티켓) · 모바일 15 (기존 3 + 신규 12) = **총 84화면**(기존 유지 20 + 신규 64). 상태: ✅Stitch 18 · ✅구현 20 · 🔲미생성 64. + +--- + ## 3. 화면별 스펙 -> P0 모듈(M2·M3·M4·M5) 중심 총 14개 화면(웹 12 + 모바일 2) + **v2.0 확장 SCR-13~17(경영분석 M16·홀운영 M14·전시일정 M1·M6·관리자 M18·컴포넌트 가이드)**. 각 Stitch 프롬프트는 화면 1개를 1회 생성하는 기준으로 작성했다. +> P0 모듈(M2·M3·M4·M5) 중심 총 14개 화면(웹 12 + 모바일 2) + **v2.0 확장 SCR-13~17(경영분석 M16·홀운영 M14·전시일정 M1·M6·관리자 M18·컴포넌트 가이드)** + **v2.0 도메인 확장 SCR-18~51(M1·M6·M7·M8·M9·M15·M10·M12·M17·§5B 공통레이어)** + 관리자 §3A·공개사이트 §3B·모바일 §4. 각 Stitch 프롬프트는 화면 1개를 1회 생성하는 기준으로 작성했다. **디자인 토큰은 전부 §1을 따르고 신규 토큰은 추가하지 않는다.** --- @@ -607,6 +750,656 @@ A design-system style guide / component reference page for "KINTEX AI 전시관 --- +### SCR-18 홀 배정 신청 & 자동 견적 [M1] + +- **대상**: 주최자 · **모듈/P**: M1 · P1 · **진입 경로**: 콘솔 사이드바 "홀 배정" / 전시 일정(SCR-15)에서 "이 기간 배정 신청" +- **레이아웃 (위→아래)**: + 1. 좌측 2/3 — **가용성 캘린더**: 홀×날짜 그리드(홀1~10 행, 월 컬럼), 셀 상태색(예약=파랑·가배정=주황·공실=회색). 홀/반홀(1A·1B) 토글, 기간 드래그 선택 + 2. 우측 1/3 — **배정 신청 폼**: 홀·반홀 선택, 기간(장치·본행사·철거 구분), 목표 부스 수, 용도. 입력 즉시 하단 **자동 견적 카드** — `2,250원/㎡ × 면적 × 일수 × 성수기(+10%)/1전시장(+10%)` 라인별 산식 노출 + 관리비 예치금(15~20%) + 총액. AiLabel 없음(규칙 엔진). "가견적 PDF" · "배정 신청서(HWP) 생성" 버튼 + 3. 하단 고지: "최종 배정 확정은 킨텍스 내부 심사 — 본 견적은 공시요율 가견적" +- **상태/컴포넌트**: 캘린더 그리드·견적 라인 테이블(tabular numerals)·StatusBadge(신청/심사중/확정). 로딩 — 캘린더 스켈레톤 · 빈 — "선택한 기간에 배정 신청서를 작성하세요" · 에러 — 요율 마스터 로드 실패 배너. **데이터 원천**: 요율 마스터(확보)·행사일정(부분 실/샘플), 가용성은 킨텍스 내부 데이터 필요 → 부분 샘플. +- **Stitch 프롬프트**: + +``` +A hall booking and instant-quote screen for an exhibition organizer, Korean B2B web app "KINTEX AI 전시관리", desktop 1440px, light theme, primary blue #0066B3, backgrounds #F9FAFB, 1px borders #E4E7EC, Korean sans-serif (Pretendard). All UI text in Korean. Left sidebar 240px ("홀 배정" highlighted). Main split: left 2/3 an availability calendar — a grid with hall rows labeled "홀1, 홀1A, 홀1B, 홀2 … 홀10" and month/day columns, cells color-coded (blue "예약", amber "가배정", light gray "공실"), a selected date range highlighted in light blue #D9EAF7, and a half-hall toggle. Right 1/3 a booking form card titled "배정 신청": selects "홀/반홀", date range fields "장치 · 본행사 · 철거", a number input "목표 부스 수 510", a "용도" select; below it an auto-quote card "자동 견적(가견적)" showing itemized rows with mono numbers — "임대료 2,250원/㎡ × 4,941㎡ × 4일 = ₩44,469,000", "성수기 +10%", "제1전시장 +10%", "관리비 예치금(15%)", divider, bold total "합계 ₩58,700,000", fine print "공시요율 기준 가견적 — 최종 배정 확정은 킨텍스 심사", and two buttons "가견적 PDF" (outlined) and primary "배정 신청서(HWP) 생성". Data-dense scheduling + commerce quote aesthetic. +``` + +- **라우트**: `/o/:eventId/hall-booking`. MDI 적용(주최자). + +--- + +### SCR-19 부스 판매 인벤토리 [M1·M2 / F005] + +- **대상**: 주최자 · **모듈/P**: M1·M2 · P1 · **진입 경로**: 사이드바 "부스 판매" / 배치 에디터에서 "판매 현황" +- **레이아웃**: + 1. 상단 KPI 밴드: 총 부스 510 · 판매 128 · 홀드 12 · 예약 22 · 잔여 348 · 판매율 25% + 2. 좌측 2/3 — **판매 현황 뷰 토글**: [맵] 홀 도면 위 부스별 판매상태 히트(판매=녹·홀드=주황·예약=파랑·공실=회색, 클릭 시 우측 상세) / [테이블] 부스번호·유형·면적·가격·상태 배지·업체 + 3. 우측 1/3 — **부스 상세/상태 변경 패널**: 선택 부스 정보 + 상태 드롭다운(공실→홀드→예약→판매), 배정 업체 검색, 단가·프리미엄 계수, 메모 + 4. 상단 우측: 일괄 상태 변경·CSV 내보내기 +- **상태/컴포넌트**: 판매 히트 맵(도면 오버레이)·데이터 테이블(지브라·sticky)·StatusBadge. 로딩 — 스켈레톤 · 빈 — "확정 배치가 없습니다 — 배치 에디터에서 부스를 확정하세요" · 에러 재시도. **데이터 원천**: M2 확정 배치(부스 좌표) 실 가능, 판매 상태는 신규 인벤토리 API → 부분 샘플. +- **Stitch 프롬프트**: + +``` +A booth sales inventory management screen for an exhibition organizer, Korean B2B web app "KINTEX AI 전시관리", desktop 1440px, light theme, blue #0066B3, Korean sans-serif. All UI text in Korean. Sidebar 240px ("부스 판매" highlighted). Top KPI band: stat cards "총 부스 510", "판매 128", "홀드 12", "예약 22", "잔여 348", and "판매율 25%" with a thin progress bar. Main split: left 2/3 with a view toggle "[맵] / [테이블]" (맵 active) showing a top-down hall floor plan where each small booth rectangle is filled by sales status color — green "판매", amber "홀드", blue "예약", light gray "공실" — with booth numbers; a small legend. Right 1/3 a detail panel for the selected booth "A-102 · 독립부스 · 6×3m": a status dropdown "공실 → 홀드 → 예약 → 판매" set to "판매", an exhibitor search field showing "(주)한빛로보틱스", price fields "단가 ₩13,500,000 · 프리미엄 계수 1.2", and a memo box; top-right buttons "일괄 상태 변경" and "CSV 내보내기". Dense inventory-management aesthetic with a colorful status map. +``` + +- **라우트**: `/o/:eventId/inventory`. MDI 적용(주최자). + +--- + +### SCR-20 온라인 부스 셀프 선택·판매 [M2 / F006] + +- **대상**: 참가업체 · **모듈/P**: M2 · P1 · **진입 경로**: 참가업체 포털 "부스 신청" / 공개 인터랙티브 플로어플랜(SCR-P3)에서 "부스 선택" +- **레이아웃**: + 1. 좌측 히어로 — **인터랙티브 플로어플랜**: 판매 가능 부스는 초록 테두리+가격 라벨, 매진은 회색 잠금. 호버 툴팁(부스번호·면적·가격·유형), 필터(가격대·유형·존) + 2. 우측 — **선택 요약·결제 카드**: 선택 부스 리스트(부스번호·유형·면적·가격), 옵션(코너/아일랜드 프리미엄), 합계 + "장바구니 담기/부스 예약", 결제(PG) 진입 버튼 + 3. 상단 진행 스텝: 부스 선택 → 정보 입력 → 결제 → 확정 +- **상태/컴포넌트**: 인터랙티브 SVG 맵(비시각 대안=부스 목록 테이블 — N1 접근성)·요약 카드·스테퍼. 로딩 — 맵 스켈레톤 · 빈 — "현재 판매 중인 행사가 없습니다" · 동시성 — 방금 타인이 선택한 부스 잠금 토스트. **데이터 원천**: M2 부스+SCR-19 인벤토리 상태 → 부분 샘플. +- **Stitch 프롬프트**: + +``` +An online self-service booth selection and purchase screen for an exhibitor, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, green #0E8A5F for available booths, Korean sans-serif. All UI text in Korean. Top progress stepper "부스 선택 → 정보 입력 → 결제 → 확정" (step 1 active). Left hero (2/3): an interactive top-down exhibition floor plan where available booths are outlined in green with small price labels like "₩13.5M", sold booths are gray with a lock icon; a hover tooltip on one booth "A-102 · 6×3m · 독립 · ₩13,500,000"; a filter bar "가격대 ▾ · 유형 ▾ · 존 ▾". Right panel (1/3): a "선택한 부스" summary card listing "A-102 · 독립 6×3m · ₩13,500,000", a "코너 프리미엄 +10%" option checkbox, a divider, bold total "합계 ₩14,850,000", and buttons "부스 예약" (outlined) and primary "결제하기". Friendly e-commerce-meets-floorplan aesthetic, clear availability affordances. +``` + +- **라우트**: `/e/:eventId/booth-select`. MDI 적용(참가업체). + +--- + +### SCR-21 정산·결제 대시보드 [M9] + +- **대상**: 주최자(납부 스케줄)·참가업체(유틸리티·부대 결제)·관리자(정산) · **모듈/P**: M9 · P1 · **진입 경로**: 사이드바 "정산" +- **레이아웃**: + 1. 상단 KPI: 청구 총액 · 납부 완료 · 미납 · 다음 마감 D-데이 + 2. 좌측 2/3 — **납부 스케줄 타임라인/테이블**: 계약금 20%→중도금 30%+20%→잔금 30%+예치금 15~20% 행(금액·기한·상태 배지·[결제]/[영수증]) + 유틸리티/부대/옥션 수수료 정산 라인. 지브라·sticky + 3. 우측 1/3 — **결제 카드**: 선택 항목 PG 결제(카드/계좌이체/세금계산서), 예치금 대비 실사용 정산 요약(검침 기반), 세금계산서 발행 버튼 + 4. 하단: 행사 종료 후 정산 내역(전기사용료·폐기물 처리비) 투명화 표 +- **상태/컴포넌트**: 스케줄 테이블·PG 결제 모달·StatusBadge(미납 error·완료 success)·DdayChip. 로딩 스켈레톤 · 빈 — "청구 내역이 없습니다" · 에러 재시도. **데이터 원천**: 요율·납부 규칙(확보)·PG(연동 전 샘플) → 혼합. +- **Stitch 프롬프트**: + +``` +A settlement and payment dashboard for exhibition billing, Korean B2B web app "KINTEX AI 전시관리", desktop 1440px, light theme, blue #0066B3, success green #0E8A5F, error red #D92D20, Korean sans-serif. All UI text in Korean. Sidebar 240px ("정산" highlighted). Top KPI cards: "청구 총액 ₩64,500,000", "납부 완료 ₩38,700,000", "미납 ₩25,800,000" (red), "다음 마감 D-9" (amber D-day chip). Main split: left 2/3 a payment schedule table with columns 항목, 금액, 기한, 상태, 액션 — rows "계약금 20% ₩12,900,000 · 2026.06.01 · 완료(green pill) · [영수증]", "중도금 30% ₩19,350,000 · 07.15 · 미납(red pill) · [결제]", "잔금 30% + 예치금 15%", plus utility/booth-service/auction-fee settlement lines, zebra striped, sticky header. Right 1/3 a payment card "결제" with method segmented control "카드 / 계좌이체 / 세금계산서", a deposit-vs-actual settlement summary "예치금 ₩9.6M / 실사용 ₩7.1M / 환급 ₩2.5M", and a button "세금계산서 발행". Bottom: a small post-event settlement table "전기사용료 · 폐기물 처리비". Financial, trustworthy, number-forward layout. +``` + +- **라우트**: `/o/:eventId/settlement` · 참가 `/e/:eventId/booth/:boothId/payment`. MDI 적용. + +--- + +### SCR-22 서류·마일스톤 워크플로 [M6] + +- **대상**: 주최자 · **모듈/P**: M6 · P1 · **진입 경로**: 대시보드 마일스톤 노드 클릭 / 사이드바 "서류·마일스톤" +- **레이아웃**: + 1. 상단 — **마일스톤 진행 바**: D-150/D-30/D-25/D-7/D-0 (SCR-02 히어로 재사용, 컴팩트) + 2. 좌측 — **신고서류 체크리스트(7종+)**: 행사운영계획서·부스배치도·재해대처계획서·방화관리 책임서약서·주차관리 신청서·보안요원 배치계획·위험물 반입신고서·리깅 구조계산서 — 각 행 상태 배지(작성전/작성중/제출됨/검수중/승인/반려)·마감 D-데이·[작성]/[업로드]/[HWP 생성] + 3. 우측 — **AI 서류 검수 요약 카드**: 누락 항목·불일치("배치도 부스 수 486 ≠ 운영계획서 510") AiLabel + kxwp 릴레이 안내(제출 파일 생성→수동 업로드) +- **상태/컴포넌트**: 체크리스트·StatusBadge·DdayChip·AiLabel. 로딩 스켈레톤 · 빈 — "행사를 생성하면 마일스톤·서류가 자동 구성됩니다" · 에러 재시도. **데이터 원천**: 서식 템플릿(있음)·AI 검수(Claude 라우터) → 부분 실. +- **Stitch 프롬프트**: + +``` +A documents and milestone workflow screen for an exhibition organizer, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, purple #6D4AFF for AI, Korean sans-serif. All UI text in Korean. Sidebar 240px ("서류·마일스톤" highlighted). Top: a compact horizontal milestone bar "D-150 배정 → D-30 사전협의 → D-25 유틸리티 → D-7 신고서류 → D-0 개장" with the D-7 node highlighted amber. Main split: left 2/3 a required-documents checklist with rows, each showing a document name, a status pill and a D-day chip and action buttons — "행사운영계획서 · 승인(green) · [보기]", "부스배치도 · 제출됨(blue) · [HWP 생성]", "재해대처계획서 · 작성중(gray) · D-7 · [작성]", "리깅 구조계산서 · 반려(red) · [수정]", plus 방화관리 책임서약서, 주차관리 신청서, 보안요원 배치계획, 위험물 반입신고서. Right 1/3 an "AI 서류 검수" card with a purple accent left border listing issues: "부스배치도 부스 수 486 ≠ 운영계획서 510 (불일치)", "재해대처계획서 필수요소 누락 2건", and a note "kxwp 제출: 파일 자동 생성 후 업로드 안내". Workflow-tracker aesthetic, clear status affordances. +``` + +- **라우트**: `/o/:eventId/documents`. MDI 적용(주최자). + +--- + +### SCR-23 신고서류 작성 (웹폼 → HWP/PDF) [M6 / F022] + +- **대상**: 주최자 · **모듈/P**: M6 · P1 · **진입 경로**: SCR-22에서 "[작성]" +- **레이아웃**: + 1. 좌측 — **웹폼(섹션 아코디언)**: 서류 유형별 필드(행사 개요·안전 담당·비상 연락·위험물 목록 등), AI 자동 채움 버튼("행사 데이터로 자동 채움" AiLabel), 필수 필드 검증 + 2. 우측 — **실시간 문서 미리보기**(A4 프레임, 킨텍스 제출 서식 레이아웃) — 폼 입력이 즉시 반영 + 3. 하단 고정: 저장(임시)·"HWP 생성"·"PDF 생성"·"제출(kxwp 릴레이 안내)" +- **상태/컴포넌트**: 폼·문서 미리보기·AiLabel. 로딩 — 미리보기 스켈레톤 · 빈 — 신규 폼 · 에러 — 필수 미입력 인라인 · 생성 실패 재시도. **데이터 원천**: 서식 템플릿·AI 자동채움(Claude) → 부분 실. +- **Stitch 프롬프트**: + +``` +A form-to-document authoring screen where an organizer fills a web form and sees a live official document preview, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, purple #6D4AFF for AI. All UI text in Korean. Split layout: left half a form titled "재해대처계획서 작성" with accordion sections "행사 개요", "안전 관리 담당", "비상 연락 체계", "위험물 목록", each with Korean labeled inputs, and a purple button "행사 데이터로 자동 채움". Right half a document preview panel showing an A4 page with an official Korean government-style form layout, header "재해대처계획서", filled fields, a table, and a stamp box — updating live from the form. Sticky bottom bar: "임시 저장", "HWP 생성", "PDF 생성", and a primary "제출". A small note "제출은 kxwp 업로드용 파일 생성 방식입니다". Clean document-authoring split view. +``` + +- **라우트**: `/o/:eventId/documents/:docType/edit`. MDI 적용. + +--- + +### SCR-24 등록업체 매칭·RFQ [M7] + +- **대상**: 참가업체·주최자 · **모듈/P**: M7 · P1 · **진입 경로**: 설계 스튜디오 "업체 찾기" / 사이드바 "등록업체" +- **레이아웃**: + 1. 상단 필터: 공종 14분류(전시디자인설치·리깅·전기시설…), 지역, 규모, 예산 + 2. 좌측 — **업체 카드 리스트**: 업체명·분류·지역·규정 준수 이력·평점·(AI 추천 배지 "부스 규모·업종 적합" AiLabel). 미등록 업체는 노출 안 됨(게이트) + 3. 우측 — **RFQ 작성 패널**: 선택 업체 다중, M3 설계안·물량서 첨부, 요청 항목·마감, "견적 요청 발송". 발송 후 견적 회신 비교 진입(옥션 SCR-26으로 승격 가능) +- **상태/컴포넌트**: 업체 카드·AiLabel·첨부. 로딩 스켈레톤 · 빈 — "조건에 맞는 등록업체가 없습니다 — 필터를 조정하세요" · 에러 재시도. **데이터 원천**: 등록업체 DB(739, 수집 가능)·AI 매칭(Claude) → 부분 실. +- **Stitch 프롬프트**: + +``` +A registered-contractor matching and RFQ screen for exhibition booth construction, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, purple #6D4AFF for AI recommendations. All UI text in Korean. Top filter bar: category chips "전시디자인설치 · 리깅 · 전기시설 · 카펫 · 급배수" (14 categories), and selects "지역 ▾", "규모 ▾", "예산 ▾". Left 2/3 a list of contractor cards, each with company name "(주)공간디자인", category tag, region "경기 고양", a compliance record "규정 준수 98% · 시공 42건", a star rating, and some cards a purple "AI 추천 · 부스 규모·업종 적합" chip; a small verified badge "킨텍스 등록업체". Right 1/3 an "견적 요청(RFQ)" panel: selected contractors chips, an attachment list "부스 설계안 v2, 물량서(BOQ)", request-item fields, a deadline date, and a primary button "견적 요청 발송" with a note "미등록 업체는 응찰할 수 없습니다". Directory + procurement aesthetic. +``` + +- **라우트**: `/e/:eventId/contractors` · 주최자 `/o/:eventId/contractors`. MDI 적용. + +--- + +### SCR-25 반입/반출 슬롯 예약 [M8] + +- **대상**: 참가업체·장치업체·홀매니저(운영) · **모듈/P**: M8 · P2 · **진입 경로**: 통합 일정 / 사이드바 "반입·반출" +- **레이아웃**: + 1. 좌측 2/3 — **하역장·화물출입구 슬롯 그리드**: 게이트(도크1~6) 행 × 시간대 컬럼, 예약 셀(업체·차량·중량물 우선 표시), 드래그로 슬롯 선택. 중량물(5t↑) 우선 배치 하이라이트 + 2. 우측 1/3 — **예약 폼**: 차량정보·중량·품목, 지게차 신청(유료 옵션), 통행증 발급(QR) → 모바일(SCR-M10) 연동. 철거일 피크 대기열 예측 미니 차트 + 3. 상단: 행사·홀 필터, 반입/반출 전환 +- **상태/컴포넌트**: 슬롯 그리드·예약 폼·QR 발급·예측 미니 차트. 로딩 스켈레톤 · 빈 — "예약 가능한 슬롯이 없습니다" · 충돌 — 동시 예약 잠금 토스트. **데이터 원천**: 하역장 배치(운영팀 협업 필요) → 샘플 중심. +- **Stitch 프롬프트**: + +``` +A move-in/move-out dock slot reservation screen for an exhibition, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, Korean sans-serif. All UI text in Korean. Top: filters "행사 ▾ · 홀7 ▾" and a toggle "[반입] / [반출]". Left 2/3 a scheduling grid with dock rows "도크1 … 도크6" and time-slot columns (08:00–20:00), reserved cells filled blue showing "(주)공간디자인 · 5t 트럭", one cell highlighted amber "중량물 우선 5t↑", empty cells selectable. Right 1/3 a reservation form "슬롯 예약": vehicle info fields "차량번호 · 중량 · 품목", a checkbox "지게차 신청(유료)", and a "통행증 발급(QR)" button showing a small QR preview, plus a small teardown-day queue prediction mini bar chart "철거일 대기열 예측". Logistics-scheduling aesthetic with a clear time grid. +``` + +- **라우트**: `/e/:eventId/logistics` · 운영 `/ops/:eventId/logistics`. MDI 적용. + +--- + +### SCR-26 공사/장치 옥션 목록·개설 [M15] + +- **대상**: 참가업체·주최자(발주) · **모듈/P**: M15 · P1(핵심) · **진입 경로**: 사이드바 "옥션" / RFQ(SCR-24)에서 "역경매로 전환" +- **레이아웃**: + 1. 상단: 탭 [진행중] [마감] [내가 개설] + "옥션 개설" 버튼 + 2. 좌측 — **옥션 카드/테이블**: 옥션명·공종·유형(역경매/RFQ)·응찰 수·현재 최저가·마감 D-데이·상태 배지. AI 자료 첨부 아이콘(배치·설계·물량·이미지) + 3. **옥션 개설 모달/우측 패널**: 공종 선택, 낙찰 기준(최저가/종합평가+가중치 슬라이더: 가격·평판·납기), 라운드·마감, AI 자료 첨부(M2~M5), 초대 업체(등록업체 게이트) +- **상태/컴포넌트**: 옥션 카드·StatusBadge·DdayChip·가중치 슬라이더. 로딩 스켈레톤 · 빈 — "진행 중인 옥션이 없습니다 — 옥션을 개설하세요" · 에러 재시도. **데이터 원천**: M15 신규 엔진(미구현) → 샘플. +- **Stitch 프롬프트**: + +``` +A construction auction (reverse auction) list and creation screen for an exhibition platform, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, purple #6D4AFF for AI attachments, Korean sans-serif. All UI text in Korean. Top: tabs "진행중 | 마감 | 내가 개설" and a primary button "옥션 개설". Left 2/3 a list of auction cards, each with auction title "A-102 독립부스 시공", a category tag "전시디자인설치", a type chip "역경매", "응찰 5개", "현재 최저가 ₩8,400,000", a D-day chip "마감 D-2", a status pill "진행중", and small purple attachment icons "배치 · 설계 · 물량서 · 예상이미지". Right 1/3 an "옥션 개설" panel: category select, an award-criteria toggle "최저가 / 종합평가", weight sliders "가격 60% · 평판 25% · 납기 15%", round/deadline fields, an AI attachment picker "M2~M5 자료 첨부", and an invited-contractor list with a note "등록업체만 초대 가능". Procurement/marketplace aesthetic. +``` + +- **라우트**: `/e/:eventId/auctions` · `/o/:eventId/auctions` · 개설 `/auctions/new`. MDI 적용. + +--- + +### SCR-27 옥션 상세·실시간 순위·응찰 [M15] + +- **대상**: 장치업체(응찰) · 발주자(주최자/참가) 뷰 병행 · **모듈/P**: M15 · P1 · **진입 경로**: 옥션 목록 → 옥션 클릭 +- **레이아웃**: + 1. 상단: 옥션 컨텍스트(공종·유형·라운드·마감 카운트다운) + 실시간 배지 + 2. 좌측 2/3 — **AI 자료 열람**: 탭[배치도][부스 설계안][배선/물량서(BOQ)][나노바나나 예상 이미지] — 응찰 근거 자료(워터마크 상시) + 3. 우측 1/3 — **실시간 순위·응찰 패널**: 현재 순위 리스트(익명 옵션: "업체 A"), 내 위치 강조, 최저가/내 견적, 라운드 종료 타이머(Redis 실시간·WebSocket), "견적서 작성·재응찰"(SCR-28) CTA. 발주자 뷰에서는 "견적서 비교표 보기"(SCR-29) +- **상태/컴포넌트**: 자료 뷰어 탭·실시간 순위 리스트·카운트다운·AiLabel(예상이미지). 로딩 — 순위 스켈레톤 · 마감됨 — 응찰 비활성+"마감된 옥션" · 에러 — WebSocket 재연결 배지. **데이터 원천**: M15 신규 → 샘플. +- **Stitch 프롬프트**: + +``` +An auction detail screen with AI reference materials and a live ranking panel for exhibition construction bidding, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, purple #6D4AFF for AI, Korean sans-serif. All UI text in Korean. Top: context "A-102 독립부스 시공 · 역경매 · 라운드 2 · 마감 01:24:36" with a live red dot badge "실시간". Left 2/3 an AI reference viewer with tabs "배치도 | 부스 설계안 | 물량서(BOQ) | 예상 이미지" showing a photorealistic booth render with a faint watermark "AI 생성 예상 이미지" under the 예상 이미지 tab. Right 1/3 a live ranking panel "실시간 순위": ranked rows "1위 업체 A ₩8,400,000", "2위 나의 응찰 ₩8,700,000" (highlighted), "3위 업체 C ₩8,900,000", an anonymize toggle "익명 순위", a countdown timer "라운드 종료 01:24:36", and a primary button "견적서 작성·재응찰". Competitive, real-time marketplace aesthetic. +``` + +- **라우트**: `/auctions/:auctionId`. MDI 적용. + +--- + +### SCR-28 견적서 작성·제출 [M15] + +- **대상**: 장치업체 · **모듈/P**: M15 · P1 · **진입 경로**: SCR-27 → "견적서 작성·재응찰" +- **레이아웃**: + 1. 좌측 — **견적서 라인 에디터**: 공종·자재·수량·단가·금액 행 추가(물량서 BOQ에서 자동 프리필 AiLabel), 소계·부가세·총액 자동 계산, 납기·유효기간·조건 + 2. 우측 — **견적서 PDF 미리보기**(A4, 업체 로고·총액·서명란) + 버전 이력(라운드 내 재응찰 v1·v2) + 3. 하단: 임시저장·"견적서 제출(응찰)" — 제출 시 순위 즉시 갱신 +- **상태/컴포넌트**: 라인 테이블(tabular)·PDF 미리보기·버전 이력·AiLabel(BOQ 프리필). 로딩 미리보기 스켈레톤 · 빈 — 신규 견적서 · 에러 — 필수 미입력 인라인. **데이터 원천**: M15·BOQ(부분) → 샘플. +- **Stitch 프롬프트**: + +``` +A quotation (bid) authoring and submission screen for a contractor in an exhibition reverse auction, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, purple #6D4AFF for AI prefill. All UI text in Korean. Split: left half a line-item quotation editor titled "견적서 작성" with a table (공종, 자재, 수량, 단가, 금액) rows like "골조 · 알루미늄 프로파일 · 48 · ₩45,000 · ₩2,160,000", a purple note "물량서(BOQ)에서 자동 채움", and computed rows "소계 ₩7,636,000", "부가세 ₩763,600", bold "총액 ₩8,399,600", plus fields "납기 · 유효기간 · 조건". Right half a quotation PDF preview (A4) with a contractor logo, itemized table, bold total, and a signature box, plus a version history list "v1 (라운드1) · v2 (현재)". Sticky bottom: "임시 저장" and primary "견적서 제출(응찰)". Precise document + spreadsheet aesthetic. +``` + +- **라우트**: `/auctions/:auctionId/quote`. MDI 적용. + +--- + +### SCR-29 낙찰 비교·선정 (Award) [M15] + +- **대상**: 발주자(주최자·참가업체) · **모듈/P**: M15 · P1 · **진입 경로**: 옥션 마감 → "견적서 비교" +- **레이아웃**: + 1. 상단: 옥션 요약(공종·응찰 수·낙찰 기준) + 2. **비교 테이블(전폭)**: 열=업체, 행=총액·항목별 단가·납기·평판·종합점수(가중 스코어 산식 노출 AiLabel). 최적값 셀 하이라이트, 종합점수 내림차순 + 3. 우측/하단 — **선정 패널**: 추천 업체(종합점수 1위) + 선정 사유 입력, "낙찰(Award)" → 계약/발주 전환(M6·M9) 링크, 낙찰 통지 미리보기 +- **상태/컴포넌트**: 비교 테이블(sticky 열·하이라이트)·스코어 게이지·AiLabel. 로딩 스켈레톤 · 빈 — "응찰이 없습니다" · 에러 재시도. **데이터 원천**: M15 → 샘플. +- **Stitch 프롬프트**: + +``` +An award decision / quotation comparison screen for a buyer in an exhibition reverse auction, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, purple #6D4AFF for AI score, green #0E8A5F highlights. All UI text in Korean. Top: auction summary "A-102 독립부스 시공 · 응찰 5 · 낙찰기준 종합평가". A wide comparison table with contractor columns "업체 A · 업체 B · 업체 C" and metric rows "총액 ₩8.4M / ₩8.7M / ₩8.9M", "골조 단가", "전기 단가", "납기 12일 / 10일 / 14일", "평판 4.8 / 4.6 / 4.2", and a "종합점수" row "92.4 / 89.1 / 84.7" with a small purple chip "AI 가중 스코어"; the best cells are highlighted green, columns sorted by score. Right panel "낙찰 선정": a recommended card "업체 A · 종합 1위", a "선정 사유" textarea, a primary green button "낙찰(Award)", and a note "낙찰 견적서는 계약·발주 문서로 전환됩니다". Decision-support, comparison-heavy aesthetic. +``` + +- **라우트**: `/auctions/:auctionId/award`. MDI 적용. + +--- + +### SCR-30 관람객 등록 관리 대시보드 [M10·M11] + +- **대상**: 주최자 · **모듈/P**: M10 · P1 · **진입 경로**: 사이드바 "관람객" +- **레이아웃**: + 1. 상단 KPI: 사전등록 12,480 · 체크인 8,210 · 노쇼율 · 바이어 비중 · 리드 생성 수 + 2. 좌측 2/3 — **등록 추이 차트**(Recharts Area, 일자별 사전등록/체크인) + 등록 유형 분포(관람객/바이어/VIP) + 3. 우측 1/3 — **등록 폼 관리**: 활성 폼 리스트, AI 폼빌더 진입(F046 AiLabel), 배지 템플릿(M17 연계) + 4. 하단 — **등록자 테이블**: 이름(마스킹)·유형·소속·등록일·체크인 상태·배지 발급 — 개인정보 마스킹·감사 표기 +- **상태/컴포넌트**: KPI·Recharts·등록자 테이블(PII 마스킹)·AiLabel. 로딩 스켈레톤 · 빈 — "사전등록이 아직 없습니다" · 에러 재시도. **데이터 원천**: M10 신규 → 샘플. **PII 준수**(N2). +- **Stitch 프롬프트**: + +``` +A visitor registration management dashboard for an exhibition organizer, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, purple #6D4AFF for AI, Korean sans-serif. All UI text in Korean. Sidebar 240px ("관람객" highlighted). Top KPI cards: "사전등록 12,480", "체크인 8,210", "노쇼율 12%", "바이어 비중 34%", "리드 생성 2,140". Main: left 2/3 a chart card "등록·체크인 추이" with a multi-series area chart (blue = 사전등록, slate = 체크인) over dates, and a small donut "등록 유형 (관람객 62% · 바이어 34% · VIP 4%)". Right 1/3 a "등록 폼 관리" card with a form list and a purple button "AI 폼빌더", plus a "배지 템플릿" thumbnail. Bottom: a registrants data table with columns 이름, 유형, 소속, 등록일, 체크인, 배지 — names partially masked like "김**", status pills, zebra striped. Data-rich CRM-style aesthetic with privacy masking. +``` + +- **라우트**: `/o/:eventId/visitors`. MDI 적용. + +--- + +### SCR-31 현장 체크인 데스크/키오스크 [M10] + +- **대상**: 홀매니저·현장 운영 · **모듈/P**: M10 · P1 · **진입 경로**: 운영 대시보드 "체크인" / 키오스크 모드 +- **레이아웃**: + 1. 중앙 — **QR 스캔 존**(대형 카메라 프레임) + 수동 검색(이름·연락처·등록번호) + 2. 스캔 성공 시 — **관람객 카드**: 이름·유형·소속·사진, "즉석 배지 인쇄" 버튼, 재발급 + 3. 우측 — **실시간 입장 집계**: 시간대별 체크인 수, 현재 장내 추정 인원, 오프라인 모드 배지("네트워크 불안정 — 로컬 저장 후 동기화") + 4. 키오스크 모드 토글(셀프 체크인 대형 UI) +- **상태/컴포넌트**: 스캔 프레임·관람객 카드·집계 위젯·오프라인 폴백 배지. 로딩 — 스캔 대기 애니메이션 · 실패 — "등록 정보를 찾을 수 없습니다 — 현장 등록" · 에러 재시도. **데이터 원천**: M10 신규 → 샘플. **오프라인 폴백 필수**(F049). +- **Stitch 프롬프트**: + +``` +An on-site check-in desk / kiosk screen for exhibition staff, Korean B2B tool, desktop 1440px (kiosk-friendly), light theme, blue #0066B3, success green #0E8A5F. All UI text in Korean. Center: a large QR scan area with a camera viewfinder frame and text "배지 QR을 스캔하세요", and below it a manual search "이름 · 연락처 · 등록번호로 검색". On a successful scan, a visitor card appears: photo, name "정관람", type chip "바이어", company "(주)미래기술", and buttons "즉석 배지 인쇄" (primary) and "재발급". Right column: a real-time entry widget "실시간 입장" with a small bar chart by hour, a big number "현재 장내 8,210명", and an offline status badge "오프라인 — 로컬 저장 후 동기화". A top-right toggle "키오스크 모드". Fast, high-contrast, glanceable check-in aesthetic. +``` + +- **라우트**: `/ops/:eventId/checkin`. MDI 적용(운영). + +--- + +### SCR-32 리드 관리·AI 스코어링 [M10] + +- **대상**: 참가업체 · **모듈/P**: M10 · P1 · **진입 경로**: 참가업체 포털 "리드" (모바일 리드캡처 SCR-M4의 웹 관리) +- **레이아웃**: + 1. 상단 KPI: 총 리드 · 핫리드(AI 스코어 상위) · 팔로업 대기 · 전환 추정 + 2. 좌측 2/3 — **리드 테이블**: 이름(마스킹)·소속·관심 제품·관심도(별점)·**AI 스코어(0~100 게이지, AiLabel)**·메모·수집 시각. 필터(스코어·태그) + 3. 우측 1/3 — **리드 상세·팔로업**: 선택 리드 프로필, AI 추천 팔로업 문구(EDM 초안 AiLabel), "EDM 발송"(M12 연계)·CSV 내보내기 +- **상태/컴포넌트**: 리드 테이블(PII 마스킹)·AI 스코어 게이지·AiLabel·EDM 초안. 로딩 스켈레톤 · 빈 — "수집된 리드가 없습니다 — 모바일 앱에서 배지를 스캔하세요" · 에러 재시도. **데이터 원천**: M10 신규 → 샘플. **PII 동의·보존**(R10). +- **Stitch 프롬프트**: + +``` +A lead management and AI scoring screen for an exhibitor, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, purple #6D4AFF for AI score. All UI text in Korean. Sidebar 240px ("리드" highlighted). Top KPI cards: "총 리드 342", "핫리드 68", "팔로업 대기 120", "전환 추정 24". Main: left 2/3 a leads data table with columns 이름, 소속, 관심 제품, 관심도, AI 스코어, 수집시각 — rows with masked names "김**", companies, interest tags, 5-star interest, and an AI score shown as a small horizontal gauge with number "87" and a purple chip; filter chips "스코어 80+ · 태그". Right 1/3 a lead detail panel: profile, a purple "AI 추천 팔로업" card with a draft message, and buttons "EDM 발송" and "CSV 내보내기". Sales-CRM aesthetic with prominent AI scoring and privacy masking. +``` + +- **라우트**: `/e/:eventId/booth/:boothId/leads`. MDI 적용. + +--- + +### SCR-33 EDM·캠페인 관리 [M12] + +- **대상**: 주최자 · **모듈/P**: M12 · P1 · **진입 경로**: 사이드바 "마케팅" +- **레이아웃**: + 1. 상단: 캠페인 KPI(발송·오픈율·클릭율·등록 전환) + "새 캠페인" + 2. 좌측 2/3 — **캠페인 리스트**(상태 배지: 초안/예약/발송중/완료) + 성과 미니 지표 + 3. 우측 1/3 — **캠페인 빌더**: 세그먼트(사전등록자·과거 관람객·바이어) 선택, AI 카피 초안(AiLabel)·나노바나나 이미지 삽입, 발송 시점(즉시/예약), 미리보기(수신동의·수신거부 준수 표기) +- **상태/컴포넌트**: 캠페인 리스트·StatusBadge·세그먼트 셀렉터·AiLabel. 로딩 스켈레톤 · 빈 — "캠페인이 없습니다" · 에러 재시도. **데이터 원천**: M12·M10 세그먼트 → 샘플. **정보통신망법 수신동의 준수** 표기. +- **Stitch 프롬프트**: + +``` +An EDM / marketing campaign management screen for an exhibition organizer, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, purple #6D4AFF for AI. All UI text in Korean. Sidebar 240px ("마케팅" highlighted). Top: KPI cards "발송 24,000 · 오픈율 38% · 클릭율 9% · 등록전환 1,240" and a primary button "새 캠페인". Left 2/3 a campaign list with rows showing campaign name, a status pill ("초안" gray, "예약" blue, "발송중" amber, "완료" green), audience size, and small open/click metrics. Right 1/3 a "캠페인 빌더" panel: audience segment checkboxes "사전등록자 · 과거 관람객 · 바이어", a purple button "AI 카피 초안", an image slot "나노바나나 예상 이미지 삽입", a send-time toggle "즉시 / 예약", and an email preview with a footer "수신거부 · 정보통신망법 수신동의 준수". Marketing-automation aesthetic. +``` + +- **라우트**: `/o/:eventId/campaigns`. MDI 적용. + +--- + +### SCR-34 스폰서십 패키지·판매 관리 [M12 / F070] + +- **대상**: 주최자 · **모듈/P**: M12 · P1 · **진입 경로**: 사이드바 "스폰서십" +- **레이아웃**: + 1. 상단 KPI: 스폰서 수 · 판매액 · 잔여 패키지 · 이행물 진행률 + 2. 좌측 — **패키지 티어 카드**(다이아몬드/골드/실버: 혜택·가격·잔여 수량·판매 상태) + 3. 우측 — **스폰서·이행물 관리**: 스폰서 리스트(계약·결제 상태), 이행물 체크리스트(로고 노출·부스·연사 세션), 노출·리드·ROI 대시보드 링크(F071) +- **상태/컴포넌트**: 티어 카드·이행물 체크리스트·StatusBadge. 로딩 스켈레톤 · 빈 — "등록된 스폰서십 패키지가 없습니다" · 에러 재시도. **데이터 원천**: 신규 → 샘플. +- **Stitch 프롬프트**: + +``` +A sponsorship package and sales management screen for an exhibition organizer, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, Korean sans-serif. All UI text in Korean. Sidebar 240px ("스폰서십" highlighted). Top KPI cards: "스폰서 18", "판매액 ₩420,000,000", "잔여 패키지 6", "이행물 진행 72%". Left 2/3 sponsorship tier cards in a row — "다이아몬드" (gold accent, benefits list, "₩50,000,000", "잔여 1"), "골드", "실버" — each with a benefits bullet list and a "판매" status. Right 1/3 a "스폰서 관리" panel: a sponsor list with contract/payment status pills, a fulfillment checklist "로고 노출 · 부스 배정 · 연사 세션", and a link "노출·리드·ROI 대시보드". B2B sales/CRM aesthetic with clear tier hierarchy. +``` + +- **라우트**: `/o/:eventId/sponsorship`. MDI 적용. + +--- + +### SCR-35 CMS 콘텐츠·게시 워크플로 [M17] + +- **대상**: 주최자·관리자 · **모듈/P**: M17 · P1 · **진입 경로**: 사이드바 "콘텐츠(CMS)" +- **레이아웃**: + 1. 좌측 — **콘텐츠 트리/목록**: 페이지·공지·행사 소개·연사·FAQ. 상태 배지(초안→검수→승인→게시), 언어 탭(한/영/중/일) + 2. 중앙 — **콘텐츠 에디터**(블록/리치텍스트, 미디어 라이브러리, 예약 게시), sanitize 표기(XSS N2) + 3. 우측 — **게시 워크플로 패널**: 버전 이력, 검수 요청·승인, 예약 게시 일정, 사이니지 배포 토글(M13 연계) +- **상태/컴포넌트**: 콘텐츠 트리·리치 에디터·StatusBadge·언어 탭·버전 이력. 로딩 스켈레톤 · 빈 — "콘텐츠가 없습니다 — 새 페이지" · 에러 재시도. **데이터 원천**: M17 신규 → 샘플. +- **Stitch 프롬프트**: + +``` +A headless CMS content editor with publishing workflow for an exhibition platform, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, Korean sans-serif. All UI text in Korean. Three-column: left a content tree/list "페이지 · 공지 · 행사 소개 · 연사 · FAQ" with status pills ("초안" gray, "검수" amber, "게시" green) and language tabs "한 · 영 · 중 · 일". Center a block/rich-text editor with a toolbar, a media library strip, a title "행사 소개", body content blocks, and a "예약 게시" datetime field. Right a publishing panel "게시 워크플로": a version history list "v3 (현재) · v2 · v1", a "검수 요청" button, an "승인" button, a schedule "2026.08.01 09:00 예약", and a toggle "사이니지 배포". Clean content-management aesthetic, multilingual affordances. +``` + +- **라우트**: `/o/:eventId/cms` · 관리자 `/admin/cms`. MDI 적용. + +--- + +### SCR-36 참가업체 마이크로사이트 편집기 [M17] + +- **대상**: 참가업체 · **모듈/P**: M17 · P1 · **진입 경로**: 참가업체 포털 "마이크로사이트" +- **레이아웃**: + 1. 좌측 — **섹션 편집 패널**: 부스 소개·제품·나노바나나 예상샷 갤러리·연락처·미팅 예약 링크(M11), 테마 선택 + 2. 중앙 — **라이브 미리보기**(반응형: 데스크톱/모바일 토글) — 공개 뷰(SCR-P5)와 동일 렌더 + 3. 우측 — 게시 상태·URL(서브도메인/슬러그)·SEO 메타·다국어 토글 +- **상태/컴포넌트**: 섹션 편집·라이브 프리뷰·반응형 토글·AiLabel(예상샷). 로딩 스켈레톤 · 빈 — 템플릿 선택 안내 · 에러 재시도. **데이터 원천**: M17·M5 이미지 → 부분(이미지 실 가능). +- **Stitch 프롬프트**: + +``` +An exhibitor microsite builder screen, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, purple #6D4AFF for AI images. All UI text in Korean. Left panel: section editor list "부스 소개 · 제품 · 예상샷 갤러리 · 연락처 · 미팅 예약" with edit controls and a theme picker. Center: a live preview of a company microsite with a hero banner, company name "(주)한빛로보틱스", a product grid, and an AI-render booth photo gallery with faint watermark "AI 생성 예상 이미지"; a device toggle "데스크톱 / 모바일" above the preview. Right panel: publish status "게시됨", a URL field "hanbit.expo.kintex.kr", SEO meta fields, and language toggle "한 · 영 · 중 · 일". Modern site-builder aesthetic. +``` + +- **라우트**: `/e/:eventId/microsite`. MDI 적용. + +--- + +### SCR-37 다국어 콘텐츠 관리 [M17 / F069] + +- **대상**: 관리자·콘텐츠 담당 · **모듈/P**: M17 · P1 · **진입 경로**: CMS(SCR-35) "다국어" / 관리자 사이드바 +- **레이아웃**: + 1. 상단: 언어 커버리지 요약(한 100% · 영 82% · 중 60% · 일 45%), 대상 언어 선택 + 2. **번역 매트릭스 테이블**: 콘텐츠 키 × 언어 셀(원문·번역·상태: 미번역/AI 초벌/검수완료). AI 자동 번역 버튼(AiLabel) + 사람 검수 워크플로 + 3. 우측 — 선택 항목 병렬 편집(원문↔번역), 용어집·톤 가이드 +- **상태/컴포넌트**: 번역 매트릭스·커버리지 바·AiLabel·병렬 에디터. 로딩 스켈레톤 · 빈 — "번역 대상 콘텐츠가 없습니다" · 에러 재시도. **데이터 원천**: M17·AI 번역(Claude) → 부분. +- **Stitch 프롬프트**: + +``` +A multilingual content management (translation matrix) screen, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, purple #6D4AFF for AI translation. All UI text in Korean. Top: language coverage summary with progress bars "한 100% · 영 82% · 중 60% · 일 45%" and a target-language selector. Center: a translation matrix table with rows = content keys ("행사명", "홀 안내", "참가 신청") and columns = languages (KO source, EN, ZH, JA), each cell showing translated text and a status chip ("미번역" gray, "AI 초벌" purple, "검수완료" green); a purple button "AI 자동 번역". Right panel: a side-by-side editor "원문(한) ↔ 번역(영)" with a glossary and tone guide. Localization-tool aesthetic, dense grid. +``` + +- **라우트**: `/admin/i18n` · `/o/:eventId/cms/i18n`. MDI 적용. + +--- + +### SCR-38 업체 수주 부스 대시보드 [업체 포털] + +- **대상**: 장치·공사업체 · **모듈/P**: 업체 포털(M3·M15·M8 진입 허브) · P1 · **진입 경로**: 업체 포털 로그인 기본 홈 +- **레이아웃**: + 1. 상단 KPI: 수주 부스 · 진행 옥션 · 응찰 대기 · 시공 진행 · 마감 임박 + 2. 좌측 2/3 — **수주 부스 리스트**: 행사·부스·발주자·설계 상태·시공 단계 스테퍼(설계→규정검증→반입→시공→검수), [설계 스튜디오]·[규정 리포트]·[반입 예약] + 3. 우측 1/3 — **옥션/견적 현황**: 참여 옥션·내 순위·마감 D-데이, 알림 피드 +- **상태/컴포넌트**: KPI·수주 리스트·시공 스테퍼·StatusBadge·DdayChip. 로딩 스켈레톤 · 빈 — "수주한 부스가 없습니다 — 옥션에 참여하세요" CTA · 에러 재시도. **데이터 원천**: M3·M15 → 부분 샘플. +- **Stitch 프롬프트**: + +``` +A contractor's awarded-booths dashboard (home) for exhibition construction, Korean B2B web app, desktop 1440px, light theme, blue #0066B3, Korean sans-serif. All UI text in Korean. Sidebar 240px (업체 포털 menu, "수주 부스" highlighted). Top KPI cards: "수주 부스 8", "진행 옥션 3", "응찰 대기 2", "시공 진행 5", "마감 임박 1". Left 2/3 a list of awarded booth cards, each with event + booth "스마트팩토리 · A-102", client "(주)한빛로보틱스", and a construction stage stepper "설계 → 규정검증 → 반입 → 시공 → 검수" with the current stage highlighted, plus buttons "설계 스튜디오", "규정 리포트", "반입 예약". Right 1/3 an "옥션 현황" panel with participating auctions, my rank "2위", D-day chips, and a notification feed. Operational contractor-portal aesthetic. +``` + +- **라우트**: `/c/dashboard`. MDI 적용(업체). + +--- + +### SCR-39 ~ SCR-48 공통 업무 기능 (§5B UIWS 표준 이식) + +> **UIWS(`workspace/uiws/frontend/src/pages`) 표준을 kintex §1 토큰으로 정합.** 전 포털이 공유하는 공통 업무 레이어(§5B-2). 각 화면은 UIWS 대응 페이지를 레퍼런스로 하되, **레이아웃 언어는 §1(1px 테두리·지브라 테이블·44px 행·StatusBadge)**, MDI 셸(§2.7) 문서 탭으로 열린다. 목록/상세/폼 3형태는 대표 화면 1개 프롬프트로 생성 후 파생. + +#### SCR-39 업무일지 (worklog) — 전 역할 · P1 +- **레이아웃**: 좌측 필터(기간·작성자·유형)+목록 테이블(날짜·제목·유형·진행상태·시간) / 우측 상세·작성 폼(공수·이슈·댓글). 킨텍스 접합: 홀매니저 현장 일지·업체 시공 일지. 상태: 로딩 스켈레톤·빈("작성된 업무일지가 없습니다")·에러 재시도. 참조: UIWS `worklog/WorklogCalendarPage`·`RelatedDocsPanel`. +- **Stitch 프롬프트**: +``` +A daily worklog screen in a Korean B2B enterprise app "KINTEX AI 전시관리", desktop 1440px, light theme, blue #0066B3, 1px borders #E4E7EC, Korean sans-serif (Pretendard). All UI text in Korean. Left sidebar 240px ("업무일지" highlighted). Main split: left 2/3 a filter bar (기간, 작성자, 유형) above a data table with columns 날짜, 제목, 유형, 진행상태, 공수 — zebra striped rows with status pills "진행중 / 완료", 44px row height, sticky header. Right 1/3 a worklog detail/compose panel: date, title, a work-type select, hours input, an issue textarea, and a comment thread with an input. Dense enterprise productivity aesthetic. +``` + +#### SCR-40 통합 일정·캘린더 (schedule) — 전 역할 · P1 +- **레이아웃**: 월/주 캘린더 + 우측 일정 리스트/작성. 킨텍스 접합: 행사 마일스톤(M6)·옥션 마감·반입 슬롯(M8) 통합 뷰(색상 범례). SCR-15(운영 전 홀 일정)와 구분 — 본 화면은 개인/부서 업무 일정. 상태: 로딩·빈·에러. 참조: UIWS `schedule/PersonalSchedulePage`·`ScheduleCalendar`. +- **Stitch 프롬프트**: +``` +A unified personal/team schedule calendar in a Korean B2B app "KINTEX AI 전시관리", desktop 1440px, light theme, blue #0066B3, Korean sans-serif. All UI text in Korean. Sidebar 240px ("일정" highlighted). Main: a large month calendar grid "2026년 8월" with color-coded events — blue "행사 마일스톤", purple "옥션 마감", green "반입 슬롯", plus a legend and view toggle "월 / 주 / 일". Right 1/3 an agenda list for the selected day with event cards and a "일정 추가" button. Clean calendar/scheduling aesthetic. +``` + +#### SCR-41 쪽지 (message) — 전 역할 · P1 +- **레이아웃**: 3-패널(받은/보낸/작성) — 목록·상세·수신자 선택(부서 트리). 킨텍스 접합: 주최자↔참가↔업체↔홀매니저 행사 내 커뮤니케이션. 상태: 빈("받은 쪽지가 없습니다")·읽음 표시. 참조: UIWS `message/*`. +- **Stitch 프롬프트**: +``` +An internal messaging (쪽지) screen with a 3-pane layout in a Korean B2B app "KINTEX AI 전시관리", desktop 1440px, light theme, blue #0066B3. All UI text in Korean. Sidebar 240px ("쪽지" highlighted). Layout: a left folder rail "받은 쪽지 · 보낸 쪽지 · 임시보관", a middle message list with sender, subject, time and unread bold rows, and a right reading pane with message body, sender info, and reply box; a "쪽지 쓰기" button opens a recipient picker with a department tree. Familiar mail-client aesthetic. +``` + +#### SCR-42 공지 (notice) — 전 역할 · P1 +- **레이아웃**: 공지 목록(중요 상단 고정·팝업 설정) + 상세. 킨텍스 접합: 킨텍스 공지(852건 도메인)·행사 공지 → M17 CMS 채널 정합(경계: 발행성=CMS, 알림성=공지). 상태: 빈·로딩. 참조: UIWS `notice/*`. +- **Stitch 프롬프트**: +``` +A notice board (공지사항) screen in a Korean B2B app "KINTEX AI 전시관리", desktop 1440px, light theme, blue #0066B3. All UI text in Korean. Sidebar 240px ("공지" highlighted). Main: a pinned "중요" notice at top with a red badge, then a notice list table (제목, 작성자, 게시일, 조회수) with zebra rows, a search bar, and a "공지 작성" button; clicking opens a detail view with title, meta, body, and attachments. Clean announcement aesthetic. +``` + +#### SCR-43 의견접수 (opinion) — 전 역할 · P2 +- **레이아웃**: 의견/건의 접수 폼 + 처리 상태 목록(접수→검토→답변). 킨텍스 접합: 고객의소리·규정 문의. 상태: 빈·로딩. 참조: UIWS `opinion/*`. +- **Stitch 프롬프트**: +``` +A feedback/suggestion (의견접수) screen in a Korean B2B app "KINTEX AI 전시관리", desktop 1440px, light theme, blue #0066B3. All UI text in Korean. Sidebar 240px ("의견접수" highlighted). Main: a submission form with a category select "규정 문의 / 개선 제안 / 불편 신고", subject, body, attachment, and a "제출" button; below, a list of my submissions with status pills "접수 / 검토중 / 답변완료" and reply preview. Simple support-form aesthetic. +``` + +#### SCR-44 통합검색 (search) — 전 역할 · P1 +- **레이아웃**: 상단 대형 검색창 + 결과 탭(행사·부스·업체·문서·콘텐츠) + 필터. 킨텍스 접합: 크로스 모듈 검색. AI 자연어 검색 옵션(AiLabel). 상태: 빈("검색어를 입력하세요")·결과 없음. 참조: UIWS `SearchResultsPage`·`NlSearchPage`. +- **Stitch 프롬프트**: +``` +A unified/global search results screen in a Korean B2B app "KINTEX AI 전시관리", desktop 1440px, light theme, blue #0066B3, purple #6D4AFF for AI. All UI text in Korean. A large centered search bar with a purple "AI 자연어 검색" toggle. Below, result tabs "전체 · 행사 · 부스 · 업체 · 문서 · 콘텐츠" and a left facet filter, with grouped result cards each showing an icon, title, snippet with highlighted query terms, and module tag. Fast, clean search aesthetic. +``` + +#### SCR-45 회의록 (meeting · STT→Jasper PDF) — 주최자·홀매니저 · P1 +- **레이아웃**: 회의 목록 + 상세(녹음 재생·STT 전사·요약 AiLabel·액션아이템→일정/서류). 킨텍스 접합: 사전업무협의(D-30) 회의록 자동화. Jasper PDF 출력. 상태: 전사 중 진행 배지·빈·에러. 참조: UIWS `meeting/MeetingDetailPage`. +- **Stitch 프롬프트**: +``` +A meeting minutes screen with STT transcription in a Korean B2B app "KINTEX AI 전시관리", desktop 1440px, light theme, blue #0066B3, purple #6D4AFF for AI. All UI text in Korean. Sidebar 240px ("회의록" highlighted). Main: left a meeting list, right a detail view with an audio player, a transcript panel "STT 전사" with speaker labels, a purple "AI 요약" card, an action-items table linking to 일정/서류, and a "회의록 PDF" button. Note "사전업무협의(D-30)". Productivity + AI aesthetic. +``` + +#### SCR-46 업무보고·통계 (report/stats · Jasper PDF) — 주최자·홀매니저 · P1 +- **레이아웃**: 기간 탭(일/주/월/분기/연) + 요약 지표 + 차트(Recharts) + 작성자/유형별 표. 경계: 경영지표=M16(SCR-13), 여기는 일상 업무보고·통계. Jasper PDF. 상태: 로딩·빈·에러. 참조: UIWS `report/*`·`stats/*`. +- **Stitch 프롬프트**: +``` +A work report / statistics screen with period tabs in a Korean B2B app "KINTEX AI 전시관리", desktop 1440px, light theme, blue #0066B3. All UI text in Korean. Sidebar 240px ("업무보고" highlighted). Top: period tabs "일간 · 주간 · 월간 · 분기 · 연간" and a "보고서 PDF" button. Main: summary KPI cards, a bar/line chart (Recharts style) of work volume over time, and a breakdown table by writer and work type with zebra rows and tabular numbers. Reporting aesthetic distinct from executive BI. +``` + +#### SCR-47 알림센터 (notification) — 전 역할 · P1 +- **레이아웃**: 알림 목록(카테고리: 마감 D-데이·낙찰·승인·결제·시스템)·읽음/안읽음·딥링크(문서 탭 열기)·규칙 설정 링크. WebSocket 실시간. 상태: 빈("새 알림이 없습니다")·로딩. 참조: UIWS `NotificationsPage`·`settings/NotificationRulesPage`. +- **Stitch 프롬프트**: +``` +A notification center screen in a Korean B2B app "KINTEX AI 전시관리", desktop 1440px, light theme, blue #0066B3, Korean sans-serif. All UI text in Korean. Sidebar 240px ("알림" highlighted). Main: category filter chips "전체 · 마감 · 낙찰 · 승인 · 결제 · 시스템", a chronological notification list with icon, title, description, timestamp, unread blue dot, and per-item deep-link action; a top-right "모두 읽음" and "알림 규칙 설정" link. Clean notification-inbox aesthetic. +``` + +#### SCR-48 마이페이지·환경설정 (profile/preference) — 전 역할 · P1 +- **레이아웃**: 좌측 탭(프로필·보안(2FA)·알림 설정·테마/언어·즐겨찾기) + 우측 설정 폼. 킨텍스 접합: 역할별 대시보드 개인화·최근방문. 상태: 저장 토스트·검증. 참조: UIWS `auth/MyProfilePage`. +- **Stitch 프롬프트**: +``` +A my-page / settings screen in a Korean B2B app "KINTEX AI 전시관리", desktop 1440px, light theme, blue #0066B3. All UI text in Korean. Sidebar 240px. Layout: a left settings tab rail "프로필 · 보안(2차 인증) · 알림 설정 · 테마·언어 · 즐겨찾기", and a right form panel showing the 프로필 tab: avatar, name, email, department, role badge, and a save button; the 테마·언어 tab shows a light/dark theme toggle and a language select "한 · 영 · 중 · 일". Clean account-settings aesthetic. +``` + +--- + +### SCR-49 회원가입 (웹) [§5B-3] + +- **대상**: 참가업체·업체·관람객 셀프 · **P1** · **진입 경로**: 로그인(SCR-01) "회원가입" / 초대 링크 +- **레이아웃**: 중앙 카드(가입 유형 선택: 참가업체/등록업체/관람객), 약관·개인정보 동의, 이메일 인증, 등록업체는 사업자 검증(등록업체 DB 게이트). 스텝(유형→정보→인증→완료). 상태: 검증 인라인·중복 이메일·미등록 업체 안내. +- **Stitch 프롬프트**: +``` +A sign-up screen for "KINTEX AI 전시관리", Korean B2B web app, desktop 1440px, light theme, blue #0066B3, on #F9FAFB. All UI text in Korean. Center card with a step indicator "유형 → 정보 → 인증 → 완료". Step 1 shows account-type cards "참가업체 · 등록(장치)업체 · 관람객". The form: name, email with "인증코드 발송" button, password, company/business-number fields (for contractor, with a note "킨텍스 등록업체만 가입 가능"), consent checkboxes "이용약관 · 개인정보 처리방침 동의", and a primary "가입하기" button. Trustworthy onboarding aesthetic. +``` + +- **라우트**: `/signup`. MDI 비적용(인증 전). + +--- + +### SCR-50 비밀번호 찾기·재설정 [§5B-3] + +- **대상**: 전 역할 · **P1** · **진입 경로**: 로그인 "비밀번호 찾기" +- **레이아웃**: 이메일 입력→인증코드→새 비밀번호(강도 표시). 로그인 실패 잠금 안내. 상태: 코드 만료·불일치·성공 토스트. 참조: UIWS `auth/FindIdPage`·`ResetPasswordPage`. +- **Stitch 프롬프트**: +``` +A password reset screen for "KINTEX AI 전시관리", Korean B2B web app, desktop 1440px, light theme, blue #0066B3, on #F9FAFB. All UI text in Korean. Center card with a 3-step flow "이메일 확인 → 인증코드 → 새 비밀번호". Current step shows an email input and "인증코드 발송", then a 6-digit code field with a resend timer, then a new-password field with a strength meter and confirm field, and a primary "비밀번호 재설정" button. A small note about account lockout after failed attempts. Minimal secure-auth aesthetic. +``` + +- **라우트**: `/forgot-password`. MDI 비적용. + +--- + +### SCR-51 2차 인증(OTP) 설정 [§5B-3] + +- **대상**: 관리자·홀매니저·주최자·업체(필수)·관람객(선택) · **P1** · **진입 경로**: 최초 로그인 강제 / 마이페이지 보안 탭 +- **레이아웃**: QR(authenticator 등록)·시크릿 키·6자리 코드 검증. 재설정·해제(관리자는 사용자 OTP 초기화). TOTP RFC6238 설명. 상태: 코드 불일치·성공. 참조: UIWS `auth/OtpSetupPage`. +- **Stitch 프롬프트**: +``` +A two-factor authentication (OTP) setup screen for "KINTEX AI 전시관리", Korean B2B web app, desktop 1440px, light theme, blue #0066B3, on #F9FAFB. All UI text in Korean. Center card titled "2차 인증(OTP) 등록": step 1 "인증 앱으로 QR을 스캔하세요" with a QR code image and a secret key text with copy button, step 2 "6자리 코드 입력" with a 6-digit OTP input, and a primary "등록 완료" button; a helper "Google Authenticator 등 TOTP 앱 지원". Security-focused, calm aesthetic. +``` + +- **라우트**: `/otp-setup`. MDI 비적용(로그인 게이트). + +--- + +## 3A. 관리자 백오피스 화면 (SCR-A*) — M18 · §5B-1 + +> **admin 백오피스(`admin.`, 웹 전용).** SCR-16(랜딩 대시보드)의 하위 M18 본체 화면. UIWS `system/*` 표준을 §1 토큰으로 정합. 플랫폼 슈퍼관리자는 상단 **테넌트 스위처**, 테넌트 관리자는 자기 전시관 고정(§1A-4). 공통 레이아웃: 좌측 admin 사이드바 + 상단 유틸리티(테넌트 컨텍스트·검색) + 목록/폼 2단. 전 화면 **감사로그 기록**(N2). MDI 적용. + +### SCR-A1 사용자 관리 +- **레이아웃**: 사용자 목록(이름·이메일·역할·소속·상태·2FA·최근접속) + 필터/검색 + 사용자 폼(역할 배정·상태·OTP 초기화). 6역할+등록업체+관람객 계정. PII 마스킹·감사. 상태: 로딩·빈·에러. +- **Stitch 프롬프트**: +``` +A user management admin screen for "KINTEX AI 전시관리" back-office, Korean B2B tool, desktop 1440px, light theme, blue #0066B3, 1px borders #E4E7EC, Korean sans-serif. All UI text in Korean. Left admin sidebar 240px ("사용자 관리" highlighted). Top utility bar with a tenant switcher "KINTEX ▾" and a search box. Main: a users data table with columns 이름, 이메일, 역할, 소속, 상태, 2FA, 최근접속 — role badges (주최자/참가/장치/홀매니저/관리자), status pills (활성/잠금/비활성), a "2FA 설정됨" check, zebra rows, sticky header, and a right-side user detail/edit panel with role assignment, status toggle, and an "OTP 초기화" button. Enterprise admin aesthetic with masked emails. +``` + +### SCR-A2 역할·권한(RBAC) 관리 +- **레이아웃**: 좌측 역할 트리(플랫폼/테넌트/행사 계층) + 우측 권한 매트릭스(메뉴·기능 × 허용 체크). 플랫폼 vs 테넌트 계층 구분. 상태: 저장·검증. +- **Stitch 프롬프트**: +``` +A role & permission (RBAC) management admin screen for "KINTEX AI 전시관리", Korean B2B back-office, desktop 1440px, light theme, blue #0066B3. All UI text in Korean. Left admin sidebar ("역할/권한" highlighted). Layout: a left role tree grouped by tier "플랫폼 · 테넌트 · 행사" with roles like "플랫폼 슈퍼관리자, 테넌트 관리자, 주최자, 참가업체, 장치업체, 홀매니저", and a right permission matrix table with menu/feature rows and allow checkboxes (조회/생성/수정/삭제/승인 columns), a save button. Structured access-control aesthetic. +``` + +### SCR-A3 공통코드 관리 +- **레이아웃**: 코드 그룹 목록 + 코드 상세(홀·부스유형·공종 14분류·유틸리티 요금코드). 전역 vs 테넌트 오버라이드 표기(§1A-2). 상태: 로딩·빈. +- **Stitch 프롬프트**: +``` +A common-code management admin screen for "KINTEX AI 전시관리", Korean B2B back-office, desktop 1440px, light theme, blue #0066B3. All UI text in Korean. Left admin sidebar ("공통코드" highlighted). Split: left a code-group list "홀 · 부스유형 · 공종(14분류) · 유틸리티 요금코드 · 상태", right a code-detail table (코드, 명칭, 정렬, 사용여부) with add/edit rows and a badge distinguishing "전역" vs "테넌트 재정의". Master-data admin aesthetic. +``` + +### SCR-A4 메뉴 관리 +- **레이아웃**: 메뉴 트리(드래그 재정렬) + 메뉴 속성(역할별 포털 IA §2-1 매핑·권한). 상태: 저장. +- **Stitch 프롬프트**: +``` +A menu management admin screen for "KINTEX AI 전시관리", Korean B2B back-office, desktop 1440px, light theme, blue #0066B3. All UI text in Korean. Left admin sidebar ("메뉴 관리" highlighted). Layout: a left draggable menu tree (nested items with drag handles and show/hide toggles), a right menu-property form (메뉴명, 경로, 아이콘, 역할별 노출 checkboxes for 주최자/참가/장치/홀매니저/관리자, 정렬). Tree-editor admin aesthetic. +``` + +### SCR-A5 감사로그 +- **레이아웃**: 필터(사용자·액션·기간·테넌트) + 로그 테이블(시각·사용자·액션·대상·IP·결과). 승인·낙찰·설계변경·룰셋개정·리드 접근 전수. 내보내기. 상태: 로딩·빈. +- **Stitch 프롬프트**: +``` +An audit log admin screen for "KINTEX AI 전시관리", Korean B2B back-office, desktop 1440px, light theme, blue #0066B3, Korean sans-serif. All UI text in Korean. Left admin sidebar ("감사로그" highlighted). Top: filters (사용자, 액션 유형, 기간, 테넌트) and an "CSV 내보내기" button. Main: a dense audit table with columns 시각, 사용자, 액션, 대상, IP, 결과 — rows like "2026-08-01 14:22 · 최매니저 · 낙찰(Award) · 옥션 #A-102 · 성공", monospace timestamps, zebra rows, sticky header. Forensic/compliance aesthetic, high density. +``` + +### SCR-A6 시스템설정 +- **레이아웃**: 설정 그룹(요율/규정 룰셋 버전·AI 게이트·마감 정책 D-25/D-7·알림·보안) 폼. 상태: 저장·검증. +- **Stitch 프롬프트**: +``` +A system settings admin screen for "KINTEX AI 전시관리", Korean B2B back-office, desktop 1440px, light theme, blue #0066B3. All UI text in Korean. Left admin sidebar ("시스템설정" highlighted). Main: grouped setting cards — "마감 정책" (유틸리티 D-25, 신고서류 D-7 numeric fields), "AI 플랫폼 게이트" (모델 라우터 상태 toggles), "알림" (이메일/WebSocket toggles), "보안" (로그인 실패 잠금 횟수, 세션 만료). Each group has a save button. Clean settings-form aesthetic. +``` + +### SCR-A7 마스터데이터 관리 (홀·요율·요금·부스표준·등록업체) +- **레이아웃**: 좌측 데이터셋 탭(홀 마스터·요율표·유틸리티 요금·부스 표준·등록업체 DB) + 우측 CRUD 테이블/폼. 킨텍스 실측=테넌트#1 시드. 트렌치 좌표·CAD 업로드(미확보 표기). 상태: 로딩·빈·에러. +- **Stitch 프롬프트**: +``` +A master-data management admin screen for "KINTEX AI 전시관리", Korean B2B back-office, desktop 1440px, light theme, blue #0066B3. All UI text in Korean. Left admin sidebar ("마스터데이터" highlighted). Split: left dataset tabs "홀 마스터 · 요율표 · 유틸리티 요금 · 부스 표준 · 등록업체 DB", right a CRUD table for the 홀 마스터 tab with columns 홀, 면적(㎡), 규격, 바닥하중, 부스수 — rows "홀7 · 11,290㎡ · 126×90×12m · 5t/㎡ · 510" with edit buttons, plus a "트렌치 좌표 CAD 업로드" area labeled "미확보 · 킨텍스 협의". Structured data-admin aesthetic with tabular numbers. +``` + +### SCR-A8 규정 룰셋 버전 관리 +- **레이아웃**: 룰셋 버전 이력(v1.0·v1.1…) + 룰 항목(높이 5m·리깅 6.5~8.5m·복층·방염·소음·이격) 편집 + diff 뷰. 발효일·승인. 상태: 저장·버전 비교. +- **Stitch 프롬프트**: +``` +A regulation ruleset version management admin screen for "KINTEX AI 전시관리", Korean B2B back-office, desktop 1440px, light theme, blue #0066B3, Korean sans-serif. All UI text in Korean. Left admin sidebar ("규정 룰셋" highlighted). Split: left a version history list "v1.2 (발효 2026-01-01) · v1.1 · v1.0", right a rules editor listing rule rows "장치물 높이 ≤ 5m", "리깅 6.5–8.5m + 구조계산서 D-7", "복층 ≤ 1/2", "방염 필수", "소음 70–75dB", "이격 벽 30cm·천장 60cm" with editable values and severity (차단/경고), plus a "버전 비교(diff)" button showing changed rules highlighted. Governance/versioning aesthetic. +``` + +### SCR-A9 테넌트(전시관) 관리·온보딩 [§1A · 플랫폼 슈퍼관리자 전용] +- **레이아웃**: 테넌트 목록(KINTEX·COEX…: 코드·도메인·활성·행사수·사용자수) + 온보딩 위저드(코드·서브도메인·브랜딩·마스터데이터·관리자 계정·격리 스모크→active). 크로스-테넌트 접근 감사. 상태: 온보딩 단계·검증. +- **Stitch 프롬프트**: +``` +A tenant (venue) management and onboarding admin screen for a multi-tenant exhibition SaaS "KINTEX AI 전시관리", Korean B2B back-office, desktop 1440px, light theme, blue #0066B3. All UI text in Korean. Left admin sidebar ("테넌트 관리" highlighted, super-admin only). Main: a tenants table with columns 전시관, 코드, 도메인, 상태, 행사수, 사용자수 — rows "킨텍스 · KINTEX · kintex.wise.ai.kr · 활성 · 24 · 1,280", "코엑스 · COEX · coex.wise.ai.kr · 온보딩중"; a right "전시관 온보딩" wizard panel with steps "테넌트 생성 → 서브도메인 → 브랜딩 → 마스터데이터 입력 → 관리자 계정 → 격리 스모크 → 활성화", each step with a checkmark or current highlight, and a note "코드 배포 없이 데이터 온보딩". Platform-admin, multi-tenant aesthetic. +``` + +### SCR-A10 AI 플랫폼 설정 (AiConfig) [§6 · F100] +- **레이아웃**: 모델 라우터 설정(텍스트: Claude 기본→Ollama 폴백 / 이미지: 나노바나나 Gemini), 온도·top_k·RAG 토글, 나노바나나 쿼터·비용 상한(테넌트별), 상태 헬스(모델 가용). 시크릿은 env only(미표시). 상태: 저장·헬스체크. 참조: UIWS `system/aiConfig/AiConfigPage`. +- **Stitch 프롬프트**: +``` +An AI platform configuration admin screen (AiConfig) for "KINTEX AI 전시관리", Korean B2B back-office, desktop 1440px, light theme, blue #0066B3, purple #6D4AFF for AI. All UI text in Korean. Left admin sidebar ("AI 플랫폼 설정" highlighted). Main: a "텍스트/추론" card with a model router "기본: Claude → 폴백: Ollama" with health dots, sliders "temperature · top_k", and a "근거 검증(RAG)" toggle; an "이미지(시공 예상)" card showing "나노바나나 (Gemini gemini-3.1-flash-image-preview)" with a per-tenant "생성 쿼터" and "비용 상한" field; a note "API 키는 서버 env로만 관리(표시 안 함)". No secret values shown. Config-panel aesthetic with health indicators. +``` + +--- + +## 3B. 공개 홍보 사이트 화면 (SCR-P*) — M12 · M17 · MDI 비적용 + +> **공개 사이트 `www/expo.`** — SEO·다국어(한/영/중/일)·딥링크·공유 목적. **MDI 비적용, 전통 페이지 내비(헤더 GNB)**, SSR/정적 생성·CDN. 인증 앱과 별도 렌더 경로. 브랜딩은 테넌트 서브도메인 분기(§1A-3). 디자인은 §1 톤을 공개용으로 확장(넓은 히어로·마케팅 밀도), 라이트 테마. + +### SCR-P1 공개 홍보 사이트 홈 +- **레이아웃**: 헤더 GNB(행사·참가안내·관람안내·교통·언어) + 히어로(나노바나나 전경 이미지·AI 고지·사전등록 CTA) + 진행/예정 행사 카드 그리드 + 킨텍스 소개·교통(GTX-A 킨텍스역) + 푸터. 상태: 로딩·빈. +- **Stitch 프롬프트**: +``` +A public marketing website home page for "KINTEX 전시" exhibition center, Korean, desktop 1440px, light theme, primary blue #0066B3, clean modern marketing design (not MDI). All UI text in Korean. Top header GNB "행사 · 참가안내 · 관람안내 · 교통 · 🌐 언어" with a KINTEX logo. Full-width hero with a photorealistic exhibition hall render (faint watermark "AI 생성 예상 이미지"), a large headline "세계로 통하는 전시, 킨텍스", and a primary CTA "관람 사전등록". Below: a grid of event cards (poster, title, dates, hall, "사전등록" button) for "진행중 · 예정" events, a "오시는 길 · GTX-A 킨텍스역 도보 3분" transport section with a map, and a footer. SEO-friendly, spacious, multilingual public site aesthetic. +``` + +### SCR-P2 행사 상세 (소개·일정·교통·연사) +- **레이아웃**: 행사 히어로(배너·기간·홀) + 탭(소개·프로그램/세션·연사·참가업체·교통·FAQ) + 사전등록 고정 CTA. 다국어·공유. 상태: 로딩·빈. +- **Stitch 프롬프트**: +``` +A public event detail page for an exhibition, Korean marketing website, desktop 1440px, light theme, blue #0066B3. All UI text in Korean. A hero banner with event title "스마트팩토리 코리아 2026", dates "2026.09.05–09.08", venue "킨텍스 제2전시장 홀7", and a sticky "사전등록" CTA. Below, a tab bar "소개 · 프로그램 · 연사 · 참가업체 · 교통 · FAQ" with the 소개 tab showing rich content sections, a session agenda timeline, and speaker cards with photos. Share buttons and language selector. Attractive public event-page aesthetic. +``` + +### SCR-P3 공개 인터랙티브 플로어플랜 +- **레이아웃**: 대형 인터랙티브 홀 맵(부스 클릭→업체 정보 팝오버·마이크로사이트 링크), 검색·필터(업종·존), 범례. 관람객 부스 탐색·부스 셀프선택(SCR-20) 진입. 비시각 대안=부스 목록(N1). 상태: 로딩·빈. +- **Stitch 프롬프트**: +``` +A public interactive floor plan page for exhibition visitors, Korean marketing website, desktop 1440px, light theme, blue #0066B3. All UI text in Korean. A large interactive top-down hall map with clickable booth rectangles; clicking a booth shows a popover with company name, category, and a "부스 상세" link. A left search/filter panel "업종 · 존 · 키워드" and a booth results list (accessible non-visual alternative), plus a legend "판매 · 예약 · 공용부". Modern, explorable venue-map aesthetic. +``` + +### SCR-P4 관람객 사전등록 폼 +- **레이아웃**: 다단계 폼(유형 관람객/바이어·정보·관심분야·약관/개인정보 동의·완료→모바일 배지 안내). AI 폼(주최자 구성). 상태: 검증·중복·완료. 개인정보 동의 필수. +- **Stitch 프롬프트**: +``` +A public visitor pre-registration form page for an exhibition, Korean marketing website, desktop 1440px, light theme, blue #0066B3, on white. All UI text in Korean. A centered multi-step form with a progress indicator "유형 → 정보 → 관심분야 → 완료". Step shows visitor-type cards "관람객 / 바이어 / VIP", then fields 이름, 이메일, 연락처, 소속, 관심 분야 chips, and consent checkboxes "개인정보 수집·이용 동의(필수) · 마케팅 수신 동의(선택)", and a primary "등록하기" button; completion screen shows a QR badge preview and "모바일 배지가 발급되었습니다". Friendly, trustworthy registration aesthetic. +``` + +### SCR-P5 참가업체 마이크로사이트 공개 뷰 +- **레이아웃**: 업체 브랜드 히어로 + 제품 + 나노바나나 예상샷 갤러리(워터마크) + 부스 위치(플로어플랜 딥링크) + 미팅 예약 CTA(M11). SEO·다국어. 상태: 로딩·빈. +- **Stitch 프롬프트**: +``` +A public exhibitor microsite page, Korean marketing website, desktop 1440px, light theme, blue #0066B3. All UI text in Korean. A branded hero with company name "(주)한빛로보틱스" and tagline, a product showcase grid, an AI-render booth photo gallery with faint watermark "AI 생성 예상 이미지", a "부스 위치 · A-102 홀7" card linking to the floor plan, and a "미팅 예약" CTA. Clean company-microsite aesthetic, multilingual. +``` + +### SCR-P6 참가/부스 신청 문의 +- **레이아웃**: 참가 안내(부스 유형·요금 개요) + 문의 폼(회사·담당·규모·희망 홀·메시지) + 담당 연락처. 셀프서비스→로그인 유도. 상태: 검증·전송 완료. +- **Stitch 프롬프트**: +``` +A public "exhibit with us" inquiry page for an exhibition center, Korean marketing website, desktop 1440px, light theme, blue #0066B3. All UI text in Korean. Top: a "참가 안내" section with booth-type cards (조립부스 / 독립부스 / 프리미엄) and a rate overview. Below: an inquiry form with fields 회사명, 담당자, 연락처, 예상 규모, 희망 홀, 문의 내용, and a "문의 보내기" button, plus a contact info block and a link "이미 계정이 있으신가요? 로그인". Lead-generation marketing aesthetic. +``` + +### SCR-P7 입장권 예매 (티켓팅) +- **대상**: 일반 대중·관람객(비로그인 게스트 + 회원) · **모듈**: M10(티켓) · 결제=M9 연계 · **라우트**: `/tickets/:eventId/purchase` (공개, MDI 비적용·SEO) +- **레이아웃**(위→아래, 중앙 정렬 스텝 폼 720px): + 1. 상단: 행사 요약 배너(포스터·행사명·기간·홀) + 스텝 진행 인디케이터 "행사·권종 → 예매자 → 결제 → 완료" (StatusBadge 진행 톤 재사용, pill 스텝) + 2. **1단계 권종 선택**: 티켓 종류 카드 리스트 — 일반(₩0 사전등록/현장 유료) · 바이어(무료·자격심사) · 단체(10매↑ 할인) · VIP. 각 카드 = 권종명·설명·가격(tabular numerals)·수량 스테퍼(−/+). 소계·할인·합계 실시간 요약(우측 sticky 요약 카드). 회원이면 로그인 배너 "로그인하면 예매 내역이 자동 저장됩니다" + 3. **2단계 예매자 정보**: 게스트=이름·이메일·연락처(마스킹 저장), 회원=자동 채움. 단체는 대표자+동반자 명단(CSV 업로드 옵션). 관심분야 chips(선택). 개인정보 수집·이용 동의(필수)·마케팅 수신(선택) 체크 + 4. **3단계 결제**: 결제수단 선택(카드·간편결제·계좌이체) — **PG(결제대행) 위임 안내 문구 상시 노출**("결제는 PG사 보안 페이지에서 진행되며, 카드정보는 본 사이트에 저장되지 않습니다"). **카드번호 입력 UI 없음**(PG 리다이렉트/모듈 자리표시 카드). 무료 권종은 결제 단계 자동 스킵 + 5. **4단계 완료**: 예매번호(굵게)·발급 티켓 QR 미리보기·"이메일로 티켓을 보냈습니다" + CTA "모바일 티켓 지갑 열기"(SCR-M15 딥링크)·"예매 확인/취소"(SCR-P8) +- **상태**: 로딩(권종·재고 조회 스켈레톤) · 빈(판매 티켓 없음 "현재 예매 가능한 입장권이 없습니다") · 에러(재고 소진 시 해당 권종 "매진" 배지+비활성, 결제 실패 인라인 재시도) · degraded(PG 어댑터 미연결 시 "결제 준비 중 — 잠시 후 다시 시도" 안내, 무료 권종은 정상). 정원/재고는 서버 권위. +- **데이터 원천**: M10 티켓·권종·재고 + M9 결제 어댑터(PG) → 신규·샘플 시연. 개인정보 마스킹·WCAG AA·라이트/다크 토큰 준수, 신규 토큰 없음. +- **Stitch 프롬프트**: +``` +A public ticket purchase (ticketing) page for an exhibition, Korean marketing website, desktop 1440px, light theme, primary blue #0066B3, on white, form container ~720px centered. All UI text in Korean. Top: an event summary banner (poster thumbnail, title "스마트팩토리 코리아 2026", dates "2026.09.05–09.08", venue "제2전시장 홀7") and a pill step indicator "행사·권종 → 예매자 → 결제 → 완료" with step 1 active. Left main column shows ticket-type selection cards — "일반권 ₩0(사전등록)", "바이어권 무료·자격심사", "단체권 10매↑ 10% 할인 ₩9,000", "VIP권 ₩50,000" — each card with name, short description, price in tabular numerals, and a quantity stepper (− / value / +); one type shows a red "매진" badge and disabled state. A right sticky summary card lists selected tickets, 소계, 할인, and a bold 합계 with a primary button "다음 단계". Include a subtle blue login banner "로그인하면 예매 내역이 자동 저장됩니다". Below reference the later steps: a payment step must show method chips "카드 · 간편결제 · 계좌이체" and a persistent gray notice "결제는 PG사 보안 페이지에서 진행되며, 카드정보는 본 사이트에 저장되지 않습니다" (NO card number input fields). Trustworthy, conversion-focused e-commerce checkout aesthetic; rounded 8px cards, 4px inputs, WCAG AA contrast. +``` + +### SCR-P8 예매 확인·취소 +- **대상**: 일반 대중·관람객(비로그인 게스트 조회 + 회원) · **모듈**: M10(티켓) · 환불=M9 연계 · **라우트**: `/tickets/lookup` · `/tickets/:orderNo` (공개) +- **레이아웃**(위→아래): + 1. 상단: "예매 확인·취소" 타이틀 + 조회 폼 — 예매번호 + 이메일(게스트) 또는 "로그인하여 내 예매 보기"(회원). 인증 후 조회 + 2. **예매 상세 카드**: 행사·예매번호·예매일·결제금액(tabular)·상태 배지(예매완료/사용됨/취소/환불완료). 티켓 리스트(권종·수량·매수별 QR 썸네일→탭 시 확대). 예매자 정보(이메일·연락처 **마스킹** 표시 jo***@ex***.com, 010-****-1234) + 3. **취소·환불 정책 패널**: 환불 규정 표(D-7 100% · D-3 50% · 당일 0% 등, 서버 권위) + 현재 예상 환불액 하이라이트 + 안내 문구. CTA "예매 취소" (사용됨/기간 경과 시 비활성) + 4. 취소 확인 모달: 환불 정책 재고지·환불 수단(원결제수단 자동)·"취소하기"(error 톤) — PG 환불도 어댑터 위임 명시 +- **상태**: 로딩(조회 스켈레톤) · 빈/미일치("일치하는 예매를 찾을 수 없습니다 — 예매번호·이메일 확인") · 에러(취소 마감·이미 사용·PG 환불 실패 인라인) · degraded(PG 환불 어댑터 미연결 시 "환불 접수됨 — 처리까지 영업일 소요" 안내). 취소 가능 여부·환불액은 서버 권위. +- **데이터 원천**: M10 예매·티켓 + M9 환불 어댑터 → 신규·샘플. PII 마스킹 필수·WCAG AA·라이트/다크 준수, 신규 토큰 없음. +- **Stitch 프롬프트**: +``` +A public "check & cancel my ticket booking" page for an exhibition, Korean marketing website, desktop 1440px, light theme, primary blue #0066B3, error red #D92D20, on white. All UI text in Korean. Top: title "예매 확인 · 취소" with a lookup form — inputs "예매번호" and "이메일", a primary "조회하기" button, and a secondary link "로그인하여 내 예매 보기". Below (results state): a booking detail card showing event title, 예매번호 "KTX-2026-018245", 예매일, 결제금액 in tabular numerals, and a green status badge "예매완료"; a ticket list with rows (권종, 수량) each showing a small QR thumbnail; a booker info block with MASKED contact "jo***@ex***.com · 010-****-1234". A right/lower panel "취소·환불 정책" shows a refund table (D-7 100%, D-3 50%, 당일 0%) with the current 예상 환불액 highlighted, and a red outline button "예매 취소" that opens a confirmation modal restating the policy and refund method. Note "환불은 PG사를 통해 원결제수단으로 처리됩니다". Clean, reassuring self-service booking-management aesthetic; 8px cards, WCAG AA. +``` + +--- + ## 4. 모바일 대응 (390px) 모바일은 **조회·승인·현장** 시나리오 전용(PLANNING.md §8). 캔버스 편집(SCR-03, 07)과 스펙 편집(SCR-06 좌패널)은 모바일 미제공 — 뷰어+승인 액션만. 아래 두 화면은 **모바일 전용 신규 화면**, 나머지는 반응형 축소. @@ -654,9 +1447,166 @@ A mobile field inspection screen for a KINTEX hall manager verifying booth const --- +### SCR-M3 [모바일] 홈·대시보드 (역할별 진입) + +- **대상**: 전 역할(로그인 후 역할 분기) · **P1** · **진입 경로**: 모바일 로그인 → 하단 탭 "홈" · **상태**: ✅구현(부분, `mobile/app/(tabs)/index.tsx`) +- **레이아웃**: 상단 행사 스위처 + 역할 배지 · 오늘 할 일/마감 D-데이 카드 · 역할별 바로가기(참가=내 부스·유틸리티 / 장치=현장 체크리스트·옥션 / 홀매니저=승인 큐·검수 / 관람객=배지·플로어플랜) · 알림 요약 · 하단 탭 4개(홈/현장·업무/알림/더보기). 상태: 로딩 스켈레톤·오프라인 배지·빈. +- **Stitch 프롬프트**: +``` +A mobile home dashboard for "KINTEX AI 전시관리", 390px width, light theme, blue #0066B3, large touch targets, Korean sans-serif. All UI text in Korean. Top: an event switcher "스마트팩토리 코리아 ▾" and a role badge "홀매니저". Body: a "오늘 할 일" section with D-day task cards, a role-specific shortcut grid of large tiles ("승인 큐 · 현장 검수 · 홀 부하 · 알림"), and a compact notification summary list. Bottom navigation bar with 4 tabs "홈 · 현장 · 알림 · 더보기". Clean, glanceable mobile dashboard with big tap areas. +``` + +--- + +### SCR-M4 [모바일] 참가업체 리드캡처 (배지 스캔) + +- **대상**: 참가업체 현장 인력 · **모듈/P**: M10 · P1 · **진입 경로**: 모바일 "현장" → "리드 스캔" +- **레이아웃**: 대형 QR 스캔 카메라 프레임 + 스캔 성공 시 관람객 카드(이름·소속·유형) · 관심도 별점·태그·메모(음성 입력) · 저장→리드 목록. 오프라인 저장·동기화. 개인정보 동의 표기. 상태: 스캔 실패·중복·오프라인. +- **Stitch 프롬프트**: +``` +A mobile lead capture (badge scan) screen for an exhibitor, 390px width, light theme, blue #0066B3, large touch targets. All UI text in Korean. Top: a full-width QR scanner camera frame with guide "관람객 배지 QR을 스캔하세요". On scan, a visitor card slides up: name "정관람", company "(주)미래기술", type chip "바이어", a 5-star "관심도" rating, interest tag chips, and a memo field with a mic icon "음성 메모". A primary "리드 저장" button, an offline badge "오프라인 저장 · 동기화 대기", and a small consent note "개인정보 수집 동의 확인". Fast field-sales mobile aesthetic. +``` + +--- + +### SCR-M5 [모바일] 관람객 앱 홈 · 모바일 배지/QR + +- **대상**: 관람객 · **모듈/P**: M10 · P1 · **진입 경로**: 관람객 앱 로그인/사전등록 완료 +- **레이아웃**: 상단 내 모바일 배지(QR·이름·유형, 밝기 최대 안내) · 오늘 일정·추천 세션(M11) · 부스 즐겨찾기 · 하단 탭(홈/지도/매칭/마이). 오프라인 배지 캐시. 상태: 미등록·로딩. +- **Stitch 프롬프트**: +``` +A visitor app home screen with a mobile badge/QR for an exhibition, 390px width, light theme, blue #0066B3, friendly consumer tone. All UI text in Korean. Top: a personal mobile badge card showing a large QR code, name "정관람", type "바이어", and a hint "체크인 시 화면을 보여주세요". Below: "오늘 일정" cards, an "추천 세션·부스" carousel with a small purple "AI 추천" chip, and a "즐겨찾기 부스" list. Bottom tab bar "홈 · 지도 · 매칭 · 마이". Clean consumer event-app aesthetic. +``` + +--- + +### SCR-M6 [모바일] 관람객 wayfinding · 실내 지도 + +- **대상**: 관람객 · **모듈/P**: M13 · P2 · **진입 경로**: 관람객 앱 "지도" +- **레이아웃**: 전체 화면 실내 지도(블루닷 현재위치·경로 라인) + 상단 검색(부스·화장실·비상구·시설) + 하단 시트(목적지 정보·경로 시작). 존레벨 폴백(하드웨어 무의존). 상태: 측위 불가 시 존레벨 안내·오프라인. +- **Stitch 프롬프트**: +``` +A mobile indoor wayfinding / map screen for exhibition visitors, 390px width, light theme, blue #0066B3. All UI text in Korean. Full-screen indoor map of an exhibition hall with a blue-dot current-location marker and a highlighted route line to a destination; a top search bar "부스 · 화장실 · 비상구 · 시설 검색"; a bottom sheet showing destination info "A-102 · 한빛로보틱스 · 도보 3분" and a "경로 시작" button; a small note "존 레벨 안내(정밀 측위 미지원 시)". Clear navigation aesthetic. +``` + +--- + +### SCR-M7 [모바일] 관람객 플로어플랜 · 부스 검색 + +- **대상**: 관람객 · **모듈/P**: M12·M2 · P1 · **진입 경로**: 관람객 앱 "지도" 탭 내 플로어플랜 / 공개사이트 SCR-P3 모바일 +- **레이아웃**: 인터랙티브 홀 맵(부스 탭→하단 시트 업체정보·마이크로사이트·길안내) + 검색·필터(업종·존) + 즐겨찾기 추가. 비시각 대안 목록. 상태: 로딩·빈. +- **Stitch 프롬프트**: +``` +A mobile interactive floor plan / booth search screen for exhibition visitors, 390px width, light theme, blue #0066B3. All UI text in Korean. An interactive hall map filling the screen with tappable booth cells; a top search bar and filter chips "업종 · 존"; tapping a booth opens a bottom sheet with company name, category, a "마이크로사이트" link, a "길안내" button, and an "즐겨찾기 ★" toggle. Below the map a toggle to a list view (accessible alternative). Explorable consumer map aesthetic. +``` + +--- + +### SCR-M8 [모바일] 비즈매칭 · 미팅 + +- **대상**: 관람객·참가업체(바이어 매칭) · **모듈/P**: M11 · P2 · **진입 경로**: 관람객 앱 "매칭" +- **레이아웃**: AI 추천 매치 카드 스택(프로필·관심·의향, 관심/패스 액션) + 미팅 요청·슬롯 예약 캘린더 + 내 미팅 목록(부스 위치·길안내 연계). AiLabel. 상태: 추천 없음·로딩. +- **Stitch 프롬프트**: +``` +A mobile business matchmaking / meeting screen for an exhibition, 390px width, light theme, blue #0066B3, purple #6D4AFF for AI. All UI text in Korean. Top: a stack of AI-recommended match cards, each showing a person/company profile, interests, a small purple "AI 매칭 92%" chip, and "관심 / 패스" buttons. Below: a "미팅 예약" time-slot calendar and a "내 미팅" list with time, counterpart, booth location and a "길안내" link. Networking-app aesthetic with AI matching. +``` + +--- + +### SCR-M9 [모바일] 세션·아젠다 · 개인 일정 + +- **대상**: 관람객 · **모듈/P**: M11(이벤트앱) · P2 · **진입 경로**: 관람객 앱 "일정" +- **레이아웃**: 세션 아젠다(트랙·시간·연사, 즐겨찾기→내 일정) + AI 세션 추천(AiLabel) + 내 개인 일정 타임라인 + 리마인더. 상태: 빈·로딩. +- **Stitch 프롬프트**: +``` +A mobile session agenda / personal schedule screen for an exhibition app, 390px width, light theme, blue #0066B3, purple #6D4AFF for AI. All UI text in Korean. Top: a track/time agenda list with session cards (시간, 세션명, 연사, 트랙 tag) and a "★" add-to-schedule toggle; a small purple "AI 추천 세션" section. A tab toggle "전체 아젠다 / 내 일정" where 내 일정 shows a personal timeline with reminders. Clean event-agenda aesthetic. +``` + +--- + +### SCR-M10 [모바일] 업체 반입 통행증 · 안전 체크 + +- **대상**: 장치·공사업체 현장 인력 · **모듈/P**: M8 · P2 · **진입 경로**: 업체 모바일 "반입" (SCR-25 예약 후) +- **레이아웃**: 통행증 QR(차량·슬롯·유효시간) 전체화면 표시 + 반입 안전 체크리스트(안전모·중량물 표기·금지작업) + 슬롯 시간 안내·현장 지도 링크. 오프라인 캐시. 상태: 슬롯 임박 알림·만료. +- **Stitch 프롬프트**: +``` +A mobile move-in gate pass and safety check screen for a construction crew, 390px width, light theme, blue #0066B3, large touch targets. All UI text in Korean. Top: a large gate-pass card with a QR code, vehicle number "12가3456", assigned dock "도크3", and validity "08:00–09:00 · D-2 장치". Below: a safety checklist with big checkboxes "안전모 착용 · 중량물 5t↑ 신고 · 금지작업 확인(전기톱·용접·페인트)", a "슬롯 시간 D-0 09:00" reminder, and a "현장 지도" link. Rugged field-ops mobile aesthetic. +``` + +--- + +### SCR-M11 [모바일] 알림센터 + +- **대상**: 전 역할 · **모듈/P**: §5B notification · P1 · **진입 경로**: 하단 탭 "알림" +- **레이아웃**: 알림 리스트(마감·낙찰·승인·결제·시스템, 아이콘·시간·안읽음) · 탭 시 해당 화면 딥링크 · 상단 필터·모두 읽음. WebSocket. 상태: 빈("새 알림 없음")·로딩·오프라인. +- **Stitch 프롬프트**: +``` +A mobile notification center for "KINTEX AI 전시관리", 390px width, light theme, blue #0066B3, large touch targets. All UI text in Korean. Top: filter chips "전체 · 마감 · 낙찰 · 승인 · 결제" and a "모두 읽음" action. Body: a chronological notification list, each row with a category icon, title, short description, timestamp, and an unread blue dot; tapping opens the related screen. Empty state "새 알림이 없습니다". Clean mobile inbox aesthetic. +``` + +--- + +### SCR-M12 [모바일] 서류·승인 조회 + +- **대상**: 주최자·홀매니저(조회·승인) · **모듈/P**: M6 · P1 · **진입 경로**: 모바일 "업무" → "서류/승인" +- **레이아웃**: 서류·승인 항목 카드 리스트(유형·제출자·상태 배지·마감 D-데이) + 상세(문서 뷰어·AI 검수 요약) + 승인/반려 액션(오조작 방지: 상세 진입 필수). 상태: 빈·로딩·오프라인 읽기전용. +- **Stitch 프롬프트**: +``` +A mobile document/approval review screen for an organizer or hall manager, 390px width, light theme, blue #0066B3, purple #6D4AFF for AI. All UI text in Korean. Top: a card list of documents/approvals, each with type "신고서류 · 부스배치도", submitter, a status pill, and a D-day chip. Tapping opens a detail view with a document viewer, a purple "AI 검수 요약" card listing issues, and bottom action buttons "승인" (green) / "반려" (red). No swipe-approve (must open detail). Careful, review-focused mobile aesthetic. +``` + +--- + +### SCR-M13 [모바일] 옥션 순위 조회 + +- **대상**: 장치업체·참가업체(발주자) · **모듈/P**: M15 · P1 · **진입 경로**: 모바일 "업무" → "옥션" +- **레이아웃**: 참여 옥션 카드(공종·마감 카운트다운·내 순위·최저가) + 실시간 순위 리스트(WebSocket) + 알림. 응찰(견적서 작성)은 웹(SCR-28) 유도 — 모바일은 조회·순위·마감 알림 중심. 상태: 마감됨·오프라인·로딩. +- **Stitch 프롬프트**: +``` +A mobile auction ranking monitor for a contractor, 390px width, light theme, blue #0066B3, purple #6D4AFF. All UI text in Korean. Top: participating auction cards with category, a countdown "마감 01:24:36", my rank "2위", and current lowest "₩8.4M". Below: a live ranking list "1위 업체 A · 2위 나 · 3위 업체 C" with the user's row highlighted, and a note "견적서 작성·재응찰은 웹에서 진행하세요". Real-time monitoring mobile aesthetic. +``` + +--- + +### SCR-M14 [모바일] 티켓 예매 + +- **대상**: 일반 대중·관람객(게스트+회원) · **모듈/P**: M10(티켓)·결제 M9 연계 · P1 · **진입 경로**: 관람객 앱/공개사이트 모바일 "입장권 예매" · SCR-P7의 모바일 최적화 +- **레이아웃**(1열 스택, 48px 터치·하단 고정 CTA): + 1. 상단: 행사 요약 칩 + 스텝 인디케이터(권종→예매자→결제→완료) 축약(단계 점) + 2. 권종 선택: 티켓 종류 카드 세로 스택(권종명·가격·수량 스테퍼 48px). 하단 고정 요약 바 "합계 ₩9,000 · 다음" + 3. 예매자 정보: 큰 입력 필드(게스트 이름·이메일·연락처 / 회원 자동채움), 동의 체크(필수·선택) + 4. 결제: 결제수단 시트(카드·간편결제) + **PG 위임 안내 상시**("카드정보는 저장되지 않습니다"), 카드번호 입력 UI 없음. 무료 권종은 스킵 + 5. 완료: 예매번호·QR·"티켓 지갑에 저장됨" + CTA "내 티켓 지갑"(SCR-M15) +- **상태**: 로딩 스켈레톤 · 매진 권종 비활성+"매진" · 결제 실패 인라인 재시도 · degraded(PG 미연결 안내, 무료 권종 정상) · 오프라인 배지. 재고/정원 서버 권위. +- **데이터 원천**: M10 티켓·재고 + M9 결제 어댑터 → 신규·샘플. PII 마스킹·WCAG AA·라이트/다크, 신규 토큰 없음. +- **Stitch 프롬프트**: +``` +A mobile ticket purchase flow screen for an exhibition, 390px width, light theme, primary blue #0066B3, large 48px touch targets, Korean consumer tone. All UI text in Korean. Top: an event summary chip "스마트팩토리 코리아 2026 · 홀7" and a compact dot step indicator "권종 · 예매자 · 결제 · 완료". Body: a vertical stack of ticket-type cards — "일반권 ₩0", "바이어권 무료", "단체권 ₩9,000", "VIP권 ₩50,000" — each with name, price in tabular numerals, and a big quantity stepper (− / 1 / +); one card shows a "매진" badge disabled. A sticky bottom summary bar shows bold "합계 ₩9,000" and a full-width primary button "다음". Include a later payment step reference: method chips "카드 · 간편결제" and a persistent notice "결제는 PG사 보안 페이지에서 진행되며 카드정보는 저장되지 않습니다" with NO card number fields. Clean mobile checkout aesthetic, 8px cards, WCAG AA. +``` + +--- + +### SCR-M15 [모바일] 내 티켓 지갑 + +- **대상**: 일반 대중·관람객 · **모듈/P**: M10(티켓)·환불 M9 연계 · P1 · **진입 경로**: 관람객 앱 "마이" → "내 티켓" / 예매 완료(SCR-P7·M14) 딥링크 +- **레이아웃**(1열 스택): + 1. 상단: "내 티켓" 타이틀 + 행사 필터 탭(진행중·예정·지난) + 2. **티켓 카드 리스트**: 각 카드 = 행사명·권종·매수·상태 배지(사용가능/사용됨/취소) + 미니 QR + "입장 QR 보기" 버튼 + 3. **QR 풀스크린 뷰어**(카드 탭): 대형 QR 중앙 · 이름·유형 · **화면 밝기 부스트 안내("입장 시 화면을 최대 밝기로")** + 자동 밝기 상승 · 하단 스와이프로 다른 티켓 전환 · 예매번호(마스킹 부분 노출) + 4. 각 티켓 하단: "예매 상세·취소"(SCR-P8 진입) · 취소/환불 정책 링크 + 5. **배지 전환 안내 배너**: "티켓 QR로 현장 체크인하면 모바일 배지로 전환됩니다" — 체크인(SCR-31) 후 SCR-M5 관람객 배지/QR로 상태 승격(티켓→체크인→배지 흐름 1:1 명시) +- **상태**: 로딩 스켈레톤 · 빈("보유한 티켓이 없습니다 — 입장권 예매") · **오프라인 표시 가능**(QR·티켓 로컬 캐시, "오프라인 — 저장된 티켓 표시 중" 배지) · 사용됨/취소 티켓 흐리게(dim). 상태 전이는 서버 권위(오프라인은 캐시 표시). +- **데이터 원천**: M10 예매·티켓·체크인 상태 → 신규·샘플. SCR-M5(배지)와 상태 연동. PII 마스킹·WCAG AA·라이트/다크, 신규 토큰 없음. +- **Stitch 프롬프트**: +``` +A mobile "my ticket wallet" screen for an exhibition visitor, 390px width, light theme, primary blue #0066B3, success green #0E8A5F, friendly consumer tone. All UI text in Korean. Top: title "내 티켓" with filter tabs "진행중 · 예정 · 지난". Body: a vertical list of ticket cards, each showing event title "스마트팩토리 코리아 2026", 권종 "바이어권", 매수 "1매", a green status badge "사용가능", a small QR thumbnail, and a button "입장 QR 보기"; used/canceled tickets appear dimmed. Include a full-screen QR viewer reference: a large centered QR code, name "정관람", type "바이어", a hint "입장 시 화면을 최대 밝기로 유지하세요" with a brightness-boost note, swipe dots to switch tickets, and a masked 예매번호 "KTX-****-8245". Add an info banner "티켓 QR로 현장 체크인하면 모바일 배지로 전환됩니다" and a small offline badge "오프라인 — 저장된 티켓 표시 중". Each card has a link "예매 상세·취소". Clean consumer wallet aesthetic, 8px cards, WCAG AA, high-contrast QR. +``` + +--- + ## 5. Stitch 사용 가이드 (요약) -1. stitch.withgoogle.com에서 새 프로젝트 생성 → 플랫폼은 웹 화면(SCR-01~12)은 Desktop, SCR-M1/M2는 Mobile 선택. +1. stitch.withgoogle.com에서 새 프로젝트 생성 → 플랫폼은 웹 화면(SCR-01~51·SCR-A*·SCR-P*)은 Desktop, 모바일(SCR-M1~M15)은 Mobile 선택. 공개사이트(SCR-P*)는 마케팅 톤·넓은 히어로로, 관리자(SCR-A*)는 밀도 높은 백오피스 톤으로 생성한다. 2. 화면당 위 코드블록 프롬프트 1개를 그대로 붙여넣어 생성 — 프롬프트에 색상·레이아웃·예시 데이터가 포함되어 있어 추가 지시 없이 1회 생성이 기준. 3. 결과 보정은 짧은 추가 지시로: 예) "Make the right quote panel 340px and sticky". 한국어 텍스트가 깨지면 "Keep all labels in Korean exactly as given" 재지시. 4. 생성 화면은 Figma로 내보내 디자인 시스템 토큰(§1)과 대조 후 조정한다. @@ -667,6 +1617,8 @@ A mobile field inspection screen for a KINTEX hall manager verifying booth const | 버전 | 일자 | 작성자 | 내용 | |---|---|---|---| +| **v2.1** | 2026-07-11 | designer | **입장권 예매 4화면 추가(M10 티켓 기획 대비 화면 갭 해소).** PLANNING v3.0 M10이 티켓을 기획 범위에 포함하나 design.md v2.0 인벤토리엔 예매 흐름 화면이 없던 갭을 메움 — 기존 번호 체계 이어서 순증(재번호화·기존 스펙 수정 없음). ①**§2.8-1 매트릭스**: M10 행에 SCR-P7·P8/M14·M15, M9 행에 SCR-P7(티켓결제 연계) 반영. ②**§2.8-2 인덱스**: 공개사이트에 SCR-P7(입장권 예매)·SCR-P8(예매 확인·취소), 모바일에 SCR-M14(모바일 티켓 예매)·SCR-M15(내 티켓 지갑) 추가, 집계 80→**84화면**(공개 6→8·모바일 13→15, 미생성 60→64). ③**§3B**: SCR-P7(행사·권종→예매자→결제→완료 다단계, 게스트+회원, 결제 PG 어댑터 위임·카드번호 입력 UI 없음)·SCR-P8(예매번호+이메일 조회·QR 티켓 상세·환불정책·취소) 상세+영어 Stitch 프롬프트. ④**§4**: SCR-M14(SCR-P7 모바일 최적화 390px·48px 터치)·SCR-M15(보유 티켓·QR 풀스크린 밝기부스트·오프라인 표시·취소 진입, 티켓→체크인→배지(SCR-M5) 전환 명시) 상세+프롬프트. §5 가이드 모바일 범위 M1~M13→M1~M15. **보안·불변 준수**: 결제 화면 카드번호 저장 UI 금지(PG 위임 명시)·PII 마스킹·WCAG AA·i18n·라이트/다크. §1 토큰 권위 유지, 신규 토큰 0. PLANNING.md·기존 화면 스펙·src 무수정 | +| **v2.0** | 2026-07-11 | designer | **전 화면 인벤토리 확장 — PLANNING v3.0 전 모듈·전 역할 커버.** 기존 SCR-01~17·SCR-M1/M2(재번호화 없이 보존)에 **신규 60화면 순증**: ①**§2.8 전 화면 인벤토리 매트릭스 신설**(모듈×역할×채널 요약표 + 전 SCR 인덱스 + 기생성/기구현/미생성 상태 컬럼, 총 80화면). ②**웹 코어·도메인 SCR-18~51**(M1 배정·견적/부스판매/셀프선택, M9 정산, M6 서류·마일스톤·서류작성, M7 매칭·RFQ, M8 물류, **M15 옥션 4종**(목록·상세순위·견적서·낙찰), M10 관람객관리·체크인·리드, M12 EDM·스폰서십, M17 CMS·마이크로사이트·다국어, 업체 대시보드, **§5B 공통 업무기능 SCR-39~48**(worklog·schedule·message·notice·opinion·search·meeting·report·notification·mypage, UIWS 표준 정합), 인증 SCR-49~51(회원가입·비번재설정·OTP)). ③**§3A 관리자 백오피스 SCR-A1~A10**(사용자·RBAC·공통코드·메뉴·감사로그·시스템설정·마스터데이터·룰셋버전·**테넌트 온보딩§1A**·AiConfig). ④**§3B 공개 홍보 사이트 SCR-P1~P6**(홈·행사상세·인터랙티브 플로어플랜·사전등록·마이크로사이트 공개뷰·참가문의, MDI 비적용·SEO/다국어). ⑤**모바일 SCR-M3~M13**(역할별 홈·리드캡처·관람객 배지/QR·wayfinding·플로어플랜·비즈매칭·세션아젠다·업체 통행증·알림·서류승인·옥션순위). 각 화면 SCR ID·화면명·역할·모듈·레이아웃·상태(로딩/빈/에러/degraded)·데이터 원천(실/샘플 경계)·라우트·**영어 Stitch 프롬프트** 포함. §1 토큰·§2.7 MDI 셸 보존, **신규 토큰 0**. AI 산출물 워터마크·AiLabel·PII 마스킹·WCAG AA·i18n·라이트/다크 토큰 불변 규칙 반영. PLANNING.md·src 무수정 | | v1.0 | 2026-07-11 | designer | 최초 작성 — PLANNING.md v1.0 기반. 디자인 시스템·IA·P0 중심 14화면(웹 12 + 모바일 2) Stitch 프롬프트 포함. 다크모드는 Phase 1 미지원(캔버스 다크 서피스만) 결정 | | v1.0.1 | 2026-07-11 | reviewer 반영 | 화면 수 표기 정정(13→14). 잔여 지적사항은 docs/BACKLOG.md 참조 | | v1.1 | 2026-07-11 | designer | **Stitch 산출물 학습·정합화.** `stitch_kintex_ai_system_architect/` 18화면 code.html + DESIGN.md 3변형(Intelligence·Nexus·Precision) 학습. ①§1-2 컬러: Precision Enterprise AI 변형이 우리 토큰(#0066B3·#1C2536·#6D4AFF·#D92D20·#F9FAFB·#101828·StatusBadge 진행) 실증 확인 — 우리 팔레트를 단일 출처로 유지, #0059A6·#00427D는 짙은 대체 톤으로만 허용, ai-surface #F5F3FF AI 카드 배경 채택. ②§1-3 타이포: Pretendard 권위 유지, Inter를 라틴/tabular 보조로 허용(Stitch가 Hanken Grotesk/Inter 채택), 행 높이 44/48px 권위값 유지. ③§1-4 라운드(4/8px·pill)·엘리베이션(톤레이어+1px 테두리+AI 좌측 보라 액센트)·그리드(12컬럼·1440px·4px 베이스)·지브라 테이블 토큰 신설(이전 누락분). ④§2.5 Stitch 화면↔SCR 매핑표 신설(14화면). ⑤§2.6 범위 게이트 — proposal.md 및 범위 밖 4화면(business_intelligence·hall_operations·exhibition_schedule·admin_dashboard)을 P2 후보로 분류(PLANNING이 범위 권위, designer 임의 승격 금지). PLANNING.md·타 문서 무수정 | diff --git a/mobile/.gitignore b/mobile/.gitignore new file mode 100644 index 0000000..5cf5f2d --- /dev/null +++ b/mobile/.gitignore @@ -0,0 +1,23 @@ +# Expo / RN +node_modules/ +.expo/ +dist/ +web-build/ +*.log + +# Native +ios/ +android/ +*.orig.* +*.jks +*.p8 +*.p12 +*.key +*.mobileprovision + +# Env / secrets +.env +.env.* + +# Misc +.DS_Store diff --git a/mobile/README.md b/mobile/README.md new file mode 100644 index 0000000..1ed133c --- /dev/null +++ b/mobile/README.md @@ -0,0 +1,43 @@ +# KINTEX AI 전시관리 — 모바일 앱 (mobile/) + +React Native + Expo(expo-router, TypeScript) 모바일 앱. 조회·승인·현장 시나리오 전용 +(design.md §4). 백엔드는 공유 API `https://kintex.zioinfo.co.kr`. + +## 스택 +- Expo SDK 51 · expo-router ~3.5 · React Native 0.74 · TypeScript +- JWT는 `expo-secure-store`(네이티브 keychain/keystore)에 저장, 웹은 AsyncStorage 폴백 +- 디자인 토큰: `theme/`(docs/design.md §1 팔레트·타이포). 신규 토큰 없음. + +## 실행 +```bash +cd mobile +npm install +npm run typecheck # tsc --noEmit +npm start # Expo 개발 서버 (Expo Go / 에뮬레이터) +``` + +API 베이스는 `app.json > extra.apiBase` 또는 `EXPO_PUBLIC_API_BASE` 환경변수로 재정의. +시크릿(키 등)은 하드코딩하지 않는다. + +## 화면 +| 경로 | 화면 | 근거 | +|---|---|---| +| `app/login.tsx` | 로그인(2FA/OTP·아이디 기억·비번찾기/회원가입) | SCR-01 | +| `app/register.tsx` | 회원가입 | 04_backend_public_auth §1 | +| `app/forgot-password.tsx` | 비밀번호 찾기/초기화 | 04 §2·§3 | +| `app/(tabs)/index.tsx` | 홈/대시보드(역할별 진입) | design §2-2 | +| `app/(tabs)/field.tsx` | 현장 허브(역할 분기) | — | +| `app/(tabs)/gallery.tsx` | 시각화 갤러리(워터마크 상시) | SCR-12 | +| `app/(tabs)/more.tsx` | 계정·서버 상태·로그아웃 | — | +| `app/checklist.tsx` | 현장 체크리스트(48px 터치·오프라인·사진) | SCR-M1 | +| `app/inspection.tsx` | 현장 검수(승인/반려·AI 플래그) | SCR-M2 | + +## 계약·보안 준수 +- 응답 오류 봉투 `{ success, data, error }` 처리(`lib/api.ts`), degraded 폴백(`isDegraded`). +- AI 생성 이미지는 `components/AiImage.tsx`가 워터마크 + "AI 생성 예상 이미지" 고지를 **항상** 표시(제거 불가). +- 비밀번호는 저장하지 않음. "아이디 기억"은 이메일만 AsyncStorage 보관. + +## 남은 작업 +- 실 화면 데이터 API 배선 확대(부스 목록·검수 요청 제출 — 백엔드 M6/C-4 확장 대기). +- 앱 아이콘/스플래시 에셋(`assets/`), i18n, 푸시 알림. +- EAS 실빌드(eas.json 프로파일) — 본 스캐폴드 범위 밖. diff --git a/mobile/app.json b/mobile/app.json new file mode 100644 index 0000000..8590e05 --- /dev/null +++ b/mobile/app.json @@ -0,0 +1,40 @@ +{ + "expo": { + "name": "KINTEX AI 전시관리", + "slug": "kintex", + "scheme": "kintex", + "version": "0.1.0", + "orientation": "portrait", + "userInterfaceStyle": "light", + "newArchEnabled": false, + "splash": { + "resizeMode": "contain", + "backgroundColor": "#004C86" + }, + "assetBundlePatterns": ["**/*"], + "ios": { + "supportsTablet": true, + "bundleIdentifier": "kr.co.zioinfo.kintex" + }, + "android": { + "package": "kr.co.zioinfo.kintex", + "adaptiveIcon": { + "backgroundColor": "#0066B3" + } + }, + "web": { + "bundler": "metro", + "output": "single" + }, + "plugins": [ + "expo-router", + "expo-secure-store" + ], + "experiments": { + "typedRoutes": false + }, + "extra": { + "apiBase": "https://kintex.zioinfo.co.kr" + } + } +} diff --git a/mobile/app/(tabs)/_layout.tsx b/mobile/app/(tabs)/_layout.tsx new file mode 100644 index 0000000..fccc948 --- /dev/null +++ b/mobile/app/(tabs)/_layout.tsx @@ -0,0 +1,59 @@ +/* + * 하단 탭 바 4개 — 홈 / 현장 / 갤러리 / 더보기 (design.md §2-2 모바일). + * 현장 탭은 역할에 따라 체크리스트(장치업체)·검수(홀매니저)로 진입. + */ +import { Ionicons } from '@expo/vector-icons'; +import { Redirect, Tabs } from 'expo-router'; +import React from 'react'; +import { useAuth } from '../../context/AuthContext'; +import { colors } from '../../theme'; + +export default function TabsLayout() { + const { ready, token } = useAuth(); + if (ready && !token) return ; + + return ( + + , + }} + /> + ( + + ), + }} + /> + , + }} + /> + ( + + ), + }} + /> + + ); +} diff --git a/mobile/app/(tabs)/field.tsx b/mobile/app/(tabs)/field.tsx new file mode 100644 index 0000000..b3c1912 --- /dev/null +++ b/mobile/app/(tabs)/field.tsx @@ -0,0 +1,99 @@ +/* + * 현장 탭 — 역할별 현장 기능 허브. + * 장치업체 → 현장 체크리스트(SCR-M1), 홀매니저 → 현장 검수(SCR-M2). + */ +import { Ionicons } from '@expo/vector-icons'; +import { router } from 'expo-router'; +import React from 'react'; +import { Pressable, ScrollView, StyleSheet, Text, View } from 'react-native'; +import { Banner } from '../../components/Banner'; +import { useAuth } from '../../context/AuthContext'; +import { colors, radius, spacing, type } from '../../theme'; + +export default function FieldScreen() { + const { activeWorkspace, user } = useAuth(); + const role = activeWorkspace?.myRole; + const isHallManager = user?.hallManager || role === 'HALL_MANAGER'; + const isContractor = role === 'CONTRACTOR'; + + return ( + + 현장 업무 + + {!isContractor && !isHallManager ? ( + + 현장 기능은 장치·시공업체(체크리스트)와 홀매니저(검수) 역할에서 제공됩니다. + + ) : null} + + {isContractor ? ( + router.push('/checklist')} + /> + ) : null} + + {isHallManager ? ( + router.push('/inspection')} + /> + ) : null} + + ); +} + +function Tile({ + icon, + title, + desc, + onPress, +}: { + icon: keyof typeof Ionicons.glyphMap; + title: string; + desc: string; + onPress: () => void; +}) { + return ( + + + + + + {title} + {desc} + + + + ); +} + +const styles = StyleSheet.create({ + scroll: { padding: spacing.md, gap: spacing.md }, + title: { fontSize: type.h2.fontSize, fontWeight: '700', color: colors.neutral900 }, + tile: { + flexDirection: 'row', + alignItems: 'center', + gap: 12, + backgroundColor: colors.white, + borderWidth: 1, + borderColor: colors.neutral200, + borderRadius: radius.md, + padding: spacing.md, + }, + tileIcon: { + width: 44, + height: 44, + borderRadius: radius.sm, + backgroundColor: colors.primary050, + alignItems: 'center', + justifyContent: 'center', + }, + tileBody: { flex: 1, gap: 2 }, + tileTitle: { fontSize: type.h3.fontSize, fontWeight: '600', color: colors.neutral900 }, + tileDesc: { fontSize: type.caption.fontSize, color: colors.neutral500 }, +}); diff --git a/mobile/app/(tabs)/gallery.tsx b/mobile/app/(tabs)/gallery.tsx new file mode 100644 index 0000000..3826b97 --- /dev/null +++ b/mobile/app/(tabs)/gallery.tsx @@ -0,0 +1,151 @@ +/* + * SCR-12 시각화 갤러리 (모바일 2열) — 워터마크 상시 + 상단 고정 고지 바. + * 계약: GET /api/events/{eventId}/booths/{boothId}/render-jobs?shot={S1} (스켈레톤 501 → degraded 폴백). + * 실 API 호출 구조를 유지하되, 서버 미구현/오프라인 시 degraded 샘플로 폴백한다. + */ +import { router } from 'expo-router'; +import React, { useCallback, useEffect, useState } from 'react'; +import { RefreshControl, ScrollView, StyleSheet, Text, View } from 'react-native'; +import { AiImage } from '../../components/AiImage'; +import { Banner } from '../../components/Banner'; +import { Button } from '../../components/Button'; +import { useAuth } from '../../context/AuthContext'; +import { api, isDegraded } from '../../lib/api'; +import { AI_IMAGE_NOTICE } from '../../lib/config'; +import type { RenderJobDto } from '../../lib/types'; +import { colors, spacing, type } from '../../theme'; + +const DEMO_BOOTH = 'b-102'; + +// degraded 폴백 샘플 (서버 미구현/오프라인 시 표시 — 항상 워터마크 유지) +const FALLBACK: RenderJobDto[] = [ + mkJob('job-s1', 'S1', 'DONE'), + mkJob('job-s2', 'S2', 'DONE'), + mkJob('job-s3', 'S3', 'RUNNING'), + mkJob('job-s7', 'S7', 'FAILED'), +]; + +function mkJob(jobId: string, shot: string, status: RenderJobDto['status']): RenderJobDto { + return { + jobId, + boothId: DEMO_BOOTH, + shotPreset: shot, + status, + imageUrl: null, + schemaHash: null, + modelVersion: null, + watermarkRequired: true, + watermarkText: AI_IMAGE_NOTICE, + notice: 'AI 생성 이미지는 계약·심사 서류에 사용할 수 없습니다 (시공 기준은 도면)', + }; +} + +const SHOT_LABEL: Record = { + S1: 'S1 정면', + S2: 'S2 야간', + S3: 'S3 통로', + S4: 'S4 내부', + S5: 'S5 비교', + S6: 'S6 배선', + S7: 'S7 홀 전경', +}; + +export default function GalleryScreen() { + const { activeWorkspace, token } = useAuth(); + const [jobs, setJobs] = useState([]); + const [degraded, setDegraded] = useState(false); + const [loading, setLoading] = useState(true); + + const load = useCallback(async () => { + setLoading(true); + if (!activeWorkspace || !token) { + setJobs(FALLBACK); + setDegraded(true); + setLoading(false); + return; + } + try { + const res = await api.get( + `/api/events/${activeWorkspace.eventId}/booths/${DEMO_BOOTH}/render-jobs`, + ); + setJobs(res ?? []); + setDegraded(false); + } catch (e) { + if (isDegraded(e)) { + setJobs(FALLBACK); + setDegraded(true); + } else { + setJobs([]); + setDegraded(false); + } + } finally { + setLoading(false); + } + }, [activeWorkspace, token]); + + useEffect(() => { + load(); + }, [load]); + + return ( + + {/* 상단 고정 고지 바 (제거 불가) */} + + + AI 생성 이미지는 계약·심사 서류에 사용할 수 없습니다 — 시공 기준은 도면입니다 + + + + } + > + {degraded ? ( + + 서버 이미지 이력에 연결할 수 없어 예시를 표시합니다 (degraded). + + ) : null} + + {jobs.length === 0 && !loading ? ( + + 아직 생성된 이미지가 없습니다 — 설계 스튜디오에서 예상 사진을 생성하세요. + + ) : null} + + + {jobs.map((j) => ( + + + {j.status === 'FAILED' ? ( + diff --git a/src/frontend/src/components/layout/app-shell.css b/src/frontend/src/components/layout/app-shell.css index 6b4db3b..fd62d66 100644 --- a/src/frontend/src/components/layout/app-shell.css +++ b/src/frontend/src/components/layout/app-shell.css @@ -97,7 +97,9 @@ } .kx-shell__nav-icon { width: 20px; - text-align: center; + display: inline-flex; + align-items: center; + justify-content: center; } .kx-shell__user { @@ -174,6 +176,9 @@ border: none; background: transparent; color: var(--color-neutral-500); + display: inline-flex; + align-items: center; + justify-content: center; } .kx-shell__icon-btn:hover { background: var(--color-neutral-100); diff --git a/src/frontend/src/components/ui/AiImage.tsx b/src/frontend/src/components/ui/AiImage.tsx index 0b2b786..e4d38d0 100644 --- a/src/frontend/src/components/ui/AiImage.tsx +++ b/src/frontend/src/components/ui/AiImage.tsx @@ -1,5 +1,6 @@ import type { RenderJobDto } from '../../api/types'; import { AiLabel } from './Badge'; +import { IconSpark } from './icons'; import './ai-image.css'; /* @@ -68,7 +69,7 @@ export function AiImage({ {sample && onGenerate && ( )} diff --git a/src/frontend/src/components/ui/Badge.tsx b/src/frontend/src/components/ui/Badge.tsx index 15384e8..1ff947a 100644 --- a/src/frontend/src/components/ui/Badge.tsx +++ b/src/frontend/src/components/ui/Badge.tsx @@ -1,4 +1,5 @@ import type { ReactNode } from 'react'; +import { IconSpark } from './icons'; import './badge.css'; // ── StatusBadge (design.md §1-4) ── @@ -54,7 +55,7 @@ export function DdayChip({ dday }: { dday: number }) { export function AiLabel({ children = 'AI 초안' }: { children?: ReactNode }) { return ( - + {children} ); diff --git a/src/frontend/src/components/ui/CompareSlider.tsx b/src/frontend/src/components/ui/CompareSlider.tsx index b21a7de..c2d3b54 100644 --- a/src/frontend/src/components/ui/CompareSlider.tsx +++ b/src/frontend/src/components/ui/CompareSlider.tsx @@ -1,5 +1,6 @@ import { useCallback, useRef, useState } from 'react'; import type { KeyboardEvent, PointerEvent } from 'react'; +import { IconCompareArrows } from './icons'; import './compare-slider.css'; /* @@ -125,7 +126,7 @@ export function CompareSlider({ onKeyDown={onKeyDown} > diff --git a/src/frontend/src/components/ui/icons.tsx b/src/frontend/src/components/ui/icons.tsx new file mode 100644 index 0000000..c15b4e0 --- /dev/null +++ b/src/frontend/src/components/ui/icons.tsx @@ -0,0 +1,446 @@ +/** + * 시스템 아이콘 라이브러리 (design.md §3 SCR-17 항목6). + * + * ── 표준 ── + * - Stitch _icons 세트(24×24 viewBox · stroke=currentColor · stroke-width 2 · fill none)를 표준으로 삼는다. + * - 7종(Dashboard·Calendar·Operations·Analytics·Search·Menu·AiBot)은 Stitch 원본 이식, + * 나머지는 동일 스타일로 자체 제작. + * - currentColor 유지 → 테마·상태색을 CSS `color`로 상속(다크/라이트·상태배지 대응). + * - 기본 장식용(aria-hidden). 의미 전달이 필요하면 `title` prop으로 삽입(role=img 자동). + * + * 사용: <IconDashboard /> · <IconCheck size={16} /> · <IconWarning title="경고" /> + */ +import type { ReactNode, SVGProps } from 'react'; + +export interface IconProps extends Omit<SVGProps<SVGSVGElement>, 'width' | 'height'> { + /** 한 변 픽셀 크기(정사각). 기본 20. */ + size?: number; + /** 접근성 라벨 — 지정 시 role=img + <title> 삽입, 미지정 시 aria-hidden 장식. */ + title?: string; +} + +/** 공통 SVG 래퍼 — 표준 속성(viewBox 24·fill none·currentColor)과 접근성 처리. */ +function Svg({ size = 20, title, children, ...rest }: IconProps & { children: ReactNode }) { + const a11y = title + ? { role: 'img' as const, 'aria-label': title } + : { 'aria-hidden': true as const, focusable: false as const }; + return ( + <svg + width={size} + height={size} + viewBox="0 0 24 24" + fill="none" + xmlns="http://www.w3.org/2000/svg" + {...a11y} + {...rest} + > + {title ? <title>{title} : null} + {children} + + ); +} + +const S = { stroke: 'currentColor', strokeWidth: 2 } as const; +const SR = { ...S, strokeLinecap: 'round' as const }; +const SRJ = { ...SR, strokeLinejoin: 'round' as const }; + +/* ───────────────────────────────────────────────────────── + * Stitch 원본 7종 (_icons) + * ───────────────────────────────────────────────────────── */ + +/** ▦ 대시보드 (Stitch icon_dashboard). */ +export function IconDashboard(p: IconProps) { + return ( + + + + + + ); +} + +/** ▤ 캘린더/일정 (Stitch icon_calendar). */ +export function IconCalendar(p: IconProps) { + return ( + + + + + + + ); +} + +/** ◐ 현장운영 (Stitch icon_operations — 라디오 웨이브 + 핀). */ +export function IconOperations(p: IconProps) { + return ( + + + + + + + ); +} + +/** ▨ 경영분석 (Stitch icon_analytics — 막대 차트). */ +export function IconAnalytics(p: IconProps) { + return ( + + + + + + ); +} + +/** ⌕ 검색 (Stitch icon_search). */ +export function IconSearch(p: IconProps) { + return ( + + + + + ); +} + +/** ☰ 메뉴 (Stitch icon_menu). */ +export function IconMenu(p: IconProps) { + return ( + + + + + + ); +} + +/** AI 봇 (Stitch icon_ai_bot — currentColor 정규화). */ +export function IconAiBot(p: IconProps) { + return ( + + + + + + + + + + + ); +} + +/* ───────────────────────────────────────────────────────── + * 자체 제작 (동일 스타일) + * ───────────────────────────────────────────────────────── */ + +/** ◱ 플로어플랜 스튜디오 (부스 그리드 + 강조 셀). */ +export function IconFloorplan(p: IconProps) { + return ( + + + + + + + ); +} + +/** ☷ 참가업체 관리 (사람 그룹). */ +export function IconExhibitors(p: IconProps) { + return ( + + + + + + + ); +} + +/** ❒ 서류·문서. */ +export function IconDocument(p: IconProps) { + return ( + + + + + + + ); +} + +/** ₩ 정산 (원화 원). */ +export function IconSettlement(p: IconProps) { + return ( + + + + + + + ); +} + +/** ⚙ 관리자·설정 (기어). */ +export function IconSettings(p: IconProps) { + return ( + + + + + ); +} + +/** ◔ 알림 벨. */ +export function IconBell(p: IconProps) { + return ( + + + + + ); +} + +/** ✦ AI 스파크(4각별) — AI 액션·라벨 액센트. */ +export function IconSpark(p: IconProps) { + return ( + + + + ); +} + +/** ⚠ △ 경고 (삼각형 + 느낌표). */ +export function IconWarning(p: IconProps) { + return ( + + + + + + ); +} + +/** ✓ 체크. */ +export function IconCheck(p: IconProps) { + return ( + + + + ); +} + +/** ✓ 원형 체크(성공 배지). */ +export function IconCheckCircle(p: IconProps) { + return ( + + + + + ); +} + +/** ✕ 닫기. */ +export function IconClose(p: IconProps) { + return ( + + + + + ); +} + +/** ⛔ 차단(원 + 사선). */ +export function IconBlock(p: IconProps) { + return ( + + + + + ); +} + +/** › 오른쪽 셰브런. */ +export function IconChevronRight(p: IconProps) { + return ( + + + + ); +} + +/** ‹ 왼쪽 셰브런. */ +export function IconChevronLeft(p: IconProps) { + return ( + + + + ); +} + +/** ▾ 아래쪽 셰브런(아코디언 열림). */ +export function IconChevronDown(p: IconProps) { + return ( + + + + ); +} + +/** ‹› 좌우 화살촉(비교 슬라이더 그립). */ +export function IconCompareArrows(p: IconProps) { + return ( + + + + + ); +} + +/** ← 왼쪽 화살표(뒤로). */ +export function IconArrowLeft(p: IconProps) { + return ( + + + + + ); +} + +/** → 오른쪽 화살표(진행·CTA). */ +export function IconArrowRight(p: IconProps) { + return ( + + + + + ); +} + +/** ▲ 위 삼각(증가 델타). */ +export function IconTrendUp(p: IconProps) { + return ( + + + + + + ); +} + +/** ▼ 아래 삼각(감소 델타). */ +export function IconTrendDown(p: IconProps) { + return ( + + + + + + ); +} + +/** ⭱ 업로드. */ +export function IconUpload(p: IconProps) { + return ( + + + + + + ); +} + +/** ⭳ 다운로드. */ +export function IconDownload(p: IconProps) { + return ( + + + + + + ); +} + +/** 🖼 이미지. */ +export function IconImage(p: IconProps) { + return ( + + + + + + ); +} + +/** ⤢ 화면맞춤(확장). */ +export function IconExpand(p: IconProps) { + return ( + + + + + + + ); +} + +/** + 확대(플러스). */ +export function IconPlus(p: IconProps) { + return ( + + + + + ); +} + +/** − 축소(마이너스). */ +export function IconMinus(p: IconProps) { + return ( + + + + ); +} + +/** ◍ 인원(사람 + 카운트). */ +export function IconUsers(p: IconProps) { + return ( + + + + + ); +} + +/** ▦ 그리드(홀 배정). */ +export function IconGrid(p: IconProps) { + return ( + + + + + + + ); +} + +/** ● 오프라인(연결 끊김). */ +export function IconWifiOff(p: IconProps) { + return ( + + + + + + + + + ); +} diff --git a/src/frontend/src/screens/approval/ManagerApprovalQueuePage.tsx b/src/frontend/src/screens/approval/ManagerApprovalQueuePage.tsx index d1ec0c5..d6acea7 100644 --- a/src/frontend/src/screens/approval/ManagerApprovalQueuePage.tsx +++ b/src/frontend/src/screens/approval/ManagerApprovalQueuePage.tsx @@ -2,6 +2,7 @@ import { useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { Button } from '../../components/ui/Button'; import { DdayChip } from '../../components/ui/Badge'; +import { IconCheck, IconSearch, IconSpark, IconWarning } from '../../components/ui/icons'; import './approval-queue.css'; /* @@ -58,7 +59,7 @@ export function ManagerApprovalQueuePage() {