v2.2.292-296: 메모리·발열 최적화 + Pixel Office 완전 제거 + 소형 모델 추론 강화(calculate/run_code/지식 스코프)

- v2.2.292 메모리·발열: 헬스체크 워크스페이스 쓰기→fs.access(워처 연쇄 제거)·git 검사 비동기 30분 주기,
  웹뷰 retainContextWhenHidden 정리(채팅만 유지), 브레인 인덱스 유휴 30분 TTL 해제,
  채팅 DOM 200개 상한, @lmstudio/sdk 지연 로드
- v2.2.293 Pixel Office 시각화 폐기: astraOffice 모듈·사이드바 매니저 3종·스프라이트 17MB 삭제,
  sidebarProvider collector 섹션 통삭제 (기업 모드 판단 로직 무변경, vsix 12.2MB→1.3MB)
- v2.2.294 도구 메뉴 'NotebookLM 백엔드 실행/종료' 버튼: OS 자동 감지, 프로젝트 자동 탐색+폴더 선택 저장,
  포트 정리 폴백 (터미널 없이 Research 백엔드 켜고 끄기)
- v2.2.295 추론 강화 1탄: [ACTION 16] <calculate> Python 계산 위임(결과 재주입·자가수정 루프),
  단계별 지식 스코프(General+Specialty, 결정적 도메인 분류, 설정 지식·기억 탭 UI)
- v2.2.296 추론 강화 2탄: [ACTION 17] <run_code> 실행 확인(stdout 회수→수정→재실행 루프),
  문법 오류 재주입 자가수정, 도구 라우팅 힌트(dynamicBlocks), Grounding rescue 도메인 스코프 확장
- 검증: jest 818 통과(신규 29개), tsc 무오류, esbuild 정상

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-05 18:59:47 +09:00
parent fa397d7fa1
commit bb7cd6b879
466 changed files with 1285 additions and 6588 deletions
File diff suppressed because it is too large Load Diff
@@ -1,5 +1,5 @@
{ {
"result": "직답 결과 — single-pass mock 응답입니다.", "result": "직답 결과 — single-pass mock 응답입니다.",
"createdAt": 1783071368763, "createdAt": 1783232170764,
"modelVersion": "unknown" "modelVersion": "unknown"
} }
@@ -1,5 +1,5 @@
{ {
"result": "---\nid: wiki_on\ndate: 2026-07-03T09:36:08.766Z\ntype: knowledge_artifact\nstandard: P-Reinforce v3.0\ntags: [automated, connect_ai, brain_sync]\n---\n\n## 📌 Brief Summary\n직답 결과 — single-pass mock 응답입니다.\n\n직답 결과 — single-pass mock 응답입니다.\n---\n## 🛡️ Reliability & Audit Summary\n> [!NOTE]\n> 이 문서는 ConnectAI의 **Intelligent Resilience** 엔진에 의해 검증 및 정제되었습니다.\n\n| Metric | Value | Status |\n| :--- | :--- | :--- |\n| **Conflict Risk** | `0/100` | ✅ Low |\n| **Fallbacks Used** | `0` | ✅ None |\n| **Auto Retries** | `0` | ✅ Stable |\n| **Deduplication** | `0` | Standard |\n| **Processing Time** | `0.0s` | ✅ Fast |\n\n### 🔍 Decision Audit Trail\n- **[DIRECT]** 답변 작성 중... (단일 호출 fast-path) (13ms)\n", "result": "---\nid: wiki_on\ndate: 2026-07-05T06:16:10.765Z\ntype: knowledge_artifact\nstandard: P-Reinforce v3.0\ntags: [automated, connect_ai, brain_sync]\n---\n\n## 📌 Brief Summary\n직답 결과 — single-pass mock 응답입니다.\n\n직답 결과 — single-pass mock 응답입니다.\n---\n## 🛡️ Reliability & Audit Summary\n> [!NOTE]\n> 이 문서는 ConnectAI의 **Intelligent Resilience** 엔진에 의해 검증 및 정제되었습니다.\n\n| Metric | Value | Status |\n| :--- | :--- | :--- |\n| **Conflict Risk** | `0/100` | ✅ Low |\n| **Fallbacks Used** | `0` | ✅ None |\n| **Auto Retries** | `0` | ✅ Stable |\n| **Deduplication** | `0` | Standard |\n| **Processing Time** | `0.0s` | ✅ Fast |\n\n### 🔍 Decision Audit Trail\n- **[DIRECT]** 답변 작성 중... (단일 호출 fast-path) (11ms)\n",
"createdAt": 1783071368766, "createdAt": 1783232170765,
"modelVersion": "unknown" "modelVersion": "unknown"
} }
@@ -1,8 +1,8 @@
{ {
"missionId": "wiki_on", "missionId": "wiki_on",
"status": "completed", "status": "completed",
"startTime": "2026-07-03T09:36:08.748Z", "startTime": "2026-07-05T06:16:10.751Z",
"totalElapsedMs": 20, "totalElapsedMs": 16,
"results": { "results": {
"direct": "직답 결과 — single-pass mock 응답입니다." "direct": "직답 결과 — single-pass mock 응답입니다."
}, },
@@ -12,16 +12,16 @@
{ {
"from": "idle", "from": "idle",
"to": "direct", "to": "direct",
"durationMs": 13, "durationMs": 11,
"message": "답변 작성 중... (단일 호출 fast-path)", "message": "답변 작성 중... (단일 호출 fast-path)",
"ts": "2026-07-03T09:36:08.761Z" "ts": "2026-07-05T06:16:10.762Z"
}, },
{ {
"from": "direct", "from": "direct",
"to": "completed", "to": "completed",
"durationMs": 6, "durationMs": 5,
"message": "미션 완료", "message": "미션 완료",
"ts": "2026-07-03T09:36:08.767Z" "ts": "2026-07-05T06:16:10.767Z"
} }
], ],
"resilienceMetrics": { "resilienceMetrics": {
@@ -1,5 +1,5 @@
{ {
"result": "Final report with inconsistencies. This should be long enough to pass validation.", "result": "Final report with inconsistencies. This should be long enough to pass validation.",
"createdAt": 1783071374928, "createdAt": 1783232177877,
"modelVersion": "unknown" "modelVersion": "unknown"
} }
@@ -1,5 +1,5 @@
{ {
"result": "Final report with inconsistencies. This should be long enough to pass validation.", "result": "Final report with inconsistencies. This should be long enough to pass validation.",
"createdAt": 1783071374927, "createdAt": 1783232177877,
"modelVersion": "unknown" "modelVersion": "unknown"
} }
@@ -1,5 +1,5 @@
{ {
"result": "[{\"heading\":\"본문\",\"scope\":\"전체 답변\"}]", "result": "[{\"heading\":\"본문\",\"scope\":\"전체 답변\"}]",
"createdAt": 1783071374923, "createdAt": 1783232177866,
"modelVersion": "unknown" "modelVersion": "unknown"
} }
@@ -1,5 +1,5 @@
{ {
"result": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.", "result": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.",
"createdAt": 1783071374925, "createdAt": 1783232177871,
"modelVersion": "unknown" "modelVersion": "unknown"
} }
@@ -1,8 +1,8 @@
{ {
"missionId": "stress_conflict_1783071374907", "missionId": "stress_conflict_1783232177848",
"status": "completed", "status": "completed",
"startTime": "2026-07-03T09:36:14.907Z", "startTime": "2026-07-05T06:16:17.848Z",
"totalElapsedMs": 22, "totalElapsedMs": 29,
"results": { "results": {
"outline": "[{\"heading\":\"본문\",\"scope\":\"전체 답변\"}]", "outline": "[{\"heading\":\"본문\",\"scope\":\"전체 답변\"}]",
"section_0": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.", "section_0": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.",
@@ -14,30 +14,30 @@
{ {
"from": "idle", "from": "idle",
"to": "outline", "to": "outline",
"durationMs": 15, "durationMs": 12,
"message": "답변 구조 잡는 중...", "message": "답변 구조 잡는 중...",
"ts": "2026-07-03T09:36:14.922Z" "ts": "2026-07-05T06:16:17.860Z"
}, },
{ {
"from": "outline", "from": "outline",
"to": "section", "to": "section",
"durationMs": 2, "durationMs": 6,
"message": "본문 작성 중...", "message": "본문 작성 중...",
"ts": "2026-07-03T09:36:14.924Z" "ts": "2026-07-05T06:16:17.866Z"
}, },
{ {
"from": "section", "from": "section",
"to": "polish", "to": "polish",
"durationMs": 2, "durationMs": 6,
"message": "최종 다듬기 중...", "message": "최종 다듬기 중...",
"ts": "2026-07-03T09:36:14.926Z" "ts": "2026-07-05T06:16:17.872Z"
}, },
{ {
"from": "polish", "from": "polish",
"to": "completed", "to": "completed",
"durationMs": 3, "durationMs": 5,
"message": "미션 완료", "message": "미션 완료",
"ts": "2026-07-03T09:36:14.929Z" "ts": "2026-07-05T06:16:17.877Z"
} }
], ],
"resilienceMetrics": { "resilienceMetrics": {
+49
View File
@@ -1,5 +1,54 @@
# Astra Patch Notes # Astra Patch Notes
## v2.2.296 (2026-07-05)
### 🧠 소형 모델 추론 강화 2탄 — 코딩 실행 루프 + 도구 라우팅 + 근거 재검색
로드맵 2·3·4번 완결. 1탄(calculate·지식 스코프)과 합쳐 "모델은 판단만, 계산·실행·기억은 바깥에서" 아키텍처가 완성됐다.
- **[ACTION 17] `<run_code>` 실행 확인**: 워크스페이스 안의 .py/.js/.mjs/.cjs 파일을 인터프리터로 직접 실행하고 stdout/stderr/종료코드를 대화 컨텍스트로 재주입. run_command 와 달리 출력이 회수되므로 "생성→실행→에러 확인→수정" 루프가 모델 주도로 성립. 샌드박스(validatePath)·15초 타임아웃·회당 2회·출력 4천자 상한.
- **문법 오류 자가수정 루프**: Self-Reflector Phase C(실행 검증)의 문법 오류를 보고로 끝내지 않고 internal system 메시지로 재주입 → 자동 후속 턴에서 모델이 <edit_file> 로 즉시 수정 → 다음 라운드 재검증 (maxAutoSteps 한도로 무한 루프 차단). ※ `selfReflector.executionVerification` 설정이 켜져 있어야 동작.
- **도구 라우팅 힌트**: 도메인 분류(1탄의 휴리스틱) 결과가 그 턴의 행동을 직접 지시 — 수학→<calculate> 위임, 코딩→<run_code> 실행 확인, 팩트→근거 없으면 '확인 불가'/<fetch_url>. dynamicBlocks 보호 구역에 주입되어 컨텍스트 truncation 에서도 살아남는다. 분류 1회로 지식 스코프+도구 유도 동시 결정.
- **근거 재검색 확장**: 기존 Grounding rescue(근거 약함 → 전체 두뇌 재검색)가 에이전트 스코프에만 적용되던 것을 도메인 지식 스코프에도 확장 — Specialty 폴더가 정답 문서를 가리는 경우 같은 방식으로 구제.
검증: tsc 무오류 + jest 818 통과(신규 runCode 7개 + 라우팅 힌트 4개) + esbuild 정상.
## v2.2.295 (2026-07-05)
### 🧠 소형 모델 추론 강화 1탄 — <calculate> 계산 위임 + 단계별 지식 스코프
"작은 모델은 판단만, 계산·기억은 바깥에서" 전략의 첫 구현. 모델은 그대로 두고 외부 레이어만 강화한다.
- **[ACTION 16] `<calculate>` 계산 위임**: 수치·수학 계산을 모델이 암산하지 않고 Python(`-I` isolated, 10초 타임아웃)에 위임. stdout/stderr 이 internal system 메시지로 재주입되어 자동 후속 턴에서 모델이 결과를 해석하고, 에러 시 코드를 고쳐 재시도하는 자가수정 루프가 성립(read_file 과 동일한 재주입 메커니즘). 시스템 프롬프트에 '암산 금지' 규칙 추가. 회당 4회·출력 4천자 상한.
- **단계별 지식 스코프 (General + Specialty)**: 질문을 수학/코딩/팩트로 분류(LLM 호출 없는 결정적 휴리스틱 — 지연·비용 0)해, 해당 도메인의 Specialty 폴더 + 공통 General 폴더로 RAG 검색 범위를 축소. 4b 모델 컨텍스트에서 무관 청크를 배제하는 정밀도 최적화.
- 설정 패널 '지식·기억' 탭에 단계별 폴더 4개(General/수학/코딩/팩트) UI 추가 (`g1nation.domainKnowledge.*`, 두뇌 상대 경로).
- 안전 규칙: 분류 실패·Specialty 미설정 시 기존 전체 두뇌 검색으로 폴백(opt-in), 에이전트별 지식 매핑(agentKnowledgeMap)이 있으면 그쪽 우선(기존 제한을 느슨하게 만들지 않음), 두뇌 밖 경로(../) 차단.
- 기존 scopedBrainRetriever/searchBrainFiles 의 scopeFolders 메커니즘 재사용 — 검색 엔진 무변경.
검증: tsc 무오류 + jest 809 통과(신규 calculate 6개 + domainRouter 12개) + esbuild 정상.
## v2.2.294 (2026-07-05)
### 🔘 도구 메뉴에 'NotebookLM 백엔드 실행/종료' 버튼 (터미널 불필요)
Datacollector 의 Research(NotebookLM) 기능은 NAS 브리지로 처리 불가(로그인된 로컬 Chrome + PC 의 LM Studio 프록시 필요)라 로컬에서 `npm run bridge` 를 띄워야 했는데, 터미널 없이 사이드바 버튼으로 켜고 끌 수 있게 했다.
- **도구 ▾ 메뉴**: 'NotebookLM 백엔드 실행' / 'NotebookLM 백엔드 종료' 버튼 추가.
- **실행**: VS Code 통합 터미널("NotebookLM Bridge")에서 `npm run bridge` — 맥/윈도우 셸 차이를 VS Code 가 흡수하고, 브리지 로그(인증 만료 등)를 사용자가 그대로 볼 수 있다. 이미 실행 중이면(포트 3002 응답) 중복 실행 안 함.
- **프로젝트 자동 탐색**: 설정(`g1nation.datacollectLocalProjectPath`) → 워크스페이스 → 부모의 Datacollector_MAC/Datacollector/Datacollect 순. 못 찾으면 폴더 선택 창 → 선택 즉시 설정에 저장(다음부턴 버튼만).
- **종료**: 터미널 정리 + 포트 3002 점유 프로세스를 OS 자동 감지로 정리(윈도우 PowerShell Stop-Process / 맥·리눅스 lsof+kill) — 예전에 수동으로 띄워 남아 있던 프로세스까지 잡는다.
- NAS 브리지·Astra 슬래시 명령에는 영향 없음(별개 경로). 새 핸들러는 registerSidebarHandler 체인에 독립 모듈로 합류.
검증: tsc 무오류 + jest 791 통과(신규 bridgeLauncher 테스트 7개 포함) + esbuild 정상.
## v2.2.293 (2026-07-05)
### 🗑️ Pixel Office 완전 제거 (시각화 폐기 — 기업 모드 로직은 무변경)
v2.2.267 에서 채팅 배너를 제거한 데 이어, 시각화 기능 전체를 폐기하기로 결정(재도입 계획 없음).
- **삭제**: `src/features/astraOffice/**`, 사이드바 매니저 3종(pixelOfficeState/Helpers/LayoutStore), `features/company/pixelOfficeState.ts`(UI 전용 변환층), `assets/pixelOffice/**`(스프라이트 17MB), `.astra-office-preview.html`, officeSchema 테스트.
- **정리**: sidebarProvider 의 'Pixel Office collector' 섹션 통삭제(설계 주석의 "통째로 지워도 회사 모드 동일 동작" 불변식 그대로 활용), companyTurnEmitter 의 onPixelOffice 훅, chat/company 핸들러 케이스, `g1nation.company.pixelOffice.open` 커맨드, `company.pixelOffice.*` 설정 2종, webview 의 무시-케이스.
- **기업 모드(1인 기업) 판단 로직은 어떤 것도 변경되지 않음** — 제거된 것은 전부 read-only UI 레이어.
- 효과: 패키지 약 10MB 감량(12.2MB → 약 2MB대), 미사용 코드 ~1,000줄 제거.
검증: tsc 무오류 + jest 784 통과(2 skip, 삭제된 기능 테스트 17개 제외) + esbuild 번들 정상.
## v2.2.292 (2026-07-05)
### 🌡️ 메모리·발열 최적화 5종 (기능 변경 없음)
유휴·장시간 사용 시의 CPU 깨우기와 메모리 상주를 줄이는 최적화. 동작·기능은 동일.
- **헬스체크 워처 연쇄 제거**: 디스크 권한 검사를 워크스페이스 파일 쓰기/삭제 → `fs.access(W_OK)`로 교체. 10분마다 VS Code 본체·전체 확장의 파일 워처를 깨우던 연쇄가 사라짐.
- **헬스체크 느린 검사 분리**: `git push --dry-run`(원격 네트워크)을 execSync(최대 5초 확장 호스트 블로킹) → 비동기 exec 로 전환하고, Antigravity 레지스트리 검사와 함께 30분 주기(3틱마다)로 완화. 결과는 캐시되어 경고 표시는 깜빡이지 않음.
- **웹뷰 retainContextWhenHidden 정리**: 설정·승인·Pixel Office 패널에서 제거(숨김 시 렌더러 상주 해제, 각 수십 MB). 셋 다 재표시 시 상태 재구성 경로가 이미 있음(설정: 'ready'+getState, 승인: 백엔드 html 푸시). 채팅 패널만 대화 DOM 보존을 위해 유지.
- **브레인 인덱스 유휴 해제**: 한 번 로드되면 세션 내내 상주하던 토큰·임베딩 인덱스를 마지막 사용 30분 후 dirty flush 하고 메모리에서 내림(mtime 디스크 캐시가 있어 재로드 저렴). 상시 타이머 없이 접근 시 재예약되는 one-shot unref 타이머.
- **채팅 DOM 상한**: 사이드바 채팅 메시지 노드를 최근 200개로 제한(초과분은 오래된 것부터 제거 + 안내 문구). retain 웹뷰의 단조 메모리 증가 차단.
- **@lmstudio/sdk 지연 로드**: 최상위 값 import → 타입 전용 import + `getSdk()` 첫 호출 시 require. LM Studio 미사용 세션에서는 SDK 모듈이 초기화되지 않음.
검증: jest 801 통과(2 skip) + esbuild 번들 정상.
## v2.2.258 (2026-06-22) ## v2.2.258 (2026-06-22)
### 📝 `/meet` 회의록 — 화자 팀/역할 정규화 + 슬림 포맷 + 타임스탬프 근거 ### 📝 `/meet` 회의록 — 화자 팀/역할 정규화 + 슬림 포맷 + 타임스탬프 근거
실제 회의록 산출물(자이언츠 이머시브 커머스 데모 리뷰)을 녹취 원문과 대조한 피드백을 반영. *그 회의록 한 건을 고치는 게 아니라*, 앞으로 생성될 모든 회의록의 생성 파이프라인(프롬프트+코드+검증패스)을 개선. 실제 회의록 산출물(자이언츠 이머시브 커머스 데모 리뷰)을 녹취 원문과 대조한 피드백을 반영. *그 회의록 한 건을 고치는 게 아니라*, 앞으로 생성될 모든 회의록의 생성 파이프라인(프롬프트+코드+검증패스)을 개선.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 517 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 624 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Some files were not shown because too many files have changed in this diff Show More